feat(client): 完成40250客户端核心功能1:1对齐与桥梁高度采样修复
- 桥梁与静态物体高度采样修复: - 严格对齐 40250 CMapOutdoor::GetHeight 与 CAttributeInstance::GetHeight - 解析 .mdatr 中的 AttributeHeight 网格,使用 is_in_triangle_2d 准确计算桥面多边形平面方程 - sample_height 查询邻近区块并返回 fMAX(fObjectHeight, fTerrainHeight),彻底解决走上桥面穿透掉入水底/河床的问题 - 新增 test_bridge_height_parity.gd 自动化对拍测试 - 40250 怪物击杀经验动效: - 1:1 实现 FLY_EXP(0) / FLY_HP / FLY_SP 粒子轨迹与爆炸吸附 - 40250 客户端全系统功能对齐(Batches 1-31): - 包含公会、交易、骑乘、变身、钓鱼、采矿、商城、信件、结婚、地牢等 134 套对拍系统与自动化回归测试 - 文档沉淀: - 新增 docs/CLIENT-PARITY-AUDIT-AND-FIX-GUIDE.md 客户端对拍缺陷发现与修复工程指南
This commit is contained in:
@@ -14,6 +14,7 @@ class FakeClient extends Node:
|
||||
var entities := {1000: {"kind": 0}, 2000: {"kind": 2}}
|
||||
var skills := [
|
||||
{"id": 1, "level": 5, "master": 0},
|
||||
{"id": 2, "level": 5, "master": 0},
|
||||
{"id": 46, "level": 10, "master": 0},
|
||||
{"id": 109, "level": 1, "master": 0},
|
||||
]
|
||||
@@ -116,9 +117,11 @@ func _run() -> void:
|
||||
_reset(g); g.mounting = true # 无骑乘术(skills 里 109 只有 level 1 / grade 0)
|
||||
_ck(g.can_use_skill().code == "NO_RIDING_SKILL", "(b) 骑乘缺骑乘术 -> NO_RIDING_SKILL")
|
||||
_reset(g); g.mounting = true
|
||||
fc.skills[2]["level"] = 20 # 骑乘术 109 练满
|
||||
for sk in fc.skills:
|
||||
if sk["id"] == 109: sk["level"] = 20
|
||||
_ck(g.can_use_skill().ok, "(b) 骑乘术 lv20 -> ok")
|
||||
fc.skills[2]["level"] = 1
|
||||
for sk in fc.skills:
|
||||
if sk["id"] == 109: sk["level"] = 1
|
||||
# 无主角
|
||||
_reset(g); fc.main = 0
|
||||
_ck(g.can_use_skill().code == "CANNOT_ACT", "(b) 无主角 -> CANNOT_ACT")
|
||||
@@ -223,6 +226,8 @@ func _run() -> void:
|
||||
_ck(rt.ok and rt.target_vid == 2000, "(d) 有可攻击目标 -> ok, target=2000")
|
||||
fc.target = {"vid": 0}
|
||||
_ck(g.use_skill(1).code == "NEED_TARGET", "(d) 无目标 -> NEED_TARGET")
|
||||
var r2 := g.use_skill(2)
|
||||
_ck(r2.ok and r2.target_vid == 0, "(d) skill 2 无目标可自由施放 -> ok, target=0")
|
||||
fc.target = {"vid": 2000}; fc.entities[2000] = {"kind": 2, "in_safe": true}
|
||||
_ck(g.use_skill(1).code == "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA",
|
||||
"(d) 目标在安全区 -> CANNOT_ATTACK_ENEMY_IN_SAFE_AREA")
|
||||
|
||||
Reference in New Issue
Block a user