aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scripts/kalimdor/durotar.cpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/scripts/kalimdor/durotar.cpp b/src/scripts/kalimdor/durotar.cpp
new file mode 100644
index 00000000000..6d61ecbfd9a
--- /dev/null
+++ b/src/scripts/kalimdor/durotar.cpp
@@ -0,0 +1,103 @@
+/* Copyright (C) 2010 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, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#include "ScriptedPch.h"
+
+#include "ScriptedPch.h"
+
+/*######
+##Quest 5441: Lazy Peons
+##npc_lazy_peon
+######*/
+
+enum LazyPeonYells
+{
+ SAY_SPELL_HIT = -1999900 //Ow! OK, I''ll get back to work, $N!'
+};
+
+enum LazyPeon
+{
+ QUEST_LAZY_PEONS = 5441,
+ GO_LUMBERPILE = 175784,
+ SPELL_BUFF_SLEEP = 17743,
+ SPELL_AWAKEN_PEON = 19938
+};
+
+struct npc_lazy_peonAI : public ScriptedAI
+{
+ npc_lazy_peonAI(Creature *c) : ScriptedAI(c) {}
+
+ uint64 uiPlayerGUID;
+
+ uint32 m_uiRebuffTimer;
+ uint32 work;
+
+ void Reset ()
+ {
+ uiPlayerGUID = 0;
+ work = false;
+ }
+
+ void MovementInform(uint32 type, uint32 id)
+ {
+ if (id == 1)
+ work = true;
+ }
+
+ void SpellHit(Unit *caster, const SpellEntry *spell)
+ {
+ if (spell->Id == SPELL_AWAKEN_PEON && caster->GetTypeId() == TYPEID_PLAYER
+ && CAST_PLR(caster)->GetQuestStatus(QUEST_LAZY_PEONS) == QUEST_STATUS_INCOMPLETE)
+ {
+ ((Player *)caster)->KilledMonsterCredit(m_creature->GetEntry(),m_creature->GetGUID());
+ DoScriptText(SAY_SPELL_HIT, m_creature, caster);
+ m_creature->RemoveAllAuras();
+ if(GameObject* Lumberpile = m_creature->FindNearestGameObject(GO_LUMBERPILE, 20))
+ m_creature->GetMotionMaster()->MovePoint(1,Lumberpile->GetPositionX()-1,Lumberpile->GetPositionY(),Lumberpile->GetPositionZ());
+ }
+ }
+
+ void UpdateAI(const uint32 uiDiff)
+ {
+ if (work = true)
+ m_creature->HandleEmoteCommand(466);
+ if (m_uiRebuffTimer <= uiDiff)
+ {
+ DoCast(m_creature, SPELL_BUFF_SLEEP);
+ m_uiRebuffTimer = 300000; //Rebuff agian in 5 minutes
+ }
+ else
+ m_uiRebuffTimer -= uiDiff;
+ if (!UpdateVictim())
+ return;
+ DoMeleeAttackIfReady();
+ }
+};
+
+CreatureAI* GetAI_npc_lazy_peon(Creature* pCreature)
+{
+ return new npc_lazy_peonAI(pCreature);
+}
+
+void AddSC_durotar()
+{
+ Script* newscript;
+
+ newscript = new Script;
+ newscript->Name = "npc_lazy_peon";
+ newscript->GetAI = &GetAI_npc_lazy_peon;
+ newscript->RegisterSelf();
+} \ No newline at end of file