Files

72 lines
3.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package gameplay
//
// Protagonist traversal policy.
// All editable ids live in config/private-server.json under gameplay.webTraversal.
// This class only answers gameplay questions for the handlers.
//
type WebTraversal struct {
Settings WebTraversalSettings `json:"settings"`
MaleProtagonistId uint32 `json:"maleProtagonistId"`
FemaleProtagonistId uint32 `json:"femaleProtagonistId"`
FeiSuoBuff uint32 `json:"feiSuoBuff"`
ClientLifecycleBuffs4229938 []uint32 `json:"clientLifecycleBuffs4229938"`
ResidentBuildWebBuffs4229938 []uint32 `json:"residentBuildWebBuffs4229938"`
GrappleRearmDelayMs int32 `json:"grappleRearmDelayMs"`
ForbidStates []uint32 `json:"forbidStates"`
FeisuoAbilityLimitId uint32 `json:"feisuoAbilityLimitId"`
AssassinationAbilityLimitId uint32 `json:"assassinationAbilityLimitId"`
// 是否下发暗杀能力门。关掉即回滚(HUD 无暗杀提示)。
PushAssassinationAbilityGate bool `json:"pushAssassinationAbilityGate"`
KillingAbilityLimitId uint32 `json:"killingAbilityLimitId"`
KillingSpiritId uint32 `json:"killingSpiritId"`
// 是否下发璎珑跑酷门。关掉即回滚(回到只有基础爬墙跑/空中冲刺)。
PushKillingAbilityGate bool `json:"pushKillingAbilityGate"`
// 是否配置了任何「跑酷状态 → 门」映射。空字典时整个 handler 分支直接跳过(零开销)。
HasParkourStateGates bool `json:"hasParkourStateGates"`
// 跑酷门是否在离开状态时撤回。"onLeave" = 严格跟状态;其余(默认 "session")= 只发不撤。
// 见 gameplay.webTraversal.parkourStateGateRelease 的注释(瞬时态下 onLeave 会抖动到不可用)。
ReleaseParkourGatesOnLeave bool `json:"releaseParkourGatesOnLeave"`
// 飞索 + 暗杀两张能力门,一起通过 SyncPaokuLimitChange 下发。
AbilityLimitIds []uint32 `json:"abilityLimitIds"`
// 是否下发原生飞索能力门。关掉即回滚(回到只有 buff、没有 C 键白圈的状态)。
PushFeisuoAbilityGate bool `json:"pushFeisuoAbilityGate"`
//
// 是否回应蹲伏暗杀裁决(ReportCanAssassinateEnemies → SyncEnemyCanAssassinate)。
// 关掉即回滚到「HUD 没有暗杀提示」的状态。
//
AnswerCrouchAssassination bool `json:"answerCrouchAssassination"`
//
// ★ 主动播种 SyncEnemyCanAssassinate —— 不等客户端上报(硬规则 192)。
// 客户端的候选筛选是自举死锁:PreCheckCanAss 要求目标
// BattleDataModule.canAssassinate(0xB1) == true,而它只能由这条 S2C 写入;
// 这条 S2C 名义上又是 ReportCanAssassinateEnemies 的回应,上报却必须先过
// canAssassinate。不主动播种 ⇒ 循环永远启动不了。
//
PushAssassinationSeed bool `json:"pushAssassinationSeed"`
// 播种粗筛半径(米)。
AssassinationSeedRadiusMeters float32 `json:"assassinationSeedRadiusMeters"`
// 播种扫描间隔(毫秒)。
AssassinationSeedIntervalMs int32 `json:"assassinationSeedIntervalMs"`
// Resident build/web buffs, published only when the config keeps them on.
// These carry real damage bonuses but one of them is the only non-hidden entry in the
// whole capability set, which is what puts a permanent icon on the HUD.
ResidentBuildBuffs []uint32 `json:"residentBuildBuffs"`
// Capability buffs every controllable spirit gets, protagonists included.
// See gameplay.webTraversal.commonCapabilityBuffIds.
CommonCapabilityBuffIds []uint32 `json:"commonCapabilityBuffIds"`
InitialCapabilityBuffIds []uint32 `json:"initialCapabilityBuffIds"`
FemaleCapabilityBuffIds []uint32 `json:"femaleCapabilityBuffIds"`
}
const (
WebTraversal_SwingBuff4229938 uint32 = 52_853_761
WebTraversal_WallRushBuff4229938 uint32 = 52_853_762
WebTraversal_GrappleDiveDamageBuff4229938 uint32 = 52_959_114
WebTraversal_DefaultFeisuoAbilityLimitId uint32 = 3013
WebTraversal_DefaultAssassinationAbilityLimitId uint32 = 5051
WebTraversal_DefaultKillingAbilityLimitId uint32 = 3040
WebTraversal_DefaultKillingSpiritId uint32 = 15021040
)