Blackfathom Deeps: Fix GO & Event handling
--HG-- branch : trunk
This commit is contained in:
@@ -22,7 +22,8 @@ enum Data
|
|||||||
TYPE_GELIHAST,
|
TYPE_GELIHAST,
|
||||||
TYPE_KELRIS,
|
TYPE_KELRIS,
|
||||||
TYPE_SHRINE,
|
TYPE_SHRINE,
|
||||||
TYPE_AKU_MAI
|
TYPE_AKU_MAI,
|
||||||
|
DATA_FIRE
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Creatures
|
enum Creatures
|
||||||
|
|||||||
+24
-24
@@ -24,11 +24,12 @@ EndScriptData */
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "blackfathom_deeps.h"
|
#include "blackfathom_deeps.h"
|
||||||
|
|
||||||
#define MAX_ENCOUNTER 3
|
#define MAX_ENCOUNTER 4
|
||||||
|
|
||||||
/* Encounter 0 = Gelihast
|
/* Encounter 0 = Gelihast
|
||||||
Encounter 1 = Twilight Lord Kelris
|
Encounter 1 = Twilight Lord Kelris
|
||||||
Encounter 2 = Shrine event
|
Encounter 2 = Shrine event
|
||||||
|
Encounter 3 = Aku'Mai
|
||||||
Must kill twilight lord for shrine event to be possible
|
Must kill twilight lord for shrine event to be possible
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
uint64 m_uiMainDoorGUID;
|
uint64 m_uiMainDoorGUID;
|
||||||
|
|
||||||
uint8 m_auiEncounter[MAX_ENCOUNTER];
|
uint8 m_auiEncounter[MAX_ENCOUNTER];
|
||||||
|
uint8 m_uiCountFires;
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
{
|
{
|
||||||
@@ -66,6 +68,7 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
m_uiShrineOfGelihastGUID = 0;
|
m_uiShrineOfGelihastGUID = 0;
|
||||||
m_uiAltarOfTheDeepsGUID = 0;
|
m_uiAltarOfTheDeepsGUID = 0;
|
||||||
m_uiMainDoorGUID = 0;
|
m_uiMainDoorGUID = 0;
|
||||||
|
m_uiCountFires = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* pCreature, bool add)
|
void OnCreatureCreate(Creature* pCreature, bool add)
|
||||||
@@ -107,13 +110,17 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
break;
|
break;
|
||||||
case GO_SHRINE_OF_GELIHAST:
|
case GO_SHRINE_OF_GELIHAST:
|
||||||
m_uiShrineOfGelihastGUID = pGo->GetGUID();
|
m_uiShrineOfGelihastGUID = pGo->GetGUID();
|
||||||
|
if (m_auiEncounter[0] != DONE)
|
||||||
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||||
break;
|
break;
|
||||||
case GO_ALTAR_OF_THE_DEEPS:
|
case GO_ALTAR_OF_THE_DEEPS:
|
||||||
m_uiAltarOfTheDeepsGUID = pGo->GetGUID();
|
m_uiAltarOfTheDeepsGUID = pGo->GetGUID();
|
||||||
|
if (m_auiEncounter[3] != DONE)
|
||||||
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||||
break;
|
break;
|
||||||
case GO_AKU_MAI_DOOR:
|
case GO_AKU_MAI_DOOR:
|
||||||
|
if (m_auiEncounter[2] == DONE)
|
||||||
|
HandleGameObject(NULL,true,pGo);
|
||||||
m_uiMainDoorGUID = pGo->GetGUID();
|
m_uiMainDoorGUID = pGo->GetGUID();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -143,12 +150,15 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TYPE_SHRINE:
|
case TYPE_AKU_MAI:
|
||||||
m_auiEncounter[2] = uiData;
|
m_auiEncounter[3] = uiData;
|
||||||
if (uiData == DONE)
|
if (uiData == DONE)
|
||||||
if (GameObject *pGo = instance->GetGameObject(m_uiAltarOfTheDeepsGUID))
|
if (GameObject *pGo = instance->GetGameObject(m_uiAltarOfTheDeepsGUID))
|
||||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||||
break;
|
break;
|
||||||
|
case DATA_FIRE:
|
||||||
|
m_uiCountFires = uiData;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,10 +166,16 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
{
|
{
|
||||||
switch(uiType)
|
switch(uiType)
|
||||||
{
|
{
|
||||||
case TYPE_KELRIS:
|
case TYPE_GELIHAST:
|
||||||
return m_auiEncounter[0];
|
return m_auiEncounter[0];
|
||||||
case TYPE_SHRINE:
|
case TYPE_KELRIS:
|
||||||
return m_auiEncounter[1];
|
return m_auiEncounter[1];
|
||||||
|
case TYPE_SHRINE:
|
||||||
|
return m_auiEncounter[2];
|
||||||
|
case TYPE_AKU_MAI:
|
||||||
|
return m_auiEncounter[3];
|
||||||
|
case DATA_FIRE:
|
||||||
|
return m_uiCountFires;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -198,7 +214,10 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance
|
|||||||
pShrine2 && pShrine2->GetGoState() == GO_STATE_ACTIVE &&
|
pShrine2 && pShrine2->GetGoState() == GO_STATE_ACTIVE &&
|
||||||
pShrine3 && pShrine3->GetGoState() == GO_STATE_ACTIVE &&
|
pShrine3 && pShrine3->GetGoState() == GO_STATE_ACTIVE &&
|
||||||
pShrine4 && pShrine4->GetGoState() == GO_STATE_ACTIVE)
|
pShrine4 && pShrine4->GetGoState() == GO_STATE_ACTIVE)
|
||||||
|
{
|
||||||
HandleGameObject(m_uiMainDoorGUID,true);
|
HandleGameObject(m_uiMainDoorGUID,true);
|
||||||
|
m_auiEncounter[2] = DONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -207,20 +226,6 @@ InstanceData* GetInstanceData_instance_blackfathom_deeps(Map* pMap)
|
|||||||
return new instance_blackfathom_deeps(pMap);
|
return new instance_blackfathom_deeps(pMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GoHello_blackfathom_fire(Player *pPlayer, GameObject* pGo)
|
|
||||||
{
|
|
||||||
ScriptedInstance *pInstance = pGo->GetInstanceData();
|
|
||||||
|
|
||||||
if (pInstance)
|
|
||||||
{
|
|
||||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
|
||||||
pGo->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
|
||||||
((instance_blackfathom_deeps*)pInstance)->CheckFires();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddSC_instance_blackfathom_deeps()
|
void AddSC_instance_blackfathom_deeps()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
@@ -228,9 +233,4 @@ void AddSC_instance_blackfathom_deeps()
|
|||||||
newscript->Name = "instance_blackfathom_deeps";
|
newscript->Name = "instance_blackfathom_deeps";
|
||||||
newscript->GetInstanceData = &GetInstanceData_instance_blackfathom_deeps;
|
newscript->GetInstanceData = &GetInstanceData_instance_blackfathom_deeps;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
|
||||||
newscript->Name = "go_blackfathom_fire";
|
|
||||||
newscript->pGOHello = &GoHello_blackfathom_fire;
|
|
||||||
newscript->RegisterSelf();
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user