From 53c1056d5f11c8ecd8caedae24765e922017fede Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 5 Mar 2008 15:39:46 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12299 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 5 +++++ db/skill_cast_db.txt | 2 +- src/map/battle.c | 15 ++++++--------- src/map/pc.c | 3 +++ src/map/skill.c | 5 +++++ src/map/status.c | 3 +++ 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 8deaea1fd..32b0e84fa 100644 --- a/Changelog-Trunk.txt +++ b/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 diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 146508184..f77a9ea5f 100644 --- a/db/skill_cast_db.txt +++ b/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 diff --git a/src/map/battle.c b/src/map/battle.c index c8e822a63..fc88611dd 100644 --- a/src/map/battle.c +++ b/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; diff --git a/src/map/pc.c b/src/map/pc.c index 2a9299658..7a863ad1b 100644 --- a/src/map/pc.c +++ b/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; + } } } } diff --git a/src/map/skill.c b/src/map/skill.c index 3855891a9..11acaa106 100644 --- a/src/map/skill.c +++ b/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)); diff --git a/src/map/status.c b/src/map/status.c index eae8805e4..11198f28f 100644 --- a/src/map/status.c +++ b/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; -- cgit v1.2.3-70-g09d2