Merge pull request #33 from MonsterDruide1/master

uking/action and uking/query: Action and Query related to ChampionBallad added
This commit is contained in:
Léo Lam 2021-06-21 17:53:18 +02:00 committed by GitHub
commit 952a40d472
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 4 deletions

View File

@ -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
@ -40628,7 +40628,7 @@
0x000000710068851c,AI_Query_CheckCurseRRetryEverOnce::ctor,52,_ZN5uking5query24CheckCurseRRetryEverOnceC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100688550,AI_Query_CheckCurseRRetryEverOnce::dtor,20,_ZN5uking5query24CheckCurseRRetryEverOnceD1Ev
0x0000007100688564,AI_Query_CheckCurseRRetryEverOnce::dtorDelete,52,_ZN5uking5query24CheckCurseRRetryEverOnceD0Ev
0x0000007100688598,AI_Query_CheckCurseRRetryEverOnce::doQuery,76,
0x0000007100688598,AI_Query_CheckCurseRRetryEverOnce::doQuery,76,_ZN5uking5query24CheckCurseRRetryEverOnce7doQueryEv
0x00000071006885e4,AI_Query_CheckCurseRRetryEverOnce::m10,64,_ZN5uking5query24CheckCurseRRetryEverOnce10loadParamsERKN4evfl8QueryArgE
0x0000007100688624,AI_Query_CheckCurseRRetryEverOnce::loadParams,64,_ZN5uking5query24CheckCurseRRetryEverOnce10loadParamsEv
0x0000007100688664,AI_Query_CheckCurseRRetryEverOnce::rtti1,204,_ZNK5uking5query24CheckCurseRRetryEverOnce27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE

Can't render this file because it is too large.

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckCurseRRetryEverOnce.h"
#include <evfl/Query.h>
#include "Game/DLC/aocChampionBalladManager.h"
namespace uking::query {
@ -8,9 +9,15 @@ CheckCurseRRetryEverOnce::CheckCurseRRetryEverOnce(const InitArg& arg)
CheckCurseRRetryEverOnce::~CheckCurseRRetryEverOnce() = default;
// FIXME: implement
int CheckCurseRRetryEverOnce::doQuery() {
return -1;
auto* manager = ChampionBalladManager::instance();
if (!manager)
return 0;
auto blight = BlightType(*mCurseRType);
if (blight <= BlightType::Water)
return manager->getBlightRematchCount(blight) > 0;
return 0;
}
void CheckCurseRRetryEverOnce::loadParams(const evfl::QueryArg& arg) {