From cbaf343e8310dd068a04e8a96979e780233d0a9c Mon Sep 17 00:00:00 2001 From: Asheraf Date: Tue, 29 Oct 2019 21:01:58 +0100 Subject: Dehardcode combo skills check --- db/pre-re/skill_db.conf | 20 ++++++++++++++++++++ db/re/skill_db.conf | 20 ++++++++++++++++++++ src/map/skill.c | 30 +++++++++--------------------- src/map/skill.h | 1 + 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf index f3e3bfb4a..0660ce01d 100644 --- a/db/pre-re/skill_db.conf +++ b/db/pre-re/skill_db.conf @@ -76,6 +76,7 @@ ShowSkillScale: true/false (boolean, defaults to false) AllowReproduce: true/false (boolean, defaults to false) HiddenTrap: true/false (boolean, defaults to false) + IsCombo: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") Types: "None", "Weapon", "Magic" or "Misc" @@ -7735,6 +7736,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" DamageType: { @@ -7811,6 +7813,7 @@ skill_db: ( SkillInfo: { NoCastSelf: true AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -7871,6 +7874,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -10921,6 +10925,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -10969,6 +10974,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12254,6 +12260,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12306,6 +12313,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12356,6 +12364,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12411,6 +12420,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12462,6 +12472,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -15021,6 +15032,7 @@ skill_db: ( } SkillInfo: { Spirit: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -19061,6 +19073,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + IsCombo: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -19097,6 +19112,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25006,6 +25022,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25129,6 +25146,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25174,6 +25192,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25642,6 +25661,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" NumberOfHits: -7 diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index e1f2098cd..0fc15c9d1 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -76,6 +76,7 @@ ShowSkillScale: true/false (boolean, defaults to false) AllowReproduce: true/false (boolean, defaults to false) HiddenTrap: true/false (boolean, defaults to false) + IsCombo: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") Types: "None", "Weapon", "Magic" or "Misc" @@ -8067,6 +8068,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" DamageType: { @@ -8155,6 +8157,7 @@ skill_db: ( SkillInfo: { NoCastSelf: true AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -8213,6 +8216,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -11237,6 +11241,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -11283,6 +11288,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12604,6 +12610,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12656,6 +12663,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12706,6 +12714,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12761,6 +12770,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -12812,6 +12822,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -15371,6 +15382,7 @@ skill_db: ( } SkillInfo: { Spirit: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -19616,6 +19628,9 @@ skill_db: ( SkillType: { Self: true } + SkillInfo: { + IsCombo: true + } AttackType: "Weapon" Element: "Ele_Weapon" DamageType: { @@ -19652,6 +19667,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25675,6 +25691,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25799,6 +25816,7 @@ skill_db: ( } SkillInfo: { NoCastSelf: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -25844,6 +25862,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" Element: "Ele_Weapon" @@ -26320,6 +26339,7 @@ skill_db: ( } SkillInfo: { AllowReproduce: true + IsCombo: true } AttackType: "Weapon" NumberOfHits: -7 diff --git a/src/map/skill.c b/src/map/skill.c index 7451fbf41..ad974c10b 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -13962,27 +13962,9 @@ static int skill_isammotype(struct map_session_data *sd, int skill_id) **/ static bool skill_is_combo(int skill_id) { - switch( skill_id ) - { - case MO_CHAINCOMBO: - case MO_COMBOFINISH: - case CH_TIGERFIST: - case CH_CHAINCRUSH: - case MO_EXTREMITYFIST: - case TK_TURNKICK: - case TK_STORMKICK: - case TK_DOWNKICK: - case TK_COUNTER: - case TK_JUMPKICK: - case HT_POWER: - case GC_COUNTERSLASH: - case GC_WEAPONCRUSH: - case SR_FALLENEMPIRE: - case SR_DRAGONCOMBO: - case SR_TIGERCANNON: - case SR_GATEOFHELL: - return true; - } + if (skill->get_inf2(skill_id) & INF2_IS_COMBO_SKILL) + return true; + return false; } @@ -20279,6 +20261,12 @@ static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_ski } else { sk->inf2 &= ~INF2_HIDDEN_TRAP; } + } else if (strcmpi(type, "IsCombo") == 0) { + if (on) { + sk->inf2 |= INF2_IS_COMBO_SKILL; + } else { + sk->inf2 &= ~INF2_IS_COMBO_SKILL; + } } else if (strcmpi(type, "None") != 0) { skilldb_invalid_error(type, config_setting_name(t), sk->nameid); } diff --git a/src/map/skill.h b/src/map/skill.h index 5da37d129..fe5cb6282 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -125,6 +125,7 @@ enum e_skill_inf2 { INF2_SHOW_SKILL_SCALE = 0x20000, INF2_ALLOW_REPRODUCE = 0x40000, INF2_HIDDEN_TRAP = 0x80000, // Traps that are hidden (based on trap_visiblity battle conf) + INF2_IS_COMBO_SKILL = 0x100000, // Sets whether a skill can be used in combos or not }; -- cgit v1.2.3-70-g09d2