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>
This commit is contained in:
shenlei
2026-09-23 23:41:31 +09:00
co-authored by Claude Opus 5.5
parent 157f7c3bb4
commit ff0983d3c8
39 changed files with 10170 additions and 2039 deletions
@@ -0,0 +1,848 @@
{
"reference": "UserInterface/PythonPlayer.cpp",
"reference_sha256": "6b831abcc6a4d767a9a100a66fc7682ec2508f65839c1dcaf6cfc3940e5f06ae",
"priority": "P0",
"contracts": [],
"functions": {
"CPythonPlayer::SPlayerStatus::SetPoint": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SPlayerStatus::SetPoint"
]
},
"CPythonPlayer::SPlayerStatus::GetPoint": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SPlayerStatus::GetPoint"
]
},
"CPythonPlayer::AffectIndexToSkillIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::AffectIndexToSkillIndex"
]
},
"CPythonPlayer::AffectIndexToSkillSlotIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::AffectIndexToSkillSlotIndex"
]
},
"CPythonPlayer::__GetPickedActorPtr": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetPickedActorPtr"
]
},
"CPythonPlayer::__GetPickedActorID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetPickedActorID"
]
},
"CPythonPlayer::__GetPickedItemID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetPickedItemID"
]
},
"CPythonPlayer::__GetPickedGroundPos": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetPickedGroundPos"
]
},
"CPythonPlayer::NEW_GetMainActorPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NEW_GetMainActorPosition"
]
},
"CPythonPlayer::RegisterEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RegisterEffect"
]
},
"CPythonPlayer::NEW_ShowEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NEW_ShowEffect"
]
},
"CPythonPlayer::NEW_FindActorPtr": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NEW_FindActorPtr"
]
},
"CPythonPlayer::NEW_GetMainActorPtr": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NEW_GetMainActorPtr"
]
},
"CPythonPlayer::Update": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::Update"
]
},
"CPythonPlayer::__IsUsingChargeSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__IsUsingChargeSkill"
]
},
"CPythonPlayer::__Update_AutoAttack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__Update_AutoAttack"
]
},
"CPythonPlayer::__Update_NotifyGuildAreaEvent": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__Update_NotifyGuildAreaEvent"
]
},
"CPythonPlayer::SetMainCharacterIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetMainCharacterIndex"
]
},
"CPythonPlayer::GetMainCharacterIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetMainCharacterIndex"
]
},
"CPythonPlayer::IsMainCharacterIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsMainCharacterIndex"
]
},
"CPythonPlayer::GetGuildID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetGuildID"
]
},
"CPythonPlayer::SetWeaponPower": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetWeaponPower"
]
},
"CPythonPlayer::SetRace": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetRace"
]
},
"CPythonPlayer::GetRace": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetRace"
]
},
"CPythonPlayer::__GetRaceStat": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetRaceStat"
]
},
"CPythonPlayer::__GetLevelAtk": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetLevelAtk"
]
},
"CPythonPlayer::__GetStatAtk": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetStatAtk"
]
},
"CPythonPlayer::__GetWeaponAtk": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetWeaponAtk"
]
},
"CPythonPlayer::__GetTotalAtk": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetTotalAtk"
]
},
"CPythonPlayer::__GetHitRate": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetHitRate"
]
},
"CPythonPlayer::__GetEvadeRate": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__GetEvadeRate"
]
},
"CPythonPlayer::__UpdateBattleStatus": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__UpdateBattleStatus"
]
},
"CPythonPlayer::SetStatus": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetStatus"
]
},
"CPythonPlayer::GetStatus": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetStatus"
]
},
"CPythonPlayer::GetName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetName"
]
},
"CPythonPlayer::SetName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetName"
]
},
"CPythonPlayer::NotifyDeletingCharacterInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NotifyDeletingCharacterInstance"
]
},
"CPythonPlayer::NotifyCharacterDead": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NotifyCharacterDead"
]
},
"CPythonPlayer::NotifyCharacterUpdate": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NotifyCharacterUpdate"
]
},
"CPythonPlayer::NotifyDeadMainCharacter": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NotifyDeadMainCharacter"
]
},
"CPythonPlayer::NotifyChangePKMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NotifyChangePKMode"
]
},
"CPythonPlayer::MoveItemData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::MoveItemData"
]
},
"CPythonPlayer::GetItemData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemData"
]
},
"CPythonPlayer::SetItemData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetItemData"
]
},
"CPythonPlayer::GetItemIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemIndex"
]
},
"CPythonPlayer::GetItemFlags": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemFlags"
]
},
"CPythonPlayer::GetItemCount": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemCount"
]
},
"CPythonPlayer::GetItemCountByVnum": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemCountByVnum"
]
},
"CPythonPlayer::GetItemMetinSocket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemMetinSocket"
]
},
"CPythonPlayer::GetItemAttribute": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetItemAttribute"
]
},
"CPythonPlayer::SetItemCount": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetItemCount"
]
},
"CPythonPlayer::SetItemMetinSocket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetItemMetinSocket"
]
},
"CPythonPlayer::SetItemAttribute": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetItemAttribute"
]
},
"CPythonPlayer::GetQuickPage": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetQuickPage"
]
},
"CPythonPlayer::SetQuickPage": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetQuickPage"
]
},
"CPythonPlayer::LocalQuickSlotIndexToGlobalQuickSlotIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::LocalQuickSlotIndexToGlobalQuickSlotIndex"
]
},
"CPythonPlayer::GetGlobalQuickSlotData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetGlobalQuickSlotData"
]
},
"CPythonPlayer::GetLocalQuickSlotData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetLocalQuickSlotData"
]
},
"CPythonPlayer::__RefLocalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__RefLocalQuickSlot"
]
},
"CPythonPlayer::__RefGlobalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__RefGlobalQuickSlot"
]
},
"CPythonPlayer::RemoveQuickSlotByValue": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RemoveQuickSlotByValue"
]
},
"CPythonPlayer::IsItem": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsItem"
]
},
"CPythonPlayer::RequestMoveGlobalQuickSlotToLocalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RequestMoveGlobalQuickSlotToLocalQuickSlot"
]
},
"CPythonPlayer::RequestAddLocalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RequestAddLocalQuickSlot"
]
},
"CPythonPlayer::RequestAddToEmptyLocalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RequestAddToEmptyLocalQuickSlot"
]
},
"CPythonPlayer::RequestDeleteGlobalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RequestDeleteGlobalQuickSlot"
]
},
"CPythonPlayer::RequestUseLocalQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RequestUseLocalQuickSlot"
]
},
"CPythonPlayer::AddQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::AddQuickSlot"
]
},
"CPythonPlayer::DeleteQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::DeleteQuickSlot"
]
},
"CPythonPlayer::MoveQuickSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::MoveQuickSlot"
]
},
"CPythonPlayer::IsBeltInventorySlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsBeltInventorySlot"
]
},
"CPythonPlayer::IsInventorySlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsInventorySlot"
]
},
"CPythonPlayer::IsEquipmentSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsEquipmentSlot"
]
},
"CPythonPlayer::IsEquipItemInSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsEquipItemInSlot"
]
},
"CPythonPlayer::SetSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetSkill"
]
},
"CPythonPlayer::GetSkillIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillIndex"
]
},
"CPythonPlayer::GetSkillSlotIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillSlotIndex"
]
},
"CPythonPlayer::GetSkillGrade": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillGrade"
]
},
"CPythonPlayer::GetSkillLevel": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillLevel"
]
},
"CPythonPlayer::GetSkillCurrentEfficientPercentage": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillCurrentEfficientPercentage"
]
},
"CPythonPlayer::GetSkillNextEfficientPercentage": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillNextEfficientPercentage"
]
},
"CPythonPlayer::SetSkillLevel": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetSkillLevel"
]
},
"CPythonPlayer::SetSkillLevel_": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetSkillLevel_"
]
},
"CPythonPlayer::SetSkillCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetSkillCoolTime"
]
},
"CPythonPlayer::EndSkillCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::EndSkillCoolTime"
]
},
"CPythonPlayer::GetSkillCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillCoolTime"
]
},
"CPythonPlayer::GetSkillElapsedCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetSkillElapsedCoolTime"
]
},
"CPythonPlayer::__ActivateSkillSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__ActivateSkillSlot"
]
},
"CPythonPlayer::__DeactivateSkillSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__DeactivateSkillSlot"
]
},
"CPythonPlayer::IsSkillCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsSkillCoolTime"
]
},
"CPythonPlayer::IsSkillActive": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsSkillActive"
]
},
"CPythonPlayer::IsToggleSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsToggleSkill"
]
},
"CPythonPlayer::SetPlayTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetPlayTime"
]
},
"CPythonPlayer::GetPlayTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetPlayTime"
]
},
"CPythonPlayer::SendClickItemPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SendClickItemPacket"
]
},
"CPythonPlayer::__SendClickActorPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__SendClickActorPacket"
]
},
"CPythonPlayer::ActEmotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::ActEmotion"
]
},
"CPythonPlayer::StartEmotionProcess": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::StartEmotionProcess"
]
},
"CPythonPlayer::EndEmotionProcess": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::EndEmotionProcess"
]
},
"CPythonPlayer::__IsProcessingEmotion": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__IsProcessingEmotion"
]
},
"CPythonPlayer::SetDungeonDestinationPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetDungeonDestinationPosition"
]
},
"CPythonPlayer::AlarmHaveToGo": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::AlarmHaveToGo"
]
},
"CPythonPlayer::ExitParty": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::ExitParty"
]
},
"CPythonPlayer::AppendPartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::AppendPartyMember"
]
},
"CPythonPlayer::LinkPartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::LinkPartyMember"
]
},
"CPythonPlayer::UnlinkPartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::UnlinkPartyMember"
]
},
"CPythonPlayer::UpdatePartyMemberInfo": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::UpdatePartyMemberInfo"
]
},
"CPythonPlayer::UpdatePartyMemberAffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::UpdatePartyMemberAffect"
]
},
"CPythonPlayer::RemovePartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RemovePartyMember"
]
},
"CPythonPlayer::IsPartyMemberByVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsPartyMemberByVID"
]
},
"CPythonPlayer::IsPartyMemberByName": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsPartyMemberByName"
]
},
"CPythonPlayer::GetPartyMemberPtr": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetPartyMemberPtr"
]
},
"CPythonPlayer::PartyMemberPIDToVID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::PartyMemberPIDToVID"
]
},
"CPythonPlayer::PartyMemberVIDToPID": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::PartyMemberVIDToPID"
]
},
"CPythonPlayer::IsSamePartyMember": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsSamePartyMember"
]
},
"CPythonPlayer::RememberChallengeInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RememberChallengeInstance"
]
},
"CPythonPlayer::RememberRevengeInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RememberRevengeInstance"
]
},
"CPythonPlayer::RememberCantFightInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::RememberCantFightInstance"
]
},
"CPythonPlayer::ForgetInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::ForgetInstance"
]
},
"CPythonPlayer::IsChallengeInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsChallengeInstance"
]
},
"CPythonPlayer::IsRevengeInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsRevengeInstance"
]
},
"CPythonPlayer::IsCantFightInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsCantFightInstance"
]
},
"CPythonPlayer::OpenPrivateShop": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::OpenPrivateShop"
]
},
"CPythonPlayer::ClosePrivateShop": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::ClosePrivateShop"
]
},
"CPythonPlayer::IsOpenPrivateShop": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsOpenPrivateShop"
]
},
"CPythonPlayer::SetObserverMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetObserverMode"
]
},
"CPythonPlayer::IsObserverMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::IsObserverMode"
]
},
"CPythonPlayer::__ToggleCoolTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__ToggleCoolTime"
]
},
"CPythonPlayer::__ToggleLevelLimit": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::__ToggleLevelLimit"
]
},
"CPythonPlayer::StartStaminaConsume": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::StartStaminaConsume"
]
},
"CPythonPlayer::StopStaminaConsume": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::StopStaminaConsume"
]
},
"CPythonPlayer::GetPKMode": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::GetPKMode"
]
},
"CPythonPlayer::SetMobileFlag": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetMobileFlag"
]
},
"CPythonPlayer::HasMobilePhoneNumber": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::HasMobilePhoneNumber"
]
},
"CPythonPlayer::SetGameWindow": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::SetGameWindow"
]
},
"CPythonPlayer::NEW_ClearSkillData": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::NEW_ClearSkillData"
]
},
"CPythonPlayer::ClearSkillDict": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::ClearSkillDict"
]
},
"CPythonPlayer::Clear": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::Clear"
]
},
"CPythonPlayer::CPythonPlayer": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::CPythonPlayer"
]
},
"CPythonPlayer::~CPythonPlayer": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonPlayer.cpp:CPythonPlayer::~CPythonPlayer"
]
}
}
}