diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/scripts/kalimdor/durotar.cpp | 103 | 
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  | 
