From adcad916b75218b2f7244fb76f7228ab55e85203 Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Mon, 21 Jun 2021 17:26:41 +0200 Subject: [PATCH] uking/action: Add actionCurseRRematchCount --- data/uking_functions.csv | 2 +- .../AI/Action/actionCurseRRematchCount.cpp | 30 +++++++++++++++++++ src/Game/AI/Action/actionCurseRRematchCount.h | 2 ++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index c6f20a31..d89c86f4 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -1510,7 +1510,7 @@ 0x00000071000547d0,_ZN5uking6action18CurseRRematchCountD1Ev,20,_ZN5uking6action18CurseRRematchCountD1Ev 0x00000071000547e4,_ZN5uking6action18CurseRRematchCountD0Ev,52,_ZN5uking6action18CurseRRematchCountD0Ev 0x0000007100054818,_ZN5uking6action18CurseRRematchCount5init_EPN4sead4HeapE,8,_ZN5uking6action18CurseRRematchCount5init_EPN4sead4HeapE -0x0000007100054820,_ZN5uking6action18CurseRRematchCount8oneShot_Ev,208, +0x0000007100054820,_ZN5uking6action18CurseRRematchCount8oneShot_Ev,208,_ZN5uking6action18CurseRRematchCount8oneShot_Ev 0x00000071000548f0,_ZN5uking6action18CurseRRematchCount11loadParams_Ev,220,_ZN5uking6action18CurseRRematchCount11loadParams_Ev 0x00000071000549cc,_ZNK5uking6action18CurseRRematchCount27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE,288,_ZNK5uking6action18CurseRRematchCount27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100054aec,_ZNK5uking6action18CurseRRematchCount18getRuntimeTypeInfoEv,92,_ZNK5uking6action18CurseRRematchCount18getRuntimeTypeInfoEv diff --git a/src/Game/AI/Action/actionCurseRRematchCount.cpp b/src/Game/AI/Action/actionCurseRRematchCount.cpp index eb326234..5194ef82 100644 --- a/src/Game/AI/Action/actionCurseRRematchCount.cpp +++ b/src/Game/AI/Action/actionCurseRRematchCount.cpp @@ -1,4 +1,6 @@ #include "Game/AI/Action/actionCurseRRematchCount.h" +#include "Game/DLC/aocChampionBalladManager.h" +#include "KingSystem/GameData/gdtManager.h" namespace uking::action { @@ -16,4 +18,32 @@ void CurseRRematchCount::loadParams_() { getDynamicParam(&mGameDataStringCounterName_d, "GameDataStringCounterName"); } +bool CurseRRematchCount::oneShot_() { + auto* manager = ChampionBalladManager::instance(); + if (!manager) + return false; + + auto blight = BlightType(*mCurseRType_d); + if (blight > BlightType::Water) + return false; + + if (*mRematchCount_d == 0) + manager->incrementBlightRematchCount(blight); + else if (*mRematchCount_d == 1) + manager->setBlightRematchCount(0, blight); + else + return false; + + if (mGameDataStringCounterName_d.isEmpty()) + return true; + + auto* game_data_manager = ksys::gdt::Manager::instance(); + if (game_data_manager) { + s8 rematchCount = manager->getBlightRematchCount(blight); + game_data_manager->setS32(rematchCount, mGameDataStringCounterName_d); + return true; + } + return false; +} + } // namespace uking::action diff --git a/src/Game/AI/Action/actionCurseRRematchCount.h b/src/Game/AI/Action/actionCurseRRematchCount.h index bb4aac86..edb7cdac 100644 --- a/src/Game/AI/Action/actionCurseRRematchCount.h +++ b/src/Game/AI/Action/actionCurseRRematchCount.h @@ -14,6 +14,8 @@ public: void loadParams_() override; protected: + bool oneShot_() override; + // dynamic_param at offset 0x20 int* mRematchCount_d{}; // dynamic_param at offset 0x28