/* * Copyright (C) 2008-2010 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: Silvermoon_City SD%Complete: 100 SDComment: Quest support: 9685 SDCategory: Silvermoon City EndScriptData */ /* ContentData npc_blood_knight_stillblade EndContentData */ #include "ScriptPCH.h" /*####### # npc_blood_knight_stillblade #######*/ #define SAY_HEAL -1000334 #define QUEST_REDEEMING_THE_DEAD 9685 #define SPELL_SHIMMERING_VESSEL 31225 #define SPELL_REVIVE_SELF 32343 class npc_blood_knight_stillblade : public CreatureScript { public: npc_blood_knight_stillblade() : CreatureScript("npc_blood_knight_stillblade") { } CreatureAI* GetAI(Creature* pCreature) const { return new npc_blood_knight_stillbladeAI (pCreature); } struct npc_blood_knight_stillbladeAI : public ScriptedAI { npc_blood_knight_stillbladeAI(Creature *c) : ScriptedAI(c) {} uint32 lifeTimer; bool spellHit; void Reset() { lifeTimer = 120000; me->SetStandState(UNIT_STAND_STATE_DEAD); me->SetUInt32Value(UNIT_FIELD_BYTES_1,7); // lay down spellHit = false; } void EnterCombat(Unit * /*who*/) { } void MoveInLineOfSight(Unit * /*who*/) { } void UpdateAI(const uint32 diff) { if (me->IsStandState()) { if (lifeTimer <= diff) me->AI()->EnterEvadeMode(); else lifeTimer -= diff; } } void SpellHit(Unit *Hitter, const SpellEntry *Spellkind) { if ((Spellkind->Id == SPELL_SHIMMERING_VESSEL) && !spellHit && (Hitter->GetTypeId() == TYPEID_PLAYER) && (CAST_PLR(Hitter)->IsActiveQuest(QUEST_REDEEMING_THE_DEAD))) { CAST_PLR(Hitter)->AreaExploredOrEventHappens(QUEST_REDEEMING_THE_DEAD); DoCast(me, SPELL_REVIVE_SELF); me->SetStandState(UNIT_STAND_STATE_STAND); me->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0); //me->RemoveAllAuras(); DoScriptText(SAY_HEAL, me); spellHit = true; } } }; }; void AddSC_silvermoon_city() { new npc_blood_knight_stillblade(); }