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 )