diff options
author | shennetsind <ind@henn.et> | 2013-04-10 19:45:56 -0300 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2013-04-10 19:45:56 -0300 |
commit | a59be8328048f628cd200996b5d4a530a4d99cea (patch) | |
tree | e00550fd3d934afcd8cf61bba78762074fe55ae8 /src/map/battle.c | |
parent | a97aab1e2e54503483cfa0102e881122420d39ec (diff) | |
download | hercules-a59be8328048f628cd200996b5d4a530a4d99cea.tar.gz hercules-a59be8328048f628cd200996b5d4a530a4d99cea.tar.bz2 hercules-a59be8328048f628cd200996b5d4a530a4d99cea.tar.xz hercules-a59be8328048f628cd200996b5d4a530a4d99cea.zip |
Fixed reflect-damage loop that'd result to a crash
Special Thanks to jTynne!
Signed-off-by: shennetsind <ind@henn.et>
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 1abcaa19e..d06e02f6c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4669,7 +4669,8 @@ int battle_damage_area( struct block_list *bl, va_list ap) { else status_fix_damage(src,bl,damage,0); clif->damage(bl,bl,tick,amotion,dmotion,damage,1,ATK_BLOCK,0); - skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); + if( !(src && src->type == BL_PC && ((TBL_PC*)src)->state.autocast) ) + skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); map_freeblock_unlock(); } @@ -4880,8 +4881,9 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t rdamage = battle->calc_return_damage(target,src, &damage, wd.flag, 0); if( rdamage > 0 ) { if( tsc && tsc->data[SC_REFLECTDAMAGE] ) { - if( src != target )// Don't reflect your own damage (Grand Cross) - map_foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd.amotion,wd.dmotion,rdamage,tstatus->race,0); + if( src != target ) {// Don't reflect your own damage (Grand Cross) + map_foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd.amotion,wd.dmotion,rdamage,tstatus->race); + } } else { rdelay = clif->damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0); //Use Reflect Shield to signal this kind of skill trigger. [Skotlex] |