Merge branch 'master' into Fix-the-crash-2

This commit is contained in:
天鹭 2025-10-31 00:56:09 +08:00 committed by GitHub
commit 2701fb5c17
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
64 changed files with 506 additions and 471 deletions

View 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);

View 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");

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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())

View File

@ -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;

View File

@ -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 );

View File

@ -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
{

View File

@ -234,7 +234,7 @@ public:
{
switch (id)
{
case 5:
case 6:
events.ScheduleEvent(EVENT_TELEPORT_1, 2s);
break;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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
};

View File

@ -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)
{

View File

@ -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();

View File

@ -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;

View File

@ -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:

View File

@ -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;
}

View File

@ -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:

View File

@ -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;

View File

@ -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;

View File

@ -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,

View File

@ -70,7 +70,7 @@ enum Emotes
enum Points
{
POINT_AIR = 0,
POINT_GROUND = 2,
POINT_GROUND = 3,
POINT_PARALYZE = 2
};

View File

@ -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);

View File

@ -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))

View File

@ -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,

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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);

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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:

View File

@ -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,

View File

@ -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

View File

@ -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;

View File

@ -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))

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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};

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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:

View File

@ -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;
}

View File

@ -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
};

View File

@ -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())
{

View File

@ -622,7 +622,7 @@ public:
if (type != WAYPOINT_MOTION_TYPE)
return;
if (point == 8) // max-1
if (point == 9)
{
Talk(0);
me->RemoveAllAuras();

View File

@ -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);
}
}

View File

@ -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

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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