summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-08-20 01:23:25 +0000
committerInkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>2009-08-20 01:23:25 +0000
commit8f8f101effc1c7e73af479a5474e59a6ebf3d0d3 (patch)
tree99631a3691b57c7965f805a2cfa1aca93b987160 /src
parent700e4388dbea30f4119404b3eb1ac9be372d1adf (diff)
downloadhercules-8f8f101effc1c7e73af479a5474e59a6ebf3d0d3.tar.gz
hercules-8f8f101effc1c7e73af479a5474e59a6ebf3d0d3.tar.bz2
hercules-8f8f101effc1c7e73af479a5474e59a6ebf3d0d3.tar.xz
hercules-8f8f101effc1c7e73af479a5474e59a6ebf3d0d3.zip
* Some fixes for Heat
- won't cancel combo wait. (bugreport:3228) - should work with hp/sp drain bonus. (bugreport:3507) - consumes 10 sp if the attack doesn't connect. (bugreport:3038) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14017 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/skill.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index cdd00f6e5..9d8c3d6c2 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1739,7 +1739,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
unit_cancel_combo(src); // Cancel combo wait
break;
default:
- status_change_end(src,SC_COMBO,-1);
+ if( src == dsrc ) // Ground skills are exceptions. [Inkfish]
+ status_change_end(src,SC_COMBO,-1);
}
}
switch(skillid)
@@ -1917,7 +1918,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
if(skillid == CR_GRANDCROSS || skillid == NPC_GRANDDARKNESS)
dmg.flag |= BF_WEAPON;
- if(sd && dmg.flag&BF_WEAPON && src != bl && src == dsrc && damage > 0) {
+ if( sd && dmg.flag&BF_WEAPON && src != bl && ( src == dsrc || ( dsrc->type == BL_SKILL && ( skillid == SG_SUN_WARM || skillid == SG_MOON_WARM || skillid == SG_STAR_WARM ) ) ) && damage > 0 )
+ {
if (battle_config.left_cardfix_to_right)
battle_drain(sd, bl, dmg.damage, dmg.damage, tstatus->race, tstatus->mode&MD_BOSS);
else
@@ -7464,8 +7466,12 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
status_zap(bl, 0, 15); // sp damage to players
else // mobs
if( status_charge(ss, 0, 2) ) // costs 2 SP per hit
- skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick+count*sg->interval,0);
- else { //should end when out of sp.
+ {
+ if( !skill_attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick+count*sg->interval,0) )
+ status_charge(ss, 0, 8); //costs additional 8 SP if miss
+ }
+ else
+ { //should end when out of sp.
sg->limit = DIFF_TICK(tick,sg->tick);
break;
}