From 3bd988d1954d42e33c3db1c4d9392d7b98781cd4 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 11 Feb 2023 21:44:59 +0100 Subject: [PATCH] =?UTF-8?q?fix(Scripts/BlackMorass):=20Fixed=20amount=20of?= =?UTF-8?q?=20Medivh's=20Integrity=20shield=20t=E2=80=A6=20(#14948)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instance_the_black_morass.cpp | 24 +++++++++++++++---- .../TheBlackMorass/the_black_morass.cpp | 20 ++++++++++++++-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index ae1e22d75..3221506c9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -48,8 +48,8 @@ public: GuidSet encounterNPCs; uint32 encounters[MAX_ENCOUNTER]; ObjectGuid _medivhGUID; - uint8 _currentRift; - uint8 _shieldPercent; + uint8 _currentRift; + int8 _shieldPercent; void Initialize() override { @@ -144,7 +144,7 @@ public: } } - void SetData(uint32 type, uint32 /*data*/) override + void SetData(uint32 type, uint32 data) override { switch (type) { @@ -187,10 +187,19 @@ public: Events.RescheduleEvent(EVENT_NEXT_PORTAL, 3000); break; case DATA_DAMAGE_SHIELD: - --_shieldPercent; + { + _shieldPercent -= data; + if (_shieldPercent < 0) + { + _shieldPercent = 0; + } + DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent); + if (!_shieldPercent) + { if (Creature* medivh = instance->GetCreature(_medivhGUID)) + { if (medivh->IsAlive()) { Unit::Kill(medivh, medivh); @@ -198,10 +207,17 @@ public: // Xinef: delete all spawns GuidSet eCopy = encounterNPCs; for (ObjectGuid const& guid : eCopy) + { if (Creature* creature = instance->GetCreature(guid)) + { creature->DespawnOrUnsummon(); + } + } } + } + } break; + } } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index 0fec969f0..b1d88ca83 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -387,16 +387,32 @@ public: { PrepareAuraScript(spell_black_morass_corrupt_medivh_AuraScript); + bool Load() override + { + _ticks = 0; + return true; + } + void PeriodicTick(AuraEffect const* /*aurEff*/) { - if (InstanceScript* instance = GetUnitOwner()->GetInstanceScript()) - instance->SetData(DATA_DAMAGE_SHIELD, 1); + if (++_ticks >= 3) + { + _ticks = 0; + + if (InstanceScript* instance = GetUnitOwner()->GetInstanceScript()) + { + instance->SetData(DATA_DAMAGE_SHIELD, m_scriptSpellId == SPELL_CORRUPT_AEONUS ? 2 : 1); + } + } } void Register() override { OnEffectPeriodic += AuraEffectPeriodicFn(spell_black_morass_corrupt_medivh_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } + + private: + uint8 _ticks = 0; }; AuraScript* GetAuraScript() const override