diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Boomerang.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Boomerang.asset
index 9874de88..8591b60a 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Boomerang.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Boomerang.asset
@@ -17,8 +17,6 @@ MonoBehaviour:
BossPhaseAbilityGate \u914D\u7F6E"
attackSequence: []
cooldown: 4
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_FanCombo.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_FanCombo.asset
index e94519cb..731e98aa 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_FanCombo.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_FanCombo.asset
@@ -17,8 +17,6 @@ MonoBehaviour:
BossPhaseAbilityGate \u914D\u7F6E"
attackSequence: []
cooldown: 2.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Intro.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Intro.asset
index 78c68fc7..551bf3cb 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Intro.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_Intro.asset
@@ -16,8 +16,6 @@ MonoBehaviour:
designNote: "\u5165\u573A\u6F14\u51FA\uFF0C\u4E0D\u8FDB\u9009\u62DB\u6C60"
attackSequence: []
cooldown: 0
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoLarge.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoLarge.asset
index 60bc52e4..d95919d6 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoLarge.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoLarge.asset
@@ -17,8 +17,6 @@ MonoBehaviour:
BossPhaseAbilityGate \u914D\u7F6E"
attackSequence: []
cooldown: 6
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoSmall.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoSmall.asset
index f4ffb266..3a1ce704 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoSmall.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_TornadoSmall.asset
@@ -17,8 +17,6 @@ MonoBehaviour:
BossPhaseAbilityGate \u914D\u7F6E"
attackSequence: []
cooldown: 3.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_WindStone.asset b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_WindStone.asset
index d7e32232..48fb3730 100644
--- a/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_WindStone.asset
+++ b/Assets/_Game/Data/Enemies/ChaoFeng/Abilities/ABL_ChaoFeng_WindStone.asset
@@ -17,8 +17,6 @@ MonoBehaviour:
BossPhaseAbilityGate \u914D\u7F6E"
attackSequence: []
cooldown: 3
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
diff --git a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Chase.asset b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Chase.asset
index 459d2715..0034fd3e 100644
--- a/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Chase.asset
+++ b/Assets/_Game/Data/Enemies/E001/Abilities/ABL_E001_Chase.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E001_Chase
m_EditorClassIdentifier:
abilityId: e001_chase
+ designNote:
attackSequence: []
cooldown: 1
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
startClip:
_FadeDuration: 0.25
_Speed: 1
@@ -53,6 +56,7 @@ MonoBehaviour:
_Clip: {fileID: 7400000, guid: 9f0fea347ba7eb347b0f71b423832808, type: 2}
_NormalizedStartTime: NaN
dashSpeed: 9
+ maxDashDuration: 2
references:
version: 2
RefIds: []
diff --git a/Assets/_Game/Data/Enemies/E002/Abilities/ABL_E002_CeilingStrike.asset b/Assets/_Game/Data/Enemies/E002/Abilities/ABL_E002_CeilingStrike.asset
index 4454c564..ff9102d4 100644
--- a/Assets/_Game/Data/Enemies/E002/Abilities/ABL_E002_CeilingStrike.asset
+++ b/Assets/_Game/Data/Enemies/E002/Abilities/ABL_E002_CeilingStrike.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E002_CeilingStrike
m_EditorClassIdentifier:
abilityId: e002_ceiling_strike
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
strikeClip:
_FadeDuration: 0.25
_Speed: 1
diff --git a/Assets/_Game/Data/Enemies/E003/Abilities/ABL_E003_Fall.asset b/Assets/_Game/Data/Enemies/E003/Abilities/ABL_E003_Fall.asset
index 603a8511..5547f466 100644
--- a/Assets/_Game/Data/Enemies/E003/Abilities/ABL_E003_Fall.asset
+++ b/Assets/_Game/Data/Enemies/E003/Abilities/ABL_E003_Fall.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E003_Fall
m_EditorClassIdentifier:
abilityId: e003_fall
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
fallLoopClip:
_FadeDuration: 0.25
_Speed: 1
diff --git a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Acid.asset b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Acid.asset
index faba0db1..eb4203ad 100644
--- a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Acid.asset
+++ b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Acid.asset
@@ -13,11 +13,10 @@ MonoBehaviour:
m_Name: ABL_E004_Acid
m_EditorClassIdentifier:
abilityId: e004_acid
+ designNote:
attackSequence:
- {fileID: 11400000, guid: b0bce0e3cbc007842a69b60d6cf12792, type: 2}
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
@@ -26,3 +25,7 @@ MonoBehaviour:
requiresGrounded: 1
exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
diff --git a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Appear.asset b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Appear.asset
index 2570f0a8..b982b27d 100644
--- a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Appear.asset
+++ b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Appear.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E004_Appear
m_EditorClassIdentifier:
abilityId: e004_appear
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
appearClip:
_FadeDuration: 0.25
_Speed: 1
diff --git a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Bite.asset b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Bite.asset
index 15de9e87..81af8369 100644
--- a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Bite.asset
+++ b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Bite.asset
@@ -13,10 +13,9 @@ MonoBehaviour:
m_Name: ABL_E004_Bite
m_EditorClassIdentifier:
abilityId: e004_bite
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
@@ -25,3 +24,7 @@ MonoBehaviour:
requiresGrounded: 1
exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
diff --git a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Flip.asset b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Flip.asset
index 0bd7b5ee..80c3ffce 100644
--- a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Flip.asset
+++ b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_Flip.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E004_Flip
m_EditorClassIdentifier:
abilityId: e004_flip
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
faceClip:
_FadeDuration: 0.25
_Speed: 1
diff --git a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_HeadSlam.asset b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_HeadSlam.asset
index 31e26906..dae7721e 100644
--- a/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_HeadSlam.asset
+++ b/Assets/_Game/Data/Enemies/E004/Abilities/ABL_E004_HeadSlam.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E004_HeadSlam
m_EditorClassIdentifier:
abilityId: e004_headslam
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
startClip:
_FadeDuration: 0.25
_Speed: 1
diff --git a/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Acid.asset b/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Acid.asset
index 62aaffc3..24a8c5d2 100644
--- a/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Acid.asset
+++ b/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Acid.asset
@@ -13,12 +13,11 @@ MonoBehaviour:
m_Name: ABL_E005_Acid
m_EditorClassIdentifier:
abilityId: e005_acid
+ designNote:
attackSequence:
- {fileID: 11400000, guid: cabdf15fd8ee5c8449c6236751ada4f5, type: 2}
- {fileID: 11400000, guid: 800b72bef8e5be446aa56ec4993ba21d, type: 2}
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
@@ -27,3 +26,7 @@ MonoBehaviour:
requiresGrounded: 1
exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
diff --git a/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Bite.asset b/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Bite.asset
index b6282819..5732d58a 100644
--- a/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Bite.asset
+++ b/Assets/_Game/Data/Enemies/E005/Abilities/ABL_E005_Bite.asset
@@ -13,10 +13,9 @@ MonoBehaviour:
m_Name: ABL_E005_Bite
m_EditorClassIdentifier:
abilityId: e005_bite
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
@@ -25,3 +24,7 @@ MonoBehaviour:
requiresGrounded: 1
exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
diff --git a/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Chase.asset b/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Chase.asset
index 7a8732ce..50422f0a 100644
--- a/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Chase.asset
+++ b/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Chase.asset
@@ -13,18 +13,21 @@ MonoBehaviour:
m_Name: ABL_E006_Chase
m_EditorClassIdentifier:
abilityId: e006_chase
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
preferredMaxRange: 5
requiresLineOfSight: 1
requiresGrounded: 1
- exclusionGroup:
+ exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
startClip:
_FadeDuration: 0.25
_Speed: 1
@@ -53,6 +56,7 @@ MonoBehaviour:
_Clip: {fileID: 0}
_NormalizedStartTime: NaN
dashSpeed: 0
+ maxDashDuration: 2
references:
version: 2
RefIds: []
diff --git a/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Leap.asset b/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Leap.asset
index bbdba211..b5ecee8d 100644
--- a/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Leap.asset
+++ b/Assets/_Game/Data/Enemies/E006/Abilities/ABL_E006_Leap.asset
@@ -13,10 +13,9 @@ MonoBehaviour:
m_Name: ABL_E006_Leap
m_EditorClassIdentifier:
abilityId: e006_leap
+ designNote:
attackSequence: []
cooldown: 1.5
- telegraphVfxKey:
- telegraphDuration: 0
interruptOnHurt: 1
interruptOnStagger: 1
preferredMinRange: 0
@@ -25,3 +24,7 @@ MonoBehaviour:
requiresGrounded: 1
exclusionGroup:
priority: 0
+ category: 0
+ weight: 1
+ rangeRadius: 0
+ rangeOffset: {x: 0, y: 0}
diff --git a/Assets/_Game/Scripts/Enemies/Abilities/AbilityRunState.cs b/Assets/_Game/Scripts/Enemies/Abilities/AbilityRunState.cs
index 710241c5..fdfcceb8 100644
--- a/Assets/_Game/Scripts/Enemies/Abilities/AbilityRunState.cs
+++ b/Assets/_Game/Scripts/Enemies/Abilities/AbilityRunState.cs
@@ -2,11 +2,12 @@ namespace BaseGames.Enemies.Abilities
{
///
/// 能力执行的阶段枚举(架构 07_EnemyModule §8)。
- /// 用于 BD/Animator/UI 查询能力当前在哪个阶段(telegraph/出招/恢复)。
+ /// 用于 AI 决策层 / 动画 / UI 查询能力当前在哪个阶段(预警 / 出招 / 恢复)。
///
public enum AbilityRunState
{
Idle,
+ /// 预警:由能力自身在协程里显式置位(如 BlinkStrikeAbility 的现身闪光)。
Telegraph,
Windup,
Active,
@@ -14,7 +15,7 @@ namespace BaseGames.Enemies.Abilities
Interrupted
}
- /// 能力中断原因。供 BD 判断是否需要重新调度。
+ /// 能力中断原因。供 AI 决策层判断是否需要重新调度。
public enum InterruptReason
{
ExternalRequest,
diff --git a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilityBase.cs b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilityBase.cs
index 9961fe2b..814cb5be 100644
--- a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilityBase.cs
+++ b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilityBase.cs
@@ -1,8 +1,6 @@
using System.Collections;
using UnityEngine;
using Animancer;
-using BaseGames.Core;
-using BaseGames.Core.Pool;
namespace BaseGames.Enemies.Abilities
{
@@ -114,13 +112,9 @@ namespace BaseGames.Enemies.Abilities
private IEnumerator RunInternal()
{
_isRunning = true;
- Phase = AbilityRunState.Telegraph;
+ Phase = AbilityRunState.Windup;
try
{
- if (_config != null && _config.telegraphDuration > 0f)
- yield return TelegraphRoutine();
-
- Phase = AbilityRunState.Windup;
yield return ExecuteCoroutine();
Phase = AbilityRunState.Recovery;
}
@@ -137,17 +131,6 @@ namespace BaseGames.Enemies.Abilities
/// 子类实现:能力主体。可分多段、含 HitBox 激活/弹幕生成/物理推进等。
protected abstract IEnumerator ExecuteCoroutine();
- /// 预警阶段(默认生成 VFX 后等待 telegraphDuration)。子类可重写。
- protected virtual IEnumerator TelegraphRoutine()
- {
- if (!string.IsNullOrEmpty(_config.telegraphVfxKey))
- {
- var pool = ServiceLocator.GetOrDefault();
- pool?.Spawn(_config.telegraphVfxKey, _transform.position, Quaternion.identity);
- }
- yield return EnemyAbilityWaits.Get(_config.telegraphDuration);
- }
-
/// 能力结束钩子(被中断或正常结束都会调用)。
protected virtual void OnAbilityEnded() { }
diff --git a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
index 7d03fab2..5a0fff81 100644
--- a/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
+++ b/Assets/_Game/Scripts/Enemies/Abilities/EnemyAbilitySO.cs
@@ -6,7 +6,8 @@ namespace BaseGames.Enemies.Abilities
{
///
/// 能力配置包(架构 07_EnemyModule §8.2)。
- /// 一个能力 = 一组攻击段 + 公共参数(冷却/预警/中断规则)。
+ /// 一个能力 = 一组攻击段 + 公共参数(冷却/中断规则)。
+ /// 预警不在此配置:预警的载体是动画 clip 本身(姿态在动画里,音效与特效挂动画事件)。
/// 由对应 EnemyAbilityBase 子类组件读取并执行。
///
[CreateAssetMenu(menuName = "BaseGames/Enemies/Enemy Ability", fileName = "ABL_")]
@@ -27,11 +28,6 @@ namespace BaseGames.Enemies.Abilities
[Header("冷却(秒,从能力执行结束开始计)")]
[Min(0f)] public float cooldown = 1.5f;
- [Header("预警(Telegraph)")]
- [Tooltip("预警 VFX key(IObjectPoolService.Spawn 的池 key),为空则跳过")]
- public string telegraphVfxKey = "";
- [Min(0f)] public float telegraphDuration = 0f;
-
[Header("中断规则")]
[Tooltip("受击时是否打断能力(false=能力具霸体)")]
public bool interruptOnHurt = true;