aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKudlaty <none@none>2009-06-18 14:04:36 +0200
committerKudlaty <none@none>2009-06-18 14:04:36 +0200
commit8662fbb007e88400ca698636c5594c9474f3b4e2 (patch)
tree85e1f23289633f9ad9fd37e0a936e6a5652acb1a /src
parentdd7dc8b8699f1c3f01129f6922edad2009d9bcd8 (diff)
Merge [SD2]
r1041 Add support to respawn GO 164869. In addition, add placeholders to respawn 169243, 185168, 185169, 179703, 181366 and 193426 r1042 Remove limited/obsolete grid search for ancient gem in hyjal, replace with instance wide respawn of go (stored in instance script list) r1043 Code cleanup in instance script for Kara r1044 Added placeholder scripts for boss nazan/vazruden - Skip, we already have scripted that boss r1045 Initialize variables in boss omrogg. Use different summon type for heads and fix possible crash. Some code cleanup and sd2 style applied. --HG-- branch : trunk
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] =