From 81fd959eb6b7866b58374b456a0c0146bc60d71d Mon Sep 17 00:00:00 2001 From: LordMidas <55047920+LordMidas@users.noreply.github.com> Date: Sat, 5 Oct 2024 13:19:13 +0100 Subject: [PATCH 1/2] fix: switch to hookTree to call onQueryTooltip Instead of manually calling via query functions inside tooltip_events. The query functions are only used when querying the tooltip via the UI so it misses cases where the tooltip of a skill is manually fetched. --- msu/hooks/skills/skill.nut | 12 +++++++++ .../ui/screens/tooltip/tooltip_events.nut | 25 ------------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/msu/hooks/skills/skill.nut b/msu/hooks/skills/skill.nut index 08293817d..9796e0275 100644 --- a/msu/hooks/skills/skill.nut +++ b/msu/hooks/skills/skill.nut @@ -440,6 +440,18 @@ }); ::MSU.QueueBucket.VeryLate.push(function() { + ::MSU.MH.hookTree("scripts/skills/skill", function(q) { + q.getTooltip = @(__original) function() + { + local ret = __original(); + if (!::MSU.isNull(this.getContainer())) + { + this.getContainer().onQueryTooltip(this, ret); + } + return ret; + } + }); + ::MSU.MH.hook("scripts/skills/skill", function(q) { foreach (func in ::MSU.Skills.PreviewApplicableFunctions) { diff --git a/msu/hooks/ui/screens/tooltip/tooltip_events.nut b/msu/hooks/ui/screens/tooltip/tooltip_events.nut index 6f99822ab..388e5e700 100644 --- a/msu/hooks/ui/screens/tooltip/tooltip_events.nut +++ b/msu/hooks/ui/screens/tooltip/tooltip_events.nut @@ -9,31 +9,6 @@ return ret; } - q.general_querySkillTooltipData = @(__original) function( _entityId, _skillId ) - { - local ret = __original(_entityId, _skillId); - - if (ret != null) - { - local skill = ::Tactical.getEntityByID(_entityId).getSkills().getSkillByID(_skillId); - skill.getContainer().onQueryTooltip(skill, ret); - } - - return ret; - } - - q.general_queryStatusEffectTooltipData = @(__original) function( _entityId, _statusEffectId ) - { - local ret = __original(_entityId, _statusEffectId); - if (ret != null) - { - local statusEffect = ::Tactical.getEntityByID(_entityId).getSkills().getSkillByID(_statusEffectId); - statusEffect.getContainer().onQueryTooltip(statusEffect, ret); - } - - return ret; - } - q.onQueryMSUTooltipData <- function( _data ) { return ::MSU.System.Tooltips.getTooltip(_data.modId, _data.elementId).getUIData(_data); From 15336b815fdb118cbe60832a721f29911abbc3c9 Mon Sep 17 00:00:00 2001 From: LordMidas <55047920+LordMidas@users.noreply.github.com> Date: Sun, 6 Oct 2024 12:19:16 +0100 Subject: [PATCH 2/2] fix: add null check for actor Because skills inside onQueryTooltip event probably always expect the actor to not be null. --- msu/hooks/skills/skill.nut | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msu/hooks/skills/skill.nut b/msu/hooks/skills/skill.nut index 9796e0275..b79ff9627 100644 --- a/msu/hooks/skills/skill.nut +++ b/msu/hooks/skills/skill.nut @@ -444,7 +444,7 @@ q.getTooltip = @(__original) function() { local ret = __original(); - if (!::MSU.isNull(this.getContainer())) + if (!::MSU.isNull(this.getContainer()) && !::MSU.isNull(this.getContainer().getActor())) { this.getContainer().onQueryTooltip(this, ret); }