diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 78d55cb2..8f3a837a 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -9825,7 +9825,7 @@ 0x0000007100170b64,_ZN5uking6action14GameDataAddIntD1Ev,20,_ZN5uking6action14GameDataAddIntD1Ev 0x0000007100170b78,_ZN5uking6action14GameDataAddIntD0Ev,52,_ZN5uking6action14GameDataAddIntD0Ev 0x0000007100170bac,_ZN5uking6action14GameDataAddInt5init_EPN4sead4HeapE,8,_ZN5uking6action14GameDataAddInt5init_EPN4sead4HeapE -0x0000007100170bb4,_ZN5uking6action14GameDataAddInt8oneShot_Ev,184, +0x0000007100170bb4,_ZN5uking6action14GameDataAddInt8oneShot_Ev,184,_ZN5uking6action14GameDataAddInt8oneShot_Ev 0x0000007100170c6c,_ZN5uking6action14GameDataAddInt11loadParams_Ev,208,_ZN5uking6action14GameDataAddInt11loadParams_Ev 0x0000007100170d3c,_ZNK5uking6action14GameDataAddInt27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE,288,_ZNK5uking6action14GameDataAddInt27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100170e5c,_ZNK5uking6action14GameDataAddInt18getRuntimeTypeInfoEv,92,_ZNK5uking6action14GameDataAddInt18getRuntimeTypeInfoEv @@ -76035,7 +76035,7 @@ 0x0000007100dd2184,sub_7100DD2184,172, 0x0000007100dd2230,sub_7100DD2230,164, 0x0000007100dd22d4,sub_7100DD22D4,184, -0x0000007100dd238c,GameDataMgr::setIntByKey,164, +0x0000007100dd238c,GameDataMgr::setIntByKey,164,_ZN4ksys3gdt7Manager6setS32EiRKN4sead14SafeStringBaseIcEE 0x0000007100dd2430,GameDataMgr::setFloatByKey,172,_ZN4ksys3gdt7Manager6setF32EfRKN4sead14SafeStringBaseIcEE 0x0000007100dd24dc,GameDataMgr::setString32ByKey,164, 0x0000007100dd2580,GameDataMgr::setString64ByKey,164, diff --git a/src/Game/AI/Action/actionGameDataAddInt.cpp b/src/Game/AI/Action/actionGameDataAddInt.cpp index 236e9698..5be1df07 100644 --- a/src/Game/AI/Action/actionGameDataAddInt.cpp +++ b/src/Game/AI/Action/actionGameDataAddInt.cpp @@ -1,4 +1,5 @@ #include "Game/AI/Action/actionGameDataAddInt.h" +#include "KingSystem/GameData/gdtManager.h" namespace uking::action { @@ -10,6 +11,25 @@ bool GameDataAddInt::init_(sead::Heap* heap) { return ksys::act::ai::Action::init_(heap); } +bool GameDataAddInt::oneShot_() { + auto* gdm = ksys::gdt::Manager::instance(); + if (!gdm) { + setFailed(); + mFlags.set(Flag::_4); + return false; + } + + s32 src = 0; + s32 dst = 0; + if (gdm->getParam().get().getS32(&src, mGameDataIntSrcName_d)) { + if (gdm->getParam().get().getS32(&dst, mGameDataIntDstName_d)) + src += dst; + gdm->setS32(src, mGameDataIntToName_d); + } + + return true; +} + void GameDataAddInt::loadParams_() { getDynamicParam(&mGameDataIntSrcName_d, "GameDataIntSrcName"); getDynamicParam(&mGameDataIntDstName_d, "GameDataIntDstName"); diff --git a/src/Game/AI/Action/actionGameDataAddInt.h b/src/Game/AI/Action/actionGameDataAddInt.h index a6988bfa..fba94302 100644 --- a/src/Game/AI/Action/actionGameDataAddInt.h +++ b/src/Game/AI/Action/actionGameDataAddInt.h @@ -10,6 +10,7 @@ public: explicit GameDataAddInt(const InitArg& arg); ~GameDataAddInt() override; + bool oneShot_() override; bool init_(sead::Heap* heap) override; void loadParams_() override;