From 42019c09b12697a38fd0a9af82b9c94b62529bfe Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 11 Jun 2021 15:30:58 +0200 Subject: [PATCH] fix(Core/Spells): Updates autoshoot spell target in case of clientside target change. (#6257) - Closes #5206 - Closes https://github.com/chromiecraft/chromiecraft/issues/322 --- src/server/game/Handlers/MiscHandler.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 67d9ecdc5..f7a854d24 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -543,6 +543,24 @@ void WorldSession::HandleSetSelectionOpcode(WorldPacket& recv_data) recv_data >> guid; _player->SetSelection(guid); + + // Change target of current autoshoot spell + if (guid) + { + if (Spell* autoReapeatSpell = _player->GetCurrentSpell(CURRENT_AUTOREPEAT_SPELL)) + { + if (autoReapeatSpell->m_targets.GetUnitTargetGUID() != guid) + { + if (Unit* unit = ObjectAccessor::GetUnit(*_player, guid)) + { + if (unit->IsAlive() && !_player->IsFriendlyTo(unit) && unit->isTargetableForAttack(true, _player)) + { + autoReapeatSpell->m_targets.SetUnitTarget(unit); + } + } + } + } + } } void WorldSession::HandleStandStateChangeOpcode(WorldPacket& recv_data)