audit: phase 0 tooling for file-by-file 40250 porting

- refroot.py: one reference-root resolver (MT_40250_SOURCE, then manifest)
  used by every audit script; missing tree or fingerprint input is an error
- port_map.py: per-function inventory of active 40250 units plus the
  40250 Python root, status/queue/init/show/check, 40250: tag scan
- manifest: fix 18 wrong reference paths (Python UI now points at the
  40250 Client/Eternexus/root, not the m2dev assets/root), drop 2 deleted
  implementation files, move 64 prose test entries to evidence.commands
- first port-map entry: PythonPlayerEventHandler.cpp
- roadmap replaced by a batch/unit queue

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-22 17:17:49 +09:00
co-authored by Claude Opus 5
parent 6a175ee293
commit 55f733fda6
16 changed files with 621 additions and 468 deletions
@@ -0,0 +1,96 @@
{
"reference": "UserInterface/PythonPlayerEventHandler.cpp",
"reference_sha256": "2ef7f3cbb7fb6e9c86815b39a6a85cd83bd793ef460c8e0d8c532e2e585927f5",
"priority": "P0",
"contracts": [
"movement.keyboard.motion"
],
"functions": {
"CPythonPlayerEventHandler::GetSingleton": {
"status": "N_A",
"note": "singleton/ctor/dtor plumbing; NetPlay is a scene node"
},
"CPythonPlayerEventHandler::~CPythonPlayerEventHandler": {
"status": "N_A",
"note": "singleton/ctor/dtor plumbing; NetPlay is a scene node"
},
"CPythonPlayerEventHandler::OnClearAffects": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnSetAffect": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnResetAffect": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnSyncing": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnWaiting": {
"status": "DIVERGENT",
"note": "reference fires only inside CInstanceBase::Transform() while IsWalking() and this frame's displacement <=1.0 (InstanceBase.cpp:1922-1930), 100ms throttle vs m_kPPosPrevWaiting; not ported. The old idle-standing resend (_tick_on_waiting) was removed 2026-09-22."
},
"CPythonPlayerEventHandler::OnMoving": {
"status": "PORTED",
"impl": [
"project/net_play.gd:_on_local_moved"
]
},
"CPythonPlayerEventHandler::OnMove": {
"status": "PORTED",
"impl": [
"project/net_play.gd:_on_local_moved"
],
"note": "first moved frame after _was_moving=false; resets the 300ms moving window"
},
"CPythonPlayerEventHandler::OnStop": {
"status": "PORTED",
"impl": [
"project/net_play.gd:_on_anim_state"
]
},
"CPythonPlayerEventHandler::OnWarp": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnAttack": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnUseSkill": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnUpdate": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnChangeShape": {
"status": "TODO"
},
"CPythonPlayerEventHandler::OnHit": {
"status": "TODO"
},
"CPythonPlayerEventHandler::FlushVictimList": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CPythonPlayerEventHandler": {
"status": "N_A",
"note": "singleton/ctor/dtor plumbing; NetPlay is a scene node"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::OnSetFlyTarget": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::OnShoot": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::Set": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::SetTarget": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::OnExplodingAtAnotherTarget": {
"status": "TODO"
},
"CPythonPlayerEventHandler::CNormalBowAttack_FlyEventHandler_AutoClear::OnExplodingAtTarget": {
"status": "TODO"
}
}
}