/* * This file is part of the AzerothCore Project. See AUTHORS file for Copyright information * * 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 . */ #include "GuardAI.h" #include "Player.h" int32 GuardAI::Permissible(Creature const* creature) { if (creature->IsGuard()) return PERMIT_BASE_PROACTIVE; return PERMIT_BASE_NO; } GuardAI::GuardAI(Creature* creature) : ScriptedAI(creature) { } void GuardAI::Reset() { ScriptedAI::Reset(); me->CastSpell(me, 18950 /*SPELL_INVISIBILITY_AND_STEALTH_DETECTION*/, true); } void GuardAI::EnterEvadeMode(EvadeReason /*why*/) { if (!me->IsAlive()) { me->GetMotionMaster()->MoveIdle(); me->CombatStop(true); me->GetThreatMgr().ClearAllThreat(); return; } LOG_DEBUG("entities.unit", "Guard entry: {} enters evade mode.", me->GetEntry()); me->RemoveAllAuras(); me->GetThreatMgr().ClearAllThreat(); me->CombatStop(true); // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) me->GetMotionMaster()->MoveTargetedHome(); } void GuardAI::JustDied(Unit* killer) { if (!killer) return; if (Player* player = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) me->SendZoneUnderAttackMessage(player); }