aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-12 08:01:06 -0500
committermegamage <none@none>2009-08-12 08:01:06 -0500
commitcd78172c7d04e96bb1392cd6729d333b49518923 (patch)
tree96bb71d80b75aa36d99e78bf28c1ad1643a0f8b5
parent1bdc65e5ee06e13d7b898feccdcbec49ba1299f0 (diff)
*Do not allow to enter frostwyrm wing before killing all previous bosses. If you do not like it, simply do not apply the sql.
--HG-- branch : trunk
-rw-r--r--sql/FULL/world_scripts_full.sql3
-rw-r--r--sql/updates/4927_world_scripts_naxx.sql2
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp19
-rw-r--r--src/game/InstanceData.h1
4 files changed, 25 insertions, 0 deletions
diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql
index 8db3c149db8..463d7a506b0 100644
--- a/sql/FULL/world_scripts_full.sql
+++ b/sql/FULL/world_scripts_full.sql
@@ -1187,3 +1187,6 @@ INSERT INTO `creature_ai_scripts` VALUES
/* EOF */
UPDATE `creature_template` SET `ScriptName` = 'npc_skywing' WHERE entry=22424;
+
+DELETE FROM areatrigger_scripts WHERE entry = 4156;
+INSERT INTO areatrigger_scripts VALUES (4156, 'at_naxxramas_frostwyrm_wing');
diff --git a/sql/updates/4927_world_scripts_naxx.sql b/sql/updates/4927_world_scripts_naxx.sql
new file mode 100644
index 00000000000..cfb9e68b7f1
--- /dev/null
+++ b/sql/updates/4927_world_scripts_naxx.sql
@@ -0,0 +1,2 @@
+DELETE FROM areatrigger_scripts WHERE entry = 4156;
+INSERT INTO areatrigger_scripts VALUES (4156, 'at_naxxramas_frostwyrm_wing'); \ No newline at end of file
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
index 1215604a3f6..b00a64af78e 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
@@ -183,6 +183,20 @@ struct TRINITY_DLL_DECL instance_naxxramas : public InstanceData
}
};
+bool AreaTrigger_at_naxxramas_frostwyrm_wing(Player *player, AreaTriggerEntry *at)
+{
+ if(player->isGameMaster())
+ return false;
+
+ InstanceData *data = player->GetInstanceData();
+ if(data)
+ for(uint32 i = BOSS_ANUBREKHAN; i < BOSS_SAPPHIRON; ++i)
+ if(data->GetBossState(i) != DONE)
+ return true;
+
+ return false;
+}
+
InstanceData* GetInstanceData_instance_naxxramas(Map* map)
{
return new instance_naxxramas(map);
@@ -195,4 +209,9 @@ void AddSC_instance_naxxramas()
newscript->Name = "instance_naxxramas";
newscript->GetInstanceData = &GetInstanceData_instance_naxxramas;
newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "at_naxxramas_frostwyrm_wing";
+ newscript->pAreaTrigger = &AreaTrigger_at_naxxramas_frostwyrm_wing;
+ newscript->RegisterSelf();
}
diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h
index fac766c761e..d06043ff07d 100644
--- a/src/game/InstanceData.h
+++ b/src/game/InstanceData.h
@@ -150,6 +150,7 @@ class TRINITY_DLL_SPEC InstanceData : public ZoneScript
void DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn = MINUTE);
virtual bool SetBossState(uint32 id, EncounterState state);
+ EncounterState GetBossState(uint32 id) const { return id < bosses.size() ? bosses[id].state : TO_BE_DECIDED; }
const BossBoundaryMap * GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; }
protected:
void SetBossNumber(uint32 number) { bosses.resize(number); }