diff options
| author | Subv <subv2112@gmail.com> | 2013-12-29 15:13:14 -0500 |
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2013-12-29 15:13:14 -0500 |
| commit | d234d0f3d0889e799eb066ba39c9b1edbc964d6e (patch) | |
| tree | 17d6281266900fe843573d03eff46a3b2beabedb /src/server/scripts/Northrend | |
| parent | 8658b5338c905c79daf50cb56dbe739f82d25acc (diff) | |
| parent | c40cdc2968c58d952878c09a60926af74f782867 (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Diffstat (limited to 'src/server/scripts/Northrend')
100 files changed, 958 insertions, 839 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index a670e14338e..40c65374bd3 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -147,7 +147,7 @@ class boss_elder_nadox : public CreatureScript if (me->HealthBelowPct(100 - AmountHealthModifier * 25)) { - Talk(EMOTE_HATCHES, me->GetGUID()); + Talk(EMOTE_HATCHES, me); DoCast(me, SPELL_SUMMON_SWARM_GUARD); ++AmountHealthModifier; } diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index 5bb68a4c886..e43d0846b75 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -33,7 +33,7 @@ enum Spells SPELL_MIND_FLAY = 57941, SPELL_SHADOW_BOLT_VOLLEY = 57942, SPELL_SHIVER = 57949, - SPELL_CLONE_PLAYER = 57507, //casted on player during insanity + SPELL_CLONE_PLAYER = 57507, //cast on player during insanity SPELL_INSANITY_PHASING_1 = 57508, SPELL_INSANITY_PHASING_2 = 57509, SPELL_INSANITY_PHASING_3 = 57510, @@ -302,15 +302,16 @@ public: ResetPlayersPhaseMask(); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_volazjAI(creature); + return GetInstanceAI<boss_volazjAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp index a68a122bc31..a80b6fda636 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp @@ -337,7 +337,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_jedoga_shadowseekerAI(creature); + return GetInstanceAI<boss_jedoga_shadowseekerAI>(creature); } }; @@ -503,7 +503,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jedoga_initiandAI(creature); + return GetInstanceAI<npc_jedoga_initiandAI>(creature); } }; @@ -528,8 +528,8 @@ public: instance = creature->GetInstanceScript(); bRemoved = false; bRemoved2 = false; - bCasted = false; - bCasted2 = false; + bCast = false; + bCast2 = false; SetCombatMovement(false); } @@ -538,8 +538,8 @@ public: bool bRemoved; bool bRemoved2; - bool bCasted; - bool bCasted2; + bool bCast; + bool bCast2; void Reset() OVERRIDE { } void EnterCombat(Unit* /*who*/) OVERRIDE { } @@ -560,23 +560,23 @@ public: bRemoved = true; return; } - if (!bCasted) + if (!bCast) { DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false); - bCasted = true; + bCast = true; } } if (!bRemoved2 && me->GetPositionX() < 440.0f) { - if (!bCasted2 && instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) + if (!bCast2 && instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) { DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false); - bCasted2 = true; + bCast2 = true; } - if (bCasted2 && !instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) + if (bCast2 && !instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) { me->InterruptNonMeleeSpells(true); - bCasted2 = false; + bCast2 = false; } if (!bRemoved2 && instance->GetBossState(DATA_JEDOGA_SHADOWSEEKER) == DONE) { @@ -589,7 +589,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jedogas_aufseher_triggerAI(creature); + return GetInstanceAI<npc_jedogas_aufseher_triggerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 81530265617..155b8aa20b5 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -355,7 +355,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anub_arakAI(creature); + return GetInstanceAI<boss_anub_arakAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 1664a1375ae..39aaae06ff5 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -192,7 +192,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_hadronoxAI(creature); + return GetInstanceAI<boss_hadronoxAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index 143ccc29e0d..86fb0260cc5 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -195,7 +195,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_krik_thirAI(creature); + return GetInstanceAI<boss_krik_thirAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index a212a74df86..9c5415375b7 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -37,9 +37,6 @@ enum Enums SAY_SARTHARION_SLAY = 8, WHISPER_LAVA_CHURN = 9, - WHISPER_SHADRON_DICIPLE = 7, - WHISPER_VESPERON_DICIPLE = 7, - //Sartharion Spells SPELL_BERSERK = 61632, // Increases the caster's attack speed by 150% and all damage it deals by 500% for 5 min. SPELL_CLEAVE = 56909, // Inflicts 35% weapon damage to an enemy and its nearest allies, affecting up to 10 targets. @@ -48,7 +45,7 @@ enum Enums SPELL_TAIL_LASH = 56910, // A sweeping tail strike hits all enemies behind the caster, inflicting 3063 to 3937 damage and stunning them for 2 sec. SPELL_TAIL_LASH_H = 58957, // A sweeping tail strike hits all enemies behind the caster, inflicting 4375 to 5625 damage and stunning them for 2 sec. SPELL_WILL_OF_SARTHARION = 61254, // Sartharion's presence bolsters the resolve of the Twilight Drakes, increasing their total health by 25%. This effect also increases Sartharion's health by 25%. - SPELL_LAVA_STRIKE = 57571, // (Real spell casted should be 57578) 57571 then trigger visual missile, then summon Lava Blaze on impact(spell 57572) + SPELL_LAVA_STRIKE = 57571, // (Real spell cast should be 57578) 57571 then trigger visual missile, then summon Lava Blaze on impact(spell 57572) SPELL_TWILIGHT_REVENGE = 60639, NPC_FIRE_CYCLONE = 30648, @@ -81,44 +78,34 @@ enum Misc DATA_CAN_LOOT = 0 }; -struct Location -{ - float x, y, z; -}; - -static Location FlameRight1Spawn = { 3200.00f, 573.211f, 57.1551f }; -static Location FlameRight1Direction = { 3289.28f, 573.211f, 57.1551f }; -static Location FlameRight2Spawn = { 3200.00f, 532.211f, 57.1551f }; -static Location FlameRight2Direction = { 3289.28f, 532.211f, 57.1551f }; -static Location FlameRight3Spawn = { 3200.00f, 491.211f, 57.1551f }; -static Location FlameRight3Direction = { 3289.28f, 491.211f, 57.1551f }; -static Location FlameLeft1Spawn = { 3289.28f, 511.711f, 57.1551f }; -static Location FlameLeft1Direction = { 3200.00f, 511.711f, 57.1551f }; -static Location FlameLeft2Spawn = { 3289.28f, 552.711f, 57.1551f }; -static Location FlameLeft2Direction = { 3200.00f, 552.711f, 57.1551f }; - -struct Waypoint -{ - float m_fX, m_fY, m_fZ; -}; +Position const FlameRight1Spawn = { 3200.00f, 573.211f, 57.1551f, 0.0f }; +Position const FlameRight1Direction = { 3289.28f, 573.211f, 57.1551f, 0.0f }; +Position const FlameRight2Spawn = { 3200.00f, 532.211f, 57.1551f, 0.0f }; +Position const FlameRight2Direction = { 3289.28f, 532.211f, 57.1551f, 0.0f }; +Position const FlameRight3Spawn = { 3200.00f, 491.211f, 57.1551f, 0.0f }; +Position const FlameRight3Direction = { 3289.28f, 491.211f, 57.1551f, 0.0f }; +Position const FlameLeft1Spawn = { 3289.28f, 511.711f, 57.1551f, 0.0f }; +Position const FlameLeft1Direction = { 3200.00f, 511.711f, 57.1551f, 0.0f }; +Position const FlameLeft2Spawn = { 3289.28f, 552.711f, 57.1551f, 0.0f }; +Position const FlameLeft2Direction = { 3200.00f, 552.711f, 57.1551f, 0.0f }; //each dragons special points. First where fly to before connect to connon, second where land point is. -Waypoint m_aTene[]= +Position const TenebronPositions[] = { - {3212.854f, 575.597f, 109.856f}, // init - {3246.425f, 565.367f, 61.249f} // end + { 3212.854f, 575.597f, 109.856f, 0.0f }, // init + { 3246.425f, 565.367f, 61.249f, 0.0f } // end }; -Waypoint m_aShad[]= +Position const ShadronPositions[] = { - {3293.238f, 472.223f, 106.968f}, - {3271.669f, 526.907f, 61.931f} + { 3293.238f, 472.223f, 106.968f, 0.0f }, + { 3271.669f, 526.907f, 61.931f, 0.0f } }; -Waypoint m_aVesp[]= +Position const VesperonPositions[] = { - {3193.310f, 472.861f, 102.697f}, - {3227.268f, 533.238f, 59.995f} + { 3193.310f, 472.861f, 102.697f, 0.0f }, + { 3227.268f, 533.238f, 59.995f, 0.0f } }; enum SartharionEvents @@ -159,11 +146,8 @@ public: me->SetHomePosition(3246.57f, 551.263f, 58.6164f, 4.66003f); - if (instance) - { - DrakeRespawn(); - instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); - } + DrakeRespawn(); + instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); } void JustReachedHome() OVERRIDE @@ -177,8 +161,7 @@ public: _EnterCombat(); DoZoneInCombat(); - if (instance) - FetchDragons(); + FetchDragons(); events.ScheduleEvent(EVENT_LAVA_STRIKE, 5000); events.ScheduleEvent(EVENT_CLEAVE_ATTACK, 7000); @@ -195,25 +178,23 @@ public: Talk(SAY_SARTHARION_DEATH); _JustDied(); - if (instance) - { - if (Creature* tenebron = Unit::GetCreature(*me, instance->GetData64(DATA_TENEBRON))) - if (tenebron->IsAlive()) - tenebron->DisappearAndDie(); + if (Creature* tenebron = Unit::GetCreature(*me, instance->GetData64(DATA_TENEBRON))) + if (tenebron->IsAlive()) + tenebron->DisappearAndDie(); - if (Creature* shadron = Unit::GetCreature(*me, instance->GetData64(DATA_SHADRON))) - if (shadron->IsAlive()) - shadron->DisappearAndDie(); + if (Creature* shadron = Unit::GetCreature(*me, instance->GetData64(DATA_SHADRON))) + if (shadron->IsAlive()) + shadron->DisappearAndDie(); - if (Creature* vesperon = Unit::GetCreature(*me, instance->GetData64(DATA_VESPERON))) - if (vesperon->IsAlive()) - vesperon->DisappearAndDie(); - } + if (Creature* vesperon = Unit::GetCreature(*me, instance->GetData64(DATA_VESPERON))) + if (vesperon->IsAlive()) + vesperon->DisappearAndDie(); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SARTHARION_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SARTHARION_SLAY); } // me->ResetLootMode() is called from Reset() @@ -310,7 +291,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aTene[0].m_fX, m_aTene[0].m_fY, m_aTene[0].m_fZ); + fetchTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, TenebronPositions[0]); if (!fetchTene->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchTene->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -328,7 +309,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aShad[0].m_fX, m_aShad[0].m_fY, m_aShad[0].m_fZ); + fetchShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, ShadronPositions[0]); if (!fetchShad->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchShad->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -346,7 +327,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aVesp[0].m_fX, m_aVesp[0].m_fY, m_aVesp[0].m_fZ); + fetchVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, VesperonPositions[0]); if (!fetchVesp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchVesp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -370,24 +351,24 @@ public: if (temp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - int32 textId = 0; + uint8 textId = 0; switch (temp->GetEntry()) { case NPC_TENEBRON: textId = SAY_SARTHARION_CALL_TENEBRON; temp->AddAura(SPELL_POWER_OF_TENEBRON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aTene[1].m_fX, m_aTene[1].m_fY, m_aTene[1].m_fZ); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, TenebronPositions[1]); break; case NPC_SHADRON: textId = SAY_SARTHARION_CALL_SHADRON; temp->AddAura(SPELL_POWER_OF_SHADRON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aShad[1].m_fX, m_aShad[1].m_fY, m_aShad[1].m_fZ); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, ShadronPositions[1]); break; case NPC_VESPERON: textId = SAY_SARTHARION_CALL_VESPERON; temp->AddAura(SPELL_POWER_OF_VESPERON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aVesp[1].m_fX, m_aVesp[1].m_fY, m_aVesp[1].m_fZ); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, VesperonPositions[1]); break; } @@ -405,20 +386,6 @@ public: return 0; } - void SendFlameTsunami() - { - if (Map* map = me->GetMap()) - if (map->IsDungeon()) - { - Map::PlayerList const &PlayerList = map->GetPlayers(); - - if (!PlayerList.isEmpty()) - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - if (i->GetSource() && i->GetSource()->IsAlive()) - Talk(WHISPER_LAVA_CHURN, i->GetSource()->GetGUID()); - } - } - // Selects a random Fire Cyclone and makes it cast Lava Strike. // FIXME: Frequency of the casts reduced to compensate 100% chance of spawning a Lava Blaze add void CastLavaStrikeOnTarget(Unit* target) @@ -431,13 +398,7 @@ public: if (fireCyclonesList.empty()) return; - std::list<Creature*>::iterator itr = fireCyclonesList.begin(); - uint32 rnd = rand()%fireCyclonesList.size(); - - for (uint32 i = 0; i < rnd; ++i) - ++itr; - - (*itr)->CastSpell(target, SPELL_LAVA_STRIKE, true); + Trinity::Containers::SelectRandomContainerElement(fireCyclonesList)->CastSpell(target, SPELL_LAVA_STRIKE, true); } void UpdateAI(uint32 diff) OVERRIDE @@ -459,25 +420,25 @@ public: } break; case EVENT_FLAME_TSUNAMI: - SendFlameTsunami(); + Talk(WHISPER_LAVA_CHURN); switch (urand(0, 1)) { case 0: { - if (Creature* right1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn.x, FlameRight1Spawn.y, FlameRight1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right1->GetMotionMaster()->MovePoint(0, FlameRight1Direction.x, FlameRight1Direction.y, FlameRight1Direction.z); - if (Creature* right2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn.x, FlameRight2Spawn.y, FlameRight2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right2->GetMotionMaster()->MovePoint(0, FlameRight2Direction.x, FlameRight2Direction.y, FlameRight2Direction.z); - if (Creature* right3 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight3Spawn.x, FlameRight3Spawn.y, FlameRight3Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right3->GetMotionMaster()->MovePoint(0, FlameRight3Direction.x, FlameRight3Direction.y, FlameRight3Direction.z); + if (Creature* right1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right1->GetMotionMaster()->MovePoint(0, FlameRight1Direction); + if (Creature* right2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right2->GetMotionMaster()->MovePoint(0, FlameRight2Direction); + if (Creature* right3 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight3Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right3->GetMotionMaster()->MovePoint(0, FlameRight3Direction); break; } case 1: { - if (Creature* left1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn.x, FlameLeft1Spawn.y, FlameLeft1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - left1->GetMotionMaster()->MovePoint(0, FlameLeft1Direction.x, FlameLeft1Direction.y, FlameLeft1Direction.z); - if (Creature* left2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn.x, FlameLeft2Spawn.y, FlameLeft2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - left2->GetMotionMaster()->MovePoint(0, FlameLeft2Direction.x, FlameLeft2Direction.y, FlameLeft2Direction.z); + if (Creature* left1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + left1->GetMotionMaster()->MovePoint(0, FlameLeft1Direction); + if (Creature* left2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + left2->GetMotionMaster()->MovePoint(0, FlameLeft2Direction); break; } } @@ -550,7 +511,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_sartharionAI(creature); + return GetObsidianSanctumAI<boss_sartharionAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp index 5fc4869c4af..9476f4161aa 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp @@ -25,9 +25,6 @@ enum Enums { - WHISPER_HATCH_EGGS = 6, - WHISPER_OPEN_PORTAL = 6, // whisper, shared by two dragons - //Mini bosses common spells SPELL_TWILIGHT_RESIDUE = 61885, // makes immune to shadow damage, applied when leave phase @@ -97,73 +94,73 @@ enum Misc DATA_CAN_LOOT = 0 }; -struct Location -{ - float x, y, z; -}; - -struct Locations -{ - float x, y, z; -}; - -struct Waypoint -{ - float m_fX, m_fY, m_fZ; -}; - #define MAX_WAYPOINT 6 //points around raid "isle", counter clockwise. should probably be adjusted to be more alike -Waypoint dragonCommon[MAX_WAYPOINT]= +Position const dragonCommon[MAX_WAYPOINT]= { - {3214.012f, 468.932f, 98.652f}, - {3244.950f, 468.427f, 98.652f}, - {3283.520f, 496.869f, 98.652f}, - {3287.316f, 555.875f, 98.652f}, - {3250.479f, 585.827f, 98.652f}, - {3209.969f, 566.523f, 98.652f} + { 3214.012f, 468.932f, 98.652f, 0.0f }, + { 3244.950f, 468.427f, 98.652f, 0.0f }, + { 3283.520f, 496.869f, 98.652f, 0.0f }, + { 3287.316f, 555.875f, 98.652f, 0.0f }, + { 3250.479f, 585.827f, 98.652f, 0.0f }, + { 3209.969f, 566.523f, 98.652f, 0.0f } }; -static Location AcolyteofShadron = { 3363.92f, 534.703f, 97.2683f }; -static Location AcolyteofShadron2 = { 3246.57f, 551.263f, 58.6164f }; -static Location AcolyteofVesperon = { 3145.68f, 520.71f, 89.7f }; -static Location AcolyteofVesperon2 = { 3246.57f, 551.263f, 58.6164f }; +Position const AcolyteofShadron = { 3363.92f, 534.703f, 97.2683f, 0.0f }; +Position const AcolyteofShadron2 = { 3246.57f, 551.263f, 58.6164f, 0.0f }; +Position const AcolyteofVesperon = { 3145.68f, 520.71f, 89.7f, 0.0f }; +Position const AcolyteofVesperon2 = { 3246.57f, 551.263f, 58.6164f, 0.0f }; -Locations TwilightEggs[] = +Position const TwilightEggs[] = { - {3219.28f, 669.121f, 88.5549f}, - {3221.55f, 682.852f, 90.5361f}, - {3239.77f, 685.94f, 90.3168f}, - {3250.33f, 669.749f, 88.7637f}, - {3246.6f, 642.365f, 84.8752f}, - {3233.68f, 653.117f, 85.7051f} + { 3219.28f, 669.121f, 88.5549f, 0.0f }, + { 3221.55f, 682.852f, 90.5361f, 0.0f }, + { 3239.77f, 685.94f, 90.3168f, 0.0f }, + { 3250.33f, 669.749f, 88.7637f, 0.0f }, + { 3246.6f, 642.365f, 84.8752f, 0.0f }, + { 3233.68f, 653.117f, 85.7051f, 0.0f } }; -Locations TwilightEggsSarth[] = + +Position const TwilightEggsSarth[] = { - {3252.73f, 515.762f, 58.5501f}, - {3256.56f, 521.119f, 58.6061f}, - {3255.63f, 527.513f, 58.7568f}, - {3264.90f, 525.865f, 58.6436f}, - {3264.26f, 516.364f, 58.8011f}, - {3257.54f, 502.285f, 58.2077f} + { 3252.73f, 515.762f, 58.5501f, 0.0f }, + { 3256.56f, 521.119f, 58.6061f, 0.0f }, + { 3255.63f, 527.513f, 58.7568f, 0.0f }, + { 3264.90f, 525.865f, 58.6436f, 0.0f }, + { 3264.26f, 516.364f, 58.8011f, 0.0f }, + { 3257.54f, 502.285f, 58.2077f, 0.0f } }; -enum SharedTextIDs +enum SharedTextIds { SAY_AGGRO = 0, SAY_SLAY = 1, SAY_DEATH = 2, SAY_BREATH = 3, SAY_RESPOND = 4, - SAY_SPECIAL = 5 + SAY_SPECIAL = 5, + WHISPER_OPEN_PORTAL = 6, + WHISPER_OPENED_PORTAL = 7 }; -enum DummyDragonEvents +enum DragonEvents { - EVENT_FREE_MOVEMENT = 1 + // Shared Events + EVENT_FREE_MOVEMENT = 1, + EVENT_SHADOW_FISSURE = 2, + EVENT_SHADOW_BREATH = 3, + + // Tenebron + EVENT_HATCH_EGGS = 4, + + // Shadron + EVENT_ACOLYTE_SHADRON = 5, + + // Vesperon + EVENT_ACOLYTE_VESPERON = 6 }; -//to control each dragons common abilities +// to control each dragons common abilities struct dummy_dragonAI : public ScriptedAI { dummy_dragonAI(Creature* creature) : ScriptedAI(creature) @@ -176,12 +173,22 @@ struct dummy_dragonAI : public ScriptedAI if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + events.Reset(); waypointId = 0; portalRespawnTime = 30000; _canMoveFree = false; _canLoot = true; } + void EnterCombat(Unit* /*who*/) OVERRIDE + { + Talk(SAY_AGGRO); + DoZoneInCombat(); + + events.ScheduleEvent(EVENT_SHADOW_FISSURE, 5000); + events.ScheduleEvent(EVENT_SHADOW_BREATH, 20000); + } + void SetData(uint32 type, uint32 value) OVERRIDE { if (type == DATA_CAN_LOOT) @@ -218,14 +225,11 @@ struct dummy_dragonAI : public ScriptedAI return; } - // get amount of common points - uint32 commonWPCount = sizeof(dragonCommon)/sizeof(Waypoint); - // increase - waypointId = pointId+1; + waypointId = pointId + 1; // if we have reached a point bigger or equal to count, it mean we must reset to point 0 - if (waypointId >= commonWPCount) + if (waypointId >= MAX_WAYPOINT) { if (!_canMoveFree) _canMoveFree = true; @@ -236,28 +240,9 @@ struct dummy_dragonAI : public ScriptedAI events.ScheduleEvent(EVENT_FREE_MOVEMENT, 500); } - // used when open portal and spawn mobs in phase - void DoRaidWhisper(int32 iTextId) - { - Map* map = me->GetMap(); - - if (map && map->IsDungeon()) - { - Map::PlayerList const &PlayerList = map->GetPlayers(); - - if (!PlayerList.isEmpty()) - { - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - Talk(iTextId, i->GetSource()->GetGUID()); - } - } - } - // "opens" the portal and does the "opening" whisper void OpenPortal() { - int32 textId = 0; - // there are 4 portal spawn locations, each are expected to be spawned with negative spawntimesecs in database // using a grid search here seem to be more efficient than caching all four guids @@ -268,35 +253,32 @@ struct dummy_dragonAI : public ScriptedAI { case NPC_TENEBRON: { - textId = WHISPER_HATCH_EGGS; if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { for (uint32 i = 0; i < 6; ++i) - me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[i].x, TwilightEggs[i].y, TwilightEggs[i].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); } else { for (uint32 i = 0; i < 6; ++i) - me->SummonCreature(NPC_SARTHARION_TWILIGHT_EGG, TwilightEggsSarth[i].x, TwilightEggsSarth[i].y, TwilightEggsSarth[i].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + me->SummonCreature(NPC_SARTHARION_TWILIGHT_EGG, TwilightEggsSarth[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); } break; } case NPC_SHADRON: { - textId = WHISPER_OPEN_PORTAL; if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) - me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron.x, AcolyteofShadron.y, AcolyteofShadron.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); + me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); else - me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2.x, AcolyteofShadron2.y, AcolyteofShadron2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); + me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); break; } case NPC_VESPERON: { - textId = WHISPER_OPEN_PORTAL; if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { - if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon.x, AcolyteofVesperon.y, AcolyteofVesperon.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) + if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) { me->InterruptNonMeleeSpells(true); acolyte->InterruptNonMeleeSpells(true); @@ -305,7 +287,7 @@ struct dummy_dragonAI : public ScriptedAI } else { - if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2.x, AcolyteofVesperon2.y, AcolyteofVesperon2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) + if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) { me->InterruptNonMeleeSpells(true); acolyte->InterruptNonMeleeSpells(true); @@ -313,11 +295,12 @@ struct dummy_dragonAI : public ScriptedAI } } - break; + break; } } - DoRaidWhisper(textId); + Talk(WHISPER_OPEN_PORTAL); + Talk(WHISPER_OPENED_PORTAL); // By using SetRespawnTime() we will actually "spawn" the object with our defined time. // Once time is up, portal will disappear again. @@ -328,6 +311,12 @@ struct dummy_dragonAI : public ScriptedAI // Refresh respawnTime so time again are set to 30secs? } + void KilledUnit(Unit* who) OVERRIDE + { + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); + } + void JustDied(Unit* /*killer*/) OVERRIDE { if (!_canLoot) @@ -370,7 +359,7 @@ struct dummy_dragonAI : public ScriptedAI return; // Twilight Revenge to main boss - if (Unit* sartharion = Unit::GetUnit(*me, instance->GetData64(DATA_SARTHARION))) + if (Unit* sartharion = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_SARTHARION))) if (sartharion->IsAlive()) { sartharion->RemoveAurasDueToSpell(spellId); @@ -386,11 +375,30 @@ struct dummy_dragonAI : public ScriptedAI if (events.ExecuteEvent() == EVENT_FREE_MOVEMENT) { if (_canMoveFree && waypointId < MAX_WAYPOINT) - me->GetMotionMaster()->MovePoint(waypointId, dragonCommon[waypointId].m_fX, dragonCommon[waypointId].m_fY, dragonCommon[waypointId].m_fZ); + me->GetMotionMaster()->MovePoint(waypointId, dragonCommon[waypointId]); } } - private: + void ExecuteEvent(uint32 eventId) + { + switch (eventId) + { + case EVENT_SHADOW_FISSURE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) + DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE)); + events.ScheduleEvent(eventId, urand(15000, 20000)); + break; + case EVENT_SHADOW_BREATH: + Talk(SAY_BREATH); + DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); + events.ScheduleEvent(eventId, urand(20000, 25000)); + break; + default: + break; + } + } + + protected: InstanceScript* instance; EventMap events; uint32 waypointId; @@ -403,13 +411,6 @@ struct dummy_dragonAI : public ScriptedAI ## Tenebron ######*/ -enum TenebronEvents -{ - EVENT_SHADOW_FISSURE_TENEBRON = 2, - EVENT_HATCH_EGGS = 3, - EVENT_SHADOW_BREATH_TENEBRON = 4 -}; - class npc_tenebron : public CreatureScript { public: @@ -424,23 +425,16 @@ public: dummy_dragonAI::Reset(); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_TENEBRON, 5000); - events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_TENEBRON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -453,32 +447,23 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_TENEBRON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_TENEBRON, urand(15000, 20000)); - break; case EVENT_HATCH_EGGS: OpenPortal(); events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); break; - case EVENT_SHADOW_BREATH_TENEBRON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_TENEBRON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tenebronAI(creature); + return GetObsidianSanctumAI<npc_tenebronAI>(creature); } }; @@ -486,13 +471,6 @@ public: ## Shadron ######*/ -enum ShadronEvents -{ - EVENT_SHADOW_FISSURE_SHADRON = 5, - EVENT_ACOLYTE_SHADRON = 6, - EVENT_SHADOW_BREATH_SHADRON = 7 -}; - class npc_shadron : public CreatureScript { public: @@ -500,10 +478,7 @@ public: struct npc_shadronAI : public dummy_dragonAI { - npc_shadronAI(Creature* creature) : dummy_dragonAI(creature) - { - instance = creature->GetInstanceScript(); - } + npc_shadronAI(Creature* creature) : dummy_dragonAI(creature) { } void Reset() OVERRIDE { @@ -515,27 +490,19 @@ public: if (me->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA)) me->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA); - if (instance) - instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); + instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_SHADRON, 5000); - events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 60000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_SHADRON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 60000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -548,11 +515,6 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_SHADRON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_SHADRON, urand(15000, 20000)); - break; case EVENT_ACOLYTE_SHADRON: if (instance->GetBossState(DATA_PORTAL_OPEN) == NOT_STARTED) events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 10000); @@ -563,30 +525,24 @@ public: OpenPortal(); - if (instance) - instance->SetBossState(DATA_PORTAL_OPEN, IN_PROGRESS); + instance->SetBossState(DATA_PORTAL_OPEN, IN_PROGRESS); events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, urand(60000, 65000)); } break; - case EVENT_SHADOW_BREATH_SHADRON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_SHADRON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - InstanceScript* instance; - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shadronAI(creature); + return GetObsidianSanctumAI<npc_shadronAI>(creature); } }; @@ -594,13 +550,6 @@ public: ## Vesperon ######*/ -enum VesperonEvents -{ - EVENT_SHADOW_FISSURE_VESPERON = 8, - EVENT_ACOLYTE_VESPERON = 9, - EVENT_SHADOW_BREATH_VESPERON = 10 -}; - class npc_vesperon : public CreatureScript { public: @@ -608,33 +557,23 @@ public: struct npc_vesperonAI : public dummy_dragonAI { - npc_vesperonAI(Creature* creature) : dummy_dragonAI(creature) - { - instance = creature->GetInstanceScript(); - } + npc_vesperonAI(Creature* creature) : dummy_dragonAI(creature) { } void Reset() OVERRIDE { dummy_dragonAI::Reset(); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_VESPERON, 5000); - events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 60000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_VESPERON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 60000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -647,11 +586,6 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_VESPERON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_VESPERON, urand(15000, 20000)); - break; case EVENT_ACOLYTE_VESPERON: if (instance->GetBossState(DATA_PORTAL_OPEN) == IN_PROGRESS) events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 10000); @@ -662,24 +596,19 @@ public: events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, urand(60000, 70000)); } break; - case EVENT_SHADOW_BREATH_VESPERON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_VESPERON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - InstanceScript* instance; - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_vesperonAI(creature); + return GetObsidianSanctumAI<npc_vesperonAI>(creature); } }; @@ -689,23 +618,21 @@ public: class npc_acolyte_of_shadron : public CreatureScript { -public: - npc_acolyte_of_shadron() : CreatureScript("npc_acolyte_of_shadron") { } - - struct npc_acolyte_of_shadronAI : public ScriptedAI - { - npc_acolyte_of_shadronAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + public: + npc_acolyte_of_shadron() : CreatureScript("npc_acolyte_of_shadron") { } - void Reset() OVERRIDE + struct npc_acolyte_of_shadronAI : public ScriptedAI { - // Despawn the NPC automatically after 28 seconds - me->DespawnOrUnsummon(28000); + npc_acolyte_of_shadronAI(Creature* creature) : ScriptedAI(creature) + { + instance = creature->GetInstanceScript(); + } - if (instance) + void Reset() OVERRIDE { + // Despawn the NPC automatically after 28 seconds + me->DespawnOrUnsummon(28000); + //if not solo fight, buff main boss, else place debuff on mini-boss. both spells TARGET_SCRIPT if (instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { @@ -717,14 +644,11 @@ public: if (Creature* shadron = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SHADRON))) shadron->AddAura(SPELL_GIFT_OF_TWILIGTH_SHA, shadron); } - } - me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); - } + me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); + } - void JustDied(Unit* /*killer*/) OVERRIDE - { - if (instance) + void JustDied(Unit* /*killer*/) OVERRIDE { if (ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SHADRON))) instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); @@ -732,7 +656,7 @@ public: Map* map = me->GetMap(); if (map->IsDungeon()) { - Map::PlayerList const &PlayerList = map->GetPlayers(); + Map::PlayerList const& PlayerList = map->GetPlayers(); if (PlayerList.isEmpty()) return; @@ -746,7 +670,7 @@ public: i->GetSource()->RemoveAurasDueToSpell(SPELL_TWILIGHT_SHIFT); i->GetSource()->RemoveAurasDueToSpell(SPELL_TWILIGHT_SHIFT_ENTER); } - } + } } // not solo fight, so main boss has debuff @@ -759,24 +683,23 @@ public: if (debuffTarget->IsAlive() && debuffTarget->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA)) debuffTarget->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA); } - } - void UpdateAI(uint32 /*diff*/) OVERRIDE - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 /*diff*/) OVERRIDE + { + if (!UpdateVictim()) + return; - DoMeleeAttackIfReady(); - } + DoMeleeAttackIfReady(); + } - private: - InstanceScript* instance; - }; + private: + InstanceScript* instance; + }; - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_acolyte_of_shadronAI(creature); - } + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetObsidianSanctumAI<npc_acolyte_of_shadronAI>(creature); + } }; /*###### @@ -785,34 +708,31 @@ public: class npc_acolyte_of_vesperon : public CreatureScript { -public: - npc_acolyte_of_vesperon() : CreatureScript("npc_acolyte_of_vesperon") { } + public: + npc_acolyte_of_vesperon() : CreatureScript("npc_acolyte_of_vesperon") { } - struct npc_acolyte_of_vesperonAI : public ScriptedAI - { - npc_acolyte_of_vesperonAI(Creature* creature) : ScriptedAI(creature) + struct npc_acolyte_of_vesperonAI : public ScriptedAI { - instance = creature->GetInstanceScript(); - } + npc_acolyte_of_vesperonAI(Creature* creature) : ScriptedAI(creature) + { + instance = creature->GetInstanceScript(); + } - void Reset() OVERRIDE - { - // Despawn the NPC automatically after 28 seconds - me->DespawnOrUnsummon(28000); + void Reset() OVERRIDE + { + // Despawn the NPC automatically after 28 seconds + me->DespawnOrUnsummon(28000); - if (instance) me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); - DoCast(me, SPELL_TWILIGHT_TORMENT_VESP_ACO); - } - - void JustDied(Unit* /*killer*/) OVERRIDE - { - me->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP_ACO); + DoCast(me, SPELL_TWILIGHT_TORMENT_VESP_ACO); + } - // remove twilight torment on Vesperon - if (instance) + void JustDied(Unit* /*killer*/) OVERRIDE { + me->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP_ACO); + + // remove twilight torment on Vesperon if (Creature* vesperon = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VESPERON))) { instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); @@ -847,24 +767,23 @@ public: instance->DoRemoveAurasDueToSpellOnPlayers(57935); instance->DoRemoveAurasDueToSpellOnPlayers(58835); // Components of spell Twilight Torment } - } - void UpdateAI(uint32 /*diff*/) OVERRIDE - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 /*diff*/) OVERRIDE + { + if (!UpdateVictim()) + return; - DoMeleeAttackIfReady(); - } + DoMeleeAttackIfReady(); + } - private: - InstanceScript* instance; - }; + private: + InstanceScript* instance; + }; - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_acolyte_of_vesperonAI(creature); - } + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetObsidianSanctumAI<npc_acolyte_of_vesperonAI>(creature); + } }; /*###### @@ -891,8 +810,7 @@ public: void Reset() OVERRIDE { - if (instance) - me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); + me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); events.ScheduleEvent(EVENT_TWILIGHT_EGGS, 20000); } @@ -933,7 +851,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_twilight_eggsAI(creature); + return GetObsidianSanctumAI<npc_twilight_eggsAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h index 8cfb3931372..d8f49a06578 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h @@ -15,8 +15,8 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef DEF_OBSIDIAN_SANCTUM_H -#define DEF_OBSIDIAN_SANCTUM_H +#ifndef OBSIDIAN_SANCTUM_H_ +#define OBSIDIAN_SANCTUM_H_ #define OSScriptName "instance_obsidian_sanctum" @@ -45,4 +45,10 @@ enum GameObjectIds GO_TWILIGHT_PORTAL = 193988 }; -#endif +template<class AI> +AI* GetObsidianSanctumAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, OSScriptName); +} + +#endif // OBSIDIAN_SANCTUM_H_ diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index f968add0b5b..3b706cdef25 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -852,9 +852,9 @@ class npc_halion_controller : public CreatureScript halion->CastSpell(halion, GetSpell(_materialCorporealityValue, itr == DATA_TWILIGHT_HALION), true); if (itr == DATA_TWILIGHT_HALION) - halion->AI()->Talk(oldValue < _materialCorporealityValue ? EMOTE_CORPOREALITY_TOT : EMOTE_CORPOREALITY_TIT, halion->GetGUID()); + halion->AI()->Talk(oldValue < _materialCorporealityValue ? EMOTE_CORPOREALITY_TOT : EMOTE_CORPOREALITY_TIT, halion); else // if (itr == DATA_HALION) - halion->AI()->Talk(oldValue > _materialCorporealityValue ? EMOTE_CORPOREALITY_POT : EMOTE_CORPOREALITY_PIP, halion->GetGUID()); + halion->AI()->Talk(oldValue > _materialCorporealityValue ? EMOTE_CORPOREALITY_POT : EMOTE_CORPOREALITY_PIP, halion); } } } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index f6fd1c14a9b..39be0eebf60 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -248,7 +248,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eadricAI(creature); + return GetInstanceAI<boss_eadricAI>(creature); } }; @@ -406,7 +406,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_paletressAI(creature); + return GetInstanceAI<boss_paletressAI>(creature); } }; @@ -589,7 +589,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_argent_soldierAI(creature); + return GetInstanceAI<npc_argent_soldierAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index 1922ad26060..468ab681389 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -300,7 +300,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_black_knightAI(creature); + return GetInstanceAI<boss_black_knightAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 8bff123af75..3f86e75a410 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -300,7 +300,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new generic_vehicleAI_toc5AI(creature); + return GetInstanceAI<generic_vehicleAI_toc5AI>(creature); } }; @@ -433,7 +433,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_warrior_toc5AI(creature); + return GetInstanceAI<boss_warrior_toc5AI>(creature); } }; @@ -572,7 +572,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_mage_toc5AI(creature); + return GetInstanceAI<boss_mage_toc5AI>(creature); } }; @@ -719,7 +719,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_shaman_toc5AI(creature); + return GetInstanceAI<boss_shaman_toc5AI>(creature); } }; @@ -875,7 +875,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_hunter_toc5AI(creature); + return GetInstanceAI<boss_hunter_toc5AI>(creature); } }; @@ -996,7 +996,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_rouge_toc5AI(creature); + return GetInstanceAI<boss_rouge_toc5AI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp index 00b312aa407..2add4e9a1dd 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp @@ -472,7 +472,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_announcer_toc5AI(creature); + return GetInstanceAI<npc_announcer_toc5AI>(creature); } bool OnGossipHello(Player* player, Creature* creature) OVERRIDE diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 53b11de921a..ddd906c790c 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -257,7 +257,7 @@ class boss_anubarak_trial : public CreatureScript case NPC_SPIKE: summoned->CombatStart(target); summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid1); - Talk(EMOTE_SPIKE, target->GetGUID()); + Talk(EMOTE_SPIKE, target); break; default: break; @@ -423,7 +423,7 @@ class boss_anubarak_trial : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anubarak_trialAI(creature); + return GetInstanceAI<boss_anubarak_trialAI>(creature); }; }; @@ -495,7 +495,7 @@ class npc_swarm_scarab : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_swarm_scarabAI(creature); + return GetInstanceAI<npc_swarm_scarabAI>(creature); }; }; @@ -583,7 +583,7 @@ class npc_nerubian_burrower : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_nerubian_burrowerAI(creature); + return GetInstanceAI<npc_nerubian_burrowerAI>(creature); }; }; @@ -689,7 +689,7 @@ class npc_anubarak_spike : public CreatureScript if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { StartChase(target); - Talk(EMOTE_SPIKE, who->GetGUID()); + Talk(EMOTE_SPIKE, who); } } @@ -719,7 +719,7 @@ class npc_anubarak_spike : public CreatureScript if (Unit* target2 = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { StartChase(target2); - Talk(EMOTE_SPIKE, target2->GetGUID()); + Talk(EMOTE_SPIKE, target2); } _phaseSwitchTimer = 7*IN_MILLISECONDS; return; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index 4c73d1a5f55..db926c32f96 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -539,7 +539,7 @@ class boss_toc_champion_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_toc_champion_controllerAI(creature); + return GetInstanceAI<boss_toc_champion_controllerAI>(creature); } }; @@ -839,7 +839,7 @@ class npc_toc_druid : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_druidAI(creature); + return GetInstanceAI<npc_toc_druidAI>(creature); } }; @@ -932,7 +932,7 @@ class npc_toc_shaman : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_shamanAI(creature); + return GetInstanceAI<npc_toc_shamanAI>(creature); } }; @@ -1036,7 +1036,7 @@ class npc_toc_paladin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_paladinAI(creature); + return GetInstanceAI<npc_toc_paladinAI>(creature); } }; @@ -1121,7 +1121,7 @@ class npc_toc_priest : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_priestAI(creature); + return GetInstanceAI<npc_toc_priestAI>(creature); } }; @@ -1219,7 +1219,7 @@ class npc_toc_shadow_priest : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_shadow_priestAI(creature); + return GetInstanceAI<npc_toc_shadow_priestAI>(creature); } }; @@ -1310,7 +1310,7 @@ class npc_toc_warlock : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_warlockAI(creature); + return GetInstanceAI<npc_toc_warlockAI>(creature); } }; @@ -1404,7 +1404,7 @@ class npc_toc_mage : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_mageAI(creature); + return GetInstanceAI<npc_toc_mageAI>(creature); } }; @@ -1506,7 +1506,7 @@ class npc_toc_hunter : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_hunterAI(creature); + return GetInstanceAI<npc_toc_hunterAI>(creature); } }; @@ -1598,7 +1598,7 @@ class npc_toc_boomkin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_boomkinAI(creature); + return GetInstanceAI<npc_toc_boomkinAI>(creature); } }; @@ -1702,7 +1702,7 @@ class npc_toc_warrior : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_warriorAI(creature); + return GetInstanceAI<npc_toc_warriorAI>(creature); } }; @@ -1798,7 +1798,7 @@ class npc_toc_dk : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_dkAI(creature); + return GetInstanceAI<npc_toc_dkAI>(creature); } }; @@ -1903,7 +1903,7 @@ class npc_toc_rogue : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_rogueAI(creature); + return GetInstanceAI<npc_toc_rogueAI>(creature); } }; @@ -2029,7 +2029,7 @@ class npc_toc_enh_shaman : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_enh_shamanAI(creature); + return GetInstanceAI<npc_toc_enh_shamanAI>(creature); } }; @@ -2135,7 +2135,7 @@ class npc_toc_retro_paladin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_retro_paladinAI(creature); + return GetInstanceAI<npc_toc_retro_paladinAI>(creature); } }; @@ -2187,7 +2187,7 @@ class npc_toc_pet_warlock : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_pet_warlockAI(creature); + return GetInstanceAI<npc_toc_pet_warlockAI>(creature); } }; @@ -2227,7 +2227,7 @@ class npc_toc_pet_hunter : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_pet_hunterAI(creature); + return GetInstanceAI<npc_toc_pet_hunterAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 4cea1ea5b06..55372e73721 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -175,7 +175,7 @@ class boss_jaraxxus : public CreatureScript case EVENT_INCINERATE_FLESH: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_LORD_HITTIN)) { - Talk(EMOTE_INCINERATE, target->GetGUID()); + Talk(EMOTE_INCINERATE, target); Talk(SAY_INCINERATE); DoCast(target, SPELL_INCINERATE_FLESH); } @@ -188,7 +188,7 @@ class boss_jaraxxus : public CreatureScript case EVENT_LEGION_FLAME: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_LORD_HITTIN)) { - Talk(EMOTE_LEGION_FLAME, target->GetGUID()); + Talk(EMOTE_LEGION_FLAME, target); DoCast(target, SPELL_LEGION_FLAME); } events.ScheduleEvent(EVENT_LEGION_FLAME, 30*IN_MILLISECONDS); @@ -214,7 +214,7 @@ class boss_jaraxxus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_jaraxxusAI(creature); + return GetInstanceAI<boss_jaraxxusAI>(creature); } }; @@ -250,7 +250,7 @@ class npc_legion_flame : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_legion_flameAI(creature); + return GetInstanceAI<npc_legion_flameAI>(creature); } }; @@ -355,7 +355,7 @@ class npc_fel_infernal : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_fel_infernalAI(creature); + return GetInstanceAI<npc_fel_infernalAI>(creature); } }; @@ -488,7 +488,7 @@ class npc_mistress_of_pain : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_mistress_of_painAI(creature); + return GetInstanceAI<npc_mistress_of_painAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 3fdfc0c8ae3..3784c69225f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -284,7 +284,7 @@ class boss_gormok : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gormokAI(creature); + return GetInstanceAI<boss_gormokAI>(creature); } }; @@ -454,7 +454,7 @@ class npc_snobold_vassal : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_snobold_vassalAI(creature); + return GetInstanceAI<npc_snobold_vassalAI>(creature); } }; @@ -490,7 +490,7 @@ class npc_firebomb : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_firebombAI(creature); + return GetInstanceAI<npc_firebombAI>(creature); } }; @@ -712,7 +712,7 @@ class boss_acidmaw : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_acidmawAI(creature); + return GetInstanceAI<boss_acidmawAI>(creature); } }; @@ -779,7 +779,7 @@ class boss_dreadscale : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_dreadscaleAI(creature); + return GetInstanceAI<boss_dreadscaleAI>(creature); } }; @@ -820,7 +820,7 @@ class npc_slime_pool : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_slime_poolAI(creature); + return GetInstanceAI<npc_slime_poolAI>(creature); } }; @@ -873,7 +873,7 @@ class boss_icehowl : public CreatureScript events.ScheduleEvent(EVENT_MASSIVE_CRASH, 30*IN_MILLISECONDS); _movementStarted = false; _movementFinish = false; - _trampleCasted = false; + _trampleCast = false; _trampleTargetGUID = 0; _trampleTargetX = 0; _trampleTargetY = 0; @@ -961,10 +961,10 @@ class boss_icehowl : public CreatureScript { if (spell->Id == SPELL_TRAMPLE && target->GetTypeId() == TYPEID_PLAYER) { - if (!_trampleCasted) + if (!_trampleCast) { DoCast(me, SPELL_FROTHING_RAGE, true); - _trampleCasted = true; + _trampleCast = true; } } } @@ -1025,7 +1025,7 @@ class boss_icehowl : public CreatureScript me->AttackStop(); _trampleTargetGUID = target->GetGUID(); me->SetTarget(_trampleTargetGUID); - _trampleCasted = false; + _trampleCast = false; SetCombatMovement(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE); me->GetMotionMaster()->Clear(); @@ -1047,7 +1047,7 @@ class boss_icehowl : public CreatureScript { me->StopMoving(); me->AttackStop(); - _trampleCasted = false; + _trampleCast = false; _movementStarted = true; _trampleTargetX = target->GetPositionX(); _trampleTargetY = target->GetPositionY(); @@ -1068,7 +1068,8 @@ class boss_icehowl : public CreatureScript case 4: me->StopMoving(); me->AttackStop(); - Talk(EMOTE_TRAMPLE_START, _trampleTargetGUID); + if (Player* target = ObjectAccessor::GetPlayer(*me, _trampleTargetGUID)) + Talk(EMOTE_TRAMPLE_START, target); me->GetMotionMaster()->MoveCharge(_trampleTargetX, _trampleTargetY, _trampleTargetZ, 42, 1); me->SetTarget(0); _stage = 5; @@ -1099,7 +1100,7 @@ class boss_icehowl : public CreatureScript } break; case 6: - if (!_trampleCasted) + if (!_trampleCast) { DoCast(me, SPELL_STAGGERED_DAZE); Talk(EMOTE_TRAMPLE_CRASH); @@ -1130,13 +1131,13 @@ class boss_icehowl : public CreatureScript uint64 _trampleTargetGUID; bool _movementStarted; bool _movementFinish; - bool _trampleCasted; + bool _trampleCast; uint8 _stage; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_icehowlAI(creature); + return GetInstanceAI<boss_icehowlAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 0674696a033..88a404e8dfd 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -451,7 +451,7 @@ class boss_fjola : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fjolaAI(creature); + return GetInstanceAI<boss_fjolaAI>(creature); } }; @@ -486,7 +486,7 @@ class boss_eydis : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eydisAI(creature); + return GetInstanceAI<boss_eydisAI>(creature); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index ff7092590e7..cd3a4e26924 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -357,7 +357,7 @@ class boss_lich_king_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lich_king_tocAI(creature); + return GetInstanceAI<boss_lich_king_tocAI>(creature); } }; @@ -375,7 +375,7 @@ class npc_fizzlebang_toc : public CreatureScript void JustDied(Unit* killer) OVERRIDE { - Talk(SAY_STAGE_1_06, killer->GetGUID()); + Talk(SAY_STAGE_1_06, killer); _instance->SetData(TYPE_EVENT, 1180); if (Creature* temp = Unit::GetCreature(*me, _instance->GetData64(NPC_JARAXXUS))) { @@ -531,7 +531,7 @@ class npc_fizzlebang_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_fizzlebang_tocAI(creature); + return GetInstanceAI<npc_fizzlebang_tocAI>(creature); } }; @@ -819,7 +819,7 @@ class npc_tirion_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tirion_tocAI(creature); + return GetInstanceAI<npc_tirion_tocAI>(creature); } }; @@ -903,7 +903,7 @@ class npc_garrosh_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_garrosh_tocAI(creature); + return GetInstanceAI<npc_garrosh_tocAI>(creature); } }; @@ -987,7 +987,7 @@ class npc_varian_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_varian_tocAI(creature); + return GetInstanceAI<npc_varian_tocAI>(creature); } }; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp index f8f0752184e..42f408861e1 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp @@ -27,7 +27,7 @@ enum Spells { SPELL_BELLOWING_ROAR = 22686, // fears the group, can be resisted/dispelled SPELL_GRIEVOUS_BITE = 48920, - SPELL_MANGLING_SLASH = 48873, // casted on the current tank, adds debuf + SPELL_MANGLING_SLASH = 48873, // cast on the current tank, adds debuf SPELL_FEARSOME_ROAR = 48849, SPELL_PIERCING_SLASH = 48878, // debuff --> Armor reduced by 75% SPELL_RAPTOR_CALL = 59416, // dummy diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index efca060b67c..78399749fe6 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -32,7 +32,7 @@ enum Spells SPELL_CURSE_OF_LIFE = 49527, SPELL_RAIN_OF_FIRE = 49518, SPELL_SHADOW_VOLLEY = 49528, - SPELL_DECAY_FLESH = 49356, // casted at end of phase 1, starts phase 2 + SPELL_DECAY_FLESH = 49356, // cast at end of phase 1, starts phase 2 // Flesh Spells (phase 2) SPELL_GIFT_OF_THARON_JA = 52509, SPELL_CLEAR_GIFT_OF_THARON_JA = 53242, diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 2dedc986b0c..7d1fbc752be 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -188,7 +188,7 @@ class boss_bronjahm : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_bronjahmAI(creature); + return GetInstanceAI<boss_bronjahmAI>(creature); } }; @@ -231,7 +231,7 @@ class npc_corrupted_soul_fragment : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_corrupted_soul_fragmentAI(creature); + return GetInstanceAI<npc_corrupted_soul_fragmentAI>(creature); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index 7d923e7686f..52ab910fb9e 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -345,7 +345,7 @@ class boss_devourer_of_souls : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_devourer_of_soulsAI(creature); + return GetInstanceAI<boss_devourer_of_soulsAI>(creature); } }; @@ -480,9 +480,7 @@ class spell_devourer_of_souls_mirrored_soul_target_selector : public SpellScript class achievement_three_faced : public AchievementCriteriaScript { public: - achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced") - { - } + achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced") { } bool OnCheck(Player* /*player*/, Unit* target) OVERRIDE { diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp index cfa149c134f..0fc5ee29ca0 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -193,7 +193,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sylvanas_fosAI(creature); + return GetInstanceAI<npc_sylvanas_fosAI>(creature); } }; @@ -330,7 +330,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jaina_fosAI(creature); + return GetInstanceAI<npc_jaina_fosAI>(creature); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp index e2d285f7306..fbdd7f96fbe 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -52,7 +52,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_falricAI(creature); + return GetInstanceAI<boss_falricAI>(creature); } struct boss_falricAI : public boss_horAI diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index a87b7b6d93d..b13cae79434 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -51,7 +51,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_marwynAI(creature); + return GetInstanceAI<boss_marwynAI>(creature); } struct boss_marwynAI : public boss_horAI diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 96b772df5a9..2561dca0a4a 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1283,7 +1283,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ghostly_priestAI(creature); + return GetInstanceAI<npc_ghostly_priestAI>(creature); } }; @@ -1355,7 +1355,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_phantom_mageAI(creature); + return GetInstanceAI<npc_phantom_mageAI>(creature); } }; @@ -1447,7 +1447,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shadowy_mercenaryAI(creature); + return GetInstanceAI<npc_shadowy_mercenaryAI>(creature); } }; @@ -1499,7 +1499,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_spectral_footmanAI(creature); + return GetInstanceAI<npc_spectral_footmanAI>(creature); } }; @@ -1558,7 +1558,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tortured_riflemanAI(creature); + return GetInstanceAI<npc_tortured_riflemanAI>(creature); } }; @@ -1674,7 +1674,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frostworn_generalAI(creature); + return GetInstanceAI<npc_frostworn_generalAI>(creature); } }; @@ -1901,7 +1901,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_raging_ghoulAI(creature); + return GetInstanceAI<npc_raging_ghoulAI>(creature); } }; @@ -2021,7 +2021,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_risen_witch_doctorAI(creature); + return GetInstanceAI<npc_risen_witch_doctorAI>(creature); } }; @@ -2111,7 +2111,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_lumbering_abominationAI(creature); + return GetInstanceAI<npc_lumbering_abominationAI>(creature); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 4a9a41f6f8e..5bf50cbb46f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -189,7 +189,7 @@ class boss_garfrost : public CreatureScript case EVENT_THROW_SARONITE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { - Talk(SAY_THROW_SARONITE, target->GetGUID()); + Talk(SAY_THROW_SARONITE, target); DoCast(target, SPELL_THROW_SARONITE); } events.ScheduleEvent(EVENT_THROW_SARONITE, urand(12500, 20000)); @@ -201,7 +201,7 @@ class boss_garfrost : public CreatureScript case EVENT_DEEP_FREEZE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { - Talk(SAY_CAST_DEEP_FREEZE, target->GetGUID()); + Talk(SAY_CAST_DEEP_FREEZE, target); DoCast(target, SPELL_DEEP_FREEZE); } events.ScheduleEvent(EVENT_DEEP_FREEZE, 35000, 0, PHASE_THREE); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index 3b3f65c7704..f2ee24f5b86 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -622,7 +622,7 @@ class spell_krick_pursuit : public SpellScriptLoader { if (Unit* target = ick->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 200.0f, true)) { - ick->AI()->Talk(SAY_ICK_CHASE_1, target->GetGUID()); + ick->AI()->Talk(SAY_ICK_CHASE_1, target); ick->AddAura(GetSpellInfo()->Id, target); CAST_AI(boss_ick::boss_ickAI, ick->AI())->SetTempThreat(ick->getThreatManager().getThreat(target)); ick->AddThreat(target, float(GetEffectValue())); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 48cc6f89a13..5a58dfa1b4a 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -265,7 +265,7 @@ class boss_tyrannus : public CreatureScript Talk(SAY_MARK_RIMEFANG_1); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true)) { - Talk(SAY_MARK_RIMEFANG_2, target->GetGUID()); + Talk(SAY_MARK_RIMEFANG_2, target); DoCast(target, SPELL_MARK_OF_RIMEFANG); } events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(24000, 26000)); diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 93030492caf..f6973581a59 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -248,7 +248,7 @@ class boss_drakkari_colossus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_drakkari_colossusAI(creature); + return GetInstanceAI<boss_drakkari_colossusAI>(creature); } }; @@ -381,7 +381,7 @@ class boss_drakkari_elemental : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_drakkari_elementalAI(creature); + return GetInstanceAI<boss_drakkari_elementalAI>(creature); } }; @@ -392,7 +392,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_living_mojoAI(creature); + return GetInstanceAI<npc_living_mojoAI>(creature); } struct npc_living_mojoAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index c11db7146d1..e597c4c9e96 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -37,7 +37,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eckAI(creature); + return GetInstanceAI<boss_eckAI>(creature); } struct boss_eckAI : public ScriptedAI @@ -141,7 +141,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ruins_dwellerAI(creature); + return GetInstanceAI<npc_ruins_dwellerAI>(creature); } struct npc_ruins_dwellerAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index 7a5520ab145..0337dc07d8a 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -70,7 +70,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gal_darahAI(creature); + return GetInstanceAI<boss_gal_darahAI>(creature); } struct boss_gal_darahAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 0ccaea316ef..2b621a70a68 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -54,7 +54,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_moorabiAI(creature); + return GetInstanceAI<boss_moorabiAI>(creature); } struct boss_moorabiAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 441149c6dd8..0dcc2ca9c6e 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -76,7 +76,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_slad_ranAI(creature); + return GetInstanceAI<boss_slad_ranAI>(creature); } struct boss_slad_ranAI : public ScriptedAI @@ -184,9 +184,10 @@ public: instance->SetData(DATA_SLAD_RAN_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void JustSummoned(Creature* summoned) OVERRIDE diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 0c859236965..5df69097f9b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -666,7 +666,7 @@ class boss_prince_taldaram_icc : public CreatureScript target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true); // too bad for you raiders, its going to boom if (summon->GetEntry() == NPC_BALL_OF_INFERNO_FLAME && target) - Talk(EMOTE_TALDARAM_FLAME, target->GetGUID()); + Talk(EMOTE_TALDARAM_FLAME, target); if (target) summon->AI()->SetGUID(target->GetGUID()); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 1e5919536f3..65622411623 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -412,7 +412,7 @@ class boss_blood_queen_lana_thel : public CreatureScript case EVENT_SWARMING_SHADOWS: if (Player* target = SelectRandomTarget(false)) { - Talk(EMOTE_SWARMING_SHADOWS, target->GetGUID()); + Talk(EMOTE_SWARMING_SHADOWS, target); Talk(SAY_SWARMING_SHADOWS); DoCast(target, SPELL_SWARMING_SHADOWS); } @@ -601,7 +601,7 @@ class spell_blood_queen_frenzied_bloodthirst : public SpellScriptLoader { if (InstanceScript* instance = GetTarget()->GetInstanceScript()) if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetTarget(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL))) - bloodQueen->AI()->Talk(EMOTE_BLOODTHIRST, GetTarget()->GetGUID()); + bloodQueen->AI()->Talk(EMOTE_BLOODTHIRST, GetTarget()); } void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index cdcd8ed796a..92c97ce6abf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -739,7 +739,7 @@ class npc_putricide_oozeAI : public ScriptedAI if (!UpdateVictim() && !_newTargetSelectTimer) return; - if (!_newTargetSelectTimer && !me->IsNonMeleeSpellCasted(false, false, true, false, true)) + if (!_newTargetSelectTimer && !me->IsNonMeleeSpellCast(false, false, true, false, true)) _newTargetSelectTimer = 1000; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index eddc67b5f5e..88a00e78aae 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -538,7 +538,7 @@ class spell_rotface_mutated_infection : public SpellScriptLoader { if (Creature* caster = GetCaster()->ToCreature()) if (Unit* target = GetHitUnit()) - caster->AI()->Talk(EMOTE_MUTATED_INFECTION, target->GetGUID()); + caster->AI()->Talk(EMOTE_MUTATED_INFECTION, target); } void Register() OVERRIDE diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 1b03022c9bd..64e87ac8873 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -484,7 +484,7 @@ class boss_sindragosa : public CreatureScript case EVENT_ICE_TOMB: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, FrostBeaconSelector(me))) { - Talk(EMOTE_WARN_FROZEN_ORB, target->GetGUID()); + Talk(EMOTE_WARN_FROZEN_ORB, target); DoCast(target, SPELL_ICE_TOMB_DUMMY, true); } events.ScheduleEvent(EVENT_ICE_TOMB, urand(16000, 23000)); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index d8a95d5c1fb..5d1bd1ff934 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -934,7 +934,7 @@ class boss_the_lich_king : public CreatureScript case EVENT_NECROTIC_PLAGUE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR))) { - Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target->GetGUID()); + Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target); DoCast(target, SPELL_NECROTIC_PLAGUE); } events.ScheduleEvent(EVENT_NECROTIC_PLAGUE, urand(30000, 33000), 0, PHASE_ONE); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index bbd700b7edd..9684c7d9cdf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -666,7 +666,7 @@ class npc_the_lich_king_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_the_lich_king_controllerAI(creature); + return GetInstanceAI<npc_the_lich_king_controllerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 9116222a4e0..a04e98e74bc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -628,7 +628,7 @@ class npc_rotting_frost_giant : public CreatureScript case EVENT_DEATH_PLAGUE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true)) { - Talk(EMOTE_DEATH_PLAGUE_WARNING, target->GetGUID()); + Talk(EMOTE_DEATH_PLAGUE_WARNING, target); DoCast(target, SPELL_DEATH_PLAGUE); } _events.ScheduleEvent(EVENT_DEATH_PLAGUE, 15000); @@ -841,7 +841,7 @@ class boss_sister_svalna : public CreatureScript if (spell->Id == SPELL_HURL_SPEAR && me->HasAura(SPELL_AETHER_SHIELD)) { me->RemoveAurasDueToSpell(SPELL_AETHER_SHIELD); - Talk(EMOTE_SVALNA_BROKEN_SHIELD, caster->GetGUID()); + Talk(EMOTE_SVALNA_BROKEN_SHIELD, caster); } } @@ -867,7 +867,7 @@ class boss_sister_svalna : public CreatureScript case SPELL_IMPALING_SPEAR: if (TempSummon* summon = target->SummonCreature(NPC_IMPALING_SPEAR, *target)) { - Talk(EMOTE_SVALNA_IMPALE, target->GetGUID()); + Talk(EMOTE_SVALNA_IMPALE, target); summon->CastCustomSpell(VEHICLE_SPELL_RIDE_HARDCODED, SPELLVALUE_BASE_POINT0, 1, target, false); summon->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_UNK1 | UNIT_FLAG2_ALLOW_ENEMY_INTERACT); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index b873b3ee15c..f6d4b5f786e 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -59,7 +59,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anubrekhanAI(creature); + return GetInstanceAI<boss_anubrekhanAI>(creature); } struct boss_anubrekhanAI : public BossAI diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index b723c2f4139..2d216c78ea8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -216,7 +216,7 @@ class npc_faerlina_add : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_faerlina_addAI(creature); + return GetInstanceAI<npc_faerlina_addAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index 9b336a77e26..04dba1d9fab 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -89,7 +89,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_four_horsemenAI(creature); + return GetInstanceAI<boss_four_horsemenAI>(creature); } struct boss_four_horsemenAI : public BossAI diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index 8980cd063c0..3f751e86149 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -76,7 +76,7 @@ public: { SetGazeOn(who); /// @todo use a script text - me->MonsterTextEmote(EMOTE_NEARBY, 0, true); + me->MonsterTextEmote(EMOTE_NEARBY, NULL, true); } else BossAI::MoveInLineOfSight(who); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index f76c46d96ff..46c16320547 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -500,7 +500,7 @@ class boss_gothik : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gothikAI(creature); + return GetInstanceAI<boss_gothikAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index a8e2783602f..3dad2798d2f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -61,7 +61,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_heiganAI(creature); + return GetInstanceAI<boss_heiganAI>(creature); } struct boss_heiganAI : public BossAI diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index f9efdfce28b..e112be27b21 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -649,7 +649,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_kelthuzadAI(creature); + return GetInstanceAI<boss_kelthuzadAI>(creature); } }; @@ -769,7 +769,7 @@ class npc_kelthuzad_abomination : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_kelthuzad_abominationAI(creature); + return GetInstanceAI<npc_kelthuzad_abominationAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index d90db5e077e..d653be216dc 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -37,23 +37,20 @@ enum Noth NPC_GUARDIAN = 16981 }; -#define SPELL_BLINK RAND(29208, 29209, 29210, 29211) +#define SPELL_BLINK RAND(29208, 29209, 29210, 29211) // Teleport position of Noth on his balcony -#define TELE_X 2631.370f -#define TELE_Y -3529.680f -#define TELE_Z 274.040f -#define TELE_O 6.277f +Position const Teleport = { 2631.370f, -3529.680f, 274.040f, 6.277f }; #define MAX_SUMMON_POS 5 -const float SummonPos[MAX_SUMMON_POS][4] = +Position const SummonPos[MAX_SUMMON_POS] = { - {2728.12f, -3544.43f, 261.91f, 6.04f}, - {2729.05f, -3544.47f, 261.91f, 5.58f}, - {2728.24f, -3465.08f, 264.20f, 3.56f}, - {2704.11f, -3456.81f, 265.53f, 4.51f}, - {2663.56f, -3464.43f, 262.66f, 5.20f}, + { 2728.12f, -3544.43f, 261.91f, 6.04f }, + { 2729.05f, -3544.47f, 261.91f, 5.58f }, + { 2728.24f, -3465.08f, 264.20f, 3.56f }, + { 2704.11f, -3456.81f, 265.53f, 4.51f }, + { 2663.56f, -3464.43f, 262.66f, 5.20f } }; enum Events @@ -65,7 +62,7 @@ enum Events EVENT_WARRIOR, EVENT_BALCONY, EVENT_WAVE, - EVENT_GROUND, + EVENT_GROUND }; class boss_noth : public CreatureScript @@ -73,17 +70,10 @@ class boss_noth : public CreatureScript public: boss_noth() : CreatureScript("boss_noth") { } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new boss_nothAI(creature); - } - struct boss_nothAI : public BossAI { boss_nothAI(Creature* creature) : BossAI(creature, BOSS_NOTH) { } - uint32 waveCount, balconyCount; - void Reset() OVERRIDE { me->SetReactState(REACT_AGGRESSIVE); @@ -104,6 +94,7 @@ public: me->SetReactState(REACT_AGGRESSIVE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); DoZoneInCombat(); + if (me->getThreatManager().isThreatListEmpty()) EnterEvadeMode(); else @@ -138,11 +129,7 @@ public: void SummonUndead(uint32 entry, uint32 num) { for (uint32 i = 0; i < num; ++i) - { - uint32 pos = rand()%MAX_SUMMON_POS; - me->SummonCreature(entry, SummonPos[pos][0], SummonPos[pos][1], SummonPos[pos][2], - SummonPos[pos][3], TEMPSUMMON_CORPSE_DESPAWN, 60000); - } + me->SummonCreature(entry, SummonPos[rand()%MAX_SUMMON_POS], TEMPSUMMON_CORPSE_DESPAWN, 60000); } void UpdateAI(uint32 diff) OVERRIDE @@ -152,6 +139,9 @@ public: events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) @@ -176,7 +166,7 @@ public: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->AttackStop(); me->RemoveAllAuras(); - me->NearTeleportTo(TELE_X, TELE_Y, TELE_Z, TELE_O); + me->NearTeleportTo(Teleport.GetPositionX(), Teleport.GetPositionY(), Teleport.GetPositionZ(), Teleport.GetOrientation()); events.Reset(); events.ScheduleEvent(EVENT_WAVE, urand(2000, 5000)); waveCount = 0; @@ -185,12 +175,20 @@ public: Talk(SAY_SUMMON); switch (balconyCount) { - case 0: SummonUndead(NPC_CHAMPION, RAID_MODE(2, 4)); break; - case 1: SummonUndead(NPC_CHAMPION, RAID_MODE(1, 2)); - SummonUndead(NPC_GUARDIAN, RAID_MODE(1, 2)); break; - case 2: SummonUndead(NPC_GUARDIAN, RAID_MODE(2, 4)); break; - default:SummonUndead(NPC_CHAMPION, RAID_MODE(5, 10)); - SummonUndead(NPC_GUARDIAN, RAID_MODE(5, 10));break; + case 0: + SummonUndead(NPC_CHAMPION, RAID_MODE(2, 4)); + break; + case 1: + SummonUndead(NPC_CHAMPION, RAID_MODE(1, 2)); + SummonUndead(NPC_GUARDIAN, RAID_MODE(1, 2)); + break; + case 2: + SummonUndead(NPC_GUARDIAN, RAID_MODE(2, 4)); + break; + default: + SummonUndead(NPC_CHAMPION, RAID_MODE(5, 10)); + SummonUndead(NPC_GUARDIAN, RAID_MODE(5, 10)); + break; } ++waveCount; events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, urand(30000, 45000)); @@ -211,8 +209,16 @@ public: if (me->HasReactState(REACT_AGGRESSIVE)) DoMeleeAttackIfReady(); } + + private: + uint32 waveCount; + uint32 balconyCount; }; + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetInstanceAI<boss_nothAI>(creature); + } }; void AddSC_boss_noth() diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index 96f2d743cac..f6e91d51af1 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -57,7 +57,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_patchwerkAI(creature); + return GetInstanceAI<boss_patchwerkAI>(creature); } struct boss_patchwerkAI : public BossAI diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 60620804db8..761529ab0f2 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -96,6 +96,8 @@ class boss_sapphiron : public CreatureScript void InitializeAI() OVERRIDE { + _canTheHundredClub = true; + float x, y, z; me->GetPosition(x, y, z); me->SummonGameObject(GO_BIRTH, x, y, z, 0, 0, 0, 0, 0, 0); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 3d121887471..5548e5b7ad4 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -110,7 +110,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_thaddiusAI(creature); + return GetInstanceAI<boss_thaddiusAI>(creature); } struct boss_thaddiusAI : public BossAI @@ -285,7 +285,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_stalaggAI(creature); + return GetInstanceAI<npc_stalaggAI>(creature); } struct npc_stalaggAI : public ScriptedAI @@ -379,7 +379,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_feugenAI(creature); + return GetInstanceAI<npc_feugenAI>(creature); } struct npc_feugenAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 4a1670d1048..81f14206d65 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -106,8 +106,8 @@ enum Spells SPELL_ARCANE_STORM_P_I = 61693, SPELL_VORTEX_1 = 56237, // seems that frezze object animation SPELL_VORTEX_2 = 55873, // visual effect - SPELL_VORTEX_3 = 56105, // this spell must handle all the script - casted by the boss and to himself - SPELL_VORTEX_6 = 73040, // teleport - (casted to all raid), caster vortex bunnies, targets players. + SPELL_VORTEX_3 = 56105, // this spell must handle all the script - cast by the boss and to himself + SPELL_VORTEX_6 = 73040, // teleport - (cast to all raid), caster vortex bunnies, targets players. // Phase II SPELL_TELEPORT_VISUAL_ONLY = 41232, // Light blue animation cast by arcane NPCs when spawned on Hover Disks @@ -117,7 +117,7 @@ enum Spells SPELL_SUMMON_ARCANE_BOMB = 56429, SPELL_ARCANE_BOMB_TRIGGER = 56430, SPELL_ARCANE_BOMB_KNOCKBACK_DAMAGE = 56431, - SPELL_ARCANE_OVERLOAD_1 = 56432, // casted by npc Arcane Overload ID: 30282 + SPELL_ARCANE_OVERLOAD_1 = 56432, // cast by npc Arcane Overload ID: 30282 // SPELL_ARCANE_OVERLOAD_2 = 56435, // Triggered by 56432 - resizing target // SPELL_ARCANE_OVERLOAD_3 = 56438, // Triggered by 56432 - damage reduction SPELL_SURGE_OF_POWER_P_II = 56505, @@ -670,7 +670,7 @@ public: Talk(SAY_BUFF_SPARK); } else if (spell->Id == SPELL_MALYGOS_BERSERK) - sCreatureTextMgr->SendChat(me, EMOTE_HIT_BERSERKER_TIMER, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP); + sCreatureTextMgr->SendChat(me, EMOTE_HIT_BERSERKER_TIMER, NULL, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP); } void MoveInLineOfSight(Unit* who) OVERRIDE @@ -963,7 +963,7 @@ public: { if (passenger->GetTypeId() == TYPEID_PLAYER) { - Talk(EMOTE_SURGE_OF_POWER_WARNING_P3, passenger->GetGUID()); + Talk(EMOTE_SURGE_OF_POWER_WARNING_P3, passenger); DoCast(tempSurgeTarget, SPELL_SURGE_OF_POWER_PHASE_3_10, true); } } @@ -1074,7 +1074,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_malygosAI(creature); + return GetInstanceAI<boss_malygosAI>(creature); } }; @@ -1127,7 +1127,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_portal_eoeAI(creature); + return GetInstanceAI<npc_portal_eoeAI>(creature); } }; @@ -1142,7 +1142,7 @@ public: { _instance = creature->GetInstanceScript(); // Talk range was not enough for this encounter - sCreatureTextMgr->SendChat(me, EMOTE_POWER_SPARK_SUMMONED, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP); + sCreatureTextMgr->SendChat(me, EMOTE_POWER_SPARK_SUMMONED, NULL, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP); MoveToMalygos(); } @@ -1190,7 +1190,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_power_sparkAI(creature); + return GetInstanceAI<npc_power_sparkAI>(creature); } }; @@ -1292,7 +1292,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_melee_hover_diskAI(creature); + return GetInstanceAI<npc_melee_hover_diskAI>(creature); } }; @@ -1374,7 +1374,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_caster_hover_diskAI(creature); + return GetInstanceAI<npc_caster_hover_diskAI>(creature); } }; @@ -1450,7 +1450,7 @@ class npc_nexus_lord : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_nexus_lordAI(creature); + return GetInstanceAI<npc_nexus_lordAI>(creature); } }; @@ -1517,7 +1517,7 @@ class npc_scion_of_eternity : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_scion_of_eternityAI(creature); + return GetInstanceAI<npc_scion_of_eternityAI>(creature); } }; @@ -1575,7 +1575,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_arcane_overloadAI(creature); + return GetInstanceAI<npc_arcane_overloadAI>(creature); } }; @@ -1907,7 +1907,7 @@ class spell_malygos_vortex_visual : public SpellScriptLoader if (InstanceScript* instance = caster->GetInstanceScript()) { - // Teleport spell - I'm not sure but might be it must be casted by each vehicle when it's passenger leaves it. + // Teleport spell - I'm not sure but might be it must be cast by each vehicle when it's passenger leaves it. if (Creature* trigger = caster->GetMap()->GetCreature(instance->GetData64(DATA_TRIGGER))) trigger->CastSpell(targetPlayer, SPELL_VORTEX_6, true); } @@ -2351,7 +2351,7 @@ class spell_malygos_surge_of_power_warning_selector_25 : public SpellScriptLoade if (Vehicle* vehicle = target->GetVehicleKit()) if (Unit* passenger = vehicle->GetPassenger(0)) if (passenger->GetTypeId() == TYPEID_PLAYER) - caster->AI()->Talk(EMOTE_SURGE_OF_POWER_WARNING_P3, passenger->GetGUID()); + caster->AI()->Talk(EMOTE_SURGE_OF_POWER_WARNING_P3, passenger); } } diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index fdc4927763e..5d4167cc053 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -25,9 +25,9 @@ enum Spells SPELL_SPARK = 47751, H_SPELL_SPARK = 57062, SPELL_RIFT_SHIELD = 47748, - SPELL_CHARGE_RIFT = 47747, //Works wrong (affect players, not rifts) - SPELL_CREATE_RIFT = 47743, //Don't work, using WA - SPELL_ARCANE_ATTRACTION = 57063, //No idea, when it's used + SPELL_CHARGE_RIFT = 47747, // Works wrong (affect players, not rifts) + SPELL_CREATE_RIFT = 47743, // Don't work, using WA + SPELL_ARCANE_ATTRACTION = 57063, // No idea, when it's used }; enum Adds @@ -41,14 +41,16 @@ enum Yells SAY_AGGRO = 0, SAY_DEATH = 1, SAY_RIFT = 2, - SAY_SHIELD = 3 + SAY_SHIELD = 3, + SAY_RIFT_EMOTE = 4, // Needs to be added to script + SAY_SHIELD_EMOTE = 5 // Needs to be added to script }; enum RiftSpells { SPELL_CHAOTIC_ENERGY_BURST = 47688, SPELL_CHARGED_CHAOTIC_ENERGY_BURST = 47737, - SPELL_ARCANEFORM = 48019, //Chaotic Rift visual + SPELL_ARCANEFORM = 48019, // Chaotic Rift visual }; Position const RiftLocation[6] = @@ -185,7 +187,7 @@ class boss_anomalus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anomalusAI(creature); + return GetInstanceAI<boss_anomalusAI>(creature); } }; @@ -253,7 +255,7 @@ class npc_chaotic_rift : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_chaotic_riftAI(creature); + return GetInstanceAI<npc_chaotic_riftAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index ef8f5c2d3c4..4d58a3449b9 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -44,7 +44,8 @@ enum Yells SAY_SLAY = 1, SAY_ENRAGE = 2, SAY_DEATH = 3, - SAY_CRYSTAL_NOVA = 4 + SAY_CRYSTAL_NOVA = 4, + SAY_FRENZY = 5 }; enum Misc @@ -60,7 +61,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_keristraszaAI(creature); + return GetInstanceAI<boss_keristraszaAI>(creature); } struct boss_keristraszaAI : public ScriptedAI @@ -115,9 +116,10 @@ public: instance->SetData(DATA_KERISTRASZA_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } bool CheckContainmentSpheres(bool remove_prison = false) @@ -175,6 +177,7 @@ public: if (!bEnrage && HealthBelowPct(25)) { Talk(SAY_ENRAGE); + Talk(SAY_FRENZY); DoCast(me, SPELL_ENRAGE); bEnrage = true; } diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 8a01c40186e..96c8f8c0ec5 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -65,7 +65,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_magus_telestraAI(creature); + return GetInstanceAI<boss_magus_telestraAI>(creature); } struct boss_magus_telestraAI : public ScriptedAI @@ -138,9 +138,10 @@ public: instance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void DoAction(int32 action) OVERRIDE diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index 423937303b5..4321a5846df 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -36,6 +36,7 @@ enum Yells SAY_REFLECT = 3, SAY_CRYSTAL_SPIKES = 4, SAY_KILL = 5, + SAY_FRENZY = 6 }; enum Events @@ -89,6 +90,7 @@ public: { if (!frenzy && HealthBelowPct(25)) { + Talk(SAY_FRENZY); DoCast(me, SPELL_FRENZY); frenzy = true; } @@ -104,9 +106,10 @@ public: instance->SetData(DATA_ORMOROK_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void UpdateAI(uint32 diff) OVERRIDE @@ -157,7 +160,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ormorokAI(creature); + return GetInstanceAI<boss_ormorokAI>(creature); } }; @@ -188,7 +191,11 @@ public: struct npc_crystal_spike_triggerAI : public ScriptedAI { - npc_crystal_spike_triggerAI(Creature* creature) : ScriptedAI(creature) { } + npc_crystal_spike_triggerAI(Creature* creature) : ScriptedAI(creature) + { + _count = 0; + _despawntimer = 0; + } void IsSummonedBy(Unit* owner) OVERRIDE { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index ca6f580633c..1f7d47ccc31 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -99,9 +99,10 @@ class boss_eregos : public CreatureScript DoAction(ACTION_SET_NORMAL_EVENTS); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -165,7 +166,7 @@ class boss_eregos : public CreatureScript if (summon->GetEntry() != NPC_PLANAR_ANOMALY) return; - /// @todo: See why the spell is not casted + /// @todo: See why the spell is not cast summon->CastSpell(summon, SPELL_PLANAR_BLAST, true); } diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index f7c558879d1..db1bb342286 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -248,7 +248,7 @@ class boss_urom : public CreatureScript arcaneExplosionTimer -= diff; } - if (!me->IsNonMeleeSpellCasted(false, true, true)) + if (!me->IsNonMeleeSpellCast(false, true, true)) { if (frostBombTimer <= diff) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index 385f80ae37d..3d1872e3f80 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -241,7 +241,7 @@ class npc_azure_ring_captain : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_ring_captainAI(creature); + return GetInstanceAI<npc_azure_ring_captainAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index 1230868c020..c565f71320d 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -310,17 +310,21 @@ class npc_ruby_emerald_amber_drake : public CreatureScript switch (eventId) { case EVENT_WELCOME: - Talk(WHISPER_DRAKES_WELCOME, me->GetCreatorGUID()); + if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID())) + Talk(WHISPER_DRAKES_WELCOME, creator); _events.ScheduleEvent(EVENT_ABILITIES, 5 * IN_MILLISECONDS); break; case EVENT_ABILITIES: - Talk(WHISPER_DRAKES_ABILITIES, me->GetCreatorGUID()); + if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID())) + Talk(WHISPER_DRAKES_ABILITIES, creator); break; case EVENT_SPECIAL_ATTACK: - Talk(WHISPER_DRAKES_SPECIAL, me->GetCreatorGUID()); + if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID())) + Talk(WHISPER_DRAKES_SPECIAL, creator); break; case EVENT_LOW_HEALTH: - Talk(WHISPER_DRAKES_LOWHEALTH, me->GetCreatorGUID()); + if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID())) + Talk(WHISPER_DRAKES_LOWHEALTH, creator); _healthWarning = false; _events.ScheduleEvent(EVENT_RESET_LOW_HEALTH, 25000); break; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index 944eacda34e..b2cdfe0c854 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -99,7 +99,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_bjarngrimAI(creature); + return GetInstanceAI<boss_bjarngrimAI>(creature); } struct boss_bjarngrimAI : public ScriptedAI @@ -245,7 +245,7 @@ public: if (m_uiChangeStance_Timer <= uiDiff) { //wait for current spell to finish before change stance - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; DoRemoveStanceAura(m_uiStance); @@ -391,7 +391,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_stormforged_lieutenantAI(creature); + return GetInstanceAI<npc_stormforged_lieutenantAI>(creature); } struct npc_stormforged_lieutenantAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index af6beca608d..350a036e861 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -72,7 +72,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ionarAI(creature); + return GetInstanceAI<boss_ionarAI>(creature); } struct boss_ionarAI : public ScriptedAI @@ -137,9 +137,10 @@ public: instance->SetBossState(DATA_IONAR, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void SpellHit(Unit* /*caster*/, const SpellInfo* spell) OVERRIDE @@ -278,7 +279,7 @@ public: Talk(SAY_SPLIT); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); DoCast(me, SPELL_DISPERSE, false); @@ -301,7 +302,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_spark_of_ionarAI(creature); + return GetInstanceAI<npc_spark_of_ionarAI>(creature); } struct npc_spark_of_ionarAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 61687de1b58..a2aceb92832 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -69,7 +69,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lokenAI(creature); + return GetInstanceAI<boss_lokenAI>(creature); } struct boss_lokenAI : public ScriptedAI @@ -124,9 +124,10 @@ public: } } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void UpdateAI(uint32 uiDiff) OVERRIDE diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index b6790a088ad..c916bd06d1f 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -75,7 +75,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_volkhanAI(creature); + return GetInstanceAI<boss_volkhanAI>(creature); } struct boss_volkhanAI : public ScriptedAI @@ -154,9 +154,10 @@ public: instance->SetBossState(DATA_VOLKHAN, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void DespawnGolem() @@ -286,7 +287,7 @@ public: { ++m_uiHealthAmountModifier; - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); Talk(SAY_FORGE); @@ -411,7 +412,7 @@ public: me->AttackStop(); // me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); //Set in DB // me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); //Set in DB - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index e2a8ab25cac..d7fccf22d72 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -315,7 +315,7 @@ class npc_auriaya_seeping_trigger : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_auriaya_seeping_triggerAI(creature); + return GetInstanceAI<npc_auriaya_seeping_triggerAI>(creature); } }; @@ -390,7 +390,7 @@ class npc_sanctum_sentry : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sanctum_sentryAI(creature); + return GetInstanceAI<npc_sanctum_sentryAI>(creature); } }; @@ -466,7 +466,7 @@ class npc_feral_defender : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_feral_defenderAI(creature); + return GetInstanceAI<npc_feral_defenderAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 554556e4084..14588087e83 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -619,7 +619,7 @@ class boss_flame_leviathan_seat : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_flame_leviathan_seatAI(creature); + return GetInstanceAI<boss_flame_leviathan_seatAI>(creature); } }; @@ -898,7 +898,7 @@ class npc_colossus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_colossusAI(creature); + return GetInstanceAI<npc_colossusAI>(creature); } }; @@ -1530,7 +1530,7 @@ class spell_auto_repair : public SpellScriptLoader if (!driver) return; - driver->MonsterTextEmote(EMOTE_REPAIR, driver->GetGUID(), true); + driver->MonsterTextEmote(EMOTE_REPAIR, driver, true); InstanceScript* instance = driver->GetInstanceScript(); if (!instance) @@ -1690,9 +1690,9 @@ class spell_pursue : public SpellScriptLoader for (SeatMap::const_iterator itr = caster->GetVehicleKit()->Seats.begin(); itr != caster->GetVehicleKit()->Seats.end(); ++itr) { - if (IS_PLAYER_GUID(itr->second.Passenger.Guid)) + if (Player* passenger = ObjectAccessor::GetPlayer(*caster, itr->second.Passenger.Guid)) { - caster->AI()->Talk(EMOTE_PURSUE, itr->second.Passenger.Guid); + caster->AI()->Talk(EMOTE_PURSUE, passenger); return; } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 549d496f19d..19f22947b7c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -433,7 +433,7 @@ class boss_freya : public CreatureScript case EVENT_STRENGTHENED_IRON_ROOTS: Talk(EMOTE_IRON_ROOTS); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_ROOTS_FREYA)) - target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be casted by Target self + target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be cast by Target self events.ScheduleEvent(EVENT_STRENGTHENED_IRON_ROOTS, urand(12000, 20000)); break; case EVENT_GROUND_TREMOR: @@ -1146,7 +1146,7 @@ class npc_ancient_water_spirit : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ancient_water_spiritAI(creature); + return GetInstanceAI<npc_ancient_water_spiritAI>(creature); } }; @@ -1213,7 +1213,7 @@ class npc_storm_lasher : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_storm_lasherAI(creature); + return GetInstanceAI<npc_storm_lasherAI>(creature); } }; @@ -1258,7 +1258,7 @@ class npc_snaplasher : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_snaplasherAI(creature); + return GetInstanceAI<npc_snaplasherAI>(creature); } }; @@ -1522,7 +1522,7 @@ class npc_unstable_sun_beam : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_unstable_sun_beamAI(creature); + return GetInstanceAI<npc_unstable_sun_beamAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index 46776ae9b96..d4ef496dba0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -369,7 +369,7 @@ class boss_saronite_animus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_saronite_animusAI(creature); + return GetInstanceAI<boss_saronite_animusAI>(creature); } }; @@ -439,7 +439,7 @@ class npc_saronite_vapors : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_saronite_vaporsAI(creature); + return GetInstanceAI<npc_saronite_vaporsAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 2fb165b935e..344fd7d3e85 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -235,7 +235,7 @@ class npc_flash_freeze : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_flash_freezeAI(creature); + return GetInstanceAI<npc_flash_freezeAI>(creature); } }; @@ -296,7 +296,7 @@ class npc_ice_block : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ice_blockAI(creature); + return GetInstanceAI<npc_ice_blockAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 31c635c7de5..30b0e41f52a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -300,7 +300,7 @@ class boss_razorscale_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_razorscale_controllerAI(creature); + return GetInstanceAI<boss_razorscale_controllerAI>(creature); } }; @@ -735,7 +735,7 @@ class npc_expedition_commander : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_expedition_commanderAI(creature); + return GetInstanceAI<npc_expedition_commanderAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 12925f1c6e1..f8a78975117 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -232,7 +232,7 @@ class boss_xt002 : public CreatureScript events.ScheduleEvent(EVENT_ENRAGE, TIMER_ENRAGE); events.ScheduleEvent(EVENT_GRAVITY_BOMB, TIMER_GRAVITY_BOMB); events.ScheduleEvent(EVENT_SEARING_LIGHT, TIMER_SEARING_LIGHT); - //Tantrum is casted a bit slower the first time. + //Tantrum is cast a bit slower the first time. events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX) * 2); if (!instance) @@ -477,7 +477,7 @@ class npc_xt002_heart : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_xt002_heartAI(creature); + return GetInstanceAI<npc_xt002_heartAI>(creature); } }; @@ -493,7 +493,7 @@ class npc_scrapbot : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_scrapbotAI(creature); + return GetInstanceAI<npc_scrapbotAI>(creature); } struct npc_scrapbotAI : public ScriptedAI @@ -550,7 +550,7 @@ class npc_pummeller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_pummellerAI(creature); + return GetInstanceAI<npc_pummellerAI>(creature); } struct npc_pummellerAI : public ScriptedAI @@ -652,7 +652,7 @@ class npc_boombot : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_boombotAI(creature); + return GetInstanceAI<npc_boombotAI>(creature); } struct npc_boombotAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index 4ba6d948f1a..96a2a52714a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -108,7 +108,7 @@ enum Spells SPELL_SANITY = 63050, SPELL_INSANE_PERIODIC = 64554, SPELL_INSANE = 63120, - //SPELL_CLEAR_INSANE = 63122, // when it should be casted? + //SPELL_CLEAR_INSANE = 63122, // when should it be cast? SPELL_CONSTRICTOR_TENTACLE = 64132, SPELL_CRUSHER_TENTACLE_SUMMON = 64139, SPELL_CORRUPTOR_TENTACLE_SUMMON = 64143, @@ -452,7 +452,7 @@ class boss_voice_of_yogg_saron : public CreatureScript if (Player* player = itr->GetSource()) { if (events.IsInPhase(PHASE_ONE)) - Talk(WHISPER_VOICE_PHASE_1_WIPE, player->GetGUID()); + Talk(WHISPER_VOICE_PHASE_1_WIPE, player); player->RemoveAurasDueToSpell(SPELL_SANITY); player->RemoveAurasDueToSpell(SPELL_INSANE); @@ -531,7 +531,7 @@ class boss_voice_of_yogg_saron : public CreatureScript case EVENT_EXTINGUISH_ALL_LIFE: if (Creature* yogg = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_YOGG_SARON))) { - yogg->AI()->Talk(EMOTE_YOGG_SARON_EXTINGUISH_ALL_LIFE, me->GetGUID()); + yogg->AI()->Talk(EMOTE_YOGG_SARON_EXTINGUISH_ALL_LIFE, me); yogg->CastSpell((Unit*)NULL, SPELL_EXTINGUISH_ALL_LIFE, true); } events.ScheduleEvent(EVENT_EXTINGUISH_ALL_LIFE, 10000); // cast it again after a short while, players can survive @@ -799,7 +799,7 @@ class boss_sara : public CreatureScript DoCast(yogg, SPELL_RIDE_YOGG_SARON_VEHICLE); DoCast(me, SPELL_SHADOWY_BARRIER_SARA); _events.SetPhase(PHASE_TWO); - _events.ScheduleEvent(EVENT_DEATH_RAY, 20000, 0, PHASE_TWO); // almost never casted at scheduled time, why? + _events.ScheduleEvent(EVENT_DEATH_RAY, 20000, 0, PHASE_TWO); // almost never cast at scheduled time, why? _events.ScheduleEvent(EVENT_MALADY_OF_THE_MIND, 18000, 0, PHASE_TWO); _events.ScheduleEvent(EVENT_PSYCHOSIS, 1, 0, PHASE_TWO); _events.ScheduleEvent(EVENT_BRAIN_LINK, 23000, 0, PHASE_TWO); @@ -1071,7 +1071,7 @@ class boss_brain_of_yogg_saron : public CreatureScript uint8 illusion = _instance->GetData(DATA_ILLUSION); if (++_tentaclesKilled >= (illusion == ICECROWN_ILLUSION ? 9 : 8)) { - sCreatureTextMgr->SendChat(me, EMOTE_BRAIN_ILLUSION_SHATTERED, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_AREA); + sCreatureTextMgr->SendChat(me, EMOTE_BRAIN_ILLUSION_SHATTERED, NULL, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_AREA); _summons.DespawnAll(); DoCastAOE(SPELL_SHATTERED_ILLUSION, true); _instance->HandleGameObject(_instance->GetData64(GO_BRAIN_ROOM_DOOR_1 + illusion), true); @@ -1524,8 +1524,8 @@ class npc_observation_ring_keeper : public CreatureScript me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); me->DespawnOrUnsummon(2000); DoCast(SPELL_TELEPORT); - Talk(SAY_KEEPER_CHOSEN_1, player->GetGUID()); - Talk(SAY_KEEPER_CHOSEN_2, player->GetGUID()); + Talk(SAY_KEEPER_CHOSEN_1, player); + Talk(SAY_KEEPER_CHOSEN_2, player); switch (me->GetEntry()) { @@ -2234,7 +2234,7 @@ class spell_yogg_saron_boil_ominously : public SpellScriptLoader // 63030 if (!target->HasAura(SPELL_FLASH_FREEZE) && !GetCaster()->HasAura(SPELL_SUMMON_GUARDIAN_1) && !GetCaster()->HasAura(SPELL_SUMMON_GUARDIAN_2)) { if (Creature* caster = GetCaster()->ToCreature()) - caster->AI()->Talk(EMOTE_OMINOUS_CLOUD_PLAYER_TOUCH, target->GetGUID()); + caster->AI()->Talk(EMOTE_OMINOUS_CLOUD_PLAYER_TOUCH, target); GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_GUARDIAN_1, true); } @@ -2905,7 +2905,7 @@ class spell_yogg_saron_insane : public SpellScriptLoader // 63120 { if (Unit* caster = GetCaster()) if (Creature* yogg = caster->ToCreature()) - yogg->AI()->Talk(WHISPER_VOICE_INSANE, GetTarget()->GetGUID()); + yogg->AI()->Talk(WHISPER_VOICE_INSANE, GetTarget()); GetTarget()->CastSpell(GetTarget(), SPELL_INSANE_VISUAL, true); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 75aa2994dbc..68f59419998 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -194,7 +194,7 @@ class boss_keleseth : public CreatureScript if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_FROST_TOMB)) { Talk(SAY_FROST_TOMB); - Talk(SAY_FROST_TOMB_EMOTE, target->GetGUID()); + Talk(SAY_FROST_TOMB_EMOTE, target); DoCast(target, SPELL_FROST_TOMB_STUN, true); // checked from sniffs - the player casts the spell @@ -212,7 +212,7 @@ class boss_keleseth : public CreatureScript void SummonSkeletons() { - // I could not found any spell casted for this + // I could not found any spell cast for this for (uint8 i = 0; i < 4; ++i) me->SummonCreature(NPC_SKELETON, SkeletonSpawnPoint[0][0], SkeletonSpawnPoint[0][1], SKELETONSPAWN_Z, 0); } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp index 5247f9019da..42fa0242df2 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -358,7 +358,7 @@ class boss_dalronn_the_controller : public CreatureScript if (ShadowBolt_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) DoCast(target, SPELL_SHADOW_BOLT); @@ -370,7 +370,7 @@ class boss_dalronn_the_controller : public CreatureScript if (Debilitate_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) DoCast(target, SPELL_DEBILITATE); @@ -384,7 +384,7 @@ class boss_dalronn_the_controller : public CreatureScript { if (Summon_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { DoCast(me, H_SPELL_SUMMON_SKELETONS); Summon_Timer = (rand()%10000) + 20000; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp index 77c19422da0..5666c701807 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp @@ -193,9 +193,10 @@ public: //Talk(SAY_DEATH); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void DoAction(int32 actionId) OVERRIDE @@ -255,7 +256,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ravenous_furbolgAI(creature); + return GetInstanceAI<npc_ravenous_furbolgAI>(creature); } struct npc_ravenous_furbolgAI : public ScriptedAI @@ -363,7 +364,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frenzied_worgenAI(creature); + return GetInstanceAI<npc_frenzied_worgenAI>(creature); } struct npc_frenzied_worgenAI : public ScriptedAI @@ -474,7 +475,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ferocious_rhinoAI(creature); + return GetInstanceAI<npc_ferocious_rhinoAI>(creature); } struct npc_ferocious_rhinoAI : public ScriptedAI @@ -589,7 +590,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_massive_jormungarAI(creature); + return GetInstanceAI<npc_massive_jormungarAI>(creature); } struct npc_massive_jormungarAI : public ScriptedAI @@ -690,7 +691,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_palehoof_orbAI(creature); + return GetInstanceAI<npc_palehoof_orbAI>(creature); } struct npc_palehoof_orbAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 01fcd9a665d..6bbecb35cfb 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -133,7 +133,7 @@ enum Spells { // Skadi Spells SPELL_CRUSH = 50234, - SPELL_POISONED_SPEAR = 50225, //isn't being casted =/ + SPELL_POISONED_SPEAR = 50225, //isn't being cast SPELL_WHIRLWIND = 50228, //random target, but not the tank approx. every 20s SPELL_RAPID_FIRE = 56570, SPELL_HARPOON_DAMAGE = 56578, @@ -162,7 +162,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_skadiAI(creature); + return GetInstanceAI<boss_skadiAI>(creature); } struct boss_skadiAI : public ScriptedAI @@ -415,9 +415,10 @@ public: instance->SetBossState(DATA_SKADI_THE_RUTHLESS, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void SpawnMobs() diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 1ceddd4bd66..6fc0ffa2d45 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -268,7 +268,7 @@ class npc_tempest_minion : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tempest_minionAI(creature); + return GetInstanceAI<npc_tempest_minionAI>(creature); } }; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index e8e54184cb3..7a42983d4e8 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -277,7 +277,7 @@ class npc_frozen_orb_stalker : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frozen_orb_stalkerAI(creature); + return GetInstanceAI<npc_frozen_orb_stalkerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 80ebc01debc..5a2bdaad803 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -50,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_cyanigosaAI(creature); + return GetInstanceAI<boss_cyanigosaAI>(creature); } struct boss_cyanigosaAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 883ea8fa0c0..eb129bcc774 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -49,7 +49,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_erekemAI(creature); + return GetInstanceAI<boss_erekemAI>(creature); } struct boss_erekemAI : public ScriptedAI @@ -266,7 +266,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_erekem_guardAI(creature); + return GetInstanceAI<npc_erekem_guardAI>(creature); } struct npc_erekem_guardAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 4852b6cea07..d190c8ae90d 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -78,7 +78,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ichoronAI(creature); + return GetInstanceAI<boss_ichoronAI>(creature); } struct boss_ichoronAI : public ScriptedAI @@ -342,7 +342,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ichor_globuleAI(creature); + return GetInstanceAI<npc_ichor_globuleAI>(creature); } struct npc_ichor_globuleAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 964f6b75e72..f8b21707a7a 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -37,7 +37,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lavanthorAI(creature); + return GetInstanceAI<boss_lavanthorAI>(creature); } struct boss_lavanthorAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index d5dd41e7a90..7da9f75ffe6 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -33,7 +33,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_moraggAI(creature); + return GetInstanceAI<boss_moraggAI>(creature); } struct boss_moraggAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 8b39c48fb92..a3e4bfe43f6 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -63,7 +63,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_xevozzAI(creature); + return GetInstanceAI<boss_xevozzAI>(creature); } struct boss_xevozzAI : public ScriptedAI @@ -231,7 +231,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ethereal_sphereAI(creature); + return GetInstanceAI<npc_ethereal_sphereAI>(creature); } struct npc_ethereal_sphereAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index 3db389ac703..bcb1a60c744 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -58,7 +58,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_zuramatAI(creature); + return GetInstanceAI<boss_zuramatAI>(creature); } struct boss_zuramatAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 4ff0f2d36e9..3e16f38001b 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -160,7 +160,7 @@ public: bool bActive; bool bWiped; - bool bIsDoorSpellCasted; + bool bIsDoorSpellCast; bool bCrystalActivated; bool defenseless; @@ -210,7 +210,7 @@ public: uiCyanigosaEventTimer = 3*IN_MILLISECONDS; bActive = false; - bIsDoorSpellCasted = false; + bIsDoorSpellCast = false; bCrystalActivated = false; defenseless = true; uiMainEventPhase = NOT_STARTED; diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index c78a1ee1740..491d3bd38ac 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -307,7 +307,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sinclariAI(creature); + return GetInstanceAI<npc_sinclariAI>(creature); } struct npc_sinclariAI : public ScriptedAI @@ -428,7 +428,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_saboteurAI(creature); + return GetInstanceAI<npc_azure_saboteurAI>(creature); } struct npc_azure_saboteurAI : public npc_escortAI @@ -552,7 +552,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_teleportation_portalAI(creature); + return GetInstanceAI<npc_teleportation_portalAI>(creature); } struct npc_teleportation_portalAI : public ScriptedAI @@ -649,7 +649,7 @@ public: uiSpawnTimer = SPAWN_TIME; } else uiSpawnTimer -= diff; - if (bPortalGuardianOrKeeperOrEliteSpawn && !me->IsNonMeleeSpellCasted(false)) + if (bPortalGuardianOrKeeperOrEliteSpawn && !me->IsNonMeleeSpellCast(false)) { me->Kill(me, false); me->RemoveCorpse(); @@ -809,7 +809,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_invaderAI(creature); + return GetInstanceAI<npc_azure_invaderAI>(creature); } struct npc_azure_invaderAI : public violet_hold_trashAI @@ -887,7 +887,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_binderAI(creature); + return GetInstanceAI<npc_azure_binderAI>(creature); } struct npc_azure_binderAI : public violet_hold_trashAI @@ -965,7 +965,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_mage_slayerAI(creature); + return GetInstanceAI<npc_azure_mage_slayerAI>(creature); } struct npc_azure_mage_slayerAI : public violet_hold_trashAI @@ -1025,7 +1025,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_raiderAI(creature); + return GetInstanceAI<npc_azure_raiderAI>(creature); } struct npc_azure_raiderAI : public violet_hold_trashAI @@ -1131,7 +1131,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_stalkerAI(creature); + return GetInstanceAI<npc_azure_stalkerAI>(creature); } }; @@ -1210,7 +1210,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_spellbreakerAI(creature); + return GetInstanceAI<npc_azure_spellbreakerAI>(creature); } }; @@ -1221,7 +1221,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_captainAI(creature); + return GetInstanceAI<npc_azure_captainAI>(creature); } struct npc_azure_captainAI : public violet_hold_trashAI @@ -1273,7 +1273,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_sorcerorAI(creature); + return GetInstanceAI<npc_azure_sorcerorAI>(creature); } struct npc_azure_sorcerorAI : public violet_hold_trashAI diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index f5700358150..420b01d3564 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -51,6 +51,9 @@ EndContentData */ enum Sinkhole { + GO_EXPLOSIVES_CART = 188160, + NPC_SCOURGED_BURROWER = 26250, + QUEST_PLUG_THE_SINKHOLES = 11897, SPELL_SET_CART = 46797, SPELL_EXPLODE_CART = 46799, SPELL_SUMMON_CART = 46798, @@ -83,7 +86,7 @@ public: return; Player* player = caster->ToPlayer(); - if (player && player->GetQuestStatus(11897) == QUEST_STATUS_INCOMPLETE) + if (player && player->GetQuestStatus(QUEST_PLUG_THE_SINKHOLES) == QUEST_STATUS_INCOMPLETE) { phase = 1; casterGuid = caster->GetGUID(); @@ -104,13 +107,13 @@ public: case 1: DoCast(me, SPELL_EXPLODE_CART, true); DoCast(me, SPELL_SUMMON_CART, true); - if (GameObject* cart = me->FindNearestGameObject(188160, 3)) + if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f)) cart->SetUInt32Value(GAMEOBJECT_FACTION, 14); phaseTimer = 3000; phase = 2; break; case 2: - if (GameObject* cart = me->FindNearestGameObject(188160, 3)) + if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f)) cart->UseDoorOrButton(); DoCast(me, SPELL_EXPLODE_CART, true); phaseTimer = 3000; @@ -123,7 +126,7 @@ public: break; case 5: DoCast(me, SPELL_SUMMON_WORM, true); - if (Unit* worm = me->FindNearestCreature(26250, 3)) + if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f)) { worm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); worm->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE); @@ -133,7 +136,7 @@ public: break; case 6: DoCast(me, SPELL_EXPLODE_CART, true); - if (Unit* worm = me->FindNearestCreature(26250, 3)) + if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f)) { me->Kill(worm); worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); @@ -168,6 +171,12 @@ public: ## npc_khunok_the_behemoth ######*/ +enum Khunok +{ + NPC_ORPHANED_MAMMOTH_CALF = 25861, + SPELL_MAMMOTH_CALF_ESCORT_CREDIT = 46231 +}; + class npc_khunok_the_behemoth : public CreatureScript { public: @@ -185,13 +194,13 @@ public: if (who->GetTypeId() != TYPEID_UNIT) return; - if (who->GetEntry() == 25861 && me->IsWithinDistInMap(who, 10.0f)) + if (who->GetEntry() == NPC_ORPHANED_MAMMOTH_CALF && me->IsWithinDistInMap(who, 10.0f)) { if (Unit* owner = who->GetOwner()) { if (owner->GetTypeId() == TYPEID_PLAYER) { - owner->CastSpell(owner, 46231, true); + owner->CastSpell(owner, SPELL_MAMMOTH_CALF_ESCORT_CREDIT, true); who->ToCreature()->DespawnOrUnsummon(); } } @@ -341,11 +350,19 @@ public: ## npc_nerubar_victim ######*/ -#define WARSONG_PEON 25270 +enum Nerubar +{ + NPC_WARSONG_PEON = 25270, + QUEST_TAKEN_BY_THE_SCOURGE = 11611, + SPELL_FREED_WARSONG_MAGE = 45526, + SPELL_FREED_WARSONG_SHAMAN = 45527, + SPELL_FREED_WARSONG_WARRIOR = 45514, + SPELL_FREED_WARSONG_PEON = 45532 +}; const uint32 nerubarVictims[3] = { - 45526, 45527, 45514 + SPELL_FREED_WARSONG_MAGE, SPELL_FREED_WARSONG_SHAMAN, SPELL_FREED_WARSONG_WARRIOR }; class npc_nerubar_victim : public CreatureScript @@ -368,13 +385,13 @@ public: if (!player) return; - if (player->GetQuestStatus(11611) == QUEST_STATUS_INCOMPLETE) + if (player->GetQuestStatus(QUEST_TAKEN_BY_THE_SCOURGE) == QUEST_STATUS_INCOMPLETE) { uint8 uiRand = urand(0, 99); if (uiRand < 25) { - player->CastSpell(me, 45532, true); - player->KilledMonsterCredit(WARSONG_PEON, 0); + player->CastSpell(me, SPELL_FREED_WARSONG_PEON, true); + player->KilledMonsterCredit(NPC_WARSONG_PEON, 0); } else if (uiRand < 75) player->CastSpell(me, nerubarVictims[urand(0, 2)], true); @@ -411,7 +428,10 @@ public: struct npc_jennyAI : public ScriptedAI { - npc_jennyAI(Creature* creature) : ScriptedAI(creature) { } + npc_jennyAI(Creature* creature) : ScriptedAI(creature) + { + setCrateNumber = false; + } bool setCrateNumber; @@ -422,6 +442,9 @@ public: me->SetReactState(REACT_PASSIVE); + if (!me->GetOwner()) + return; + switch (me->GetOwner()->ToPlayer()->GetTeamId()) { case TEAM_ALLIANCE: @@ -1026,9 +1049,9 @@ public: } } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { - npc_escortAI::UpdateAI(uiDiff); + npc_escortAI::UpdateAI(diff); if (arthasInPosition && talbotInPosition) { @@ -1045,7 +1068,7 @@ public: SetEscortPaused(false); } - if (phaseTimer <= uiDiff) + if (phaseTimer <= diff) { Creature* talbot = me->GetCreature(*me, talbotGUID); Creature* arthas = me->GetCreature(*me, arthasGUID); @@ -1196,7 +1219,7 @@ public: phaseTimer = 0; phase = 0; } - } else phaseTimer -= uiDiff; + } else phaseTimer -= diff; if (!UpdateVictim()) return; @@ -1369,7 +1392,7 @@ public: CAST_AI(npc_thassarian::npc_thassarianAI, summoner->ToCreature()->AI())->talbotInPosition = true; } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { if (bCheck) { @@ -1385,23 +1408,23 @@ public: if (me->GetAreaId() == 4125) { - if (shadowBoltTimer <= uiDiff) + if (shadowBoltTimer <= diff) { DoCastVictim(SPELL_SHADOW_BOLT); shadowBoltTimer = urand(5000, 12000); - } else shadowBoltTimer -= uiDiff; + } else shadowBoltTimer -= diff; - if (deflectionTimer <= uiDiff) + if (deflectionTimer <= diff) { DoCastVictim(SPELL_DEFLECTION); deflectionTimer = urand(20000, 25000); - } else deflectionTimer -= uiDiff; + } else deflectionTimer -= diff; - if (soulBlastTimer <= uiDiff) + if (soulBlastTimer <= diff) { DoCastVictim(SPELL_SOUL_BLAST); soulBlastTimer = urand(12000, 18000); - } else soulBlastTimer -= uiDiff; + } else soulBlastTimer -= diff; } DoMeleeAttackIfReady(); @@ -1491,11 +1514,11 @@ public: } } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { - ScriptedAI::UpdateAI(uiDiff); + ScriptedAI::UpdateAI(diff); - if (phaseTimer <= uiDiff) + if (phaseTimer <= diff) { switch (phase) { @@ -1551,7 +1574,7 @@ public: phase = 0; break; } - } else phaseTimer -= uiDiff; + } else phaseTimer -= diff; if (!UpdateVictim()) return; @@ -1632,7 +1655,7 @@ public: } } - void UpdateAI(uint32 /*uiDiff*/) OVERRIDE + void UpdateAI(uint32 /*diff*/) OVERRIDE { if (!UpdateVictim()) return; @@ -1728,7 +1751,7 @@ public: Talk(SAY_IMPRISIONED_BERYL_1); break; case 2: - Talk(SAY_IMPRISIONED_BERYL_2, caster->GetGUID()); + Talk(SAY_IMPRISIONED_BERYL_2, caster); break; case 3: Talk(SAY_IMPRISIONED_BERYL_3); @@ -1740,7 +1763,7 @@ public: Talk(SAY_IMPRISIONED_BERYL_5); break; case 6: - Talk(SAY_IMPRISIONED_BERYL_6, caster->GetGUID()); + Talk(SAY_IMPRISIONED_BERYL_6, caster); break; case 7: Talk(SAY_IMPRISIONED_BERYL_7); @@ -1872,7 +1895,7 @@ public: if (quest->GetQuestId() == QUEST_GET_ME_OUTA_HERE) { creature->SetStandState(UNIT_STAND_STATE_STAND); - creature->AI()->Talk(SAY_BONKER_2, player->GetGUID()); + creature->AI()->Talk(SAY_BONKER_2, player); CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, player->GetGUID()); } return true; diff --git a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp index 34a217b6418..4c45bed1af8 100644 --- a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp +++ b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp @@ -56,21 +56,21 @@ public: SetCombatMovement(false); } - uint64 uiTargetGUID; + uint64 targetGUID; void Reset() OVERRIDE { - uiTargetGUID = 0; + targetGUID = 0; } - void UpdateAI(uint32 /*uiDiff*/) OVERRIDE + void UpdateAI(uint32 /*diff*/) OVERRIDE { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; if (me->GetEntry() == NPC_WARMAGE_SARINA) { - if (!uiTargetGUID) + if (!targetGUID) { std::list<Creature*> orbList; GetCreatureListWithEntryInGrid(orbList, me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f); @@ -82,7 +82,7 @@ public: { if (pOrb->GetPositionY() < 1000) { - uiTargetGUID = pOrb->GetGUID(); + targetGUID = pOrb->GetGUID(); break; } } @@ -91,13 +91,13 @@ public: } }else { - if (!uiTargetGUID) + if (!targetGUID) if (Creature* pOrb = GetClosestCreatureWithEntry(me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f)) - uiTargetGUID = pOrb->GetGUID(); + targetGUID = pOrb->GetGUID(); } - if (Creature* pOrb = me->GetCreature(*me, uiTargetGUID)) + if (Creature* pOrb = me->GetCreature(*me, targetGUID)) DoCast(pOrb, SPELL_TRANSITUS_SHIELD_BEAM); } diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index 083b4f879ee..cf66ef4fb47 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -35,8 +35,8 @@ Script Data End */ enum Spells { - SPELL_TRESPASSER_A = 54028, - SPELL_TRESPASSER_H = 54029, + SPELL_TRESPASSER_A = 54028, + SPELL_TRESPASSER_H = 54029, SPELL_SUNREAVER_DISGUISE_FEMALE = 70973, SPELL_SUNREAVER_DISGUISE_MALE = 70974, @@ -46,8 +46,10 @@ enum Spells enum NPCs // All outdoor guards are within 35.0f of these NPCs { - NPC_APPLEBOUGH_A = 29547, - NPC_SWEETBERRY_H = 29715, + NPC_APPLEBOUGH_A = 29547, + NPC_SWEETBERRY_H = 29715, + NPC_SILVER_COVENANT_GUARDIAN_MAGE = 29254, + NPC_SUNREAVER_GUARDIAN_MAGE = 29255, }; class npc_mageguard_dalaran : public CreatureScript @@ -89,7 +91,7 @@ public: switch (me->GetEntry()) { - case 29254: + case NPC_SILVER_COVENANT_GUARDIAN_MAGE: if (player->GetTeam() == HORDE) // Horde unit found in Alliance area { if (GetClosestCreatureWithEntry(me, NPC_APPLEBOUGH_A, 32.0f)) @@ -101,7 +103,7 @@ public: DoCast(who, SPELL_TRESPASSER_A); // Teleport the Horde unit out } break; - case 29255: + case NPC_SUNREAVER_GUARDIAN_MAGE: if (player->GetTeam() == ALLIANCE) // Alliance unit found in Horde area { if (GetClosestCreatureWithEntry(me, NPC_SWEETBERRY_H, 32.0f)) @@ -133,7 +135,7 @@ public: enum HiraSnowdawn { - SPELL_COLD_WEATHER_FLYING = 54197 + SPELL_COLD_WEATHER_FLYING = 54197 }; #define GOSSIP_TEXT_TRAIN_HIRA "I seek training to ride a steed." diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 2c311e20a79..9673fef0a1e 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -446,12 +446,12 @@ public: if (roll == 1) // friendly version { tree->CastSpell(player, SPELL_CREATE_ITEM_BARK); - tree->AI()->Talk(SAY_WALKER_FRIENDLY, player->GetGUID()); + tree->AI()->Talk(SAY_WALKER_FRIENDLY, player); tree->DespawnOrUnsummon(1000); } else if (roll == 0) // enemy version { - tree->AI()->Talk(SAY_WALKER_ENEMY, player->GetGUID()); + tree->AI()->Talk(SAY_WALKER_ENEMY, player); tree->setFaction(FACTION_WALKER_ENEMY); tree->Attack(player, true); } @@ -517,7 +517,7 @@ enum WyrmDefenderEnum // Spells data SPELL_CHARACTER_SCRIPT = 49213, SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE = 52421, // ID - 52421 Wyrmrest Defender: On Low Health Boss Emote to Controller - Random /self/ - SPELL_RENEW = 49263, // casted to heal drakes + SPELL_RENEW = 49263, // cast to heal drakes SPELL_WYRMREST_DEFENDER_MOUNT = 49256, // Texts data @@ -603,13 +603,13 @@ class npc_wyrmrest_defender : public CreatureScript switch (spell->Id) { case SPELL_WYRMREST_DEFENDER_MOUNT: - Talk(WHISPER_MOUNTED, me->GetCharmerOrOwnerGUID()); + Talk(WHISPER_MOUNTED, me->GetCharmerOrOwner()); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); break; // Both below are for checking low hp warning case SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE: - Talk(BOSS_EMOTE_ON_LOW_HEALTH, me->GetCharmerOrOwnerGUID()); + Talk(BOSS_EMOTE_ON_LOW_HEALTH, me->GetCharmerOrOwner()); break; case SPELL_RENEW: if (!hpWarningReady && RenewRecoveryChecker <= 100) @@ -663,7 +663,7 @@ class npc_torturer_lecraft : public CreatureScript _events.ScheduleEvent(EVENT_KIDNEY_SHOT, urand(12000, 15000)); if (Player* player = who->ToPlayer()) - Talk (SAY_AGGRO, player->GetGUID()); + Talk (SAY_AGGRO, player); } void SpellHit(Unit* caster, const SpellInfo* spell) OVERRIDE @@ -679,7 +679,7 @@ class npc_torturer_lecraft : public CreatureScript if (_playerGUID != player->GetGUID()) return; - Talk(_textCounter, player->GetGUID()); + Talk(_textCounter, player); if (_textCounter == 5) player->KilledMonsterCredit(NPC_TORTURER_LECRAFT, 0); diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 6587f0536b3..1f04089af87 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -160,7 +160,7 @@ public: if (player) { player->GroupEventHappens(QUEST_PERILOUS_ADVENTURE, me); - Talk(SAY_QUEST_COMPLETE, player->GetGUID()); + Talk(SAY_QUEST_COMPLETE, player); } me->SetWalk(false); break; diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index a0b6524bd89..04331a88cca 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -225,7 +225,7 @@ public: break; case GOSSIP_ACTION_INFO_DEF+2: player->CLOSE_GOSSIP_MENU(); - creature->AI()->Talk(SAY_TEXTID_VEKJIK1, player->GetGUID()); + creature->AI()->Talk(SAY_TEXTID_VEKJIK1, player); player->AreaExploredOrEventHappens(QUEST_MAKING_PEACE); creature->CastSpell(player, SPELL_FREANZYHEARTS_FURY, false); break; @@ -772,7 +772,7 @@ public: { if (Creature* presence = caster->FindNearestCreature(NPC_PRESENCE, 50.0f)) { - presence->AI()->Talk(WHISPER_ACTIVATE, caster->GetGUID()); + presence->AI()->Talk(WHISPER_ACTIVATE, caster); presence->CastSpell(presence, SPELL_FREYA_DUMMY, true); // will target plants // Freya Dummy could be scripted with the following code @@ -1110,10 +1110,10 @@ public: switch (GetSpellInfo()->Id) { case SPELL_CORRECT_TRACKS: - player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_CORRECT_TRACKS), LANG_UNIVERSAL, player->GetGUID()); + player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_CORRECT_TRACKS), LANG_UNIVERSAL, player); break; case SPELL_INCORRECT_TRACKS: - player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_INCORRECT_TRACKS), LANG_UNIVERSAL, player->GetGUID()); + player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_INCORRECT_TRACKS), LANG_UNIVERSAL, player); break; default: break; diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index c09c817a2bf..e089d736992 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -57,7 +57,7 @@ public: switch (waypointId) { case 26: - Talk(SAY_END_WP_REACHED, player->GetGUID()); + Talk(SAY_END_WP_REACHED, player); break; case 27: player->GroupEventHappens(QUEST_BITTER_DEPARTURE, me); @@ -282,7 +282,7 @@ public: if (Vehicle* vehicle = me->GetVehicleKit()) if (Unit* passenger = vehicle->GetPassenger(0)) { - Talk(TEXT_EMOTE, passenger->GetGUID()); + Talk(TEXT_EMOTE, passenger); me->GetMotionMaster()->MovePath(NPC_DRAKE, false); } } @@ -339,17 +339,9 @@ public: } } - void WaypointReached(uint32 /*waypointId*/) OVERRIDE - { - } - - void JustDied(Unit* /*killer*/) OVERRIDE - { - } - - void OnCharmed(bool /*apply*/) OVERRIDE - { - } + void WaypointReached(uint32 /*waypointId*/) OVERRIDE { } + void JustDied(Unit* /*killer*/) OVERRIDE { } + void OnCharmed(bool /*apply*/) OVERRIDE { } void UpdateAI(uint32 diff) OVERRIDE { @@ -414,7 +406,6 @@ class npc_hyldsmeet_protodrake : public CreatureScript } }; - /*##### # npc_brann_bronzebeard for Quest 13285 "Forging the Keystone" #####*/ @@ -438,19 +429,19 @@ enum BrannBronzebeard SAY_VOICE_4 = 3, SAY_VOICE_5 = 4, - EVENT_SCRIPT_1 = 1, - EVENT_SCRIPT_2 = 2, - EVENT_SCRIPT_3 = 3, - EVENT_SCRIPT_4 = 4, - EVENT_SCRIPT_5 = 5, - EVENT_SCRIPT_6 = 6, - EVENT_SCRIPT_7 = 7, - EVENT_SCRIPT_8 = 8, - EVENT_SCRIPT_9 = 9, - EVENT_SCRIPT_10 = 10, - EVENT_SCRIPT_11 = 11, - EVENT_SCRIPT_12 = 12, - EVENT_SCRIPT_13 = 13 + EVENT_SCRIPT_1 = 3, + EVENT_SCRIPT_2 = 4, + EVENT_SCRIPT_3 = 5, + EVENT_SCRIPT_4 = 6, + EVENT_SCRIPT_5 = 7, + EVENT_SCRIPT_6 = 8, + EVENT_SCRIPT_7 = 9, + EVENT_SCRIPT_8 = 10, + EVENT_SCRIPT_9 = 11, + EVENT_SCRIPT_10 = 12, + EVENT_SCRIPT_11 = 13, + EVENT_SCRIPT_12 = 14, + EVENT_SCRIPT_13 = 15 }; class npc_brann_bronzebeard_keystone : public CreatureScript @@ -486,7 +477,8 @@ public: switch (eventId) { case EVENT_SCRIPT_1: - Talk(SAY_BRANN_1, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + Talk(SAY_BRANN_1, player); me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER); if (Creature* voice = me->SummonCreature(NPC_A_DISTANT_VOICE, 7863.43f, -1396.585f, 1538.076f, 2.949606f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 49000)) voiceGUID = voice->GetGUID(); @@ -506,36 +498,41 @@ public: if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) { voice->AI()->DoCast(voice, SPELL_RESURRECTION); - voice->AI()->Talk(SAY_VOICE_1, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + voice->AI()->Talk(SAY_VOICE_1, player); } if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_1, 7860.273f, -1383.622f, 1538.302f, -1.658062f, 0, 0, -0.737277f, 0.6755905f, 0)) objectGUID[objectCounter++] = go->GetGUID(); events.ScheduleEvent(EVENT_SCRIPT_5, 6000); break; case EVENT_SCRIPT_5: - if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) - voice->AI()->Talk(SAY_VOICE_2, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) + voice->AI()->Talk(SAY_VOICE_2, player); if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_2, 7875.67f, -1387.266f, 1538.323f, -2.373644f, 0, 0, -0.9271832f, 0.3746083f, 0)) objectGUID[objectCounter++] = go->GetGUID(); events.ScheduleEvent(EVENT_SCRIPT_6, 6000); break; case EVENT_SCRIPT_6: - if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) - voice->AI()->Talk(SAY_VOICE_3, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) + voice->AI()->Talk(SAY_VOICE_3, player); if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_3, 7879.212f, -1401.175f, 1538.279f, 2.967041f, 0, 0, 0.9961939f, 0.08716504f, 0)) objectGUID[objectCounter++] = go->GetGUID(); events.ScheduleEvent(EVENT_SCRIPT_7, 6000); break; case EVENT_SCRIPT_7: - if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) - voice->AI()->Talk(SAY_VOICE_4, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) + voice->AI()->Talk(SAY_VOICE_4, player); if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_4, 7868.944f, -1411.18f, 1538.213f, 2.111848f, 0, 0, 0.8703556f, 0.4924237f, 0)) objectGUID[objectCounter++] = go->GetGUID(); events.ScheduleEvent(EVENT_SCRIPT_8, 6000); break; case EVENT_SCRIPT_8: - if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) - voice->AI()->Talk(SAY_VOICE_5, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID)) + voice->AI()->Talk(SAY_VOICE_5, player); if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_5, 7855.11f, -1406.839f, 1538.42f, 1.151916f, 0, 0, 0.5446386f, 0.8386708f, 0)) objectGUID[objectCounter] = go->GetGUID(); events.ScheduleEvent(EVENT_SCRIPT_9, 6000); @@ -546,14 +543,17 @@ public: events.ScheduleEvent(EVENT_SCRIPT_10, 6000); break; case EVENT_SCRIPT_10: - Talk(SAY_BRANN_2, playerGUID); if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + { + Talk(SAY_BRANN_2, player); player->KilledMonsterCredit(me->GetEntry()); + } events.ScheduleEvent(EVENT_SCRIPT_11, 6000); break; case EVENT_SCRIPT_11: me->SetFacingTo(2.932153f); - Talk(SAY_BRANN_3, playerGUID); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + Talk(SAY_BRANN_3, player); for (uint8 i = 0; i < 5; ++i) if (GameObject* go = ObjectAccessor::GetGameObject(*me, objectGUID[i])) @@ -588,64 +588,131 @@ public: } }; -enum CloseRift +/*##### +# Quest 13010 Krolmir, Hammer of Storms +#####*/ + +enum JokkumScriptcast { - SPELL_DESPAWN_RIFT = 61665 + NPC_KINGJOKKUM = 30331, + NPC_THORIM = 30390, + PATH_JOKKUM = 2072200, + PATH_JOKKUM_END = 2072201, + SAY_HOLD_ON = 0, + SAY_JOKKUM_1 = 1, + SAY_JOKKUM_2 = 2, + SAY_JOKKUM_3 = 3, + SAY_JOKKUM_4 = 4, + SAY_JOKKUM_5 = 5, + SAY_JOKKUM_6 = 6, + SAY_JOKKUM_7 = 7, + SAY_JOKKUM_8 = 8, + SAY_THORIM_1 = 0, + SAY_THORIM_2 = 1, + SAY_THORIM_3 = 2, + SAY_THORIM_4 = 3, + SPELL_JOKKUM_SUMMON = 56541, + SPELL_JOKKUM_KILL_CREDIT = 56545, + SPELL_EJECT_ALL_PASSENGERS = 50630, + SPELL_PLAYER_CAST_VERANUS_SUMMON = 56650, + SPELL_SUMMON_VERANUS_AND_THORIM = 56649, + EVENT_KROLMIR_1 = 16, + EVENT_KROLMIR_2 = 17, + EVENT_KROLMIR_3 = 18, + EVENT_KROLMIR_4 = 19, + EVENT_KROLMIR_5 = 20, + EVENT_KROLMIR_6 = 21, + EVENT_KROLMIR_7 = 22, + EVENT_KROLMIR_8 = 23, + EVENT_KROLMIR_9 = 24, }; -class spell_close_rift : public SpellScriptLoader +class npc_king_jokkum_vehicle : public CreatureScript { - public: - spell_close_rift() : SpellScriptLoader("spell_close_rift") { } +public: + npc_king_jokkum_vehicle() : CreatureScript("npc_king_jokkum_vehicle") { } - class spell_close_rift_AuraScript : public AuraScript + struct npc_king_jokkum_vehicleAI : public VehicleAI + { + npc_king_jokkum_vehicleAI(Creature* creature) : VehicleAI(creature) { } + + void Reset() OVERRIDE { - PrepareAuraScript(spell_close_rift_AuraScript); + playerGUID = 0; + pathEnd = false; + } - bool Load() OVERRIDE - { - _counter = 0; - return true; - } + void OnCharmed(bool /*apply*/) OVERRIDE { } - bool Validate(SpellInfo const* /*spell*/) OVERRIDE + void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) OVERRIDE + { + if (apply) { - return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT); + playerGUID = who->GetGUID(); + Talk(SAY_HOLD_ON, who); + me->CastSpell(who, SPELL_JOKKUM_KILL_CREDIT, true); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); + me->GetMotionMaster()->MovePath(PATH_JOKKUM, false); } + } - void HandlePeriodic(AuraEffect const* /* aurEff */) + void MovementInform(uint32 type, uint32 id) OVERRIDE + { + if (type != WAYPOINT_MOTION_TYPE) + return; + + if (pathEnd) { - if (++_counter == 5) - GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true); - } + if (id == 4) + { - void Register() OVERRIDE + } + } + else { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + if (id == 19) + { + pathEnd = true; + me->SetFacingTo(0.418879f); + Talk(SAY_JOKKUM_1); + if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID)) + me->CastSpell(player, SPELL_PLAYER_CAST_VERANUS_SUMMON); + me->CastSpell(me, SPELL_EJECT_ALL_PASSENGERS); + + } } + } - private: - uint8 _counter; + void UpdateAI(uint32 diff) OVERRIDE + { + if (!pathEnd) + return; - }; + events.Update(diff); - AuraScript* GetAuraScript() const OVERRIDE - { - return new spell_close_rift_AuraScript(); + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_KROLMIR_1: + Talk(SAY_JOKKUM_2); + events.ScheduleEvent(EVENT_KROLMIR_2, 4000); + break; + } + } } -}; -/*##### -# Krolmir, Hammer of Storms -#####*/ + private: + EventMap events; + uint64 playerGUID; + bool pathEnd; -enum JokkumScriptcast -{ - SPELL_JOKKUM_KILL_CREDIT = 56545, - SPELL_JOKKUM_SUMMON = 56541, - NPC_KINGJOKKUM = 30331, - SAY_HOLD_ON = 0, - PATH_JOKKUM = 2072200 + }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_king_jokkum_vehicleAI(creature); + } }; class spell_jokkum_scriptcast : public SpellScriptLoader @@ -665,8 +732,8 @@ class spell_jokkum_scriptcast : public SpellScriptLoader void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - Unit* target = GetTarget(); - target->CastSpell(target, SPELL_JOKKUM_SUMMON, true); + if (Unit* target = GetTarget()) + target->CastSpell(target, SPELL_JOKKUM_SUMMON, true); } void Register() OVERRIDE @@ -681,42 +748,114 @@ class spell_jokkum_scriptcast : public SpellScriptLoader } }; -class npc_king_jokkum_vehicle : public CreatureScript +class spell_veranus_summon : public SpellScriptLoader +{ + public: spell_veranus_summon() : SpellScriptLoader("spell_veranus_summon") { } + + class spell_veranus_summon_AuraScript : public AuraScript + { + PrepareAuraScript(spell_veranus_summon_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE + { + if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_VERANUS_AND_THORIM)) + return false; + return true; + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* target = GetTarget()) + target->CastSpell(target, SPELL_SUMMON_VERANUS_AND_THORIM, true); + } + + void Register() OVERRIDE + { + OnEffectApply += AuraEffectApplyFn(spell_veranus_summon_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const OVERRIDE + { + return new spell_veranus_summon_AuraScript(); + } +}; + +/*##### +# spell_jokkum_eject_all +#####*/ + +class spell_jokkum_eject_all : public SpellScriptLoader +{ + public: spell_jokkum_eject_all() : SpellScriptLoader("spell_jokkum_eject_all") { } + + class spell_jokkum_eject_all_SpellScript : public SpellScript + { + PrepareSpellScript(spell_jokkum_eject_all_SpellScript); + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (Unit* caster = GetCaster()) + if (caster->IsVehicle()) + caster->GetVehicleKit()->RemoveAllPassengers(); + } + + void Register() OVERRIDE + { + OnEffectHitTarget += SpellEffectFn(spell_jokkum_eject_all_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const OVERRIDE + { + return new spell_jokkum_eject_all_SpellScript(); + } +}; + +enum CloseRift +{ + SPELL_DESPAWN_RIFT = 61665 +}; + +class spell_close_rift : public SpellScriptLoader { public: - npc_king_jokkum_vehicle() : CreatureScript("npc_king_jokkum_vehicle") { } + spell_close_rift() : SpellScriptLoader("spell_close_rift") { } - struct npc_king_jokkum_vehicleAI : public VehicleAI + class spell_close_rift_AuraScript : public AuraScript { - npc_king_jokkum_vehicleAI(Creature* creature) : VehicleAI(creature) { } + PrepareAuraScript(spell_close_rift_AuraScript); - void OnCharmed(bool /*apply*/) OVERRIDE { } + bool Load() OVERRIDE + { + _counter = 0; + return true; + } - void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) OVERRIDE + bool Validate(SpellInfo const* /*spell*/) OVERRIDE { - if (apply) - { - Talk(SAY_HOLD_ON, who->GetGUID()); - me->CastSpell(who, SPELL_JOKKUM_KILL_CREDIT, true); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); - me->GetMotionMaster()->MovePath(PATH_JOKKUM, false); - } + return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT); } - void MovementInform(uint32 type, uint32 id) OVERRIDE + void HandlePeriodic(AuraEffect const* /* aurEff */) { - if (type != WAYPOINT_MOTION_TYPE) - return; + if (++_counter == 5) + GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true); + } - // PointId in WaypointMovementGenerator doesn't match with PointId in DB - if (id == 19) - me->GetVehicleKit()->RemoveAllPassengers(); + void Register() OVERRIDE + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } + + private: + uint8 _counter; + }; - CreatureAI* GetAI(Creature* creature) const OVERRIDE + AuraScript* GetAuraScript() const OVERRIDE { - return new npc_king_jokkum_vehicleAI(creature); + return new spell_close_rift_AuraScript(); } }; @@ -729,7 +868,9 @@ void AddSC_storm_peaks() new npc_icefang(); new npc_hyldsmeet_protodrake(); new npc_brann_bronzebeard_keystone(); - new spell_close_rift(); - new spell_jokkum_scriptcast(); new npc_king_jokkum_vehicle(); + new spell_jokkum_scriptcast(); + new spell_veranus_summon(); + new spell_jokkum_eject_all(); + new spell_close_rift(); } diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index a27ce0324ff..311b18524b2 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -237,11 +237,47 @@ class npc_wg_spirit_guide : public CreatureScript } }; +enum WGQueue +{ + SPELL_FROST_ARMOR = 12544 +}; + class npc_wg_queue : public CreatureScript { public: npc_wg_queue() : CreatureScript("npc_wg_queue") { } + struct npc_wg_queueAI : public ScriptedAI + { + npc_wg_queueAI(Creature* creature) : ScriptedAI(creature) { } + + uint32 FrostArmor_Timer; + + void Reset() OVERRIDE + { + FrostArmor_Timer = 0; + } + + void EnterCombat(Unit* /*who*/) OVERRIDE { } + + void UpdateAI(uint32 diff) OVERRIDE + { + if (FrostArmor_Timer <= diff) + { + DoCast(me, SPELL_FROST_ARMOR); + FrostArmor_Timer = 180000; + } + else FrostArmor_Timer -= diff; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_wg_queueAI(creature); + } + bool OnGossipHello(Player* player, Creature* creature) OVERRIDE { if (creature->IsQuestGiver()) diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 1137c86f287..c2ce0201565 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -506,7 +506,7 @@ public: case EVENT_EASY_123: if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { - Talk(SAY_EASY_123, _playerGUID); + Talk(SAY_EASY_123, player); DoCast(player, SPELL_RANDOM_INGREDIENT_EASY_AURA); ++_getingredienttry; } @@ -514,7 +514,7 @@ public: case EVENT_MEDIUM_4: if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { - Talk(SAY_MEDIUM_4, _playerGUID); + Talk(SAY_MEDIUM_4, player); DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA); ++_getingredienttry; } @@ -522,7 +522,7 @@ public: case EVENT_MEDIUM_5: if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { - Talk(SAY_MEDIUM_5, _playerGUID); + Talk(SAY_MEDIUM_5, player); DoCast(player, SPELL_RANDOM_INGREDIENT_MEDIUM_AURA); ++_getingredienttry; } @@ -530,7 +530,7 @@ public: case EVENT_HARD_6: if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { - Talk(SAY_HARD_6, _playerGUID); + Talk(SAY_HARD_6, player); DoCast(player, SPELL_RANDOM_INGREDIENT_HARD_AURA); ++_getingredienttry; } @@ -693,7 +693,7 @@ class spell_random_ingredient : public SpellScriptLoader if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f)) { finklestein->CastSpell(player, FetchIngredients[ingredient][0], true, NULL); - finklestein->AI()->Talk(FetchIngredients[ingredient][3], player->GetGUID()); + finklestein->AI()->Talk(FetchIngredients[ingredient][3], player); } } } @@ -776,7 +776,7 @@ class spell_pot_check : public SpellScriptLoader RemoveItems(player); player->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF); if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f)) - finklestein->AI()->Talk(SAY_RUINED, player->GetGUID()); + finklestein->AI()->Talk(SAY_RUINED, player); return; } } @@ -823,7 +823,7 @@ class spell_fetch_ingredient_aura : public SpellScriptLoader if (Creature* finklestein = GetClosestCreatureWithEntry(target, NPC_FINKLESTEIN, 100.0f)) { target->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF); - finklestein->AI()->Talk(SAY_RUINED, target->GetGUID()); + finklestein->AI()->Talk(SAY_RUINED, target); } } |
