aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp6
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/def_blackrock_depths.h36
-rw-r--r--src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp54
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h50
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp27
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp22
-rw-r--r--src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp209
-rw-r--r--src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp9
-rw-r--r--src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp381
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp10
11 files changed, 426 insertions, 380 deletions
diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp
index ff02f60f7a2..b4705f5e640 100644
--- a/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp
+++ b/src/bindings/scripts/scripts/zone/blackrock_depths/boss_tomb_of_seven.cpp
@@ -457,7 +457,11 @@ bool GossipSelect_boss_gloomrel(Player *player, Creature *_Creature, uint32 send
break;
case GOSSIP_ACTION_INFO_DEF+22:
player->CLOSE_GOSSIP_MENU();
- //re-spawn object here
+ if (ScriptedInstance* pInstance = (ScriptedInstance*)_Creature->GetInstanceData())
+ {
+ //are 5 minutes expected? go template may have data to despawn when used at quest
+ pInstance->DoRespawnGameObject(pInstance->GetData64(DATA_GO_CHALICE),MINUTE*5);
+ }
break;
}
return true;
diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/def_blackrock_depths.h b/src/bindings/scripts/scripts/zone/blackrock_depths/def_blackrock_depths.h
index 58d963437bd..8c3a04a16df 100644
--- a/src/bindings/scripts/scripts/zone/blackrock_depths/def_blackrock_depths.h
+++ b/src/bindings/scripts/scripts/zone/blackrock_depths/def_blackrock_depths.h
@@ -5,23 +5,27 @@
#ifndef DEF_BRD_H
#define DEF_BRD_H
-#define TYPE_RING_OF_LAW 1
-#define TYPE_VAULT 2
-#define TYPE_BAR 3
-#define TYPE_TOMB_OF_SEVEN 4
-#define TYPE_LYCEUM 5
-#define TYPE_IRON_HALL 6
+enum
+{
+ TYPE_RING_OF_LAW = 1,
+ TYPE_VAULT = 2,
+ TYPE_BAR = 3,
+ TYPE_TOMB_OF_SEVEN = 4,
+ TYPE_LYCEUM = 5,
+ TYPE_IRON_HALL = 6,
+
+ DATA_EMPEROR = 10,
+ DATA_PHALANX = 11,
-#define DATA_EMPEROR 10
-#define DATA_PHALANX 11
+ DATA_ARENA1 = 12,
+ DATA_ARENA2 = 13,
+ DATA_ARENA3 = 14,
+ DATA_ARENA4 = 15,
-#define DATA_ARENA1 12
-#define DATA_ARENA2 13
-#define DATA_ARENA3 14
-#define DATA_ARENA4 15
-
-#define DATA_GO_BAR_KEG 16
-#define DATA_GO_BAR_KEG_TRAP 17
-#define DATA_GO_BAR_DOOR 18
+ DATA_GO_BAR_KEG = 16,
+ DATA_GO_BAR_KEG_TRAP = 17,
+ DATA_GO_BAR_DOOR = 18,
+ DATA_GO_CHALICE = 19
+};
#endif
diff --git a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp
index 750d611b58e..3d77ced9d94 100644
--- a/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp
+++ b/src/bindings/scripts/scripts/zone/blackrock_depths/instance_blackrock_depths.cpp
@@ -32,28 +32,34 @@ update `instance_template` set `script`='instance_blackrock_depths' where `map`=
#include "precompiled.h"
#include "def_blackrock_depths.h"
-#define ENCOUNTERS 6
-
-#define C_EMPEROR 9019
-#define C_PHALANX 9502
-
-#define GO_ARENA1 161525
-#define GO_ARENA2 161522
-#define GO_ARENA3 161524
-#define GO_ARENA4 161523
-#define GO_SHADOW_LOCK 161460
-#define GO_SHADOW_MECHANISM 161461
-#define GO_SHADOW_GIANT_DOOR 157923
-#define GO_SHADOW_DUMMY 161516
-#define GO_BAR_KEG_SHOT 170607
-#define GO_BAR_KEG_TRAP 171941
-#define GO_BAR_DOOR 170571
-#define GO_TOMB_ENTER 170576
-#define GO_TOMB_EXIT 170577
-#define GO_LYCEUM 170558
-#define GO_GOLEM_ROOM_N 170573
-#define GO_GOLEM_ROOM_S 170574
-#define GO_THONE_ROOM 170575
+enum
+{
+ ENCOUNTERS = 6,
+
+ NPC_EMPEROR = 9019,
+ NPC_PHALANX = 9502,
+
+ GO_ARENA1 = 161525,
+ GO_ARENA2 = 161522,
+ GO_ARENA3 = 161524,
+ GO_ARENA4 = 161523,
+ GO_SHADOW_LOCK = 161460,
+ GO_SHADOW_MECHANISM = 161461,
+ GO_SHADOW_GIANT_DOOR = 157923,
+ GO_SHADOW_DUMMY = 161516,
+ GO_BAR_KEG_SHOT = 170607,
+ GO_BAR_KEG_TRAP = 171941,
+ GO_BAR_DOOR = 170571,
+ GO_TOMB_ENTER = 170576,
+ GO_TOMB_EXIT = 170577,
+ GO_LYCEUM = 170558,
+ GO_GOLEM_ROOM_N = 170573,
+ GO_GOLEM_ROOM_S = 170574,
+ GO_THONE_ROOM = 170575,
+
+ GO_SPECTRAL_CHALICE = 164869,
+ GO_CHEST_SEVEN = 169243
+};
struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance
{
@@ -118,8 +124,8 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance
{
switch(creature->GetEntry())
{
- case C_EMPEROR: EmperorGUID = creature->GetGUID(); break;
- case C_PHALANX: PhalanxGUID = creature->GetGUID(); break;
+ case NPC_EMPEROR: EmperorGUID = creature->GetGUID(); break;
+ case NPC_PHALANX: PhalanxGUID = creature->GetGUID(); break;
}
}
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h
index 7d81dbe4993..c08f28a4f3d 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/def_hyjal.h
@@ -5,30 +5,34 @@
#ifndef DEF_HYJAL_H
#define DEF_HYJAL_H
-#define WORLD_STATE_WAVES 2842
-#define WORLD_STATE_ENEMY 2453
-#define WORLD_STATE_ENEMYCOUNT 2454
+#define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy"
-#define DATA_ANETHERON 1
-#define DATA_ANETHERONEVENT 2
-#define DATA_ARCHIMONDE 3
-#define DATA_ARCHIMONDEEVENT 4
-#define DATA_AZGALOR 5
-#define DATA_AZGALOREVENT 6
-#define DATA_JAINAPROUDMOORE 7
-#define DATA_KAZROGAL 8
-#define DATA_KAZROGALEVENT 9
-#define DATA_RAGEWINTERCHILL 10
-#define DATA_RAGEWINTERCHILLEVENT 11
-#define DATA_THRALL 12
-#define DATA_TYRANDEWHISPERWIND 13
-#define DATA_TRASH 14
-#define DATA_RESET_TRASH_COUNT 15
-#define DATA_ALLIANCE_RETREAT 16
-#define DATA_HORDE_RETREAT 17
-#define DATA_RAIDDAMAGE 18
-#define DATA_RESET_RAIDDAMAGE 19
+enum
+{
+ WORLD_STATE_WAVES = 2842,
+ WORLD_STATE_ENEMY = 2453,
+ WORLD_STATE_ENEMYCOUNT = 2454,
-#define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy"
+ DATA_ANETHERON = 1,
+ DATA_ANETHERONEVENT = 2,
+ DATA_ARCHIMONDE = 3,
+ DATA_ARCHIMONDEEVENT = 4,
+ DATA_AZGALOR = 5,
+ DATA_AZGALOREVENT = 6,
+ DATA_JAINAPROUDMOORE = 7,
+ DATA_KAZROGAL = 8,
+ DATA_KAZROGALEVENT = 9,
+ DATA_RAGEWINTERCHILL = 10,
+ DATA_RAGEWINTERCHILLEVENT = 11,
+ DATA_THRALL = 12,
+ DATA_TYRANDEWHISPERWIND = 13,
+ DATA_TRASH = 14,
+ DATA_RESET_TRASH_COUNT = 15,
+ DATA_ALLIANCE_RETREAT = 16,
+ DATA_HORDE_RETREAT = 17,
+ DATA_RAIDDAMAGE = 18,
+ DATA_RESET_RAIDDAMAGE = 19,
+ TYPE_RETREAT = 20
+};
#endif
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
index 487347c1c18..edf74187ef5 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
@@ -662,6 +662,8 @@ void hyjalAI::Retreat()
{
if(pInstance)
{
+ pInstance->SetData(TYPE_RETREAT,SPECIAL);
+
if(Faction == 0)
{
pInstance->SetData(DATA_ALLIANCE_RETREAT, 1);
diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp
index df0b1a7d9c1..8a08ba5f4c0 100644
--- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp
+++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp
@@ -25,8 +25,12 @@ EndScriptData */
#include "def_hyjal.h"
#include "hyjal_trash.h"
-#define ENCOUNTERS 5
+enum
+{
+ ENCOUNTERS = 5,
+ GO_ANCIENT_GEM = 185557
+};
/* Battle of Mount Hyjal encounters:
0 - Rage Winterchill event
1 - Anetheron event
@@ -42,6 +46,8 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
uint32 Encounters[ENCOUNTERS];
std::string str_data;
+ std::list<uint64> m_uiAncientGemGUID;
+
uint64 RageWinterchill;
uint64 Anetheron;
uint64 Kazrogal;
@@ -64,6 +70,8 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
void Initialize()
{
+ m_uiAncientGemGUID.clear();
+
RageWinterchill = 0;
Anetheron = 0;
Kazrogal = 0;
@@ -83,7 +91,6 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
hordeRetreat = 0;
allianceRetreat = 0;
-
}
bool IsEncounterInProgress() const
@@ -112,6 +119,9 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
else
go->SetGoState(GO_STATE_READY);
break;
+ case GO_ANCIENT_GEM:
+ m_uiAncientGemGUID.push_back(go->GetGUID());
+ break;
}
}
@@ -208,6 +218,19 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
else Trash--;
UpdateWorldState(WORLD_STATE_ENEMYCOUNT, Trash);
break;
+ case TYPE_RETREAT:
+ if (data == SPECIAL)
+ {
+ if (!m_uiAncientGemGUID.empty())
+ {
+ for(std::list<uint64>::iterator itr = m_uiAncientGemGUID.begin(); itr != m_uiAncientGemGUID.end(); ++itr)
+ {
+ //don't know how long it expected
+ DoRespawnGameObject(*itr,DAY);
+ }
+ }
+ }
+ break;
case DATA_ALLIANCE_RETREAT:
allianceRetreat = data;
OpenDoor(HordeGate,true);
diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp
index 21e88eab4c4..220e675e9f5 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/instance_hellfire_ramparts.cpp
@@ -51,24 +51,6 @@ struct TRINITY_DLL_DECL instance_ramparts : public ScriptedInstance
}
}
- void DoRespawnChest()
- {
- uint64 uiChest;
-
- if (instance->IsHeroic())
- uiChest = m_uiChestHGUID;
- else
- uiChest = m_uiChestNGUID;
-
- if (GameObject* pGo = instance->GetGameObject(uiChest))
- {
- if (pGo->isSpawned())
- return;
-
- pGo->SetRespawnTime(HOUR*IN_MILISECONDS);
- }
- }
-
void SetData(uint32 uiType, uint32 uiData)
{
debug_log("TSCR: Instance Ramparts: SetData received for type %u with data %u",uiType,uiData);
@@ -77,12 +59,12 @@ struct TRINITY_DLL_DECL instance_ramparts : public ScriptedInstance
{
case TYPE_VAZRUDEN:
if (uiData == DONE && m_uiEncounter[1] == DONE)
- DoRespawnChest();
+ DoRespawnGameObject(instance->IsHeroic() ? m_uiChestHGUID : m_uiChestNGUID, HOUR*IN_MILISECONDS);
m_uiEncounter[0] = uiData;
break;
case TYPE_NAZAN:
if (uiData == DONE && m_uiEncounter[0] == DONE)
- DoRespawnChest();
+ DoRespawnGameObject(instance->IsHeroic() ? m_uiChestHGUID : m_uiChestNGUID, HOUR*IN_MILISECONDS);
m_uiEncounter[1] = uiData;
break;
}
diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp
index c40a99fa243..219256f4da8 100644
--- a/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp
+++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp
@@ -29,8 +29,22 @@ EndContentData */
#include "precompiled.h"
#include "def_shattered_halls.h"
-#define ENTRY_LEFT_HEAD 19523
-#define ENTRY_RIGHT_HEAD 19524
+enum
+{
+ YELL_DIE_L = -1540039,
+ YELL_DIE_R = -1540040,
+ EMOTE_ENRAGE = -1540041,
+
+ SPELL_BLAST_WAVE = 30600,
+ SPELL_FEAR = 30584,
+ SPELL_THUNDERCLAP = 30633,
+
+ SPELL_BURNING_MAUL = 30598,
+ H_SPELL_BURNING_MAUL = 36056,
+
+ NPC_LEFT_HEAD = 19523,
+ NPC_RIGHT_HEAD = 19524
+};
struct Yell
{
@@ -40,61 +54,50 @@ struct Yell
static Yell GoCombat[]=
{
- {-1540018, ENTRY_LEFT_HEAD},
- {-1540019, ENTRY_LEFT_HEAD},
- {-1540020, ENTRY_LEFT_HEAD},
+ {-1540018, NPC_LEFT_HEAD},
+ {-1540019, NPC_LEFT_HEAD},
+ {-1540020, NPC_LEFT_HEAD},
};
static Yell GoCombatDelay[]=
{
- {-1540021, ENTRY_RIGHT_HEAD},
- {-1540022, ENTRY_RIGHT_HEAD},
- {-1540023, ENTRY_RIGHT_HEAD},
+ {-1540021, NPC_RIGHT_HEAD},
+ {-1540022, NPC_RIGHT_HEAD},
+ {-1540023, NPC_RIGHT_HEAD},
};
static Yell Threat[]=
{
- {-1540024, ENTRY_LEFT_HEAD},
- {-1540025, ENTRY_RIGHT_HEAD},
- {-1540026, ENTRY_LEFT_HEAD},
- {-1540027, ENTRY_LEFT_HEAD},
+ {-1540024, NPC_LEFT_HEAD},
+ {-1540025, NPC_RIGHT_HEAD},
+ {-1540026, NPC_LEFT_HEAD},
+ {-1540027, NPC_LEFT_HEAD},
};
static Yell ThreatDelay1[]=
{
- {-1540028, ENTRY_RIGHT_HEAD},
- {-1540029, ENTRY_LEFT_HEAD},
- {-1540030, ENTRY_RIGHT_HEAD},
- {-1540031, ENTRY_RIGHT_HEAD},
+ {-1540028, NPC_RIGHT_HEAD},
+ {-1540029, NPC_LEFT_HEAD},
+ {-1540030, NPC_RIGHT_HEAD},
+ {-1540031, NPC_RIGHT_HEAD},
};
static Yell ThreatDelay2[]=
{
- {-1540032, ENTRY_LEFT_HEAD},
- {-1540033, ENTRY_RIGHT_HEAD},
- {-1540034, ENTRY_LEFT_HEAD},
- {-1540035, ENTRY_LEFT_HEAD},
+ {-1540032, NPC_LEFT_HEAD},
+ {-1540033, NPC_RIGHT_HEAD},
+ {-1540034, NPC_LEFT_HEAD},
+ {-1540035, NPC_LEFT_HEAD},
};
static Yell Killing[]=
{
- {-1540036, ENTRY_LEFT_HEAD},
- {-1540037, ENTRY_RIGHT_HEAD},
+ {-1540036, NPC_LEFT_HEAD},
+ {-1540037, NPC_RIGHT_HEAD},
};
static Yell KillingDelay[]=
{
- {-1540038, ENTRY_RIGHT_HEAD},
- {-1000000, ENTRY_LEFT_HEAD},
+ {-1540038, NPC_RIGHT_HEAD},
+ {-1000000, NPC_LEFT_HEAD},
};
-#define YELL_DIE_L -1540039
-#define YELL_DIE_R -1540040
-#define EMOTE_ENRAGE -1540041
-
-#define SPELL_BLAST_WAVE 30600
-#define SPELL_FEAR 30584
-#define SPELL_THUNDERCLAP 30633
-
-#define SPELL_BURNING_MAUL 30598
-#define H_SPELL_BURNING_MAUL 36056
-
struct TRINITY_DLL_DECL mob_omrogg_headsAI : public ScriptedAI
{
mob_omrogg_headsAI(Creature *c) : ScriptedAI(c) {}
@@ -102,12 +105,15 @@ struct TRINITY_DLL_DECL mob_omrogg_headsAI : public ScriptedAI
bool DeathYell;
uint32 Death_Timer;
- void Reset() {}
+ void Reset()
+ {
+ Death_Timer = 4000;
+ DeathYell = false;
+ }
void EnterCombat(Unit* who) { }
void DoDeathYell()
{
- Death_Timer = 4000;
DeathYell = true;
}
@@ -119,7 +125,8 @@ struct TRINITY_DLL_DECL mob_omrogg_headsAI : public ScriptedAI
if (Death_Timer < diff)
{
DoScriptText(YELL_DIE_R, m_creature);
- DeathYell = false;
+ Death_Timer = false;
+ m_creature->setDeathState(JUST_DIED);
}else Death_Timer -= diff;
}
};
@@ -128,6 +135,8 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
{
boss_warbringer_omroggAI(Creature *c) : ScriptedAI(c)
{
+ LeftHeadGUID = 0;
+ RightHeadGUID = 0;
pInstance = c->GetInstanceData();
HeroicMode = m_creature->GetMap()->IsHeroic();
}
@@ -135,8 +144,8 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
ScriptedInstance* pInstance;
bool HeroicMode;
- uint64 LeftHead;
- uint64 RightHead;
+ uint64 LeftHeadGUID;
+ uint64 RightHeadGUID;
int iaggro;
int ithreat;
int ikilling;
@@ -156,9 +165,18 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
void Reset()
{
+ if (Unit* pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID))
+ {
+ pLeftHead->setDeathState(JUST_DIED);
+ LeftHeadGUID = 0;
+ }
+
+ if (Unit* pRightHead = Unit::GetUnit(*m_creature,RightHeadGUID))
+ {
+ pRightHead->setDeathState(JUST_DIED);
+ RightHeadGUID = 0;
+ }
- LeftHead = 0;
- RightHead = 0;
AggroYell = false;
ThreatYell = false;
@@ -182,35 +200,32 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
void DoYellForThreat()
{
- if (LeftHead && RightHead)
- {
- Unit *Left = Unit::GetUnit(*m_creature,LeftHead);
- Unit *Right = Unit::GetUnit(*m_creature,RightHead);
+ Unit *pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID);
+ Unit *pRightHead = Unit::GetUnit(*m_creature,RightHeadGUID);
- if (!Left || !Right)
- return;
+ if (!pLeftHead || !pRightHead)
+ return;
- ithreat = rand()%4;
+ ithreat = rand()%4;
- Unit *source = (Left->GetEntry() == Threat[ithreat].creature ? Left : Right);
+ Unit *source = (pLeftHead->GetEntry() == Threat[ithreat].creature ? pLeftHead : pRightHead);
- DoScriptText(Threat[ithreat].id, source);
+ DoScriptText(Threat[ithreat].id, source);
- Delay_Timer = 3500;
- ThreatYell = true;
- }
+ Delay_Timer = 3500;
+ ThreatYell = true;
}
void EnterCombat(Unit *who)
{
- DoSpawnCreature(ENTRY_LEFT_HEAD,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,90000);
- DoSpawnCreature(ENTRY_RIGHT_HEAD,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,90000);
+ DoSpawnCreature(NPC_LEFT_HEAD,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,90000);
+ DoSpawnCreature(NPC_RIGHT_HEAD,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,90000);
- if (Unit *Left = Unit::GetUnit(*m_creature,LeftHead))
+ if (Unit *pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID))
{
iaggro = rand()%3;
- DoScriptText(GoCombat[iaggro].id, Left);
+ DoScriptText(GoCombat[iaggro].id, pLeftHead);
Delay_Timer = 3500;
AggroYell = true;
@@ -222,11 +237,11 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
void JustSummoned(Creature *summoned)
{
- if (summoned->GetEntry() == ENTRY_LEFT_HEAD)
- LeftHead = summoned->GetGUID();
+ if (summoned->GetEntry() == NPC_LEFT_HEAD)
+ LeftHeadGUID = summoned->GetGUID();
- if (summoned->GetEntry() == ENTRY_RIGHT_HEAD)
- RightHead = summoned->GetGUID();
+ if (summoned->GetEntry() == NPC_RIGHT_HEAD)
+ RightHeadGUID = summoned->GetGUID();
//summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
//summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -235,47 +250,42 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
void KilledUnit(Unit* victim)
{
- if (LeftHead && RightHead)
- {
- Unit *Left = Unit::GetUnit(*m_creature,LeftHead);
- Unit *Right = Unit::GetUnit(*m_creature,RightHead);
+ Unit* pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID);
+ Unit* pRightHead = Unit::GetUnit(*m_creature,RightHeadGUID);
- if (!Left || !Right)
- return;
- ikilling = rand()%2;
+ if (!pLeftHead || !pRightHead)
+ return;
- Unit *source = (Left->GetEntry() == Killing[ikilling].creature ? Left : Right);
+ ikilling = rand()%2;
- switch(ikilling)
- {
- case 0:
- DoScriptText(Killing[ikilling].id, source);
- Delay_Timer = 3500;
- KillingYell = true;
- break;
- case 1:
- DoScriptText(Killing[ikilling].id, source);
- KillingYell = false;
- break;
- }
+ Unit *source = (pLeftHead->GetEntry() == Killing[ikilling].creature ? pLeftHead : pRightHead);
+
+ switch(ikilling)
+ {
+ case 0:
+ DoScriptText(Killing[ikilling].id, source);
+ Delay_Timer = 3500;
+ KillingYell = true;
+ break;
+ case 1:
+ DoScriptText(Killing[ikilling].id, source);
+ KillingYell = false;
+ break;
}
}
void JustDied(Unit* Killer)
{
- if (LeftHead && RightHead)
- {
- Unit *Left = Unit::GetUnit(*m_creature,LeftHead);
- Unit *Right = Unit::GetUnit(*m_creature,RightHead);
+ Unit* pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID);
+ Unit* pRightHead = Unit::GetUnit(*m_creature,RightHeadGUID);
- if (!Left || !Right)
- return;
+ if (!pLeftHead || !pRightHead)
+ return;
- DoScriptText(YELL_DIE_L, Left);
+ DoScriptText(YELL_DIE_L, pLeftHead);
- CAST_AI(mob_omrogg_headsAI, CAST_CRE(Right)->AI())->DoDeathYell();
- }
+ CAST_AI(mob_omrogg_headsAI, CAST_CRE(pRightHead)->AI())->DoDeathYell();
if (pInstance)
pInstance->SetData(TYPE_OMROGG, DONE);
@@ -287,24 +297,21 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
{
Delay_Timer = 3500;
- if (!LeftHead || !RightHead)
- return;
-
- Unit *Left = Unit::GetUnit(*m_creature,LeftHead);
- Unit *Right = Unit::GetUnit(*m_creature,RightHead);
+ Unit* pLeftHead = Unit::GetUnit(*m_creature,LeftHeadGUID);
+ Unit* pRightHead = Unit::GetUnit(*m_creature,RightHeadGUID);
- if (!Left || !Right)
+ if (!pLeftHead || !pRightHead)
return;
if (AggroYell)
{
- DoScriptText(GoCombatDelay[iaggro].id, Right);
+ DoScriptText(GoCombatDelay[iaggro].id, pRightHead);
AggroYell = false;
}
if (ThreatYell2)
{
- Unit *source = (Left->GetEntry() == ThreatDelay2[ithreat].creature ? Left : Right);
+ Unit *source = (pLeftHead->GetEntry() == ThreatDelay2[ithreat].creature ? pLeftHead : pRightHead);
DoScriptText(ThreatDelay2[ithreat].id, source);
ThreatYell2 = false;
@@ -312,7 +319,7 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
if (ThreatYell)
{
- Unit *source = (Left->GetEntry() == ThreatDelay1[ithreat].creature ? Left : Right);
+ Unit *source = (pLeftHead->GetEntry() == ThreatDelay1[ithreat].creature ? pLeftHead : pRightHead);
DoScriptText(ThreatDelay1[ithreat].id, source);
ThreatYell = false;
@@ -321,7 +328,7 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
if (KillingYell)
{
- Unit *source = (Left->GetEntry() == KillingDelay[ikilling].creature ? Left : Right);
+ Unit *source = (pLeftHead->GetEntry() == KillingDelay[ikilling].creature ? pLeftHead : pRightHead);
DoScriptText(KillingDelay[ikilling].id, source);
KillingYell = false;
diff --git a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
index efdb9569b0a..abcea27249b 100644
--- a/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
+++ b/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
@@ -65,6 +65,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
uint64 NetherspaceDoor; // Door at Malchezaar
uint64 MastersTerraceDoor[2];
uint64 ImageGUID;
+ uint64 DustCoveredChest;
void Initialize()
{
@@ -91,6 +92,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
MastersTerraceDoor[0]= 0;
MastersTerraceDoor[1]= 0;
ImageGUID = 0;
+ DustCoveredChest = 0;
}
bool IsEncounterInProgress() const
@@ -176,7 +178,11 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
case DATA_SHADEOFARAN_EVENT: Encounters[6] = data; break;
case DATA_TERESTIAN_EVENT: Encounters[7] = data; break;
case DATA_NETHERSPITE_EVENT: Encounters[8] = data; break;
- case DATA_CHESS_EVENT: Encounters[9] = data; break;
+ case DATA_CHESS_EVENT:
+ if (data == DONE)
+ DoRespawnGameObject(DustCoveredChest,DAY);
+ Encounters[9] = data;
+ break;
case DATA_MALCHEZZAR_EVENT: Encounters[10] = data; break;
case DATA_NIGHTBANE_EVENT:
if (Encounters[11] == DONE)
@@ -231,6 +237,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
else
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
break;
+ case 185119: DustCoveredChest = go->GetGUID(); break;
}
switch(OperaEvent)
diff --git a/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp b/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp
index 5050238ee92..d9701a67587 100644
--- a/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp
+++ b/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp
@@ -40,214 +40,217 @@ EndScriptData */
struct TRINITY_DLL_DECL instance_molten_core : public ScriptedInstance
{
- instance_molten_core(Map *map) : ScriptedInstance(map) {Initialize();};
+ instance_molten_core(Map *map) : ScriptedInstance(map) {Initialize();};
+
+ uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest;
+ uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn, m_uiFirelordCacheGUID;;
+
+ //If all Bosses are dead.
+ bool IsBossDied[9];
+
+ uint32 Encounter[ENCOUNTERS];
+
+ void Initialize()
+ {
+ Lucifron = 0;
+ Magmadar = 0;
+ Gehennas = 0;
+ Garr = 0;
+ Geddon = 0;
+ Shazzrah = 0;
+ Sulfuron = 0;
+ Golemagg = 0;
+ Domo = 0;
+ Ragnaros = 0;
+ FlamewakerPriest = 0;
+
+ RuneKoro = 0;
+ RuneZeth = 0;
+ RuneMazj = 0;
+ RuneTheri = 0;
+ RuneBlaz = 0;
+ RuneKress = 0;
+ RuneMohn = 0;
+
+ m_uiFirelordCacheGUID = 0;
+
+ IsBossDied[0] = false;
+ IsBossDied[1] = false;
+ IsBossDied[2] = false;
+ IsBossDied[3] = false;
+ IsBossDied[4] = false;
+ IsBossDied[5] = false;
+ IsBossDied[6] = false;
+
+ IsBossDied[7] = false;
+ IsBossDied[8] = false;
+
+ for(uint8 i = 0; i < ENCOUNTERS; i++)
+ Encounter[i] = NOT_STARTED;
+ }
+
+ bool IsEncounterInProgress() const
+ {
+ return false;
+ };
+
+
+ void OnGameObjectCreate(GameObject *go, bool add)
+ {
+ switch(go->GetEntry())
+ {
+ case 176951: //Sulfuron
+ RuneKoro = go->GetGUID();
+ break;
+ case 176952: //Geddon
+ RuneZeth = go->GetGUID();
+ break;
+ case 176953: //Shazzrah
+ RuneMazj = go->GetGUID();
+ break;
+ case 176954: //Golemagg
+ RuneTheri = go->GetGUID();
+ break;
+ case 176955: //Garr
+ RuneBlaz = go->GetGUID();
+ break;
+ case 176956: //Magmadar
+ RuneKress = go->GetGUID();
+ break;
+ case 176957: //Gehennas
+ RuneMohn = go->GetGUID();
+ break;
+ case 179703:
+ m_uiFirelordCacheGUID = go->GetGUID(); //when majordomo event == DONE DoRespawnGameObject(m_uiFirelordCacheGUID,);
+ break;
+ }
+ }
- uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest;
- uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn;
- //If all Bosses are dead.
- bool IsBossDied[9];
+ void OnCreatureCreate(Creature *creature, bool add)
+ {
+ switch (creature->GetEntry())
+ {
+ case ID_LUCIFRON:
+ Lucifron = creature->GetGUID();
+ break;
- uint32 Encounter[ENCOUNTERS];
+ case ID_MAGMADAR:
+ Magmadar = creature->GetGUID();
+ break;
- void Initialize()
- {
- Lucifron = 0;
- Magmadar = 0;
- Gehennas = 0;
- Garr = 0;
- Geddon = 0;
- Shazzrah = 0;
- Sulfuron = 0;
- Golemagg = 0;
- Domo = 0;
- Ragnaros = 0;
- FlamewakerPriest = 0;
-
- RuneKoro = 0;
- RuneZeth = 0;
- RuneMazj = 0;
- RuneTheri = 0;
- RuneBlaz = 0;
- RuneKress = 0;
- RuneMohn = 0;
-
- IsBossDied[0] = false;
- IsBossDied[1] = false;
- IsBossDied[2] = false;
- IsBossDied[3] = false;
- IsBossDied[4] = false;
- IsBossDied[5] = false;
- IsBossDied[6] = false;
-
- IsBossDied[7] = false;
- IsBossDied[8] = false;
-
- for(uint8 i = 0; i < ENCOUNTERS; i++)
- Encounter[i] = NOT_STARTED;
+ case ID_GEHENNAS:
+ Gehennas = creature->GetGUID();
+ break;
+ case ID_GARR:
+ Garr = creature->GetGUID();
+ break;
- }
+ case ID_GEDDON:
+ Geddon = creature->GetGUID();
+ break;
- bool IsEncounterInProgress() const
- {
- return false;
- };
+ case ID_SHAZZRAH:
+ Shazzrah = creature->GetGUID();
+ break;
+ case ID_SULFURON:
+ Sulfuron = creature->GetGUID();
+ break;
- void OnGameObjectCreate(GameObject *go, bool add)
- {
- switch(go->GetEntry())
- {
- case 176951: //Sulfuron
- RuneKoro = go->GetGUID();
- break;
- case 176952: //Geddon
- RuneZeth = go->GetGUID();
- break;
- case 176953: //Shazzrah
- RuneMazj = go->GetGUID();
- break;
- case 176954: //Golemagg
- RuneTheri = go->GetGUID();
- break;
- case 176955: //Garr
- RuneBlaz = go->GetGUID();
- break;
- case 176956: //Magmadar
- RuneKress = go->GetGUID();
- break;
- case 176957: //Gehennas
- RuneMohn = go->GetGUID();
- break;
- }
- }
+ case ID_GOLEMAGG:
+ Golemagg = creature->GetGUID();
+ break;
+ case ID_DOMO:
+ Domo = creature->GetGUID();
+ break;
- void OnCreatureCreate(Creature *creature, bool add)
- {
- switch (creature->GetEntry())
- {
- case ID_LUCIFRON:
- Lucifron = creature->GetGUID();
- break;
-
- case ID_MAGMADAR:
- Magmadar = creature->GetGUID();
- break;
-
- case ID_GEHENNAS:
- Gehennas = creature->GetGUID();
- break;
-
- case ID_GARR:
- Garr = creature->GetGUID();
- break;
-
- case ID_GEDDON:
- Geddon = creature->GetGUID();
- break;
-
- case ID_SHAZZRAH:
- Shazzrah = creature->GetGUID();
- break;
-
- case ID_SULFURON:
- Sulfuron = creature->GetGUID();
- break;
-
- case ID_GOLEMAGG:
- Golemagg = creature->GetGUID();
- break;
-
- case ID_DOMO:
- Domo = creature->GetGUID();
- break;
-
- case ID_RAGNAROS:
- Ragnaros = creature->GetGUID();
- break;
-
- case ID_FLAMEWAKERPRIEST:
- FlamewakerPriest = creature->GetGUID();
- break;
- }
- }
+ case ID_RAGNAROS:
+ Ragnaros = creature->GetGUID();
+ break;
- uint64 GetData64 (uint32 identifier)
- {
- switch(identifier)
- {
- case DATA_SULFURON:
- return Sulfuron;
- case DATA_GOLEMAGG:
- return Sulfuron;
-
- case DATA_FLAMEWAKERPRIEST:
- return FlamewakerPriest;
- }
-
- return 0;
+ case ID_FLAMEWAKERPRIEST:
+ FlamewakerPriest = creature->GetGUID();
+ break;
}
+ }
- uint32 GetData(uint32 type)
+ uint64 GetData64 (uint32 identifier)
+ {
+ switch(identifier)
{
- switch(type)
- {
- case DATA_LUCIFRONISDEAD:
- if(IsBossDied[0])
- return 1;
- break;
-
- case DATA_MAGMADARISDEAD:
- if(IsBossDied[1])
- return 1;
- break;
-
- case DATA_GEHENNASISDEAD:
- if(IsBossDied[2])
- return 1;
- break;
-
- case DATA_GARRISDEAD:
- if(IsBossDied[3])
- return 1;
- break;
-
- case DATA_GEDDONISDEAD:
- if(IsBossDied[4])
- return 1;
- break;
-
- case DATA_SHAZZRAHISDEAD:
- if(IsBossDied[5])
- return 1;
- break;
-
- case DATA_SULFURONISDEAD:
- if(IsBossDied[6])
- return 1;
- break;
-
- case DATA_GOLEMAGGISDEAD:
- if(IsBossDied[7])
- return 1;
- break;
-
- case DATA_MAJORDOMOISDEAD:
- if(IsBossDied[8])
- return 1;
- break;
- }
-
- return 0;
+ case DATA_SULFURON:
+ return Sulfuron;
+ case DATA_GOLEMAGG:
+ return Sulfuron;
+
+ case DATA_FLAMEWAKERPRIEST:
+ return FlamewakerPriest;
}
- void SetData(uint32 type, uint32 data)
+ return 0;
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ switch(type)
{
- if (type == DATA_GOLEMAGG_DEATH)
- IsBossDied[7] = true;
+ case DATA_LUCIFRONISDEAD:
+ if(IsBossDied[0])
+ return 1;
+ break;
+
+ case DATA_MAGMADARISDEAD:
+ if(IsBossDied[1])
+ return 1;
+ break;
+
+ case DATA_GEHENNASISDEAD:
+ if(IsBossDied[2])
+ return 1;
+ break;
+
+ case DATA_GARRISDEAD:
+ if(IsBossDied[3])
+ return 1;
+ break;
+
+ case DATA_GEDDONISDEAD:
+ if(IsBossDied[4])
+ return 1;
+ break;
+
+ case DATA_SHAZZRAHISDEAD:
+ if(IsBossDied[5])
+ return 1;
+ break;
+
+ case DATA_SULFURONISDEAD:
+ if(IsBossDied[6])
+ return 1;
+ break;
+
+ case DATA_GOLEMAGGISDEAD:
+ if(IsBossDied[7])
+ return 1;
+ break;
+
+ case DATA_MAJORDOMOISDEAD:
+ if(IsBossDied[8])
+ return 1;
+ break;
}
+
+ return 0;
+ }
+
+ void SetData(uint32 type, uint32 data)
+ {
+ if (type == DATA_GOLEMAGG_DEATH)
+ IsBossDied[7] = true;
+ }
};
InstanceData* GetInstance_instance_molten_core(Map *map)
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
index 95783562e65..1215604a3f6 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
@@ -57,10 +57,14 @@ const MinionData minionData[] =
{0, 0,}
};
-#define GO_GOTHIK_GATE 181170
-#define GO_HORSEMEN_CHEST 181366
+enum
+{
+ GO_HORSEMEN_CHEST_HERO = 193426,
+ GO_HORSEMEN_CHEST = 181366, //four horsemen event, DoRespawnGameObject() when event == DONE
+ GO_GOTHIK_GATE = 181170,
-#define SPELL_ERUPTION 29371
+ SPELL_ERUPTION = 29371
+};
const float HeiganPos[2] = {2796, -3707};
const float HeiganEruptionSlope[3] =