From b2e1879cc22faeda1511108e912d915c90d30b6e Mon Sep 17 00:00:00 2001 From: skyleo Date: Thu, 10 Oct 2019 03:13:14 +0200 Subject: Fix Chaotic Blessings never healing the enemy It has a chance to roll for enemy and heal the enemy, While calculating the chance was correct, it was getting the enemy with battle->check_target. But unit->stop_attack has been called before in unit->skilluse_id2, making battle->check_target return NULL at that point, since it has no attack target anymore. So it defaulted to heal the Homunculus itself, instead of the enemy. --- src/map/skill.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/map/skill.c') diff --git a/src/map/skill.c b/src/map/skill.c index b5f84679e..fc5fc013e 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8758,12 +8758,20 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * int r = rnd()%100; int target = (skill_lv-1)%5; int hp; - if(rget_master(src); - else //Enemy - bl = map->id2bl(battle->get_target(src)); + } else if ((per[target][1] - per[target][0]) < per[target][0] + && bl == battle->get_master(src)) { + /** + * Skill rolled for enemy, but there's nothing the Homunculus is attacking. + * So bl has been set to its master in unit->skilluse_id2. + * If it's more likely that it will heal itself, + * we let it heal itself. + */ + bl = src; + } if (!bl) bl = src; hp = skill->calc_heal(src, bl, skill_id, 1+rnd()%skill_lv, true); -- cgit v1.2.3-70-g09d2