装备校验链/快捷栏/公会/好友情侣/交易仓库五项差距修复(增量 129)

- 装备校验:can_equip 按 CanEquipNow→FindEquipCell→EquipItem 精确重排,
  新增 find_equip_cell() 1:1 复刻(RING/UNIQUE 占用翻转、COSTUME/BELT/DS),
  帝国 antiflag 降级为 tooltip 提示,LIMIT_PCBANG/REAL_TIME* 语义与倒计时文案
- 快捷栏:死亡全槽禁用+激活守卫、变身(affect 220)技能置灰、
  物品槽失配置灰(服务器回收/换武器后刷新)
- 公会:GUILD_AUTH_* 权限位门控踢人/公告/技能升级,/gskillup、
  被宣战应答弹窗(/war·/nowar)、资金存取行(40250 服务端已禁用仍保留 1:1)
- 好友/情侣:messenger 三固定组(好友/公会/情侣),lover_login/logout/
  near/far/divorce 命令事件→在线/在身边状态与离婚隐藏
- 交易/仓库:ExchangeState.last_notice(ALREADY/LESS_GOLD)结束浮层提示;
  仓库改密 /safebox_change_password 三段输入;关窗补 /safebox_close·/mall_close;
  仓库金钱经核实 40250 无 wire 协议,UI 定界只读
- app_flow:重连时 guild_marks_ready 重复连接加 is_connected 守卫
- 相机 look_at 零向量守卫(首帧/传送落点)
- 测试:equip/love/guild 断言更新,79 项中 78 绿(game_camera_test 为
  HEAD 既有失败);真服冒烟 LIVE_SMOKE PASS(192.168.21.203 全链路)
- docs/CLIENT-GAP.md 同步增量 129

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kUFvQGYusuY3dkfGitmAe
This commit is contained in:
shenlei
2026-09-07 21:43:30 +09:00
co-authored by Claude Code
parent 61272b75e9
commit 8092ff44e2
25 changed files with 1067 additions and 134 deletions
+13 -3
View File
@@ -17,6 +17,9 @@ class FakeClient extends Node:
func get_guild() -> Dictionary: return guild
func get_guild_members() -> Array: return members
func get_guild_grades() -> Array: return grades
func get_main_pid() -> int: return 2 # Newbiegrade 3auth 0 → 无踢人权)
func guild_deposit_money(v: int) -> bool: calls.append(["deposit", v]); return true
func guild_withdraw_money(v: int) -> bool: calls.append(["withdraw", v]); return true
func refine(pos, type) -> bool: calls.append(["refine", pos, type]); return true
var _fail := 0
@@ -56,10 +59,17 @@ func _run() -> void:
]
fc.guild_changed.emit()
_ck(gu._info.text.contains("Dragons") and gu._info.text.contains("Lv.12"), "公会信息行")
_ck(gu._pages[0].get_child_count() == 2, "2 成员行")
# 成员页 = 1 资金行 + 2 成员行(成员行是 HBoxLabel [+ 踢出按钮]
var rows: Array = gu._pages[0].get_children()
_ck(rows.size() == 3, "资金行 + 2 个成员行")
_ck(String((rows[0].get_child(0) as Label).text).contains("500000"), "资金行显示公会资金")
var member_labels: Array[String] = []
for r in rows.slice(1):
member_labels.append(String((r.get_child(0) as Label).text))
_ck(r.get_child_count() == 1, "无 REMOVE_MEMBER 权限 -> 无踢出按钮")
# 会长排前(grade 1 < grade 3
_ck(String((gu._pages[0].get_child(0) as Label).text).begins_with("Master"), "按 grade 排序")
_ck(String((gu._pages[0].get_child(0) as Label).text).contains("[会长]"), "grade 名解析")
_ck(member_labels[0].begins_with("Master"), "按 grade 排序")
_ck(member_labels[0].contains("[会长]"), "grade 名解析")
# --- 精炼对话框 ---
var ru: Node = RefineUI.new()