45 lines
1.9 KiB
Go
45 lines
1.9 KiB
Go
package routers
|
||||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
"sync"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var _ = sync.Mutex{}
|
|||
|
|
var _ = context.Background
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
// 敌人血条的显示时机 —— SyncAddUnitState / SyncRemoveUnitState 推
|
|||
|
|
// UnitStateConfig.HideHp。
|
|||
|
|
// ⛑⛑ 与 GameRouter.EnemyWarning.cs(detectionState 那条)是两条完全不同的路,
|
|||
|
|
// 别再混为一谈。客户端判据在 EnemyHUDCtrl.lua:
|
|||
|
|
// · RefreshHpVisible(:551) 决定血条 —— 看 cfg.ShowHPBar(模板配置,
|
|||
|
|
// 服务端改不了)和 shouldShowHp 里的 UnitStateConfig.HideHp(我们能写)。
|
|||
|
|
// · detectionState 只在 :85 绑到 OnShowDetectionEffect,动的是潜行警戒条,
|
|||
|
|
// 跟血条无关。所以警戒状态机从 Idle 推到 Fight 血条也不会变。
|
|||
|
|
// 结论:想让血条"不打不显示、打了才显示",唯一 per-unit 且服务端可写的开关就是 HideHp。
|
|||
|
|
// 先例:GameRouter.HackerSummon.cs:341 用同一招关掉机械狗的敌人血条。
|
|||
|
|
//
|
|||
|
|
//
|
|||
|
|
// spawn 之后调用:SyncAddUnitState(68026128) 把血条收起。
|
|||
|
|
// 幂等 —— 已经挂着 HideHp 的单位不会再发一次。
|
|||
|
|
//
|
|||
|
|
func GameRouter_EnemyHpBar_HideLocalEnemyHpBarAsync(ctx context.Context, session *GameSession, uid uint64) any {
|
|||
|
|
// Router implementation for GameRouter_EnemyHpBar_HideLocalEnemyHpBarAsync
|
|||
|
|
var zero any; return zero
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func GameRouter_EnemyHpBar_ReassertHiddenHpBarAsync(ctx context.Context, session *GameSession, uid uint64) any {
|
|||
|
|
// Router implementation for GameRouter_EnemyHpBar_ReassertHiddenHpBarAsync
|
|||
|
|
var zero any; return zero
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
// 第一次命中时调用:SyncRemoveUnitState(68566559) 撤掉 HideHp,血条出现。
|
|||
|
|
// 只在 HpBarHidden 为真时发,之后自动变 no-op(不会每一下都刷包)。
|
|||
|
|
//
|
|||
|
|
func GameRouter_EnemyHpBar_RevealLocalEnemyHpBarAsync(ctx context.Context, session *GameSession, uid uint64) any {
|
|||
|
|
// Router implementation for GameRouter_EnemyHpBar_RevealLocalEnemyHpBarAsync
|
|||
|
|
var zero any; return zero
|
|||
|
|
}
|
|||
|
|
|