aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/FULL/world_scripts_full.sql1
-rw-r--r--sql/updates/7672_world_scriptname.sql1
-rw-r--r--src/scripts/northrend/gundrak/boss_eck.cpp33
-rw-r--r--src/scripts/northrend/gundrak/gundrak.h13
-rw-r--r--src/scripts/northrend/gundrak/instance_gundrak.cpp19
5 files changed, 61 insertions, 6 deletions
diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql
index 8e586d3ffe8..315505a6a33 100644
--- a/sql/FULL/world_scripts_full.sql
+++ b/sql/FULL/world_scripts_full.sql
@@ -639,6 +639,7 @@ UPDATE `creature_template` SET `ScriptName`='boss_drakkari_elemental' WHERE `ent
UPDATE `creature_template` SET `ScriptName`='npc_living_mojo' WHERE `entry`=29830;
/* Eck the Ferocious */
UPDATE `creature_template` SET `ScriptName`='boss_eck' WHERE `entry`=29932;
+UPDATE `creature_template` SET `ScriptName`='npc_ruins_dweller' WHERE `entry`=29920;
UPDATE `gameobject_template` SET `ScriptName`='go_gundrak_altar' WHERE `entry`=192518;
UPDATE `gameobject_template` SET `ScriptName`='go_gundrak_altar' WHERE `entry`=192519;
diff --git a/sql/updates/7672_world_scriptname.sql b/sql/updates/7672_world_scriptname.sql
new file mode 100644
index 00000000000..b9451e75629
--- /dev/null
+++ b/sql/updates/7672_world_scriptname.sql
@@ -0,0 +1 @@
+UPDATE `creature_template` SET `ScriptName`='npc_ruins_dweller' WHERE `entry`=29920;
diff --git a/src/scripts/northrend/gundrak/boss_eck.cpp b/src/scripts/northrend/gundrak/boss_eck.cpp
index a80ed238e20..ac860521abf 100644
--- a/src/scripts/northrend/gundrak/boss_eck.cpp
+++ b/src/scripts/northrend/gundrak/boss_eck.cpp
@@ -20,6 +20,9 @@ enum Spells
SPELL_ECK_SPRING_1 = 55815, //Eck leaps at a distant target. --> Drops aggro and charges a random player. Tank can simply taunt him back.
SPELL_ECK_SPRING_2 = 55837 //Eck leaps at a distant target.
};
+
+static Position EckSpawnPoint = { 1643.877930, 936.278015, 107.204948, 0.668432 };
+
struct boss_eckAI : public ScriptedAI
{
boss_eckAI(Creature *c) : ScriptedAI(c)
@@ -117,6 +120,31 @@ CreatureAI* GetAI_boss_eck(Creature* pCreature)
return new boss_eckAI (pCreature);
}
+struct npc_ruins_dwellerAI : public ScriptedAI
+{
+ npc_ruins_dwellerAI(Creature *c) : ScriptedAI(c)
+ {
+ pInstance = c->GetInstanceData();
+ }
+
+ ScriptedInstance* pInstance;
+
+ void JustDied(Unit *who)
+ {
+ if(pInstance)
+ {
+ pInstance->SetData(DATA_RUIN_DIED_DWELLER,m_creature->GetGUID());
+ if (pInstance->GetData(DATA_RUIN_DIED_DWELLER) == 0)
+ m_creature->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILISECONDS);
+ }
+ }
+};
+
+CreatureAI* GetAI_npc_ruins_dweller(Creature* pCreature)
+{
+ return new npc_ruins_dwellerAI (pCreature);
+}
+
void AddSC_boss_eck()
{
Script *newscript;
@@ -125,4 +153,9 @@ void AddSC_boss_eck()
newscript->Name = "boss_eck";
newscript->GetAI = &GetAI_boss_eck;
newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "npc_ruins_dweller";
+ newscript->GetAI = &GetAI_npc_ruins_dweller;
+ newscript->RegisterSelf();
}
diff --git a/src/scripts/northrend/gundrak/gundrak.h b/src/scripts/northrend/gundrak/gundrak.h
index d4c19f4ad35..66e597aaa8d 100644
--- a/src/scripts/northrend/gundrak/gundrak.h
+++ b/src/scripts/northrend/gundrak/gundrak.h
@@ -7,7 +7,8 @@ enum Data
DATA_MOORABI_EVENT,
DATA_DRAKKARI_COLOSSUS_EVENT,
DATA_GAL_DARAH_EVENT,
- DATA_ECK_THE_FEROCIOUS_EVENT
+ DATA_ECK_THE_FEROCIOUS_EVENT,
+ DATA_RUIN_DIED_DWELLER
};
enum Data64
@@ -21,4 +22,14 @@ enum Data64
DATA_DRAKKARI_COLOSSUS
};
+enum mainCreatures
+{
+ CREATURE_RUIN_DWELLER = 29920,
+ CREATURE_SLAD_RAN = 29304,
+ CREATURE_MOORABI = 29305,
+ CREATURE_GALDARAH = 29306,
+ CREATURE_DRAKKARICOLOSSUS = 29307,
+ CREATURE_ECK = 29932
+};
+
#endif
diff --git a/src/scripts/northrend/gundrak/instance_gundrak.cpp b/src/scripts/northrend/gundrak/instance_gundrak.cpp
index 8fbed4ccd26..041588db83c 100644
--- a/src/scripts/northrend/gundrak/instance_gundrak.cpp
+++ b/src/scripts/northrend/gundrak/instance_gundrak.cpp
@@ -55,6 +55,8 @@ struct instance_gundrak : public ScriptedInstance
GOState uiBridgeState;
GOState uiCollisionState;
+ std::set<uint64> DwellerGUIDs;
+
std::string str_data;
void Initialize()
@@ -95,6 +97,8 @@ struct instance_gundrak : public ScriptedInstance
uiBridgeState = GO_STATE_ACTIVE;
uiCollisionState = GO_STATE_READY;
+ DwellerGUIDs.clear();
+
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
}
@@ -110,11 +114,12 @@ struct instance_gundrak : public ScriptedInstance
{
switch(pCreature->GetEntry())
{
- case 29304: uiSladRan = pCreature->GetGUID(); break;
- case 29305: uiMoorabi = pCreature->GetGUID(); break;
- case 29306: uiGalDarah = pCreature->GetGUID(); break;
- case 29307: uiDrakkariColossus = pCreature->GetGUID(); break;
- case 29932: uiEckTheFerocious = pCreature->GetGUID(); break;
+ case CREATURE_SLAD_RAN: uiSladRan = pCreature->GetGUID(); break;
+ case CREATURE_MOORABI: uiMoorabi = pCreature->GetGUID(); break;
+ case CREATURE_GALDARAH: uiGalDarah = pCreature->GetGUID(); break;
+ case CREATURE_DRAKKARICOLOSSUS: uiDrakkariColossus = pCreature->GetGUID(); break;
+ case CREATURE_ECK: uiEckTheFerocious = pCreature->GetGUID(); break;
+ case CREATURE_RUIN_DWELLER: DwellerGUIDs.insert(pCreature->GetGUID()); break;
}
}
@@ -263,6 +268,9 @@ struct instance_gundrak : public ScriptedInstance
if (bHeroicMode && data == DONE)
HandleGameObject(uiEckTheFerociousDoorBehind,true);
break;
+ case DATA_RUIN_DIED_DWELLER:
+ DwellerGUIDs.erase(data);
+ break;
}
if (data == DONE)
@@ -278,6 +286,7 @@ struct instance_gundrak : public ScriptedInstance
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_RUIN_DIED_DWELLER: return DwellerGUIDs.size();
}
return 0;