From 8611d122e52e94ce626c2ccade5b9d3400ee7c5a Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Tue, 30 Dec 2025 09:37:23 -0700 Subject: [PATCH] [core] [lua] Adjust when magian trials are attached This fixes a potential bug with item scripts load order --- scripts/commands/reloadmagians.lua | 19 +++++++++++++++++++ scripts/globals/magian.lua | 5 +---- src/map/utils/itemutils.cpp | 10 ++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 scripts/commands/reloadmagians.lua diff --git a/scripts/commands/reloadmagians.lua b/scripts/commands/reloadmagians.lua new file mode 100644 index 00000000000..43f0e5fca03 --- /dev/null +++ b/scripts/commands/reloadmagians.lua @@ -0,0 +1,19 @@ +----------------------------------- +-- func: reloadmagians +-- desc: Reloads the magian listeners +----------------------------------- +---@type TCommand +local commandObj = {} + +commandObj.cmdprops = +{ + permission = 5, + parameters = 'b' +} + +commandObj.onTrigger = function(player) + xi.magian.registerTrialListeners() + player:printToPlayer('Magian trials re-registered!') +end + +return commandObj diff --git a/scripts/globals/magian.lua b/scripts/globals/magian.lua index 1539b689eed..93353e52276 100644 --- a/scripts/globals/magian.lua +++ b/scripts/globals/magian.lua @@ -266,7 +266,7 @@ end -- since onItemEquip/unEquip functions only exist for two items. -- NOTE: This function isn't the most efficient, but is only executed on server -- start, or magian reload. -local function registerTrialListeners() +xi.magian.registerTrialListeners = function() xi.items = xi.items or {} for trialId, magianData in pairs(xi.magian.trials) do @@ -1017,6 +1017,3 @@ xi.magian.onMobDeath = function(mob, player, optParams, trialTable) progressPlayerTrial(player, trialId, 1) end end - --- Once everything else is setup, register listeners with the appropriate items -registerTrialListeners() diff --git a/src/map/utils/itemutils.cpp b/src/map/utils/itemutils.cpp index e74f7403688..8023010f4c7 100644 --- a/src/map/utils/itemutils.cpp +++ b/src/map/utils/itemutils.cpp @@ -563,6 +563,16 @@ void Initialize() PUnarmedH2HItem->setDmgType(DAMAGE_TYPE::HTH); PUnarmedH2HItem->setSkillType(SKILL_HAND_TO_HAND); PUnarmedH2HItem->setDamage(0); + + // load magian trial data AFTER items + auto registerTrialListeners = lua["xi"]["magian"]["registerTrialListeners"]; + if (!registerTrialListeners.valid()) + { + ShowError("xi.magians.registerTrialListeners not valid!"); + } + + ShowInfo("do_init: loading Magian trial listeners"); + registerTrialListeners(); } /************************************************************************