/* * Copyright (C) 2008-2011 TrinityCore * Copyright (C) 2006-2009 ScriptDev2 * * 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 . */ /* ScriptData SDName: Teldrassil SD%Complete: 100 SDComment: Quest support: 938 SDCategory: Teldrassil EndScriptData */ /* ContentData npc_mist EndContentData */ #include "ScriptPCH.h" #include "ScriptedFollowerAI.h" /*#### # npc_mist ####*/ enum eMist { SAY_AT_HOME = -1000323, EMOTE_AT_HOME = -1000324, QUEST_MIST = 938, NPC_ARYNIA = 3519, FACTION_DARNASSUS = 79 }; class npc_mist : public CreatureScript { public: npc_mist() : CreatureScript("npc_mist") { } bool OnQuestAccept(Player* player, Creature* creature, Quest const* pQuest) { if (pQuest->GetQuestId() == QUEST_MIST) { if (npc_mistAI* pMistAI = CAST_AI(npc_mist::npc_mistAI, creature->AI())) pMistAI->StartFollow(player, FACTION_DARNASSUS, pQuest); } return true; } CreatureAI* GetAI(Creature* creature) const { return new npc_mistAI(creature); } struct npc_mistAI : public FollowerAI { npc_mistAI(Creature* creature) : FollowerAI(creature) { } void Reset() { } void MoveInLineOfSight(Unit* who) { FollowerAI::MoveInLineOfSight(who); if (!me->getVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE) && who->GetEntry() == NPC_ARYNIA) { if (me->IsWithinDistInMap(who, 10.0f)) { DoScriptText(SAY_AT_HOME, who); DoComplete(); } } } void DoComplete() { DoScriptText(EMOTE_AT_HOME, me); if (Player* player = GetLeaderForFollower()) { if (player->GetQuestStatus(QUEST_MIST) == QUEST_STATUS_INCOMPLETE) player->GroupEventHappens(QUEST_MIST, me); } //The follow is over (and for later development, run off to the woods before really end) SetFollowComplete(); } //call not needed here, no known abilities /*void UpdateFollowerAI(const uint32 uiDiff) { if (!UpdateVictim()) return; DoMeleeAttackIfReady(); }*/ }; }; void AddSC_teldrassil() { new npc_mist(); }