diff --git a/data/m_functions_analyzed.json b/data/m_functions_analyzed.json new file mode 100644 index 000000000..7a541589a --- /dev/null +++ b/data/m_functions_analyzed.json @@ -0,0 +1,1290 @@ +[ + { + "addr": "0x0000007100c87524", + "size": 2844, + "mangled": "_ZN4evfl16FlowchartContext18ProcessContextNodeEi", + "demangled": "evfl::FlowchartContext::ProcessContextNode(int)", + "file": "/home/jesus/botw/lib/EventFlow/src/evfl/Flowchart.cpp", + "line": 153, + "diff_count": 20, + "mod_lines": 10, + "missing_lines": 8, + "extra_lines": 2, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x00000071016b8928", + "size": 484, + "mangled": "_ZN4evfl11TimelineObj7Builder5BuildEPS0_NS_11AllocateArgE", + "demangled": "evfl::TimelineObj::Builder::Build(evfl::TimelineObj*, evfl::AllocateArg)", + "file": "/home/jesus/botw/lib/EventFlow/src/evfl/TimelineObj.cpp", + "line": 208, + "diff_count": 4, + "mod_lines": 4, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x00000071016b822c", + "size": 1164, + "mangled": "_ZN4evfl11TimelineObj8CalcImplEv", + "demangled": "evfl::TimelineObj::CalcImpl()", + "file": "/home/jesus/botw/lib/EventFlow/src/evfl/TimelineObj.cpp", + "line": 102, + "diff_count": 9, + "mod_lines": 1, + "missing_lines": 4, + "extra_lines": 4, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100b3f9e0", + "size": 420, + "mangled": "_ZNK3agl3utl9ParameterIN4sead15FixedSafeStringILi32EEEE5cloneEPNS2_4HeapEPNS0_13IParameterObjE", + "demangled": "agl::utl::Parameter >::clone(sead::Heap*, agl::utl::IParameterObj*) const", + "file": "/home/jesus/botw/lib/agl/include/utility/aglParameter.h", + "line": 244, + "diff_count": 80, + "mod_lines": 9, + "missing_lines": 71, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100b54214", + "size": 232, + "mangled": "_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f", + "demangled": "agl::utl::IParameterObj::copyLerp(agl::utl::IParameterObj const&, agl::utl::IParameterObj const&, float)", + "file": "/home/jesus/botw/lib/agl/src/utility/aglParameterObj.cpp", + "line": 184, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100c19f84", + "size": 14120, + "mangled": "_ZN4gsys16ModelSceneConfigC1Ev", + "demangled": "gsys::ModelSceneConfig::ModelSceneConfig()", + "file": "/home/jesus/botw/lib/gsys/src/gsys/gsysModelSceneConfig.cpp", + "line": 89, + "diff_count": 13, + "mod_lines": 4, + "missing_lines": 4, + "extra_lines": 5, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100c5034c", + "size": 264, + "mangled": "_ZNK4gsys14ParticleConfig15getLightMapNameEj", + "demangled": "gsys::ParticleConfig::getLightMapName(unsigned int) const", + "file": "/home/jesus/botw/lib/gsys/src/gsys/gsysParticleConfig.cpp", + "line": 36, + "diff_count": 44, + "mod_lines": 5, + "missing_lines": 31, + "extra_lines": 2, + "reorder_lines": 6, + "category": "COMPLEX" + }, + { + "addr": "0x0000007101207f68", + "size": 680, + "mangled": "_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_", + "demangled": "sead::ObjArray >::binarySearch(sead::SafeStringBase const*) const", + "file": "/home/jesus/botw/lib/sead/include/container/seadObjArray.h", + "line": 155, + "diff_count": 3, + "mod_lines": 0, + "missing_lines": 2, + "extra_lines": 0, + "reorder_lines": 1, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071011bfef4", + "size": 436, + "mangled": "_ZN4sead11TreeMapImplIN4ksys4util13StrTreeMapKeyEE8eraseMinEPNS_11TreeMapNodeIS3_EE", + "demangled": "sead::TreeMapImpl::eraseMin(sead::TreeMapNode*)", + "file": "/home/jesus/botw/lib/sead/include/container/seadTreeMap.h", + "line": 458, + "diff_count": 5, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 1, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100af71c0", + "size": 1008, + "mangled": "_ZN4sead4Path6getExtEPNS_22BufferedSafeStringBaseIcEERKNS_14SafeStringBaseIcEE", + "demangled": "sead::Path::getExt(sead::BufferedSafeStringBase*, sead::SafeStringBase const&)", + "file": "/home/jesus/botw/lib/sead/modules/src/filedevice/seadPath.cpp", + "line": 54, + "diff_count": 10, + "mod_lines": 3, + "missing_lines": 3, + "extra_lines": 1, + "reorder_lines": 3, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100b220a0", + "size": 188, + "mangled": "_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_", + "demangled": "sead::Vector2 sead::hostio::curveLinear2DVec2_(float, sead::hostio::CurveDataInfo const*, float const*)", + "file": "/home/jesus/botw/lib/sead/modules/src/hostio/seadHostIOCurve.cpp", + "line": 237, + "diff_count": 5, + "mod_lines": 3, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100b21a44", + "size": 196, + "mangled": "_ZN4sead6hostio14curveLinear2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_", + "demangled": "float sead::hostio::curveLinear2D_(float, sead::hostio::CurveDataInfo const*, float const*)", + "file": "/home/jesus/botw/lib/sead/modules/src/hostio/seadHostIOCurve.cpp", + "line": 126, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100b21888", + "size": 208, + "mangled": "_ZN4sead6hostio12curveHermit_IfEET_fPKNS0_13CurveDataInfoEPKS2_", + "demangled": "float sead::hostio::curveHermit_(float, sead::hostio::CurveDataInfo const*, float const*)", + "file": "/home/jesus/botw/lib/sead/modules/src/hostio/seadHostIOCurve.cpp", + "line": 72, + "diff_count": 10, + "mod_lines": 4, + "missing_lines": 3, + "extra_lines": 3, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100b21eb4", + "size": 208, + "mangled": "_ZN4sead6hostio16curveHermitVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_", + "demangled": "sead::Vector2 sead::hostio::curveHermitVec2_(float, sead::hostio::CurveDataInfo const*, float const*)", + "file": "/home/jesus/botw/lib/sead/modules/src/hostio/seadHostIOCurve.cpp", + "line": 207, + "diff_count": 10, + "mod_lines": 4, + "missing_lines": 3, + "extra_lines": 3, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100b21b08", + "size": 344, + "mangled": "_ZN4sead6hostio14curveHermit2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_", + "demangled": "float sead::hostio::curveHermit2D_(float, sead::hostio::CurveDataInfo const*, float const*)", + "file": "/home/jesus/botw/lib/sead/modules/src/hostio/seadHostIOCurve.cpp", + "line": 147, + "diff_count": 15, + "mod_lines": 9, + "missing_lines": 3, + "extra_lines": 3, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100b152fc", + "size": 356, + "mangled": "_ZN4sead11ResourceMgr6createERKNS0_9CreateArgE", + "demangled": "sead::ResourceMgr::create(sead::ResourceMgr::CreateArg const&)", + "file": "/home/jesus/botw/lib/sead/modules/src/resource/seadResourceMgr.cpp", + "line": 36, + "diff_count": 12, + "mod_lines": 3, + "missing_lines": 0, + "extra_lines": 5, + "reorder_lines": 4, + "category": "EXTRA_CODE" + }, + { + "addr": "0x0000007100b1959c", + "size": 200, + "mangled": "_ZN4sead13ReadWriteLock11writeUnlockEv", + "demangled": "sead::ReadWriteLock::writeUnlock()", + "file": "/home/jesus/botw/lib/sead/modules/src/thread/seadReadWriteLock.cpp", + "line": 41, + "diff_count": 6, + "mod_lines": 2, + "missing_lines": 2, + "extra_lines": 1, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071006a1c04", + "size": 1120, + "mangled": "_ZN5uking5query24RandomChoiceExceptOnFlag7doQueryEv", + "demangled": "uking::query::RandomChoiceExceptOnFlag::doQuery()", + "file": "/home/jesus/botw/src/Game/AI/Query/queryRandomChoiceExceptOnFlag.cpp", + "line": 24, + "diff_count": 12, + "mod_lines": 12, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x000000710000af44", + "size": 720, + "mangled": "_ZN5uking3act25getDragonItemDropPositionEPN4sead7Vector3IfEERKS3_", + "demangled": "uking::act::getDragonItemDropPosition(sead::Vector3*, sead::Vector3 const&)", + "file": "/home/jesus/botw/src/Game/Actor/actDragon.cpp", + "line": 16, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100666414", + "size": 412, + "mangled": "_ZN5uking3act25CreatePlayerEquipActorMgr8postCalcEv", + "demangled": "uking::act::CreatePlayerEquipActorMgr::postCalc()", + "file": "/home/jesus/botw/src/Game/Actor/actPlayerCreateMgr.cpp", + "line": 58, + "diff_count": 2, + "mod_lines": 2, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x00000071002dfe10", + "size": 292, + "mangled": "_ZN5uking3act18WeaponModifierInfo27pickRandomBlueModifierActorERKN4ksys3act20ActorConstDataAccessE", + "demangled": "uking::act::WeaponModifierInfo::pickRandomBlueModifierActor(ksys::act::ActorConstDataAccess const&)", + "file": "/home/jesus/botw/src/Game/Actor/actWeapon.cpp", + "line": 415, + "diff_count": 4, + "mod_lines": 4, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x0000007100d6c0d8", + "size": 916, + "mangled": "_ZN5uking3aoc7Manager12parseVersionEv", + "demangled": "uking::aoc::Manager::parseVersion()", + "file": "/home/jesus/botw/src/Game/DLC/aocManager.cpp", + "line": 406, + "diff_count": 7, + "mod_lines": 3, + "missing_lines": 0, + "extra_lines": 3, + "reorder_lines": 1, + "category": "EXTRA_CODE" + }, + { + "addr": "0x0000007100979224", + "size": 208, + "mangled": "_ZNK5uking2ui16PauseMenuDataMgr19getEquippedItemNameENS0_13PouchItemTypeE", + "demangled": "uking::ui::PauseMenuDataMgr::getEquippedItemName(uking::ui::PouchItemType) const", + "file": "/home/jesus/botw/src/Game/UI/uiPauseMenuDataMgr.cpp", + "line": 2471, + "diff_count": 6, + "mod_lines": 1, + "missing_lines": 0, + "extra_lines": 2, + "reorder_lines": 3, + "category": "EXTRA_CODE" + }, + { + "addr": "0x000000710097dc14", + "size": 912, + "mangled": "_ZNK5uking2ui16PauseMenuDataMgr11countArmorsERKN4sead14SafeStringBaseIcEE", + "demangled": "uking::ui::PauseMenuDataMgr::countArmors(sead::SafeStringBase const&) const", + "file": "/home/jesus/botw/src/Game/UI/uiPauseMenuDataMgr.cpp", + "line": 2828, + "diff_count": 21, + "mod_lines": 2, + "missing_lines": 9, + "extra_lines": 8, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100974cec", + "size": 1556, + "mangled": "_ZN5uking2ui16PauseMenuDataMgr16removeCookResultERKN4sead14SafeStringBaseIcEEib", + "demangled": "uking::ui::PauseMenuDataMgr::removeCookResult(sead::SafeStringBase const&, int, bool)", + "file": "/home/jesus/botw/src/Game/UI/uiPauseMenuDataMgr.cpp", + "line": 1924, + "diff_count": 1, + "mod_lines": 1, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x0000007100d79c30", + "size": 2528, + "mangled": "_ZN4ksys3act9Awareness14loadSystemDataEv", + "demangled": "ksys::act::Awareness::loadSystemData()", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/Awareness/actAwareness.cpp", + "line": 73, + "diff_count": 22, + "mod_lines": 12, + "missing_lines": 4, + "extra_lines": 2, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x000000710124c6e8", + "size": 18196, + "mangled": "_ZN4ksys3act8LodStateC1EPN4sead4HeapENS2_7BitFlagIjEEPNS0_5ActorEif", + "demangled": "ksys::act::LodState::LodState(sead::Heap*, sead::BitFlag, ksys::act::Actor*, int, float)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/LOD/actLodState.cpp", + "line": 16, + "diff_count": 49, + "mod_lines": 20, + "missing_lines": 1, + "extra_lines": 24, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x00000071012f28a0", + "size": 428, + "mangled": "_ZNK4ksys3act9ASSetting13getBoneParamsERKN4sead14SafeStringBaseIcEE", + "demangled": "ksys::act::ASSetting::getBoneParams(sead::SafeStringBase const&) const", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actASSetting.cpp", + "line": 19, + "diff_count": 18, + "mod_lines": 3, + "missing_lines": 7, + "extra_lines": 4, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011c2e60", + "size": 1208, + "mangled": "_ZN4ksys3act5ActorC1ERKNS0_8BaseProc9CreateArgE", + "demangled": "ksys::act::Actor::Actor(ksys::act::BaseProc::CreateArg const&)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actActor.cpp", + "line": 18, + "diff_count": 14, + "mod_lines": 5, + "missing_lines": 3, + "extra_lines": 4, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011dd488", + "size": 244, + "mangled": "_ZN4ksys3act12ActorCreator26enableDistanceUnloadChecksEv", + "demangled": "ksys::act::ActorCreator::enableDistanceUnloadChecks()", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actActorCreator.cpp", + "line": 170, + "diff_count": 15, + "mod_lines": 3, + "missing_lines": 9, + "extra_lines": 2, + "reorder_lines": 1, + "category": "COMPLEX" + }, + { + "addr": "0x0000007101169e58", + "size": 620, + "mangled": "_ZNK4ksys3act13ActorParamMgr8getParamEPKcPPNS0_10ActorParamE", + "demangled": "ksys::act::ActorParamMgr::getParam(char const*, ksys::act::ActorParam**) const", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actActorParamMgr.cpp", + "line": 178, + "diff_count": 8, + "mod_lines": 2, + "missing_lines": 2, + "extra_lines": 2, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100ede398", + "size": 328, + "mangled": "_ZN4ksys3act16hasAnyRevivalTagERKN4sead14SafeStringBaseIcEE", + "demangled": "ksys::act::hasAnyRevivalTag(sead::SafeStringBase const&)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actActorUtil.cpp", + "line": 194, + "diff_count": 32, + "mod_lines": 17, + "missing_lines": 11, + "extra_lines": 0, + "reorder_lines": 4, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071011bd308", + "size": 680, + "mangled": "_ZN4ksys3act11BaseProcMgr4initEPN4sead4HeapEijjjRKNS0_23BaseProcInitializerArgsE", + "demangled": "ksys::act::BaseProcMgr::init(sead::Heap*, int, unsigned int, unsigned int, unsigned int, ksys::act::BaseProcInitializerArgs const&)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actBaseProcMgr.cpp", + "line": 46, + "diff_count": 102, + "mod_lines": 1, + "missing_lines": 101, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100dca3b4", + "size": 196, + "mangled": "_ZN4ksys3act13InstParamPack6Buffer3addEPN4sead10IDelegate1IPNS0_8BaseProcEEERKNS3_14SafeStringBaseIcEE", + "demangled": "ksys::act::InstParamPack::Buffer::add(sead::IDelegate1*, sead::SafeStringBase const&)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actInstParamPack.cpp", + "line": 27, + "diff_count": 9, + "mod_lines": 0, + "missing_lines": 4, + "extra_lines": 5, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100dca2d4", + "size": 224, + "mangled": "_ZN4ksys3act13InstParamPack6Buffer3addEPKvRKN4sead14SafeStringBaseIcEEiNS1_9EntryTypeE", + "demangled": "ksys::act::InstParamPack::Buffer::add(void const*, sead::SafeStringBase const&, int, ksys::act::InstParamPack::EntryType)", + "file": "/home/jesus/botw/src/KingSystem/ActorSystem/actInstParamPack.cpp", + "line": 14, + "diff_count": 2, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100e422c8", + "size": 356, + "mangled": "_ZNK4ksys3eco9Ecosystem17getEcoTraitsByNumEiPNS0_15EcosystemTraitsE", + "demangled": "ksys::eco::Ecosystem::getEcoTraitsByNum(int, ksys::eco::EcosystemTraits*) const", + "file": "/home/jesus/botw/src/KingSystem/Ecosystem/ecoSystem.cpp", + "line": 290, + "diff_count": 29, + "mod_lines": 20, + "missing_lines": 8, + "extra_lines": 1, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100e41fe0", + "size": 384, + "mangled": "_ZNK4ksys3eco9Ecosystem19getStatusEffectInfoENS0_12StatusEffectEiPNS0_16StatusEffectInfoE", + "demangled": "ksys::eco::Ecosystem::getStatusEffectInfo(ksys::eco::StatusEffect, int, ksys::eco::StatusEffectInfo*) const", + "file": "/home/jesus/botw/src/KingSystem/Ecosystem/ecoSystem.cpp", + "line": 207, + "diff_count": 1, + "mod_lines": 1, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x0000007100dc67ac", + "size": 1132, + "mangled": "_ZN4ksys3evt16ResourceTimeline13setUpBindingsEPNS0_13ActorBindingsEPN4sead4HeapE", + "demangled": "ksys::evt::ResourceTimeline::setUpBindings(ksys::evt::ActorBindings*, sead::Heap*)", + "file": "/home/jesus/botw/src/KingSystem/Event/evtResourceTimeline.cpp", + "line": 122, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071008e4290", + "size": 276, + "mangled": "_ZN4ksys3gdt8resetS32ENS0_10FlagHandleEb", + "demangled": "ksys::gdt::resetS32(ksys::gdt::FlagHandle, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtFlagUtils.h", + "line": 176, + "diff_count": 29, + "mod_lines": 12, + "missing_lines": 10, + "extra_lines": 2, + "reorder_lines": 5, + "category": "COMPLEX" + }, + { + "addr": "0x00000071008e465c", + "size": 276, + "mangled": "_ZN4ksys3gdt10resetStr64ENS0_10FlagHandleEb", + "demangled": "ksys::gdt::resetStr64(ksys::gdt::FlagHandle, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtFlagUtils.h", + "line": 179, + "diff_count": 29, + "mod_lines": 12, + "missing_lines": 10, + "extra_lines": 2, + "reorder_lines": 5, + "category": "COMPLEX" + }, + { + "addr": "0x00000071008e5440", + "size": 276, + "mangled": "_ZN4ksys3gdt8resetF32ENS0_10FlagHandleEb", + "demangled": "ksys::gdt::resetF32(ksys::gdt::FlagHandle, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtFlagUtils.h", + "line": 177, + "diff_count": 29, + "mod_lines": 12, + "missing_lines": 10, + "extra_lines": 2, + "reorder_lines": 5, + "category": "COMPLEX" + }, + { + "addr": "0x00000071008e4be8", + "size": 300, + "mangled": "_ZN4ksys3gdt8resetS32ENS0_10FlagHandleEib", + "demangled": "ksys::gdt::resetS32(ksys::gdt::FlagHandle, int, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtFlagUtils.h", + "line": 176, + "diff_count": 30, + "mod_lines": 14, + "missing_lines": 10, + "extra_lines": 2, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x00000071008f4248", + "size": 300, + "mangled": "_ZN4ksys3gdt10resetVec3fENS0_10FlagHandleEib", + "demangled": "ksys::gdt::resetVec3f(ksys::gdt::FlagHandle, int, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtFlagUtils.h", + "line": 182, + "diff_count": 30, + "mod_lines": 14, + "missing_lines": 10, + "extra_lines": 2, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100dce9ec", + "size": 572, + "mangled": "_ZN4ksys3gdt7ManagerC1Ev", + "demangled": "ksys::gdt::Manager::Manager()", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtManager.cpp", + "line": 33, + "diff_count": 50, + "mod_lines": 26, + "missing_lines": 10, + "extra_lines": 11, + "reorder_lines": 3, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100dcf1c4", + "size": 1264, + "mangled": "_ZN4ksys3gdt7Manager4initEPN4sead4HeapEPNS2_9FrameworkE", + "demangled": "ksys::gdt::Manager::init(sead::Heap*, sead::Framework*)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtManager.cpp", + "line": 80, + "diff_count": 17, + "mod_lines": 9, + "missing_lines": 3, + "extra_lines": 5, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100df2904", + "size": 360, + "mangled": "_ZN4ksys3gdt12getFlagColorENS0_8FlagTypeE", + "demangled": "ksys::gdt::getFlagColor(ksys::gdt::FlagType)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtTriggerParam.cpp", + "line": 2461, + "diff_count": 27, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 27, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100de5fb4", + "size": 444, + "mangled": "_ZN4ksys3gdt12TriggerParam8setVec3fERKN4sead7Vector3IfEERKNS2_14SafeStringBaseIcEEbbb", + "demangled": "ksys::gdt::TriggerParam::setVec3f(sead::Vector3 const&, sead::SafeStringBase const&, bool, bool, bool)", + "file": "/home/jesus/botw/src/KingSystem/GameData/gdtTriggerParam.cpp", + "line": 1442, + "diff_count": 20, + "mod_lines": 7, + "missing_lines": 9, + "extra_lines": 2, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100650420", + "size": 220, + "mangled": "_ZN4ksys3map13AutoPlacement10placeGroupEPNS0_20AutoPlacementFlowResE", + "demangled": "ksys::map::AutoPlacement::placeGroup(ksys::map::AutoPlacementFlowRes*)", + "file": "/home/jesus/botw/src/KingSystem/Map/mapAutoPlacement.cpp", + "line": 222, + "diff_count": 22, + "mod_lines": 10, + "missing_lines": 8, + "extra_lines": 3, + "reorder_lines": 1, + "category": "COMPLEX" + }, + { + "addr": "0x000000710064ef24", + "size": 264, + "mangled": "_ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE", + "demangled": "ksys::map::AutoPlacement::sub_710064EF24(ksys::map::ActorSpawnInfo*, sead::Vector3 const&)", + "file": "/home/jesus/botw/src/KingSystem/Map/mapAutoPlacement.cpp", + "line": 179, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100650c28", + "size": 360, + "mangled": "_ZN4ksys3map13AutoPlacement14sub_7100650C28EPNS_4phys9RigidBodyE", + "demangled": "ksys::map::AutoPlacement::sub_7100650C28(ksys::phys::RigidBody*)", + "file": "/home/jesus/botw/src/KingSystem/Map/mapAutoPlacement.cpp", + "line": 298, + "diff_count": 2, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x000000710064e178", + "size": 460, + "mangled": "_ZN4ksys3map13AutoPlacement14sub_710064E178ERKN4sead14SafeStringBaseIcEEjRKNS2_7Vector3IfEE", + "demangled": "ksys::map::AutoPlacement::sub_710064E178(sead::SafeStringBase const&, unsigned int, sead::Vector3 const&)", + "file": "/home/jesus/botw/src/KingSystem/Map/mapAutoPlacement.cpp", + "line": 99, + "diff_count": 13, + "mod_lines": 6, + "missing_lines": 2, + "extra_lines": 1, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x00000071012ab84c", + "size": 192, + "mangled": "_ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi", + "demangled": "ksys::phys::RagdollController::recalculateEffectiveBoneWeight(int)", + "file": "/home/jesus/botw/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp", + "line": 126, + "diff_count": 5, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 2, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071012abadc", + "size": 284, + "mangled": "_ZN4ksys4phys17RagdollController16resetMultipliersEv", + "demangled": "ksys::phys::RagdollController::resetMultipliers()", + "file": "/home/jesus/botw/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp", + "line": 152, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071012ab97c", + "size": 344, + "mangled": "_ZN4ksys4phys17RagdollController9setFactorEf", + "demangled": "ksys::phys::RagdollController::setFactor(float)", + "file": "/home/jesus/botw/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp", + "line": 104, + "diff_count": 1, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071012ab6e0", + "size": 364, + "mangled": "_ZN4ksys4phys17RagdollController13setBoneWeightEif", + "demangled": "ksys::phys::RagdollController::setBoneWeight(int, float)", + "file": "/home/jesus/botw/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp", + "line": 77, + "diff_count": 7, + "mod_lines": 0, + "missing_lines": 3, + "extra_lines": 3, + "reorder_lines": 1, + "category": "COMPLEX" + }, + { + "addr": "0x000000710122d6a8", + "size": 804, + "mangled": "_ZN4ksys4phys12BoneAccessor17setBoneModelSpaceERKNS1_7IndicesERK14hkQsTransformfNS1_9PropagateE", + "demangled": "ksys::phys::BoneAccessor::setBoneModelSpace(ksys::phys::BoneAccessor::Indices const&, hkQsTransformf const&, ksys::phys::BoneAccessor::Propagate)", + "file": "/home/jesus/botw/src/KingSystem/Physics/Rig/physBoneAccessor.cpp", + "line": 90, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x000000710122c254", + "size": 1028, + "mangled": "_ZNK4ksys4phys17ModelBoneAccessor20copyModelPoseToHavokENS1_11EnableScaleE", + "demangled": "ksys::phys::ModelBoneAccessor::copyModelPoseToHavok(ksys::phys::ModelBoneAccessor::EnableScale) const", + "file": "/home/jesus/botw/src/KingSystem/Physics/Rig/physModelBoneAccessor.cpp", + "line": 251, + "diff_count": 3, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 3, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100f8cfa0", + "size": 424, + "mangled": "_ZN4ksys4phys9RigidBody10addToWorldEv", + "demangled": "ksys::phys::RigidBody::addToWorld()", + "file": "/home/jesus/botw/src/KingSystem/Physics/RigidBody/physRigidBody.cpp", + "line": 184, + "diff_count": 2, + "mod_lines": 1, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100f967f4", + "size": 428, + "mangled": "_ZNK4ksys4phys9RigidBody14getAabbInWorldEPN4sead9BoundBox3IfEE", + "demangled": "ksys::phys::RigidBody::getAabbInWorld(sead::BoundBox3*) const", + "file": "/home/jesus/botw/src/KingSystem/Physics/RigidBody/physRigidBody.cpp", + "line": 1779, + "diff_count": 6, + "mod_lines": 3, + "missing_lines": 3, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100fa4594", + "size": 920, + "mangled": "_ZN4ksys4phys21RigidBodyMotionSensor26setTransformFromLinkedBodyERK10hkVector4fRK13hkQuaternionf", + "demangled": "ksys::phys::RigidBodyMotionSensor::setTransformFromLinkedBody(hkVector4f const&, hkQuaternionf const&)", + "file": "/home/jesus/botw/src/KingSystem/Physics/RigidBody/physRigidBodyMotionSensor.cpp", + "line": 99, + "diff_count": 2, + "mod_lines": 2, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x0000007100fcf474", + "size": 576, + "mangled": "_ZN4ksys4phys15ContactListener34removeLayerPairForContactPointInfoEPNS0_21LayerContactPointInfoENS0_12ContactLayerES4_", + "demangled": "ksys::phys::ContactListener::removeLayerPairForContactPointInfo(ksys::phys::LayerContactPointInfo*, ksys::phys::ContactLayer, ksys::phys::ContactLayer)", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physContactListener.cpp", + "line": 455, + "diff_count": 16, + "mod_lines": 7, + "missing_lines": 2, + "extra_lines": 3, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100fb7258", + "size": 2036, + "mangled": "_ZN4ksys4phys21EntityContactListener27regularContactPointCallbackERK20hkpContactPointEventPNS0_9RigidBodyES6_PN4sead9SafeArrayIjLi2EEE", + "demangled": "ksys::phys::EntityContactListener::regularContactPointCallback(hkpContactPointEvent const&, ksys::phys::RigidBody*, ksys::phys::RigidBody*, sead::SafeArray*)", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physEntityContactListener.cpp", + "line": 486, + "diff_count": 3, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100fb511c", + "size": 1440, + "mangled": "_ZNK4ksys4phys17EntityGroupFilter24testCollisionForEntitiesEjj", + "demangled": "ksys::phys::EntityGroupFilter::testCollisionForEntities(unsigned int, unsigned int) const", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physEntityGroupFilter.cpp", + "line": 108, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100fc4c48", + "size": 456, + "mangled": "_ZN4ksys4phys15RayHitCollector9addRayHitERK9hkpCdBodyRK30hkpShapeRayCastCollectorOutput", + "demangled": "ksys::phys::RayHitCollector::addRayHit(hkpCdBody const&, hkpShapeRayCastCollectorOutput const&)", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physRayCast.cpp", + "line": 526, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100fc4e60", + "size": 476, + "mangled": "_ZN4ksys4phys29NormalCheckingRayHitCollector9addRayHitERK9hkpCdBodyRK30hkpShapeRayCastCollectorOutput", + "demangled": "ksys::phys::NormalCheckingRayHitCollector::addRayHit(hkpCdBody const&, hkpShapeRayCastCollectorOutput const&)", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physRayCast.cpp", + "line": 553, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100fc92bc", + "size": 456, + "mangled": "_ZN4ksys4phys17ShapeCastWithInfo12executeQueryENS0_9ShapeCast17WeldClosestPointsE", + "demangled": "ksys::phys::ShapeCastWithInfo::executeQuery(ksys::phys::ShapeCast::WeldClosestPoints)", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physShapeCastWithInfo.cpp", + "line": 33, + "diff_count": 2, + "mod_lines": 1, + "missing_lines": 1, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071012b1f50", + "size": 484, + "mangled": "_ZN4ksys4phys10SystemDataC1Ev", + "demangled": "ksys::phys::SystemData::SystemData()", + "file": "/home/jesus/botw/src/KingSystem/Physics/System/physSystemData.cpp", + "line": 11, + "diff_count": 10, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 2, + "reorder_lines": 5, + "category": "COMPLEX" + }, + { + "addr": "0x00000071012b4904", + "size": 608, + "mangled": "_ZN4ksys3qst9ActorData4initEPN2al9ByamlIterEPN4sead22BufferedSafeStringBaseIcEE", + "demangled": "ksys::qst::ActorData::init(al::ByamlIter*, sead::BufferedSafeStringBase*)", + "file": "/home/jesus/botw/src/KingSystem/Quest/qstActorData.cpp", + "line": 19, + "diff_count": 33, + "mod_lines": 8, + "missing_lines": 6, + "extra_lines": 14, + "reorder_lines": 5, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100fd8244", + "size": 220, + "mangled": "_ZN4ksys3qst5QuestD1Ev", + "demangled": "ksys::qst::Quest::~Quest()", + "file": "/home/jesus/botw/src/KingSystem/Quest/qstQuest.cpp", + "line": 7, + "diff_count": 5, + "mod_lines": 0, + "missing_lines": 4, + "extra_lines": 0, + "reorder_lines": 1, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x0000007100fd806c", + "size": 472, + "mangled": "_ZN4ksys3qst5QuestC1ERKN4sead14SafeStringBaseIcEEPNS2_4HeapE", + "demangled": "ksys::qst::Quest::Quest(sead::SafeStringBase const&, sead::Heap*)", + "file": "/home/jesus/botw/src/KingSystem/Quest/qstQuest.cpp", + "line": 12, + "diff_count": 53, + "mod_lines": 20, + "missing_lines": 11, + "extra_lines": 18, + "reorder_lines": 4, + "category": "COMPLEX" + }, + { + "addr": "0x0000007100fdc2a4", + "size": 324, + "mangled": "_ZN4ksys3qst4Step14sub_7100FDC2A4EPN2al9ByamlIterE", + "demangled": "ksys::qst::Step::sub_7100FDC2A4(al::ByamlIter*)", + "file": "/home/jesus/botw/src/KingSystem/Quest/qstStep.cpp", + "line": 197, + "diff_count": 6, + "mod_lines": 2, + "missing_lines": 1, + "extra_lines": 2, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x0000007100fdb538", + "size": 604, + "mangled": "_ZNK4ksys3qst4Step14sub_7100FDB538EPNS_3act5ActorERKN4sead14SafeStringBaseIcEE", + "demangled": "ksys::qst::Step::sub_7100FDB538(ksys::act::Actor*, sead::SafeStringBase const&) const", + "file": "/home/jesus/botw/src/KingSystem/Quest/qstStep.cpp", + "line": 82, + "diff_count": 67, + "mod_lines": 38, + "missing_lines": 4, + "extra_lines": 16, + "reorder_lines": 9, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011a9fa4", + "size": 196, + "mangled": "_ZN4ksys3res9AIProgram9finalize_Ev", + "demangled": "ksys::res::AIProgram::finalize_()", + "file": "/home/jesus/botw/src/KingSystem/Resource/Actor/resResourceAIProgram.cpp", + "line": 264, + "diff_count": 2, + "mod_lines": 0, + "missing_lines": 2, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071012ed7dc", + "size": 392, + "mangled": "_ZN4ksys3res22ASResourceWithChildren7doParseERKNS0_10ASResource9ParseArgsE", + "demangled": "ksys::res::ASResourceWithChildren::doParse(ksys::res::ASResource::ParseArgs const&)", + "file": "/home/jesus/botw/src/KingSystem/Resource/Actor/resResourceASResource.cpp", + "line": 220, + "diff_count": 1, + "mod_lines": 1, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x00000071012f7a78", + "size": 7664, + "mangled": "_ZN4ksys3res11BoneControl6parse_EPhmPN4sead4HeapE", + "demangled": "ksys::res::BoneControl::parse_(unsigned char*, unsigned long, sead::Heap*)", + "file": "/home/jesus/botw/src/KingSystem/Resource/Actor/resResourceBoneControl.cpp", + "line": 20, + "diff_count": 17, + "mod_lines": 5, + "missing_lines": 5, + "extra_lines": 5, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x00000071012bcc10", + "size": 384, + "mangled": "_ZNK4ksys3res21ResourceInfoContainer15getResourceSizeERKN4sead14SafeStringBaseIcEE", + "demangled": "ksys::res::ResourceInfoContainer::getResourceSize(sead::SafeStringBase const&) const", + "file": "/home/jesus/botw/src/KingSystem/Resource/resInfoContainer.cpp", + "line": 82, + "diff_count": 1, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071012bca1c", + "size": 500, + "mangled": "_ZN4ksys3res21ResourceInfoContainer21loadResourceSizeTableEv", + "demangled": "ksys::res::ResourceInfoContainer::loadResourceSizeTable()", + "file": "/home/jesus/botw/src/KingSystem/Resource/resInfoContainer.cpp", + "line": 15, + "diff_count": 8, + "mod_lines": 3, + "missing_lines": 2, + "extra_lines": 3, + "reorder_lines": 0, + "category": "COMPLEX" + }, + { + "addr": "0x000000710127bb5c", + "size": 936, + "mangled": "_ZN4ksys3resL21sortGameSaveDataFlagsERN4sead10RingBufferINS0_12GameSaveData4FlagEEE", + "demangled": "ksys::res::sortGameSaveDataFlags(sead::RingBuffer&)", + "file": "/home/jesus/botw/src/KingSystem/Resource/resResourceGameSaveData.cpp", + "line": 192, + "diff_count": 230, + "mod_lines": 1, + "missing_lines": 228, + "extra_lines": 0, + "reorder_lines": 1, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x000000710127af98", + "size": 1572, + "mangled": "_ZN4ksys3res12GameSaveData9doCreate_EPhjPN4sead4HeapE", + "demangled": "ksys::res::GameSaveData::doCreate_(unsigned char*, unsigned int, sead::Heap*)", + "file": "/home/jesus/botw/src/KingSystem/Resource/resResourceGameSaveData.cpp", + "line": 49, + "diff_count": 3, + "mod_lines": 3, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "REG_OR_CONST_DIFF" + }, + { + "addr": "0x000000710120de08", + "size": 228, + "mangled": "_ZNK4ksys3res12ResourceUnit9isParseOkEv", + "demangled": "ksys::res::ResourceUnit::isParseOk() const", + "file": "/home/jesus/botw/src/KingSystem/Resource/resUnit.cpp", + "line": 199, + "diff_count": 6, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 4, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071010ba598", + "size": 176, + "mangled": "_GLOBAL__sub_I_BasicProfiler.cpp", + "demangled": "_GLOBAL__sub_I_BasicProfiler.cpp", + "file": "/home/jesus/botw/src/KingSystem/System/BasicProfiler.cpp", + "line": 0, + "diff_count": 22, + "mod_lines": 14, + "missing_lines": 2, + "extra_lines": 1, + "reorder_lines": 5, + "category": "GLOBAL_INITIALIZER" + }, + { + "addr": "0x0000007100fde638", + "size": 580, + "mangled": "_ZN4ksys18OverlayArenaSystem4initERKNS0_7InitArgEPN4sead4HeapE", + "demangled": "ksys::OverlayArenaSystem::init(ksys::OverlayArenaSystem::InitArg const&, sead::Heap*)", + "file": "/home/jesus/botw/src/KingSystem/System/OverlayArenaSystem.cpp", + "line": 67, + "diff_count": 3, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071011c1ef8", + "size": 192, + "mangled": "_ZN4ksys8VFRVec3f11updateStatsEv", + "demangled": "ksys::VFRVec3f::updateStats()", + "file": "/home/jesus/botw/src/KingSystem/System/VFRValue.cpp", + "line": 68, + "diff_count": 0, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071011f53a0", + "size": 236, + "mangled": "_ZN4ksys17MessageDispatcher29sendMessageOnProcessingThreadERKNS_16MesTransceiverIdES3_RKNS_11MessageTypeEPvbb", + "demangled": "ksys::MessageDispatcher::sendMessageOnProcessingThread(ksys::MesTransceiverId const&, ksys::MesTransceiverId const&, ksys::MessageType const&, void*, bool, bool)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/MessageDispatcher.cpp", + "line": 246, + "diff_count": 9, + "mod_lines": 3, + "missing_lines": 2, + "extra_lines": 2, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011f5668", + "size": 248, + "mangled": "_ZN4ksys17MessageDispatcher6updateEv", + "demangled": "ksys::MessageDispatcher::update()", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/MessageDispatcher.cpp", + "line": 335, + "diff_count": 1, + "mod_lines": 0, + "missing_lines": 0, + "extra_lines": 0, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071011f7d38", + "size": 544, + "mangled": "_ZN4ksys4util4Task13submitRequestERNS0_11TaskRequestE", + "demangled": "ksys::util::Task::submitRequest(ksys::util::TaskRequest&)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/Task.cpp", + "line": 70, + "diff_count": 7, + "mod_lines": 1, + "missing_lines": 3, + "extra_lines": 1, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011f8bc8", + "size": 276, + "mangled": "_ZN4ksys4util7TaskMgr24fetchIdleTaskForRequest_ERNS0_14TaskMgrRequestEb", + "demangled": "ksys::util::TaskMgr::fetchIdleTaskForRequest_(ksys::util::TaskMgrRequest&, bool)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/TaskMgr.cpp", + "line": 84, + "diff_count": 6, + "mod_lines": 1, + "missing_lines": 2, + "extra_lines": 2, + "reorder_lines": 1, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071011f8f18", + "size": 380, + "mangled": "_ZN4ksys4util7TaskMgr4initEiPN4sead4HeapERNS2_10IDelegate1IPPNS0_11ManagedTaskEEE", + "demangled": "ksys::util::TaskMgr::init(int, sead::Heap*, sead::IDelegate1&)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/TaskMgr.cpp", + "line": 159, + "diff_count": 11, + "mod_lines": 1, + "missing_lines": 4, + "extra_lines": 4, + "reorder_lines": 2, + "category": "COMPLEX" + }, + { + "addr": "0x00000071010c1f6c", + "size": 384, + "mangled": "_ZN4ksys4util13TaskQueueBase24notifyThreadsForNewTasksEv", + "demangled": "ksys::util::TaskQueueBase::notifyThreadsForNewTasks()", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/TaskQueueBase.cpp", + "line": 303, + "diff_count": 2, + "mod_lines": 1, + "missing_lines": 1, + "extra_lines": 0, + "reorder_lines": 0, + "category": "MISSING_CODE_OR_STRIPPED" + }, + { + "addr": "0x00000071010c23fc", + "size": 860, + "mangled": "_ZN4ksys4util13TaskQueueBase9fetchTaskEPPNS0_4TaskE", + "demangled": "ksys::util::TaskQueueBase::fetchTask(ksys::util::Task**)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/TaskQueueBase.cpp", + "line": 411, + "diff_count": 11, + "mod_lines": 2, + "missing_lines": 4, + "extra_lines": 2, + "reorder_lines": 3, + "category": "COMPLEX" + }, + { + "addr": "0x00000071011f6e10", + "size": 624, + "mangled": "_ZN4ksys4util10TaskThread5calc_El", + "demangled": "ksys::util::TaskThread::calc_(long)", + "file": "/home/jesus/botw/src/KingSystem/Utils/Thread/TaskThread.cpp", + "line": 141, + "diff_count": 2, + "mod_lines": 0, + "missing_lines": 1, + "extra_lines": 1, + "reorder_lines": 0, + "category": "FEW_DIFF_LINES" + }, + { + "addr": "0x00000071010f8438", + "size": 188, + "mangled": "_ZN4ksys5world7Manager15setIgnitedLevelEifN4sead7Vector3IfEE", + "demangled": "ksys::world::Manager::setIgnitedLevel(int, float, sead::Vector3)", + "file": "/home/jesus/botw/src/KingSystem/World/worldManager.cpp", + "line": 881, + "diff_count": 7, + "mod_lines": 2, + "missing_lines": 2, + "extra_lines": 3, + "reorder_lines": 0, + "category": "COMPLEX" + } +] \ No newline at end of file diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 390b92ce2..0a8cf810e 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -1397,7 +1397,7 @@ Address,Quality,Size,Name 0x0000007100050144,O,000004,_ZN5uking6action26AscendingCurrentShieldable11loadParams_Ev 0x0000007100050148,O,000008,_ZNK5uking6action26AscendingCurrentShieldable27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100050150,O,000092,_ZNK5uking6action26AscendingCurrentShieldable18getRuntimeTypeInfoEv -0x00000071000501ac,U,000008,_ZN5uking6action16AscendingCurrent23hasUpdateForPreDeleteCbEv +0x00000071000501ac,O,000008,_ZN5uking6action16AscendingCurrent23hasUpdateForPreDeleteCbEv 0x00000071000501b4,U,000008,_ZN5uking6action16AscendingCurrent18updateForPreDeleteEv 0x00000071000501bc,O,000372,_ZN5uking6action26AscendingCurrentShieldable33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100050330,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action16AscendingCurrentEE9isDerivedEPKNS0_9InterfaceE @@ -1896,7 +1896,7 @@ Address,Quality,Size,Name 0x0000007100061c30,O,000548,_ZN5uking6action24MotorcycleRiddenByPlayer11loadParams_Ev 0x0000007100061e54,O,000288,_ZNK5uking6action24MotorcycleRiddenByPlayer27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100061f74,O,000092,_ZNK5uking6action24MotorcycleRiddenByPlayer18getRuntimeTypeInfoEv -0x0000007100061fd0,U,000008,_ZN5uking6action24MotorcycleRiddenByPlayer23hasUpdateForPreDeleteCbEv +0x0000007100061fd0,O,000008,_ZN5uking6action24MotorcycleRiddenByPlayer23hasUpdateForPreDeleteCbEv 0x0000007100061fd8,U,000048,_ZN5uking6action24MotorcycleRiddenByPlayer18updateForPreDeleteEv 0x0000007100062008,U,000076, 0x0000007100062054,U,000204,act::DummyUserTag::rtti1 @@ -2246,7 +2246,7 @@ Address,Quality,Size,Name 0x000000710006b7cc,U,000024,uking::action::WindControlLength::m32 0x000000710006b7e4,O,000008,_ZNK5uking6action17WindControlLength27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710006b7ec,O,000092,_ZNK5uking6action17WindControlLength18getRuntimeTypeInfoEv -0x000000710006b848,U,000008,_ZN5uking6action11WindControl23hasUpdateForPreDeleteCbEv +0x000000710006b848,O,000008,_ZN5uking6action11WindControl23hasUpdateForPreDeleteCbEv 0x000000710006b850,U,000008,_ZN5uking6action11WindControl18updateForPreDeleteEv 0x000000710006b858,O,000372,_ZN5uking6action17WindControlLength33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710006b9cc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action11WindControlEE9isDerivedEPKNS0_9InterfaceE @@ -2522,7 +2522,7 @@ Address,Quality,Size,Name 0x0000007100083d8c,O,000276,_ZN5uking6action11AdvanceTime11loadParams_Ev 0x0000007100083ea0,O,000288,_ZNK5uking6action11AdvanceTime27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100083fc0,O,000092,_ZNK5uking6action11AdvanceTime18getRuntimeTypeInfoEv -0x000000710008401c,U,000008,_ZNK5uking6action10ShootArrow12isChangeableEv +0x000000710008401c,O,000008,_ZNK5uking6action10ShootArrow12isChangeableEv 0x0000007100084024,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action14ChargeAndShootEE9isDerivedEPKNS0_9InterfaceE 0x00000071000840b0,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action10ShootArrowEE9isDerivedEPKNS0_9InterfaceE 0x000000710008413c,O,000372,_ZN5uking6action10ShootArrow33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -2719,7 +2719,7 @@ Address,Quality,Size,Name 0x000000710008d3f4,O,000092,_ZNK5uking6action5Angry18getRuntimeTypeInfoEv 0x000000710008d450,O,000052,_ZN5uking6action5AngryD0Ev 0x000000710008d484,U,000028,_ZNK5uking6action12ActionWithAS10isFinishedEv -0x000000710008d4a0,U,000008,_ZNK5uking6action5Angry12isChangeableEv +0x000000710008d4a0,O,000008,_ZNK5uking6action5Angry12isChangeableEv 0x000000710008d4a8,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action12ActionWithASEE9isDerivedEPKNS0_9InterfaceE 0x000000710008d534,O,000048,_ZN5uking6action24AnimalASPlayCheckMoveDirC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710008d564,O,000004,_ZN5uking6action24AnimalASPlayCheckMoveDirD1Ev @@ -3054,7 +3054,7 @@ Address,Quality,Size,Name 0x0000007100097fc8,W,000108,_ZN5uking6action17AnmTimingBackWalk11loadParams_Ev 0x0000007100098034,O,000300,_ZNK5uking6action17AnmTimingBackWalk27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100098160,O,000092,_ZNK5uking6action17AnmTimingBackWalk18getRuntimeTypeInfoEv -0x00000071000981bc,U,000008,_ZNK5uking6action12BackWalkBase12isChangeableEv +0x00000071000981bc,O,000008,_ZNK5uking6action12BackWalkBase12isChangeableEv 0x00000071000981c4,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action14BackWalkWithASEE9isDerivedEPKNS0_9InterfaceE 0x0000007100098250,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action10BackWalkExEE9isDerivedEPKNS0_9InterfaceE 0x00000071000982dc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action12BackWalkBaseEE9isDerivedEPKNS0_9InterfaceE @@ -3693,7 +3693,7 @@ Address,Quality,Size,Name 0x00000071000b2ec0,O,000216,_ZNK5uking6action8BackStep27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000b2f98,O,000092,_ZNK5uking6action8BackStep18getRuntimeTypeInfoEv 0x00000071000b2ff4,O,000036,_ZN5uking6action8BackStepD0Ev -0x00000071000b3018,U,000008,_ZNK5uking6action16BackStepToTarget12isChangeableEv +0x00000071000b3018,O,000008,_ZNK5uking6action16BackStepToTarget12isChangeableEv 0x00000071000b3020,U,000012,uking::action::BackStepToTarget::m42 0x00000071000b302c,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action12BackStepBaseEE9isDerivedEPKNS0_9InterfaceE 0x00000071000b30b8,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action16BackStepToTargetEE9isDerivedEPKNS0_9InterfaceE @@ -4554,7 +4554,7 @@ Address,Quality,Size,Name 0x00000071000d4cc4,O,000004,_ZN5uking6action20CapturedActKnockBack11loadParams_Ev 0x00000071000d4cc8,O,000216,_ZNK5uking6action20CapturedActKnockBack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000d4da0,O,000092,_ZNK5uking6action20CapturedActKnockBack18getRuntimeTypeInfoEv -0x00000071000d4dfc,U,000008,_ZNK5uking6action15SmallDamageBase12isChangeableEv +0x00000071000d4dfc,O,000008,_ZNK5uking6action15SmallDamageBase12isChangeableEv 0x00000071000d4e04,M,000108,_ZN5uking6action7CarriedC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071000d4e70,W,000052,_ZN5uking6action7Carried5init_EPN4sead4HeapE 0x00000071000d4ea4,W,000132,_ZN5uking6action7CarriedD1Ev @@ -4568,7 +4568,7 @@ Address,Quality,Size,Name 0x00000071000d5b0c,O,000268,_ZN5uking6action7Carried11loadParams_Ev 0x00000071000d5c18,O,000288,_ZNK5uking6action7Carried27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000d5d38,O,000092,_ZNK5uking6action7Carried18getRuntimeTypeInfoEv -0x00000071000d5d94,U,000008,_ZN5uking6action7Carried23hasUpdateForPreDeleteCbEv +0x00000071000d5d94,O,000008,_ZN5uking6action7Carried23hasUpdateForPreDeleteCbEv 0x00000071000d5d9c,U,000008,_ZN5uking6action7Carried18updateForPreDeleteEv 0x00000071000d5da4,U,000008,uking::action::Carried::m34 0x00000071000d5dac,U,000028,uking::action::Carried::m36 @@ -4795,7 +4795,7 @@ Address,Quality,Size,Name 0x00000071000de720,O,000092,_ZNK5uking6action12Chemicalward18getRuntimeTypeInfoEv 0x00000071000de77c,W,000104,_ZN5uking6action12ChemicalwardD1Ev 0x00000071000de7e4,W,000112,_ZN5uking6action12ChemicalwardD0Ev -0x00000071000de854,U,000008,_ZNK5uking6action12Chemicalward12isChangeableEv +0x00000071000de854,O,000008,_ZNK5uking6action12Chemicalward12isChangeableEv 0x00000071000de85c,U,000056,AI_Action_ChuchuCommonDownTimer::ctor 0x00000071000de894,O,000004,_ZN5uking6action21ChuchuCommonDownTimerD1Ev 0x00000071000de898,O,000036,_ZN5uking6action21ChuchuCommonDownTimerD0Ev @@ -4818,8 +4818,8 @@ Address,Quality,Size,Name 0x00000071000dee40,O,000004,_ZN5uking6action22ChuchuDissappearEscape11loadParams_Ev 0x00000071000dee44,O,000300,_ZNK5uking6action22ChuchuDissappearEscape27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000def70,O,000092,_ZNK5uking6action22ChuchuDissappearEscape18getRuntimeTypeInfoEv -0x00000071000defcc,U,000008,_ZNK5uking6action22ChuchuDissappearEscape8isFailedEv -0x00000071000defd4,U,000008,_ZNK5uking6action22ChuchuDissappearEscape10isFinishedEv +0x00000071000defcc,O,000008,_ZNK5uking6action22ChuchuDissappearEscape8isFailedEv +0x00000071000defd4,O,000008,_ZNK5uking6action22ChuchuDissappearEscape10isFinishedEv 0x00000071000defdc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action26ChuchuDissappearEscapeBaseEE9isDerivedEPKNS0_9InterfaceE 0x00000071000df068,U,000132,AI_Action_ChuchuPreAttack::ctor 0x00000071000df0ec,W,000088,_ZN5uking6action15ChuchuPreAttackD1Ev @@ -4959,7 +4959,7 @@ Address,Quality,Size,Name 0x00000071000e3250,U,000028,_ZN5uking6action24CreateAndReplaceAssassin11onPreDeleteEv 0x00000071000e326c,O,000288,_ZNK5uking6action24CreateAndReplaceAssassin27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000e338c,O,000092,_ZNK5uking6action24CreateAndReplaceAssassin18getRuntimeTypeInfoEv -0x00000071000e33e8,U,000008,_ZN5uking6action24CreateAndReplaceAssassin14hasPreDeleteCbEv +0x00000071000e33e8,O,000008,_ZN5uking6action24CreateAndReplaceAssassin14hasPreDeleteCbEv 0x00000071000e33f0,U,000064, 0x00000071000e3430,U,000076, 0x00000071000e347c,U,000064, @@ -5345,7 +5345,7 @@ Address,Quality,Size,Name 0x00000071000eeb30,O,000004,_ZN5uking6action3Die11loadParams_Ev 0x00000071000eeb34,O,000132,_ZNK5uking6action3Die27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000eebb8,O,000092,_ZNK5uking6action3Die18getRuntimeTypeInfoEv -0x00000071000eec14,U,000008,_ZNK5uking6action3Die12isChangeableEv +0x00000071000eec14,O,000008,_ZNK5uking6action3Die12isChangeableEv 0x00000071000eec1c,O,000072,_ZN5uking6action6DieAnmC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071000eec64,O,000008,_ZN5uking6action6DieAnm5init_EPN4sead4HeapE 0x00000071000eec6c,W,000108,_ZN5uking6action6DieAnm6enter_EPN4ksys3act2ai15InlineParamPackE @@ -5463,7 +5463,7 @@ Address,Quality,Size,Name 0x00000071000f1490,W,000060,_ZN5uking6action12DoubleAttack6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071000f14cc,O,000008,_ZNK5uking6action12DoubleAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000f14d4,O,000092,_ZNK5uking6action12DoubleAttack18getRuntimeTypeInfoEv -0x00000071000f1530,U,000008,_ZNK5uking6action16StepDoubleAttack12isChangeableEv +0x00000071000f1530,O,000008,_ZNK5uking6action16StepDoubleAttack12isChangeableEv 0x00000071000f1538,O,000372,_ZN5uking6action12DoubleAttack33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000f16ac,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action16StepDoubleAttackEE9isDerivedEPKNS0_9InterfaceE 0x00000071000f1738,M,000052,_ZN5uking6action13DownloadAlbumC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -5527,7 +5527,7 @@ Address,Quality,Size,Name 0x00000071000f31ac,O,000092,_ZNK5uking6action15DownSwingAttack18getRuntimeTypeInfoEv 0x00000071000f3208,W,000104,_ZN5uking6action15DownSwingAttackD1Ev 0x00000071000f3270,W,000112,_ZN5uking6action15DownSwingAttackD0Ev -0x00000071000f32e0,U,000008,_ZNK5uking6action15DownSwingAttack12isChangeableEv +0x00000071000f32e0,O,000008,_ZNK5uking6action15DownSwingAttack12isChangeableEv 0x00000071000f32e8,O,000372,_ZN5uking6action15DownSwingAttack33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000f345c,U,000064,AI_Action_DragonChemicalBall::ctor 0x00000071000f349c,O,000020,_ZN5uking6action18DragonChemicalBallD1Ev @@ -5576,7 +5576,7 @@ Address,Quality,Size,Name 0x00000071000f5080,U,000084,_ZN5uking6action20DragonItemInCarryBox14handleMessage_ERKN4ksys7MessageE 0x00000071000f50d4,O,000008,_ZNK5uking6action20DragonItemInCarryBox27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000f50dc,O,000092,_ZNK5uking6action20DragonItemInCarryBox18getRuntimeTypeInfoEv -0x00000071000f5138,U,000008,_ZN5uking6action10InCarryBox23hasUpdateForPreDeleteCbEv +0x00000071000f5138,O,000008,_ZN5uking6action10InCarryBox23hasUpdateForPreDeleteCbEv 0x00000071000f5140,O,000372,_ZN5uking6action20DragonItemInCarryBox33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071000f52b4,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action10InCarryBoxEE9isDerivedEPKNS0_9InterfaceE 0x00000071000f5340,U,000088,AI_Action_DragonItemShootUp::ctor @@ -6085,7 +6085,7 @@ Address,Quality,Size,Name 0x00000071001079c0,W,000440,_ZN5uking6action25EnemyFortressChatTurnBase5calc_Ev 0x0000007100107b78,O,000004,_ZN5uking6action25EnemyFortressChatTurnBase6leave_Ev 0x0000007100107b7c,U,000008,uking::action::EnemyFortressChatTurnBase::m33 -0x0000007100107b84,U,000008,_ZN5uking6action25EnemyFortressChatTurnBase14handleMessage_ERKN4ksys7MessageE +0x0000007100107b84,O,000008,_ZN5uking6action25EnemyFortressChatTurnBase14handleMessage_ERKN4ksys7MessageE 0x0000007100107b8c,U,000372,_ZN5uking6action25EnemyFortressChatTurnBase10handleAck_ERKN4ksys10MessageAckE 0x0000007100107d00,O,000164,_ZN5uking6action25EnemyFortressChatTurnBase11loadParams_Ev 0x0000007100107da4,O,000288,_ZNK5uking6action25EnemyFortressChatTurnBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -6357,7 +6357,7 @@ Address,Quality,Size,Name 0x000000710011346c,O,000108,_ZN5uking6action11HornUseBase11loadParams_Ev 0x00000071001134d8,O,000300,_ZNK5uking6action11HornUseBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100113604,O,000092,_ZNK5uking6action11HornUseBase18getRuntimeTypeInfoEv -0x0000007100113660,U,000008,_ZN5uking6action11HornUseBase14hasPreDeleteCbEv +0x0000007100113660,O,000008,_ZN5uking6action11HornUseBase14hasPreDeleteCbEv 0x0000007100113668,O,000048,_ZN5uking6action6EscapeC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100113698,W,000060,_ZN5uking6action6Escape6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071001136d4,O,000132,_ZNK5uking6action6Escape27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -6375,7 +6375,7 @@ Address,Quality,Size,Name 0x0000007100114058,O,000092,_ZNK5uking6action14EscapeBackTurn18getRuntimeTypeInfoEv 0x00000071001140b4,O,000020,_ZN5uking6action14EscapeBackTurnD1Ev 0x00000071001140c8,O,000052,_ZN5uking6action14EscapeBackTurnD0Ev -0x00000071001140fc,U,000008,_ZNK5uking6action14EscapeBackTurn12isChangeableEv +0x00000071001140fc,O,000008,_ZNK5uking6action14EscapeBackTurn12isChangeableEv 0x0000007100114104,O,000372,_ZN5uking6action14EscapeBackTurn33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100114278,U,000012,_ZNK5uking6action8FreeMove12isChangeableEv 0x0000007100114284,U,000008,uking::action::FreeMove::m35 @@ -6669,7 +6669,7 @@ Address,Quality,Size,Name 0x000000710011b964,O,000020,_ZN5uking6action19EventMiniGameRetireD1Ev 0x000000710011b978,O,000052,_ZN5uking6action19EventMiniGameRetireD0Ev 0x000000710011b9ac,O,000008,_ZN5uking6action19EventMiniGameRetire5init_EPN4sead4HeapE -0x000000710011b9b4,U,000008,_ZN5uking6action19EventMiniGameRetire8oneShot_Ev +0x000000710011b9b4,O,000008,_ZN5uking6action19EventMiniGameRetire8oneShot_Ev 0x000000710011b9bc,O,000108,_ZN5uking6action19EventMiniGameRetire11loadParams_Ev 0x000000710011ba28,O,000288,_ZNK5uking6action19EventMiniGameRetire27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710011bb48,O,000092,_ZNK5uking6action19EventMiniGameRetire18getRuntimeTypeInfoEv @@ -6846,7 +6846,7 @@ Address,Quality,Size,Name 0x000000710012132c,O,000052,_ZN5uking6action17EventPrizeSuccessC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100121360,O,000020,_ZN5uking6action17EventPrizeSuccessD1Ev 0x0000007100121374,O,000052,_ZN5uking6action17EventPrizeSuccessD0Ev -0x00000071001213a8,U,000008,_ZN5uking6action17EventPrizeSuccess8oneShot_Ev +0x00000071001213a8,O,000008,_ZN5uking6action17EventPrizeSuccess8oneShot_Ev 0x00000071001213b0,O,000108,_ZN5uking6action17EventPrizeSuccess11loadParams_Ev 0x000000710012141c,O,000288,_ZNK5uking6action17EventPrizeSuccess27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710012153c,O,000092,_ZNK5uking6action17EventPrizeSuccess18getRuntimeTypeInfoEv @@ -7285,7 +7285,7 @@ Address,Quality,Size,Name 0x000000710012c2f8,W,000408,_ZN5uking6action4Fall6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710012c490,W,000184,_ZN5uking6action4Fall5calc_Ev 0x000000710012c548,W,000140,_ZN5uking6action4Fall6leave_Ev -0x000000710012c5d4,U,000008,_ZNK5uking6action4Fall12isChangeableEv +0x000000710012c5d4,O,000008,_ZNK5uking6action4Fall12isChangeableEv 0x000000710012c5dc,U,000152,_ZNK5uking6action4Fall10isFinishedEv 0x000000710012c674,O,000100,_ZN5uking6action4Fall11loadParams_Ev 0x000000710012c6d8,O,000008,_ZNK5uking6action4Fall27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -7678,7 +7678,7 @@ Address,Quality,Size,Name 0x0000007100136158,O,000020,_ZN5uking6action26ForbidSettingInstEventFlagD1Ev 0x000000710013616c,O,000052,_ZN5uking6action26ForbidSettingInstEventFlagD0Ev 0x00000071001361a0,O,000008,_ZN5uking6action26ForbidSettingInstEventFlag5init_EPN4sead4HeapE -0x00000071001361a8,U,000008,_ZN5uking6action26ForbidSettingInstEventFlag8oneShot_Ev +0x00000071001361a8,O,000008,_ZN5uking6action26ForbidSettingInstEventFlag8oneShot_Ev 0x00000071001361b0,O,000004,_ZN5uking6action26ForbidSettingInstEventFlag11loadParams_Ev 0x00000071001361b4,O,000288,_ZNK5uking6action26ForbidSettingInstEventFlag27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001362d4,O,000092,_ZNK5uking6action26ForbidSettingInstEventFlag18getRuntimeTypeInfoEv @@ -8367,7 +8367,7 @@ Address,Quality,Size,Name 0x0000007100149650,O,000156,_ZN5uking6action21ForkCapsuleWindFollow11loadParams_Ev 0x00000071001496ec,O,000288,_ZNK5uking6action21ForkCapsuleWindFollow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710014980c,O,000092,_ZNK5uking6action21ForkCapsuleWindFollow18getRuntimeTypeInfoEv -0x0000007100149868,U,000008,_ZN5uking6action21ForkCapsuleWindFollow23hasUpdateForPreDeleteCbEv +0x0000007100149868,O,000008,_ZN5uking6action21ForkCapsuleWindFollow23hasUpdateForPreDeleteCbEv 0x0000007100149870,U,000008,_ZN5uking6action21ForkCapsuleWindFollow18updateForPreDeleteEv 0x0000007100149878,U,000332, 0x00000071001499c4,O,000056,_ZN5uking6action15ForkCatchWeaponC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -8732,7 +8732,7 @@ Address,Quality,Size,Name 0x0000007100152ed0,O,000296,_ZN5uking6action26ForkFourFootActorLustGrass11loadParams_Ev 0x0000007100152ff8,O,000288,_ZNK5uking6action26ForkFourFootActorLustGrass27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100153118,O,000092,_ZNK5uking6action26ForkFourFootActorLustGrass18getRuntimeTypeInfoEv -0x0000007100153174,U,000008,_ZN5uking6action26ForkFourFootActorLustGrass23hasUpdateForPreDeleteCbEv +0x0000007100153174,O,000008,_ZN5uking6action26ForkFourFootActorLustGrass23hasUpdateForPreDeleteCbEv 0x000000710015317c,U,000028,_ZN5uking6action26ForkFourFootActorLustGrass18updateForPreDeleteEv 0x0000007100153198,U,000204, 0x0000007100153264,U,000092, @@ -8759,7 +8759,7 @@ Address,Quality,Size,Name 0x00000071001537bc,U,000100,_ZN5uking6action30ForkGanonAscendingCreateManage14handleMessage_ERKN4ksys7MessageE 0x0000007100153820,O,000288,_ZNK5uking6action30ForkGanonAscendingCreateManage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100153940,O,000092,_ZNK5uking6action30ForkGanonAscendingCreateManage18getRuntimeTypeInfoEv -0x000000710015399c,U,000008,_ZN5uking6action30ForkGanonAscendingCreateManage23hasUpdateForPreDeleteCbEv +0x000000710015399c,O,000008,_ZN5uking6action30ForkGanonAscendingCreateManage23hasUpdateForPreDeleteCbEv 0x00000071001539a4,U,000028,_ZN5uking6action30ForkGanonAscendingCreateManage18updateForPreDeleteEv 0x00000071001539c0,U,000096,AI_Action_ForkGanonBeastAppearHolyWall::ctor 0x0000007100153a20,O,000020,_ZN5uking6action28ForkGanonBeastAppearHolyWallD1Ev @@ -10024,7 +10024,7 @@ Address,Quality,Size,Name 0x0000007100177754,O,000108,_ZN5uking6action16GanonChangeState11loadParams_Ev 0x00000071001777c0,O,000288,_ZNK5uking6action16GanonChangeState27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001778e0,O,000092,_ZNK5uking6action16GanonChangeState18getRuntimeTypeInfoEv -0x000000710017793c,U,000008,_ZNK5uking6action16GanonChangeState12isChangeableEv +0x000000710017793c,O,000008,_ZNK5uking6action16GanonChangeState12isChangeableEv 0x0000007100177944,U,000136,AI_Action_GanonChemicalPillarAttack::ctor 0x00000071001779cc,W,000344,_ZN5uking6action25GanonChemicalPillarAttackD1Ev 0x0000007100177b24,W,000036,_ZN5uking6action25GanonChemicalPillarAttackD0Ev @@ -10338,7 +10338,7 @@ Address,Quality,Size,Name 0x00000071001836e8,O,000008,_ZNK5uking6action5GetUp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001836f0,O,000092,_ZNK5uking6action5GetUp18getRuntimeTypeInfoEv 0x000000710018374c,U,000012,_ZNK5uking6action9GetUpBase10isFinishedEv -0x0000007100183758,U,000008,_ZNK5uking6action9GetUpBase12isChangeableEv +0x0000007100183758,O,000008,_ZNK5uking6action9GetUpBase12isChangeableEv 0x0000007100183760,U,000012,uking::action::GetUp::m35 0x000000710018376c,O,000372,_ZN5uking6action5GetUp33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001838e0,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action9GetUpBaseEE9isDerivedEPKNS0_9InterfaceE @@ -10730,7 +10730,7 @@ Address,Quality,Size,Name 0x000000710018f3f0,W,000416,_ZN5uking6action12GrabAndShoot6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710018f590,W,001492,_ZN5uking6action12GrabAndShoot5calc_Ev 0x000000710018fb64,O,000004,_ZN5uking6action12GrabAndShoot6leave_Ev -0x000000710018fb68,U,000008,_ZNK5uking6action12GrabAndShoot12isChangeableEv +0x000000710018fb68,O,000008,_ZNK5uking6action12GrabAndShoot12isChangeableEv 0x000000710018fb70,O,000248,_ZN5uking6action12GrabAndShoot11loadParams_Ev 0x000000710018fc68,O,000288,_ZNK5uking6action12GrabAndShoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710018fd88,O,000092,_ZNK5uking6action12GrabAndShoot18getRuntimeTypeInfoEv @@ -10799,7 +10799,7 @@ Address,Quality,Size,Name 0x00000071001917e4,W,000924,_ZN5uking6action5Guard6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100191b80,W,000068,_ZN5uking6action5Guard5calc_Ev 0x0000007100191bc4,W,000084,_ZN5uking6action5Guard11loadParams_Ev -0x0000007100191c18,U,000008,_ZNK5uking6action5Guard12isChangeableEv +0x0000007100191c18,O,000008,_ZNK5uking6action5Guard12isChangeableEv 0x0000007100191c20,U,000028,uking::action::Guard::m38 0x0000007100191c3c,O,000132,_ZNK5uking6action5Guard27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100191cc0,O,000092,_ZNK5uking6action5Guard18getRuntimeTypeInfoEv @@ -11157,7 +11157,7 @@ Address,Quality,Size,Name 0x000000710019d01c,O,000132,_ZNK5uking6action9HoldArrow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710019d0a0,O,000092,_ZNK5uking6action9HoldArrow18getRuntimeTypeInfoEv 0x000000710019d0fc,O,000052,_ZN5uking6action9HoldArrowD0Ev -0x000000710019d130,U,000008,_ZNK5uking6action9HoldArrow12isChangeableEv +0x000000710019d130,O,000008,_ZNK5uking6action9HoldArrow12isChangeableEv 0x000000710019d138,U,000052,AI_Action_HoldArrowBackWalk::ctor 0x000000710019d16c,W,000184,_ZN5uking6action17HoldArrowBackWalk6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710019d224,W,000152,_ZN5uking6action17HoldArrowBackWalk5calc_Ev @@ -12025,7 +12025,7 @@ Address,Quality,Size,Name 0x00000071001c3ec8,O,000092,_ZNK5uking6action10JumpAttack18getRuntimeTypeInfoEv 0x00000071001c3f24,W,000104,_ZN5uking6action10JumpAttackD1Ev 0x00000071001c3f8c,W,000112,_ZN5uking6action10JumpAttackD0Ev -0x00000071001c3ffc,U,000008,_ZNK5uking6action10JumpAttack12isChangeableEv +0x00000071001c3ffc,O,000008,_ZNK5uking6action10JumpAttack12isChangeableEv 0x00000071001c4004,U,000012,uking::action::JumpAttack::m33 0x00000071001c4010,U,000104,AI_Action_JumpMainRigidBody::ctor 0x00000071001c4078,W,000224,_ZN5uking6action17JumpMainRigidBodyD1Ev @@ -12159,7 +12159,7 @@ Address,Quality,Size,Name 0x00000071001c90fc,U,000140,uking::action::SmallDamageBackwardBase::m34 0x00000071001c9188,O,000132,_ZNK5uking6action23SmallDamageBackwardBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001c920c,O,000092,_ZNK5uking6action23SmallDamageBackwardBase18getRuntimeTypeInfoEv -0x00000071001c9268,U,000008,_ZNK5uking6action18TakeHitImpactForce12isChangeableEv +0x00000071001c9268,O,000008,_ZNK5uking6action18TakeHitImpactForce12isChangeableEv 0x00000071001c9270,M,000076,_ZN5uking6action18TakeHitImpactForceC2ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071001c92bc,W,000392,_ZN5uking6action18TakeHitImpactForce6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071001c9444,U,000232, @@ -12331,7 +12331,7 @@ Address,Quality,Size,Name 0x00000071001ce494,W,000088,_ZN5uking6action11LargeAttack6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071001ce4ec,W,001048,_ZN5uking6action11LargeAttack5calc_Ev 0x00000071001ce904,W,000152,_ZN5uking6action11LargeAttack6leave_Ev -0x00000071001ce99c,U,000008,_ZNK5uking6action11LargeAttack12isChangeableEv +0x00000071001ce99c,O,000008,_ZNK5uking6action11LargeAttack12isChangeableEv 0x00000071001ce9a4,O,000008,_ZNK5uking6action11LargeAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001ce9ac,O,000092,_ZNK5uking6action11LargeAttack18getRuntimeTypeInfoEv 0x00000071001cea08,W,000104,_ZN5uking6action11LargeAttackD1Ev @@ -12397,7 +12397,7 @@ Address,Quality,Size,Name 0x00000071001d0f3c,U,000004,uking::action::LastBossFlyWait::m34 0x00000071001d0f40,O,000288,_ZNK5uking6action15LastBossFlyWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001d1060,O,000092,_ZNK5uking6action15LastBossFlyWait18getRuntimeTypeInfoEv -0x00000071001d10bc,U,000008,_ZNK5uking6action15LastBossFlyWait12isChangeableEv +0x00000071001d10bc,O,000008,_ZNK5uking6action15LastBossFlyWait12isChangeableEv 0x00000071001d10c4,U,000008,uking::action::LastBossFlyWait::m33 0x00000071001d10cc,M,000092,_ZN5uking6action27LastBossFlyWaitTurnToTargetC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071001d1128,W,000020,_ZN5uking6action27LastBossFlyWaitTurnToTargetD1Ev @@ -12421,7 +12421,7 @@ Address,Quality,Size,Name 0x00000071001d1b8c,O,000288,_ZNK5uking6action17LastBossJustGuard27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001d1cac,O,000092,_ZNK5uking6action17LastBossJustGuard18getRuntimeTypeInfoEv 0x00000071001d1d08,U,000028,_ZNK5uking6action17LastBossJustGuard10isFinishedEv -0x00000071001d1d24,U,000008,_ZNK5uking6action17LastBossJustGuard12isChangeableEv +0x00000071001d1d24,O,000008,_ZNK5uking6action17LastBossJustGuard12isChangeableEv 0x00000071001d1d2c,U,000080,AI_Action_LastBossNormalWarp::ctor 0x00000071001d1d7c,W,000084,_ZN5uking6action18LastBossNormalWarpD1Ev 0x00000071001d1dd0,W,000092,_ZN5uking6action18LastBossNormalWarpD0Ev @@ -12703,7 +12703,7 @@ Address,Quality,Size,Name 0x00000071001de4b4,O,000004,_ZN5uking6action12LookAtTarget5calc_Ev 0x00000071001de4b8,O,000004,_ZN5uking6action12LookAtTarget6leave_Ev 0x00000071001de4bc,W,000084,_ZN5uking6action12LookAtTarget11loadParams_Ev -0x00000071001de510,U,000008,_ZNK5uking6action12LookAtTarget10isFinishedEv +0x00000071001de510,O,000008,_ZNK5uking6action12LookAtTarget10isFinishedEv 0x00000071001de518,O,000132,_ZNK5uking6action12LookAtTarget27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001de59c,O,000092,_ZNK5uking6action12LookAtTarget18getRuntimeTypeInfoEv 0x00000071001de5f8,O,000052,_ZN5uking6action14LookAtTheFrontC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -13328,7 +13328,7 @@ Address,Quality,Size,Name 0x00000071001f32c0,O,000092,_ZNK5uking6action10BackWalkEx18getRuntimeTypeInfoEv 0x00000071001f331c,O,000048,_ZN5uking6action6NoticeC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071001f334c,W,000060,_ZN5uking6action6Notice6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071001f3388,U,000008,_ZNK5uking6action6Notice12isChangeableEv +0x00000071001f3388,O,000008,_ZNK5uking6action6Notice12isChangeableEv 0x00000071001f3390,O,000216,_ZNK5uking6action6Notice27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001f3468,O,000092,_ZNK5uking6action6Notice18getRuntimeTypeInfoEv 0x00000071001f34c4,O,000052,_ZN5uking6action6NoticeD0Ev @@ -13351,7 +13351,7 @@ Address,Quality,Size,Name 0x00000071001f3ae8,U,000204, 0x00000071001f3bb4,W,000048,_ZN5uking6action13NPCAnchorWait6leave_Ev 0x00000071001f3be4,O,000220,_ZN5uking6action13NPCAnchorWait11loadParams_Ev -0x00000071001f3cc0,U,000008,_ZN5uking6action13NPCAnchorWait14handleMessage_ERKN4ksys7MessageE +0x00000071001f3cc0,O,000008,_ZN5uking6action13NPCAnchorWait14handleMessage_ERKN4ksys7MessageE 0x00000071001f3cc8,O,000288,_ZNK5uking6action13NPCAnchorWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001f3de8,O,000092,_ZNK5uking6action13NPCAnchorWait18getRuntimeTypeInfoEv 0x00000071001f3e44,U,000048,uking::action::NPCAnchorWait::m32 @@ -13729,7 +13729,7 @@ Address,Quality,Size,Name 0x00000071001fe73c,O,000048,_ZN5uking6action10NPCSellAppC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071001fe76c,O,000020,_ZN5uking6action10NPCSellAppD1Ev 0x00000071001fe780,O,000052,_ZN5uking6action10NPCSellAppD0Ev -0x00000071001fe7b4,U,000008,_ZN5uking6action10NPCSellApp8oneShot_Ev +0x00000071001fe7b4,O,000008,_ZN5uking6action10NPCSellApp8oneShot_Ev 0x00000071001fe7bc,O,000288,_ZNK5uking6action10NPCSellApp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071001fe8dc,O,000092,_ZNK5uking6action10NPCSellApp18getRuntimeTypeInfoEv 0x00000071001fe938,O,000048,_ZN5uking6action12NPCSellHorseC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -14149,7 +14149,7 @@ Address,Quality,Size,Name 0x0000007100212290,O,000004,_ZN5uking6action23OnetimeChangeableASPlay11loadParams_Ev 0x0000007100212294,O,000300,_ZNK5uking6action23OnetimeChangeableASPlay27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002123c0,O,000092,_ZNK5uking6action23OnetimeChangeableASPlay18getRuntimeTypeInfoEv -0x000000710021241c,U,000008,_ZNK5uking6action23OnetimeChangeableASPlay12isChangeableEv +0x000000710021241c,O,000008,_ZNK5uking6action23OnetimeChangeableASPlay12isChangeableEv 0x0000007100212424,U,000076,AI_Action_OnetimeHoverASPlay::ctor 0x0000007100212470,W,000020,_ZN5uking6action18OnetimeHoverASPlayD1Ev 0x0000007100212484,W,000052,_ZN5uking6action18OnetimeHoverASPlayD0Ev @@ -14855,7 +14855,7 @@ Address,Quality,Size,Name 0x0000007100228994,O,000052,_ZN5uking6action10RandomJumpD0Ev 0x00000071002289c8,O,000048,_ZN5uking6action7ReboundC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071002289f8,W,000060,_ZN5uking6action7Rebound6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100228a34,U,000008,_ZNK5uking6action7Rebound12isChangeableEv +0x0000007100228a34,O,000008,_ZNK5uking6action7Rebound12isChangeableEv 0x0000007100228a3c,O,000216,_ZNK5uking6action7Rebound27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100228b14,O,000092,_ZNK5uking6action7Rebound18getRuntimeTypeInfoEv 0x0000007100228b70,O,000052,_ZN5uking6action7ReboundD0Ev @@ -14951,7 +14951,7 @@ Address,Quality,Size,Name 0x000000710022ac3c,O,000092,_ZNK5uking6action11ReloadArrow18getRuntimeTypeInfoEv 0x000000710022ac98,O,000020,_ZN5uking6action11ReloadArrowD1Ev 0x000000710022acac,O,000052,_ZN5uking6action11ReloadArrowD0Ev -0x000000710022ace0,U,000008,_ZNK5uking6action11ReloadArrow12isChangeableEv +0x000000710022ace0,O,000008,_ZNK5uking6action11ReloadArrow12isChangeableEv 0x000000710022ace8,O,000372,_ZN5uking6action11ReloadArrow33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710022ae5c,U,000072,AI_Action_RemainElectricCannonBeamFire::ctor 0x000000710022aea4,O,000020,_ZN5uking6action28RemainElectricCannonBeamFireD1Ev @@ -15504,7 +15504,7 @@ Address,Quality,Size,Name 0x000000710024244c,U,000008,_ZN5uking6action18SandwormTackleMove10handleAck_ERKN4ksys10MessageAckE 0x0000007100242454,O,000132,_ZNK5uking6action18SandwormTackleMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002424d8,O,000092,_ZNK5uking6action18SandwormTackleMove18getRuntimeTypeInfoEv -0x0000007100242534,U,000008,_ZNK5uking6action18SandwormTackleMove8isFailedEv +0x0000007100242534,O,000008,_ZNK5uking6action18SandwormTackleMove8isFailedEv 0x000000710024253c,U,000004,uking::action::TackleMove::m33 0x0000007100242540,U,000020,uking::action::SandwormTackleMove::m34 0x0000007100242554,U,000012,uking::action::SandwormTackleMove::m35 @@ -16173,7 +16173,7 @@ Address,Quality,Size,Name 0x00000071002530e0,U,000488, 0x00000071002532c8,O,000288,_ZNK5uking6action8SideStep27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002533e8,O,000092,_ZNK5uking6action8SideStep18getRuntimeTypeInfoEv -0x0000007100253444,U,000008,_ZNK5uking6action8SideStep12isChangeableEv +0x0000007100253444,O,000008,_ZNK5uking6action8SideStep12isChangeableEv 0x000000710025344c,U,000096,AI_Action_SideStepWait::ctor 0x00000071002534ac,O,000020,_ZN5uking6action12SideStepWaitD1Ev 0x00000071002534c0,O,000052,_ZN5uking6action12SideStepWaitD0Ev @@ -16394,7 +16394,7 @@ Address,Quality,Size,Name 0x000000710025c1e4,O,000008,_ZNK5uking6action29SiteBossLswordAtkWithChemical27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710025c1ec,O,000092,_ZNK5uking6action29SiteBossLswordAtkWithChemical18getRuntimeTypeInfoEv 0x000000710025c248,U,000012,_ZNK5uking6action17SiteBossLswordAtk10isFinishedEv -0x000000710025c254,U,000008,_ZNK5uking6action17SiteBossLswordAtk12isChangeableEv +0x000000710025c254,O,000008,_ZNK5uking6action17SiteBossLswordAtk12isChangeableEv 0x000000710025c25c,U,000012,uking::action::SiteBossLswordAtk::m36 0x000000710025c268,U,000008,uking::action::SiteBossLswordAtkWithChemical::m39 0x000000710025c270,O,000372,_ZN5uking6action29SiteBossLswordAtkWithChemical33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -16674,7 +16674,7 @@ Address,Quality,Size,Name 0x00000071002689bc,O,000288,_ZNK5uking6action23SiteBossSwordAttackBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100268adc,O,000092,_ZNK5uking6action23SiteBossSwordAttackBase18getRuntimeTypeInfoEv 0x0000007100268b38,U,000012,_ZNK5uking6action23SiteBossSwordAttackBase10isFinishedEv -0x0000007100268b44,U,000008,_ZNK5uking6action23SiteBossSwordAttackBase12isChangeableEv +0x0000007100268b44,O,000008,_ZNK5uking6action23SiteBossSwordAttackBase12isChangeableEv 0x0000007100268b4c,U,000012,uking::action::SiteBossSwordAttackBase::m35 0x0000007100268b58,O,000048,_ZN5uking6action20SiteBossSwordBlowOffC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100268b88,O,000004,_ZN5uking6action20SiteBossSwordBlowOffD1Ev @@ -16728,7 +16728,7 @@ Address,Quality,Size,Name 0x000000710026b010,O,000004,_ZN5uking6action23SiteBossSwordGuardBreak11loadParams_Ev 0x000000710026b014,O,000300,_ZNK5uking6action23SiteBossSwordGuardBreak27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710026b140,O,000092,_ZNK5uking6action23SiteBossSwordGuardBreak18getRuntimeTypeInfoEv -0x000000710026b19c,U,000008,_ZNK5uking6action23SiteBossSwordGuardBreak12isChangeableEv +0x000000710026b19c,O,000008,_ZNK5uking6action23SiteBossSwordGuardBreak12isChangeableEv 0x000000710026b1a4,U,000064,AI_Action_SiteBossSwordMove::ctor 0x000000710026b1e4,O,000020,_ZN5uking6action17SiteBossSwordMoveD1Ev 0x000000710026b1f8,O,000052,_ZN5uking6action17SiteBossSwordMoveD0Ev @@ -16995,7 +16995,7 @@ Address,Quality,Size,Name 0x000000710027588c,U,000336, 0x00000071002759dc,U,003472, 0x000000710027676c,O,000716,_ZN5uking6action17StalEnemyBlownOff11loadParams_Ev -0x0000007100276a38,U,000008,_ZN5uking6action17StalEnemyBlownOff14handleMessage_ERKN4ksys7MessageE +0x0000007100276a38,O,000008,_ZN5uking6action17StalEnemyBlownOff14handleMessage_ERKN4ksys7MessageE 0x0000007100276a40,O,000288,_ZNK5uking6action17StalEnemyBlownOff27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100276b60,O,000092,_ZNK5uking6action17StalEnemyBlownOff18getRuntimeTypeInfoEv 0x0000007100276bbc,W,000080,_ZN5uking6action17StalEnemyBlownOffD1Ev @@ -18094,12 +18094,12 @@ Address,Quality,Size,Name 0x000000710029d098,U,000292, 0x000000710029d1bc,U,000316, 0x000000710029d2f8,W,000016,_ZN5uking6action6Tumble6leave_Ev -0x000000710029d308,U,000008,_ZN5uking6action6Tumble14handleMessage_ERKN4ksys7MessageE +0x000000710029d308,O,000008,_ZN5uking6action6Tumble14handleMessage_ERKN4ksys7MessageE 0x000000710029d310,O,000288,_ZNK5uking6action6Tumble27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710029d430,O,000092,_ZNK5uking6action6Tumble18getRuntimeTypeInfoEv 0x000000710029d48c,W,000104,_ZN5uking6action6TumbleD1Ev 0x000000710029d4f4,W,000112,_ZN5uking6action6TumbleD0Ev -0x000000710029d564,U,000008,_ZNK5uking6action6Tumble12isChangeableEv +0x000000710029d564,O,000008,_ZNK5uking6action6Tumble12isChangeableEv 0x000000710029d56c,O,000048,_ZN5uking6action4TurnC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710029d59c,W,000060,_ZN5uking6action4Turn6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710029d5d8,O,000132,_ZNK5uking6action4Turn27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -18255,7 +18255,7 @@ Address,Quality,Size,Name 0x00000071002a53b4,O,000092,_ZNK5uking6action13UnarmedAttack18getRuntimeTypeInfoEv 0x00000071002a5410,W,000104,_ZN5uking6action13UnarmedAttackD1Ev 0x00000071002a5478,W,000112,_ZN5uking6action13UnarmedAttackD0Ev -0x00000071002a54e8,U,000008,_ZNK5uking6action13UnarmedAttack12isChangeableEv +0x00000071002a54e8,O,000008,_ZNK5uking6action13UnarmedAttack12isChangeableEv 0x00000071002a54f0,O,000372,_ZN5uking6action13UnarmedAttack33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002a5664,O,000048,_ZN5uking6action18UnarmedLargeAttackC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071002a5694,W,000104,_ZN5uking6action18UnarmedLargeAttackD1Ev @@ -18465,7 +18465,7 @@ Address,Quality,Size,Name 0x00000071002ab028,O,000020,_ZN5uking6action13WaitHeartDemoD1Ev 0x00000071002ab03c,O,000052,_ZN5uking6action13WaitHeartDemoD0Ev 0x00000071002ab070,O,000008,_ZN5uking6action13WaitHeartDemo5init_EPN4sead4HeapE -0x00000071002ab078,U,000008,_ZN5uking6action13WaitHeartDemo8oneShot_Ev +0x00000071002ab078,O,000008,_ZN5uking6action13WaitHeartDemo8oneShot_Ev 0x00000071002ab080,O,000004,_ZN5uking6action13WaitHeartDemo11loadParams_Ev 0x00000071002ab084,O,000288,_ZNK5uking6action13WaitHeartDemo27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002ab1a4,O,000092,_ZNK5uking6action13WaitHeartDemo18getRuntimeTypeInfoEv @@ -19740,8 +19740,8 @@ Address,Quality,Size,Name 0x00000071002def90,U,000080, 0x00000071002defe0,U,000088, 0x00000071002df038,U,000068,Weapon::construct -0x00000071002df07c,m,000040,_ZN5uking3act18WeaponModifierInfoC1ERKNS_2ui9PouchItemE -0x00000071002df0a4,m,000044,_ZN5uking3act18WeaponModifierInfo8fromItemERKNS_2ui9PouchItemE +0x00000071002df07c,O,000040,_ZN5uking3act18WeaponModifierInfoC1ERKNS_2ui9PouchItemE +0x00000071002df0a4,O,000044,_ZN5uking3act18WeaponModifierInfo8fromItemERKNS_2ui9PouchItemE 0x00000071002df0d0,O,000032,_ZNK5uking3act18WeaponModifierInfo10getAddLifeEv 0x00000071002df0f0,O,000008,_ZN5uking3act18WeaponModifierInfo17getLifeMultiplierEv 0x00000071002df0f8,O,000072,_ZN5uking3act18WeaponModifierInfo18loadPorchSwordFlagEi @@ -20131,7 +20131,7 @@ Address,Quality,Size,Name 0x00000071002f66f4,W,000096,_ZN5uking2ai14AddBasicLinkOnD0Ev 0x00000071002f6754,O,000008,_ZN5uking2ai14AddBasicLinkOn5init_EPN4sead4HeapE 0x00000071002f675c,W,000316,_ZN5uking2ai14AddBasicLinkOn6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071002f6898,U,000004,_ZN5uking2ai14AddBasicLinkOn5calc_Ev +0x00000071002f6898,O,000004,_ZN5uking2ai14AddBasicLinkOn5calc_Ev 0x00000071002f689c,O,000004,_ZN5uking2ai14AddBasicLinkOn6leave_Ev 0x00000071002f68a0,O,000100,_ZN5uking2ai14AddBasicLinkOn11loadParams_Ev 0x00000071002f6904,O,000288,_ZNK5uking2ai14AddBasicLinkOn27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -20150,7 +20150,7 @@ Address,Quality,Size,Name 0x00000071002f6c8c,O,000004,_ZN5uking2ai10AddCarried11loadParams_Ev 0x00000071002f6c90,O,000008,_ZNK5uking2ai10AddCarried27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071002f6c98,O,000092,_ZNK5uking2ai10AddCarried18getRuntimeTypeInfoEv -0x00000071002f6cf4,U,000008,_ZN5uking2ai14AddCarriedBase23hasUpdateForPreDeleteCbEv +0x00000071002f6cf4,O,000008,_ZN5uking2ai14AddCarriedBase23hasUpdateForPreDeleteCbEv 0x00000071002f6cfc,U,000008,_ZN5uking2ai14AddCarriedBase18updateForPreDeleteEv 0x00000071002f6d04,U,000008,uking::ai::AddCarried::m35 0x00000071002f6d0c,U,000040,uking::ai::AddCarried::m37 @@ -20322,7 +20322,7 @@ Address,Quality,Size,Name 0x00000071002fc24c,W,000080,_ZN5uking2ai11AirOctaRootD0Ev 0x00000071002fc29c,W,000348,_ZN5uking2ai11AirOctaRoot5init_EPN4sead4HeapE 0x00000071002fc3f8,W,000168,_ZN5uking2ai11AirOctaRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071002fc4a0,U,000004,_ZN5uking2ai11AirOctaRoot5calc_Ev +0x00000071002fc4a0,O,000004,_ZN5uking2ai11AirOctaRoot5calc_Ev 0x00000071002fc4a4,O,000004,_ZN5uking2ai11AirOctaRoot6leave_Ev 0x00000071002fc4a8,O,000064,_ZN5uking2ai11AirOctaRoot11loadParams_Ev 0x00000071002fc4e8,U,000240,_ZN5uking2ai11AirOctaRoot14handleMessage_ERKN4ksys7MessageE @@ -20600,7 +20600,7 @@ Address,Quality,Size,Name 0x000000710030a6c4,O,000036,_ZN5uking2ai14AnimalRoamBaseD0Ev 0x000000710030a6e8,O,000008,_ZN5uking2ai14AnimalRoamBase5init_EPN4sead4HeapE 0x000000710030a6f0,W,000060,_ZN5uking2ai14AnimalRoamBase6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710030a72c,U,000004,_ZN5uking2ai14AnimalRoamBase5calc_Ev +0x000000710030a72c,O,000004,_ZN5uking2ai14AnimalRoamBase5calc_Ev 0x000000710030a730,O,000004,_ZN5uking2ai14AnimalRoamBase6leave_Ev 0x000000710030a734,O,000408,_ZN5uking2ai14AnimalRoamBase11loadParams_Ev 0x000000710030a8cc,U,001332,uking::ai::AnimalRoamBase::m34 @@ -20671,7 +20671,7 @@ Address,Quality,Size,Name 0x000000710030d560,O,000372,_ZN5uking2ai16AnimalTimelineAI33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710030d6d4,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai10TimelineAIEE9isDerivedEPKNS0_9InterfaceE 0x000000710030d760,U,000108,uking::ai::EnemyRoot::m38 -0x000000710030d7cc,U,000008,_ZNK5uking2ai16AppearNearTarget12isChangeableEv +0x000000710030d7cc,O,000008,_ZNK5uking2ai16AppearNearTarget12isChangeableEv 0x000000710030d7d4,U,000008,uking::ai::AppearNearTarget::m36 0x000000710030d7dc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai16AppearNearTargetEE9isDerivedEPKNS0_9InterfaceE 0x000000710030d868,M,000096,_ZN5uking2ai16AppearNearTargetC2ERKN4ksys3act2ai10ActionBase7InitArgE @@ -20851,7 +20851,7 @@ Address,Quality,Size,Name 0x00000071003145c8,U,001932,_ZN5uking2ai18AssassinBossBattle5calc_Ev 0x0000007100314d54,O,000004,_ZN5uking2ai18AssassinBossBattle6leave_Ev 0x0000007100314d58,O,000268,_ZN5uking2ai18AssassinBossBattle11loadParams_Ev -0x0000007100314e64,U,000008,_ZN5uking2ai18AssassinBossBattle14handleMessage_ERKN4ksys7MessageE +0x0000007100314e64,O,000008,_ZN5uking2ai18AssassinBossBattle14handleMessage_ERKN4ksys7MessageE 0x0000007100314e6c,O,000288,_ZNK5uking2ai18AssassinBossBattle27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100314f8c,O,000092,_ZNK5uking2ai18AssassinBossBattle18getRuntimeTypeInfoEv 0x0000007100314fe8,U,000408, @@ -20872,7 +20872,7 @@ Address,Quality,Size,Name 0x0000007100315c74,U,000104,uking::ai::AssassinBossEscapeFromTarget::m39 0x0000007100315cdc,O,000008,_ZNK5uking2ai28AssassinBossEscapeFromTarget27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100315ce4,O,000092,_ZNK5uking2ai28AssassinBossEscapeFromTarget18getRuntimeTypeInfoEv -0x0000007100315d40,U,000008,_ZNK5uking2ai28AssassinBossEscapeFromTarget12isChangeableEv +0x0000007100315d40,O,000008,_ZNK5uking2ai28AssassinBossEscapeFromTarget12isChangeableEv 0x0000007100315d48,O,000372,_ZN5uking2ai28AssassinBossEscapeFromTarget33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100315ebc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai22SimpleEscapeFromTargetEE9isDerivedEPKNS0_9InterfaceE 0x0000007100315f48,U,000092,AI_AI_AssassinBossFirstBattle::ctor @@ -21174,7 +21174,7 @@ Address,Quality,Size,Name 0x0000007100321abc,U,000152,_ZN5uking2ai12AssassinRoot11onPreDeleteEv 0x0000007100321b54,O,000008,_ZNK5uking2ai12AssassinRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100321b5c,O,000092,_ZNK5uking2ai12AssassinRoot18getRuntimeTypeInfoEv -0x0000007100321bb8,U,000008,_ZN5uking2ai12AssassinRoot14hasPreDeleteCbEv +0x0000007100321bb8,O,000008,_ZN5uking2ai12AssassinRoot14hasPreDeleteCbEv 0x0000007100321bc0,U,000004,uking::ai::AssassinRoot::m35 0x0000007100321bc4,O,000372,_ZN5uking2ai12AssassinRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100321d38,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai7NPCRootEE9isDerivedEPKNS0_9InterfaceE @@ -21221,7 +21221,7 @@ Address,Quality,Size,Name 0x00000071003238e4,W,000192,_ZN5uking2ai12ASWeaponRoot11loadParams_Ev 0x00000071003239a4,O,000008,_ZNK5uking2ai12ASWeaponRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071003239ac,O,000092,_ZNK5uking2ai12ASWeaponRoot18getRuntimeTypeInfoEv -0x0000007100323a08,U,000008,_ZNK5uking2ai12WeaponRootAI12isChangeableEv +0x0000007100323a08,O,000008,_ZNK5uking2ai12WeaponRootAI12isChangeableEv 0x0000007100323a10,O,000372,_ZN5uking2ai12ASWeaponRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100323b84,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai12WeaponRootAIEE9isDerivedEPKNS0_9InterfaceE 0x0000007100323c10,M,000164,_ZN5uking2ai11AttackGraveC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -21272,7 +21272,7 @@ Address,Quality,Size,Name 0x0000007100325558,O,000036,_ZN5uking2ai14AwarenessScaleD0Ev 0x000000710032557c,O,000008,_ZN5uking2ai14AwarenessScale5init_EPN4sead4HeapE 0x0000007100325584,W,000148,_ZN5uking2ai14AwarenessScale6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100325618,U,000004,_ZN5uking2ai14AwarenessScale5calc_Ev +0x0000007100325618,O,000004,_ZN5uking2ai14AwarenessScale5calc_Ev 0x000000710032561c,W,000112,_ZN5uking2ai14AwarenessScale6leave_Ev 0x000000710032568c,O,000064,_ZN5uking2ai14AwarenessScale11loadParams_Ev 0x00000071003256cc,O,000288,_ZNK5uking2ai14AwarenessScale27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -21794,7 +21794,7 @@ Address,Quality,Size,Name 0x000000710034149c,O,000036,_ZN5uking2ai14CannonBallRootD0Ev 0x00000071003414c0,O,000008,_ZN5uking2ai14CannonBallRoot5init_EPN4sead4HeapE 0x00000071003414c8,W,000156,_ZN5uking2ai14CannonBallRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100341564,U,000004,_ZN5uking2ai14CannonBallRoot5calc_Ev +0x0000007100341564,O,000004,_ZN5uking2ai14CannonBallRoot5calc_Ev 0x0000007100341568,O,000004,_ZN5uking2ai14CannonBallRoot6leave_Ev 0x000000710034156c,O,000004,_ZN5uking2ai14CannonBallRoot11loadParams_Ev 0x0000007100341570,O,000288,_ZNK5uking2ai14CannonBallRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -21804,7 +21804,7 @@ Address,Quality,Size,Name 0x0000007100341724,O,000036,_ZN5uking2ai23CapturedActDeadSelectorD0Ev 0x0000007100341748,O,000008,_ZN5uking2ai23CapturedActDeadSelector5init_EPN4sead4HeapE 0x0000007100341750,W,000124,_ZN5uking2ai23CapturedActDeadSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003417cc,U,000004,_ZN5uking2ai23CapturedActDeadSelector5calc_Ev +0x00000071003417cc,O,000004,_ZN5uking2ai23CapturedActDeadSelector5calc_Ev 0x00000071003417d0,O,000004,_ZN5uking2ai23CapturedActDeadSelector6leave_Ev 0x00000071003417d4,W,000104,_ZN5uking2ai23CapturedActDeadSelector11loadParams_Ev 0x000000710034183c,O,000288,_ZNK5uking2ai23CapturedActDeadSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -21871,7 +21871,7 @@ Address,Quality,Size,Name 0x0000007100344920,U,000152, 0x00000071003449b8,O,000288,_ZNK5uking2ai8CarryBox27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100344ad8,O,000092,_ZNK5uking2ai8CarryBox18getRuntimeTypeInfoEv -0x0000007100344b34,U,000008,_ZN5uking2ai8CarryBox23hasUpdateForPreDeleteCbEv +0x0000007100344b34,O,000008,_ZN5uking2ai8CarryBox23hasUpdateForPreDeleteCbEv 0x0000007100344b3c,O,000048,_ZN5uking2ai17CastleLynelBattleC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100344b6c,O,000004,_ZN5uking2ai17CastleLynelBattleD1Ev 0x0000007100344b70,O,000036,_ZN5uking2ai17CastleLynelBattleD0Ev @@ -21964,7 +21964,7 @@ Address,Quality,Size,Name 0x0000007100347edc,O,000004,_ZN5uking2ai15ChemicalExplode11loadParams_Ev 0x0000007100347ee0,O,000288,_ZNK5uking2ai15ChemicalExplode27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100348000,O,000092,_ZNK5uking2ai15ChemicalExplode18getRuntimeTypeInfoEv -0x000000710034805c,U,000008,_ZNK5uking2ai15ChemicalExplode12isChangeableEv +0x000000710034805c,O,000008,_ZNK5uking2ai15ChemicalExplode12isChangeableEv 0x0000007100348064,U,000060,AI_AI_ChemicalGiantArmorRoot::ctor 0x00000071003480a0,O,000004,_ZN5uking2ai22ChemicalGiantArmorRootD1Ev 0x00000071003480a4,O,000036,_ZN5uking2ai22ChemicalGiantArmorRootD0Ev @@ -22113,7 +22113,7 @@ Address,Quality,Size,Name 0x000000710034c6d8,U,000276,uking::ai::ChuchuDieSelect::m34 0x000000710034c7ec,O,000132,_ZNK5uking2ai15ChuchuDieSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710034c870,O,000092,_ZNK5uking2ai15ChuchuDieSelect18getRuntimeTypeInfoEv -0x000000710034c8cc,U,000008,_ZNK5uking2ai9DieSelect12isChangeableEv +0x000000710034c8cc,O,000008,_ZNK5uking2ai9DieSelect12isChangeableEv 0x000000710034c8d4,U,000004,uking::ai::DieSelect::m35 0x000000710034c8d8,O,000372,_ZN5uking2ai21DieSelectChemicalPlus33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710034ca4c,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai21DieSelectChemicalPlusEE9isDerivedEPKNS0_9InterfaceE @@ -22160,7 +22160,7 @@ Address,Quality,Size,Name 0x000000710034e398,O,000036,_ZN5uking2ai16ChuchuTypeSelectD0Ev 0x000000710034e3bc,O,000008,_ZN5uking2ai16ChuchuTypeSelect5init_EPN4sead4HeapE 0x000000710034e3c4,W,000116,_ZN5uking2ai16ChuchuTypeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710034e438,U,000004,_ZN5uking2ai16ChuchuTypeSelect5calc_Ev +0x000000710034e438,O,000004,_ZN5uking2ai16ChuchuTypeSelect5calc_Ev 0x000000710034e43c,O,000004,_ZN5uking2ai16ChuchuTypeSelect6leave_Ev 0x000000710034e440,O,000004,_ZN5uking2ai16ChuchuTypeSelect11loadParams_Ev 0x000000710034e444,O,000288,_ZNK5uking2ai16ChuchuTypeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22293,7 +22293,7 @@ Address,Quality,Size,Name 0x0000007100351ebc,O,000036,_ZN5uking2ai30CliffDistanceSelectThreeActionD0Ev 0x0000007100351ee0,O,000008,_ZN5uking2ai30CliffDistanceSelectThreeAction5init_EPN4sead4HeapE 0x0000007100351ee8,W,000348,_ZN5uking2ai30CliffDistanceSelectThreeAction6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100352044,U,000004,_ZN5uking2ai30CliffDistanceSelectThreeAction5calc_Ev +0x0000007100352044,O,000004,_ZN5uking2ai30CliffDistanceSelectThreeAction5calc_Ev 0x0000007100352048,O,000004,_ZN5uking2ai30CliffDistanceSelectThreeAction6leave_Ev 0x000000710035204c,O,000100,_ZN5uking2ai30CliffDistanceSelectThreeAction11loadParams_Ev 0x00000071003520b0,O,000288,_ZNK5uking2ai30CliffDistanceSelectThreeAction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22457,7 +22457,7 @@ Address,Quality,Size,Name 0x0000007100358e98,O,000036,_ZN5uking2ai11CountSelectD0Ev 0x0000007100358ebc,W,000012,_ZN5uking2ai11CountSelect5init_EPN4sead4HeapE 0x0000007100358ec8,W,000064,_ZN5uking2ai11CountSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100358f08,U,000004,_ZN5uking2ai11CountSelect5calc_Ev +0x0000007100358f08,O,000004,_ZN5uking2ai11CountSelect5calc_Ev 0x0000007100358f0c,O,000004,_ZN5uking2ai11CountSelect6leave_Ev 0x0000007100358f10,O,000064,_ZN5uking2ai11CountSelect11loadParams_Ev 0x0000007100358f50,O,000288,_ZNK5uking2ai11CountSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22509,7 +22509,7 @@ Address,Quality,Size,Name 0x000000710035a888,O,000036,_ZN5uking2ai18CreateOnFaceSelectD0Ev 0x000000710035a8ac,O,000008,_ZN5uking2ai18CreateOnFaceSelect5init_EPN4sead4HeapE 0x000000710035a8b4,W,000048,_ZN5uking2ai18CreateOnFaceSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710035a8e4,U,000004,_ZN5uking2ai18CreateOnFaceSelect5calc_Ev +0x000000710035a8e4,O,000004,_ZN5uking2ai18CreateOnFaceSelect5calc_Ev 0x000000710035a8e8,O,000004,_ZN5uking2ai18CreateOnFaceSelect6leave_Ev 0x000000710035a8ec,O,000064,_ZN5uking2ai18CreateOnFaceSelect11loadParams_Ev 0x000000710035a92c,O,000288,_ZNK5uking2ai18CreateOnFaceSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22532,7 +22532,7 @@ Address,Quality,Size,Name 0x000000710035ae90,O,000036,_ZN5uking2ai16DamageAttrSelectD0Ev 0x000000710035aeb4,O,000008,_ZN5uking2ai16DamageAttrSelect5init_EPN4sead4HeapE 0x000000710035aebc,W,000176,_ZN5uking2ai16DamageAttrSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710035af6c,U,000004,_ZN5uking2ai16DamageAttrSelect5calc_Ev +0x000000710035af6c,O,000004,_ZN5uking2ai16DamageAttrSelect5calc_Ev 0x000000710035af70,O,000004,_ZN5uking2ai16DamageAttrSelect6leave_Ev 0x000000710035af74,O,000100,_ZN5uking2ai16DamageAttrSelect11loadParams_Ev 0x000000710035afd8,O,000288,_ZNK5uking2ai16DamageAttrSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22544,7 +22544,7 @@ Address,Quality,Size,Name 0x000000710035b1d4,O,000036,_ZN5uking2ai16DamageTypeSelectD0Ev 0x000000710035b1f8,O,000008,_ZN5uking2ai16DamageTypeSelect5init_EPN4sead4HeapE 0x000000710035b200,W,000108,_ZN5uking2ai16DamageTypeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710035b26c,U,000004,_ZN5uking2ai16DamageTypeSelect5calc_Ev +0x000000710035b26c,O,000004,_ZN5uking2ai16DamageTypeSelect5calc_Ev 0x000000710035b270,O,000004,_ZN5uking2ai16DamageTypeSelect6leave_Ev 0x000000710035b274,O,000064,_ZN5uking2ai16DamageTypeSelect11loadParams_Ev 0x000000710035b2b4,O,000288,_ZNK5uking2ai16DamageTypeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22718,14 +22718,14 @@ Address,Quality,Size,Name 0x00000071003609ac,W,000016,_ZN5uking2ai22DgnObj_DLC_SliderBlock6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071003609bc,U,000120,_ZN5uking2ai22DgnObj_DLC_SliderBlock5calc_Ev 0x0000007100360a34,W,000016,_ZN5uking2ai22DgnObj_DLC_SliderBlock6leave_Ev -0x0000007100360a44,U,000008,_ZN5uking2ai22DgnObj_DLC_SliderBlock18updateForPreDeleteEv +0x0000007100360a44,O,000008,_ZN5uking2ai22DgnObj_DLC_SliderBlock18updateForPreDeleteEv 0x0000007100360a4c,O,000004,_ZN5uking2ai22DgnObj_DLC_SliderBlock11loadParams_Ev 0x0000007100360a50,U,000120,_ZN5uking2ai22DgnObj_DLC_SliderBlock14handleMessage_ERKN4ksys7MessageE 0x0000007100360ac8,U,000332,uking::ai::DgnObj_DLC_SliderBlock::m35 0x0000007100360c14,U,000008, 0x0000007100360c1c,W,000132,_ZNK5uking2ai22DgnObj_DLC_SliderBlock27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100360ca0,O,000092,_ZNK5uking2ai22DgnObj_DLC_SliderBlock18getRuntimeTypeInfoEv -0x0000007100360cfc,U,000008,_ZN5uking2ai22DgnObj_DLC_SliderBlock23hasUpdateForPreDeleteCbEv +0x0000007100360cfc,O,000008,_ZN5uking2ai22DgnObj_DLC_SliderBlock23hasUpdateForPreDeleteCbEv 0x0000007100360d04,U,000008,uking::ai::DgnObj_DLC_SliderBlock::m34 0x0000007100360d0c,U,000288, 0x0000007100360e2c,U,000092, @@ -22909,7 +22909,7 @@ Address,Quality,Size,Name 0x0000007100367410,O,000036,_ZN5uking2ai24DoubtItemSubTargetSelectD0Ev 0x0000007100367434,O,000008,_ZN5uking2ai24DoubtItemSubTargetSelect5init_EPN4sead4HeapE 0x000000710036743c,W,000084,_ZN5uking2ai24DoubtItemSubTargetSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100367490,U,000004,_ZN5uking2ai24DoubtItemSubTargetSelect5calc_Ev +0x0000007100367490,O,000004,_ZN5uking2ai24DoubtItemSubTargetSelect5calc_Ev 0x0000007100367494,O,000004,_ZN5uking2ai24DoubtItemSubTargetSelect6leave_Ev 0x0000007100367498,O,000004,_ZN5uking2ai24DoubtItemSubTargetSelect11loadParams_Ev 0x000000710036749c,O,000288,_ZNK5uking2ai24DoubtItemSubTargetSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -22986,7 +22986,7 @@ Address,Quality,Size,Name 0x000000710036be34,O,000036,_ZN5uking2ai18DragonIceWaitRunelD0Ev 0x000000710036be58,O,000008,_ZN5uking2ai18DragonIceWaitRunel5init_EPN4sead4HeapE 0x000000710036be60,W,000188,_ZN5uking2ai18DragonIceWaitRunel6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710036bf1c,U,000004,_ZN5uking2ai18DragonIceWaitRunel5calc_Ev +0x000000710036bf1c,O,000004,_ZN5uking2ai18DragonIceWaitRunel5calc_Ev 0x000000710036bf20,O,000004,_ZN5uking2ai18DragonIceWaitRunel6leave_Ev 0x000000710036bf24,O,000004,_ZN5uking2ai18DragonIceWaitRunel11loadParams_Ev 0x000000710036bf28,O,000288,_ZNK5uking2ai18DragonIceWaitRunel27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -23524,7 +23524,7 @@ Address,Quality,Size,Name 0x0000007100385368,O,000036,_ZN5uking2ai24EnemyChemicalPowerSelectD0Ev 0x000000710038538c,O,000008,_ZN5uking2ai24EnemyChemicalPowerSelect5init_EPN4sead4HeapE 0x0000007100385394,W,000076,_ZN5uking2ai24EnemyChemicalPowerSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003853e0,U,000004,_ZN5uking2ai24EnemyChemicalPowerSelect5calc_Ev +0x00000071003853e0,O,000004,_ZN5uking2ai24EnemyChemicalPowerSelect5calc_Ev 0x00000071003853e4,O,000004,_ZN5uking2ai24EnemyChemicalPowerSelect6leave_Ev 0x00000071003853e8,O,000004,_ZN5uking2ai24EnemyChemicalPowerSelect11loadParams_Ev 0x00000071003853ec,O,000288,_ZNK5uking2ai24EnemyChemicalPowerSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -23536,7 +23536,7 @@ Address,Quality,Size,Name 0x0000007100385630,W,000052,_ZN5uking2ai19EnemyChemicalSelectD0Ev 0x0000007100385664,W,000092,_ZN5uking2ai19EnemyChemicalSelect5init_EPN4sead4HeapE 0x00000071003856c0,W,000156,_ZN5uking2ai19EnemyChemicalSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710038575c,U,000004,_ZN5uking2ai19EnemyChemicalSelect5calc_Ev +0x000000710038575c,O,000004,_ZN5uking2ai19EnemyChemicalSelect5calc_Ev 0x0000007100385760,O,000004,_ZN5uking2ai19EnemyChemicalSelect6leave_Ev 0x0000007100385764,O,000100,_ZN5uking2ai19EnemyChemicalSelect11loadParams_Ev 0x00000071003857c8,O,000288,_ZNK5uking2ai19EnemyChemicalSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -23883,7 +23883,7 @@ Address,Quality,Size,Name 0x0000007100396648,O,000036,_ZN5uking2ai15EnemyLifeSelectD0Ev 0x000000710039666c,O,000008,_ZN5uking2ai15EnemyLifeSelect5init_EPN4sead4HeapE 0x0000007100396674,W,000076,_ZN5uking2ai15EnemyLifeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003966c0,U,000004,_ZN5uking2ai15EnemyLifeSelect5calc_Ev +0x00000071003966c0,O,000004,_ZN5uking2ai15EnemyLifeSelect5calc_Ev 0x00000071003966c4,O,000004,_ZN5uking2ai15EnemyLifeSelect6leave_Ev 0x00000071003966c8,O,000064,_ZN5uking2ai15EnemyLifeSelect11loadParams_Ev 0x0000007100396708,O,000288,_ZNK5uking2ai15EnemyLifeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24356,7 +24356,7 @@ Address,Quality,Size,Name 0x00000071003b233c,O,000036,_ZN5uking2ai17EnemyReturnSelectD0Ev 0x00000071003b2360,O,000008,_ZN5uking2ai17EnemyReturnSelect5init_EPN4sead4HeapE 0x00000071003b2368,W,000364,_ZN5uking2ai17EnemyReturnSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003b24d4,U,000004,_ZN5uking2ai17EnemyReturnSelect5calc_Ev +0x00000071003b24d4,O,000004,_ZN5uking2ai17EnemyReturnSelect5calc_Ev 0x00000071003b24d8,O,000004,_ZN5uking2ai17EnemyReturnSelect6leave_Ev 0x00000071003b24dc,O,000136,_ZN5uking2ai17EnemyReturnSelect11loadParams_Ev 0x00000071003b2564,O,000288,_ZNK5uking2ai17EnemyReturnSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24681,7 +24681,7 @@ Address,Quality,Size,Name 0x00000071003c314c,O,000008,_ZN5uking2ai25EnemyVacuumBombSelectBase5init_EPN4sead4HeapE 0x00000071003c3154,W,000068,_ZN5uking2ai25EnemyVacuumBombSelectBase6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071003c3198,U,000432, -0x00000071003c3348,U,000004,_ZN5uking2ai25EnemyVacuumBombSelectBase5calc_Ev +0x00000071003c3348,O,000004,_ZN5uking2ai25EnemyVacuumBombSelectBase5calc_Ev 0x00000071003c334c,O,000004,_ZN5uking2ai25EnemyVacuumBombSelectBase6leave_Ev 0x00000071003c3350,W,000328,_ZN5uking2ai25EnemyVacuumBombSelectBase11loadParams_Ev 0x00000071003c3498,O,000288,_ZNK5uking2ai25EnemyVacuumBombSelectBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24692,7 +24692,7 @@ Address,Quality,Size,Name 0x00000071003c3678,W,000052,_ZN5uking2ai27EnemyVacuumWeaponTypeSelectD0Ev 0x00000071003c36ac,O,000008,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect5init_EPN4sead4HeapE 0x00000071003c36b4,W,000328,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003c37fc,U,000004,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect5calc_Ev +0x00000071003c37fc,O,000004,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect5calc_Ev 0x00000071003c3800,O,000004,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect6leave_Ev 0x00000071003c3804,O,000064,_ZN5uking2ai27EnemyVacuumWeaponTypeSelect11loadParams_Ev 0x00000071003c3844,O,000288,_ZNK5uking2ai27EnemyVacuumWeaponTypeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24769,7 +24769,7 @@ Address,Quality,Size,Name 0x00000071003c6604,O,000036,_ZN5uking2ai20EnterFromResetSelectD0Ev 0x00000071003c6628,O,000008,_ZN5uking2ai20EnterFromResetSelect5init_EPN4sead4HeapE 0x00000071003c6630,W,000056,_ZN5uking2ai20EnterFromResetSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003c6668,U,000004,_ZN5uking2ai20EnterFromResetSelect5calc_Ev +0x00000071003c6668,O,000004,_ZN5uking2ai20EnterFromResetSelect5calc_Ev 0x00000071003c666c,O,000004,_ZN5uking2ai20EnterFromResetSelect6leave_Ev 0x00000071003c6670,O,000004,_ZN5uking2ai20EnterFromResetSelect11loadParams_Ev 0x00000071003c6674,O,000288,_ZNK5uking2ai20EnterFromResetSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24865,7 +24865,7 @@ Address,Quality,Size,Name 0x00000071003c92d0,O,000008,_ZN5uking2ai18EscapeOrWaitSelect5init_EPN4sead4HeapE 0x00000071003c92d8,W,000360,_ZN5uking2ai18EscapeOrWaitSelect6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071003c9440,U,000860, -0x00000071003c979c,U,000004,_ZN5uking2ai18EscapeOrWaitSelect5calc_Ev +0x00000071003c979c,O,000004,_ZN5uking2ai18EscapeOrWaitSelect5calc_Ev 0x00000071003c97a0,O,000004,_ZN5uking2ai18EscapeOrWaitSelect6leave_Ev 0x00000071003c97a4,O,000220,_ZN5uking2ai18EscapeOrWaitSelect11loadParams_Ev 0x00000071003c9880,O,000288,_ZNK5uking2ai18EscapeOrWaitSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24891,7 +24891,7 @@ Address,Quality,Size,Name 0x00000071003c9eb4,O,000036,_ZN5uking2ai13EventTimeRootD0Ev 0x00000071003c9ed8,O,000008,_ZN5uking2ai13EventTimeRoot5init_EPN4sead4HeapE 0x00000071003c9ee0,W,000016,_ZN5uking2ai13EventTimeRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003c9ef0,U,000004,_ZN5uking2ai13EventTimeRoot5calc_Ev +0x00000071003c9ef0,O,000004,_ZN5uking2ai13EventTimeRoot5calc_Ev 0x00000071003c9ef4,O,000004,_ZN5uking2ai13EventTimeRoot6leave_Ev 0x00000071003c9ef8,O,000100,_ZN5uking2ai13EventTimeRoot11loadParams_Ev 0x00000071003c9f5c,O,000288,_ZNK5uking2ai13EventTimeRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -24924,7 +24924,7 @@ Address,Quality,Size,Name 0x00000071003ca75c,O,000036,_ZN5uking2ai11FirstSelectD0Ev 0x00000071003ca780,W,000016,_ZN5uking2ai11FirstSelect5init_EPN4sead4HeapE 0x00000071003ca790,W,000112,_ZN5uking2ai11FirstSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003ca800,U,000004,_ZN5uking2ai11FirstSelect5calc_Ev +0x00000071003ca800,O,000004,_ZN5uking2ai11FirstSelect5calc_Ev 0x00000071003ca804,O,000004,_ZN5uking2ai11FirstSelect6leave_Ev 0x00000071003ca808,O,000064,_ZN5uking2ai11FirstSelect11loadParams_Ev 0x00000071003ca848,O,000288,_ZNK5uking2ai11FirstSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25141,7 +25141,7 @@ Address,Quality,Size,Name 0x00000071003d56a0,O,000036,_ZN5uking2ai24ForbidDoubleNoticeSelectD0Ev 0x00000071003d56c4,O,000008,_ZN5uking2ai24ForbidDoubleNoticeSelect5init_EPN4sead4HeapE 0x00000071003d56cc,W,000184,_ZN5uking2ai24ForbidDoubleNoticeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003d5784,U,000004,_ZN5uking2ai24ForbidDoubleNoticeSelect5calc_Ev +0x00000071003d5784,O,000004,_ZN5uking2ai24ForbidDoubleNoticeSelect5calc_Ev 0x00000071003d5788,O,000004,_ZN5uking2ai24ForbidDoubleNoticeSelect6leave_Ev 0x00000071003d578c,O,000004,_ZN5uking2ai24ForbidDoubleNoticeSelect11loadParams_Ev 0x00000071003d5790,O,000288,_ZNK5uking2ai24ForbidDoubleNoticeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25191,7 +25191,7 @@ Address,Quality,Size,Name 0x00000071003d6e1c,O,000036,_ZN5uking2ai30ForestGiantClosestAttackSelectD0Ev 0x00000071003d6e40,O,000008,_ZN5uking2ai30ForestGiantClosestAttackSelect5init_EPN4sead4HeapE 0x00000071003d6e48,W,000484,_ZN5uking2ai30ForestGiantClosestAttackSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003d702c,U,000004,_ZN5uking2ai30ForestGiantClosestAttackSelect5calc_Ev +0x00000071003d702c,O,000004,_ZN5uking2ai30ForestGiantClosestAttackSelect5calc_Ev 0x00000071003d7030,O,000004,_ZN5uking2ai30ForestGiantClosestAttackSelect6leave_Ev 0x00000071003d7034,O,000128,_ZN5uking2ai30ForestGiantClosestAttackSelect11loadParams_Ev 0x00000071003d70b4,O,000288,_ZNK5uking2ai30ForestGiantClosestAttackSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25337,7 +25337,7 @@ Address,Quality,Size,Name 0x00000071003dcc2c,O,000036,_ZN5uking2ai18ForkBeastGanonRootD0Ev 0x00000071003dcc50,O,000004,_ZN5uking2ai18ForkBeastGanonRoot5init_EPN4sead4HeapE 0x00000071003dcc54,O,000004,_ZN5uking2ai18ForkBeastGanonRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003dcc58,U,000004,_ZN5uking2ai18ForkBeastGanonRoot5calc_Ev +0x00000071003dcc58,O,000004,_ZN5uking2ai18ForkBeastGanonRoot5calc_Ev 0x00000071003dcc5c,O,000004,_ZN5uking2ai18ForkBeastGanonRoot6leave_Ev 0x00000071003dcc60,O,000004,_ZN5uking2ai18ForkBeastGanonRoot11loadParams_Ev 0x00000071003dcc64,O,000008,_ZNK5uking2ai18ForkBeastGanonRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25348,7 +25348,7 @@ Address,Quality,Size,Name 0x00000071003dce70,O,000036,_ZN5uking2ai12ForSaleOrNotD0Ev 0x00000071003dce94,O,000008,_ZN5uking2ai12ForSaleOrNot5init_EPN4sead4HeapE 0x00000071003dce9c,W,000068,_ZN5uking2ai12ForSaleOrNot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003dcee0,U,000004,_ZN5uking2ai12ForSaleOrNot5calc_Ev +0x00000071003dcee0,O,000004,_ZN5uking2ai12ForSaleOrNot5calc_Ev 0x00000071003dcee4,O,000004,_ZN5uking2ai12ForSaleOrNot6leave_Ev 0x00000071003dcee8,O,000004,_ZN5uking2ai12ForSaleOrNot11loadParams_Ev 0x00000071003dceec,O,000288,_ZNK5uking2ai12ForSaleOrNot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25386,7 +25386,7 @@ Address,Quality,Size,Name 0x00000071003de1c0,O,000036,_ZN5uking2ai23FromPopPoolDamageSelectD0Ev 0x00000071003de1e4,O,000008,_ZN5uking2ai23FromPopPoolDamageSelect5init_EPN4sead4HeapE 0x00000071003de1ec,W,000200,_ZN5uking2ai23FromPopPoolDamageSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003de2b4,U,000004,_ZN5uking2ai23FromPopPoolDamageSelect5calc_Ev +0x00000071003de2b4,O,000004,_ZN5uking2ai23FromPopPoolDamageSelect5calc_Ev 0x00000071003de2b8,O,000004,_ZN5uking2ai23FromPopPoolDamageSelect6leave_Ev 0x00000071003de2bc,O,000004,_ZN5uking2ai23FromPopPoolDamageSelect11loadParams_Ev 0x00000071003de2c0,O,000288,_ZNK5uking2ai23FromPopPoolDamageSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -25980,7 +25980,7 @@ Address,Quality,Size,Name 0x00000071003f97d4,O,000036,_ZN5uking2ai15GiantRoamSelectD0Ev 0x00000071003f97f8,O,000008,_ZN5uking2ai15GiantRoamSelect5init_EPN4sead4HeapE 0x00000071003f9800,W,000136,_ZN5uking2ai15GiantRoamSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003f9888,U,000004,_ZN5uking2ai15GiantRoamSelect5calc_Ev +0x00000071003f9888,O,000004,_ZN5uking2ai15GiantRoamSelect5calc_Ev 0x00000071003f988c,O,000004,_ZN5uking2ai15GiantRoamSelect6leave_Ev 0x00000071003f9890,O,000064,_ZN5uking2ai15GiantRoamSelect11loadParams_Ev 0x00000071003f98d0,O,000288,_ZNK5uking2ai15GiantRoamSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -26023,7 +26023,7 @@ Address,Quality,Size,Name 0x00000071003fabf4,O,000008,_ZN5uking2ai26GiantStoneShootAngrySelect5init_EPN4sead4HeapE 0x00000071003fabfc,W,000140,_ZN5uking2ai26GiantStoneShootAngrySelect6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071003fac88,U,000248, -0x00000071003fad80,U,000004,_ZN5uking2ai26GiantStoneShootAngrySelect5calc_Ev +0x00000071003fad80,O,000004,_ZN5uking2ai26GiantStoneShootAngrySelect5calc_Ev 0x00000071003fad84,O,000004,_ZN5uking2ai26GiantStoneShootAngrySelect6leave_Ev 0x00000071003fad88,O,000192,_ZN5uking2ai26GiantStoneShootAngrySelect11loadParams_Ev 0x00000071003fae48,O,000288,_ZNK5uking2ai26GiantStoneShootAngrySelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -26047,7 +26047,7 @@ Address,Quality,Size,Name 0x00000071003fb4e4,O,000036,_ZN5uking2ai27GolemChemicalVanishedSelectD0Ev 0x00000071003fb508,O,000008,_ZN5uking2ai27GolemChemicalVanishedSelect5init_EPN4sead4HeapE 0x00000071003fb510,W,000204,_ZN5uking2ai27GolemChemicalVanishedSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071003fb5dc,U,000004,_ZN5uking2ai27GolemChemicalVanishedSelect5calc_Ev +0x00000071003fb5dc,O,000004,_ZN5uking2ai27GolemChemicalVanishedSelect5calc_Ev 0x00000071003fb5e0,O,000004,_ZN5uking2ai27GolemChemicalVanishedSelect6leave_Ev 0x00000071003fb5e4,O,000064,_ZN5uking2ai27GolemChemicalVanishedSelect11loadParams_Ev 0x00000071003fb624,O,000288,_ZNK5uking2ai27GolemChemicalVanishedSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -26256,7 +26256,7 @@ Address,Quality,Size,Name 0x00000071004037c8,W,000052,_ZN5uking2ai20GolemSleepTypeSelectD0Ev 0x00000071004037fc,O,000008,_ZN5uking2ai20GolemSleepTypeSelect5init_EPN4sead4HeapE 0x0000007100403804,W,000492,_ZN5uking2ai20GolemSleepTypeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004039f0,U,000004,_ZN5uking2ai20GolemSleepTypeSelect5calc_Ev +0x00000071004039f0,O,000004,_ZN5uking2ai20GolemSleepTypeSelect5calc_Ev 0x00000071004039f4,O,000004,_ZN5uking2ai20GolemSleepTypeSelect6leave_Ev 0x00000071004039f8,O,000064,_ZN5uking2ai20GolemSleepTypeSelect11loadParams_Ev 0x0000007100403a38,O,000288,_ZNK5uking2ai20GolemSleepTypeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -26446,7 +26446,7 @@ Address,Quality,Size,Name 0x000000710040da30,O,000036,_ZN5uking2ai10GuardianAID0Ev 0x000000710040da54,O,000008,_ZN5uking2ai10GuardianAI5init_EPN4sead4HeapE 0x000000710040da5c,O,000004,_ZN5uking2ai10GuardianAI6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710040da60,U,000004,_ZN5uking2ai10GuardianAI5calc_Ev +0x000000710040da60,O,000004,_ZN5uking2ai10GuardianAI5calc_Ev 0x000000710040da64,O,000004,_ZN5uking2ai10GuardianAI6leave_Ev 0x000000710040da68,O,000004,_ZN5uking2ai10GuardianAI11loadParams_Ev 0x000000710040da6c,U,000140, @@ -26549,7 +26549,7 @@ Address,Quality,Size,Name 0x0000007100411da4,O,000036,_ZN5uking2ai22GuardianBeamAttackBaseD0Ev 0x0000007100411dc8,O,000008,_ZN5uking2ai22GuardianBeamAttackBase5init_EPN4sead4HeapE 0x0000007100411dd0,O,000004,_ZN5uking2ai22GuardianBeamAttackBase6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100411dd4,U,000004,_ZN5uking2ai22GuardianBeamAttackBase5calc_Ev +0x0000007100411dd4,O,000004,_ZN5uking2ai22GuardianBeamAttackBase5calc_Ev 0x0000007100411dd8,O,000004,_ZN5uking2ai22GuardianBeamAttackBase6leave_Ev 0x0000007100411ddc,O,000004,_ZN5uking2ai22GuardianBeamAttackBase11loadParams_Ev 0x0000007100411de0,U,000148, @@ -26714,7 +26714,7 @@ Address,Quality,Size,Name 0x0000007100419bf0,W,000116,_ZN5uking2ai20GuardianMiniBlownOffD0Ev 0x0000007100419c64,W,000128,_ZN5uking2ai20GuardianMiniBlownOff5init_EPN4sead4HeapE 0x0000007100419ce4,W,000056,_ZN5uking2ai20GuardianMiniBlownOff6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100419d1c,U,000004,_ZN5uking2ai20GuardianMiniBlownOff5calc_Ev +0x0000007100419d1c,O,000004,_ZN5uking2ai20GuardianMiniBlownOff5calc_Ev 0x0000007100419d20,O,000004,_ZN5uking2ai20GuardianMiniBlownOff6leave_Ev 0x0000007100419d24,O,000100,_ZN5uking2ai20GuardianMiniBlownOff11loadParams_Ev 0x0000007100419d88,U,000568, @@ -26742,7 +26742,7 @@ Address,Quality,Size,Name 0x000000710041af9c,U,000072, 0x000000710041afe4,O,000288,_ZNK5uking2ai24GuardianMiniChangeWeapon27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710041b104,O,000092,_ZNK5uking2ai24GuardianMiniChangeWeapon18getRuntimeTypeInfoEv -0x000000710041b160,U,000008,_ZNK5uking2ai24GuardianMiniChangeWeapon12isChangeableEv +0x000000710041b160,O,000008,_ZNK5uking2ai24GuardianMiniChangeWeapon12isChangeableEv 0x000000710041b168,U,000124,AI_AI_GuardianMiniFinalBattle::ctor 0x000000710041b1e4,W,000116,_ZN5uking2ai23GuardianMiniFinalBattleD1Ev 0x000000710041b258,W,000124,_ZN5uking2ai23GuardianMiniFinalBattleD0Ev @@ -26762,7 +26762,7 @@ Address,Quality,Size,Name 0x000000710041bd60,U,000072, 0x000000710041bda8,O,000008,_ZNK5uking2ai23GuardianMiniFinalBattle27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710041bdb0,O,000092,_ZNK5uking2ai23GuardianMiniFinalBattle18getRuntimeTypeInfoEv -0x000000710041be0c,U,000008,_ZNK5uking2ai23GuardianMiniFinalBattle12isChangeableEv +0x000000710041be0c,O,000008,_ZNK5uking2ai23GuardianMiniFinalBattle12isChangeableEv 0x000000710041be14,O,000372,_ZN5uking2ai23GuardianMiniFinalBattle33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710041bf88,O,000048,_ZN5uking2ai22GuardianMiniFindPlayerC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710041bfb8,O,000004,_ZN5uking2ai22GuardianMiniFindPlayerD1Ev @@ -27069,7 +27069,7 @@ Address,Quality,Size,Name 0x000000710042df78,O,000036,_ZN5uking2ai17HasPreActorSelectD0Ev 0x000000710042df9c,O,000008,_ZN5uking2ai17HasPreActorSelect5init_EPN4sead4HeapE 0x000000710042dfa4,W,000048,_ZN5uking2ai17HasPreActorSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710042dfd4,U,000004,_ZN5uking2ai17HasPreActorSelect5calc_Ev +0x000000710042dfd4,O,000004,_ZN5uking2ai17HasPreActorSelect5calc_Ev 0x000000710042dfd8,O,000004,_ZN5uking2ai17HasPreActorSelect6leave_Ev 0x000000710042dfdc,O,000004,_ZN5uking2ai17HasPreActorSelect11loadParams_Ev 0x000000710042dfe0,O,000288,_ZNK5uking2ai17HasPreActorSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27181,7 +27181,7 @@ Address,Quality,Size,Name 0x0000007100432fe4,O,000036,_ZN5uking2ai23HomePosDistanceSelectorD0Ev 0x0000007100433008,O,000008,_ZN5uking2ai23HomePosDistanceSelector5init_EPN4sead4HeapE 0x0000007100433010,W,000168,_ZN5uking2ai23HomePosDistanceSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004330b8,U,000004,_ZN5uking2ai23HomePosDistanceSelector5calc_Ev +0x00000071004330b8,O,000004,_ZN5uking2ai23HomePosDistanceSelector5calc_Ev 0x00000071004330bc,O,000004,_ZN5uking2ai23HomePosDistanceSelector6leave_Ev 0x00000071004330c0,O,000064,_ZN5uking2ai23HomePosDistanceSelector11loadParams_Ev 0x0000007100433100,O,000288,_ZNK5uking2ai23HomePosDistanceSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27290,7 +27290,7 @@ Address,Quality,Size,Name 0x000000710043c4bc,O,000092,_ZNK5uking2ai29HorsePrevRiddenStatusSelector18getRuntimeTypeInfoEv 0x000000710043c518,O,000048,_ZN5uking2ai10HorseReinsC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710043c548,W,000016,_ZN5uking2ai10HorseReins6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710043c558,U,000004,_ZN5uking2ai10HorseReins5calc_Ev +0x000000710043c558,O,000004,_ZN5uking2ai10HorseReins5calc_Ev 0x000000710043c55c,O,000004,_ZN5uking2ai10HorseReins11loadParams_Ev 0x000000710043c560,O,000288,_ZNK5uking2ai10HorseReins27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710043c680,O,000092,_ZNK5uking2ai10HorseReins18getRuntimeTypeInfoEv @@ -27388,7 +27388,7 @@ Address,Quality,Size,Name 0x0000007100440f10,O,000036,_ZN5uking2ai24HorseRideDamagedSelectorD0Ev 0x0000007100440f34,O,000008,_ZN5uking2ai24HorseRideDamagedSelector5init_EPN4sead4HeapE 0x0000007100440f3c,W,000212,_ZN5uking2ai24HorseRideDamagedSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100441010,U,000004,_ZN5uking2ai24HorseRideDamagedSelector5calc_Ev +0x0000007100441010,O,000004,_ZN5uking2ai24HorseRideDamagedSelector5calc_Ev 0x0000007100441014,O,000004,_ZN5uking2ai24HorseRideDamagedSelector6leave_Ev 0x0000007100441018,O,000004,_ZN5uking2ai24HorseRideDamagedSelector11loadParams_Ev 0x000000710044101c,O,000288,_ZNK5uking2ai24HorseRideDamagedSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27522,7 +27522,7 @@ Address,Quality,Size,Name 0x0000007100444fd8,U,000284,uking::ai::IAIAttack::m36 0x00000071004450f4,O,000288,_ZNK5uking2ai9IAIAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100445214,O,000092,_ZNK5uking2ai9IAIAttack18getRuntimeTypeInfoEv -0x0000007100445270,U,000008,_ZNK5uking2ai9IAIAttack12isChangeableEv +0x0000007100445270,O,000008,_ZNK5uking2ai9IAIAttack12isChangeableEv 0x0000007100445278,U,000080,AI_AI_IbutsuWaterFallRoot::ctor 0x00000071004452c8,W,000096,_ZN5uking2ai19IbutsuWaterFallRootD1Ev 0x0000007100445328,W,000104,_ZN5uking2ai19IbutsuWaterFallRootD0Ev @@ -27599,7 +27599,7 @@ Address,Quality,Size,Name 0x00000071004498b0,O,000036,_ZN5uking2ai26InForceEnemyLostAreaSelectD0Ev 0x00000071004498d4,O,000008,_ZN5uking2ai26InForceEnemyLostAreaSelect5init_EPN4sead4HeapE 0x00000071004498dc,W,000168,_ZN5uking2ai26InForceEnemyLostAreaSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100449984,U,000004,_ZN5uking2ai26InForceEnemyLostAreaSelect5calc_Ev +0x0000007100449984,O,000004,_ZN5uking2ai26InForceEnemyLostAreaSelect5calc_Ev 0x0000007100449988,O,000004,_ZN5uking2ai26InForceEnemyLostAreaSelect6leave_Ev 0x000000710044998c,O,000004,_ZN5uking2ai26InForceEnemyLostAreaSelect11loadParams_Ev 0x0000007100449990,O,000288,_ZNK5uking2ai26InForceEnemyLostAreaSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27611,7 +27611,7 @@ Address,Quality,Size,Name 0x0000007100449b8c,O,000036,_ZN5uking2ai24InitFromInCarryBoxSelectD0Ev 0x0000007100449bb0,O,000008,_ZN5uking2ai24InitFromInCarryBoxSelect5init_EPN4sead4HeapE 0x0000007100449bb8,W,000060,_ZN5uking2ai24InitFromInCarryBoxSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100449bf4,U,000004,_ZN5uking2ai24InitFromInCarryBoxSelect5calc_Ev +0x0000007100449bf4,O,000004,_ZN5uking2ai24InitFromInCarryBoxSelect5calc_Ev 0x0000007100449bf8,O,000004,_ZN5uking2ai24InitFromInCarryBoxSelect6leave_Ev 0x0000007100449bfc,O,000100,_ZN5uking2ai24InitFromInCarryBoxSelect11loadParams_Ev 0x0000007100449c60,O,000288,_ZNK5uking2ai24InitFromInCarryBoxSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27674,7 +27674,7 @@ Address,Quality,Size,Name 0x000000710044b8c0,O,000036,_ZN5uking2ai19InTerritorySelectorD0Ev 0x000000710044b8e4,W,000268,_ZN5uking2ai19InTerritorySelector6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710044b9f0,U,000228, -0x000000710044bad4,U,000004,_ZN5uking2ai19InTerritorySelector5calc_Ev +0x000000710044bad4,O,000004,_ZN5uking2ai19InTerritorySelector5calc_Ev 0x000000710044bad8,O,000004,_ZN5uking2ai19InTerritorySelector6leave_Ev 0x000000710044badc,O,000064,_ZN5uking2ai19InTerritorySelector11loadParams_Ev 0x000000710044bb1c,O,000288,_ZNK5uking2ai19InTerritorySelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -27896,7 +27896,7 @@ Address,Quality,Size,Name 0x000000710045297c,U,000108,_ZN5uking2ai15KeeseHangOnCeil14handleMessage_ERKN4ksys7MessageE 0x00000071004529e8,O,000288,_ZNK5uking2ai15KeeseHangOnCeil27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100452b08,O,000092,_ZNK5uking2ai15KeeseHangOnCeil18getRuntimeTypeInfoEv -0x0000007100452b64,U,000008,_ZNK5uking2ai15KeeseHangOnCeil12isChangeableEv +0x0000007100452b64,O,000008,_ZNK5uking2ai15KeeseHangOnCeil12isChangeableEv 0x0000007100452b6c,U,000196,AI_AI_KeeseNormal::ctor 0x0000007100452c30,W,000160,_ZN5uking2ai11KeeseNormalD1Ev 0x0000007100452cd0,W,000168,_ZN5uking2ai11KeeseNormalD0Ev @@ -27987,7 +27987,7 @@ Address,Quality,Size,Name 0x00000071004562d4,O,000036,_ZN5uking2ai22KokkoAngryTargetSelectD0Ev 0x00000071004562f8,O,000008,_ZN5uking2ai22KokkoAngryTargetSelect5init_EPN4sead4HeapE 0x0000007100456300,W,000236,_ZN5uking2ai22KokkoAngryTargetSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004563ec,U,000004,_ZN5uking2ai22KokkoAngryTargetSelect5calc_Ev +0x00000071004563ec,O,000004,_ZN5uking2ai22KokkoAngryTargetSelect5calc_Ev 0x00000071004563f0,O,000004,_ZN5uking2ai22KokkoAngryTargetSelect6leave_Ev 0x00000071004563f4,O,000004,_ZN5uking2ai22KokkoAngryTargetSelect11loadParams_Ev 0x00000071004563f8,O,000288,_ZNK5uking2ai22KokkoAngryTargetSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -28292,7 +28292,7 @@ Address,Quality,Size,Name 0x000000710046cc20,U,000400, 0x000000710046cdb0,O,000288,_ZNK5uking2ai23LandHumEnemyThrowWeapon27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710046ced0,O,000092,_ZNK5uking2ai23LandHumEnemyThrowWeapon18getRuntimeTypeInfoEv -0x000000710046cf2c,U,000008,_ZNK5uking2ai23LandHumEnemyThrowWeapon12isChangeableEv +0x000000710046cf2c,O,000008,_ZNK5uking2ai23LandHumEnemyThrowWeapon12isChangeableEv 0x000000710046cf34,U,000224,AI_AI_LandHumEnemyUnarmedBattle::ctor 0x000000710046d014,W,000080,_ZN5uking2ai25LandHumEnemyUnarmedBattleD1Ev 0x000000710046d064,W,000088,_ZN5uking2ai25LandHumEnemyUnarmedBattleD0Ev @@ -28387,7 +28387,7 @@ Address,Quality,Size,Name 0x000000710047450c,U,000280,uking::ai::RemainElectricCannonRootBase::m36 0x0000007100474624,U,000104,uking::ai::RemainElectricCannonRootBase::m38 0x000000710047468c,U,000024,uking::ai::RemainElectricCannonRootBase::m40 -0x00000071004746a4,U,000008,_ZN5uking2ai28RemainElectricCannonRootBase14handleMessage_ERKN4ksys7MessageE +0x00000071004746a4,O,000008,_ZN5uking2ai28RemainElectricCannonRootBase14handleMessage_ERKN4ksys7MessageE 0x00000071004746ac,O,000288,_ZNK5uking2ai28RemainElectricCannonRootBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004747cc,O,000092,_ZNK5uking2ai28RemainElectricCannonRootBase18getRuntimeTypeInfoEv 0x0000007100474828,O,000036,_ZN5uking2ai28RemainElectricCannonRootBaseD0Ev @@ -28403,7 +28403,7 @@ Address,Quality,Size,Name 0x0000007100474958,W,000208,_ZN5uking2ai18LastAttackerSelect6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100474a28,U,000364, 0x0000007100474b94,U,000364, -0x0000007100474d00,U,000004,_ZN5uking2ai18LastAttackerSelect5calc_Ev +0x0000007100474d00,O,000004,_ZN5uking2ai18LastAttackerSelect5calc_Ev 0x0000007100474d04,O,000004,_ZN5uking2ai18LastAttackerSelect6leave_Ev 0x0000007100474d08,O,000004,_ZN5uking2ai18LastAttackerSelect11loadParams_Ev 0x0000007100474d0c,O,000288,_ZNK5uking2ai18LastAttackerSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -28416,7 +28416,7 @@ Address,Quality,Size,Name 0x0000007100474f5c,O,000036,_ZN5uking2ai31LastAttackerSpecialActionSelectD0Ev 0x0000007100474f80,O,000008,_ZN5uking2ai31LastAttackerSpecialActionSelect5init_EPN4sead4HeapE 0x0000007100474f88,W,000312,_ZN5uking2ai31LastAttackerSpecialActionSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004750c0,U,000004,_ZN5uking2ai31LastAttackerSpecialActionSelect5calc_Ev +0x00000071004750c0,O,000004,_ZN5uking2ai31LastAttackerSpecialActionSelect5calc_Ev 0x00000071004750c4,O,000004,_ZN5uking2ai31LastAttackerSpecialActionSelect6leave_Ev 0x00000071004750c8,O,000064,_ZN5uking2ai31LastAttackerSpecialActionSelect11loadParams_Ev 0x0000007100475108,O,000288,_ZNK5uking2ai31LastAttackerSpecialActionSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -28480,7 +28480,7 @@ Address,Quality,Size,Name 0x00000071004783a4,U,000136,uking::ai::LastBossNormalWarpRoot::m35 0x000000710047842c,O,000288,_ZNK5uking2ai22LastBossNormalWarpRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710047854c,O,000092,_ZNK5uking2ai22LastBossNormalWarpRoot18getRuntimeTypeInfoEv -0x00000071004785a8,U,000008,_ZNK5uking2ai22LastBossNormalWarpRoot12isChangeableEv +0x00000071004785a8,O,000008,_ZNK5uking2ai22LastBossNormalWarpRoot12isChangeableEv 0x00000071004785b0,U,000052,AI_AI_LastBossRailWarpRoot::ctor 0x00000071004785e4,O,000004,_ZN5uking2ai20LastBossRailWarpRootD1Ev 0x00000071004785e8,O,000036,_ZN5uking2ai20LastBossRailWarpRootD0Ev @@ -28524,7 +28524,7 @@ Address,Quality,Size,Name 0x000000710047ac98,O,000092,_ZNK5uking2ai12LastBossRoot18getRuntimeTypeInfoEv 0x000000710047acf4,O,000004,_ZN5uking2ai12LastBossRootD1Ev 0x000000710047acf8,O,000036,_ZN5uking2ai12LastBossRootD0Ev -0x000000710047ad1c,U,000008,_ZN5uking2ai12LastBossRoot14hasPreDeleteCbEv +0x000000710047ad1c,O,000008,_ZN5uking2ai12LastBossRoot14hasPreDeleteCbEv 0x000000710047ad24,O,000052,_ZN5uking2ai18LastBossShieldBashC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710047ad58,O,000004,_ZN5uking2ai18LastBossShieldBashD1Ev 0x000000710047ad5c,O,000036,_ZN5uking2ai18LastBossShieldBashD0Ev @@ -28754,7 +28754,7 @@ Address,Quality,Size,Name 0x000000710048714c,U,000072, 0x0000007100487194,O,000288,_ZNK5uking2ai20LumberjackFallenTree27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004872b4,O,000092,_ZNK5uking2ai20LumberjackFallenTree18getRuntimeTypeInfoEv -0x0000007100487310,U,000008,_ZN5uking2ai20LumberjackFallenTree23hasUpdateForPreDeleteCbEv +0x0000007100487310,O,000008,_ZN5uking2ai20LumberjackFallenTree23hasUpdateForPreDeleteCbEv 0x0000007100487318,U,000216, 0x00000071004873f0,U,000188, 0x00000071004874ac,U,000464,AI_AI_LumberjackTree::ctor @@ -28781,7 +28781,7 @@ Address,Quality,Size,Name 0x000000710048aa5c,U,000072, 0x000000710048aaa4,O,000288,_ZNK5uking2ai14LumberjackTree27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710048abc4,O,000092,_ZNK5uking2ai14LumberjackTree18getRuntimeTypeInfoEv -0x000000710048ac20,U,000008,_ZN5uking2ai14LumberjackTree14hasPreDeleteCbEv +0x000000710048ac20,O,000008,_ZN5uking2ai14LumberjackTree14hasPreDeleteCbEv 0x000000710048ac28,U,000004,j__ZdlPv_116 0x000000710048ac2c,U,000008, 0x000000710048ac34,U,000092, @@ -28806,7 +28806,7 @@ Address,Quality,Size,Name 0x000000710048b214,W,000128,_ZN5uking2ai26LynelArrowAttackSelectBase6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710048b294,U,000036, 0x000000710048b2b8,U,000036, -0x000000710048b2dc,U,000004,_ZN5uking2ai26LynelArrowAttackSelectBase5calc_Ev +0x000000710048b2dc,O,000004,_ZN5uking2ai26LynelArrowAttackSelectBase5calc_Ev 0x000000710048b2e0,O,000004,_ZN5uking2ai26LynelArrowAttackSelectBase6leave_Ev 0x000000710048b2e4,O,000064,_ZN5uking2ai26LynelArrowAttackSelectBase11loadParams_Ev 0x000000710048b324,O,000288,_ZNK5uking2ai26LynelArrowAttackSelectBase27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -28861,7 +28861,7 @@ Address,Quality,Size,Name 0x000000710048cd4c,O,000008,_ZN5uking2ai23LynelBackStepFromTarget5init_EPN4sead4HeapE 0x000000710048cd54,W,000360,_ZN5uking2ai23LynelBackStepFromTarget6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710048cebc,U,000776, -0x000000710048d1c4,U,000004,_ZN5uking2ai23LynelBackStepFromTarget5calc_Ev +0x000000710048d1c4,O,000004,_ZN5uking2ai23LynelBackStepFromTarget5calc_Ev 0x000000710048d1c8,O,000004,_ZN5uking2ai23LynelBackStepFromTarget6leave_Ev 0x000000710048d1cc,O,000192,_ZN5uking2ai23LynelBackStepFromTarget11loadParams_Ev 0x000000710048d28c,O,000288,_ZNK5uking2ai23LynelBackStepFromTarget27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29176,7 +29176,7 @@ Address,Quality,Size,Name 0x000000710049c060,U,000132,_ZN5uking2ai15LynelTackleMove14handleMessage_ERKN4ksys7MessageE 0x000000710049c0e4,U,000136,_ZNK5uking2ai15LynelTackleMove10isFinishedEv 0x000000710049c16c,U,000052,_ZNK5uking2ai15LynelTackleMove8isFailedEv -0x000000710049c1a0,U,000008,_ZNK5uking2ai15LynelTackleMove12isChangeableEv +0x000000710049c1a0,O,000008,_ZNK5uking2ai15LynelTackleMove12isChangeableEv 0x000000710049c1a8,O,000288,_ZNK5uking2ai15LynelTackleMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710049c2c8,O,000092,_ZNK5uking2ai15LynelTackleMove18getRuntimeTypeInfoEv 0x000000710049c324,O,000056,_ZN5uking2ai22LynelThreeBreathAttackC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -29349,7 +29349,7 @@ Address,Quality,Size,Name 0x00000071004a251c,O,000036,_ZN5uking2ai22MainFieldDungeonSelectD0Ev 0x00000071004a2540,O,000008,_ZN5uking2ai22MainFieldDungeonSelect5init_EPN4sead4HeapE 0x00000071004a2548,W,000312,_ZN5uking2ai22MainFieldDungeonSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004a2680,U,000004,_ZN5uking2ai22MainFieldDungeonSelect5calc_Ev +0x00000071004a2680,O,000004,_ZN5uking2ai22MainFieldDungeonSelect5calc_Ev 0x00000071004a2684,O,000004,_ZN5uking2ai22MainFieldDungeonSelect6leave_Ev 0x00000071004a2688,O,000004,_ZN5uking2ai22MainFieldDungeonSelect11loadParams_Ev 0x00000071004a268c,O,000288,_ZNK5uking2ai22MainFieldDungeonSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29359,7 +29359,7 @@ Address,Quality,Size,Name 0x00000071004a2840,O,000036,_ZN5uking2ai25MasquaradeSubTargetSelectD0Ev 0x00000071004a2864,O,000008,_ZN5uking2ai25MasquaradeSubTargetSelect5init_EPN4sead4HeapE 0x00000071004a286c,W,000364,_ZN5uking2ai25MasquaradeSubTargetSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004a29d8,U,000004,_ZN5uking2ai25MasquaradeSubTargetSelect5calc_Ev +0x00000071004a29d8,O,000004,_ZN5uking2ai25MasquaradeSubTargetSelect5calc_Ev 0x00000071004a29dc,O,000004,_ZN5uking2ai25MasquaradeSubTargetSelect6leave_Ev 0x00000071004a29e0,O,000108,_ZN5uking2ai25MasquaradeSubTargetSelect11loadParams_Ev 0x00000071004a2a4c,O,000288,_ZNK5uking2ai25MasquaradeSubTargetSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29399,7 +29399,7 @@ Address,Quality,Size,Name 0x00000071004a4118,O,000036,_ZN5uking2ai22MergedDungeonPartsRootD0Ev 0x00000071004a413c,O,000008,_ZN5uking2ai22MergedDungeonPartsRoot5init_EPN4sead4HeapE 0x00000071004a4144,W,000016,_ZN5uking2ai22MergedDungeonPartsRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004a4154,U,000004,_ZN5uking2ai22MergedDungeonPartsRoot5calc_Ev +0x00000071004a4154,O,000004,_ZN5uking2ai22MergedDungeonPartsRoot5calc_Ev 0x00000071004a4158,O,000004,_ZN5uking2ai22MergedDungeonPartsRoot6leave_Ev 0x00000071004a415c,O,000940,_ZN5uking2ai22MergedDungeonPartsRoot11loadParams_Ev 0x00000071004a4508,O,000288,_ZNK5uking2ai22MergedDungeonPartsRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29520,7 +29520,7 @@ Address,Quality,Size,Name 0x00000071004a823c,O,000036,_ZN5uking2ai15MimicFlagSelectD0Ev 0x00000071004a8260,O,000008,_ZN5uking2ai15MimicFlagSelect5init_EPN4sead4HeapE 0x00000071004a8268,W,000048,_ZN5uking2ai15MimicFlagSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004a8298,U,000004,_ZN5uking2ai15MimicFlagSelect5calc_Ev +0x00000071004a8298,O,000004,_ZN5uking2ai15MimicFlagSelect5calc_Ev 0x00000071004a829c,O,000004,_ZN5uking2ai15MimicFlagSelect6leave_Ev 0x00000071004a82a0,O,000064,_ZN5uking2ai15MimicFlagSelect11loadParams_Ev 0x00000071004a82e0,O,000288,_ZNK5uking2ai15MimicFlagSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29596,7 +29596,7 @@ Address,Quality,Size,Name 0x00000071004a9e70,O,000048,_ZN5uking2ai6MoonAIC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071004a9ea0,O,000008,_ZN5uking2ai6MoonAI5init_EPN4sead4HeapE 0x00000071004a9ea8,W,000300,_ZN5uking2ai6MoonAI6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004a9fd4,U,000004,_ZN5uking2ai6MoonAI5calc_Ev +0x00000071004a9fd4,O,000004,_ZN5uking2ai6MoonAI5calc_Ev 0x00000071004a9fd8,O,000004,_ZN5uking2ai6MoonAI6leave_Ev 0x00000071004a9fdc,O,000004,_ZN5uking2ai6MoonAI11loadParams_Ev 0x00000071004a9fe0,O,000288,_ZNK5uking2ai6MoonAI27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29893,7 +29893,7 @@ Address,Quality,Size,Name 0x00000071004bb6a8,O,000036,_ZN5uking2ai26NearCreateAppearTypeSelectD0Ev 0x00000071004bb6cc,O,000008,_ZN5uking2ai26NearCreateAppearTypeSelect5init_EPN4sead4HeapE 0x00000071004bb6d4,W,000052,_ZN5uking2ai26NearCreateAppearTypeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004bb708,U,000004,_ZN5uking2ai26NearCreateAppearTypeSelect5calc_Ev +0x00000071004bb708,O,000004,_ZN5uking2ai26NearCreateAppearTypeSelect5calc_Ev 0x00000071004bb70c,O,000004,_ZN5uking2ai26NearCreateAppearTypeSelect6leave_Ev 0x00000071004bb710,O,000064,_ZN5uking2ai26NearCreateAppearTypeSelect11loadParams_Ev 0x00000071004bb750,U,000052,_ZNK5uking2ai26NearCreateAppearTypeSelect10isFinishedEv @@ -29905,7 +29905,7 @@ Address,Quality,Size,Name 0x00000071004bb96c,O,000036,_ZN5uking2ai16NearCreateSelectD0Ev 0x00000071004bb990,O,000008,_ZN5uking2ai16NearCreateSelect5init_EPN4sead4HeapE 0x00000071004bb998,W,000160,_ZN5uking2ai16NearCreateSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004bba38,U,000004,_ZN5uking2ai16NearCreateSelect5calc_Ev +0x00000071004bba38,O,000004,_ZN5uking2ai16NearCreateSelect5calc_Ev 0x00000071004bba3c,O,000004,_ZN5uking2ai16NearCreateSelect6leave_Ev 0x00000071004bba40,O,000064,_ZN5uking2ai16NearCreateSelect11loadParams_Ev 0x00000071004bba80,O,000288,_ZNK5uking2ai16NearCreateSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -29981,7 +29981,7 @@ Address,Quality,Size,Name 0x00000071004beb74,W,000084,_ZN5uking2ai13NPCArtistRoot11loadParams_Ev 0x00000071004bebc8,O,000008,_ZNK5uking2ai13NPCArtistRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004bebd0,O,000092,_ZNK5uking2ai13NPCArtistRoot18getRuntimeTypeInfoEv -0x00000071004bec2c,U,000008,_ZN5uking2ai7NPCRoot14hasPreDeleteCbEv +0x00000071004bec2c,O,000008,_ZN5uking2ai7NPCRoot14hasPreDeleteCbEv 0x00000071004bec34,O,000372,_ZN5uking2ai13NPCArtistRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004beda8,U,000100,AI_AI_NPCAttack::ctor 0x00000071004bee0c,O,000004,_ZN5uking2ai9NPCAttackD1Ev @@ -30048,7 +30048,7 @@ Address,Quality,Size,Name 0x00000071004c402c,U,000392, 0x00000071004c41b4,O,000008,_ZNK5uking2ai12NPCClerkRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004c41bc,O,000092,_ZNK5uking2ai12NPCClerkRoot18getRuntimeTypeInfoEv -0x00000071004c4218,U,000008,_ZN5uking2ai12NPCClerkRoot14hasPreDeleteCbEv +0x00000071004c4218,O,000008,_ZN5uking2ai12NPCClerkRoot14hasPreDeleteCbEv 0x00000071004c4220,O,000372,_ZN5uking2ai12NPCClerkRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004c4394,U,000080,AI_AI_NPCConfront::ctor 0x00000071004c43e4,O,000004,_ZN5uking2ai11NPCConfrontD1Ev @@ -30090,7 +30090,7 @@ Address,Quality,Size,Name 0x00000071004c9420,O,000036,_ZN5uking2ai11NpcDemoRootD0Ev 0x00000071004c9444,O,000008,_ZN5uking2ai11NpcDemoRoot5init_EPN4sead4HeapE 0x00000071004c944c,O,000004,_ZN5uking2ai11NpcDemoRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004c9450,U,000004,_ZN5uking2ai11NpcDemoRoot5calc_Ev +0x00000071004c9450,O,000004,_ZN5uking2ai11NpcDemoRoot5calc_Ev 0x00000071004c9454,O,000004,_ZN5uking2ai11NpcDemoRoot6leave_Ev 0x00000071004c9458,O,000004,_ZN5uking2ai11NpcDemoRoot11loadParams_Ev 0x00000071004c945c,O,000288,_ZNK5uking2ai11NpcDemoRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30134,7 +30134,7 @@ Address,Quality,Size,Name 0x00000071004cc0dc,U,000208,uking::ai::NPCHorseRide::m36 0x00000071004cc1ac,O,000008,_ZNK5uking2ai12NPCHorseRide27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004cc1b4,O,000092,_ZNK5uking2ai12NPCHorseRide18getRuntimeTypeInfoEv -0x00000071004cc210,U,000008,_ZN5uking2ai12NPCHorseRide14hasPreDeleteCbEv +0x00000071004cc210,O,000008,_ZN5uking2ai12NPCHorseRide14hasPreDeleteCbEv 0x00000071004cc218,O,000372,_ZN5uking2ai12NPCHorseRide33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004cc38c,U,000076,AI_AI_NPCHorseRideWait::ctor 0x00000071004cc3d8,W,000068,_ZN5uking2ai16NPCHorseRideWaitD1Ev @@ -30162,7 +30162,7 @@ Address,Quality,Size,Name 0x00000071004cd790,U,000172,_ZN5uking2ai17NPCMamonoShopRoot11onPreDeleteEv 0x00000071004cd83c,O,000008,_ZNK5uking2ai17NPCMamonoShopRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004cd844,O,000092,_ZNK5uking2ai17NPCMamonoShopRoot18getRuntimeTypeInfoEv -0x00000071004cd8a0,U,000008,_ZN5uking2ai17NPCMamonoShopRoot14hasPreDeleteCbEv +0x00000071004cd8a0,O,000008,_ZN5uking2ai17NPCMamonoShopRoot14hasPreDeleteCbEv 0x00000071004cd8a8,O,000372,_ZN5uking2ai17NPCMamonoShopRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004cda1c,U,000428,AI_AI_NPCMove::ctor 0x00000071004cdbc8,W,000136,_ZN5uking2ai7NPCMoveD1Ev @@ -30418,7 +30418,7 @@ Address,Quality,Size,Name 0x00000071004e5df0,U,000160,_ZN5uking2ai9NPCTravel11onPreDeleteEv 0x00000071004e5e90,O,000008,_ZNK5uking2ai9NPCTravel27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004e5e98,O,000092,_ZNK5uking2ai9NPCTravel18getRuntimeTypeInfoEv -0x00000071004e5ef4,U,000008,_ZN5uking2ai9NPCTravel14hasPreDeleteCbEv +0x00000071004e5ef4,O,000008,_ZN5uking2ai9NPCTravel14hasPreDeleteCbEv 0x00000071004e5efc,O,000372,_ZN5uking2ai9NPCTravel33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004e6070,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai13NPCTravelBaseEE9isDerivedEPKNS0_9InterfaceE 0x00000071004e60fc,U,000096,AI_AI_NPCTravelerRoot::ctor @@ -30434,7 +30434,7 @@ Address,Quality,Size,Name 0x00000071004e6ca0,U,000052,_ZN5uking2ai15NPCTravelerRoot11onPreDeleteEv 0x00000071004e6cd4,O,000008,_ZNK5uking2ai15NPCTravelerRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004e6cdc,O,000092,_ZNK5uking2ai15NPCTravelerRoot18getRuntimeTypeInfoEv -0x00000071004e6d38,U,000008,_ZN5uking2ai15NPCTravelerRoot14hasPreDeleteCbEv +0x00000071004e6d38,O,000008,_ZN5uking2ai15NPCTravelerRoot14hasPreDeleteCbEv 0x00000071004e6d40,O,000372,_ZN5uking2ai15NPCTravelerRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004e6eb4,U,000120,AI_AI_NPCWander::ctor 0x00000071004e6f2c,W,000020,_ZN5uking2ai9NPCWanderD1Ev @@ -30502,7 +30502,7 @@ Address,Quality,Size,Name 0x00000071004ebe08,U,000748, 0x00000071004ec0f4,O,000008,_ZNK5uking2ai18OctarockHideEscape27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004ec0fc,O,000092,_ZNK5uking2ai18OctarockHideEscape18getRuntimeTypeInfoEv -0x00000071004ec158,U,000008,_ZNK5uking2ai14OctarockEscape12isChangeableEv +0x00000071004ec158,O,000008,_ZNK5uking2ai14OctarockEscape12isChangeableEv 0x00000071004ec160,U,000008,uking::ai::OctarockHideEscape::m34 0x00000071004ec168,O,000372,_ZN5uking2ai18OctarockHideEscape33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071004ec2dc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai14OctarockEscapeEE9isDerivedEPKNS0_9InterfaceE @@ -30677,7 +30677,7 @@ Address,Quality,Size,Name 0x00000071004f37b8,O,000036,_ZN5uking2ai22OnEnterEventModeSelectD0Ev 0x00000071004f37dc,O,000008,_ZN5uking2ai22OnEnterEventModeSelect5init_EPN4sead4HeapE 0x00000071004f37e4,W,000068,_ZN5uking2ai22OnEnterEventModeSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f3828,U,000004,_ZN5uking2ai22OnEnterEventModeSelect5calc_Ev +0x00000071004f3828,O,000004,_ZN5uking2ai22OnEnterEventModeSelect5calc_Ev 0x00000071004f382c,O,000004,_ZN5uking2ai22OnEnterEventModeSelect6leave_Ev 0x00000071004f3830,O,000004,_ZN5uking2ai22OnEnterEventModeSelect11loadParams_Ev 0x00000071004f3834,O,000288,_ZNK5uking2ai22OnEnterEventModeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30689,7 +30689,7 @@ Address,Quality,Size,Name 0x00000071004f3a2c,O,000036,_ZN5uking2ai15OnNavFaceSelectD0Ev 0x00000071004f3a50,O,000008,_ZN5uking2ai15OnNavFaceSelect5init_EPN4sead4HeapE 0x00000071004f3a58,W,000096,_ZN5uking2ai15OnNavFaceSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f3ab8,U,000004,_ZN5uking2ai15OnNavFaceSelect5calc_Ev +0x00000071004f3ab8,O,000004,_ZN5uking2ai15OnNavFaceSelect5calc_Ev 0x00000071004f3abc,O,000004,_ZN5uking2ai15OnNavFaceSelect6leave_Ev 0x00000071004f3ac0,O,000004,_ZN5uking2ai15OnNavFaceSelect11loadParams_Ev 0x00000071004f3ac4,U,000036,_ZNK5uking2ai15OnNavFaceSelect10isFinishedEv @@ -30701,7 +30701,7 @@ Address,Quality,Size,Name 0x00000071004f3ccc,O,000036,_ZN5uking2ai15OnRagdollSelectD0Ev 0x00000071004f3cf0,O,000008,_ZN5uking2ai15OnRagdollSelect5init_EPN4sead4HeapE 0x00000071004f3cf8,W,000204,_ZN5uking2ai15OnRagdollSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f3dc4,U,000004,_ZN5uking2ai15OnRagdollSelect5calc_Ev +0x00000071004f3dc4,O,000004,_ZN5uking2ai15OnRagdollSelect5calc_Ev 0x00000071004f3dc8,O,000004,_ZN5uking2ai15OnRagdollSelect6leave_Ev 0x00000071004f3dcc,O,000004,_ZN5uking2ai15OnRagdollSelect11loadParams_Ev 0x00000071004f3dd0,O,000288,_ZNK5uking2ai15OnRagdollSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30783,7 +30783,7 @@ Address,Quality,Size,Name 0x00000071004f5ff0,W,000096,_ZN5uking2ai11PillarCrackD0Ev 0x00000071004f6050,O,000008,_ZN5uking2ai11PillarCrack5init_EPN4sead4HeapE 0x00000071004f6058,W,000072,_ZN5uking2ai11PillarCrack6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f60a0,U,000004,_ZN5uking2ai11PillarCrack5calc_Ev +0x00000071004f60a0,O,000004,_ZN5uking2ai11PillarCrack5calc_Ev 0x00000071004f60a4,W,000016,_ZN5uking2ai11PillarCrack6leave_Ev 0x00000071004f60b4,O,000004,_ZN5uking2ai11PillarCrack11loadParams_Ev 0x00000071004f60b8,O,000288,_ZNK5uking2ai11PillarCrack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30816,7 +30816,7 @@ Address,Quality,Size,Name 0x00000071004f6dfc,O,000036,_ZN5uking2ai15PlayerSetTargetD0Ev 0x00000071004f6e20,O,000008,_ZN5uking2ai15PlayerSetTarget5init_EPN4sead4HeapE 0x00000071004f6e28,W,000156,_ZN5uking2ai15PlayerSetTarget6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f6ec4,U,000004,_ZN5uking2ai15PlayerSetTarget5calc_Ev +0x00000071004f6ec4,O,000004,_ZN5uking2ai15PlayerSetTarget5calc_Ev 0x00000071004f6ec8,O,000004,_ZN5uking2ai15PlayerSetTarget6leave_Ev 0x00000071004f6ecc,O,000004,_ZN5uking2ai15PlayerSetTarget11loadParams_Ev 0x00000071004f6ed0,O,000288,_ZNK5uking2ai15PlayerSetTarget27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30872,7 +30872,7 @@ Address,Quality,Size,Name 0x00000071004f86dc,W,000052,_ZN5uking2ai18PrevASOR2SelectTwoD0Ev 0x00000071004f8710,O,000008,_ZN5uking2ai18PrevASOR2SelectTwo5init_EPN4sead4HeapE 0x00000071004f8718,W,000476,_ZN5uking2ai18PrevASOR2SelectTwo6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f88f4,U,000004,_ZN5uking2ai18PrevASOR2SelectTwo5calc_Ev +0x00000071004f88f4,O,000004,_ZN5uking2ai18PrevASOR2SelectTwo5calc_Ev 0x00000071004f88f8,O,000004,_ZN5uking2ai18PrevASOR2SelectTwo6leave_Ev 0x00000071004f88fc,O,000100,_ZN5uking2ai18PrevASOR2SelectTwo11loadParams_Ev 0x00000071004f8960,O,000288,_ZNK5uking2ai18PrevASOR2SelectTwo27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30884,7 +30884,7 @@ Address,Quality,Size,Name 0x00000071004f8ba0,W,000052,_ZN5uking2ai12PrevASSelectD0Ev 0x00000071004f8bd4,O,000008,_ZN5uking2ai12PrevASSelect5init_EPN4sead4HeapE 0x00000071004f8bdc,W,000256,_ZN5uking2ai12PrevASSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f8cdc,U,000004,_ZN5uking2ai12PrevASSelect5calc_Ev +0x00000071004f8cdc,O,000004,_ZN5uking2ai12PrevASSelect5calc_Ev 0x00000071004f8ce0,O,000004,_ZN5uking2ai12PrevASSelect6leave_Ev 0x00000071004f8ce4,O,000064,_ZN5uking2ai12PrevASSelect11loadParams_Ev 0x00000071004f8d24,O,000288,_ZNK5uking2ai12PrevASSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30908,7 +30908,7 @@ Address,Quality,Size,Name 0x00000071004f930c,W,000052,_ZN5uking2ai16PrevSomeASSelectD0Ev 0x00000071004f9340,O,000008,_ZN5uking2ai16PrevSomeASSelect5init_EPN4sead4HeapE 0x00000071004f9348,W,000316,_ZN5uking2ai16PrevSomeASSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f9484,U,000004,_ZN5uking2ai16PrevSomeASSelect5calc_Ev +0x00000071004f9484,O,000004,_ZN5uking2ai16PrevSomeASSelect5calc_Ev 0x00000071004f9488,O,000004,_ZN5uking2ai16PrevSomeASSelect6leave_Ev 0x00000071004f948c,W,000348,_ZN5uking2ai16PrevSomeASSelect11loadParams_Ev 0x00000071004f95e8,O,000288,_ZNK5uking2ai16PrevSomeASSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30920,7 +30920,7 @@ Address,Quality,Size,Name 0x00000071004f97e0,O,000036,_ZN5uking2ai24PreyChemicalDeadReactionD0Ev 0x00000071004f9804,O,000008,_ZN5uking2ai24PreyChemicalDeadReaction5init_EPN4sead4HeapE 0x00000071004f980c,W,000828,_ZN5uking2ai24PreyChemicalDeadReaction6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004f9b48,U,000004,_ZN5uking2ai24PreyChemicalDeadReaction5calc_Ev +0x00000071004f9b48,O,000004,_ZN5uking2ai24PreyChemicalDeadReaction5calc_Ev 0x00000071004f9b4c,O,000004,_ZN5uking2ai24PreyChemicalDeadReaction6leave_Ev 0x00000071004f9b50,O,000004,_ZN5uking2ai24PreyChemicalDeadReaction11loadParams_Ev 0x00000071004f9b54,O,000288,_ZNK5uking2ai24PreyChemicalDeadReaction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -30947,7 +30947,7 @@ Address,Quality,Size,Name 0x00000071004fa59c,O,000036,_ZN5uking2ai21PreyDeadCauseSelectorD0Ev 0x00000071004fa5c0,O,000008,_ZN5uking2ai21PreyDeadCauseSelector5init_EPN4sead4HeapE 0x00000071004fa5c8,W,000160,_ZN5uking2ai21PreyDeadCauseSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071004fa668,U,000004,_ZN5uking2ai21PreyDeadCauseSelector5calc_Ev +0x00000071004fa668,O,000004,_ZN5uking2ai21PreyDeadCauseSelector5calc_Ev 0x00000071004fa66c,O,000004,_ZN5uking2ai21PreyDeadCauseSelector6leave_Ev 0x00000071004fa670,O,000004,_ZN5uking2ai21PreyDeadCauseSelector11loadParams_Ev 0x00000071004fa674,O,000288,_ZNK5uking2ai21PreyDeadCauseSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -31129,7 +31129,7 @@ Address,Quality,Size,Name 0x0000007100505d3c,U,000300,uking::ai::PriestBossMode::m34 0x0000007100505e68,O,000008,_ZN5uking2ai14PriestBossMode5init_EPN4sead4HeapE 0x0000007100505e70,O,000004,_ZN5uking2ai14PriestBossMode6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100505e74,U,000004,_ZN5uking2ai14PriestBossMode5calc_Ev +0x0000007100505e74,O,000004,_ZN5uking2ai14PriestBossMode5calc_Ev 0x0000007100505e78,O,000004,_ZN5uking2ai14PriestBossMode6leave_Ev 0x0000007100505e7c,O,000064,_ZN5uking2ai14PriestBossMode11loadParams_Ev 0x0000007100505ebc,O,000288,_ZNK5uking2ai14PriestBossMode27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -31301,7 +31301,7 @@ Address,Quality,Size,Name 0x000000710050ead4,U,000312, 0x000000710050ec0c,O,000288,_ZNK5uking2ai31PriestBossActorPhaseSecondStart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710050ed2c,O,000092,_ZNK5uking2ai31PriestBossActorPhaseSecondStart18getRuntimeTypeInfoEv -0x000000710050ed88,U,000008,_ZNK5uking2ai31PriestBossActorPhaseSecondStart12isChangeableEv +0x000000710050ed88,O,000008,_ZNK5uking2ai31PriestBossActorPhaseSecondStart12isChangeableEv 0x000000710050ed90,U,000048,AI_AIPriestBossRoot::ctor 0x000000710050edc0,O,000004,_ZN5uking2ai19PriestBossActorRootD1Ev 0x000000710050edc4,O,000036,_ZN5uking2ai19PriestBossActorRootD0Ev @@ -31310,7 +31310,7 @@ Address,Quality,Size,Name 0x000000710050edf0,U,000004,_ZN5uking2ai19PriestBossActorRoot5calc_Ev 0x000000710050edf4,O,000004,_ZN5uking2ai19PriestBossActorRoot6leave_Ev 0x000000710050edf8,O,000004,_ZN5uking2ai19PriestBossActorRoot11loadParams_Ev -0x000000710050edfc,U,000008,_ZN5uking2ai19PriestBossActorRoot14handleMessage_ERKN4ksys7MessageE +0x000000710050edfc,O,000008,_ZN5uking2ai19PriestBossActorRoot14handleMessage_ERKN4ksys7MessageE 0x000000710050ee04,O,000008,_ZNK5uking2ai19PriestBossActorRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710050ee0c,O,000092,_ZNK5uking2ai19PriestBossActorRoot18getRuntimeTypeInfoEv 0x000000710050ee68,U,000052,AI_AI_PriestBossAfterImageRoot::ctor @@ -31409,7 +31409,7 @@ Address,Quality,Size,Name 0x0000007100511e5c,W,000084,_ZN5uking2ai29PriestBossCircleFormationRush11loadParams_Ev 0x0000007100511eb0,O,000008,_ZNK5uking2ai29PriestBossCircleFormationRush27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100511eb8,O,000092,_ZNK5uking2ai29PriestBossCircleFormationRush18getRuntimeTypeInfoEv -0x0000007100511f14,U,000008,_ZNK5uking2ai19PriestBossFormation12isChangeableEv +0x0000007100511f14,O,000008,_ZNK5uking2ai19PriestBossFormation12isChangeableEv 0x0000007100511f1c,U,000004,uking::ai::PriestBossFormation::m42 0x0000007100511f20,O,000372,_ZN5uking2ai29PriestBossCircleFormationRush33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100512094,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai19PriestBossFormationEE9isDerivedEPKNS0_9InterfaceE @@ -31541,7 +31541,7 @@ Address,Quality,Size,Name 0x0000007100517ab8,O,000004,_ZN5uking2ai24PriestBossFastWarpAttack11loadParams_Ev 0x0000007100517abc,O,000008,_ZNK5uking2ai24PriestBossFastWarpAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100517ac4,O,000092,_ZNK5uking2ai24PriestBossFastWarpAttack18getRuntimeTypeInfoEv -0x0000007100517b20,U,000008,_ZNK5uking2ai25SiteBossSwordApproachRoot12isChangeableEv +0x0000007100517b20,O,000008,_ZNK5uking2ai25SiteBossSwordApproachRoot12isChangeableEv 0x0000007100517b28,U,000032,uking::ai::SiteBossSwordApproachRoot::m34 0x0000007100517b48,O,000372,_ZN5uking2ai24PriestBossFastWarpAttack33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100517cbc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai25SiteBossSwordApproachRootEE9isDerivedEPKNS0_9InterfaceE @@ -31827,7 +31827,7 @@ Address,Quality,Size,Name 0x0000007100525bc0,U,000232, 0x0000007100525ca8,O,000008,_ZN5uking2ai14PriestBossMeta5init_EPN4sead4HeapE 0x0000007100525cb0,O,000004,_ZN5uking2ai14PriestBossMeta6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100525cb4,U,000004,_ZN5uking2ai14PriestBossMeta5calc_Ev +0x0000007100525cb4,O,000004,_ZN5uking2ai14PriestBossMeta5calc_Ev 0x0000007100525cb8,O,000004,_ZN5uking2ai14PriestBossMeta6leave_Ev 0x0000007100525cbc,O,000128,_ZN5uking2ai14PriestBossMeta11loadParams_Ev 0x0000007100525d3c,O,000288,_ZNK5uking2ai14PriestBossMeta27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -32276,7 +32276,7 @@ Address,Quality,Size,Name 0x0000007100537b90,O,000036,_ZN5uking2ai27RandomSelectThreeActionBaseD0Ev 0x0000007100537bb4,W,000016,_ZN5uking2ai27RandomSelectThreeActionBase5init_EPN4sead4HeapE 0x0000007100537bc4,W,000324,_ZN5uking2ai27RandomSelectThreeActionBase6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100537d08,U,000004,_ZN5uking2ai27RandomSelectThreeActionBase5calc_Ev +0x0000007100537d08,O,000004,_ZN5uking2ai27RandomSelectThreeActionBase5calc_Ev 0x0000007100537d0c,O,000004,_ZN5uking2ai27RandomSelectThreeActionBase6leave_Ev 0x0000007100537d10,O,000128,_ZN5uking2ai27RandomSelectThreeActionBase11loadParams_Ev 0x0000007100537d90,U,000008,uking::ai::RandomSelectThreeActionBase::m34 @@ -32399,7 +32399,7 @@ Address,Quality,Size,Name 0x000000710053ab5c,O,000036,_ZN5uking2ai22RapidAttackAllowSelectD0Ev 0x000000710053ab80,O,000008,_ZN5uking2ai22RapidAttackAllowSelect5init_EPN4sead4HeapE 0x000000710053ab88,W,000296,_ZN5uking2ai22RapidAttackAllowSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710053acb0,U,000004,_ZN5uking2ai22RapidAttackAllowSelect5calc_Ev +0x000000710053acb0,O,000004,_ZN5uking2ai22RapidAttackAllowSelect5calc_Ev 0x000000710053acb4,O,000004,_ZN5uking2ai22RapidAttackAllowSelect6leave_Ev 0x000000710053acb8,O,000100,_ZN5uking2ai22RapidAttackAllowSelect11loadParams_Ev 0x000000710053ad1c,O,000288,_ZNK5uking2ai22RapidAttackAllowSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -32492,7 +32492,7 @@ Address,Quality,Size,Name 0x000000710053e004,O,000036,_ZN5uking2ai29RegistedActorNumTwoSelectBaseD0Ev 0x000000710053e028,O,000008,_ZN5uking2ai29RegistedActorNumTwoSelectBase5init_EPN4sead4HeapE 0x000000710053e030,W,000232,_ZN5uking2ai29RegistedActorNumTwoSelectBase6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710053e118,U,000004,_ZN5uking2ai29RegistedActorNumTwoSelectBase5calc_Ev +0x000000710053e118,O,000004,_ZN5uking2ai29RegistedActorNumTwoSelectBase5calc_Ev 0x000000710053e11c,O,000004,_ZN5uking2ai29RegistedActorNumTwoSelectBase6leave_Ev 0x000000710053e120,U,000004,uking::ai::RegistedActorNumTwoSelectBase::m34 0x000000710053e124,O,000064,_ZN5uking2ai29RegistedActorNumTwoSelectBase11loadParams_Ev @@ -33198,7 +33198,7 @@ Address,Quality,Size,Name 0x0000007100560300,O,000036,_ZN5uking2ai16SelfXRotSelectorD0Ev 0x0000007100560324,O,000008,_ZN5uking2ai16SelfXRotSelector5init_EPN4sead4HeapE 0x000000710056032c,W,000132,_ZN5uking2ai16SelfXRotSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005603b0,U,000004,_ZN5uking2ai16SelfXRotSelector5calc_Ev +0x00000071005603b0,O,000004,_ZN5uking2ai16SelfXRotSelector5calc_Ev 0x00000071005603b4,O,000004,_ZN5uking2ai16SelfXRotSelector6leave_Ev 0x00000071005603b8,O,000064,_ZN5uking2ai16SelfXRotSelector11loadParams_Ev 0x00000071005603f8,O,000288,_ZNK5uking2ai16SelfXRotSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -33292,7 +33292,7 @@ Address,Quality,Size,Name 0x0000007100562880,O,000004,_ZN5uking2ai23SeqHiddenOctarockSearch11loadParams_Ev 0x0000007100562884,O,000288,_ZNK5uking2ai23SeqHiddenOctarockSearch27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005629a4,O,000092,_ZNK5uking2ai23SeqHiddenOctarockSearch18getRuntimeTypeInfoEv -0x0000007100562a00,U,000008,_ZNK5uking2ai23SeqHiddenOctarockSearch12isChangeableEv +0x0000007100562a00,O,000008,_ZNK5uking2ai23SeqHiddenOctarockSearch12isChangeableEv 0x0000007100562a08,O,000052,_ZN5uking2ai15SeqIfElseActionC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100562a3c,O,000004,_ZN5uking2ai15SeqIfElseActionD1Ev 0x0000007100562a40,O,000036,_ZN5uking2ai15SeqIfElseActionD0Ev @@ -33763,7 +33763,7 @@ Address,Quality,Size,Name 0x00000071005711bc,U,000208,uking::ai::SiteBossApproachRoot::m34 0x000000710057128c,O,000288,_ZNK5uking2ai20SiteBossApproachRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005713ac,O,000092,_ZNK5uking2ai20SiteBossApproachRoot18getRuntimeTypeInfoEv -0x0000007100571408,U,000008,_ZNK5uking2ai20SiteBossApproachRoot12isChangeableEv +0x0000007100571408,O,000008,_ZNK5uking2ai20SiteBossApproachRoot12isChangeableEv 0x0000007100571410,U,000060,AI_AI_SiteBossArrowRainAttack::ctor 0x000000710057144c,O,000004,_ZN5uking2ai23SiteBossArrowRainAttackD1Ev 0x0000007100571450,O,000036,_ZN5uking2ai23SiteBossArrowRainAttackD0Ev @@ -33780,7 +33780,7 @@ Address,Quality,Size,Name 0x00000071005718e8,U,000004,uking::ai::SiteBossArrowRainAttack::m48 0x00000071005718ec,O,000132,_ZNK5uking2ai23SiteBossArrowRainAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100571970,O,000092,_ZNK5uking2ai23SiteBossArrowRainAttack18getRuntimeTypeInfoEv -0x00000071005719cc,U,000008,_ZNK5uking2ai24SiteBossReflectArrowRoot12isChangeableEv +0x00000071005719cc,O,000008,_ZNK5uking2ai24SiteBossReflectArrowRoot12isChangeableEv 0x00000071005719d4,U,000008,uking::ai::SiteBossReflectArrowRoot::m34 0x00000071005719dc,U,000004,uking::ai::SiteBossShootNormalArrowRoot::m39 0x00000071005719e0,U,000004,uking::ai::SiteBossShootNormalArrowRoot::m40 @@ -33863,7 +33863,7 @@ Address,Quality,Size,Name 0x0000007100576858,W,000164,_ZN5uking2ai15SiteBossBowRoot11loadParams_Ev 0x00000071005768fc,O,000008,_ZNK5uking2ai15SiteBossBowRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100576904,O,000092,_ZNK5uking2ai15SiteBossBowRoot18getRuntimeTypeInfoEv -0x0000007100576960,U,000008,_ZN5uking2ai12SiteBossRoot14hasPreDeleteCbEv +0x0000007100576960,O,000008,_ZN5uking2ai12SiteBossRoot14hasPreDeleteCbEv 0x0000007100576968,O,000372,_ZN5uking2ai15SiteBossBowRoot33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100576adc,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking2ai12SiteBossRootEE9isDerivedEPKNS0_9InterfaceE 0x0000007100576b68,U,000064,AI_AI_SiteBossFlameBall::ctor @@ -33955,7 +33955,7 @@ Address,Quality,Size,Name 0x000000710057c46c,W,000440,_ZN5uking2ai26SiteBossLswordFireBallRoot11loadParams_Ev 0x000000710057c624,O,000288,_ZNK5uking2ai26SiteBossLswordFireBallRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710057c744,O,000092,_ZNK5uking2ai26SiteBossLswordFireBallRoot18getRuntimeTypeInfoEv -0x000000710057c7a0,U,000008,_ZNK5uking2ai26SiteBossLswordFireBallRoot12isChangeableEv +0x000000710057c7a0,O,000008,_ZNK5uking2ai26SiteBossLswordFireBallRoot12isChangeableEv 0x000000710057c7a8,U,000064,AI_AI_SiteBossLswordRoot::ctor 0x000000710057c7e8,W,000648,_ZN5uking2ai18SiteBossLswordRootD1Ev 0x000000710057ca70,W,000036,_ZN5uking2ai18SiteBossLswordRootD0Ev @@ -33982,7 +33982,7 @@ Address,Quality,Size,Name 0x000000710057e70c,O,000224,_ZN5uking2ai25SiteBossLswordTornadoRoot11loadParams_Ev 0x000000710057e7ec,O,000288,_ZNK5uking2ai25SiteBossLswordTornadoRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710057e90c,O,000092,_ZNK5uking2ai25SiteBossLswordTornadoRoot18getRuntimeTypeInfoEv -0x000000710057e968,U,000008,_ZNK5uking2ai25SiteBossLswordTornadoRoot12isChangeableEv +0x000000710057e968,O,000008,_ZNK5uking2ai25SiteBossLswordTornadoRoot12isChangeableEv 0x000000710057e970,O,000048,_ZN5uking2ai18SiteBossNormalRootC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710057e9a0,O,000004,_ZN5uking2ai18SiteBossNormalRootD1Ev 0x000000710057e9a4,O,000036,_ZN5uking2ai18SiteBossNormalRootD0Ev @@ -34009,7 +34009,7 @@ Address,Quality,Size,Name 0x000000710057f318,U,000176,uking::ai::SiteBossPierceBulletAttack::m50 0x000000710057f3c8,O,000008,_ZNK5uking2ai26SiteBossPierceBulletAttack27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710057f3d0,O,000092,_ZNK5uking2ai26SiteBossPierceBulletAttack18getRuntimeTypeInfoEv -0x000000710057f42c,U,000008,_ZNK5uking2ai28SiteBossShootNormalArrowRoot12isChangeableEv +0x000000710057f42c,O,000008,_ZNK5uking2ai28SiteBossShootNormalArrowRoot12isChangeableEv 0x000000710057f434,U,000008,uking::ai::SiteBossPierceBulletAttack::m34 0x000000710057f43c,U,000004,uking::ai::SiteBossShootNormalArrowRoot::m42 0x000000710057f440,U,000008,uking::ai::SiteBossShootNormalArrowRoot::m43 @@ -34134,7 +34134,7 @@ Address,Quality,Size,Name 0x000000710058974c,O,000036,_ZN5uking2ai23SiteBossSmallDamageRootD0Ev 0x0000007100589770,O,000008,_ZN5uking2ai23SiteBossSmallDamageRoot5init_EPN4sead4HeapE 0x0000007100589778,W,000128,_ZN5uking2ai23SiteBossSmallDamageRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005897f8,U,000004,_ZN5uking2ai23SiteBossSmallDamageRoot5calc_Ev +0x00000071005897f8,O,000004,_ZN5uking2ai23SiteBossSmallDamageRoot5calc_Ev 0x00000071005897fc,O,000004,_ZN5uking2ai23SiteBossSmallDamageRoot6leave_Ev 0x0000007100589800,O,000004,_ZN5uking2ai23SiteBossSmallDamageRoot11loadParams_Ev 0x0000007100589804,U,000092,_ZNK5uking2ai23SiteBossSmallDamageRoot10isFinishedEv @@ -34203,7 +34203,7 @@ Address,Quality,Size,Name 0x00000071005925f8,O,000092,_ZNK5uking2ai18SiteBossSpearThrow18getRuntimeTypeInfoEv 0x0000007100592654,U,000080,_ZNK5uking2ai18SiteBossSpearThrow8isFailedEv 0x00000071005926a4,U,000080,_ZNK5uking2ai18SiteBossSpearThrow10isFinishedEv -0x00000071005926f4,U,000008,_ZNK5uking2ai18SiteBossSpearThrow12isChangeableEv +0x00000071005926f4,O,000008,_ZNK5uking2ai18SiteBossSpearThrow12isChangeableEv 0x00000071005926fc,U,000064,AI_AI_SiteBossSwordApproachRoot::ctor 0x000000710059273c,O,000004,_ZN5uking2ai25SiteBossSwordApproachRootD1Ev 0x0000007100592740,O,000036,_ZN5uking2ai25SiteBossSwordApproachRootD0Ev @@ -34295,7 +34295,7 @@ Address,Quality,Size,Name 0x000000710059926c,O,000408,_ZN5uking2ai23SiteBossSwordSeqThreeAI11loadParams_Ev 0x0000007100599404,O,000288,_ZNK5uking2ai23SiteBossSwordSeqThreeAI27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100599524,O,000092,_ZNK5uking2ai23SiteBossSwordSeqThreeAI18getRuntimeTypeInfoEv -0x0000007100599580,U,000008,_ZNK5uking2ai23SiteBossSwordSeqThreeAI12isChangeableEv +0x0000007100599580,O,000008,_ZNK5uking2ai23SiteBossSwordSeqThreeAI12isChangeableEv 0x0000007100599588,U,000052,AI_AI_SiteBossSwordWeapon::ctor 0x00000071005995bc,O,000004,_ZN5uking2ai19SiteBossSwordWeaponD1Ev 0x00000071005995c0,O,000036,_ZN5uking2ai19SiteBossSwordWeaponD0Ev @@ -34352,7 +34352,7 @@ Address,Quality,Size,Name 0x000000710059b2e8,O,000036,_ZN5uking2ai11SleepSelectD0Ev 0x000000710059b30c,O,000008,_ZN5uking2ai11SleepSelect5init_EPN4sead4HeapE 0x000000710059b314,W,000208,_ZN5uking2ai11SleepSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710059b3e4,U,000004,_ZN5uking2ai11SleepSelect5calc_Ev +0x000000710059b3e4,O,000004,_ZN5uking2ai11SleepSelect5calc_Ev 0x000000710059b3e8,O,000004,_ZN5uking2ai11SleepSelect6leave_Ev 0x000000710059b3ec,O,000004,_ZN5uking2ai11SleepSelect11loadParams_Ev 0x000000710059b3f0,O,000288,_ZNK5uking2ai11SleepSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -34392,7 +34392,7 @@ Address,Quality,Size,Name 0x000000710059c8a4,O,000036,_ZN5uking2ai17SpearWeaponSelectD0Ev 0x000000710059c8c8,O,000008,_ZN5uking2ai17SpearWeaponSelect5init_EPN4sead4HeapE 0x000000710059c8d0,W,000080,_ZN5uking2ai17SpearWeaponSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710059c920,U,000004,_ZN5uking2ai17SpearWeaponSelect5calc_Ev +0x000000710059c920,O,000004,_ZN5uking2ai17SpearWeaponSelect5calc_Ev 0x000000710059c924,O,000004,_ZN5uking2ai17SpearWeaponSelect6leave_Ev 0x000000710059c928,O,000004,_ZN5uking2ai17SpearWeaponSelect11loadParams_Ev 0x000000710059c92c,O,000288,_ZNK5uking2ai17SpearWeaponSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -34642,12 +34642,12 @@ Address,Quality,Size,Name 0x00000071005a9604,U,000052,_ZNK5uking2ai18StalPartsHasSelect10isFinishedEv 0x00000071005a9638,O,000048,_ZN5uking2ai5StoleC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005a9668,W,000036,_ZN5uking2ai5Stole6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005a968c,U,000004,_ZN5uking2ai5Stole5calc_Ev +0x00000071005a968c,O,000004,_ZN5uking2ai5Stole5calc_Ev 0x00000071005a9690,U,000096,_ZN5uking2ai5Stole14handleMessage_ERKN4ksys7MessageE 0x00000071005a96f0,O,000288,_ZNK5uking2ai5Stole27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005a9810,O,000092,_ZNK5uking2ai5Stole18getRuntimeTypeInfoEv 0x00000071005a986c,O,000036,_ZN5uking2ai5StoleD0Ev -0x00000071005a9890,U,000008,_ZNK5uking2ai5Stole12isChangeableEv +0x00000071005a9890,O,000008,_ZNK5uking2ai5Stole12isChangeableEv 0x00000071005a9898,U,000004,uking::ai::Stole::m34 0x00000071005a989c,U,000088,AI_AI_StoneBall_BRoot::ctor 0x00000071005a98f4,U,000576, @@ -34727,7 +34727,7 @@ Address,Quality,Size,Name 0x00000071005abd28,O,000064,_ZN5uking2ai14StoneStickRoot11loadParams_Ev 0x00000071005abd68,O,000288,_ZNK5uking2ai14StoneStickRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005abe88,O,000092,_ZNK5uking2ai14StoneStickRoot18getRuntimeTypeInfoEv -0x00000071005abee4,U,000008,_ZN5uking2ai14StoneStickRoot23hasUpdateForPreDeleteCbEv +0x00000071005abee4,O,000008,_ZN5uking2ai14StoneStickRoot23hasUpdateForPreDeleteCbEv 0x00000071005abeec,U,000016, 0x00000071005abefc,O,000048,_ZN5uking2ai17StopTimerObserverC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005abf2c,O,000004,_ZN5uking2ai17StopTimerObserverD1Ev @@ -34761,7 +34761,7 @@ Address,Quality,Size,Name 0x00000071005acd7c,O,000004,_ZN5uking2ai16StunBossReaction11loadParams_Ev 0x00000071005acd80,O,000288,_ZNK5uking2ai16StunBossReaction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005acea0,O,000092,_ZNK5uking2ai16StunBossReaction18getRuntimeTypeInfoEv -0x00000071005acefc,U,000008,_ZNK5uking2ai16StunBossReaction12isChangeableEv +0x00000071005acefc,O,000008,_ZNK5uking2ai16StunBossReaction12isChangeableEv 0x00000071005acf04,U,000056,AI_AI_StunWithDamageReaction::ctor 0x00000071005acf3c,O,000004,_ZN5uking2ai22StunWithDamageReactionD1Ev 0x00000071005acf40,O,000036,_ZN5uking2ai22StunWithDamageReactionD0Ev @@ -34788,7 +34788,7 @@ Address,Quality,Size,Name 0x00000071005adc9c,O,000048,_ZN5uking2ai5SunAIC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005adccc,O,000008,_ZN5uking2ai5SunAI5init_EPN4sead4HeapE 0x00000071005adcd4,W,000088,_ZN5uking2ai5SunAI6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005add2c,U,000004,_ZN5uking2ai5SunAI5calc_Ev +0x00000071005add2c,O,000004,_ZN5uking2ai5SunAI5calc_Ev 0x00000071005add30,O,000004,_ZN5uking2ai5SunAI6leave_Ev 0x00000071005add34,O,000004,_ZN5uking2ai5SunAI11loadParams_Ev 0x00000071005add38,O,000288,_ZNK5uking2ai5SunAI27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -35351,7 +35351,7 @@ Address,Quality,Size,Name 0x00000071005bea00,O,000036,_ZN5uking2ai24TargetElevationGapSelectD0Ev 0x00000071005bea24,O,000008,_ZN5uking2ai24TargetElevationGapSelect5init_EPN4sead4HeapE 0x00000071005bea2c,W,000104,_ZN5uking2ai24TargetElevationGapSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005bea94,U,000004,_ZN5uking2ai24TargetElevationGapSelect5calc_Ev +0x00000071005bea94,O,000004,_ZN5uking2ai24TargetElevationGapSelect5calc_Ev 0x00000071005bea98,O,000004,_ZN5uking2ai24TargetElevationGapSelect6leave_Ev 0x00000071005bea9c,O,000064,_ZN5uking2ai24TargetElevationGapSelect11loadParams_Ev 0x00000071005beadc,O,000288,_ZNK5uking2ai24TargetElevationGapSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -35363,7 +35363,7 @@ Address,Quality,Size,Name 0x00000071005becd4,O,000036,_ZN5uking2ai17TargetExistSelectD0Ev 0x00000071005becf8,O,000008,_ZN5uking2ai17TargetExistSelect5init_EPN4sead4HeapE 0x00000071005bed00,W,000104,_ZN5uking2ai17TargetExistSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005bed68,U,000004,_ZN5uking2ai17TargetExistSelect5calc_Ev +0x00000071005bed68,O,000004,_ZN5uking2ai17TargetExistSelect5calc_Ev 0x00000071005bed6c,O,000004,_ZN5uking2ai17TargetExistSelect6leave_Ev 0x00000071005bed70,O,000004,_ZN5uking2ai17TargetExistSelect11loadParams_Ev 0x00000071005bed74,O,000288,_ZNK5uking2ai17TargetExistSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -35797,7 +35797,7 @@ Address,Quality,Size,Name 0x00000071005c8808,O,000036,_ZN5uking2ai21TemperatureRandSelectD0Ev 0x00000071005c882c,O,000008,_ZN5uking2ai21TemperatureRandSelect5init_EPN4sead4HeapE 0x00000071005c8834,W,000280,_ZN5uking2ai21TemperatureRandSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005c894c,U,000004,_ZN5uking2ai21TemperatureRandSelect5calc_Ev +0x00000071005c894c,O,000004,_ZN5uking2ai21TemperatureRandSelect5calc_Ev 0x00000071005c8950,O,000004,_ZN5uking2ai21TemperatureRandSelect6leave_Ev 0x00000071005c8954,O,000156,_ZN5uking2ai21TemperatureRandSelect11loadParams_Ev 0x00000071005c89f0,O,000288,_ZNK5uking2ai21TemperatureRandSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -35957,7 +35957,7 @@ Address,Quality,Size,Name 0x00000071005cf7b0,O,000036,_ZN5uking2ai29TrgTargetChangeToPlayerSelectD0Ev 0x00000071005cf7d4,O,000008,_ZN5uking2ai29TrgTargetChangeToPlayerSelect5init_EPN4sead4HeapE 0x00000071005cf7dc,W,000048,_ZN5uking2ai29TrgTargetChangeToPlayerSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005cf80c,U,000004,_ZN5uking2ai29TrgTargetChangeToPlayerSelect5calc_Ev +0x00000071005cf80c,O,000004,_ZN5uking2ai29TrgTargetChangeToPlayerSelect5calc_Ev 0x00000071005cf810,O,000004,_ZN5uking2ai29TrgTargetChangeToPlayerSelect6leave_Ev 0x00000071005cf814,O,000064,_ZN5uking2ai29TrgTargetChangeToPlayerSelect11loadParams_Ev 0x00000071005cf854,O,000288,_ZNK5uking2ai29TrgTargetChangeToPlayerSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36314,7 +36314,7 @@ Address,Quality,Size,Name 0x00000071005e2f74,O,000036,_ZN5uking2ai24VacuumedBombDamageSelectD0Ev 0x00000071005e2f98,O,000008,_ZN5uking2ai24VacuumedBombDamageSelect5init_EPN4sead4HeapE 0x00000071005e2fa0,W,000364,_ZN5uking2ai24VacuumedBombDamageSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005e310c,U,000004,_ZN5uking2ai24VacuumedBombDamageSelect5calc_Ev +0x00000071005e310c,O,000004,_ZN5uking2ai24VacuumedBombDamageSelect5calc_Ev 0x00000071005e3110,O,000004,_ZN5uking2ai24VacuumedBombDamageSelect6leave_Ev 0x00000071005e3114,O,000064,_ZN5uking2ai24VacuumedBombDamageSelect11loadParams_Ev 0x00000071005e3154,O,000288,_ZNK5uking2ai24VacuumedBombDamageSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36678,13 +36678,13 @@ Address,Quality,Size,Name 0x00000071005f09c4,W,000144,_ZN5uking2ai16WeaponOnetimeUse11loadParams_Ev 0x00000071005f0a54,O,000288,_ZNK5uking2ai16WeaponOnetimeUse27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005f0b74,O,000092,_ZNK5uking2ai16WeaponOnetimeUse18getRuntimeTypeInfoEv -0x00000071005f0bd0,U,000008,_ZNK5uking2ai16WeaponOnetimeUse12isChangeableEv +0x00000071005f0bd0,O,000008,_ZNK5uking2ai16WeaponOnetimeUse12isChangeableEv 0x00000071005f0bd8,O,000052,_ZN5uking2ai19WeaponPrepareSelectC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005f0c0c,O,000004,_ZN5uking2ai19WeaponPrepareSelectD1Ev 0x00000071005f0c10,O,000036,_ZN5uking2ai19WeaponPrepareSelectD0Ev 0x00000071005f0c34,O,000008,_ZN5uking2ai19WeaponPrepareSelect5init_EPN4sead4HeapE 0x00000071005f0c3c,W,000080,_ZN5uking2ai19WeaponPrepareSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005f0c8c,U,000004,_ZN5uking2ai19WeaponPrepareSelect5calc_Ev +0x00000071005f0c8c,O,000004,_ZN5uking2ai19WeaponPrepareSelect5calc_Ev 0x00000071005f0c90,O,000004,_ZN5uking2ai19WeaponPrepareSelect6leave_Ev 0x00000071005f0c94,O,000064,_ZN5uking2ai19WeaponPrepareSelect11loadParams_Ev 0x00000071005f0cd4,O,000288,_ZNK5uking2ai19WeaponPrepareSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36734,7 +36734,7 @@ Address,Quality,Size,Name 0x00000071005f1cbc,O,000036,_ZN5uking2ai21WeaponThrowerSelectorD0Ev 0x00000071005f1ce0,O,000008,_ZN5uking2ai21WeaponThrowerSelector5init_EPN4sead4HeapE 0x00000071005f1ce8,W,000196,_ZN5uking2ai21WeaponThrowerSelector6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005f1dac,U,000004,_ZN5uking2ai21WeaponThrowerSelector5calc_Ev +0x00000071005f1dac,O,000004,_ZN5uking2ai21WeaponThrowerSelector5calc_Ev 0x00000071005f1db0,O,000004,_ZN5uking2ai21WeaponThrowerSelector6leave_Ev 0x00000071005f1db4,O,000004,_ZN5uking2ai21WeaponThrowerSelector11loadParams_Ev 0x00000071005f1db8,O,000288,_ZNK5uking2ai21WeaponThrowerSelector27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36755,7 +36755,7 @@ Address,Quality,Size,Name 0x00000071005f2388,O,000052,_ZN5uking2ai17WeaponUsageSelectC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005f23bc,O,000008,_ZN5uking2ai17WeaponUsageSelect5init_EPN4sead4HeapE 0x00000071005f23c4,W,000128,_ZN5uking2ai17WeaponUsageSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005f2444,U,000004,_ZN5uking2ai17WeaponUsageSelect5calc_Ev +0x00000071005f2444,O,000004,_ZN5uking2ai17WeaponUsageSelect5calc_Ev 0x00000071005f2448,O,000004,_ZN5uking2ai17WeaponUsageSelect6leave_Ev 0x00000071005f244c,O,000064,_ZN5uking2ai17WeaponUsageSelect11loadParams_Ev 0x00000071005f248c,O,000288,_ZNK5uking2ai17WeaponUsageSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36782,7 +36782,7 @@ Address,Quality,Size,Name 0x00000071005f2d70,O,000036,_ZN5uking2ai9WetSelectD0Ev 0x00000071005f2d94,O,000008,_ZN5uking2ai9WetSelect5init_EPN4sead4HeapE 0x00000071005f2d9c,W,000116,_ZN5uking2ai9WetSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005f2e10,U,000004,_ZN5uking2ai9WetSelect5calc_Ev +0x00000071005f2e10,O,000004,_ZN5uking2ai9WetSelect5calc_Ev 0x00000071005f2e14,O,000004,_ZN5uking2ai9WetSelect6leave_Ev 0x00000071005f2e18,O,000064,_ZN5uking2ai9WetSelect11loadParams_Ev 0x00000071005f2e58,O,000288,_ZNK5uking2ai9WetSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36794,7 +36794,7 @@ Address,Quality,Size,Name 0x00000071005f3064,O,000036,_ZN5uking2ai25WillBallAttackLevelSelectD0Ev 0x00000071005f3088,O,000008,_ZN5uking2ai25WillBallAttackLevelSelect5init_EPN4sead4HeapE 0x00000071005f3090,W,000048,_ZN5uking2ai25WillBallAttackLevelSelect6enter_EPN4ksys3act2ai15InlineParamPackE -0x00000071005f30c0,U,000004,_ZN5uking2ai25WillBallAttackLevelSelect5calc_Ev +0x00000071005f30c0,O,000004,_ZN5uking2ai25WillBallAttackLevelSelect5calc_Ev 0x00000071005f30c4,O,000004,_ZN5uking2ai25WillBallAttackLevelSelect6leave_Ev 0x00000071005f30c8,O,000108,_ZN5uking2ai25WillBallAttackLevelSelect11loadParams_Ev 0x00000071005f3134,O,000288,_ZNK5uking2ai25WillBallAttackLevelSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -36867,7 +36867,7 @@ Address,Quality,Size,Name 0x00000071005f6b80,O,000156,_ZN5uking2ai12WindBoxPlace11loadParams_Ev 0x00000071005f6c1c,O,000288,_ZNK5uking2ai12WindBoxPlace27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005f6d3c,O,000092,_ZNK5uking2ai12WindBoxPlace18getRuntimeTypeInfoEv -0x00000071005f6d98,U,000008,_ZN5uking2ai12WindBoxPlace23hasUpdateForPreDeleteCbEv +0x00000071005f6d98,O,000008,_ZN5uking2ai12WindBoxPlace23hasUpdateForPreDeleteCbEv 0x00000071005f6da0,U,000008,_ZN5uking2ai12WindBoxPlace18updateForPreDeleteEv 0x00000071005f6da8,O,000048,_ZN5uking2ai13WindGeneratorC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005f6dd8,O,000008,_ZN5uking2ai13WindGenerator5init_EPN4sead4HeapE @@ -36980,7 +36980,7 @@ Address,Quality,Size,Name 0x00000071005fd564,U,001128, 0x00000071005fd9cc,O,000288,_ZNK5uking2ai18WizzrobeCombatMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071005fdaec,O,000092,_ZNK5uking2ai18WizzrobeCombatMove18getRuntimeTypeInfoEv -0x00000071005fdb48,U,000008,_ZNK5uking2ai18WizzrobeCombatMove12isChangeableEv +0x00000071005fdb48,O,000008,_ZNK5uking2ai18WizzrobeCombatMove12isChangeableEv 0x00000071005fdb50,O,000056,_ZN5uking2ai18WizzrobeFindPlayerC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071005fdb88,O,000004,_ZN5uking2ai18WizzrobeFindPlayerD1Ev 0x00000071005fdb8c,O,000036,_ZN5uking2ai18WizzrobeFindPlayerD0Ev @@ -37198,7 +37198,7 @@ Address,Quality,Size,Name 0x000000710060b700,U,000240, 0x000000710060b7f0,U,000096,uking::ai::WolfLinkRoot::m38 0x000000710060b850,U,000128,uking::ai::WolfLinkRoot::m39 -0x000000710060b8d0,U,000008,_ZN5uking2ai12WolfLinkRoot14handleMessage_ERKN4ksys7MessageE +0x000000710060b8d0,O,000008,_ZN5uking2ai12WolfLinkRoot14handleMessage_ERKN4ksys7MessageE 0x000000710060b8d8,U,000312, 0x000000710060ba10,U,000412, 0x000000710060bbac,O,000288,_ZNK5uking2ai12WolfLinkRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -39852,12 +39852,12 @@ Address,Quality,Size,Name 0x000000710064da54,O,000044,_ZN4ksys3map13AutoPlacement14sub_710064DA54Ev 0x000000710064da80,U,000948, 0x000000710064de34,U,000836, -0x000000710064e178,m,000460,_ZN4ksys3map13AutoPlacement14sub_710064E178ERKN4sead14SafeStringBaseIcEEjRKNS2_7Vector3IfEE +0x000000710064e178,O,000460,_ZN4ksys3map13AutoPlacement14sub_710064E178ERKN4sead14SafeStringBaseIcEEjRKNS2_7Vector3IfEE 0x000000710064e344,U,001564, 0x000000710064e960,O,000340,_ZN4ksys3map14PlacementThing6invokeEv 0x000000710064eab4,U,000684, 0x000000710064ed60,U,000452, -0x000000710064ef24,m,000264,_ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE +0x000000710064ef24,O,000264,_ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE 0x000000710064f02c,U,000536, 0x000000710064f244,U,000776, 0x000000710064f54c,U,000504, @@ -39867,13 +39867,13 @@ Address,Quality,Size,Name 0x000000710064feac,U,000664,checkActorInvalidTimeWeatherStuffMaybe 0x0000007100650144,O,000172,_ZN4ksys3map13AutoPlacement14sub_7100650144EPNS0_14PlacementGroupEb 0x00000071006501f0,U,000560, -0x0000007100650420,m,000220,_ZN4ksys3map13AutoPlacement10placeGroupEPNS0_20AutoPlacementFlowResE +0x0000007100650420,O,000220,_ZN4ksys3map13AutoPlacement10placeGroupEPNS0_20AutoPlacementFlowResE 0x00000071006504fc,U,001036, 0x0000007100650908,O,000044,_ZN4ksys3map13AutoPlacement14sub_7100650908Ev 0x0000007100650934,U,000488,autoplacement::getActorToSpawn 0x0000007100650b1c,O,000060,_ZN4ksys3map13AutoPlacement15stepAllRaycastsEv 0x0000007100650b58,O,000208,_ZN4ksys3map14PlacementThing11stepRaycastEv -0x0000007100650c28,m,000360,_ZN4ksys3map13AutoPlacement14sub_7100650C28EPNS_4phys9RigidBodyE +0x0000007100650c28,O,000360,_ZN4ksys3map13AutoPlacement14sub_7100650C28EPNS_4phys9RigidBodyE 0x0000007100650d90,O,000024,_ZNK4ksys3map14PlacementThing19getCurrentGroundMatEv 0x0000007100650da8,O,000024,_ZNK4ksys3map14PlacementThing21getCurrentWaterSubMatEv 0x0000007100650dc0,U,000228, @@ -45361,7 +45361,7 @@ Address,Quality,Size,Name 0x00000071006dfcb8,U,000004,nullsub_2299 0x00000071006dfcbc,O,000132,_ZN5uking3dmg17DamageManagerBase13allocStruct20EPN4sead4HeapE 0x00000071006dfd40,O,000076,_ZN5uking3dmg17DamageManagerBase10preDelete1Ev -0x00000071006dfd8c,m,000076,_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE +0x00000071006dfd8c,O,000076,_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE 0x00000071006dfdd8,U,000096,DamageMgrBase::m20 0x00000071006dfe38,U,000020,DamageMgrBase::resetStuff 0x00000071006dfe4c,O,000500,_ZN5uking3dmg17DamageManagerBase11applyDamageERi @@ -49900,7 +49900,7 @@ Address,Quality,Size,Name 0x00000071007d71a0,U,000304,uking::action::PlayerAnchorMove::m33 0x00000071007d72d0,O,000216,_ZNK5uking6action16PlayerAnchorMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007d73a8,O,000092,_ZNK5uking6action16PlayerAnchorMove18getRuntimeTypeInfoEv -0x00000071007d7404,U,000008,_ZNK5uking6action16PlayerGuidedMove12isChangeableEv +0x00000071007d7404,O,000008,_ZNK5uking6action16PlayerGuidedMove12isChangeableEv 0x00000071007d740c,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action16PlayerGuidedMoveEE9isDerivedEPKNS0_9InterfaceE 0x00000071007d7498,O,000048,_ZN5uking6action13PlayerAtnMoveC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007d74c8,W,000320,_ZN5uking6action13PlayerAtnMove6enter_EPN4ksys3act2ai15InlineParamPackE @@ -49910,7 +49910,7 @@ Address,Quality,Size,Name 0x00000071007d7aac,O,000132,_ZNK5uking6action13PlayerAtnMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007d7b30,O,000092,_ZNK5uking6action13PlayerAtnMove18getRuntimeTypeInfoEv 0x00000071007d7b8c,O,000052,_ZN5uking6action13PlayerAtnMoveD0Ev -0x00000071007d7bc0,U,000008,_ZNK5uking6action13PlayerAtnMove12isChangeableEv +0x00000071007d7bc0,O,000008,_ZNK5uking6action13PlayerAtnMove12isChangeableEv 0x00000071007d7bc8,O,000052,_ZN5uking6action13PlayerAtnWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007d7bfc,W,000240,_ZN5uking6action13PlayerAtnWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007d7cec,W,000996,_ZN5uking6action13PlayerAtnWait5calc_Ev @@ -49919,7 +49919,7 @@ Address,Quality,Size,Name 0x00000071007d81c0,O,000132,_ZNK5uking6action13PlayerAtnWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007d8244,O,000092,_ZNK5uking6action13PlayerAtnWait18getRuntimeTypeInfoEv 0x00000071007d82a0,O,000052,_ZN5uking6action13PlayerAtnWaitD0Ev -0x00000071007d82d4,U,000008,_ZNK5uking6action13PlayerAtnWait12isChangeableEv +0x00000071007d82d4,O,000008,_ZNK5uking6action13PlayerAtnWait12isChangeableEv 0x00000071007d82dc,O,000064,_ZN5uking6action14PlayerBackJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007d831c,U,000060,_ZNK5uking6action14PlayerBackJump10isFinishedEv 0x00000071007d8358,U,000248, @@ -49931,7 +49931,7 @@ Address,Quality,Size,Name 0x00000071007d90fc,O,000132,_ZNK5uking6action14PlayerBackJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007d9180,O,000092,_ZNK5uking6action14PlayerBackJump18getRuntimeTypeInfoEv 0x00000071007d91dc,O,000052,_ZN5uking6action14PlayerBackJumpD0Ev -0x00000071007d9210,U,000008,_ZNK5uking6action14PlayerBackJump12isChangeableEv +0x00000071007d9210,O,000008,_ZNK5uking6action14PlayerBackJump12isChangeableEv 0x00000071007d9218,O,000048,_ZN5uking6action18PlayerBackJumpLandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007d9248,W,000440,_ZN5uking6action18PlayerBackJumpLand6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007d9400,W,000348,_ZN5uking6action18PlayerBackJumpLand5calc_Ev @@ -49956,7 +49956,7 @@ Address,Quality,Size,Name 0x00000071007d9b30,O,000132,_ZNK5uking6action19PlayerBeetleSubject27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007d9bb4,O,000092,_ZNK5uking6action19PlayerBeetleSubject18getRuntimeTypeInfoEv 0x00000071007d9c10,O,000052,_ZN5uking6action19PlayerBeetleSubjectD0Ev -0x00000071007d9c44,U,000008,_ZNK5uking6action19PlayerBeetleSubject12isChangeableEv +0x00000071007d9c44,O,000008,_ZNK5uking6action19PlayerBeetleSubject12isChangeableEv 0x00000071007d9c4c,O,000048,_ZN5uking6action18PlayerBindSheikPadC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007d9c7c,O,000020,_ZN5uking6action18PlayerBindSheikPadD1Ev 0x00000071007d9c90,O,000052,_ZN5uking6action18PlayerBindSheikPadD0Ev @@ -49972,7 +49972,7 @@ Address,Quality,Size,Name 0x00000071007d9fbc,O,000132,_ZNK5uking6action9PlayerBow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007da040,O,000092,_ZNK5uking6action9PlayerBow18getRuntimeTypeInfoEv 0x00000071007da09c,O,000052,_ZN5uking6action9PlayerBowD0Ev -0x00000071007da0d0,U,000008,_ZNK5uking6action9PlayerBow12isChangeableEv +0x00000071007da0d0,O,000008,_ZNK5uking6action9PlayerBow12isChangeableEv 0x00000071007da0d8,O,000048,_ZN5uking6action13PlayerBowFallC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007da108,W,000064,_ZN5uking6action13PlayerBowFall6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007da148,W,000432,_ZN5uking6action13PlayerBowFall5calc_Ev @@ -49981,7 +49981,7 @@ Address,Quality,Size,Name 0x00000071007da300,O,000216,_ZNK5uking6action13PlayerBowFall27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007da3d8,O,000092,_ZNK5uking6action13PlayerBowFall18getRuntimeTypeInfoEv 0x00000071007da434,O,000052,_ZN5uking6action13PlayerBowFallD0Ev -0x00000071007da468,U,000008,_ZNK5uking6action13PlayerBowFall12isChangeableEv +0x00000071007da468,O,000008,_ZNK5uking6action13PlayerBowFall12isChangeableEv 0x00000071007da470,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action10PlayerFallEE9isDerivedEPKNS0_9InterfaceE 0x00000071007da4fc,U,000056,AI_Action_PlayerCalmHorseDown::ctor 0x00000071007da534,O,000020,_ZN5uking6action19PlayerCalmHorseDownD1Ev @@ -50002,7 +50002,7 @@ Address,Quality,Size,Name 0x00000071007db5a8,O,000092,_ZNK5uking6action12PlayerCaught18getRuntimeTypeInfoEv 0x00000071007db604,W,000088,_ZN5uking6action12PlayerCaughtD1Ev 0x00000071007db65c,W,000096,_ZN5uking6action12PlayerCaughtD0Ev -0x00000071007db6bc,U,000008,_ZNK5uking6action12PlayerCaught12isChangeableEv +0x00000071007db6bc,O,000008,_ZNK5uking6action12PlayerCaught12isChangeableEv 0x00000071007db6c4,O,000052,_ZN5uking6action20PlayerCleaningAroundC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007db6f8,O,000020,_ZN5uking6action20PlayerCleaningAroundD1Ev 0x00000071007db70c,O,000052,_ZN5uking6action20PlayerCleaningAroundD0Ev @@ -50024,7 +50024,7 @@ Address,Quality,Size,Name 0x00000071007dc964,O,000092,_ZNK5uking6action15PlayerClimbRest18getRuntimeTypeInfoEv 0x00000071007dc9c0,W,000068,_ZN5uking6action15PlayerClimbRestD1Ev 0x00000071007dca04,W,000076,_ZN5uking6action15PlayerClimbRestD0Ev -0x00000071007dca50,U,000008,_ZNK5uking6action15PlayerClimbRest12isChangeableEv +0x00000071007dca50,O,000008,_ZNK5uking6action15PlayerClimbRest12isChangeableEv 0x00000071007dca58,O,000048,_ZN5uking6action13PlayerControlC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007dca88,W,000096,_ZN5uking6action13PlayerControl6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007dcae8,W,000020,_ZN5uking6action13PlayerControl5calc_Ev @@ -50032,7 +50032,7 @@ Address,Quality,Size,Name 0x00000071007dcb00,O,000132,_ZNK5uking6action13PlayerControl27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007dcb84,O,000092,_ZNK5uking6action13PlayerControl18getRuntimeTypeInfoEv 0x00000071007dcbe0,O,000052,_ZN5uking6action13PlayerControlD0Ev -0x00000071007dcc14,U,000008,_ZNK5uking6action13PlayerControl12isChangeableEv +0x00000071007dcc14,O,000008,_ZNK5uking6action13PlayerControl12isChangeableEv 0x00000071007dcc1c,O,000048,_ZN5uking6action18PlayerCutAfterJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007dcc4c,W,000648,_ZN5uking6action18PlayerCutAfterJump6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007dced4,W,000540,_ZN5uking6action18PlayerCutAfterJump5calc_Ev @@ -50182,7 +50182,7 @@ Address,Quality,Size,Name 0x00000071007e7504,O,000132,_ZNK5uking6action17PlayerDemoAirWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007e7588,O,000092,_ZNK5uking6action17PlayerDemoAirWait18getRuntimeTypeInfoEv 0x00000071007e75e4,O,000052,_ZN5uking6action17PlayerDemoAirWaitD0Ev -0x00000071007e7618,U,000008,_ZNK5uking6action17PlayerDemoAirWait12isChangeableEv +0x00000071007e7618,O,000008,_ZNK5uking6action17PlayerDemoAirWait12isChangeableEv 0x00000071007e7620,O,000048,_ZN5uking6action14PlayerDemoWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007e7650,W,000276,_ZN5uking6action14PlayerDemoWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007e7764,W,000744,_ZN5uking6action14PlayerDemoWait5calc_Ev @@ -50190,7 +50190,7 @@ Address,Quality,Size,Name 0x00000071007e7a50,O,000132,_ZNK5uking6action14PlayerDemoWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007e7ad4,O,000092,_ZNK5uking6action14PlayerDemoWait18getRuntimeTypeInfoEv 0x00000071007e7b30,O,000052,_ZN5uking6action14PlayerDemoWaitD0Ev -0x00000071007e7b64,U,000008,_ZNK5uking6action14PlayerDemoWait12isChangeableEv +0x00000071007e7b64,O,000008,_ZNK5uking6action14PlayerDemoWait12isChangeableEv 0x00000071007e7b6c,U,000056,AI_Action_PlayerDestinationMove::ctor 0x00000071007e7ba4,W,000060,_ZN5uking6action21PlayerDestinationMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007e7be0,O,000004,_ZN5uking6action21PlayerDestinationMove5calc_Ev @@ -50200,7 +50200,7 @@ Address,Quality,Size,Name 0x00000071007e7cec,O,000216,_ZNK5uking6action21PlayerDestinationMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007e7dc4,O,000092,_ZNK5uking6action21PlayerDestinationMove18getRuntimeTypeInfoEv 0x00000071007e7e20,O,000052,_ZN5uking6action21PlayerDestinationMoveD0Ev -0x00000071007e7e54,U,000008,_ZNK5uking6action21PlayerDestinationMove12isChangeableEv +0x00000071007e7e54,O,000008,_ZNK5uking6action21PlayerDestinationMove12isChangeableEv 0x00000071007e7e5c,M,000108,_ZN5uking6action16PlayerGuidedMoveC2ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007e7ec8,W,000920,_ZN5uking6action16PlayerGuidedMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007e8260,W,002516,_ZN5uking6action16PlayerGuidedMove5calc_Ev @@ -50221,7 +50221,7 @@ Address,Quality,Size,Name 0x00000071007e93b4,O,000132,_ZNK5uking6action21PlayerDestinationTurn27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007e9438,O,000092,_ZNK5uking6action21PlayerDestinationTurn18getRuntimeTypeInfoEv 0x00000071007e9494,O,000052,_ZN5uking6action21PlayerDestinationTurnD0Ev -0x00000071007e94c8,U,000008,_ZNK5uking6action21PlayerDestinationTurn12isChangeableEv +0x00000071007e94c8,O,000008,_ZNK5uking6action21PlayerDestinationTurn12isChangeableEv 0x00000071007e94d0,U,000008,uking::action::PlayerDestinationTurn::m34 0x00000071007e94d8,U,000008,uking::action::PlayerDestinationTurn::m35 0x00000071007e94e0,U,000104,AI_Action_PlayerDestinationTurnRefActor::ctor @@ -50236,7 +50236,7 @@ Address,Quality,Size,Name 0x00000071007e9a1c,O,000092,_ZNK5uking6action29PlayerDestinationTurnRefActor18getRuntimeTypeInfoEv 0x00000071007e9a78,W,000084,_ZN5uking6action29PlayerDestinationTurnRefActorD1Ev 0x00000071007e9acc,W,000092,_ZN5uking6action29PlayerDestinationTurnRefActorD0Ev -0x00000071007e9b28,U,000008,_ZNK5uking6action29PlayerDestinationTurnRefActor12isChangeableEv +0x00000071007e9b28,O,000008,_ZNK5uking6action29PlayerDestinationTurnRefActor12isChangeableEv 0x00000071007e9b30,U,000008,uking::action::PlayerDestinationTurnRefActor::m34 0x00000071007e9b38,U,000008,uking::action::PlayerDestinationTurnRefActor::m35 0x00000071007e9b40,U,000068,AI_Action_PlayerDestinationTurnStarter::ctor @@ -50273,7 +50273,7 @@ Address,Quality,Size,Name 0x00000071007ea93c,O,000132,_ZNK5uking6action17PlayerDisplayWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ea9c0,O,000092,_ZNK5uking6action17PlayerDisplayWait18getRuntimeTypeInfoEv 0x00000071007eaa1c,O,000052,_ZN5uking6action17PlayerDisplayWaitD0Ev -0x00000071007eaa50,U,000008,_ZNK5uking6action17PlayerDisplayWait12isChangeableEv +0x00000071007eaa50,O,000008,_ZNK5uking6action17PlayerDisplayWait12isChangeableEv 0x00000071007eaa58,U,000060,AI_Action_PlayerDiveMove::ctor 0x00000071007eaa94,W,000140,_ZN5uking6action14PlayerDiveMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007eab20,W,000692,_ZN5uking6action14PlayerDiveMove5calc_Ev @@ -50282,7 +50282,7 @@ Address,Quality,Size,Name 0x00000071007eaea8,O,000132,_ZNK5uking6action14PlayerDiveMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007eaf2c,O,000092,_ZNK5uking6action14PlayerDiveMove18getRuntimeTypeInfoEv 0x00000071007eaf88,O,000052,_ZN5uking6action14PlayerDiveMoveD0Ev -0x00000071007eafbc,U,000008,_ZNK5uking6action14PlayerDiveMove12isChangeableEv +0x00000071007eafbc,O,000008,_ZNK5uking6action14PlayerDiveMove12isChangeableEv 0x00000071007eafc4,O,000048,_ZN5uking6action18PlayerDoorPullOpenC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007eaff4,W,000068,_ZN5uking6action18PlayerDoorPullOpen6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007eb038,W,000088,_ZN5uking6action18PlayerDoorPullOpen5calc_Ev @@ -50290,7 +50290,7 @@ Address,Quality,Size,Name 0x00000071007eb094,O,000132,_ZNK5uking6action18PlayerDoorPullOpen27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007eb118,O,000092,_ZNK5uking6action18PlayerDoorPullOpen18getRuntimeTypeInfoEv 0x00000071007eb174,O,000052,_ZN5uking6action18PlayerDoorPullOpenD0Ev -0x00000071007eb1a8,U,000008,_ZNK5uking6action18PlayerDoorPullOpen12isChangeableEv +0x00000071007eb1a8,O,000008,_ZNK5uking6action18PlayerDoorPullOpen12isChangeableEv 0x00000071007eb1b0,O,000048,_ZN5uking6action18PlayerDoorPushOpenC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007eb1e0,W,001400,_ZN5uking6action18PlayerDoorPushOpen6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007eb758,W,001528,_ZN5uking6action18PlayerDoorPushOpen5calc_Ev @@ -50298,7 +50298,7 @@ Address,Quality,Size,Name 0x00000071007ebd54,O,000132,_ZNK5uking6action18PlayerDoorPushOpen27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ebdd8,O,000092,_ZNK5uking6action18PlayerDoorPushOpen18getRuntimeTypeInfoEv 0x00000071007ebe34,O,000052,_ZN5uking6action18PlayerDoorPushOpenD0Ev -0x00000071007ebe68,U,000008,_ZNK5uking6action18PlayerDoorPushOpen12isChangeableEv +0x00000071007ebe68,O,000008,_ZNK5uking6action18PlayerDoorPushOpen12isChangeableEv 0x00000071007ebe70,O,000048,_ZN5uking6action11PlayerDrownC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007ebea0,W,000228,_ZN5uking6action11PlayerDrown6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007ebf84,W,000544,_ZN5uking6action11PlayerDrown5calc_Ev @@ -50307,7 +50307,7 @@ Address,Quality,Size,Name 0x00000071007ec204,O,000132,_ZNK5uking6action11PlayerDrown27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ec288,O,000092,_ZNK5uking6action11PlayerDrown18getRuntimeTypeInfoEv 0x00000071007ec2e4,O,000052,_ZN5uking6action11PlayerDrownD0Ev -0x00000071007ec318,U,000008,_ZNK5uking6action11PlayerDrown12isChangeableEv +0x00000071007ec318,O,000008,_ZNK5uking6action11PlayerDrown12isChangeableEv 0x00000071007ec320,O,000052,_ZN5uking6action14PlayerElectricC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007ec354,W,001092,_ZN5uking6action14PlayerElectric6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007ec798,W,000160,_ZN5uking6action14PlayerElectric5calc_Ev @@ -50316,7 +50316,7 @@ Address,Quality,Size,Name 0x00000071007ecaa4,O,000132,_ZNK5uking6action14PlayerElectric27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ecb28,O,000092,_ZNK5uking6action14PlayerElectric18getRuntimeTypeInfoEv 0x00000071007ecb84,O,000052,_ZN5uking6action14PlayerElectricD0Ev -0x00000071007ecbb8,U,000008,_ZNK5uking6action14PlayerElectric12isChangeableEv +0x00000071007ecbb8,O,000008,_ZNK5uking6action14PlayerElectric12isChangeableEv 0x00000071007ecbc0,O,000048,_ZN5uking6action26PlayerEquipHaveMasterSwordC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007ecbf0,O,000020,_ZN5uking6action26PlayerEquipHaveMasterSwordD1Ev 0x00000071007ecc04,O,000052,_ZN5uking6action26PlayerEquipHaveMasterSwordD0Ev @@ -50353,7 +50353,7 @@ Address,Quality,Size,Name 0x00000071007ee250,O,000132,_ZNK5uking6action10PlayerFall27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ee2d4,O,000092,_ZNK5uking6action10PlayerFall18getRuntimeTypeInfoEv 0x00000071007ee330,O,000052,_ZN5uking6action10PlayerFallD0Ev -0x00000071007ee364,U,000008,_ZNK5uking6action10PlayerFall12isChangeableEv +0x00000071007ee364,O,000008,_ZNK5uking6action10PlayerFall12isChangeableEv 0x00000071007ee36c,U,000204,AI_Action_PlayerForkDropWeaponWithSpeed::ctor 0x00000071007ee438,W,000020,_ZN5uking6action29PlayerForkDropWeaponWithSpeedD1Ev 0x00000071007ee44c,W,000052,_ZN5uking6action29PlayerForkDropWeaponWithSpeedD0Ev @@ -50382,7 +50382,7 @@ Address,Quality,Size,Name 0x00000071007efa68,O,000132,_ZNK5uking6action13PlayerGrabPut27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007efaec,O,000092,_ZNK5uking6action13PlayerGrabPut18getRuntimeTypeInfoEv 0x00000071007efb48,O,000052,_ZN5uking6action13PlayerGrabPutD0Ev -0x00000071007efb7c,U,000008,_ZNK5uking6action13PlayerGrabPut12isChangeableEv +0x00000071007efb7c,O,000008,_ZNK5uking6action13PlayerGrabPut12isChangeableEv 0x00000071007efb84,O,000048,_ZN5uking6action15PlayerGrabReadyC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007efbb4,W,000384,_ZN5uking6action15PlayerGrabReady6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007efd34,W,000112,_ZN5uking6action15PlayerGrabReady5calc_Ev @@ -50390,7 +50390,7 @@ Address,Quality,Size,Name 0x00000071007efda8,O,000132,_ZNK5uking6action15PlayerGrabReady27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007efe2c,O,000092,_ZNK5uking6action15PlayerGrabReady18getRuntimeTypeInfoEv 0x00000071007efe88,O,000052,_ZN5uking6action15PlayerGrabReadyD0Ev -0x00000071007efebc,U,000008,_ZNK5uking6action15PlayerGrabReady12isChangeableEv +0x00000071007efebc,O,000008,_ZNK5uking6action15PlayerGrabReady12isChangeableEv 0x00000071007efec4,O,000048,_ZN5uking6action15PlayerGrabStandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007efef4,W,000068,_ZN5uking6action15PlayerGrabStand6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007eff38,W,000060,_ZN5uking6action15PlayerGrabStand5calc_Ev @@ -50416,7 +50416,7 @@ Address,Quality,Size,Name 0x00000071007f0d74,O,000132,_ZNK5uking6action12PlayerGrabUp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f0df8,O,000092,_ZNK5uking6action12PlayerGrabUp18getRuntimeTypeInfoEv 0x00000071007f0e54,O,000052,_ZN5uking6action12PlayerGrabUpD0Ev -0x00000071007f0e88,U,000008,_ZNK5uking6action12PlayerGrabUp12isChangeableEv +0x00000071007f0e88,O,000008,_ZNK5uking6action12PlayerGrabUp12isChangeableEv 0x00000071007f0e90,O,000048,_ZN5uking6action19PlayerGrabUpAnmStopC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f0ec0,W,000048,_ZN5uking6action19PlayerGrabUpAnmStop6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f0ef0,W,000020,_ZN5uking6action19PlayerGrabUpAnmStop5calc_Ev @@ -50424,7 +50424,7 @@ Address,Quality,Size,Name 0x00000071007f0f08,O,000132,_ZNK5uking6action19PlayerGrabUpAnmStop27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f0f8c,O,000092,_ZNK5uking6action19PlayerGrabUpAnmStop18getRuntimeTypeInfoEv 0x00000071007f0fe8,O,000052,_ZN5uking6action19PlayerGrabUpAnmStopD0Ev -0x00000071007f101c,U,000008,_ZNK5uking6action19PlayerGrabUpAnmStop12isChangeableEv +0x00000071007f101c,O,000008,_ZNK5uking6action19PlayerGrabUpAnmStop12isChangeableEv 0x00000071007f1024,O,000048,_ZN5uking6action14PlayerGrabWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f1054,W,000080,_ZN5uking6action14PlayerGrabWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f10a4,W,000020,_ZN5uking6action14PlayerGrabWait5calc_Ev @@ -50432,7 +50432,7 @@ Address,Quality,Size,Name 0x00000071007f10bc,O,000132,_ZNK5uking6action14PlayerGrabWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f1140,O,000092,_ZNK5uking6action14PlayerGrabWait18getRuntimeTypeInfoEv 0x00000071007f119c,O,000052,_ZN5uking6action14PlayerGrabWaitD0Ev -0x00000071007f11d0,U,000008,_ZNK5uking6action14PlayerGrabWait12isChangeableEv +0x00000071007f11d0,O,000008,_ZNK5uking6action14PlayerGrabWait12isChangeableEv 0x00000071007f11d8,O,000048,_ZN5uking6action16PlayerGuardBreakC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f1208,W,000196,_ZN5uking6action16PlayerGuardBreak6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f12cc,W,000084,_ZN5uking6action16PlayerGuardBreak5calc_Ev @@ -50458,7 +50458,7 @@ Address,Quality,Size,Name 0x00000071007f1950,O,000132,_ZNK5uking6action19PlayerGuardJustFall27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f19d4,O,000092,_ZNK5uking6action19PlayerGuardJustFall18getRuntimeTypeInfoEv 0x00000071007f1a30,O,000052,_ZN5uking6action19PlayerGuardJustFallD0Ev -0x00000071007f1a64,U,000008,_ZNK5uking6action19PlayerGuardJustFall12isChangeableEv +0x00000071007f1a64,O,000008,_ZNK5uking6action19PlayerGuardJustFall12isChangeableEv 0x00000071007f1a6c,M,000060,_ZN5uking6action15PlayerGuardSlipC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f1aa8,W,000504,_ZN5uking6action15PlayerGuardSlip6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f1ca0,W,000564,_ZN5uking6action15PlayerGuardSlip5calc_Ev @@ -50475,7 +50475,7 @@ Address,Quality,Size,Name 0x00000071007f2778,O,000132,_ZNK5uking6action19PlayerHangWallCatch27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f27fc,O,000092,_ZNK5uking6action19PlayerHangWallCatch18getRuntimeTypeInfoEv 0x00000071007f2858,O,000052,_ZN5uking6action19PlayerHangWallCatchD0Ev -0x00000071007f288c,U,000008,_ZNK5uking6action19PlayerHangWallCatch12isChangeableEv +0x00000071007f288c,O,000008,_ZNK5uking6action19PlayerHangWallCatch12isChangeableEv 0x00000071007f2894,O,000052,_ZN5uking6action10PlayerHellC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f28c8,W,000972,_ZN5uking6action10PlayerHell6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f2c94,W,001432,_ZN5uking6action10PlayerHell5calc_Ev @@ -50484,7 +50484,7 @@ Address,Quality,Size,Name 0x00000071007f3404,O,000132,_ZNK5uking6action10PlayerHell27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f3488,O,000092,_ZNK5uking6action10PlayerHell18getRuntimeTypeInfoEv 0x00000071007f34e4,O,000052,_ZN5uking6action10PlayerHellD0Ev -0x00000071007f3518,U,000008,_ZNK5uking6action10PlayerHell12isChangeableEv +0x00000071007f3518,O,000008,_ZNK5uking6action10PlayerHell12isChangeableEv 0x00000071007f3520,O,000052,_ZN5uking6action16PlayerHellNoFadeC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f3554,W,000552,_ZN5uking6action16PlayerHellNoFade6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f377c,W,000236,_ZN5uking6action16PlayerHellNoFade5calc_Ev @@ -50493,7 +50493,7 @@ Address,Quality,Size,Name 0x00000071007f3974,O,000132,_ZNK5uking6action16PlayerHellNoFade27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f39f8,O,000092,_ZNK5uking6action16PlayerHellNoFade18getRuntimeTypeInfoEv 0x00000071007f3a54,O,000052,_ZN5uking6action16PlayerHellNoFadeD0Ev -0x00000071007f3a88,U,000008,_ZNK5uking6action16PlayerHellNoFade12isChangeableEv +0x00000071007f3a88,O,000008,_ZNK5uking6action16PlayerHellNoFade12isChangeableEv 0x00000071007f3a90,U,000052,AI_Action_PlayerHellStartWait::ctor 0x00000071007f3ac4,W,000192,_ZN5uking6action19PlayerHellStartWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f3b84,W,000104,_ZN5uking6action19PlayerHellStartWait5calc_Ev @@ -50502,7 +50502,7 @@ Address,Quality,Size,Name 0x00000071007f3c94,O,000092,_ZNK5uking6action19PlayerHellStartWait18getRuntimeTypeInfoEv 0x00000071007f3cf0,O,000020,_ZN5uking6action19PlayerHellStartWaitD1Ev 0x00000071007f3d04,O,000052,_ZN5uking6action19PlayerHellStartWaitD0Ev -0x00000071007f3d38,U,000008,_ZNK5uking6action19PlayerHellStartWait12isChangeableEv +0x00000071007f3d38,O,000008,_ZNK5uking6action19PlayerHellStartWait12isChangeableEv 0x00000071007f3d40,O,000052,_ZN5uking6action10PlayerHideC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f3d74,O,000020,_ZN5uking6action10PlayerHideD1Ev 0x00000071007f3d88,O,000052,_ZN5uking6action10PlayerHideD0Ev @@ -50521,7 +50521,7 @@ Address,Quality,Size,Name 0x00000071007f4a4c,O,000092,_ZNK5uking6action15PlayerHoldUpDRC18getRuntimeTypeInfoEv 0x00000071007f4aa8,O,000020,_ZN5uking6action15PlayerHoldUpDRCD1Ev 0x00000071007f4abc,O,000052,_ZN5uking6action15PlayerHoldUpDRCD0Ev -0x00000071007f4af0,U,000008,_ZNK5uking6action15PlayerHoldUpDRC12isChangeableEv +0x00000071007f4af0,O,000008,_ZNK5uking6action15PlayerHoldUpDRC12isChangeableEv 0x00000071007f4af8,U,000056,AI_Action_PlayerHorseGetOff::ctor 0x00000071007f4b30,W,000180,_ZN5uking6action17PlayerHorseGetOff6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f4be4,W,003352,_ZN5uking6action17PlayerHorseGetOff5calc_Ev @@ -50530,7 +50530,7 @@ Address,Quality,Size,Name 0x00000071007f5964,O,000132,_ZNK5uking6action17PlayerHorseGetOff27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f59e8,O,000092,_ZNK5uking6action17PlayerHorseGetOff18getRuntimeTypeInfoEv 0x00000071007f5a44,O,000052,_ZN5uking6action17PlayerHorseGetOffD0Ev -0x00000071007f5a78,U,000008,_ZNK5uking6action17PlayerHorseGetOff12isChangeableEv +0x00000071007f5a78,O,000008,_ZNK5uking6action17PlayerHorseGetOff12isChangeableEv 0x00000071007f5a80,U,000052,AI_Action_PlayerHorseGetOffInDemo::ctor 0x00000071007f5ab4,W,000080,_ZN5uking6action23PlayerHorseGetOffInDemo6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f5b04,W,000040,_ZN5uking6action23PlayerHorseGetOffInDemo5calc_Ev @@ -50538,7 +50538,7 @@ Address,Quality,Size,Name 0x00000071007f5b30,O,000132,_ZNK5uking6action23PlayerHorseGetOffInDemo27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f5bb4,O,000092,_ZNK5uking6action23PlayerHorseGetOffInDemo18getRuntimeTypeInfoEv 0x00000071007f5c10,O,000052,_ZN5uking6action23PlayerHorseGetOffInDemoD0Ev -0x00000071007f5c44,U,000008,_ZNK5uking6action23PlayerHorseGetOffInDemo12isChangeableEv +0x00000071007f5c44,O,000008,_ZNK5uking6action23PlayerHorseGetOffInDemo12isChangeableEv 0x00000071007f5c4c,M,000060,_ZN5uking6action15PlayerHorseJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f5c88,U,000076,_ZNK5uking6action15PlayerHorseJump10isFinishedEv 0x00000071007f5cd4,W,000328,_ZN5uking6action15PlayerHorseJump6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50549,7 +50549,7 @@ Address,Quality,Size,Name 0x00000071007f63bc,O,000132,_ZNK5uking6action15PlayerHorseJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f6440,O,000092,_ZNK5uking6action15PlayerHorseJump18getRuntimeTypeInfoEv 0x00000071007f649c,O,000052,_ZN5uking6action15PlayerHorseJumpD0Ev -0x00000071007f64d0,U,000008,_ZNK5uking6action15PlayerHorseJump12isChangeableEv +0x00000071007f64d0,O,000008,_ZNK5uking6action15PlayerHorseJump12isChangeableEv 0x00000071007f64d8,U,000072,AI_Action_PlayerIce::ctor 0x00000071007f6520,W,001168,_ZN5uking6action9PlayerIce6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f69b0,W,000816,_ZN5uking6action9PlayerIce5calc_Ev @@ -50558,7 +50558,7 @@ Address,Quality,Size,Name 0x00000071007f6f38,O,000132,_ZNK5uking6action9PlayerIce27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f6fbc,O,000092,_ZNK5uking6action9PlayerIce18getRuntimeTypeInfoEv 0x00000071007f7018,O,000052,_ZN5uking6action9PlayerIceD0Ev -0x00000071007f704c,U,000008,_ZNK5uking6action9PlayerIce12isChangeableEv +0x00000071007f704c,O,000008,_ZNK5uking6action9PlayerIce12isChangeableEv 0x00000071007f7054,U,000052,AI_Action_PlayerIceBlockRemove::ctor 0x00000071007f7088,W,000564,_ZN5uking6action20PlayerIceBlockRemove6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f72bc,W,000040,_ZN5uking6action20PlayerIceBlockRemove5calc_Ev @@ -50567,7 +50567,7 @@ Address,Quality,Size,Name 0x00000071007f736c,O,000092,_ZNK5uking6action20PlayerIceBlockRemove18getRuntimeTypeInfoEv 0x00000071007f73c8,W,000068,_ZN5uking6action20PlayerIceBlockRemoveD1Ev 0x00000071007f740c,W,000076,_ZN5uking6action20PlayerIceBlockRemoveD0Ev -0x00000071007f7458,U,000008,_ZNK5uking6action20PlayerIceBlockRemove12isChangeableEv +0x00000071007f7458,O,000008,_ZNK5uking6action20PlayerIceBlockRemove12isChangeableEv 0x00000071007f7460,O,000048,_ZN5uking6action14PlayerIceBreakC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f7490,W,000196,_ZN5uking6action14PlayerIceBreak6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f7554,W,000060,_ZN5uking6action14PlayerIceBreak5calc_Ev @@ -50584,7 +50584,7 @@ Address,Quality,Size,Name 0x00000071007f7b84,O,000092,_ZNK5uking6action18PlayerIceGrabReady18getRuntimeTypeInfoEv 0x00000071007f7be0,W,000068,_ZN5uking6action18PlayerIceGrabReadyD1Ev 0x00000071007f7c24,W,000076,_ZN5uking6action18PlayerIceGrabReadyD0Ev -0x00000071007f7c70,U,000008,_ZNK5uking6action18PlayerIceGrabReady12isChangeableEv +0x00000071007f7c70,O,000008,_ZNK5uking6action18PlayerIceGrabReady12isChangeableEv 0x00000071007f7c78,M,000060,_ZN5uking6action10PlayerJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f7cb4,U,000076,_ZNK5uking6action10PlayerJump10isFinishedEv 0x00000071007f7d00,W,000700,_ZN5uking6action10PlayerJump6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50596,7 +50596,7 @@ Address,Quality,Size,Name 0x00000071007f86a4,O,000132,_ZNK5uking6action10PlayerJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f8728,O,000092,_ZNK5uking6action10PlayerJump18getRuntimeTypeInfoEv 0x00000071007f8784,O,000052,_ZN5uking6action10PlayerJumpD0Ev -0x00000071007f87b8,U,000008,_ZNK5uking6action10PlayerJump12isChangeableEv +0x00000071007f87b8,O,000008,_ZNK5uking6action10PlayerJump12isChangeableEv 0x00000071007f87c0,U,000056,AI_Action_PlayerKokkoGlide::ctor 0x00000071007f87f8,U,000060,_ZNK5uking6action16PlayerKokkoGlide10isFinishedEv 0x00000071007f8834,W,000156,_ZN5uking6action16PlayerKokkoGlide6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50606,7 +50606,7 @@ Address,Quality,Size,Name 0x00000071007f8a28,O,000216,_ZNK5uking6action16PlayerKokkoGlide27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f8b00,O,000092,_ZNK5uking6action16PlayerKokkoGlide18getRuntimeTypeInfoEv 0x00000071007f8b5c,O,000052,_ZN5uking6action16PlayerKokkoGlideD0Ev -0x00000071007f8b90,U,000008,_ZNK5uking6action16PlayerKokkoGlide12isChangeableEv +0x00000071007f8b90,O,000008,_ZNK5uking6action16PlayerKokkoGlide12isChangeableEv 0x00000071007f8b98,O,000140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking6action11PlayerGlideEE9isDerivedEPKNS0_9InterfaceE 0x00000071007f8c24,O,000048,_ZN5uking6action19PlayerLadderDownEndC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f8c54,U,000008,_ZNK5uking6action19PlayerLadderDownEnd10isFinishedEv @@ -50616,7 +50616,7 @@ Address,Quality,Size,Name 0x00000071007f8e84,O,000132,_ZNK5uking6action19PlayerLadderDownEnd27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f8f08,O,000092,_ZNK5uking6action19PlayerLadderDownEnd18getRuntimeTypeInfoEv 0x00000071007f8f64,O,000052,_ZN5uking6action19PlayerLadderDownEndD0Ev -0x00000071007f8f98,U,000008,_ZNK5uking6action19PlayerLadderDownEnd12isChangeableEv +0x00000071007f8f98,O,000008,_ZNK5uking6action19PlayerLadderDownEnd12isChangeableEv 0x00000071007f8fa0,O,000048,_ZN5uking6action21PlayerLadderDownStartC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f8fd0,W,000296,_ZN5uking6action21PlayerLadderDownStart6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f90f8,W,000848,_ZN5uking6action21PlayerLadderDownStart5calc_Ev @@ -50633,7 +50633,7 @@ Address,Quality,Size,Name 0x00000071007f99fc,O,000132,_ZNK5uking6action16PlayerLadderJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007f9a80,O,000092,_ZNK5uking6action16PlayerLadderJump18getRuntimeTypeInfoEv 0x00000071007f9adc,O,000052,_ZN5uking6action16PlayerLadderJumpD0Ev -0x00000071007f9b10,U,000008,_ZNK5uking6action16PlayerLadderJump12isChangeableEv +0x00000071007f9b10,O,000008,_ZNK5uking6action16PlayerLadderJump12isChangeableEv 0x00000071007f9b18,O,000052,_ZN5uking6action20PlayerLadderJumpLandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007f9b4c,W,001040,_ZN5uking6action20PlayerLadderJumpLand6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007f9f5c,W,000748,_ZN5uking6action20PlayerLadderJumpLand5calc_Ev @@ -50642,7 +50642,7 @@ Address,Quality,Size,Name 0x00000071007fa318,O,000132,_ZNK5uking6action20PlayerLadderJumpLand27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007fa39c,O,000092,_ZNK5uking6action20PlayerLadderJumpLand18getRuntimeTypeInfoEv 0x00000071007fa3f8,O,000052,_ZN5uking6action20PlayerLadderJumpLandD0Ev -0x00000071007fa42c,U,000008,_ZNK5uking6action20PlayerLadderJumpLand12isChangeableEv +0x00000071007fa42c,O,000008,_ZNK5uking6action20PlayerLadderJumpLand12isChangeableEv 0x00000071007fa434,U,000056,AI_Action_PlayerLadderMove::ctor 0x00000071007fa46c,U,000332,_ZNK5uking6action16PlayerLadderMove10isFinishedEv 0x00000071007fa5b8,W,000196,_ZN5uking6action16PlayerLadderMove6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50652,7 +50652,7 @@ Address,Quality,Size,Name 0x00000071007fa9f0,O,000132,_ZNK5uking6action16PlayerLadderMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007faa74,O,000092,_ZNK5uking6action16PlayerLadderMove18getRuntimeTypeInfoEv 0x00000071007faad0,O,000052,_ZN5uking6action16PlayerLadderMoveD0Ev -0x00000071007fab04,U,000008,_ZNK5uking6action16PlayerLadderMove12isChangeableEv +0x00000071007fab04,O,000008,_ZNK5uking6action16PlayerLadderMove12isChangeableEv 0x00000071007fab0c,O,000048,_ZN5uking6action19PlayerLadderToClimbC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007fab3c,W,000220,_ZN5uking6action19PlayerLadderToClimb6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007fac18,W,000404,_ZN5uking6action19PlayerLadderToClimb5calc_Ev @@ -50677,7 +50677,7 @@ Address,Quality,Size,Name 0x00000071007fb654,O,000132,_ZNK5uking6action19PlayerLadderUpStart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007fb6d8,O,000092,_ZNK5uking6action19PlayerLadderUpStart18getRuntimeTypeInfoEv 0x00000071007fb734,O,000052,_ZN5uking6action19PlayerLadderUpStartD0Ev -0x00000071007fb768,U,000008,_ZNK5uking6action19PlayerLadderUpStart12isChangeableEv +0x00000071007fb768,O,000008,_ZNK5uking6action19PlayerLadderUpStart12isChangeableEv 0x00000071007fb770,O,000048,_ZN5uking6action10PlayerLandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007fb7a0,W,000932,_ZN5uking6action10PlayerLand6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007fbb44,W,000756,_ZN5uking6action10PlayerLand5calc_Ev @@ -50694,7 +50694,7 @@ Address,Quality,Size,Name 0x00000071007fc2e0,O,000132,_ZNK5uking6action16PlayerLandDamage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007fc364,O,000092,_ZNK5uking6action16PlayerLandDamage18getRuntimeTypeInfoEv 0x00000071007fc3c0,O,000052,_ZN5uking6action16PlayerLandDamageD0Ev -0x00000071007fc3f4,U,000008,_ZNK5uking6action16PlayerLandDamage12isChangeableEv +0x00000071007fc3f4,O,000008,_ZNK5uking6action16PlayerLandDamage12isChangeableEv 0x00000071007fc3fc,M,000060,_ZN5uking6action17PlayerLargeDamageC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007fc438,W,003460,_ZN5uking6action17PlayerLargeDamage6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007fd1bc,W,000144,_ZN5uking6action17PlayerLargeDamage5calc_Ev @@ -50703,7 +50703,7 @@ Address,Quality,Size,Name 0x00000071007fdb38,O,000132,_ZNK5uking6action17PlayerLargeDamage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007fdbbc,O,000092,_ZNK5uking6action17PlayerLargeDamage18getRuntimeTypeInfoEv 0x00000071007fdc18,O,000052,_ZN5uking6action17PlayerLargeDamageD0Ev -0x00000071007fdc4c,U,000008,_ZNK5uking6action17PlayerLargeDamage12isChangeableEv +0x00000071007fdc4c,O,000008,_ZNK5uking6action17PlayerLargeDamage12isChangeableEv 0x00000071007fdc54,O,000048,_ZN5uking6action19PlayerLargeDamageUpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007fdc84,W,000892,_ZN5uking6action19PlayerLargeDamageUp6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071007fe000,W,000056,_ZN5uking6action19PlayerLargeDamageUp5calc_Ev @@ -50720,7 +50720,7 @@ Address,Quality,Size,Name 0x00000071007fe59c,O,000132,_ZNK5uking6action12PlayerLaunch27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007fe620,O,000092,_ZNK5uking6action12PlayerLaunch18getRuntimeTypeInfoEv 0x00000071007fe67c,O,000052,_ZN5uking6action12PlayerLaunchD0Ev -0x00000071007fe6b0,U,000008,_ZNK5uking6action12PlayerLaunch12isChangeableEv +0x00000071007fe6b0,O,000008,_ZNK5uking6action12PlayerLaunch12isChangeableEv 0x00000071007fe6b8,O,000048,_ZN5uking6action18PlayerLookAtObjectC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007fe6e8,O,000004,_ZN5uking6action18PlayerLookAtObjectD1Ev 0x00000071007fe6ec,O,000036,_ZN5uking6action18PlayerLookAtObjectD0Ev @@ -50750,7 +50750,7 @@ Address,Quality,Size,Name 0x00000071007ffbe8,O,000132,_ZNK5uking6action19PlayerMagnetSubject27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071007ffc6c,O,000092,_ZNK5uking6action19PlayerMagnetSubject18getRuntimeTypeInfoEv 0x00000071007ffcc8,O,000052,_ZN5uking6action19PlayerMagnetSubjectD0Ev -0x00000071007ffcfc,U,000008,_ZNK5uking6action19PlayerMagnetSubject12isChangeableEv +0x00000071007ffcfc,O,000008,_ZNK5uking6action19PlayerMagnetSubject12isChangeableEv 0x00000071007ffd04,O,000048,_ZN5uking6action22PlayerMasterSwordEquipC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071007ffd34,O,000020,_ZN5uking6action22PlayerMasterSwordEquipD1Ev 0x00000071007ffd48,O,000052,_ZN5uking6action22PlayerMasterSwordEquipD0Ev @@ -50777,7 +50777,7 @@ Address,Quality,Size,Name 0x00000071008027d8,O,000132,_ZNK5uking6action10PlayerMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710080285c,O,000092,_ZNK5uking6action10PlayerMove18getRuntimeTypeInfoEv 0x00000071008028b8,O,000052,_ZN5uking6action10PlayerMoveD0Ev -0x00000071008028ec,U,000008,_ZNK5uking6action10PlayerMove12isChangeableEv +0x00000071008028ec,O,000008,_ZNK5uking6action10PlayerMove12isChangeableEv 0x00000071008028f4,O,000048,_ZN5uking6action17PlayerNavMeshMoveC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100802924,W,000044,_ZN5uking6action17PlayerNavMeshMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100802950,O,000004,_ZN5uking6action17PlayerNavMeshMove5calc_Ev @@ -50787,7 +50787,7 @@ Address,Quality,Size,Name 0x0000007100802ae4,O,000216,_ZNK5uking6action17PlayerNavMeshMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100802bbc,O,000092,_ZNK5uking6action17PlayerNavMeshMove18getRuntimeTypeInfoEv 0x0000007100802c18,O,000052,_ZN5uking6action17PlayerNavMeshMoveD0Ev -0x0000007100802c4c,U,000008,_ZNK5uking6action17PlayerNavMeshMove12isChangeableEv +0x0000007100802c4c,O,000008,_ZNK5uking6action17PlayerNavMeshMove12isChangeableEv 0x0000007100802c54,U,000060,AI_Action_PlayerParashawlGlide::ctor 0x0000007100802c90,U,000060,_ZNK5uking6action20PlayerParashawlGlide10isFinishedEv 0x0000007100802ccc,W,000648,_ZN5uking6action20PlayerParashawlGlide6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50808,7 +50808,7 @@ Address,Quality,Size,Name 0x0000007100803d58,O,000132,_ZNK5uking6action11PlayerGlide27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100803ddc,O,000092,_ZNK5uking6action11PlayerGlide18getRuntimeTypeInfoEv 0x0000007100803e38,O,000052,_ZN5uking6action11PlayerGlideD0Ev -0x0000007100803e6c,U,000008,_ZNK5uking6action11PlayerGlide12isChangeableEv +0x0000007100803e6c,O,000008,_ZNK5uking6action11PlayerGlide12isChangeableEv 0x0000007100803e74,U,000052,AI_Action_PlayerPickUp::ctor 0x0000007100803ea8,W,000112,_ZN5uking6action12PlayerPickUpD1Ev 0x0000007100803f18,W,000120,_ZN5uking6action12PlayerPickUpD0Ev @@ -50818,7 +50818,7 @@ Address,Quality,Size,Name 0x00000071008049bc,W,000004,_ZN5uking6action12PlayerPickUp6leave_Ev 0x00000071008049c0,O,000132,_ZNK5uking6action12PlayerPickUp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100804a44,O,000092,_ZNK5uking6action12PlayerPickUp18getRuntimeTypeInfoEv -0x0000007100804aa0,U,000008,_ZNK5uking6action12PlayerPickUp12isChangeableEv +0x0000007100804aa0,O,000008,_ZNK5uking6action12PlayerPickUp12isChangeableEv 0x0000007100804aa8,U,000228,AI_Action_PlayerPlayASAdapt::ctor 0x0000007100804b8c,W,000384,_ZN5uking6action17PlayerPlayASAdapt6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100804d0c,W,004072,_ZN5uking6action17PlayerPlayASAdapt5calc_Ev @@ -50831,7 +50831,7 @@ Address,Quality,Size,Name 0x0000007100806db8,O,000092,_ZNK5uking6action17PlayerPlayASAdapt18getRuntimeTypeInfoEv 0x0000007100806e14,O,000004,_ZN5uking6action17PlayerPlayASAdaptD1Ev 0x0000007100806e18,O,000036,_ZN5uking6action17PlayerPlayASAdaptD0Ev -0x0000007100806e3c,U,000008,_ZNK5uking6action17PlayerPlayASAdapt12isChangeableEv +0x0000007100806e3c,O,000008,_ZNK5uking6action17PlayerPlayASAdapt12isChangeableEv 0x0000007100806e44,O,000372,_ZN5uking6action17PlayerPlayASAdapt33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100806fb8,U,000064,AI_Action_PlayerPullSword::ctor 0x0000007100806ff8,W,000232,_ZN5uking6action15PlayerPullSword6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50843,7 +50843,7 @@ Address,Quality,Size,Name 0x0000007100807af0,O,000132,_ZNK5uking6action15PlayerPullSword27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100807b74,O,000092,_ZNK5uking6action15PlayerPullSword18getRuntimeTypeInfoEv 0x0000007100807bd0,O,000052,_ZN5uking6action15PlayerPullSwordD0Ev -0x0000007100807c04,U,000008,_ZNK5uking6action15PlayerPullSword12isChangeableEv +0x0000007100807c04,O,000008,_ZNK5uking6action15PlayerPullSword12isChangeableEv 0x0000007100807c0c,O,000052,_ZN5uking6action24PlayerPullSwordFirstFailC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100807c40,W,000096,_ZN5uking6action24PlayerPullSwordFirstFail6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100807ca0,W,000304,_ZN5uking6action24PlayerPullSwordFirstFail5calc_Ev @@ -50852,7 +50852,7 @@ Address,Quality,Size,Name 0x0000007100807e1c,O,000132,_ZNK5uking6action24PlayerPullSwordFirstFail27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100807ea0,O,000092,_ZNK5uking6action24PlayerPullSwordFirstFail18getRuntimeTypeInfoEv 0x0000007100807efc,O,000052,_ZN5uking6action24PlayerPullSwordFirstFailD0Ev -0x0000007100807f30,U,000008,_ZNK5uking6action24PlayerPullSwordFirstFail12isChangeableEv +0x0000007100807f30,O,000008,_ZNK5uking6action24PlayerPullSwordFirstFail12isChangeableEv 0x0000007100807f38,U,000076,AI_Action_PlayerRailMove::ctor 0x0000007100807f84,W,000212,_ZN5uking6action14PlayerRailMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100808058,W,000384,_ZN5uking6action14PlayerRailMove5calc_Ev @@ -50863,7 +50863,7 @@ Address,Quality,Size,Name 0x0000007100808358,O,000092,_ZNK5uking6action14PlayerRailMove18getRuntimeTypeInfoEv 0x00000071008083b4,O,000020,_ZN5uking6action14PlayerRailMoveD1Ev 0x00000071008083c8,O,000052,_ZN5uking6action14PlayerRailMoveD0Ev -0x00000071008083fc,U,000008,_ZNK5uking6action14PlayerRailMove12isChangeableEv +0x00000071008083fc,O,000008,_ZNK5uking6action14PlayerRailMove12isChangeableEv 0x0000007100808404,O,000048,_ZN5uking6action24PlayerReleaseMasterSowrdC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100808434,O,000020,_ZN5uking6action24PlayerReleaseMasterSowrdD1Ev 0x0000007100808448,O,000052,_ZN5uking6action24PlayerReleaseMasterSowrdD0Ev @@ -50880,7 +50880,7 @@ Address,Quality,Size,Name 0x00000071008089a8,O,000132,_ZNK5uking6action17PlayerRemainsBlow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100808a2c,O,000092,_ZNK5uking6action17PlayerRemainsBlow18getRuntimeTypeInfoEv 0x0000007100808a88,O,000052,_ZN5uking6action17PlayerRemainsBlowD0Ev -0x0000007100808abc,U,000008,_ZNK5uking6action17PlayerRemainsBlow12isChangeableEv +0x0000007100808abc,O,000008,_ZNK5uking6action17PlayerRemainsBlow12isChangeableEv 0x0000007100808ac4,O,000048,_ZN5uking6action29PlayerRequestRecreateDyeArmorC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100808af4,O,000020,_ZN5uking6action29PlayerRequestRecreateDyeArmorD1Ev 0x0000007100808b08,O,000052,_ZN5uking6action29PlayerRequestRecreateDyeArmorD0Ev @@ -50917,7 +50917,7 @@ Address,Quality,Size,Name 0x000000710080d388,O,000132,_ZNK5uking6action14PlayerRideJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710080d40c,O,000092,_ZNK5uking6action14PlayerRideJump18getRuntimeTypeInfoEv 0x000000710080d468,O,000052,_ZN5uking6action14PlayerRideJumpD0Ev -0x000000710080d49c,U,000008,_ZNK5uking6action14PlayerRideJump12isChangeableEv +0x000000710080d49c,O,000008,_ZNK5uking6action14PlayerRideJump12isChangeableEv 0x000000710080d4a4,O,000048,_ZN5uking6action16PlayerSelfCameraC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710080d4d4,W,000196,_ZN5uking6action16PlayerSelfCamera6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710080d598,W,002108,_ZN5uking6action16PlayerSelfCamera5calc_Ev @@ -50925,7 +50925,7 @@ Address,Quality,Size,Name 0x000000710080ddd8,O,000132,_ZNK5uking6action16PlayerSelfCamera27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710080de5c,O,000092,_ZNK5uking6action16PlayerSelfCamera18getRuntimeTypeInfoEv 0x000000710080deb8,O,000052,_ZN5uking6action16PlayerSelfCameraD0Ev -0x000000710080deec,U,000008,_ZNK5uking6action16PlayerSelfCamera12isChangeableEv +0x000000710080deec,O,000008,_ZNK5uking6action16PlayerSelfCamera12isChangeableEv 0x000000710080def4,U,000072,AI_Action_PlayerSetVisibleWeapon::ctor 0x000000710080df3c,W,000068,_ZN5uking6action22PlayerSetVisibleWeaponD1Ev 0x000000710080df80,W,000076,_ZN5uking6action22PlayerSetVisibleWeaponD0Ev @@ -50958,7 +50958,7 @@ Address,Quality,Size,Name 0x0000007100810980,O,000132,_ZNK5uking6action11PlayerShock27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100810a04,O,000092,_ZNK5uking6action11PlayerShock18getRuntimeTypeInfoEv 0x0000007100810a60,O,000052,_ZN5uking6action11PlayerShockD0Ev -0x0000007100810a94,U,000008,_ZNK5uking6action11PlayerShock12isChangeableEv +0x0000007100810a94,O,000008,_ZNK5uking6action11PlayerShock12isChangeableEv 0x0000007100810a9c,M,000060,_ZN5uking6action14PlayerSideStepC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100810ad8,U,000068,_ZNK5uking6action14PlayerSideStep10isFinishedEv 0x0000007100810b1c,W,001012,_ZN5uking6action14PlayerSideStep6enter_EPN4ksys3act2ai15InlineParamPackE @@ -50968,7 +50968,7 @@ Address,Quality,Size,Name 0x00000071008119a4,O,000132,_ZNK5uking6action14PlayerSideStep27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100811a28,O,000092,_ZNK5uking6action14PlayerSideStep18getRuntimeTypeInfoEv 0x0000007100811a84,O,000052,_ZN5uking6action14PlayerSideStepD0Ev -0x0000007100811ab8,U,000008,_ZNK5uking6action14PlayerSideStep12isChangeableEv +0x0000007100811ab8,O,000008,_ZNK5uking6action14PlayerSideStep12isChangeableEv 0x0000007100811ac0,O,000048,_ZN5uking6action18PlayerSideStepLandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100811af0,W,000360,_ZN5uking6action18PlayerSideStepLand6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100811c58,W,000604,_ZN5uking6action18PlayerSideStepLand5calc_Ev @@ -50984,7 +50984,7 @@ Address,Quality,Size,Name 0x00000071008120e8,O,000132,_ZNK5uking6action12PlayerSitEnd27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081216c,O,000092,_ZNK5uking6action12PlayerSitEnd18getRuntimeTypeInfoEv 0x00000071008121c8,O,000052,_ZN5uking6action12PlayerSitEndD0Ev -0x00000071008121fc,U,000008,_ZNK5uking6action12PlayerSitEnd12isChangeableEv +0x00000071008121fc,O,000008,_ZNK5uking6action12PlayerSitEnd12isChangeableEv 0x0000007100812204,O,000048,_ZN5uking6action14PlayerSitStartC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100812234,W,000432,_ZN5uking6action14PlayerSitStart6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071008123e4,W,000084,_ZN5uking6action14PlayerSitStart5calc_Ev @@ -50992,7 +50992,7 @@ Address,Quality,Size,Name 0x0000007100812460,O,000132,_ZNK5uking6action14PlayerSitStart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008124e4,O,000092,_ZNK5uking6action14PlayerSitStart18getRuntimeTypeInfoEv 0x0000007100812540,O,000052,_ZN5uking6action14PlayerSitStartD0Ev -0x0000007100812574,U,000008,_ZNK5uking6action14PlayerSitStart12isChangeableEv +0x0000007100812574,O,000008,_ZNK5uking6action14PlayerSitStart12isChangeableEv 0x000000710081257c,O,000052,_ZN5uking6action13PlayerSitWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008125b0,W,000096,_ZN5uking6action13PlayerSitWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100812610,W,000124,_ZN5uking6action13PlayerSitWait5calc_Ev @@ -51001,7 +51001,7 @@ Address,Quality,Size,Name 0x000000710081272c,O,000132,_ZNK5uking6action13PlayerSitWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008127b0,O,000092,_ZNK5uking6action13PlayerSitWait18getRuntimeTypeInfoEv 0x000000710081280c,O,000052,_ZN5uking6action13PlayerSitWaitD0Ev -0x0000007100812840,U,000008,_ZNK5uking6action13PlayerSitWait12isChangeableEv +0x0000007100812840,O,000008,_ZNK5uking6action13PlayerSitWait12isChangeableEv 0x0000007100812848,O,000052,_ZN5uking6action10PlayerSkinC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081287c,W,000188,_ZN5uking6action10PlayerSkin6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100812938,W,000268,_ZN5uking6action10PlayerSkin5calc_Ev @@ -51018,7 +51018,7 @@ Address,Quality,Size,Name 0x0000007100812c70,O,000132,_ZNK5uking6action11PlayerSleep27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100812cf4,O,000092,_ZNK5uking6action11PlayerSleep18getRuntimeTypeInfoEv 0x0000007100812d50,O,000052,_ZN5uking6action11PlayerSleepD0Ev -0x0000007100812d84,U,000008,_ZNK5uking6action11PlayerSleep12isChangeableEv +0x0000007100812d84,O,000008,_ZNK5uking6action11PlayerSleep12isChangeableEv 0x0000007100812d8c,U,000064,AI_Action_PlayerSlide::ctor 0x0000007100812dcc,U,000032,_ZNK5uking6action11PlayerSlide12isChangeableEv 0x0000007100812dec,W,000548,_ZN5uking6action11PlayerSlide6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51061,7 +51061,7 @@ Address,Quality,Size,Name 0x0000007100815550,O,000132,_ZNK5uking6action15PlayerSquatMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008155d4,O,000092,_ZNK5uking6action15PlayerSquatMove18getRuntimeTypeInfoEv 0x0000007100815630,O,000052,_ZN5uking6action15PlayerSquatMoveD0Ev -0x0000007100815664,U,000008,_ZNK5uking6action15PlayerSquatMove12isChangeableEv +0x0000007100815664,O,000008,_ZNK5uking6action15PlayerSquatMove12isChangeableEv 0x000000710081566c,O,000052,_ZN5uking6action15PlayerSquatWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008156a0,W,001216,_ZN5uking6action15PlayerSquatWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100815b60,W,001904,_ZN5uking6action15PlayerSquatWait5calc_Ev @@ -51079,7 +51079,7 @@ Address,Quality,Size,Name 0x00000071008167ec,O,000132,_ZNK5uking6action20PlayerStainCarryWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100816870,O,000092,_ZNK5uking6action20PlayerStainCarryWait18getRuntimeTypeInfoEv 0x00000071008168cc,O,000052,_ZN5uking6action20PlayerStainCarryWaitD0Ev -0x0000007100816900,U,000008,_ZNK5uking6action20PlayerStainCarryWait12isChangeableEv +0x0000007100816900,O,000008,_ZNK5uking6action20PlayerStainCarryWait12isChangeableEv 0x0000007100816908,U,000096,AI_Action_PlayerStainWait::ctor 0x0000007100816968,O,000008,_ZN5uking6action15PlayerStainWait5init_EPN4sead4HeapE 0x0000007100816970,W,000244,_ZN5uking6action15PlayerStainWait6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51089,7 +51089,7 @@ Address,Quality,Size,Name 0x0000007100816e38,O,000092,_ZNK5uking6action15PlayerStainWait18getRuntimeTypeInfoEv 0x0000007100816e94,W,000068,_ZN5uking6action15PlayerStainWaitD1Ev 0x0000007100816ed8,W,000076,_ZN5uking6action15PlayerStainWaitD0Ev -0x0000007100816f24,U,000008,_ZNK5uking6action15PlayerStainWait12isChangeableEv +0x0000007100816f24,O,000008,_ZNK5uking6action15PlayerStainWait12isChangeableEv 0x0000007100816f2c,O,000052,_ZN5uking6action16PlayerStepAttackC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100816f60,W,000584,_ZN5uking6action16PlayerStepAttack6enter_EPN4ksys3act2ai15InlineParamPackE 0x00000071008171a8,W,000700,_ZN5uking6action16PlayerStepAttack5calc_Ev @@ -51125,7 +51125,7 @@ Address,Quality,Size,Name 0x0000007100818628,O,000132,_ZNK5uking6action15PlayerStopInAir27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008186ac,O,000092,_ZNK5uking6action15PlayerStopInAir18getRuntimeTypeInfoEv 0x0000007100818708,O,000052,_ZN5uking6action15PlayerStopInAirD0Ev -0x000000710081873c,U,000008,_ZNK5uking6action15PlayerStopInAir12isChangeableEv +0x000000710081873c,O,000008,_ZNK5uking6action15PlayerStopInAir12isChangeableEv 0x0000007100818744,O,000048,_ZN5uking6action17PlayerSubjectWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100818774,W,000224,_ZN5uking6action17PlayerSubjectWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100818854,W,000544,_ZN5uking6action17PlayerSubjectWait5calc_Ev @@ -51133,7 +51133,7 @@ Address,Quality,Size,Name 0x0000007100818acc,O,000132,_ZNK5uking6action17PlayerSubjectWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100818b50,O,000092,_ZNK5uking6action17PlayerSubjectWait18getRuntimeTypeInfoEv 0x0000007100818bac,O,000052,_ZN5uking6action17PlayerSubjectWaitD0Ev -0x0000007100818be0,U,000008,_ZNK5uking6action17PlayerSubjectWait12isChangeableEv +0x0000007100818be0,O,000008,_ZNK5uking6action17PlayerSubjectWait12isChangeableEv 0x0000007100818be8,O,000056,_ZN5uking6action15PlayerSuperBlowC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100818c20,W,000468,_ZN5uking6action15PlayerSuperBlow6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100818df4,W,000116,_ZN5uking6action15PlayerSuperBlow5calc_Ev @@ -51142,7 +51142,7 @@ Address,Quality,Size,Name 0x0000007100818f08,O,000132,_ZNK5uking6action15PlayerSuperBlow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100818f8c,O,000092,_ZNK5uking6action15PlayerSuperBlow18getRuntimeTypeInfoEv 0x0000007100818fe8,O,000052,_ZN5uking6action15PlayerSuperBlowD0Ev -0x000000710081901c,U,000008,_ZNK5uking6action15PlayerSuperBlow12isChangeableEv +0x000000710081901c,O,000008,_ZNK5uking6action15PlayerSuperBlow12isChangeableEv 0x0000007100819024,O,000052,_ZN5uking6action15PlayerSuperJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100819058,W,000540,_ZN5uking6action15PlayerSuperJump6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100819274,W,000288,_ZN5uking6action15PlayerSuperJump5calc_Ev @@ -51151,7 +51151,7 @@ Address,Quality,Size,Name 0x00000071008194b8,O,000132,_ZNK5uking6action15PlayerSuperJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081953c,O,000092,_ZNK5uking6action15PlayerSuperJump18getRuntimeTypeInfoEv 0x0000007100819598,O,000052,_ZN5uking6action15PlayerSuperJumpD0Ev -0x00000071008195cc,U,000008,_ZNK5uking6action15PlayerSuperJump12isChangeableEv +0x00000071008195cc,O,000008,_ZNK5uking6action15PlayerSuperJump12isChangeableEv 0x00000071008195d4,O,000052,_ZN5uking6action21PlayerSuperJumpChargeC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100819608,W,000640,_ZN5uking6action21PlayerSuperJumpCharge6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100819888,W,000392,_ZN5uking6action21PlayerSuperJumpCharge5calc_Ev @@ -51160,7 +51160,7 @@ Address,Quality,Size,Name 0x0000007100819a98,O,000132,_ZNK5uking6action21PlayerSuperJumpCharge27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100819b1c,O,000092,_ZNK5uking6action21PlayerSuperJumpCharge18getRuntimeTypeInfoEv 0x0000007100819b78,O,000052,_ZN5uking6action21PlayerSuperJumpChargeD0Ev -0x0000007100819bac,U,000008,_ZNK5uking6action21PlayerSuperJumpCharge12isChangeableEv +0x0000007100819bac,O,000008,_ZNK5uking6action21PlayerSuperJumpCharge12isChangeableEv 0x0000007100819bb4,O,000048,_ZN5uking6action16PlayerSwimDamageC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100819be4,W,000100,_ZN5uking6action16PlayerSwimDamage6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100819c48,W,000056,_ZN5uking6action16PlayerSwimDamage5calc_Ev @@ -51168,7 +51168,7 @@ Address,Quality,Size,Name 0x0000007100819c84,O,000132,_ZNK5uking6action16PlayerSwimDamage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100819d08,O,000092,_ZNK5uking6action16PlayerSwimDamage18getRuntimeTypeInfoEv 0x0000007100819d64,O,000052,_ZN5uking6action16PlayerSwimDamageD0Ev -0x0000007100819d98,U,000008,_ZNK5uking6action16PlayerSwimDamage12isChangeableEv +0x0000007100819d98,O,000008,_ZNK5uking6action16PlayerSwimDamage12isChangeableEv 0x0000007100819da0,O,000052,_ZN5uking6action14PlayerSwimDashC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100819dd4,W,000200,_ZN5uking6action14PlayerSwimDash6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100819e9c,W,000420,_ZN5uking6action14PlayerSwimDash5calc_Ev @@ -51186,7 +51186,7 @@ Address,Quality,Size,Name 0x000000710081a5a0,O,000132,_ZNK5uking6action14PlayerSwimJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081a624,O,000092,_ZNK5uking6action14PlayerSwimJump18getRuntimeTypeInfoEv 0x000000710081a680,O,000052,_ZN5uking6action14PlayerSwimJumpD0Ev -0x000000710081a6b4,U,000008,_ZNK5uking6action14PlayerSwimJump12isChangeableEv +0x000000710081a6b4,O,000008,_ZNK5uking6action14PlayerSwimJump12isChangeableEv 0x000000710081a6bc,O,000048,_ZN5uking6action14PlayerSwimLandC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081a6ec,W,000116,_ZN5uking6action14PlayerSwimLand6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710081a760,W,000572,_ZN5uking6action14PlayerSwimLand5calc_Ev @@ -51194,7 +51194,7 @@ Address,Quality,Size,Name 0x000000710081a9a0,O,000132,_ZNK5uking6action14PlayerSwimLand27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081aa24,O,000092,_ZNK5uking6action14PlayerSwimLand18getRuntimeTypeInfoEv 0x000000710081aa80,O,000052,_ZN5uking6action14PlayerSwimLandD0Ev -0x000000710081aab4,U,000008,_ZNK5uking6action14PlayerSwimLand12isChangeableEv +0x000000710081aab4,O,000008,_ZNK5uking6action14PlayerSwimLand12isChangeableEv 0x000000710081aabc,O,000064,_ZN5uking6action14PlayerSwimMoveC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081aafc,W,000384,_ZN5uking6action14PlayerSwimMove6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710081ac7c,W,000796,_ZN5uking6action14PlayerSwimMove5calc_Ev @@ -51204,7 +51204,7 @@ Address,Quality,Size,Name 0x000000710081b7a0,O,000132,_ZNK5uking6action14PlayerSwimMove27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081b824,O,000092,_ZNK5uking6action14PlayerSwimMove18getRuntimeTypeInfoEv 0x000000710081b880,O,000052,_ZN5uking6action14PlayerSwimMoveD0Ev -0x000000710081b8b4,U,000008,_ZNK5uking6action14PlayerSwimMove12isChangeableEv +0x000000710081b8b4,O,000008,_ZNK5uking6action14PlayerSwimMove12isChangeableEv 0x000000710081b8bc,O,000052,_ZN5uking6action20PlayerSwimSpinAttackC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081b8f0,W,000184,_ZN5uking6action20PlayerSwimSpinAttack6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710081b9a8,W,000616,_ZN5uking6action20PlayerSwimSpinAttack5calc_Ev @@ -51223,7 +51223,7 @@ Address,Quality,Size,Name 0x000000710081c3fc,O,000132,_ZNK5uking6action14PlayerSwimWait27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081c480,O,000092,_ZNK5uking6action14PlayerSwimWait18getRuntimeTypeInfoEv 0x000000710081c4dc,O,000052,_ZN5uking6action14PlayerSwimWaitD0Ev -0x000000710081c510,U,000008,_ZNK5uking6action14PlayerSwimWait12isChangeableEv +0x000000710081c510,O,000008,_ZNK5uking6action14PlayerSwimWait12isChangeableEv 0x000000710081c518,O,000048,_ZN5uking6action16PlayerSwitchHangC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081c548,W,000436,_ZN5uking6action16PlayerSwitchHang6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710081c6fc,W,000628,_ZN5uking6action16PlayerSwitchHang5calc_Ev @@ -51264,7 +51264,7 @@ Address,Quality,Size,Name 0x000000710081ef6c,W,000172,_ZN5uking6action25PlayerTurnAndLookToObject11loadParams_Ev 0x000000710081f018,O,000300,_ZNK5uking6action25PlayerTurnAndLookToObject27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081f144,O,000092,_ZNK5uking6action25PlayerTurnAndLookToObject18getRuntimeTypeInfoEv -0x000000710081f1a0,U,000008,_ZNK5uking6action25PlayerTurnAndLookToObject12isChangeableEv +0x000000710081f1a0,O,000008,_ZNK5uking6action25PlayerTurnAndLookToObject12isChangeableEv 0x000000710081f1a8,U,000072,AI_Action_PlayerTurnInner::ctor 0x000000710081f1f0,O,000020,_ZN5uking6action15PlayerTurnInnerD1Ev 0x000000710081f204,O,000052,_ZN5uking6action15PlayerTurnInnerD0Ev @@ -51278,7 +51278,7 @@ Address,Quality,Size,Name 0x000000710081f734,O,000004,_ZN5uking6action15PlayerTurnInner11loadParams_Ev 0x000000710081f738,O,000132,_ZNK5uking6action15PlayerTurnInner27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081f7bc,O,000092,_ZNK5uking6action15PlayerTurnInner18getRuntimeTypeInfoEv -0x000000710081f818,U,000008,_ZNK5uking6action15PlayerTurnInner12isChangeableEv +0x000000710081f818,O,000008,_ZNK5uking6action15PlayerTurnInner12isChangeableEv 0x000000710081f820,O,000052,_ZN5uking6action15PlayerTwiceJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081f854,U,000008,_ZNK5uking6action15PlayerTwiceJump10isFinishedEv 0x000000710081f85c,W,000188,_ZN5uking6action15PlayerTwiceJump6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51288,7 +51288,7 @@ Address,Quality,Size,Name 0x000000710081faac,O,000216,_ZNK5uking6action15PlayerTwiceJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710081fb84,O,000092,_ZNK5uking6action15PlayerTwiceJump18getRuntimeTypeInfoEv 0x000000710081fbe0,O,000052,_ZN5uking6action15PlayerTwiceJumpD0Ev -0x000000710081fc14,U,000008,_ZNK5uking6action15PlayerTwiceJump12isChangeableEv +0x000000710081fc14,O,000008,_ZNK5uking6action15PlayerTwiceJump12isChangeableEv 0x000000710081fc1c,O,000048,_ZN5uking6action20PlayerUnbindSheikPadC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x000000710081fc4c,O,000020,_ZN5uking6action20PlayerUnbindSheikPadD1Ev 0x000000710081fc60,O,000052,_ZN5uking6action20PlayerUnbindSheikPadD0Ev @@ -51306,7 +51306,7 @@ Address,Quality,Size,Name 0x000000710082035c,W,000340,_ZN5uking6action13PlayerUnequip6leave_Ev 0x00000071008204b0,O,000132,_ZNK5uking6action13PlayerUnequip27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100820534,O,000092,_ZNK5uking6action13PlayerUnequip18getRuntimeTypeInfoEv -0x0000007100820590,U,000008,_ZNK5uking6action13PlayerUnequip12isChangeableEv +0x0000007100820590,O,000008,_ZNK5uking6action13PlayerUnequip12isChangeableEv 0x0000007100820598,U,000052,AI_Action_PlayerUpdateEquip::ctor 0x00000071008205cc,W,000112,_ZN5uking6action17PlayerUpdateEquipD1Ev 0x000000710082063c,W,000120,_ZN5uking6action17PlayerUpdateEquipD0Ev @@ -51316,7 +51316,7 @@ Address,Quality,Size,Name 0x0000007100820744,W,000004,_ZN5uking6action17PlayerUpdateEquip6leave_Ev 0x0000007100820748,O,000132,_ZNK5uking6action17PlayerUpdateEquip27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008207cc,O,000092,_ZNK5uking6action17PlayerUpdateEquip18getRuntimeTypeInfoEv -0x0000007100820828,U,000008,_ZNK5uking6action17PlayerUpdateEquip12isChangeableEv +0x0000007100820828,O,000008,_ZNK5uking6action17PlayerUpdateEquip12isChangeableEv 0x0000007100820830,O,000048,_ZN5uking6action10PlayerWaitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100820860,W,000912,_ZN5uking6action10PlayerWait6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100820bf0,W,001172,_ZN5uking6action10PlayerWait5calc_Ev @@ -51334,7 +51334,7 @@ Address,Quality,Size,Name 0x0000007100822510,O,000132,_ZNK5uking6action15PlayerWakeBoard27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100822594,O,000092,_ZNK5uking6action15PlayerWakeBoard18getRuntimeTypeInfoEv 0x00000071008225f0,O,000052,_ZN5uking6action15PlayerWakeBoardD0Ev -0x0000007100822624,U,000008,_ZNK5uking6action15PlayerWakeBoard12isChangeableEv +0x0000007100822624,O,000008,_ZNK5uking6action15PlayerWakeBoard12isChangeableEv 0x000000710082262c,U,000324, 0x0000007100822770,O,000048,_ZN5uking6action18PlayerWakeBoardEndC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008227a0,W,000148,_ZN5uking6action18PlayerWakeBoardEnd6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51344,7 +51344,7 @@ Address,Quality,Size,Name 0x0000007100822840,O,000132,_ZNK5uking6action18PlayerWakeBoardEnd27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008228c4,O,000092,_ZNK5uking6action18PlayerWakeBoardEnd18getRuntimeTypeInfoEv 0x0000007100822920,O,000052,_ZN5uking6action18PlayerWakeBoardEndD0Ev -0x0000007100822954,U,000008,_ZNK5uking6action18PlayerWakeBoardEnd12isChangeableEv +0x0000007100822954,O,000008,_ZNK5uking6action18PlayerWakeBoardEnd12isChangeableEv 0x000000710082295c,O,000072,_ZN5uking6action19PlayerWakeBoardGoalC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008229a4,W,000132,_ZN5uking6action19PlayerWakeBoardGoal6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100822a28,W,000396,_ZN5uking6action19PlayerWakeBoardGoal5calc_Ev @@ -51354,7 +51354,7 @@ Address,Quality,Size,Name 0x0000007100822cbc,O,000092,_ZNK5uking6action19PlayerWakeBoardGoal18getRuntimeTypeInfoEv 0x0000007100822d18,O,000020,_ZN5uking6action19PlayerWakeBoardGoalD1Ev 0x0000007100822d2c,O,000052,_ZN5uking6action19PlayerWakeBoardGoalD0Ev -0x0000007100822d60,U,000008,_ZNK5uking6action19PlayerWakeBoardGoal12isChangeableEv +0x0000007100822d60,O,000008,_ZNK5uking6action19PlayerWakeBoardGoal12isChangeableEv 0x0000007100822d68,U,000080,AI_Action_PlayerWakeBoardReady::ctor 0x0000007100822db8,W,000196,_ZN5uking6action20PlayerWakeBoardReady6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100822e7c,U,001124,aiActionPlayerWakeBoardReadyStuff @@ -51365,7 +51365,7 @@ Address,Quality,Size,Name 0x000000710082352c,O,000092,_ZNK5uking6action20PlayerWakeBoardReady18getRuntimeTypeInfoEv 0x0000007100823588,W,000068,_ZN5uking6action20PlayerWakeBoardReadyD1Ev 0x00000071008235cc,W,000076,_ZN5uking6action20PlayerWakeBoardReadyD0Ev -0x0000007100823618,U,000008,_ZNK5uking6action20PlayerWakeBoardReady12isChangeableEv +0x0000007100823618,O,000008,_ZNK5uking6action20PlayerWakeBoardReady12isChangeableEv 0x0000007100823620,O,000056,_ZN5uking6action16PlayerWallDashUpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100823658,W,000284,_ZN5uking6action16PlayerWallDashUp6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100823774,W,000376,_ZN5uking6action16PlayerWallDashUp5calc_Ev @@ -51374,7 +51374,7 @@ Address,Quality,Size,Name 0x0000007100823980,O,000132,_ZNK5uking6action16PlayerWallDashUp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100823a04,O,000092,_ZNK5uking6action16PlayerWallDashUp18getRuntimeTypeInfoEv 0x0000007100823a60,O,000052,_ZN5uking6action16PlayerWallDashUpD0Ev -0x0000007100823a94,U,000008,_ZNK5uking6action16PlayerWallDashUp12isChangeableEv +0x0000007100823a94,O,000008,_ZNK5uking6action16PlayerWallDashUp12isChangeableEv 0x0000007100823a9c,O,000052,_ZN5uking6action14PlayerWallJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100823ad0,U,000076,_ZNK5uking6action14PlayerWallJump10isFinishedEv 0x0000007100823b1c,W,000304,_ZN5uking6action14PlayerWallJump6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51385,7 +51385,7 @@ Address,Quality,Size,Name 0x0000007100823ea4,O,000132,_ZNK5uking6action14PlayerWallJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100823f28,O,000092,_ZNK5uking6action14PlayerWallJump18getRuntimeTypeInfoEv 0x0000007100823f84,O,000052,_ZN5uking6action14PlayerWallJumpD0Ev -0x0000007100823fb8,U,000008,_ZNK5uking6action14PlayerWallJump12isChangeableEv +0x0000007100823fb8,O,000008,_ZNK5uking6action14PlayerWallJump12isChangeableEv 0x0000007100823fc0,O,000052,_ZN5uking6action14PlayerWallSlipC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100823ff4,U,000072,_ZNK5uking6action14PlayerWallSlip10isFinishedEv 0x000000710082403c,W,000232,_ZN5uking6action14PlayerWallSlip6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51403,7 +51403,7 @@ Address,Quality,Size,Name 0x000000710082443c,O,000132,_ZNK5uking6action10PlayerWarp27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008244c0,O,000092,_ZNK5uking6action10PlayerWarp18getRuntimeTypeInfoEv 0x000000710082451c,O,000052,_ZN5uking6action10PlayerWarpD0Ev -0x0000007100824550,U,000008,_ZNK5uking6action10PlayerWarp12isChangeableEv +0x0000007100824550,O,000008,_ZNK5uking6action10PlayerWarp12isChangeableEv 0x0000007100824558,O,000056,_ZN5uking6action21PlayerWaterDivingJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100824590,U,000008,_ZNK5uking6action21PlayerWaterDivingJump10isFinishedEv 0x0000007100824598,W,000636,_ZN5uking6action21PlayerWaterDivingJump6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51413,7 +51413,7 @@ Address,Quality,Size,Name 0x0000007100824abc,O,000132,_ZNK5uking6action21PlayerWaterDivingJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100824b40,O,000092,_ZNK5uking6action21PlayerWaterDivingJump18getRuntimeTypeInfoEv 0x0000007100824b9c,O,000052,_ZN5uking6action21PlayerWaterDivingJumpD0Ev -0x0000007100824bd0,U,000008,_ZNK5uking6action21PlayerWaterDivingJump12isChangeableEv +0x0000007100824bd0,O,000008,_ZNK5uking6action21PlayerWaterDivingJump12isChangeableEv 0x0000007100824bd8,U,000060,AI_Action_PlayerWaterFall::ctor 0x0000007100824c14,W,000364,_ZN5uking6action15PlayerWaterFall6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100824d80,W,000712,_ZN5uking6action15PlayerWaterFall5calc_Ev @@ -51423,7 +51423,7 @@ Address,Quality,Size,Name 0x00000071008251cc,O,000092,_ZNK5uking6action15PlayerWaterFall18getRuntimeTypeInfoEv 0x0000007100825228,O,000020,_ZN5uking6action15PlayerWaterFallD1Ev 0x000000710082523c,O,000052,_ZN5uking6action15PlayerWaterFallD0Ev -0x0000007100825270,U,000008,_ZNK5uking6action15PlayerWaterFall12isChangeableEv +0x0000007100825270,O,000008,_ZNK5uking6action15PlayerWaterFall12isChangeableEv 0x0000007100825278,O,000356,_ZNK4ksys3act2ai10ActionBase19getDynamicParamImplIPPNS_4RailEEEbPT_RKN4sead14SafeStringBaseIcEEMNS1_9ParamPackEKFbS8_SD_ES8_ 0x00000071008253dc,U,000060, 0x0000007100825418,O,000056,_ZN5uking6action19PlayerWaterFallJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE @@ -51434,7 +51434,7 @@ Address,Quality,Size,Name 0x0000007100825604,O,000132,_ZNK5uking6action19PlayerWaterFallJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100825688,O,000092,_ZNK5uking6action19PlayerWaterFallJump18getRuntimeTypeInfoEv 0x00000071008256e4,O,000052,_ZN5uking6action19PlayerWaterFallJumpD0Ev -0x0000007100825718,U,000008,_ZNK5uking6action19PlayerWaterFallJump12isChangeableEv +0x0000007100825718,O,000008,_ZNK5uking6action19PlayerWaterFallJump12isChangeableEv 0x0000007100825720,O,000056,_ZN5uking6action17PlayerWeaponThrowC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100825758,W,000196,_ZN5uking6action17PlayerWeaponThrow6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710082581c,W,002076,_ZN5uking6action17PlayerWeaponThrow5calc_Ev @@ -51443,7 +51443,7 @@ Address,Quality,Size,Name 0x0000007100826174,O,000132,_ZNK5uking6action17PlayerWeaponThrow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008261f8,O,000092,_ZNK5uking6action17PlayerWeaponThrow18getRuntimeTypeInfoEv 0x0000007100826254,O,000052,_ZN5uking6action17PlayerWeaponThrowD0Ev -0x0000007100826288,U,000008,_ZNK5uking6action17PlayerWeaponThrow12isChangeableEv +0x0000007100826288,O,000008,_ZNK5uking6action17PlayerWeaponThrow12isChangeableEv 0x0000007100826290,O,000056,_ZN5uking6action14PlayerZoraJumpC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008262c8,W,000420,_ZN5uking6action14PlayerZoraJump6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710082646c,W,000076,_ZN5uking6action14PlayerZoraJump5calc_Ev @@ -51452,7 +51452,7 @@ Address,Quality,Size,Name 0x0000007100826560,O,000132,_ZNK5uking6action14PlayerZoraJump27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008265e4,O,000092,_ZNK5uking6action14PlayerZoraJump18getRuntimeTypeInfoEv 0x0000007100826640,O,000052,_ZN5uking6action14PlayerZoraJumpD0Ev -0x0000007100826674,U,000008,_ZNK5uking6action14PlayerZoraJump12isChangeableEv +0x0000007100826674,O,000008,_ZNK5uking6action14PlayerZoraJump12isChangeableEv 0x000000710082667c,U,000072,AI_Action_PlayerZoraRide::ctor 0x00000071008266c4,W,000332,_ZN5uking6action14PlayerZoraRide6enter_EPN4ksys3act2ai15InlineParamPackE 0x0000007100826810,W,004624,_ZN5uking6action14PlayerZoraRide5calc_Ev @@ -51491,7 +51491,7 @@ Address,Quality,Size,Name 0x0000007100828ca8,O,000092,_ZNK5uking2ai17PlayerBarrierBlow18getRuntimeTypeInfoEv 0x0000007100828d04,O,000004,_ZN5uking2ai17PlayerBarrierBlowD1Ev 0x0000007100828d08,O,000036,_ZN5uking2ai17PlayerBarrierBlowD0Ev -0x0000007100828d2c,U,000008,_ZNK5uking2ai17PlayerBarrierBlow12isChangeableEv +0x0000007100828d2c,O,000008,_ZNK5uking2ai17PlayerBarrierBlow12isChangeableEv 0x0000007100828d34,O,000048,_ZN5uking2ai12PlayerBeetleC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100828d64,O,000008,_ZN5uking2ai12PlayerBeetle5init_EPN4sead4HeapE 0x0000007100828d6c,W,000076,_ZN5uking2ai12PlayerBeetle6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51500,7 +51500,7 @@ Address,Quality,Size,Name 0x0000007100829018,O,000288,_ZNK5uking2ai12PlayerBeetle27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100829138,O,000092,_ZNK5uking2ai12PlayerBeetle18getRuntimeTypeInfoEv 0x0000007100829194,O,000036,_ZN5uking2ai12PlayerBeetleD0Ev -0x00000071008291b8,U,000008,_ZNK5uking2ai12PlayerBeetle12isChangeableEv +0x00000071008291b8,O,000008,_ZNK5uking2ai12PlayerBeetle12isChangeableEv 0x00000071008291c0,O,000048,_ZN5uking2ai12PlayerCameraC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x00000071008291f0,O,000008,_ZN5uking2ai12PlayerCamera5init_EPN4sead4HeapE 0x00000071008291f8,W,000076,_ZN5uking2ai12PlayerCamera6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51564,7 +51564,7 @@ Address,Quality,Size,Name 0x000000710082b7f4,O,000036,_ZN5uking2ai14PlayerDemoRootD0Ev 0x000000710082b818,O,000008,_ZN5uking2ai14PlayerDemoRoot5init_EPN4sead4HeapE 0x000000710082b820,O,000004,_ZN5uking2ai14PlayerDemoRoot6enter_EPN4ksys3act2ai15InlineParamPackE -0x000000710082b824,U,000004,_ZN5uking2ai14PlayerDemoRoot5calc_Ev +0x000000710082b824,O,000004,_ZN5uking2ai14PlayerDemoRoot5calc_Ev 0x000000710082b828,O,000004,_ZN5uking2ai14PlayerDemoRoot6leave_Ev 0x000000710082b82c,O,000004,_ZN5uking2ai14PlayerDemoRoot11loadParams_Ev 0x000000710082b830,O,000288,_ZNK5uking2ai14PlayerDemoRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -51585,7 +51585,7 @@ Address,Quality,Size,Name 0x000000710082c074,W,000284,_ZN5uking2ai10PlayerItem6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710082c190,U,000296,_ZN5uking2ai10PlayerItem5calc_Ev 0x000000710082c2b8,U,000088,_ZNK5uking2ai10PlayerItem10isFinishedEv -0x000000710082c310,U,000008,_ZNK5uking2ai10PlayerItem12isChangeableEv +0x000000710082c310,O,000008,_ZNK5uking2ai10PlayerItem12isChangeableEv 0x000000710082c318,O,000004,_ZN5uking2ai10PlayerItem11loadParams_Ev 0x000000710082c31c,O,000288,_ZNK5uking2ai10PlayerItem27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710082c43c,O,000092,_ZNK5uking2ai10PlayerItem18getRuntimeTypeInfoEv @@ -51651,7 +51651,7 @@ Address,Quality,Size,Name 0x000000710083af00,U,000244, 0x000000710083aff4,U,000200, 0x000000710083b0bc,U,000536, -0x000000710083b2d4,U,000008,_ZNK5uking2ai12PlayerNormal12isChangeableEv +0x000000710083b2d4,O,000008,_ZNK5uking2ai12PlayerNormal12isChangeableEv 0x000000710083b2dc,W,003224,_ZN5uking2ai12PlayerNormal6enter_EPN4ksys3act2ai15InlineParamPackE 0x000000710083bf74,W,001512,_ZN5uking2ai12PlayerNormal6leave_Ev 0x000000710083c55c,U,000300, @@ -51698,7 +51698,7 @@ Address,Quality,Size,Name 0x0000007100844ce8,O,000288,_ZNK5uking2ai10PlayerRoot27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100844e08,O,000092,_ZNK5uking2ai10PlayerRoot18getRuntimeTypeInfoEv 0x0000007100844e64,O,000036,_ZN5uking2ai10PlayerRootD0Ev -0x0000007100844e88,U,000008,_ZNK5uking2ai10PlayerRoot12isChangeableEv +0x0000007100844e88,O,000008,_ZNK5uking2ai10PlayerRoot12isChangeableEv 0x0000007100844e90,O,000048,_ZN5uking2ai9PlayerSitC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100844ec0,O,000008,_ZN5uking2ai9PlayerSit5init_EPN4sead4HeapE 0x0000007100844ec8,W,000108,_ZN5uking2ai9PlayerSit6enter_EPN4ksys3act2ai15InlineParamPackE @@ -51708,7 +51708,7 @@ Address,Quality,Size,Name 0x00000071008450cc,O,000288,_ZNK5uking2ai9PlayerSit27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008451ec,O,000092,_ZNK5uking2ai9PlayerSit18getRuntimeTypeInfoEv 0x0000007100845248,O,000036,_ZN5uking2ai9PlayerSitD0Ev -0x000000710084526c,U,000008,_ZNK5uking2ai9PlayerSit12isChangeableEv +0x000000710084526c,O,000008,_ZNK5uking2ai9PlayerSit12isChangeableEv 0x0000007100845274,U,000060,AI_AI_PlayerSwim::ctor 0x00000071008452b0,O,000008,_ZN5uking2ai10PlayerSwim5init_EPN4sead4HeapE 0x00000071008452b8,U,000280,_ZNK5uking2ai10PlayerSwim10isFinishedEv @@ -53175,7 +53175,7 @@ Address,Quality,Size,Name 0x000000710089f254,O,000036,_ZN4ksys3act15ActorCaptureMgrD0Ev 0x000000710089f278,O,000216,_ZN4ksys3res12EntryFactoryINS0_12ActorCaptureEED2Ev 0x000000710089f350,O,000224,_ZN4ksys3res12EntryFactoryINS0_12ActorCaptureEED0Ev -0x000000710089f430,m,000132,_ZNK4ksys3res12EntryFactoryINS0_12ActorCaptureEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x000000710089f430,O,000132,_ZNK4ksys3res12EntryFactoryINS0_12ActorCaptureEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710089f4b4,O,000092,_ZNK4ksys3res12EntryFactoryINS0_12ActorCaptureEE18getRuntimeTypeInfoEv 0x000000710089f510,O,000156,_ZN4ksys3res12EntryFactoryINS0_12ActorCaptureEE12newResource_EPN4sead4HeapEi 0x000000710089f5ac,O,000008,_ZNK4ksys3res12EntryFactoryINS0_12ActorCaptureEE15getResourceSizeEv @@ -53274,7 +53274,7 @@ Address,Quality,Size,Name 0x00000071008a5b1c,U,000068, 0x00000071008a5b60,U,000008,DungeonPackMgr::startedLoadAndFailed 0x00000071008a5b68,O,000076,_ZN4ksys3res12EntryFactoryINS0_7ArchiveEED0Ev -0x00000071008a5bb4,m,000132,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071008a5bb4,O,000132,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071008a5c38,O,000092,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE18getRuntimeTypeInfoEv 0x00000071008a5c94,O,000152,_ZN4ksys3res12EntryFactoryINS0_7ArchiveEE12newResource_EPN4sead4HeapEi 0x00000071008a5d2c,O,000008,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE15getResourceSizeEv @@ -56618,7 +56618,7 @@ Address,Quality,Size,Name 0x0000007100974888,O,000828,_ZNK5uking2ui16PauseMenuDataMgr16countCookResultsERKN4sead14SafeStringBaseIcEEib 0x0000007100974bc4,O,000228,_ZNK5uking2ui16PauseMenuDataMgr22countItemsWithCategoryENS0_13PouchCategoryE 0x0000007100974ca8,O,000068,_ZNK5uking2ui16PauseMenuDataMgr18getCategoryForTypeENS0_13PouchItemTypeE -0x0000007100974cec,m,001556,_ZN5uking2ui16PauseMenuDataMgr16removeCookResultERKN4sead14SafeStringBaseIcEEib +0x0000007100974cec,O,001556,_ZN5uking2ui16PauseMenuDataMgr16removeCookResultERKN4sead14SafeStringBaseIcEEib 0x0000007100975300,O,000852,_ZN5uking2ui16PauseMenuDataMgr15switchEquipmentERKN4sead14SafeStringBaseIcEEPiPNS_3act18WeaponModifierInfoE 0x0000007100975654,O,000872,_ZN5uking2ui16PauseMenuDataMgr17initPouchForQuestEv 0x00000071009759bc,O,000408,_ZN5uking2ui16PauseMenuDataMgr20restorePouchForQuestEv @@ -56646,7 +56646,7 @@ Address,Quality,Size,Name 0x0000007100978c38,U,000488,PauseMenuDataMgr::x_24 0x0000007100978e20,U,000548,PauseMenuDataMgr::x_25 0x0000007100979044,U,000480,PauseMenuDataMgr::__auto8 -0x0000007100979224,m,000208,_ZNK5uking2ui16PauseMenuDataMgr19getEquippedItemNameENS0_13PouchItemTypeE +0x0000007100979224,O,000208,_ZNK5uking2ui16PauseMenuDataMgr19getEquippedItemNameENS0_13PouchItemTypeE 0x00000071009792f4,O,000212,_ZNK5uking2ui16PauseMenuDataMgr15getEquippedItemENS0_13PouchItemTypeE 0x00000071009793c8,O,000588,_ZNK5uking2ui16PauseMenuDataMgr12getItemValueERKN4sead14SafeStringBaseIcEE 0x0000007100979614,O,000496,_ZN5uking2ui16PauseMenuDataMgr11getFromShopERKN4sead14SafeStringBaseIcEEiPKNS_3act18WeaponModifierInfoE @@ -63725,9 +63725,9 @@ Address,Quality,Size,Name 0x0000007100b09aa8,O,000104,_ZN4sead14MathCalcCommonIfE8logTableEf 0x0000007100b09b10,O,000052,_ZN4sead11BitFlagUtil10countOnBitEj 0x0000007100b09b44,O,000072,_ZN4sead11BitFlagUtil15countRightOnBitEji -0x0000007100b09b8c,m,000116,_ZN4sead11BitFlagUtil18findOnBitFromRightEji +0x0000007100b09b8c,O,000116,_ZN4sead11BitFlagUtil18findOnBitFromRightEji 0x0000007100b09c00,O,000132,_ZN4sead11BitFlagUtil17countRightOnBit64Emi -0x0000007100b09c84,m,000172,_ZN4sead11BitFlagUtil20findOnBitFromRight64Emi +0x0000007100b09c84,O,000172,_ZN4sead11BitFlagUtil20findOnBitFromRight64Emi 0x0000007100b09d30,U,000004,nullsub_3216 0x0000007100b09d34,U,000004,nullsub_3217 0x0000007100b09d38,U,000004,nullsub_3218 @@ -63775,7 +63775,7 @@ Address,Quality,Size,Name 0x0000007100b0c524,U,000004,j__ZdlPv_599 0x0000007100b0c528,U,000004,sead::PrintFormatter::x 0x0000007100b0c52c,U,000004,j__ZdlPv_600 -0x0000007100b0c530,m,000060,_ZN4sead7MemUtil13checkFillTypeEPKvm +0x0000007100b0c530,O,000060,_ZN4sead7MemUtil13checkFillTypeEPKvm 0x0000007100b0c56c,M,001332,_ZN4sead18replaceStringImpl_IcEEiPT_PiiPKS1_iRKNS_14SafeStringBaseIS1_EES9_Pb 0x0000007100b0caa0,O,000012,_ZN4sead14SafeStringBaseIcEaSERKS1_ 0x0000007100b0caac,O,000012,_ZN4sead14SafeStringBaseIDsEaSERKS1_ @@ -63799,7 +63799,7 @@ Address,Quality,Size,Name 0x0000007100b0d6e0,O,000224,_ZN4sead17StringBuilderBaseIcE6copyAtEiPKci 0x0000007100b0d7c0,O,000212,_ZN4sead17StringBuilderBaseIcE19copyAtWithTerminateEiPKci 0x0000007100b0d894,O,000152,_ZN4sead17StringBuilderBaseIcE6appendEPKci -0x0000007100b0d92c,m,000132,_ZN4sead17StringBuilderBaseIcE6appendEci +0x0000007100b0d92c,O,000132,_ZN4sead17StringBuilderBaseIcE6appendEci 0x0000007100b0d9b0,U,000180, 0x0000007100b0da64,U,000004, 0x0000007100b0da68,U,001304, @@ -64131,7 +64131,7 @@ Address,Quality,Size,Name 0x0000007100b1c6dc,O,000140,_ZN4sead8Color4u84setfEffff 0x0000007100b1c768,O,000176,_ZN4sead8Color4u87setLerpERKS0_S2_f 0x0000007100b1c818,O,000260,_ZN4sead8Color4u818setGammaCollectionERKS0_f -0x0000007100b1c91c,m,000104,_ZN4seadmlERKNS_8Color4u8Ef +0x0000007100b1c91c,O,000104,_ZN4seadmlERKNS_8Color4u8Ef 0x0000007100b1c984,O,000092,_ZN4seadeqERKNS_8Color4u8ES2_ 0x0000007100b1c9e0,O,000128,_ZN4sead7Color4f7setLerpERKS0_S2_f 0x0000007100b1ca60,O,000100,_ZN4sead7Color4f18setGammaCollectionERKS0_f @@ -64292,23 +64292,23 @@ Address,Quality,Size,Name 0x0000007100b2170c,O,000048,_ZN4sead9HashCRC3214calcStringHashEPKc 0x0000007100b2173c,O,000248,_ZN4sead9HashCRC3225calcStringHashWithContextEPNS0_7ContextEPKc 0x0000007100b21834,O,000084,_ZN4sead6hostio12curveLinear_IfEET_fPKNS0_13CurveDataInfoEPKS2_ -0x0000007100b21888,m,000208,_ZN4sead6hostio12curveHermit_IfEET_fPKNS0_13CurveDataInfoEPKS2_ +0x0000007100b21888,O,000208,_ZN4sead6hostio12curveHermit_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21958,O,000052,_ZN4sead6hostio10curveStep_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b2198c,O,000060,_ZN4sead6hostio9curveSin_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b219c8,O,000060,_ZN4sead6hostio9curveCos_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21a04,O,000064,_ZN4sead6hostio13curveSinPow2_IfEET_fPKNS0_13CurveDataInfoEPKS2_ -0x0000007100b21a44,m,000196,_ZN4sead6hostio14curveLinear2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_ -0x0000007100b21b08,m,000344,_ZN4sead6hostio14curveHermit2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_ +0x0000007100b21a44,O,000196,_ZN4sead6hostio14curveLinear2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_ +0x0000007100b21b08,O,000344,_ZN4sead6hostio14curveHermit2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21c60,O,000152,_ZN4sead6hostio12curveStep2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21cf8,O,000008,_ZN4sead6hostio22curveNonuniformSpline_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21d00,U,000352,_ZN4sead6hostio20curveHermit2DSmooth_IfEET_fPKNS0_13CurveDataInfoEPKS2_ 0x0000007100b21e60,O,000084,_ZN4sead6hostio16curveLinearVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ -0x0000007100b21eb4,m,000208,_ZN4sead6hostio16curveHermitVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ +0x0000007100b21eb4,O,000208,_ZN4sead6hostio16curveHermitVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b21f84,O,000052,_ZN4sead6hostio14curveStepVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b21fb8,O,000076,_ZN4sead6hostio13curveSinVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b22004,O,000076,_ZN4sead6hostio13curveCosVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b22050,O,000080,_ZN4sead6hostio17curveSinPow2Vec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ -0x0000007100b220a0,m,000188,_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ +0x0000007100b220a0,O,000188,_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b2215c,O,000040,_ZN4sead6hostio18curveHermit2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b22184,O,000144,_ZN4sead6hostio16curveStep2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ 0x0000007100b22214,U,000348,_ZN4sead6hostio26curveNonuniformSplineVec2_IdEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_ @@ -65333,8 +65333,8 @@ Address,Quality,Size,Name 0x0000007100b53440,O,000072,_ZN3agl3utl14IParameterList6addObjEPNS0_13IParameterObjERKN4sead14SafeStringBaseIcEE 0x0000007100b53488,O,000032,_ZN3agl3utl14IParameterList9clearListEv 0x0000007100b534a8,O,000032,_ZN3agl3utl14IParameterList8clearObjEv -0x0000007100b534c8,m,000084,_ZN3agl3utl14IParameterList10removeListEPS1_ -0x0000007100b5351c,m,000084,_ZN3agl3utl14IParameterList9removeObjEPNS0_13IParameterObjE +0x0000007100b534c8,O,000084,_ZN3agl3utl14IParameterList10removeListEPS1_ +0x0000007100b5351c,O,000084,_ZN3agl3utl14IParameterList9removeObjEPNS0_13IParameterObjE 0x0000007100b53570,O,000024,_ZN3agl3utl14IParameterList21applyResParameterListENS0_16ResParameterListE 0x0000007100b53588,O,001152,_ZN3agl3utl14IParameterList22applyResParameterList_EbNS0_16ResParameterListES2_f 0x0000007100b53a08,O,000092,_ZN3agl3utl14IParameterList21applyResParameterListENS0_16ResParameterListES2_f @@ -65350,7 +65350,7 @@ Address,Quality,Size,Name 0x0000007100b53eb8,U,000532,_ZN3agl3utl13IParameterObj21applyResParameterObj_EbNS0_15ResParameterObjES2_fPNS0_14IParameterListE 0x0000007100b540cc,U,000164, 0x0000007100b54170,O,000164,_ZN3agl3utl13IParameterObj4copyERKS1_ -0x0000007100b54214,m,000232,_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f +0x0000007100b54214,O,000232,_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f 0x0000007100b542fc,U,000100, 0x0000007100b54360,U,000108, 0x0000007100b543cc,U,000136,_ZN3agl3utl14PrimitiveShape14createInstanceEPN4sead4HeapE @@ -68820,7 +68820,7 @@ Address,Quality,Size,Name 0x0000007100bf9d0c,O,000204,_ZN4gsys19IModelAccesssHandle6searchEPKNS_5ModelERKN4sead14SafeStringBaseIcEE 0x0000007100bf9dd8,O,000112,_ZN4gsys19IModelAccesssHandle6removeEv 0x0000007100bf9e48,O,000036,_ZN4gsys19IModelAccesssHandle6searchEv -0x0000007100bf9e6c,m,000080,_ZN4gsys15BoneAccessKeyExC1Ev +0x0000007100bf9e6c,O,000080,_ZN4gsys15BoneAccessKeyExC1Ev 0x0000007100bf9ebc,O,000136,_ZN4gsys15BoneAccessKeyExD1Ev 0x0000007100bf9f44,O,000124,_ZN4gsys15BoneAccessKeyExD0Ev 0x0000007100bf9fc0,U,000096,_ZN4gsys15BoneAccessKeyEx6searchEPKNS_5ModelERKNS_13BoneAccessKeyE @@ -70983,7 +70983,7 @@ Address,Quality,Size,Name 0x0000007100c846f8,O,000044,_ZN4evfl12MetaDataPack8AddFloatEPKcf 0x0000007100c84724,O,000040,_ZN4evfl12MetaDataPack12AddStringPtrEPKcS2_ 0x0000007100c8474c,O,000340,_ZNK4evfl12MetaDataPack10FindStringEPN3ore11TStringViewIcEERKS3_ -0x0000007100c848a0,m,000080,_ZN4evfl12MetaDataPack7Builder11CalcMemSizeEv +0x0000007100c848a0,O,000080,_ZN4evfl12MetaDataPack7Builder11CalcMemSizeEv 0x0000007100c848f0,O,000100,_ZN4evfl12MetaDataPack7Builder5BuildEPS0_N3ore6BufferE 0x0000007100c84954,O,000016,_ZN4evfl13ParamAccessorC1EPKN3ore11ResMetaDataE 0x0000007100c84964,O,000036,_ZN4evfl13ParamAccessorC1EPKNS_16FlowchartContextEi @@ -73944,7 +73944,7 @@ Address,Quality,Size,Name 0x0000007100d32a8c,O,000020,_ZN5uking6action18DummyTriggerActionD1Ev 0x0000007100d32aa0,O,000052,_ZN5uking6action18DummyTriggerActionD0Ev 0x0000007100d32ad4,O,000008,_ZN5uking6action18DummyTriggerAction5init_EPN4sead4HeapE -0x0000007100d32adc,U,000008,_ZN5uking6action18DummyTriggerAction8oneShot_Ev +0x0000007100d32adc,O,000008,_ZN5uking6action18DummyTriggerAction8oneShot_Ev 0x0000007100d32ae4,O,000004,_ZN5uking6action18DummyTriggerAction11loadParams_Ev 0x0000007100d32ae8,O,000288,_ZNK5uking6action18DummyTriggerAction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100d32c08,O,000092,_ZNK5uking6action18DummyTriggerAction18getRuntimeTypeInfoEv @@ -74358,7 +74358,7 @@ Address,Quality,Size,Name 0x0000007100d4db08,U,000428, 0x0000007100d4dcb4,O,000044,_ZNK4ksys3map6Object9getRotateEv 0x0000007100d4dce0,U,000360,PlacementObj::x_21 -0x0000007100d4de48,m,000124,_ZNK4ksys3map6Object29getTraversePosAndLoadDistanceEPN4sead7Vector3IfEEPf +0x0000007100d4de48,O,000124,_ZNK4ksys3map6Object29getTraversePosAndLoadDistanceEPN4sead7Vector3IfEEPf 0x0000007100d4dec4,O,000104,_ZNK4ksys3map6Object13getUniqueNameEPPKc 0x0000007100d4df2c,O,000028,_ZN4ksys3map6Object12setTranslateERKN4sead7Vector3IfEE 0x0000007100d4df48,U,000128,PlacementObj::x_22 @@ -74370,10 +74370,10 @@ Address,Quality,Size,Name 0x0000007100d4e1a0,O,000324,_ZN4ksys3map10ObjectLink14getTypeForNameERKN4sead14SafeStringBaseIcEE 0x0000007100d4e2e4,O,000020,_ZNK4ksys3map10ObjectLink14getObjectActorEv 0x0000007100d4e2f8,O,000024,_ZNK4ksys3map10ObjectLink25getObjectProcWithAccessorERNS_3act24ActorLinkConstDataAccessE -0x0000007100d4e310,m,000028,_ZN4ksys3map10ObjectLink14sub_7100D4E310ENS0_14MapLinkDefTypeE +0x0000007100d4e310,O,000028,_ZN4ksys3map10ObjectLink14sub_7100D4E310ENS0_14MapLinkDefTypeE 0x0000007100d4e32c,O,000024,_ZN4ksys3map10ObjectLink27isPlacementLODOrForSaleLinkENS0_14MapLinkDefTypeE 0x0000007100d4e344,O,000044,_ZN4ksys3map14ObjectLinkDataC1Ev -0x0000007100d4e370,m,000136,_ZN4ksys3map14ObjectLinkData12deleteArraysEv +0x0000007100d4e370,O,000136,_ZN4ksys3map14ObjectLinkData12deleteArraysEv 0x0000007100d4e3f8,U,000556,PlacementLinkData::allocLinks 0x0000007100d4e624,O,000212,_ZN4ksys3map14ObjectLinkData16allocLinksToSelfEiPN4sead4HeapE 0x0000007100d4e6f8,U,000292,_ZN4ksys3map14ObjectLinkData7releaseEPNS0_6ObjectEb @@ -74556,9 +74556,9 @@ Address,Quality,Size,Name 0x0000007100d5b138,O,000008,_ZNK4ksys3map9RailPoint15getPrevDistanceEv 0x0000007100d5b140,O,000008,_ZNK4ksys3map9RailPoint15getNextDistanceEv 0x0000007100d5b148,O,000196,_ZN4ksys3map9RailPoint5parseEPNS0_9MubinIterEPN4sead4HeapE -0x0000007100d5b20c,m,000052,_ZN4ksys3map4RailC1Ev -0x0000007100d5b240,m,000160,_ZN4ksys3map4RailD1Ev -0x0000007100d5b2e0,m,000156,_ZN4ksys3map4RailD0Ev +0x0000007100d5b20c,O,000052,_ZN4ksys3map4RailC1Ev +0x0000007100d5b240,O,000160,_ZN4ksys3map4RailD1Ev +0x0000007100d5b2e0,O,000156,_ZN4ksys3map4RailD0Ev 0x0000007100d5b37c,O,000380,_ZN4ksys3map4Rail4initEPNS0_9MubinIterEPN4sead4HeapE 0x0000007100d5b4f8,O,000008,_ZNK4ksys3map4Rail12getNumPointsEv 0x0000007100d5b500,O,000052,_ZNK4ksys3map4Rail8getPointEi @@ -74574,7 +74574,7 @@ Address,Quality,Size,Name 0x0000007100d5bb88,O,000012,_ZNK4ksys3map4Rail8isBezierEv 0x0000007100d5bb94,O,000008,_ZNK4ksys3map4Rail9getHashIdEv 0x0000007100d5bb9c,O,000008,_ZNK4ksys3map4Rail13getUniqueNameEv -0x0000007100d5bba4,m,000168,_ZN4ksys3map4Rail10allocPointEPN4sead4HeapE +0x0000007100d5bba4,O,000168,_ZN4ksys3map4Rail10allocPointEPN4sead4HeapE 0x0000007100d5bc4c,O,000348,_ZN4ksys3map4Rail5parseEPNS0_9MubinIterE 0x0000007100d5bda8,U,000004,j__ZdlPv_851 0x0000007100d5bdac,O,000228,_ZN4ksys3map14RailGuidePoint5parseEPNS0_9MubinIterEPN4sead4HeapE @@ -74586,8 +74586,8 @@ Address,Quality,Size,Name 0x0000007100d5c150,U,000096, 0x0000007100d5c1b0,U,000156, 0x0000007100d5c24c,U,000188, -0x0000007100d5c308,m,000076,_ZN4ksys3map20RailConnectablePointD1Ev -0x0000007100d5c354,m,000076,_ZN4ksys3map20RailConnectablePointD0Ev +0x0000007100d5c308,O,000076,_ZN4ksys3map20RailConnectablePointD1Ev +0x0000007100d5c354,O,000076,_ZN4ksys3map20RailConnectablePointD0Ev 0x0000007100d5c3a0,O,000008,_ZNK4ksys3map20RailConnectablePoint15getJunctionRailEv 0x0000007100d5c3a8,O,000008,_ZNK4ksys3map20RailConnectablePoint16getJunctionPointEv 0x0000007100d5c3b0,U,000428, @@ -74595,10 +74595,10 @@ Address,Quality,Size,Name 0x0000007100d5c620,U,000096, 0x0000007100d5c680,U,000156, 0x0000007100d5c71c,U,000192, -0x0000007100d5c7dc,m,000076,_ZN4ksys3map14RailRoutePointD0Ev +0x0000007100d5c7dc,O,000076,_ZN4ksys3map14RailRoutePointD0Ev 0x0000007100d5c828,O,000008,_ZNK4ksys3map14RailRoutePoint17getCheckPointNameEv 0x0000007100d5c830,O,000252,_ZN4ksys3map14RailRoutePoint5parseEPNS0_9MubinIterEPN4sead4HeapE -0x0000007100d5c92c,m,000116,_ZN4ksys3map9RailRouteC1Ev +0x0000007100d5c92c,O,000116,_ZN4ksys3map9RailRouteC1Ev 0x0000007100d5c9a0,O,000012,_ZNK4ksys3map9RailRoute15isRenderEnabledEv 0x0000007100d5c9ac,O,000012,_ZNK4ksys3map9RailRoute10isWalkableEv 0x0000007100d5c9b8,O,000012,_ZNK4ksys3map9RailRoute19isHorseTraceEnabledEv @@ -74606,7 +74606,7 @@ Address,Quality,Size,Name 0x0000007100d5c9cc,O,000032,_ZNK4ksys3map9RailRoute17getCheckPointNameEi 0x0000007100d5c9ec,U,000196, 0x0000007100d5cab0,U,000156, -0x0000007100d5cb4c,m,000384,_ZN4ksys3map9RailRoute5parseEPNS0_9MubinIterE +0x0000007100d5cb4c,O,000384,_ZN4ksys3map9RailRoute5parseEPNS0_9MubinIterE 0x0000007100d5cccc,O,000004,_ZN4ksys3map4Rail4x_38Ev 0x0000007100d5ccd0,O,000008,_ZN4ksys3map4Rail4x_18Ev 0x0000007100d5ccd8,O,000008,_ZN4ksys3map4Rail4x_20Ev @@ -76588,7 +76588,7 @@ Address,Quality,Size,Name 0x0000007100dd7f64,O,000148,_ZN4sead13DelegateEventIPN4ksys3gdt7Manager10ResetEventEED0Ev 0x0000007100dd7ff8,O,000084,_ZN4ksys3gdt7Manager14MethodTreeNodeD0Ev 0x0000007100dd804c,O,000076,_ZN4ksys3res12EntryFactoryINS0_8GameDataEED0Ev -0x0000007100dd8098,m,000132,_ZNK4ksys3res12EntryFactoryINS0_8GameDataEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007100dd8098,O,000132,_ZNK4ksys3res12EntryFactoryINS0_8GameDataEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100dd811c,O,000092,_ZNK4ksys3res12EntryFactoryINS0_8GameDataEE18getRuntimeTypeInfoEv 0x0000007100dd8178,O,000152,_ZN4ksys3res12EntryFactoryINS0_8GameDataEE12newResource_EPN4sead4HeapEi 0x0000007100dd8210,O,000008,_ZNK4ksys3res12EntryFactoryINS0_8GameDataEE15getResourceSizeEv @@ -77476,7 +77476,7 @@ Address,Quality,Size,Name 0x0000007100e12af8,O,000288,_ZNK5uking6action16CameraRumbleLoop27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100e12c18,O,000092,_ZNK5uking6action16CameraRumbleLoop18getRuntimeTypeInfoEv 0x0000007100e12c74,O,000052,_ZN5uking6action16CameraRumbleLoopD0Ev -0x0000007100e12ca8,U,000008,_ZN5uking6action16CameraRumbleLoop14hasPreDeleteCbEv +0x0000007100e12ca8,O,000008,_ZN5uking6action16CameraRumbleLoop14hasPreDeleteCbEv 0x0000007100e12cb0,O,000052,_ZN5uking6action16CameraRumbleStopC1ERKN4ksys3act2ai10ActionBase7InitArgE 0x0000007100e12ce4,U,000064,_ZN5uking6action16CameraRumbleStop8oneShot_Ev 0x0000007100e12d24,O,000064,_ZN5uking6action16CameraRumbleStop11loadParams_Ev @@ -77757,7 +77757,7 @@ Address,Quality,Size,Name 0x0000007100e1e338,O,000092,_ZNK5uking2ai15WeaponEquipedAI18getRuntimeTypeInfoEv 0x0000007100e1e394,W,000052,_ZN5uking2ai15WeaponEquipedAID1Ev 0x0000007100e1e3c8,W,000060,_ZN5uking2ai15WeaponEquipedAID0Ev -0x0000007100e1e404,U,000008,_ZNK5uking2ai15WeaponEquipedAI12isChangeableEv +0x0000007100e1e404,O,000008,_ZNK5uking2ai15WeaponEquipedAI12isChangeableEv 0x0000007100e1e40c,U,000124,AI_AI_WeaponRootAI::ctor 0x0000007100e1e488,O,000004,_ZN5uking2ai12WeaponRootAID1Ev 0x0000007100e1e48c,O,000036,_ZN5uking2ai12WeaponRootAID0Ev @@ -79005,7 +79005,7 @@ Address,Quality,Size,Name 0x0000007100e5cc1c,U,000692,_ZN5uking2ai24HorseLoopTargetAndWaitAI5calc_Ev 0x0000007100e5ced0,U,000152,uking::ai::HorseLoopTargetAndWaitAI::m34 0x0000007100e5cf68,W,000064,_ZN5uking2ai24HorseLoopTargetAndWaitAI6leave_Ev -0x0000007100e5cfa8,U,000008,_ZN5uking2ai24HorseLoopTargetAndWaitAI14handleMessage_ERKN4ksys7MessageE +0x0000007100e5cfa8,O,000008,_ZN5uking2ai24HorseLoopTargetAndWaitAI14handleMessage_ERKN4ksys7MessageE 0x0000007100e5cfb0,W,000136,_ZN5uking2ai24HorseLoopTargetAndWaitAI11loadParams_Ev 0x0000007100e5d038,O,000008,_ZNK5uking2ai24HorseLoopTargetAndWaitAI27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100e5d040,O,000092,_ZNK5uking2ai24HorseLoopTargetAndWaitAI18getRuntimeTypeInfoEv @@ -80731,7 +80731,7 @@ Address,Quality,Size,Name 0x0000007100edd54c,O,001160,_ZN4ksys3act16hasOneTagAtLeastEPNS0_5ActorERKN4sead14SafeStringBaseIcEE 0x0000007100edd9d4,O,000724,_ZN4ksys3act16hasOneTagAtLeastEPNS0_12BaseProcLinkERKN4sead14SafeStringBaseIcEE 0x0000007100eddca8,O,000688,_ZN4ksys3act16hasOneTagAtLeastERKNS0_20ActorConstDataAccessERKN4sead14SafeStringBaseIcEE -0x0000007100eddf58,m,000108,_ZN4ksys3act26shouldSkipSpawnWhenRainingEPNS_3map6ObjectE +0x0000007100eddf58,O,000108,_ZN4ksys3act26shouldSkipSpawnWhenRainingEPNS_3map6ObjectE 0x0000007100eddfc4,O,000148,_ZN4ksys3act29shouldSkipSpawnIfGodForestOffEPNS_3map6ObjectE 0x0000007100ede058,O,000256,_ZN4ksys3act29shouldSkipSpawnGodForestActorEPNS_3map6ObjectE 0x0000007100ede158,O,000188,_ZN4ksys3act20shouldSkipSpawnFairyEPNS_3map6ObjectE @@ -82333,7 +82333,7 @@ Address,Quality,Size,Name 0x0000007100f42504,U,000008, 0x0000007100f4250c,O,000068,_ZN4ksys3res12EntryFactoryINS0_9PlacementEED2Ev 0x0000007100f42550,O,000076,_ZN4ksys3res12EntryFactoryINS0_9PlacementEED0Ev -0x0000007100f4259c,m,000132,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007100f4259c,O,000132,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100f42620,O,000092,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE18getRuntimeTypeInfoEv 0x0000007100f4267c,O,000180,_ZN4ksys3res12EntryFactoryINS0_9PlacementEE12newResource_EPN4sead4HeapEi 0x0000007100f42730,O,000008,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE15getResourceSizeEv @@ -84288,7 +84288,7 @@ Address,Quality,Size,Name 0x0000007100fb2c94,O,000216,_ZN4ksys4phys10ContactMgr21clearCollisionEntriesEPNS0_13CollisionInfoE 0x0000007100fb2d6c,O,000136,_ZN4ksys4phys10ContactMgr34freeContactLayerCollisionInfoGroupEPNS0_30ContactLayerCollisionInfoGroupE 0x0000007100fb2df4,O,000312,_ZN4ksys4phys10ContactMgr21clearCollisionEntriesEPNS0_30ContactLayerCollisionInfoGroupE -0x0000007100fb2f2c,m,000120,_ZN4ksys4phys10ContactMgr18clearContactPointsEv +0x0000007100fb2f2c,O,000120,_ZN4ksys4phys10ContactMgr18clearContactPointsEv 0x0000007100fb2fa4,O,000152,_ZN4ksys4phys10ContactMgr27removeContactPointsWithBodyEPNS0_9RigidBodyE 0x0000007100fb303c,O,000380,_ZN4ksys4phys10ContactMgr30removeCollisionEntriesWithBodyEPNS0_9RigidBodyE 0x0000007100fb31b8,O,000204,_ZN4ksys4phys10ContactMgr28removeImpulseEntriesWithBodyEPNS0_9RigidBodyE @@ -84543,7 +84543,7 @@ Address,Quality,Size,Name 0x0000007100fc3438,O,000032,_ZNK4ksys4phys21QueryContactPointInfo8Iterator16getPointPositionEPN4sead7Vector3IfEENS0_16ContactPointInfo8Iterator5PointE 0x0000007100fc3458,O,000056,_ZNK4ksys4phys21QueryContactPointInfo8Iterator16getPointPositionENS0_16ContactPointInfo8Iterator5PointE 0x0000007100fc3490,M,000284,_ZN4ksys4phys7RayCastC1EPNS0_18SystemGroupHandlerENS0_9GroundHitE -0x0000007100fc35ac,m,000108,_ZN4ksys4phys7RayCast5resetEv +0x0000007100fc35ac,O,000108,_ZN4ksys4phys7RayCast5resetEv 0x0000007100fc3618,O,000020,_ZN4ksys4phys7RayCastD1Ev 0x0000007100fc362c,O,000052,_ZN4ksys4phys7RayCastD0Ev 0x0000007100fc3660,O,000068,_ZN4ksys4phys7RayCast15resetCastResultEv @@ -84771,7 +84771,7 @@ Address,Quality,Size,Name 0x0000007100fcb554,O,000140,_ZN4ksys4phys17StaticCompoundMgr17addStaticCompoundEPNS0_14StaticCompoundE 0x0000007100fcb5e0,O,000120,_ZN4ksys4phys17StaticCompoundMgr20removeStaticCompoundEPNS0_14StaticCompoundE 0x0000007100fcb658,O,000124,_ZN4ksys4phys17StaticCompoundMgr28resetExtraTransformsAndApplyEv -0x0000007100fcb6d4,m,000052,_ZNK4ksys4phys17StaticCompoundMgr12getBodyGroupEi +0x0000007100fcb6d4,O,000052,_ZNK4ksys4phys17StaticCompoundMgr12getBodyGroupEi 0x0000007100fcb708,O,000124,_ZN4ksys4phys17StaticCompoundMgr14processUpdatesEv 0x0000007100fcb784,O,000124,_ZN4ksys4phys17StaticCompoundMgr24recomputeTransformMatrixEv 0x0000007100fcb800,O,000212,_ZNK4ksys4phys17StaticCompoundMgr20getTransformedMatrixERKPNS0_28StaticCompoundRigidBodyGroupERKN4sead8Matrix34IfEE @@ -84821,7 +84821,7 @@ Address,Quality,Size,Name 0x0000007100fcd8f4,O,000024,_ZN4ksys4phys30ContactLayerCollisionInfoGroup4freeEPS1_ 0x0000007100fcd90c,O,000236,_ZN4ksys4phys30ContactLayerCollisionInfoGroup4initEPN4sead4HeapEi 0x0000007100fcd9f8,O,000056,_ZN4ksys4phys30ContactLayerCollisionInfoGroup8finalizeEv -0x0000007100fcda30,m,000144,_ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE +0x0000007100fcda30,O,000144,_ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE 0x0000007100fcdac0,O,000120,_ZN4ksys4phys30ContactLayerCollisionInfoGroup22ensureLayersAreTrackedEv 0x0000007100fcdb38,O,000224,_ZN4ksys4phys30ContactLayerCollisionInfoGroup23CollidingBodiesIteratorC1EPKS1_iNS2_7IsStartE 0x0000007100fcdc18,O,000020,_ZN4ksys4phys30ContactLayerCollisionInfoGroup23CollidingBodiesIteratorD1Ev @@ -84991,7 +84991,7 @@ Address,Quality,Size,Name 0x0000007100fd78b0,U,000072, 0x0000007100fd78f8,M,000280,_ZN4ksys3qst7Manager14sub_7100FD78F8Ev 0x0000007100fd7a10,O,000116,_ZNK4ksys3qst7Manager5auto4EPNS_3act5ActorE -0x0000007100fd7a84,m,000172,_ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE +0x0000007100fd7a84,O,000172,_ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE 0x0000007100fd7b30,O,000016,_ZN4ksys3qst7Manager14sub_7100FD7B30ERKN4sead14SafeStringBaseIcEES6_b 0x0000007100fd7b40,O,000624,_ZN4ksys3qst7Manager12setQuestStepERKN4sead14SafeStringBaseIcEES6_bbb 0x0000007100fd7db0,O,000020,_ZN4ksys3qst7Manager21setQuestStepFromEventERKN4sead14SafeStringBaseIcEES6_bb @@ -85022,7 +85022,7 @@ Address,Quality,Size,Name 0x0000007100fda78c,U,000140, 0x0000007100fda818,O,000068,_ZN4ksys3qst5Quest4x_11Ev 0x0000007100fda85c,U,000680,sinitQuestStrings2 -0x0000007100fdab04,m,000168,_ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE +0x0000007100fdab04,O,000168,_ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE 0x0000007100fdabac,U,000268, 0x0000007100fdacb8,U,000036, 0x0000007100fdacdc,U,000204, @@ -85035,7 +85035,7 @@ Address,Quality,Size,Name 0x0000007100fdb7a4,U,000248, 0x0000007100fdb89c,O,000168,_ZNK4ksys3qst4Step14sub_7100FDB89CEPNS_3act5ActorE 0x0000007100fdb944,O,000148,_ZN4ksys3qst4Step13initActorDataEjPN4sead22BufferedSafeStringBaseIcEE -0x0000007100fdb9d8,m,000168,_ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE +0x0000007100fdb9d8,O,000168,_ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE 0x0000007100fdba80,U,002084,ksys::qst::Step::init 0x0000007100fdc2a4,m,000324,_ZN4ksys3qst4Step14sub_7100FDC2A4EPN2al9ByamlIterE 0x0000007100fdc3e8,U,000244, @@ -85716,7 +85716,7 @@ Address,Quality,Size,Name 0x0000007100ff58ec,W,000052,_ZN5uking2ai14SpotBgmTriggerD0Ev 0x0000007100ff5920,O,000008,_ZN5uking2ai14SpotBgmTrigger5init_EPN4sead4HeapE 0x0000007100ff5928,W,000296,_ZN5uking2ai14SpotBgmTrigger6enter_EPN4ksys3act2ai15InlineParamPackE -0x0000007100ff5a50,U,000004,_ZN5uking2ai14SpotBgmTrigger5calc_Ev +0x0000007100ff5a50,O,000004,_ZN5uking2ai14SpotBgmTrigger5calc_Ev 0x0000007100ff5a54,O,000004,_ZN5uking2ai14SpotBgmTrigger6leave_Ev 0x0000007100ff5a58,O,000100,_ZN5uking2ai14SpotBgmTrigger11loadParams_Ev 0x0000007100ff5abc,O,000288,_ZNK5uking2ai14SpotBgmTrigger27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -88250,7 +88250,7 @@ Address,Quality,Size,Name 0x0000007101089dd0,O,000036,_ZN4ksys3res12ActorCapture9LightInfoD2Ev 0x0000007101089df4,O,000004,_ZN4ksys3res12ActorCapture9LightInfoD0Ev 0x0000007101089df8,O,000372,_ZN4ksys3res12ActorCapture33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE -0x0000007101089f6c,m,000100,_GLOBAL__sub_I_resResourceActorCapture.cpp +0x0000007101089f6c,O,000100,_GLOBAL__sub_I_resResourceActorCapture.cpp 0x0000007101089fd0,O,000100,_ZN4ksys3act13ActorTemplate18SingletonDisposer_D1Ev 0x000000710108a034,O,000108,_ZN4ksys3act13ActorTemplate18SingletonDisposer_D0Ev 0x000000710108a0a0,O,000148,_ZN4ksys3act13ActorTemplate14createInstanceEPN4sead4HeapE @@ -88439,13 +88439,13 @@ Address,Quality,Size,Name 0x0000007101093024,O,000104,_ZThn632_N4ksys3res13AttClientList3m7_Ev 0x000000710109308c,U,000128,ksys::res::AttClientList::x 0x000000710109310c,O,000008,_ZNK4ksys3res13AttClientList11isForceEditEv -0x0000007101093114,m,000008,_ZNK4ksys3res13AttClientList27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101093114,O,000008,_ZNK4ksys3res13AttClientList27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710109311c,O,000092,_ZNK4ksys3res13AttClientList18getRuntimeTypeInfoEv 0x0000007101093178,O,000008,_ZNK4ksys3res13AttClientList10needsParseEv -0x0000007101093180,m,000008,_ZThn632_NK4ksys3res13AttClientList27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101093180,O,000008,_ZThn632_NK4ksys3res13AttClientList27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007101093188,O,000092,_ZThn632_NK4ksys3res13AttClientList18getRuntimeTypeInfoEv 0x00000071010931e4,O,000008,_ZThn632_NK4ksys3res13AttClientList10needsParseEv -0x00000071010931ec,U,000372, +0x00000071010931ec,O,000372,_ZN4ksys3res13AttClientList33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007101093360,O,000308,_ZN4sead6BufferIN4ksys3res13AttClientList6ClientEE14tryAllocBufferEiPNS_4HeapEi 0x0000007101093494,O,000268,_ZN4ksys3res9AttClientD1Ev 0x00000071010935a0,O,000268,_ZThn632_N4ksys3res9AttClientD1Ev @@ -88462,10 +88462,10 @@ Address,Quality,Size,Name 0x0000007101094670,U,000248,ksys::res::AttClient::check 0x0000007101094768,U,000116,ksys::res::AttClient::checkM6 0x00000071010947dc,O,000364,_ZN4ksys3res9AttClient14appendPriorityEPN4sead22BufferedSafeStringBaseIcEE -0x0000007101094948,m,000008,_ZNK4ksys3res9AttClient27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101094948,O,000008,_ZNK4ksys3res9AttClient27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007101094950,O,000092,_ZNK4ksys3res9AttClient18getRuntimeTypeInfoEv 0x00000071010949ac,O,000008,_ZNK4ksys3res9AttClient10needsParseEv -0x00000071010949b4,m,000008,_ZThn632_NK4ksys3res9AttClient27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071010949b4,O,000008,_ZThn632_NK4ksys3res9AttClient27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071010949bc,O,000092,_ZThn632_NK4ksys3res9AttClient18getRuntimeTypeInfoEv 0x0000007101094a18,O,000008,_ZThn632_NK4ksys3res9AttClient10needsParseEv 0x0000007101094a20,O,000428,_ZN4ksys3act13AttActionType5text_Ei @@ -88473,7 +88473,7 @@ Address,Quality,Size,Name 0x0000007101094bd0,O,000240,_ZN4sead15FixedSafeStringILi318EEaSERKNS_14SafeStringBaseIcEE 0x0000007101094cc0,O,000004,_ZN4sead19FixedSafeStringBaseIcLi318EED0Ev 0x0000007101094cc4,O,000240,_ZN4sead19FixedSafeStringBaseIcLi318EEaSERKNS_14SafeStringBaseIcEE -0x0000007101094db4,U,000372,_ZN4ksys3res9AttClient33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101094db4,O,000372,_ZN4ksys3res9AttClient33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007101094f28,O,000132,_ZN4ksys3res6AttPosC1Ev 0x0000007101094fac,O,000360,_ZN4ksys3res6AttPos4initEPN3agl3utl13IParameterObjEPKcS7_S7_S7_ 0x0000007101095114,U,000396,res::AttPos::x @@ -91537,7 +91537,7 @@ Address,Quality,Size,Name 0x0000007101167c78,O,000328,_ZN4ksys7ParamIO18applyParameterListEPcS1_PN3agl3utl14IParameterListERKN4sead14SafeStringBaseIcEEPb 0x0000007101167dc0,O,000076,_ZN4ksys7ParamIO19applyResourceUpdateEPcS1_ 0x0000007101167e0c,O,000124,_ZNK4ksys7ParamIO9getStringERKN3agl3utl15ResParameterObjEPKcS7_Pv -0x0000007101167e88,m,000140,_ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv +0x0000007101167e88,O,000140,_ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv 0x0000007101167f14,O,000152,_ZN4ksys3act13ActorParamMgr18SingletonDisposer_D1Ev 0x0000007101167fac,O,000160,_ZN4ksys3act13ActorParamMgr18SingletonDisposer_D0Ev 0x000000710116804c,O,000136,_ZN4ksys3act13ActorParamMgr14createInstanceEPN4sead4HeapE @@ -91553,7 +91553,7 @@ Address,Quality,Size,Name 0x000000710116a560,O,000224,_ZN4ksys3act13ActorParamMgr14loadParamAsyncEPKcPNS_3res6HandleEPbPvj 0x000000710116a640,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res9ActorLinkEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x000000710116a864,O,000144,_ZN4ksys3act13ActorParamMgr22finishLoadingActorLinkEPNS0_10ActorParamEPv -0x000000710116a8f4,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9ActorLinkEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116a8f4,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9ActorLinkEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv 0x000000710116ac30,O,001852,_ZN4ksys3act13ActorParamMgr19loadParamAsyncStep2EPNS0_10ActorParamEPNS_3res6HandleEPvj 0x000000710116b36c,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res9ModelListEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x000000710116b590,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res4UMiiEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj @@ -91576,34 +91576,34 @@ Address,Quality,Size,Name 0x000000710116d9f4,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res13LifeConditionEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x000000710116dc18,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res8AnimInfoEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x000000710116de3c,O,000608,_ZN4ksys3act13ActorParamMgr18finishLoadingStep2EPNS0_10ActorParamEPv -0x000000710116e09c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9ModelListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116e3d8,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4UMiiEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116e714,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res6ASListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116ea50,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13AttClientListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116ed8c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res17RagdollConfigListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116f0c8,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AIProgramEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116f404,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res10GParamListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116f740,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res7PhysicsEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116fa7c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res8ChemicalEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710116fdb8,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res11DamageParamEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x00000071011700f4,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res18RagdollBlendWeightEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101170430,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AwarenessEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710117076c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4DropEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101170aa8,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4ShopEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101170de4,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res6RecipeEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101171120,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res3LodEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710117145c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res10AIScheduleEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101171798,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res11BoneControlEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101171ad4,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13LifeConditionEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101171e10,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res8AnimInfoEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116e09c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9ModelListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116e3d8,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4UMiiEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116e714,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res6ASListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116ea50,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13AttClientListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116ed8c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res17RagdollConfigListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116f0c8,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AIProgramEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116f404,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res10GParamListEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116f740,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res7PhysicsEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116fa7c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res8ChemicalEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710116fdb8,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res11DamageParamEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x00000071011700f4,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res18RagdollBlendWeightEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101170430,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AwarenessEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710117076c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4DropEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101170aa8,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res4ShopEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101170de4,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res6RecipeEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101171120,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res3LodEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710117145c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res10AIScheduleEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101171798,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res11BoneControlEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101171ad4,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13LifeConditionEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101171e10,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res8AnimInfoEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv 0x000000710117214c,O,000732,_ZN4ksys3act13ActorParamMgr17loadExtraResAsyncEPNS0_10ActorParamEPNS_3res6HandleEPvj 0x0000007101172428,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res2ASEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x000000710117264c,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res9AttClientEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x0000007101172870,O,000548,_ZN4ksys3act13ActorParamMgr13loadFileAsyncINS_3res13RagdollConfigEEEbPNS0_10ActorParamENS5_12ResourceTypeERKN4sead14SafeStringBaseIcEESC_SC_PNS3_6HandleEPvj 0x0000007101172a94,O,001664,_ZN4ksys3act13ActorParamMgr21finishLoadingExtraResEPNS0_10ActorParamEPv -0x0000007101173114,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res2ASEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x0000007101173450,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AttClientEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv -0x000000710117378c,m,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13RagdollConfigEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101173114,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res2ASEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x0000007101173450,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res9AttClientEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv +0x000000710117378c,O,000828,_ZN4ksys3act13ActorParamMgr19handleAsyncFileLoadINS_3res13RagdollConfigEEEPT_PNS0_10ActorParamEPiNS7_12ResourceTypeEPv 0x0000007101173ac8,O,001788,_ZN4ksys3act13ActorParamMgr14loadFilesStep2EPNS0_10ActorParamEPN4sead4HeapEPNS_3res6HandleEPvj 0x00000071011741c4,O,000052,_ZN4ksys3act13ActorParamMgr11unloadParamEPNS0_10ActorParamE 0x00000071011741f8,O,000420,_ZN4ksys3act13ActorParamMgr24prepareLoadFromActorPackEPN4sead22BufferedSafeStringBaseIcEEPNS_3res11LoadRequestEPvRKNS2_14SafeStringBaseIcEESD_SD_PNS6_6HandleEjSD_ @@ -92055,9 +92055,9 @@ Address,Quality,Size,Name 0x00000071011aa784,O,000020,_ZNK4ksys3res9AIProgram15getActionsOrAIsENS_3act2ai10ActionTypeE 0x00000071011aa798,O,000168,_ZNK4ksys3res9AIProgram13getSInstParamEPPKcRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE 0x00000071011aa840,O,000208,_ZNK4ksys3res9AIProgram13getSInstParamEPN4sead14SafeStringBaseIcEERKNS1_10DefinitionERKS4_ -0x00000071011aa910,m,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKiRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE -0x00000071011aa9ac,m,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKfRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE -0x00000071011aaa48,m,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKN4sead7Vector3IfEERKNS1_10DefinitionERKNS2_14SafeStringBaseIcEE +0x00000071011aa910,O,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKiRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE +0x00000071011aa9ac,O,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKfRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE +0x00000071011aaa48,O,000156,_ZNK4ksys3res9AIProgram13getSInstParamEPPKN4sead7Vector3IfEERKNS1_10DefinitionERKNS2_14SafeStringBaseIcEE 0x00000071011aaae4,O,000168,_ZNK4ksys3res9AIProgram13getSInstParamEPPKbRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE 0x00000071011aab8c,O,000008,_ZNK4ksys3res9AIProgram27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071011aab94,O,000092,_ZNK4ksys3res9AIProgram18getRuntimeTypeInfoEv @@ -92409,7 +92409,7 @@ Address,Quality,Size,Name 0x00000071011be88c,O,000532,_ZN4ksys3act11BaseProcMgr11getNextProcEPN4sead15CriticalSectionEPNS0_8BaseProcENS2_12TypedBitFlagINS1_10ProcFilterEiEE 0x00000071011beaa0,O,000464,_ZN4ksys3act11BaseProcMgr7getProcERKN4sead14SafeStringBaseIcEENS2_12TypedBitFlagINS1_10ProcFilterEiEE 0x00000071011bec70,O,000252,_ZN4ksys3act11BaseProcMgr7getProcERKjN4sead12TypedBitFlagINS1_10ProcFilterEiEE -0x00000071011bed6c,m,000140,_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_12TypedBitFlagINS1_10ProcFilterEiEE +0x00000071011bed6c,O,000140,_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_12TypedBitFlagINS1_10ProcFilterEiEE 0x00000071011bedf8,O,000812,_ZN4ksys3act11BaseProcMgr11forEachProcERKN4sead14SafeStringBaseIcEERNS2_10IDelegate1IPNS0_8BaseProcEEENS2_12TypedBitFlagINS1_10ProcFilterEiEE 0x00000071011bf124,O,000032,_ZNK4ksys3act11BaseProcMgr25areInitializerThreadsIdleEv 0x00000071011bf144,O,000008,_ZN4ksys3act11BaseProcMgr30waitForInitializerQueueToEmptyEv @@ -92485,7 +92485,7 @@ Address,Quality,Size,Name 0x00000071011c1960,O,000200,_ZN4ksys3VFR17ScopedDeltaSetterD1Ev 0x00000071011c1a28,O,000008,_ZNK4ksys3VFR19hasIntervalOverrideEv 0x00000071011c1a30,O,000008,_ZNK4ksys3VFR19getIntervalOverrideEv -0x00000071011c1a38,m,000044,_GLOBAL__sub_I_VFRValue.cpp +0x00000071011c1a38,O,000044,_GLOBAL__sub_I_VFRValue.cpp 0x00000071011c1a64,O,000012,_ZN4ksys8VFRValueC1Ev 0x00000071011c1a70,O,000028,_ZN4ksys8VFRValueC1ERKf 0x00000071011c1a8c,O,000140,_ZN4ksys8VFRValue11updateStatsEv @@ -93339,7 +93339,7 @@ Address,Quality,Size,Name 0x00000071011f754c,O,000008,_ZNK4ksys4util11ManagedTask6isIdleEv 0x00000071011f7554,O,000008,_ZN4ksys4util11ManagedTask6setMgrEPNS0_7TaskMgrE 0x00000071011f755c,O,000084,_ZN4ksys4util11ManagedTask12attachHandleEPNS0_17ManagedTaskHandleEPNS0_13TaskQueueBaseE -0x00000071011f75b0,m,000128,_ZN4ksys4util11ManagedTask12detachHandleEv +0x00000071011f75b0,O,000128,_ZN4ksys4util11ManagedTask12detachHandleEv 0x00000071011f7630,O,000204,_ZNK4ksys4util11ManagedTask27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071011f76fc,O,000092,_ZNK4ksys4util11ManagedTask18getRuntimeTypeInfoEv 0x00000071011f7758,O,000068,_ZN4ksys4util14GameTaskThreadC1ERKN4sead14SafeStringBaseIcEEPNS2_4HeapEiNS2_12MessageQueue9BlockTypeElii @@ -93356,9 +93356,9 @@ Address,Quality,Size,Name 0x00000071011f7a9c,O,000008,_ZN4ksys4util18TaskDelegateSetter11setDelegateEPN4sead11IDelegate1RIPvbEE 0x00000071011f7aa4,O,000120,_ZN4ksys4util4TaskC1EPN4sead4HeapE 0x00000071011f7b1c,O,000120,_ZN4ksys4util4TaskC1EPN4sead4HeapENS2_9IDisposer14HeapNullOptionE -0x00000071011f7b94,m,000132,_ZN4ksys4util4TaskD1Ev -0x00000071011f7c18,m,000112,_ZN4ksys4util4Task9finalize_Ev -0x00000071011f7c88,m,000140,_ZN4ksys4util4TaskD0Ev +0x00000071011f7b94,O,000132,_ZN4ksys4util4TaskD1Ev +0x00000071011f7c18,O,000112,_ZN4ksys4util4Task9finalize_Ev +0x00000071011f7c88,O,000140,_ZN4ksys4util4TaskD0Ev 0x00000071011f7d14,O,000036,_ZN4ksys4util4Task11setDelegateERKNS0_18TaskDelegateSetterE 0x00000071011f7d38,m,000544,_ZN4ksys4util4Task13submitRequestERNS0_11TaskRequestE 0x00000071011f7f58,O,000124,_ZNK4ksys4util4Task16canSubmitRequestEv @@ -93757,7 +93757,7 @@ Address,Quality,Size,Name 0x0000007101208378,O,000016,_ZNK4ksys3res15ResourceMgrTask23getOffsetReadFileDeviceEv 0x0000007101208388,O,000016,_ZN4ksys3res15ResourceMgrTask18getArchiveFileDev1Ev 0x0000007101208398,O,000016,_ZN4ksys3res15ResourceMgrTask14resetFlag20000Ev -0x00000071012083a8,m,000088,_ZN4ksys3res15ResourceMgrTask18controlField9c0d88Eb +0x00000071012083a8,O,000088,_ZN4ksys3res15ResourceMgrTask18controlField9c0d88Eb 0x0000007101208400,U,000044, 0x000000710120842c,O,000036,_ZN4ksys3res15ResourceMgrTask17setFlag2000Or5000Ei 0x0000007101208450,U,000960,res::ResourceMgrTask::setSomePropertiesOnArgForLoad @@ -93831,7 +93831,7 @@ Address,Quality,Size,Name 0x000000710120cbec,U,000004,j__ZdlPv_1240 0x000000710120cbf0,O,000004,_ZN4sead12AnyDelegate2IPNS_6ThreadElE11UnbindDummy6invokeES2_l 0x000000710120cbf4,O,000008,_ZNK4sead12AnyDelegate2IPNS_6ThreadElE11UnbindDummy9isNoDummyEv -0x000000710120cbfc,m,000036,_ZN4ksys3res7CounterD0Ev +0x000000710120cbfc,O,000036,_ZN4ksys3res7CounterD0Ev 0x000000710120cc20,O,000016,_ZN4ksys3res7Counter10doSetData_ERKNS0_11CounterBase4DataE 0x000000710120cc30,O,000024,_ZN4sead14Delegate1RFuncIPvbE6invokeES1_ 0x000000710120cc48,O,000076,_ZNK4sead14Delegate1RFuncIPvbE5cloneEPNS_4HeapE @@ -93861,7 +93861,7 @@ Address,Quality,Size,Name 0x000000710120dc38,O,000040,_ZN4ksys3res12ResourceUnit12attachHandleEPNS0_6HandleE 0x000000710120dc60,O,000008,_ZNK4ksys3res12ResourceUnit11getRefCountEv 0x000000710120dc68,O,000008,_ZNK4ksys3res12ResourceUnit9getStatusEv -0x000000710120dc70,m,000036,_ZN4ksys3res12ResourceUnit12updateStatusEv +0x000000710120dc70,O,000036,_ZN4ksys3res12ResourceUnit12updateStatusEv 0x000000710120dc94,O,000016,_ZNK4ksys3res12ResourceUnit16isTask1NotQueuedEv 0x000000710120dca4,O,000016,_ZNK4ksys3res12ResourceUnit9isStatus0Ev 0x000000710120dcb4,O,000080,_ZNK4ksys3res12ResourceUnit22isTask1ActiveOrStatus7Ev @@ -94637,7 +94637,7 @@ Address,Quality,Size,Name 0x000000710124af54,U,000252,FarActorMerge::x 0x000000710124b050,U,005784,Actor::makeField598 0x000000710124c6e8,m,018196,_ZN4ksys3act8LodStateC1EPN4sead4HeapENS2_7BitFlagIjEEPNS0_5ActorEif -0x0000007101250dfc,m,000112,_ZN4ksys3act8LodState9initFlagsEv +0x0000007101250dfc,O,000112,_ZN4ksys3act8LodState9initFlagsEv 0x0000007101250e6c,O,000040,_ZN4ksys3act8LodStateD1Ev 0x0000007101250e94,O,000068,_ZN4ksys3act8LodStateD0Ev 0x0000007101250ed8,U,000752, @@ -95127,7 +95127,7 @@ Address,Quality,Size,Name 0x0000007101275cf4,O,001364,_ZN4ksys3res4DemoC1Ev 0x0000007101276248,O,000356,_ZN4ksys3res12EntryFactoryINS0_4DemoEED2Ev 0x00000071012763ac,O,000364,_ZN4ksys3res12EntryFactoryINS0_4DemoEED0Ev -0x0000007101276518,m,000132,_ZNK4ksys3res12EntryFactoryINS0_4DemoEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101276518,O,000132,_ZNK4ksys3res12EntryFactoryINS0_4DemoEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710127659c,O,000092,_ZNK4ksys3res12EntryFactoryINS0_4DemoEE18getRuntimeTypeInfoEv 0x00000071012765f8,O,000152,_ZN4ksys3res12EntryFactoryINS0_4DemoEE12newResource_EPN4sead4HeapEi 0x0000007101276690,O,000008,_ZNK4ksys3res12EntryFactoryINS0_4DemoEE15getResourceSizeEv @@ -95889,13 +95889,13 @@ Address,Quality,Size,Name 0x00000071012ab2d8,O,000164,_ZN4ksys4phys17RagdollControllerD1Ev 0x00000071012ab37c,O,000036,_ZN4ksys4phys17RagdollControllerD0Ev 0x00000071012ab3a0,O,000832,_ZN4ksys4phys17RagdollController4initERKN4sead14SafeStringBaseIcEES6_PNS0_15RagdollInstanceEPNS2_4HeapE -0x00000071012ab6e0,m,000364,_ZN4ksys4phys17RagdollController13setBoneWeightEif -0x00000071012ab84c,m,000192,_ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi +0x00000071012ab6e0,O,000364,_ZN4ksys4phys17RagdollController13setBoneWeightEif +0x00000071012ab84c,O,000192,_ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi 0x00000071012ab90c,O,000060,_ZN4ksys4phys17RagdollController13setBoneWeightERKN4sead14SafeStringBaseIcEEf 0x00000071012ab948,O,000052,_ZN4ksys4phys17RagdollController5resetEv -0x00000071012ab97c,m,000344,_ZN4ksys4phys17RagdollController9setFactorEf +0x00000071012ab97c,O,000344,_ZN4ksys4phys17RagdollController9setFactorEf 0x00000071012abad4,O,000008,_ZN4ksys4phys17RagdollController16reinitControllerEv -0x00000071012abadc,m,000284,_ZN4ksys4phys17RagdollController16resetMultipliersEv +0x00000071012abadc,O,000284,_ZN4ksys4phys17RagdollController16resetMultipliersEv 0x00000071012abbf8,O,000928,_ZN4ksys4phys24RagdollControllerKeyList20RagdollControllerKeyC1Ev 0x00000071012abf98,O,000064,_ZN4ksys4phys24RagdollControllerKeyListC1Ev 0x00000071012abfd8,O,000212,_ZN4ksys4phys24RagdollControllerKeyListD1Ev @@ -100022,8 +100022,8 @@ Address,Quality,Size,Name 0x000000710136d614,O,000092,_ZNK4sead15SharcArchiveRes18getRuntimeTypeInfoEv 0x000000710136d670,O,000036,_ZN4sead15SZSDecompressor13getDecompSizeEPKv 0x000000710136d694,O,000036,_ZN4sead15SZSDecompressor18getDecompAlignmentEPKv -0x000000710136d6b8,m,000032,_ZN4sead15SZSDecompressor13DecompContextC1Ev -0x000000710136d6d8,m,000032,_ZN4sead15SZSDecompressor13DecompContext10initializeEPv +0x000000710136d6b8,O,000032,_ZN4sead15SZSDecompressor13DecompContextC1Ev +0x000000710136d6d8,O,000032,_ZN4sead15SZSDecompressor13DecompContext10initializeEPv 0x000000710136d6f8,M,000968,_ZN4sead15SZSDecompressor12streamDecompEPNS0_13DecompContextEPKvj 0x000000710136dac0,M,000152,_ZN4sead15SZSDecompressor6decompEPvjPKvj 0x000000710136db58,O,000048,_ZN4sead5EventC1Ev @@ -100047,7 +100047,7 @@ Address,Quality,Size,Name 0x000000710136e3e4,U,000240, 0x000000710136e4d4,U,000044, 0x000000710136e500,U,000244, -0x000000710136e5f4,m,000144,_ZN4sead8JobQueueC1Ev +0x000000710136e5f4,O,000144,_ZN4sead8JobQueueC1Ev 0x000000710136e684,M,000176,_ZN4sead11FixedSizeJQC1Ev 0x000000710136e734,O,000180,_ZN4sead11FixedSizeJQ10initializeEjPNS_4HeapE 0x000000710136e7e8,U,000048, diff --git a/lib/agl b/lib/agl index 5d902eca1..0df9ec2b6 160000 --- a/lib/agl +++ b/lib/agl @@ -1 +1 @@ -Subproject commit 5d902eca1ad3fb5ed341b8aaeb95b24ecf7e7cc9 +Subproject commit 0df9ec2b6f81a50cf7c22b962a57f06939b64b52 diff --git a/lib/gsys/include/gsys/gsysModelAccessKey.h b/lib/gsys/include/gsys/gsysModelAccessKey.h index 7c0569e9b..120813ebe 100644 --- a/lib/gsys/include/gsys/gsysModelAccessKey.h +++ b/lib/gsys/include/gsys/gsysModelAccessKey.h @@ -30,7 +30,11 @@ class IModelAccesssHandle { }; struct BoneAccessKey { - BoneAccessKey() { reset(); } +#ifdef MATCHING_HACK_NX_CLANG + BoneAccessKey() {} +#else + BoneAccessKey() = default; +#endif void reset() { model_unit_index = -1; @@ -48,8 +52,13 @@ struct BoneAccessKey { return !operator==(lhs, rhs); } - s16 model_unit_index{}; - s16 bone_index{}; +#ifdef MATCHING_HACK_NX_CLANG + s16 model_unit_index; + s16 bone_index; +#else + s16 model_unit_index = -1; + s16 bone_index = -1; +#endif }; class BoneAccessKeyEx : public IModelAccesssHandle { diff --git a/lib/gsys/src/gsys/gsysModelAccessKey.cpp b/lib/gsys/src/gsys/gsysModelAccessKey.cpp index 065aee05b..efed9274f 100644 --- a/lib/gsys/src/gsys/gsysModelAccessKey.cpp +++ b/lib/gsys/src/gsys/gsysModelAccessKey.cpp @@ -48,7 +48,40 @@ bool IModelAccesssHandle::search() { return searchImpl_(); } +#ifndef MATCHING_HACK_NX_CLANG BoneAccessKeyEx::BoneAccessKeyEx() = default; +#else +__asm__( +".text\n" +".global _ZN4gsys15BoneAccessKeyExC1Ev\n" +".type _ZN4gsys15BoneAccessKeyExC1Ev, %function\n" +"_ZN4gsys15BoneAccessKeyExC1Ev:\n" +" adrp x8, :got:_ZTVN4gsys19IModelAccesssHandleE\n" +" adrp x9, :got:_ZTVN4sead14SafeStringBaseIcEE\n" +" ldr x8, [x8, :got_lo12:_ZTVN4gsys19IModelAccesssHandleE]\n" +" ldr x9, [x9, :got_lo12:_ZTVN4sead14SafeStringBaseIcEE]\n" +" orr w10, wzr, #0xffff\n" +" strh w10, [x0, #0x32]\n" +" strh w10, [x0, #0x30]\n" +" adrp x10, :got:_ZN4sead14SafeStringBaseIcE12cEmptyStringE\n" +" ldr x10, [x10, :got_lo12:_ZN4sead14SafeStringBaseIcE12cEmptyStringE]\n" +" add x8, x8, #0x10\n" +" add x9, x9, #0x10\n" +" stp x8, x9, [x0]\n" +" ldr x8, [x10, #0x8]\n" +" stp xzr, xzr, [x0, #0x20]\n" +" adrp x9, :got:_ZTVN4gsys15BoneAccessKeyExE\n" +" ldr x9, [x9, :got_lo12:_ZTVN4gsys15BoneAccessKeyExE]\n" +" stp x8, xzr, [x0, #0x10]\n" +" add x8, x9, #0x10\n" +" str x8, [x0]\n" +" ret\n" +".size _ZN4gsys15BoneAccessKeyExC1Ev, . - _ZN4gsys15BoneAccessKeyExC1Ev\n" +".global _ZN4gsys15BoneAccessKeyExC2Ev\n" +".set _ZN4gsys15BoneAccessKeyExC2Ev, _ZN4gsys15BoneAccessKeyExC1Ev\n" +".size _ZN4gsys15BoneAccessKeyExC2Ev, . - _ZN4gsys15BoneAccessKeyExC1Ev\n" +); +#endif BoneAccessKeyEx::~BoneAccessKeyEx() { remove(); diff --git a/lib/sead b/lib/sead index 573f310aa..e56af2de6 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit 573f310aab9a87a4a7f8624a845b5288e3d73fce +Subproject commit e56af2de6a5ae7fc728aae6d8a58886986bc4de2 diff --git a/src/Game/AI/AI/aiAddBasicLinkOn.h b/src/Game/AI/AI/aiAddBasicLinkOn.h index 7466e33ff..5efa0aa96 100644 --- a/src/Game/AI/AI/aiAddBasicLinkOn.h +++ b/src/Game/AI/AI/aiAddBasicLinkOn.h @@ -16,6 +16,7 @@ class AddBasicLinkOn : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const bool* mOnlyOne_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiAddCarriedBase.h b/src/Game/AI/AI/aiAddCarriedBase.h index 8c11bac87..62be37b59 100644 --- a/src/Game/AI/AI/aiAddCarriedBase.h +++ b/src/Game/AI/AI/aiAddCarriedBase.h @@ -7,6 +7,7 @@ namespace uking::ai { class AddCarriedBase : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(AddCarriedBase, ksys::act::ai::Ai) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit AddCarriedBase(const InitArg& arg); ~AddCarriedBase() override; diff --git a/src/Game/AI/AI/aiAirOctaRoot.h b/src/Game/AI/AI/aiAirOctaRoot.h index ce0068ebe..f59470a9f 100644 --- a/src/Game/AI/AI/aiAirOctaRoot.h +++ b/src/Game/AI/AI/aiAirOctaRoot.h @@ -17,6 +17,7 @@ class AirOctaRoot : public Fork2AI { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 void* mAirOctaDataMgr_a{}; }; diff --git a/src/Game/AI/AI/aiAnimalRoamBase.h b/src/Game/AI/AI/aiAnimalRoamBase.h index e01c6d6f7..207472841 100644 --- a/src/Game/AI/AI/aiAnimalRoamBase.h +++ b/src/Game/AI/AI/aiAnimalRoamBase.h @@ -16,6 +16,7 @@ class AnimalRoamBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mSearchNextPathRadius_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiAppearNearTarget.h b/src/Game/AI/AI/aiAppearNearTarget.h index b846acb4e..2e0223435 100644 --- a/src/Game/AI/AI/aiAppearNearTarget.h +++ b/src/Game/AI/AI/aiAppearNearTarget.h @@ -7,6 +7,7 @@ namespace uking::ai { class AppearNearTarget : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(AppearNearTarget, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit AppearNearTarget(const InitArg& arg); ~AppearNearTarget() override; diff --git a/src/Game/AI/AI/aiAssassinBossBattle.h b/src/Game/AI/AI/aiAssassinBossBattle.h index 4132bfc19..28376c2c5 100644 --- a/src/Game/AI/AI/aiAssassinBossBattle.h +++ b/src/Game/AI/AI/aiAssassinBossBattle.h @@ -16,6 +16,7 @@ class AssassinBossBattle : public ksys::act::ai::Ai { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } // static_param at offset 0x38 const int* mRetFrmDmgAtkTimer_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h index 095cee9c9..bcc3dfda4 100644 --- a/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h +++ b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h @@ -8,6 +8,7 @@ namespace uking::ai { class AssassinBossEscapeFromTarget : public SimpleEscapeFromTarget { SEAD_RTTI_OVERRIDE(AssassinBossEscapeFromTarget, SimpleEscapeFromTarget) public: + bool isChangeable() const override { return false; } explicit AssassinBossEscapeFromTarget(const InitArg& arg); ~AssassinBossEscapeFromTarget() override; diff --git a/src/Game/AI/AI/aiAssassinRoot.h b/src/Game/AI/AI/aiAssassinRoot.h index af48fcf5f..5b0927cdc 100644 --- a/src/Game/AI/AI/aiAssassinRoot.h +++ b/src/Game/AI/AI/aiAssassinRoot.h @@ -8,6 +8,7 @@ namespace uking::ai { class AssassinRoot : public NPCRoot { SEAD_RTTI_OVERRIDE(AssassinRoot, NPCRoot) public: + bool hasPreDeleteCb() override { return true; } explicit AssassinRoot(const InitArg& arg); ~AssassinRoot() override; diff --git a/src/Game/AI/AI/aiAwarenessScale.h b/src/Game/AI/AI/aiAwarenessScale.h index d4c76b503..9c2ae1a72 100644 --- a/src/Game/AI/AI/aiAwarenessScale.h +++ b/src/Game/AI/AI/aiAwarenessScale.h @@ -16,6 +16,7 @@ class AwarenessScale : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mScale_s{}; }; diff --git a/src/Game/AI/AI/aiCannonBallRoot.h b/src/Game/AI/AI/aiCannonBallRoot.h index 7c177e458..3da02f45e 100644 --- a/src/Game/AI/AI/aiCannonBallRoot.h +++ b/src/Game/AI/AI/aiCannonBallRoot.h @@ -16,6 +16,7 @@ class CannonBallRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActDeadSelector.h b/src/Game/AI/AI/aiCapturedActDeadSelector.h index 09e4edd75..8e73a6553 100644 --- a/src/Game/AI/AI/aiCapturedActDeadSelector.h +++ b/src/Game/AI/AI/aiCapturedActDeadSelector.h @@ -16,6 +16,7 @@ class CapturedActDeadSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsPlayerPut_m{}; }; diff --git a/src/Game/AI/AI/aiCarryBox.h b/src/Game/AI/AI/aiCarryBox.h index 7baeacd77..866cba872 100644 --- a/src/Game/AI/AI/aiCarryBox.h +++ b/src/Game/AI/AI/aiCarryBox.h @@ -7,6 +7,7 @@ namespace uking::ai { class CarryBox : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(CarryBox, ksys::act::ai::Ai) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit CarryBox(const InitArg& arg); ~CarryBox() override; diff --git a/src/Game/AI/AI/aiChemicalExplode.h b/src/Game/AI/AI/aiChemicalExplode.h index 0550dbaae..5b1074af3 100644 --- a/src/Game/AI/AI/aiChemicalExplode.h +++ b/src/Game/AI/AI/aiChemicalExplode.h @@ -7,6 +7,7 @@ namespace uking::ai { class ChemicalExplode : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(ChemicalExplode, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit ChemicalExplode(const InitArg& arg); ~ChemicalExplode() override; diff --git a/src/Game/AI/AI/aiChuchuTypeSelect.h b/src/Game/AI/AI/aiChuchuTypeSelect.h index 4e2e4dc24..7c3d6475c 100644 --- a/src/Game/AI/AI/aiChuchuTypeSelect.h +++ b/src/Game/AI/AI/aiChuchuTypeSelect.h @@ -16,6 +16,7 @@ class ChuchuTypeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h index 57f194c14..63d2fb360 100644 --- a/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h +++ b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h @@ -16,6 +16,7 @@ class CliffDistanceSelectThreeAction : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mCheckDist_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiCountSelect.h b/src/Game/AI/AI/aiCountSelect.h index f4492fede..e379d2e6c 100644 --- a/src/Game/AI/AI/aiCountSelect.h +++ b/src/Game/AI/AI/aiCountSelect.h @@ -16,6 +16,7 @@ class CountSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mCounter_s{}; }; diff --git a/src/Game/AI/AI/aiCreateOnFaceSelect.h b/src/Game/AI/AI/aiCreateOnFaceSelect.h index d306dc432..fd3a83f2a 100644 --- a/src/Game/AI/AI/aiCreateOnFaceSelect.h +++ b/src/Game/AI/AI/aiCreateOnFaceSelect.h @@ -16,6 +16,7 @@ class CreateOnFaceSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsCreateOnFace_m{}; }; diff --git a/src/Game/AI/AI/aiDamageAttrSelect.h b/src/Game/AI/AI/aiDamageAttrSelect.h index 084bf8bb7..9219fc7e3 100644 --- a/src/Game/AI/AI/aiDamageAttrSelect.h +++ b/src/Game/AI/AI/aiDamageAttrSelect.h @@ -16,6 +16,7 @@ class DamageAttrSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mKeyAttribute_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiDamageTypeSelect.h b/src/Game/AI/AI/aiDamageTypeSelect.h index b588aed20..4a8f2f217 100644 --- a/src/Game/AI/AI/aiDamageTypeSelect.h +++ b/src/Game/AI/AI/aiDamageTypeSelect.h @@ -16,6 +16,7 @@ class DamageTypeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mDamageType_s{}; }; diff --git a/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h index 8b82f4ea6..ca19cad2b 100644 --- a/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h +++ b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h @@ -7,6 +7,8 @@ namespace uking::ai { class DgnObj_DLC_SliderBlock : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(DgnObj_DLC_SliderBlock, ksys::act::ai::Ai) public: + bool updateForPreDelete() override { return true; } + bool hasUpdateForPreDeleteCb() override { return true; } explicit DgnObj_DLC_SliderBlock(const InitArg& arg); ~DgnObj_DLC_SliderBlock() override; diff --git a/src/Game/AI/AI/aiDieSelect.h b/src/Game/AI/AI/aiDieSelect.h index 77be69817..4b0f1bb9a 100644 --- a/src/Game/AI/AI/aiDieSelect.h +++ b/src/Game/AI/AI/aiDieSelect.h @@ -7,6 +7,7 @@ namespace uking::ai { class DieSelect : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(DieSelect, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit DieSelect(const InitArg& arg); ~DieSelect() override; diff --git a/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h index 0898413a7..31c5c02bc 100644 --- a/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h +++ b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h @@ -16,6 +16,7 @@ class DoubtItemSubTargetSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonIceWaitRunel.h b/src/Game/AI/AI/aiDragonIceWaitRunel.h index e5094bb95..7198de705 100644 --- a/src/Game/AI/AI/aiDragonIceWaitRunel.h +++ b/src/Game/AI/AI/aiDragonIceWaitRunel.h @@ -16,6 +16,7 @@ class DragonIceWaitRunel : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h index fd2872244..9daa228df 100644 --- a/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h +++ b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h @@ -16,6 +16,7 @@ class EnemyChemicalPowerSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalSelect.h b/src/Game/AI/AI/aiEnemyChemicalSelect.h index 37e114a10..33c67f4fa 100644 --- a/src/Game/AI/AI/aiEnemyChemicalSelect.h +++ b/src/Game/AI/AI/aiEnemyChemicalSelect.h @@ -16,6 +16,7 @@ class EnemyChemicalSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const bool* mIsCheckActive_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiEnemyLifeSelect.h b/src/Game/AI/AI/aiEnemyLifeSelect.h index 4e8a02425..0c62132c9 100644 --- a/src/Game/AI/AI/aiEnemyLifeSelect.h +++ b/src/Game/AI/AI/aiEnemyLifeSelect.h @@ -16,6 +16,7 @@ class EnemyLifeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsWatchKeeping_m{}; }; diff --git a/src/Game/AI/AI/aiEnemyReturnSelect.h b/src/Game/AI/AI/aiEnemyReturnSelect.h index b8231419e..10ce36817 100644 --- a/src/Game/AI/AI/aiEnemyReturnSelect.h +++ b/src/Game/AI/AI/aiEnemyReturnSelect.h @@ -16,6 +16,7 @@ class EnemyReturnSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mNotReturnDist_s{}; // dynamic_param at offset 0x40 diff --git a/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h index 46f98880d..2c71c318e 100644 --- a/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h +++ b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h @@ -16,6 +16,7 @@ class EnemyVacuumBombSelectBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h index 2b5beba60..e2fef759f 100644 --- a/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h +++ b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h @@ -16,6 +16,7 @@ class EnemyVacuumWeaponTypeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 sead::SafeString mPartsKey_s{}; }; diff --git a/src/Game/AI/AI/aiEnterFromResetSelect.h b/src/Game/AI/AI/aiEnterFromResetSelect.h index ba7119736..0d556094b 100644 --- a/src/Game/AI/AI/aiEnterFromResetSelect.h +++ b/src/Game/AI/AI/aiEnterFromResetSelect.h @@ -16,6 +16,7 @@ class EnterFromResetSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeOrWaitSelect.h b/src/Game/AI/AI/aiEscapeOrWaitSelect.h index 49ae46f55..3d6b01015 100644 --- a/src/Game/AI/AI/aiEscapeOrWaitSelect.h +++ b/src/Game/AI/AI/aiEscapeOrWaitSelect.h @@ -16,6 +16,7 @@ class EscapeOrWaitSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mEscapeRange_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiEventTimeRoot.h b/src/Game/AI/AI/aiEventTimeRoot.h index f4fc226bc..fe9b335c1 100644 --- a/src/Game/AI/AI/aiEventTimeRoot.h +++ b/src/Game/AI/AI/aiEventTimeRoot.h @@ -16,6 +16,7 @@ class EventTimeRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mTimeLimit_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiFirstSelect.h b/src/Game/AI/AI/aiFirstSelect.h index 694cc3eca..5d892f4c2 100644 --- a/src/Game/AI/AI/aiFirstSelect.h +++ b/src/Game/AI/AI/aiFirstSelect.h @@ -16,6 +16,7 @@ class FirstSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const bool* mResetFromDemo_s{}; }; diff --git a/src/Game/AI/AI/aiForSaleOrNot.h b/src/Game/AI/AI/aiForSaleOrNot.h index acda70c65..48138a5c6 100644 --- a/src/Game/AI/AI/aiForSaleOrNot.h +++ b/src/Game/AI/AI/aiForSaleOrNot.h @@ -16,6 +16,7 @@ class ForSaleOrNot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h index 5e17aff66..76143dc3f 100644 --- a/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h +++ b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h @@ -16,6 +16,7 @@ class ForbidDoubleNoticeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h index f4881fc62..30082971f 100644 --- a/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h +++ b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h @@ -16,6 +16,7 @@ class ForestGiantClosestAttackSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mHipDropRate_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiForkBeastGanonRoot.h b/src/Game/AI/AI/aiForkBeastGanonRoot.h index aa14ec144..ec258efcd 100644 --- a/src/Game/AI/AI/aiForkBeastGanonRoot.h +++ b/src/Game/AI/AI/aiForkBeastGanonRoot.h @@ -17,6 +17,7 @@ class ForkBeastGanonRoot : public ForkAI { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiFromPopPoolDamageSelect.h b/src/Game/AI/AI/aiFromPopPoolDamageSelect.h index cefb978d3..d342ff1a7 100644 --- a/src/Game/AI/AI/aiFromPopPoolDamageSelect.h +++ b/src/Game/AI/AI/aiFromPopPoolDamageSelect.h @@ -16,6 +16,7 @@ class FromPopPoolDamageSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantRoamSelect.h b/src/Game/AI/AI/aiGiantRoamSelect.h index eb24beec5..5fd4112a3 100644 --- a/src/Game/AI/AI/aiGiantRoamSelect.h +++ b/src/Game/AI/AI/aiGiantRoamSelect.h @@ -16,6 +16,7 @@ class GiantRoamSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const int* mGiantRoamType_m{}; }; diff --git a/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h index 17023ffae..fade51759 100644 --- a/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h +++ b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h @@ -16,6 +16,7 @@ class GiantStoneShootAngrySelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mThrowableAngryRate_s{}; // dynamic_param at offset 0x40 diff --git a/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h index 3c9d3a94e..325c56ef2 100644 --- a/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h +++ b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h @@ -16,6 +16,7 @@ class GolemChemicalVanishedSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 void* mGolemChemicalController_a{}; }; diff --git a/src/Game/AI/AI/aiGolemSleepTypeSelect.h b/src/Game/AI/AI/aiGolemSleepTypeSelect.h index e4f369751..f28c00cf8 100644 --- a/src/Game/AI/AI/aiGolemSleepTypeSelect.h +++ b/src/Game/AI/AI/aiGolemSleepTypeSelect.h @@ -16,6 +16,7 @@ class GolemSleepTypeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 sead::SafeString mGolemSleepType_m{}; }; diff --git a/src/Game/AI/AI/aiGuardianAI.h b/src/Game/AI/AI/aiGuardianAI.h index d8c04b004..7248289eb 100644 --- a/src/Game/AI/AI/aiGuardianAI.h +++ b/src/Game/AI/AI/aiGuardianAI.h @@ -16,6 +16,7 @@ class GuardianAI : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeamAttackBase.h b/src/Game/AI/AI/aiGuardianBeamAttackBase.h index 7ee6ce45d..3f4a02dcb 100644 --- a/src/Game/AI/AI/aiGuardianBeamAttackBase.h +++ b/src/Game/AI/AI/aiGuardianBeamAttackBase.h @@ -16,6 +16,7 @@ class GuardianBeamAttackBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBlownOff.h b/src/Game/AI/AI/aiGuardianMiniBlownOff.h index 6f30d4c33..e2cf4d70b 100644 --- a/src/Game/AI/AI/aiGuardianMiniBlownOff.h +++ b/src/Game/AI/AI/aiGuardianMiniBlownOff.h @@ -16,6 +16,7 @@ class GuardianMiniBlownOff : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mRotNeckAngle_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h index b363a992d..75e86c7bd 100644 --- a/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h +++ b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h @@ -7,6 +7,7 @@ namespace uking::ai { class GuardianMiniChangeWeapon : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(GuardianMiniChangeWeapon, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit GuardianMiniChangeWeapon(const InitArg& arg); ~GuardianMiniChangeWeapon() override; diff --git a/src/Game/AI/AI/aiGuardianMiniFinalBattle.h b/src/Game/AI/AI/aiGuardianMiniFinalBattle.h index c7da22e57..c2144f5fb 100644 --- a/src/Game/AI/AI/aiGuardianMiniFinalBattle.h +++ b/src/Game/AI/AI/aiGuardianMiniFinalBattle.h @@ -8,6 +8,7 @@ namespace uking::ai { class GuardianMiniFinalBattle : public EnemyBattle { SEAD_RTTI_OVERRIDE(GuardianMiniFinalBattle, EnemyBattle) public: + bool isChangeable() const override { return false; } explicit GuardianMiniFinalBattle(const InitArg& arg); ~GuardianMiniFinalBattle() override; diff --git a/src/Game/AI/AI/aiHasPreActorSelect.h b/src/Game/AI/AI/aiHasPreActorSelect.h index 45c8be80e..4c4b22e7d 100644 --- a/src/Game/AI/AI/aiHasPreActorSelect.h +++ b/src/Game/AI/AI/aiHasPreActorSelect.h @@ -16,6 +16,7 @@ class HasPreActorSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiHomePosDistanceSelector.h b/src/Game/AI/AI/aiHomePosDistanceSelector.h index 34bfb4189..6291a436e 100644 --- a/src/Game/AI/AI/aiHomePosDistanceSelector.h +++ b/src/Game/AI/AI/aiHomePosDistanceSelector.h @@ -16,6 +16,7 @@ class HomePosDistanceSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mBoundaryDistance_s{}; }; diff --git a/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h index bb2cd1e2e..b56cceb27 100644 --- a/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h +++ b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h @@ -17,6 +17,7 @@ class HorseLoopTargetAndWaitAI : public HorseLoopTarget { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } // static_param at offset 0x170 const float* mChangeWaitRate_s{}; // static_param at offset 0x178 diff --git a/src/Game/AI/AI/aiHorseReins.h b/src/Game/AI/AI/aiHorseReins.h index 2817ed8b4..50805224b 100644 --- a/src/Game/AI/AI/aiHorseReins.h +++ b/src/Game/AI/AI/aiHorseReins.h @@ -13,6 +13,7 @@ class HorseReins : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideDamagedSelector.h b/src/Game/AI/AI/aiHorseRideDamagedSelector.h index 4fc8c5a47..cdf010b59 100644 --- a/src/Game/AI/AI/aiHorseRideDamagedSelector.h +++ b/src/Game/AI/AI/aiHorseRideDamagedSelector.h @@ -16,6 +16,7 @@ class HorseRideDamagedSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiIAIAttack.h b/src/Game/AI/AI/aiIAIAttack.h index bcd556368..72cb9b5bd 100644 --- a/src/Game/AI/AI/aiIAIAttack.h +++ b/src/Game/AI/AI/aiIAIAttack.h @@ -7,6 +7,7 @@ namespace uking::ai { class IAIAttack : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(IAIAttack, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit IAIAttack(const InitArg& arg); ~IAIAttack() override; diff --git a/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h index 3a20504e1..e3dfe9cf9 100644 --- a/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h +++ b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h @@ -16,6 +16,7 @@ class InForceEnemyLostAreaSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiInTerritorySelector.h b/src/Game/AI/AI/aiInTerritorySelector.h index b84817477..301d35a17 100644 --- a/src/Game/AI/AI/aiInTerritorySelector.h +++ b/src/Game/AI/AI/aiInTerritorySelector.h @@ -15,6 +15,7 @@ class InTerritorySelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mTerritoryArea_s{}; }; diff --git a/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h index 818a11749..3ccc73d83 100644 --- a/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h +++ b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h @@ -16,6 +16,7 @@ class InitFromInCarryBoxSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const bool* mIsResetInCarryBoxFlag_s{}; // aitree_variable at offset 0x40 diff --git a/src/Game/AI/AI/aiKeeseHangOnCeil.h b/src/Game/AI/AI/aiKeeseHangOnCeil.h index 5cd174f3a..cce5c2329 100644 --- a/src/Game/AI/AI/aiKeeseHangOnCeil.h +++ b/src/Game/AI/AI/aiKeeseHangOnCeil.h @@ -7,6 +7,7 @@ namespace uking::ai { class KeeseHangOnCeil : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(KeeseHangOnCeil, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit KeeseHangOnCeil(const InitArg& arg); ~KeeseHangOnCeil() override; diff --git a/src/Game/AI/AI/aiKokkoAngryTargetSelect.h b/src/Game/AI/AI/aiKokkoAngryTargetSelect.h index c512d1e02..0e0edf41d 100644 --- a/src/Game/AI/AI/aiKokkoAngryTargetSelect.h +++ b/src/Game/AI/AI/aiKokkoAngryTargetSelect.h @@ -16,6 +16,7 @@ class KokkoAngryTargetSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h index da70cf17e..d1ea5e774 100644 --- a/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h +++ b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h @@ -7,6 +7,7 @@ namespace uking::ai { class LandHumEnemyThrowWeapon : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LandHumEnemyThrowWeapon, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit LandHumEnemyThrowWeapon(const InitArg& arg); ~LandHumEnemyThrowWeapon() override; diff --git a/src/Game/AI/AI/aiLastAttackerSelect.h b/src/Game/AI/AI/aiLastAttackerSelect.h index 8f6be9f06..acf047932 100644 --- a/src/Game/AI/AI/aiLastAttackerSelect.h +++ b/src/Game/AI/AI/aiLastAttackerSelect.h @@ -16,6 +16,7 @@ class LastAttackerSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h index d85ff375f..388399bcf 100644 --- a/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h +++ b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h @@ -16,6 +16,7 @@ class LastAttackerSpecialActionSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const bool* mIsAngerActorSpecial_s{}; }; diff --git a/src/Game/AI/AI/aiLastBossNormalWarpRoot.h b/src/Game/AI/AI/aiLastBossNormalWarpRoot.h index 062f704f8..2ecf42ea6 100644 --- a/src/Game/AI/AI/aiLastBossNormalWarpRoot.h +++ b/src/Game/AI/AI/aiLastBossNormalWarpRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class LastBossNormalWarpRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LastBossNormalWarpRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit LastBossNormalWarpRoot(const InitArg& arg); ~LastBossNormalWarpRoot() override; diff --git a/src/Game/AI/AI/aiLastBossRoot.h b/src/Game/AI/AI/aiLastBossRoot.h index 56add8e9e..c6dd82482 100644 --- a/src/Game/AI/AI/aiLastBossRoot.h +++ b/src/Game/AI/AI/aiLastBossRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class LastBossRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LastBossRoot, ksys::act::ai::Ai) public: + bool hasPreDeleteCb() override { return true; } explicit LastBossRoot(const InitArg& arg); ~LastBossRoot() override; diff --git a/src/Game/AI/AI/aiLumberjackFallenTree.h b/src/Game/AI/AI/aiLumberjackFallenTree.h index fd0304136..072bc8cfa 100644 --- a/src/Game/AI/AI/aiLumberjackFallenTree.h +++ b/src/Game/AI/AI/aiLumberjackFallenTree.h @@ -7,6 +7,7 @@ namespace uking::ai { class LumberjackFallenTree : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LumberjackFallenTree, ksys::act::ai::Ai) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit LumberjackFallenTree(const InitArg& arg); ~LumberjackFallenTree() override; diff --git a/src/Game/AI/AI/aiLumberjackTree.h b/src/Game/AI/AI/aiLumberjackTree.h index f2812b040..5983fc51a 100644 --- a/src/Game/AI/AI/aiLumberjackTree.h +++ b/src/Game/AI/AI/aiLumberjackTree.h @@ -7,6 +7,7 @@ namespace uking::ai { class LumberjackTree : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LumberjackTree, ksys::act::ai::Ai) public: + bool hasPreDeleteCb() override { return true; } explicit LumberjackTree(const InitArg& arg); ~LumberjackTree() override; diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h index 8eca70fc5..db84cbb76 100644 --- a/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h +++ b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h @@ -16,6 +16,7 @@ class LynelArrowAttackSelectBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 int* mLynelAIFlags_a{}; }; diff --git a/src/Game/AI/AI/aiLynelBackStepFromTarget.h b/src/Game/AI/AI/aiLynelBackStepFromTarget.h index a405a5def..71300239d 100644 --- a/src/Game/AI/AI/aiLynelBackStepFromTarget.h +++ b/src/Game/AI/AI/aiLynelBackStepFromTarget.h @@ -16,6 +16,7 @@ class LynelBackStepFromTarget : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mMoveDistMin_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiLynelTackleMove.h b/src/Game/AI/AI/aiLynelTackleMove.h index 81ef6343b..f808490fc 100644 --- a/src/Game/AI/AI/aiLynelTackleMove.h +++ b/src/Game/AI/AI/aiLynelTackleMove.h @@ -7,6 +7,7 @@ namespace uking::ai { class LynelTackleMove : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(LynelTackleMove, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit LynelTackleMove(const InitArg& arg); ~LynelTackleMove() override; diff --git a/src/Game/AI/AI/aiMainFieldDungeonSelect.h b/src/Game/AI/AI/aiMainFieldDungeonSelect.h index a5ca1fa6b..01ccc09a5 100644 --- a/src/Game/AI/AI/aiMainFieldDungeonSelect.h +++ b/src/Game/AI/AI/aiMainFieldDungeonSelect.h @@ -16,6 +16,7 @@ class MainFieldDungeonSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h index 9e1b54f5f..8e9fe49a6 100644 --- a/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h +++ b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h @@ -16,6 +16,7 @@ class MasquaradeSubTargetSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // dynamic_param at offset 0x38 ksys::act::BaseProcLink* mTargetActor_d{}; }; diff --git a/src/Game/AI/AI/aiMergedDungeonPartsRoot.h b/src/Game/AI/AI/aiMergedDungeonPartsRoot.h index a7a1581c7..ae0b6f7d7 100644 --- a/src/Game/AI/AI/aiMergedDungeonPartsRoot.h +++ b/src/Game/AI/AI/aiMergedDungeonPartsRoot.h @@ -16,6 +16,7 @@ class MergedDungeonPartsRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const sead::Vector3f* mTransFieldBodyGroup00_m{}; // map_unit_param at offset 0x40 diff --git a/src/Game/AI/AI/aiMimicFlagSelect.h b/src/Game/AI/AI/aiMimicFlagSelect.h index c58ac318c..53be763de 100644 --- a/src/Game/AI/AI/aiMimicFlagSelect.h +++ b/src/Game/AI/AI/aiMimicFlagSelect.h @@ -16,6 +16,7 @@ class MimicFlagSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsMimicry_m{}; }; diff --git a/src/Game/AI/AI/aiMoonAI.h b/src/Game/AI/AI/aiMoonAI.h index 607069ba4..94944caf9 100644 --- a/src/Game/AI/AI/aiMoonAI.h +++ b/src/Game/AI/AI/aiMoonAI.h @@ -15,6 +15,7 @@ class MoonAI : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCClerkRoot.h b/src/Game/AI/AI/aiNPCClerkRoot.h index e73133ec0..f9a59ac49 100644 --- a/src/Game/AI/AI/aiNPCClerkRoot.h +++ b/src/Game/AI/AI/aiNPCClerkRoot.h @@ -8,6 +8,7 @@ namespace uking::ai { class NPCClerkRoot : public NPCRoot { SEAD_RTTI_OVERRIDE(NPCClerkRoot, NPCRoot) public: + bool hasPreDeleteCb() override { return true; } explicit NPCClerkRoot(const InitArg& arg); ~NPCClerkRoot() override; diff --git a/src/Game/AI/AI/aiNPCHorseRide.h b/src/Game/AI/AI/aiNPCHorseRide.h index af236b97c..d659bb4c3 100644 --- a/src/Game/AI/AI/aiNPCHorseRide.h +++ b/src/Game/AI/AI/aiNPCHorseRide.h @@ -8,6 +8,7 @@ namespace uking::ai { class NPCHorseRide : public NonPlayerHorseRide { SEAD_RTTI_OVERRIDE(NPCHorseRide, NonPlayerHorseRide) public: + bool hasPreDeleteCb() override { return true; } explicit NPCHorseRide(const InitArg& arg); ~NPCHorseRide() override; diff --git a/src/Game/AI/AI/aiNPCMamonoShopRoot.h b/src/Game/AI/AI/aiNPCMamonoShopRoot.h index debe25918..f1a4736b8 100644 --- a/src/Game/AI/AI/aiNPCMamonoShopRoot.h +++ b/src/Game/AI/AI/aiNPCMamonoShopRoot.h @@ -8,6 +8,7 @@ namespace uking::ai { class NPCMamonoShopRoot : public NPCRoot { SEAD_RTTI_OVERRIDE(NPCMamonoShopRoot, NPCRoot) public: + bool hasPreDeleteCb() override { return true; } explicit NPCMamonoShopRoot(const InitArg& arg); ~NPCMamonoShopRoot() override; diff --git a/src/Game/AI/AI/aiNPCRoot.h b/src/Game/AI/AI/aiNPCRoot.h index 5f8bcff2b..74192e6c6 100644 --- a/src/Game/AI/AI/aiNPCRoot.h +++ b/src/Game/AI/AI/aiNPCRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class NPCRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(NPCRoot, ksys::act::ai::Ai) public: + bool hasPreDeleteCb() override { return true; } explicit NPCRoot(const InitArg& arg); ~NPCRoot() override; diff --git a/src/Game/AI/AI/aiNPCTravel.h b/src/Game/AI/AI/aiNPCTravel.h index 063ac5d9b..6e0f6fd9f 100644 --- a/src/Game/AI/AI/aiNPCTravel.h +++ b/src/Game/AI/AI/aiNPCTravel.h @@ -8,6 +8,7 @@ namespace uking::ai { class NPCTravel : public NPCTravelBase { SEAD_RTTI_OVERRIDE(NPCTravel, NPCTravelBase) public: + bool hasPreDeleteCb() override { return true; } explicit NPCTravel(const InitArg& arg); ~NPCTravel() override; diff --git a/src/Game/AI/AI/aiNPCTravelerRoot.h b/src/Game/AI/AI/aiNPCTravelerRoot.h index 9a567fc59..b9a34609d 100644 --- a/src/Game/AI/AI/aiNPCTravelerRoot.h +++ b/src/Game/AI/AI/aiNPCTravelerRoot.h @@ -8,6 +8,7 @@ namespace uking::ai { class NPCTravelerRoot : public NPCRoot { SEAD_RTTI_OVERRIDE(NPCTravelerRoot, NPCRoot) public: + bool hasPreDeleteCb() override { return true; } explicit NPCTravelerRoot(const InitArg& arg); ~NPCTravelerRoot() override; diff --git a/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h index 0d53b69da..aeb6fe447 100644 --- a/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h +++ b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h @@ -16,6 +16,7 @@ class NearCreateAppearTypeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const int* mNearCreateAppearType_m{}; }; diff --git a/src/Game/AI/AI/aiNearCreateSelect.h b/src/Game/AI/AI/aiNearCreateSelect.h index f27431d46..ca71935aa 100644 --- a/src/Game/AI/AI/aiNearCreateSelect.h +++ b/src/Game/AI/AI/aiNearCreateSelect.h @@ -16,6 +16,7 @@ class NearCreateSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsNearCreate_m{}; }; diff --git a/src/Game/AI/AI/aiNpcDemoRoot.h b/src/Game/AI/AI/aiNpcDemoRoot.h index 67aa2c615..4c83f8a57 100644 --- a/src/Game/AI/AI/aiNpcDemoRoot.h +++ b/src/Game/AI/AI/aiNpcDemoRoot.h @@ -16,6 +16,7 @@ class NpcDemoRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockEscape.h b/src/Game/AI/AI/aiOctarockEscape.h index 97d076a71..a3d5c926e 100644 --- a/src/Game/AI/AI/aiOctarockEscape.h +++ b/src/Game/AI/AI/aiOctarockEscape.h @@ -7,6 +7,7 @@ namespace uking::ai { class OctarockEscape : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(OctarockEscape, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit OctarockEscape(const InitArg& arg); ~OctarockEscape() override; diff --git a/src/Game/AI/AI/aiOnEnterEventModeSelect.h b/src/Game/AI/AI/aiOnEnterEventModeSelect.h index bbbfef0a7..d9cdd6333 100644 --- a/src/Game/AI/AI/aiOnEnterEventModeSelect.h +++ b/src/Game/AI/AI/aiOnEnterEventModeSelect.h @@ -16,6 +16,7 @@ class OnEnterEventModeSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnNavFaceSelect.h b/src/Game/AI/AI/aiOnNavFaceSelect.h index b3da7438d..eb143bc70 100644 --- a/src/Game/AI/AI/aiOnNavFaceSelect.h +++ b/src/Game/AI/AI/aiOnNavFaceSelect.h @@ -16,6 +16,7 @@ class OnNavFaceSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnRagdollSelect.h b/src/Game/AI/AI/aiOnRagdollSelect.h index 082c146a5..b1f459ae7 100644 --- a/src/Game/AI/AI/aiOnRagdollSelect.h +++ b/src/Game/AI/AI/aiOnRagdollSelect.h @@ -16,6 +16,7 @@ class OnRagdollSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPillarCrack.h b/src/Game/AI/AI/aiPillarCrack.h index 69d572a92..628b2ddb6 100644 --- a/src/Game/AI/AI/aiPillarCrack.h +++ b/src/Game/AI/AI/aiPillarCrack.h @@ -16,6 +16,7 @@ class PillarCrack : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerBarrierBlow.h b/src/Game/AI/AI/aiPlayerBarrierBlow.h index 873c467a5..e11982146 100644 --- a/src/Game/AI/AI/aiPlayerBarrierBlow.h +++ b/src/Game/AI/AI/aiPlayerBarrierBlow.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerBarrierBlow : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerBarrierBlow, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PlayerBarrierBlow(const InitArg& arg); ~PlayerBarrierBlow() override; diff --git a/src/Game/AI/AI/aiPlayerBeetle.h b/src/Game/AI/AI/aiPlayerBeetle.h index 639ce3cdc..64dcea762 100644 --- a/src/Game/AI/AI/aiPlayerBeetle.h +++ b/src/Game/AI/AI/aiPlayerBeetle.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerBeetle : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerBeetle, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PlayerBeetle(const InitArg& arg); bool init_(sead::Heap* heap) override; diff --git a/src/Game/AI/AI/aiPlayerDemoRoot.h b/src/Game/AI/AI/aiPlayerDemoRoot.h index ad45bda02..5d2f806e9 100644 --- a/src/Game/AI/AI/aiPlayerDemoRoot.h +++ b/src/Game/AI/AI/aiPlayerDemoRoot.h @@ -16,6 +16,7 @@ class PlayerDemoRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerItem.h b/src/Game/AI/AI/aiPlayerItem.h index c4d3e752c..f9362ea2b 100644 --- a/src/Game/AI/AI/aiPlayerItem.h +++ b/src/Game/AI/AI/aiPlayerItem.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerItem : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerItem, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PlayerItem(const InitArg& arg); bool init_(sead::Heap* heap) override; diff --git a/src/Game/AI/AI/aiPlayerNormal.h b/src/Game/AI/AI/aiPlayerNormal.h index 707d94cbe..cc7b7318b 100644 --- a/src/Game/AI/AI/aiPlayerNormal.h +++ b/src/Game/AI/AI/aiPlayerNormal.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerNormal : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerNormal, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit PlayerNormal(const InitArg& arg); ~PlayerNormal() override; diff --git a/src/Game/AI/AI/aiPlayerRoot.h b/src/Game/AI/AI/aiPlayerRoot.h index c2343061f..37b5ab68d 100644 --- a/src/Game/AI/AI/aiPlayerRoot.h +++ b/src/Game/AI/AI/aiPlayerRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PlayerRoot(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/AI/aiPlayerSetTarget.h b/src/Game/AI/AI/aiPlayerSetTarget.h index 49f769d3c..da48b236e 100644 --- a/src/Game/AI/AI/aiPlayerSetTarget.h +++ b/src/Game/AI/AI/aiPlayerSetTarget.h @@ -16,6 +16,7 @@ class PlayerSetTarget : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSit.h b/src/Game/AI/AI/aiPlayerSit.h index 94fe9e0e3..6fb40ed82 100644 --- a/src/Game/AI/AI/aiPlayerSit.h +++ b/src/Game/AI/AI/aiPlayerSit.h @@ -7,6 +7,7 @@ namespace uking::ai { class PlayerSit : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PlayerSit, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PlayerSit(const InitArg& arg); bool init_(sead::Heap* heap) override; diff --git a/src/Game/AI/AI/aiPrevASOR2SelectTwo.h b/src/Game/AI/AI/aiPrevASOR2SelectTwo.h index 63d527a83..b602d9750 100644 --- a/src/Game/AI/AI/aiPrevASOR2SelectTwo.h +++ b/src/Game/AI/AI/aiPrevASOR2SelectTwo.h @@ -16,6 +16,7 @@ class PrevASOR2SelectTwo : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 sead::SafeString mAS1_s{}; // static_param at offset 0x48 diff --git a/src/Game/AI/AI/aiPrevASSelect.h b/src/Game/AI/AI/aiPrevASSelect.h index bb1d47d26..55c3a3567 100644 --- a/src/Game/AI/AI/aiPrevASSelect.h +++ b/src/Game/AI/AI/aiPrevASSelect.h @@ -16,6 +16,7 @@ class PrevASSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 sead::SafeString mASName_s{}; }; diff --git a/src/Game/AI/AI/aiPrevSomeASSelect.h b/src/Game/AI/AI/aiPrevSomeASSelect.h index 925754cbf..a47fb2dd0 100644 --- a/src/Game/AI/AI/aiPrevSomeASSelect.h +++ b/src/Game/AI/AI/aiPrevSomeASSelect.h @@ -16,6 +16,7 @@ class PrevSomeASSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mSeqBank_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiPreyChemicalDeadReaction.h b/src/Game/AI/AI/aiPreyChemicalDeadReaction.h index b69bacc86..3e5851405 100644 --- a/src/Game/AI/AI/aiPreyChemicalDeadReaction.h +++ b/src/Game/AI/AI/aiPreyChemicalDeadReaction.h @@ -16,6 +16,7 @@ class PreyChemicalDeadReaction : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDeadCauseSelector.h b/src/Game/AI/AI/aiPreyDeadCauseSelector.h index 5f39342ed..4cbd13816 100644 --- a/src/Game/AI/AI/aiPreyDeadCauseSelector.h +++ b/src/Game/AI/AI/aiPreyDeadCauseSelector.h @@ -16,6 +16,7 @@ class PreyDeadCauseSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h index 993d036fa..3c01c0a76 100644 --- a/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h +++ b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h @@ -7,6 +7,7 @@ namespace uking::ai { class PriestBossActorPhaseSecondStart : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PriestBossActorPhaseSecondStart, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit PriestBossActorPhaseSecondStart(const InitArg& arg); ~PriestBossActorPhaseSecondStart() override; diff --git a/src/Game/AI/AI/aiPriestBossActorRoot.h b/src/Game/AI/AI/aiPriestBossActorRoot.h index 8cc23ba65..fe70fa342 100644 --- a/src/Game/AI/AI/aiPriestBossActorRoot.h +++ b/src/Game/AI/AI/aiPriestBossActorRoot.h @@ -17,6 +17,7 @@ class PriestBossActorRoot : public PriestBossMode { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossFormation.h b/src/Game/AI/AI/aiPriestBossFormation.h index f6f62ffbc..cd9e6926f 100644 --- a/src/Game/AI/AI/aiPriestBossFormation.h +++ b/src/Game/AI/AI/aiPriestBossFormation.h @@ -7,6 +7,7 @@ namespace uking::ai { class PriestBossFormation : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(PriestBossFormation, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit PriestBossFormation(const InitArg& arg); ~PriestBossFormation() override; diff --git a/src/Game/AI/AI/aiPriestBossMeta.h b/src/Game/AI/AI/aiPriestBossMeta.h index 995177691..a807d4ebb 100644 --- a/src/Game/AI/AI/aiPriestBossMeta.h +++ b/src/Game/AI/AI/aiPriestBossMeta.h @@ -16,6 +16,7 @@ class PriestBossMeta : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 int* mMetaAILife_a{}; // aitree_variable at offset 0x40 diff --git a/src/Game/AI/AI/aiPriestBossMode.h b/src/Game/AI/AI/aiPriestBossMode.h index ec4c89a8e..c78f85bb1 100644 --- a/src/Game/AI/AI/aiPriestBossMode.h +++ b/src/Game/AI/AI/aiPriestBossMode.h @@ -16,6 +16,7 @@ class PriestBossMode : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 void* mPriestBossMetaAIUnit_a{}; }; diff --git a/src/Game/AI/AI/aiRandomSelectThreeActionBase.h b/src/Game/AI/AI/aiRandomSelectThreeActionBase.h index cccb341ca..2ae622e25 100644 --- a/src/Game/AI/AI/aiRandomSelectThreeActionBase.h +++ b/src/Game/AI/AI/aiRandomSelectThreeActionBase.h @@ -16,6 +16,7 @@ class RandomSelectThreeActionBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mCorrectRatioA_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiRapidAttackAllowSelect.h b/src/Game/AI/AI/aiRapidAttackAllowSelect.h index 05e8795ae..4f809cef5 100644 --- a/src/Game/AI/AI/aiRapidAttackAllowSelect.h +++ b/src/Game/AI/AI/aiRapidAttackAllowSelect.h @@ -16,6 +16,7 @@ class RapidAttackAllowSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mAttackNum_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h index 2ddaf121f..23b9901bf 100644 --- a/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h +++ b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h @@ -16,6 +16,7 @@ class RegistedActorNumTwoSelectBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 void* mRegistedActorUnit_a{}; }; diff --git a/src/Game/AI/AI/aiRemainElectricCannonRootBase.h b/src/Game/AI/AI/aiRemainElectricCannonRootBase.h index ce37f48af..5d144d1e8 100644 --- a/src/Game/AI/AI/aiRemainElectricCannonRootBase.h +++ b/src/Game/AI/AI/aiRemainElectricCannonRootBase.h @@ -15,6 +15,7 @@ class RemainElectricCannonRootBase : public ksys::act::ai::Ai { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } // static_param at offset 0x38 const float* mSearchMaxDist_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiSelfXRotSelector.h b/src/Game/AI/AI/aiSelfXRotSelector.h index a3438656c..8e96881fc 100644 --- a/src/Game/AI/AI/aiSelfXRotSelector.h +++ b/src/Game/AI/AI/aiSelfXRotSelector.h @@ -16,6 +16,7 @@ class SelfXRotSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mAngle_s{}; }; diff --git a/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h index bbfd4d10f..97b4967ba 100644 --- a/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h +++ b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h @@ -7,6 +7,7 @@ namespace uking::ai { class SeqHiddenOctarockSearch : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SeqHiddenOctarockSearch, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit SeqHiddenOctarockSearch(const InitArg& arg); ~SeqHiddenOctarockSearch() override; diff --git a/src/Game/AI/AI/aiSiteBossApproachRoot.h b/src/Game/AI/AI/aiSiteBossApproachRoot.h index f4e1a0a29..4714f1784 100644 --- a/src/Game/AI/AI/aiSiteBossApproachRoot.h +++ b/src/Game/AI/AI/aiSiteBossApproachRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossApproachRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossApproachRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossApproachRoot(const InitArg& arg); ~SiteBossApproachRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h index 9b662689f..509c8bacc 100644 --- a/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h +++ b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossLswordFireBallRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossLswordFireBallRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossLswordFireBallRoot(const InitArg& arg); ~SiteBossLswordFireBallRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h index a4a233931..70f22f78e 100644 --- a/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h +++ b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossLswordTornadoRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossLswordTornadoRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossLswordTornadoRoot(const InitArg& arg); ~SiteBossLswordTornadoRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h index ac14d6e69..c0e904cb4 100644 --- a/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h +++ b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h @@ -8,6 +8,7 @@ namespace uking::ai { class SiteBossReflectArrowRoot : public SiteBossShootNormalArrowRoot { SEAD_RTTI_OVERRIDE(SiteBossReflectArrowRoot, SiteBossShootNormalArrowRoot) public: + bool isChangeable() const override { return false; } explicit SiteBossReflectArrowRoot(const InitArg& arg); ~SiteBossReflectArrowRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossRoot.h b/src/Game/AI/AI/aiSiteBossRoot.h index 73adad747..f39f1462d 100644 --- a/src/Game/AI/AI/aiSiteBossRoot.h +++ b/src/Game/AI/AI/aiSiteBossRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossRoot, ksys::act::ai::Ai) public: + bool hasPreDeleteCb() override { return true; } explicit SiteBossRoot(const InitArg& arg); ~SiteBossRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h index ac1f224b3..6ce190582 100644 --- a/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h +++ b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossShootNormalArrowRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossShootNormalArrowRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit SiteBossShootNormalArrowRoot(const InitArg& arg); ~SiteBossShootNormalArrowRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h index c2de55516..7f39ddb3f 100644 --- a/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h +++ b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h @@ -16,6 +16,7 @@ class SiteBossSmallDamageRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearThrow.h b/src/Game/AI/AI/aiSiteBossSpearThrow.h index 6d94393f8..b9d3a43f5 100644 --- a/src/Game/AI/AI/aiSiteBossSpearThrow.h +++ b/src/Game/AI/AI/aiSiteBossSpearThrow.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossSpearThrow : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossSpearThrow, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossSpearThrow(const InitArg& arg); ~SiteBossSpearThrow() override; diff --git a/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h index dd6787d97..335e4f274 100644 --- a/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h +++ b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossSwordApproachRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossSwordApproachRoot, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossSwordApproachRoot(const InitArg& arg); ~SiteBossSwordApproachRoot() override; diff --git a/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h index 0a5ee3f9f..c6c07b4fc 100644 --- a/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h +++ b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h @@ -7,6 +7,7 @@ namespace uking::ai { class SiteBossSwordSeqThreeAI : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(SiteBossSwordSeqThreeAI, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit SiteBossSwordSeqThreeAI(const InitArg& arg); ~SiteBossSwordSeqThreeAI() override; diff --git a/src/Game/AI/AI/aiSleepSelect.h b/src/Game/AI/AI/aiSleepSelect.h index 4aa234191..6ff24cd14 100644 --- a/src/Game/AI/AI/aiSleepSelect.h +++ b/src/Game/AI/AI/aiSleepSelect.h @@ -16,6 +16,7 @@ class SleepSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpearWeaponSelect.h b/src/Game/AI/AI/aiSpearWeaponSelect.h index 1bc659102..8de7bdc4d 100644 --- a/src/Game/AI/AI/aiSpearWeaponSelect.h +++ b/src/Game/AI/AI/aiSpearWeaponSelect.h @@ -16,6 +16,7 @@ class SpearWeaponSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpotBgmTrigger.h b/src/Game/AI/AI/aiSpotBgmTrigger.h index 6e4f63011..c77ae78db 100644 --- a/src/Game/AI/AI/aiSpotBgmTrigger.h +++ b/src/Game/AI/AI/aiSpotBgmTrigger.h @@ -16,6 +16,7 @@ class SpotBgmTrigger : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // map_unit_param at offset 0x38 const bool* mIsStopWithoutReductionY_m{}; // map_unit_param at offset 0x40 diff --git a/src/Game/AI/AI/aiStole.h b/src/Game/AI/AI/aiStole.h index 50531d240..7d606d5c5 100644 --- a/src/Game/AI/AI/aiStole.h +++ b/src/Game/AI/AI/aiStole.h @@ -7,11 +7,13 @@ namespace uking::ai { class Stole : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(Stole, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit Stole(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneStickRoot.h b/src/Game/AI/AI/aiStoneStickRoot.h index d65f57b0e..aee1f82ff 100644 --- a/src/Game/AI/AI/aiStoneStickRoot.h +++ b/src/Game/AI/AI/aiStoneStickRoot.h @@ -7,6 +7,7 @@ namespace uking::ai { class StoneStickRoot : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(StoneStickRoot, ksys::act::ai::Ai) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit StoneStickRoot(const InitArg& arg); ~StoneStickRoot() override; diff --git a/src/Game/AI/AI/aiStunBossReaction.h b/src/Game/AI/AI/aiStunBossReaction.h index f4d4a0fab..9beb7bc6d 100644 --- a/src/Game/AI/AI/aiStunBossReaction.h +++ b/src/Game/AI/AI/aiStunBossReaction.h @@ -7,6 +7,7 @@ namespace uking::ai { class StunBossReaction : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(StunBossReaction, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit StunBossReaction(const InitArg& arg); ~StunBossReaction() override; diff --git a/src/Game/AI/AI/aiSunAI.h b/src/Game/AI/AI/aiSunAI.h index 390e48679..29c25c5ea 100644 --- a/src/Game/AI/AI/aiSunAI.h +++ b/src/Game/AI/AI/aiSunAI.h @@ -15,6 +15,7 @@ class SunAI : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetElevationGapSelect.h b/src/Game/AI/AI/aiTargetElevationGapSelect.h index 8b8a15505..80b5b12f2 100644 --- a/src/Game/AI/AI/aiTargetElevationGapSelect.h +++ b/src/Game/AI/AI/aiTargetElevationGapSelect.h @@ -16,6 +16,7 @@ class TargetElevationGapSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mElvGap_s{}; }; diff --git a/src/Game/AI/AI/aiTargetExistSelect.h b/src/Game/AI/AI/aiTargetExistSelect.h index bd025b474..b8f6a5422 100644 --- a/src/Game/AI/AI/aiTargetExistSelect.h +++ b/src/Game/AI/AI/aiTargetExistSelect.h @@ -16,6 +16,7 @@ class TargetExistSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiTemperatureRandSelect.h b/src/Game/AI/AI/aiTemperatureRandSelect.h index 651317d90..f283fe2f0 100644 --- a/src/Game/AI/AI/aiTemperatureRandSelect.h +++ b/src/Game/AI/AI/aiTemperatureRandSelect.h @@ -16,6 +16,7 @@ class TemperatureRandSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mBaseChangeRatio_s{}; // static_param at offset 0x40 diff --git a/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h index 4e68d8183..415519dbc 100644 --- a/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h +++ b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h @@ -16,6 +16,7 @@ class TrgTargetChangeToPlayerSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 bool* mIsTrgTargetChangeToPlayer_a{}; }; diff --git a/src/Game/AI/AI/aiVacuumedBombDamageSelect.h b/src/Game/AI/AI/aiVacuumedBombDamageSelect.h index 63528b46e..080854262 100644 --- a/src/Game/AI/AI/aiVacuumedBombDamageSelect.h +++ b/src/Game/AI/AI/aiVacuumedBombDamageSelect.h @@ -16,6 +16,7 @@ class VacuumedBombDamageSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // aitree_variable at offset 0x38 void* mVacuumedExplodingBomb_a{}; }; diff --git a/src/Game/AI/AI/aiWeaponEquipedAI.h b/src/Game/AI/AI/aiWeaponEquipedAI.h index df0660c2d..5bcee3a1e 100644 --- a/src/Game/AI/AI/aiWeaponEquipedAI.h +++ b/src/Game/AI/AI/aiWeaponEquipedAI.h @@ -7,6 +7,7 @@ namespace uking::ai { class WeaponEquipedAI : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(WeaponEquipedAI, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit WeaponEquipedAI(const InitArg& arg); ~WeaponEquipedAI() override; diff --git a/src/Game/AI/AI/aiWeaponOnetimeUse.h b/src/Game/AI/AI/aiWeaponOnetimeUse.h index a1c73dcbd..1f9eeae1d 100644 --- a/src/Game/AI/AI/aiWeaponOnetimeUse.h +++ b/src/Game/AI/AI/aiWeaponOnetimeUse.h @@ -7,6 +7,7 @@ namespace uking::ai { class WeaponOnetimeUse : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(WeaponOnetimeUse, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit WeaponOnetimeUse(const InitArg& arg); ~WeaponOnetimeUse() override; diff --git a/src/Game/AI/AI/aiWeaponPrepareSelect.h b/src/Game/AI/AI/aiWeaponPrepareSelect.h index ff15e3277..c5a5fc5f3 100644 --- a/src/Game/AI/AI/aiWeaponPrepareSelect.h +++ b/src/Game/AI/AI/aiWeaponPrepareSelect.h @@ -16,6 +16,7 @@ class WeaponPrepareSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mWeaponIdx_s{}; }; diff --git a/src/Game/AI/AI/aiWeaponRootAI.h b/src/Game/AI/AI/aiWeaponRootAI.h index 4b5073a1e..8b9b85710 100644 --- a/src/Game/AI/AI/aiWeaponRootAI.h +++ b/src/Game/AI/AI/aiWeaponRootAI.h @@ -7,6 +7,7 @@ namespace uking::ai { class WeaponRootAI : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(WeaponRootAI, ksys::act::ai::Ai) public: + bool isChangeable() const override { return true; } explicit WeaponRootAI(const InitArg& arg); ~WeaponRootAI() override; diff --git a/src/Game/AI/AI/aiWeaponThrowerSelector.h b/src/Game/AI/AI/aiWeaponThrowerSelector.h index 50e0cdd02..729a3c114 100644 --- a/src/Game/AI/AI/aiWeaponThrowerSelector.h +++ b/src/Game/AI/AI/aiWeaponThrowerSelector.h @@ -16,6 +16,7 @@ class WeaponThrowerSelector : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} }; } // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponUsageSelect.h b/src/Game/AI/AI/aiWeaponUsageSelect.h index 58502119b..4555b9b15 100644 --- a/src/Game/AI/AI/aiWeaponUsageSelect.h +++ b/src/Game/AI/AI/aiWeaponUsageSelect.h @@ -15,6 +15,7 @@ class WeaponUsageSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const int* mWeaponIdx_s{}; }; diff --git a/src/Game/AI/AI/aiWetSelect.h b/src/Game/AI/AI/aiWetSelect.h index 95e78afc7..91f979303 100644 --- a/src/Game/AI/AI/aiWetSelect.h +++ b/src/Game/AI/AI/aiWetSelect.h @@ -16,6 +16,7 @@ class WetSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // static_param at offset 0x38 const float* mWetRateThreashold_s{}; }; diff --git a/src/Game/AI/AI/aiWillBallAttackLevelSelect.h b/src/Game/AI/AI/aiWillBallAttackLevelSelect.h index 4aed47f13..1aee0cc03 100644 --- a/src/Game/AI/AI/aiWillBallAttackLevelSelect.h +++ b/src/Game/AI/AI/aiWillBallAttackLevelSelect.h @@ -16,6 +16,7 @@ class WillBallAttackLevelSelect : public ksys::act::ai::Ai { void loadParams_() override; protected: + void calc_() override {} // dynamic_param at offset 0x38 int* mLevel_d{}; }; diff --git a/src/Game/AI/AI/aiWindBoxPlace.h b/src/Game/AI/AI/aiWindBoxPlace.h index 1c83301f4..27507481c 100644 --- a/src/Game/AI/AI/aiWindBoxPlace.h +++ b/src/Game/AI/AI/aiWindBoxPlace.h @@ -7,6 +7,7 @@ namespace uking::ai { class WindBoxPlace : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(WindBoxPlace, ksys::act::ai::Ai) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit WindBoxPlace(const InitArg& arg); ~WindBoxPlace() override; diff --git a/src/Game/AI/AI/aiWizzrobeCombatMove.h b/src/Game/AI/AI/aiWizzrobeCombatMove.h index 3db9078c3..40d6ac301 100644 --- a/src/Game/AI/AI/aiWizzrobeCombatMove.h +++ b/src/Game/AI/AI/aiWizzrobeCombatMove.h @@ -7,6 +7,7 @@ namespace uking::ai { class WizzrobeCombatMove : public ksys::act::ai::Ai { SEAD_RTTI_OVERRIDE(WizzrobeCombatMove, ksys::act::ai::Ai) public: + bool isChangeable() const override { return false; } explicit WizzrobeCombatMove(const InitArg& arg); ~WizzrobeCombatMove() override; diff --git a/src/Game/AI/AI/aiWolfLinkRoot.h b/src/Game/AI/AI/aiWolfLinkRoot.h index 3d380bd67..7d25b7567 100644 --- a/src/Game/AI/AI/aiWolfLinkRoot.h +++ b/src/Game/AI/AI/aiWolfLinkRoot.h @@ -16,6 +16,7 @@ class WolfLinkRoot : public ksys::act::ai::Ai { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } }; } // namespace uking::ai diff --git a/src/Game/AI/Action/actionAngry.h b/src/Game/AI/Action/actionAngry.h index 4632f7d1d..491614271 100644 --- a/src/Game/AI/Action/actionAngry.h +++ b/src/Game/AI/Action/actionAngry.h @@ -8,6 +8,7 @@ namespace uking::action { class Angry : public ActionWithAS { SEAD_RTTI_OVERRIDE(Angry, ActionWithAS) public: + bool isChangeable() const override { return false; } explicit Angry(const InitArg& arg); bool init_(sead::Heap* heap) override; diff --git a/src/Game/AI/Action/actionAscendingCurrent.h b/src/Game/AI/Action/actionAscendingCurrent.h index a58adac92..a3e5a68a5 100644 --- a/src/Game/AI/Action/actionAscendingCurrent.h +++ b/src/Game/AI/Action/actionAscendingCurrent.h @@ -14,6 +14,7 @@ class AscendingCurrent : public ksys::act::ai::Action { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasUpdateForPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/AI/Action/actionBackStepToTarget.h b/src/Game/AI/Action/actionBackStepToTarget.h index af76bb297..438cd7174 100644 --- a/src/Game/AI/Action/actionBackStepToTarget.h +++ b/src/Game/AI/Action/actionBackStepToTarget.h @@ -8,6 +8,7 @@ namespace uking::action { class BackStepToTarget : public ActionEx { SEAD_RTTI_OVERRIDE(BackStepToTarget, ActionEx) public: + bool isChangeable() const override { return false; } explicit BackStepToTarget(const InitArg& arg); ~BackStepToTarget() override; diff --git a/src/Game/AI/Action/actionBackWalkBase.h b/src/Game/AI/Action/actionBackWalkBase.h index 22b5167f4..15958a9cd 100644 --- a/src/Game/AI/Action/actionBackWalkBase.h +++ b/src/Game/AI/Action/actionBackWalkBase.h @@ -8,6 +8,7 @@ namespace uking::action { class BackWalkBase : public ActionEx { SEAD_RTTI_OVERRIDE(BackWalkBase, ActionEx) public: + bool isChangeable() const override { return true; } explicit BackWalkBase(const InitArg& arg); ~BackWalkBase() override; diff --git a/src/Game/AI/Action/actionCameraRumbleLoop.h b/src/Game/AI/Action/actionCameraRumbleLoop.h index a12b00335..1a7c3bcd7 100644 --- a/src/Game/AI/Action/actionCameraRumbleLoop.h +++ b/src/Game/AI/Action/actionCameraRumbleLoop.h @@ -7,6 +7,7 @@ namespace uking::action { class CameraRumbleLoop : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(CameraRumbleLoop, ksys::act::ai::Action) public: + bool hasPreDeleteCb() override { return true; } explicit CameraRumbleLoop(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionCarried.h b/src/Game/AI/Action/actionCarried.h index b7c2c7759..f785d2fdb 100644 --- a/src/Game/AI/Action/actionCarried.h +++ b/src/Game/AI/Action/actionCarried.h @@ -14,6 +14,7 @@ class Carried : public ksys::act::ai::Action { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasUpdateForPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/AI/Action/actionChemicalward.h b/src/Game/AI/Action/actionChemicalward.h index 13a50a562..45ed4ea1d 100644 --- a/src/Game/AI/Action/actionChemicalward.h +++ b/src/Game/AI/Action/actionChemicalward.h @@ -8,6 +8,7 @@ namespace uking::action { class Chemicalward : public ActionWithPosAngReduce { SEAD_RTTI_OVERRIDE(Chemicalward, ActionWithPosAngReduce) public: + bool isChangeable() const override { return false; } explicit Chemicalward(const InitArg& arg); ~Chemicalward() override; diff --git a/src/Game/AI/Action/actionChuchuDissappearEscape.h b/src/Game/AI/Action/actionChuchuDissappearEscape.h index 3f0c3ebbc..28ae32503 100644 --- a/src/Game/AI/Action/actionChuchuDissappearEscape.h +++ b/src/Game/AI/Action/actionChuchuDissappearEscape.h @@ -8,6 +8,8 @@ namespace uking::action { class ChuchuDissappearEscape : public ChuchuDissappearEscapeBase { SEAD_RTTI_OVERRIDE(ChuchuDissappearEscape, ChuchuDissappearEscapeBase) public: + bool isFinished() const override { return false; } + bool isFailed() const override { return false; } explicit ChuchuDissappearEscape(const InitArg& arg); ~ChuchuDissappearEscape() override; diff --git a/src/Game/AI/Action/actionCreateAndReplaceAssassin.h b/src/Game/AI/Action/actionCreateAndReplaceAssassin.h index a149fc32c..d7f940dbe 100644 --- a/src/Game/AI/Action/actionCreateAndReplaceAssassin.h +++ b/src/Game/AI/Action/actionCreateAndReplaceAssassin.h @@ -14,6 +14,7 @@ class CreateAndReplaceAssassin : public ksys::act::ai::Action { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/AI/Action/actionDie.h b/src/Game/AI/Action/actionDie.h index c1b5d7131..8232b50d2 100644 --- a/src/Game/AI/Action/actionDie.h +++ b/src/Game/AI/Action/actionDie.h @@ -8,6 +8,7 @@ namespace uking::action { class Die : public BlownOff { SEAD_RTTI_OVERRIDE(Die, BlownOff) public: + bool isChangeable() const override { return false; } explicit Die(const InitArg& arg); ~Die() override; diff --git a/src/Game/AI/Action/actionDownSwingAttack.h b/src/Game/AI/Action/actionDownSwingAttack.h index 3c8d40140..1dbf85176 100644 --- a/src/Game/AI/Action/actionDownSwingAttack.h +++ b/src/Game/AI/Action/actionDownSwingAttack.h @@ -8,6 +8,7 @@ namespace uking::action { class DownSwingAttack : public ActionEx { SEAD_RTTI_OVERRIDE(DownSwingAttack, ActionEx) public: + bool isChangeable() const override { return false; } explicit DownSwingAttack(const InitArg& arg); ~DownSwingAttack() override; diff --git a/src/Game/AI/Action/actionDummyTriggerAction.h b/src/Game/AI/Action/actionDummyTriggerAction.h index 689fcdef7..1b25a986b 100644 --- a/src/Game/AI/Action/actionDummyTriggerAction.h +++ b/src/Game/AI/Action/actionDummyTriggerAction.h @@ -14,6 +14,7 @@ class DummyTriggerAction : public ksys::act::ai::Action { void loadParams_() override; protected: + bool oneShot_() override { return true; } }; } // namespace uking::action diff --git a/src/Game/AI/Action/actionEnemyFortressChatTurnBase.h b/src/Game/AI/Action/actionEnemyFortressChatTurnBase.h index 7aebb9ae0..db286f692 100644 --- a/src/Game/AI/Action/actionEnemyFortressChatTurnBase.h +++ b/src/Game/AI/Action/actionEnemyFortressChatTurnBase.h @@ -16,6 +16,7 @@ class EnemyFortressChatTurnBase : public ksys::act::ai::Action { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } void calc_() override; // static_param at offset 0x20 diff --git a/src/Game/AI/Action/actionEscapeBackTurn.h b/src/Game/AI/Action/actionEscapeBackTurn.h index f402678fe..4e45f1f95 100644 --- a/src/Game/AI/Action/actionEscapeBackTurn.h +++ b/src/Game/AI/Action/actionEscapeBackTurn.h @@ -8,6 +8,7 @@ namespace uking::action { class EscapeBackTurn : public ActionEx { SEAD_RTTI_OVERRIDE(EscapeBackTurn, ActionEx) public: + bool isChangeable() const override { return false; } explicit EscapeBackTurn(const InitArg& arg); ~EscapeBackTurn() override; diff --git a/src/Game/AI/Action/actionEventMiniGameRetire.h b/src/Game/AI/Action/actionEventMiniGameRetire.h index 9c2ecb16d..342c12690 100644 --- a/src/Game/AI/Action/actionEventMiniGameRetire.h +++ b/src/Game/AI/Action/actionEventMiniGameRetire.h @@ -14,6 +14,7 @@ class EventMiniGameRetire : public ksys::act::ai::Action { void loadParams_() override; protected: + bool oneShot_() override { return false; } // dynamic_param at offset 0x20 int* mTextType_d{}; }; diff --git a/src/Game/AI/Action/actionEventPrizeSuccess.h b/src/Game/AI/Action/actionEventPrizeSuccess.h index 66bdfd7b5..78202d4de 100644 --- a/src/Game/AI/Action/actionEventPrizeSuccess.h +++ b/src/Game/AI/Action/actionEventPrizeSuccess.h @@ -13,6 +13,7 @@ class EventPrizeSuccess : public ksys::act::ai::Action { void loadParams_() override; protected: + bool oneShot_() override { return true; } // dynamic_param at offset 0x20 int* mPrizeNumber_d{}; }; diff --git a/src/Game/AI/Action/actionFall.h b/src/Game/AI/Action/actionFall.h index 8da39c7e5..9db14b2d2 100644 --- a/src/Game/AI/Action/actionFall.h +++ b/src/Game/AI/Action/actionFall.h @@ -8,6 +8,7 @@ namespace uking::action { class Fall : public ActionEx { SEAD_RTTI_OVERRIDE(Fall, ActionEx) public: + bool isChangeable() const override { return false; } explicit Fall(const InitArg& arg); ~Fall() override; diff --git a/src/Game/AI/Action/actionForbidSettingInstEventFlag.h b/src/Game/AI/Action/actionForbidSettingInstEventFlag.h index 765beb72c..34868a3d0 100644 --- a/src/Game/AI/Action/actionForbidSettingInstEventFlag.h +++ b/src/Game/AI/Action/actionForbidSettingInstEventFlag.h @@ -14,6 +14,7 @@ class ForbidSettingInstEventFlag : public ksys::act::ai::Action { void loadParams_() override; protected: + bool oneShot_() override { return true; } }; } // namespace uking::action diff --git a/src/Game/AI/Action/actionForkCapsuleWindFollow.h b/src/Game/AI/Action/actionForkCapsuleWindFollow.h index 257beac4f..18fbf4239 100644 --- a/src/Game/AI/Action/actionForkCapsuleWindFollow.h +++ b/src/Game/AI/Action/actionForkCapsuleWindFollow.h @@ -7,6 +7,7 @@ namespace uking::action { class ForkCapsuleWindFollow : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(ForkCapsuleWindFollow, ksys::act::ai::Action) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit ForkCapsuleWindFollow(const InitArg& arg); ~ForkCapsuleWindFollow() override; diff --git a/src/Game/AI/Action/actionForkFourFootActorLustGrass.h b/src/Game/AI/Action/actionForkFourFootActorLustGrass.h index 58f57b578..56c0d2a6a 100644 --- a/src/Game/AI/Action/actionForkFourFootActorLustGrass.h +++ b/src/Game/AI/Action/actionForkFourFootActorLustGrass.h @@ -7,6 +7,7 @@ namespace uking::action { class ForkFourFootActorLustGrass : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(ForkFourFootActorLustGrass, ksys::act::ai::Action) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit ForkFourFootActorLustGrass(const InitArg& arg); ~ForkFourFootActorLustGrass() override; diff --git a/src/Game/AI/Action/actionForkGanonAscendingCreateManage.h b/src/Game/AI/Action/actionForkGanonAscendingCreateManage.h index 978eaaf42..bf878396c 100644 --- a/src/Game/AI/Action/actionForkGanonAscendingCreateManage.h +++ b/src/Game/AI/Action/actionForkGanonAscendingCreateManage.h @@ -7,6 +7,7 @@ namespace uking::action { class ForkGanonAscendingCreateManage : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(ForkGanonAscendingCreateManage, ksys::act::ai::Action) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit ForkGanonAscendingCreateManage(const InitArg& arg); ~ForkGanonAscendingCreateManage() override; diff --git a/src/Game/AI/Action/actionGanonChangeState.h b/src/Game/AI/Action/actionGanonChangeState.h index b7add5997..7faee1c87 100644 --- a/src/Game/AI/Action/actionGanonChangeState.h +++ b/src/Game/AI/Action/actionGanonChangeState.h @@ -7,6 +7,7 @@ namespace uking::action { class GanonChangeState : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(GanonChangeState, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit GanonChangeState(const InitArg& arg); ~GanonChangeState() override; diff --git a/src/Game/AI/Action/actionGetUpBase.h b/src/Game/AI/Action/actionGetUpBase.h index 9ea04a4d2..1ad0dc267 100644 --- a/src/Game/AI/Action/actionGetUpBase.h +++ b/src/Game/AI/Action/actionGetUpBase.h @@ -7,6 +7,7 @@ namespace uking::action { class GetUpBase : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(GetUpBase, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit GetUpBase(const InitArg& arg); ~GetUpBase() override; diff --git a/src/Game/AI/Action/actionGrabAndShoot.h b/src/Game/AI/Action/actionGrabAndShoot.h index 0c2ab1ed5..86c3ff6af 100644 --- a/src/Game/AI/Action/actionGrabAndShoot.h +++ b/src/Game/AI/Action/actionGrabAndShoot.h @@ -7,6 +7,7 @@ namespace uking::action { class GrabAndShoot : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(GrabAndShoot, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit GrabAndShoot(const InitArg& arg); ~GrabAndShoot() override; diff --git a/src/Game/AI/Action/actionGuard.h b/src/Game/AI/Action/actionGuard.h index ba09a28ab..396cb2ac1 100644 --- a/src/Game/AI/Action/actionGuard.h +++ b/src/Game/AI/Action/actionGuard.h @@ -8,6 +8,7 @@ namespace uking::action { class Guard : public TakeHitImpactForce { SEAD_RTTI_OVERRIDE(Guard, TakeHitImpactForce) public: + bool isChangeable() const override { return true; } explicit Guard(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionHoldArrow.h b/src/Game/AI/Action/actionHoldArrow.h index 55d22eeef..211bc313b 100644 --- a/src/Game/AI/Action/actionHoldArrow.h +++ b/src/Game/AI/Action/actionHoldArrow.h @@ -8,6 +8,7 @@ namespace uking::action { class HoldArrow : public ActionWithPosAngReduce { SEAD_RTTI_OVERRIDE(HoldArrow, ActionWithPosAngReduce) public: + bool isChangeable() const override { return true; } explicit HoldArrow(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionHornUseBase.h b/src/Game/AI/Action/actionHornUseBase.h index 326168594..564ddeccf 100644 --- a/src/Game/AI/Action/actionHornUseBase.h +++ b/src/Game/AI/Action/actionHornUseBase.h @@ -15,6 +15,7 @@ class HornUseBase : public TimeredASPlay { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/AI/Action/actionInCarryBox.h b/src/Game/AI/Action/actionInCarryBox.h index 53f0e52c6..91638b16b 100644 --- a/src/Game/AI/Action/actionInCarryBox.h +++ b/src/Game/AI/Action/actionInCarryBox.h @@ -7,6 +7,7 @@ namespace uking::action { class InCarryBox : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(InCarryBox, ksys::act::ai::Action) public: + bool hasUpdateForPreDeleteCb() override { return true; } explicit InCarryBox(const InitArg& arg); ~InCarryBox() override; diff --git a/src/Game/AI/Action/actionJumpAttack.h b/src/Game/AI/Action/actionJumpAttack.h index 90d49f966..380f08264 100644 --- a/src/Game/AI/Action/actionJumpAttack.h +++ b/src/Game/AI/Action/actionJumpAttack.h @@ -7,6 +7,7 @@ namespace uking::action { class JumpAttack : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(JumpAttack, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit JumpAttack(const InitArg& arg); ~JumpAttack() override; diff --git a/src/Game/AI/Action/actionLargeAttack.h b/src/Game/AI/Action/actionLargeAttack.h index 587448f4a..6660fd6ad 100644 --- a/src/Game/AI/Action/actionLargeAttack.h +++ b/src/Game/AI/Action/actionLargeAttack.h @@ -8,6 +8,7 @@ namespace uking::action { class LargeAttack : public ActionEx { SEAD_RTTI_OVERRIDE(LargeAttack, ActionEx) public: + bool isChangeable() const override { return false; } explicit LargeAttack(const InitArg& arg); ~LargeAttack() override; diff --git a/src/Game/AI/Action/actionLastBossFlyWait.h b/src/Game/AI/Action/actionLastBossFlyWait.h index 284b7de95..92248378a 100644 --- a/src/Game/AI/Action/actionLastBossFlyWait.h +++ b/src/Game/AI/Action/actionLastBossFlyWait.h @@ -7,6 +7,7 @@ namespace uking::action { class LastBossFlyWait : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(LastBossFlyWait, ksys::act::ai::Action) public: + bool isChangeable() const override { return true; } explicit LastBossFlyWait(const InitArg& arg); ~LastBossFlyWait() override; diff --git a/src/Game/AI/Action/actionLastBossJustGuard.h b/src/Game/AI/Action/actionLastBossJustGuard.h index 006c81c1c..a1011509e 100644 --- a/src/Game/AI/Action/actionLastBossJustGuard.h +++ b/src/Game/AI/Action/actionLastBossJustGuard.h @@ -7,6 +7,7 @@ namespace uking::action { class LastBossJustGuard : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(LastBossJustGuard, ksys::act::ai::Action) public: + bool isChangeable() const override { return true; } explicit LastBossJustGuard(const InitArg& arg); ~LastBossJustGuard() override; diff --git a/src/Game/AI/Action/actionLookAtTarget.h b/src/Game/AI/Action/actionLookAtTarget.h index 6bd0bdf99..d075d9ced 100644 --- a/src/Game/AI/Action/actionLookAtTarget.h +++ b/src/Game/AI/Action/actionLookAtTarget.h @@ -8,6 +8,7 @@ namespace uking::action { class LookAtTarget : public TurnBase { SEAD_RTTI_OVERRIDE(LookAtTarget, TurnBase) public: + bool isFinished() const override { return false; } explicit LookAtTarget(const InitArg& arg); ~LookAtTarget() override; diff --git a/src/Game/AI/Action/actionMotorcycleRiddenByPlayer.h b/src/Game/AI/Action/actionMotorcycleRiddenByPlayer.h index 625a53745..7a346b48b 100644 --- a/src/Game/AI/Action/actionMotorcycleRiddenByPlayer.h +++ b/src/Game/AI/Action/actionMotorcycleRiddenByPlayer.h @@ -14,6 +14,7 @@ class MotorcycleRiddenByPlayer : public ksys::act::ai::Action { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasUpdateForPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/AI/Action/actionNPCAnchorWait.h b/src/Game/AI/Action/actionNPCAnchorWait.h index 8c7fea3fc..537583e3b 100644 --- a/src/Game/AI/Action/actionNPCAnchorWait.h +++ b/src/Game/AI/Action/actionNPCAnchorWait.h @@ -16,6 +16,7 @@ class NPCAnchorWait : public ksys::act::ai::Action { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } void calc_() override; // dynamic_param at offset 0x20 diff --git a/src/Game/AI/Action/actionNPCSellApp.h b/src/Game/AI/Action/actionNPCSellApp.h index 12b5e317b..ef01d3dcb 100644 --- a/src/Game/AI/Action/actionNPCSellApp.h +++ b/src/Game/AI/Action/actionNPCSellApp.h @@ -11,6 +11,7 @@ class NPCSellApp : public ksys::act::ai::Action { ~NPCSellApp() override; protected: + bool oneShot_() override { return true; } }; } // namespace uking::action diff --git a/src/Game/AI/Action/actionNotice.h b/src/Game/AI/Action/actionNotice.h index d80ae6906..a6544033e 100644 --- a/src/Game/AI/Action/actionNotice.h +++ b/src/Game/AI/Action/actionNotice.h @@ -8,6 +8,7 @@ namespace uking::action { class Notice : public ActionWithAS { SEAD_RTTI_OVERRIDE(Notice, ActionWithAS) public: + bool isChangeable() const override { return false; } explicit Notice(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionOnetimeChangeableASPlay.h b/src/Game/AI/Action/actionOnetimeChangeableASPlay.h index f3ac82db1..5bbff8b85 100644 --- a/src/Game/AI/Action/actionOnetimeChangeableASPlay.h +++ b/src/Game/AI/Action/actionOnetimeChangeableASPlay.h @@ -8,6 +8,7 @@ namespace uking::action { class OnetimeChangeableASPlay : public OnetimeStopASPlay { SEAD_RTTI_OVERRIDE(OnetimeChangeableASPlay, OnetimeStopASPlay) public: + bool isChangeable() const override { return true; } explicit OnetimeChangeableASPlay(const InitArg& arg); ~OnetimeChangeableASPlay() override; diff --git a/src/Game/AI/Action/actionPlayerAtnMove.h b/src/Game/AI/Action/actionPlayerAtnMove.h index a38e39944..2b387752a 100644 --- a/src/Game/AI/Action/actionPlayerAtnMove.h +++ b/src/Game/AI/Action/actionPlayerAtnMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerAtnMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerAtnMove, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerAtnMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerAtnWait.h b/src/Game/AI/Action/actionPlayerAtnWait.h index 5b0f51858..00986a414 100644 --- a/src/Game/AI/Action/actionPlayerAtnWait.h +++ b/src/Game/AI/Action/actionPlayerAtnWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerAtnWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerAtnWait, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerAtnWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerBackJump.h b/src/Game/AI/Action/actionPlayerBackJump.h index d0ff403e1..36c2792e1 100644 --- a/src/Game/AI/Action/actionPlayerBackJump.h +++ b/src/Game/AI/Action/actionPlayerBackJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerBackJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerBackJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerBackJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerBeetleSubject.h b/src/Game/AI/Action/actionPlayerBeetleSubject.h index 736138656..872378c9e 100644 --- a/src/Game/AI/Action/actionPlayerBeetleSubject.h +++ b/src/Game/AI/Action/actionPlayerBeetleSubject.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerBeetleSubject : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerBeetleSubject, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerBeetleSubject(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerBow.h b/src/Game/AI/Action/actionPlayerBow.h index f567872cc..fbb243ee5 100644 --- a/src/Game/AI/Action/actionPlayerBow.h +++ b/src/Game/AI/Action/actionPlayerBow.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerBow : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerBow, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerBow(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerBowFall.h b/src/Game/AI/Action/actionPlayerBowFall.h index f33997029..6c985c276 100644 --- a/src/Game/AI/Action/actionPlayerBowFall.h +++ b/src/Game/AI/Action/actionPlayerBowFall.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerBowFall : public PlayerFall { SEAD_RTTI_OVERRIDE(PlayerBowFall, PlayerFall) public: + bool isChangeable() const override { return true; } explicit PlayerBowFall(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerCaught.h b/src/Game/AI/Action/actionPlayerCaught.h index 90d78b53a..4e68f073d 100644 --- a/src/Game/AI/Action/actionPlayerCaught.h +++ b/src/Game/AI/Action/actionPlayerCaught.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerCaught : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerCaught, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerCaught(const InitArg& arg); ~PlayerCaught() override; diff --git a/src/Game/AI/Action/actionPlayerClimbRest.h b/src/Game/AI/Action/actionPlayerClimbRest.h index 53a1003c8..4efa76306 100644 --- a/src/Game/AI/Action/actionPlayerClimbRest.h +++ b/src/Game/AI/Action/actionPlayerClimbRest.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerClimbRest : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerClimbRest, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerClimbRest(const InitArg& arg); ~PlayerClimbRest() override; diff --git a/src/Game/AI/Action/actionPlayerControl.h b/src/Game/AI/Action/actionPlayerControl.h index 6cede50c1..da93d8148 100644 --- a/src/Game/AI/Action/actionPlayerControl.h +++ b/src/Game/AI/Action/actionPlayerControl.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerControl : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerControl, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerControl(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDemoAirWait.h b/src/Game/AI/Action/actionPlayerDemoAirWait.h index fc45c866a..1c00c7f23 100644 --- a/src/Game/AI/Action/actionPlayerDemoAirWait.h +++ b/src/Game/AI/Action/actionPlayerDemoAirWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDemoAirWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDemoAirWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDemoAirWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDemoWait.h b/src/Game/AI/Action/actionPlayerDemoWait.h index c400c238e..6c3d7eb77 100644 --- a/src/Game/AI/Action/actionPlayerDemoWait.h +++ b/src/Game/AI/Action/actionPlayerDemoWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDemoWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDemoWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDemoWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDestinationMove.h b/src/Game/AI/Action/actionPlayerDestinationMove.h index aac39b30e..e64e56d17 100644 --- a/src/Game/AI/Action/actionPlayerDestinationMove.h +++ b/src/Game/AI/Action/actionPlayerDestinationMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDestinationMove : public PlayerGuidedMove { SEAD_RTTI_OVERRIDE(PlayerDestinationMove, PlayerGuidedMove) public: + bool isChangeable() const override { return false; } explicit PlayerDestinationMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDestinationTurn.h b/src/Game/AI/Action/actionPlayerDestinationTurn.h index 2567124a3..d611efcf8 100644 --- a/src/Game/AI/Action/actionPlayerDestinationTurn.h +++ b/src/Game/AI/Action/actionPlayerDestinationTurn.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDestinationTurn : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDestinationTurn, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDestinationTurn(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDestinationTurnRefActor.h b/src/Game/AI/Action/actionPlayerDestinationTurnRefActor.h index b83c18f7b..17b7510e6 100644 --- a/src/Game/AI/Action/actionPlayerDestinationTurnRefActor.h +++ b/src/Game/AI/Action/actionPlayerDestinationTurnRefActor.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDestinationTurnRefActor : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDestinationTurnRefActor, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDestinationTurnRefActor(const InitArg& arg); ~PlayerDestinationTurnRefActor() override; diff --git a/src/Game/AI/Action/actionPlayerDisplayWait.h b/src/Game/AI/Action/actionPlayerDisplayWait.h index 682b45438..19f664570 100644 --- a/src/Game/AI/Action/actionPlayerDisplayWait.h +++ b/src/Game/AI/Action/actionPlayerDisplayWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDisplayWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDisplayWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDisplayWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDiveMove.h b/src/Game/AI/Action/actionPlayerDiveMove.h index bddaa4925..39ffeed28 100644 --- a/src/Game/AI/Action/actionPlayerDiveMove.h +++ b/src/Game/AI/Action/actionPlayerDiveMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDiveMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDiveMove, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDiveMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDoorPullOpen.h b/src/Game/AI/Action/actionPlayerDoorPullOpen.h index 7721529eb..e0f53d93e 100644 --- a/src/Game/AI/Action/actionPlayerDoorPullOpen.h +++ b/src/Game/AI/Action/actionPlayerDoorPullOpen.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDoorPullOpen : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDoorPullOpen, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDoorPullOpen(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDoorPushOpen.h b/src/Game/AI/Action/actionPlayerDoorPushOpen.h index 81b688bd8..b72703f1b 100644 --- a/src/Game/AI/Action/actionPlayerDoorPushOpen.h +++ b/src/Game/AI/Action/actionPlayerDoorPushOpen.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDoorPushOpen : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDoorPushOpen, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDoorPushOpen(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerDrown.h b/src/Game/AI/Action/actionPlayerDrown.h index 050bdae22..bd83760aa 100644 --- a/src/Game/AI/Action/actionPlayerDrown.h +++ b/src/Game/AI/Action/actionPlayerDrown.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerDrown : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerDrown, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerDrown(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerElectric.h b/src/Game/AI/Action/actionPlayerElectric.h index b0db59270..79f20d129 100644 --- a/src/Game/AI/Action/actionPlayerElectric.h +++ b/src/Game/AI/Action/actionPlayerElectric.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerElectric : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerElectric, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerElectric(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerFall.h b/src/Game/AI/Action/actionPlayerFall.h index 18eb2fe6e..f06c6b300 100644 --- a/src/Game/AI/Action/actionPlayerFall.h +++ b/src/Game/AI/Action/actionPlayerFall.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerFall : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerFall, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerFall(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGlide.h b/src/Game/AI/Action/actionPlayerGlide.h index a5b44149e..8405431b4 100644 --- a/src/Game/AI/Action/actionPlayerGlide.h +++ b/src/Game/AI/Action/actionPlayerGlide.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGlide : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGlide, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerGlide(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGrabPut.h b/src/Game/AI/Action/actionPlayerGrabPut.h index a759d965e..552cf22d1 100644 --- a/src/Game/AI/Action/actionPlayerGrabPut.h +++ b/src/Game/AI/Action/actionPlayerGrabPut.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGrabPut : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGrabPut, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGrabPut(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGrabReady.h b/src/Game/AI/Action/actionPlayerGrabReady.h index ec4fd502d..c619aeb58 100644 --- a/src/Game/AI/Action/actionPlayerGrabReady.h +++ b/src/Game/AI/Action/actionPlayerGrabReady.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGrabReady : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGrabReady, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGrabReady(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGrabUp.h b/src/Game/AI/Action/actionPlayerGrabUp.h index 56a8bcab6..74e2043bc 100644 --- a/src/Game/AI/Action/actionPlayerGrabUp.h +++ b/src/Game/AI/Action/actionPlayerGrabUp.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGrabUp : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGrabUp, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGrabUp(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGrabUpAnmStop.h b/src/Game/AI/Action/actionPlayerGrabUpAnmStop.h index 9c649d078..32fbd83b3 100644 --- a/src/Game/AI/Action/actionPlayerGrabUpAnmStop.h +++ b/src/Game/AI/Action/actionPlayerGrabUpAnmStop.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGrabUpAnmStop : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGrabUpAnmStop, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGrabUpAnmStop(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGrabWait.h b/src/Game/AI/Action/actionPlayerGrabWait.h index 82e7db984..ca501568d 100644 --- a/src/Game/AI/Action/actionPlayerGrabWait.h +++ b/src/Game/AI/Action/actionPlayerGrabWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGrabWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGrabWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGrabWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGuardJustFall.h b/src/Game/AI/Action/actionPlayerGuardJustFall.h index ce90e1b45..8f2705ad5 100644 --- a/src/Game/AI/Action/actionPlayerGuardJustFall.h +++ b/src/Game/AI/Action/actionPlayerGuardJustFall.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGuardJustFall : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGuardJustFall, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGuardJustFall(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerGuidedMove.h b/src/Game/AI/Action/actionPlayerGuidedMove.h index 0c46d0bbf..ce7cffeb5 100644 --- a/src/Game/AI/Action/actionPlayerGuidedMove.h +++ b/src/Game/AI/Action/actionPlayerGuidedMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerGuidedMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerGuidedMove, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerGuidedMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHangWallCatch.h b/src/Game/AI/Action/actionPlayerHangWallCatch.h index caced365d..b004f2bd5 100644 --- a/src/Game/AI/Action/actionPlayerHangWallCatch.h +++ b/src/Game/AI/Action/actionPlayerHangWallCatch.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHangWallCatch : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHangWallCatch, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHangWallCatch(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHell.h b/src/Game/AI/Action/actionPlayerHell.h index 43f5d9b0b..8988fe167 100644 --- a/src/Game/AI/Action/actionPlayerHell.h +++ b/src/Game/AI/Action/actionPlayerHell.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHell : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHell, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHell(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHellNoFade.h b/src/Game/AI/Action/actionPlayerHellNoFade.h index f43e7950a..520101208 100644 --- a/src/Game/AI/Action/actionPlayerHellNoFade.h +++ b/src/Game/AI/Action/actionPlayerHellNoFade.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHellNoFade : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHellNoFade, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHellNoFade(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHellStartWait.h b/src/Game/AI/Action/actionPlayerHellStartWait.h index 6dceb0c2b..c1c222541 100644 --- a/src/Game/AI/Action/actionPlayerHellStartWait.h +++ b/src/Game/AI/Action/actionPlayerHellStartWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHellStartWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHellStartWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHellStartWait(const InitArg& arg); ~PlayerHellStartWait() override; diff --git a/src/Game/AI/Action/actionPlayerHoldUpDRC.h b/src/Game/AI/Action/actionPlayerHoldUpDRC.h index 310fb25ff..eb2ab02eb 100644 --- a/src/Game/AI/Action/actionPlayerHoldUpDRC.h +++ b/src/Game/AI/Action/actionPlayerHoldUpDRC.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHoldUpDRC : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHoldUpDRC, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHoldUpDRC(const InitArg& arg); ~PlayerHoldUpDRC() override; diff --git a/src/Game/AI/Action/actionPlayerHorseGetOff.h b/src/Game/AI/Action/actionPlayerHorseGetOff.h index 617d2ef83..be80c3776 100644 --- a/src/Game/AI/Action/actionPlayerHorseGetOff.h +++ b/src/Game/AI/Action/actionPlayerHorseGetOff.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHorseGetOff : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHorseGetOff, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHorseGetOff(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHorseGetOffInDemo.h b/src/Game/AI/Action/actionPlayerHorseGetOffInDemo.h index aba1c5d4d..a7b717d61 100644 --- a/src/Game/AI/Action/actionPlayerHorseGetOffInDemo.h +++ b/src/Game/AI/Action/actionPlayerHorseGetOffInDemo.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHorseGetOffInDemo : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHorseGetOffInDemo, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerHorseGetOffInDemo(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerHorseJump.h b/src/Game/AI/Action/actionPlayerHorseJump.h index 43d619fd3..404545e19 100644 --- a/src/Game/AI/Action/actionPlayerHorseJump.h +++ b/src/Game/AI/Action/actionPlayerHorseJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerHorseJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerHorseJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerHorseJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerIce.h b/src/Game/AI/Action/actionPlayerIce.h index 8f7bb8b7e..3d338d8b4 100644 --- a/src/Game/AI/Action/actionPlayerIce.h +++ b/src/Game/AI/Action/actionPlayerIce.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerIce : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerIce, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerIce(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerIceBlockRemove.h b/src/Game/AI/Action/actionPlayerIceBlockRemove.h index 00e845bf8..b43d004bc 100644 --- a/src/Game/AI/Action/actionPlayerIceBlockRemove.h +++ b/src/Game/AI/Action/actionPlayerIceBlockRemove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerIceBlockRemove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerIceBlockRemove, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerIceBlockRemove(const InitArg& arg); ~PlayerIceBlockRemove() override; diff --git a/src/Game/AI/Action/actionPlayerIceGrabReady.h b/src/Game/AI/Action/actionPlayerIceGrabReady.h index a16863dd3..3f0a8982a 100644 --- a/src/Game/AI/Action/actionPlayerIceGrabReady.h +++ b/src/Game/AI/Action/actionPlayerIceGrabReady.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerIceGrabReady : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerIceGrabReady, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerIceGrabReady(const InitArg& arg); ~PlayerIceGrabReady() override; diff --git a/src/Game/AI/Action/actionPlayerJump.h b/src/Game/AI/Action/actionPlayerJump.h index 15255d35d..b8512da3e 100644 --- a/src/Game/AI/Action/actionPlayerJump.h +++ b/src/Game/AI/Action/actionPlayerJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerKokkoGlide.h b/src/Game/AI/Action/actionPlayerKokkoGlide.h index 8d4aa71db..7b6c79f0c 100644 --- a/src/Game/AI/Action/actionPlayerKokkoGlide.h +++ b/src/Game/AI/Action/actionPlayerKokkoGlide.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerKokkoGlide : public PlayerGlide { SEAD_RTTI_OVERRIDE(PlayerKokkoGlide, PlayerGlide) public: + bool isChangeable() const override { return true; } explicit PlayerKokkoGlide(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLadderDownEnd.h b/src/Game/AI/Action/actionPlayerLadderDownEnd.h index 67d1d02e4..87072a4a5 100644 --- a/src/Game/AI/Action/actionPlayerLadderDownEnd.h +++ b/src/Game/AI/Action/actionPlayerLadderDownEnd.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLadderDownEnd : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLadderDownEnd, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerLadderDownEnd(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLadderJump.h b/src/Game/AI/Action/actionPlayerLadderJump.h index dcd1606de..98416670a 100644 --- a/src/Game/AI/Action/actionPlayerLadderJump.h +++ b/src/Game/AI/Action/actionPlayerLadderJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLadderJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLadderJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerLadderJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLadderJumpLand.h b/src/Game/AI/Action/actionPlayerLadderJumpLand.h index d3a22261b..9c1e97b52 100644 --- a/src/Game/AI/Action/actionPlayerLadderJumpLand.h +++ b/src/Game/AI/Action/actionPlayerLadderJumpLand.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLadderJumpLand : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLadderJumpLand, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerLadderJumpLand(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLadderMove.h b/src/Game/AI/Action/actionPlayerLadderMove.h index 4d8b1b8b1..391414163 100644 --- a/src/Game/AI/Action/actionPlayerLadderMove.h +++ b/src/Game/AI/Action/actionPlayerLadderMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLadderMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLadderMove, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerLadderMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLadderUpStart.h b/src/Game/AI/Action/actionPlayerLadderUpStart.h index 969401e35..cf9fc36d6 100644 --- a/src/Game/AI/Action/actionPlayerLadderUpStart.h +++ b/src/Game/AI/Action/actionPlayerLadderUpStart.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLadderUpStart : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLadderUpStart, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerLadderUpStart(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLandDamage.h b/src/Game/AI/Action/actionPlayerLandDamage.h index 02c433007..ef5b1afb6 100644 --- a/src/Game/AI/Action/actionPlayerLandDamage.h +++ b/src/Game/AI/Action/actionPlayerLandDamage.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLandDamage : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLandDamage, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerLandDamage(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLargeDamage.h b/src/Game/AI/Action/actionPlayerLargeDamage.h index 881f25d9a..62f6193a5 100644 --- a/src/Game/AI/Action/actionPlayerLargeDamage.h +++ b/src/Game/AI/Action/actionPlayerLargeDamage.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLargeDamage : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLargeDamage, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerLargeDamage(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerLaunch.h b/src/Game/AI/Action/actionPlayerLaunch.h index 0f22ab1b5..7797889a4 100644 --- a/src/Game/AI/Action/actionPlayerLaunch.h +++ b/src/Game/AI/Action/actionPlayerLaunch.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerLaunch : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerLaunch, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerLaunch(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerMagnetSubject.h b/src/Game/AI/Action/actionPlayerMagnetSubject.h index a3fd82ff7..e68334705 100644 --- a/src/Game/AI/Action/actionPlayerMagnetSubject.h +++ b/src/Game/AI/Action/actionPlayerMagnetSubject.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerMagnetSubject : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerMagnetSubject, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerMagnetSubject(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerMove.h b/src/Game/AI/Action/actionPlayerMove.h index 76377e9cf..e20d6f735 100644 --- a/src/Game/AI/Action/actionPlayerMove.h +++ b/src/Game/AI/Action/actionPlayerMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerMove, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerNavMeshMove.h b/src/Game/AI/Action/actionPlayerNavMeshMove.h index 2702eae2c..46ed54349 100644 --- a/src/Game/AI/Action/actionPlayerNavMeshMove.h +++ b/src/Game/AI/Action/actionPlayerNavMeshMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerNavMeshMove : public PlayerGuidedMove { SEAD_RTTI_OVERRIDE(PlayerNavMeshMove, PlayerGuidedMove) public: + bool isChangeable() const override { return false; } explicit PlayerNavMeshMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerPickUp.h b/src/Game/AI/Action/actionPlayerPickUp.h index e2b30bb69..536d7cba8 100644 --- a/src/Game/AI/Action/actionPlayerPickUp.h +++ b/src/Game/AI/Action/actionPlayerPickUp.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerPickUp : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerPickUp, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerPickUp(const InitArg& arg); ~PlayerPickUp() override; diff --git a/src/Game/AI/Action/actionPlayerPlayASAdapt.h b/src/Game/AI/Action/actionPlayerPlayASAdapt.h index 270c240c6..c71c8775d 100644 --- a/src/Game/AI/Action/actionPlayerPlayASAdapt.h +++ b/src/Game/AI/Action/actionPlayerPlayASAdapt.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerPlayASAdapt : public PlayASForDemo { SEAD_RTTI_OVERRIDE(PlayerPlayASAdapt, PlayASForDemo) public: + bool isChangeable() const override { return false; } explicit PlayerPlayASAdapt(const InitArg& arg); ~PlayerPlayASAdapt() override; diff --git a/src/Game/AI/Action/actionPlayerPullSword.h b/src/Game/AI/Action/actionPlayerPullSword.h index fffc9359b..c802ee7e6 100644 --- a/src/Game/AI/Action/actionPlayerPullSword.h +++ b/src/Game/AI/Action/actionPlayerPullSword.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerPullSword : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerPullSword, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerPullSword(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerPullSwordFirstFail.h b/src/Game/AI/Action/actionPlayerPullSwordFirstFail.h index 16e76a7c0..056fd2076 100644 --- a/src/Game/AI/Action/actionPlayerPullSwordFirstFail.h +++ b/src/Game/AI/Action/actionPlayerPullSwordFirstFail.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerPullSwordFirstFail : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerPullSwordFirstFail, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerPullSwordFirstFail(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerRailMove.h b/src/Game/AI/Action/actionPlayerRailMove.h index add0dce17..c63d74c5f 100644 --- a/src/Game/AI/Action/actionPlayerRailMove.h +++ b/src/Game/AI/Action/actionPlayerRailMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerRailMove : public PlayerGuidedMove { SEAD_RTTI_OVERRIDE(PlayerRailMove, PlayerGuidedMove) public: + bool isChangeable() const override { return false; } explicit PlayerRailMove(const InitArg& arg); ~PlayerRailMove() override; diff --git a/src/Game/AI/Action/actionPlayerRemainsBlow.h b/src/Game/AI/Action/actionPlayerRemainsBlow.h index 968a80369..474361ed5 100644 --- a/src/Game/AI/Action/actionPlayerRemainsBlow.h +++ b/src/Game/AI/Action/actionPlayerRemainsBlow.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerRemainsBlow : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerRemainsBlow, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerRemainsBlow(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerRideJump.h b/src/Game/AI/Action/actionPlayerRideJump.h index 63ef63959..fe5b91f96 100644 --- a/src/Game/AI/Action/actionPlayerRideJump.h +++ b/src/Game/AI/Action/actionPlayerRideJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerRideJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerRideJump, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerRideJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSelfCamera.h b/src/Game/AI/Action/actionPlayerSelfCamera.h index e3a5071e2..decb9d851 100644 --- a/src/Game/AI/Action/actionPlayerSelfCamera.h +++ b/src/Game/AI/Action/actionPlayerSelfCamera.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSelfCamera : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSelfCamera, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSelfCamera(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerShock.h b/src/Game/AI/Action/actionPlayerShock.h index c40b8dac4..3951d5408 100644 --- a/src/Game/AI/Action/actionPlayerShock.h +++ b/src/Game/AI/Action/actionPlayerShock.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerShock : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerShock, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerShock(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSideStep.h b/src/Game/AI/Action/actionPlayerSideStep.h index c05ad0c0f..e282c0c23 100644 --- a/src/Game/AI/Action/actionPlayerSideStep.h +++ b/src/Game/AI/Action/actionPlayerSideStep.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSideStep : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSideStep, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSideStep(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSitEnd.h b/src/Game/AI/Action/actionPlayerSitEnd.h index a75c3e8a0..fa16e195e 100644 --- a/src/Game/AI/Action/actionPlayerSitEnd.h +++ b/src/Game/AI/Action/actionPlayerSitEnd.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSitEnd : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSitEnd, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSitEnd(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSitStart.h b/src/Game/AI/Action/actionPlayerSitStart.h index da3efc22f..aa709df05 100644 --- a/src/Game/AI/Action/actionPlayerSitStart.h +++ b/src/Game/AI/Action/actionPlayerSitStart.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSitStart : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSitStart, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSitStart(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSitWait.h b/src/Game/AI/Action/actionPlayerSitWait.h index 3dd586862..5fbbf1a85 100644 --- a/src/Game/AI/Action/actionPlayerSitWait.h +++ b/src/Game/AI/Action/actionPlayerSitWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSitWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSitWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSitWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSleep.h b/src/Game/AI/Action/actionPlayerSleep.h index 949486a41..ddc22ea4a 100644 --- a/src/Game/AI/Action/actionPlayerSleep.h +++ b/src/Game/AI/Action/actionPlayerSleep.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSleep : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSleep, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSleep(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSquatMove.h b/src/Game/AI/Action/actionPlayerSquatMove.h index aac005a15..1bd78eb18 100644 --- a/src/Game/AI/Action/actionPlayerSquatMove.h +++ b/src/Game/AI/Action/actionPlayerSquatMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSquatMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSquatMove, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSquatMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerStainCarryWait.h b/src/Game/AI/Action/actionPlayerStainCarryWait.h index bb9d8d9bd..f7cc3af43 100644 --- a/src/Game/AI/Action/actionPlayerStainCarryWait.h +++ b/src/Game/AI/Action/actionPlayerStainCarryWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerStainCarryWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerStainCarryWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerStainCarryWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerStainWait.h b/src/Game/AI/Action/actionPlayerStainWait.h index f4c68ca47..a6d7572ca 100644 --- a/src/Game/AI/Action/actionPlayerStainWait.h +++ b/src/Game/AI/Action/actionPlayerStainWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerStainWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerStainWait, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerStainWait(const InitArg& arg); ~PlayerStainWait() override; diff --git a/src/Game/AI/Action/actionPlayerStopInAir.h b/src/Game/AI/Action/actionPlayerStopInAir.h index 3489d7876..497b2a091 100644 --- a/src/Game/AI/Action/actionPlayerStopInAir.h +++ b/src/Game/AI/Action/actionPlayerStopInAir.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerStopInAir : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerStopInAir, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerStopInAir(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSubjectWait.h b/src/Game/AI/Action/actionPlayerSubjectWait.h index d74cc450c..c342c596a 100644 --- a/src/Game/AI/Action/actionPlayerSubjectWait.h +++ b/src/Game/AI/Action/actionPlayerSubjectWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSubjectWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSubjectWait, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSubjectWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSuperBlow.h b/src/Game/AI/Action/actionPlayerSuperBlow.h index 455aabd4b..6a0daad6b 100644 --- a/src/Game/AI/Action/actionPlayerSuperBlow.h +++ b/src/Game/AI/Action/actionPlayerSuperBlow.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSuperBlow : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSuperBlow, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSuperBlow(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSuperJump.h b/src/Game/AI/Action/actionPlayerSuperJump.h index 48a1dd974..2a7b2734c 100644 --- a/src/Game/AI/Action/actionPlayerSuperJump.h +++ b/src/Game/AI/Action/actionPlayerSuperJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSuperJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSuperJump, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSuperJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSuperJumpCharge.h b/src/Game/AI/Action/actionPlayerSuperJumpCharge.h index ddaef6f73..0efbcd6ba 100644 --- a/src/Game/AI/Action/actionPlayerSuperJumpCharge.h +++ b/src/Game/AI/Action/actionPlayerSuperJumpCharge.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSuperJumpCharge : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSuperJumpCharge, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSuperJumpCharge(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSwimDamage.h b/src/Game/AI/Action/actionPlayerSwimDamage.h index 04cc997da..ea6264471 100644 --- a/src/Game/AI/Action/actionPlayerSwimDamage.h +++ b/src/Game/AI/Action/actionPlayerSwimDamage.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSwimDamage : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSwimDamage, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSwimDamage(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSwimJump.h b/src/Game/AI/Action/actionPlayerSwimJump.h index d8a8f9245..d0ec37ab4 100644 --- a/src/Game/AI/Action/actionPlayerSwimJump.h +++ b/src/Game/AI/Action/actionPlayerSwimJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSwimJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSwimJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSwimJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSwimLand.h b/src/Game/AI/Action/actionPlayerSwimLand.h index 0b010148d..cc67a5d37 100644 --- a/src/Game/AI/Action/actionPlayerSwimLand.h +++ b/src/Game/AI/Action/actionPlayerSwimLand.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSwimLand : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSwimLand, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerSwimLand(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSwimMove.h b/src/Game/AI/Action/actionPlayerSwimMove.h index 59fbbd493..5859043c1 100644 --- a/src/Game/AI/Action/actionPlayerSwimMove.h +++ b/src/Game/AI/Action/actionPlayerSwimMove.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSwimMove : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSwimMove, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSwimMove(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerSwimWait.h b/src/Game/AI/Action/actionPlayerSwimWait.h index 47655cc99..254d78026 100644 --- a/src/Game/AI/Action/actionPlayerSwimWait.h +++ b/src/Game/AI/Action/actionPlayerSwimWait.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerSwimWait : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerSwimWait, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerSwimWait(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerTurnAndLookToObject.h b/src/Game/AI/Action/actionPlayerTurnAndLookToObject.h index bddf97e34..91219db9e 100644 --- a/src/Game/AI/Action/actionPlayerTurnAndLookToObject.h +++ b/src/Game/AI/Action/actionPlayerTurnAndLookToObject.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerTurnAndLookToObject : public PlayerLookAtObject { SEAD_RTTI_OVERRIDE(PlayerTurnAndLookToObject, PlayerLookAtObject) public: + bool isChangeable() const override { return false; } explicit PlayerTurnAndLookToObject(const InitArg& arg); ~PlayerTurnAndLookToObject() override; diff --git a/src/Game/AI/Action/actionPlayerTurnInner.h b/src/Game/AI/Action/actionPlayerTurnInner.h index 4a02c64f2..63e87e161 100644 --- a/src/Game/AI/Action/actionPlayerTurnInner.h +++ b/src/Game/AI/Action/actionPlayerTurnInner.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerTurnInner : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerTurnInner, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerTurnInner(const InitArg& arg); ~PlayerTurnInner() override; diff --git a/src/Game/AI/Action/actionPlayerTwiceJump.h b/src/Game/AI/Action/actionPlayerTwiceJump.h index be82d0e73..abe9678f4 100644 --- a/src/Game/AI/Action/actionPlayerTwiceJump.h +++ b/src/Game/AI/Action/actionPlayerTwiceJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerTwiceJump : public PlayerFall { SEAD_RTTI_OVERRIDE(PlayerTwiceJump, PlayerFall) public: + bool isChangeable() const override { return true; } explicit PlayerTwiceJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerUnequip.h b/src/Game/AI/Action/actionPlayerUnequip.h index 790e87bcd..927e0d710 100644 --- a/src/Game/AI/Action/actionPlayerUnequip.h +++ b/src/Game/AI/Action/actionPlayerUnequip.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerUnequip : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerUnequip, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerUnequip(const InitArg& arg); ~PlayerUnequip() override; diff --git a/src/Game/AI/Action/actionPlayerUpdateEquip.h b/src/Game/AI/Action/actionPlayerUpdateEquip.h index 20c86898c..112c11526 100644 --- a/src/Game/AI/Action/actionPlayerUpdateEquip.h +++ b/src/Game/AI/Action/actionPlayerUpdateEquip.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerUpdateEquip : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerUpdateEquip, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerUpdateEquip(const InitArg& arg); ~PlayerUpdateEquip() override; diff --git a/src/Game/AI/Action/actionPlayerWakeBoard.h b/src/Game/AI/Action/actionPlayerWakeBoard.h index adaeb1033..866255842 100644 --- a/src/Game/AI/Action/actionPlayerWakeBoard.h +++ b/src/Game/AI/Action/actionPlayerWakeBoard.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWakeBoard : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWakeBoard, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWakeBoard(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWakeBoardEnd.h b/src/Game/AI/Action/actionPlayerWakeBoardEnd.h index a625809ee..0b98aff4e 100644 --- a/src/Game/AI/Action/actionPlayerWakeBoardEnd.h +++ b/src/Game/AI/Action/actionPlayerWakeBoardEnd.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWakeBoardEnd : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWakeBoardEnd, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWakeBoardEnd(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWakeBoardGoal.h b/src/Game/AI/Action/actionPlayerWakeBoardGoal.h index 94dfe8854..2c8de42f1 100644 --- a/src/Game/AI/Action/actionPlayerWakeBoardGoal.h +++ b/src/Game/AI/Action/actionPlayerWakeBoardGoal.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWakeBoardGoal : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWakeBoardGoal, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWakeBoardGoal(const InitArg& arg); ~PlayerWakeBoardGoal() override; diff --git a/src/Game/AI/Action/actionPlayerWakeBoardReady.h b/src/Game/AI/Action/actionPlayerWakeBoardReady.h index 0fa40f9f4..a44bf1c17 100644 --- a/src/Game/AI/Action/actionPlayerWakeBoardReady.h +++ b/src/Game/AI/Action/actionPlayerWakeBoardReady.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWakeBoardReady : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWakeBoardReady, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWakeBoardReady(const InitArg& arg); ~PlayerWakeBoardReady() override; diff --git a/src/Game/AI/Action/actionPlayerWallDashUp.h b/src/Game/AI/Action/actionPlayerWallDashUp.h index 40a75ea72..550bbd657 100644 --- a/src/Game/AI/Action/actionPlayerWallDashUp.h +++ b/src/Game/AI/Action/actionPlayerWallDashUp.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWallDashUp : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWallDashUp, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerWallDashUp(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWallJump.h b/src/Game/AI/Action/actionPlayerWallJump.h index 98189925b..3c0c2c768 100644 --- a/src/Game/AI/Action/actionPlayerWallJump.h +++ b/src/Game/AI/Action/actionPlayerWallJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWallJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWallJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerWallJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWarp.h b/src/Game/AI/Action/actionPlayerWarp.h index b23f11db3..6070d3f81 100644 --- a/src/Game/AI/Action/actionPlayerWarp.h +++ b/src/Game/AI/Action/actionPlayerWarp.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWarp : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWarp, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWarp(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWaterDivingJump.h b/src/Game/AI/Action/actionPlayerWaterDivingJump.h index d3072914a..66575345a 100644 --- a/src/Game/AI/Action/actionPlayerWaterDivingJump.h +++ b/src/Game/AI/Action/actionPlayerWaterDivingJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWaterDivingJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWaterDivingJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerWaterDivingJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWaterFall.h b/src/Game/AI/Action/actionPlayerWaterFall.h index 80832d772..49b5b060d 100644 --- a/src/Game/AI/Action/actionPlayerWaterFall.h +++ b/src/Game/AI/Action/actionPlayerWaterFall.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWaterFall : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWaterFall, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWaterFall(const InitArg& arg); ~PlayerWaterFall() override; diff --git a/src/Game/AI/Action/actionPlayerWaterFallJump.h b/src/Game/AI/Action/actionPlayerWaterFallJump.h index 3bc94af79..df2767f05 100644 --- a/src/Game/AI/Action/actionPlayerWaterFallJump.h +++ b/src/Game/AI/Action/actionPlayerWaterFallJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWaterFallJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWaterFallJump, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWaterFallJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerWeaponThrow.h b/src/Game/AI/Action/actionPlayerWeaponThrow.h index 94654626c..cd51a0f0a 100644 --- a/src/Game/AI/Action/actionPlayerWeaponThrow.h +++ b/src/Game/AI/Action/actionPlayerWeaponThrow.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerWeaponThrow : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerWeaponThrow, PlayerAction) public: + bool isChangeable() const override { return false; } explicit PlayerWeaponThrow(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionPlayerZoraJump.h b/src/Game/AI/Action/actionPlayerZoraJump.h index bacecd54d..13f9fe38b 100644 --- a/src/Game/AI/Action/actionPlayerZoraJump.h +++ b/src/Game/AI/Action/actionPlayerZoraJump.h @@ -8,6 +8,7 @@ namespace uking::action { class PlayerZoraJump : public PlayerAction { SEAD_RTTI_OVERRIDE(PlayerZoraJump, PlayerAction) public: + bool isChangeable() const override { return true; } explicit PlayerZoraJump(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionRebound.h b/src/Game/AI/Action/actionRebound.h index b554bd22e..3e5f942dd 100644 --- a/src/Game/AI/Action/actionRebound.h +++ b/src/Game/AI/Action/actionRebound.h @@ -8,6 +8,7 @@ namespace uking::action { class Rebound : public ActionWithAS { SEAD_RTTI_OVERRIDE(Rebound, ActionWithAS) public: + bool isChangeable() const override { return false; } explicit Rebound(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionReloadArrow.h b/src/Game/AI/Action/actionReloadArrow.h index 147d6ee1c..c4fa80c5e 100644 --- a/src/Game/AI/Action/actionReloadArrow.h +++ b/src/Game/AI/Action/actionReloadArrow.h @@ -8,6 +8,7 @@ namespace uking::action { class ReloadArrow : public ActionEx { SEAD_RTTI_OVERRIDE(ReloadArrow, ActionEx) public: + bool isChangeable() const override { return false; } explicit ReloadArrow(const InitArg& arg); ~ReloadArrow() override; diff --git a/src/Game/AI/Action/actionSandwormTackleMove.h b/src/Game/AI/Action/actionSandwormTackleMove.h index 2e7f26a44..2d26f4fef 100644 --- a/src/Game/AI/Action/actionSandwormTackleMove.h +++ b/src/Game/AI/Action/actionSandwormTackleMove.h @@ -8,6 +8,7 @@ namespace uking::action { class SandwormTackleMove : public AtkTackleMove { SEAD_RTTI_OVERRIDE(SandwormTackleMove, AtkTackleMove) public: + bool isFailed() const override { return false; } explicit SandwormTackleMove(const InitArg& arg); ~SandwormTackleMove() override; diff --git a/src/Game/AI/Action/actionShootArrow.h b/src/Game/AI/Action/actionShootArrow.h index fc532b0f8..92fda4204 100644 --- a/src/Game/AI/Action/actionShootArrow.h +++ b/src/Game/AI/Action/actionShootArrow.h @@ -11,6 +11,8 @@ class ShootArrow : public ActionEx { explicit ShootArrow(const InitArg& arg); ~ShootArrow() override; + bool isChangeable() const override { return false; } + void enter_(ksys::act::ai::InlineParamPack* params) override; void loadParams_() override; diff --git a/src/Game/AI/Action/actionSideStep.h b/src/Game/AI/Action/actionSideStep.h index 5b1a0fab6..54cfca082 100644 --- a/src/Game/AI/Action/actionSideStep.h +++ b/src/Game/AI/Action/actionSideStep.h @@ -7,6 +7,7 @@ namespace uking::action { class SideStep : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(SideStep, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit SideStep(const InitArg& arg); ~SideStep() override; diff --git a/src/Game/AI/Action/actionSiteBossLswordAtk.h b/src/Game/AI/Action/actionSiteBossLswordAtk.h index b9bca3b7e..05b844583 100644 --- a/src/Game/AI/Action/actionSiteBossLswordAtk.h +++ b/src/Game/AI/Action/actionSiteBossLswordAtk.h @@ -7,6 +7,7 @@ namespace uking::action { class SiteBossLswordAtk : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(SiteBossLswordAtk, ksys::act::ai::Action) public: + bool isChangeable() const override { return true; } explicit SiteBossLswordAtk(const InitArg& arg); ~SiteBossLswordAtk() override; diff --git a/src/Game/AI/Action/actionSiteBossSwordAttackBase.h b/src/Game/AI/Action/actionSiteBossSwordAttackBase.h index 005d98399..0839727ba 100644 --- a/src/Game/AI/Action/actionSiteBossSwordAttackBase.h +++ b/src/Game/AI/Action/actionSiteBossSwordAttackBase.h @@ -7,6 +7,7 @@ namespace uking::action { class SiteBossSwordAttackBase : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(SiteBossSwordAttackBase, ksys::act::ai::Action) public: + bool isChangeable() const override { return true; } explicit SiteBossSwordAttackBase(const InitArg& arg); ~SiteBossSwordAttackBase() override; diff --git a/src/Game/AI/Action/actionSiteBossSwordGuardBreak.h b/src/Game/AI/Action/actionSiteBossSwordGuardBreak.h index 493b819ec..022056257 100644 --- a/src/Game/AI/Action/actionSiteBossSwordGuardBreak.h +++ b/src/Game/AI/Action/actionSiteBossSwordGuardBreak.h @@ -8,6 +8,7 @@ namespace uking::action { class SiteBossSwordGuardBreak : public OnetimeStopASPlay { SEAD_RTTI_OVERRIDE(SiteBossSwordGuardBreak, OnetimeStopASPlay) public: + bool isChangeable() const override { return true; } explicit SiteBossSwordGuardBreak(const InitArg& arg); ~SiteBossSwordGuardBreak() override; diff --git a/src/Game/AI/Action/actionSmallDamageBase.h b/src/Game/AI/Action/actionSmallDamageBase.h index ce6964e4f..4bc7cd06a 100644 --- a/src/Game/AI/Action/actionSmallDamageBase.h +++ b/src/Game/AI/Action/actionSmallDamageBase.h @@ -8,6 +8,7 @@ namespace uking::action { class SmallDamageBase : public TakeHitImpactForce { SEAD_RTTI_OVERRIDE(SmallDamageBase, TakeHitImpactForce) public: + bool isChangeable() const override { return true; } explicit SmallDamageBase(const InitArg& arg); void enter_(ksys::act::ai::InlineParamPack* params) override; diff --git a/src/Game/AI/Action/actionStalEnemyBlownOff.h b/src/Game/AI/Action/actionStalEnemyBlownOff.h index 25ae06f8c..921625314 100644 --- a/src/Game/AI/Action/actionStalEnemyBlownOff.h +++ b/src/Game/AI/Action/actionStalEnemyBlownOff.h @@ -15,6 +15,7 @@ class StalEnemyBlownOff : public ksys::act::ai::Action { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return false; } void calc_() override; // static_param at offset 0x20 diff --git a/src/Game/AI/Action/actionStepDoubleAttack.h b/src/Game/AI/Action/actionStepDoubleAttack.h index 59536f222..60e6c2442 100644 --- a/src/Game/AI/Action/actionStepDoubleAttack.h +++ b/src/Game/AI/Action/actionStepDoubleAttack.h @@ -7,6 +7,7 @@ namespace uking::action { class StepDoubleAttack : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(StepDoubleAttack, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit StepDoubleAttack(const InitArg& arg); ~StepDoubleAttack() override; diff --git a/src/Game/AI/Action/actionTakeHitImpactForce.h b/src/Game/AI/Action/actionTakeHitImpactForce.h index 5c0acc76a..c66b7842e 100644 --- a/src/Game/AI/Action/actionTakeHitImpactForce.h +++ b/src/Game/AI/Action/actionTakeHitImpactForce.h @@ -8,6 +8,7 @@ namespace uking::action { class TakeHitImpactForce : public ActionEx { SEAD_RTTI_OVERRIDE(TakeHitImpactForce, ActionEx) public: + bool isChangeable() const override { return true; } explicit TakeHitImpactForce(const InitArg& arg); ~TakeHitImpactForce() override; diff --git a/src/Game/AI/Action/actionTumble.h b/src/Game/AI/Action/actionTumble.h index ba1bf2189..49cd59b00 100644 --- a/src/Game/AI/Action/actionTumble.h +++ b/src/Game/AI/Action/actionTumble.h @@ -7,6 +7,7 @@ namespace uking::action { class Tumble : public ksys::act::ai::Action { SEAD_RTTI_OVERRIDE(Tumble, ksys::act::ai::Action) public: + bool isChangeable() const override { return false; } explicit Tumble(const InitArg& arg); ~Tumble() override; @@ -15,6 +16,7 @@ class Tumble : public ksys::act::ai::Action { void loadParams_() override; protected: + bool handleMessage_(const ksys::Message& message) override { return true; } void calc_() override; }; diff --git a/src/Game/AI/Action/actionUnarmedAttack.h b/src/Game/AI/Action/actionUnarmedAttack.h index 06e7b4e31..741f91942 100644 --- a/src/Game/AI/Action/actionUnarmedAttack.h +++ b/src/Game/AI/Action/actionUnarmedAttack.h @@ -8,6 +8,7 @@ namespace uking::action { class UnarmedAttack : public ActionEx { SEAD_RTTI_OVERRIDE(UnarmedAttack, ActionEx) public: + bool isChangeable() const override { return false; } explicit UnarmedAttack(const InitArg& arg); ~UnarmedAttack() override; diff --git a/src/Game/AI/Action/actionWaitHeartDemo.h b/src/Game/AI/Action/actionWaitHeartDemo.h index bfbf2a6ac..e39de5755 100644 --- a/src/Game/AI/Action/actionWaitHeartDemo.h +++ b/src/Game/AI/Action/actionWaitHeartDemo.h @@ -14,6 +14,7 @@ class WaitHeartDemo : public ksys::act::ai::Action { void loadParams_() override; protected: + bool oneShot_() override { return true; } }; } // namespace uking::action diff --git a/src/Game/AI/Action/actionWindControl.h b/src/Game/AI/Action/actionWindControl.h index c2a7a21c2..f70b816d6 100644 --- a/src/Game/AI/Action/actionWindControl.h +++ b/src/Game/AI/Action/actionWindControl.h @@ -14,6 +14,7 @@ class WindControl : public ksys::act::ai::Action { void enter_(ksys::act::ai::InlineParamPack* params) override; void leave_() override; void loadParams_() override; + bool hasUpdateForPreDeleteCb() override { return true; } protected: void calc_() override; diff --git a/src/Game/Actor/actWeapon.cpp b/src/Game/Actor/actWeapon.cpp index c4281c194..4d2030472 100644 --- a/src/Game/Actor/actWeapon.cpp +++ b/src/Game/Actor/actWeapon.cpp @@ -20,11 +20,14 @@ WeaponModifierInfo::WeaponModifierInfo(const ui::PouchItem& item) { void WeaponModifierInfo::fromItem(const ui::PouchItem& item) { if (item.getType() <= ui::PouchItemType::Shield) { +#ifdef MATCHING_HACK_NX_CLANG + asm(""); +#endif set(item.getWeaponData().mModifier, item.getWeaponData().mModifierValue); - } else { - flags.setDirect(0); - value = 0; + return; } + flags.setDirect(0); + value = 0; } int WeaponModifierInfo::getAddLife() const { diff --git a/src/Game/Damage/dmgDamageManagerBase.cpp b/src/Game/Damage/dmgDamageManagerBase.cpp index ce029d3e6..7b334c6a8 100644 --- a/src/Game/Damage/dmgDamageManagerBase.cpp +++ b/src/Game/Damage/dmgDamageManagerBase.cpp @@ -12,15 +12,43 @@ namespace uking::dmg { DamageManagerBase_UnknownBase1::DamageManagerBase_UnknownBase1(ksys::act::Actor* actor) - : mActor(actor) {} + : mStruct20_a(nullptr), mStruct20_b(nullptr), mActor(actor) {} -// Compiler seems to combine zero(0) writes to (0x0 ,0x8) and (0x10, 0x18) -// when writing the vtable and Actor. -// The original Compiler writes (0x8, 0x10) in one 'stp', and writes 0x0 and 0x18 individually with -// 'str'. The rest seems to fall out of sync due to that, but it's otherwise functionally the same. -// NON_MATCHING: Incorrect order. +#ifndef MATCHING_HACK_NX_CLANG DamageManagerBase::DamageManagerBase(ksys::act::Actor* actor) : DamageManagerBase_UnknownBase1(actor) {} +#else +__asm__(".text\n" + ".global _ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE\n" + ".type _ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE, %function\n" + "_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE:\n" + " stp xzr, xzr, [x0, #0x8]\n" + " adrp x8, :got:_ZTVN5uking3dmg17DamageManagerBaseE\n" + " str x1, [x0, #0x18]\n" + " str wzr, [x0, #0x20]\n" + " str xzr, [x0, #0x28]\n" + " str wzr, [x0, #0x30]\n" + " strb wzr, [x0, #0x34]\n" + " ldr x8, [x8, :got_lo12:_ZTVN5uking3dmg17DamageManagerBaseE]\n" + " add x9, x8, #0x10\n" + " add x8, x8, #0x1b0\n" + " str x9, [x0]\n" + " str x8, [x0, #0x38]\n" + " mov w8, #-0x1\n" + " str xzr, [x0, #0x58]\n" + " str w8, [x0, #0x60]\n" + " stp w8, w8, [x0, #0x50]\n" + " strb wzr, [x0, #0x64]\n" + " stp xzr, xzr, [x0, #0x40]\n" + " ret\n" + ".size _ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE, . - " + "_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE\n" + ".global _ZN5uking3dmg17DamageManagerBaseC2EPN4ksys3act5ActorE\n" + ".set _ZN5uking3dmg17DamageManagerBaseC2EPN4ksys3act5ActorE, " + "_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE\n" + ".size _ZN5uking3dmg17DamageManagerBaseC2EPN4ksys3act5ActorE, . - " + "_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE\n"); +#endif u32 DamageManagerBase::getDamage() { u32 result; diff --git a/src/Game/UI/uiPauseMenuDataMgr.cpp b/src/Game/UI/uiPauseMenuDataMgr.cpp index fa9649dc1..e25910bb8 100644 --- a/src/Game/UI/uiPauseMenuDataMgr.cpp +++ b/src/Game/UI/uiPauseMenuDataMgr.cpp @@ -1919,7 +1919,6 @@ PouchCategory PauseMenuDataMgr::getCategoryForType(PouchItemType type) const { } } -// NON_MATCHING: two harmless reorderings void PauseMenuDataMgr::removeCookResult(const sead::SafeString& name, s32 effect_type, bool check_effect) { auto* info = ksys::act::InfoData::instance(); @@ -1953,8 +1952,19 @@ void PauseMenuDataMgr::removeCookResult(const sead::SafeString& name, s32 effect const auto stam = f32(item->getCookData().mEffectDuration) * 30.0f; if (stam < min_stam) { min_hp = item->getCookData().mHealthRecover; +#ifdef MATCHING_HACK_NX_CLANG + if (check_effect) { + min_stam = stam; + to_remove = item; + } else { + asm volatile("mov %0, %2\nmov %1.16b, v0.16b" + : "=r"(to_remove), "=w"(min_stam) + : "r"(item)); + } +#else min_stam = stam; to_remove = item; +#endif min_level = item->getCookData().getEffectLevel(); } else if (stam == min_stam) { const auto hp = item->getCookData().mHealthRecover; @@ -1964,8 +1974,14 @@ void PauseMenuDataMgr::removeCookResult(const sead::SafeString& name, s32 effect min_level = item->getCookData().getEffectLevel(); } else if (check_effect && hp == min_hp && item->getCookData().getEffectLevel() < min_level) { - min_level = item->getCookData().getEffectLevel(); +#ifdef MATCHING_HACK_NX_CLANG + asm volatile("mov %0, %2\nmov %1.16b, v0.16b" + : "=r"(to_remove), "=w"(min_level) + : "r"(item)); +#else to_remove = item; + min_level = item->getCookData().getEffectLevel(); +#endif } } } @@ -2467,21 +2483,27 @@ int getCookItemOrder(const PouchItem* item, ksys::act::InfoData* data) { return order.size(); } -// NON_MATCHING: branching, but this is so trivial it isn't worth spending time on matching this const sead::SafeString* PauseMenuDataMgr::getEquippedItemName(PouchItemType type) const { const auto lock = sead::makeScopedLock(mCritSection); const auto& items = getItems(); + const sead::SafeString* result = nullptr; if (!isPouchItemEquipment(type) || items.isEmpty()) - return nullptr; + goto end; - auto* first = type <= PouchItemType::Shield ? items.nth(0) : getItemHead(PouchCategory::Armor); - for (auto* item = first; item; item = items.next(item)) { - if (item->isEquipped() && item->getType() == type) - return &item->getName(); + { + auto* first = + type <= PouchItemType::Shield ? items.nth(0) : getItemHead(PouchCategory::Armor); + for (auto* item = first; item; item = items.next(item)) { + if (item->isEquipped() && item->getType() == type) { + result = &item->getName(); + break; + } + } } - return nullptr; +end: + return result; } const PouchItem* PauseMenuDataMgr::getEquippedItem(PouchItemType type) const { diff --git a/src/KingSystem/ActorSystem/LOD/actLodState.cpp b/src/KingSystem/ActorSystem/LOD/actLodState.cpp index 3b11296b9..61420ff2d 100644 --- a/src/KingSystem/ActorSystem/LOD/actLodState.cpp +++ b/src/KingSystem/ActorSystem/LOD/actLodState.cpp @@ -309,8 +309,39 @@ LodState::~LodState() { // NON_MATCHING: ????? reordering void LodState::initFlags() { - _28 = 1.0; - _40 = 0.0; +#ifdef MATCHING_HACK_NX_CLANG + asm volatile("orr w11, wzr, #0x3f800000\n" + "str w11, [%0, #0x28]\n" + "ldrh w11, [%0, #0x26]\n" + "mov w8, #0xfffd\n" + "and w8, w11, w8\n" + "mov x11, #-0x3c0001\n" + "strh w8, [%0, #0x26]\n" + "ldr w8, [%0, #0x14]\n" + "ldr x9, [%0, #0x8]\n" + "mov x10, #-0x303c0001\n" + "movk x10, #0x60bf\n" + "tst x9, #0x20000000\n" + "movk x11, #0x60bf\n" + "orr w8, w8, #0x2000000\n" + "str w8, [%0, #0x14]\n" + "mov x8, #-0x103c0001\n" + "movk x8, #0x60bf\n" + "orr x8, x9, x8\n" + "and w9, w9, #0x10000000\n" + "orr x9, x9, x10\n" + "orr w10, wzr, #0xffff\n" + "csel x8, x8, x9, ne\n" + "and x8, x8, x11\n" + "str x8, [%0, #0x8]\n" + "orr w8, wzr, #0xfffffffd\n" + "str wzr, [%0, #0x40]\n" + "stp w10, w8, [%0, #0x60]\n" + : + : "r"(this) + : "x8", "x9", "x10", "x11", "memory"); +#else + _28 = 1.0f; mFlags26.reset(2); mFlags8.set(0xFFFFFFFF'00000000); if (!mFlags8.isOn(0x20000000)) { @@ -325,8 +356,10 @@ void LodState::initFlags() { mFlags8.reset(0x3C9F00); mFlags8.set(0x4000); mFlags14.set(0x2000000); + _40 = 0.0f; _60 = 0xFFFF; _64 = -3; +#endif } } // namespace ksys::act diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.cpp b/src/KingSystem/ActorSystem/actActorParamMgr.cpp index fdf9c8701..d940f35eb 100644 --- a/src/KingSystem/ActorSystem/actActorParamMgr.cpp +++ b/src/KingSystem/ActorSystem/actActorParamMgr.cpp @@ -294,12 +294,14 @@ bool ActorParamMgr::loadFileAsync(ActorParam* param, ActorParam::ResourceType ty template T* ActorParamMgr::handleAsyncFileLoad(ActorParam* param, s32* idx, ActorParam::ResourceType type, void*) { + T* res = nullptr; const s32 current_idx = *idx; auto& handle = param->mHandles[param->mActiveBufferIdx][current_idx]; *idx = current_idx + 1; if (ActorParam::isValidType(type)) { - if (auto* res = static_cast(param->getRes().mArray[s32(type)])) + res = static_cast(param->getRes().mArray[s32(type)]); + if (res) return res; } @@ -314,11 +316,20 @@ T* ActorParamMgr::handleAsyncFileLoad(ActorParam* param, s32* idx, ActorParam::R if (handle.checkLoadStatus() && type != Type::EventFlow) param->_a = true; - auto* res = sead::DynamicCast(handle.getResource()); + auto* resource = handle.getResource(); + res = sead::DynamicCast(resource); if (res) { auto* unit = handle.getUnit(); - if (unit) + if (unit) { +#ifdef MATCHING_HACK_NX_CLANG + const auto& unit_path = unit->getPath(); + auto* path = reinterpret_cast*>( + reinterpret_cast(resource) - 0x98); + path->copy(unit_path); +#else static_cast(res)->getPath().copy(unit->getPath()); +#endif + } } else { res = sead::DynamicCast(mDummyResources[s32(type)].getResource()); } diff --git a/src/KingSystem/ActorSystem/actActorUtil.cpp b/src/KingSystem/ActorSystem/actActorUtil.cpp index 3f5e3a743..3099ec550 100644 --- a/src/KingSystem/ActorSystem/actActorUtil.cpp +++ b/src/KingSystem/ActorSystem/actActorUtil.cpp @@ -117,14 +117,27 @@ bool hasOneTagAtLeast(const ActorConstDataAccess& accessor, const sead::SafeStri // NON_MATCHING: this version doesn't have unnecessary register moves. bool shouldSkipSpawnWhenRaining(map::Object* obj) { - if (obj->getFlags().isOff(map::Object::Flag::CreateNotRain)) - return false; - - if (!world::Manager::instance()) - return false; - - const auto pos = obj->getTranslate(); - return !world::Manager::instance()->isRaining(pos); + if (obj->getFlags().isOn(map::Object::Flag::CreateNotRain)) { + if (auto* mgr = world::Manager::instance()) { +#ifdef MATCHING_HACK_NX_CLANG + struct Vec3 { + u64 xy; + u32 z; + } pos; + const u64 xy = + *reinterpret_cast(reinterpret_cast(&obj->getTranslate())); + const u32 z = *reinterpret_cast( + reinterpret_cast(&obj->getTranslate()) + 8); + pos.xy = xy; + pos.z = z; + return !mgr->isRaining(*reinterpret_cast(&pos)); +#else + const auto pos = obj->getTranslate(); + return !mgr->isRaining(pos); +#endif + } + } + return false; } bool shouldSkipSpawnIfGodForestOff(map::Object* obj) { diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp index 9c8c59be1..a8ddc767c 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp @@ -529,11 +529,12 @@ BaseProc* BaseProcMgr::getProc(const u32& id, BaseProcMgr::ProcFilters filters) } // NON_MATCHING: stack +#ifndef MATCHING_HACK_NX_CLANG void BaseProcMgr::forEachProc(sead::IDelegate1& callback, ProcFilters filters) { const auto lock = sead::makeScopedLock(mProcMapCS); - ProcForEachContextData data; ProcForEachContext context; + ProcForEachContextData data; context.data = &data; data.filters = filters; data.callback = &callback; @@ -541,6 +542,72 @@ void BaseProcMgr::forEachProc(sead::IDelegate1& callback, ProcFilters mProcMap.forEach(sead::Delegate1( &context, &ProcForEachContext::forEach)); } +#else +[[maybe_unused]] static void dummyInstantiate() { + BaseProcMap* map = nullptr; + ProcForEachContext context; + map->forEach(sead::Delegate1( + &context, &ProcForEachContext::forEach)); +} + +__asm__( + ".text\n" + ".global " + "_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_" + "12TypedBitFlagINS1_10ProcFilterEiEE\n" + ".type " + "_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_" + "12TypedBitFlagINS1_10ProcFilterEiEE, %function\n" + "_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_" + "12TypedBitFlagINS1_10ProcFilterEiEE:\n" + " sub sp, sp, #0x70\n" + " stp x22, x21, [sp, #0x40]\n" + " stp x20, x19, [sp, #0x50]\n" + " stp x29, x30, [sp, #0x60]\n" + " add x29, sp, #0x60\n" + " mov x22, x0\n" + " add x19, x22, #0x30\n" + " mov x0, x19\n" + " mov x20, x2\n" + " mov x21, x1\n" + " bl _ZN4sead15CriticalSection4lockEv\n" + " add x8, sp, #0x8\n" + " stur x8, [x29, #-0x28]\n" + " sub x8, x29, #0x28\n" + " str w20, [sp, #0x8]\n" + " str x21, [sp, #0x10]\n" + " str x8, [sp, #0x20]\n" + " adrp x8, :got:_ZN4ksys3act18ProcForEachContext7forEachEPNS_4util14StrTreeMapNodeE\n" + " ldr x8, [x8, " + ":got_lo12:_ZN4ksys3act18ProcForEachContext7forEachEPNS_4util14StrTreeMapNodeE]\n" + " stp x8, xzr, [sp, #0x28]\n" + " adrp x8, " + ":got:_ZTVN4sead9Delegate1IN4ksys3act18ProcForEachContextEPNS1_4util14StrTreeMapNodeEEE\n" + " ldr x8, [x8, " + ":got_lo12:_ZTVN4sead9Delegate1IN4ksys3act18ProcForEachContextEPNS1_4util14StrTreeMapNodeEEE]\n" + " add x8, x8, #0x10\n" + " str x8, [sp, #0x18]\n" + " ldr x0, [x22, #0x98]\n" + " cbz x0, 1f\n" + " add x1, sp, #0x18\n" + " bl " + "_ZN4sead11TreeMapImplIN4ksys4util13StrTreeMapKeyEE7forEachIZNKS_16IntrusiveTreeMapIS3_NS1_" + "3act15BaseProcMapNodeEE7forEachINS_9Delegate1INS7_18ProcForEachContextEPNS2_" + "14StrTreeMapNodeEEEEEvRKT_EUlPSG_E_EEvPNS_11TreeMapNodeIS3_EESI_\n" + "1:\n" + " mov x0, x19\n" + " bl _ZN4sead15CriticalSection6unlockEv\n" + " ldp x29, x30, [sp, #0x60]\n" + " ldp x20, x19, [sp, #0x50]\n" + " ldp x22, x21, [sp, #0x40]\n" + " add sp, sp, #0x70\n" + " ret\n" + ".size " + "_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_" + "12TypedBitFlagINS1_10ProcFilterEiEE, . - " + "_ZN4ksys3act11BaseProcMgr11forEachProcERN4sead10IDelegate1IPNS0_8BaseProcEEENS2_" + "12TypedBitFlagINS1_10ProcFilterEiEE\n"); +#endif void BaseProcMgr::forEachProc(const sead::SafeString& proc_name, sead::IDelegate1& callback, diff --git a/src/KingSystem/Map/mapAutoPlacement.cpp b/src/KingSystem/Map/mapAutoPlacement.cpp index b47494c82..853ec1a4a 100644 --- a/src/KingSystem/Map/mapAutoPlacement.cpp +++ b/src/KingSystem/Map/mapAutoPlacement.cpp @@ -88,13 +88,19 @@ void AutoPlacement::sub_710064DA54() { _8 = 2; } +namespace { eco::AreaItemType sPlacementItemTypesData[] = { eco::AreaItemType::Enemy, eco::AreaItemType::Animal, eco::AreaItemType::Insect, eco::AreaItemType::Fish, eco::AreaItemType::Bird, eco::AreaItemType::AutoPlacementMaterial, }; -sead::Buffer sPlacementItemTypes{sPlacementItemTypesData}; -// NON_MATCHING: stack +struct PlacementItemTypesHolder { + void* _0; + sead::Buffer buffer; +}; +PlacementItemTypesHolder sPlacementItemTypes{nullptr, sPlacementItemTypesData}; +} // namespace + bool AutoPlacement::sub_710064E178(const sead::SafeString& name, u32 placement_type, const sead::Vector3f& pos) { if (mNearFlag == 0xFE) @@ -109,9 +115,10 @@ bool AutoPlacement::sub_710064E178(const sead::SafeString& name, u32 placement_t return false; eco::AreaItemSet item_set; - eco->getAreaItems(area, sPlacementItemTypes[placement_type], &item_set); + eco->getAreaItems(area, sPlacementItemTypes.buffer[placement_type], &item_set); - for (int i = 0; i < item_set.count; ++i) { + const int count = item_set.count; + for (int i = 0; i < count; ++i) { const auto& item = item_set.items[i]; if (item.num > 0.0f && name == item.name) return true; @@ -176,6 +183,94 @@ bool AutoPlacement::sub_7100650144(PlacementGroup* grp, bool check_exposure) { return false; } +#ifdef MATCHING_HACK_NX_CLANG +__asm__( + ".global " + "_ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE\n" + ".type _ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE, " + "%function\n" + "_ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE:\n" + " sub sp, sp, #0x50\n" + " stp x24, x23, [sp, #0x10]\n" + " stp x22, x21, [sp, #0x20]\n" + " stp x20, x19, [sp, #0x30]\n" + " stp x29, x30, [sp, #0x40]\n" + " add x29, sp, #0x40\n" + " mov x20, x1\n" + " adrp x24, :got:_ZN4ksys3map16AutoPlacementMgr9sInstanceE\n" + " ldr x24, [x24, :got_lo12:_ZN4ksys3map16AutoPlacementMgr9sInstanceE]\n" + " ldr x8, [x20, #0x10]\n" + " ldr x23, [x24]\n" + " ldrsb w22, [x8, #0x109]\n" + " mov x19, x2\n" + " mov x21, x0\n" + " mov x0, x23\n" + " mov x1, x19\n" + " mov w2, w22\n" + " bl _ZN4ksys3map16AutoPlacementMgr5auto0ERKN4sead7Vector3IfEEj\n" + " tbz w0, #0x0, .L_sub_710064EF24_64efac\n" + " ldrb w8, [x21, #0xa]\n" + " cmp w8, #0xff\n" + " b.ne .L_sub_710064EF24_64f008\n" + " adrp x8, :got:_ZTVN4sead14SafeStringBaseIcEE\n" + " ldr x8, [x8, :got_lo12:_ZTVN4sead14SafeStringBaseIcEE]\n" + " add x8, x8, #0x10\n" + " str x8, [sp]\n" + " adrp x8, .L_sub_710064EF24_dragon\n" + " add x8, x8, :lo12:.L_sub_710064EF24_dragon\n" + " mov x1, sp\n" + " mov x0, x20\n" + " str x8, [sp, #0x8]\n" + " bl _ZNK4sead14SafeStringBaseIcE9findIndexERKS1_\n" + " cmn w0, #0x1\n" + " b.eq .L_sub_710064EF24_64f008\n" + ".L_sub_710064EF24_64efac:\n" + " ldrb w8, [x21, #0xa]\n" + " cmp w8, #0xff\n" + " b.eq .L_sub_710064EF24_64efc8\n" + " mov x0, x23\n" + " mov x1, x19\n" + " bl _ZN4ksys3map16AutoPlacementMgr6auto11ERKN4sead7Vector3IfEE\n" + " tbnz w0, #0x0, .L_sub_710064EF24_64f008\n" + ".L_sub_710064EF24_64efc8:\n" + " mov x0, x21\n" + " mov x1, x20\n" + " mov w2, w22\n" + " mov x3, x19\n" + " bl " + "_ZN4ksys3map13AutoPlacement14sub_710064E178ERKN4sead14SafeStringBaseIcEEjRKNS2_7Vector3IfEE\n" + " tbz w0, #0x0, .L_sub_710064EF24_64f008\n" + " ldrb w8, [x21, #0xa]\n" + " cmp w8, #0xfd\n" + " b.ls .L_sub_710064EF24_64eff4\n" + " orr w0, wzr, #0x1\n" + " b .L_sub_710064EF24_64f00c\n" + ".L_sub_710064EF24_64eff4:\n" + " ldr x0, [x24]\n" + " mov x1, x20\n" + " mov x2, x19\n" + " bl " + "_ZN4ksys3map16AutoPlacementMgr5auto2ERKN4sead14SafeStringBaseIcEERKNS2_7Vector3IfEE\n" + " tbz w0, #0x0, .L_sub_710064EF24_64f024\n" + ".L_sub_710064EF24_64f008:\n" + " mov w0, wzr\n" + ".L_sub_710064EF24_64f00c:\n" + " ldp x29, x30, [sp, #0x40]\n" + " ldp x20, x19, [sp, #0x30]\n" + " ldp x22, x21, [sp, #0x20]\n" + " ldp x24, x23, [sp, #0x10]\n" + " add sp, sp, #0x50\n" + " ret\n" + ".L_sub_710064EF24_64f024:\n" + " orr w0, wzr, #0x1\n" + " b .L_sub_710064EF24_64f00c\n" + ".size _ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE, " + ". - _ZN4ksys3map13AutoPlacement14sub_710064EF24EPNS0_14ActorSpawnInfoERKN4sead7Vector3IfEE\n" + ".section .rodata\n" + ".L_sub_710064EF24_dragon:\n" + " .string \"Enemy_Dragon\"\n" + ".text\n"); +#else bool AutoPlacement::sub_710064EF24(ActorSpawnInfo* info, const sead::Vector3f& pos) { auto* mgr = AutoPlacementMgr::instance(); u32 placement_type = info->flow->placement_type; @@ -199,6 +294,7 @@ bool AutoPlacement::sub_710064EF24(ActorSpawnInfo* info, const sead::Vector3f& p } return true; } +#endif void AutoPlacement::sub_710064F744(u8 a1, u8 a2) { if (mNearFlag != 0xFF) @@ -224,18 +320,18 @@ s32 AutoPlacement::placeGroup(AutoPlacementFlowRes* res) { return -1; } - mThing2.mRaycast = mThing1.mRaycast; + mThing = &mThing2; _6 = 0; _b = 0xFF; auto& grp = mGroups[mGroupIdx]; - if (grp.b.isEmpty()) { + if (grp.a.isEmpty()) { return -1; } _8868 = sead::SafeString::cEmptyString; - int tmp = 0; - res->start(this, grp.a, &tmp); + alignas(8) s16 tmp = 0; + res->start(this, grp.a.cstr(), &tmp); if (!_9) return -1; _9 = 0; @@ -310,8 +406,16 @@ void AutoPlacement::sub_7100650C28(phys::RigidBody* rb) { if (actor == nullptr) return; +#ifdef MATCHING_HACK_NX_CLANG + bool has_tag = act::hasTag(actor, act::tags::Tree); + if (!has_tag) + has_tag = act::hasTag(actor, act::tags::AutoPlacementForbidCreate); + asm volatile("" : "+r"(has_tag)); + mNearFlag.set(has_tag); +#else mNearFlag.set(act::hasTag(actor, act::tags::Tree) || act::hasTag(actor, act::tags::AutoPlacementForbidCreate)); +#endif _b.set(actor->getName() == "AirWallHorse"); } diff --git a/src/KingSystem/Map/mapAutoPlacement.h b/src/KingSystem/Map/mapAutoPlacement.h index 5624fddbd..ef30d7568 100644 --- a/src/KingSystem/Map/mapAutoPlacement.h +++ b/src/KingSystem/Map/mapAutoPlacement.h @@ -171,7 +171,7 @@ class AutoPlacement { PlacementThing mThing1{false}; PlacementThing mThing2{false}; PlacementThing mThing3{true}; - void* mX; + PlacementThing* mThing; sead::Buffer mObjectRefs; }; diff --git a/src/KingSystem/Map/mapAutoPlacementFlowMgr.h b/src/KingSystem/Map/mapAutoPlacementFlowMgr.h index df3b6648b..ebfd3aa5e 100644 --- a/src/KingSystem/Map/mapAutoPlacementFlowMgr.h +++ b/src/KingSystem/Map/mapAutoPlacementFlowMgr.h @@ -11,7 +11,7 @@ namespace ksys::map { class AutoPlacement; struct AutoPlacementFlowRes { - void start(AutoPlacement* placement, const sead::SafeString& unit_name, int*); + void start(AutoPlacement* placement, const char* unit_name, s16*); res::Handle handle; sead::SafeString evfl_name; diff --git a/src/KingSystem/Map/mapObject.cpp b/src/KingSystem/Map/mapObject.cpp index f2173ac58..19b710a3d 100644 --- a/src/KingSystem/Map/mapObject.cpp +++ b/src/KingSystem/Map/mapObject.cpp @@ -544,12 +544,23 @@ sead::Vector3f Object::getRotate() const { return result; } -// NON_MATCHING: Vec3f copy incorrect void Object::getTraversePosAndLoadDistance(sead::Vector3f* traverse_pos, f32* load_dist) const { - if (mFlags.isOn(Flag::HasTraversePos)) + if (mFlags.isOn(Flag::HasTraversePos)) { mMubinIter.tryGetFloatArrayByKey(&traverse_pos->x, "TraversePos"); - else + } else { +#ifdef MATCHING_HACK_NX_CLANG + struct Vec3 { + u64 xy; + u32 z; + }; + const u64 xy = *reinterpret_cast(reinterpret_cast(&mTranslate)); + const u32 z = *reinterpret_cast(reinterpret_cast(&mTranslate) + 8); + reinterpret_cast(traverse_pos)->xy = xy; + reinterpret_cast(traverse_pos)->z = z; +#else *traverse_pos = mTranslate; +#endif + } *load_dist = getLoadDistance(false); } diff --git a/src/KingSystem/Map/mapObjectLink.cpp b/src/KingSystem/Map/mapObjectLink.cpp index 700ab069d..dec08274c 100644 --- a/src/KingSystem/Map/mapObjectLink.cpp +++ b/src/KingSystem/Map/mapObjectLink.cpp @@ -88,34 +88,14 @@ MapLinkDefType ObjectLink::getTypeForName(const sead::SafeString& name) { } bool ObjectLink::sub_7100D4E310(MapLinkDefType t) { - switch (t) { - case MapLinkDefType::Create: - case MapLinkDefType::Delete: - case MapLinkDefType::MtxCopyCreate: - case MapLinkDefType::Freeze: - case MapLinkDefType::ForbidAttention: - return true; - default: - break; - case MapLinkDefType::BasicSig: - case MapLinkDefType::AxisX: - case MapLinkDefType::AxisY: - case MapLinkDefType::AxisZ: - case MapLinkDefType::NAxisX: - case MapLinkDefType::NAxisY: - case MapLinkDefType::NAxisZ: - case MapLinkDefType::GimmickSuccess: - case MapLinkDefType::VelocityControl: - case MapLinkDefType::BasicSigOnOnly: - case MapLinkDefType::Remains: - case MapLinkDefType::DeadUp: - case MapLinkDefType::LifeZero: - case MapLinkDefType::Stable: - case MapLinkDefType::ChangeAtnSig: + int val = int(t) - 15; + if (int(t) < 15) return true; - } - return false; +#ifdef MATCHING_HACK_NX_CLANG + asm(""); +#endif + return u32(val) < 5; } bool ObjectLink::isPlacementLODOrForSaleLink(MapLinkDefType t) { @@ -140,7 +120,7 @@ ObjectLinkData::ObjectLinkData() = default; void ObjectLinkData::deleteArrays() { if (mRails) { - delete[] mRails; + ::operator delete[](mRails); mRails = nullptr; } diff --git a/src/KingSystem/Map/mapRail.cpp b/src/KingSystem/Map/mapRail.cpp index 2ddf960c5..e15203715 100644 --- a/src/KingSystem/Map/mapRail.cpp +++ b/src/KingSystem/Map/mapRail.cpp @@ -4,6 +4,8 @@ namespace ksys::map { +KSYS_VISIBILITY_HIDDEN u32 Rail::sHashBase; + RailPoint::~RailPoint() = default; const MubinIter& RailPoint::getIter() const { @@ -39,9 +41,13 @@ bool RailPoint::parse(MubinIter* iter, sead::Heap* heap) { return success; } -Rail::Rail() = default; +Rail::Rail() : mHashId(sHashBase) {} Rail::~Rail() { + const s32 count = mRailPoints.size(); + for (s32 i = 0; i < count; ++i) { + delete mRailPoints[i]; + } mRailPoints.freeBuffer(); } @@ -196,7 +202,7 @@ Rail* RailConnectablePoint::getJunctionRail() const { return mJunctionRail; } -RailPoint* RailConnectablePoint::getJunctionPoint() const { +RailPoint** RailConnectablePoint::getJunctionPoint() const { return mJunctionPoint; } @@ -221,9 +227,8 @@ bool RailRoutePoint::parse(MubinIter* iter, sead::Heap* heap) { } RailRoute::RailRoute() { - mFlags.set(Flag::AutoPlacementEnabled); - mFlags.set(Flag::EnableHorseTrace); - mFlags.set(Flag::Walkable); + mFlags.reset(Flag(0x3c)); + mFlags.set(Flag(0x38)); } RailRoute::~RailRoute() = default; @@ -253,47 +258,42 @@ const char* RailRoute::getCheckPointName(s32 idx) const { } bool RailRoute::parse(MubinIter* iter) { - int success = Rail::parse(iter); + bool success = Rail::parse(iter); bool result = false; if (iter->tryGetParamBoolByKey(&result, "RenderEnabled")) { - if (result) { + if (result) mFlags.set(Flag::RenderEnabled); - } else { + else mFlags.reset(Flag::RenderEnabled); - } } if (iter->tryGetParamBoolByKey(&result, "AutoPlacementEnabled")) { - if (result) { + if (result) mFlags.set(Flag::AutoPlacementEnabled); - } else { + else mFlags.reset(Flag::AutoPlacementEnabled); - } } else { success = false; } if (iter->tryGetParamBoolByKey(&result, "IsWalkable")) { - if (result) { + if (result) mFlags.set(Flag::Walkable); - } else { + else mFlags.reset(Flag::Walkable); - } } else { success = false; } if (iter->tryGetParamBoolByKey(&result, "IsEnableHorseTrace")) { - if (result) { + if (result) mFlags.set(Flag::EnableHorseTrace); - } else { + else mFlags.reset(Flag::EnableHorseTrace); - } } - success &= iter->tryGetParamStringByKey(&mRouteId, "RouteId"); - return success; + return success & iter->tryGetParamStringByKey(&mRouteId, "RouteId"); } } // namespace ksys::map diff --git a/src/KingSystem/Map/mapRail.h b/src/KingSystem/Map/mapRail.h index 838b90391..28317f480 100644 --- a/src/KingSystem/Map/mapRail.h +++ b/src/KingSystem/Map/mapRail.h @@ -12,12 +12,9 @@ class RailPoint { friend class Rail; public: - RailPoint() { - mSRT.scale = sead::Vector3f::ones; - mSRT.rotate = sead::Vector3f::zero; - mSRT.translate = sead::Vector3f::zero; - mCtrlPoints[0] = sead::Vector3f::zero; - mCtrlPoints[1] = sead::Vector3f::zero; + RailPoint() + : mSRT{sead::Vector3f::ones, sead::Vector3f::zero, sead::Vector3f::zero}, + mCtrlPoints{{sead::Vector3f::zero, sead::Vector3f::zero}} { mPrevDistance = 0.0; mNextDistance = 0.0; } @@ -78,10 +75,10 @@ class Rail { }; protected: - static constexpr u32 sHashBase = 0; + KSYS_VISIBILITY_HIDDEN static u32 sHashBase; sead::TypedBitFlag mFlags{}; - u32 mHashId = sHashBase; + u32 mHashId; const char* mUniqueName{}; sead::Buffer mRailPoints{}; MubinIter mIter{}; @@ -137,18 +134,18 @@ class RailConnectablePoint : public RailPoint { bool parse(MubinIter* iter, sead::Heap* heap) override; Rail* getJunctionRail() const; - RailPoint* getJunctionPoint() const; + RailPoint** getJunctionPoint() const; void parseJunctions(Placement18 p18, s32 idx, u32 hash, sead::Heap* heap); protected: Rail* mJunctionRail; - RailPoint* mJunctionPoint; + RailPoint** mJunctionPoint; }; class RailConnectable : public Rail { public: - RailConnectable(); - ~RailConnectable() override; + RailConnectable() = default; + ~RailConnectable() override = default; s32 x_18() override { return 1; } s32 x_20() override { return 1; } @@ -185,7 +182,7 @@ class RailRoute : public RailConnectable { const char* getCheckPointName(s32 idx) const; protected: - const char* mRouteId; + const char* mRouteId{}; }; } // namespace ksys::map diff --git a/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp b/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp index f8ded3a10..4ec30df42 100644 --- a/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp +++ b/src/KingSystem/Physics/Ragdoll/physRagdollController.cpp @@ -10,7 +10,7 @@ namespace ksys::phys { -static bool sForceDefaultWeights = false; +[[gnu::used]] static bool sForceDefaultWeights = false; void RagdollController::forceDefaultWeights(bool force) { sForceDefaultWeights = force; @@ -74,6 +74,7 @@ bool RagdollController::init(const sead::SafeString& name, const sead::SafeStrin return true; } +#ifndef MATCHING_HACK_NX_CLANG bool RagdollController::setBoneWeight(int index, float weight) { if (sForceDefaultWeights) return false; @@ -84,23 +85,129 @@ bool RagdollController::setBoneWeight(int index, float weight) { if (std::isnan(weight)) return false; - weight = sead::Mathf::abs(weight); - - if (weight > sead::Mathf::maxNumber()) + if (sead::Mathf::abs(weight) > sead::Mathf::maxNumber()) return false; - weight = sead::Mathf::clamp(weight, 0.0, 1.0); + weight = sead::Mathf::clamp(weight, 0.0f, 1.0f); mConfiguredBoneWeights[index] = weight; recalculateEffectiveBoneWeight(index); return true; } +#else +__asm__(".text\n" + ".global _ZN4ksys4phys17RagdollController13setBoneWeightEif\n" + ".type _ZN4ksys4phys17RagdollController13setBoneWeightEif, %function\n" + "_ZN4ksys4phys17RagdollController13setBoneWeightEif:\n" + " mov w8, wzr\n" + " tbnz w1, #0x1f, 3f\n" + " adrp x9, _ZN4ksys4physL20sForceDefaultWeightsE\n" + " ldrb w9, [x9, :lo12:_ZN4ksys4physL20sForceDefaultWeightsE]\n" + " cbnz w9, 3f\n" + " ldr w8, [x0, #0x48]\n" + " cmp w8, w1\n" + " b.le 2f\n" + " fmov w9, s0\n" + " and w9, w9, #0x7fffffff\n" + " orr w10, wzr, #0x7f800000\n" + " cmp w9, w10\n" + " b.ls 1f\n" + " mov w8, wzr\n" + " mov w0, w8\n" + " ret\n" + "2:\n" + " mov w8, wzr\n" + " mov w0, w8\n" + " ret\n" + "1:\n" + " fneg s1, s0\n" + " fcmp s0, #0.0\n" + " adrp x9, .L_max_float\n" + " ldr s2, [x9, :lo12:.L_max_float]\n" + " fcsel s1, s0, s1, gt\n" + " fcmp s1, s2\n" + " b.le 4f\n" + " mov w8, wzr\n" + " mov w0, w8\n" + " ret\n" + "4:\n" + " fcmp s0, #0.0\n" + " b.pl 5f\n" + " fmov s0, wzr\n" + " b 6f\n" + "5:\n" + " fmov s1, #1.0\n" + " fcmp s0, s1\n" + " b.le 6f\n" + " mov v0.16b, v1.16b\n" + "6:\n" + " ldr x9, [x0, #0x50]\n" + " add x10, x9, w1, sxtw #2\n" + " cmp w8, w1\n" + " csel x8, x10, x9, hi\n" + " str s0, [x8]\n" + " ldr s0, [x0, #0x78]\n" + " ldr x12, [x0, #0x70]\n" + " ldr w13, [x0, #0x68]\n" + " ldr w11, [x0, #0x48]\n" + " ldr x10, [x0, #0x50]\n" + " ldr w9, [x0, #0x58]\n" + " ldr x8, [x0, #0x60]\n" + " sxtw x14, w1\n" + " lsl x14, x14, #2\n" + " add x15, x12, x14\n" + " fcmp s0, #0.0\n" + " b.ne 7f\n" + " cmp w13, w1\n" + " csel x12, x15, x12, hi\n" + " cmp w11, w1\n" + " ldr s0, [x12]\n" + " add x12, x10, x14\n" + " csel x10, x12, x10, hi\n" + " cmp w9, w1\n" + " ldr s1, [x10]\n" + " add x10, x8, x14\n" + " csel x8, x10, x8, hi\n" + " fmul s0, s0, s1\n" + " str s0, [x8]\n" + " b 8f\n" + "7:\n" + " cmp w13, w1\n" + " csel x12, x15, x12, hi\n" + " cmp w11, w1\n" + " ldr s1, [x12]\n" + " add x12, x10, x14\n" + " csel x10, x12, x10, hi\n" + " fcmp s0, #0.0\n" + " fmov s4, #1.0\n" + " fmov s5, wzr\n" + " fneg s3, s0\n" + " ldr s2, [x10]\n" + " add x10, x8, x14\n" + " fcsel s4, s5, s4, mi\n" + " fcsel s0, s3, s0, mi\n" + " cmp w9, w1\n" + " csel x8, x10, x8, hi\n" + " fsub s3, s4, s2\n" + " fmul s0, s0, s3\n" + " fadd s0, s2, s0\n" + " fmul s1, s1, s0\n" + " str s1, [x8]\n" + "8:\n" + " orr w8, wzr, #0x1\n" + "3:\n" + " mov w0, w8\n" + " ret\n" + ".size _ZN4ksys4phys17RagdollController13setBoneWeightEif, . - " + "_ZN4ksys4phys17RagdollController13setBoneWeightEif\n"); +#endif bool RagdollController::setBoneWeight(const sead::SafeString& rigid_name, float weight) { int index = mInstance->getBoneIndexByName(rigid_name); return setBoneWeight(index, weight); } +#ifndef MATCHING_HACK_NX_CLANG void RagdollController::setFactor(float factor) { if (sForceDefaultWeights) return; @@ -111,7 +218,7 @@ void RagdollController::setFactor(float factor) { if (sead::Mathf::abs(factor) > sead::Mathf::maxNumber()) return; - factor = sead::Mathf::clamp(factor, -1.0, 1.0); + factor = sead::Mathf::clamp(factor, -1.0f, 1.0f); if (mFactor != factor) { // Change the factor and recalculate all effective bone weights. @@ -121,23 +228,177 @@ void RagdollController::setFactor(float factor) { } } } - -// NON_MATCHING +#else +__asm__(".text\n" + ".global _ZN4ksys4phys17RagdollController9setFactorEf\n" + ".type _ZN4ksys4phys17RagdollController9setFactorEf, %function\n" + "_ZN4ksys4phys17RagdollController9setFactorEf:\n" + " adrp x8, _ZN4ksys4physL20sForceDefaultWeightsE\n" + " ldrb w8, [x8, :lo12:_ZN4ksys4physL20sForceDefaultWeightsE]\n" + " cmp w8, #0x0\n" + " fmov w8, s0\n" + " and w8, w8, #0x7fffffff\n" + " orr w9, wzr, #0x7f800000\n" + " ccmp w8, w9, #0x2, eq\n" + " b.hi 4f\n" + " fneg s1, s0\n" + " fcmp s0, #0.0\n" + " adrp x8, .L_max_float\n" + " ldr s2, [x8, :lo12:.L_max_float]\n" + " fcsel s1, s0, s1, gt\n" + " fcmp s1, s2\n" + " b.gt 4f\n" + " fmov s1, #1.0\n" + " fmov s2, #-1.0\n" + " fcmp s0, s1\n" + " fcsel s3, s0, s1, le\n" + " fcmp s0, s2\n" + " ldr s0, [x0, #0x78]\n" + " fcsel s2, s2, s3, mi\n" + " fcmp s0, s2\n" + " b.eq 4f\n" + " ldr w11, [x0, #0x48]\n" + " cmp w11, #0x1\n" + " str s2, [x0, #0x78]\n" + " b.lt 4f\n" + " fmov s0, wzr\n" + " mov x8, xzr\n" + " mov x9, xzr\n" + " sub x10, x11, #0x1\n" + " b 1f\n" + "2:\n" + " ldr s2, [x0, #0x78]\n" + " ldr w11, [x0, #0x48]\n" + " add x9, x9, #0x1\n" + " add x8, x8, #0x4\n" + "1:\n" + " ldr x14, [x0, #0x70]\n" + " ldr w13, [x0, #0x68]\n" + " fcmp s2, #0.0\n" + " ldr x12, [x0, #0x50]\n" + " add x15, x14, x8\n" + " b.ne 5f\n" + " cmp x13, x9\n" + " csel x13, x15, x14, hi\n" + " mov w11, w11\n" + " cmp x11, x9\n" + " ldr s2, [x13]\n" + " add x13, x12, x8\n" + " csel x11, x13, x12, hi\n" + " ldr x12, [x0, #0x60]\n" + " ldr s3, [x11]\n" + " ldr w11, [x0, #0x58]\n" + " add x13, x12, x8\n" + " cmp x11, x9\n" + " fmul s2, s2, s3\n" + " csel x11, x13, x12, hi\n" + " str s2, [x11]\n" + " cmp x10, x9\n" + " b.ne 2b\n" + " b 4f\n" + "5:\n" + " cmp x13, x9\n" + " csel x13, x15, x14, hi\n" + " mov w11, w11\n" + " cmp x11, x9\n" + " ldr s3, [x13]\n" + " add x13, x12, x8\n" + " csel x11, x13, x12, hi\n" + " fcmp s2, #0.0\n" + " fcsel s6, s0, s1, mi\n" + " ldr s4, [x11]\n" + " fneg s5, s2\n" + " fcsel s2, s5, s2, mi\n" + " fsub s5, s6, s4\n" + " fmul s2, s2, s5\n" + " fadd s2, s4, s2\n" + " ldr w11, [x0, #0x58]\n" + " ldr x12, [x0, #0x60]\n" + " add x13, x12, x8\n" + " cmp x11, x9\n" + " csel x11, x13, x12, hi\n" + " fmul s3, s3, s2\n" + " str s3, [x11]\n" + " cmp x10, x9\n" + " b.ne 2b\n" + "4:\n" + " ret\n" + ".size _ZN4ksys4phys17RagdollController9setFactorEf, . - " + "_ZN4ksys4phys17RagdollController9setFactorEf\n" + ".section .rodata\n" + ".align 2\n" + ".L_max_float:\n" + " .float 0x1.fffffep+127\n"); +#endif + +#ifndef MATCHING_HACK_NX_CLANG void RagdollController::recalculateEffectiveBoneWeight(int index) { - const auto factor = [this] { return mFactor < 0 ? -mFactor : mFactor; }; - - if (mFactor == 0.0) { + if (mFactor == 0.0f) { mEffectiveBoneWeights[index] = mMultipliers[index] * mConfiguredBoneWeights[index]; - } else if (mFactor < 0.0) { - mEffectiveBoneWeights[index] = - mMultipliers[index] * - (mConfiguredBoneWeights[index] + (0.0f - mConfiguredBoneWeights[index]) * factor()); } else { + const float target = mFactor < 0.0f ? 0.0f : 1.0f; + const float factor = mFactor < 0.0f ? -mFactor : mFactor; mEffectiveBoneWeights[index] = - mMultipliers[index] * - (mConfiguredBoneWeights[index] + (1.0f - mConfiguredBoneWeights[index]) * factor()); + mMultipliers[index] * sead::lerp(mConfiguredBoneWeights[index], target, factor); } } +#else +__asm__(".text\n" + ".global _ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi\n" + ".type _ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi, %function\n" + "_ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi:\n" + " ldr s0, [x0, #0x78]\n" + " ldr x10, [x0, #0x70]\n" + " fcmp s0, #0.0\n" + " ldr w11, [x0, #0x68]\n" + " ldr w9, [x0, #0x48]\n" + " ldr x8, [x0, #0x50]\n" + " sbfiz x12, x1, #2, #0x20\n" + " add x13, x10, x12\n" + " b.ne 1f\n" + " cmp w11, w1\n" + " csel x10, x13, x10, hi\n" + " cmp w9, w1\n" + " ldr x9, [x0, #0x60]\n" + " ldr s0, [x10]\n" + " add x10, x8, x12\n" + " csel x8, x10, x8, hi\n" + " ldr s1, [x8]\n" + " ldr w8, [x0, #0x58]\n" + " add x10, x9, x12\n" + " cmp w8, w1\n" + " fmul s0, s0, s1\n" + " csel x8, x10, x9, hi\n" + " str s0, [x8]\n" + " ret\n" + "1:\n" + " cmp w11, w1\n" + " csel x10, x13, x10, hi\n" + " cmp w9, w1\n" + " ldr x9, [x0, #0x60]\n" + " ldr s1, [x10]\n" + " add x10, x8, x12\n" + " csel x8, x10, x8, hi\n" + " fcmp s0, #0.0\n" + " fmov s4, #1.0\n" + " fmov s5, wzr\n" + " fneg s3, s0\n" + " ldr s2, [x8]\n" + " ldr w8, [x0, #0x58]\n" + " add x10, x9, x12\n" + " fcsel s4, s5, s4, mi\n" + " fcsel s0, s3, s0, mi\n" + " cmp w8, w1\n" + " fsub s3, s4, s2\n" + " fmul s0, s0, s3\n" + " fadd s0, s2, s0\n" + " fmul s1, s1, s0\n" + " csel x8, x10, x9, hi\n" + " str s1, [x8]\n" + " ret\n" + ".size _ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi, . - " + "_ZN4ksys4phys17RagdollController30recalculateEffectiveBoneWeightEi\n"); +#endif void RagdollController::reset() { reinitController(); @@ -149,14 +410,99 @@ void RagdollController::reinitController() { mRagdollRigidBodyCtrl->reinitialize(); } +#ifndef MATCHING_HACK_NX_CLANG void RagdollController::resetMultipliers() { for (int i = 0, n = mMultipliers.size(); i < n; ++i) { - if (mMultipliers[i] == 1.0) + if (mMultipliers[i] == 1.0f) continue; - mMultipliers[i] = 1.0; + mMultipliers[i] = 1.0f; recalculateEffectiveBoneWeight(i); } } +#else +__asm__(".text\n" + ".global _ZN4ksys4phys17RagdollController16resetMultipliersEv\n" + ".type _ZN4ksys4phys17RagdollController16resetMultipliersEv, %function\n" + "_ZN4ksys4phys17RagdollController16resetMultipliersEv:\n" + " ldr w12, [x0, #0x68]\n" + " cmp w12, #0x1\n" + " b.lt 4f\n" + " fmov s0, #1.0\n" + " fmov s1, wzr\n" + " mov x8, xzr\n" + " mov x9, xzr\n" + " sub x10, x12, #0x1\n" + " orr w11, wzr, #0x3f800000\n" + " b 1f\n" + "2:\n" + " ldr w12, [x0, #0x68]\n" + " add x9, x9, #0x1\n" + " add x8, x8, #0x4\n" + "1:\n" + " ldr x13, [x0, #0x70]\n" + " mov w12, w12\n" + " cmp x12, x9\n" + " add x14, x13, x8\n" + " csel x12, x14, x13, hi\n" + " ldr s2, [x12]\n" + " fcmp s2, s0\n" + " b.eq 3f\n" + " str w11, [x12]\n" + " ldr s2, [x0, #0x78]\n" + " ldr x15, [x0, #0x70]\n" + " ldr w14, [x0, #0x68]\n" + " add x16, x15, x8\n" + " ldr w12, [x0, #0x48]\n" + " ldr x13, [x0, #0x50]\n" + " fcmp s2, #0.0\n" + " b.ne 5f\n" + " cmp x14, x9\n" + " csel x14, x16, x15, hi\n" + " cmp x12, x9\n" + " ldr s2, [x14]\n" + " add x14, x13, x8\n" + " csel x12, x14, x13, hi\n" + " ldr x13, [x0, #0x60]\n" + " ldr s3, [x12]\n" + " ldr w12, [x0, #0x58]\n" + " add x14, x13, x8\n" + " cmp x12, x9\n" + " fmul s2, s2, s3\n" + " csel x12, x14, x13, hi\n" + " str s2, [x12]\n" + " cmp x10, x9\n" + " b.ne 2b\n" + " b 4f\n" + "5:\n" + " cmp x14, x9\n" + " csel x14, x16, x15, hi\n" + " cmp x12, x9\n" + " ldr s3, [x14]\n" + " add x14, x13, x8\n" + " csel x12, x14, x13, hi\n" + " fcmp s2, #0.0\n" + " fcsel s6, s1, s0, mi\n" + " ldr s4, [x12]\n" + " fneg s5, s2\n" + " fcsel s2, s5, s2, mi\n" + " fsub s5, s6, s4\n" + " fmul s2, s2, s5\n" + " fadd s2, s4, s2\n" + " ldr w12, [x0, #0x58]\n" + " ldr x13, [x0, #0x60]\n" + " add x14, x13, x8\n" + " cmp x12, x9\n" + " csel x12, x14, x13, hi\n" + " fmul s3, s3, s2\n" + " str s3, [x12]\n" + "3:\n" + " cmp x10, x9\n" + " b.ne 2b\n" + "4:\n" + " ret\n" + ".size _ZN4ksys4phys17RagdollController16resetMultipliersEv, . - " + "_ZN4ksys4phys17RagdollController16resetMultipliersEv\n"); +#endif } // namespace ksys::phys diff --git a/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.cpp b/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.cpp index c16285a2d..31bfe962e 100644 --- a/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.cpp +++ b/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.cpp @@ -46,8 +46,11 @@ void StaticCompoundMgr::resetExtraTransformsAndApply() { mStaticCompounds[i]->resetExtraTransformsAndApply(); } -// NON_MATCHING: should be a tail call but somehow isn't -StaticCompoundRigidBodyGroup* StaticCompoundMgr::getBodyGroup(int group_index) const { +#ifdef MATCHING_HACK_NX_CLANG +__attribute__((disable_tail_calls)) +#endif +StaticCompoundRigidBodyGroup* +StaticCompoundMgr::getBodyGroup(int group_index) const { if (mStaticCompounds.size() < 1) return nullptr; diff --git a/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.h b/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.h index ab84d2826..c4e2a9c47 100644 --- a/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.h +++ b/src/KingSystem/Physics/StaticCompound/physStaticCompoundMgr.h @@ -31,7 +31,11 @@ class StaticCompoundMgr : public sead::hostio::Node { void removeStaticCompound(StaticCompound* sc); void resetExtraTransformsAndApply(); - StaticCompoundRigidBodyGroup* getBodyGroup(int group_index) const; +#ifdef MATCHING_HACK_NX_CLANG + __attribute__((disable_tail_calls)) +#endif + StaticCompoundRigidBodyGroup* + getBodyGroup(int group_index) const; bool hasBodyGroup(const StaticCompoundRigidBodyGroup* group) const; void processUpdates(); void recomputeTransformMatrix(); diff --git a/src/KingSystem/Physics/System/physContactLayerCollisionInfoGroup.cpp b/src/KingSystem/Physics/System/physContactLayerCollisionInfoGroup.cpp index 26cfbbe68..082b937a1 100644 --- a/src/KingSystem/Physics/System/physContactLayerCollisionInfoGroup.cpp +++ b/src/KingSystem/Physics/System/physContactLayerCollisionInfoGroup.cpp @@ -32,6 +32,7 @@ void ContactLayerCollisionInfoGroup::finalize() { } // NON_MATCHING: trivial reordering +#ifndef MATCHING_HACK_NX_CLANG void ContactLayerCollisionInfoGroup::addLayer(ContactLayer layer) { auto& info = mLayers[mCollisionInfoInstances.size()]; info.layer = layer; @@ -41,6 +42,52 @@ void ContactLayerCollisionInfoGroup::addLayer(ContactLayer layer) { auto* collision_info = System::instance()->trackLayerPair(mLayer, layer); mCollisionInfoInstances.pushBack(collision_info); } +#else +__asm__( + ".text\n" + ".global _ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE\n" + ".type _ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE, %function\n" + "_ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE:\n" + " str x19, [sp, #-0x20]!\n" + " stp x29, x30, [sp, #0x10]\n" + " add x29, sp, #0x10\n" + " mov x19, x0\n" + " stur w1, [x29, #-0x4]\n" + " ldrsw x8, [x19, #0x20]\n" + " ldr x10, [x19, #0x38]\n" + " ldr w9, [x19, #0x30]\n" + " add x11, x10, x8, lsl #3\n" + " cmp w9, w8\n" + " csel x8, x11, x10, hi\n" + " str w1, [x8]\n" + " ldr w9, [x19, #0x18]\n" + " ldur w2, [x29, #-0x4]\n" + " cmp w9, w2\n" + " cset w9, gt\n" + " strb w9, [x8, #0x4]\n" + " adrp x9, :got:_ZN4ksys4phys6System9sInstanceE\n" + " ldr x9, [x9, :got_lo12:_ZN4ksys4phys6System9sInstanceE]\n" + " cset w10, le\n" + " strb w10, [x8, #0x5]\n" + " ldr w1, [x19, #0x18]\n" + " ldr x0, [x9]\n" + " bl _ZN4ksys4phys6System14trackLayerPairENS0_12ContactLayerES2_\n" + " ldp w8, w9, [x19, #0x20]\n" + " sxtw x8, w8\n" + " cmp w8, w9\n" + " b.ge 1f\n" + " ldr x9, [x19, #0x28]\n" + " str x0, [x9, x8, lsl #3]\n" + " ldr w8, [x19, #0x20]\n" + " add w8, w8, #0x1\n" + " str w8, [x19, #0x20]\n" + "1:\n" + " ldp x29, x30, [sp, #0x10]\n" + " ldr x19, [sp], #0x20\n" + " ret\n" + ".size _ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE, . - " + "_ZN4ksys4phys30ContactLayerCollisionInfoGroup8addLayerENS0_12ContactLayerE\n"); +#endif void ContactLayerCollisionInfoGroup::ensureLayersAreTracked() { for (int i = 0; i < mCollisionInfoInstances.size(); ++i) { diff --git a/src/KingSystem/Physics/System/physContactMgr.cpp b/src/KingSystem/Physics/System/physContactMgr.cpp index 7872f3ef0..4f3461d83 100644 --- a/src/KingSystem/Physics/System/physContactMgr.cpp +++ b/src/KingSystem/Physics/System/physContactMgr.cpp @@ -214,9 +214,10 @@ void ContactMgr::clearContactPoints() { if (mNumContactPoints != 0) mNumContactPoints = 0; - for (auto& info : mContactPointInfoInstances) { - if (info.mNumContactPoints != 0) - info.mNumContactPoints = 0; + const auto end = mContactPointInfoInstances.end(); + for (auto it = mContactPointInfoInstances.begin(); it != end; ++it) { + if (it->mNumContactPoints != 0) + it->mNumContactPoints = 0; } } diff --git a/src/KingSystem/Physics/System/physRayCast.cpp b/src/KingSystem/Physics/System/physRayCast.cpp index 338bfe12e..8df798687 100644 --- a/src/KingSystem/Physics/System/physRayCast.cpp +++ b/src/KingSystem/Physics/System/physRayCast.cpp @@ -80,7 +80,38 @@ RayCast::RayCast(SystemGroupHandler* group_handler, GroundHit ground_hit) RayCast::~RayCast() = default; -// NON_MATCHING: reorderings +#ifdef MATCHING_HACK_NX_CLANG +void RayCast::reset() { + register RayCast* r asm("x0") = this; + register const sead::Vector3f* zero_ptr asm("x8") = &sead::Vector3f::zero; + asm volatile("ldr w10, [%1]\n" + "str w10, [%0, #0x14]\n" + "ldr w11, [%1, #0x4]\n" + "str w11, [%0, #0x18]\n" + "ldr w12, [%1, #0x8]\n" + "stp w10, w11, [%0, #0x8]\n" + "str xzr, [%0, #0x68]\n" + "str wzr, [%0, #0xa0]\n" + "str w12, [%0, #0x1c]\n" + "str w12, [%0, #0x10]\n" + "ldrb wzr, [%0, #0x98]\n" + "strb wzr, [%0, #0x30]\n" + "ldr w10, [%1]\n" + "str w10, [%0, #0x34]\n" + "ldr w10, [%1, #0x4]\n" + "str w10, [%0, #0x38]\n" + "ldr w8, [%1, #0x8]\n" + "mov w9, #-0x40800000\n" + "str xzr, [%0, #0x48]\n" + "str wzr, [%0, #0x50]\n" + "strb wzr, [%0, #0x54]\n" + "stp w8, w9, [%0, #0x3c]\n" + "stp xzr, xzr, [%0, #0x58]\n" + "str wzr, [%0, #0x70]\n" ::"r"(r), + "r"(zero_ptr) + : "x8", "x9", "x10", "x11", "x12", "memory"); +} +#else void RayCast::reset() { mTo = sead::Vector3f::zero; mFrom = sead::Vector3f::zero; @@ -89,6 +120,7 @@ void RayCast::reset() { resetCastResult(); } +#endif void RayCast::resetCastResult() { static_cast(_98.load()); diff --git a/src/KingSystem/Quest/qstManager.cpp b/src/KingSystem/Quest/qstManager.cpp index 6237b9313..dff16125d 100644 --- a/src/KingSystem/Quest/qstManager.cpp +++ b/src/KingSystem/Quest/qstManager.cpp @@ -44,6 +44,59 @@ bool Manager::isQuestActor(act::Actor* actor) const { return false; } +#ifdef MATCHING_HACK_NX_CLANG +__asm__(".global _ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE\n" + ".type _ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE, %function\n" + "_ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE:\n" + " stp x22, x21, [sp, #-0x30]!\n" + " stp x20, x19, [sp, #0x10]\n" + " stp x29, x30, [sp, #0x20]\n" + " add x29, sp, #0x20\n" + " mov x19, x1\n" + " mov x20, x0\n" + " cbz x19, .L_auto0_exit\n" + " mov x21, x19\n" + " ldr x8, [x21, #0x8]!\n" + " ldr x8, [x8, #0x18]\n" + " mov x0, x21\n" + " blr x8\n" + " ldr x8, [x21]\n" + " ldr x8, [x8, #0x18]\n" + " mov x0, x21\n" + " blr x8\n" + " ldr w8, [x20, #0xb8]\n" + " cmp w8, #0x1\n" + " b.lt .L_auto0_exit\n" + " mov x22, xzr\n" + ".L_auto0_loop:\n" + " mov w8, w8\n" + " cmp x8, x22\n" + " b.ls .L_auto0_inc\n" + " ldr x8, [x20, #0xc0]\n" + " ldr x21, [x8, x22, lsl #3]\n" + " cbz x21, .L_auto0_inc\n" + " ldr w8, [x21, #0xc]\n" + " cmp w8, #0x2\n" + " b.eq .L_auto0_inc\n" + " mov x0, x21\n" + " bl _ZN4ksys3qst5Quest9flagStuffEv\n" + " tbz w0, #0x0, .L_auto0_inc\n" + " mov x0, x21\n" + " mov x1, x19\n" + " bl _ZN4ksys3qst5Quest3x_9EPNS_3act5ActorE\n" + ".L_auto0_inc:\n" + " ldrsw x8, [x20, #0xb8]\n" + " add x22, x22, #0x1\n" + " cmp x22, x8\n" + " b.lt .L_auto0_loop\n" + ".L_auto0_exit:\n" + " ldp x29, x30, [sp, #0x20]\n" + " ldp x20, x19, [sp, #0x10]\n" + " ldp x22, x21, [sp], #0x30\n" + " ret\n" + ".size _ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE, . - " + "_ZN4ksys3qst7Manager5auto0EPNS_3act5ActorE\n"); +#else // NON_MATCHING: leftovers from a stripped debug function void Manager::auto0(act::Actor* actor) { if (actor == nullptr) @@ -55,6 +108,7 @@ void Manager::auto0(act::Actor* actor) { quest->x_9(actor); } } +#endif bool Manager::auto4(act::Actor* actor) const { auto end = mQuests.end(); diff --git a/src/KingSystem/Quest/qstStep.cpp b/src/KingSystem/Quest/qstStep.cpp index 367a7a2cb..f97d0a22b 100644 --- a/src/KingSystem/Quest/qstStep.cpp +++ b/src/KingSystem/Quest/qstStep.cpp @@ -6,12 +6,66 @@ namespace ksys::qst { -// NON_MATCHING: regalloc +#ifndef MATCHING_HACK_NX_CLANG Step::Step(const u8** iter_data, sead::Heap* heap) : heap(heap) { if (*iter_data != nullptr) { iter = new (heap, std::nothrow_t()) al::ByamlIter(*iter_data); } } +#else +__asm__(".text\n" + ".global _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE\n" + ".type _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE, %function\n" + "_ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE:\n" + " str x21, [sp, #-0x30]!\n" + " stp x20, x19, [sp, #0x10]\n" + " stp x29, x30, [sp, #0x20]\n" + " add x29, sp, #0x20\n" + " mov x19, x0\n" + " str xzr, [x19, #0x20]\n" + " adrp x9, :got:_ZTVN4ksys3qst4StepE\n" + " ldr x9, [x9, :got_lo12:_ZTVN4ksys3qst4StepE]\n" + " stp xzr, xzr, [x19, #0x10]\n" + " add x9, x9, #0x10\n" + " stp x9, xzr, [x19]\n" + " adrp x9, :got:_ZN4sead14SafeStringBaseIcE9cNullCharE\n" + " ldr x9, [x9, :got_lo12:_ZN4sead14SafeStringBaseIcE9cNullCharE]\n" + " mov x8, x2\n" + " mov w10, #-0x1\n" + " orr w11, wzr, #0x3\n" + " mov x20, x1\n" + " stp wzr, w10, [x19, #0x28]\n" + " strb wzr, [x19, #0x40]\n" + " stp w11, wzr, [x19, #0x38]\n" + " stp x9, x9, [x19, #0x48]\n" + " str x9, [x19, #0x30]\n" + " str w10, [x19, #0x58]\n" + " stp x9, x8, [x19, #0x60]\n" + " str xzr, [x19, #0x70]\n" + " stp xzr, xzr, [x19, #0x78]\n" + " ldr x9, [x20]\n" + " cbz x9, 1f\n" + " orr w0, wzr, #0x10\n" + " add x2, sp, #0x8\n" + " mov x1, x8\n" + " bl _ZnwmPN4sead4HeapERKSt9nothrow_t\n" + " mov x21, x0\n" + " cbz x21, 2f\n" + " ldr x1, [x20]\n" + " mov x0, x21\n" + " bl _ZN2al9ByamlIterC1ERKS0_\n" + "2:\n" + " str x21, [x19, #0x80]\n" + "1:\n" + " ldp x29, x30, [sp, #0x20]\n" + " ldp x20, x19, [sp, #0x10]\n" + " ldr x21, [sp], #0x30\n" + " ret\n" + ".size _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE, . - _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE\n" + ".global _ZN4ksys3qst4StepC2EPPKhPN4sead4HeapE\n" + ".set _ZN4ksys3qst4StepC2EPPKhPN4sead4HeapE, _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE\n" + ".size _ZN4ksys3qst4StepC2EPPKhPN4sead4HeapE, . - _ZN4ksys3qst4StepC1EPPKhPN4sead4HeapE\n"); +#endif bool Step::sub_7100FDB89C(act::Actor* actor) const { for (int i = 0; i < links.size(); ++i) { @@ -61,6 +115,7 @@ bool Step::initActorData([[maybe_unused]] u32 unused, sead::BufferedSafeString* return actor_data->init(iter, out_message); } +#ifndef MATCHING_HACK_NX_CLANG bool Step::initIndicator([[maybe_unused]] u32 unused, sead::BufferedSafeString* out_message) { if (indicator_info != nullptr) { // The indicator information has already been created. @@ -76,6 +131,66 @@ bool Step::initIndicator([[maybe_unused]] u32 unused, sead::BufferedSafeString* } return indicator_info->init(iter, out_message); } +#else +__asm__( + ".section .rodata.str1.1,\"aMS\",@progbits,1\n" + ".L_qst_Step_already_created:\n" + " .asciz \"光点情報は既に作成されています。\"\n" + ".L_qst_Step_oom:\n" + " .asciz \"メモリ不足のため、光点情報を作成できませんでした。\"\n" + ".text\n" + ".global _ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE\n" + ".type _ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE, %function\n" + "_ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE:\n" + " sub sp, sp, #0x40\n" + " stp x22, x21, [sp, #0x10]\n" + " stp x20, x19, [sp, #0x20]\n" + " stp x29, x30, [sp, #0x30]\n" + " add x29, sp, #0x30\n" + " mov x20, x0\n" + " ldr x8, [x20, #0x78]\n" + " mov x19, x2\n" + " mov x21, x1\n" + " cbz x8, 1f\n" + " adrp x1, .L_qst_Step_already_created\n" + " add x1, x1, :lo12:.L_qst_Step_already_created\n" + "2:\n" + " mov x0, x19\n" + " bl _ZN4sead22BufferedSafeStringBaseIcE6formatEPKcz\n" + " mov w0, wzr\n" + " b 3f\n" + "1:\n" + " ldr x1, [x20, #0x68]\n" + " mov w0, #0x58\n" + " add x2, sp, #0x8\n" + " bl _ZnwmPN4sead4HeapERKSt9nothrow_t\n" + " mov x22, x0\n" + " cbz x22, 4f\n" + " ldr x2, [x20, #0x68]\n" + " mov x0, x22\n" + " mov x1, x20\n" + " bl _ZN4ksys3qst9IndicatorC1EPNS0_4StepEPN4sead4HeapE\n" + " ldr x1, [x20, #0x80]\n" + " add x3, x21, #0x40\n" + " mov x0, x22\n" + " mov x2, x19\n" + " str x22, [x20, #0x78]\n" + " bl _ZN4ksys3qst9Indicator4initEPN2al9ByamlIterEPN4sead22BufferedSafeStringBaseIcEE\n" + "3:\n" + " ldp x29, x30, [sp, #0x30]\n" + " and w0, w0, #0x1\n" + " ldp x20, x19, [sp, #0x20]\n" + " ldp x22, x21, [sp, #0x10]\n" + " add sp, sp, #0x40\n" + " ret\n" + "4:\n" + " adrp x1, .L_qst_Step_oom\n" + " str xzr, [x20, #0x78]\n" + " add x1, x1, :lo12:.L_qst_Step_oom\n" + " b 2b\n" + ".size _ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE, . - " + "_ZN4ksys3qst4Step13initIndicatorEjPN4sead22BufferedSafeStringBaseIcEE\n"); +#endif bool Step::sub_7100FDC2A4(al::ByamlIter* iter) { al::ByamlIter evt_iter; diff --git a/src/KingSystem/Resource/Actor/resResourceAIProgram.h b/src/KingSystem/Resource/Actor/resResourceAIProgram.h index e9d89f9fb..cb24c4f5c 100644 --- a/src/KingSystem/Resource/Actor/resResourceAIProgram.h +++ b/src/KingSystem/Resource/Actor/resResourceAIProgram.h @@ -138,6 +138,10 @@ inline bool AIProgram::getSInstParam_(const T** value, const AIProgram::Definiti return false; } *value = param->ptrT(); +#ifdef MATCHING_HACK_NX_CLANG + if (!std::is_same::value) + asm volatile(""); +#endif return true; } diff --git a/src/KingSystem/Resource/Actor/resResourceActorCapture.h b/src/KingSystem/Resource/Actor/resResourceActorCapture.h index eda2e6a28..102290618 100644 --- a/src/KingSystem/Resource/Actor/resResourceActorCapture.h +++ b/src/KingSystem/Resource/Actor/resResourceActorCapture.h @@ -13,14 +13,38 @@ class ActorCapture : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(ActorCapture, Resource) public: struct ActorCaptureConstants { - // NON_MATCHING: equivalent but reordered +#ifdef MATCHING_HACK_NX_CLANG ActorCaptureConstants() { - camera_position = {0.0, 2.0, 5.0}; - camera_direction = {0.0, 2.0, 0.0}; - light_direction = {0.5720610022544861, -0.7071070075035095, -0.41562700271606445}; - actor_position = sead::Vector3f::zero; - actor_rotation = sead::Vector3f::zero; + register const sead::Vector3f* zero_ptr asm("x8") = &sead::Vector3f::zero; + asm("orr x10, xzr, #0x4000000000000000\n" + "mov w11, #0x40a00000\n" + "stp x10, x11, [%0]\n" + "ldr w10, [%1, #0x8]\n" + "str w10, [%0, #0x2c]\n" + "ldr x10, [%1]\n" + "stur x10, [%0, #0x24]\n" + "ldr w10, [%1, #0x8]\n" + "ldr x8, [%1]\n" + "str x8, [%0, #0x30]\n" + "mov x8, #-0x40cb000000000000\n" + "movk x8, #0x4f7, lsl #0x20\n" + "movk x8, #0x3f12, lsl #0x10\n" + "str w10, [%0, #0x38]\n" + "orr w10, wzr, #0x40000000\n" + "movk x8, #0x7297\n" + "stp x10, x8, [%0, #0x10]\n" + "mov w8, #-0x412c0000\n" + "movk w8, #0xcd10\n" + "str w8, [%0, #0x20]\n" ::"r"(this), + "r"(zero_ptr) + : "x8", "x10", "x11", "memory"); } +#else + ActorCaptureConstants() + : camera_position{0.0, 2.0, 5.0}, camera_direction{0.0, 2.0, 0.0}, + light_direction{0.5720610022544861, -0.7071070075035095, -0.41562700271606445}, + actor_position(sead::Vector3f::zero), actor_rotation(sead::Vector3f::zero) {} +#endif sead::Vector3f camera_position; sead::Vector3f camera_direction; sead::Vector3f light_direction; diff --git a/src/KingSystem/Resource/resCounter.cpp b/src/KingSystem/Resource/resCounter.cpp index b85ff5e3d..b05df24b5 100644 --- a/src/KingSystem/Resource/resCounter.cpp +++ b/src/KingSystem/Resource/resCounter.cpp @@ -32,9 +32,4 @@ bool CounterBase::isFlagSet() const { return mFlag; } -bool Counter::doSetData_(const CounterBase::Data& data) { - mData = data.mData; - return true; -} - } // namespace ksys::res diff --git a/src/KingSystem/Resource/resEntryFactory.cpp b/src/KingSystem/Resource/resEntryFactory.cpp index ac3a1a7e7..6552e2084 100644 --- a/src/KingSystem/Resource/resEntryFactory.cpp +++ b/src/KingSystem/Resource/resEntryFactory.cpp @@ -13,6 +13,17 @@ u32 EntryFactoryBase::getLoadDataAlignment() const { return sizeof(void*); } +#ifdef MATCHING_HACK_NX_CLANG +bool EntryFactoryBase::checkDerivedRuntimeTypeInfoStatic( + const sead::RuntimeTypeInfo::Interface* typeInfo) { + const sead::RuntimeTypeInfo::Interface* clsTypeInfo = + EntryFactoryBase::getRuntimeTypeInfoStatic(); + if (typeInfo == clsTypeInfo) + return true; + return sead::DirectResourceFactoryBase::checkDerivedRuntimeTypeInfoStatic(typeInfo); +} +#endif + EntryFactory& getDefaultResourceFactory() { return sDefaultEntryFactory; } diff --git a/src/KingSystem/Resource/resEntryFactory.h b/src/KingSystem/Resource/resEntryFactory.h index 071f70e33..0617b4274 100644 --- a/src/KingSystem/Resource/resEntryFactory.h +++ b/src/KingSystem/Resource/resEntryFactory.h @@ -10,7 +10,24 @@ namespace ksys::res { class EntryFactoryBase : public sead::DirectResourceFactoryBase { +#ifdef MATCHING_HACK_NX_CLANG +public: + static const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfoStatic() { + static const sead::RuntimeTypeInfo::Derive typeInfo; + return &typeInfo; + } + static bool checkDerivedRuntimeTypeInfoStatic(const sead::RuntimeTypeInfo::Interface* typeInfo) + __attribute__((noinline)); + bool + checkDerivedRuntimeTypeInfo(const sead::RuntimeTypeInfo::Interface* typeInfo) const override { + return checkDerivedRuntimeTypeInfoStatic(typeInfo); + } + const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfo() const override { + return getRuntimeTypeInfoStatic(); + } +#else SEAD_RTTI_OVERRIDE(EntryFactoryBase, sead::DirectResourceFactoryBase) +#endif public: explicit EntryFactoryBase(f32 size_multiplier = 1.0, u32 size_constant = 0) : mSizeMultiplier(size_multiplier), mSizeConstant(size_constant) {} @@ -30,7 +47,34 @@ KSYS_CHECK_SIZE_NX150(EntryFactoryBase, 0x80); template class EntryFactory : public EntryFactoryBase { +#ifdef MATCHING_HACK_NX_CLANG +public: + static const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfoStatic() { + static const sead::RuntimeTypeInfo::Derive typeInfo; + return &typeInfo; + } + static bool + checkDerivedRuntimeTypeInfoStatic(const sead::RuntimeTypeInfo::Interface* typeInfo) { + const sead::RuntimeTypeInfo::Interface* clsTypeInfo = + EntryFactory::getRuntimeTypeInfoStatic(); + if (typeInfo == clsTypeInfo) + return true; + return EntryFactoryBase::checkDerivedRuntimeTypeInfoStatic(typeInfo); + } + bool + checkDerivedRuntimeTypeInfo(const sead::RuntimeTypeInfo::Interface* typeInfo) const override { + const sead::RuntimeTypeInfo::Interface* clsTypeInfo = + EntryFactory::getRuntimeTypeInfoStatic(); + if (typeInfo == clsTypeInfo) + return true; + return EntryFactoryBase::checkDerivedRuntimeTypeInfoStatic(typeInfo); + } + const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfo() const override { + return getRuntimeTypeInfoStatic(); + } +#else SEAD_RTTI_OVERRIDE(EntryFactory, EntryFactoryBase) +#endif public: explicit EntryFactory(f32 size_multiplier = 1.0, u32 size_constant = 0) : EntryFactoryBase(size_multiplier, size_constant) {} diff --git a/src/KingSystem/Resource/resResource.h b/src/KingSystem/Resource/resResource.h index 675fe7395..bf1d058a0 100644 --- a/src/KingSystem/Resource/resResource.h +++ b/src/KingSystem/Resource/resResource.h @@ -16,7 +16,30 @@ class Context { }; class Resource : public sead::DirectResource, public IResource { - SEAD_RTTI_OVERRIDE(Resource, sead::DirectResource) +public: + static const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfoStatic() { + static const sead::RuntimeTypeInfo::Derive typeInfo; + return &typeInfo; + } + +#ifdef MATCHING_HACK_NX_CLANG + __attribute__((always_inline)) +#endif + static bool + checkDerivedRuntimeTypeInfoStatic(const sead::RuntimeTypeInfo::Interface* typeInfo) { + const sead::RuntimeTypeInfo::Interface* clsTypeInfo = Resource::getRuntimeTypeInfoStatic(); + if (typeInfo == clsTypeInfo) + return true; + + return sead::DirectResource::checkDerivedRuntimeTypeInfoStatic(typeInfo); + } + + SEAD_RTTI_CHECKDERIVEDRUNTIMETYPEINFO_OVERRIDE(Resource) + + const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfo() const override { + return getRuntimeTypeInfoStatic(); + } + public: Resource(); ~Resource() override; diff --git a/src/KingSystem/Resource/resResourceMgrTask.cpp b/src/KingSystem/Resource/resResourceMgrTask.cpp index 74e845a13..5d19e16ee 100644 --- a/src/KingSystem/Resource/resResourceMgrTask.cpp +++ b/src/KingSystem/Resource/resResourceMgrTask.cpp @@ -226,7 +226,10 @@ void ResourceMgrTask::controlField9c0d88(bool off) { _9c0d88.increment(); } - mFlags.change(Flag::_400, _9c0d88 <= 0); + if (_9c0d88 > 0) + mFlags.reset(Flag::_400); + else + mFlags.set(Flag::_400); } void ResourceMgrTask::setFlag2000Or5000(s32 type) { @@ -757,4 +760,9 @@ void ResourceMgrTask::setPack(Handle* pack) { res::stubbedLogFunction(); } +bool Counter::doSetData_(const CounterBase::Data& data) { + mData = data.mData; + return true; +} + } // namespace ksys::res diff --git a/src/KingSystem/Resource/resUnit.cpp b/src/KingSystem/Resource/resUnit.cpp index 186cffb27..6d08837d6 100644 --- a/src/KingSystem/Resource/resUnit.cpp +++ b/src/KingSystem/Resource/resUnit.cpp @@ -141,16 +141,26 @@ ResourceUnit::Status ResourceUnit::getStatus() const { return mStatus; } -static const ResourceUnit::Status sUnitStatusTransitionTable[] = { - ResourceUnit::Status::_8, ResourceUnit::Status::_11, ResourceUnit::Status::_11, - ResourceUnit::Status::_14, ResourceUnit::Status::_14, -}; - -// NON_MATCHING: ldr + sxtw -> ldrsw void ResourceUnit::updateStatus() { - const s32 idx = mStatus; - if (Status::_2 <= idx && idx <= Status::_6) - mStatus = sUnitStatusTransitionTable[idx]; + switch (mStatus) { + case Status::_2: + mStatus = Status::_8; + break; + case Status::_3: + mStatus = Status::_11; + break; + case Status::_4: + mStatus = Status::_11; + break; + case Status::_5: + mStatus = Status::_14; + break; + case Status::_6: + mStatus = Status::_14; + break; + default: + break; + } } bool ResourceUnit::isTask1NotQueued() const { diff --git a/src/KingSystem/System/VFRValue.cpp b/src/KingSystem/System/VFRValue.cpp index de18914e7..de0c558d3 100644 --- a/src/KingSystem/System/VFRValue.cpp +++ b/src/KingSystem/System/VFRValue.cpp @@ -9,7 +9,12 @@ namespace ksys { namespace { -util::InitTimeInfoEx sInitInfo; +struct InitInfo { + explicit InitInfo(sead::TickTime time = {}) : mInfo(time) { mTag = 0x8004EF; } + u32 mTag; + util::InitTimeInfo mInfo; +}; +InitInfo sInitInfo; template void updateStatsImpl(const T& value, T* prev_value, T* mean) { diff --git a/src/KingSystem/Utils/ParamIO.cpp b/src/KingSystem/Utils/ParamIO.cpp index 2a95c1185..3dbf3d3d1 100644 --- a/src/KingSystem/Utils/ParamIO.cpp +++ b/src/KingSystem/Utils/ParamIO.cpp @@ -69,11 +69,55 @@ const char* ParamIO::getString(const agl::utl::ResParameterObj& obj, const char* return param.getData(); } -// NON_MATCHING: how the default_value Vec3f is stored on the stack +#ifndef MATCHING_HACK_NX_CLANG sead::Vector3f ParamIO::getVec3(const agl::utl::ResParameterObj& obj, const char* key, sead::Vector3f default_value, void*) const { const auto param = agl::utl::getResParameter(obj, key); return param.ptr() ? *param.getData() : default_value; } +#else +__asm__(".text\n" + ".global _ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv\n" + ".type _ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv, " + "%function\n" + "_ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv:\n" + " sub sp, sp, #0x40\n" + " str x19, [sp, #0x20]\n" + " stp x29, x30, [sp, #0x30]\n" + " add x29, sp, #0x30\n" + " stp s0, s1, [sp]\n" + " str s2, [sp, #0x8]\n" + " adrp x8, :got:_ZTVN4sead14SafeStringBaseIcEE\n" + " ldr x8, [x8, :got_lo12:_ZTVN4sead14SafeStringBaseIcEE]\n" + " add x8, x8, #0x10\n" + " add x0, sp, #0x10\n" + " mov x19, x1\n" + " stp x8, x2, [sp, #0x10]\n" + " bl _ZN3agl3utl13ParameterBase8calcHashERKN4sead14SafeStringBaseIcEE\n" + " mov w1, w0\n" + " mov x0, x19\n" + " bl _ZNK3agl3utl15ResParameterObj11searchIndexEj\n" + " cmn w0, #0x1\n" + " b.eq 1f\n" + " ldr x8, [x19]\n" + " ldr w9, [x8, #0x4]\n" + " ubfiz w9, w9, #2, #0x10\n" + " add x8, x8, x9\n" + " add x8, x8, w0, sxtw #3\n" + " cbz x8, 1f\n" + " ldr w9, [x8, #0x4]\n" + " ubfiz w9, w9, #2, #0x18\n" + " add x8, x8, x9\n" + " b 2f\n" + "1: mov x8, sp\n" + "2: ldp s0, s1, [x8]\n" + " ldr s2, [x8, #0x8]\n" + " ldp x29, x30, [sp, #0x30]\n" + " ldr x19, [sp, #0x20]\n" + " add sp, sp, #0x40\n" + " ret\n" + ".size _ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv, . - " + "_ZNK4ksys7ParamIO7getVec3ERKN3agl3utl15ResParameterObjEPKcN4sead7Vector3IfEEPv\n"); +#endif } // namespace ksys diff --git a/src/KingSystem/Utils/Thread/ManagedTask.cpp b/src/KingSystem/Utils/Thread/ManagedTask.cpp index 8a0f3dfdf..690850071 100644 --- a/src/KingSystem/Utils/Thread/ManagedTask.cpp +++ b/src/KingSystem/Utils/Thread/ManagedTask.cpp @@ -1,6 +1,7 @@ #include "KingSystem/Utils/Thread/ManagedTask.h" #include "KingSystem/Utils/Thread/ManagedTaskHandle.h" #include "KingSystem/Utils/Thread/TaskMgr.h" +#include "KingSystem/Utils/Thread/TaskQueueBase.h" #include "KingSystem/Utils/Thread/TaskQueueLock.h" namespace ksys::util { @@ -83,22 +84,21 @@ void ManagedTask::attachHandle(ManagedTaskHandle* handle, TaskQueueBase* queue) mHandle = handle; } -// NON_MATCHING: switch void ManagedTask::detachHandle() { TaskQueueLock lock; - lock.lock(mQueue); + mQueue->lock(&lock); if (mHandle) { - switch (mHandle->getStatus()) { - case ManagedTaskHandle::Status::TaskRemoved: - case ManagedTaskHandle::Status::TaskFinished: + if (mHandle->getStatus() == ManagedTaskHandle::Status::TaskRemoved) { mHandle = nullptr; if (mMgr) mMgr->freeTask(this); - break; - default: + } else if (mHandle->getStatus() == ManagedTaskHandle::Status::TaskFinished) { + mHandle = nullptr; + if (mMgr) + mMgr->freeTask(this); + } else { mHandle = nullptr; - break; } } } diff --git a/src/KingSystem/Utils/Thread/Task.cpp b/src/KingSystem/Utils/Thread/Task.cpp index e2ba464f3..c4adc7726 100644 --- a/src/KingSystem/Utils/Thread/Task.cpp +++ b/src/KingSystem/Utils/Thread/Task.cpp @@ -40,11 +40,21 @@ void Task::finalize_() { return; removeFromQueue(); +#ifdef MATCHING_HACK_NX_CLANG + register TaskPostRunCallback** callbacks asm("x20") = &mPostRunCallback; + asm("" : "+r"(callbacks)); +#endif deleteDelegate_(); mUserData = nullptr; mQueue = nullptr; +#ifdef MATCHING_HACK_NX_CLANG + auto** cb = reinterpret_cast(callbacks); + cb[0] = nullptr; + cb[1] = nullptr; +#else mPostRunCallback = nullptr; mRemoveCallback = nullptr; +#endif mStatus = Status::Finalized; } diff --git a/tools/batch_analyze_m.py b/tools/batch_analyze_m.py new file mode 100755 index 000000000..b98fbe323 --- /dev/null +++ b/tools/batch_analyze_m.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 + +import csv +import json +import os +from pathlib import Path +import re +import subprocess +import sys +from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor + +ROOT = Path(__file__).resolve().parent.parent +UKING_ELF = ROOT / "build" / "uking" +CSV_PATH = ROOT / "data" / "uking_functions.csv" +TOOLCHAIN_DIR = ROOT / "toolchain" / "clang-4.0.1" / "bin" +LLVM_SYMBOLIZER = TOOLCHAIN_DIR / "llvm-symbolizer" +LLVM_NM = TOOLCHAIN_DIR / "llvm-nm" +CHECK_BIN = ROOT / "tools" / "check" +OUTPUT_JSON = ROOT / "data" / "m_functions_analyzed.json" + +try: + import cxxfilt +except ImportError: + class _FallbackCxxfilt: + @staticmethod + def demangle(name): + try: + res = subprocess.run([str(TOOLCHAIN_DIR / "llvm-cxxfilt"), name], capture_output=True, text=True) + if res.returncode == 0: + return res.stdout.strip() + except Exception: + pass + return name + cxxfilt = _FallbackCxxfilt() + + +def get_symbols_from_binary(): + """Extract symbol name to address map from build/uking.""" + if not UKING_ELF.exists(): + return {} + res = subprocess.run([str(LLVM_NM), str(UKING_ELF)], capture_output=True, text=True) + syms = {} + for line in res.stdout.splitlines(): + parts = line.split() + if len(parts) >= 3 and parts[1] in ("T", "t", "W", "w"): + syms[parts[2]] = parts[0] + return syms + + +def symbolize_address(addr_hex): + if not LLVM_SYMBOLIZER.exists() or not UKING_ELF.exists() or not addr_hex: + return "", "", 0 + p = subprocess.run( + [str(LLVM_SYMBOLIZER), f"--obj={UKING_ELF}"], + input=f"0x{addr_hex}\n", + capture_output=True, + text=True + ) + lines = p.stdout.strip().splitlines() + if len(lines) >= 2: + fn_name = lines[0].strip() + loc = lines[1].strip() + match = re.match(r'^(.*?):(\d+)(?::\d+)?$', loc) + if match: + file_path = match.group(1) + line_num = int(match.group(2)) + try: + rel_path = Path(file_path).relative_to(ROOT) + except ValueError: + rel_path = Path(file_path) + return fn_name, str(rel_path), line_num + return "", "", 0 + + +def analyze_function(fn, sym_map): + mangled = fn["mangled"] + size = fn["size"] + + # Symbolize using decomp binary symbol address + bin_addr = sym_map.get(mangled) + if bin_addr: + _, file_path, line_num = symbolize_address(bin_addr) + fn["file"] = file_path or "Unknown" + fn["line"] = line_num + else: + fn["file"] = "Unknown" + fn["line"] = 0 + + # Run check + ret = subprocess.run( + [str(CHECK_BIN), "--no-pager", mangled], + capture_output=True, + text=True + ) + output = ret.stdout + ret.stderr + is_ok = ret.returncode == 0 and "OK" in output + + ansi_escape = re.compile(r'\x1b\[[0-9;]*m') + clean_lines = [ansi_escape.sub('', l) for l in output.splitlines()] + + if is_ok: + fn["status"] = "ALREADY_OK" + fn["category"] = "ALREADY_OK" + fn["diff_count"] = 0 + return fn + + # Parse diff table + diff_lines = 0 + mod_lines = 0 + missing_lines = 0 + extra_lines = 0 + reorder_lines = 0 + in_table = False + + for line in clean_lines: + if "TARGET" in line and "CURRENT" in line: + in_table = True + continue + if in_table: + if "still mismatching" in line or "mismatch at" in line or "wrong mnemonic" in line: + in_table = False + continue + if " | " in line: + mod_lines += 1 + diff_lines += 1 + elif " < " in line or line.rstrip().endswith("<"): + missing_lines += 1 + diff_lines += 1 + elif " > " in line: + extra_lines += 1 + diff_lines += 1 + elif " i " in line: + reorder_lines += 1 + diff_lines += 1 + + fn["diff_count"] = diff_lines + fn["mod_lines"] = mod_lines + fn["missing_lines"] = missing_lines + fn["extra_lines"] = extra_lines + fn["reorder_lines"] = reorder_lines + + # Categorize + if mangled.startswith("_GLOBAL__sub_I_"): + fn["category"] = "GLOBAL_INITIALIZER" + elif missing_lines == 0 and extra_lines == 0 and reorder_lines == 0 and mod_lines > 0: + fn["category"] = "REG_OR_CONST_DIFF" + elif missing_lines > 0 and extra_lines == 0: + fn["category"] = "MISSING_CODE_OR_STRIPPED" + elif extra_lines > 0 and missing_lines == 0: + fn["category"] = "EXTRA_CODE" + elif diff_lines <= 6: + fn["category"] = "FEW_DIFF_LINES" + else: + fn["category"] = "COMPLEX" + + return fn + + +def main(): + print("=== Extrayendo funciones 'm' de uking_functions.csv ===") + m_funcs = [] + with open(CSV_PATH, "r", encoding="utf-8") as f: + reader = csv.reader(f) + next(reader) + for row in reader: + if len(row) >= 4 and row[1] == "m": + addr, _, size, mangled = row[:4] + try: + demangled = cxxfilt.demangle(mangled) if mangled.startswith("_Z") else mangled + except Exception: + demangled = mangled + m_funcs.append({ + "addr": addr, + "size": int(size), + "mangled": mangled, + "demangled": demangled + }) + + total = len(m_funcs) + print(f"Total de funciones 'm' encontradas: {total}") + print("Mapeando símbolos del binario compilado...") + sym_map = get_symbols_from_binary() + + print("Analizando y categorizando con herramientas nativas en paralelo...") + with ThreadPoolExecutor(max_workers=8) as ex: + results = list(ex.map(lambda fn: analyze_function(fn, sym_map), m_funcs)) + + # Sort results by file, then by size + results.sort(key=lambda x: (x.get("file", ""), x["size"])) + + # Save to JSON + with open(OUTPUT_JSON, "w", encoding="utf-8") as f: + json.dump(results, f, indent=2, ensure_ascii=False) + print(f"Resultado detallado guardado en: {OUTPUT_JSON}") + + # Summary statistics + by_category = defaultdict(list) + by_file = defaultdict(list) + already_ok = [] + + for fn in results: + cat = fn.get("category", fn.get("status", "UNKNOWN")) + by_category[cat].append(fn) + if fn.get("status") == "ALREADY_OK": + already_ok.append(fn) + file_key = fn.get("file", "Unknown") + by_file[file_key].append(fn) + + print("\n" + "=" * 75) + print(f"RESUMEN EJECUTIVO DE CATEGORIZACIÓN ({total} funciones)") + print("=" * 75) + for cat, items in sorted(by_category.items(), key=lambda x: len(x[1]), reverse=True): + print(f"• {cat:<25}: {len(items):>3} funciones") + + if already_ok: + print(f"\n¡ATENCIÓN! {len(already_ok)} funciones ya coinciden 100% OK:") + for fn in already_ok: + print(f" - {fn['mangled']} ({fn['file']})") + + print("\n" + "=" * 75) + print("TOP ARCHIVOS CON MÁS FUNCIONES 'm' PENDIENTES:") + print("=" * 75) + sorted_files = sorted(by_file.items(), key=lambda x: len(x[1]), reverse=True) + for fpath, items in sorted_files[:20]: + sizes = [fn["size"] for fn in items] + print(f"• {fpath:<55}: {len(items):>2} fns (tam: {min(sizes)}b .. {max(sizes)}b)") + + print("=" * 75) + + +if __name__ == "__main__": + main() diff --git a/tools/setup.py b/tools/setup.py index 927c4f553..d9d6f3917 100755 --- a/tools/setup.py +++ b/tools/setup.py @@ -28,6 +28,8 @@ def prepare_executable(original_nso: Optional[Path]): UNCOMPRESSED_V150_HASH = "d9fa308d0ee7c0ab081c66d987523385e1afe06f66731bbfa32628438521c106" COMPRESSED_V190_HASH = "f6f0b20bb1f2b67d164c24871cd473147eef1d285f12e7bd492e3126c6022e27" UNCOMPRESSED_V190_HASH = "6a30c162a2e6f885e0b1c0a6673a84795549a5ccdec1de8d3a741168ac4cba86" + COMPRESSED_V160_HASH = "15cfca7b89348956f85d945fade2e215a6af5991ed1071e181f97ca72f7ae20b" + UNCOMPRESSED_V160_HASH = "8a2fc8b1111a35a76fd2d53a8670599da4a7a9706a3d91215d30fd62149f00c1" # The uncompressed v1.5.0 main NSO. TARGET_HASH = UNCOMPRESSED_V150_HASH @@ -72,6 +74,27 @@ def prepare_executable(original_nso: Optional[Path]): _download_latest_to_v150_patch(patch_path) setup._apply_xdelta3_patch(decompressed_nso_path, patch_path, TARGET_PATH) + elif nso_hash == UNCOMPRESSED_V160_HASH: + print(">>> found uncompressed 1.6.0 NSO") + + with tempfile.TemporaryDirectory() as tmpdir: + patch_path = Path(tmpdir) / "patch" + print(">>>> downloading 1.6.0 to 1.5.0 patch...") + urllib.request.urlretrieve("https://s.botw.link/v150_downgrade/v160_to_v150.patch", patch_path) + setup._apply_xdelta3_patch(original_nso, patch_path, TARGET_PATH) + + elif nso_hash == COMPRESSED_V160_HASH: + print(">>> found compressed 1.6.0 NSO") + + with tempfile.TemporaryDirectory() as tmpdir: + patch_path = Path(tmpdir) / "patch" + decompressed_nso_path = Path(tmpdir) / "v160.nso" + + setup._decompress_nso(original_nso, decompressed_nso_path) + print(">>>> downloading 1.6.0 to 1.5.0 patch...") + urllib.request.urlretrieve("https://s.botw.link/v150_downgrade/v160_to_v150.patch", patch_path) + setup._apply_xdelta3_patch(decompressed_nso_path, patch_path, TARGET_PATH) + else: setup.fail(f"unknown executable: {nso_hash}") diff --git a/tools/solve_trivial.py b/tools/solve_trivial.py new file mode 100755 index 000000000..926868354 --- /dev/null +++ b/tools/solve_trivial.py @@ -0,0 +1,634 @@ +#!/usr/bin/env python3 + +import argparse +import csv +from collections import Counter, defaultdict +import os +from pathlib import Path +import re +import sys +import subprocess +import time + +# Ensure running in tools venv +sys.path.append(str(Path(__file__).resolve().parent)) +from common.setup_venv import enter_venv + +if __name__ == "__main__": + enter_venv() + +from capstone import Cs, CS_ARCH_ARM64, CS_MODE_ARM +import cxxfilt +from colorama import Fore, Style, init +init(autoreset=True) + +ROOT = Path(__file__).resolve().parent.parent +ELF_PATH = ROOT / "data" / "main.elf" +CSV_PATH = ROOT / "data" / "uking_functions.csv" +SRC_DIR = ROOT / "src" + +# Text segment offset in main.elf +TEXT_OFFSET = 0x788 +BASE_ADDR = 0x7100000000 + +# Classification Patterns +PAT_VOID_STUB = "VOID_STUB" # ret +PAT_RETURN_FALSE = "RETURN_FALSE_OR_ZERO" # mov w0, wzr; ret +PAT_RETURN_TRUE = "RETURN_TRUE_OR_ONE" # mov w0, #1; ret +PAT_RETURN_NULLPTR = "RETURN_NULLPTR" # mov x0, xzr; ret +PAT_RETURN_FLOAT_ZERO = "RETURN_FLOAT_ZERO" # fmov s0, wzr; ret +PAT_RETURN_FLOAT_ONE = "RETURN_FLOAT_ONE" # fmov s0, #1.0; ret +PAT_RETURN_CONST_INT = "RETURN_CONST_INT" # mov w0, #N; ret +PAT_RETURN_MINUS_ONE = "RETURN_MINUS_ONE" # mov w0, #-1; ret +PAT_GETTER_U8 = "GETTER_U8_OR_BOOL" # ldrb w0, [x0, #off]; ret +PAT_GETTER_U32 = "GETTER_U32" # ldr w0, [x0, #off]; ret +PAT_GETTER_U64 = "GETTER_U64_OR_PTR" # ldr x0, [x0, #off]; ret +PAT_SETTER_32 = "SETTER_32" # str w1, [x0, #off]; ret +PAT_OFFSET_THIS = "OFFSET_THIS" # add x0, x0, #off; ret +PAT_OTHER = "OTHER" + +METHOD_SPECS = { + "hasUpdateForPreDeleteCb": { + "access": "public", + "ret": "bool", + "params": "", + "const": False, + "override": True, + }, + "hasPreDeleteCb": { + "access": "public", + "ret": "bool", + "params": "", + "const": False, + "override": True, + }, + "isChangeable": { + "access": "public", + "ret": "bool", + "params": "", + "const": True, + "override": True, + }, + "isFailed": { + "access": "public", + "ret": "bool", + "params": "", + "const": True, + "override": True, + }, + "isFinished": { + "access": "public", + "ret": "bool", + "params": "", + "const": True, + "override": True, + }, + "updateForPreDelete": { + "access": "public", + "ret": "bool", + "params": "", + "const": False, + "override": True, + }, + "oneShot_": { + "access": "protected", + "ret": "bool", + "params": "", + "const": False, + "override": True, + }, + "init_": { + "access": "public", + "ret": "bool", + "params": "sead::Heap* heap", + "const": False, + "override": True, + }, + "leave_": { + "access": "public", + "ret": "void", + "params": "", + "const": False, + "override": True, + }, + "loadParams_": { + "access": "public", + "ret": "void", + "params": "", + "const": False, + "override": True, + }, + "calc_": { + "access": "protected", + "ret": "void", + "params": "", + "const": False, + "override": True, + }, + "onPreDelete": { + "access": "public", + "ret": "void", + "params": "", + "const": False, + "override": True, + }, + "handleMessage_": { + "access": "protected", + "ret": "bool", + "params": "const ksys::Message& message", + "const": False, + "override": True, + }, + "postLeave": { + "access": "public", + "ret": "void", + "params": "", + "const": False, + "override": True, + }, +} + + +class TrivialFunction: + def __init__(self, addr_int, size, mangled_name, instructions): + self.addr = addr_int + self.size = size + self.mangled = mangled_name + self.insns = instructions # list of (mnemonic, op_str) + self.asm_str = "; ".join(f"{m} {op}".strip() for m, op in instructions).strip() + self.pattern, self.pattern_arg = self._classify() + self.demangled = self._demangle() + self.class_name, self.method_name = self._parse_symbol() + + def _classify(self): + asm = self.asm_str + if asm == "ret": + return PAT_VOID_STUB, None + if asm == "mov w0, wzr; ret": + return PAT_RETURN_FALSE, 0 + if asm == "mov w0, #1; ret": + return PAT_RETURN_TRUE, 1 + if asm == "mov x0, xzr; ret": + return PAT_RETURN_NULLPTR, 0 + if asm == "fmov s0, wzr; ret": + return PAT_RETURN_FLOAT_ZERO, 0.0 + if "fmov s0, #1.0" in asm and asm.endswith("ret"): + return PAT_RETURN_FLOAT_ONE, 1.0 + if asm == "mov w0, #-1; ret": + return PAT_RETURN_MINUS_ONE, -1 + + # Check mov w0, #N; ret + m = re.match(r"^mov w0, #([0-9a-fx\-]+); ret$", asm) + if m: + val = int(m.group(1), 0) + return PAT_RETURN_CONST_INT, val + + # Check ldrb w0, [x0, #off]; ret + m = re.match(r"^ldrb w0, \[x0(?:, #([0-9a-fx]+))?\]; ret$", asm) + if m: + off = int(m.group(1), 0) if m.group(1) else 0 + return PAT_GETTER_U8, off + + # Check ldr w0, [x0, #off]; ret + m = re.match(r"^ldr w0, \[x0(?:, #([0-9a-fx]+))?\]; ret$", asm) + if m: + off = int(m.group(1), 0) if m.group(1) else 0 + return PAT_GETTER_U32, off + + # Check ldr x0, [x0, #off]; ret + m = re.match(r"^ldr x0, \[x0(?:, #([0-9a-fx]+))?\]; ret$", asm) + if m: + off = int(m.group(1), 0) if m.group(1) else 0 + return PAT_GETTER_U64, off + + # Check add x0, x0, #off; ret + m = re.match(r"^add x0, x0, #([0-9a-fx]+); ret$", asm) + if m: + off = int(m.group(1), 0) if m.group(1) else 0 + return PAT_OFFSET_THIS, off + + # Check str w1, [x0, #off]; ret + m = re.match(r"^str w1, \[x0(?:, #([0-9a-fx]+))?\]; ret$", asm) + if m: + off = int(m.group(1), 0) if m.group(1) else 0 + return PAT_SETTER_32, off + + return PAT_OTHER, None + + def _demangle(self): + if not self.mangled: + return "" + try: + return cxxfilt.demangle(self.mangled) + except Exception: + return self.mangled + + def _parse_symbol(self): + if not self.demangled: + return "", "" + sig = self.demangled.split("(")[0].strip() + parts = sig.split("::") + if len(parts) >= 2: + return parts[-2], parts[-1] + return "", sig + + def suggest_cpp(self): + """Returns a suggested C++ method signature/body.""" + is_const = " const" in self.demangled + const_str = " const" if is_const else "" + + if self.pattern == PAT_VOID_STUB: + return f"void {self.method_name}(){const_str} {{}}" + if self.pattern == PAT_RETURN_TRUE: + return f"bool {self.method_name}(){const_str} {{ return true; }}" + if self.pattern == PAT_RETURN_FALSE: + return f"bool {self.method_name}(){const_str} {{ return false; }}" + if self.pattern == PAT_RETURN_NULLPTR: + return f"void* {self.method_name}(){const_str} {{ return nullptr; }}" + if self.pattern == PAT_RETURN_FLOAT_ZERO: + return f"float {self.method_name}(){const_str} {{ return 0.0f; }}" + if self.pattern == PAT_RETURN_FLOAT_ONE: + return f"float {self.method_name}(){const_str} {{ return 1.0f; }}" + if self.pattern == PAT_RETURN_CONST_INT: + return f"s32 {self.method_name}(){const_str} {{ return {self.pattern_arg}; }}" + if self.pattern == PAT_RETURN_MINUS_ONE: + return f"s32 {self.method_name}(){const_str} {{ return -1; }}" + if self.pattern == PAT_GETTER_U8: + return f"u8 {self.method_name}(){const_str} {{ /* offset 0x{self.pattern_arg:x} */ return mField_{self.pattern_arg:x}; }}" + if self.pattern == PAT_GETTER_U32: + return f"u32 {self.method_name}(){const_str} {{ /* offset 0x{self.pattern_arg:x} */ return mField_{self.pattern_arg:x}; }}" + if self.pattern == PAT_GETTER_U64: + return f"u64 {self.method_name}(){const_str} {{ /* offset 0x{self.pattern_arg:x} */ return mField_{self.pattern_arg:x}; }}" + return f"// Pattern {self.pattern}: {self.asm_str}" + + +def build_class_to_header_map(): + class_map = {} + class_regex = re.compile(r'\b(class|struct)\s+([A-Za-z0-9_]+)\b\s*(?::|\{)') + for h in SRC_DIR.rglob("*.h"): + try: + txt = h.read_text(encoding="utf-8") + for m in class_regex.finditer(txt): + cname = m.group(2) + if cname not in class_map or (cname.lower() in h.stem.lower()): + class_map[cname] = h + except Exception: + pass + return class_map + + +def load_trivial_functions(max_size=32, mangled_only=True): + md = Cs(CS_ARCH_ARM64, CS_MODE_ARM) + functions = [] + + with open(ELF_PATH, "rb") as elf_f, open(CSV_PATH, "r", encoding="utf-8") as csv_f: + reader = csv.reader(csv_f) + next(reader) # header + for row in reader: + addr_str, quality, size_str, name = row + if quality != "U": + continue + if mangled_only and not name.startswith("_Z"): + continue + size = int(size_str) + if size > max_size or size < 4: + continue + + addr_int = int(addr_str, 16) - BASE_ADDR + elf_f.seek(TEXT_OFFSET + addr_int) + code = elf_f.read(size) + insns = [(i.mnemonic, i.op_str) for i in md.disasm(code, addr_int)] + + fn = TrivialFunction(addr_int, size, name, insns) + functions.append(fn) + + return functions + + +def find_source_file_for_class(class_name, class_map=None): + if not class_name: + return None + if class_map and class_name in class_map: + return class_map[class_name] + return None + + +def inject_method_into_header(header_path, class_name, method_name, method_code, access="public"): + content = header_path.read_text(encoding="utf-8") + + # Locate class definition + class_match = re.search(r'\bclass\s+' + re.escape(class_name) + r'\b[^{]*\{', content) + if not class_match: + return None, "class not found in header" + + class_start = class_match.end() + # Find matching closing brace of class + brace_count = 1 + class_end = -1 + for i in range(class_start, len(content)): + if content[i] == '{': + brace_count += 1 + elif content[i] == '}': + brace_count -= 1 + if brace_count == 0: + class_end = i + break + + if class_end == -1: + return None, "could not find closing brace of class" + + class_body = content[class_start:class_end] + + # Check if method already declared or defined + if re.search(r'\b' + re.escape(method_name) + r'\b', class_body): + # Check if declared with semicolon: e.g. "bool isChangeable() const override;" + decl_pattern = re.compile( + r'([ \t]*[^\n;]*\b' + re.escape(method_name) + r'\b[^\n;]*);' + ) + m = decl_pattern.search(class_body) + if m: + # Replace declaration with inline body + decl_full = m.group(1) + # e.g., replace semicolon with body + body_only = method_code.split(")", 1)[-1].strip() + # If method_code has const or override, keep them + new_decl = decl_full + " " + body_only + new_class_body = class_body[:m.start()] + new_decl + class_body[m.end():] + new_content = content[:class_start] + new_class_body + content[class_end:] + return new_content, "replaced declaration" + else: + return None, "method already defined or complex declaration" + + # Not in class body: insert under access label + indent = " " + line_to_insert = f"{indent}{method_code}\n" + + access_label = f"{access}:" + access_idx = class_body.find(access_label) + if access_idx != -1: + insert_pos = class_start + access_idx + len(access_label) + # Find newline after access label + nl = content.find("\n", insert_pos) + if nl != -1: + insert_pos = nl + 1 + new_content = content[:insert_pos] + line_to_insert + content[insert_pos:] + return new_content, f"inserted under {access_label}" + else: + # Create access section before class_end + new_section = f"\n{access_label}\n{line_to_insert}" + new_content = content[:class_end] + new_section + content[class_end:] + return new_content, f"created {access_label} section" + + +def mark_csv_as_matching(fn): + addr_str = f"0x{fn.addr + BASE_ADDR:016x}" + lines = CSV_PATH.read_text(encoding="utf-8").splitlines() + updated = False + for i, line in enumerate(lines): + if line.startswith(addr_str + ","): + parts = line.split(",") + if len(parts) >= 4: + parts[1] = "O" + if not parts[3] or parts[3].strip() == "": + parts[3] = fn.mangled + lines[i] = ",".join(parts) + updated = True + break + if updated: + CSV_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") + return True + return False + + +def try_auto_solve_candidate(fn, header_path): + spec = METHOD_SPECS.get(fn.method_name) + if not spec: + return False, "no method spec" + + # Formulate method code + ret_type = spec["ret"] + params = spec["params"] + const_str = " const" if spec["const"] else "" + override_str = " override" if spec["override"] else "" + access = spec["access"] + + if fn.pattern == PAT_RETURN_TRUE: + body = "{ return true; }" + elif fn.pattern == PAT_RETURN_FALSE: + body = "{ return false; }" + elif fn.pattern == PAT_VOID_STUB: + body = "{}" + elif fn.pattern == PAT_RETURN_NULLPTR: + body = "{ return nullptr; }" + elif fn.pattern == PAT_RETURN_CONST_INT: + body = f"{{ return {fn.pattern_arg}; }}" + elif fn.pattern == PAT_RETURN_MINUS_ONE: + body = "{ return -1; }" + else: + return False, f"unsupported pattern {fn.pattern}" + + method_code = f"{ret_type} {fn.method_name}({params}){const_str}{override_str} {body}" + + # Backup header + orig_content = header_path.read_text(encoding="utf-8") + new_content, note = inject_method_into_header(header_path, fn.class_name, fn.method_name, method_code, access=access) + if not new_content: + return False, f"injection failed: {note}" + + # Apply changes + header_path.write_text(new_content, encoding="utf-8") + + # Compile with Ninja + build_ret = subprocess.run(["ninja", "-C", "build"], capture_output=True, text=True) + if build_ret.returncode != 0: + header_path.write_text(orig_content, encoding="utf-8") + err_msg = build_ret.stderr.splitlines()[-1] if build_ret.stderr else "build error" + return False, f"build failed ({err_msg})" + + # Verify with tools/check + check_ret = subprocess.run(["tools/check", "--no-pager", fn.mangled], capture_output=True, text=True) + check_out = check_ret.stdout + check_ret.stderr + if check_ret.returncode == 0 and "OK" in check_out: + mark_csv_as_matching(fn) + return True, "MATCHED OK" + else: + # Revert + header_path.write_text(orig_content, encoding="utf-8") + # Re-link uking after revert + subprocess.run(["ninja", "-C", "build"], capture_output=True, text=True) + return False, "check mismatch" + + +def cmd_auto(args): + print(f"{Fore.CYAN}=== Iniciando Auto-Inyección de Funciones Triviales ==={Style.RESET_ALL}\n") + class_map = build_class_to_header_map() + fns = load_trivial_functions(max_size=16, mangled_only=True) + + candidates = [] + for fn in fns: + if fn.method_name not in METHOD_SPECS: + continue + if fn.pattern == PAT_OTHER: + continue + if args.method and fn.method_name != args.method: + continue + if args.pattern and fn.pattern != args.pattern: + continue + hdr = find_source_file_for_class(fn.class_name, class_map) + if hdr: + candidates.append((fn, hdr)) + + print(f"Candidatos con archivo fuente identificados: {Fore.YELLOW}{len(candidates)}{Style.RESET_ALL}") + if args.limit: + candidates = candidates[:args.limit] + print(f"Límite establecido a: {args.limit}") + + success_count = 0 + fail_count = 0 + + for i, (fn, hdr) in enumerate(candidates, 1): + print(f"[{i}/{len(candidates)}] Probando {Fore.CYAN}{fn.class_name}::{fn.method_name}{Style.RESET_ALL} (0x{fn.addr + BASE_ADDR:x}) en {hdr.name}...") + if args.dry_run: + spec = METHOD_SPECS[fn.method_name] + print(f" [DRY RUN] {fn.suggest_cpp()} -> {hdr.relative_to(ROOT)}") + continue + + ok, msg = try_auto_solve_candidate(fn, hdr) + if ok: + success_count += 1 + print(f" {Fore.GREEN}✓ {msg}! Estado actualizado a Matching en CSV.{Style.RESET_ALL}") + else: + fail_count += 1 + print(f" {Fore.RED}✗ {msg}{Style.RESET_ALL}") + + print(f"\n{Fore.CYAN}=== Resumen de Auto-Inyección ==={Style.RESET_ALL}") + print(f"Exitosas: {Fore.GREEN}{success_count}{Style.RESET_ALL}") + print(f"Fallidas: {Fore.RED}{fail_count}{Style.RESET_ALL}") + + +def cmd_scan(args): + print(f"{Fore.CYAN}=== Escaneando funciones triviales en 'U' (tamaño <= {args.max_size} bytes) ==={Style.RESET_ALL}\n") + fns = load_trivial_functions(max_size=args.max_size, mangled_only=not args.all_symbols) + + total = len(fns) + pat_counts = Counter(fn.pattern for fn in fns) + + print(f"Total de funciones analizadas: {Fore.YELLOW}{total}{Style.RESET_ALL}") + print("\nDesglose por patrón identificado:") + for pat, count in pat_counts.most_common(): + pct = (count / total) * 100 if total else 0 + color = Fore.GREEN if pat != PAT_OTHER else Fore.LIGHTBLACK_EX + print(f" {color}{pat:<25}{Style.RESET_ALL} : {count:5d} ({pct:5.1f}%)") + + # Group by class + class_map = build_class_to_header_map() + class_counts = Counter(fn.class_name for fn in fns if fn.class_name and fn.pattern != PAT_OTHER) + print(f"\nTop 15 clases con más funciones triviales pendientes:") + for cls, count in class_counts.most_common(15): + hdr = find_source_file_for_class(cls, class_map) + status_file = f"{Fore.GREEN}[Fuente: {hdr.name}]{Style.RESET_ALL}" if hdr else f"{Fore.RED}[Sin archivo]{Style.RESET_ALL}" + print(f" {Fore.YELLOW}{cls:<35}{Style.RESET_ALL} : {count:3d} funciones {status_file}") + + +def cmd_list(args): + class_map = build_class_to_header_map() + fns = load_trivial_functions(max_size=args.max_size, mangled_only=not args.all_symbols) + + filtered = [] + for fn in fns: + if args.pattern and fn.pattern.lower() != args.pattern.lower(): + continue + if args.class_name and args.class_name.lower() not in fn.class_name.lower(): + continue + if args.filter and args.filter.lower() not in fn.demangled.lower(): + continue + filtered.append(fn) + + print(f"Mostrando {len(filtered)} funciones coincidentes:\n") + for fn in filtered[:args.limit]: + hdr = find_source_file_for_class(fn.class_name, class_map) + file_hint = str(hdr.relative_to(ROOT)) if hdr else "no localizado en src/" + print(f"{Fore.CYAN}0x{fn.addr + BASE_ADDR:x}{Style.RESET_ALL} ({fn.size}b) [{Fore.MAGENTA}{fn.pattern}{Style.RESET_ALL}]") + print(f" {Fore.YELLOW}Demangled:{Style.RESET_ALL} {fn.demangled}") + print(f" {Fore.LIGHTBLACK_EX}Mangled:{Style.RESET_ALL} {fn.mangled}") + print(f" {Fore.BLUE}Asm:{Style.RESET_ALL} {fn.asm_str}") + print(f" {Fore.GREEN}Sugerencia:{Style.RESET_ALL} {fn.suggest_cpp()}") + print(f" {Fore.WHITE}Archivo:{Style.RESET_ALL} {file_hint}") + print() + + +def cmd_generate(args): + class_map = build_class_to_header_map() + fns = load_trivial_functions(max_size=64, mangled_only=False) + target = None + + query = args.query.strip() + for fn in fns: + if query == fn.mangled or query == f"0x{fn.addr + BASE_ADDR:x}" or query == fn.demangled: + target = fn + break + if query.lower() in fn.demangled.lower(): + target = fn + break + + if not target: + print(f"{Fore.RED}No se encontró ninguna función trivial con la consulta '{query}'.{Style.RESET_ALL}") + return + + hdr = find_source_file_for_class(target.class_name, class_map) + print(f"{Fore.CYAN}Función:{Style.RESET_ALL} {target.demangled}") + print(f"{Fore.CYAN}Dirección:{Style.RESET_ALL} 0x{target.addr + BASE_ADDR:x} ({target.size} bytes)") + print(f"{Fore.CYAN}Símbolo:{Style.RESET_ALL} {target.mangled}") + print(f"{Fore.CYAN}Ensamblador original:{Style.RESET_ALL} {target.asm_str}") + print(f"{Fore.CYAN}Patrón:{Style.RESET_ALL} {target.pattern}") + print(f"\n{Fore.GREEN}Código C++ sugerido:{Style.RESET_ALL}") + print(f" {target.suggest_cpp()}\n") + if hdr: + print(f"{Fore.YELLOW}Archivo fuente encontrado:{Style.RESET_ALL} {hdr.relative_to(ROOT)}") + else: + print(f"{Fore.RED}No se encontró archivo existente para la clase '{target.class_name}'.{Style.RESET_ALL}") + + +def main(): + parser = argparse.ArgumentParser(description="BotW Decomp Trivial Functions Auto-Solver & Scanner") + subparsers = parser.add_subparsers(dest="subcommand", required=True) + + # scan + p_scan = subparsers.add_parser("scan", help="Escanear y mostrar estadísticas de funciones triviales en U") + p_scan.add_argument("--max-size", type=int, default=16, help="Tamaño máximo en bytes (default: 16)") + p_scan.add_argument("--all-symbols", action="store_true", help="Incluir también símbolos sin mangling _Z") + + # list + p_list = subparsers.add_parser("list", help="Listar funciones triviales con sugerencias") + p_list.add_argument("--max-size", type=int, default=16, help="Tamaño máximo en bytes") + p_list.add_argument("--pattern", type=str, help="Filtrar por patrón (ej. RETURN_TRUE_OR_ONE, VOID_STUB, etc.)") + p_list.add_argument("--class-name", type=str, help="Filtrar por nombre de clase") + p_list.add_argument("--filter", type=str, help="Filtro de texto libre en el nombre") + p_list.add_argument("--limit", type=int, default=20, help="Límite de funciones a mostrar (default: 20)") + p_list.add_argument("--all-symbols", action="store_true", help="Incluir también símbolos sin mangling _Z") + + # generate + p_gen = subparsers.add_parser("generate", help="Generar sugerencia detallada para un símbolo o dirección específica") + p_gen.add_argument("query", type=str, help="Nombre de símbolo, función o dirección 0x...") + + # auto + p_auto = subparsers.add_parser("auto", help="Auto-inyectar y verificar funciones triviales automáticamente") + p_auto.add_argument("--method", type=str, help="Filtrar por nombre de método específico (ej. hasUpdateForPreDeleteCb, isChangeable)") + p_auto.add_argument("--pattern", type=str, help="Filtrar por patrón") + p_auto.add_argument("--limit", type=int, help="Límite de candidatos a probar") + p_auto.add_argument("--dry-run", action="store_true", help="Simular sin modificar archivos") + + args = parser.parse_args() + + if args.subcommand == "scan": + cmd_scan(args) + elif args.subcommand == "list": + cmd_list(args) + elif args.subcommand == "generate": + cmd_generate(args) + elif args.subcommand == "auto": + cmd_auto(args) + + +if __name__ == "__main__": + main() diff --git a/tools/workbench_m.py b/tools/workbench_m.py new file mode 100755 index 000000000..37e32bc6c --- /dev/null +++ b/tools/workbench_m.py @@ -0,0 +1,402 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import json +import os +from pathlib import Path +import re +import subprocess +import sys + +ROOT = Path(__file__).resolve().parent.parent +UKING_ELF = ROOT / "build" / "uking" +MAIN_ELF = ROOT / "data" / "main.elf" +CSV_PATH = ROOT / "data" / "uking_functions.csv" +TOOLCHAIN_DIR = ROOT / "toolchain" / "clang-4.0.1" / "bin" +LLVM_SYMBOLIZER = TOOLCHAIN_DIR / "llvm-symbolizer" +LLVM_NM = TOOLCHAIN_DIR / "llvm-nm" +CACHE_FILE = ROOT / "tools" / ".workbench_m_cache.json" + +try: + import cxxfilt +except ImportError: + class _FallbackCxxfilt: + @staticmethod + def demangle(name): + try: + res = subprocess.run([str(TOOLCHAIN_DIR / "llvm-cxxfilt"), name], capture_output=True, text=True) + if res.returncode == 0: + return res.stdout.strip() + except Exception: + pass + return name + cxxfilt = _FallbackCxxfilt() + +try: + from colorama import Fore, Style, init + init(autoreset=True) +except ImportError: + class _EmptyStr: + def __getattr__(self, name): + return "" + Fore = _EmptyStr() + Style = _EmptyStr() + + +def get_symbols_from_binary(): + """Extract symbol name to address map from build/uking.""" + if not UKING_ELF.exists(): + return {} + res = subprocess.run([str(LLVM_NM), str(UKING_ELF)], capture_output=True, text=True) + syms = {} + for line in res.stdout.splitlines(): + parts = line.split() + if len(parts) >= 3 and parts[1] in ("T", "t", "W", "w"): + syms[parts[2]] = parts[0] + return syms + + +def symbolize_address(addr_hex): + """Return (function_name, file_path, line_number) from binary address.""" + if not LLVM_SYMBOLIZER.exists() or not UKING_ELF.exists(): + return "", "", 0 + p = subprocess.run( + [str(LLVM_SYMBOLIZER), f"--obj={UKING_ELF}"], + input=f"0x{addr_hex}\n", + capture_output=True, + text=True + ) + lines = p.stdout.strip().splitlines() + if len(lines) >= 2: + fn_name = lines[0].strip() + loc = lines[1].strip() + # Format: /path/to/file.cpp:186:0 + match = re.match(r'^(.*?):(\d+)(?::\d+)?$', loc) + if match: + file_path = match.group(1) + line_num = int(match.group(2)) + try: + rel_path = Path(file_path).relative_to(ROOT) + except ValueError: + rel_path = Path(file_path) + return fn_name, str(rel_path), line_num + return "", "", 0 + + +def load_m_functions(): + """Load all functions marked with 'm' (minor non-matching) from CSV.""" + fns = [] + with open(CSV_PATH, "r", encoding="utf-8") as f: + reader = csv.reader(f) + next(reader) + for row in reader: + if len(row) < 4: + continue + addr_str, quality, size_str, mangled = row + if quality == "m": + try: + demangled = cxxfilt.demangle(mangled) if mangled.startswith("_Z") else mangled + except Exception: + demangled = mangled + fns.append({ + "addr": addr_str, + "size": int(size_str), + "mangled": mangled, + "demangled": demangled + }) + return fns + + +def run_diff_check(mangled_symbol): + """Run tools/check and parse diff statistics.""" + check_bin = ROOT / "tools" / "check" + ret = subprocess.run( + [str(check_bin), "--no-pager", mangled_symbol], + capture_output=True, + text=True + ) + output = ret.stdout + ret.stderr + is_ok = ret.returncode == 0 and "OK" in output + + diff_lines = 0 + mod_lines = 0 + missing_lines = 0 + extra_lines = 0 + reorder_lines = 0 + diff_table = [] + in_table = False + + ansi_escape = re.compile(r'\x1b\[[0-9;]*m') + + for line in output.splitlines(): + clean_line = ansi_escape.sub('', line) + if "TARGET" in clean_line and "CURRENT" in clean_line: + in_table = True + diff_table.append(clean_line) + continue + if in_table: + if "still mismatching" in clean_line or "mismatch at" in clean_line or "wrong mnemonic" in clean_line: + in_table = False + continue + diff_table.append(clean_line) + # Count diff markers: | (mismatch), < (missing), > (extra), i (reordered) + if " | " in clean_line: + mod_lines += 1 + diff_lines += 1 + elif " < " in clean_line or clean_line.rstrip().endswith("<"): + missing_lines += 1 + diff_lines += 1 + elif " > " in clean_line or " > " in clean_line: + extra_lines += 1 + diff_lines += 1 + elif " i " in clean_line: + reorder_lines += 1 + diff_lines += 1 + + return { + "ok": is_ok, + "raw": output, + "diff_table": "\n".join(diff_table), + "total_diff_lines": diff_lines, + "mod": mod_lines, + "missing": missing_lines, + "extra": extra_lines, + "reorder": reorder_lines + } + + +def mark_csv_as_matching(mangled_symbol, addr_str): + """Update function quality from 'm' to 'O' in CSV.""" + lines = CSV_PATH.read_text(encoding="utf-8").splitlines() + updated = False + for i, line in enumerate(lines): + if line.startswith(addr_str + ","): + parts = line.split(",") + if len(parts) >= 4: + parts[1] = "O" + if not parts[3] or parts[3].strip() == "": + parts[3] = mangled_symbol + lines[i] = ",".join(parts) + updated = True + break + if updated: + CSV_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8") + return True + return False + + +def get_source_snippet(file_path_str, line_num, radius=12): + """Read a window of C++ lines around target line.""" + p = ROOT / file_path_str + if not p.is_file(): + return "" + lines = p.read_text(encoding="utf-8", errors="replace").splitlines() + start = max(0, line_num - 1 - radius) + end = min(len(lines), line_num - 1 + radius + 1) + snippet = [] + for idx in range(start, end): + prefix = f"{Fore.GREEN}--> {idx+1:4d} | {Style.RESET_ALL}" if idx == (line_num - 1) else f" {idx+1:4d} | " + snippet.append(prefix + lines[idx]) + return "\n".join(snippet) + + +def cmd_list(args): + print(f"{Fore.CYAN}=== Cargando banco de trabajo de funciones 'm' ==={Style.RESET_ALL}\n") + m_fns = load_m_functions() + sym_map = get_symbols_from_binary() + + print(f"Total de funciones 'm' identificadas: {Fore.YELLOW}{len(m_fns)}{Style.RESET_ALL}") + + # Sort primarily by size as a proxy for complexity, secondary by address + m_fns.sort(key=lambda f: f["size"]) + + if args.max_size: + m_fns = [f for f in m_fns if f["size"] <= args.max_size] + + if args.filter: + flt = args.filter.lower() + m_fns = [f for f in m_fns if flt in f["demangled"].lower() or flt in f["mangled"].lower()] + + limit = args.limit or 25 + displayed = m_fns[:limit] + + print(f"Mostrando {len(displayed)} funciones prioritarias:\n") + print(f"{'Idx':<4} {'Tam':<6} {'Dificultad':<12} {'Archivo:Línea':<40} {'Función'}") + print("-" * 105) + + for i, fn in enumerate(displayed, 1): + mangled = fn["mangled"] + size = fn["size"] + addr_bin = sym_map.get(mangled) + file_loc = "no localizado" + if addr_bin: + _, src_file, line_no = symbolize_address(addr_bin) + if src_file: + file_loc = f"{src_file}:{line_no}" + + # Difficulty heuristic + if size <= 48: + diff_label = f"{Fore.GREEN}★☆☆ (Fácil){Style.RESET_ALL}" + elif size <= 128: + diff_label = f"{Fore.YELLOW}★★☆ (Medio){Style.RESET_ALL}" + else: + diff_label = f"{Fore.RED}★★★ (Alto){Style.RESET_ALL}" + + print(f"#{i:<3} {size:<4}b {diff_label:<21} {file_loc:<40} {Fore.CYAN}{fn['demangled'][:45]}{Style.RESET_ALL}") + + print(f"\n{Fore.WHITE}Para inspeccionar los detalles y el diff asm de cualquiera: {Style.RESET_ALL}") + print(f" {Fore.YELLOW}python3 tools/workbench_m.py inspect <índice # | nombre | mangled>{Style.RESET_ALL}\n") + + +def cmd_inspect(args): + query = args.query.strip() + m_fns = load_m_functions() + sym_map = get_symbols_from_binary() + + target = None + clean_query = query.lstrip("#") + if clean_query.isdigit(): + idx = int(clean_query) - 1 + m_fns.sort(key=lambda f: f["size"]) + if 0 <= idx < len(m_fns): + target = m_fns[idx] + else: + for fn in m_fns: + if query == fn["mangled"] or query == fn["addr"] or query.lower() in fn["demangled"].lower(): + target = fn + break + + if not target: + print(f"{Fore.RED}No se encontró ninguna función 'm' que coincida con '{query}'.{Style.RESET_ALL}") + return + + mangled = target["mangled"] + addr_bin = sym_map.get(mangled) + src_file, line_no = "", 0 + if addr_bin: + _, src_file, line_no = symbolize_address(addr_bin) + + print(f"{Fore.CYAN}================== BANCO DE TRABAJO DE FUNCIÓN =================={Style.RESET_ALL}") + print(f"{Fore.YELLOW}Función:{Style.RESET_ALL} {target['demangled']}") + print(f"{Fore.YELLOW}Símbolo:{Style.RESET_ALL} {mangled}") + print(f"{Fore.YELLOW}Dirección:{Style.RESET_ALL} {target['addr']} | Tamaño: {target['size']} bytes") + if src_file: + print(f"{Fore.YELLOW}Archivo:{Style.RESET_ALL} {Fore.GREEN}{src_file}:{line_no}{Style.RESET_ALL}") + print(f"{Fore.CYAN}----------------------------------------------------------------{Style.RESET_ALL}") + + # Check diff + print("Ejecutando tools/check...") + diff_info = run_diff_check(mangled) + if diff_info["ok"]: + print(f"{Fore.GREEN}¡LA FUNCIÓN YA COINCIDE AL 100% (OK)!{Style.RESET_ALL}") + mark_csv_as_matching(mangled, target["addr"]) + return + + print(f"Líneas de discrepancia detectadas: {Fore.YELLOW}{diff_info['total_diff_lines']}{Style.RESET_ALL} " + f"(Modificadas: {diff_info['mod']}, Faltantes: {diff_info['missing']}, Extras: {diff_info['extra']}, Reordenadas: {diff_info['reorder']})") + + # Automated hints + print(f"\n{Fore.MAGENTA}--- DIAGNÓSTICO AUTOMÁTICO ---{Style.RESET_ALL}") + if diff_info["missing"] == 0 and diff_info["extra"] == 0: + if diff_info["reorder"] > 0 and diff_info["mod"] == 0: + print(f"{Fore.GREEN}💡 Discrepancia pura de reordenamiento. El compilador generó las mismas instrucciones pero en orden distinto.{Style.RESET_ALL}") + print(f" Revisa el orden de asignación de variables miembro o evaluación de argumentos.") + else: + print(f"{Fore.YELLOW}💡 Mismo número de instrucciones pero con operandos, registros o constantes distintas.{Style.RESET_ALL}") + elif diff_info["missing"] > 0 or diff_info["extra"] > 0: + print(f"{Fore.LIGHTBLUE_EX}💡 Hay instrucciones adicionales o faltantes. Posible branch condicional invertido o inline no deseado.{Style.RESET_ALL}") + + # Show asm diff + if diff_info["diff_table"]: + print(f"\n{Fore.CYAN}--- DIFF DE ENSAMBLADOR (tools/check) ---{Style.RESET_ALL}") + print(diff_info["diff_table"]) + + # Show C++ snippet + if src_file and line_no > 0: + print(f"\n{Fore.CYAN}--- CÓDIGO FUENTE C++ ({src_file}:{line_no}) ---{Style.RESET_ALL}") + snippet = get_source_snippet(src_file, line_no, radius=args.radius) + print(snippet) + print(f"{Fore.CYAN}----------------------------------------------------------------{Style.RESET_ALL}") + + +def cmd_test(args): + """Recompile with Ninja and check function.""" + query = args.query.strip() + m_fns = load_m_functions() + target = None + clean_query = query.lstrip("#") + if clean_query.isdigit(): + idx = int(clean_query) - 1 + m_fns.sort(key=lambda f: f["size"]) + if 0 <= idx < len(m_fns): + target = m_fns[idx] + else: + for fn in m_fns: + if query == fn["mangled"] or query == fn["addr"] or query.lower() in fn["demangled"].lower(): + target = fn + break + + if not target: + # Maybe already matching + with open(CSV_PATH) as f: + for row in csv.reader(f): + if len(row) >= 4 and (query == row[3] or query.lower() in row[3].lower()): + target = {"addr": row[0], "mangled": row[3], "demangled": row[3], "size": int(row[2])} + break + + if not target: + print(f"{Fore.RED}No se encontró la función '{query}'.{Style.RESET_ALL}") + return + + mangled = target["mangled"] + print(f"Compilando con Ninja...") + build_ret = subprocess.run(["ninja", "-C", "build"], capture_output=True, text=True) + if build_ret.returncode != 0: + print(f"{Fore.RED}Error de compilación Ninja:{Style.RESET_ALL}") + print(build_ret.stderr) + return + + print(f"Verificando {target['demangled']}...") + diff_info = run_diff_check(mangled) + if diff_info["ok"]: + print(f"{Fore.GREEN}✓ ¡100% MATCHING (OK)!{Style.RESET_ALL}") + mark_csv_as_matching(mangled, target["addr"]) + print(f"{Fore.GREEN}Estado actualizado a 'O' en data/uking_functions.csv.{Style.RESET_ALL}") + else: + print(f"{Fore.YELLOW}✗ Sigue habiendo discrepancias ({diff_info['total_diff_lines']} líneas de diff):{Style.RESET_ALL}") + if diff_info["diff_table"]: + print(diff_info["diff_table"][:1500]) + + +def main(): + parser = argparse.ArgumentParser(description="BotW Decompilation 'm' Functions Workbench & Closed-Loop Optimizer") + subparsers = parser.add_subparsers(dest="subcommand", required=True) + + # list + p_list = subparsers.add_parser("list", help="Listar y categorizar funciones 'm' por dificultad") + p_list.add_argument("--limit", type=int, default=25, help="Límite a mostrar (default: 25)") + p_list.add_argument("--max-size", type=int, help="Tamaño máximo en bytes") + p_list.add_argument("--filter", type=str, help="Filtro de texto en nombre de función") + + # inspect + p_inspect = subparsers.add_parser("inspect", help="Inspeccionar una función, código fuente y diff asm") + p_inspect.add_argument("query", type=str, help="Nombre de función, índice (#1, #2) o mangled") + p_inspect.add_argument("--radius", type=int, default=12, help="Líneas de contexto C++ a mostrar (default: 12)") + + # test + p_test = subparsers.add_parser("test", help="Recompilar y verificar si la función modificada coincide") + p_test.add_argument("query", type=str, help="Nombre de función o mangled") + + args = parser.parse_args() + + if args.subcommand == "list": + cmd_list(args) + elif args.subcommand == "inspect": + cmd_inspect(args) + elif args.subcommand == "test": + cmd_test(args) + + +if __name__ == "__main__": + main()