diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | src/map/skill.c | 14 |
2 files changed, 15 insertions, 4 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index d51c03b29..f8eec07ba 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,11 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +09/08/18 + * Some fixes for Heat [Inkfish] + - Heat and other ground skills' activation won't cancel combo wait. (bugreport:3228) + - Heat should work with hp/sp drain bonus. (bugreport:3507) + - Heat consumes 10 sp if the attack doesn't connect. (bugreport:3038) 09/08/17 * Equipment DEF penalty shouldn't be applied to players in Mental Strength. (bugreport:3454) [Inkfish] 09/08/14 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; } |