using BehaviorDesigner.Runtime.Tasks; using Gameplay.BT.Variables; using Gameplay.Unit; using Gameplay.AI; using Framework; namespace Code.Scripts.Gameplay.BT.Task { public class BTMoveAway : Action { public SharedBattleInfo SharedBattleInfo; private GameUnit _owner; public override void OnStart() { _owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId); } public override TaskStatus OnUpdate() { AIUtils.CheckAreaIsOtherEnemyUnit(_owner); if (_owner != null && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID && !AIUtils.IsNeedStop(_owner)) { if (GameUnitManager.instance.infightUnits.Contains(SharedBattleInfo.Value.theChosenOneId)) { var enemy = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.theChosenOneId); if (enemy != null && !enemy.statusData.isDead) { if (AIUtils.MoveAway(_owner, enemy)) SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID; } } else { SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID; } } return TaskStatus.Success; } } }