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 void Init(IAIEventListener listener, AIStateContainer stateContainer, BaseEntity owner, AIBrainSenses senses) { CurrentInputMemorySlot = stateContainer.InputMemorySlot; eventListener = listener; RemoveAll(); AddStateEvents(stateContainer.Events, owner); Memory.Entity.Set(owner, 4); this.senses = senses; }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { BaseEntity baseEntity = memory.Entity.Get(base.InputEntityMemorySlot); base.Result = false; if (!(baseEntity == null)) { bool flag = Vector3Ex.Distance2D(base.Owner.transform.position, baseEntity.transform.position) <= Range; base.Result = (base.Inverted ? (!flag) : flag); } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = false; BaseEntity baseEntity = memory.Entity.Get(base.InputEntityMemorySlot); if (!(baseEntity == null) && base.Owner is IAIAttack) { bool flag = senses.Memory.IsLOS(baseEntity); base.Result = (base.Inverted ? (!flag) : flag); } }
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; if (base.Inverted) { base.Result = senses.TimeInAgressiveState < Value; } else { base.Result = senses.TimeInAgressiveState >= Value; } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; bool flag = Random.Range(0f, 1f) <= Chance; if (base.Inverted) { base.Result = !flag; } else { base.Result = flag; } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; combatEntity = memory.Entity.Get(base.InputEntityMemorySlot) as BaseCombatEntity; float num = lastExecuteTime; lastExecuteTime = Time.time; if (!(combatEntity == null) && combatEntity.lastAttackedTime >= num && !(combatEntity.lastAttacker == null) && !(combatEntity.lastAttacker == combatEntity)) { if (base.ShouldSetOutputEntityMemory) { memory.Entity.Set(combatEntity.lastAttacker, base.OutputEntityMemorySlot); } base.Result = !base.Inverted; } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = base.Inverted; combatEntity = memory.Entity.Get(base.InputEntityMemorySlot) as BaseCombatEntity; if (!(combatEntity == null)) { bool flag = combatEntity.healthFraction < HealthFraction; if (base.Inverted) { base.Result = !flag; } else { base.Result = flag; } } }
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 Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { IAIHungerAbove iAIHungerAbove = base.Owner as IAIHungerAbove; if (iAIHungerAbove == null) { base.Result = false; return; } bool flag = iAIHungerAbove.IsHungerAbove(Value); if (base.Inverted) { base.Result = !flag; } else { base.Result = flag; } }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { IAIMounted iAIMounted = memory.Entity.Get(base.InputEntityMemorySlot) as IAIMounted; base.Result = false; if (iAIMounted != null) { if (base.Inverted && !iAIMounted.IsMounted()) { base.Result = true; } if (!base.Inverted && iAIMounted.IsMounted()) { base.Result = true; } if (base.Result && base.ShouldSetOutputEntityMemory) { memory.Entity.Set(memory.Entity.Get(base.InputEntityMemorySlot), base.OutputEntityMemorySlot); } } }
public virtual bool GetBestFleePosition(BaseNavigator navigator, AIBrainSenses senses, BaseEntity fleeFrom, Vector3 fallbackPos, float minRange, float maxRange, out Vector3 result) { if (fleeFrom == null) { result = navigator.transform.position; return(false); } Vector3 dirFromThreat = Vector3Ex.Direction2D(navigator.transform.position, fleeFrom.transform.position); if (TestFleeDirection(navigator, dirFromThreat, 0f, minRange, maxRange, out result)) { return(true); } bool flag = UnityEngine.Random.Range(0, 2) == 1; if (TestFleeDirection(navigator, dirFromThreat, flag ? 45f : 315f, minRange, maxRange, out result)) { return(true); } if (TestFleeDirection(navigator, dirFromThreat, flag ? 315f : 45f, minRange, maxRange, out result)) { return(true); } if (TestFleeDirection(navigator, dirFromThreat, flag ? 90f : 270f, minRange, maxRange, out result)) { return(true); } if (TestFleeDirection(navigator, dirFromThreat, flag ? 270f : 90f, minRange, maxRange, out result)) { return(true); } if (TestFleeDirection(navigator, dirFromThreat, 135f + UnityEngine.Random.Range(0f, 90f), minRange, maxRange, out result)) { return(true); } return(false); }
public virtual void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { }
public override void Execute(AIMemory memory, AIBrainSenses senses, StateStatus stateStatus) { base.Result = false; }