aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.h10
-rw-r--r--src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/gundrak.h3
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp96
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp4
-rw-r--r--src/server/scripts/Northrend/borean_tundra.cpp2
6 files changed, 67 insertions, 50 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
index c0472d6ddee..fad3388a187 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
@@ -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)))
diff --git a/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp
index 7fbf32875e1..4b29e2d71f9 100644
--- a/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp
+++ b/src/server/scripts/EasternKingdoms/isle_of_queldanas.cpp
@@ -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;
}
diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h
index 2596e4d9fbd..08cdd24c724 100644
--- a/src/server/scripts/Northrend/Gundrak/gundrak.h
+++ b/src/server/scripts/Northrend/Gundrak/gundrak.h
@@ -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
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index a0fdb4cce7b..2a4bdc45239 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -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);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 190162c7d30..ece75fc0b9f 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -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;
}
diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp
index 19c746924bb..73a2e4ac203 100644
--- a/src/server/scripts/Northrend/borean_tundra.cpp
+++ b/src/server/scripts/Northrend/borean_tundra.cpp
@@ -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;