Ver código fonte

- Implemented Firepillar's 'target cannot move for 0.2 sec x hit' property.
- Corrected Earthquake so it behaves as explained in the development topics.
- Corrected a missing opt_flag = 0 when using SC_INCATKRATE on mobs.
- Added a missing line to actually unequip unallowed compounded cards when changing maps.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12299 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 17 anos atrás
pai
commit
ccb13e72c0
6 arquivos alterados com 23 adições e 10 exclusões
  1. 5 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_cast_db.txt
  3. 6 9
      src/map/battle.c
  4. 3 0
      src/map/pc.c
  5. 5 0
      src/map/skill.c
  6. 3 0
      src/map/status.c

+ 5 - 0
Changelog-Trunk.txt

@@ -3,6 +3,11 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2008/03/05
+	* Implemented Firepillar's 'target cannot move for 0.2 sec x hit' property.
+	* Corrected Earthquake so it behaves as explained in the development topics.
+	* Added a missing line to actually unequip unallowed compounded cards when
+	  changing maps.
 2008/03/04
 	* Updated the firepillar code so it behaves like the other traps.
 	* Additional status changes now only get triggered if the attack did

+ 1 - 1
db/skill_cast_db.txt

@@ -169,7 +169,7 @@
 
 //===== Wizard =============================
 //-- WZ_FIREPILLAR
-80,3000:2700:2400:2100:1800:1500:1200:900:600:300,1000,0,30000,0
+80,3000:2700:2400:2100:1800:1500:1200:900:600:300,1000,0,30000,600:800:1000:1200:1400:1600:1800:2000:2200:2400
 //-- WZ_SIGHTRASHER
 81,700,2000,0,500,0
 

+ 6 - 9
src/map/battle.c

@@ -2189,12 +2189,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 				break;
 			default:
 			{
-				if (skill_num == NPC_EARTHQUAKE) {
-					if (sstatus->rhw.atk2 > sstatus->rhw.atk)
-						MATK_ADD(sstatus->rhw.atk + rand()%(1+sstatus->rhw.atk2-sstatus->rhw.atk))
-					else
-						MATK_ADD(sstatus->rhw.atk);
-				} else
 				if (sstatus->matk_max > sstatus->matk_min) {
 					MATK_ADD(sstatus->matk_min+rand()%(1+sstatus->matk_max-sstatus->matk_min));
 				} else {
@@ -2287,7 +2281,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						skillratio += 100*skill_lv;
 						break;
 					case NPC_EARTHQUAKE:
-						skillratio += 400 + 500*skill_lv;
+						skillratio += 100 +100*skill_lv +100*(skill_lv/2);
 						break;
 				}
 
@@ -2326,8 +2320,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					//mdef2-= mdef2* i/100;
 				}
 			}
-			if (skill_num == NPC_EARTHQUAKE)
-				mdef>>=1; //Halves MDEF (stupid overpowered skill)
 			if(battle_config.magic_defense_type)
 				ad.damage = ad.damage - mdef*battle_config.magic_defense_type - mdef2;
 			else
@@ -2346,6 +2338,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					ad.damage = 0;
 			}
 		}
+		
+		if (skill_num == NPC_EARTHQUAKE)
+		{	//Adds atk2 to the damage, should be influenced by number of hits and skill-ratio, but not mdef reductions. [Skotlex]
+			ad.damage+= sstatus->rhw.atk2*skillratio/100;
+		}
 
 		if(ad.damage<1)
 			ad.damage=1;

+ 3 - 0
src/map/pc.c

@@ -6593,7 +6593,10 @@ int pc_checkitem(struct map_session_data *sd)
 					| (map[sd->bl.m].flag.pvp?1:0)
 					| (map_flag_gvg(sd->bl.m)?2:0);
 				if (flag && !pc_isAllowedCardOn(sd,it->slot,i,flag))
+				{
+					sd->status.inventory[i].equip=0;
 					calc_flag = 1;
+				}
 			}
 		}
 	}

+ 5 - 0
src/map/skill.c

@@ -528,6 +528,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		if (!tsc->data[skill])
 			sc_start(bl,skill,100,skilllv,skill_get_time2(skillid, skilllv));
 		break;
+
+	case WZ_FIREPILLAR:
+		unit_set_walkdelay(bl, tick, skill_get_time2(skillid, skilllv), 1);
+		break;
+
 	case MG_FROSTDIVER:
 	case WZ_FROSTNOVA:
 		sc_start(bl,SC_FREEZE,skilllv*3+35,skilllv,skill_get_time2(skillid,skilllv));

+ 3 - 0
src/map/status.c

@@ -6594,7 +6594,10 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 		break;
 	case SC_INCATKRATE: //Simulated Explosion spirits effect.
 		if (bl->type != BL_MOB)
+		{
+			opt_flag = 0;
 			break;
+		}
 	case SC_EXPLOSIONSPIRITS:
 		sc->opt3 &= ~0x8;
 		opt_flag = 0;