aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2013-07-19 00:42:59 +0100
committerNay <dnpd.dd@gmail.com>2013-07-19 00:42:59 +0100
commitff01602906fba5a9601136c9a8418a2c7a1385e4 (patch)
tree838d284460097183dbf1be9c4252df11f6fcb8e6 /src
parentc536ba510d523842632061c0c41d7d381d6e5a15 (diff)
Scripts/Icecrown: Fix code style and use "best practices" on previous commit (c536ba510)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp341
1 files changed, 156 insertions, 185 deletions
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 35a51fb9ea0..3b550b0dab3 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -16,17 +16,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Icecrown
-SD%Complete: 100
-SDComment: Quest support: 12807
-SDCategory: Icecrown
-EndScriptData */
-
-/* ContentData
-npc_arete
-EndContentData */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
@@ -966,42 +955,41 @@ class npc_frostbrood_skytalon : public CreatureScript
}
};
-/*
-Quest: The Flesh Giant Champion
-*/
+/*######
+## The Flesh Giant Champion - Id: 13235
+######*/
enum FleshGiant
{
- QUEST_FLESH_GIANT_CHAMPION = 13235,
- NPC_MORBIDUS = 30698,
- NPC_LICH_KING = 31301,
-
- // Factions
- FACTION_HOSTILE = 14,
- FACTION_BASIC = 2102,
- // Events
- EVENT_INTRO = 1,
- EVENT_LK_SAY_1 = 2,
- EVENT_LK_SAY_2 = 3,
- EVENT_LK_SAY_3 = 4,
- EVENT_LK_SAY_4 = 5,
- EVENT_LK_SAY_5 = 6,
-
- EVENT_OUTRO = 7,
- EVENT_START = 8,
-
- SPELL_SIMPLE_TELEPORT = 64195, // Visual stuff
-
- // Dhakar
- SAY_START = 1,
- // Lich King
- SAY_THING_1 = 1,
- SAY_THING_2 = 2,
- SAY_THING_3 = 3,
- SAY_THING_4 = 4,
- SAY_THING_5 = 5,
- // Olakin
- SAY_PAY = 1
+ QUEST_FLESH_GIANT_CHAMPION = 13235,
+
+ NPC_MORBIDUS = 30698,
+ NPC_LICH_KING = 31301,
+ NPC_OLAKIN = 31428,
+ NPC_DHAKAR = 31306,
+
+ FACTION_HOSTILE = 14,
+ FACTION_BASIC = 2102,
+
+ EVENT_INTRO = 1,
+ EVENT_LK_SAY_1 = 2,
+ EVENT_LK_SAY_2 = 3,
+ EVENT_LK_SAY_3 = 4,
+ EVENT_LK_SAY_4 = 5,
+ EVENT_LK_SAY_5 = 6,
+ EVENT_OUTRO = 7,
+ EVENT_START = 8,
+
+ SPELL_SIMPLE_TELEPORT = 64195,
+
+ SAY_DHAKAR_START = 0,
+ SAY_LK_1 = 0,
+ SAY_LK_2 = 1,
+ SAY_LK_3 = 2,
+ SAY_LK_4 = 3,
+ SAY_LK_5 = 4,
+ SAY_OLAKIN_PAY = 0
};
+
class npc_margrave_dhakar : public CreatureScript
{
public:
@@ -1009,133 +997,120 @@ class npc_margrave_dhakar : public CreatureScript
struct npc_margrave_dhakarAI : public ScriptedAI
{
- npc_margrave_dhakarAI(Creature* creature) : ScriptedAI(creature) , summons(me)
- {
- Reset();
- }
-
- uint64 LKGuid;
- SummonList summons;
- void Reset()
- {
- me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
- events.Reset();
- summons.DespawnAll();
- }
- void sGossipSelect(Player* player, uint32 sender, uint32 action)
- {
- if (player->GetQuestStatus(QUEST_FLESH_GIANT_CHAMPION) == QUEST_STATUS_INCOMPLETE && !player->isInCombat())
- {
- if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
- {
- events.ScheduleEvent(EVENT_INTRO, 1000);
- me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- }
- }
- }
- void UpdateAI(uint32 diff)
- {
- events.Update(diff);
+ npc_margrave_dhakarAI(Creature* creature) : ScriptedAI(creature) , _summons(me), _lichKing(NULL) { }
- while (uint32 eventId = events.ExecuteEvent())
+ void Reset() OVERRIDE
+ {
+ me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
+
+ _events.Reset();
+ _summons.DespawnAll();
+ }
+
+ void sGossipSelect(Player* player, uint32 sender, uint32 action) OVERRIDE
+ {
+ if (player->GetQuestStatus(QUEST_FLESH_GIANT_CHAMPION) == QUEST_STATUS_INCOMPLETE && !player->IsInCombat())
+ {
+ if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
+ {
+ _events.ScheduleEvent(EVENT_INTRO, 1000);
+ me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
+ }
+ }
+ }
+
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ _events.Update(diff);
+
+ while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
- case EVENT_INTRO:
- Talk(SAY_START);
- me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
- if (Creature *morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
- {
- Creature *LK = me->SummonCreature(NPC_LICH_KING, morbidus->GetPositionX()+10, morbidus->GetPositionY(), morbidus->GetPositionZ());
- LKGuid = LK->GetGUID();
- LK->SetFacingTo(morbidus->GetOrientation());
- LK->CastSpell(LK, SPELL_SIMPLE_TELEPORT, true);
- }
- events.ScheduleEvent(EVENT_LK_SAY_1, 5000);
- events.CancelEvent(EVENT_INTRO);
- break;
- case EVENT_LK_SAY_1:
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- {
- LK->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_POINT);
- LK->AI()->Talk(SAY_THING_1);
- }
- events.ScheduleEvent(EVENT_LK_SAY_2, 5000);
- events.CancelEvent(EVENT_LK_SAY_1);
- break;
- case EVENT_LK_SAY_2:
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- {
- LK->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SHOUT);
- LK->AI()->Talk(SAY_THING_2);
- }
- events.ScheduleEvent(EVENT_LK_SAY_3, 5000);
- events.CancelEvent(EVENT_LK_SAY_2);
- break;
-
- case EVENT_LK_SAY_3:
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- {
- LK->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_POINT);
- LK->AI()->Talk(SAY_THING_3);
- }
- events.ScheduleEvent(EVENT_LK_SAY_4, 5000);
- events.CancelEvent(EVENT_LK_SAY_3);
- break;
-
- case EVENT_LK_SAY_4:
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- {
- LK->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SHOUT);
- LK->AI()->Talk(SAY_THING_4);
- }
- events.ScheduleEvent(EVENT_OUTRO, 12000);
- events.CancelEvent(EVENT_LK_SAY_4);
- break;
-
- case EVENT_LK_SAY_5:
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- {
- LK->AI()->Talk(SAY_THING_5);
- LK->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_POINT);
- }
- events.ScheduleEvent(EVENT_OUTRO, 8000);
- events.CancelEvent(EVENT_LK_SAY_5);
- break;
- case EVENT_OUTRO:
- if (Creature *olakin = me->FindNearestCreature(31428, 50.0f, true))
- {
- olakin->AI()->Talk(SAY_PAY);
- }
- if (Creature *LK = Unit::GetCreature(*me, LKGuid))
- LK->DespawnOrUnsummon(0);
- events.ScheduleEvent(EVENT_START, 5000);
- events.CancelEvent(EVENT_OUTRO);
- break;
-
- case EVENT_START:
- if (Creature *morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
- {
- morbidus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_DISABLE_MOVE);
- morbidus->setFaction(FACTION_HOSTILE);
- }
- events.CancelEvent(EVENT_START);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
-
- private:
- EventMap events;
- };
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_margrave_dhakarAI(creature);
- }
+ case EVENT_INTRO:
+ {
+ Talk(SAY_DHAKAR_START);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
+
+ if (Creature* morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
+ {
+ _lichKing = me->SummonCreature(NPC_LICH_KING, morbidus->GetPositionX()+10, morbidus->GetPositionY(), morbidus->GetPositionZ());
+ _lichKing->SetFacingTo(morbidus->GetOrientation());
+ _lichKing->CastSpell(_lichKing, SPELL_SIMPLE_TELEPORT, true);
+ }
+
+ _events.ScheduleEvent(EVENT_LK_SAY_1, 5000);
+ break;
+ }
+ case EVENT_LK_SAY_1:
+ {
+ _lichKing->AI()->Talk(SAY_LK_1);
+ _events.ScheduleEvent(EVENT_LK_SAY_2, 5000);
+ break;
+ }
+ case EVENT_LK_SAY_2:
+ {
+ _lichKing->AI()->Talk(SAY_LK_2);
+ _events.ScheduleEvent(EVENT_LK_SAY_3, 5000);
+ break;
+ }
+ case EVENT_LK_SAY_3:
+ {
+ _lichKing->AI()->Talk(SAY_LK_3);
+ _events.ScheduleEvent(EVENT_LK_SAY_4, 5000);
+ break;
+ }
+ case EVENT_LK_SAY_4:
+ {
+ _lichKing->AI()->Talk(SAY_LK_4);
+ _events.ScheduleEvent(EVENT_OUTRO, 12000);
+ break;
+ }
+ case EVENT_LK_SAY_5:
+ {
+ _lichKing->AI()->Talk(SAY_LK_5);
+ _events.ScheduleEvent(EVENT_OUTRO, 8000);
+ break;
+ }
+ case EVENT_OUTRO:
+ {
+ if (Creature* olakin = me->FindNearestCreature(NPC_OLAKIN, 50.0f, true))
+ olakin->AI()->Talk(SAY_OLAKIN_PAY);
+
+ _lichKing->DespawnOrUnsummon(0);
+
+ _events.ScheduleEvent(EVENT_START, 5000);
+ break;
+ }
+ case EVENT_START:
+ {
+ if (Creature* morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
+ {
+ morbidus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_DISABLE_MOVE);
+ morbidus->setFaction(FACTION_HOSTILE);
+ }
+
+ break;
+ }
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+
+ private:
+ EventMap _events;
+ Creature* _lichKing;
+ SummonList _summons;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_margrave_dhakarAI(creature);
+ }
};
+
class npc_morbidus : public CreatureScript
{
public:
@@ -1145,22 +1120,19 @@ class npc_morbidus : public CreatureScript
{
npc_morbidusAI(Creature* creature) : ScriptedAI(creature) { }
- void Reset()
- {
- if (Creature * dhakar = me->FindNearestCreature(31306, 50.0f, true))
- dhakar->AI()->Reset();
- // this will prevent the event to start without morbidus being alive
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->SetReactState(REACT_PASSIVE);
- me->setFaction(FACTION_BASIC);
- }
- void UpdateAI(uint32 diff)
- {
- DoMeleeAttackIfReady();
- }
-
- };
- CreatureAI* GetAI(Creature* creature) const
+ void Reset() OVERRIDE
+ {
+ if (Creature* dhakar = me->FindNearestCreature(NPC_DHAKAR, 50.0f, true))
+ dhakar->AI()->Reset();
+
+ // this will prevent the event to start without morbidus being alive
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ me->SetReactState(REACT_PASSIVE);
+ me->setFaction(FACTION_BASIC);
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
return new npc_morbidusAI(creature);
}
@@ -1176,7 +1148,6 @@ void AddSC_icecrown()
new npc_tournament_training_dummy;
new npc_blessed_banner();
new npc_frostbrood_skytalon();
- new npc_margrave_dhakar();
- new npc_morbidus();
-
+ new npc_margrave_dhakar();
+ new npc_morbidus();
}