aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/CMakeLists.txt1
-rw-r--r--src/server/scripts/Commands/cs_lfg.cpp134
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp144
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h3
-rw-r--r--src/server/scripts/Kalimdor/feralas.cpp35
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp2
-rw-r--r--src/server/scripts/Northrend/storm_peaks.cpp50
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp4
-rw-r--r--src/server/scripts/World/npcs_special.cpp2
10 files changed, 300 insertions, 79 deletions
diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt
index 177b3a479f5..a65324a9f42 100644
--- a/src/server/scripts/Commands/CMakeLists.txt
+++ b/src/server/scripts/Commands/CMakeLists.txt
@@ -27,6 +27,7 @@ set(scripts_STAT_SRCS
Commands/cs_honor.cpp
Commands/cs_instance.cpp
Commands/cs_learn.cpp
+ Commands/cs_lfg.cpp
Commands/cs_list.cpp
Commands/cs_lookup.cpp
Commands/cs_message.cpp
diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp
new file mode 100644
index 00000000000..45ecc4e4721
--- /dev/null
+++ b/src/server/scripts/Commands/cs_lfg.cpp
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "Chat.h"
+#include "LFGMgr.h"
+#include "Group.h"
+
+void GetPlayerInfo(ChatHandler* handler, Player* player)
+{
+ if (!player)
+ return;
+
+ uint64 guid = player->GetGUID();
+ LfgDungeonSet dungeons = sLFGMgr->GetSelectedDungeons(guid);
+
+ char const * const state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
+ handler->PSendSysMessage(LANG_LFG_PLAYER_INFO, player->GetName(),
+ state, uint8(dungeons.size()), sLFGMgr->ConcatenateDungeons(dungeons).c_str(),
+ sLFGMgr->GetRolesString(sLFGMgr->GetRoles(guid)).c_str(), sLFGMgr->GetComment(guid).c_str());
+}
+
+class lfg_commandscript : public CommandScript
+{
+public:
+ lfg_commandscript() : CommandScript("lfg_commandscript") { }
+
+ ChatCommand* GetCommands() const
+ {
+ static ChatCommand lfgCommandTable[] =
+ {
+ { "player", SEC_GAMEMASTER, false, &HandleLfgPlayerInfoCommand, "", NULL },
+ { "group", SEC_GAMEMASTER, false, &HandleLfgGroupInfoCommand, "", NULL },
+ { "queue", SEC_GAMEMASTER, false, &HandleLfgQueueInfoCommand, "", NULL },
+ { "clean", SEC_ADMINISTRATOR, false, &HandleLfgCleanCommand, "", NULL },
+ { "options", SEC_ADMINISTRATOR, false, &HandleLfgOptionsCommand, "", NULL },
+ { NULL, SEC_PLAYER, false, NULL, "", NULL }
+ };
+
+ static ChatCommand commandTable[] =
+ {
+ { "lfg", SEC_GAMEMASTER, false, NULL, "", lfgCommandTable },
+ { NULL, SEC_PLAYER, false, NULL, "", NULL }
+ };
+ return commandTable;
+ }
+
+ static bool HandleLfgPlayerInfoCommand(ChatHandler* handler, char const* args)
+ {
+ Player* target = NULL;
+ std::string playerName;
+ if (!handler->extractPlayerTarget((char*)args, &target, NULL, &playerName))
+ return false;
+
+ GetPlayerInfo(handler, target);
+ return true;
+ }
+
+ static bool HandleLfgGroupInfoCommand(ChatHandler* handler, char const* args)
+ {
+ Player* target = NULL;
+ std::string playerName;
+ if (!handler->extractPlayerTarget((char*)args, &target, NULL, &playerName))
+ return false;
+
+ Group* grp = target->GetGroup();
+ if (!grp)
+ {
+ handler->PSendSysMessage(LANG_LFG_NOT_IN_GROUP, playerName.c_str());
+ return true;
+ }
+
+ uint64 guid = grp->GetGUID();
+ char const * const state = sLFGMgr->GetStateString(sLFGMgr->GetState(guid));
+ handler->PSendSysMessage(LANG_LFG_GROUP_INFO, grp->isLFGGroup(),
+ state, sLFGMgr->GetDungeon(guid));
+
+ for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
+ GetPlayerInfo(handler, itr->getSource());
+
+ return true;
+ }
+
+ static bool HandleLfgOptionsCommand(ChatHandler* handler, char const* args)
+ {
+ int32 options = -1;
+ if (char* str = strtok((char*)args, " "))
+ {
+ int32 tmp = atoi(str);
+ if (tmp > -1)
+ options = tmp;
+ }
+
+ if (options != -1)
+ {
+ sLFGMgr->SetOptions(options);
+ handler->PSendSysMessage(LANG_LFG_OPTIONS_CHANGED);
+ }
+ handler->PSendSysMessage(LANG_LFG_OPTIONS, sLFGMgr->GetOptions());
+ return true;
+ }
+
+ static bool HandleLfgQueueInfoCommand(ChatHandler* handler, char const* /*args*/)
+ {
+ handler->SendSysMessage(sLFGMgr->DumpQueueInfo().c_str());
+ return true;
+ }
+
+ static bool HandleLfgCleanCommand(ChatHandler* handler, char const* /*args*/)
+ {
+ handler->PSendSysMessage(LANG_LFG_CLEAN);
+ sLFGMgr->Clean();
+ return true;
+ }
+};
+
+void AddSC_lfg_commandscript()
+{
+ new lfg_commandscript();
+}
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
index f1aa3d68bce..8f79c4973f7 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp
@@ -30,40 +30,32 @@ Script Data End */
#define GOSSIP_START_EVENT "I am ready to being"
-enum eBlastmasterEmiShortfuse
+enum BlastmasterEmi
{
GOSSIP_TEXT_EMI = 1693,
- SAY_BLASTMASTER_0 = -1090000,
- SAY_BLASTMASTER_1 = -1090001,
- SAY_BLASTMASTER_2 = -1090002,
- SAY_BLASTMASTER_3 = -1090003,
- SAY_BLASTMASTER_4 = -1090004,
- SAY_BLASTMASTER_5 = -1090005,
- SAY_BLASTMASTER_6 = -1090006,
- SAY_BLASTMASTER_7 = -1090007,
- SAY_BLASTMASTER_8 = -1090008,
- SAY_BLASTMASTER_9 = -1090009,
- SAY_BLASTMASTER_10 = -1090010,
- SAY_BLASTMASTER_11 = -1090011,
- SAY_BLASTMASTER_12 = -1090012,
- SAY_BLASTMASTER_13 = -1090013,
- SAY_BLASTMASTER_14 = -1090014,
- SAY_BLASTMASTER_15 = -1090015,
- SAY_BLASTMASTER_16 = -1090016,
- SAY_BLASTMASTER_17 = -1090017,
- SAY_BLASTMASTER_18 = -1090018,
- SAY_BLASTMASTER_19 = -1090019,
- SAY_BLASTMASTER_20 = -1090020,
- SAY_BLASTMASTER_21 = -1090021,
- SAY_BLASTMASTER_22 = -1090022,
- SAY_BLASTMASTER_23 = -1090023,
- SAY_BLASTMASTER_24 = -1090024,
- SAY_BLASTMASTER_25 = -1090025,
- SAY_BLASTMASTER_26 = -1090026,
- SAY_BLASTMASTER_27 = -1090027,
-
- SAY_GRUBBIS = -1090028
+ SAY_BLASTMASTER_0 = 0,
+ SAY_BLASTMASTER_1 = 1,
+ SAY_BLASTMASTER_2 = 2,
+ SAY_BLASTMASTER_3 = 3,
+ SAY_BLASTMASTER_4 = 4,
+ SAY_BLASTMASTER_5 = 5,
+ SAY_BLASTMASTER_6 = 6,
+ SAY_BLASTMASTER_7 = 7,
+ SAY_BLASTMASTER_8 = 8,
+ SAY_BLASTMASTER_9 = 9,
+ SAY_BLASTMASTER_10 = 10,
+ SAY_BLASTMASTER_11 = 11,
+ SAY_BLASTMASTER_12 = 12,
+ SAY_BLASTMASTER_13 = 13,
+ SAY_BLASTMASTER_14 = 14,
+ SAY_BLASTMASTER_15 = 15,
+ SAY_BLASTMASTER_16 = 16,
+ SAY_BLASTMASTER_17 = 17,
+ SAY_BLASTMASTER_18 = 18,
+ SAY_BLASTMASTER_19 = 19,
+
+ SAY_GRUBBIS = 0
};
const Position SpawnPosition[] =
@@ -78,13 +70,16 @@ const Position SpawnPosition[] =
{-552.534f, -110.012f, -153.577f, 0.747f},
{-550.708f, -116.436f, -153.103f, 0.679f},
{-554.030f, -115.983f, -152.635f, 0.695f},
- {-494.595f, -87.516f, 149.116f, 3.344f},
+ {-494.595f, -87.516f, -149.116f, 3.344f},
{-493.349f, -90.845f, -148.882f, 3.717f},
{-491.995f, -87.619f, -148.197f, 3.230f},
{-490.732f, -90.739f, -148.091f, 3.230f},
{-490.554f, -89.114f, -148.055f, 3.230f},
{-495.240f, -90.808f, -149.493f, 3.238f},
- {-494.195f, -89.553f, -149.131f, 3.254f}
+ {-494.195f, -89.553f, -149.131f, 3.254f},
+ {-511.3304f, -139.9622f, -152.4761f, 0.7504908f},
+ {-510.6754f, -139.4371f, -152.6167f, 3.33359f},
+ {-511.8976f, -139.3562f, -152.4785f, 3.961899f}
};
class npc_blastmaster_emi_shortfuse : public CreatureScript
@@ -300,12 +295,12 @@ public:
NextStep(25000, false, 18);
break;
case 13:
- Summon(7);
+ Summon(6);
NextStep(25000, false, 19);
break;
case 14:
SetInFace(false);
- DoScriptText(SAY_BLASTMASTER_26, me);
+ Talk(SAY_BLASTMASTER_17);
SetEscortPaused(true);
NextStep(5000, false, 20);
break;
@@ -318,8 +313,8 @@ public:
{
case 1:
SetEscortPaused(true);
- DoScriptText(SAY_BLASTMASTER_0, me);
- NextStep(1500, true);
+ Talk(SAY_BLASTMASTER_0);
+ NextStep(2000, true);
break;
case 2:
if (!instance)
@@ -368,7 +363,7 @@ public:
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
- DoScriptText(SAY_BLASTMASTER_19, me);
+ Talk(SAY_BLASTMASTER_7);
break;
case 4:
if (GameObject* go = me->SummonGameObject(183410, -542.199f, -96.854f, -155.790f, 0, 0, 0, 0, 0, 1000))
@@ -378,38 +373,37 @@ public:
}
break;
case 5:
- me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
- me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
- me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
- DoScriptText(SAY_BLASTMASTER_15, me);
- break;
- case 6:
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[10], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[11], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[12], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[13], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
me->SummonCreature(NPC_CAVERNDEEP_AMBUSHER, SpawnPosition[14], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
break;
- case 7:
+ case 6:
if (GameObject* go = me->SummonGameObject(183410, -507.820f, -103.333f, -151.353f, 0, 0, 0, 0, 0, 1000))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it!
- Summon(6);
+ Summon(5);
}
break;
- case 8:
+ case 7:
if (GameObject* go = me->SummonGameObject(183410, -511.829f, -86.249f, -151.431f, 0, 0, 0, 0, 0, 1000))
{
GoSummonList.push_back(go->GetGUID());
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); //We can't use it!
}
break;
- case 9:
- if (Creature* pGrubbis = me->SummonCreature(NPC_GRUBBIS, SpawnPosition[15], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000))
- DoScriptText(SAY_GRUBBIS, pGrubbis);
+ case 8:
+ if (Creature* grubbis = me->SummonCreature(NPC_GRUBBIS, SpawnPosition[15], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000))
+ grubbis->AI()->Talk(SAY_GRUBBIS);
me->SummonCreature(NPC_CHOMPER, SpawnPosition[16], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1800000);
break;
+ case 9:
+ me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[17].GetPositionX(), SpawnPosition[17].GetPositionY(), SpawnPosition[17].GetPositionZ(), SpawnPosition[17].GetOrientation(), 0, 0, 0, 0, 7200);
+ me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[18].GetPositionX(), SpawnPosition[18].GetPositionY(), SpawnPosition[18].GetPositionZ(), SpawnPosition[18].GetOrientation(), 0, 0, 0, 0, 7200);
+ me->SummonGameObject(GO_RED_ROCKET, SpawnPosition[19].GetPositionX(), SpawnPosition[19].GetPositionY(), SpawnPosition[19].GetPositionZ(), SpawnPosition[19].GetOrientation(), 0, 0, 0, 0, 7200);
+ break;
}
}
@@ -422,29 +416,29 @@ public:
switch (uiPhase)
{
case 1:
- DoScriptText(SAY_BLASTMASTER_1, me);
- NextStep(1500, true);
+ Talk(SAY_BLASTMASTER_1);
+ NextStep(2000, true);
break;
case 2:
SetEscortPaused(false);
NextStep(0, false, 0);
break;
case 3:
- DoScriptText(SAY_BLASTMASTER_2, me);
+ Talk(SAY_BLASTMASTER_2);
SetEscortPaused(false);
NextStep(0, false, 0);
break;
case 4:
- DoScriptText(SAY_BLASTMASTER_3, me);
+ Talk(SAY_BLASTMASTER_3);
NextStep(3000, true);
break;
case 5:
- DoScriptText(SAY_BLASTMASTER_4, me);
+ Talk(SAY_BLASTMASTER_4);
NextStep(3000, true);
break;
case 6:
SetInFace(true);
- DoScriptText(SAY_BLASTMASTER_5, me);
+ Talk(SAY_BLASTMASTER_5);
Summon(1);
if (instance)
if (GameObject* go = GameObject::GetGameObject(*me, instance->GetData64(DATA_GO_CAVE_IN_RIGHT)))
@@ -452,12 +446,12 @@ public:
NextStep(3000, true);
break;
case 7:
- DoScriptText(SAY_BLASTMASTER_6, me);
+ Talk(SAY_BLASTMASTER_6);
SetEscortPaused(false);
NextStep(0, false, 0);
break;
case 8:
- me->HandleEmoteCommand(EMOTE_STATE_WORK);
+ me->HandleEmoteCommand(EMOTE_STATE_USE_STANDING);
NextStep(25000, true);
break;
case 9:
@@ -466,31 +460,32 @@ public:
break;
case 10:
Summon(4);
+ Talk(SAY_BLASTMASTER_8);
NextStep(0, false);
break;
case 11:
- DoScriptText(SAY_BLASTMASTER_17, me);
+ Talk(SAY_BLASTMASTER_9);
NextStep(5000, true);
break;
case 12:
- DoScriptText(SAY_BLASTMASTER_18, me);
+ Talk(SAY_BLASTMASTER_10);
NextStep(5000, true);
break;
case 13:
- DoScriptText(SAY_BLASTMASTER_20, me);
+ Talk(SAY_BLASTMASTER_11);
CaveDestruction(true);
NextStep(8000, true);
break;
case 14:
- DoScriptText(SAY_BLASTMASTER_21, me);
+ Talk(SAY_BLASTMASTER_12);
NextStep(8500, true);
break;
case 15:
- DoScriptText(SAY_BLASTMASTER_22, me);
+ Talk(SAY_BLASTMASTER_13);
NextStep(2000, true);
break;
case 16:
- DoScriptText(SAY_BLASTMASTER_23, me);
+ Talk(SAY_BLASTMASTER_14);
SetInFace(false);
if (instance)
if (GameObject* go = GameObject::GetGameObject(*me, instance->GetData64(DATA_GO_CAVE_IN_LEFT)))
@@ -499,31 +494,36 @@ public:
break;
case 17:
SetEscortPaused(false);
- DoScriptText(SAY_BLASTMASTER_24, me);
- Summon(6);
+ Talk(SAY_BLASTMASTER_15);
+ Summon(5);
NextStep(0, false);
break;
case 18:
- Summon(7);
+ Summon(6);
NextStep(0, false);
break;
case 19:
SetInFace(false);
- Summon(8);
- DoScriptText(SAY_BLASTMASTER_25, me);
+ Summon(7);
+ Talk(SAY_BLASTMASTER_16);
NextStep(0, false);
break;
case 20:
- DoScriptText(SAY_BLASTMASTER_27, me);
+ Talk(SAY_BLASTMASTER_18);
NextStep(2000, true);
break;
case 21:
- Summon(9);
+ Summon(8);
NextStep(0, false);
break;
case 22:
CaveDestruction(false);
- DoScriptText(SAY_BLASTMASTER_20, me);
+ Talk(SAY_BLASTMASTER_11);
+ NextStep(3000, true);
+ break;
+ case 23:
+ Summon(9);
+ Talk(SAY_BLASTMASTER_19);
NextStep(0, false);
break;
}
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
index a62cf9f9cae..068ba5d26af 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
@@ -21,7 +21,8 @@
enum eGameObjects
{
GO_CAVE_IN_LEFT = 146085,
- GO_CAVE_IN_RIGHT = 146086
+ GO_CAVE_IN_RIGHT = 146086,
+ GO_RED_ROCKET = 103820
};
enum eCreatures
diff --git a/src/server/scripts/Kalimdor/feralas.cpp b/src/server/scripts/Kalimdor/feralas.cpp
index 4fcd20951c9..c1e247044f7 100644
--- a/src/server/scripts/Kalimdor/feralas.cpp
+++ b/src/server/scripts/Kalimdor/feralas.cpp
@@ -27,6 +27,7 @@ EndScriptData */
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "ScriptedGossip.h"
+#include "SpellScript.h"
/*######
## npc_gregan_brewspewer
@@ -202,6 +203,39 @@ public:
};
+enum GordunniTrap
+{
+ GO_GORDUNNI_DIRT_MOUND = 144064,
+};
+
+class spell_gordunni_trap : public SpellScriptLoader
+{
+ public:
+ spell_gordunni_trap() : SpellScriptLoader("spell_gordunni_trap") { }
+
+ class spell_gordunni_trap_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_gordunni_trap_SpellScript);
+
+ void HandleDummy()
+ {
+ if (Unit* caster = GetCaster())
+ if (GameObject* chest = caster->SummonGameObject(GO_GORDUNNI_DIRT_MOUND, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0))
+ chest->SetSpellId(GetSpellInfo()->Id);
+ }
+
+ void Register()
+ {
+ OnCast += SpellCastFn(spell_gordunni_trap_SpellScript::HandleDummy);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_gordunni_trap_SpellScript();
+ }
+};
+
/*######
## AddSC
######*/
@@ -211,4 +245,5 @@ void AddSC_feralas()
new npc_gregan_brewspewer();
new npc_oox22fe();
new npc_screecher_spirit();
+ new spell_gordunni_trap();
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index b8ff3dfbb46..059f513f12c 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -702,7 +702,7 @@ class npc_halion_controller : public CreatureScript
halion->AI()->Talk(SAY_INTRO);
break;
case EVENT_TWILIGHT_MENDING:
- if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_HALION)))
+ if (ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_HALION))) // Just check if physical Halion is spawned
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_TWILIGHT_HALION)))
twilightHalion->CastSpell((Unit*)NULL, SPELL_TWILIGHT_MENDING, true);
break;
@@ -1121,7 +1121,7 @@ class npc_combustion_consumption : public CreatureScript
struct npc_combustion_consumptionAI : public Scripted_NoMovementAI
{
npc_combustion_consumptionAI(Creature* creature) : Scripted_NoMovementAI(creature),
- _summonerGuid(0), _instance(creature->GetInstanceScript())
+ _instance(creature->GetInstanceScript()), _summonerGuid(0)
{
switch (me->GetEntry())
{
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index 39fff139b52..28595571a2f 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -232,7 +232,7 @@ public:
{
npc_verdisa_beglaristrasz_eternosAI(Creature* creature) : ScriptedAI(creature) { }
- void MovementInform(uint32 type, uint32 id)
+ void MovementInform(uint32 /*type*/, uint32 id)
{
// When Belgaristraz finish his moving say grateful text
if (me->GetEntry() == NPC_BELGARISTRASZ)
diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp
index 976a6e5dba5..1733af17580 100644
--- a/src/server/scripts/Northrend/storm_peaks.cpp
+++ b/src/server/scripts/Northrend/storm_peaks.cpp
@@ -19,6 +19,8 @@
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "ScriptedEscortAI.h"
+#include "SpellScript.h"
+#include "SpellAuraEffects.h"
#include "Vehicle.h"
#include "CombatAI.h"
@@ -564,6 +566,53 @@ class npc_hyldsmeet_protodrake : public CreatureScript
}
};
+enum CloseRift
+{
+ SPELL_DESPAWN_RIFT = 61665
+};
+
+class spell_close_rift : public SpellScriptLoader
+{
+ public:
+ spell_close_rift() : SpellScriptLoader("spell_close_rift") { }
+
+ class spell_close_rift_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_close_rift_AuraScript);
+
+ bool Load()
+ {
+ _counter = 0;
+ return true;
+ }
+
+ bool Validate(SpellInfo const* /*spell*/)
+ {
+ return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT);
+ }
+
+ void HandlePeriodic(AuraEffect const* /* aurEff */)
+ {
+ if (++_counter == 5)
+ GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true);
+ }
+
+ void Register()
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
+ }
+
+ private:
+ uint8 _counter;
+
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_close_rift_AuraScript();
+ }
+};
+
void AddSC_storm_peaks()
{
new npc_agnetta_tyrsdottar();
@@ -574,4 +623,5 @@ void AddSC_storm_peaks()
new npc_freed_protodrake();
new npc_icefang();
new npc_hyldsmeet_protodrake();
+ new spell_close_rift();
}
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 5cc31ad54e8..519d79add6d 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1581,12 +1581,12 @@ class spell_gen_luck_of_the_draw : public SpellScriptLoader
}
- LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*itr);
+ LFGDungeonData const* randomDungeon = sLFGMgr->GetLFGDungeon(*itr);
if (Group* group = owner->GetGroup())
if (Map const* map = owner->GetMap())
if (group->isLFGGroup())
if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
- if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId))
+ if (LFGDungeonData const* dungeon = sLFGMgr->GetLFGDungeon(dungeonId))
if (uint32(dungeon->map) == map->GetId() && dungeon->difficulty == uint32(map->GetDifficulty()))
if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM)
return; // in correct dungeon
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index b8df77d0346..b291b9751b4 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -2115,7 +2115,7 @@ class npc_shadowfiend : public CreatureScript
{
npc_shadowfiendAI(Creature* creature) : PetAI(creature) {}
- void JustDied(Unit* killer)
+ void JustDied(Unit* /*killer*/)
{
if (me->isSummon())
if (Unit* owner = me->ToTempSummon()->GetSummoner())