fix(Scripts/Hyjal): Implement Eternal Silence spell when going into t… (#18960)

fix(Scripts/Hyjal): Implement Eternal Silence spell when going into the Well of Eternity
This commit is contained in:
Andrew
2024-05-27 20:24:10 -03:00
committed by GitHub
parent 049e83c576
commit 2a1d23e520
5 changed files with 24 additions and 1 deletions

View File

@@ -0,0 +1,4 @@
--
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -42201 AND `spell_effect` = 42205;
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
(-42201, 42205, 0, 'Eternal Silence trigger Residue of Eternity on removal');

View File

@@ -2176,6 +2176,9 @@ void Player::SetInWater(bool apply)
RemoveAurasWithInterruptFlags(apply ? AURA_INTERRUPT_FLAG_NOT_ABOVEWATER : AURA_INTERRUPT_FLAG_NOT_UNDERWATER);
getHostileRefMgr().updateThreatTables();
if (InstanceScript* instance = GetInstanceScript())
instance->OnPlayerInWaterStateUpdate(this, apply);
}
bool Player::IsInAreaTriggerRadius(AreaTrigger const* trigger, float delta) const

View File

@@ -186,6 +186,9 @@ public:
virtual void OnPlayerAreaUpdate(Player* /*player*/, uint32 /*oldArea*/, uint32 /*newArea*/) {}
//Called when a player enters/leaves water bodies.
virtual void OnPlayerInWaterStateUpdate(Player* /*player*/, bool /*inWater*/) {}
//Handle open / close objects
//use HandleGameObject(ObjectGuid::Empty, boolen, GO); in OnObjectCreate in instance scripts
//use HandleGameObject(GUID, boolen, nullptr); in any other script

View File

@@ -144,7 +144,11 @@ enum HyjalMisc
START_WAVE_HORDE_RETREAT = 39,
START_WAVE_NIGHT_ELF = 42,
CONTEXT_GROUP_WAVES = 1
CONTEXT_GROUP_WAVES = 1,
AREA_NORDRASSIL = 3710,
SPELL_ETERNAL_SILENCE = 42201
};
enum HyjalPaths

View File

@@ -19,6 +19,7 @@
#include "InstanceMapScript.h"
#include "InstanceScript.h"
#include "Opcodes.h"
#include "Player.h"
#include "WorldPacket.h"
#include "hyjal.h"
@@ -530,6 +531,14 @@ public:
_scheduler.Update(diff);
}
void OnPlayerInWaterStateUpdate(Player* player, bool inWater) override
{
if (inWater && player->GetAreaId() == AREA_NORDRASSIL)
{
player->CastSpell(player, SPELL_ETERNAL_SILENCE, true);
}
}
protected:
int32 trash;
uint8 _currentWave;