aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/duskwood.cpp
diff options
context:
space:
mode:
authorXanadu <none@none>2010-07-17 22:58:24 +0200
committerXanadu <none@none>2010-07-17 22:58:24 +0200
commitb5f8bfd66561e4a63fa8c28961b829a35ceb2fb0 (patch)
tree6691fda7c0985077aeb6ff3a93e829447dddd736 /src/server/scripts/EasternKingdoms/duskwood.cpp
parentec244dbe366e84a93c8fa1ef294af4a2e4e3b0b1 (diff)
parentdc510c9a143de1977daedea0aefb9589c01adde2 (diff)
Merge
--HG-- branch : trunk
Diffstat (limited to 'src/server/scripts/EasternKingdoms/duskwood.cpp')
-rw-r--r--src/server/scripts/EasternKingdoms/duskwood.cpp126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/duskwood.cpp b/src/server/scripts/EasternKingdoms/duskwood.cpp
new file mode 100644
index 00000000000..89c0ebe4213
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/duskwood.cpp
@@ -0,0 +1,126 @@
+/* Copyright (C) 2006 - 2009 kb_z
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* ScriptData
+SDName: Duskwood
+SD%Complete: 100
+SDComment: Quest Support:8735
+SDCategory: Duskwood
+EndScriptData */
+
+#include "ScriptedPch.h"
+
+/*######
+# at_twilight_grove
+######*/
+
+bool AreaTrigger_at_twilight_grove(Player* pPlayer, const AreaTriggerEntry * /*at*/)
+{
+ if (pPlayer->HasQuestForItem(21149))
+ {
+ if (Unit* TCorrupter = pPlayer->SummonCreature(15625,-10328.16,-489.57,49.95,0,TEMPSUMMON_MANUAL_DESPAWN,60000))
+ {
+ TCorrupter->setFaction(14);
+ TCorrupter->SetMaxHealth(832750);
+ }
+ if (Unit* CorrupterSpeaker = pPlayer->SummonCreature(1,pPlayer->GetPositionX(),pPlayer->GetPositionY(),pPlayer->GetPositionZ()-1,0,TEMPSUMMON_TIMED_DESPAWN,15000))
+ {
+ CorrupterSpeaker->SetName("Twilight Corrupter");
+ CorrupterSpeaker->SetVisibility(VISIBILITY_ON);
+ CorrupterSpeaker->MonsterYell("Come, $N. See what the Nightmare brings...",0,pPlayer->GetGUID());
+ }
+ }
+ return false;
+};
+
+/*######
+# boss_twilight_corrupter
+######*/
+
+#define SPELL_SOUL_CORRUPTION 25805
+#define SPELL_CREATURE_OF_NIGHTMARE 25806
+#define SPELL_LEVEL_UP 24312
+
+struct boss_twilight_corrupterAI : public ScriptedAI
+{
+ boss_twilight_corrupterAI(Creature *c) : ScriptedAI(c) {}
+
+ uint32 SoulCorruption_Timer;
+ uint32 CreatureOfNightmare_Timer;
+ uint8 KillCount;
+
+ void Reset()
+ {
+ SoulCorruption_Timer = 15000;
+ CreatureOfNightmare_Timer = 30000;
+ KillCount = 0;
+ }
+ void EnterCombat(Unit* /*who*/)
+ {
+ me->MonsterYell("The Nightmare cannot be stopped!",0,me->GetGUID());
+ }
+
+ void KilledUnit(Unit* victim)
+ {
+ if (victim->GetTypeId() == TYPEID_PLAYER)
+ {
+ ++KillCount;
+ me->MonsterTextEmote("Twilight Corrupter squeezes the last bit of life out of $N and swallows their soul.", victim->GetGUID(),true);
+
+ if (KillCount == 3)
+ {
+ DoCast(me, SPELL_LEVEL_UP, true);
+ KillCount = 0;
+ }
+ }
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+ if (SoulCorruption_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_SOUL_CORRUPTION);
+ SoulCorruption_Timer = rand()%4000+15000; //gotta confirm Timers
+ } else SoulCorruption_Timer-=diff;
+ if (CreatureOfNightmare_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_CREATURE_OF_NIGHTMARE);
+ CreatureOfNightmare_Timer = 45000; //gotta confirm Timers
+ } else CreatureOfNightmare_Timer-=diff;
+ DoMeleeAttackIfReady();
+ };
+};
+CreatureAI* GetAI_boss_twilight_corrupter(Creature* pCreature)
+{
+ return new boss_twilight_corrupterAI (pCreature);
+}
+
+void AddSC_duskwood()
+{
+ Script *newscript;
+
+ newscript = new Script;
+ newscript->Name = "boss_twilight_corrupter";
+ newscript->GetAI = &GetAI_boss_twilight_corrupter;
+ newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "at_twilight_grove";
+ newscript->pAreaTrigger = &AreaTrigger_at_twilight_grove;
+ newscript->RegisterSelf();
+}