diff --git a/CMakeLists.txt b/CMakeLists.txt index 0db30a85..d2e245cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectSystem.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectTraveler.cpp src/KingSystem/Resource/GeneralParamList/resGParamListObjectTraveler.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h src/KingSystem/Resource/GeneralParamList/resGParamListTraits.h src/KingSystem/Resource/resCurrentResNameMgr.cpp src/KingSystem/Resource/resCurrentResNameMgr.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 5dbd9437..9adee602 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89066,7 +89066,7 @@ 0x000000710118d5ac,BgparamlistObjectEnemyShown::ctor,404,_ZN4ksys3res26GParamListObjectEnemyShownC2Ev 0x000000710118d740,BgparamlistObjectBindBone::ctor,392,_ZN4ksys3res24GParamListObjectBindBoneC2Ev 0x000000710118d8c8,BgparamlistObjectAttack::ctor,900,_ZN4ksys3res22GParamListObjectAttackC2Ev -0x000000710118dc4c,BgparamlistObjectWeaponCommon::ctor,3288, +0x000000710118dc4c,BgparamlistObjectWeaponCommon::ctor,3288,_ZN4ksys3res28GParamListObjectWeaponCommonC2Ev 0x000000710118e924,BgparamlistObjectWeaponThrow::ctor,432, 0x000000710118ead4,BgparamlistObjectSandworm::ctor,1992, 0x000000710118f29c,BgparamlistObjectSmallSword::ctor,1756, @@ -89154,7 +89154,7 @@ 0x00000071011a7be4,sub_71011A7BE4,12,_ZNK4ksys3res26GParamListObjectEnemyShown7getNameEv 0x00000071011a7bf0,sub_71011A7BF0,12,_ZNK4ksys3res24GParamListObjectBindBone7getNameEv 0x00000071011a7bfc,sub_71011A7BFC,12,_ZNK4ksys3res22GParamListObjectAttack7getNameEv -0x00000071011a7c08,sub_71011A7C08,12, +0x00000071011a7c08,sub_71011A7C08,12,_ZNK4ksys3res28GParamListObjectWeaponCommon7getNameEv 0x00000071011a7c14,sub_71011A7C14,12, 0x00000071011a7c20,sub_71011A7C20,12, 0x00000071011a7c2c,sub_71011A7C2C,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h new file mode 100644 index 00000000..5de8cf31 --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h @@ -0,0 +1,114 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectWeaponCommon : public GParamListObject { +public: + GParamListObjectWeaponCommon(); + const char* getName() const override { return "WeaponCommon"; } + + agl::utl::Parameter mPlayerEqScale; + agl::utl::Parameter mEnemyEqScale; + agl::utl::Parameter mGuardPower; + agl::utl::Parameter mRank; + agl::utl::Parameter mIsHammer; + agl::utl::Parameter mIsWeakBreaker; + agl::utl::Parameter mIsBoomerang; + agl::utl::Parameter mIsBlunt; + agl::utl::Parameter mIsLuckyWeapon; + agl::utl::Parameter mIsPikohan; + agl::utl::Parameter mIsThrowingWeapon; + agl::utl::Parameter mIsThrowingBreakWeapon; + agl::utl::Parameter mThrowRange; + agl::utl::Parameter mDreadActor; + agl::utl::Parameter mThroughActor; + agl::utl::Parameter mNPCWeaponType; + agl::utl::Parameter mIsNotOnTerrorHold; + agl::utl::Parameter mIsAsOffUnEquiped; + agl::utl::Parameter mChemicalEnergyMax; + agl::utl::Parameter mChemicalEnergyAmountUsed; + agl::utl::Parameter mChemicalEnergyRecoverRate; + agl::utl::Parameter mChemicalEnergyRecoverInterval; + agl::utl::Parameter mStickDamage; + agl::utl::Parameter mShootBeam; + agl::utl::Parameter mDropFromPorchRot; + agl::utl::Parameter mSharpWeaponPer; + agl::utl::Parameter mSharpWeaponAddAtkMin; + agl::utl::Parameter mSharpWeaponAddAtkMax; + agl::utl::Parameter mSharpWeaponAddLifeMin; + agl::utl::Parameter mSharpWeaponAddLifeMax; + agl::utl::Parameter mSharpWeaponAddCrit; + agl::utl::Parameter mSharpWeaponAddGuardMin; + agl::utl::Parameter mSharpWeaponAddGuardMax; + agl::utl::Parameter mPoweredSharpAddAtkMin; + agl::utl::Parameter mPoweredSharpAddAtkMax; + agl::utl::Parameter mPoweredSharpAddLifeMin; + agl::utl::Parameter mPoweredSharpAddLifeMax; + agl::utl::Parameter mPoweredSharpWeaponAddGuardMin; + agl::utl::Parameter mPoweredSharpWeaponAddGuardMax; + agl::utl::Parameter mPoweredSharpAddThrowMin; + agl::utl::Parameter mPoweredSharpAddThrowMax; + agl::utl::Parameter mPoweredSharpAddSpreadFire; + agl::utl::Parameter mPoweredSharpAddZoomRapid; + agl::utl::Parameter mPoweredSharpAddRapidFireMin; + agl::utl::Parameter mPoweredSharpAddRapidFireMax; + agl::utl::Parameter mPoweredSharpAddSurfMaster; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectWeaponCommon, 0x620); + +inline GParamListObjectWeaponCommon::GParamListObjectWeaponCommon() { + auto* const obj = &mObj; + + mPlayerEqScale.init(1.0, "PlayerEqScale", "", obj); + mEnemyEqScale.init(1.0, "EnemyEqScale", "", obj); + mGuardPower.init(0, "GuardPower", "", obj); + mRank.init(0, "Rank", "", obj); + mIsHammer.init(false, "IsHammer", "", obj); + mIsWeakBreaker.init(false, "IsWeakBreaker", "", obj); + mIsBoomerang.init(false, "IsBoomerang", "", obj); + mIsBlunt.init(false, "IsBlunt", "", obj); + mIsLuckyWeapon.init(false, "IsLuckyWeapon", "", obj); + mIsPikohan.init(false, "IsPikohan", "", obj); + mIsThrowingWeapon.init(true, "IsThrowingWeapon", "", obj); + mIsThrowingBreakWeapon.init(true, "IsThrowingBreakWeapon", "", obj); + mThrowRange.init(20.0, "ThrowRange", "", obj); + mDreadActor.init("", "DreadActor", "", obj); + mThroughActor.init("", "ThroughActor", "", obj); + mNPCWeaponType.init("", "NPCWeaponType", "", obj); + mIsNotOnTerrorHold.init(false, "IsNotOnTerrorHold", "", obj); + mIsAsOffUnEquiped.init(false, "IsAsOffUnEquiped", "", obj); + mChemicalEnergyMax.init(0, "ChemicalEnergyMax", "", obj); + mChemicalEnergyAmountUsed.init(0, "ChemicalEnergyAmountUsed", "", obj); + mChemicalEnergyRecoverRate.init(0.0, "ChemicalEnergyRecoverRate", "", obj); + mChemicalEnergyRecoverInterval.init(60, "ChemicalEnergyRecoverInterval", "", obj); + mStickDamage.init(0, "StickDamage", "", obj); + mShootBeam.init("", "ShootBeam", "", obj); + mDropFromPorchRot.init({0.0, 0.0, 0.0}, "DropFromPorchRot", "", obj); + mSharpWeaponPer.init(10.0, "SharpWeaponPer", "", obj); + mSharpWeaponAddAtkMin.init(0, "SharpWeaponAddAtkMin", "", obj); + mSharpWeaponAddAtkMax.init(0, "SharpWeaponAddAtkMax", "", obj); + mSharpWeaponAddLifeMin.init(0, "SharpWeaponAddLifeMin", "", obj); + mSharpWeaponAddLifeMax.init(0, "SharpWeaponAddLifeMax", "", obj); + mSharpWeaponAddCrit.init(false, "SharpWeaponAddCrit", "", obj); + mSharpWeaponAddGuardMin.init(0, "SharpWeaponAddGuardMin", "", obj); + mSharpWeaponAddGuardMax.init(0, "SharpWeaponAddGuardMax", "", obj); + mPoweredSharpAddAtkMin.init(0, "PoweredSharpAddAtkMin", "", obj); + mPoweredSharpAddAtkMax.init(0, "PoweredSharpAddAtkMax", "", obj); + mPoweredSharpAddLifeMin.init(0, "PoweredSharpAddLifeMin", "", obj); + mPoweredSharpAddLifeMax.init(0, "PoweredSharpAddLifeMax", "", obj); + mPoweredSharpWeaponAddGuardMin.init(0, "PoweredSharpWeaponAddGuardMin", "", obj); + mPoweredSharpWeaponAddGuardMax.init(0, "PoweredSharpWeaponAddGuardMax", "", obj); + mPoweredSharpAddThrowMin.init(1.0, "PoweredSharpAddThrowMin", "", obj); + mPoweredSharpAddThrowMax.init(1.0, "PoweredSharpAddThrowMax", "", obj); + mPoweredSharpAddSpreadFire.init(false, "PoweredSharpAddSpreadFire", "", obj); + mPoweredSharpAddZoomRapid.init(false, "PoweredSharpAddZoomRapid", "", obj); + mPoweredSharpAddRapidFireMin.init(1.0, "PoweredSharpAddRapidFireMin", "", obj); + mPoweredSharpAddRapidFireMax.init(1.0, "PoweredSharpAddRapidFireMax", "", obj); + mPoweredSharpAddSurfMaster.init(false, "PoweredSharpAddSurfMaster", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index 4ebd3d44..6f2b2932 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -12,6 +12,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectEnemyShown.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGeneral.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectSystem.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponCommon.h" #include "KingSystem/Resource/GeneralParamList/resGParamListTraits.h" namespace ksys::res { @@ -56,6 +57,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "EnemyShown", heap, dummy_list); add(archive.getRootList(), "BindBone", heap, dummy_list); add(archive.getRootList(), "Attack", heap, dummy_list); + add(archive.getRootList(), "WeaponCommon", heap, dummy_list); // TODO: the rest