*Clean up scripts, remove all per script declared functions to toggle gameobject state and use InstanceData::HandleGameObject instead.

--HG--
branch : trunk
This commit is contained in:
Machiavelli
2009-06-22 14:31:39 +02:00
parent e3d5e9af36
commit 662ef92caa
24 changed files with 126 additions and 263 deletions
@@ -458,10 +458,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, DONE); // Completed
for(uint8 i = DATA_GAMEOBJECT_ILLIDAN_DOOR_R; i < DATA_GAMEOBJECT_ILLIDAN_DOOR_L + 1; ++i)
{
if (GameObject* pDoor = pInstance->instance->GetGameObject(pInstance->GetData64(i)))
pDoor->SetGoState(GO_STATE_ACTIVE); // Open Doors
}
pInstance->HandleGameObject(pInstance->GetData64(i), true);
}
void KilledUnit(Unit *victim)
@@ -1002,11 +999,11 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
DoorGUID[0] = pInstance->GetData64(DATA_GAMEOBJECT_ILLIDAN_DOOR_R);
DoorGUID[1] = pInstance->GetData64(DATA_GAMEOBJECT_ILLIDAN_DOOR_L);
if(GETGO(Gate, GateGUID))
Gate->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(GateGUID), false);
for(uint8 i = 0; i < 2; i++)
if(GETGO(Door, DoorGUID[i]))
Door->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DoorGUID[i]), false);
}
else
{
@@ -1070,12 +1067,13 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
void BeginTalk()
{
if(pInstance)
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
if(!pInstance)
return;
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
for(uint8 i = 0; i < 2; i++)
if(GETGO(Door, DoorGUID[i]))
Door->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DoorGUID[i]), false);
if(GETCRE(Illidan, IllidanGUID))
{
@@ -1240,8 +1238,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
m_creature->InterruptNonMeleeSpells(true);
Spirit[0]->InterruptNonMeleeSpells(true);
Spirit[1]->InterruptNonMeleeSpells(true);
if(GETGO(Gate, GateGUID))
Gate->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(GateGUID), true);
Timer = 2000;
break;
case 4:
@@ -1271,8 +1268,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
{
case 6:
for(uint8 i = 0; i < 2; i++)
if(GETGO(Door, DoorGUID[i]))
Door->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DoorGUID[i]), true);
break;
case 8:
if(Phase == PHASE_WALK)
@@ -103,17 +103,6 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI
events.ScheduleEvent(EVENT_FLAME, 20000, GCD_CAST);
}
void ToggleDoors(bool close)
{
if(GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_SUPREMUS_DOORS)))
{
if(close)
Doors->SetGoState(GO_STATE_READY); // Closed
else
Doors->SetGoState(GO_STATE_ACTIVE); // Open
}
}
void ChangePhase()
{
if(!phase || phase == PHASE_CHASE)
@@ -145,7 +134,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_SUPREMUSEVENT, DONE);
ToggleDoors(false);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_SUPREMUS_DOORS), true);
}
summons.DespawnAll();
}
@@ -108,16 +108,16 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
case 182060:
HordeGate = go->GetGUID();
if(allianceRetreat)
go->SetGoState(GO_STATE_ACTIVE);
HandleGameObject(0, true, go);
else
go->SetGoState(GO_STATE_READY);
HandleGameObject(0, false, go);
break;
case 182061:
ElfGate = go->GetGUID();
if(hordeRetreat)
go->SetGoState(GO_STATE_ACTIVE);
HandleGameObject(0, true, go);
else
go->SetGoState(GO_STATE_READY);
HandleGameObject(0, false, go);
break;
case GO_ANCIENT_GEM:
m_uiAncientGemGUID.push_back(go->GetGUID());
@@ -125,11 +125,6 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
}
}
void OpenDoor(uint64 DoorGUID, bool open)
{
HandleGameObject(DoorGUID, open, NULL);
}
void OnCreatureCreate(Creature *creature, bool add)
{
switch(creature->GetEntry())
@@ -233,12 +228,12 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
break;
case DATA_ALLIANCE_RETREAT:
allianceRetreat = data;
OpenDoor(HordeGate,true);
HandleGameObject(HordeGate, true);
SaveToDB();
break;
case DATA_HORDE_RETREAT:
hordeRetreat = data;
OpenDoor(ElfGate,true);
HandleGameObject(ElfGate, true);
SaveToDB();
break;
case DATA_RAIDDAMAGE:
@@ -134,12 +134,6 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance
}
}
void OpenDoor(uint64 DoorGUID, bool open)
{
if(GameObject *Door = instance->GetGameObject(DoorGUID))
Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
}
void OnCreatureCreate(Creature *creature, bool add)
{
switch(creature->GetEntry())
@@ -186,9 +180,9 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance
case DATA_CONTROL_CONSOLE:
if(data == DONE)
{
OpenDoor(BridgePart[0], true);
OpenDoor(BridgePart[1], true);
OpenDoor(BridgePart[2], true);
HandleGameObject(BridgePart[0], true);
HandleGameObject(BridgePart[0], true);
HandleGameObject(BridgePart[0], true);
}
ControlConsole = data;
case DATA_HYDROSSTHEUNSTABLEEVENT: Encounters[0] = data; break;
@@ -115,14 +115,11 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance
case TYPE_HYDROMANCER_THESPIA:
if (data == SPECIAL)
{
if (GameObject *_go = instance->GetGameObject(AccessPanelHydro))
_go->SetGoState(GO_STATE_ACTIVE);
HandleGameObject(AccessPanelHydro, true);
if (GetData(TYPE_MEKGINEER_STEAMRIGGER) == SPECIAL)
{
if (GameObject *_go = instance->GetGameObject(MainChambersDoor))
_go->SetGoState(GO_STATE_ACTIVE);
}
HandleGameObject(MainChambersDoor, true);
debug_log("TSCR: Instance Steamvault: Access panel used.");
}
Encounter[0] = data;
@@ -130,14 +127,11 @@ struct TRINITY_DLL_DECL instance_steam_vault : public ScriptedInstance
case TYPE_MEKGINEER_STEAMRIGGER:
if (data == SPECIAL)
{
if (GameObject *_go = instance->GetGameObject(AccessPanelMek))
_go->SetGoState(GO_STATE_ACTIVE);
HandleGameObject(AccessPanelMek, true);
if (GetData(TYPE_HYDROMANCER_THESPIA) == SPECIAL)
{
if (GameObject *_go = instance->GetGameObject(MainChambersDoor))
_go->SetGoState(GO_STATE_ACTIVE);
}
HandleGameObject(MainChambersDoor, true);
debug_log("TSCR: Instance Steamvault: Access panel used.");
}
Encounter[1] = data;
@@ -110,9 +110,7 @@ struct TRINITY_DLL_DECL boss_gruulAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_GRUULEVENT, DONE);
if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GRUULDOOR)))
EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door
pInstance->HandleGameObject(pInstance->GetData64(DATA_GRUULDOOR), true); // Open the encounter door
}
}
@@ -53,17 +53,21 @@ struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI
AcidSpray_Timer = 10000;
PoisonSpawn_Timer = 5000;
PoisonBolt_Timer = 7000;
ToggleDoors(0, DATA_DOOR4);
if(pInstance)
{
pInstance->SetData(TYPE_BROGGOK_EVENT, NOT_STARTED);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR4), true);
}
}
void EnterCombat(Unit *who)
{
DoScriptText(SAY_AGGRO, m_creature);
ToggleDoors(1, DATA_DOOR4);
if(pInstance)
{
pInstance->SetData(TYPE_BROGGOK_EVENT, IN_PROGRESS);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR4), false);
}
}
void JustSummoned(Creature *summoned)
@@ -102,25 +106,14 @@ struct TRINITY_DLL_DECL boss_broggokAI : public ScriptedAI
void JustDied(Unit* who)
{
ToggleDoors(0, DATA_DOOR4);
ToggleDoors(0, DATA_DOOR5);
if(pInstance)
pInstance->SetData(TYPE_BROGGOK_EVENT, DONE);
}
void ToggleDoors(uint8 close, uint64 DOOR)
{
if (pInstance)
{
if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR)))
{
if (close == 1)
Doors->SetGoState(GO_STATE_READY); // Closed
else
Doors->SetGoState(GO_STATE_ACTIVE); // Open
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR4), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR5), true);
pInstance->SetData(TYPE_BROGGOK_EVENT, DONE);
}
}
};
CreatureAI* GetAI_boss_broggok(Creature *_Creature)
@@ -186,11 +186,13 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
void JustDied(Unit* Killer)
{
DoScriptText(SAY_DIE, m_creature);
ToggleDoors(0, DATA_DOOR1);
ToggleDoors(0, DATA_DOOR6);
if(pInstance)
pInstance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, DONE);
if(!pInstance)
return;
pInstance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, DONE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR1), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR6), true);
}
void UpdateAI(const uint32 diff)
@@ -260,19 +262,6 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
DoMeleeAttackIfReady();
}
void ToggleDoors(uint8 close, uint64 DOOR)
{
if (pInstance)
{
if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR)))
{
if (close == 1)
Doors->SetGoState(GO_STATE_READY); // Closed
else
Doors->SetGoState(GO_STATE_ACTIVE); // Open
}
}
}
};
CreatureAI* GetAI_boss_kelidan_the_breaker(Creature *_Creature)
@@ -59,10 +59,12 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI
ExplodingBreaker_Timer = 6000;
Domination_Timer = 120000;
Knockdown_Timer = 10000;
ToggleDoors(0, DATA_DOOR2);
if(pInstance)
pInstance->SetData(TYPE_THE_MAKER_EVENT, NOT_STARTED);
if(!pInstance)
return;
pInstance->SetData(TYPE_THE_MAKER_EVENT, NOT_STARTED);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR2), true);
}
void EnterCombat(Unit *who)
@@ -74,9 +76,11 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI
case 2: DoScriptText(SAY_AGGRO_3, m_creature); break;
}
ToggleDoors(1, DATA_DOOR2);
if(pInstance)
pInstance->SetData(TYPE_THE_MAKER_EVENT, IN_PROGRESS);
if(!pInstance)
return;
pInstance->SetData(TYPE_THE_MAKER_EVENT, IN_PROGRESS);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR2), false);
}
void KilledUnit(Unit* victim)
@@ -91,11 +95,15 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI
void JustDied(Unit* Killer)
{
DoScriptText(SAY_DIE, m_creature);
ToggleDoors(0, DATA_DOOR2);
ToggleDoors(0, DATA_DOOR3);
if(pInstance)
pInstance->SetData(TYPE_THE_MAKER_EVENT, DONE);
if(!pInstance)
return;
pInstance->SetData(TYPE_THE_MAKER_EVENT, DONE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR2), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_DOOR3), true);
}
void UpdateAI(const uint32 diff)
@@ -136,20 +144,6 @@ struct TRINITY_DLL_DECL boss_the_makerAI : public ScriptedAI
DoMeleeAttackIfReady();
}
void ToggleDoors(uint8 close, uint64 DOOR)
{
if (pInstance)
{
if (GameObject* Doors = pInstance->instance->GetGameObject(pInstance->GetData64(DOOR)))
{
if (close == 1)
Doors->SetGoState(GO_STATE_READY); // Closed
else
Doors->SetGoState(GO_STATE_ACTIVE); // Open
}
}
}
};
CreatureAI* GetAI_boss_the_makerAI(Creature *_Creature)
@@ -161,7 +155,7 @@ void AddSC_boss_the_maker()
{
Script *newscript;
newscript = new Script;
newscript->Name="boss_the_maker";
newscript->Name = "boss_the_maker";
newscript->GetAI = &GetAI_boss_the_makerAI;
newscript->RegisterSelf();
}
@@ -125,10 +125,7 @@ struct TRINITY_DLL_DECL instance_magtheridons_lair : public ScriptedInstance
if(data == NOT_STARTED)
RespawnTimer = 10000;
if(data != IN_PROGRESS)
{
if(GameObject *Door = instance->GetGameObject(DoorGUID))
Door->SetGoState(GO_STATE_ACTIVE);
}
HandleGameObject(DoorGUID, true);
break;
case DATA_CHANNELER_EVENT:
switch(data)
@@ -148,8 +145,7 @@ struct TRINITY_DLL_DECL instance_magtheridons_lair : public ScriptedInstance
}
}
CageTimer = 0;
if(GameObject *Door = instance->GetGameObject(DoorGUID))
Door->SetGoState(GO_STATE_ACTIVE);
HandleGameObject(DoorGUID, true);
}break;
case IN_PROGRESS: // Event start.
if(Encounters[1] != IN_PROGRESS)
@@ -169,8 +165,7 @@ struct TRINITY_DLL_DECL instance_magtheridons_lair : public ScriptedInstance
Magtheridon->MonsterTextEmote("'s bonds begin to weaken!", 0);
CageTimer = 120000;
}
if(GameObject *Door = instance->GetGameObject(DoorGUID))
Door->SetGoState(GO_STATE_READY);
HandleGameObject(DoorGUID, false);
}break;
case DONE: // Add buff and check if all channelers are dead.
for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
@@ -232,12 +232,7 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI
return;
pInstance->SetData(TYPE_NETHEKURSE,DONE);
if (pInstance->GetData64(DATA_NETHEKURSE_DOOR))
{
if (GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_NETHEKURSE_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE);
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_NETHEKURSE_DOOR), true);
}
void UpdateAI(const uint32 diff)
@@ -138,10 +138,8 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
void HandleTerraceDoors(bool open)
{
if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1)))
Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
if(GameObject *Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2)))
Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1), open);
pInstance->HandleGameObject(pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2), open);
}
void EnterCombat(Unit *who)
@@ -207,10 +207,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
phase = 1;
if(pInstance)
{
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE);
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), true);
}
void KilledUnit(Unit *victim)
@@ -236,10 +233,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
positions.push_back(&InfernalPoints[i]);
if(pInstance)
{
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE);
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), true);
}
void EnterCombat(Unit *who)
@@ -247,10 +241,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
DoScriptText(SAY_AGGRO, m_creature);
if(pInstance)
{
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR)))
Door->SetGoState(GO_STATE_READY);
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR), false); // Open the door leading further in
}
void InfernalCleanup()
@@ -141,9 +141,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
{
// Not in progress
pInstance->SetData(DATA_SHADEOFARAN_EVENT, NOT_STARTED);
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), true);
}
}
@@ -163,9 +161,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_SHADEOFARAN_EVENT, DONE);
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), true);
}
}
@@ -181,8 +177,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_SHADEOFARAN_EVENT, IN_PROGRESS);
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR)))
Door->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), false);
}
}
@@ -232,8 +227,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
{
if(pInstance)
{
if(GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR)))
Door->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_LIBRARY_DOOR), false);
CloseDoorTimer = 0;
}
}else CloseDoorTimer -= diff;
@@ -572,11 +572,9 @@ struct TRINITY_DLL_DECL boss_croneAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_OPERA_EVENT, DONE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
lDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT)))
rDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
}
@@ -767,11 +765,9 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_OPERA_EVENT, DONE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
lDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT)))
rDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
}
@@ -1014,11 +1010,8 @@ struct TRINITY_DLL_DECL boss_julianneAI : public ScriptedAI
if(pInstance)
{
pInstance->SetData(DATA_OPERA_EVENT, DONE);
if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
lDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT)))
rDoor->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
}
@@ -1103,11 +1096,9 @@ struct TRINITY_DLL_DECL boss_romuloAI : public ScriptedAI
if (pInstance)
{
pInstance->SetData(DATA_OPERA_EVENT, DONE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT), true);
if (GameObject* lDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
lDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* rDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORRIGHT)))
rDoor->SetGoState(GO_STATE_ACTIVE);
if (GameObject* pSideEntrance = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GO_SIDE_ENTRANCE_DOOR)))
pSideEntrance->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED);
}
@@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
for (uint8 i = 0; i < ENCOUNTERS; ++i)
Encounters[i] = NOT_STARTED;
OperaEvent = urand(1,3); // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
OperaEvent = urand(1,3); // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
OzDeathCount = 0;
CurtainGUID = 0;
@@ -148,11 +148,8 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
Event = pInstance->GetData(DATA_OPERA_PERFORMANCE);
if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
Door->SetGoState(GO_STATE_READY);
if (GameObject* Curtain = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS)))
Curtain->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), false);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_CURTAINS), false);
}
}
@@ -179,10 +176,8 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
case 5:
if(pInstance)
{
if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
Door->SetGoState(GO_STATE_READY);
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), false);
IsBeingEscorted = false;
PerformanceReady = true;
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
@@ -314,9 +309,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
return;
pInstance->SetData(DATA_OPERA_EVENT, IN_PROGRESS);
if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT)))
Door->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_GAMEOBJECT_STAGEDOORLEFT), true);
m_creature->CastSpell(m_creature, SPELL_TUXEDO, true);
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
@@ -130,10 +130,9 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
if (pInstance)
{
pInstance->SetData(DATA_KAELTHAS_EVENT, NOT_STARTED);
if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
// Small door opened after event are expected to be closed by default
pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), true);
// Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
// Small door opened after event are expected to be closed by default
}
}
@@ -143,9 +142,9 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
if (!pInstance)
return;
if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR)))
EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door
pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), true);
// Open the encounter door
}
void DamageTaken(Unit* done_by, uint32 &damage)
@@ -158,9 +157,9 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
{
if (!pInstance)
return;
if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_DOOR)))
EncounterDoor->SetGoState(GO_STATE_READY); //Close the encounter door, open it in JustDied/Reset
pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_DOOR), false);
//Close the encounter door, open it in JustDied/Reset
}
void MoveInLineOfSight(Unit *who)
@@ -350,10 +349,8 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
if (pInstance)
{
if (GameObject* KaelLeft = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_STATUE_LEFT)))
KaelLeft->SetGoState(GO_STATE_ACTIVE);
if (GameObject* KaelRight = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_KAEL_STATUE_RIGHT)))
KaelRight->SetGoState(GO_STATE_ACTIVE);
pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_STATUE_LEFT), true);
pInstance->HandleGameObject(pInstance->GetData64(DATA_KAEL_STATUE_RIGHT), true);
}
}else
{
@@ -105,8 +105,8 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
}
}
if (GameObject* Door = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)))
Door->SetGoState(GO_STATE_ACTIVE); // Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), true);
// Open the big encounter door. Close it in Aggro and open it only in JustDied(and here)
// Small door opened after event are expected to be closed by default
// Set Inst data for encounter
pInstance->SetData(DATA_SELIN_EVENT, NOT_STARTED);
@@ -185,11 +185,9 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
DoScriptText(SAY_AGGRO, m_creature);
if (pInstance)
{
if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)))
EncounterDoor->SetGoState(GO_STATE_READY); //Close the encounter door, open it in JustDied/Reset
}
}
pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), false);
//Close the encounter door, open it in JustDied/Reset
}
void KilledUnit(Unit* victim)
{
@@ -230,13 +228,8 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
return;
pInstance->SetData(DATA_SELIN_EVENT, DONE); // Encounter complete!
if (GameObject* EncounterDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR)))
EncounterDoor->SetGoState(GO_STATE_ACTIVE); // Open the encounter door
if (GameObject* ContinueDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SELIN_DOOR)))
ContinueDoor->SetGoState(GO_STATE_ACTIVE); // Open the door leading further in
pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_ENCOUNTER_DOOR), true); // Open the encounter door
pInstance->HandleGameObject(pInstance->GetData64(DATA_SELIN_DOOR), true); // Open the door leading further in
ShatterRemainingCrystals();
}
@@ -66,20 +66,6 @@ struct TRINITY_DLL_DECL instance_razorfen_kraul : public ScriptedInstance
}
}
void HandleGameObject(uint64 guid, uint32 state)
{
Player *player = GetPlayerInMap();
if (!player || !guid)
{
debug_log("SD2: Instance Razorfen Kraul: HandleGameObject fail");
return;
}
if (GameObject *go = instance->GetGameObject(guid))
go->SetGoState(GOState(state));
}
void Update(uint32 diff)
{
if (WardCheck_Timer < diff)
@@ -90,13 +90,12 @@ struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
{
switch(type)
{
case TYPE_MOGRAINE_AND_WHITE_EVENT: Encounter[0] = data; break;
case TYPE_MOGRAINE_AND_WHITE_EVENT:
Encounter[0] = data;
break;
case GAMEOBJECT_PUMPKIN_SHRINE:
{
GameObject *Shrine = instance->GetGameObject(PumpkinShrineGUID);
if(Shrine)
Shrine->SetGoState(GO_STATE_READY);
}break;
HandleGameObject(PumpkinShrineGUID, false);
break;
case DATA_HORSEMAN_EVENT:
if (data == DONE)
{
@@ -107,9 +106,7 @@ struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
add->DealDamage(add, add->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
}
HorsemanAdds.clear();
GameObject *Shrine = instance->GetGameObject(PumpkinShrineGUID);
if(Shrine)
Shrine->SetGoState(GO_STATE_READY);
HandleGameObject(PumpkinShrineGUID, false);
}
break;
}
@@ -305,8 +305,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI
if( pInstance )
{
pInstance->SetData(TYPE_HARBINGERSKYRISS,IN_PROGRESS);
if (GameObject* Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD)))
Sphere->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD), false);
IsRunning = true;
}
}
@@ -346,8 +345,7 @@ struct TRINITY_DLL_DECL npc_warden_mellicharAI : public ScriptedAI
case 2:
DoCast(m_creature,SPELL_TARGET_ALPHA);
pInstance->SetData(TYPE_WARDEN_1,IN_PROGRESS);
if (GameObject *Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD)))
Sphere->SetGoState(GO_STATE_READY);
pInstance->HandleGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD), false);
break;
case 3:
DoCast(m_creature,SPELL_TARGET_BETA);
@@ -161,9 +161,8 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI
switch( Intro_Phase )
{
case 1:
DoScriptText(SAY_INTRO, m_creature);
if (GameObject* Sphere = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD)))
Sphere->SetGoState(GO_STATE_ACTIVE);
DoScriptText(SAY_INTRO, m_creature);
pInstance->HandleGameObject(pInstance->GetData64(DATA_SPHERE_SHIELD), true);
++Intro_Phase;
Intro_Timer = 25000;
break;
@@ -137,12 +137,6 @@ struct TRINITY_DLL_DECL instance_zulaman : public ScriptedInstance
CheckInstanceStatus();
}
void OpenDoor(uint64 DoorGUID, bool open)
{
if(GameObject *Door = instance->GetGameObject(DoorGUID))
Door->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
}
void SummonHostage(uint8 num)
{
if(!QuestMinute)
@@ -166,10 +160,10 @@ struct TRINITY_DLL_DECL instance_zulaman : public ScriptedInstance
void CheckInstanceStatus()
{
if(BossKilled >= 4)
OpenDoor(HexLordGateGUID, true);
HandleGameObject(HexLordGateGUID, true);
if(BossKilled >= 5)
OpenDoor(ZulJinGateGUID, true);
HandleGameObject(ZulJinGateGUID, true);
}
void UpdateWorldState(uint32 field, uint32 value)
@@ -224,7 +218,7 @@ struct TRINITY_DLL_DECL instance_zulaman : public ScriptedInstance
break;
case DATA_AKILZONEVENT:
Encounters[1] = data;
OpenDoor(AkilzonDoorGUID, data != IN_PROGRESS);
HandleGameObject(AkilzonDoorGUID, data != IN_PROGRESS);
if(data == DONE)
{
if(QuestMinute)
@@ -241,19 +235,19 @@ struct TRINITY_DLL_DECL instance_zulaman : public ScriptedInstance
break;
case DATA_HALAZZIEVENT:
Encounters[3] = data;
OpenDoor(HalazziDoorGUID, data != IN_PROGRESS);
HandleGameObject(HalazziDoorGUID, data != IN_PROGRESS);
if(data == DONE) SummonHostage(3);
break;
case DATA_HEXLORDEVENT:
Encounters[4] = data;
if(data == IN_PROGRESS)
OpenDoor(HexLordGateGUID, false);
HandleGameObject(HexLordGateGUID, false);
else if(data == NOT_STARTED)
CheckInstanceStatus();
break;
case DATA_ZULJINEVENT:
Encounters[5] = data;
OpenDoor(ZulJinDoorGUID, data != IN_PROGRESS);
HandleGameObject(ZulJinDoorGUID, data != IN_PROGRESS);
break;
case DATA_CHESTLOOTED:
ChestLooted++;