From 9db667c6acf6fe225820bf5dc6808057fb7ed4eb Mon Sep 17 00:00:00 2001 From: aleos89 Date: Tue, 12 Jan 2016 10:51:29 -0500 Subject: [PATCH] Follow up to 4871dab * Expanded the array for Comet's SP cost to MAX_PARTY to avoid overflow. * Refined the count check for skill_check_condition_char_sub: -- Included Adoramus in the check. -- Added a fail safe check. Thanks to @theultramage. --- src/map/battle.c | 2 +- src/map/skill.c | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index f2ea5dc60c..871665c102 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5848,7 +5848,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list if (sd && sd->status.party_id) { struct map_session_data* psd; - int p_sd[5] = {0, 0, 0, 0, 0}, c; // just limit it to 5 + int p_sd[MAX_PARTY], c; c = 0; memset(p_sd, 0, sizeof(p_sd)); diff --git a/src/map/skill.c b/src/map/skill.c index 832ea981b3..3bf302d8e8 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -14133,14 +14133,16 @@ int skill_check_condition_char_sub (struct block_list *bl, va_list ap) skill_id = va_arg(ap,int); inf2 = skill_get_inf2(skill_id); - if (skill_id == PR_BENEDICTIO && *c >= 2) - return 0; // Two companions found for Benedictio. [Skotlex] - - if (inf2&INF2_ENSEMBLE_SKILL && *c >= 1) - return 0; // Partner found for ensembles. - - if ((inf2&INF2_CHORUS_SKILL || skill_id == WL_COMET) && *c == MAX_PARTY) - return 0; // Entire party accounted for. + if (skill_id == PR_BENEDICTIO && *c >= 2) // Check for two companions for Benedictio. [Skotlex] + return 0; + else if (skill_id == AB_ADORAMUS && *c >= 1) // Check for a partner for Adoramus. + return 0; + else if (inf2&INF2_ENSEMBLE_SKILL && *c >= 1) // Check for a partner for ensembles. + return 0; + else if ((inf2&INF2_CHORUS_SKILL || skill_id == WL_COMET) && *c == MAX_PARTY) // Check for partners for Chorus or Comet; Cap if the entire party is accounted for. + return 0; + else if (*c >= 1) // Check for all other cases. + return 0; if (bl == src) return 0;