aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorShauren <none@none>2010-12-08 17:24:31 +0100
committerShauren <none@none>2010-12-08 17:24:31 +0100
commite4e048ed570e7723f6e9a38c9f5ba37f53811a21 (patch)
treed9214512c5284bba720a29db7e3cd6385196fb1a /src/server/scripts/Northrend
parent611dc153b05a7098daa7dd255524cd996645e6f0 (diff)
Core/Scripts: Fixed possible crashes in instance scripts (Icecrown Citadel and Naxxramas)
Scripts/Sunwell Plateau: Fixed crash in Kil'jaeden Scripts/Icecrown Citadel: Fixed crash in Blood-Queen Lana'thel Closes issue #5051. Closes issue #5050. Closes issue #5035. --HG-- branch : trunk
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp3
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp28
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp51
3 files changed, 66 insertions, 16 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index b3f1a533a59..7e563aba735 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -307,6 +307,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
std::list<Player*> targets;
SelectRandomTarget(false, &targets);
uint32 targetCount = 2;
+ // do not combine these checks! we want it incremented TWICE when both conditions are met
if (IsHeroic())
++targetCount;
if (Is25ManRaid())
@@ -401,7 +402,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
}
std::list<Player*>::iterator itr = tempTargets.begin();
- std::advance(itr, urand(1, tempTargets.size()-1));
+ std::advance(itr, urand(0, tempTargets.size()-1));
return *itr;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index bacb7761223..dfca787c3cc 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -255,6 +255,34 @@ class instance_icecrown_citadel : public InstanceMapScript
}
}
+ void OnGameObjectRemove(GameObject* go)
+ {
+ switch (go->GetEntry())
+ {
+ case GO_DOODAD_ICECROWN_ICEWALL02:
+ case GO_ICEWALL:
+ case GO_LORD_MARROWGAR_S_ENTRANCE:
+ case GO_ORATORY_OF_THE_DAMNED_ENTRANCE:
+ case GO_ORANGE_PLAGUE_MONSTER_ENTRANCE:
+ case GO_GREEN_PLAGUE_MONSTER_ENTRANCE:
+ case GO_SCIENTIST_ENTRANCE:
+ case GO_CRIMSON_HALL_DOOR:
+ case GO_BLOOD_ELF_COUNCIL_DOOR:
+ case GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT:
+ case GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01:
+ case GO_DOODAD_ICECROWN_GRATE_01:
+ case GO_GREEN_DRAGON_BOSS_ENTRANCE:
+ case GO_GREEN_DRAGON_BOSS_EXIT:
+ case GO_SINDRAGOSA_ENTRANCE_DOOR:
+ case GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR:
+ case GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR:
+ AddDoor(go, false);
+ break;
+ default:
+ break;
+ }
+ }
+
uint64 GetData64(uint32 type)
{
switch (type)
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index 09c8229c277..edc6e42469e 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -173,19 +173,35 @@ public:
return;
}
- switch(go->GetEntry())
+ switch (go->GetEntry())
{
case GO_GOTHIK_GATE:
GothikGateGUID = go->GetGUID();
go->SetGoState(gothikDoorState);
break;
- case GO_HORSEMEN_CHEST: HorsemenChestGUID = go->GetGUID(); break;
- case GO_HORSEMEN_CHEST_HERO: HorsemenChestGUID = go->GetGUID(); break;
- case GO_KELTHUZAD_PORTAL01: uiPortals[0] = go->GetGUID(); break;
- case GO_KELTHUZAD_PORTAL02: uiPortals[1] = go->GetGUID(); break;
- case GO_KELTHUZAD_PORTAL03: uiPortals[2] = go->GetGUID(); break;
- case GO_KELTHUZAD_PORTAL04: uiPortals[3] = go->GetGUID(); break;
- case GO_KELTHUZAD_TRIGGER: uiKelthuzadTrigger = go->GetGUID(); break;
+ case GO_HORSEMEN_CHEST:
+ HorsemenChestGUID = go->GetGUID();
+ break;
+ case GO_HORSEMEN_CHEST_HERO:
+ HorsemenChestGUID = go->GetGUID();
+ break;
+ case GO_KELTHUZAD_PORTAL01:
+ uiPortals[0] = go->GetGUID();
+ break;
+ case GO_KELTHUZAD_PORTAL02:
+ uiPortals[1] = go->GetGUID();
+ break;
+ case GO_KELTHUZAD_PORTAL03:
+ uiPortals[2] = go->GetGUID();
+ break;
+ case GO_KELTHUZAD_PORTAL04:
+ uiPortals[3] = go->GetGUID();
+ break;
+ case GO_KELTHUZAD_TRIGGER:
+ uiKelthuzadTrigger = go->GetGUID();
+ break;
+ default:
+ break;
}
AddDoor(go, true);
@@ -201,16 +217,21 @@ public:
return;
}
- switch(go->GetEntry())
+ switch (go->GetEntry())
{
case GO_BIRTH:
- if (SapphironGUID)
- {
- if (Creature* pSapphiron = instance->GetCreature(SapphironGUID))
- pSapphiron->AI()->DoAction(DATA_SAPPHIRON_BIRTH);
- return;
- }
+ if (SapphironGUID)
+ {
+ if (Creature* pSapphiron = instance->GetCreature(SapphironGUID))
+ pSapphiron->AI()->DoAction(DATA_SAPPHIRON_BIRTH);
+ return;
+ }
+ break;
+ default:
+ break;
}
+
+ AddDoor(go, false);
}
void SetData(uint32 id, uint32 value)