summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-10-16 23:24:39 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-10-16 23:24:39 +0000
commitdb1f65c3ed119044754d1a4deefc6cf36461554b (patch)
treeb9bfea8ba4ed7af623f21d3397f149575ea0e50e /src/map/skill.c
parent68584f714db13e550ae532674fc39a6aeff428dc (diff)
downloadhercules-db1f65c3ed119044754d1a4deefc6cf36461554b.tar.gz
hercules-db1f65c3ed119044754d1a4deefc6cf36461554b.tar.bz2
hercules-db1f65c3ed119044754d1a4deefc6cf36461554b.tar.xz
hercules-db1f65c3ed119044754d1a4deefc6cf36461554b.zip
* Venom Splasher fixes according to bugreport:230
- added passive skillv*30% bonus from Poison React - added official splash damage calculation - damage gets split by the number of targets at range 1, then applied to all targets in range 2 - reverted some very old code - clif_calc_delay() - that was preventing skills from displaying properly, by erroneously assuming that if the target has ddelay 0, it has endure effect activated - TODO: the skill should not consume a gemstone when it fails git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11494 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index c1617ab06..2d3f83ee1 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -3126,8 +3126,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
// if skill damage should be split among targets, count them
//SD_LEVEL -> Forced splash damage for Auto Blitz-Beat -> count targets
+ //special case: Venom Splasher uses a different range for searching than for splashing
if( flag&SD_LEVEL || skill_get_nk(skillid)&NK_SPLASHSPLIT )
- skill_area_temp[0] = map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), BL_CHAR, src, skillid, skilllv, tick, BCT_ENEMY, skill_area_sub_count);
+ skill_area_temp[0] = map_foreachinrange(skill_area_sub, bl, (skillid == AS_SPLASHER)?1:skill_get_splash(skillid, skilllv), BL_CHAR, src, skillid, skilllv, tick, BCT_ENEMY, skill_area_sub_count);
// recursive invocation of skill_castend_damage_id() with flag|1
map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src), src, skillid, skilllv, tick, flag|BCT_ENEMY|1, skill_castend_damage_id);
@@ -5256,8 +5257,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
return 1;
}
clif_skill_nodamage(src,bl,skillid,skilllv,
- sc_start4(bl,type,100,
- skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));
+ sc_start4(bl,type,100,skilllv,skillid,src->id,skill_get_time(skillid,skilllv),1000));
+ if (sd) skill_blockpc_start (sd, skillid, skill_get_time(skillid, skilllv)+3000);
break;
case PF_MINDBREAKER:
@@ -5938,9 +5939,9 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
map_freeblock_unlock();
return 1;
} while(0);
+
//Skill failed.
- if (ud->skillid == MO_EXTREMITYFIST && sd &&
- !(sc && sc->count && sc->data[SC_FOGWALL].timer != -1))
+ if (ud->skillid == MO_EXTREMITYFIST && sd && !(sc && sc->count && sc->data[SC_FOGWALL].timer != -1))
{ //When Asura fails... (except when it fails from Fog of Wall)
//Consume SP/spheres
skill_check_condition(sd,ud->skillid, ud->skilllv,1);