summaryrefslogtreecommitdiff
path: root/src/map/unit.c
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-08-18 07:52:11 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-08-18 07:52:11 +0000
commit611350370ef3ecf8fc939005df37a14b55a8f69c (patch)
tree1da4119c85685bed98adb79cad4cbcd144ca0ba8 /src/map/unit.c
parent15e7b5f4c91f2bd50fdaee6edcaa19ef849d3875 (diff)
downloadhercules-611350370ef3ecf8fc939005df37a14b55a8f69c.tar.gz
hercules-611350370ef3ecf8fc939005df37a14b55a8f69c.tar.bz2
hercules-611350370ef3ecf8fc939005df37a14b55a8f69c.tar.xz
hercules-611350370ef3ecf8fc939005df37a14b55a8f69c.zip
Implemented Renewal Casting System.
Fixed bugreport:2018 where CH_PALMSTRIKE deals damage to hidden targets. Fixed bugreport:6473, bugreport:6325 SC_DEADLYINFECT should now spread status ailments properly. Fixed bugreport:5541, bugreport:6179, bugreport:6281 where self buff skill is transfer to targets when doing a combo. Updated AC_VULTURE where in renewal it doesn't show the hit bonus anymore in the status window. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16661 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/unit.c')
-rw-r--r--src/map/unit.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/map/unit.c b/src/map/unit.c
index 089a5520e..5568ec1de 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1040,6 +1040,9 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
target_id = sc->data[SC_COMBO]->val2;
else
target_id = ud->target;
+
+ if( skill_get_inf(skill_num)&INF_SELF_SKILL && skill_get_nk(skill_num)&NK_NO_DAMAGE )// exploit fix
+ target_id = src->id;
temp = 1;
} else
if ( target_id == src->id &&
@@ -1250,8 +1253,13 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
}
// moved here to prevent Suffragium from ending if skill fails
- if (!(skill_get_castnodex(skill_num, skill_lv)&2))
- casttime = skill_castfix_sc(src, casttime, skill_num, skill_lv);
+#ifndef RENEWAL_CAST
+ if (!(skill_get_castnodex(skill_num, skill_lv)&2))
+ casttime = skill_castfix_sc(src, casttime);
+#else
+ casttime = skill_vfcastfix(src, casttime, skill_num, skill_lv);
+#endif
+
// in official this is triggered even if no cast time.
clif_skillcasting(src, src->id, target_id, 0,0, skill_num, skill_get_ele(skill_num, skill_lv), casttime);
if( casttime > 0 || temp )
@@ -1408,8 +1416,13 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
unit_stop_attack(src);
// moved here to prevent Suffragium from ending if skill fails
+#ifndef RENEWAL_CAST
if (!(skill_get_castnodex(skill_num, skill_lv)&2))
- casttime = skill_castfix_sc(src, casttime, skill_num, skill_lv);
+ casttime = skill_castfix_sc(src, casttime);
+#else
+ casttime = skill_vfcastfix(src, casttime, skill_num, skill_lv );
+#endif
+
ud->state.skillcastcancel = castcancel&&casttime>0?1:0;
if( !sd || sd->skillitem != skill_num || skill_get_cast(skill_num,skill_lv) )