Scripts: Removed CAST_PET and CAST_INST

This commit is contained in:
Shauren
2011-05-25 16:22:13 +02:00
parent 64adce7b8b
commit 9cc7f25b9a
6 changed files with 67 additions and 50 deletions
@@ -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;