diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-09 12:15:04 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-09 12:15:04 +0000 |
commit | 7d396ef4ecd85de70c6b6cc7836dea5874bd05a6 (patch) | |
tree | 9c20e40a4a888d0022b715a22858c8b37f870fb4 /src | |
parent | 1f8c922a8ffd8fb216c050b86fdbc4040e5780f6 (diff) | |
download | hercules-7d396ef4ecd85de70c6b6cc7836dea5874bd05a6.tar.gz hercules-7d396ef4ecd85de70c6b6cc7836dea5874bd05a6.tar.bz2 hercules-7d396ef4ecd85de70c6b6cc7836dea5874bd05a6.tar.xz hercules-7d396ef4ecd85de70c6b6cc7836dea5874bd05a6.zip |
A rather ugly fix to fix knockback for Firewall, Stormgust and Sanctuary
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10869 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/battle.c | 8 | ||||
-rw-r--r-- | src/map/skill.c | 11 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index a40df7765..cda47fc8c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2166,18 +2166,14 @@ struct Damage battle_calc_magic_attack( switch(skill_num) { case MG_FIREWALL: + ad.dmotion = 0; //No flinch animation. if(mflag) //mflag has a value when it was checked against an undead in skill.c [Skotlex] ad.blewcount = 0; //No knockback - else - ad.blewcount |= 0x10000; + break; case HW_GRAVITATION: ad.dmotion = 0; //No flinch animation. break; - case WZ_STORMGUST: //Should knockback randomly. - ad.blewcount|=0x40000; - break; case PR_SANCTUARY: - ad.blewcount|=0x10000; ad.dmotion = 0; //No flinch animation. break; } diff --git a/src/map/skill.c b/src/map/skill.c index b0ca693b1..5df5d3355 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2141,7 +2141,16 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds //Only knockback if it's still alive, otherwise a "ghost" is left behind. [Skotlex] if (dmg.blewcount > 0 && !status_isdead(bl)) - skill_blown(dsrc,bl,dmg.blewcount,-1,0); + { + int direction = -1; // default + switch(skillid) + { + case MG_FIREWALL: direction = unit_getdir(bl); break; // backwards + case WZ_STORMGUST: direction = rand()%8; break; // randomly + case PR_SANCTUARY: direction = unit_getdir(bl); break; // backwards + } + skill_blown(dsrc,bl,dmg.blewcount,direction,0); + } //Delayed damage must be dealt after the knockback (it needs to know actual position of target) if (dmg.amotion) |