[Bug 1000283] 补提 AI逻辑bug
parent
5e899e2b60
commit
fa7fceb55c
|
|
@ -146,6 +146,8 @@
|
|||
INFIGHT_SKILL_ACTON_UNIT, //技能释放时作用的unit
|
||||
|
||||
INFIGHT_UNIT_VISIBLE_CHANGE, // 单位可见性改变
|
||||
|
||||
INFIGHT_GET_DAMAGED_FOR_AI, //发送伤害 AI使用
|
||||
|
||||
//--------- AI ------------
|
||||
INFIGHT_CHARACTER_AI_CHAIN, //连锁 AI索敌时发送
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED, OnDamaged);
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, OnDamaged);
|
||||
_isRegistered = true;
|
||||
_isBeingAttacked = false;
|
||||
}
|
||||
|
|
@ -69,7 +69,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
{
|
||||
if (_isBeingAttacked)
|
||||
{
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED, OnDamaged);
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, OnDamaged);
|
||||
_isRegistered = false;
|
||||
}
|
||||
_isBeingAttacked = false;
|
||||
|
|
@ -77,7 +77,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
public override void OnBehaviorComplete()
|
||||
{
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED, OnDamaged);
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, OnDamaged);
|
||||
_isBeingAttacked = false;
|
||||
_isRegistered = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
{
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED,
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI,
|
||||
OnDamaged);
|
||||
_isRegistered = true;
|
||||
_isBeingAttacked = false;
|
||||
|
|
@ -45,7 +45,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
_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()}");
|
||||
DebugUtil.LogG($"BT harmed by: {data.sender?.GetID()} ,But Target is :{_target.GetID()}, owner: {_owner?.GetID()}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -56,7 +56,9 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
if (_isBeingAttacked || _owner.statusData.isAttackActive)
|
||||
{
|
||||
if (SharedBattleInfo.Value.theChosenOneId != Constants.INVALID_UINT_ID)
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
|
||||
if (_owner != null && _level != null
|
||||
|
|
@ -84,11 +86,11 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
if (_owner.controlData.followUnit != null && _owner.statusData.isAttackActive)
|
||||
/*if (_owner.controlData.followUnit != null && _owner.statusData.isAttackActive)
|
||||
{
|
||||
SharedBattleInfo.Value.theChosenOneId = _owner.controlData.followUnit.GetID();
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
return TaskStatus.Running;
|
||||
|
|
@ -98,7 +100,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
{
|
||||
if (_isBeingAttacked)
|
||||
{
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED,
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI,
|
||||
OnDamaged);
|
||||
_isRegistered = false;
|
||||
}
|
||||
|
|
@ -106,7 +108,7 @@ namespace Code.Scripts.Gameplay.BT.Conditional
|
|||
|
||||
public override void OnBehaviorComplete()
|
||||
{
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED,
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI,
|
||||
OnDamaged);
|
||||
_isRegistered = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,7 @@ using Framework;
|
|||
using Gameplay.AI;
|
||||
using Gameplay.BT.Variables;
|
||||
using Gameplay.Character;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Unit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Scripts.Gameplay.BT.Task
|
||||
{
|
||||
|
|
@ -25,7 +23,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
{
|
||||
if (!_isRegistered)
|
||||
{
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED,
|
||||
EventManager.Instance.Register<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI,
|
||||
OnDamaged);
|
||||
_isRegistered = true;
|
||||
_isBeingAttacked = false;
|
||||
|
|
@ -70,11 +68,10 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
var target = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.theChosenOneId);
|
||||
if (target != null)
|
||||
AIUtils.CheckAndMove(_owner, target.transData.cellIndex);
|
||||
//DebugUtil.LogG($"BT move to update success, owner: {_owner?.GetID()}, target: {SharedBattleInfo.Value.theChosenOneId}");
|
||||
}
|
||||
}
|
||||
|
||||
if (_owner?.controlData.targetEnemy == null && _owner?.controlData.followUnit == null)
|
||||
if (_owner?.controlData.targetEnemy == null/* && _owner?.controlData.followUnit == null*/)
|
||||
{
|
||||
_lastTarget = Constants.INVALID_UINT_ID;
|
||||
}
|
||||
|
|
@ -90,7 +87,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
{
|
||||
if (_isBeingAttacked)
|
||||
{
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED,
|
||||
EventManager.Instance.Unregister<EventDataGetDamaged>(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI,
|
||||
OnDamaged);
|
||||
_isRegistered = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -529,17 +529,20 @@ namespace Gameplay.Unit
|
|||
bool isCritical,
|
||||
bool ignoreShield)
|
||||
{
|
||||
var data = ObjPoolManager.instance.Get<EventDataGetDamaged>();
|
||||
data.sender = sender;
|
||||
data.owner = this;
|
||||
data.damage = realDamage;
|
||||
data.isCritical = isCritical;
|
||||
if (!PerformanceManager.instance.data.disableFloatDamage)
|
||||
{
|
||||
var data = ObjPoolManager.instance.Get<EventDataGetDamaged>();
|
||||
data.sender = sender;
|
||||
data.owner = this;
|
||||
data.damage = realDamage;
|
||||
data.isCritical = isCritical;
|
||||
EventManager.Instance.Send(EventManager.EventName.INFIGHT_GET_DAMAGED, data);
|
||||
ObjPoolManager.instance.Return(data);
|
||||
}
|
||||
|
||||
// 给AI发送受伤事件
|
||||
EventManager.Instance.Send(EventManager.EventName.INFIGHT_GET_DAMAGED_FOR_AI, data);
|
||||
|
||||
ObjPoolManager.instance.Return(data);
|
||||
|
||||
if (buffManager != null)
|
||||
{
|
||||
buffManager.TriggerOnTakeDamage();
|
||||
|
|
|
|||
Loading…
Reference in New Issue