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>
159 lines
5.0 KiB
JSON
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"
|
|
]
|
|
}
|
|
}
|
|
}
|