Scripts: Removed CAST_PET and CAST_INST
This commit is contained in:
@@ -24,13 +24,9 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "InstanceScript.h"
|
||||
|
||||
#define SCRIPT_CAST_TYPE dynamic_cast
|
||||
|
||||
#define CAST_PLR(a) (SCRIPT_CAST_TYPE<Player*>(a))
|
||||
#define CAST_CRE(a) (SCRIPT_CAST_TYPE<Creature*>(a))
|
||||
#define CAST_PET(a) (SCRIPT_CAST_TYPE<Pet*>(a))
|
||||
#define CAST_AI(a, b) (SCRIPT_CAST_TYPE<a*>(b))
|
||||
#define CAST_INST(a, b) (SCRIPT_CAST_TYPE<a*>(b))
|
||||
#define CAST_PLR(a) (dynamic_cast<Player*>(a))
|
||||
#define CAST_CRE(a) (dynamic_cast<Creature*>(a))
|
||||
#define CAST_AI(a, b) (dynamic_cast<a*>(b))
|
||||
|
||||
#define GET_SPELL(a) (const_cast<SpellEntry*>(GetSpellStore()->LookupEntry(a)))
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
|
||||
DoCast(me, SPELL_CONVERT_CREDIT);
|
||||
if (me->isPet())
|
||||
CAST_PET(me)->SetDuration(7500);
|
||||
me->ToPet()->SetDuration(7500);
|
||||
Credit = true;
|
||||
} else Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,8 @@ enum Data64
|
||||
DATA_MOORABI_STATUE,
|
||||
DATA_DRAKKARI_COLOSSUS_STATUE,
|
||||
DATA_DRAKKARI_COLOSSUS,
|
||||
DATA_RUIN_DWELLER_DIED
|
||||
DATA_RUIN_DWELLER_DIED,
|
||||
DATA_STATUE_ACTIVATE,
|
||||
};
|
||||
|
||||
enum mainCreatures
|
||||
|
||||
@@ -306,19 +306,31 @@ public:
|
||||
void SetData64(uint32 type, uint64 data)
|
||||
{
|
||||
if (type == DATA_RUIN_DWELLER_DIED)
|
||||
DwellerGUIDs.erase(data);
|
||||
DwellerGUIDs.erase(data);
|
||||
else if (type == DATA_STATUE_ACTIVATE)
|
||||
{
|
||||
toActivate = data;
|
||||
timer = 3500;
|
||||
++phase;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SLAD_RAN_EVENT: return m_auiEncounter[0];
|
||||
case DATA_MOORABI_EVENT: return m_auiEncounter[1];
|
||||
case DATA_GAL_DARAH_EVENT: return m_auiEncounter[2];
|
||||
case DATA_DRAKKARI_COLOSSUS_EVENT: return m_auiEncounter[3];
|
||||
case DATA_ECK_THE_FEROCIOUS_EVENT: return m_auiEncounter[4];
|
||||
case DATA_ALIVE_RUIN_DWELLERS: return DwellerGUIDs.size();
|
||||
case DATA_SLAD_RAN_EVENT:
|
||||
return m_auiEncounter[0];
|
||||
case DATA_MOORABI_EVENT:
|
||||
return m_auiEncounter[1];
|
||||
case DATA_GAL_DARAH_EVENT:
|
||||
return m_auiEncounter[2];
|
||||
case DATA_DRAKKARI_COLOSSUS_EVENT:
|
||||
return m_auiEncounter[3];
|
||||
case DATA_ECK_THE_FEROCIOUS_EVENT:
|
||||
return m_auiEncounter[4];
|
||||
case DATA_ALIVE_RUIN_DWELLERS:
|
||||
return DwellerGUIDs.size();
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -328,13 +340,22 @@ public:
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_SLAD_RAN_ALTAR: return uiSladRanAltar;
|
||||
case DATA_MOORABI_ALTAR: return uiMoorabiAltar;
|
||||
case DATA_DRAKKARI_COLOSSUS_ALTAR: return uiDrakkariColossusAltar;
|
||||
case DATA_SLAD_RAN_STATUE: return uiSladRanStatue;
|
||||
case DATA_MOORABI_STATUE: return uiMoorabiStatue;
|
||||
case DATA_DRAKKARI_COLOSSUS_STATUE: return uiDrakkariColossusStatue;
|
||||
case DATA_DRAKKARI_COLOSSUS: return uiDrakkariColossus;
|
||||
case DATA_SLAD_RAN_ALTAR:
|
||||
return uiSladRanAltar;
|
||||
case DATA_MOORABI_ALTAR:
|
||||
return uiMoorabiAltar;
|
||||
case DATA_DRAKKARI_COLOSSUS_ALTAR:
|
||||
return uiDrakkariColossusAltar;
|
||||
case DATA_SLAD_RAN_STATUE:
|
||||
return uiSladRanStatue;
|
||||
case DATA_MOORABI_STATUE:
|
||||
return uiMoorabiStatue;
|
||||
case DATA_DRAKKARI_COLOSSUS_STATUE:
|
||||
return uiDrakkariColossusStatue;
|
||||
case DATA_DRAKKARI_COLOSSUS:
|
||||
return uiDrakkariColossus;
|
||||
case DATA_STATUE_ACTIVATE:
|
||||
return toActivate;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -396,17 +417,6 @@ public:
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
bool QueueActivation(uint64 guid, uint32 time)
|
||||
{
|
||||
if (timer)
|
||||
return false;
|
||||
|
||||
toActivate = guid;
|
||||
timer = time;
|
||||
phase++;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Update(uint32 diff)
|
||||
{
|
||||
// Spawn the support for the bridge if necessary
|
||||
@@ -426,7 +436,6 @@ public:
|
||||
timer = 0;
|
||||
if (toActivate == uiBridge)
|
||||
{
|
||||
toActivate = 0;
|
||||
GameObject* pBridge = instance->GetGameObject(uiBridge);
|
||||
GameObject* pCollision = instance->GetGameObject(uiCollision);
|
||||
GameObject* pSladRanStatue = instance->GetGameObject(uiSladRanStatue);
|
||||
@@ -456,11 +465,13 @@ public:
|
||||
{
|
||||
spell = 57071;
|
||||
pAltar = instance->GetGameObject(uiSladRanAltar);
|
||||
} else if (toActivate == uiMoorabiStatue)
|
||||
}
|
||||
else if (toActivate == uiMoorabiStatue)
|
||||
{
|
||||
spell = 57068;
|
||||
pAltar = instance->GetGameObject(uiMoorabiAltar);
|
||||
} else if (toActivate == uiDrakkariColossusStatue)
|
||||
}
|
||||
else if (toActivate == uiDrakkariColossusStatue)
|
||||
{
|
||||
spell = 57072;
|
||||
pAltar = instance->GetGameObject(uiDrakkariColossusAltar);
|
||||
@@ -479,14 +490,15 @@ public:
|
||||
if (GameObject* statueGO = instance->GetGameObject(toActivate))
|
||||
statueGO->SetGoState(GO_STATE_READY);
|
||||
|
||||
toActivate = 0;
|
||||
|
||||
if (phase == 3)
|
||||
QueueActivation(uiBridge, 3000);
|
||||
SetData64(DATA_STATUE_ACTIVATE, uiBridge);
|
||||
else
|
||||
SaveToDB(); // Don't save in between last statue and bridge turning in case of crash leading to stuck instance
|
||||
}
|
||||
} else timer -= diff;
|
||||
}
|
||||
toActivate = 0;
|
||||
}
|
||||
else
|
||||
timer -= diff;
|
||||
}
|
||||
|
||||
GOState GetObjState(uint64 guid)
|
||||
@@ -514,14 +526,22 @@ public:
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
switch(pGO->GetEntry())
|
||||
switch (pGO->GetEntry())
|
||||
{
|
||||
case 192518: uiStatue = pInstance->GetData64(DATA_SLAD_RAN_STATUE); break;
|
||||
case 192519: uiStatue = pInstance->GetData64(DATA_MOORABI_STATUE); break;
|
||||
case 192520: uiStatue = pInstance->GetData64(DATA_DRAKKARI_COLOSSUS_STATUE); break;
|
||||
case 192518:
|
||||
uiStatue = pInstance->GetData64(DATA_SLAD_RAN_STATUE);
|
||||
break;
|
||||
case 192519:
|
||||
uiStatue = pInstance->GetData64(DATA_MOORABI_STATUE);
|
||||
break;
|
||||
case 192520:
|
||||
uiStatue = pInstance->GetData64(DATA_DRAKKARI_COLOSSUS_STATUE);
|
||||
break;
|
||||
}
|
||||
if (CAST_INST(instance_gundrak::instance_gundrak_InstanceMapScript, pInstance)->QueueActivation(uiStatue, 3500))
|
||||
|
||||
if (!pInstance->GetData64(DATA_STATUE_ACTIVATE))
|
||||
{
|
||||
pInstance->SetData64(DATA_STATUE_ACTIVATE, uiStatue);
|
||||
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||
pGO->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -862,11 +862,11 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
case CRITERIA_KILL_LANA_THEL_10M:
|
||||
case CRITERIA_ONCE_BITTEN_TWICE_SHY_10N:
|
||||
case CRITERIA_ONCE_BITTEN_TWICE_SHY_10V:
|
||||
return CAST_INST(InstanceMap, instance)->GetMaxPlayers() == 10;
|
||||
return instance->ToInstanceMap()->GetMaxPlayers() == 10;
|
||||
case CRITERIA_KILL_LANA_THEL_25M:
|
||||
case CRITERIA_ONCE_BITTEN_TWICE_SHY_25N:
|
||||
case CRITERIA_ONCE_BITTEN_TWICE_SHY_25V:
|
||||
return CAST_INST(InstanceMap, instance)->GetMaxPlayers() == 25;
|
||||
return instance->ToInstanceMap()->GetMaxPlayers() == 25;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1524,7 +1524,7 @@ public:
|
||||
{
|
||||
case 1:
|
||||
if (me->isSummon())
|
||||
if (Unit* pThassarian = me->ToTempSummon()(me)->GetSummoner())
|
||||
if (Unit* pThassarian = me->ToTempSummon()->GetSummoner())
|
||||
DoScriptText(SAY_THASSARIAN_4, pThassarian);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
|
||||
Reference in New Issue
Block a user