From 2eb374c6e47ccb86a61fa53b84503b68942c531f Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 27 Dec 2022 20:38:00 -0300 Subject: [PATCH] =?UTF-8?q?fix(Core/Totem):=20Implement=20casting=20delay?= =?UTF-8?q?=20for=20the=20Fire=20Totem=20used=20by=20c=E2=80=A6=20(#14276)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Core/Totem): Implement casting delay for the Fire Totem used by creatures * clear debug * Update src/server/game/Entities/Totem/Totem.h * fix build * Update Totem.cpp --- src/server/game/Entities/Totem/Totem.cpp | 22 ++++++++++++++++++---- src/server/game/Entities/Totem/Totem.h | 7 ++++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp index 172cf5fd6..76bac1473 100644 --- a/src/server/game/Entities/Totem/Totem.cpp +++ b/src/server/game/Entities/Totem/Totem.cpp @@ -82,14 +82,28 @@ void Totem::InitSummon() Minion::InitSummon(); if (m_type == TOTEM_PASSIVE && GetSpell()) - CastSpell(this, GetSpell(), true); + { + if (TotemSpellIds(GetUInt32Value(UNIT_CREATED_BY_SPELL)) == TotemSpellIds::FireTotemSpell) + { + m_Events.AddEventAtOffset([this]() + { + CastSpell(this, GetSpell(), true); + }, 4s); + } + else + { + CastSpell(this, GetSpell(), true); + } + } // Some totems can have both instant effect and passive spell - if(GetSpell(1)) + if (GetSpell(1)) + { CastSpell(this, GetSpell(1), true); + } // xinef: this is better than the script, 100% sure to work - if(GetEntry() == SENTRY_TOTEM_ENTRY) + if (GetEntry() == SENTRY_TOTEM_ENTRY) { SetReactState(REACT_AGGRESSIVE); GetOwner()->CastSpell(this, 6277, true); @@ -132,7 +146,7 @@ void Totem::UnSummon(uint32 msTime) // Remove Sentry Totem Aura if (GetEntry() == SENTRY_TOTEM_ENTRY) - owner->RemoveAurasDueToSpell(SENTRY_TOTEM_SPELLID); + owner->RemoveAurasDueToSpell(static_cast(TotemSpellIds::SentryTotemSpell)); //remove aura all party members too if (Player* player = owner->ToPlayer()) diff --git a/src/server/game/Entities/Totem/Totem.h b/src/server/game/Entities/Totem/Totem.h index cbfa6f3f0..fcaabf91d 100644 --- a/src/server/game/Entities/Totem/Totem.h +++ b/src/server/game/Entities/Totem/Totem.h @@ -27,7 +27,12 @@ enum TotemType TOTEM_STATUE = 2 // copied straight from moongose, may need more implementation to work }; // Some Totems cast spells that are not in creature DB -#define SENTRY_TOTEM_SPELLID 6495 + +enum class TotemSpellIds : uint32 +{ + SentryTotemSpell = 6495, + FireTotemSpell = 32062 +}; #define SENTRY_TOTEM_ENTRY 3968 #define EARTHBIND_TOTEM_ENTRY 2630