From 893a9beeacc4554f9ac85755b40520a9b8e6d411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E9=B9=BF?= Date: Wed, 5 Jul 2023 15:25:02 +0800 Subject: [PATCH 1/3] fix(Core/SmartScripts): Fix a check (#16663) --- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index f0bba12a9..a8cd9075e 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1285,14 +1285,17 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) return false; } break; - case SMART_EVENT_CHARMED: - case SMART_EVENT_GO_STATE_CHANGED: - case SMART_EVENT_GO_EVENT_INFORM: case SMART_EVENT_NEAR_PLAYERS: - case SMART_EVENT_NEAR_PLAYERS_NEGATION: if (!IsMinMaxValid(e, e.event.nearPlayer.repeatMin, e.event.nearPlayer.repeatMax)) return false; break; + case SMART_EVENT_NEAR_PLAYERS_NEGATION: + if (!IsMinMaxValid(e, e.event.nearPlayerNegation.repeatMin, e.event.nearPlayerNegation.repeatMax)) + return false; + break; + case SMART_EVENT_CHARMED: + case SMART_EVENT_GO_STATE_CHANGED: + case SMART_EVENT_GO_EVENT_INFORM: case SMART_EVENT_NEAR_UNIT: case SMART_EVENT_TIMED_EVENT_TRIGGERED: case SMART_EVENT_INSTANCE_PLAYER_ENTER: From dc071dab4cc8edaafbbefd5f765b02d4dcb7613b Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 5 Jul 2023 15:28:17 -0300 Subject: [PATCH 2/3] fix(Scripts/Outlands): Fix Kazzak not reseting his timers (#16675) * fix(Scripts/Outlands): Fix Kazzak not reseting his timers * Update boss_doomlord_kazzak.cpp --- src/server/scripts/Outland/boss_doomlord_kazzak.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp index 5824f3020..340063843 100644 --- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp +++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp @@ -56,6 +56,7 @@ public: void Reset() override { + _scheduler.CancelAll(); _inBerserk = false; } From bda9b404038e886f54d30a33bfce54a06c1f5004 Mon Sep 17 00:00:00 2001 From: Eddy Vega <61223313+Si1ker@users.noreply.github.com> Date: Thu, 6 Jul 2023 03:14:42 -0600 Subject: [PATCH 3/3] fix(Scripts/ShadowmoonValley): Enraged Spirits' abilities (#16571) * init * init * Co-authored-by: Aokromes Co-authored-by: Malleus * credits --------- Co-authored-by: Aokromes --- .../Outland/zone_shadowmoon_valley.cpp | 102 +++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index c8e7fe7b0..96e940bf4 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -1445,6 +1445,22 @@ enum Enraged_Dpirits NPC_ENRAGED_AIR_SPIRIT = 21060, NPC_ENRAGED_WATER_SPIRIT = 21059, + // ENRAGED WATER SPIRIT SPELLS + SPELL_STORMBOLT = 38032, + + // ENRAGED AIR SPIRIT SPELLS + SPELL_AIR_SPIRIT_CHAIN_LIGHTNING = 12058, + SPELL_HURRICANE = 32717, + SPELL_ENRAGE = 8599, + + // ENRAGED FIRE SPIRIT SPELLS - Will be using the enrage spell from Air Spirit + SPELL_FEL_FIREBALL = 36247, + SPELL_FEL_FIRE_AURA = 36006, // Earth spirit uses this one + + // ENRAGED EARTH SPIRIT SPELLS + SPELL_FIERY_BOULDER = 38498, + SPELL_SUMMON_ENRAGED_EARTH_SHARD = 38365, + // SOULS NPC_EARTHEN_SOUL = 21073, NPC_FIERY_SOUL = 21097, @@ -1483,7 +1499,88 @@ public: void Reset() override { } - void JustEngagedWith(Unit* /*who*/) override { } + void JustEngagedWith(Unit* /*who*/) override + { + switch (me->GetEntry()) + { + case NPC_ENRAGED_WATER_SPIRIT: + _scheduler.Schedule(0s, 1s, [this](TaskContext context) + { + if (UpdateVictim()) + { + DoCastVictim(SPELL_STORMBOLT); + } + context.Repeat(17s, 23s); + }); + break; + case NPC_ENRAGED_FIRE_SPIRIT: + if (!me->GetAura(SPELL_FEL_FIRE_AURA)) + { + DoCastSelf(SPELL_FEL_FIRE_AURA); + } + _scheduler.Schedule(2s, 10s, [this](TaskContext context) + { + if (UpdateVictim()) + { + DoCastVictim(SPELL_FEL_FIREBALL); + } + context.Repeat(6s, 12s); + }); + break; + case NPC_ENRAGED_EARTH_SPIRIT: + if (!me->GetAura(SPELL_FEL_FIRE_AURA)) + { + DoCastSelf(SPELL_FEL_FIRE_AURA); + } + _scheduler.Schedule(3s, 4s, [this](TaskContext context) + { + if (UpdateVictim()) + { + DoCastVictim(SPELL_FIERY_BOULDER); + } + context.Repeat(6s, 9s); + }); + break; + case NPC_ENRAGED_AIR_SPIRIT: + _scheduler.Schedule(10s, [this](TaskContext context) + { + if (UpdateVictim()) + { + DoCastVictim(SPELL_AIR_SPIRIT_CHAIN_LIGHTNING); + } + _scheduler.Schedule(3s, 5s, [this](TaskContext /*context*/) + { + if (UpdateVictim()) + { + DoCastVictim(SPELL_HURRICANE); + } + }); + context.Repeat(12s, 15s); + }); + break; + default: + break; + } + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + _scheduler.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + if (me->GetEntry() == NPC_ENRAGED_FIRE_SPIRIT || me->GetEntry() == NPC_ENRAGED_AIR_SPIRIT) + { + if (HealthBelowPct(35) && !me->GetAura(SPELL_ENRAGE)) + { + DoCastSelf(SPELL_ENRAGE); + } + } + DoMeleeAttackIfReady(); + } void JustDied(Unit* /*killer*/) override { @@ -1504,6 +1601,7 @@ public: entry = NPC_EARTHEN_SOUL; //credit = SPELL_EARTHEN_SOUL_CAPTURED_CREDIT; credit = NPC_CREDIT_EARTH; + DoCastSelf(SPELL_SUMMON_ENRAGED_EARTH_SHARD); break; case NPC_ENRAGED_AIR_SPIRIT: entry = NPC_ENRAGED_AIRY_SOUL; @@ -1542,6 +1640,8 @@ public: } } } + private: + TaskScheduler _scheduler; }; };