From 2cbe98381ef88f206196690f221d20f8a6b0eab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 26 Mar 2021 14:45:42 +0100 Subject: [PATCH] query: Implement CheckDieCnt --- data/status_query.yml | 2 +- data/uking_functions.csv | 2 +- src/Game/AI/Query/queryCheckDieCnt.cpp | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/data/status_query.yml b/data/status_query.yml index a33b0ab3..29e8d086 100644 --- a/data/status_query.yml +++ b/data/status_query.yml @@ -37,7 +37,7 @@ query::CheckDeadHorseResistered: query::CheckDeadlyQuestEscapeTiming: status: pending query::CheckDieCnt: - status: pending + status: done query::CheckDistanceForWarp: status: pending query::CheckDistanceFromPlayer: diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 1c3e6792..9225c58d 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -40651,7 +40651,7 @@ 0x0000007100688d84,AI_Query_CheckDieCnt::ctor,76,_ZN5uking5query11CheckDieCntC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100688dd0,AI_Query_CheckDieCnt::dtor,20,_ZN5uking5query11CheckDieCntD1Ev 0x0000007100688de4,AI_Query_CheckDieCnt::dtorDelete,52,_ZN5uking5query11CheckDieCntD0Ev -0x0000007100688e18,AI_Query_CheckDieCnt::doQuery,252, +0x0000007100688e18,AI_Query_CheckDieCnt::doQuery,252,_ZN5uking5query11CheckDieCnt7doQueryEv 0x0000007100688f14,AI_Query_CheckDieCnt::m10,112,_ZN5uking5query11CheckDieCnt10loadParamsERKN4evfl8QueryArgE 0x0000007100688f84,AI_Query_CheckDieCnt::loadParams,100,_ZN5uking5query11CheckDieCnt10loadParamsEv 0x0000007100688fe8,AI_Query_CheckDieCnt::rtti1,204,_ZNK5uking5query11CheckDieCnt27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE diff --git a/src/Game/AI/Query/queryCheckDieCnt.cpp b/src/Game/AI/Query/queryCheckDieCnt.cpp index 82444bd4..865cee1c 100644 --- a/src/Game/AI/Query/queryCheckDieCnt.cpp +++ b/src/Game/AI/Query/queryCheckDieCnt.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckDieCnt.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,18 @@ CheckDieCnt::CheckDieCnt(const InitArg& arg) : ksys::act::ai::Query(arg) {} CheckDieCnt::~CheckDieCnt() = default; -// FIXME: implement int CheckDieCnt::doQuery() { - return -1; + auto* gdm = ksys::gdt::Manager::instance(); + if (!gdm) + return 0; + + sead::FixedSafeString<64> flag; + flag.format("%s_DeathCount", mActorName.cstr()); + int count = 0; + if (!gdm->getParamBypassPerm().get().getS32(&count, flag)) + return 0; + + return count > *mCount; } void CheckDieCnt::loadParams(const evfl::QueryArg& arg) {