port 2V2-b: GamePhase dispatch consumes the Entergame burst

PythonNetworkStreamPhaseGame/PhaseGameActor/PhaseGameItem/Command,
NetworkActorManager and PythonChat/PythonChatModule are ported verbatim and
dispatched at runtime; the 2V0 chat stub module is removed and initChat()
runs before initnet() as in 40250. InstanceBase, PythonCharacterManager and
GameLib ActorInstance/RaceData/RaceManager compile but stay TODO until
2V2-c/d wire them.

Units not ported yet get their singletons from PythonBoot's GameSingletons
(CPythonApplication member order) and platform/pending stand-ins generated
by platform_stub.py pending; const char* stand-ins return "".

port.login_flow's fake server now sends the CInputLogin::Entergame order
(actor insert, NPC positions, PHASE_GAME, land list, time, channel, greet
notice, ping) and a TraceError observer asserts no unknown packet header.
port.login_live passes against the real server for 10 s of game phase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 18:20:57 +09:00
co-authored by Claude Opus 5.5
parent d16fabf61c
commit 62b6e23bfc
76 changed files with 21087 additions and 753 deletions
@@ -0,0 +1,272 @@
{
"reference": "UserInterface/PythonNetworkStreamPhaseGameItem.cpp",
"reference_sha256": "eea34b48af0e7e1b1340ca6e72f708882b3db108b2f80c82842a9cc67f2348a2",
"priority": "P2",
"contracts": [],
"functions": {
"CPythonNetworkStream::SendSafeBoxMoneyPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendSafeBoxMoneyPacket"
]
},
"CPythonNetworkStream::SendSafeBoxCheckinPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendSafeBoxCheckinPacket"
]
},
"CPythonNetworkStream::SendSafeBoxCheckoutPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendSafeBoxCheckoutPacket"
]
},
"CPythonNetworkStream::SendSafeBoxItemMovePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendSafeBoxItemMovePacket"
]
},
"CPythonNetworkStream::RecvSafeBoxSetPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSafeBoxSetPacket"
]
},
"CPythonNetworkStream::RecvSafeBoxDelPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSafeBoxDelPacket"
]
},
"CPythonNetworkStream::RecvSafeBoxWrongPasswordPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSafeBoxWrongPasswordPacket"
]
},
"CPythonNetworkStream::RecvSafeBoxSizePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSafeBoxSizePacket"
]
},
"CPythonNetworkStream::RecvSafeBoxMoneyChangePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSafeBoxMoneyChangePacket"
]
},
"CPythonNetworkStream::SendMallCheckoutPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendMallCheckoutPacket"
]
},
"CPythonNetworkStream::RecvMallOpenPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvMallOpenPacket"
]
},
"CPythonNetworkStream::RecvMallItemSetPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvMallItemSetPacket"
]
},
"CPythonNetworkStream::RecvMallItemDelPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvMallItemDelPacket"
]
},
"CPythonNetworkStream::RecvItemSetPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemSetPacket"
]
},
"CPythonNetworkStream::RecvItemSetPacket2": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemSetPacket2"
]
},
"CPythonNetworkStream::RecvItemUsePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemUsePacket"
]
},
"CPythonNetworkStream::RecvItemUpdatePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemUpdatePacket"
]
},
"CPythonNetworkStream::RecvItemGroundAddPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemGroundAddPacket"
]
},
"CPythonNetworkStream::RecvItemOwnership": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemOwnership"
]
},
"CPythonNetworkStream::RecvItemGroundDelPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvItemGroundDelPacket"
]
},
"CPythonNetworkStream::RecvQuickSlotAddPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvQuickSlotAddPacket"
]
},
"CPythonNetworkStream::RecvQuickSlotDelPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvQuickSlotDelPacket"
]
},
"CPythonNetworkStream::RecvQuickSlotMovePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvQuickSlotMovePacket"
]
},
"CPythonNetworkStream::SendShopEndPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendShopEndPacket"
]
},
"CPythonNetworkStream::SendShopBuyPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendShopBuyPacket"
]
},
"CPythonNetworkStream::SendShopSellPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendShopSellPacket"
]
},
"CPythonNetworkStream::SendShopSellPacketNew": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendShopSellPacketNew"
]
},
"CPythonNetworkStream::SendItemUsePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemUsePacket"
]
},
"CPythonNetworkStream::SendItemUseToItemPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemUseToItemPacket"
]
},
"CPythonNetworkStream::SendItemDropPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemDropPacket"
]
},
"CPythonNetworkStream::SendItemDropPacketNew": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemDropPacketNew"
]
},
"CPythonNetworkStream::__IsEquipItemInSlot": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::__IsEquipItemInSlot"
]
},
"CPythonNetworkStream::__PlayInventoryItemUseSound": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::__PlayInventoryItemUseSound"
]
},
"CPythonNetworkStream::__PlayInventoryItemDropSound": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::__PlayInventoryItemDropSound"
]
},
"CPythonNetworkStream::__PlaySafeBoxItemDropSound": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::__PlaySafeBoxItemDropSound"
]
},
"CPythonNetworkStream::__PlayMallItemDropSound": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::__PlayMallItemDropSound"
]
},
"CPythonNetworkStream::SendItemMovePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemMovePacket"
]
},
"CPythonNetworkStream::SendItemPickUpPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendItemPickUpPacket"
]
},
"CPythonNetworkStream::SendQuickSlotAddPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendQuickSlotAddPacket"
]
},
"CPythonNetworkStream::SendQuickSlotDelPacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendQuickSlotDelPacket"
]
},
"CPythonNetworkStream::SendQuickSlotMovePacket": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::SendQuickSlotMovePacket"
]
},
"CPythonNetworkStream::RecvSpecialEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSpecialEffect"
]
},
"CPythonNetworkStream::RecvSpecificEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvSpecificEffect"
]
},
"CPythonNetworkStream::RecvDragonSoulRefine": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/PythonNetworkStreamPhaseGameItem.cpp:CPythonNetworkStream::RecvDragonSoulRefine"
]
}
}
}