port 2V2-d.1: ActorInstance/InstanceBase closure creates the main character

Port the ActorInstance*/InstanceBase* siblings plus GameUtil, FlyTarget,
PhysicsObject, GameEventManager, WeaponTrace, MapUtil and lineintersect_utils
verbatim and drop their pending stand-ins; CGameEventManager and CPythonSystem
join PythonBoot in CPythonApplication member order.

Root cause of the intermittent Loading-phase header 7: TPlayerSkill::tNextRead
is time_t, 32-bit in 40250 (_USE_32BIT_TIME_T) but 64-bit on LP64, so
SKILL_LEVEL (76) was read as 2551 bytes instead of 1531. Packet.h now uses
LONG with a static_assert, and the fake server sends SKILL_LEVEL in Loading.

The fake server's CHARACTER_ADD now uses CHAR_TYPE_PC; port.login_flow
asserts the main instance exists with race 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 19:02:21 +09:00
co-authored by Claude Opus 5.5
parent 996d793f0c
commit 5266b00c6e
71 changed files with 13832 additions and 1405 deletions
@@ -0,0 +1,308 @@
{
"reference": "UserInterface/InstanceBaseBattle.cpp",
"reference_sha256": "d8ff183d56128a21a5f88ae2dd725e9e83375cfbc31ffe8c598f3e1d6c1934f7",
"priority": "P0",
"contracts": [],
"functions": {
"NEW_UnsignedDegreeToSignedDegree": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:NEW_UnsignedDegreeToSignedDegree"
]
},
"NEW_GetSignedDegreeFromDirPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:NEW_GetSignedDegreeFromDirPixelPosition"
]
},
"CInstanceBase::IsFlyTargetObject": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::IsFlyTargetObject"
]
},
"CInstanceBase::GetFlyTargetDistance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::GetFlyTargetDistance"
]
},
"CInstanceBase::ClearFlyTargetInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::ClearFlyTargetInstance"
]
},
"CInstanceBase::SetFlyTargetInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::SetFlyTargetInstance"
]
},
"CInstanceBase::AddFlyTargetPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::AddFlyTargetPosition"
]
},
"CInstanceBase::AddFlyTargetInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::AddFlyTargetInstance"
]
},
"CInstanceBase::NEW_GetDistanceFromDestInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetDistanceFromDestInstance"
]
},
"CInstanceBase::NEW_GetDistanceFromDestPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetDistanceFromDestPixelPosition"
]
},
"CInstanceBase::NEW_GetDistanceFromDirPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetDistanceFromDirPixelPosition"
]
},
"CInstanceBase::NEW_GetRotation": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetRotation"
]
},
"CInstanceBase::NEW_GetRotationFromDirPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetRotationFromDirPixelPosition"
]
},
"CInstanceBase::NEW_GetRotationFromDestPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetRotationFromDestPixelPosition"
]
},
"CInstanceBase::NEW_GetRotationFromDestInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetRotationFromDestInstance"
]
},
"CInstanceBase::NEW_GetRandomPositionInFanRange": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetRandomPositionInFanRange"
]
},
"CInstanceBase::NEW_GetFrontInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetFrontInstance"
]
},
"CInstanceBase::NEW_GetInstanceVectorInFanRange": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetInstanceVectorInFanRange"
]
},
"CInstanceBase::NEW_GetInstanceVectorInCircleRange": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_GetInstanceVectorInCircleRange"
]
},
"CInstanceBase::NEW_IsClickableDistanceDestPixelPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_IsClickableDistanceDestPixelPosition"
]
},
"CInstanceBase::NEW_IsClickableDistanceDestInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_IsClickableDistanceDestInstance"
]
},
"CInstanceBase::NEW_UseSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_UseSkill"
]
},
"CInstanceBase::NEW_Attack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_Attack"
]
},
"CInstanceBase::NEW_AttackToDestPixelPositionDirection": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_AttackToDestPixelPositionDirection"
]
},
"CInstanceBase::NEW_AttackToDestInstanceDirection": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::NEW_AttackToDestInstanceDirection"
]
},
"CInstanceBase::AttackProcess": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::AttackProcess"
]
},
"CInstanceBase::InputNormalAttack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::InputNormalAttack"
]
},
"CInstanceBase::InputComboAttack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::InputComboAttack"
]
},
"CInstanceBase::RunNormalAttack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::RunNormalAttack"
]
},
"CInstanceBase::RunComboAttack": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::RunComboAttack"
]
},
"CInstanceBase::CheckAdvancing": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::CheckAdvancing"
]
},
"CInstanceBase::CheckAttacking": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::CheckAttacking"
]
},
"CInstanceBase::isNormalAttacking": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::isNormalAttacking"
]
},
"CInstanceBase::isComboAttacking": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::isComboAttacking"
]
},
"CInstanceBase::IsUsingSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::IsUsingSkill"
]
},
"CInstanceBase::IsUsingMovingSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::IsUsingMovingSkill"
]
},
"CInstanceBase::CanCancelSkill": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::CanCancelSkill"
]
},
"CInstanceBase::CanAttackHorseLevel": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::CanAttackHorseLevel"
]
},
"CInstanceBase::IsAffect": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::IsAffect"
]
},
"CInstanceBase::GetNormalAttackIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::GetNormalAttackIndex"
]
},
"CInstanceBase::GetComboIndex": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::GetComboIndex"
]
},
"CInstanceBase::GetAttackingElapsedTime": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::GetAttackingElapsedTime"
]
},
"CInstanceBase::ProcessHitting": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::ProcessHitting"
]
},
"CInstanceBase::GetBlendingPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::GetBlendingPosition"
]
},
"CInstanceBase::SetBlendingPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::SetBlendingPosition"
]
},
"CInstanceBase::Revive": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::Revive"
]
},
"CInstanceBase::Stun": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::Stun"
]
},
"CInstanceBase::Die": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::Die"
]
},
"CInstanceBase::Hide": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::Hide"
]
},
"CInstanceBase::Show": {
"status": "PORTED",
"impl": [
"extension/src/port/UserInterface/InstanceBaseBattle.cpp:CInstanceBase::Show"
]
}
}
}