From d3e3e7cfe380a60e8117f2c273c67da620cd380e Mon Sep 17 00:00:00 2001 From: Will Buck Date: Mon, 21 Apr 2025 22:36:34 -0500 Subject: [PATCH] Implement 'Enhance Burst Affinity' --- scripts/enum/mod.lua | 3 +++ scripts/globals/bluemagic.lua | 14 +++++++++- sql/item_mods.sql | 48 ++++++++++++++++++++++++----------- src/map/modifier.h | 12 +++++---- 4 files changed, 56 insertions(+), 21 deletions(-) diff --git a/scripts/enum/mod.lua b/scripts/enum/mod.lua index 29f271b6179..a0cc8e26205 100644 --- a/scripts/enum/mod.lua +++ b/scripts/enum/mod.lua @@ -1026,6 +1026,9 @@ xi.mod = AUGMENTS_ABSORB = 1337, -- Non-Liberator Absorb Spell potency +x% (Augments "Absorb" effects) ABSORB_EFFECT_DURATION = 1138, -- Absorb Spell duration +% ("Absorb" effect duration +x%) + ENHANCES_BURST_AFFINITY = 1139, -- Increases WSC bonus on spells cast with Burst Affinity (percent) + ENHANCES_CHAIN_AFFINITY = 1140, -- TODO: Increases WSC bonus on spells cast with Chain Affinity (base damage +) + -- IF YOU ADD ANY NEW MODIFIER HERE, ADD IT IN src/map/modifier.h ASWELL! -- The spares take care of finding the next ID to use so long as we don't forget to list IDs that have been freed up by refactoring. diff --git a/scripts/globals/bluemagic.lua b/scripts/globals/bluemagic.lua index b8ba5f406dd..515f19a9c99 100644 --- a/scripts/globals/bluemagic.lua +++ b/scripts/globals/bluemagic.lua @@ -206,6 +206,8 @@ xi.spells.blue.usePhysicalSpell = function(caster, target, spell, params) -- Final D local finalD = math.floor(initialD + fStr + wsc) + -- TODO: Implement ENHANCES_CHAIN_AFFINITY. Increase base damage of spell, but not limited to spell's damage cap + -- ENHANCES_CHAIN_AFFINITY should also not modify skillchain damage ---------------------------------------------- -- Get the possible pDIF range and hit rate -- @@ -313,10 +315,20 @@ xi.spells.blue.useMagicalSpell = function(caster, target, spell, params) -- WSC local wsc = calculateWSC(caster, params) + local bonusWSC = 0 + + -- BLU AF3 bonus (triples the base WSC when it procs) + if caster:getMod(xi.mod.AUGMENT_BLU_MAGIC) > math.random(0, 99) then + bonusWSC = 2 + end + if caster:hasStatusEffect(xi.effect.BURST_AFFINITY) then - wsc = wsc * 2 + bonusWSC = bonusWSC + 1 -- Burst Affinity doubles base WSC + bonusWSC = bonusWSC + (caster:getMod(xi.mod.ENHANCES_BURST_AFFINITY) / 100) end + wsc = wsc * (1 + bonusWSC) -- Bonus WSC from AF3/BA + -- INT/MND/CHR dmg bonuses params.diff = caster:getStat(params.attribute) - target:getStat(params.attribute) local statBonus = params.diff * params.tMultiplier diff --git a/sql/item_mods.sql b/sql/item_mods.sql index ab5d4dd18fc..4e751b57d16 100644 --- a/sql/item_mods.sql +++ b/sql/item_mods.sql @@ -4765,6 +4765,7 @@ INSERT INTO `item_mods` VALUES (11079,1,34); -- DEF: 34 INSERT INTO `item_mods` VALUES (11079,25,12); -- ACC: 12 INSERT INTO `item_mods` VALUES (11079,82,7); -- SWORD: 7 INSERT INTO `item_mods` VALUES (11079,384,600); -- HASTE_GEAR: 600 +INSERT INTO `item_mods` VALUES (11079,1140,20); -- ENHANCES_CHAIN_AFFINITY: 20 -- Navarchs Tricorne +2 INSERT INTO `item_mods` VALUES (11080,1,35); -- DEF: 35 @@ -5335,11 +5336,12 @@ INSERT INTO `item_mods` VALUES (11158,346,3); -- PERPETUATION_REDUCTION: 3 INSERT INTO `item_mods` VALUES (11158,540,40); -- ENHANCES_ELEMENTAL_SIPHON: 40 -- Mavi Basmak +2 -INSERT INTO `item_mods` VALUES (11159,1,23); -- DEF: 23 -INSERT INTO `item_mods` VALUES (11159,12,10); -- INT: 10 -INSERT INTO `item_mods` VALUES (11159,27,-6); -- ENMITY: -6 -INSERT INTO `item_mods` VALUES (11159,28,8); -- MATT: 8 -INSERT INTO `item_mods` VALUES (11159,30,8); -- MACC: 8 +INSERT INTO `item_mods` VALUES (11159,1,23); -- DEF: 23 +INSERT INTO `item_mods` VALUES (11159,12,10); -- INT: 10 +INSERT INTO `item_mods` VALUES (11159,27,-6); -- ENMITY: -6 +INSERT INTO `item_mods` VALUES (11159,28,8); -- MATT: 8 +INSERT INTO `item_mods` VALUES (11159,30,8); -- MACC: 8 +INSERT INTO `item_mods` VALUES (11159,1139,10); -- ENHANCES_BURST_AFFINITY: 10 -- Navarchs Bottes +2 INSERT INTO `item_mods` VALUES (11160,1,22); -- DEF: 22 @@ -5470,6 +5472,7 @@ INSERT INTO `item_mods` VALUES (11179,1,32); -- DEF: 32 INSERT INTO `item_mods` VALUES (11179,25,8); -- ACC: 8 INSERT INTO `item_mods` VALUES (11179,82,5); -- SWORD: 5 INSERT INTO `item_mods` VALUES (11179,384,500); -- HASTE_GEAR: 500 +INSERT INTO `item_mods` VALUES (11179,1140,10); -- ENHANCES_CHAIN_AFFINITY: 10 -- Navarchs Tricorne +1 INSERT INTO `item_mods` VALUES (11180,1,33); -- DEF: 33 @@ -6017,11 +6020,12 @@ INSERT INTO `item_mods` VALUES (11258,346,2); -- PERPETUATION_REDUCTION: 2 INSERT INTO `item_mods` VALUES (11258,540,25); -- ENHANCES_ELEMENTAL_SIPHON: 25 -- Mavi Basmak +1 -INSERT INTO `item_mods` VALUES (11259,1,21); -- DEF: 21 -INSERT INTO `item_mods` VALUES (11259,12,7); -- INT: 7 -INSERT INTO `item_mods` VALUES (11259,27,-4); -- ENMITY: -4 -INSERT INTO `item_mods` VALUES (11259,28,5); -- MATT: 5 -INSERT INTO `item_mods` VALUES (11259,30,5); -- MACC: 5 +INSERT INTO `item_mods` VALUES (11259,1,21); -- DEF: 21 +INSERT INTO `item_mods` VALUES (11259,12,7); -- INT: 7 +INSERT INTO `item_mods` VALUES (11259,27,-4); -- ENMITY: -4 +INSERT INTO `item_mods` VALUES (11259,28,5); -- MATT: 5 +INSERT INTO `item_mods` VALUES (11259,30,5); -- MACC: 5 +INSERT INTO `item_mods` VALUES (11259,1139,5); -- ENHANCES_BURST_AFFINITY: 5 -- Navarchs Bottes +1 INSERT INTO `item_mods` VALUES (11260,1,20); -- DEF: 20 @@ -42457,10 +42461,11 @@ INSERT INTO `item_mods` VALUES (20712,25,20); -- ACC: 20 INSERT INTO `item_mods` VALUES (20714,355,227); -- ADDS_WEAPONSKILL: 227 -- Acclimator -INSERT INTO `item_mods` VALUES (20715,25,15); -- ACC: 15 -INSERT INTO `item_mods` VALUES (20715,30,15); -- MACC: 15 -INSERT INTO `item_mods` VALUES (20715,175,10); -- SKILLCHAINDMG: 10 -INSERT INTO `item_mods` VALUES (20715,311,96); -- MAGIC_DAMAGE: 96 +INSERT INTO `item_mods` VALUES (20715,25,15); -- ACC: 15 +INSERT INTO `item_mods` VALUES (20715,30,15); -- MACC: 15 +INSERT INTO `item_mods` VALUES (20715,175,10); -- SKILLCHAINDMG: 10 +INSERT INTO `item_mods` VALUES (20715,311,96); -- MAGIC_DAMAGE: 96 +INSERT INTO `item_mods` VALUES (20715,1140,10); -- ENHANCES_CHAIN_AFFINITY: 10 -- Perfervid Sword INSERT INTO `item_mods` VALUES (20716,8,12); -- STR: 12 @@ -48020,6 +48025,7 @@ INSERT INTO `item_mods` VALUES (23100,68,78); -- EVA: 78 INSERT INTO `item_mods` VALUES (23100,82,25); -- SWORD: 25 INSERT INTO `item_mods` VALUES (23100,384,800); -- HASTE_GEAR: 8% INSERT INTO `item_mods` VALUES (23100,841,8); -- ALL_WSDMG_FIRST_HIT: 8 +INSERT INTO `item_mods` VALUES (23100,1140,26); -- ENHANCES_CHAIN_AFFINITY: 26 -- Chasseur's tricorne +2 INSERT INTO `item_mods` VALUES (23101,1,120); -- DEF: 120 @@ -51264,6 +51270,7 @@ INSERT INTO `item_mods` VALUES (23256,68,48); -- EVA: 48 INSERT INTO `item_mods` VALUES (23256,168,22); -- SPELLINTERRUPT: 22 INSERT INTO `item_mods` VALUES (23256,384,600); -- HASTE_GEAR: 600 INSERT INTO `item_mods` VALUES (23256,487,5); -- MAG_BURST_BONUS: 5 +INSERT INTO `item_mods` VALUES (23256,1139,14); -- ENHANCES_BURST_AFFINITY: 14 -- Laksamanas Trews +2 INSERT INTO `item_mods` VALUES (23257,1,122); -- DEF: 122 @@ -52592,6 +52599,7 @@ INSERT INTO `item_mods` VALUES (23323,31,79); -- MEVA: 79 INSERT INTO `item_mods` VALUES (23323,68,82); -- EVA: 82 INSERT INTO `item_mods` VALUES (23323,175,5); -- SKILLCHAINDMG: 5 INSERT INTO `item_mods` VALUES (23323,384,400); -- HASTE_GEAR: 400 +INSERT INTO `item_mods` VALUES (23323,1140,22); -- ENHANCES_CHAIN_AFFINITY: 22 -- Laksamanas Bottes +2 INSERT INTO `item_mods` VALUES (23324,1,80); -- DEF: 80 @@ -53493,7 +53501,7 @@ INSERT INTO `item_mods` VALUES (23368,31,147); -- MEVA: 147 INSERT INTO `item_mods` VALUES (23368,68,100); -- EVA: 100 INSERT INTO `item_mods` VALUES (23368,384,300); -- HASTE_GEAR: 3% INSERT INTO `item_mods` VALUES (23368,487,10); -- MAG_BURST_BONUS: 10 --- TODO: "Burst Affinity"+18 +INSERT INTO `item_mods` VALUES (23368,1139,18); -- ENHANCES_BURST_AFFINITY: 18 -- Chasseur's bottes +2 INSERT INTO `item_mods` VALUES (23369,1,89); -- DEF: 89 @@ -55508,6 +55516,7 @@ INSERT INTO `item_mods` VALUES (23591,68,58); -- EVA: 58 INSERT INTO `item_mods` VALUES (23591,168,24); -- SPELLINTERRUPT: 24 INSERT INTO `item_mods` VALUES (23591,384,600); -- HASTE_GEAR: 600 INSERT INTO `item_mods` VALUES (23591,487,10); -- MAG_BURST_BONUS: 10 +INSERT INTO `item_mods` VALUES (23591,1139,16); -- ENHANCES_BURST_AFFINITY: 16 -- Laksamanas Trews +3 INSERT INTO `item_mods` VALUES (23592,1,132); -- DEF: 132 @@ -55992,6 +56001,7 @@ INSERT INTO `item_mods` VALUES (23658,31,89); -- MEVA: 89 INSERT INTO `item_mods` VALUES (23658,68,92); -- EVA: 92 INSERT INTO `item_mods` VALUES (23658,175,10); -- SKILLCHAINDMG: 10 INSERT INTO `item_mods` VALUES (23658,384,400); -- HASTE_GEAR: 400 +INSERT INTO `item_mods` VALUES (23658,1140,24); -- ENHANCES_CHAIN_AFFINITY: 24 -- Laksamanas Bottes +3 INSERT INTO `item_mods` VALUES (23659,1,90); -- DEF: 90 @@ -63834,6 +63844,7 @@ INSERT INTO `item_mods` VALUES (26770,31,51); -- MEVA: 51 INSERT INTO `item_mods` VALUES (26770,68,17); -- EVA: 17 INSERT INTO `item_mods` VALUES (26770,82,10); -- SWORD: 10 INSERT INTO `item_mods` VALUES (26770,384,700); -- HASTE_GEAR: 700 +INSERT INTO `item_mods` VALUES (26770,1140,22); -- ENHANCES_CHAIN_AFFINITY: 22 -- Hashishin Kavuk +1 INSERT INTO `item_mods` VALUES (26771,1,102); -- DEF: 102 @@ -63852,6 +63863,7 @@ INSERT INTO `item_mods` VALUES (26771,31,75); -- MEVA: 75 INSERT INTO `item_mods` VALUES (26771,68,38); -- EVA: 38 INSERT INTO `item_mods` VALUES (26771,82,20); -- SWORD: 20 INSERT INTO `item_mods` VALUES (26771,384,800); -- HASTE_GEAR: 800 +INSERT INTO `item_mods` VALUES (26771,1140,24); -- ENHANCES_CHAIN_AFFINITY: 24 -- Chasseurs Tricorne INSERT INTO `item_mods` VALUES (26772,1,69); -- DEF: 69 @@ -72278,6 +72290,7 @@ INSERT INTO `item_mods` VALUES (27441,30,17); -- MACC: 17 INSERT INTO `item_mods` VALUES (27441,31,73); -- MEVA: 73 INSERT INTO `item_mods` VALUES (27441,68,28); -- EVA: 28 INSERT INTO `item_mods` VALUES (27441,384,300); -- HASTE_GEAR: 300 +INSERT INTO `item_mods` VALUES (27441,1139,12); -- ENHANCES_BURST_AFFINITY: 12 -- Hashishin Basmak +1 INSERT INTO `item_mods` VALUES (27442,1,73); -- DEF: 73 @@ -72297,6 +72310,7 @@ INSERT INTO `item_mods` VALUES (27442,30,27); -- MACC: 27 INSERT INTO `item_mods` VALUES (27442,31,107); -- MEVA: 107 INSERT INTO `item_mods` VALUES (27442,68,60); -- EVA: 60 INSERT INTO `item_mods` VALUES (27442,384,300); -- HASTE_GEAR: 300 +INSERT INTO `item_mods` VALUES (27442,1139,15); -- ENHANCES_BURST_AFFINITY: 15 -- Chasseurs Bottes INSERT INTO `item_mods` VALUES (27443,1,45); -- DEF: 45 @@ -79169,6 +79183,7 @@ INSERT INTO `item_mods` VALUES (28105,31,47); -- MEVA: 47 INSERT INTO `item_mods` VALUES (28105,68,17); -- EVA: 17 INSERT INTO `item_mods` VALUES (28105,168,20); -- SPELLINTERRUPT: 20 INSERT INTO `item_mods` VALUES (28105,384,600); -- HASTE_GEAR: 600 +INSERT INTO `item_mods` VALUES (28105,1139,10); -- ENHANCES_BURST_AFFINITY: 10 -- Laksamanas Trews INSERT INTO `item_mods` VALUES (28106,1,76); -- DEF: 76 @@ -79536,6 +79551,7 @@ INSERT INTO `item_mods` VALUES (28126,31,69); -- MEVA: 69 INSERT INTO `item_mods` VALUES (28126,68,38); -- EVA: 38 INSERT INTO `item_mods` VALUES (28126,168,20); -- SPELLINTERRUPT: 20 INSERT INTO `item_mods` VALUES (28126,384,600); -- HASTE_GEAR: 600 +INSERT INTO `item_mods` VALUES (28126,1139,12); -- ENHANCES_BURST_AFFINITY: 12 -- Laksamanas Trews +1 INSERT INTO `item_mods` VALUES (28127,1,112); -- DEF: 112 @@ -80989,6 +81005,7 @@ INSERT INTO `item_mods` VALUES (28238,29,2); -- MDEF: 2 INSERT INTO `item_mods` VALUES (28238,31,47); -- MEVA: 47 INSERT INTO `item_mods` VALUES (28238,68,33); -- EVA: 33 INSERT INTO `item_mods` VALUES (28238,384,400); -- HASTE_GEAR: 400 +INSERT INTO `item_mods` VALUES (28238,1140,20); -- ENHANCES_CHAIN_AFFINITY: 20 -- Laksamanas Bottes INSERT INTO `item_mods` VALUES (28239,1,46); -- DEF: 46 @@ -81358,6 +81375,7 @@ INSERT INTO `item_mods` VALUES (28259,29,5); -- MDEF: 5 INSERT INTO `item_mods` VALUES (28259,31,69); -- MEVA: 69 INSERT INTO `item_mods` VALUES (28259,68,72); -- EVA: 72 INSERT INTO `item_mods` VALUES (28259,384,400); -- HASTE_GEAR: 400 +INSERT INTO `item_mods` VALUES (28259,1140,20); -- ENHANCES_CHAIN_AFFINITY: 20 -- Laksamanas Bottes +1 INSERT INTO `item_mods` VALUES (28260,1,70); -- DEF: 70 diff --git a/src/map/modifier.h b/src/map/modifier.h index 7b8539ba594..29333a4fc0f 100644 --- a/src/map/modifier.h +++ b/src/map/modifier.h @@ -601,10 +601,12 @@ enum class Mod SPIRIT_CAST_REDUCTION = 140, // Spirit Pact casting time reduction in seconds // Blue Mage - BLUE_POINTS = 309, // Tracks extra blue points - BLUE_LEARN_CHANCE = 945, // Additional chance to learn blue magic - BLUE_JOB_TRAIT_BONUS = 1058, // TODO: Increases job traits gained from equipped blue magic (percent) - BLUE_MAGIC_EFFECT = 1059, // TODO: Bonus to Attribute Value of spell (percent) + BLUE_POINTS = 309, // Tracks extra blue points + BLUE_LEARN_CHANCE = 945, // Additional chance to learn blue magic + BLUE_JOB_TRAIT_BONUS = 1058, // TODO: Increases job traits gained from equipped blue magic (percent) + BLUE_MAGIC_EFFECT = 1059, // TODO: Bonus to Attribute Value of spell (percent) + ENHANCES_BURST_AFFINITY = 1139, // Increases WSC bonus on spells cast with Burst Affinity (percent) + ENHANCES_CHAIN_AFFINITY = 1140, // TODO: Increases WSC bonus on spells cast with Chain Affinity (base damage +) // Corsair EXP_BONUS = 382, // @@ -1072,7 +1074,7 @@ enum class Mod // 570 through 825 used by WS DMG mods these are not spares. // // SPARE IDs: 544 to 551, both included. - // SPARE IDs: 1139 and onward + // SPARE IDs: 1141 and onward }; // temporary workaround for using enum class as unordered_map key until compilers support it