aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2012_05_16_00_world_scripts.sql2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp23
3 files changed, 26 insertions, 0 deletions
diff --git a/sql/updates/world/2012_05_16_00_world_scripts.sql b/sql/updates/world/2012_05_16_00_world_scripts.sql
new file mode 100644
index 00000000000..9997c09bd8d
--- /dev/null
+++ b/sql/updates/world/2012_05_16_00_world_scripts.sql
@@ -0,0 +1,2 @@
+-- Add script to Dragonspire Hall Runes "UBRS"
+UPDATE `gameobject_template` SET `ScriptName`= 'go_dragonspire_hall_rune' WHERE `entry` BETWEEN 175194 AND 175200;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h
index cef08375c13..beef71ea857 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h
@@ -57,6 +57,7 @@ enum AdditionalData
{
SPELL_SUMMON_ROOKERY_WHELP = 15745,
MAX_ENCOUNTER = 14,
+ MAX_DRAGONSPIRE_HALL_RUNES = 7,
};
enum GameObjects
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp
index ff97984fa09..b5b1b34a593 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp
@@ -247,7 +247,30 @@ public:
};
+uint8 ActivatedRunes = 0;
+
+class go_dragonspire_hall_rune : public GameObjectScript
+{
+public:
+ go_dragonspire_hall_rune() : GameObjectScript("go_dragonspire_hall_rune") { }
+
+ void OnGameObjectStateChanged(GameObject* go, uint32 state)
+ {
+ if (state == GO_STATE_READY)
+ {
+ if (++ActivatedRunes == MAX_DRAGONSPIRE_HALL_RUNES)
+ {
+ if (GameObject* door1 = GetClosestGameObjectWithEntry(go, GO_EMBERSEER_IN, 150.0f))
+ door1->SetGoState(GO_STATE_ACTIVE);
+ if (GameObject* door2 = GetClosestGameObjectWithEntry(go, GO_DOORS, 150.0f))
+ door2->SetGoState(GO_STATE_ACTIVE);
+ }
+ }
+ }
+};
+
void AddSC_instance_blackrock_spire()
{
new instance_blackrock_spire();
+ new go_dragonspire_hall_rune;
}