From 861610f4baa15aeb1cc8285fd4ecf7e8a46a304d Mon Sep 17 00:00:00 2001 From: Critical <48370698+CriticalXI@users.noreply.github.com> Date: Sat, 31 Jan 2026 21:51:59 -0700 Subject: [PATCH] [lua][module] BST Era Adjustments --- modules/abyssea/lua/job_adjustments.lua | 51 +++++++++++++++++++++++++ modules/abyssea/sql/job_adjustments.sql | 25 ++++++++++++ modules/soa/sql/job_adjustments.sql | 14 +++++++ modules/wotg/sql/job_adjustments.sql | 26 +++++++++++++ sql/abilities.sql | 2 +- 5 files changed, 117 insertions(+), 1 deletion(-) diff --git a/modules/abyssea/lua/job_adjustments.lua b/modules/abyssea/lua/job_adjustments.lua index 63a406af99e..31072cf8e68 100644 --- a/modules/abyssea/lua/job_adjustments.lua +++ b/modules/abyssea/lua/job_adjustments.lua @@ -127,4 +127,55 @@ m:addOverride('xi.job_utils.dark_knight.useDiabolicEye', function(player, target return xi.effect.DIABOLIC_EYE end) +----------------------------------- +-- Beastmaster +----------------------------------- + +-- Reward: Override pet food healing values to pre-Abyssea values +-- Source: https://www.bg-wiki.com/ffxi/Version_Update_(09/08/2010) +xi.job_utils.beastmaster.petFoodData = +{ + [xi.item.PET_FOOD_ALPHA_BISCUIT] = { minHealing = 25, regen = 1, mndMult = 2, mndThreshold = 10 }, + [xi.item.PET_FOOD_BETA_BISCUIT] = { minHealing = 50, regen = 3, mndMult = 1, mndThreshold = 33 }, + [xi.item.PET_FOOD_GAMMA_BISCUIT] = { minHealing = 100, regen = 5, mndMult = 1, mndThreshold = 35 }, + [xi.item.PET_FOOD_DELTA_BISCUIT] = { minHealing = 150, regen = 8, mndMult = 2, mndThreshold = 40 }, + [xi.item.PET_FOOD_EPSILON_BISCUIT] = { minHealing = 300, regen = 11, mndMult = 2, mndThreshold = 45 }, + [xi.item.PET_FOOD_ZETA_BISCUIT] = { minHealing = 350, regen = 14, mndMult = 3, mndThreshold = 45 }, +} + +-- Feral Howl: Apply merit recast reduction, remove extra accuracy from merits +m:addOverride('xi.job_utils.beastmaster.useFeralHowl', function(player, target, ability, action) + local recastReduction = player:getMerit(xi.merit.FERAL_HOWL) - 150 + action:setRecast(action:getRecast() - recastReduction) + + if + not xi.data.statusEffect.isTargetImmune(target, xi.effect.TERROR, xi.element.DARK) and + not xi.data.statusEffect.isTargetResistant(player, target, xi.effect.TERROR) and + not xi.data.statusEffect.isEffectNullified(target, xi.effect.TERROR, 0) + then + local resistanceRate = xi.combat.magicHitRate.calculateResistRate(player, target, 0, 0, xi.skillRank.B_MINUS, xi.element.DARK, xi.mod.CHR, xi.effect.TERROR) + + if xi.data.statusEffect.isResistRateSuccessfull(xi.effect.TERROR, resistanceRate, 0) then + target:addStatusEffect(xi.effect.TERROR, 1, 0, 10 * resistanceRate) + end + end + + return xi.effect.TERROR +end) + +-- Killer Insinct: Apply merit recast reduction, remove extra duration from merits +m:addOverride('xi.job_utils.beastmaster.useKillerInstinct', function(player, target, ability, action) + local recastReduction = player:getMerit(xi.merit.KILLER_INSTINCT) - 150 + action:setRecast(action:getRecast() - recastReduction) + + -- Notes: Pet ecosystem is assigned to the subPower, then mapped to the correct killer mod in the effect script. + local pet = player:getPet() + local petEcosystem = pet:getEcosystem() + local power = 10 + + target:addStatusEffect(xi.effect.KILLER_INSTINCT, power, 0, 60, 0, petEcosystem) + + return xi.effect.KILLER_INSTINCT +end) + return m diff --git a/modules/abyssea/sql/job_adjustments.sql b/modules/abyssea/sql/job_adjustments.sql index a9a15a9c471..87b8d0eed7c 100644 --- a/modules/abyssea/sql/job_adjustments.sql +++ b/modules/abyssea/sql/job_adjustments.sql @@ -82,3 +82,28 @@ UPDATE abilities SET recastTime = 900 WHERE name = 'diabolic_eye'; -- Diabolic Eye merit: Revert value to 150 seconds per level UPDATE merits SET value = 150 WHERE name = 'diabolic_eye'; + +------------------------------------ +-- Beastmaster +------------------------------------ + +-- Pet Food Biscuits: Remove level requirements +-- Source: https://www.bg-wiki.com/ffxi/Version_Update_(09/08/2010) +UPDATE item_equipment SET level = 0 WHERE name = 'pet_food_alpha'; +UPDATE item_equipment SET level = 0 WHERE name = 'pet_food_beta'; +UPDATE item_equipment SET level = 0 WHERE name = 'pet_fd._gamma'; +UPDATE item_equipment SET level = 0 WHERE name = 'pet_food_delta'; +UPDATE item_equipment SET level = 0 WHERE name = 'pet_fd._epsilon'; +UPDATE item_equipment SET level = 0 WHERE name = 'pet_food_zeta'; + +-- Feral Howl: Revert recast from 5 to 15 minutes +UPDATE abilities SET recastTime = 900 WHERE name = 'feral_howl'; + +-- Feral Howl merit: Revert value to 150 seconds per level +UPDATE merits SET value = 150 WHERE name = 'feral_howl'; + +-- Killer Instinct: Revert recast from 5 to 15 minutes +UPDATE abilities SET recastTime = 900 WHERE name = 'killer_instinct'; + +-- Killer Instinct merit: Revert value to 150 seconds per level +UPDATE merits SET value = 150 WHERE name = 'killer_instinct'; diff --git a/modules/soa/sql/job_adjustments.sql b/modules/soa/sql/job_adjustments.sql index c7c6a9bd092..00d9534ac42 100644 --- a/modules/soa/sql/job_adjustments.sql +++ b/modules/soa/sql/job_adjustments.sql @@ -10,3 +10,17 @@ -- Desperate Blows: Revert job trait to be merit unlocked UPDATE traits SET meritid = 2502, level = 75 WHERE name = 'desperate blows'; + +------------------------------------ +-- Beastmaster +-- Source: https://www.bg-wiki.com/ffxi/Version_Update_(04/29/2013) +------------------------------------ + +-- Sic: Revert recast from 1 1/2 min to 2 min +UPDATE abilities SET recastTime = 120 WHERE name = 'sic'; + +-- Ready: Revert charge recast from 30 to 60 seconds +UPDATE abilities SET recastTime = 60 WHERE name = 'ready'; + +-- Sic merit: Revert value from 2 to 4 seconds per level +UPDATE merits SET value = 4 WHERE name = 'sic_recast'; diff --git a/modules/wotg/sql/job_adjustments.sql b/modules/wotg/sql/job_adjustments.sql index f8af7fced4a..9b755f892dd 100644 --- a/modules/wotg/sql/job_adjustments.sql +++ b/modules/wotg/sql/job_adjustments.sql @@ -32,3 +32,29 @@ UPDATE `spell_list` SET `jobs` = 0x00004B000000000000000000000000000000005B0000, -- Martyr: Revert range from 20 to 6 yalms UPDATE `abilities` SET `range` = 6.0 WHERE `name` = 'martyr'; + +------------------------------------ +-- Beastmaster +------------------------------------ + +-- Reward: Revert recast from 1 1/2 min to 3 minutes +-- Source: https://www.bg-wiki.com/ffxi/Version_Update_(03/11/2008) +UPDATE `abilities` SET `recastTime` = 180 WHERE `name` = 'reward'; + +-- Reward merit: Revert value to 6 seconds per level +UPDATE `merits` SET `value` = 6 WHERE `name` = 'reward'; + +-- Heel: Revert cooldown from 5 seconds to 10 seconds\ +-- Source: http://www.playonline.com/pcd/update/ff11us/20071120wwnX41/detail.html +UPDATE `abilities` SET `cooldown` = 10 WHERE `name` = 'heel'; + +-- Stay: Revert cooldown from 5 seconds to 10 seconds +UPDATE `abilities` SET `cooldown` = 10 WHERE `name` = 'stay'; + +-- Leave: Revert cooldown from 5 seconds to 10 seconds +UPDATE `abilities` SET `cooldown` = 10 WHERE `name` = 'leave'; + +-- Heel/Stay/Leave: Remove shared cooldown +UPDATE `abilities` set `recastId` = 0 Where `name` = 'heel'; +UPDATE `abilities` set `recastId` = 0 Where `name` = 'leave'; +UPDATE `abilities` set `recastId` = 0 Where `name` = 'stay'; diff --git a/sql/abilities.sql b/sql/abilities.sql index 09312f5f13a..e982b0132bd 100644 --- a/sql/abilities.sql +++ b/sql/abilities.sql @@ -266,7 +266,7 @@ INSERT INTO `abilities` VALUES (247,'composure',5,50,1,300,50,0,0,215,2000,0,6,0 INSERT INTO `abilities` VALUES (248,'yonin',13,40,1,180,146,0,0,218,2000,0,6,0,0,0,1,600,0,4,'WOTG'); INSERT INTO `abilities` VALUES (249,'innin',13,40,1,180,147,0,0,219,2000,0,6,0,0,0,1,60,0,4,'WOTG'); INSERT INTO `abilities` VALUES (250,'avatars_favor',15,55,1,300,176,100,0,94,2000,0,6,0,1,0,1,80,0,256,'WOTG'); -INSERT INTO `abilities` VALUES (251,'ready',9,25,1,0,102,0,0,83,2000,0,6,4,0,0,0,0,902,64,NULL); +INSERT INTO `abilities` VALUES (251,'ready',9,25,1,0,102,0,0,83,2000,0,6,4,0,0,0,0,902,64,'WOTG'); INSERT INTO `abilities` VALUES (252,'restraint',1,77,1,600,9,100,0,220,2000,0,6,0,0,0,1,300,0,0,'WOTG'); INSERT INTO `abilities` VALUES (253,'perfect_counter',2,79,1,60,22,100,0,221,2000,0,6,0,0,0,1,80,0,0,NULL); INSERT INTO `abilities` VALUES (254,'mana_wall',4,76,1,600,39,0,0,222,2000,0,6,0,0,0,1,0,0,0,NULL);