port 2V2-c: chrmgr/chr modules + race registration chain

PythonCharacterManagerModule/PythonCharacterModule ported verbatim; the
2V0 chr/chrmgr stubs are gone and initchr/initchrmgr run in 40250 order.
The registration chain they need (RaceData/RaceDataFile/RaceManager/
RaceMotionData, GameType, AttributeData/AttributeInstance, TextFileLoader,
Util, Camera/CameraProcedure) is ported; CRaceManager is created in
PythonBoot. port.login_flow asserts race 0 has its wait motions and no
unhandled packet header; port.login_live 8/8 against 192.168.21.203.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 18:40:47 +09:00
co-authored by Claude Opus 5.5
parent 62b6e23bfc
commit 996d793f0c
39 changed files with 8270 additions and 625 deletions
@@ -0,0 +1,482 @@
{
"reference": "UserInterface/PythonCharacterModule.cpp",
"reference_sha256": "b0f4a420d3dd4f2d3a8ff8de9b4ddc369d4b05118fa812d4914669035d2cdf2d",
"priority": "P4",
"contracts": [],
"functions": {
"chrRaceToJob": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRaceToJob"
]
},
"chrRaceToSex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRaceToSex"
]
},
"chrDestroy": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDestroy"
]
},
"chrUpdate": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrUpdate"
]
},
"chrDeform": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDeform"
]
},
"chrRender": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRender"
]
},
"chrRenderCollision": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRenderCollision"
]
},
"chrCreateInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrCreateInstance"
]
},
"chrDeleteInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDeleteInstance"
]
},
"chrDeleteInstanceByFade": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDeleteInstanceByFade"
]
},
"chrSelectInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSelectInstance"
]
},
"chrHasInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrHasInstance"
]
},
"chrIsEnemy": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrIsEnemy"
]
},
"chrIsNPC": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrIsNPC"
]
},
"chrIsGameMaster": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrIsGameMaster"
]
},
"chrIsPartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrIsPartyMember"
]
},
"chrSelect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSelect"
]
},
"chrSetAddRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetAddRenderMode"
]
},
"chrSetBlendRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetBlendRenderMode"
]
},
"chrUnselect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrUnselect"
]
},
"chrPick": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrPick"
]
},
"chrHide": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrHide"
]
},
"chrShow": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrShow"
]
},
"chrPickAll": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrPickAll"
]
},
"chrSetRace": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetRace"
]
},
"chrSetHair": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetHair"
]
},
"chrChangeHair": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrChangeHair"
]
},
"chrSetArmor": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetArmor"
]
},
"chrChangeShape": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrChangeShape"
]
},
"chrSetWeapon": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetWeapon"
]
},
"chrSetVirtualID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetVirtualID"
]
},
"chrSetNameString": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetNameString"
]
},
"chrSetInstanceType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetInstanceType"
]
},
"chrAttachEffectByName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrAttachEffectByName"
]
},
"chrAttachEffectByID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrAttachEffectByID"
]
},
"chrRefresh": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRefresh"
]
},
"chrMountHorse": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrMountHorse"
]
},
"chrDismountHorse": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDismountHorse"
]
},
"chrRevive": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrRevive"
]
},
"chrDie": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrDie"
]
},
"chrLookAt": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrLookAt"
]
},
"chrSetMotionMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetMotionMode"
]
},
"chrSetLoopMotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetLoopMotion"
]
},
"chrBlendLoopMotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrBlendLoopMotion"
]
},
"chrPushOnceMotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrPushOnceMotion"
]
},
"chrPushLoopMotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrPushLoopMotion"
]
},
"chrSetPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetPixelPosition"
]
},
"chrSetDirection": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetDirection"
]
},
"chrGetPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetPixelPosition"
]
},
"chrSetRotation": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetRotation"
]
},
"chrSetRotationAll": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetRotationAll"
]
},
"chrBlendRotation": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrBlendRotation"
]
},
"chrGetRotation": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetRotation"
]
},
"chrGetRace": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetRace"
]
},
"chrGetName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetName"
]
},
"chrGetNameByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetNameByVID"
]
},
"chrGetGuildID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetGuildID"
]
},
"chrGetProjectPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetProjectPosition"
]
},
"chrGetVirtualNumber": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetVirtualNumber"
]
},
"chrGetInstanceType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetInstanceType"
]
},
"chrGetBoundBoxOnlyXY": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrGetBoundBoxOnlyXY"
]
},
"chrtestGetPKData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestGetPKData"
]
},
"chrtestSetComboType": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetComboType"
]
},
"chrtestSetAddRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetAddRenderMode"
]
},
"chrtestSetModulateRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetModulateRenderMode"
]
},
"chrtestSetAddRenderModeRGB": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetAddRenderModeRGB"
]
},
"chrtestSetModulateRenderModeRGB": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetModulateRenderModeRGB"
]
},
"chrtestSetSpecularRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetSpecularRenderMode"
]
},
"chrtestSetSpecularRenderMode2": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetSpecularRenderMode2"
]
},
"chrtestRestoreRenderMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestRestoreRenderMode"
]
},
"chrFaintTest": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrFaintTest"
]
},
"chrSetMoveSpeed": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetMoveSpeed"
]
},
"chrSetAttackSpeed": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrSetAttackSpeed"
]
},
"chrWeaponTraceSetTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrWeaponTraceSetTexture"
]
},
"chrWeaponTraceUseTexture": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrWeaponTraceUseTexture"
]
},
"chrWeaponTraceUseAlpha": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrWeaponTraceUseAlpha"
]
},
"chrMoveToDestPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrMoveToDestPosition"
]
},
"chrtestSetRideMan": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:chrtestSetRideMan"
]
},
"initchr": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonCharacterModule.cpp:initchr"
]
}
}
}