mirror of
https://github.com/azerothcore/azerothcore-wotlk.git
synced 2025-11-10 21:04:26 +08:00
Merge branch 'master' into Fix-the-crash-2
This commit is contained in:
commit
2701fb5c17
4
data/sql/updates/db_world/2025_10_30_00.sql
Normal file
4
data/sql/updates/db_world/2025_10_30_00.sql
Normal file
@ -0,0 +1,4 @@
|
||||
-- DB update 2025_10_29_02 -> 2025_10_30_00
|
||||
|
||||
-- Adjusts events previously ordered from 0 wrongly
|
||||
UPDATE `smart_scripts` SET `event_param2` = `event_param2` +1 WHERE `event_type` =34 AND `event_param1` = 2 AND `entryorguid` IN (-158029, -158021, -158000, -148360, -148268, -139547 ,-139546, -139539, -139538, -139533, -139532);
|
||||
152
data/sql/updates/db_world/2025_10_30_01.sql
Normal file
152
data/sql/updates/db_world/2025_10_30_01.sql
Normal file
@ -0,0 +1,152 @@
|
||||
-- DB update 2025_10_30_00 -> 2025_10_30_01
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (50044,50774,50804,51153,51121,51110,51054,50785,61407,52774,52960,52961,52387,52237,52433,52429,51012,50988,51136,12167,15654,12734,50843,50810,50868,50761,50760,50752,50830,50831,50834,50840,50838,50895,50900,48261,48256,48136,48133,48130,48105,48140,48137,50234,50255,47579,15667,48294,48291,48529,48423,48380,42708,42669,42705,42729,42730,43667,43649,52445,52737,52771,52720,52722,52721,52696,52666,57725,52480,56855,56891,56926,55959,36176,34941,67774,68783,57058,56272,61693,57407,58459,58462,58463,58456,58455,58458,58457,60181,60182,31956,72395,72396,72397);
|
||||
INSERT INTO `spelldifficulty_dbc` (`ID`,`DifficultySpellID_1`,`DifficultySpellID_2`,`DifficultySpellID_3`,`DifficultySpellID_4`) VALUES
|
||||
-- Oculus
|
||||
(50044,50044,59213,0,0),
|
||||
-- Drakos
|
||||
(50774,50774,59370,0,0),
|
||||
-- Eregos
|
||||
(50804,50804,59381,0,0),
|
||||
(51153,51153,59382,0,0),
|
||||
-- Urom
|
||||
(51121,51121,59376,0,0),
|
||||
(51110,51110,59377,0,0),
|
||||
-- Varos
|
||||
(51054,51054,59371,0,0),
|
||||
(50785,50785,59372,0,0),
|
||||
(61407,61407,62136,0,0),
|
||||
|
||||
-- Halls of Lightning
|
||||
-- Bjarngrimm
|
||||
(52774,52774,59160,0,0),
|
||||
-- Loken
|
||||
(52960,52960,59835,0,0),
|
||||
(52961,52961,59836,0,0),
|
||||
-- Volkhan
|
||||
(52387,52387,59528,0,0),
|
||||
(52237,52237,59529,0,0),
|
||||
(52433,52433,59530,0,0),
|
||||
(52429,52429,59527,0,0),
|
||||
|
||||
-- Halls of Stone
|
||||
-- Brann
|
||||
(51012,51012,59868,0,0),
|
||||
(50988,50988,59870,0,0),
|
||||
(51136,51136,59867,0,0),
|
||||
(12167,12167,59863,0,0),
|
||||
(15654,15654,59864,0,0),
|
||||
(12734,12734,59865,0,0),
|
||||
-- Krystallus
|
||||
(50843,50843,59742,0,0),
|
||||
(50810,50810,61546,0,0),
|
||||
(50868,50868,58744,0,0),
|
||||
-- Maiden of Grief
|
||||
(50761,50761,59727,0,0),
|
||||
(50760,50760,59726,0,0),
|
||||
(50752,50752,59772,0,0),
|
||||
-- Sjonnir
|
||||
(50830,50830,59844,0,0),
|
||||
(50831,50831,59845,0,0),
|
||||
(50834,50834,59846,0,0),
|
||||
(50840,50840,59848,0,0),
|
||||
(50838,50838,59853,0,0),
|
||||
(50895,50895,59851,0,0),
|
||||
(50900,50900,59852,0,0),
|
||||
|
||||
-- Utgarde Keep
|
||||
-- Palehoof
|
||||
(48261,48261,59268,0,0),
|
||||
(48256,48256,59267,0,0),
|
||||
(48136,48136,59272,0,0),
|
||||
(48133,48133,59271,0,0),
|
||||
(48130,48130,59264,0,0),
|
||||
(48105,48105,59263,0,0),
|
||||
(48140,48140,59273,0,0),
|
||||
(48137,48137,59265,0,0),
|
||||
-- Skadi
|
||||
(50234,50234,59330,0,0),
|
||||
(50255,50255,59331,0,0),
|
||||
(47579,47579,60020,0,0),
|
||||
-- Svala
|
||||
(15667,15667,59409,0,0),
|
||||
-- Ymiron
|
||||
(48294,48294,59301,0,0),
|
||||
(48291,48291,59300,0,0),
|
||||
(48529,48529,59305,0,0),
|
||||
(48423,48423,59304,0,0),
|
||||
(48380,48380,59320,0,0),
|
||||
-- Ingvar
|
||||
(42708,42708,59708,0,0),
|
||||
(42669,42669,59706,0,0),
|
||||
(42705,42705,59707,0,0),
|
||||
(42729,42729,59734,0,0),
|
||||
(42730,42730,59735,0,0),
|
||||
-- Keleseth
|
||||
(43667,43667,59389,0,0),
|
||||
-- Skarvald
|
||||
(43649,43649,59575,0,0),
|
||||
|
||||
-- Culling of Stratholm
|
||||
(52445,52445,58822,0,0),
|
||||
-- Epoch Hunter
|
||||
(52737,52737,58829,0,0),
|
||||
(52771,52771,58830,0,0),
|
||||
-- Malganis
|
||||
(52720,52720,58852,0,0),
|
||||
(52722,52722,58850,0,0),
|
||||
(52721,52721,58849,0,0),
|
||||
-- Meathook
|
||||
(52696,52696,58823,0,0),
|
||||
(52666,52666,58824,0,0),
|
||||
-- Salramm
|
||||
(57725,57725,58827,0,0),
|
||||
(52480,52480,58825,0,0),
|
||||
|
||||
-- Ahnkahet
|
||||
-- Jedoga
|
||||
(56855,56855,60030,0,0),
|
||||
(56891,56891,60032,0,0),
|
||||
(56926,56926,60029,0,0),
|
||||
-- Taldaram
|
||||
(55959,55959,59513,0,0),
|
||||
|
||||
-- Trial of the Champio
|
||||
-- Argent Challenge
|
||||
(36176,36176,67289,0,0),
|
||||
(34941,34941,34942,0,0),
|
||||
-- Grand Champions
|
||||
(68783,68783,68784,0,0),
|
||||
|
||||
-- Eye of Eternity
|
||||
(57058,57058,60073,0,0),
|
||||
-- Malygos
|
||||
(56272,56272,60072,0,0),
|
||||
(61693,61693,61694,0,0),
|
||||
(57407,57407,60936,0,0),
|
||||
|
||||
-- Violet Hold
|
||||
(58459,58459,59256,0,0),
|
||||
(58462,58462,59257,0,0),
|
||||
(58463,58463,59258,0,0),
|
||||
(58456,58456,59248,0,0),
|
||||
(58455,58455,59245,0,0),
|
||||
(58458,58458,59253,0,0),
|
||||
(58457,58457,59251,0,0),
|
||||
(60181,60181,60204,0,0),
|
||||
(60182,60182,60205,0,0),
|
||||
|
||||
-- Halls Of Reflection
|
||||
-- Falric
|
||||
(72395,72395,72390,0,0),
|
||||
(72396,72396,72391,0,0),
|
||||
(72397,72397,72393,0,0),
|
||||
|
||||
-- Slave Pens
|
||||
-- Rokmar
|
||||
(31956,31956,38801,0,0);
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (67774,67879,67886);
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(67774, "spell_black_knight_ghoul_claw"),
|
||||
(67879, "spell_black_knight_ghoul_claw"),
|
||||
(67886, "spell_black_knight_ghoul_explode");
|
||||
@ -418,7 +418,7 @@ Player::Player(WorldSession* session): Unit(), m_mover(this)
|
||||
|
||||
sScriptMgr->OnConstructPlayer(this);
|
||||
|
||||
m_expectingChangeTransport = false;
|
||||
_expectingChangeTransport = false;
|
||||
}
|
||||
|
||||
Player::~Player()
|
||||
@ -1549,6 +1549,8 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
||||
//remove auras before removing from map...
|
||||
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_CHANGE_MAP | AURA_INTERRUPT_FLAG_MOVE | AURA_INTERRUPT_FLAG_TURNING);
|
||||
|
||||
SetMapChangeOrderCounter();
|
||||
|
||||
if (!GetSession()->PlayerLogout())
|
||||
{
|
||||
// send transfer packets
|
||||
|
||||
@ -2633,8 +2633,14 @@ public:
|
||||
|
||||
std::string GetDebugInfo() const override;
|
||||
|
||||
bool IsExpectingChangeTransport() const { return m_expectingChangeTransport; }
|
||||
void SetExpectingChangeTransport(bool state) { m_expectingChangeTransport = state; }
|
||||
bool IsExpectingChangeTransport() const { return _expectingChangeTransport; }
|
||||
void SetExpectingChangeTransport(bool state) { _expectingChangeTransport = state; }
|
||||
|
||||
uint32 GetPendingFlightChange() const { return _pendingFlightChangeCounter; }
|
||||
void SetPendingFlightChange(uint32 counter) { _pendingFlightChangeCounter = counter; }
|
||||
|
||||
void SetMapChangeOrderCounter() { _mapChangeOrderCounter = GetSession()->GetOrderCounter(); }
|
||||
uint32 GetMapChangeOrderCounter() { return _mapChangeOrderCounter; }
|
||||
|
||||
/*********************************************************/
|
||||
/*** SPELL QUEUE SYSTEM ***/
|
||||
@ -3017,7 +3023,9 @@ private:
|
||||
|
||||
Seconds m_creationTime;
|
||||
|
||||
bool m_expectingChangeTransport;
|
||||
bool _expectingChangeTransport;
|
||||
uint32 _pendingFlightChangeCounter;
|
||||
uint32 _mapChangeOrderCounter;
|
||||
};
|
||||
|
||||
void AddItemsSetItem(Player* player, Item* item);
|
||||
|
||||
@ -20403,6 +20403,7 @@ void Unit::SetCanFly(bool enable)
|
||||
if (Player const* player = GetClientControlling())
|
||||
{
|
||||
uint32 const counter = player->GetSession()->GetOrderCounter();
|
||||
const_cast<Player*>(player)->SetPendingFlightChange(counter);
|
||||
|
||||
WorldPacket data(enable ? SMSG_MOVE_SET_CAN_FLY : SMSG_MOVE_UNSET_CAN_FLY, GetPackGUID().size() + 4);
|
||||
data << GetPackGUID();
|
||||
|
||||
@ -1519,12 +1519,19 @@ void WorldSession::HandleMoveFlagChangeOpcode(WorldPacket& recv_data)
|
||||
|
||||
mover->m_movementInfo.flags = movementInfo.GetMovementFlags();
|
||||
|
||||
// old map - async processing, ignore
|
||||
if (counter <= _player->GetMapChangeOrderCounter())
|
||||
return;
|
||||
|
||||
if (!ProcessMovementInfo(movementInfo, mover, plrMover, recv_data))
|
||||
{
|
||||
recv_data.rfinish(); // prevent warnings spam
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player->GetPendingFlightChange() == counter && opcode == CMSG_MOVE_SET_CAN_FLY_ACK)
|
||||
_player->SetPendingFlightChange(false);
|
||||
|
||||
Opcodes response;
|
||||
|
||||
switch (recv_data.GetOpcode())
|
||||
|
||||
@ -105,6 +105,13 @@ void WorldSession::HandleMoveWorldportAck()
|
||||
GetPlayer()->UpdatePositionData();
|
||||
|
||||
GetPlayer()->SendInitialPacketsBeforeAddToMap();
|
||||
|
||||
if (GetPlayer()->GetPendingFlightChange() <= GetPlayer()->GetMapChangeOrderCounter())
|
||||
{
|
||||
if (!GetPlayer()->HasIncreaseMountedFlightSpeedAura() && !GetPlayer()->HasFlyAura())
|
||||
GetPlayer()->m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_CAN_FLY);
|
||||
}
|
||||
|
||||
if (!GetPlayer()->GetMap()->AddPlayerToMap(GetPlayer()))
|
||||
{
|
||||
LOG_ERROR("network.opcode", "WORLD: failed to teleport player {} ({}) to map {} because of unknown reason!",
|
||||
@ -679,6 +686,10 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket& recvData)
|
||||
return;
|
||||
}
|
||||
|
||||
// old map - async processing, ignore
|
||||
if (counter <= _player->GetMapChangeOrderCounter())
|
||||
return;
|
||||
|
||||
if (!ProcessMovementInfo(movementInfo, mover, _player, recvData))
|
||||
{
|
||||
recvData.rfinish(); // prevent warnings spam
|
||||
@ -991,6 +1002,10 @@ void WorldSession::HandleMoveRootAck(WorldPacket& recvData)
|
||||
return;
|
||||
}
|
||||
|
||||
// old map - async processing, ignore
|
||||
if (counter <= _player->GetMapChangeOrderCounter())
|
||||
return;
|
||||
|
||||
if (!ProcessMovementInfo(movementInfo, mover, _player, recvData))
|
||||
return;
|
||||
|
||||
|
||||
@ -374,7 +374,7 @@ void OpcodeTable::Initialize()
|
||||
/*0x0F3*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_NORMAL_FALL, STATUS_NEVER);
|
||||
/*0x0F4*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVER, STATUS_NEVER);
|
||||
/*0x0F5*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVER, STATUS_NEVER);
|
||||
/*0x0F6*/ DEFINE_HANDLER(CMSG_MOVE_HOVER_ACK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x0F6*/ DEFINE_HANDLER(CMSG_MOVE_HOVER_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x0F7*/ DEFINE_SERVER_OPCODE_HANDLER(MSG_MOVE_HOVER, STATUS_NEVER);
|
||||
/*0x0F8*/ DEFINE_HANDLER(CMSG_TRIGGER_CINEMATIC_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x0F9*/ DEFINE_HANDLER(CMSG_OPENING_CINEMATIC, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@ -1245,7 +1245,7 @@ void OpcodeTable::Initialize()
|
||||
/*0x45A*/ DEFINE_HANDLER(MSG_MOVE_SET_PITCH_RATE_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x45B*/ DEFINE_HANDLER(MSG_MOVE_SET_PITCH_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x45C*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_PITCH_RATE_CHANGE, STATUS_NEVER);
|
||||
/*0x45D*/ DEFINE_HANDLER(CMSG_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleForceSpeedChangeAck );
|
||||
/*0x45D*/ DEFINE_HANDLER(CMSG_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
|
||||
/*0x45E*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLINE_SET_PITCH_RATE, STATUS_NEVER);
|
||||
/*0x45F*/ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_INVITE_NOTES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x460*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_NOTES, STATUS_NEVER);
|
||||
@ -1359,9 +1359,9 @@ void OpcodeTable::Initialize()
|
||||
/*0x4CC*/ DEFINE_HANDLER(CMSG_END_BATTLEFIELD_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x4CD*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_NEVER);
|
||||
/*0x4CE*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_DISABLE, STATUS_NEVER);
|
||||
/*0x4CF*/ DEFINE_HANDLER(CMSG_MOVE_GRAVITY_DISABLE_ACK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x4CF*/ DEFINE_HANDLER(CMSG_MOVE_GRAVITY_DISABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x4D0*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_ENABLE, STATUS_NEVER);
|
||||
/*0x4D1*/ DEFINE_HANDLER(CMSG_MOVE_GRAVITY_ENABLE_ACK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x4D1*/ DEFINE_HANDLER(CMSG_MOVE_GRAVITY_ENABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveFlagChangeOpcode );
|
||||
/*0x4D2*/ DEFINE_SERVER_OPCODE_HANDLER(MSG_MOVE_GRAVITY_CHNG, STATUS_NEVER);
|
||||
/*0x4D3*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLINE_MOVE_GRAVITY_DISABLE, STATUS_NEVER);
|
||||
/*0x4D4*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPLINE_MOVE_GRAVITY_ENABLE, STATUS_NEVER);
|
||||
@ -1431,7 +1431,7 @@ void OpcodeTable::Initialize()
|
||||
/*0x514*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_ALL_COMBAT_LOG, STATUS_NEVER);
|
||||
/*0x515*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_NEVER);
|
||||
/*0x516*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_COLLISION_HGT, STATUS_NEVER);
|
||||
/*0x517*/ DEFINE_HANDLER(CMSG_MOVE_SET_COLLISION_HGT_ACK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleForceSpeedChangeAck );
|
||||
/*0x517*/ DEFINE_HANDLER(CMSG_MOVE_SET_COLLISION_HGT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
|
||||
/*0x518*/ DEFINE_HANDLER(MSG_MOVE_SET_COLLISION_HGT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x519*/ DEFINE_HANDLER(CMSG_CLEAR_RANDOM_BG_WIN_TIME, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
/*0x51A*/ DEFINE_HANDLER(CMSG_CLEAR_HOLIDAY_BG_WIN_TIME, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
|
||||
@ -53,7 +53,7 @@ enum Spells
|
||||
SPELL_FAERIE_DRAGON_FORM = 27546,
|
||||
SPELL_ARCANE_EXPLOSION = 22271,
|
||||
SPELL_REFLECTION = 27564,
|
||||
SPELL_CHAIN_LIGHTING = 27567,
|
||||
SPELL_CHAIN_LIGHTNING = 27567,
|
||||
SPELL_SLEEP = 20663 // Guessed
|
||||
};
|
||||
|
||||
@ -68,7 +68,7 @@ enum Phases
|
||||
std::vector<uint32> catSpells = { SPELL_SHRED, SPELL_RAKE, SPELL_FEROCIOUS_BITE };
|
||||
std::vector<uint32> humanSpells = { SPELL_HURRICANE, SPELL_MOONFIRE, SPELL_SHOCK, SPELL_HEALING_TOUCH, SPELL_REJUVENATION };
|
||||
std::vector<uint32> bearSpells = { SPELL_DEMORALIZING_ROAR, SPELL_MAUL, SPELL_SWIPE };
|
||||
std::vector<uint32> faerieSpells = { SPELL_ARCANE_EXPLOSION, SPELL_REFLECTION, SPELL_CHAIN_LIGHTING, SPELL_SLEEP };
|
||||
std::vector<uint32> faerieSpells = { SPELL_ARCANE_EXPLOSION, SPELL_REFLECTION, SPELL_CHAIN_LIGHTNING, SPELL_SLEEP };
|
||||
|
||||
struct boss_mor_grayhoof : public BossAI
|
||||
{
|
||||
|
||||
@ -234,7 +234,7 @@ public:
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 5:
|
||||
case 6:
|
||||
events.ScheduleEvent(EVENT_TELEPORT_1, 2s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ public:
|
||||
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
if (type != WAYPOINT_MOTION_TYPE || id != 12)
|
||||
if (type != WAYPOINT_MOTION_TYPE || id != 13)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@ -592,12 +592,12 @@ struct boss_nefarian : public BossAI
|
||||
return;
|
||||
}
|
||||
|
||||
if (id == 3)
|
||||
if (id == 4)
|
||||
{
|
||||
Talk(SAY_INTRO);
|
||||
}
|
||||
|
||||
if (id == 5)
|
||||
if (id == 6)
|
||||
{
|
||||
DoCastAOE(SPELL_SHADOWFLAME_INITIAL);
|
||||
Talk(SAY_SHADOWFLAME);
|
||||
|
||||
@ -64,12 +64,12 @@ enum Koltira
|
||||
//NPC_DEATH_KNIGHT_MOUNT = 29201,
|
||||
MODEL_DEATH_KNIGHT_MOUNT = 25278,
|
||||
|
||||
POINT_STAND_UP = 0,
|
||||
POINT_BOX = 1,
|
||||
POINT_ANTI_MAGIC_ZONE = 2,
|
||||
POINT_STAND_UP = 1,
|
||||
POINT_BOX = 2,
|
||||
POINT_ANTI_MAGIC_ZONE = 3,
|
||||
|
||||
POINT_MOUNT = 0,
|
||||
POINT_DESPAWN = 1
|
||||
POINT_MOUNT = 1,
|
||||
POINT_DESPAWN = 2
|
||||
};
|
||||
|
||||
class npc_koltira_deathweaver : public CreatureScript
|
||||
|
||||
@ -56,7 +56,7 @@ enum Events
|
||||
enum Misc
|
||||
{
|
||||
WEAPON_KIRTONOS_STAFF = 11365,
|
||||
POINT_KIRTONOS_LAND = 13,
|
||||
POINT_KIRTONOS_LAND = 14,
|
||||
KIRTONOS_PATH = 105061,
|
||||
|
||||
EMOTE_SUMMONED = 0
|
||||
|
||||
@ -486,7 +486,7 @@ struct npc_harrison_jones : public ScriptedAI
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
// at gong
|
||||
if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GONG)
|
||||
if (type == WAYPOINT_MOTION_TYPE && id == 3 && _phase == PHASE_GONG)
|
||||
{
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
me->SetFacingToObject(gong);
|
||||
@ -503,13 +503,13 @@ struct npc_harrison_jones : public ScriptedAI
|
||||
});
|
||||
}
|
||||
// to the massive gate
|
||||
else if (type == WAYPOINT_MOTION_TYPE && id == 1 && _phase == PHASE_GATE_CLOSED)
|
||||
else if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GATE_CLOSED)
|
||||
{
|
||||
me->SetEntry(NPC_HARRISON_JONES_1);
|
||||
Talk(SAY_HARRISON_2);
|
||||
}
|
||||
// at massive gate
|
||||
else if (type == WAYPOINT_MOTION_TYPE && id == 2 && _phase == PHASE_GATE_CLOSED)
|
||||
else if (type == WAYPOINT_MOTION_TYPE && id == 3 && _phase == PHASE_GATE_CLOSED)
|
||||
{
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
|
||||
Talk(SAY_HARRISON_3);
|
||||
@ -599,7 +599,7 @@ struct npc_amanishi_lookout : public NullCreatureAI
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
// at boss
|
||||
if (type == WAYPOINT_MOTION_TYPE && id == 8) // should despawn with waypoint script
|
||||
if (type == WAYPOINT_MOTION_TYPE && id == 9) // should despawn with waypoint script
|
||||
me->DespawnOrUnsummon(0s, 0s);
|
||||
}
|
||||
private:
|
||||
|
||||
@ -80,7 +80,7 @@ enum Misc
|
||||
|
||||
MODEL_OHGAN_MOUNT = 15271,
|
||||
PATH_MANDOKIR = 492861,
|
||||
POINT_MANDOKIR_END = 24,
|
||||
POINT_MANDOKIR_END = 25,
|
||||
CHAINED_SPIRIT_COUNT = 20,
|
||||
ACTION_CHARGE = 1
|
||||
};
|
||||
|
||||
@ -149,13 +149,13 @@ struct npc_sentinel_leader : public ScriptedAI
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 1:
|
||||
case 4:
|
||||
case 7:
|
||||
case 2:
|
||||
case 5:
|
||||
case 8:
|
||||
case 13:
|
||||
case 9:
|
||||
case 14:
|
||||
case 17:
|
||||
case 15:
|
||||
case 18:
|
||||
Creature* SentinelSpy = me->FindNearestCreature(NPC_SENTINEL_SPY, 2.0f, true);
|
||||
if (SentinelSpy)
|
||||
{
|
||||
@ -282,10 +282,10 @@ struct npc_sentinel_infiltrator : public ScriptedAI
|
||||
case PATH_ONE:
|
||||
switch (id)
|
||||
{
|
||||
case 5:
|
||||
case 8:
|
||||
case 14:
|
||||
case 18:
|
||||
case 6:
|
||||
case 9:
|
||||
case 15:
|
||||
case 19:
|
||||
Creature* SentinelInfiltrator = me->FindNearestCreature(NPC_SENTINEL_INFILTRATOR, 3.5f, true);
|
||||
if (SentinelInfiltrator)
|
||||
{
|
||||
@ -299,10 +299,10 @@ struct npc_sentinel_infiltrator : public ScriptedAI
|
||||
case PATH_TWO:
|
||||
switch (id)
|
||||
{
|
||||
case 5:
|
||||
case 7:
|
||||
case 14:
|
||||
case 17:
|
||||
case 6:
|
||||
case 8:
|
||||
case 15:
|
||||
case 18:
|
||||
Creature* SentinelInfiltrator = me->FindNearestCreature(NPC_SENTINEL_INFILTRATOR, 3.5f, true);
|
||||
if (SentinelInfiltrator)
|
||||
{
|
||||
|
||||
@ -1085,9 +1085,9 @@ struct boss_headless_horseman : public ScriptedAI
|
||||
{
|
||||
if (type == WAYPOINT_MOTION_TYPE)
|
||||
{
|
||||
if (point == 0)
|
||||
if (point == 1)
|
||||
me->CastSpell(me, SPELL_HEAD_VISUAL, true);
|
||||
else if (point == 11)
|
||||
else if (point == 12)
|
||||
{
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
|
||||
me->StopMoving();
|
||||
|
||||
@ -18,17 +18,16 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "culling_of_stratholme.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CURSE_OF_EXERTION = 52772,
|
||||
SPELL_WOUNDING_STRIKE_N = 52771,
|
||||
SPELL_WOUNDING_STRIKE_H = 58830,
|
||||
SPELL_WOUNDING_STRIKE = 52771,
|
||||
SPELL_TIME_STOP = 58848,
|
||||
SPELL_TIME_WARP = 52766,
|
||||
SPELL_TIME_STEP_N = 52737,
|
||||
SPELL_TIME_STEP_H = 58829,
|
||||
SPELL_TIME_STEP = 52737,
|
||||
};
|
||||
|
||||
enum Events
|
||||
@ -87,7 +86,7 @@ public:
|
||||
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == SPELL_TIME_STEP_H || spellInfo->Id == SPELL_TIME_STEP_N)
|
||||
if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_TIME_STEP, me))
|
||||
{
|
||||
if (target == me)
|
||||
return;
|
||||
@ -98,7 +97,7 @@ public:
|
||||
return;
|
||||
}
|
||||
warps++;
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_TIME_STEP_N, SPELL_TIME_STEP_H), true);
|
||||
me->CastSpell(target, SPELL_TIME_STEP, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +118,7 @@ public:
|
||||
events.Repeat(9s);
|
||||
break;
|
||||
case EVENT_SPELL_WOUNDING_STRIKE:
|
||||
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_WOUNDING_STRIKE_N, SPELL_WOUNDING_STRIKE_H), false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_WOUNDING_STRIKE, false);
|
||||
events.Repeat(6s);
|
||||
break;
|
||||
case EVENT_SPELL_TIME_STOP:
|
||||
@ -130,7 +129,7 @@ public:
|
||||
Talk(SAY_TIME_WARP);
|
||||
me->CastSpell(me, SPELL_TIME_WARP, false);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_TIME_STEP_N, SPELL_TIME_STEP_H), true);
|
||||
me->CastSpell(target, SPELL_TIME_STEP, true);
|
||||
|
||||
events.Repeat(25s);
|
||||
break;
|
||||
|
||||
@ -22,12 +22,9 @@
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CARRION_SWARM_N = 52720,
|
||||
SPELL_CARRION_SWARM_H = 58852,
|
||||
SPELL_MIND_BLAST_N = 52722,
|
||||
SPELL_MIND_BLAST_H = 58850,
|
||||
SPELL_SLEEP_N = 52721,
|
||||
SPELL_SLEEP_H = 58849,
|
||||
SPELL_CARRION_SWARM = 52720,
|
||||
SPELL_MIND_BLAST = 52722,
|
||||
SPELL_SLEEP = 52721,
|
||||
SPELL_VAMPIRIC_TOUCH = 52723,
|
||||
};
|
||||
|
||||
@ -145,18 +142,18 @@ public:
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_SPELL_CARRION_SWARM:
|
||||
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_CARRION_SWARM_N, SPELL_CARRION_SWARM_H), false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_CARRION_SWARM, false);
|
||||
events.Repeat(7s);
|
||||
break;
|
||||
case EVENT_SPELL_MIND_BLAST:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_MIND_BLAST_N, SPELL_MIND_BLAST_H), false);
|
||||
me->CastSpell(target, SPELL_MIND_BLAST, false);
|
||||
events.Repeat(6s);
|
||||
break;
|
||||
case EVENT_SPELL_SLEEP:
|
||||
Talk(SAY_SLEEP);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_SLEEP_N, SPELL_SLEEP_H), false);
|
||||
me->CastSpell(target, SPELL_SLEEP, false);
|
||||
events.Repeat(17s);
|
||||
break;
|
||||
case EVENT_SPELL_VAMPIRIC_TOUCH:
|
||||
|
||||
@ -21,10 +21,8 @@
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CONSTRICTING_CHAINS_N = 52696,
|
||||
SPELL_CONSTRICTING_CHAINS_H = 58823,
|
||||
SPELL_DISEASE_EXPULSION_N = 52666,
|
||||
SPELL_DISEASE_EXPULSION_H = 58824,
|
||||
SPELL_CONSTRICTING_CHAINS = 52696,
|
||||
SPELL_DISEASE_EXPULSION = 52666,
|
||||
SPELL_FRENZY = 58841,
|
||||
};
|
||||
|
||||
@ -97,7 +95,7 @@ public:
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_SPELL_DISEASE_EXPULSION:
|
||||
me->CastSpell(me, DUNGEON_MODE(SPELL_DISEASE_EXPULSION_N, SPELL_DISEASE_EXPULSION_H), false);
|
||||
me->CastSpell(me, SPELL_DISEASE_EXPULSION, false);
|
||||
events.Repeat(6s);
|
||||
break;
|
||||
case EVENT_SPELL_FRENZY:
|
||||
@ -106,7 +104,7 @@ public:
|
||||
break;
|
||||
case EVENT_SPELL_CONSTRICTING_CHAINS:
|
||||
if (Unit* pTarget = SelectTarget(SelectTargetMethod::MinThreat, 0, 50.0f, true))
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_CONSTRICTING_CHAINS_N, SPELL_CONSTRICTING_CHAINS_H), false);
|
||||
me->CastSpell(pTarget, SPELL_CONSTRICTING_CHAINS, false);
|
||||
events.Repeat(14s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -23,14 +23,12 @@
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_SHADOW_BOLT_N = 57725,
|
||||
SPELL_SHADOW_BOLT_H = 58827,
|
||||
SPELL_SHADOW_BOLT = 57725,
|
||||
SPELL_STEAL_FLESH_CHANNEL = 52708,
|
||||
SPELL_STEAL_FLESH_TARGET = 52711,
|
||||
SPELL_STEAL_FLESH_CASTER = 52712,
|
||||
SPELL_SUMMON_GHOULS = 52451,
|
||||
SPELL_EXPLODE_GHOUL_N = 52480,
|
||||
SPELL_EXPLODE_GHOUL_H = 58825,
|
||||
SPELL_EXPLODE_GHOUL = 52480,
|
||||
SPELL_CURSE_OF_TWISTED_FAITH = 58845,
|
||||
};
|
||||
|
||||
@ -112,7 +110,7 @@ public:
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, (*itr)))
|
||||
if (cr->IsAlive())
|
||||
{
|
||||
me->CastSpell(cr, DUNGEON_MODE(SPELL_EXPLODE_GHOUL_N, SPELL_EXPLODE_GHOUL_H), false);
|
||||
me->CastSpell(cr, SPELL_EXPLODE_GHOUL, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -129,7 +127,7 @@ public:
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_SPELL_SHADOW_BOLT:
|
||||
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT_N, SPELL_SHADOW_BOLT_H), false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
|
||||
events.Repeat(10s);
|
||||
break;
|
||||
case EVENT_SPELL_STEAL_FLESH:
|
||||
|
||||
@ -141,8 +141,7 @@ enum Spells
|
||||
{
|
||||
// Combat spells
|
||||
SPELL_ARTHAS_AURA = 52442,
|
||||
SPELL_ARTHAS_EXORCISM_N = 52445,
|
||||
SPELL_ARTHAS_EXORCISM_H = 58822,
|
||||
SPELL_ARTHAS_EXORCISM = 52445,
|
||||
SPELL_ARTHAS_HOLY_LIGHT = 52444,
|
||||
|
||||
// Visuals
|
||||
@ -1178,7 +1177,7 @@ public:
|
||||
{
|
||||
case EVENT_COMBAT_EXORCISM:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_ARTHAS_EXORCISM_N, SPELL_ARTHAS_EXORCISM_H), false);
|
||||
me->CastSpell(target, SPELL_ARTHAS_EXORCISM, false);
|
||||
|
||||
combatEvents.Repeat(7300ms);
|
||||
break;
|
||||
|
||||
@ -114,10 +114,10 @@ struct boss_lieutenant_drake : public BossAI
|
||||
{
|
||||
switch (point)
|
||||
{
|
||||
case 7:
|
||||
case 8:
|
||||
Talk(SAY_ENTER);
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
pathId = (me->GetEntry() * 10) + 1;
|
||||
runSecondPath = true;
|
||||
break;
|
||||
|
||||
@ -51,7 +51,7 @@ enum Belnistrasz
|
||||
EVENT_FROST_NOVA = 6,
|
||||
|
||||
PATH_ESCORT = 871710,
|
||||
POINT_REACH_IDOL = 17,
|
||||
POINT_REACH_IDOL = 18,
|
||||
|
||||
QUEST_EXTINGUISHING_THE_IDOL = 3525,
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ enum Emotes
|
||||
enum Points
|
||||
{
|
||||
POINT_AIR = 0,
|
||||
POINT_GROUND = 2,
|
||||
POINT_GROUND = 3,
|
||||
POINT_PARALYZE = 2
|
||||
};
|
||||
|
||||
|
||||
@ -54,12 +54,9 @@ enum Spells
|
||||
|
||||
// FIGHT
|
||||
SPELL_GIFT_OF_THE_HERALD = 56219,
|
||||
SPELL_CYCLONE_STRIKE = 56855, // Self
|
||||
SPELL_CYCLONE_STRIKE_H = 60030,
|
||||
SPELL_LIGHTNING_BOLT = 56891, // 40Y
|
||||
SPELL_LIGHTNING_BOLT_H = 60032, // 40Y
|
||||
SPELL_THUNDERSHOCK = 56926, // 30Y
|
||||
SPELL_THUNDERSHOCK_H = 60029 // 30Y
|
||||
SPELL_CYCLONE_STRIKE = 56855,
|
||||
SPELL_LIGHTNING_BOLT = 56891,
|
||||
SPELL_THUNDERSHOCK = 56926,
|
||||
};
|
||||
|
||||
enum Events
|
||||
@ -461,7 +458,7 @@ struct boss_jedoga_shadowseeker : public BossAI
|
||||
// Normal phase
|
||||
case EVENT_JEDOGA_CYCLONE:
|
||||
{
|
||||
DoCastSelf(DUNGEON_MODE(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
|
||||
DoCastSelf(SPELL_CYCLONE_STRIKE, false);
|
||||
events.Repeat(10s, 14s);
|
||||
break;
|
||||
}
|
||||
@ -469,7 +466,7 @@ struct boss_jedoga_shadowseeker : public BossAI
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
|
||||
{
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
|
||||
DoCast(pTarget, SPELL_LIGHTNING_BOLT, false);
|
||||
}
|
||||
events.Repeat(11s, 15s);
|
||||
break;
|
||||
@ -478,7 +475,7 @@ struct boss_jedoga_shadowseeker : public BossAI
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
|
||||
{
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
|
||||
DoCast(pTarget, SPELL_THUNDERSHOCK, false);
|
||||
}
|
||||
|
||||
events.Repeat(16s, 22s);
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "ahnkahet.h"
|
||||
@ -38,11 +39,10 @@ enum Spells
|
||||
SPELL_BEAM_VISUAL = 60342,
|
||||
SPELL_VANISH = 55964,
|
||||
SPELL_SHADOWSTEP = 55966,
|
||||
SPELL_HOVER_FALL = 60425
|
||||
SPELL_HOVER_FALL = 60425,
|
||||
SPELL_EMBRACE_OF_THE_VAMPYR = 55959,
|
||||
};
|
||||
|
||||
#define SPELL_EMBRACE_OF_THE_VAMPYR DUNGEON_MODE(55959, 59513)
|
||||
|
||||
enum Spheres
|
||||
{
|
||||
NPC_FLAME_SPHERE_1 = 30106,
|
||||
@ -291,7 +291,7 @@ struct boss_taldaram : public BossAI
|
||||
{
|
||||
BossAI::DamageTaken(attacker, damage, damageType, school);
|
||||
|
||||
if (me->FindCurrentSpellBySpellId(SPELL_EMBRACE_OF_THE_VAMPYR))
|
||||
if (me->FindCurrentSpellBySpellId(sSpellMgr->GetSpellIdForDifficulty(SPELL_EMBRACE_OF_THE_VAMPYR, me)))
|
||||
{
|
||||
vanishDamage += damage;
|
||||
if (vanishDamage >= DUNGEON_MODE<uint32>(MAX_EMBRACE_DMG, MAX_EMBRACE_DMG_H))
|
||||
|
||||
@ -130,9 +130,9 @@ enum Misc
|
||||
ACTION_DRAKE_DIED = 3,
|
||||
|
||||
// Movement points
|
||||
POINT_FINAL_TENEBRON = 8,
|
||||
POINT_FINAL_SHADRON = 4,
|
||||
POINT_FINAL_VESPERON = 4,
|
||||
POINT_FINAL_TENEBRON = 9,
|
||||
POINT_FINAL_SHADRON = 5,
|
||||
POINT_FINAL_VESPERON = 5,
|
||||
|
||||
// Lava directions. Its used to identify to which side lava was moving by last time
|
||||
LAVA_LEFT_SIDE = 0,
|
||||
|
||||
@ -45,12 +45,9 @@ enum EadricEvents
|
||||
|
||||
enum PaletressSpells
|
||||
{
|
||||
SPELL_SMITE_N = 66536,
|
||||
SPELL_SMITE_H = 67674,
|
||||
SPELL_HOLY_FIRE_N = 66538,
|
||||
SPELL_HOLY_FIRE_H = 67676,
|
||||
SPELL_RENEW_N = 66537,
|
||||
SPELL_RENEW_H = 67675,
|
||||
SPELL_SMITE = 66536,
|
||||
SPELL_HOLY_FIRE = 66538,
|
||||
SPELL_RENEW = 66537,
|
||||
|
||||
SPELL_HOLY_NOVA = 66546,
|
||||
SPELL_SHIELD = 66515,
|
||||
@ -58,21 +55,11 @@ enum PaletressSpells
|
||||
SPELL_SUMMON_MEMORY = 66545,
|
||||
|
||||
//Memory
|
||||
SPELL_OLD_WOUNDS_N = 66620,
|
||||
SPELL_OLD_WOUNDS_H = 67679,
|
||||
SPELL_SHADOWS_PAST_N = 66619,
|
||||
SPELL_SHADOWS_PAST_H = 67678,
|
||||
SPELL_WAKING_NIGHTMARE_N = 66552,
|
||||
SPELL_WAKING_NIGHTMARE_H = 67677,
|
||||
SPELL_OLD_WOUNDS = 66620,
|
||||
SPELL_SHADOWS_PAST = 66619,
|
||||
SPELL_WAKING_NIGHTMARE = 66552,
|
||||
};
|
||||
|
||||
#define SPELL_SMITE DUNGEON_MODE(SPELL_SMITE_N, SPELL_SMITE_H)
|
||||
#define SPELL_HOLY_FIRE DUNGEON_MODE(SPELL_HOLY_FIRE_N, SPELL_HOLY_FIRE_H)
|
||||
#define SPELL_RENEW DUNGEON_MODE(SPELL_RENEW_N, SPELL_RENEW_H)
|
||||
#define SPELL_OLD_WOUNDS DUNGEON_MODE(SPELL_OLD_WOUNDS_N, SPELL_OLD_WOUNDS_H)
|
||||
#define SPELL_SHADOWS_PAST DUNGEON_MODE(SPELL_SHADOWS_PAST_N, SPELL_SHADOWS_PAST_H)
|
||||
#define SPELL_WAKING_NIGHTMARE DUNGEON_MODE(SPELL_WAKING_NIGHTMARE_N, SPELL_WAKING_NIGHTMARE_H)
|
||||
|
||||
enum PaletressEvents
|
||||
{
|
||||
EVENT_SPELL_SMITE = 1,
|
||||
@ -477,29 +464,22 @@ enum ArgentSoldierSpells
|
||||
// monk
|
||||
SPELL_FLURRY_OF_BLOWS = 67233,
|
||||
SPELL_PUMMEL = 67235,
|
||||
SPELL_DIVINE_SHIELD_H = 67251,
|
||||
SPELL_FINAL_MEDITATION_H = 67255,
|
||||
SPELL_DIVINE_SHIELD = 67251,
|
||||
SPELL_FINAL_MEDITATION = 67255,
|
||||
|
||||
// priestess
|
||||
SPELL_HOLY_SMITE_N = 36176,
|
||||
SPELL_HOLY_SMITE_H = 67289,
|
||||
SPELL_HOLY_SMITE = 36176,
|
||||
SPELL_FOUNTAIN_OF_LIGHT = 67194,
|
||||
NPC_FOUNTAIN_OF_LIGHT = 35311,
|
||||
SPELL_SHADOW_WORD_PAIN_N = 34941,
|
||||
SPELL_SHADOW_WORD_PAIN_H = 34942,
|
||||
SPELL_MIND_CONTROL_H = 67229,
|
||||
SPELL_SHADOW_WORD_PAIN = 34941,
|
||||
SPELL_MIND_CONTROL = 67229,
|
||||
|
||||
// lightwielder
|
||||
SPELL_BLAZING_LIGHT_N = 67247,
|
||||
SPELL_BLAZING_LIGHT_H = 67290,
|
||||
SPELL_BLAZING_LIGHT = 67247,
|
||||
SPELL_CLEAVE = 15284,
|
||||
SPELL_UNBALANCING_STRIKE_H = 67237,
|
||||
SPELL_UNBALANCING_STRIKE = 67237,
|
||||
};
|
||||
|
||||
#define SPELL_HOLY_SMITE DUNGEON_MODE(SPELL_HOLY_SMITE_N, SPELL_HOLY_SMITE_H)
|
||||
#define SPELL_SHADOW_WORD_PAIN DUNGEON_MODE(SPELL_SHADOW_WORD_PAIN_N, SPELL_SHADOW_WORD_PAIN_H)
|
||||
#define SPELL_BLAZING_LIGHT DUNGEON_MODE(SPELL_BLAZING_LIGHT_N, SPELL_BLAZING_LIGHT_H)
|
||||
|
||||
enum ArgentSoldierEvents
|
||||
{
|
||||
EVENT_MONK_SPELL_FLURRY_OF_BLOWS = 1,
|
||||
@ -507,10 +487,10 @@ enum ArgentSoldierEvents
|
||||
EVENT_PRIESTESS_SPELL_HOLY_SMITE,
|
||||
EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN,
|
||||
EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT,
|
||||
EVENT_PRIESTESS_SPELL_MIND_CONTROL_H,
|
||||
EVENT_PRIESTESS_SPELL_MIND_CONTROL,
|
||||
EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT,
|
||||
EVENT_LIGHTWIELDER_SPELL_CLEAVE,
|
||||
EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H,
|
||||
EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE,
|
||||
};
|
||||
|
||||
class npc_argent_soldier : public CreatureScript
|
||||
@ -619,8 +599,8 @@ public:
|
||||
bCheck = false;
|
||||
damage = me->GetHealth() - 1;
|
||||
events.DelayEvents(10s);
|
||||
me->CastSpell(me, SPELL_DIVINE_SHIELD_H, true);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FINAL_MEDITATION_H, true);
|
||||
me->CastSpell(me, SPELL_DIVINE_SHIELD, true);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FINAL_MEDITATION, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -639,13 +619,13 @@ public:
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_SHADOW_WORD_PAIN, 3s, 6s);
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_FOUNTAIN_OF_LIGHT, 8s, 15s);
|
||||
if (IsHeroic())
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_MIND_CONTROL_H, 12s);
|
||||
events.RescheduleEvent(EVENT_PRIESTESS_SPELL_MIND_CONTROL, 12s);
|
||||
break;
|
||||
case NPC_ARGENT_LIGHTWIELDER:
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_BLAZING_LIGHT, 12s, 15s);
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_CLEAVE, 3s, 5s);
|
||||
if (IsHeroic())
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H, 8s, 12s);
|
||||
events.RescheduleEvent(EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE, 8s, 12s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -691,9 +671,9 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FOUNTAIN_OF_LIGHT, false);
|
||||
events.Repeat(35s, 45s);
|
||||
break;
|
||||
case EVENT_PRIESTESS_SPELL_MIND_CONTROL_H:
|
||||
case EVENT_PRIESTESS_SPELL_MIND_CONTROL:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
|
||||
me->CastSpell(target, SPELL_MIND_CONTROL_H, false);
|
||||
me->CastSpell(target, SPELL_MIND_CONTROL, false);
|
||||
events.Repeat(22s, 30s);
|
||||
break;
|
||||
|
||||
@ -711,9 +691,9 @@ public:
|
||||
me->CastSpell(me->GetVictim(), SPELL_CLEAVE, false);
|
||||
events.Repeat(6s, 8s);
|
||||
break;
|
||||
case EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE_H:
|
||||
case EVENT_LIGHTWIELDER_SPELL_UNBALANCING_STRIKE:
|
||||
if (me->GetVictim())
|
||||
me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE_H, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_UNBALANCING_STRIKE, false);
|
||||
events.Repeat(12s, 15s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -18,7 +18,11 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "Spell.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "trial_of_the_champion.h"
|
||||
|
||||
enum Spells
|
||||
@ -30,49 +34,29 @@ enum Spells
|
||||
SPELL_BK_KILL_CREDIT = 68663,
|
||||
|
||||
// phase 1
|
||||
SPELL_PLAGUE_STRIKE_N = 67724,
|
||||
SPELL_PLAGUE_STRIKE_H = 67884,
|
||||
SPELL_ICY_TOUCH_N = 67718,
|
||||
SPELL_ICY_TOUCH_H = 67881,
|
||||
SPELL_DEATH_RESPITE_N = 67745,
|
||||
SPELL_DEATH_RESPITE_H = 68306,
|
||||
SPELL_PLAGUE_STRIKE = 67724,
|
||||
SPELL_ICY_TOUCH = 67718,
|
||||
SPELL_DEATH_RESPITE = 67745,
|
||||
SPELL_DEATH_RESPITE_DUMMY = 66798,
|
||||
SPELL_OBLITERATE_N = 67725,
|
||||
SPELL_OBLITERATE_H = 67883,
|
||||
SPELL_OBLITERATE = 67725,
|
||||
|
||||
// phase 2 (+ abilities from phase 1 without death respite)
|
||||
SPELL_ARMY_DEAD_N = 67761,
|
||||
SPELL_ARMY_DEAD_H = 67874,
|
||||
SPELL_DESECRATION_N = 67778,
|
||||
SPELL_DESECRATION_H = 67877,
|
||||
SPELL_ARMY_DEAD = 67761,
|
||||
SPELL_DESECRATION = 67778,
|
||||
SPELL_DESECRATION_SUMMON = 67779,
|
||||
SPELL_BK_GHOUL_EXPLODE = 67751,
|
||||
|
||||
// phase 3
|
||||
SPELL_DEATH_BITE_N = 67808,
|
||||
SPELL_DEATH_BITE_H = 67875,
|
||||
SPELL_MARKED_DEATH_N = 67823,
|
||||
SPELL_MARKED_DEATH_H = 67882,
|
||||
SPELL_DEATH_BITE = 67808,
|
||||
SPELL_MARKED_DEATH = 67823,
|
||||
|
||||
// ghouls
|
||||
SPELL_CLAW_N = 67774,
|
||||
SPELL_CLAW = 67774,
|
||||
SPELL_CLAW_H = 67879,
|
||||
SPELL_EXPLODE_N = 67729,
|
||||
SPELL_EXPLODE_H = 67886,
|
||||
SPELL_LEAP_N = 67749,
|
||||
SPELL_LEAP_H = 67880,
|
||||
SPELL_EXPLODE = 67729,
|
||||
SPELL_EXPLODE_H = 67886,
|
||||
SPELL_LEAP = 67749,
|
||||
};
|
||||
#define SPELL_LEAP DUNGEON_MODE(SPELL_LEAP_N, SPELL_LEAP_H)
|
||||
#define SPELL_EXPLODE DUNGEON_MODE(SPELL_EXPLODE_N, SPELL_EXPLODE_H)
|
||||
|
||||
#define SPELL_PLAGUE_STRIKE DUNGEON_MODE(SPELL_PLAGUE_STRIKE_N, SPELL_PLAGUE_STRIKE_H)
|
||||
#define SPELL_ICY_TOUCH DUNGEON_MODE(SPELL_ICY_TOUCH_N, SPELL_ICY_TOUCH_H)
|
||||
#define SPELL_DEATH_RESPITE DUNGEON_MODE(SPELL_DEATH_RESPITE_N, SPELL_DEATH_RESPITE_H)
|
||||
#define SPELL_OBLITERATE DUNGEON_MODE(SPELL_OBLITERATE_N, SPELL_OBLITERATE_H)
|
||||
#define SPELL_ARMY_DEAD DUNGEON_MODE(SPELL_ARMY_DEAD_N, SPELL_ARMY_DEAD_H)
|
||||
#define SPELL_DESECRATION DUNGEON_MODE(SPELL_DESECRATION_N, SPELL_DESECRATION_H)
|
||||
#define SPELL_DEATH_BITE DUNGEON_MODE(SPELL_DEATH_BITE_N, SPELL_DEATH_BITE_H)
|
||||
#define SPELL_MARKED_DEATH DUNGEON_MODE(SPELL_MARKED_DEATH_N, SPELL_MARKED_DEATH_H)
|
||||
|
||||
enum Events
|
||||
{
|
||||
@ -420,27 +404,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
|
||||
{
|
||||
switch (spell->Id)
|
||||
{
|
||||
case SPELL_CLAW_N:
|
||||
case SPELL_CLAW_H:
|
||||
DoResetThreatList();
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f))
|
||||
{
|
||||
me->AddThreat(target, 100.0f);
|
||||
AttackStart(target);
|
||||
}
|
||||
break;
|
||||
case SPELL_EXPLODE_H:
|
||||
if (target && target->IsPlayer())
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
@ -467,7 +430,7 @@ public:
|
||||
break;
|
||||
case 2: // claw
|
||||
if (Unit* target = me->GetVictim())
|
||||
me->CastSpell(target, SPELL_CLAW_N, false);
|
||||
me->CastSpell(target, SPELL_CLAW, false);
|
||||
events.Repeat(6s, 8s);
|
||||
break;
|
||||
}
|
||||
@ -482,9 +445,51 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
//67774,67879
|
||||
class spell_black_knight_ghoul_claw : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_black_knight_ghoul_claw);
|
||||
|
||||
void HandleSpellHit(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
{
|
||||
GetCaster()->GetThreatMgr().ResetAllThreat();
|
||||
if (Unit* target = caster->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 30.0f))
|
||||
{
|
||||
caster->AddThreat(target, 100.0f);
|
||||
caster->GetAI()->AttackStart(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_black_knight_ghoul_claw::HandleSpellHit, EFFECT_0, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
//67886
|
||||
class spell_black_knight_ghoul_explode : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_black_knight_ghoul_explode);
|
||||
|
||||
void HandleSpellHit(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (GetHitUnit()->IsPlayer())
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
instance->SetData(DATA_ACHIEV_IVE_HAD_WORSE, 0);
|
||||
}
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_black_knight_ghoul_explode::HandleSpellHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_black_knight()
|
||||
{
|
||||
new boss_black_knight();
|
||||
new npc_black_knight_skeletal_gryphon();
|
||||
new npc_black_knight_ghoul();
|
||||
RegisterSpellScript(spell_black_knight_ghoul_claw);
|
||||
RegisterSpellScript(spell_black_knight_ghoul_explode);
|
||||
}
|
||||
|
||||
@ -56,38 +56,30 @@ enum MountSpells
|
||||
enum ChampionSpells
|
||||
{
|
||||
// Mage (Ambrose Boltspark, Eressea Dawnsinger)
|
||||
SPELL_FIREBALL_N = 66042,
|
||||
SPELL_FIREBALL_H = 68310,
|
||||
SPELL_BLAST_WAVE_N = 66044,
|
||||
SPELL_BLAST_WAVE_H = 68312,
|
||||
SPELL_FIREBALL = 66042,
|
||||
SPELL_BLAST_WAVE = 66044,
|
||||
SPELL_HASTE = 66045,
|
||||
SPELL_POLYMORPH_N = 66043,
|
||||
SPELL_POLYMORPH_H = 68311,
|
||||
SPELL_POLYMORPH = 66043,
|
||||
|
||||
// Shaman (Colosos, Runok Wildmane)
|
||||
SPELL_CHAIN_LIGHTNING_N = 67529,
|
||||
SPELL_CHAIN_LIGHTNING_H = 68319,
|
||||
SPELL_CHAIN_LIGHTNING = 67529,
|
||||
SPELL_EARTH_SHIELD = 67530,
|
||||
SPELL_HEALING_WAVE_N = 67528,
|
||||
SPELL_HEALING_WAVE_H = 68318,
|
||||
SPELL_HEALING_WAVE = 67528,
|
||||
SPELL_HEX_OF_MENDING = 67534,
|
||||
|
||||
// Hunter (Jaelyne Evensong, Zul'tore)
|
||||
SPELL_DISENGAGE = 68339,
|
||||
SPELL_LIGHTNING_ARROWS = 66083,
|
||||
SPELL_MULTI_SHOT = 66081,
|
||||
SPELL_SHOOT_N = 65868,
|
||||
SPELL_SHOOT_H = 67988,
|
||||
SPELL_SHOOT = 65868,
|
||||
|
||||
// Rogue (Lana Stouthammer Evensong, Deathstalker Visceri)
|
||||
SPELL_EVISCERATE_N = 67709,
|
||||
SPELL_EVISCERATE_H = 68317,
|
||||
SPELL_EVISCERATE = 67709,
|
||||
SPELL_FAN_OF_KNIVES = 67706,
|
||||
SPELL_POISON_BOTTLE = 67701,
|
||||
|
||||
// Warrior (Marshal Jacob Alerius, Mokra the Skullcrusher)
|
||||
SPELL_MORTAL_STRIKE_N = 68783,
|
||||
SPELL_MORTAL_STRIKE_H = 68784,
|
||||
SPELL_MORTAL_STRIKE = 68783,
|
||||
SPELL_BLADESTORM = 63784,
|
||||
SPELL_INTERCEPT = 67540,
|
||||
SPELL_ROLLING_THROW = 67546, // not implemented yet!
|
||||
@ -98,15 +90,6 @@ enum Texts
|
||||
SAY_TRAMPLED = 0,
|
||||
};
|
||||
|
||||
#define SPELL_FIREBALL DUNGEON_MODE(SPELL_FIREBALL_N, SPELL_FIREBALL_H)
|
||||
#define SPELL_BLAST_WAVE DUNGEON_MODE(SPELL_BLAST_WAVE_N, SPELL_BLAST_WAVE_H)
|
||||
#define SPELL_POLYMORPH DUNGEON_MODE(SPELL_POLYMORPH_N, SPELL_POLYMORPH_H)
|
||||
#define SPELL_CHAIN_LIGHTNING DUNGEON_MODE(SPELL_CHAIN_LIGHTNING_N, SPELL_CHAIN_LIGHTNING_H)
|
||||
#define SPELL_HEALING_WAVE DUNGEON_MODE(SPELL_HEALING_WAVE_N, SPELL_HEALING_WAVE_H)
|
||||
#define SPELL_SHOOT DUNGEON_MODE(SPELL_SHOOT_N, SPELL_SHOOT_H)
|
||||
#define SPELL_EVISCERATE DUNGEON_MODE(SPELL_EVISCERATE_N, SPELL_EVISCERATE_H)
|
||||
#define SPELL_MORTAL_STRIKE DUNGEON_MODE(SPELL_MORTAL_STRIKE_N, SPELL_MORTAL_STRIKE_H)
|
||||
|
||||
enum MountEvents
|
||||
{
|
||||
EVENT_NONE = 0,
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "halls_of_reflection.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellMgr.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
@ -44,7 +45,7 @@ enum Events
|
||||
EVENT_UNROOT,
|
||||
};
|
||||
|
||||
const uint32 hopelessnessId[3][2] = { {72395, 72390}, {72396, 72391}, {72397, 72393} };
|
||||
const uint32 hopelessnessId[3] = { 72395, 72396, 72397 };
|
||||
|
||||
class boss_falric : public CreatureScript
|
||||
{
|
||||
@ -143,8 +144,9 @@ public:
|
||||
if ((uiHopelessnessCount == 0 && HealthBelowPct(67)) || (uiHopelessnessCount == 1 && HealthBelowPct(34)) || (uiHopelessnessCount == 2 && HealthBelowPct(11)))
|
||||
{
|
||||
if (uiHopelessnessCount)
|
||||
me->RemoveOwnedAura(hopelessnessId[uiHopelessnessCount - 1][DUNGEON_MODE(0, 1)]);
|
||||
me->CastSpell((Unit*)nullptr, hopelessnessId[uiHopelessnessCount][DUNGEON_MODE(0, 1)], true);
|
||||
me->RemoveOwnedAura(sSpellMgr->GetSpellIdForDifficulty(hopelessnessId[uiHopelessnessCount - 1], me));
|
||||
|
||||
me->CastSpell((Unit*)nullptr, hopelessnessId[uiHopelessnessCount], true);
|
||||
++uiHopelessnessCount;
|
||||
}
|
||||
|
||||
|
||||
@ -1200,16 +1200,16 @@ public:
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_OUTRO_2 : SAY_SYLVANAS_OUTRO_2);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
if (me->GetEntry() == NPC_JAINA_PART2)
|
||||
{
|
||||
Talk(SAY_JAINA_OUTRO_3);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
if (GameObject* g = me->FindNearestGameObject(GO_HOR_PORTCULLIS, 50.0f))
|
||||
g->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
@ -57,10 +57,8 @@ enum MovementInformPoints
|
||||
enum MalygosSpells
|
||||
{
|
||||
SPELL_BERSERK = 64238,
|
||||
SPELL_ARCANE_BREATH_N = 56272,
|
||||
SPELL_ARCANE_BREATH_H = 60072,
|
||||
SPELL_ARCANE_STORM_N = 61693,
|
||||
SPELL_ARCANE_STORM_H = 61694,
|
||||
SPELL_ARCANE_BREATH = 56272,
|
||||
SPELL_ARCANE_STORM = 61693,
|
||||
|
||||
SPELL_VORTEX_VISUAL = 55873,
|
||||
SPELL_VORTEX_CONTROL_VEHICLE = 56263,
|
||||
@ -80,8 +78,7 @@ enum MalygosSpells
|
||||
SPELL_DESTROY_PLATFORM_VISUAL = 59084,
|
||||
|
||||
SPELL_ARCANE_PULSE = 57432,
|
||||
SPELL_PH3_SURGE_OF_POWER_N = 57407,
|
||||
SPELL_PH3_SURGE_OF_POWER_H = 60936,
|
||||
SPELL_PH3_SURGE_OF_POWER = 57407,
|
||||
|
||||
SPELL_STATIC_FIELD_MAIN = 57430,
|
||||
SPELL_STATIC_FIELD_SUMMON = 57431,
|
||||
@ -89,10 +86,6 @@ enum MalygosSpells
|
||||
SPELL_STATIC_FIELD_DAMAGE = 57429,
|
||||
};
|
||||
|
||||
#define SPELL_ARCANE_BREATH DUNGEON_MODE(SPELL_ARCANE_BREATH_N, SPELL_ARCANE_BREATH_H)
|
||||
#define SPELL_ARCANE_STORM DUNGEON_MODE(SPELL_ARCANE_STORM_N, SPELL_ARCANE_STORM_H)
|
||||
#define SPELL_PH3_SURGE_OF_POWER DUNGEON_MODE(SPELL_PH3_SURGE_OF_POWER_N, SPELL_PH3_SURGE_OF_POWER_H)
|
||||
|
||||
enum MalygosEvents
|
||||
{
|
||||
EVENT_INTRO_MOVE_CENTER = 1,
|
||||
|
||||
@ -71,15 +71,12 @@ enum eSpells
|
||||
SPELL_TELEPORT_VISUAL = 52096,
|
||||
|
||||
SPELL_SCION_ARCANE_BARRAGE = 56397,
|
||||
SPELL_ARCANE_SHOCK_N = 57058,
|
||||
SPELL_ARCANE_SHOCK_H = 60073,
|
||||
SPELL_ARCANE_SHOCK = 57058,
|
||||
SPELL_HASTE = 57060,
|
||||
|
||||
SPELL_ALEXSTRASZA_GIFT = 61028,
|
||||
};
|
||||
|
||||
#define SPELL_ARCANE_SHOCK DUNGEON_MODE(SPELL_ARCANE_SHOCK_N, SPELL_ARCANE_SHOCK_H)
|
||||
|
||||
enum eAchiev
|
||||
{
|
||||
ACHIEV_CRITERIA_DENYIN_THE_SCION_10 = 7573,
|
||||
|
||||
@ -22,8 +22,7 @@
|
||||
enum Spells
|
||||
{
|
||||
SPELL_MAGIC_PULL = 51336,
|
||||
SPELL_THUNDERING_STOMP_N = 50774,
|
||||
SPELL_THUNDERING_STOMP_H = 59370,
|
||||
SPELL_THUNDERING_STOMP = 50774,
|
||||
|
||||
SPELL_UNSTABLE_SPHERE_PASSIVE = 50756,
|
||||
SPELL_UNSTABLE_SPHERE_PULSE = 50757,
|
||||
@ -44,8 +43,6 @@ enum Events
|
||||
EVENT_SUMMON_x4 = 4,
|
||||
};
|
||||
|
||||
#define SPELL_THUNDERING_STOMP DUNGEON_MODE(SPELL_THUNDERING_STOMP_N, SPELL_THUNDERING_STOMP_H)
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = 0,
|
||||
|
||||
@ -22,10 +22,8 @@
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_ARCANE_BARRAGE_N = 50804,
|
||||
SPELL_ARCANE_BARRAGE_H = 59381,
|
||||
SPELL_ARCANE_VOLLEY_N = 51153,
|
||||
SPELL_ARCANE_VOLLEY_H = 59382,
|
||||
SPELL_ARCANE_BARRAGE = 50804,
|
||||
SPELL_ARCANE_VOLLEY = 51153,
|
||||
SPELL_ENRAGED_ASSAULT = 51170,
|
||||
SPELL_PLANAR_ANOMALIES = 57959,
|
||||
SPELL_PLANAR_SHIFT = 51162,
|
||||
@ -38,9 +36,6 @@ enum Spells
|
||||
SPELL_DRAKE_STOP_TIME = 49838,
|
||||
};
|
||||
|
||||
#define SPELL_ARCANE_BARRAGE DUNGEON_MODE(SPELL_ARCANE_BARRAGE_N, SPELL_ARCANE_BARRAGE_H)
|
||||
#define SPELL_ARCANE_VOLLEY DUNGEON_MODE(SPELL_ARCANE_VOLLEY_N, SPELL_ARCANE_VOLLEY_H)
|
||||
|
||||
enum VarosNPCs
|
||||
{
|
||||
NPC_LEY_GUARDIAN_WHELP = 28276,
|
||||
|
||||
@ -29,15 +29,10 @@ enum Spells
|
||||
SPELL_TELEPORT = 51112,
|
||||
|
||||
SPELL_FROSTBOMB = 51103,
|
||||
SPELL_TIME_BOMB_N = 51121,
|
||||
SPELL_TIME_BOMB_H = 59376,
|
||||
SPELL_EMPOWERED_ARCANE_EXPLOSION_N = 51110,
|
||||
SPELL_EMPOWERED_ARCANE_EXPLOSION_H = 59377,
|
||||
SPELL_TIME_BOMB = 51121,
|
||||
SPELL_EMPOWERED_ARCANE_EXPLOSION = 51110,
|
||||
};
|
||||
|
||||
#define SPELL_EMPOWERED_ARCANE_EXPLOSION DUNGEON_MODE(SPELL_EMPOWERED_ARCANE_EXPLOSION_N, SPELL_EMPOWERED_ARCANE_EXPLOSION_H)
|
||||
//#define SPELL_TIME_BOMB DUNGEON_MODE(SPELL_TIME_BOMB_N, SPELL_TIME_BOMB_H)
|
||||
|
||||
enum UromNPCs
|
||||
{
|
||||
NPC_PHANTASMAL_CLOUDSCRAPER = 27645,
|
||||
@ -298,7 +293,7 @@ public:
|
||||
|
||||
//At this point we are still in casting state so we need to clear it for DoCastAOE not to fail
|
||||
me->ClearUnitState(UNIT_STATE_CASTING);
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_EMPOWERED_ARCANE_EXPLOSION_N, SPELL_EMPOWERED_ARCANE_EXPLOSION_H));
|
||||
DoCastAOE(SPELL_EMPOWERED_ARCANE_EXPLOSION);
|
||||
me->AddUnitState(UNIT_STATE_CASTING);
|
||||
events.RescheduleEvent(EVENT_TELE_BACK, DUNGEON_MODE(9s, 7s));
|
||||
default:
|
||||
@ -347,7 +342,7 @@ public:
|
||||
break;
|
||||
case EVENT_TIME_BOMB:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
|
||||
DoCast(target, DUNGEON_MODE(SPELL_TIME_BOMB_N, SPELL_TIME_BOMB_H));
|
||||
DoCast(target, SPELL_TIME_BOMB);
|
||||
events.Repeat(20s, 25s);
|
||||
break;
|
||||
case EVENT_TELEPORT_TO_CENTER:
|
||||
|
||||
@ -23,13 +23,10 @@ enum Spells
|
||||
{
|
||||
SPELL_CORE_AURA_PASSIVE = 50798,
|
||||
|
||||
SPELL_AMPLIFY_MAGIC_N = 51054,
|
||||
SPELL_AMPLIFY_MAGIC_H = 59371,
|
||||
SPELL_AMPLIFY_MAGIC = 51054,
|
||||
|
||||
SPELL_ENERGIZE_CORES_N = 50785,
|
||||
SPELL_ENERGIZE_CORES_H = 59372,
|
||||
SPELL_ENERGIZE_CORES_THIN_N = 61407,
|
||||
SPELL_ENERGIZE_CORES_THIN_H = 62136,
|
||||
SPELL_ENERGIZE_CORES = 50785,
|
||||
SPELL_ENERGIZE_CORES_THIN = 61407,
|
||||
SPELL_ENERGIZE_CORES_TRIGGER_1 = 54069,
|
||||
SPELL_ENERGIZE_CORES_TRIGGER_2 = 56251,
|
||||
|
||||
@ -63,10 +60,6 @@ enum Events
|
||||
EVENT_ENERGIZE_CORES_DAMAGE = 7,
|
||||
};
|
||||
|
||||
#define SPELL_AMPLIFY_MAGIC DUNGEON_MODE(SPELL_AMPLIFY_MAGIC_N, SPELL_AMPLIFY_MAGIC_H)
|
||||
#define SPELL_ENERGIZE_CORES DUNGEON_MODE(SPELL_ENERGIZE_CORES_N, SPELL_ENERGIZE_CORES_H)
|
||||
#define SPELL_ENERGIZE_CORES_THIN DUNGEON_MODE(SPELL_ENERGIZE_CORES_THIN_N, SPELL_ENERGIZE_CORES_THIN_H)
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_AGGRO = 0,
|
||||
|
||||
@ -38,7 +38,6 @@ enum Drakes
|
||||
|
||||
// Centrifuge Constructs
|
||||
SPELL_EMPOWERING_BLOWS = 50044,
|
||||
H_SPELL_EMPOWERING_BLOWS = 59213,
|
||||
|
||||
SPELL_AMBER_SHOCK_CHARGE = 49836,
|
||||
SPELL_RUBY_EVASIVE_CHARGES = 50241,
|
||||
@ -490,7 +489,7 @@ public:
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
DoCast(IsHeroic() ? H_SPELL_EMPOWERING_BLOWS : SPELL_EMPOWERING_BLOWS);
|
||||
DoCast(SPELL_EMPOWERING_BLOWS);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/) override
|
||||
|
||||
@ -49,8 +49,7 @@ enum BjarngrimSpells
|
||||
|
||||
// STORMFORGED LIEUTENANT
|
||||
SPELL_ARC_WELD = 59085,
|
||||
SPELL_RENEW_STEEL_N = 52774,
|
||||
SPELL_RENEW_STEEL_H = 59160,
|
||||
SPELL_RENEW_STEEL = 52774,
|
||||
};
|
||||
|
||||
enum BjarngrimOther
|
||||
@ -395,7 +394,7 @@ struct npc_stormforged_lieutenant : public ScriptedAI
|
||||
case EVENT_RENEW_STEEL:
|
||||
if (Creature* bjarngrim = ObjectAccessor::GetCreature(*me, BjarngrimGUID))
|
||||
if (bjarngrim->IsAlive())
|
||||
me->CastSpell(bjarngrim, me->GetMap()->IsHeroic() ? SPELL_RENEW_STEEL_H : SPELL_RENEW_STEEL_N, true);
|
||||
me->CastSpell(bjarngrim, SPELL_RENEW_STEEL, true);
|
||||
|
||||
events.Repeat(10s, 14s);
|
||||
break;
|
||||
|
||||
@ -25,13 +25,11 @@
|
||||
enum LokenSpells
|
||||
{
|
||||
SPELL_ARC_LIGHTNING = 52921,
|
||||
SPELL_LIGHTNING_NOVA_N = 52960,
|
||||
SPELL_LIGHTNING_NOVA_H = 59835,
|
||||
SPELL_LIGHTNING_NOVA = 52960,
|
||||
SPELL_LIGHTNING_NOVA_VISUAL = 56502,
|
||||
SPELL_LIGHTNING_NOVA_THUNDERS = 52663,
|
||||
|
||||
SPELL_PULSING_SHOCKWAVE_N = 52961,
|
||||
SPELL_PULSING_SHOCKWAVE_H = 59836,
|
||||
SPELL_PULSING_SHOCKWAVE = 52961,
|
||||
|
||||
// Achievement
|
||||
ACHIEVEMENT_TIMELY_DEATH = 20384
|
||||
@ -146,10 +144,10 @@ struct boss_loken : public BossAI
|
||||
events.DelayEvents(5s);
|
||||
events.ScheduleEvent(EVENT_AURA_REMOVE, me->GetMap()->IsHeroic() ? 4s : 5s);
|
||||
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_LIGHTNING_NOVA_H : SPELL_LIGHTNING_NOVA_N, false);
|
||||
me->CastSpell(me, SPELL_LIGHTNING_NOVA, false);
|
||||
break;
|
||||
case EVENT_SHOCKWAVE:
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_PULSING_SHOCKWAVE_H : SPELL_PULSING_SHOCKWAVE_N, false);
|
||||
me->CastSpell(me, SPELL_PULSING_SHOCKWAVE, false);
|
||||
break;
|
||||
case EVENT_ARC_LIGHTNING:
|
||||
if (Unit* target = SelectTargetFromPlayerList(100, SPELL_ARC_LIGHTNING))
|
||||
|
||||
@ -23,19 +23,15 @@
|
||||
enum VolkahnSpells
|
||||
{
|
||||
// Volkhan
|
||||
SPELL_HEAT_N = 52387,
|
||||
SPELL_HEAT_H = 59528,
|
||||
SPELL_SHATTERING_STOMP_N = 52237,
|
||||
SPELL_SHATTERING_STOMP_H = 59529,
|
||||
SPELL_HEAT = 52387,
|
||||
SPELL_SHATTERING_STOMP = 52237,
|
||||
SPELL_TEMPER = 52238,
|
||||
SPELL_SUMMON_MOLTEN_GOLEM = 52405,
|
||||
|
||||
//Molten Golem
|
||||
SPELL_BLAST_WAVE = 23113,
|
||||
SPELL_IMMOLATION_STRIKE_N = 52433,
|
||||
SPELL_IMMOLATION_STRIKE_H = 59530,
|
||||
SPELL_SHATTER_N = 52429,
|
||||
SPELL_SHATTER_H = 59527,
|
||||
SPELL_IMMOLATION_STRIKE = 52433,
|
||||
SPELL_SHATTER = 52429,
|
||||
};
|
||||
|
||||
enum VolkhanOther
|
||||
@ -252,7 +248,7 @@ struct boss_volkhan : public BossAI
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_HEAT:
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_HEAT_H : SPELL_HEAT_N, true);
|
||||
me->CastSpell(me, SPELL_HEAT, true);
|
||||
events.Repeat(8s);
|
||||
break;
|
||||
case EVENT_CHECK_HEALTH:
|
||||
@ -337,7 +333,7 @@ struct npc_molten_golem : public ScriptedAI
|
||||
if (Creature* volkhan = m_pInstance->GetCreature(DATA_VOLKHAN))
|
||||
volkhan->AI()->DoAction(ACTION_DESTROYED);
|
||||
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_SHATTER_H : SPELL_SHATTER_N, true);
|
||||
me->CastSpell(me, SPELL_SHATTER, true);
|
||||
me->DespawnOrUnsummon(500ms);
|
||||
}
|
||||
}
|
||||
@ -360,7 +356,7 @@ struct npc_molten_golem : public ScriptedAI
|
||||
events.Repeat(14s);
|
||||
break;
|
||||
case EVENT_IMMOLATION:
|
||||
me->CastSpell(me->GetVictim(), me->GetMap()->IsHeroic() ? SPELL_IMMOLATION_STRIKE_H : SPELL_IMMOLATION_STRIKE_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_IMMOLATION_STRIKE, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -24,16 +24,13 @@
|
||||
|
||||
enum spells
|
||||
{
|
||||
GROUND_SPIKE_H = 59750,
|
||||
BOULDER_TOSS = 50843,
|
||||
BOULDER_TOSS_H = 59742,
|
||||
SHATTER = 50810,
|
||||
SHATTER_H = 61546,
|
||||
STOMP = 50868,
|
||||
STOMP_H = 59744,
|
||||
GROUND_SLAM = 50827,
|
||||
GROUND_SLAM_STONED_EFFECT = 50812,
|
||||
SPELL_SHATTER_EFFECT = 50811,
|
||||
SPELL_GROUND_SPIKE = 59750,
|
||||
SPELL_BOULDER_TOSS = 50843,
|
||||
SPELL_SHATTER = 50810,
|
||||
SPELL_STOMP = 50868,
|
||||
SPELL_GROUND_SLAM = 50827,
|
||||
SPELL_GROUND_SLAM_STONED_EFFECT = 50812,
|
||||
SPELL_SHATTER_EFFECT = 50811,
|
||||
};
|
||||
|
||||
enum events
|
||||
@ -105,7 +102,7 @@ public:
|
||||
Map::PlayerList const& players = map->GetPlayers();
|
||||
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
if (itr->GetSource()->IsAlive())
|
||||
itr->GetSource()->RemoveAura(GROUND_SLAM_STONED_EFFECT);
|
||||
itr->GetSource()->RemoveAura(SPELL_GROUND_SLAM_STONED_EFFECT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,34 +121,34 @@ public:
|
||||
case EVENT_BOULDER:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
|
||||
me->CastSpell(target, DUNGEON_MODE(BOULDER_TOSS, BOULDER_TOSS_H), false);
|
||||
me->CastSpell(target, SPELL_BOULDER_TOSS, false);
|
||||
|
||||
events.Repeat(5s, 7s);
|
||||
break;
|
||||
}
|
||||
case EVENT_GROUND_SPIKE:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), GROUND_SPIKE_H, false); // current enemy target
|
||||
me->CastSpell(me->GetVictim(), SPELL_GROUND_SPIKE, false); // current enemy target
|
||||
events.Repeat(8s, 11s);
|
||||
break;
|
||||
}
|
||||
case EVENT_STOMP:
|
||||
{
|
||||
me->CastSpell(me, DUNGEON_MODE(STOMP, STOMP_H), false);
|
||||
me->CastSpell(me, SPELL_STOMP, false);
|
||||
events.Repeat(13s, 18s);
|
||||
break;
|
||||
}
|
||||
case EVENT_GROUND_SLAM:
|
||||
{
|
||||
events.Repeat(10s, 13s);
|
||||
me->CastSpell(me->GetVictim(), GROUND_SLAM, true);
|
||||
me->CastSpell(me->GetVictim(), SPELL_GROUND_SLAM, true);
|
||||
events.DelayEvents(10s);
|
||||
events.RescheduleEvent(EVENT_SHATTER, 8s);
|
||||
break;
|
||||
}
|
||||
case EVENT_SHATTER:
|
||||
{
|
||||
me->CastSpell((Unit*)nullptr, DUNGEON_MODE(SHATTER, SHATTER_H), false);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SHATTER, false);
|
||||
Talk(SAY_SHATTER);
|
||||
events.RescheduleEvent(EVENT_REMOVE_STONED, 1500ms);
|
||||
break;
|
||||
@ -193,7 +190,7 @@ class spell_krystallus_shatter : public SpellScript
|
||||
{
|
||||
if (Unit* target = GetHitUnit())
|
||||
{
|
||||
target->RemoveAurasDueToSpell(GROUND_SLAM_STONED_EFFECT);
|
||||
target->RemoveAurasDueToSpell(SPELL_GROUND_SLAM_STONED_EFFECT);
|
||||
target->CastSpell((Unit*)nullptr, SPELL_SHATTER_EFFECT, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,13 +21,10 @@
|
||||
|
||||
enum spells
|
||||
{
|
||||
PARTING_SORROW = 59723,
|
||||
PILLAR_OF_WOE = 50761,
|
||||
PILLAR_OF_WOE_H = 59727,
|
||||
SHOCK_OF_SORROW = 50760,
|
||||
SHOCK_OF_SORROW_H = 59726,
|
||||
STORM_OF_GRIEF = 50752,
|
||||
STORM_OF_GRIEF_H = 59772,
|
||||
SPELL_PARTING_SORROW = 59723,
|
||||
SPELL_PILLAR_OF_WOE = 50761,
|
||||
SPELL_SHOCK_OF_SORROW = 50760,
|
||||
SPELL_STORM_OF_GRIEF = 50752,
|
||||
|
||||
ACHIEVEMENT_GOOD_GRIEF = 20383,
|
||||
};
|
||||
@ -107,13 +104,13 @@ public:
|
||||
{
|
||||
case EVENT_STORM:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), DUNGEON_MODE(STORM_OF_GRIEF, STORM_OF_GRIEF_H), true);
|
||||
me->CastSpell(me->GetVictim(), SPELL_STORM_OF_GRIEF, true);
|
||||
events.Repeat(10s);
|
||||
break;
|
||||
}
|
||||
case EVENT_SHOCK:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), DUNGEON_MODE(SHOCK_OF_SORROW, SHOCK_OF_SORROW_H), false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHOCK_OF_SORROW, false);
|
||||
Talk(SAY_STUN);
|
||||
|
||||
events.Repeat(16s, 22s);
|
||||
@ -122,7 +119,7 @@ public:
|
||||
case EVENT_PILLAR:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
|
||||
me->CastSpell(target, DUNGEON_MODE(PILLAR_OF_WOE, PILLAR_OF_WOE_H), false);
|
||||
me->CastSpell(target, SPELL_PILLAR_OF_WOE, false);
|
||||
|
||||
events.Repeat(12s, 20s);
|
||||
break;
|
||||
@ -130,7 +127,7 @@ public:
|
||||
case EVENT_PARTING:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
|
||||
me->CastSpell(target, PARTING_SORROW, false);
|
||||
me->CastSpell(target, SPELL_PARTING_SORROW, false);
|
||||
|
||||
events.Repeat(6s, 16s);
|
||||
break;
|
||||
|
||||
@ -25,25 +25,18 @@ enum Spells
|
||||
// SJONNIR
|
||||
SPELL_FRENZY = 28747, //at 20% hp
|
||||
SPELL_CHAIN_LIGHTNING = 50830,
|
||||
SPELL_CHAIN_LIGHTNING_H = 59844,
|
||||
SPELL_LIGHTNING_SHIELD = 50831,
|
||||
SPELL_LIGHTNING_SHIELD_H = 59845,
|
||||
SPELL_STATIC_CHARGE = 50834,
|
||||
SPELL_STATIC_CHARGE_H = 59846,
|
||||
SPELL_LIGHTNING_RING = 50840,
|
||||
SPELL_LIGHTNING_RING_H = 59848,
|
||||
|
||||
// IRON SLUDGE
|
||||
SPELL_TOXIC_VOLLEY = 50838,
|
||||
SPELL_TOXIC_VOLLEY_H = 59853,
|
||||
|
||||
// FORGED IRON DWARF
|
||||
SPELL_LIGHTNING_TETHER = 50895,
|
||||
SPELL_LIGHTNING_TETHER_H = 59851,
|
||||
|
||||
// FORGED IRON TROGG
|
||||
SPELL_LIGHTNING_SHOCK = 50900,
|
||||
SPELL_LIGHTNING_SHOCK_H = 59852,
|
||||
};
|
||||
|
||||
enum Npc
|
||||
@ -241,14 +234,14 @@ public:
|
||||
}
|
||||
case EVENT_SHIELD:
|
||||
{
|
||||
me->CastSpell(me, DUNGEON_MODE(SPELL_LIGHTNING_SHIELD, SPELL_LIGHTNING_SHIELD_H), false);
|
||||
me->CastSpell(me, SPELL_LIGHTNING_SHIELD, false);
|
||||
events.Repeat(14s, 19s);
|
||||
break;
|
||||
}
|
||||
case EVENT_CHAIN_LIGHTNING:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_CHAIN_LIGHTNING, SPELL_CHAIN_LIGHTNING_H), false);
|
||||
me->CastSpell(target, SPELL_CHAIN_LIGHTNING, false);
|
||||
|
||||
events.Repeat(6s, 12s);
|
||||
break;
|
||||
@ -256,14 +249,14 @@ public:
|
||||
case EVENT_STATIC_CHARGE:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0))
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_STATIC_CHARGE, SPELL_STATIC_CHARGE_H), false);
|
||||
me->CastSpell(target, SPELL_STATIC_CHARGE, false);
|
||||
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
}
|
||||
case EVENT_LIGHTNING_RING:
|
||||
{
|
||||
me->CastSpell(me, DUNGEON_MODE(SPELL_LIGHTNING_RING, SPELL_LIGHTNING_RING_H), false);
|
||||
me->CastSpell(me, SPELL_LIGHTNING_RING, false);
|
||||
events.Repeat(25s, 31s);
|
||||
events.DelayEvents(10s); // Channel duration
|
||||
break;
|
||||
@ -399,7 +392,7 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoSpellAttackIfReady((me->GetEntry() == NPC_FORGED_IRON_DWARF) ? DUNGEON_MODE(SPELL_LIGHTNING_TETHER, SPELL_LIGHTNING_TETHER_H) : DUNGEON_MODE(SPELL_LIGHTNING_SHOCK, SPELL_LIGHTNING_SHOCK_H));
|
||||
DoSpellAttackIfReady((me->GetEntry() == NPC_FORGED_IRON_DWARF) ? SPELL_LIGHTNING_TETHER : SPELL_LIGHTNING_SHOCK);
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -448,7 +441,7 @@ public:
|
||||
// Every 5 seconds
|
||||
case EVENT_TOXIC_VOLLEY:
|
||||
{
|
||||
me->CastSpell(me, DUNGEON_MODE(SPELL_TOXIC_VOLLEY, SPELL_TOXIC_VOLLEY_H), false);
|
||||
me->CastSpell(me, SPELL_TOXIC_VOLLEY, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -48,13 +48,10 @@ enum Misc
|
||||
{
|
||||
// BRANN EVENT
|
||||
SPELL_GLARE_OF_THE_TRIBUNAL = 50988,
|
||||
SPELL_GLARE_OF_THE_TRIBUNAL_H = 59870,
|
||||
SPELL_DARK_MATTER_VISUAL = 51000,
|
||||
SPELL_DARK_MATTER_VISUAL_CHANNEL= 51001,
|
||||
SPELL_DARK_MATTER = 51012,
|
||||
SPELL_DARK_MATTER_H = 59868,
|
||||
SPELL_SEARING_GAZE = 51136,
|
||||
SPELL_SEARING_GAZE_H = 59867,
|
||||
|
||||
// DARK RUNE PROTECTOR
|
||||
SPELL_DRP_CHARGE = 22120,
|
||||
@ -62,14 +59,11 @@ enum Misc
|
||||
|
||||
// DARK RUNE STORMCALLER
|
||||
SPELL_DRS_LIGHTING_BOLT = 12167,
|
||||
SPELL_DRS_LIGHTING_BOLT_H = 59863,
|
||||
SPELL_DRS_SHADOW_WORD_PAIN = 15654,
|
||||
SPELL_DRS_SHADOW_WORD_PAIN_H = 59864,
|
||||
|
||||
// IRON GOLEM CUSTODIAN
|
||||
SPELL_IGC_CRUSH_ARMOR = 33661,
|
||||
SPELL_IGC_GROUND_SMASH = 12734,
|
||||
SPELL_IGC_GROUND_SMASH_H = 59865,
|
||||
|
||||
// QUESTS
|
||||
QUEST_HALLS_OF_STONE = 13207,
|
||||
@ -505,7 +499,7 @@ public:
|
||||
if (Creature* kaddrak = GetKaddrak())
|
||||
{
|
||||
if (Player* plr = SelectTargetFromPlayerList(100.0f))
|
||||
kaddrak->CastSpell(plr, DUNGEON_MODE(SPELL_GLARE_OF_THE_TRIBUNAL, SPELL_GLARE_OF_THE_TRIBUNAL_H), true);
|
||||
kaddrak->CastSpell(plr, SPELL_GLARE_OF_THE_TRIBUNAL, true);
|
||||
}
|
||||
|
||||
events.RescheduleEvent(EVENT_KADDRAK_SWITCH_EYE, 1s);
|
||||
@ -593,7 +587,7 @@ public:
|
||||
{
|
||||
if (Creature* darkMatterTarget = ObjectAccessor::GetCreature(*me, darkMatterTargetGUID))
|
||||
{
|
||||
darkMatterTarget->CastSpell(darkMatterTarget, darkMatterTarget->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true);
|
||||
darkMatterTarget->CastSpell(darkMatterTarget, SPELL_DARK_MATTER, true);
|
||||
darkMatterTarget->DespawnOrUnsummon(500ms);
|
||||
}
|
||||
break;
|
||||
@ -612,7 +606,7 @@ public:
|
||||
{
|
||||
// summon another abedneum to create double beam, despawn just after trigger despawn
|
||||
me->SummonCreature(NPC_ABEDNEUM, 897.0f, 326.9f, 223.5f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000);
|
||||
cr->CastSpell(cr, DUNGEON_MODE(SPELL_SEARING_GAZE, SPELL_SEARING_GAZE_H), true);
|
||||
cr->CastSpell(cr, SPELL_SEARING_GAZE, true);
|
||||
}
|
||||
}
|
||||
events.Repeat(15s);
|
||||
@ -1062,13 +1056,13 @@ public:
|
||||
{
|
||||
case EVENT_DRS_LIGHTNING_BOLD:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_DRS_LIGHTING_BOLT_H : SPELL_DRS_LIGHTING_BOLT, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_DRS_LIGHTING_BOLT, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
case EVENT_DRS_SHADOW_WORD_PAIN:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_DRS_SHADOW_WORD_PAIN_H : SPELL_DRS_SHADOW_WORD_PAIN, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_DRS_SHADOW_WORD_PAIN, false);
|
||||
events.Repeat(12s);
|
||||
break;
|
||||
}
|
||||
@ -1122,7 +1116,7 @@ public:
|
||||
}
|
||||
case EVENT_IGC_GROUND_SMASH:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_IGC_GROUND_SMASH_H : SPELL_IGC_GROUND_SMASH, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_IGC_GROUND_SMASH, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
@ -1139,13 +1133,13 @@ class spell_hos_dark_matter : public AuraScript
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DARK_MATTER_H, SPELL_DARK_MATTER });
|
||||
return ValidateSpellInfo({ SPELL_DARK_MATTER });
|
||||
}
|
||||
|
||||
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
caster->CastSpell(caster, caster->GetMap()->IsHeroic() ? SPELL_DARK_MATTER_H : SPELL_DARK_MATTER, true);
|
||||
caster->CastSpell(caster, SPELL_DARK_MATTER, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@ -56,28 +56,17 @@ enum eSpells
|
||||
SPELL_RESURRECTION_HEAL = 42704,
|
||||
SPELL_INGVAR_TRANSFORM = 42796,
|
||||
|
||||
SPELL_STAGGERING_ROAR_N = 42708,
|
||||
SPELL_STAGGERING_ROAR_H = 59708,
|
||||
SPELL_STAGGERING_ROAR = 42708,
|
||||
SPELL_CLEAVE = 42724,
|
||||
SPELL_SMASH_N = 42669,
|
||||
SPELL_SMASH_H = 59706,
|
||||
SPELL_ENRAGE_N = 42705,
|
||||
SPELL_ENRAGE_H = 59707,
|
||||
SPELL_SMASH = 42669,
|
||||
SPELL_ENRAGE = 42705,
|
||||
|
||||
SPELL_DREADFUL_ROAR_N = 42729,
|
||||
SPELL_DREADFUL_ROAR_H = 59734,
|
||||
SPELL_WOE_STRIKE_N = 42730,
|
||||
SPELL_WOE_STRIKE_H = 59735,
|
||||
SPELL_DREADFUL_ROAR = 42729,
|
||||
SPELL_WOE_STRIKE = 42730,
|
||||
SPELL_DARK_SMASH = 42723,
|
||||
SPELL_SHADOW_AXE = 42749,
|
||||
};
|
||||
|
||||
#define SPELL_STAGGERING_ROAR DUNGEON_MODE(SPELL_STAGGERING_ROAR_N, SPELL_STAGGERING_ROAR_H)
|
||||
#define SPELL_DREADFUL_ROAR DUNGEON_MODE(SPELL_DREADFUL_ROAR_N, SPELL_DREADFUL_ROAR_H)
|
||||
#define SPELL_WOE_STRIKE DUNGEON_MODE(SPELL_WOE_STRIKE_N, SPELL_WOE_STRIKE_H)
|
||||
#define SPELL_SMASH DUNGEON_MODE(SPELL_SMASH_N, SPELL_SMASH_H)
|
||||
#define SPELL_ENRAGE DUNGEON_MODE(SPELL_ENRAGE_N, SPELL_ENRAGE_H)
|
||||
|
||||
enum eEvents
|
||||
{
|
||||
EVENT_START_RESURRECTION = 1,
|
||||
@ -307,9 +296,6 @@ struct boss_ingvar_the_plunderer : public ScriptedAI
|
||||
case EVENT_SPELL_ROAR:
|
||||
Talk(EMOTE_ROAR);
|
||||
|
||||
me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0);
|
||||
me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0);
|
||||
|
||||
if (me->GetDisplayId() == DISPLAYID_DEFAULT)
|
||||
me->CastSpell((Unit*)nullptr, SPELL_STAGGERING_ROAR, false);
|
||||
else
|
||||
|
||||
@ -45,12 +45,9 @@ enum eSpells
|
||||
SPELL_FROST_TOMB_SUMMON = 42714,
|
||||
SPELL_FROST_TOMB_AURA = 48400,
|
||||
|
||||
SPELL_SHADOWBOLT_N = 43667,
|
||||
SPELL_SHADOWBOLT_H = 59389,
|
||||
SPELL_SHADOWBOLT = 43667,
|
||||
};
|
||||
|
||||
#define SPELL_SHADOWBOLT DUNGEON_MODE(SPELL_SHADOWBOLT_N, SPELL_SHADOWBOLT_H)
|
||||
|
||||
struct npc_frost_tomb : public NullCreatureAI
|
||||
{
|
||||
npc_frost_tomb(Creature* c) : NullCreatureAI(c)
|
||||
|
||||
@ -44,8 +44,7 @@ enum eSpells
|
||||
SPELL_ENRAGE = 48193,
|
||||
SPELL_SUMMON_SKARVALD_GHOST = 48613,
|
||||
// Dalronn
|
||||
SPELL_SHADOW_BOLT_N = 43649,
|
||||
SPELL_SHADOW_BOLT_H = 59575,
|
||||
SPELL_SHADOW_BOLT = 43649,
|
||||
SPELL_DEBILITATE = 43650,
|
||||
SPELL_SUMMON_SKELETONS = 52611,
|
||||
SPELL_SUMMON_DALRONN_GHOST = 48612
|
||||
@ -353,7 +352,7 @@ struct boss_dalronn_the_controller : public ScriptedAI
|
||||
case EVENT_SHADOW_BOLT:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
{
|
||||
me->CastSpell(target, DUNGEON_MODE(SPELL_SHADOW_BOLT_N, SPELL_SHADOW_BOLT_H), false);
|
||||
me->CastSpell(target, SPELL_SHADOW_BOLT, false);
|
||||
}
|
||||
events.Repeat(2s);
|
||||
break;
|
||||
|
||||
@ -95,7 +95,7 @@ enum EnslavedProtoDrake
|
||||
SPELL_FLAME_BREATH = 50653,
|
||||
SPELL_KNOCK_AWAY = 49722,
|
||||
|
||||
POINT_LAST = 5,
|
||||
POINT_LAST = 6,
|
||||
};
|
||||
|
||||
const Position protodrakeCheckPos = {206.24f, -190.28f, 200.11f, 0.f};
|
||||
|
||||
@ -34,36 +34,28 @@ enum Misc
|
||||
|
||||
// PALEHOOF
|
||||
SPELL_ARCING_SMASH = 48260,
|
||||
SPELL_IMPALE_N = 48261,
|
||||
SPELL_IMPALE_H = 59268,
|
||||
SPELL_WITHERING_ROAR_N = 48256,
|
||||
SPELL_WITHERING_ROAR_H = 59267,
|
||||
SPELL_IMPALE = 48261,
|
||||
SPELL_WITHERING_ROAR = 48256,
|
||||
SPELL_FREEZE = 16245,
|
||||
|
||||
// Massive Jormungar
|
||||
SPELL_ACID_SPIT = 48132,
|
||||
SPELL_ACID_SPLATTER_N = 48136,
|
||||
SPELL_ACID_SPLATTER_H = 59272,
|
||||
SPELL_POISON_BREATH_N = 48133,
|
||||
SPELL_POISON_BREATH_H = 59271,
|
||||
SPELL_ACID_SPLATTER = 48136,
|
||||
SPELL_POISON_BREATH = 48133,
|
||||
NPC_JORMUNGAR_WORM = 27228,
|
||||
|
||||
// Ferocious Rhino
|
||||
SPELL_GORE_N = 48130,
|
||||
SPELL_GORE_H = 59264,
|
||||
SPELL_GRIEVOUS_WOUND_N = 48105,
|
||||
SPELL_GRIEVOUS_WOUND_H = 59263,
|
||||
SPELL_GORE = 48130,
|
||||
SPELL_GRIEVOUS_WOUND = 48105,
|
||||
SPELL_STOMP = 48131,
|
||||
|
||||
// Ravenous Furbolg
|
||||
SPELL_CHAIN_LIGHTING_N = 48140,
|
||||
SPELL_CHAIN_LIGHTING_H = 59273,
|
||||
SPELL_CHAIN_LIGHTNING = 48140,
|
||||
SPELL_CRAZED = 48139,
|
||||
SPELL_TERRIFYING_ROAR = 48144,
|
||||
|
||||
// Frenzied Worgen
|
||||
SPELL_MORTAL_WOUND_N = 48137,
|
||||
SPELL_MORTAL_WOUND_H = 59265,
|
||||
SPELL_MORTAL_WOUND = 48137,
|
||||
SPELL_ENRAGE_1 = 48138,
|
||||
SPELL_ENRAGE_2 = 48142,
|
||||
|
||||
@ -296,14 +288,14 @@ public:
|
||||
}
|
||||
case EVENT_PALEHOOF_WITHERING_ROAR:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WITHERING_ROAR_H : SPELL_WITHERING_ROAR_N, false);
|
||||
me->CastSpell(me, SPELL_WITHERING_ROAR, false);
|
||||
events.Repeat(8s, 12s);
|
||||
break;
|
||||
}
|
||||
case EVENT_PALEHOOF_IMPALE:
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_IMPALE_H : SPELL_IMPALE_N, false);
|
||||
me->CastSpell(tgt, SPELL_IMPALE, false);
|
||||
|
||||
events.Repeat(8s, 12s);
|
||||
break;
|
||||
@ -424,7 +416,7 @@ public:
|
||||
}
|
||||
case EVENT_JORMUNGAR_ACID_SPLATTER:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_ACID_SPLATTER_H : SPELL_ACID_SPLATTER_N, false);
|
||||
me->CastSpell(me, SPELL_ACID_SPLATTER, false);
|
||||
|
||||
// Aura summon wont work because of duration
|
||||
float x, y, z;
|
||||
@ -443,7 +435,7 @@ public:
|
||||
case EVENT_JORMUNGAR_POISON_BREATH:
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISON_BREATH_H : SPELL_POISON_BREATH_N, false);
|
||||
me->CastSpell(tgt, SPELL_POISON_BREATH, false);
|
||||
|
||||
events.Repeat(8s, 12s);
|
||||
break;
|
||||
@ -546,14 +538,14 @@ public:
|
||||
}
|
||||
case EVENT_RHINO_GORE:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_GORE_H : SPELL_GORE_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_GORE, false);
|
||||
events.Repeat(13s, 17s);
|
||||
break;
|
||||
}
|
||||
case EVENT_RHINO_WOUND:
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_GRIEVOUS_WOUND_H : SPELL_GRIEVOUS_WOUND_N, false);
|
||||
me->CastSpell(tgt, SPELL_GRIEVOUS_WOUND, false);
|
||||
|
||||
events.Repeat(18s, 22s);
|
||||
break;
|
||||
@ -650,7 +642,7 @@ public:
|
||||
{
|
||||
case EVENT_FURBOLG_CHAIN:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CHAIN_LIGHTING_H : SPELL_CHAIN_LIGHTING_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
|
||||
events.Repeat(4s, 7s);
|
||||
break;
|
||||
}
|
||||
@ -758,7 +750,7 @@ public:
|
||||
{
|
||||
case EVENT_WORGEN_MORTAL:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_MORTAL_WOUND_H : SPELL_MORTAL_WOUND_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
|
||||
events.Repeat(4s, 7s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -38,16 +38,12 @@ enum Misc
|
||||
EMOTE_RANGE = 1,
|
||||
|
||||
// SPELLS
|
||||
SPELL_CRUSH_N = 50234,
|
||||
SPELL_CRUSH_H = 59330,
|
||||
SPELL_POISONED_SPEAR_N = 50255,
|
||||
SPELL_POISONED_SPEAR_H = 59331,
|
||||
SPELL_WHIRLWIND_N = 50228,
|
||||
SPELL_WHIRLWIND_H = 50228,
|
||||
SPELL_CRUSH = 50234,
|
||||
SPELL_POISONED_SPEAR = 50255,
|
||||
SPELL_WHIRLWIND = 50228,
|
||||
|
||||
SPELL_FREEZING_CLOUD_VISUAL = 47592,
|
||||
SPELL_FREEZING_CLOUD_N = 47579,
|
||||
SPELL_FREEZING_CLOUD_H = 60020,
|
||||
SPELL_FREEZING_CLOUD = 47579,
|
||||
|
||||
SPELL_LAUNCH_HARPOON = 48642,
|
||||
|
||||
@ -219,21 +215,21 @@ public:
|
||||
}
|
||||
case EVENT_SKADI_CRUSH:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_CRUSH_H : SPELL_CRUSH_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_CRUSH, false);
|
||||
events.Repeat(8s);
|
||||
break;
|
||||
}
|
||||
case EVENT_SKADI_SPEAR:
|
||||
{
|
||||
if (Unit* tgt = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
me->CastSpell(tgt, IsHeroic() ? SPELL_POISONED_SPEAR_H : SPELL_POISONED_SPEAR_N, false);
|
||||
me->CastSpell(tgt, SPELL_POISONED_SPEAR, false);
|
||||
|
||||
events.Repeat(10s);
|
||||
break;
|
||||
}
|
||||
case EVENT_SKADI_WHIRLWIND:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_WHIRLWIND_H : SPELL_WHIRLWIND_N, false);
|
||||
me->CastSpell(me, SPELL_WHIRLWIND, false);
|
||||
events.Repeat(15s, 20s);
|
||||
events.DelayEvents(10s);
|
||||
break;
|
||||
@ -323,7 +319,7 @@ public:
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == 47593) // SPELL_FREEZING_CLOUD_VISUAL trigger
|
||||
target->CastSpell(target, me->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
|
||||
target->CastSpell(target, SPELL_FREEZING_CLOUD, true);
|
||||
}
|
||||
|
||||
void SpawnFlameTriggers(uint8 point)
|
||||
@ -340,13 +336,13 @@ public:
|
||||
{
|
||||
Creature* cr;
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 483, -484.9f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
|
||||
cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 471.0f, -484.7f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
|
||||
cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
|
||||
|
||||
for (uint8 j = 0; j < 7; j++)
|
||||
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 477.0f, -507.0f + (j * 3), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
|
||||
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FREEZING_CLOUD_H : SPELL_FREEZING_CLOUD_N, true);
|
||||
cr->CastSpell(cr, SPELL_FREEZING_CLOUD, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -47,8 +47,7 @@ enum Misc
|
||||
SPELL_BALL_OF_FLAME = 48246,
|
||||
SPELL_RITUAL_OF_THE_SWORD = 48276,
|
||||
SPELL_RITUAL_STRIKE = 48331,
|
||||
SPELL_SINSTER_STRIKE_N = 15667,
|
||||
SPELL_SINSTER_STRIKE_H = 59409,
|
||||
SPELL_SINISTER_STRIKE = 15667,
|
||||
EQUIP_SWORD = 40343,
|
||||
|
||||
// CHANNELERS
|
||||
@ -303,7 +302,7 @@ public:
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_SORROWGRAVE_SS:
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SINSTER_STRIKE_H : SPELL_SINSTER_STRIKE_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_SINISTER_STRIKE, false);
|
||||
events.ScheduleEvent(EVENT_SORROWGRAVE_SS, 3s, 5s);
|
||||
break;
|
||||
case EVENT_SORROWGRAVE_FLAMES:
|
||||
|
||||
@ -32,16 +32,12 @@ enum Misc
|
||||
SAY_SUMMON_TORGYN = 6,
|
||||
|
||||
// SPELLS
|
||||
SPELL_BANE_N = 48294,
|
||||
SPELL_BANE_H = 59301,
|
||||
SPELL_BANE = 48294,
|
||||
SPELL_DARK_SLASH = 48292,
|
||||
SPELL_FETID_ROT_N = 48291,
|
||||
SPELL_FETID_ROT_H = 59300,
|
||||
SPELL_FETID_ROT = 48291,
|
||||
SPELL_SCREAMS_OF_THE_DEAD = 51750,
|
||||
SPELL_SPIRIT_BURST_N = 48529, // when Ranulf
|
||||
SPELL_SPIRIT_BURST_H = 59305, // when Ranulf
|
||||
SPELL_SPIRIT_STRIKE_N = 48423, // when Haldor
|
||||
SPELL_SPIRIT_STRIKE_H = 59304, // when Haldor
|
||||
SPELL_SPIRIT_BURST = 48529, // when Ranulf
|
||||
SPELL_SPIRIT_STRIKE = 48423, // when Haldor
|
||||
|
||||
SPELL_SUMMON_AVENGING_SPIRIT = 48592,
|
||||
SPELL_SUMMON_SPIRIT_FOUNT = 48386,
|
||||
@ -49,8 +45,7 @@ enum Misc
|
||||
SPELL_CHANNEL_SPIRIT_TO_YMIRON = 48316,
|
||||
SPELL_CHANNEL_YMIRON_TO_SPIRIT = 48307,
|
||||
|
||||
SPELL_SPIRIT_FOUNT_N = 48380,
|
||||
SPELL_SPIRIT_FOUNT_H = 59320,
|
||||
SPELL_SPIRIT_FOUNT = 48380,
|
||||
|
||||
SPELL_FLAMES = 39199,
|
||||
|
||||
@ -242,13 +237,13 @@ public:
|
||||
}
|
||||
case EVENT_YMIRON_BANE:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_BANE_H : SPELL_BANE_N, false);
|
||||
me->CastSpell(me, SPELL_BANE, false);
|
||||
events.Repeat(20s, 25s);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_FETID_ROT:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_FETID_ROT_H : SPELL_FETID_ROT_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_FETID_ROT, false);
|
||||
events.Repeat(10s, 13s);
|
||||
break;
|
||||
}
|
||||
@ -297,7 +292,7 @@ public:
|
||||
{
|
||||
summons.Summon(sf);
|
||||
sf->SetSpeed(MOVE_RUN, 0.4f);
|
||||
sf->AddAura(IsHeroic() ? SPELL_SPIRIT_FOUNT_H : SPELL_SPIRIT_FOUNT_N, sf);
|
||||
sf->AddAura(SPELL_SPIRIT_FOUNT, sf);
|
||||
sf->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
sf->GetMotionMaster()->MoveFollow(me->GetVictim(), 0, rand_norm()*M_PI * 2, MOTION_SLOT_ACTIVE, false, false);
|
||||
}
|
||||
@ -305,13 +300,13 @@ public:
|
||||
}
|
||||
case EVENT_YMIRON_HALDOR_ABILITY:
|
||||
{
|
||||
me->CastSpell(me->GetVictim(), IsHeroic() ? SPELL_SPIRIT_STRIKE_H : SPELL_SPIRIT_STRIKE_N, false);
|
||||
me->CastSpell(me->GetVictim(), SPELL_SPIRIT_STRIKE, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
case EVENT_YMIRON_RANULF_ABILITY:
|
||||
{
|
||||
me->CastSpell(me, IsHeroic() ? SPELL_SPIRIT_BURST_H : SPELL_SPIRIT_BURST_N, false);
|
||||
me->CastSpell(me, SPELL_SPIRIT_BURST, false);
|
||||
events.Repeat(10s);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -422,73 +422,55 @@ struct violet_hold_trashAI : public npc_escortAI
|
||||
|
||||
enum AzureInvaderSpells
|
||||
{
|
||||
SPELL_CLEAVE = 15496,
|
||||
SPELL_IMPALE_N = 58459,
|
||||
SPELL_IMPALE_H = 59256,
|
||||
SPELL_CLEAVE = 15496,
|
||||
SPELL_IMPALE = 58459,
|
||||
SPELL_BRUTAL_STRIKE = 58460,
|
||||
SPELL_SUNDER_ARMOR = 58461,
|
||||
SPELL_SUNDER_ARMOR = 58461,
|
||||
};
|
||||
#define SPELL_IMPALE DUNGEON_MODE(SPELL_IMPALE_N, SPELL_IMPALE_H)
|
||||
|
||||
enum AzureSpellbreakerSpells
|
||||
{
|
||||
SPELL_ARCANE_BLAST_N = 58462,
|
||||
SPELL_ARCANE_BLAST_H = 59257,
|
||||
SPELL_SLOW = 25603,
|
||||
SPELL_ARCANE_BLAST = 58462,
|
||||
SPELL_SLOW = 25603,
|
||||
SPELL_CHAINS_OF_ICE = 58464,
|
||||
SPELL_CONE_OF_COLD_N = 58463,
|
||||
SPELL_CONE_OF_COLD_H = 59258
|
||||
SPELL_CONE_OF_COLD = 58463,
|
||||
};
|
||||
#define SPELL_ARCANE_BLAST DUNGEON_MODE(SPELL_ARCANE_BLAST_N, SPELL_ARCANE_BLAST_H)
|
||||
#define SPELL_CONE_OF_COLD DUNGEON_MODE(SPELL_CONE_OF_COLD_N, SPELL_CONE_OF_COLD_H)
|
||||
|
||||
enum AzureBinderSpells
|
||||
{
|
||||
SPELL_ARCANE_BARRAGE_N = 58456,
|
||||
SPELL_ARCANE_BARRAGE_H = 59248,
|
||||
SPELL_ARCANE_EXPLOSION_N = 58455,
|
||||
SPELL_ARCANE_EXPLOSION_H = 59245,
|
||||
SPELL_FROST_NOVA_N = 58458,
|
||||
SPELL_FROST_NOVA_H = 59253,
|
||||
SPELL_FROSTBOLT_N = 58457,
|
||||
SPELL_FROSTBOLT_H = 59251,
|
||||
SPELL_ARCANE_BARRAGE = 58456,
|
||||
SPELL_ARCANE_EXPLOSION = 58455,
|
||||
SPELL_FROST_NOVA = 58458,
|
||||
SPELL_FROSTBOLT = 58457,
|
||||
};
|
||||
#define SPELL_ARCANE_BARRAGE DUNGEON_MODE(SPELL_ARCANE_BARRAGE_N, SPELL_ARCANE_BARRAGE_H)
|
||||
#define SPELL_ARCANE_EXPLOSION DUNGEON_MODE(SPELL_ARCANE_EXPLOSION_N, SPELL_ARCANE_EXPLOSION_H)
|
||||
#define SPELL_FROST_NOVA DUNGEON_MODE(SPELL_FROST_NOVA_N, SPELL_FROST_NOVA_H)
|
||||
#define SPELL_FROSTBOLT DUNGEON_MODE(SPELL_FROSTBOLT_N, SPELL_FROSTBOLT_H)
|
||||
|
||||
enum AzureMageSlayerSpells
|
||||
{
|
||||
SPELL_ARCANE_EMPOWERMENT = 58469,
|
||||
SPELL_SPELL_LOCK = 30849
|
||||
SPELL_SPELL_LOCK = 30849
|
||||
};
|
||||
|
||||
enum AzureCaptainSpells
|
||||
{
|
||||
SPELL_MORTAL_STRIKE = 32736,
|
||||
SPELL_MORTAL_STRIKE = 32736,
|
||||
SPELL_WHIRLWIND_OF_STEEL = 41056
|
||||
};
|
||||
|
||||
enum AzureSorcerorSpells
|
||||
{
|
||||
SPELL_ARCANE_STREAM_N = 60181,
|
||||
SPELL_ARCANE_STREAM_H = 60204,
|
||||
SPELL_MANA_DETONATION_N = 60182,
|
||||
SPELL_MANA_DETONATION_H = 60205
|
||||
SPELL_ARCANE_STREAM = 60181,
|
||||
SPELL_MANA_DETONATION = 60182,
|
||||
};
|
||||
#define SPELL_ARCANE_STREAM DUNGEON_MODE(SPELL_ARCANE_STREAM_N, SPELL_ARCANE_STREAM_H)
|
||||
#define SPELL_MANA_DETONATION DUNGEON_MODE(SPELL_MANA_DETONATION_N, SPELL_MANA_DETONATION_H)
|
||||
|
||||
enum AzureRaiderSpells
|
||||
{
|
||||
SPELL_CONCUSSION_BLOW = 52719,
|
||||
SPELL_CONCUSSION_BLOW = 52719,
|
||||
SPELL_MAGIC_REFLECTION = 60158
|
||||
};
|
||||
|
||||
enum AzureStalkerSpells
|
||||
{
|
||||
SPELL_BACKSTAB = 58471,
|
||||
SPELL_BACKSTAB = 58471,
|
||||
SPELL_TACTICAL_BLINK = 58470
|
||||
};
|
||||
|
||||
|
||||
@ -1652,7 +1652,7 @@ public:
|
||||
|
||||
void MovementInform(uint32 type, uint32 param) override
|
||||
{
|
||||
if (type == WAYPOINT_MOTION_TYPE && param == 2)
|
||||
if (type == WAYPOINT_MOTION_TYPE && param == 3)
|
||||
{
|
||||
me->SetWalk(false);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||
@ -2024,7 +2024,7 @@ public:
|
||||
|
||||
void MovementInform(uint32 type, uint32 param) override
|
||||
{
|
||||
if (type == WAYPOINT_MOTION_TYPE && param == 2)
|
||||
if (type == WAYPOINT_MOTION_TYPE && param == 3)
|
||||
{
|
||||
if (me->IsSummon())
|
||||
{
|
||||
|
||||
@ -622,7 +622,7 @@ public:
|
||||
if (type != WAYPOINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
if (point == 8) // max-1
|
||||
if (point == 9)
|
||||
{
|
||||
Talk(0);
|
||||
me->RemoveAllAuras();
|
||||
|
||||
@ -904,7 +904,7 @@ struct npc_akama_illidan : public ScriptedAI
|
||||
else if (type == WAYPOINT_MOTION_TYPE)
|
||||
{
|
||||
if (me->GetCurrentWaypointID() == PATH_AKAMA_MINIONS)
|
||||
if (id == 2)
|
||||
if (id == 3)
|
||||
DoCastSelf(SPELL_AKAMA_TELEPORT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,8 +81,8 @@ enum Misc
|
||||
|
||||
enum WaterElementalPathIds
|
||||
{
|
||||
PATH_CENTER = 5,
|
||||
PATH_END = 12
|
||||
PATH_CENTER = 6,
|
||||
PATH_END = 13
|
||||
};
|
||||
|
||||
struct boss_hydross_the_unstable : public BossAI
|
||||
|
||||
@ -23,8 +23,7 @@ enum Spells
|
||||
{
|
||||
SPELL_ENSNARING_MOSS = 31948,
|
||||
SPELL_FRENZY = 34970,
|
||||
SPELL_GRIEVOUS_WOUND_N = 31956,
|
||||
SPELL_GRIEVOUS_WOUND_H = 38801,
|
||||
SPELL_GRIEVOUS_WOUND = 31956,
|
||||
SPELL_WATER_SPIT = 35008
|
||||
};
|
||||
|
||||
@ -53,7 +52,7 @@ struct boss_rokmar_the_crackler : public BossAI
|
||||
|
||||
scheduler.Schedule(8s, [this] (TaskContext context)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_GRIEVOUS_WOUND_N, SPELL_GRIEVOUS_WOUND_H));
|
||||
DoCastVictim(SPELL_GRIEVOUS_WOUND);
|
||||
context.Repeat(20700ms);
|
||||
}).Schedule(15300ms, [this](TaskContext context)
|
||||
{
|
||||
|
||||
@ -92,7 +92,7 @@ struct boss_ghazan : public BossAI
|
||||
|
||||
void MovementInform(uint32 type, uint32 pointId) override
|
||||
{
|
||||
if (!_movedToPlatform || type != WAYPOINT_MOTION_TYPE || pointId != 19)
|
||||
if (!_movedToPlatform || type != WAYPOINT_MOTION_TYPE || pointId != 20)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ enum Says
|
||||
|
||||
enum Misc
|
||||
{
|
||||
POINT_SCOUT_WP_END = 3,
|
||||
POINT_SCOUT_WP_END = 4,
|
||||
|
||||
SET_DATA_ARBITRARY_VALUE = 1,
|
||||
SET_DATA_ENCOUNTER_DONE = 2
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user