From 621a625dd2d8236cc983e3ce8616e49b7e014619 Mon Sep 17 00:00:00 2001 From: Xaver-DaRed Date: Sun, 22 Mar 2026 09:39:58 +0100 Subject: [PATCH 1/2] `WEAPONSKILL_USE` minor cleanup leftovers --- scripts/actions/spells/trust/aaev.lua | 5 +- scripts/actions/spells/trust/aahm.lua | 5 +- scripts/actions/spells/trust/adelheid.lua | 5 +- scripts/actions/spells/trust/amchuchu.lua | 5 +- scripts/actions/spells/trust/areuhat.lua | 5 +- .../actions/spells/trust/ferreous_coffin.lua | 5 +- scripts/actions/spells/trust/monberaux.lua | 171 +++++++++--------- scripts/enum/mob_skill.lua | 26 +++ scripts/globals/magian.lua | 2 +- 9 files changed, 127 insertions(+), 102 deletions(-) diff --git a/scripts/actions/spells/trust/aaev.lua b/scripts/actions/spells/trust/aaev.lua index 5035f508a0d..b8799ac4950 100644 --- a/scripts/actions/spells/trust/aaev.lua +++ b/scripts/actions/spells/trust/aaev.lua @@ -105,9 +105,10 @@ spellObject.onMobSpawn = function(mob) mob:setTrustTPSkillSettings(ai.tp.CLOSER_UNTIL_TP, ai.s.RANDOM, 2000) mob:addListener('WEAPONSKILL_USE', 'AAEV_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action) - if skill:getID() == 3710 then -- Arrogance Incarnate + local skillId = skill:getID() + if skillId == xi.mobSkill.ARROGANCE_INCARNATE_2 then xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) - elseif skill:getID() == 3712 then -- Dominion Slash + elseif skillId == xi.mobSkill.DOMINION_SLASH_2 then xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_2) end end) diff --git a/scripts/actions/spells/trust/aahm.lua b/scripts/actions/spells/trust/aahm.lua index 3234adec9e8..acd3c3f1e80 100644 --- a/scripts/actions/spells/trust/aahm.lua +++ b/scripts/actions/spells/trust/aahm.lua @@ -82,9 +82,8 @@ spellObject.onMobSpawn = function(mob) mob:setTrustTPSkillSettings(ai.tp.ASAP, ai.s.RANDOM) mob:addListener('WEAPONSKILL_USE', 'AAHM_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action) - if skill:getID() == 3706 then -- Cross Reaver - -- Apathy strikes! - xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) + if skill:getID() == xi.mobSkill.CROSS_REAVER_3 then + xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) -- Apathy strikes! end end) end diff --git a/scripts/actions/spells/trust/adelheid.lua b/scripts/actions/spells/trust/adelheid.lua index 26ab35b21a4..46b131d058d 100644 --- a/scripts/actions/spells/trust/adelheid.lua +++ b/scripts/actions/spells/trust/adelheid.lua @@ -42,10 +42,9 @@ spellObject.onMobSpawn = function(mob) mob:addGambit(ai.t.TARGET, { ai.c.NOT_SC_AVAILABLE, 0 }, { ai.r.MA, ai.s.HIGHEST, xi.magic.spellFamily.NONE }, 75) mob:addListener('WEAPONSKILL_USE', 'ADELHEID_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action, damage) - if skill:getID() == 3469 then -- Twirling Dervish - -- You may want to cover your ears! + if skill:getID() == xi.mobSkill.TWIRLING_DERVISH then if math.random(1, 100) <= 33 then - xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) + xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) -- You may want to cover your ears! end end end) diff --git a/scripts/actions/spells/trust/amchuchu.lua b/scripts/actions/spells/trust/amchuchu.lua index 86e10755f75..0579e44a9f7 100644 --- a/scripts/actions/spells/trust/amchuchu.lua +++ b/scripts/actions/spells/trust/amchuchu.lua @@ -56,9 +56,8 @@ spellObject.onMobSpawn = function(mob) mob:setTrustTPSkillSettings(ai.tp.CLOSER_UNTIL_TP, ai.s.HIGHEST, 3000) mob:addListener('WEAPONSKILL_USE', 'AMCHUCHU_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action) - if skill:getID() == 61 then -- Dimidation - -- Nothing-wothing wrong with a little mad science now and again! - xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) + if skill:getID() == xi.mobSkill.DIMIDIATION_1 then + xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) -- Nothing-wothing wrong with a little mad science now and again! end end) end diff --git a/scripts/actions/spells/trust/areuhat.lua b/scripts/actions/spells/trust/areuhat.lua index 3cdc758b7ca..2b5afc708ed 100644 --- a/scripts/actions/spells/trust/areuhat.lua +++ b/scripts/actions/spells/trust/areuhat.lua @@ -23,10 +23,9 @@ spellObject.onMobSpawn = function(mob) }, { ai.r.JA, ai.s.SPECIFIC, xi.ja.BLOOD_RAGE }) mob:addListener('WEAPONSKILL_USE', 'AREUHAT_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action, damage) - if skill:getID() == 3438 then -- Dragon Breath - -- Perhaps I should just burn the eyes of these infidels with my true form. + if skill:getID() == xi.mobSkill.DRAGON_BREATH_3 then if math.random(1, 100) <= 33 then - xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) + xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) -- Perhaps I should just burn the eyes of these infidels with my true form. end end end) diff --git a/scripts/actions/spells/trust/ferreous_coffin.lua b/scripts/actions/spells/trust/ferreous_coffin.lua index cbddf9c699b..77d7f997996 100644 --- a/scripts/actions/spells/trust/ferreous_coffin.lua +++ b/scripts/actions/spells/trust/ferreous_coffin.lua @@ -48,10 +48,9 @@ spellObject.onMobSpawn = function(mob) mob:addGambit(ai.t.PARTY_DEAD, { ai.c.ALWAYS, 0 }, { ai.r.MA, ai.s.HIGHEST, xi.magic.spellFamily.RAISE }) mob:addListener('WEAPONSKILL_USE', 'FERREOUS_COFFIN_WEAPONSKILL_USE', function(mobArg, target, skill, tp, action, damage) - if skill:getID() == 170 then -- Randgrith - -- Return to the dust whence you came! Randgrith!!! + if skill:getID() == xi.mobSkill.RANDGRITH_1 then if math.random(1, 100) <= 66 then - xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) + xi.trust.message(mobArg, xi.trust.messageOffset.SPECIAL_MOVE_1) -- Return to the dust whence you came! Randgrith!!! end mob:addStatusEffect(xi.effect.ACCURACY_BOOST, { power = 20, duration = 20, origin = mob }) -- Cheat in Relic AM ACC diff --git a/scripts/actions/spells/trust/monberaux.lua b/scripts/actions/spells/trust/monberaux.lua index edf1d18355f..a9aec757d15 100644 --- a/scripts/actions/spells/trust/monberaux.lua +++ b/scripts/actions/spells/trust/monberaux.lua @@ -17,96 +17,99 @@ spellObject.onMobSpawn = function(mob) -- TODO: Add PLD/RUN traits like Resist Sleep and Tenacity. -- TODO: Add Cover ability with proper conditions (stand behind Monberaux when you have top enmity) local finalElixir = mob:getMaster():getCharVar('finalElixir') -- CVar used to store Elixir donation info. - local potAoe = mob:getMaster():getCharVar('monbAoe') -- CVar used to store gil donation info. - - if potAoe == 0 and finalElixir == 0 then - xi.trust.message(mob, xi.trust.messageOffset.SPAWN) - elseif potAoe == 0 and finalElixir == 1 then - xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_1) -- 1 Elixir - elseif potAoe == 0 and finalElixir >= 2 then - xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_2) -- 2 Elixir - elseif potAoe == 1 and finalElixir < 1 then - xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_3) -- Gil donation (AoE) - elseif potAoe == 1 and finalElixir == 1 then - xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_4) -- 1 Elixir and Gil - elseif potAoe == 1 and finalElixir >= 2 then - xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_5) -- ALL Donations + local potAoe = mob:getMaster():getCharVar('monbAoe') -- CVar used to store gil donation info. + + if potAoe == 0 then + if finalElixir == 0 then + xi.trust.message(mob, xi.trust.messageOffset.SPAWN) + elseif finalElixir == 1 then + xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_1) -- 1 Elixir + else + xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_2) -- 2 Elixir + end + else + if finalElixir == 0 then + xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_3) -- Gil donation (AoE) + elseif finalElixir == 1 then + xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_4) -- 1 Elixir and Gil + else + xi.trust.message(mob, xi.trust.messageOffset.TEAMWORK_5) -- ALL Donations + end end local healingMoveCooldown = math.random(3, 4) -- Mix I Retail values from BGWiki - local buffMoveCooldown = 60 -- Mix II Retail values from BGWiki - local mpMoveCooldown = 90 -- Mix III Retail values from BGWiki - - -- MobMods -- - mob:setMod(xi.mod.MPP, -90) - mob:setMod(xi.mod.SLEEPRES, 100) -- Handle negate sleep - mob:setMod(xi.mod.LULLABYRES, 100) -- Handle negate sleep - mob:setMod(xi.mod.STATUSRES, 15) - - -- Guard Drink should always be the first spell he casts. -- - mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.PROTECT }, { ai.r.MS, ai.s.SPECIFIC, 4255 }, healingMoveCooldown) -- Mix: Guard Drink (Prot/Shell) - mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.SHELL }, { ai.r.MS, ai.s.SPECIFIC, 4255 }, healingMoveCooldown) -- Mix: Guard Drink (Prot/Shell) - -- Handle his Final Elixir (item donation) system, will use whenever a party memeber is asleep -- - if finalElixir ~= 0 then - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SLEEP_I }, { ai.r.MS, ai.s.SPECIFIC, 4231 }, healingMoveCooldown) - end + local buffMoveCooldown = 60 -- Mix II Retail values from BGWiki + local mpMoveCooldown = 90 -- Mix III Retail values from BGWiki + + -- MobMods + mob:setMod(xi.mod.MPP, -90) + mob:setMod(xi.mod.SLEEPRES, 100) -- Handle negate sleep + mob:setMod(xi.mod.LULLABYRES, 100) -- Handle negate sleep + mob:setMod(xi.mod.STATUSRES, 15) + + -- Guard Drink should always be the first spell he casts + mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.PROTECT }, { ai.r.MS, ai.s.SPECIFIC, 4255 }, healingMoveCooldown) -- Mix: Guard Drink (Prot/Shell) + mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.SHELL }, { ai.r.MS, ai.s.SPECIFIC, 4255 }, healingMoveCooldown) -- Mix: Guard Drink (Prot/Shell) + + -- Handle his Final Elixir (item donation) system, will use whenever a party memeber is asleep + if finalElixir ~= 0 then + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SLEEP_I }, { ai.r.MS, ai.s.SPECIFIC, 4231 }, healingMoveCooldown) + end - -- Top Priority Heals -- - mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 40 }, { ai.r.MS, ai.s.SPECIFIC, 4237 }, healingMoveCooldown) -- Mix: Max Potion (700 HP) - mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 55 }, { ai.r.MS, ai.s.SPECIFIC, 4236 }, healingMoveCooldown) -- Max Potion (500 HP) - - -- Mix I AoE -- - if potAoe == 1 then - mob:addGambit(ai.t.PARTY, { ai.l.OR( - { ai.c.STATUS, xi.effect.CURSE_I }, - { ai.c.STATUS, xi.effect.CURSE_II }, - { ai.c.STATUS, xi.effect.BANE }, - { ai.c.STATUS, xi.effect.DOOM }) - }, { ai.r.MS, ai.s.SPECIFIC, 4242 }, healingMoveCooldown) -- AoE Holy Water - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.BLINDNESS }, { ai.r.MS, ai.s.SPECIFIC, 4240 }, healingMoveCooldown) -- AoE Mix: Eye Drops - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.POISON }, { ai.r.MS, ai.s.SPECIFIC, 4238 }, healingMoveCooldown) -- AoE Mix: Antidote - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SILENCE }, { ai.r.MS, ai.s.SPECIFIC, 4241 }, healingMoveCooldown) -- AoE Echo Drops - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PARALYSIS }, { ai.r.MS, ai.s.SPECIFIC, 4239 }, healingMoveCooldown) -- AoE Mix: Para-B-Gone - mob:addGambit(ai.t.PARTY, { ai.c.STATUS_FLAG, xi.effectFlag.ERASABLE }, { ai.r.MS, ai.s.SPECIFIC, 4245 }, healingMoveCooldown) -- AoE Mix: Panacea-1 - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PLAGUE }, { ai.r.MS, ai.s.SPECIFIC, 4243 }, healingMoveCooldown) -- AoE Mix: Vaccine - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PETRIFICATION }, { ai.r.MS, ai.s.SPECIFIC, 4244 }, healingMoveCooldown) -- AoE Mix: Gold Needle - -- Mix I Single Target -- - elseif potAoe == 0 then - mob:addGambit(ai.t.PARTY, { ai.l.OR( - { ai.c.STATUS, xi.effect.CURSE_I }, - { ai.c.STATUS, xi.effect.CURSE_II }, - { ai.c.STATUS, xi.effect.BANE }, - { ai.c.STATUS, xi.effect.DOOM }) - }, { ai.r.MS, ai.s.SPECIFIC, 4242 }, healingMoveCooldown) -- Holy Water - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.BLINDNESS }, { ai.r.MS, ai.s.SPECIFIC, 4248 }, healingMoveCooldown) -- Mix: Eye Drops - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.POISON }, { ai.r.MS, ai.s.SPECIFIC, 4246 }, healingMoveCooldown) -- Mix: Antidote - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SILENCE }, { ai.r.MS, ai.s.SPECIFIC, 4249 }, healingMoveCooldown) -- Echo Drops - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PARALYSIS }, { ai.r.MS, ai.s.SPECIFIC, 4247 }, healingMoveCooldown) -- Mix: Para-B-Gone - mob:addGambit(ai.t.PARTY, { ai.c.STATUS_FLAG, xi.effectFlag.ERASABLE }, { ai.r.MS, ai.s.SPECIFIC, 4253 }, healingMoveCooldown) -- Mix: Panacea-1 - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PLAGUE, ai.r.MS }, { ai.s.SPECIFIC, 4251 }, healingMoveCooldown) -- Vaccine - mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PETRIFICATION }, { ai.r.MS, ai.s.SPECIFIC, 4252 }, healingMoveCooldown) -- Mix: Gold Needle - end + -- Top Priority Heals + mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 40 }, { ai.r.MS, ai.s.SPECIFIC, 4237 }, healingMoveCooldown) -- Mix: Max Potion (700 HP) + mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 55 }, { ai.r.MS, ai.s.SPECIFIC, 4236 }, healingMoveCooldown) -- Max Potion (500 HP) + + -- Mix I Single Target + if potAoe == 0 then + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.BLINDNESS }, { ai.r.MS, ai.s.SPECIFIC, 4248 }, healingMoveCooldown) -- Mix: Eye Drops + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.POISON }, { ai.r.MS, ai.s.SPECIFIC, 4246 }, healingMoveCooldown) -- Mix: Antidote + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SILENCE }, { ai.r.MS, ai.s.SPECIFIC, 4249 }, healingMoveCooldown) -- Echo Drops + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PARALYSIS }, { ai.r.MS, ai.s.SPECIFIC, 4247 }, healingMoveCooldown) -- Mix: Para-B-Gone + mob:addGambit(ai.t.PARTY, { ai.c.STATUS_FLAG, xi.effectFlag.ERASABLE }, { ai.r.MS, ai.s.SPECIFIC, 4253 }, healingMoveCooldown) -- Mix: Panacea-1 + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PLAGUE }, { ai.r.MS, ai.s.SPECIFIC, 4251 }, healingMoveCooldown) -- Vaccine + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PETRIFICATION }, { ai.r.MS, ai.s.SPECIFIC, 4252 }, healingMoveCooldown) -- Mix: Gold Needle + mob:addGambit(ai.t.PARTY, { + ai.l.OR({ ai.c.STATUS, xi.effect.CURSE_I }, { ai.c.STATUS, xi.effect.CURSE_II }, { ai.c.STATUS, xi.effect.BANE }, { ai.c.STATUS, xi.effect.DOOM }) + }, { ai.r.MS, ai.s.SPECIFIC, 4242 }, healingMoveCooldown) -- Holy Water + + -- Mix I AoE + else + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.BLINDNESS }, { ai.r.MS, ai.s.SPECIFIC, 4240 }, healingMoveCooldown) -- AoE Mix: Eye Drops + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.POISON }, { ai.r.MS, ai.s.SPECIFIC, 4238 }, healingMoveCooldown) -- AoE Mix: Antidote + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.SILENCE }, { ai.r.MS, ai.s.SPECIFIC, 4241 }, healingMoveCooldown) -- AoE Echo Drops + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PARALYSIS }, { ai.r.MS, ai.s.SPECIFIC, 4239 }, healingMoveCooldown) -- AoE Mix: Para-B-Gone + mob:addGambit(ai.t.PARTY, { ai.c.STATUS_FLAG, xi.effectFlag.ERASABLE }, { ai.r.MS, ai.s.SPECIFIC, 4245 }, healingMoveCooldown) -- AoE Mix: Panacea-1 + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PLAGUE }, { ai.r.MS, ai.s.SPECIFIC, 4243 }, healingMoveCooldown) -- AoE Mix: Vaccine + mob:addGambit(ai.t.PARTY, { ai.c.STATUS, xi.effect.PETRIFICATION }, { ai.r.MS, ai.s.SPECIFIC, 4244 }, healingMoveCooldown) -- AoE Mix: Gold Needle + mob:addGambit(ai.t.PARTY, { + ai.l.OR({ ai.c.STATUS, xi.effect.CURSE_I }, { ai.c.STATUS, xi.effect.CURSE_II }, { ai.c.STATUS, xi.effect.BANE }, { ai.c.STATUS, xi.effect.DOOM }) + }, { ai.r.MS, ai.s.SPECIFIC, 4242 }, healingMoveCooldown) -- AoE Holy Water + end + + -- Mix II + -- mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.NEGATE_SLEEP }, { ai.r.MS, ai.s.SPECIFIC, 4256 }, healingMoveCooldown) -- Insomniant. Disabled because animation when used is completely wrong. + mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.REGEN }, { ai.r.MS, ai.s.SPECIFIC, 4257 }, buffMoveCooldown) -- Mix: Life Water + mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.STR_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4261 }, buffMoveCooldown) -- Mix: Samson's Strength + mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.MAGIC_DEF_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4259 }, buffMoveCooldown) -- Mix: Dragon Shield + mob:addGambit(ai.t.CASTER, { ai.c.NOT_STATUS, xi.effect.MAGIC_ATK_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4258 }, buffMoveCooldown) -- Mix: Elemental Power + mob:addGambit(ai.t.TARGET, { ai.c.ALWAYS, 0 }, { ai.r.MS, ai.s.SPECIFIC, 4260 }, buffMoveCooldown) -- Dark Potion (666 Dark Damage) + + -- Mix III + mob:addGambit(ai.t.CASTER, { ai.c.MPP_LT, 50 }, { ai.r.MS, ai.s.SPECIFIC, 4254 }, mpMoveCooldown) -- Mix: Dry Ether Concoction - --mob:addGambit(ai.t.PARTY, {ai.c.NOT_STATUS, xi.effect.NEGATE_SLEEP}, {ai.r.MS, ai.s.SPECIFIC, 4256}, healingMoveCooldown) -- Insomniant. Disabled because animation when used is completely wrong. - -- Mix II-- - mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.REGEN }, { ai.r.MS, ai.s.SPECIFIC, 4257 }, buffMoveCooldown) -- Mix: Life Water - mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.STR_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4261 }, buffMoveCooldown) -- Mix: Samson's Strength - mob:addGambit(ai.t.PARTY, { ai.c.NOT_STATUS, xi.effect.MAGIC_DEF_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4259 }, buffMoveCooldown) -- Mix: Dragon Shield - mob:addGambit(ai.t.CASTER, { ai.c.NOT_STATUS, xi.effect.MAGIC_ATK_BOOST }, { ai.r.MS, ai.s.SPECIFIC, 4258 }, buffMoveCooldown) -- Mix: Elemental Power - mob:addGambit(ai.t.TARGET, { ai.c.ALWAYS, 0 }, { ai.r.MS, ai.s.SPECIFIC, 4260 }, buffMoveCooldown) -- Dark Potion (666 Dark Damage) - -- Mix III-- - mob:addGambit(ai.t.CASTER, { ai.c.MPP_LT, 50 }, { ai.r.MS, ai.s.SPECIFIC, 4254 }, mpMoveCooldown) -- Mix: Dry Ether Concoction - -- Less Priority Heals -- - mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 65 }, { ai.r.MS, ai.s.SPECIFIC, 4235 }, healingMoveCooldown) -- Hyper Potion (250 HP) - --mob:addGambit(ai.t.PARTY, {ai.c.HPP_LT, 75}, {ai.r.MS, ai.s.SPECIFIC, 4234}, healingMoveCooldown) -- X-Potion (150 HP) -- Disabled to prevent super spam - --mob:addGambit(ai.t.PARTY, {ai.c.HPP_LT, 85}, {ai.r.MS, ai.s.SPECIFIC, 4232}, healingMoveCooldown) -- Potion (50 HP) -- Disabled to prevent super spam + -- Less Priority Heals + mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 65 }, { ai.r.MS, ai.s.SPECIFIC, 4235 }, healingMoveCooldown) -- Hyper Potion (250 HP) + -- mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 75 }, { ai.r.MS, ai.s.SPECIFIC, 4234 }, healingMoveCooldown) -- X-Potion (150 HP) -- Disabled to prevent super spam + -- mob:addGambit(ai.t.PARTY, { ai.c.HPP_LT, 85 }, { ai.r.MS, ai.s.SPECIFIC, 4232 }, healingMoveCooldown) -- Potion (50 HP) -- Disabled to prevent super spam -- Listener to handle removal of CharVar that handles elixir donation -- - mob:addListener('WEAPONSKILL_USE', 'MONBERAUX_WEAPONSKILL_USE', function(mobArg, targetArg, skillid, spentTP, action) - local monbMast = mobArg:getMaster() - local finalElixirL = monbMast:getCharVar('finalElixir') - if skillid == 4231 then - monbMast:setCharVar('finalElixir', finalElixirL - 1) + mob:addListener('WEAPONSKILL_USE', 'MONBERAUX_WEAPONSKILL_USE', function(mobArg, targetArg, skill, tp, action) + if skill:getID() == xi.mobSkill.MIX_FINAL_ELIXIR then + local master = mobArg:getMaster() + if master then + master:setCharVar('finalElixir', master:getCharVar('finalElixir') - 1) + end end end) @@ -128,7 +131,7 @@ spellObject.onMobSpawn = function(mob) end) -- This listener is needed for Monberaux to display the correct skill name in the combat log. - mob:addListener('WEAPONSKILL_USE', 'MONBERAUX_WS', function(mobArg, targetArg, skillid, spentTP, action) + mob:addListener('WEAPONSKILL_USE', 'MONBERAUX_WS', function(mobArg, targetArg, skill, tp, action) action:setCategory(xi.action.category.MOBABILITY_FINISH) end) diff --git a/scripts/enum/mob_skill.lua b/scripts/enum/mob_skill.lua index 5f18ea26b93..9be54deff62 100644 --- a/scripts/enum/mob_skill.lua +++ b/scripts/enum/mob_skill.lua @@ -29,6 +29,8 @@ xi.mobSkill = CRESCENT_MOON_1 = 53, SICKLE_MOON_1 = 54, + DIMIDIATION_1 = 61, + VORPAL_SCYTHE = 101, GUILLOTINE_1 = 102, @@ -40,6 +42,8 @@ xi.mobSkill = WHEELING_THRUST = 119, IMPULSE_DRIVE = 120, + RANDGRITH_1 = 170, + BARBED_CRESCENT_1 = 245, FOOT_KICK_1 = 257, @@ -410,7 +414,9 @@ xi.mobSkill = PINECONE_BOMB_NM = 928, LEAFSTORM_DISPEL = 929, ENTANGLE_POISON = 930, + CROSS_REAVER_1 = 931, -- Ark Angel HM + DOMINION_SLASH_1 = 933, -- Ark Angel EV SHIELD_STRIKE = 934, -- Ark Angel EV ARKANGEL_TT_WARP_OUT = 936, -- Ark Angel TT Warp Out @@ -471,6 +477,8 @@ xi.mobSkill = CALL_WYVERN_MAAT = 1022, ASTRAL_FLOW_MAAT = 1023, + DRAGON_BREATH_2 = 1041, + HOWL = 1062, -- EES_? = 1065, @@ -866,6 +874,10 @@ xi.mobSkill = -- MEIKYO_SHISUI = 3175, + CROSS_REAVER_2 = 3174, + + ARROGANCE_INCARNATE_1 = 3178, + LIGHT_BLADE_2 = 3214, -- ELEMENTAL_SFORZO = 3265, @@ -886,6 +898,10 @@ xi.mobSkill = SHEEP_SONG_3 = 3433, + DRAGON_BREATH_3 = 3438, -- Areuhat Trust + + TWIRLING_DERVISH = 3469, -- Adelheid Trust + LIGHT_BLADE_3 = 3471, -- ELEMENTAL_SFORZO = 3479, @@ -893,6 +909,14 @@ xi.mobSkill = -- AZURE_LORE = 3481, BOLSTER = 3482, + CROSS_REAVER_3 = 3706, -- Ark Angel HM Trust + + ARROGANCE_INCARNATE_2 = 3710, -- Ark Angel EV Trust + + DOMINION_SLASH_2 = 3712, -- Ark Angel EV Trust + + ARROGANCE_INCARNATE_3 = 3728, + FOOT_KICK_3 = 3840, DUST_CLOUD_3 = 3841, WHIRL_CLAWS_3 = 3842, @@ -918,4 +942,6 @@ xi.mobSkill = SANDPIT_3 = 3883, VENOM_SPRAY_3 = 3884, MANDIBULAR_BITE_3 = 3885, + + MIX_FINAL_ELIXIR = 4231, -- Monbereaux Trust } diff --git a/scripts/globals/magian.lua b/scripts/globals/magian.lua index f11fe57edd2..7b4426d5b42 100644 --- a/scripts/globals/magian.lua +++ b/scripts/globals/magian.lua @@ -963,7 +963,7 @@ xi.magian.onItemEquip = function(player, itemObj) end) elseif trialData.useWeaponskill then - player:addListener('WEAPONSKILL_USE', 'TRIAL_' .. itemTrialId, function(playerObj, mobObj, skill, tpSpent, action, damage) + player:addListener('WEAPONSKILL_USE', 'TRIAL_' .. itemTrialId, function(playerObj, mobObj, skill, tp, action, damage) if not playerObj:isDead() and playerObj:checkKillCredit(mobObj) then local conditionResult = checkConditions(trialData, playerObj, mobObj, { weaponskillUsed = skill:getID(), weaponskillDamage = damage }) From 29f064c25057994a5a35dce324da6d84a81a8854 Mon Sep 17 00:00:00 2001 From: Xaver-DaRed Date: Sun, 22 Mar 2026 12:51:29 +0100 Subject: [PATCH 2/2] Remove unused `xi.ws` weaponskill alias --- scripts/enum/weaponskill.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/enum/weaponskill.lua b/scripts/enum/weaponskill.lua index 4b6355ee9e4..20fcb9c7c55 100644 --- a/scripts/enum/weaponskill.lua +++ b/scripts/enum/weaponskill.lua @@ -331,5 +331,3 @@ xi.weaponskill = VULCAN_SHOT = 254, DIMENSIONAL_DEATH = 255, } - -xi.ws = xi.weaponskill