From f2d0fcc8c06d0cdbbfd7fa957e1d76eee6bf56e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 20 Sep 2020 13:06:23 +0200 Subject: [PATCH] ksys/res: Implement GParamList Global --- CMakeLists.txt | 1 + data/uking_functions.csv | 4 +- .../resGParamListObjectGlobal.h | 202 ++++++++++++++++++ .../Resource/resResourceGParamList.cpp | 2 + 4 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 src/KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c5522801..16d52f54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectGeneral.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectGiantArmor.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectGiantArmorSlot.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectGrab.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectGuardian.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectGuardianMini.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 0e91368e..766ce061 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89113,7 +89113,7 @@ 0x00000071011a268c,BgparamlistObjectStalEnemy::ctor,328,_ZN4ksys3res25GParamListObjectStalEnemyC2Ev 0x00000071011a27d4,BgparamlistObjectGuardianMini::ctor,672,_ZN4ksys3res28GParamListObjectGuardianMiniC2Ev 0x00000071011a2a74,BgparamlistObjectClothReaction::ctor,1460,_ZN4ksys3res29GParamListObjectClothReactionC2Ev -0x00000071011a3028,BgparamlistObjectGlobal::ctor,6116, +0x00000071011a3028,BgparamlistObjectGlobal::ctor,6116,_ZN4ksys3res22GParamListObjectGlobalC2Ev 0x00000071011a480c,BgparamlistObjectAutoGen::ctor,404, 0x00000071011a49a0,BgparamlistObjectChemicalType::ctor,336, 0x00000071011a4af0,BgparamlistObjectGolem::ctor,676, @@ -89212,7 +89212,7 @@ 0x00000071011a7e9c,sub_71011A7E9C,12,_ZNK4ksys3res25GParamListObjectStalEnemy7getNameEv 0x00000071011a7ea8,sub_71011A7EA8,12,_ZNK4ksys3res28GParamListObjectGuardianMini7getNameEv 0x00000071011a7eb4,sub_71011A7EB4,12,_ZNK4ksys3res29GParamListObjectClothReaction7getNameEv -0x00000071011a7ec0,sub_71011A7EC0,12, +0x00000071011a7ec0,sub_71011A7EC0,12,_ZNK4ksys3res22GParamListObjectGlobal7getNameEv 0x00000071011a7ecc,sub_71011A7ECC,12, 0x00000071011a7ed8,sub_71011A7ED8,12, 0x00000071011a7ee4,sub_71011A7EE4,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h new file mode 100644 index 00000000..73ef4f7b --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h @@ -0,0 +1,202 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectGlobal : public GParamListObject { +public: + GParamListObjectGlobal(); + const char* getName() const override { return "Global"; } + + agl::utl::Parameter mEnemyLifeGageDist; + agl::utl::Parameter mEnemyNoSkitDist; + agl::utl::Parameter mEnemyWeaponPickAllowDist; + agl::utl::Parameter mEnemyWeaponPickForbidTime; + agl::utl::Parameter mEnemyAnimalNoDamageDist; + agl::utl::Parameter mEnemyNearCraeteIDDelay; + agl::utl::Parameter mEnemyForceTiredLODCount; + agl::utl::Parameter mEnemyForceTiredNoSightLODCount; + agl::utl::Parameter mEnemyForceWarpReturnLODCount; + agl::utl::Parameter mSilentAttackAng; + agl::utl::Parameter mSilentAttackRatio; + agl::utl::Parameter mBlownOffPlayerAtkDelay; + agl::utl::Parameter mJustAvoidAcceptWpRangeSS; + agl::utl::Parameter mJustAvoidAcceptWpRangeLS; + agl::utl::Parameter mJustAvoidAcceptWpRangeSP; + agl::utl::Parameter mForceNoticeEnemyCount; + agl::utl::Parameter mForceNoticeEnemyDist; + agl::utl::Parameter mWeaponRickeyLife; + agl::utl::Parameter mWeaponDropRotSpd; + agl::utl::Parameter mShieldRideBaseFrame; + agl::utl::Parameter mShieldRideHitBaseDamage; + agl::utl::Parameter mShieldDamageratio; + agl::utl::Parameter mShieldSurfMasterFrictionRatio; + agl::utl::Parameter mLoudNoiseRadius; + agl::utl::Parameter mImpulse2DamageRatio; + agl::utl::Parameter mIceMeltSpeedOnContactFire; + agl::utl::Parameter mCriticalAttackRatio; + agl::utl::Parameter mBooerangAttackRatio; + agl::utl::Parameter mHitImpulseClampMax; + agl::utl::Parameter mDropItemVelXZFromBomb; + agl::utl::Parameter mDropItemVelYFromBomb; + agl::utl::Parameter mDropItemVelRandomFromBomb; + agl::utl::Parameter mDropItemAngVelFromBomb; + agl::utl::Parameter mDropItemAngVelRandomFromBomb; + agl::utl::Parameter mDropItemVelXZSmall; + agl::utl::Parameter mDropItemVelYSmall; + agl::utl::Parameter mDropItemVelRandomSmall; + agl::utl::Parameter mDropItemAngVelSmall; + agl::utl::Parameter mDropItemAngVelRandomSmall; + agl::utl::Parameter mDropItemVelXZLarge; + agl::utl::Parameter mDropItemVelYLarge; + agl::utl::Parameter mDropItemVelRandomLarge; + agl::utl::Parameter mDropItemAngVelLarge; + agl::utl::Parameter mDropItemAngVelRandomLarge; + agl::utl::Parameter mDropItemVelXZRupeeRabbit; + agl::utl::Parameter mDropItemVelYRupeeRabbit; + agl::utl::Parameter mDropItemVelRandomRupeeRabbit; + agl::utl::Parameter mDropItemVelXZItemRupeeOnly; + agl::utl::Parameter mDropItemVelYItemRupeeOnly; + agl::utl::Parameter mDropItemVelRandomItemRupeeOnly; + agl::utl::Parameter mDropItemInvincibleTime; + agl::utl::Parameter mTreeWeaponEquipTransOffset; + agl::utl::Parameter mTreeWeaponEquipRotOffset; + agl::utl::Parameter mWetRatioToDie; + agl::utl::Parameter mEnvWetRatioToDie; + agl::utl::Parameter mNPCTurnAngleDiff; + agl::utl::Parameter mNPCWaitFrameAfterEvent; + agl::utl::Parameter mNPCIgnorePlayerTime; + agl::utl::Parameter mNPCCancelIgnorePlayerTime; + agl::utl::Parameter mNPCOpenDoorDistance; + agl::utl::Parameter mNPCWalkRateOnSandAndSnow; + agl::utl::Parameter mNPCDownVerticallyAngle; + agl::utl::Parameter mGerudoQueenSafetyAreaRadius; + agl::utl::Parameter mCreateFairyLimitCount; + agl::utl::Parameter mTerrorRegistSpeed; + agl::utl::Parameter mTerrorUnregistSpeed; + agl::utl::Parameter mTerrorRegistTimer; + agl::utl::Parameter mTerrorRadiusOffset; + agl::utl::Parameter mSpeedTerrorLevel; + agl::utl::Parameter mSpeedTerrorLevelHuge; + agl::utl::Parameter mSpeedTerrorLevelCheckRadius; + agl::utl::Parameter mAtDirTypeAffectRatio; + agl::utl::Parameter mRainyAwnHearingLevel; + agl::utl::Parameter mHorseBindOffsetYOfMaleUMii; + agl::utl::Parameter mHorseBindOffsetYOfFemaleUMii; + agl::utl::Parameter mHorseFamiliarityIncreasePerFrame; + agl::utl::Parameter mHorseFamiliarityIncreaseSootheAtFirstRun; + agl::utl::Parameter mHorseFamiliarityIncreaseSootheAfterRun; + agl::utl::Parameter mHorseFamiliarityIncreaseSootheAfterGearTop; + agl::utl::Parameter mHorseFamiliarityIncreaseSootheAfterJump; + agl::utl::Parameter mHorseFamiliarityIncreaseSootheWhileResisting; + agl::utl::Parameter mHorseFamiliarityIncreaseEat; + agl::utl::Parameter mHorseAlertProbability; + agl::utl::Parameter mHorseAlertFramesMin; + agl::utl::Parameter mHorseAlertFramesMax; + agl::utl::Parameter mHorseExtraChargeNum; + agl::utl::Parameter mPlayerGrabThrowDiffRate; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectGlobal, 0xb78); + +inline GParamListObjectGlobal::GParamListObjectGlobal() { + auto* const obj = &mObj; + + mEnemyLifeGageDist.init(60.0, "EnemyLifeGageDist", "", obj); + mEnemyNoSkitDist.init(0.0, "EnemyNoSkitDist", "", obj); + mEnemyWeaponPickAllowDist.init(5.0, "EnemyWeaponPickAllowDist", "", obj); + mEnemyWeaponPickForbidTime.init(30, "EnemyWeaponPickForbidTime", "", obj); + mEnemyAnimalNoDamageDist.init(70.0, "EnemyAnimalNoDamageDist", "", obj); + mEnemyNearCraeteIDDelay.init(30.0, "EnemyNearCraeteIDDelay", "", obj); + mEnemyForceTiredLODCount.init(60, "EnemyForceTiredLODCount", "", obj); + mEnemyForceTiredNoSightLODCount.init(240, "EnemyForceTiredNoSightLODCount", "", obj); + mEnemyForceWarpReturnLODCount.init(240, "EnemyForceWarpReturnLODCount", "", obj); + mSilentAttackAng.init(0.0, "SilentAttackAng", "", obj); + mSilentAttackRatio.init(2.0, "SilentAttackRatio", "", obj); + mBlownOffPlayerAtkDelay.init(30, "BlownOffPlayerAtkDelay", "", obj); + mJustAvoidAcceptWpRangeSS.init(1.6, "JustAvoidAcceptWpRangeSS", "", obj); + mJustAvoidAcceptWpRangeLS.init(1.8, "JustAvoidAcceptWpRangeLS", "", obj); + mJustAvoidAcceptWpRangeSP.init(5.0, "JustAvoidAcceptWpRangeSP", "", obj); + mForceNoticeEnemyCount.init(3, "ForceNoticeEnemyCount", "", obj); + mForceNoticeEnemyDist.init(50.0, "ForceNoticeEnemyDist", "", obj); + mWeaponRickeyLife.init(3, "WeaponRickeyLife", "", obj); + mWeaponDropRotSpd.init(30.0, "WeaponDropRotSpd", "", obj); + mShieldRideBaseFrame.init(60, "ShieldRideBaseFrame", "", obj); + mShieldRideHitBaseDamage.init(1, "ShieldRideHitBaseDamage", "", obj); + mShieldDamageratio.init(0.2, "ShieldDamageratio", "", obj); + mShieldSurfMasterFrictionRatio.init(0.2, "ShieldSurfMasterFrictionRatio", "", obj); + mLoudNoiseRadius.init(80.0, "LoudNoiseRadius", "", obj); + mImpulse2DamageRatio.init(0.004, "Impulse2DamageRatio", "", obj); + mIceMeltSpeedOnContactFire.init(2.0, "IceMeltSpeedOnContactFire", "", obj); + mCriticalAttackRatio.init(4.0, "CriticalAttackRatio", "", obj); + mBooerangAttackRatio.init(1.5, "BooerangAttackRatio", "", obj); + mHitImpulseClampMax.init(20.0, "HitImpulseClampMax", "", obj); + mDropItemVelXZFromBomb.init(0.4, "DropItemVelXZFromBomb", "", obj); + mDropItemVelYFromBomb.init(0.05, "DropItemVelYFromBomb", "", obj); + mDropItemVelRandomFromBomb.init(0.1, "DropItemVelRandomFromBomb", "", obj); + mDropItemAngVelFromBomb.init(5.0, "DropItemAngVelFromBomb", "", obj); + mDropItemAngVelRandomFromBomb.init(0.5, "DropItemAngVelRandomFromBomb", "", obj); + mDropItemVelXZSmall.init(0.075, "DropItemVelXZSmall", "", obj); + mDropItemVelYSmall.init(0.05, "DropItemVelYSmall", "", obj); + mDropItemVelRandomSmall.init(0.1, "DropItemVelRandomSmall", "", obj); + mDropItemAngVelSmall.init(5.0, "DropItemAngVelSmall", "", obj); + mDropItemAngVelRandomSmall.init(0.5, "DropItemAngVelRandomSmall", "", obj); + mDropItemVelXZLarge.init(0.2, "DropItemVelXZLarge", "", obj); + mDropItemVelYLarge.init(0.05, "DropItemVelYLarge", "", obj); + mDropItemVelRandomLarge.init(0.1, "DropItemVelRandomLarge", "", obj); + mDropItemAngVelLarge.init(5.0, "DropItemAngVelLarge", "", obj); + mDropItemAngVelRandomLarge.init(0.5, "DropItemAngVelRandomLarge", "", obj); + mDropItemVelXZRupeeRabbit.init(0.25, "DropItemVelXZRupeeRabbit", "", obj); + mDropItemVelYRupeeRabbit.init(0.1, "DropItemVelYRupeeRabbit", "", obj); + mDropItemVelRandomRupeeRabbit.init(0.05, "DropItemVelRandomRupeeRabbit", "", obj); + mDropItemVelXZItemRupeeOnly.init(0.1, "DropItemVelXZItemRupeeOnly", "", obj); + mDropItemVelYItemRupeeOnly.init(0.1, "DropItemVelYItemRupeeOnly", "", obj); + mDropItemVelRandomItemRupeeOnly.init(0.05, "DropItemVelRandomItemRupeeOnly", "", obj); + mDropItemInvincibleTime.init(30.0, "DropItemInvincibleTime", "", obj); + mTreeWeaponEquipTransOffset.init({0.0, 0.0, 0.0}, "TreeWeaponEquipTransOffset", "", obj); + mTreeWeaponEquipRotOffset.init({0.0, 0.0, 0.0}, "TreeWeaponEquipRotOffset", "", obj); + mWetRatioToDie.init(0.5, "WetRatioToDie", "", obj); + mEnvWetRatioToDie.init(0.95, "EnvWetRatioToDie", "", obj); + mNPCTurnAngleDiff.init(30.0, "NPCTurnAngleDiff", "", obj); + mNPCWaitFrameAfterEvent.init(60, "NPCWaitFrameAfterEvent", "", obj); + mNPCIgnorePlayerTime.init(10.0, "NPCIgnorePlayerTime", "", obj); + mNPCCancelIgnorePlayerTime.init(1800.0, "NPCCancelIgnorePlayerTime", "", obj); + mNPCOpenDoorDistance.init(5.0, "NPCOpenDoorDistance", "", obj); + mNPCWalkRateOnSandAndSnow.init(0.8, "NPCWalkRateOnSandAndSnow", "", obj); + mNPCDownVerticallyAngle.init(20.0, "NPCDownVerticallyAngle", "", obj); + mGerudoQueenSafetyAreaRadius.init(12.0, "GerudoQueenSafetyAreaRadius", "", obj); + mCreateFairyLimitCount.init(10, "CreateFairyLimitCount", "", obj); + mTerrorRegistSpeed.init(190.0, "TerrorRegistSpeed", "", obj); + mTerrorUnregistSpeed.init(60.0, "TerrorUnregistSpeed", "", obj); + mTerrorRegistTimer.init(30, "TerrorRegistTimer", "", obj); + mTerrorRadiusOffset.init(1.5, "TerrorRadiusOffset", "", obj); + mSpeedTerrorLevel.init(2, "SpeedTerrorLevel", "", obj); + mSpeedTerrorLevelHuge.init(4, "SpeedTerrorLevelHuge", "", obj); + mSpeedTerrorLevelCheckRadius.init(3.0, "SpeedTerrorLevelCheckRadius", "", obj); + mAtDirTypeAffectRatio.init(1.0, "AtDirTypeAffectRatio", "", obj); + mRainyAwnHearingLevel.init(0.7, "RainyAwnHearingLevel", "", obj); + mHorseBindOffsetYOfMaleUMii.init(0.0, "HorseBindOffsetYOfMaleUMii", "", obj); + mHorseBindOffsetYOfFemaleUMii.init(0.0, "HorseBindOffsetYOfFemaleUMii", "", obj); + mHorseFamiliarityIncreasePerFrame.init({0.0, 0.0, 0.0}, "HorseFamiliarityIncreasePerFrame", "", + obj); + mHorseFamiliarityIncreaseSootheAtFirstRun.init( + {0.3, 0.08, 0.06}, "HorseFamiliarityIncreaseSootheAtFirstRun", "", obj); + mHorseFamiliarityIncreaseSootheAfterRun.init({0.3, 0.08, 0.06}, + "HorseFamiliarityIncreaseSootheAfterRun", "", obj); + mHorseFamiliarityIncreaseSootheAfterGearTop.init( + {0.3, 0.08, 0.06}, "HorseFamiliarityIncreaseSootheAfterGearTop", "", obj); + mHorseFamiliarityIncreaseSootheAfterJump.init( + {0.3, 0.08, 0.06}, "HorseFamiliarityIncreaseSootheAfterJump", "", obj); + mHorseFamiliarityIncreaseSootheWhileResisting.init( + {0.3, 0.08, 0.06}, "HorseFamiliarityIncreaseSootheWhileResisting", "", obj); + mHorseFamiliarityIncreaseEat.init({0.7, 0.2, 0.1}, "HorseFamiliarityIncreaseEat", "", obj); + mHorseAlertProbability.init({0.001, 0.003, 0.001}, "HorseAlertProbability", "", obj); + mHorseAlertFramesMin.init({120.0, 120.0, 120.0}, "HorseAlertFramesMin", "", obj); + mHorseAlertFramesMax.init({240.0, 240.0, 240.0}, "HorseAlertFramesMax", "", obj); + mHorseExtraChargeNum.init(3, "HorseExtraChargeNum", "", obj); + mPlayerGrabThrowDiffRate.init(0.2, "PlayerGrabThrowDiffRate", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index e727cd09..830507ae 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -31,6 +31,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGeneral.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGiantArmor.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGiantArmorSlot.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectGlobal.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGrab.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGuardian.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGuardianMini.h" @@ -177,6 +178,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "StalEnemy", heap, dummy_list); add(archive.getRootList(), "GuardianMini", heap, dummy_list); add(archive.getRootList(), "ClothReaction", heap, dummy_list); + add(archive.getRootList(), "Global", heap, dummy_list); // TODO: the rest