diff --git a/CMakeLists.txt b/CMakeLists.txt index 285178d7..2aac7d87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,6 +137,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponOption.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponThrow.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectWizzrobe.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectWolfLink.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectZora.h src/KingSystem/Resource/GeneralParamList/resGParamListTraits.h src/KingSystem/Resource/resCurrentResNameMgr.cpp diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 832d780a..acced5c1 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89118,7 +89118,7 @@ 0x00000071011a49a0,BgparamlistObjectChemicalType::ctor,336,_ZN4ksys3res28GParamListObjectChemicalTypeC2Ev 0x00000071011a4af0,BgparamlistObjectGolem::ctor,676,_ZN4ksys3res21GParamListObjectGolemC2Ev 0x00000071011a4d94,BgparamlistObjectHorseTargetedInfo::ctor,356,_ZN4ksys3res33GParamListObjectHorseTargetedInfoC2Ev -0x00000071011a4ef8,BgparamlistObjectWolfLink::ctor,4548, +0x00000071011a4ef8,BgparamlistObjectWolfLink::ctor,4548,_ZN4ksys3res24GParamListObjectWolfLinkC2Ev 0x00000071011a60bc,BgparamlistObjectEvent::ctor,852, 0x00000071011a6410,BgparamlistObjectGolemIK::ctor,1792, 0x00000071011a6b10,BgparamlistObjectPictureBook::ctor,344, @@ -89218,7 +89218,7 @@ 0x00000071011a7ee4,sub_71011A7EE4,12,_ZNK4ksys3res28GParamListObjectChemicalType7getNameEv 0x00000071011a7ef0,sub_71011A7EF0,12,_ZNK4ksys3res21GParamListObjectGolem7getNameEv 0x00000071011a7efc,sub_71011A7EFC,12,_ZNK4ksys3res33GParamListObjectHorseTargetedInfo7getNameEv -0x00000071011a7f08,sub_71011A7F08,12, +0x00000071011a7f08,sub_71011A7F08,12,_ZNK4ksys3res24GParamListObjectWolfLink7getNameEv 0x00000071011a7f14,sub_71011A7F14,12, 0x00000071011a7f20,sub_71011A7F20,12, 0x00000071011a7f2c,sub_71011A7F2C,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWolfLink.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWolfLink.h new file mode 100644 index 00000000..01146ecb --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectWolfLink.h @@ -0,0 +1,154 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectWolfLink : public GParamListObject { +public: + GParamListObjectWolfLink(); + const char* getName() const override { return "WolfLink"; } + + agl::utl::Parameter mNeckSpeedWait; + agl::utl::Parameter mNeckRateWait; + agl::utl::Parameter mNeckSpeedShiekSensor; + agl::utl::Parameter mNeckRateShiekSensor; + agl::utl::Parameter mNeckSpeedFollow; + agl::utl::Parameter mNeckRateFollow; + agl::utl::Parameter mNeckSpeedBattle; + agl::utl::Parameter mNeckRateBattle; + agl::utl::Parameter mNeckSpeedHeal; + agl::utl::Parameter mNeckRateHeal; + agl::utl::Parameter mBattleRange; + agl::utl::Parameter mHealRange; + agl::utl::Parameter mHuntRange; + agl::utl::Parameter mHowlRange; + agl::utl::Parameter mMaxHeightAttackable; + agl::utl::Parameter mMaxHeightHealable; + agl::utl::Parameter mNavMeshSearchRadius; + agl::utl::Parameter mCanReachPlayerNavMeshSearchRadius; + agl::utl::Parameter mSubmergedDepth; + agl::utl::Parameter mUtilityLifeToHunt; + agl::utl::Parameter mUtilityDangerDistMin; + agl::utl::Parameter mUtilityDangerDistMax; + agl::utl::Parameter mUtilityConstant; + agl::utl::Parameter mChainAttackChargeMin; + agl::utl::Parameter mChainAttackChargeMax; + agl::utl::Parameter mLookAtCooldownWait; + agl::utl::Parameter mLookAtCooldownWaitRand; + agl::utl::Parameter mLookAtCounterWait; + agl::utl::Parameter mLookAtCounterWaitRand; + agl::utl::Parameter mLookAtCooldownRun; + agl::utl::Parameter mLookAtCooldownRunRand; + agl::utl::Parameter mLookAtCounterRun; + agl::utl::Parameter mLookAtCounterRunRand; + agl::utl::Parameter mAttackCounterLength; + agl::utl::Parameter mAttackCounterRand; + agl::utl::Parameter mHowlCooldownCounterLength; + agl::utl::Parameter mHowlCooldownCounterRand; + agl::utl::Parameter mHealCooldownCounterLength; + agl::utl::Parameter mHealCooldownCounterRand; + agl::utl::Parameter mFailPathCooldownCounterLength; + agl::utl::Parameter mFailPathCooldownCounterRand; + agl::utl::Parameter mRetargetCooldownCounterLength; + agl::utl::Parameter mRetargetCooldownCounterRand; + agl::utl::Parameter mAfterTargetDeathCounterLength; + agl::utl::Parameter mAfterTargetDeathCounterRand; + agl::utl::Parameter mLostTargetCounterLength; + agl::utl::Parameter mLostTargetCounterRand; + agl::utl::Parameter mInvinceableCounterLength; + agl::utl::Parameter mInvinceableCounterRand; + agl::utl::Parameter mCallDelayMinLength; + agl::utl::Parameter mCallOverrideCounterLength; + agl::utl::Parameter mGiveUpShiekSensorLength; + agl::utl::Parameter mRetryShiekSensorLength; + agl::utl::Parameter mBattleWallHitLength; + agl::utl::Parameter mFollowRetryLength; + agl::utl::Parameter mPowerUpFoodLength; + agl::utl::Parameter mSafePosFailCounter; + agl::utl::Parameter mRestrictedTargetTimeNormal; + agl::utl::Parameter mRestrictedTargetTimeSpecial; + agl::utl::Parameter mPowerUpFoodAttackMod; + agl::utl::Parameter mPowerUpFoodChainAttackCharge; + agl::utl::Parameter mVSStalfosCritChance; + agl::utl::Parameter mAttackBase; + agl::utl::Parameter mAttackHeartMod; + agl::utl::Parameter mDefenseBase; + agl::utl::Parameter mDefenseHeartMod; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectWolfLink, 0x878); + +inline GParamListObjectWolfLink::GParamListObjectWolfLink() { + auto* const obj = &mObj; + + mNeckSpeedWait.init(0.025, "NeckSpeedWait", "", obj); + mNeckRateWait.init(0.7, "NeckRateWait", "", obj); + mNeckSpeedShiekSensor.init(0.1, "NeckSpeedShiekSensor", "", obj); + mNeckRateShiekSensor.init(0.45, "NeckRateShiekSensor", "", obj); + mNeckSpeedFollow.init(0.4, "NeckSpeedFollow", "", obj); + mNeckRateFollow.init(0.45, "NeckRateFollow", "", obj); + mNeckSpeedBattle.init(0.3, "NeckSpeedBattle", "", obj); + mNeckRateBattle.init(0.45, "NeckRateBattle", "", obj); + mNeckSpeedHeal.init(0.0, "NeckSpeedHeal", "", obj); + mNeckRateHeal.init(0.1, "NeckRateHeal", "", obj); + mBattleRange.init(30.0, "BattleRange", "", obj); + mHealRange.init(30.0, "HealRange", "", obj); + mHuntRange.init(30.0, "HuntRange", "", obj); + mHowlRange.init(60.0, "HowlRange", "", obj); + mMaxHeightAttackable.init(1.6, "MaxHeightAttackable", "", obj); + mMaxHeightHealable.init(1.5, "MaxHeightHealable", "", obj); + mNavMeshSearchRadius.init(6.0, "NavMeshSearchRadius", "", obj); + mCanReachPlayerNavMeshSearchRadius.init(2.0, "CanReachPlayerNavMeshSearchRadius", "", obj); + mSubmergedDepth.init(1.0, "SubmergedDepth", "", obj); + mUtilityLifeToHunt.init(0.3, "UtilityLifeToHunt", "", obj); + mUtilityDangerDistMin.init(5.0, "UtilityDangerDistMin", "", obj); + mUtilityDangerDistMax.init(20.0, "UtilityDangerDistMax", "", obj); + mUtilityConstant.init(0.1, "UtilityConstant", "", obj); + mChainAttackChargeMin.init(7.0, "ChainAttackChargeMin", "", obj); + mChainAttackChargeMax.init(10.0, "ChainAttackChargeMax", "", obj); + mLookAtCooldownWait.init(150.0, "LookAtCooldownWait", "", obj); + mLookAtCooldownWaitRand.init(60.0, "LookAtCooldownWaitRand", "", obj); + mLookAtCounterWait.init(10.0, "LookAtCounterWait", "", obj); + mLookAtCounterWaitRand.init(40.0, "LookAtCounterWaitRand", "", obj); + mLookAtCooldownRun.init(150.0, "LookAtCooldownRun", "", obj); + mLookAtCooldownRunRand.init(60.0, "LookAtCooldownRunRand", "", obj); + mLookAtCounterRun.init(10.0, "LookAtCounterRun", "", obj); + mLookAtCounterRunRand.init(40.0, "LookAtCounterRunRand", "", obj); + mAttackCounterLength.init(30.0, "AttackCounterLength", "", obj); + mAttackCounterRand.init(30.0, "AttackCounterRand", "", obj); + mHowlCooldownCounterLength.init(1600.0, "HowlCooldownCounterLength", "", obj); + mHowlCooldownCounterRand.init(600.0, "HowlCooldownCounterRand", "", obj); + mHealCooldownCounterLength.init(0.0, "HealCooldownCounterLength", "", obj); + mHealCooldownCounterRand.init(0.0, "HealCooldownCounterRand", "", obj); + mFailPathCooldownCounterLength.init(120.0, "FailPathCooldownCounterLength", "", obj); + mFailPathCooldownCounterRand.init(0.0, "FailPathCooldownCounterRand", "", obj); + mRetargetCooldownCounterLength.init(30.0, "RetargetCooldownCounterLength", "", obj); + mRetargetCooldownCounterRand.init(0.0, "RetargetCooldownCounterRand", "", obj); + mAfterTargetDeathCounterLength.init(30.0, "AfterTargetDeathCounterLength", "", obj); + mAfterTargetDeathCounterRand.init(30.0, "AfterTargetDeathCounterRand", "", obj); + mLostTargetCounterLength.init(25.0, "LostTargetCounterLength", "", obj); + mLostTargetCounterRand.init(0.0, "LostTargetCounterRand", "", obj); + mInvinceableCounterLength.init(90.0, "InvinceableCounterLength", "", obj); + mInvinceableCounterRand.init(30.0, "InvinceableCounterRand", "", obj); + mCallDelayMinLength.init(10.0, "CallDelayMinLength", "", obj); + mCallOverrideCounterLength.init(900.0, "CallOverrideCounterLength", "", obj); + mGiveUpShiekSensorLength.init(300.0, "GiveUpShiekSensorLength", "", obj); + mRetryShiekSensorLength.init(900.0, "RetryShiekSensorLength", "", obj); + mBattleWallHitLength.init(10.0, "BattleWallHitLength", "", obj); + mFollowRetryLength.init(30.0, "FollowRetryLength", "", obj); + mPowerUpFoodLength.init(3600.0, "PowerUpFoodLength", "", obj); + mSafePosFailCounter.init(3600.0, "SafePosFailCounter", "", obj); + mRestrictedTargetTimeNormal.init(300.0, "RestrictedTargetTimeNormal", "", obj); + mRestrictedTargetTimeSpecial.init(500.0, "RestrictedTargetTimeSpecial", "", obj); + mPowerUpFoodAttackMod.init(5, "PowerUpFoodAttackMod", "", obj); + mPowerUpFoodChainAttackCharge.init(25.0, "PowerUpFoodChainAttackCharge", "", obj); + mVSStalfosCritChance.init(10, "VSStalfosCritChance", "", obj); + mAttackBase.init(10.0, "AttackBase", "", obj); + mAttackHeartMod.init(0.5, "AttackHeartMod", "", obj); + mDefenseBase.init(3.0, "DefenseBase", "", obj); + mDefenseHeartMod.init(0.5, "DefenseHeartMod", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index 115c1ba8..449c1dd1 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -75,6 +75,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponOption.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectWeaponThrow.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectWizzrobe.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectWolfLink.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectZora.h" #include "KingSystem/Resource/GeneralParamList/resGParamListTraits.h" @@ -190,6 +191,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "Golem", heap, dummy_list); add(archive.getRootList(), "HorseTargetedInfo", heap, dummy_list); + add(archive.getRootList(), "WolfLink", heap, dummy_list); // TODO: the rest