public void Update(float delta) { if (enemy == null) { hostAi.enemies = new List <Actor>(); hostAi.ChangeState(StateAi.States.Roaming); } if (EnemyInRangeCheck(delta)) { hostAi.ChangeState(StateAi.States.Fighting); } Pursue(delta); }
public void Update(float delta) { if (EnemyCheck(delta)) { hostAi.ChangeState(StateAi.States.Pursuing); } Wander(delta); }
public void Update(float delta) { if (enemy == null) { hostAi.ChangeState(StateAi.States.Roaming); } aimed = hostAi.IsAimedAt(enemy.Transform.origin, RangedAimMargin); currentRange = hostAi.DistanceToActor(enemy); inRange = currentRange <= RangedRange; if (!aimDelayActive) { Strafe(delta); MaintainDistance(delta); } Attack(delta); }
public void Init(StateAi hostAi) { this.hostAi = hostAi; if (hostAi.enemies.Count == 0 || hostAi.enemies[0] == null) { hostAi.ChangeState(StateAi.States.Roaming); return; } enemy = hostAi.enemies[0]; }
public void Init(StateAi hostAi) { this.hostAi = hostAi; if (hostAi.enemies.Count == 0 || hostAi.enemies[0] == null) { hostAi.ChangeState(StateAi.States.Roaming); return; } // TODO: Make this choose the closest enemy enemy = hostAi.enemies[0]; }
public void Update(float delta) { if (enemy == null) { hostAi.ChangeState(StateAi.States.Roaming); } aimed = hostAi.IsAimedAt(enemy.Transform.origin, MeleeAimMargin); inRange = hostAi.DistanceToActor(enemy) <= MeleeRange; Strafe(delta); CloseDistance(delta); Attack(delta); }
public void DetermineAttack() { List <Item> items = hostAi.GetItems(); int rangedSlot = SelectWeaponSlot(true); if (rangedSlot != -1) { hostActor.EquipHotbarItem(rangedSlot); hostAi.ChangeState(StateAi.States.Ranged); return; } int meleeSlot = SelectWeaponSlot(false); if (meleeSlot != -1) { hostActor.EquipHotbarItem(meleeSlot); } hostAi.ChangeState(StateAi.States.Melee); }