【AI】相关
parent
4e780bb471
commit
0e088a28e9
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using Framework;
|
||||
using Gameplay.Area;
|
||||
using Gameplay.Unit;
|
||||
|
|
@ -27,7 +28,7 @@ namespace Gameplay.AI
|
|||
for (var i = 0; i < inSightEnemies.Count; i++)
|
||||
{
|
||||
var enemy = inSightEnemies[i];
|
||||
if (enemy == null)
|
||||
if (enemy == null || enemy.statusData.isDead)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
@ -66,6 +67,62 @@ namespace Gameplay.AI
|
|||
return nearestEnemy;
|
||||
}
|
||||
}
|
||||
|
||||
public static GameUnit FindNearestEnemyInShootRange(GameUnit owner)
|
||||
{
|
||||
if (owner == null) return null;
|
||||
var map = LevelManager.Instance.CurrentLevel.Map;
|
||||
if (map == null) return null;
|
||||
|
||||
inSightEnemies.Clear();
|
||||
inSightDistanceList.Clear();
|
||||
GameUnitManager.instance.characterManager.SearchEnemies(owner, inSightEnemies);
|
||||
var ownerCellIndex = owner.transData?.cellIndex;
|
||||
for (var i = 0; i < inSightEnemies.Count; i++)
|
||||
{
|
||||
var enemy = inSightEnemies[i];
|
||||
if (enemy == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var enemyCellIndex = enemy.transData?.cellIndex;
|
||||
|
||||
if (!ownerCellIndex.HasValue || !enemyCellIndex.HasValue)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var distance = MapUtils.Distance(map, ownerCellIndex.Value, enemyCellIndex.Value);
|
||||
|
||||
if (distance <= owner.fightData.normalAttackDistance)
|
||||
{
|
||||
inSightDistanceList.Add(enemy, distance);
|
||||
}
|
||||
}
|
||||
|
||||
if (inSightDistanceList.Count <= 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
owner.statusData.isAttackActive = true;
|
||||
var minDistance = float.MaxValue;
|
||||
GameUnit nearestEnemy = null;
|
||||
foreach (var pair in inSightDistanceList)
|
||||
{
|
||||
if (minDistance > pair.Value)
|
||||
{
|
||||
minDistance = pair.Value;
|
||||
nearestEnemy = pair.Key;
|
||||
}
|
||||
}
|
||||
|
||||
return nearestEnemy;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static List<GameUnit> enemies = new List<GameUnit>(16);
|
||||
private static List<GameUnit> inAttackEnemies = new List<GameUnit>(16);
|
||||
|
|
@ -232,55 +289,71 @@ namespace Gameplay.AI
|
|||
return nearestPoint;
|
||||
}
|
||||
|
||||
public static int GetPatrolPointIndexFromVector2Int(Map map, int patrolIndex, List<PatrolInfo> patrolInfos)
|
||||
{
|
||||
if (map == null || patrolIndex >= patrolInfos.Count) return -1;
|
||||
var patrolInfo = patrolInfos[patrolIndex];
|
||||
if (patrolInfo == null) return -1;
|
||||
return map.BlockPosition2TGSCellIndex(patrolInfo.patrolPoint);
|
||||
}
|
||||
|
||||
public static bool IsNeedStop(GameUnit owner)
|
||||
{
|
||||
return owner.statusData.isOnVehicle || owner.statusData.isChaos || owner.statusData.isStun
|
||||
|| owner.statusData.isLockPos || owner.statusData.isRetreat;
|
||||
|| owner.statusData.isLockPos || owner.statusData.isRetreat || owner.statusData.isDead;
|
||||
}
|
||||
|
||||
public static bool AINeedStopUpdate(Level.Level level)
|
||||
{
|
||||
if (level == null) return false;
|
||||
return level.IsPreparing() || level.IsEnd() || Math.Abs(level.GetSpeed() - 0f) < 0.01f;
|
||||
}
|
||||
|
||||
// 激活AI攻击
|
||||
public static void ActiveAIAttack(GameUnit owner)
|
||||
{
|
||||
if (owner == null) return;
|
||||
if (owner.statusData.isAttackActive) return;
|
||||
var map = LevelManager.Instance.CurrentLevel.Map;
|
||||
if (map == null) return;
|
||||
|
||||
var tempInSightEnemies = new List<GameUnit>();
|
||||
GameUnitManager.instance.characterManager.SearchEnemies(owner, tempInSightEnemies);
|
||||
if (tempInSightEnemies.Count <= 0) return;
|
||||
var ownerCellIndex = owner.transData?.cellIndex;
|
||||
for (var i = 0; i < inSightEnemies.Count; i++)
|
||||
|
||||
if (owner.controlData.targetEnemy!=null)
|
||||
{
|
||||
var enemy = inSightEnemies[i];
|
||||
if (enemy == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var enemyCellIndex = enemy.transData?.cellIndex;
|
||||
|
||||
if (!ownerCellIndex.HasValue || !enemyCellIndex.HasValue)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var distance = MapUtils.Distance(map, ownerCellIndex.Value, enemyCellIndex.Value);
|
||||
if (distance <= owner.fightData.findEnemyRange)
|
||||
owner.statusData.isAttackActive = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
var target = FindNearestEnemyInShootRange(owner);
|
||||
if (target != null)
|
||||
{
|
||||
owner.controlData.targetEnemy = target;
|
||||
owner.statusData.isAttackActive = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool MoveTo(GameUnit owner, int cellIndex, bool cancelFollow = true)
|
||||
{
|
||||
if (owner == null || cellIndex == -1) return false;
|
||||
var map = LevelManager.Instance.CurrentLevel.Map;
|
||||
if (map == null) return false;
|
||||
var mapData = map.MapData;
|
||||
if (mapData == null) return false;
|
||||
var blockData = map.MapData.GetBlockData(cellIndex).GetTerrainTypeProperty();
|
||||
if (blockData == null) return false;
|
||||
if (!blockData.selectable) return false;
|
||||
|
||||
owner.MoveTo(cellIndex, cancelFollow);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AI检查并移动
|
||||
/// AI 移动向敌人并检查
|
||||
/// </summary>
|
||||
public static void CheckAndMove(GameUnit owner, int cellIndex, bool cancelFollow = true)
|
||||
{
|
||||
if (owner == null || cellIndex == -1) return;
|
||||
//if (owner.statusData.isMoveing) return;
|
||||
owner.MoveTo(cellIndex, cancelFollow);
|
||||
// DebugUtil.LogError("开始向:{0}移动", cellIndex);
|
||||
if (!MoveTo(owner, cellIndex, cancelFollow)) return;
|
||||
|
||||
if (owner.gameunitType != EGameUnitType.Character
|
||||
&& owner.gameunitType != EGameUnitType.Vehicle) return;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Level;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Gameplay;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
|
|
@ -11,40 +11,47 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
||||
private int _TargetCellIndex;
|
||||
private int _targetCellIndex;
|
||||
private int _lastTargetPointIndex;
|
||||
private GameUnit _owner;
|
||||
private Map _map;
|
||||
private Level _level;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
_level = LevelManager.Instance.CurrentLevel;
|
||||
if (_level != null)
|
||||
_map = _level.Map;
|
||||
|
||||
// 回到离自己最近的巡逻点
|
||||
if (SharedBattleInfo.Value.PartolPointIndex == -1)
|
||||
{
|
||||
SharedBattleInfo.Value.PartolPointIndex =
|
||||
AIUtils.FindNearestPointInPatrolInfo(_owner, SharedBattleInfo.Value.PatrolInfos);
|
||||
_TargetCellIndex = LevelManager.Instance.CurrentLevel.Map.BlockPosition2TGSCellIndex(SharedBattleInfo
|
||||
.Value.PatrolInfos[SharedBattleInfo.Value.PartolPointIndex].patrolPoint);
|
||||
SharedBattleInfo.Value.PartolPointIndex = AIUtils.FindNearestPointInPatrolInfo(_owner, SharedBattleInfo.Value.PatrolInfos);
|
||||
_lastTargetPointIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (SharedBattleInfo.Value.PartolPointIndex != _lastTargetPointIndex && !AIUtils.IsNeedStop(_owner))
|
||||
if (AIUtils.AINeedStopUpdate(_level)) return TaskStatus.Running;
|
||||
|
||||
if (!_owner.statusData.isMoveing && SharedBattleInfo.Value.PartolPointIndex != _lastTargetPointIndex && !AIUtils.IsNeedStop(_owner))
|
||||
{
|
||||
_lastTargetPointIndex = SharedBattleInfo.Value.PartolPointIndex;
|
||||
_TargetCellIndex = LevelManager.Instance.CurrentLevel.Map.BlockPosition2TGSCellIndex(SharedBattleInfo
|
||||
.Value.PatrolInfos[SharedBattleInfo.Value.PartolPointIndex].patrolPoint);
|
||||
AIUtils.CheckAndMove(_owner, _TargetCellIndex, false);
|
||||
_targetCellIndex =
|
||||
AIUtils.GetPatrolPointIndexFromVector2Int(_map, SharedBattleInfo.Value.PartolPointIndex, SharedBattleInfo.Value.PatrolInfos);
|
||||
AIUtils.MoveTo(_owner, _targetCellIndex, false);
|
||||
|
||||
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
if (_owner.transData.cellIndex == _TargetCellIndex)
|
||||
if (_owner.transData.cellIndex == _targetCellIndex)
|
||||
return TaskStatus.Success;
|
||||
|
||||
if (!_owner.statusData.isMoveing) // 没有移动表示路径错误,被控制,被阻挡,需要重新设置移动
|
||||
_lastTargetPointIndex = -1;
|
||||
/*if (!_owner.statusData.isMoveing) // 没有移动表示路径错误,被控制,被阻挡,需要重新设置移动
|
||||
_lastTargetPointIndex = -1;*/
|
||||
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Level;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否受到攻击 不需要判断是否为同一目标 需要一直后退
|
||||
/// </summary>
|
||||
public class BTBeingAttacked : BehaviorDesigner.Runtime.Tasks.Conditional
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
public bool _isBeingAttacked;
|
||||
private bool _isBeingAttacked;
|
||||
private bool _isRegistered;
|
||||
private GameUnit _owner;
|
||||
private GameUnit _target;
|
||||
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, OnDamaged);
|
||||
|
|
@ -40,6 +40,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
_owner.statusData.isAttackActive = true;
|
||||
if (data.sender != null)
|
||||
{
|
||||
// 如果收到多个攻击 选择最近的攻击目标
|
||||
_target = _target != null
|
||||
? _target = AIUtils.GetNearestGameUnit(data.owner, data.sender, _target)
|
||||
: _target = data.sender;
|
||||
|
|
@ -52,16 +53,34 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (_isBeingAttacked && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID
|
||||
&& SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackAI)
|
||||
AIUtils.ActiveAIAttack(_owner);
|
||||
// _owner.controlData.targetEnemy 外部判断
|
||||
if (SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackIntensifyAI)
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
// 被攻击但攻击对象不在视野内
|
||||
if (_isBeingAttacked && _owner.controlData.targetEnemy == null)
|
||||
{
|
||||
_isBeingAttacked = false;
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
// 被攻击但敌人在攻击范围内
|
||||
if (_isBeingAttacked && _owner.controlData.targetEnemy != null)
|
||||
{
|
||||
_isBeingAttacked = false;
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
}
|
||||
if (_isBeingAttacked && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID
|
||||
&& SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackIntensifyAI)
|
||||
|
||||
if (_isBeingAttacked && SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackAI)
|
||||
{
|
||||
return AIUtils.FindEnemiesInAttackDistance(_owner).Contains(_target) ? TaskStatus.Running : TaskStatus.Success;
|
||||
if (SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
_isBeingAttacked = false;
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
|
|
@ -72,6 +91,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, OnDamaged);
|
||||
_isRegistered = false;
|
||||
}
|
||||
|
||||
_isBeingAttacked = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,61 +1,33 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Level;
|
||||
using Gameplay.Unit;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class BTChainTrigger : BehaviorDesigner.Runtime.Tasks.Conditional
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
private GameUnit _owner;
|
||||
private uint _lastTarget;
|
||||
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
}
|
||||
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
|
||||
if (_owner != null && SharedBattleInfo.Value.AttachAIName == LevelData.AttachAIType.ChainAI
|
||||
&& _owner.controlData.followUnit == null
|
||||
&& _owner.controlData.targetEnemy == null)
|
||||
if (_owner != null && SharedBattleInfo.Value.AttachAIName == LevelData.AttachAIType.ChainAI &&
|
||||
SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
|
||||
var enemy = AIUtils.FindNearestEnemyInSightDistance(_owner);
|
||||
if (enemy != null)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = enemy.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TaskStatus.Failure;
|
||||
}
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
else if (_owner != null && SharedBattleInfo.Value.AttachAIName == LevelData.AttachAIType.ChainAI
|
||||
&& (_owner.controlData.followUnit != null || _owner.controlData.targetEnemy != null))
|
||||
{
|
||||
if (_owner.controlData.targetEnemy != null)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.targetEnemy.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
if (_owner.controlData.followUnit != null)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.followUnit.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
return TaskStatus.Failure;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,27 +1,24 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Unit;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.AI.Conditional
|
||||
{
|
||||
/// <summary>
|
||||
/// 检测是否被激活
|
||||
/// 检测是否激活连锁组触发
|
||||
/// </summary>
|
||||
public class BTCheckAIGroup : BehaviorDesigner.Runtime.Tasks.Conditional
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
private GameUnit _owner;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (SharedBattleInfo.Value.groupInfo.Count > 0 &&
|
||||
SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
// 有所属组且目标不为空
|
||||
if (SharedBattleInfo.Value.groupInfo.Count > 0 && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Level;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
|
|
@ -10,9 +10,9 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackAI
|
||||
return SharedBattleInfo.Value.AIName is LevelData.AIType.FallBackAI or LevelData.AIType.FallBackIntensifyAI
|
||||
? TaskStatus.Success
|
||||
: TaskStatus.Failure;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Level;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
public class BTFallBackIntensifyAI : BehaviorDesigner.Runtime.Tasks.Conditional
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return SharedBattleInfo.Value.AIName == LevelData.AIType.FallBackIntensifyAI
|
||||
? TaskStatus.Success
|
||||
: TaskStatus.Failure;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f44399cb3d4c06945a7238ce1fcaf114
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,11 +1,14 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.BT.Variables;
|
||||
using Framework;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Unit;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
/// <summary>
|
||||
/// 接受连锁召唤事件
|
||||
/// </summary>
|
||||
public class BTHasReceivdCalled : BehaviorDesigner.Runtime.Tasks.Conditional
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
|
@ -19,8 +22,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataSpecialAI>(EventManager.EventName.INFIGHT_CHARACTER_AI_CHAIN,
|
||||
OnSpecialTriggerChanged);
|
||||
EventManager.Instance.Register<EventDataSpecialAI>(EventManager.EventName.INFIGHT_CHARACTER_AI_CHAIN, OnSpecialTriggerChanged);
|
||||
_isRegistered = true;
|
||||
_isChainCall = false;
|
||||
}
|
||||
|
|
@ -28,17 +30,18 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
private void OnSpecialTriggerChanged(EventDataSpecialAI chainAIData)
|
||||
{
|
||||
if (chainAIData.friendsInOwnerSight.Contains(_owner))
|
||||
if (chainAIData.friendsInOwnerSight.Contains(_owner) && chainAIData.owner != _owner)
|
||||
{
|
||||
_owner.statusData.isAttackActive = true;
|
||||
_isChainCall = true;
|
||||
SharedBattleInfo.Value.theChosenOneId = chainAIData.target;
|
||||
// DebugUtil.LogError("AI {0} ,已经被连锁召唤,召唤者是:{1}, 目标是:{2}", _owner.GetID(), chainAIData.owner.GetID(), chainAIData.target);
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if ( /*SharedBattleInfo.Value.AttachAIName != LevelData.AttachAIType.ChainAI &&*/ _isChainCall)
|
||||
if (_isChainCall)
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Unit;
|
||||
using Framework;
|
||||
|
||||
/// <summary>
|
||||
/// 接受连锁触发事件
|
||||
/// </summary>
|
||||
public class BTHasReceivdGroupCalled : Conditional
|
||||
|
||||
{
|
||||
|
|
@ -17,8 +20,7 @@ public class BTHasReceivdGroupCalled : Conditional
|
|||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataSpecialAI>(EventManager.EventName.INFIGHT_CHARACTER_AI_GROUPCHAIN,
|
||||
OnGroupChain);
|
||||
EventManager.Instance.Register<EventDataSpecialAI>(EventManager.EventName.INFIGHT_CHARACTER_AI_GROUPCHAIN, OnGroupChain);
|
||||
_isRegistered = true;
|
||||
_isChainCall = false;
|
||||
}
|
||||
|
|
@ -28,12 +30,12 @@ public class BTHasReceivdGroupCalled : Conditional
|
|||
{
|
||||
foreach (var group in SharedBattleInfo.Value.groupInfo)
|
||||
{
|
||||
if (chainAIData.groups.Contains(group))
|
||||
if (chainAIData.groups.Contains(group) && chainAIData.owner != _owner)
|
||||
{
|
||||
_owner.statusData.isAttackActive = true;
|
||||
_isChainCall = true;
|
||||
SharedBattleInfo.Value.theChosenOneId = chainAIData.target;
|
||||
//DebugUtil.LogError("AI {0} ,已经被指定组触发,目标是:{1}", _owner.GetID(), SharedBattleInfo.Value.theChosenOneId);
|
||||
// DebugUtil.LogError("AI {0} ,已经被指定组触发,目标是:{1}", _owner.GetID(), SharedBattleInfo.Value.theChosenOneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Level;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Conditional
|
||||
{
|
||||
|
|
@ -14,7 +13,6 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
private bool _isBeingAttacked;
|
||||
private bool _isRegistered;
|
||||
private GameUnit _owner;
|
||||
private Level _level;
|
||||
private GameUnit _target;
|
||||
|
||||
public override void OnStart()
|
||||
|
|
@ -27,16 +25,15 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
_isBeingAttacked = false;
|
||||
}
|
||||
|
||||
_level = LevelManager.Instance.CurrentLevel;
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
}
|
||||
|
||||
private void OnDamaged(EventDataGetDamaged data)
|
||||
{
|
||||
//data.sender 发送受伤的角色 data.owner 受到伤害的角色
|
||||
if (data.owner.GetID() == _owner.GetID())
|
||||
{
|
||||
_isBeingAttacked = true;
|
||||
_owner.statusData.isAttackActive = true;
|
||||
if (data.sender != null)
|
||||
{
|
||||
_target = _target != null
|
||||
|
|
@ -44,55 +41,59 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
: _target = data.sender;
|
||||
_target = AIUtils.GetNearestGameUnit(data.owner, data.sender, _target);
|
||||
SharedBattleInfo.Value.theChosenOneId = _target.GetID();
|
||||
_owner.statusData.isAttackActive = true;
|
||||
// DebugUtil.LogG($"BT harmed by: {data.sender?.GetID()} ,But Target is :{_target.GetID()}, owner: {_owner?.GetID()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (_owner == null) return TaskStatus.Running;
|
||||
|
||||
AIUtils.ActiveAIAttack(_owner);
|
||||
if (_isBeingAttacked || _owner.statusData.isAttackActive)
|
||||
|
||||
// 有目标敌人
|
||||
if (_owner.statusData.isAttackActive && _owner.controlData.targetEnemy != null)
|
||||
{
|
||||
if (SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
_target = _owner.controlData.targetEnemy;
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.targetEnemy.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
if (_owner != null && _level != null
|
||||
&& _owner.controlData.followUnit == null
|
||||
&& _owner.controlData.targetEnemy == null)
|
||||
// 被攻击或被召唤
|
||||
if (_owner.statusData.isAttackActive && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
if (GameUnitManager.instance.infightUnits.Contains(SharedBattleInfo.Value.theChosenOneId))
|
||||
{
|
||||
var enemy = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.theChosenOneId);
|
||||
if (enemy != null && !enemy.statusData.isDead)
|
||||
{
|
||||
_target = enemy;
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 如果目标都为空 寻找敌人
|
||||
if (_owner.controlData.targetEnemy == null && _owner.controlData.followUnit == null)
|
||||
{
|
||||
var enemy = AIUtils.FindNearestEnemyInSightDistance(_owner);
|
||||
if (enemy != null)
|
||||
{
|
||||
_target = enemy;
|
||||
SharedBattleInfo.Value.theChosenOneId = enemy.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
if (SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID) return TaskStatus.Running;
|
||||
|
||||
SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID;
|
||||
|
||||
return TaskStatus.Failure;
|
||||
}
|
||||
|
||||
if (_owner != null && _level != null
|
||||
&& (_owner.controlData.followUnit != null ||
|
||||
_owner.controlData.targetEnemy != null))
|
||||
{
|
||||
if (_owner.controlData.targetEnemy != null && _owner.statusData.isAttackActive)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.targetEnemy.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
/*if (_owner.controlData.followUnit != null && _owner.statusData.isAttackActive)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.followUnit.GetID();
|
||||
return TaskStatus.Success;
|
||||
}*/
|
||||
}
|
||||
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,21 +15,26 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
|
||||
if (_owner != null)
|
||||
{
|
||||
DebugUtil.Log("BT move away start, owner: {0}", _owner?.GetID());
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID && !AIUtils.IsNeedStop(_owner))
|
||||
if (_owner != null && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID && !AIUtils.IsNeedStop(_owner))
|
||||
{
|
||||
var unit = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.theChosenOneId);
|
||||
if (unit != null)
|
||||
_owner?.MoveAway(unit);
|
||||
// DebugUtil.LogG($"BT move away update success, owner: {_owner?.GetID()}, target: {SharedBattleInfo.Value.theChosenOneId}");
|
||||
if (GameUnitManager.instance.infightUnits.Contains(SharedBattleInfo.Value.theChosenOneId))
|
||||
{
|
||||
var enemy = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.theChosenOneId);
|
||||
if (enemy != null && !enemy.statusData.isDead)
|
||||
{
|
||||
if (_owner.MoveAway(enemy))
|
||||
SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = Constants.INVALID_UINT_ID;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return TaskStatus.Success;
|
||||
|
|
|
|||
|
|
@ -1,24 +1,22 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
public class BTMoveTo : Action
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
||||
private GameUnit _owner;
|
||||
|
||||
private GameUnit _target;
|
||||
|
||||
private uint _lastTarget;
|
||||
private bool _isRegistered;
|
||||
private bool _isBeingAttacked;
|
||||
private GameUnit _target;
|
||||
|
||||
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
if (!_isRegistered)
|
||||
|
|
@ -30,17 +28,12 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
}
|
||||
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
|
||||
if (_owner != null)
|
||||
{
|
||||
// DebugUtil.Log("BT move to start, owner: {0}", _owner?.GetID());
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDamaged(EventDataGetDamaged data)
|
||||
{
|
||||
//data.sender 发送受伤的角色 data.owner 受到伤害的角色
|
||||
if (data.owner.GetID() == _owner.GetID())
|
||||
/*if (data.owner.GetID() == _owner.GetID())
|
||||
{
|
||||
_isBeingAttacked = true;
|
||||
if (data.sender != null)
|
||||
|
|
@ -51,9 +44,8 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
_target = AIUtils.GetNearestGameUnit(data.owner, data.sender, _target);
|
||||
SharedBattleInfo.Value.theChosenOneId = _target.GetID();
|
||||
_owner.statusData.isAttackActive = true;
|
||||
// DebugUtil.LogG($"BT harmed by: {data.sender?.GetID()} ,But Target is :{_target.GetID()}, owner: {_owner?.GetID()}");
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
|
|
@ -71,15 +63,14 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
}
|
||||
}
|
||||
|
||||
if (_owner?.controlData.targetEnemy == null/* && _owner?.controlData.followUnit == null*/)
|
||||
if (_owner?.controlData.targetEnemy == null)
|
||||
{
|
||||
_lastTarget = Constants.INVALID_UINT_ID;
|
||||
}
|
||||
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return TaskStatus.Failure;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,27 +1,27 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Level;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
public class BTMoveToBornPosition : Action
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
||||
private GameUnit _owner;
|
||||
private int _bornCellIndex;
|
||||
private GameUnit _owner;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
if (_owner != null)
|
||||
_bornCellIndex =
|
||||
LevelManager.Instance.CurrentLevel.Map.BlockPosition2TGSCellIndex(_owner.unitLevelData
|
||||
.BornPosition);
|
||||
SharedBattleInfo.Value.PartolPointIndex = -1;
|
||||
// 如果需要巡逻 返回
|
||||
if (SharedBattleInfo.Value.PatrolInfos.Count > 0)
|
||||
return;
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId);
|
||||
var map = LevelManager.Instance.CurrentLevel.Map;
|
||||
if (_owner != null && map != null)
|
||||
_bornCellIndex = map.BlockPosition2TGSCellIndex(_owner.unitLevelData.BornPosition);
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
|
|
@ -33,7 +33,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
|
||||
if (_owner.transData.cellIndex != _bornCellIndex && !AIUtils.IsNeedStop(_owner))
|
||||
{
|
||||
AIUtils.CheckAndMove(_owner, _bornCellIndex);
|
||||
AIUtils.MoveTo(_owner, _bornCellIndex);
|
||||
}
|
||||
|
||||
return TaskStatus.Running;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,24 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.AI.Task
|
||||
{
|
||||
/// <summary>
|
||||
/// 发送连锁触发反应
|
||||
/// 召唤连锁组内的友军
|
||||
/// </summary>
|
||||
public class BTSendChainActive : Action
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
private GameUnit _owner;
|
||||
private uint _target;
|
||||
|
||||
/// <summary>
|
||||
/// 上一个目标
|
||||
/// </summary>
|
||||
private uint _lastTarget;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
|
|
@ -23,10 +27,9 @@ namespace Code.Scripts.Gameplay.AI.Task
|
|||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (_owner != null && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID &&
|
||||
_target != SharedBattleInfo.Value.theChosenOneId)
|
||||
if (_owner != null && SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID && _lastTarget != SharedBattleInfo.Value.theChosenOneId)
|
||||
{
|
||||
_target = SharedBattleInfo.Value.theChosenOneId;
|
||||
_lastTarget = SharedBattleInfo.Value.theChosenOneId;
|
||||
EventManager.Instance.Send(EventManager.EventName.INFIGHT_CHARACTER_AI_GROUPCHAIN,
|
||||
new EventDataSpecialAI
|
||||
{
|
||||
|
|
@ -35,7 +38,7 @@ namespace Code.Scripts.Gameplay.AI.Task
|
|||
target = SharedBattleInfo.Value.theChosenOneId,
|
||||
groups = SharedBattleInfo.Value.groupInfo,
|
||||
});
|
||||
//DebugUtil.LogError("AI :{0} 发送了组连锁事件,目标是:{1}", _owner.GetID(), SharedBattleInfo.Value.theChosenOneId);
|
||||
// DebugUtil.LogError("AI :{0} 发送了组连锁事件,目标是:{1}", _owner.GetID(), SharedBattleInfo.Value.theChosenOneId);
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Unit;
|
||||
using Gameplay.AI;
|
||||
using Framework;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
/// <summary>
|
||||
/// 召唤视野里面的友军
|
||||
/// </summary>
|
||||
public class BTSendChainCall : Action
|
||||
{
|
||||
public SharedBattleInfo SharedBattleInfo;
|
||||
|
|
@ -31,6 +33,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
friendsInOwnerSight = AIUtils.FindFriendsInSightDistance(_owner),
|
||||
target = SharedBattleInfo.Value.theChosenOneId
|
||||
});
|
||||
// DebugUtil.LogError("AI :{0} 发送了召唤视野内友军事件,目标是:{1}", _owner.GetID(), SharedBattleInfo.Value.theChosenOneId);
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
return TaskStatus.Failure;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Unit;
|
||||
using UnityEngine;
|
||||
using Gameplay.AI;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
|
|
@ -28,9 +27,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
waitTime = SharedBattleInfo.Value.PatrolInfos[SharedBattleInfo.Value.PartolPointIndex].waitTime;
|
||||
waitDuration = waitTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
// The task is done waiting if the time waitDuration has elapsed since the task was started.
|
||||
|
|
|
|||
|
|
@ -648,20 +648,29 @@ namespace Gameplay.Unit
|
|||
{
|
||||
}
|
||||
|
||||
public void MoveAway(GameUnit unit)
|
||||
public bool MoveAway(GameUnit unit)
|
||||
{
|
||||
if (unit == null) return;
|
||||
if (unit == null) return false;
|
||||
Vector2Int targetPos;
|
||||
var map = LevelManager.Instance.CurrentLevel.Map;
|
||||
if (map == null) return false;
|
||||
var mapData = map.MapData;
|
||||
if (mapData == null) return false;
|
||||
map.WorldPosition2BlockPosition(unit.Node.GetPosition(), out targetPos);
|
||||
var selfPos = map.TGSCellIndex2BlockPosition(transData.cellIndex);
|
||||
selfPos.x = Math.Clamp((selfPos.x - targetPos.x) > 0 ? selfPos.x + 1 : selfPos.x - 1, 0, map.MapData.Height - 1);
|
||||
selfPos.y = Math.Clamp((selfPos.y - targetPos.y) > 0 ? selfPos.y + 1 : selfPos.y - 1, 0, map.MapData.Width - 1);
|
||||
|
||||
var index = map.BlockPosition2TGSCellIndex(selfPos);
|
||||
var blockData = map.MapData.GetBlockData(index).GetTerrainTypeProperty();
|
||||
if(blockData ==null) return false;
|
||||
// 保证后退格子有效
|
||||
if(map.MapData.GetBlockData(index).GetTerrainTypeProperty().selectable)
|
||||
if (blockData.selectable)
|
||||
{
|
||||
MoveTo(map.BlockPosition2TGSCellIndex(selfPos), true);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void MoveTo(GameUnit unit)
|
||||
|
|
|
|||
|
|
@ -33,25 +33,22 @@ MonoBehaviour:
|
|||
Chain Trigger","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(16.2412872,520.2404)"},"ID":20,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTSendChainCall","NodeData":{"Offset":"(183.150192,511.999725)"},"ID":21,"Name":"BT
|
||||
Send Chain Call","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-220.0161,201.977249)"},"ID":22,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBehavioralTrigger","NodeData":{"Offset":"(-65.82873,282.6978)"},"ID":23,"Name":"BT
|
||||
Behavioral Trigger","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveTo","NodeData":{"Offset":"(68.87425,279.4636)"},"ID":24,"Name":"BT
|
||||
Move To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(187.5299,182.307663)"},"ID":25,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTFallBackIntensifyAI","NodeData":{"Offset":"(-206.7258,150.0616)"},"ID":26,"Name":"BT
|
||||
Fall Back Intensify AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBeingAttacked","NodeData":{"Offset":"(-96.52779,245.833344)"},"ID":27,"Name":"BT
|
||||
Being Attacked","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}},"Boolean_isBeingAttacked":false},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveAway","NodeData":{"Offset":"(-12.3610706,353.472229)"},"ID":28,"Name":"BT
|
||||
Move Away","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(66.25058,448.333984)"},"ID":29,"Name":"Idle","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(432.352173,187.717072)"},"ID":30,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTFallBackAI","NodeData":{"Offset":"(-90.9525146,165.148987)"},"ID":31,"Name":"BT
|
||||
Fall Back AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBeingAttacked","NodeData":{"Offset":"(5.87202263,252.1221)"},"ID":32,"Name":"BT
|
||||
Being Attacked","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}},"Boolean_isBeingAttacked":false},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveAway","NodeData":{"Offset":"(94.99995,336.25)"},"ID":33,"Name":"BT
|
||||
Move Away","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(188.125,430)"},"ID":34,"Name":"Idle","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(913.214539,214.582657)"},"ID":35,"Name":"Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBasicAI","NodeData":{"Offset":"(-133.994186,176.258942)"},"ID":36,"Name":"BT
|
||||
Basic AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(113.974785,169.93251)"},"ID":37,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-181.1063,144.5812)"},"ID":38,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTWithinSight","NodeData":{"Offset":"(-74.29743,179.094315)"},"ID":39,"Name":"BT
|
||||
Within Sight","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveTo","NodeData":{"Offset":"(42.1891174,182.105179)"},"ID":40,"Name":"BT
|
||||
Move To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(91.40203,204.546509)"},"ID":41,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveToBornPosition","NodeData":{"Offset":"(-135.7143,361.428528)"},"ID":42,"Name":"BT
|
||||
Move To Born Position","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(153.360779,209.639236)"},"ID":43,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTBeginPatrol","NodeData":{"Offset":"(-115.262772,152.146027)"},"ID":44,"Name":"BT
|
||||
Begin Patrol","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTWait","NodeData":{"Offset":"(4.930951,149.435211)"},"ID":45,"Name":"BT
|
||||
Wait","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(113.01944,153.541183)"},"ID":46,"Name":"Idle","Instant":true}]}]}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1544.63989,164.145813)"},"ID":47,"Name":"Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTOutflankAI","NodeData":{"Offset":"(-235.951584,205.394287)"},"ID":48,"Name":"BT
|
||||
Outflank AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(1.84604836,200)"},"ID":49,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-80,140)"},"ID":50,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTWithinSight","NodeData":{"Offset":"(-177.201324,135.280273)"},"ID":51,"Name":"BT
|
||||
Within Sight","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BTMoveAroundTo","NodeData":{"Offset":"(-9.982029,146.914551)"},"ID":52,"Name":"BT
|
||||
Move Around To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}},"EMoveDirectionMoveDirection":"Clockwise"},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(120.713676,150.000092)"},"ID":53,"Name":"Idle","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(256.249664,170.000046)"},"ID":54,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveToBornPosition","NodeData":{"Offset":"(-140,360)"},"ID":55,"Name":"BT
|
||||
Move To Born Position","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(150,210)"},"ID":56,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTBeginPatrol","NodeData":{"Offset":"(-120,150)"},"ID":57,"Name":"BT
|
||||
Begin Patrol","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTWait","NodeData":{"Offset":"(0,150)"},"ID":58,"Name":"BT
|
||||
Wait","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(110,150)"},"ID":59,"Name":"Idle","Instant":true}]}]}]}]}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(178.075836,160.9367)"},"ID":60,"Name":"Idle","Instant":true}]},"Variables":[{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}]}'
|
||||
Move To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(265.006226,182.307663)"},"ID":25,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTFallBackAI","NodeData":{"Offset":"(-225.229767,152.529572)"},"ID":26,"Name":"BT
|
||||
Fall Back AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBeingAttacked","NodeData":{"Offset":"(-96.52779,245.833344)"},"ID":27,"Name":"BT
|
||||
Being Attacked","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveAway","NodeData":{"Offset":"(-12.3610706,353.472229)"},"ID":28,"Name":"BT
|
||||
Move Away","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(66.25058,448.333984)"},"ID":29,"Name":"Idle","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(680.7856,214.582657)"},"ID":30,"Name":"Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTBasicAI","NodeData":{"Offset":"(-133.994186,176.258942)"},"ID":31,"Name":"BT
|
||||
Basic AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(113.974785,169.93251)"},"ID":32,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-181.1063,144.5812)"},"ID":33,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTWithinSight","NodeData":{"Offset":"(-74.29743,179.094315)"},"ID":34,"Name":"BT
|
||||
Within Sight","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveTo","NodeData":{"Offset":"(42.1891174,182.105179)"},"ID":35,"Name":"BT
|
||||
Move To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(91.40203,204.546509)"},"ID":36,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveToBornPosition","NodeData":{"Offset":"(-135.7143,361.428528)"},"ID":37,"Name":"BT
|
||||
Move To Born Position","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(153.360779,209.639236)"},"ID":38,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTBeginPatrol","NodeData":{"Offset":"(-115.262772,152.146027)"},"ID":39,"Name":"BT
|
||||
Begin Patrol","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTWait","NodeData":{"Offset":"(4.930951,149.435211)"},"ID":40,"Name":"BT
|
||||
Wait","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(113.01944,153.541183)"},"ID":41,"Name":"Idle","Instant":true}]}]}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1389.68774,164.145813)"},"ID":42,"Name":"Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTOutflankAI","NodeData":{"Offset":"(-235.951584,205.394287)"},"ID":43,"Name":"BT
|
||||
Outflank AI","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(1.84604836,200)"},"ID":44,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-80,140)"},"ID":45,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Conditional.BTWithinSight","NodeData":{"Offset":"(-177.201324,135.280273)"},"ID":46,"Name":"BT
|
||||
Within Sight","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BTMoveAroundTo","NodeData":{"Offset":"(-9.982029,146.914551)"},"ID":47,"Name":"BT
|
||||
Move Around To","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}},"EMoveDirectionMoveDirection":"Clockwise"},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(120.713676,150.000092)"},"ID":48,"Name":"Idle","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(256.249664,170.000046)"},"ID":49,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTMoveToBornPosition","NodeData":{"Offset":"(-140,360)"},"ID":50,"Name":"BT
|
||||
Move To Born Position","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(150,210)"},"ID":51,"Name":"Sequence","Instant":true,"AbortTypeabortType":"Both","Children":[{"Type":"Code.Scripts.Gameplay.BT.Task.BTBeginPatrol","NodeData":{"Offset":"(-120,150)"},"ID":52,"Name":"BT
|
||||
Begin Patrol","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"Code.Scripts.Gameplay.BT.Task.BTWait","NodeData":{"Offset":"(0,150)"},"ID":53,"Name":"BT
|
||||
Wait","Instant":true,"SharedBattleInfoSharedBattleInfo":{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(110,150)"},"ID":54,"Name":"Idle","Instant":true}]}]}]}]}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Idle","NodeData":{"Offset":"(178.075836,160.9367)"},"ID":55,"Name":"Idle","Instant":true}]},"Variables":[{"Type":"Gameplay.BT.Variables.SharedBattleInfo","Name":"battleInfo","IsShared":true,"BattleInfomValue":{"UInt32ownerId":0,"UInt32theChosenOneId":0,"AITypeAIName":"BasicAI","AttachAITypeAttachAIName":"None","List`1PatrolInfos":[],"Int32PartolPointIndex":0,"List`1groupInfo":[],"BooleanAutoFight":true}}]}'
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
|
|
|
|||
Loading…
Reference in New Issue