fix(combat): 战斗逐项对齐 40250,修复移动 / 技能释放与武器挂点
- 连击类型由 combo_changed 驱动(SetComboSkillFlag,技能 122 等级) - 命中判定改为 .msa 刀尖 Z 圆柱 vs .msm 防御球(hit_collision.gd 逐行移植) - _register_hit 改为 map::insert 语义,修正命中上限 - 攻速同时缩放 GetAttackingElapsedTime 与攻击动作速率;按武器动作模式目录绑定攻击段 - 去掉本地连击超时,motion_bound 清命中表 / 连击段号 - __ProcessDataAttackSuccess:InsertDelay 硬直、physics_push.gd 击退 + GetBlendingPosition 同步、 命中特效、__HitGood / __HitGreate / __HitStone 受击动作链与抖动(ui/hit_reaction.gd) - ClassicSession::send_use_skill 不再夹带 CG_FLY_TARGETING - mac 前进 / 后退方向与技能释放修复;武器按职业骨骼挂到手上 - 新增 hit_collision / physics_push / hit_view / net_world_push / weapon_attach 测试; gpu_pose_bounds / race_motion_assembly 适配 damage 随机变体 - 文档:CLIENT-GAP.md、CLIENT-GAP-FIX.md §3.5 / §3.7 与 C.5 增量 130 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ft3kXpNdLbKEfg5uDLfqVF
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
extends SceneTree
|
||||
|
||||
const GameScene = preload("res://game_scene.gd")
|
||||
const UiManager = preload("res://ui/ui_manager.gd")
|
||||
|
||||
class FakeClient extends Node:
|
||||
var emotes := []
|
||||
@@ -73,7 +74,7 @@ func _key(code: Key, pressed := true, ctrl := false, meta := false) -> InputEven
|
||||
return event
|
||||
|
||||
func _init() -> void:
|
||||
_run()
|
||||
await _run()
|
||||
if _fail == 0:
|
||||
print("PASS: input_key_test (ClientVS22 desktop key map)")
|
||||
quit(0)
|
||||
@@ -143,3 +144,21 @@ func _run() -> void:
|
||||
gs._unhandled_input(_key(KEY_J, true, true))
|
||||
_ck(client.commands == ["/user_horse_ride", "/user_horse_back", "/unmount"],
|
||||
"Ctrl/Command horse commands follow reference")
|
||||
|
||||
# CWindowManager::RunKeyDown:只有 LockWindow(模态)或返回 True 的 ActiveWindow(输入框)
|
||||
# 截键;普通打开的窗口(技能窗 / 背包)不吞键,1-4 / F1-F4 照样落到 game.py 快捷栏。
|
||||
var ui_manager: CanvasLayer = UiManager.new()
|
||||
get_root().add_child(ui_manager)
|
||||
await process_frame
|
||||
gs.ui = ui_manager
|
||||
var skill_window := Panel.new()
|
||||
ui_manager.open(skill_window)
|
||||
qb.activated.clear()
|
||||
gs._unhandled_input(_key(KEY_2))
|
||||
gs._unhandled_input(_key(KEY_F2))
|
||||
_ck(qb.activated == [1, 5], "non-modal window open keeps number/F-key quick slots: %s" % [qb.activated])
|
||||
var confirm := Panel.new()
|
||||
ui_manager.open(confirm, true)
|
||||
gs._unhandled_input(_key(KEY_3))
|
||||
_ck(qb.activated == [1, 5], "modal lock window still swallows quick slot keys")
|
||||
gs.ui = null
|
||||
|
||||
Reference in New Issue
Block a user