port: CPythonSkill + skill module + EterBase/Poly (1:1 40250)
Copy PythonSkill.cpp and the EterBase/Poly formula parser verbatim, drop the pending stand-in and the skill module stub, register initskill() after initfly() and build CPythonSkill in m_pySkill's place. LoadLocaleData now loads skilldesc/skilltable. Skill and item icon handles go through Py_BuildPointer/PyTuple_GetPointer (ILP32 ints truncate 64-bit pointers). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7358bf444a
commit
03de3f314a
@@ -535,3 +535,4 @@
|
||||
{"time": "2026-09-24T08:00:00Z", "event": "port_round", "unit": "PORT-PLAN batch 2 P3-c: PythonExchange + PythonExchangeModule", "ported": ["UserInterface/PythonExchange.cpp", "UserInterface/PythonExchangeModule.cpp"], "adapted": [], "divergent": [], "needs_live": ["exchange with a real second player"], "tests": ["port.login_flow: net.SendExchangeStartPacket -> fake GC_EXCHANGE START/ITEM_ADD/GOLD_ADD fills target side, uiexchange opens; SendExchangeExitPacket -> END closes", "port.login_live 192.168.21.203: passes", "ctest all 19/19, python_game_render_test offline PASS", "port_map.py check: 0 errors"], "todo": ["PythonTextTail item tails", "PythonMiniMap", "CEffectManager", "CPythonSkill"]}
|
||||
{"time": "2026-09-24T09:00:00Z", "event": "port_round", "unit": "PORT-PLAN batch 2 P3-d: PythonTextTail + textTail module", "ported": ["UserInterface/PythonTextTail.cpp", "UserInterface/PythonTextTailModule.cpp"], "adapted": ["EterLib/GrpScreen.cpp:CScreen::ProjectPosition", "EterLib/GrpScreen.cpp:CScreen::UnprojectPosition", "UserInterface/UserInterface.cpp:ApplicationStringTable_GetString", "UserInterface/UserInterface.cpp:ApplicationStringTable_GetStringz"], "divergent": [], "needs_live": [], "tests": ["port.login_flow: ground item name tail registered, ALT frame projects it, CPythonTextTail::Pick returns the item VID, deleted on pickup", "port.login_live 192.168.21.203: passes", "ctest all 19/19, python_game_render_test offline PASS", "port_map.py check: 0 errors"], "todo": ["PythonMiniMap", "CEffectManager", "CPythonSkill"]}
|
||||
{"time": "2026-09-24T10:00:00Z", "event": "port_round", "unit": "PORT-PLAN batch 2 P3-e: PythonMiniMap + miniMap module", "ported": ["UserInterface/PythonMiniMap.cpp", "UserInterface/PythonMiniMapModule.cpp", "PRTerrainLib/StdAfx.cpp"], "adapted": [], "divergent": ["GameLib/MapManager.cpp:CMapManager::IsMapOutdoor (false until CMapOutdoor is ported)"], "needs_live": [], "tests": ["port.login_flow: miniMap.isShow() after uiminimap, GetAtlasSize() not loaded", "port.login_live 192.168.21.203: passes", "ctest all 19/19, python_game_render_test offline PASS", "port_map.py check: 0 errors"], "todo": ["CMapOutdoor (minimap terrain textures, atlas)", "CEffectManager", "CPythonSkill"]}
|
||||
{"time": "2026-09-24T12:00:00Z", "event": "port_round", "unit": "batch 3-a: CPythonSkill + skill module + EterBase/Poly", "ported": ["UserInterface/PythonSkill.cpp", "EterBase/Poly/Base.cpp", "EterBase/Poly/Poly.cpp", "EterBase/Poly/SymTable.cpp", "EterBase/Poly/Symbol.cpp"], "adapted": ["PythonSkill.cpp: icon handle functions (Py_BuildPointer), skillGetGradeData (varargs struct)", "PythonItemModule.cpp: itemGetIconInstance/itemDeleteIconInstance (Py_BuildPointer)"], "divergent": [], "needs_live": [], "tests": ["port.login_flow: skill 1 name/type/cooltime after LoadLocaleData; grade icon + icon instance in game", "port.login_live 192.168.21.203 passes", "ctest 19/19, python_game_render_test PASS", "port_map check 0 errors"], "todo": ["EffectLib", "CMapOutdoor", "default route switch"]}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"reference": "EterBase/Poly/Base.cpp",
|
||||
"reference_sha256": "44777e6173df4d43f20730d2a241ecb5a2576561cb5c49d89645ab83f119aa6d",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CBase::CBase": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Base.cpp:CBase::CBase"
|
||||
]
|
||||
},
|
||||
"CBase::~CBase": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Base.cpp:CBase::~CBase"
|
||||
]
|
||||
},
|
||||
"CBase::isNumber": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Base.cpp:CBase::isNumber"
|
||||
]
|
||||
},
|
||||
"CBase::isVar": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Base.cpp:CBase::isVar"
|
||||
]
|
||||
},
|
||||
"CBase::isSymbol": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Base.cpp:CBase::isSymbol"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"reference": "EterBase/Poly/Poly.cpp",
|
||||
"reference_sha256": "1ca53bed299366c916408e02c9e23b4a799134b63174bab9246d2d79e75b7a3c",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"_random": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:_random"
|
||||
]
|
||||
},
|
||||
"CPoly::SetRandom": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::SetRandom"
|
||||
]
|
||||
},
|
||||
"CPoly::my_irandom": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::my_irandom"
|
||||
]
|
||||
},
|
||||
"CPoly::my_frandom": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::my_frandom"
|
||||
]
|
||||
},
|
||||
"CPoly::CPoly": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::CPoly"
|
||||
]
|
||||
},
|
||||
"CPoly::~CPoly": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::~CPoly"
|
||||
]
|
||||
},
|
||||
"CPoly::SetStr": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::SetStr"
|
||||
]
|
||||
},
|
||||
"CPoly::Eval": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::Eval"
|
||||
]
|
||||
},
|
||||
"CPoly::Analyze": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::Analyze"
|
||||
]
|
||||
},
|
||||
"CPoly::Clear": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::Clear"
|
||||
]
|
||||
},
|
||||
"CPoly::expr": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::expr"
|
||||
]
|
||||
},
|
||||
"CPoly::error": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::error"
|
||||
]
|
||||
},
|
||||
"CPoly::lexan": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::lexan"
|
||||
]
|
||||
},
|
||||
"CPoly::term": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::term"
|
||||
]
|
||||
},
|
||||
"CPoly::factor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::factor"
|
||||
]
|
||||
},
|
||||
"CPoly::expo": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::expo"
|
||||
]
|
||||
},
|
||||
"CPoly::match": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::match"
|
||||
]
|
||||
},
|
||||
"CPoly::emit": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::emit"
|
||||
]
|
||||
},
|
||||
"CPoly::find": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::find"
|
||||
]
|
||||
},
|
||||
"CPoly::insert": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::insert"
|
||||
]
|
||||
},
|
||||
"CPoly::SetVar": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::SetVar"
|
||||
]
|
||||
},
|
||||
"CPoly::GetVarCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::GetVarCount"
|
||||
]
|
||||
},
|
||||
"CPoly::GetVarName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::GetVarName"
|
||||
]
|
||||
},
|
||||
"CPoly::init": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Poly.cpp:CPoly::init"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"reference": "EterBase/Poly/SymTable.cpp",
|
||||
"reference_sha256": "055323b1fbc4360c9f751089eb537afabb42343d19b65439dbe7d2a2a47d2fb4",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CSymTable::CSymTable": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/SymTable.cpp:CSymTable::CSymTable"
|
||||
]
|
||||
},
|
||||
"CSymTable::~CSymTable": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/SymTable.cpp:CSymTable::~CSymTable"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"reference": "EterBase/Poly/Symbol.cpp",
|
||||
"reference_sha256": "018d4ee2824ccf9b10c859650ff22e47d815c03d958caa7490acc4c90479a032",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CSymbol::CSymbol": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::CSymbol"
|
||||
]
|
||||
},
|
||||
"CSymbol::~CSymbol": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::~CSymbol"
|
||||
]
|
||||
},
|
||||
"CSymbol::Equal": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::Equal"
|
||||
]
|
||||
},
|
||||
"CSymbol::Less": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::Less"
|
||||
]
|
||||
},
|
||||
"CSymbol::GetType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::GetType"
|
||||
]
|
||||
},
|
||||
"CSymbol::SetType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::SetType"
|
||||
]
|
||||
},
|
||||
"CSymbol::issymbol": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterBase/Poly/Symbol.cpp:CSymbol::issymbol"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,8 +63,8 @@
|
||||
"impl": [
|
||||
"extension/src/platform/UserInterface/PythonApplication.cpp:LoadLocaleData"
|
||||
],
|
||||
"note": "Body verbatim in the platform CPythonApplication stand-in; CPythonSkill is still pending, so RegisterSkillDesc fails and it returns false after the item and mob tables load (localeinfo.py ignores the result).",
|
||||
"test": "extension/tests/port_login_flow_test.cpp step 3c (port.login_flow / port.login_live: item 19 Sword+9, mob 101 Wild Dog)"
|
||||
"note": "Body verbatim in the platform CPythonApplication stand-in (the class itself is not ported); it reads item/mob tables and CPythonSkill's skilldesc/skilltable.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp step 3c (port.login_flow / port.login_live: item 19 Sword+9, mob 101 Wild Dog, skill 1 Three-Way Cut cool time 12)"
|
||||
},
|
||||
"__GetWindowMode": {
|
||||
"status": "TODO"
|
||||
|
||||
@@ -133,16 +133,20 @@
|
||||
]
|
||||
},
|
||||
"itemGetIconInstance": {
|
||||
"status": "PORTED",
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonItemModule.cpp:itemGetIconInstance"
|
||||
]
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (compiles with the same handle helpers as skill icon instances)"
|
||||
},
|
||||
"itemDeleteIconInstance": {
|
||||
"status": "PORTED",
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonItemModule.cpp:itemDeleteIconInstance"
|
||||
]
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (compiles with the same handle helpers as skill icon instances)"
|
||||
},
|
||||
"itemIsEquipmentVID": {
|
||||
"status": "PORTED",
|
||||
|
||||
@@ -0,0 +1,608 @@
|
||||
{
|
||||
"reference": "UserInterface/PythonSkill.cpp",
|
||||
"reference_sha256": "c3c5d946aa801cbcc2a42c32e1c77ae59113a263f5618faaa8e15fc77b903fac",
|
||||
"priority": "P1",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"SplitLine": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:SplitLine"
|
||||
]
|
||||
},
|
||||
"string_replace_word": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:string_replace_word"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::RegisterSkillTable": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::RegisterSkillTable"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::__RegisterGradeIconImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::__RegisterGradeIconImage"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::__RegisterNormalIconImage": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::__RegisterNormalIconImage"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::RegisterSkillDesc": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::RegisterSkillDesc"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::Destroy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::Destroy"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::RegisterSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::RegisterSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::GetSkillData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::GetSkillData"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::GetSkillDataByName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::GetSkillDataByName"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SetPathName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SetPathName"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::GetPathName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::GetPathName"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::TEST": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::TEST"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::CPythonSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::CPythonSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::~CPythonSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::~CPythonSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetName"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetType"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsMeleeSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsMeleeSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsChargeSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsChargeSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsOnlyForGuildWar": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsOnlyForGuildWar"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetTargetRange": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetTargetRange"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::CanChangeDirection": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::CanChangeDirection"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsFanRange": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsFanRange"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsCircleRange": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsCircleRange"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsAutoSearchTarget": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsAutoSearchTarget"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNeedCorpse": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNeedCorpse"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNeedTarget": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNeedTarget"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsToggleSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsToggleSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsUseHPSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsUseHPSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsStandingSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsStandingSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::CanUseWeaponType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::CanUseWeaponType"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsOnlyForAlliance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsOnlyForAlliance"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::CanUseForMe": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::CanUseForMe"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::CanUseIfNotEnough": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::CanUseIfNotEnough"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNeedEmptyBottle": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNeedEmptyBottle"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNeedPoisonBottle": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNeedPoisonBottle"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNeedBow": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNeedBow"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsHorseSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsHorseSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsMovingSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsMovingSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsAttackSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsAttackSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsTimeIncreaseSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsTimeIncreaseSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetState": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetState"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::ProcessFormula": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::ProcessFormula"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetAffectDescription": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetAffectDescription"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetSkillCoolTime": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetSkillCoolTime"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetTargetCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetTargetCount"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetSkillMotionIndex": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetSkillMotionIndex"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetMaxLevel": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetMaxLevel"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetLevelUpPoint": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetLevelUpPoint"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsNoMotion": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsNoMotion"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::IsCanUseSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::IsCanUseSkill"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetMotionLoopCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetMotionLoopCount"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetNeedSP": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetNeedSP"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetContinuationSP": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetContinuationSP"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::GetDuration": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::GetDuration"
|
||||
]
|
||||
},
|
||||
"CPythonSkill::SSkillData::SSkillData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:CPythonSkill::SSkillData::SSkillData"
|
||||
]
|
||||
},
|
||||
"skillSetPathName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillSetPathName"
|
||||
]
|
||||
},
|
||||
"skillRegisterSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillRegisterSkill"
|
||||
]
|
||||
},
|
||||
"skillLoadSkillData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillLoadSkillData"
|
||||
]
|
||||
},
|
||||
"skillRegisterSkillDesc": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillRegisterSkillDesc"
|
||||
]
|
||||
},
|
||||
"skillClearSkillData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillClearSkillData"
|
||||
]
|
||||
},
|
||||
"skillGetSkillName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillName"
|
||||
]
|
||||
},
|
||||
"skillGetSkillDescription": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillDescription"
|
||||
]
|
||||
},
|
||||
"skillGetSkillType": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillType"
|
||||
]
|
||||
},
|
||||
"skillGetSkillConditionDescriptionCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillConditionDescriptionCount"
|
||||
]
|
||||
},
|
||||
"skillGetSkillConditionDescription": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillConditionDescription"
|
||||
]
|
||||
},
|
||||
"skillGetSkillAffectDescriptionCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillAffectDescriptionCount"
|
||||
]
|
||||
},
|
||||
"skillGetSkillAffectDescription": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillAffectDescription"
|
||||
]
|
||||
},
|
||||
"skillGetSkillCoolTime": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillCoolTime"
|
||||
]
|
||||
},
|
||||
"skillGetSkillNeedSP": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillNeedSP"
|
||||
]
|
||||
},
|
||||
"skillGetSkillContinuationSP": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillContinuationSP"
|
||||
]
|
||||
},
|
||||
"skillGetSkillMaxLevel": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillMaxLevel"
|
||||
]
|
||||
},
|
||||
"skillGetSkillLevelUpPoint": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillLevelUpPoint"
|
||||
]
|
||||
},
|
||||
"skillGetSkillLevelLimit": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillLevelLimit"
|
||||
]
|
||||
},
|
||||
"skillIsSkillRequirement": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillIsSkillRequirement"
|
||||
]
|
||||
},
|
||||
"skillGetSkillRequirementData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillRequirementData"
|
||||
]
|
||||
},
|
||||
"skillGetSkillRequireStatCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillRequireStatCount"
|
||||
]
|
||||
},
|
||||
"skillGetSkillRequireStatData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetSkillRequireStatData"
|
||||
]
|
||||
},
|
||||
"skillCanLevelUpSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillCanLevelUpSkill"
|
||||
]
|
||||
},
|
||||
"skillCheckRequirementSueccess": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillCheckRequirementSueccess"
|
||||
]
|
||||
},
|
||||
"skillGetNeedCharacterLevel": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetNeedCharacterLevel"
|
||||
]
|
||||
},
|
||||
"skillIsToggleSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillIsToggleSkill"
|
||||
]
|
||||
},
|
||||
"skillIsUseHPSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillIsUseHPSkill"
|
||||
]
|
||||
},
|
||||
"skillIsStandingSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillIsStandingSkill"
|
||||
]
|
||||
},
|
||||
"skillCanUseSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillCanUseSkill"
|
||||
]
|
||||
},
|
||||
"skillIsLevelUpSkill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillIsLevelUpSkill"
|
||||
]
|
||||
},
|
||||
"skillGetIconName": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetIconName"
|
||||
]
|
||||
},
|
||||
"skillGetIconImage": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetIconImage"
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (port.login_flow in-game step: grade icon image + icon instance round trip)"
|
||||
},
|
||||
"skillGetIconInstance": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetIconInstance"
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (port.login_flow in-game step: grade icon image + icon instance round trip)"
|
||||
},
|
||||
"skillGetIconImageNew": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetIconImageNew"
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (port.login_flow in-game step: grade icon image + icon instance round trip)"
|
||||
},
|
||||
"skillGetIconInstanceNew": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetIconInstanceNew"
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (port.login_flow in-game step: grade icon image + icon instance round trip)"
|
||||
},
|
||||
"skillDeleteIconInstance": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillDeleteIconInstance"
|
||||
],
|
||||
"note": "Returns/reads the pointer through Py_BuildPointer/PyTuple_GetPointer instead of Py_BuildValue(\"i\")/PyTuple_GetInteger: 40250 is ILP32, a 64-bit pointer truncated in \"i\" crashed wndMgr.SetSlot.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (port.login_flow in-game step: grade icon image + icon instance round trip)"
|
||||
},
|
||||
"skillGetGradeData": {
|
||||
"status": "ADAPTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetGradeData"
|
||||
],
|
||||
"note": "40250 passes the non-trivial TGradeData through varargs (\"i\" reads its first 4 bytes); clang rejects that, so the same first 4 bytes are read explicitly. No root script calls skill.GetGradeData.",
|
||||
"test": "extension/tests/port_login_flow_test.cpp (module imports; function unused by root scripts)"
|
||||
},
|
||||
"skillGetNewAffectDataCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetNewAffectDataCount"
|
||||
]
|
||||
},
|
||||
"skillGetNewAffectData": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetNewAffectData"
|
||||
]
|
||||
},
|
||||
"skillGetDuration": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillGetDuration"
|
||||
]
|
||||
},
|
||||
"skillTEST": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:skillTEST"
|
||||
]
|
||||
},
|
||||
"initskill": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/UserInterface/PythonSkill.cpp:initskill"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user