summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--db/skill_castnodex_db.txt2
-rw-r--r--src/map/skill.c38
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;
- }
}
}