diff options
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | db/skill_castnodex_db.txt | 2 | ||||
-rw-r--r-- | src/map/skill.c | 38 |
3 files changed, 30 insertions, 13 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index c0d8e8866..1933630ba 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,9 @@ 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. +2009/03/26 + * Fixed Spirit of Assassin not reducing the aftercast delay of Sonic Blow [Playtester] + * Assumptio can neither be cast nor dispelled on monsters anymore [Playtester] 2009/03/23 * Added support for new status change packet, uses new setting display_status_timers in client.conf. [Sara] 2009/03/18 diff --git a/db/skill_castnodex_db.txt b/db/skill_castnodex_db.txt index 73bddc9cf..a9b989d70 100644 --- a/db/skill_castnodex_db.txt +++ b/db/skill_castnodex_db.txt @@ -7,7 +7,7 @@ // // Delay: 0 - everything affects the skill's delay // 1 - skill's delay is not affected by dex -// 2 - skill's delay is not affected by statuses (Magic Strings, etc) +// 2 - skill's delay is not affected by Magic Strings / Bragi // 4 - skill's delay is not affected by item bonuses (equip, cards) // // Note: Values are bit fields, add them up to combine their effects. diff --git a/src/map/skill.c b/src/map/skill.c index ac1702fcd..d5fe1efa6 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3528,7 +3528,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SG_MOON_COMFORT: case SG_STAR_COMFORT: case NPC_HALLUCINATION: - case HP_ASSUMPTIO: case GS_MADNESSCANCEL: case GS_ADJUSTMENT: case GS_INCREASING: @@ -3540,6 +3539,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; + case HP_ASSUMPTIO: + if (sd && !dstsd) { + clif_skill_fail(sd,skillid,0,0); + } else { + clif_skill_nodamage(src,bl,skillid,skilllv, + sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); + } + break; case MG_SIGHT: case MER_SIGHT: case AL_RUWACH: @@ -4536,6 +4543,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SC_READYCOUNTER:case SC_DODGE: case SC_WARM: case SC_SPEEDUP1: case SC_AUTOTRADE: case SC_CRITICALWOUND: continue; + case SC_ASSUMPTIO: + if( bl->type == BL_MOB ) + continue; + break; } if(i==SC_BERSERK) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. status_change_end(bl,(sc_type)i,-1); @@ -8744,22 +8755,25 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv) } } + if (sc->data[SC_SPIRIT]) + { + switch (skill_id) { + case CR_SHIELDBOOMERANG: + if (sc->data[SC_SPIRIT]->val2 == SL_CRUSADER) + time /= 2; + break; + case AS_SONICBLOW: + if (!map_flag_gvg(bl->m) && !map[bl->m].flag.battleground && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN) + time /= 2; + break; + } + } + if (!(delaynodex&2)) { if (sc && sc->count) { if (sc->data[SC_POEMBRAGI]) time -= time * sc->data[SC_POEMBRAGI]->val3 / 100; - if (sc->data[SC_SPIRIT]) - switch (skill_id) { - case CR_SHIELDBOOMERANG: - if (sc->data[SC_SPIRIT]->val2 == SL_CRUSADER) - time /=2; - break; - case AS_SONICBLOW: - if (!map_flag_gvg(bl->m) && !map[bl->m].flag.battleground && sc->data[SC_SPIRIT]->val2 == SL_ASSASIN) - time /= 2; - break; - } } } |