public override void EnterEvadeMode(EvadeReason why = EvadeReason.Other) { if (mEvadeDisabled) { GetScript().ProcessEventsFor(SmartEvents.Evade); return; } if (!IsAIControlled()) { me.AttackStop(); return; } if (!_EnterEvadeMode()) return; me.AddUnitState(UnitState.Evade); GetScript().ProcessEventsFor(SmartEvents.Evade);//must be after aura clear so we can cast spells from db SetRun(mRun); if (HasEscortState(SmartEscortState.Escorting)) { AddEscortState(SmartEscortState.Returning); ReturnToLastOOCPos(); } else { Unit target = !mFollowGuid.IsEmpty() ? Global.ObjAccessor.GetUnit(me, mFollowGuid) : null; Unit owner = me.GetCharmerOrOwner(); if (target) { me.GetMotionMaster().MoveFollow(target, mFollowDist, mFollowAngle); // evade is not cleared in MoveFollow, so we can't keep it me.ClearUnitState(UnitState.Evade); } else if (owner) { me.GetMotionMaster().MoveFollow(owner, SharedConst.PetFollowDist, SharedConst.PetFollowAngle); me.ClearUnitState(UnitState.Evade); } else me.GetMotionMaster().MoveTargetedHome(); } if (!HasEscortState(SmartEscortState.Escorting)) //dont mess up escort movement after combat SetRun(mRun); }
public override void EnterEvadeMode(EvadeReason why = EvadeReason.Other) { _scheduler.CancelAll(); summons.DespawnAll(); Creature darnavan = ObjectAccessor.GetCreature(me, _darnavanGUID); if (darnavan != null) { darnavan.DespawnOrUnsummon(); } _DespawnAtEvade(); }
// Do not reload Creature templates on evade mode enter - prevent visual lost public override void EnterEvadeMode(EvadeReason why) { if (me.IsInEvadeMode() || !me.IsAlive()) { return; } Unit owner = me.GetCharmerOrOwner(); me.CombatStop(true); if (owner && !me.HasUnitState(UnitState.Follow)) { me.GetMotionMaster().Clear(false); me.GetMotionMaster().MoveFollow(owner, SharedConst.PetFollowDist, me.GetFollowAngle(), MovementSlot.Active); } }
public override void EnterEvadeMode(EvadeReason why) { if (!me.IsAlive()) { me.GetMotionMaster().MoveIdle(); me.CombatStop(true); EngagementOver(); return; } Log.outDebug(LogFilter.Unit, "Guard entry: {0} enters evade mode.", me.GetEntry()); me.RemoveAllAuras(); me.CombatStop(true); EngagementOver(); me.GetMotionMaster().MoveTargetedHome(); }
public override void EnterEvadeMode(EvadeReason why) { if (!me.IsAlive()) { me.GetMotionMaster().MoveIdle(); me.CombatStop(true); EngagementOver(); return; } Log.outTrace(LogFilter.ScriptsAi, $"GuardAI::EnterEvadeMode: {me.GetGUID()} enters evade mode."); me.RemoveAllAuras(); me.CombatStop(true); EngagementOver(); me.GetMotionMaster().MoveTargetedHome(); }
public override void EnterEvadeMode(EvadeReason why) { TempSummon meSummon = me.ToTempSummon(); if (meSummon) { Creature summoner = meSummon.GetSummonerCreatureBase(); if (summoner) { summoner.GetAI().DoAction(ActionIds.PetEvade); } else { me.DespawnOrUnsummon(); } return; } base.EnterEvadeMode(why); }
public override void EnterEvadeMode(EvadeReason why) { if (!me.IsAlive()) { me.GetMotionMaster().MoveIdle(); me.CombatStop(true); me.DeleteThreatList(); return; } Log.outDebug(LogFilter.Unit, "Guard entry: {0} enters evade mode.", me.GetEntry()); me.RemoveAllAuras(); me.DeleteThreatList(); me.CombatStop(true); // Remove ChaseMovementGenerator from MotionMaster stack list, and add HomeMovementGenerator instead if (me.GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Chase) { me.GetMotionMaster().MoveTargetedHome(); } }
public override void EnterEvadeMode(EvadeReason why = EvadeReason.Other) { me.RemoveAllAuras(); me.GetThreatManager().ClearAllThreat(); me.CombatStop(true); me.SetLootRecipient(null); if (HasEscortState(EscortState.Escorting)) { AddEscortState(EscortState.Returning); ReturnToLastPoint(); Log.outDebug(LogFilter.Scripts, "EscortAI.EnterEvadeMode has left combat and is now returning to last point"); } else { me.GetMotionMaster().MoveTargetedHome(); if (_hasImmuneToNPCFlags) { me.AddUnitFlag(UnitFlags.ImmuneToNpc); } Reset(); } }
public override void EnterEvadeMode(EvadeReason why) { List <Creature> triggers = new List <Creature>(); me.GetCreatureListWithEntryInGrid(triggers, CreatureIds.WorldtriggerLarge); foreach (Creature trigger in triggers) { if (trigger.HasAura(SpellIds.SummonChampionPeriodic) || trigger.HasAura(SpellIds.WebFrontDoors) || trigger.HasAura(SpellIds.WebSideDoors)) { _DespawnAtEvade(25, trigger); } } _DespawnAtEvade(25); summons.DespawnAll(); foreach (ObjectGuid gNerubian in _anubar) { Creature nerubian = ObjectAccessor.GetCreature(me, gNerubian); if (nerubian) { nerubian.DespawnOrUnsummon(); } } }
public override void EnterEvadeMode(EvadeReason why = EvadeReason.Other) { me.RemoveAllAuras(); me.CombatStop(true); me.SetLootRecipient(null); EngagementOver(); if (HasEscortState(EscortState.Escorting)) { AddEscortState(EscortState.Returning); ReturnToLastPoint(); Log.outDebug(LogFilter.ScriptsAi, $"EscortAI.EnterEvadeMode has left combat and is now returning to last point {me.GetGUID()}"); } else { me.GetMotionMaster().MoveTargetedHome(); if (_hasImmuneToNPCFlags) { me.SetImmuneToNPC(true); } Reset(); } }
public bool _EnterEvadeMode(EvadeReason why = EvadeReason.Other) { if (!me.IsAlive()) { return(false); } me.RemoveAurasOnEvade(); // sometimes bosses stuck in combat? me.DeleteThreatList(); me.CombatStop(true); me.SetLootRecipient(null); me.ResetPlayerDamageReq(); me.SetLastDamagedTime(0); me.SetCannotReachTarget(false); if (me.IsInEvadeMode()) { return(false); } return(true); }
public override void EnterEvadeMode(EvadeReason why) { me.DespawnOrUnsummon(); }
public override void EnterEvadeMode(EvadeReason why) { me.CombatStop(true); }
public override void EnterEvadeMode(EvadeReason why) { base.EnterEvadeMode(why); ResetTimer = 2000; }
public override void EnterEvadeMode(EvadeReason why) { instance.DoUseDoorOrButton(instance.GetGuidData(GameObjectIds.MainGateDoor)); base.EnterEvadeMode(why); }
public override void EnterEvadeMode(EvadeReason why = EvadeReason.Other) { base._DespawnAtEvade(10); }
public override void EnterEvadeMode(EvadeReason why) { }
public override void EnterEvadeMode(EvadeReason why) { summons.DespawnAll(); _DespawnAtEvade(); }
public override void EnterEvadeMode(EvadeReason why) { me.GetMotionMaster().Clear(); base.EnterEvadeMode(why); }