From 5d7ae76d6f2a0f6f6416ff754d2243f3aafcc7d5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 17 Mar 2024 15:24:28 +0100 Subject: Core/Spells: Improved spell explicit target fallback selection for unit targets when spell target comes from client Client only looks at target type of first spell effect to determine what additional target info to send in packet outside of Spell.dbc Targets column Closes #11566 Closes #29809 --- src/server/game/Handlers/PetHandler.cpp | 2 +- src/server/game/Spells/Spell.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 12d34a17cd6..12590139ea9 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -801,7 +801,7 @@ void WorldSession::HandlePetCastSpellOpcode(WorldPacket& recvPacket) Spell* spell = new Spell(caster, spellInfo, triggerCastFlags); spell->m_fromClient = true; spell->m_cast_count = castCount; // probably pending spell cast - spell->m_targets = targets; + spell->InitExplicitTargets(targets); SpellCastResult result = spell->CheckPetCast(nullptr); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 95189047916..1305c975cbf 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -671,7 +671,7 @@ void Spell::InitExplicitTargets(SpellCastTargets const& targets) unit = m_caster->ToCreature()->GetVictim(); // didn't find anything - let's use self as target - if (!unit && neededTargets & (TARGET_FLAG_UNIT_RAID | TARGET_FLAG_UNIT_PARTY | TARGET_FLAG_UNIT_ALLY)) + if (!unit && (neededTargets & (TARGET_FLAG_UNIT_ENEMY | TARGET_FLAG_UNIT_DEAD | TARGET_FLAG_UNIT_MINIPET | TARGET_FLAG_UNIT_PASSENGER)) == 0) unit = m_caster->ToUnit(); m_targets.SetUnitTarget(unit); -- cgit v1.2.3