Files
mtgodot-poc/audit/port-map/UserInterface/PythonPlayerSkill.cpp.json
T
shenleiandClaude Opus 5.5 ff0983d3c8 2V3-a: walk with the keyboard through the ported player chain
PythonPlayer, PythonPlayerInput{,Keyboard,Mouse}, PythonPlayerEventHandler,
PythonPlayerSkill, PythonPlayerModule and GameType are verbatim copies; the
`player` stub module and the pending PythonPlayer/GameType stand-ins are gone.
Unported callees (CPythonSkill, CItemData, CItemManager, CPythonItem, ...) are
pending stubs. 64-bit fixes: emotion icon handles use Py_BuildPointer, and
PyDict_Next takes Py_ssize_t.

The actor did not move because GrannyUpdateModelMatrix passed the model matrix
through. Walk/run motions use constant root-motion extraction
(AccumulationFlags=AccumulationExtracted, LoopTranslation e.g. (0,-300,0) for
the warrior run, same as the .msa Accumulation). libgr2 now reads both fields
from TrackGroups[0], and the runtime moves by LoopTranslation over each
control's local-clock span, blended by control weight. VDA extraction is not
implemented.

port.login_flow presses DIK_UP; the actor walks more than 100 cm, and the fake
server parses CG packets and sees CG_MOVE FUNC_MOVE, then FUNC_WAIT at the new
position. port.login_live against the real server walked 132 cm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:41:31 +09:00

159 lines
5.0 KiB
JSON

{
"reference": "UserInterface/PythonPlayerSkill.cpp",
"reference_sha256": "6d09ecca17f5b4be9fa67b1bfd9303b5b0a362f4c029b901631846bedc7b0587",
"priority": "P1",
"contracts": [],
"functions": {
"CPythonPlayer::ClearAffects": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::ClearAffects"
]
},
"CPythonPlayer::SetAffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::SetAffect"
]
},
"CPythonPlayer::ResetAffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::ResetAffect"
]
},
"CPythonPlayer::FindSkillSlotIndexBySkillIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::FindSkillSlotIndexBySkillIndex"
]
},
"CPythonPlayer::ChangeCurrentSkillNumberOnly": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::ChangeCurrentSkillNumberOnly"
]
},
"CPythonPlayer::ClickSkillSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::ClickSkillSlot"
]
},
"CPythonPlayer::__CheckSkillUsable": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckSkillUsable"
]
},
"CPythonPlayer::__CheckShortArrow": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckShortArrow"
]
},
"CPythonPlayer::__CheckShortMana": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckShortMana"
]
},
"CPythonPlayer::__CheckShortLife": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckShortLife"
]
},
"CPythonPlayer::__CheckRestSkillCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckRestSkillCoolTime"
]
},
"CPythonPlayer::__CheckDashAffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckDashAffect"
]
},
"CPythonPlayer::__UseCurrentSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__UseCurrentSkill"
]
},
"CPythonPlayer::__GetSkillTargetRange": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__GetSkillTargetRange"
]
},
"CPythonPlayer::__ProcessEnemySkillTargetRange": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__ProcessEnemySkillTargetRange"
]
},
"CPythonPlayer::__CanUseSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CanUseSkill"
]
},
"CPythonPlayer::__UseSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__UseSkill"
]
},
"CPythonPlayer::__SendUseSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__SendUseSkill"
]
},
"CPythonPlayer::__GetSkillType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__GetSkillType"
]
},
"CPythonPlayer::__RunCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__RunCoolTime"
]
},
"CPythonPlayer::__HasEnoughArrow": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__HasEnoughArrow"
]
},
"CPythonPlayer::__HasItem": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__HasItem"
]
},
"CPythonPlayer::UseGuildSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::UseGuildSkill"
]
},
"CPythonPlayer::SetComboSkillFlag": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::SetComboSkillFlag"
]
},
"CPythonPlayer::__CheckSpecialSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayerSkill.cpp:CPythonPlayer::__CheckSpecialSkill"
]
}
}
}