aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp212
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp211
-rw-r--r--src/server/scripts/Outland/CMakeLists.txt2
-rw-r--r--src/server/scripts/Outland/zone_nagrand.cpp112
-rw-r--r--src/server/scripts/Outland/zone_zangarmarsh.cpp8
5 files changed, 220 insertions, 325 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp
deleted file mode 100644
index 9cb7505c015..00000000000
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * 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/>.
- */
-
-/* ScriptData
-SDName: Boss_Talon_King_Ikiss
-SD%Complete: 80
-SDComment: Heroic supported. Some details missing, but most are spell related.
-SDCategory: Auchindoun, Sethekk Halls
-EndScriptData */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "sethekk_halls.h"
-
-enum Says
-{
- SAY_INTRO = 0,
- SAY_AGGRO = 1,
- SAY_SLAY = 2,
- SAY_DEATH = 3,
- EMOTE_ARCANE_EXP = 4
-};
-
-enum Spells
-{
- SPELL_BLINK = 38194,
- SPELL_BLINK_TELEPORT = 38203,
- SPELL_MANA_SHIELD = 38151,
- SPELL_ARCANE_BUBBLE = 9438,
- H_SPELL_SLOW = 35032,
- SPELL_POLYMORPH = 38245,
- H_SPELL_POLYMORPH = 43309,
- SPELL_ARCANE_VOLLEY = 35059,
- H_SPELL_ARCANE_VOLLEY = 40424,
- SPELL_ARCANE_EXPLOSION = 38197,
- H_SPELL_ARCANE_EXPLOSION = 40425
-};
-
-class boss_talon_king_ikiss : public CreatureScript
-{
-public:
- boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { }
-
- struct boss_talon_king_ikissAI : public BossAI
- {
- boss_talon_king_ikissAI(Creature* creature) : BossAI(creature, DATA_TALON_KING_IKISS) { }
-
- void Reset() override
- {
- _Reset();
- ArcaneVolley_Timer = 5000;
- Sheep_Timer = 8000;
- Blink_Timer = 35000;
- Slow_Timer = 15000 + rand32() % 15000;
- Blink = false;
- Intro = false;
- ManaShield = false;
- }
-
- void MoveInLineOfSight(Unit* who) override
- {
- if (!me->GetVictim() && me->CanCreatureAttack(who))
- {
- if (!Intro && me->IsWithinDistInMap(who, 100))
- {
- Intro = true;
- Talk(SAY_INTRO);
- }
-
- if (!me->CanFly() && me->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
- return;
-
- float attackRadius = me->GetAttackDistance(who);
- if (me->IsWithinDistInMap(who, attackRadius) && me->IsWithinLOSInMap(who))
- {
- //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
- AttackStart(who);
- }
- }
- }
-
- void EnterCombat(Unit* /*who*/) override
- {
- _EnterCombat();
- Talk(SAY_AGGRO);
- }
-
- void JustDied(Unit* /*killer*/) override
- {
- _JustDied();
- Talk(SAY_DEATH);
- }
-
- void KilledUnit(Unit* who) override
- {
- if (who->GetTypeId() == TYPEID_PLAYER)
- Talk(SAY_SLAY);
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- if (Blink)
- {
- DoCast(me, SPELL_ARCANE_EXPLOSION);
- DoCast(me, SPELL_ARCANE_BUBBLE, true);
- Blink = false;
- }
-
- if (ArcaneVolley_Timer <= diff)
- {
- DoCast(me, SPELL_ARCANE_VOLLEY);
- ArcaneVolley_Timer = 7000 + rand32() % 5000;
- } else ArcaneVolley_Timer -= diff;
-
- if (Sheep_Timer <= diff)
- {
- Unit* target;
-
- //second top aggro target in normal, random target in heroic correct?
- if (IsHeroic())
- target = SelectTarget(SELECT_TARGET_RANDOM, 0);
- else
- target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1);
-
- if (target)
- DoCast(target, SPELL_POLYMORPH);
- Sheep_Timer = 15000 + rand32() % 2500;
- } else Sheep_Timer -= diff;
-
- //may not be correct time to cast
- if (!ManaShield && HealthBelowPct(20))
- {
- DoCast(me, SPELL_MANA_SHIELD);
- ManaShield = true;
- }
-
- if (IsHeroic())
- {
- if (Slow_Timer <= diff)
- {
- DoCast(me, H_SPELL_SLOW);
- Slow_Timer = 15000 + rand32() % 25000;
- } else Slow_Timer -= diff;
- }
-
- if (Blink_Timer <= diff)
- {
- Talk(EMOTE_ARCANE_EXP);
-
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- {
- if (me->IsNonMeleeSpellCast(false))
- me->InterruptNonMeleeSpells(false);
-
- //Spell doesn't work, but we use for visual effect at least
- DoCast(target, SPELL_BLINK);
-
- float X = target->GetPositionX();
- float Y = target->GetPositionY();
- float Z = target->GetPositionZ();
-
- DoTeleportTo(X, Y, Z);
-
- DoCast(target, SPELL_BLINK_TELEPORT);
- Blink = true;
- }
- Blink_Timer = 35000 + rand32() % 5000;
- } else Blink_Timer -= diff;
-
- if (!Blink)
- DoMeleeAttackIfReady();
- }
-
- private:
- uint32 ArcaneVolley_Timer;
- uint32 Sheep_Timer;
- uint32 Blink_Timer;
- uint32 Slow_Timer;
-
- bool ManaShield;
- bool Blink;
- bool Intro;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetSethekkHallsAI<boss_talon_king_ikissAI>(creature);
- }
-};
-
-void AddSC_boss_talon_king_ikiss()
-{
- new boss_talon_king_ikiss();
-}
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp
new file mode 100644
index 00000000000..22914ca9094
--- /dev/null
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2008-2014 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 "ScriptedCreature.h"
+#include "SpellScript.h"
+#include "sethekk_halls.h"
+
+enum Says
+{
+ SAY_INTRO = 0,
+ SAY_AGGRO = 1,
+ SAY_SLAY = 2,
+ SAY_DEATH = 3,
+ EMOTE_ARCANE_EXPLOSION = 4
+};
+
+enum Spells
+{
+ SPELL_BLINK = 38194,
+ SPELL_BLINK_TELEPORT = 38203,
+ SPELL_MANA_SHIELD = 38151,
+ SPELL_ARCANE_BUBBLE = 9438,
+ SPELL_SLOW = 35032,
+ SPELL_POLYMORPH = 38245,
+ SPELL_ARCANE_VOLLEY = 35059,
+ SPELL_ARCANE_EXPLOSION = 38197,
+};
+
+enum Events
+{
+ EVENT_POLYMORPH = 1,
+ EVENT_BLINK,
+ EVENT_SLOW,
+ EVENT_ARCANE_VOLLEY,
+ EVENT_ARCANE_EXPLOSION
+};
+
+class boss_talon_king_ikiss : public CreatureScript
+{
+public:
+ boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { }
+
+ struct boss_talon_king_ikissAI : public BossAI
+ {
+ boss_talon_king_ikissAI(Creature* creature) : BossAI(creature, DATA_TALON_KING_IKISS)
+ {
+ Intro = false;
+ ManaShield = false;
+ }
+
+ void Reset() override
+ {
+ _Reset();
+ Intro = false;
+ ManaShield = false;
+ }
+
+ void MoveInLineOfSight(Unit* who) override
+ {
+ if (!Intro && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f))
+ {
+ Intro = true;
+ Talk(SAY_INTRO);
+ }
+
+ BossAI::MoveInLineOfSight(who);
+ }
+
+ void EnterCombat(Unit* /*who*/) override
+ {
+ _EnterCombat();
+ Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_ARCANE_VOLLEY, 5000);
+ events.ScheduleEvent(EVENT_POLYMORPH, 8000);
+ events.ScheduleEvent(EVENT_BLINK, 35000);
+ if (IsHeroic())
+ events.ScheduleEvent(EVENT_SLOW, urand(15000, 30000));
+ }
+
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
+ {
+ case EVENT_POLYMORPH:
+ // Second top aggro in normal, random target in heroic.
+ if (IsHeroic())
+ DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_POLYMORPH);
+ else
+ DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 1), SPELL_POLYMORPH);
+ events.ScheduleEvent(EVENT_POLYMORPH, urand(15000, 17500));
+ break;
+ case EVENT_ARCANE_VOLLEY:
+ DoCast(me, SPELL_ARCANE_VOLLEY);
+ events.ScheduleEvent(EVENT_ARCANE_VOLLEY, urand(7000, 12000));
+ break;
+ case EVENT_SLOW:
+ DoCast(me, SPELL_SLOW);
+ events.ScheduleEvent(EVENT_SLOW, urand(15000, 40000));
+ break;
+ case EVENT_BLINK:
+ if (me->IsNonMeleeSpellCast(false))
+ me->InterruptNonMeleeSpells(false);
+ Talk(EMOTE_ARCANE_EXPLOSION);
+ DoCastAOE(SPELL_BLINK);
+ events.ScheduleEvent(EVENT_BLINK, urand(35000, 40000));
+ events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, 1000);
+ break;
+ case EVENT_ARCANE_EXPLOSION:
+ DoCast(me, SPELL_ARCANE_EXPLOSION);
+ DoCast(me, SPELL_ARCANE_BUBBLE, true);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void DamageTaken(Unit* /*who*/, uint32& damage) override
+ {
+ if (!ManaShield && me->HealthBelowPctDamaged(20, damage))
+ {
+ DoCast(me, SPELL_MANA_SHIELD);
+ ManaShield = true;
+ }
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ _JustDied();
+ Talk(SAY_DEATH);
+ }
+
+ void KilledUnit(Unit* who) override
+ {
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
+ }
+
+ private:
+ bool ManaShield;
+ bool Intro;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetSethekkHallsAI<boss_talon_king_ikissAI>(creature);
+ }
+};
+
+// 38194 - Blink
+class spell_talon_king_ikiss_blink : public SpellScriptLoader
+{
+ public:
+ spell_talon_king_ikiss_blink() : SpellScriptLoader("spell_talon_king_ikiss_blink") { }
+
+ class spell_talon_king_ikiss_blink_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_talon_king_ikiss_blink_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_BLINK_TELEPORT))
+ return false;
+ return true;
+ }
+
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets);
+ targets.clear();
+ targets.push_back(target);
+ }
+
+ void HandleDummyHitTarget(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_talon_king_ikiss_blink_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ OnEffectHitTarget += SpellEffectFn(spell_talon_king_ikiss_blink_SpellScript::HandleDummyHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_talon_king_ikiss_blink_SpellScript();
+ }
+};
+
+void AddSC_boss_talon_king_ikiss()
+{
+ new boss_talon_king_ikiss();
+ new spell_talon_king_ikiss_blink();
+}
diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt
index 0c69a236ef8..ffc9b514abf 100644
--- a/src/server/scripts/Outland/CMakeLists.txt
+++ b/src/server/scripts/Outland/CMakeLists.txt
@@ -88,7 +88,7 @@ set(scripts_STAT_SRCS
Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp
Outland/Auchindoun/ManaTombs/mana_tombs.h
Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp
- Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp
+ Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp
Outland/Auchindoun/SethekkHalls/boss_anzu.cpp
Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp
Outland/Auchindoun/SethekkHalls/sethekk_halls.h
diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp
index f32d2516ee0..a8a99d757e7 100644
--- a/src/server/scripts/Outland/zone_nagrand.cpp
+++ b/src/server/scripts/Outland/zone_nagrand.cpp
@@ -19,12 +19,11 @@
/* ScriptData
SDName: Nagrand
SD%Complete: 90
-SDComment: Quest support: 9868, 9874, 10044, 10172, 10085. TextId's unknown for altruis_the_sufferer and greatmother_geyah (npc_text)
+SDComment: Quest support: 9868, 9874, 10085. TextId's unknown for altruis_the_sufferer and greatmother_geyah (npc_text)
SDCategory: Nagrand
EndScriptData */
/* ContentData
-npc_greatmother_geyah
npc_maghar_captive
npc_creditmarker_visit_with_ancestors
EndContentData */
@@ -36,114 +35,6 @@ EndContentData */
#include "SpellInfo.h"
/*######
-## npc_greatmother_geyah
-######*/
-
-#define GOSSIP_HGG1 "Hello, Greatmother. Garrosh told me that you wanted to speak with me."
-#define GOSSIP_HGG2 "Garrosh is beyond redemption, Greatmother. I fear that in helping the Mag'har, I have convinced Garrosh that he is unfit to lead."
-
-#define GOSSIP_SGG1 "You raised all of the orcs here, Greatmother?"
-#define GOSSIP_SGG2 "Do you believe that?"
-#define GOSSIP_SGG3 "What can be done? I have tried many different things. I have done my best to help the people of Nagrand. Each time I have approached Garrosh, he has dismissed me."
-#define GOSSIP_SGG4 "Left? How can you choose to leave?"
-#define GOSSIP_SGG5 "What is this duty?"
-#define GOSSIP_SGG6 "Is there anything I can do for you, Greatmother?"
-#define GOSSIP_SGG7 "I have done all that I could, Greatmother. I thank you for your kind words."
-#define GOSSIP_SGG8 "Greatmother, you are the mother of Durotan?"
-#define GOSSIP_SGG9 "Greatmother, I never had the honor. Durotan died long before my time, but his heroics are known to all on my world. The orcs of Azeroth reside in a place known as Durotar, named after your son. And ... (You take a moment to breathe and think through what you are about to tell the Greatmother.)"
-#define GOSSIP_SGG10 "It is my Warchief, Greatmother. The leader of my people. From my world. He ... He is the son of Durotan. He is your grandchild."
-#define GOSSIP_SGG11 "I will return to Azeroth at once, Greatmother."
-
-//all the textId's for the below is unknown, but i do believe the gossip item texts are proper.
-class npc_greatmother_geyah : public CreatureScript
-{
-public:
- npc_greatmother_geyah() : CreatureScript("npc_greatmother_geyah") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF + 1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 3:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 4:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 5:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 6:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 7:
- player->AreaExploredOrEventHappens(10044);
- player->CLOSE_GOSSIP_MENU();
- break;
- case GOSSIP_ACTION_INFO_DEF + 10:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 11:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 12:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG9, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 13:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG10, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 14:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SGG11, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 15:
- player->AreaExploredOrEventHappens(10172);
- player->CLOSE_GOSSIP_MENU();
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature) override
- {
- if (creature->IsQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(10044) == QUEST_STATUS_INCOMPLETE)
- {
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HGG1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- }
- else if (player->GetQuestStatus(10172) == QUEST_STATUS_INCOMPLETE)
- {
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HGG2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- }
- else
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
-
- return true;
- }
-};
-
-/*#####
## npc_maghar_captive
#####*/
@@ -714,7 +605,6 @@ class go_warmaul_prison : public GameObjectScript
void AddSC_nagrand()
{
- new npc_greatmother_geyah();
new npc_maghar_captive();
new npc_creditmarker_visit_with_ancestors();
new npc_corki();
diff --git a/src/server/scripts/Outland/zone_zangarmarsh.cpp b/src/server/scripts/Outland/zone_zangarmarsh.cpp
index b9736c523c3..c7627d1aa04 100644
--- a/src/server/scripts/Outland/zone_zangarmarsh.cpp
+++ b/src/server/scripts/Outland/zone_zangarmarsh.cpp
@@ -178,6 +178,12 @@ public:
npc_cooshcooshAI(Creature* creature) : ScriptedAI(creature)
{
m_uiNormFaction = creature->getFaction();
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ LightningBolt_Timer = 2000;
}
uint32 m_uiNormFaction;
@@ -185,7 +191,7 @@ public:
void Reset() override
{
- LightningBolt_Timer = 2000;
+ Initialize();
if (me->getFaction() != m_uiNormFaction)
me->setFaction(m_uiNormFaction);
}