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:
@@ -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');
|
||||||
@@ -2176,6 +2176,9 @@ void Player::SetInWater(bool apply)
|
|||||||
RemoveAurasWithInterruptFlags(apply ? AURA_INTERRUPT_FLAG_NOT_ABOVEWATER : AURA_INTERRUPT_FLAG_NOT_UNDERWATER);
|
RemoveAurasWithInterruptFlags(apply ? AURA_INTERRUPT_FLAG_NOT_ABOVEWATER : AURA_INTERRUPT_FLAG_NOT_UNDERWATER);
|
||||||
|
|
||||||
getHostileRefMgr().updateThreatTables();
|
getHostileRefMgr().updateThreatTables();
|
||||||
|
|
||||||
|
if (InstanceScript* instance = GetInstanceScript())
|
||||||
|
instance->OnPlayerInWaterStateUpdate(this, apply);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::IsInAreaTriggerRadius(AreaTrigger const* trigger, float delta) const
|
bool Player::IsInAreaTriggerRadius(AreaTrigger const* trigger, float delta) const
|
||||||
|
|||||||
@@ -186,6 +186,9 @@ public:
|
|||||||
|
|
||||||
virtual void OnPlayerAreaUpdate(Player* /*player*/, uint32 /*oldArea*/, uint32 /*newArea*/) {}
|
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
|
//Handle open / close objects
|
||||||
//use HandleGameObject(ObjectGuid::Empty, boolen, GO); in OnObjectCreate in instance scripts
|
//use HandleGameObject(ObjectGuid::Empty, boolen, GO); in OnObjectCreate in instance scripts
|
||||||
//use HandleGameObject(GUID, boolen, nullptr); in any other script
|
//use HandleGameObject(GUID, boolen, nullptr); in any other script
|
||||||
|
|||||||
@@ -144,7 +144,11 @@ enum HyjalMisc
|
|||||||
START_WAVE_HORDE_RETREAT = 39,
|
START_WAVE_HORDE_RETREAT = 39,
|
||||||
START_WAVE_NIGHT_ELF = 42,
|
START_WAVE_NIGHT_ELF = 42,
|
||||||
|
|
||||||
CONTEXT_GROUP_WAVES = 1
|
CONTEXT_GROUP_WAVES = 1,
|
||||||
|
|
||||||
|
AREA_NORDRASSIL = 3710,
|
||||||
|
|
||||||
|
SPELL_ETERNAL_SILENCE = 42201
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HyjalPaths
|
enum HyjalPaths
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include "InstanceMapScript.h"
|
#include "InstanceMapScript.h"
|
||||||
#include "InstanceScript.h"
|
#include "InstanceScript.h"
|
||||||
#include "Opcodes.h"
|
#include "Opcodes.h"
|
||||||
|
#include "Player.h"
|
||||||
#include "WorldPacket.h"
|
#include "WorldPacket.h"
|
||||||
#include "hyjal.h"
|
#include "hyjal.h"
|
||||||
|
|
||||||
@@ -530,6 +531,14 @@ public:
|
|||||||
_scheduler.Update(diff);
|
_scheduler.Update(diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnPlayerInWaterStateUpdate(Player* player, bool inWater) override
|
||||||
|
{
|
||||||
|
if (inWater && player->GetAreaId() == AREA_NORDRASSIL)
|
||||||
|
{
|
||||||
|
player->CastSpell(player, SPELL_ETERNAL_SILENCE, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int32 trash;
|
int32 trash;
|
||||||
uint8 _currentWave;
|
uint8 _currentWave;
|
||||||
|
|||||||
Reference in New Issue
Block a user