public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; IAIAttack iAIAttack = base.Owner as IAIAttack; if (iAIAttack == null) { return; } BaseEntity bestTarget = iAIAttack.GetBestTarget(); if (base.Inverted) { if (bestTarget == null && base.ShouldSetOutputEntityMemory) { memory.Entity.Remove(base.OutputEntityMemorySlot); } base.Result = bestTarget == null; } else { if (bestTarget != null && base.ShouldSetOutputEntityMemory) { memory.Entity.Set(bestTarget, base.OutputEntityMemorySlot); } base.Result = bestTarget != null; } }
public override void StateEnter() { base.StateEnter(); attack = GetEntity(); BaseEntity baseEntity = brain.Events.Memory.Entity.Get(brain.Events.CurrentInputMemorySlot); if (baseEntity != null) { brain.Navigator.SetDestination(baseEntity.transform.position, BaseNavigator.NavigationSpeed.Fast); } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; IAIAttack iAIAttack = base.Owner as IAIAttack; if (iAIAttack != null) { BaseEntity baseEntity = memory.Entity.Get(base.InputEntityMemorySlot); iAIAttack.AttackTick(deltaTime, baseEntity, senses.Memory.IsLOS(baseEntity)); base.Result = !base.Inverted; } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; IAIAttack iAIAttack = base.Owner as IAIAttack; if (iAIAttack != null) { bool flag = iAIAttack.GetAmmoFraction() < Value; if (base.Inverted) { base.Result = !flag; } else { base.Result = flag; } } }
public override void StateEnter() { base.StateEnter(); attack = GetEntity(); BaseEntity baseEntity = brain.Events.Memory.Entity.Get(brain.Events.CurrentInputMemorySlot); if (baseEntity != null) { BaseCombatEntity target = baseEntity as BaseCombatEntity; Vector3 aimDirection = GetAimDirection(GetEntity(), target); brain.Navigator.SetFacingDirectionOverride(aimDirection); if (attack.CanAttack(baseEntity)) { StartAttacking(baseEntity); } brain.Navigator.SetDestination(baseEntity.transform.position, BaseNavigator.NavigationSpeed.Fast); } }
public void Init(BaseEntity owner, float range, float targetLostRange, float visionCone, bool checkVision, bool checkLOS, bool ignoreNonVisionSneakers, float listenRange, bool hostileTargetsOnly, bool senseFriendlies, bool ignoreSafeZonePlayers, EntityType senseTypes) { this.owner = owner; ownerAttack = owner as IAIAttack; playerOwner = owner as BasePlayer; maxRange = range; this.targetLostRange = targetLostRange; this.visionCone = visionCone; this.checkVision = checkVision; this.checkLOS = checkLOS; this.ignoreNonVisionSneakers = ignoreNonVisionSneakers; this.listenRange = listenRange; this.hostileTargetsOnly = hostileTargetsOnly; this.senseFriendlies = senseFriendlies; this.ignoreSafeZonePlayers = ignoreSafeZonePlayers; this.senseTypes = senseTypes; LastThreatTimestamp = UnityEngine.Time.realtimeSinceStartup; ownerSenses = owner as IAISenses; }