summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Zhao <44533763+Pistonight@users.noreply.github.com>2026-04-16 20:08:44 -0700
committerGitHub <noreply@github.com>2026-04-16 20:08:44 -0700
commitb583f00ba58e87a75442820f6d8a35b6782df006 (patch)
treed368d72f83efc5ed060b7bd793a20569aa3644c1
parent1b79b4069dce6685b5ebd3905725b5857378ae9c (diff)
parent276f32f366c81dcd2341d4763f56746f7b721bb2 (diff)
Merge pull request #162 from hgh32/master
match more ai::Query
-rw-r--r--data/status_query.yml30
-rw-r--r--data/uking_functions.csv22
-rw-r--r--src/Game/AI/Query/queryBranchByDyeColor.cpp8
-rw-r--r--src/Game/AI/Query/queryCheckAppPoint.cpp6
-rw-r--r--src/Game/AI/Query/queryCheckAppShopSelect.cpp16
-rw-r--r--src/Game/AI/Query/queryCheckDyeShopSelect.cpp16
-rw-r--r--src/Game/AI/Query/queryCheckItemShopDecide.cpp11
-rw-r--r--src/Game/AI/Query/queryCheckItemShopPorchVacancy.cpp12
-rw-r--r--src/Game/AI/Query/queryCheckItemShopSelectBuy.cpp11
-rw-r--r--src/Game/AI/Query/queryCheckMaterialValue.cpp11
-rw-r--r--src/Game/AI/Query/queryCheckPlacedItemSaled.cpp12
-rw-r--r--src/Game/AI/Query/queryHasItemDyeSpecifiedColor.cpp14
-rw-r--r--src/Game/AI/Query/queryHasSetItem.cpp25
13 files changed, 134 insertions, 60 deletions
diff --git a/data/status_query.yml b/data/status_query.yml
index 1c364ee3..34557ea9 100644
--- a/data/status_query.yml
+++ b/data/status_query.yml
@@ -1,5 +1,5 @@
query::BranchByDyeColor:
- status: pending
+ status: done
query::BranchByGameOver:
status: pending
query::CanCreateMakeItemList:
@@ -17,9 +17,9 @@ query::CheckActorAction14_2:
query::CheckAddPorchItem:
status: pending
query::CheckAppPoint:
- status: pending
+ status: done
query::CheckAppShopSelect:
- status: pending
+ status: done
query::CheckAreaTransition:
status: pending
query::CheckBalladOfHeroActiveTiming:
@@ -47,9 +47,9 @@ query::CheckDownloadItemNum:
query::CheckDuringBloodyMoon:
status: pending
query::CheckDyeShopSelect:
- status: pending
+ status: done
query::CheckE3Mode:
- status: pending
+ status: done
query::CheckEatActor:
status: pending
query::CheckElapsedTimeOfMiniGame:
@@ -97,13 +97,13 @@ query::CheckHorseTakenOut:
query::CheckIsOpenItemCategory:
status: done
query::CheckItemShopDecide:
- status: pending
+ status: done
query::CheckItemShopPorchVacancy:
- status: pending
+ status: done
query::CheckItemShopSelect:
status: pending
query::CheckItemShopSelectBuy:
- status: pending
+ status: done
query::CheckJustBeforeEventCancel:
status: pending
query::CheckLastDamageAttacker:
@@ -115,7 +115,7 @@ query::CheckMapArea:
query::CheckMasterSwordState:
status: pending
query::CheckMaterialValue:
- status: pending
+ status: done
query::CheckMiniGameTime:
status: pending
query::CheckMiniGameTimeOver:
@@ -127,7 +127,7 @@ query::CheckOwnedHorseFamiliarity:
query::CheckPictureBookVacancy:
status: pending
query::CheckPlacedItemSaled:
- status: pending
+ status: done
query::CheckPlayerDeadCause:
status: pending
query::CheckPlayerEquip:
@@ -149,7 +149,7 @@ query::CheckPlayerTemperatureCondition:
query::CheckPlayerWeaponFired:
status: pending
query::CheckPorchInItem:
- status: pending
+ status: done
query::CheckProConUse:
status: done
query::CheckRainRatio:
@@ -163,7 +163,7 @@ query::CheckResultOfNPCConflict:
query::CheckRoad:
status: pending
query::CheckRupee:
- status: pending
+ status: done
query::CheckSelectPicture:
status: pending
query::CheckSellResult:
@@ -235,7 +235,7 @@ query::HasEnoughPayment:
query::HasItemDye:
status: done
query::HasItemDyeSpecifiedColor:
- status: pending
+ status: done
query::HasPorchArrow:
status: done
query::HasPorchItem:
@@ -245,7 +245,7 @@ query::HasPorchItemByCategory:
query::HasPouchItemByPouchCategory:
status: done
query::HasSetItem:
- status: pending
+ status: done
query::HasSpecificArmorSeries:
status: pending
query::IsAppAlreadyExchanged:
@@ -301,7 +301,7 @@ query::IsSoldOut:
query::IsSuccessEndLastDemoAction:
status: done
query::IsTerrorDisappeared:
- status: pending
+ status: done
query::IsWaitRevival:
status: pending
query::IsWeaponDrawn:
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index bfd0fad2..b1704fc3 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -40511,7 +40511,7 @@ Address,Quality,Size,Name
0x0000007100683e48,O,000048,_ZN5uking5query16BranchByDyeColorC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100683e78,O,000020,_ZN5uking5query16BranchByDyeColorD1Ev
0x0000007100683e8c,O,000052,_ZN5uking5query16BranchByDyeColorD0Ev
-0x0000007100683ec0,U,000036,AI_Query_BranchByDyeColor::doQuery
+0x0000007100683ec0,O,000036,_ZN5uking5query16BranchByDyeColor7doQueryEv
0x0000007100683ee4,O,000004,_ZN5uking5query16BranchByDyeColor10loadParamsERKN4evfl8QueryArgE
0x0000007100683ee8,O,000004,_ZN5uking5query16BranchByDyeColor10loadParamsEv
0x0000007100683eec,O,000004,_ZN4ksys3act2ai5Query10loadParamsEv
@@ -40595,13 +40595,13 @@ Address,Quality,Size,Name
0x00000071006870e8,O,000048,_ZN5uking5query13CheckAppPointC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100687118,O,000020,_ZN5uking5query13CheckAppPointD1Ev
0x000000710068712c,O,000052,_ZN5uking5query13CheckAppPointD0Ev
-0x0000007100687160,U,000108,AI_Query_CheckAppPoint::doQuery
+0x0000007100687160,O,000108,_ZN5uking5query13CheckAppPoint7doQueryEv
0x00000071006871cc,O,000204,_ZNK5uking5query13CheckAppPoint27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x0000007100687298,O,000092,_ZNK5uking5query13CheckAppPoint18getRuntimeTypeInfoEv
0x00000071006872f4,O,000048,_ZN5uking5query18CheckAppShopSelectC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100687324,O,000020,_ZN5uking5query18CheckAppShopSelectD1Ev
0x0000007100687338,O,000052,_ZN5uking5query18CheckAppShopSelectD0Ev
-0x000000710068736c,U,000132,AI_Query_CheckAppShopSelect::doQuery
+0x000000710068736c,O,000132,_ZN5uking5query18CheckAppShopSelect7doQueryEv
0x00000071006873f0,O,000204,_ZNK5uking5query18CheckAppShopSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071006874bc,O,000092,_ZNK5uking5query18CheckAppShopSelect18getRuntimeTypeInfoEv
0x0000007100687518,O,000056,_ZN5uking5query19CheckAreaTransitionC1ERKN4ksys3act2ai5Query7InitArgE
@@ -40712,7 +40712,7 @@ Address,Quality,Size,Name
0x0000007100689c90,O,000048,_ZN5uking5query18CheckDyeShopSelectC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100689cc0,O,000020,_ZN5uking5query18CheckDyeShopSelectD1Ev
0x0000007100689cd4,O,000052,_ZN5uking5query18CheckDyeShopSelectD0Ev
-0x0000007100689d08,U,000152,AI_Query_CheckDyeShopSelect::doQuery
+0x0000007100689d08,O,000152,_ZN5uking5query18CheckDyeShopSelect7doQueryEv
0x0000007100689da0,O,000204,_ZNK5uking5query18CheckDyeShopSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x0000007100689e6c,O,000092,_ZNK5uking5query18CheckDyeShopSelect18getRuntimeTypeInfoEv
0x0000007100689ec8,O,000048,_ZN5uking5query11CheckE3ModeC1ERKN4ksys3act2ai5Query7InitArgE
@@ -40893,13 +40893,13 @@ Address,Quality,Size,Name
0x000000710068f09c,O,000048,_ZN5uking5query19CheckItemShopDecideC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710068f0cc,O,000020,_ZN5uking5query19CheckItemShopDecideD1Ev
0x000000710068f0e0,O,000052,_ZN5uking5query19CheckItemShopDecideD0Ev
-0x000000710068f114,U,000132,AI_Query_CheckItemShopDecide::doQuery
+0x000000710068f114,O,000132,_ZN5uking5query19CheckItemShopDecide7doQueryEv
0x000000710068f198,O,000204,_ZNK5uking5query19CheckItemShopDecide27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710068f264,O,000092,_ZNK5uking5query19CheckItemShopDecide18getRuntimeTypeInfoEv
0x000000710068f2c0,O,000048,_ZN5uking5query25CheckItemShopPorchVacancyC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710068f2f0,O,000020,_ZN5uking5query25CheckItemShopPorchVacancyD1Ev
0x000000710068f304,O,000052,_ZN5uking5query25CheckItemShopPorchVacancyD0Ev
-0x000000710068f338,U,000132,AI_Query_CheckItemShopPorchVacancy::doQuery
+0x000000710068f338,O,000132,_ZN5uking5query25CheckItemShopPorchVacancy7doQueryEv
0x000000710068f3bc,O,000204,_ZNK5uking5query25CheckItemShopPorchVacancy27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710068f488,O,000092,_ZNK5uking5query25CheckItemShopPorchVacancy18getRuntimeTypeInfoEv
0x000000710068f4e4,O,000048,_ZN5uking5query19CheckItemShopSelectC1ERKN4ksys3act2ai5Query7InitArgE
@@ -40911,7 +40911,7 @@ Address,Quality,Size,Name
0x000000710068f710,O,000048,_ZN5uking5query22CheckItemShopSelectBuyC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710068f740,O,000020,_ZN5uking5query22CheckItemShopSelectBuyD1Ev
0x000000710068f754,O,000052,_ZN5uking5query22CheckItemShopSelectBuyD0Ev
-0x000000710068f788,U,000128,AI_Query_CheckItemShopSelectBuy::doQuery
+0x000000710068f788,O,000128,_ZN5uking5query22CheckItemShopSelectBuy7doQueryEv
0x000000710068f808,O,000204,_ZNK5uking5query22CheckItemShopSelectBuy27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710068f8d4,O,000092,_ZNK5uking5query22CheckItemShopSelectBuy18getRuntimeTypeInfoEv
0x000000710068f930,O,000072,_ZN5uking5query23CheckLastDamageAttackerC1ERKN4ksys3act2ai5Query7InitArgE
@@ -40947,7 +40947,7 @@ Address,Quality,Size,Name
0x0000007100690344,O,000048,_ZN5uking5query18CheckMaterialValueC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100690374,O,000020,_ZN5uking5query18CheckMaterialValueD1Ev
0x0000007100690388,O,000052,_ZN5uking5query18CheckMaterialValueD0Ev
-0x00000071006903bc,U,000120,AI_Query_CheckMaterialValue::doQuery
+0x00000071006903bc,O,000120,_ZN5uking5query18CheckMaterialValue7doQueryEv
0x0000007100690434,O,000204,_ZNK5uking5query18CheckMaterialValue27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x0000007100690500,O,000092,_ZNK5uking5query18CheckMaterialValue18getRuntimeTypeInfoEv
0x000000710069055c,O,000056,_ZN5uking5query17CheckMiniGameTimeC1ERKN4ksys3act2ai5Query7InitArgE
@@ -40991,7 +40991,7 @@ Address,Quality,Size,Name
0x0000007100691624,O,000048,_ZN5uking5query20CheckPlacedItemSaledC1ERKN4ksys3act2ai5Query7InitArgE
0x0000007100691654,O,000020,_ZN5uking5query20CheckPlacedItemSaledD1Ev
0x0000007100691668,O,000052,_ZN5uking5query20CheckPlacedItemSaledD0Ev
-0x000000710069169c,U,000136,AI_Query_CheckPlacedItemSaled::doQuery
+0x000000710069169c,O,000136,_ZN5uking5query20CheckPlacedItemSaled7doQueryEv
0x0000007100691724,O,000204,_ZNK5uking5query20CheckPlacedItemSaled27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071006917f0,O,000092,_ZNK5uking5query20CheckPlacedItemSaled18getRuntimeTypeInfoEv
0x000000710069184c,O,000052,_ZN5uking5query20CheckPlayerDeadCauseC1ERKN4ksys3act2ai5Query7InitArgE
@@ -41398,7 +41398,7 @@ Address,Quality,Size,Name
0x000000710069b634,O,000048,_ZN5uking5query24HasItemDyeSpecifiedColorC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710069b664,O,000020,_ZN5uking5query24HasItemDyeSpecifiedColorD1Ev
0x000000710069b678,O,000052,_ZN5uking5query24HasItemDyeSpecifiedColorD0Ev
-0x000000710069b6ac,U,000052,AI_Query_HasItemDyeSpecifiedColor::doQuery
+0x000000710069b6ac,O,000052,_ZN5uking5query24HasItemDyeSpecifiedColor7doQueryEv
0x000000710069b6e0,O,000204,_ZNK5uking5query24HasItemDyeSpecifiedColor27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710069b7ac,O,000092,_ZNK5uking5query24HasItemDyeSpecifiedColor18getRuntimeTypeInfoEv
0x000000710069b808,O,000052,_ZN5uking5query13HasPorchArrowC1ERKN4ksys3act2ai5Query7InitArgE
@@ -41436,7 +41436,7 @@ Address,Quality,Size,Name
0x000000710069c564,O,000076,_ZN5uking5query10HasSetItemC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710069c5b0,O,000020,_ZN5uking5query10HasSetItemD1Ev
0x000000710069c5c4,O,000052,_ZN5uking5query10HasSetItemD0Ev
-0x000000710069c5f8,m,000200,_ZN5uking5query10HasSetItem7doQueryEv
+0x000000710069c5f8,O,000200,_ZN5uking5query10HasSetItem7doQueryEv
0x000000710069c6c0,O,000112,_ZN5uking5query10HasSetItem10loadParamsERKN4evfl8QueryArgE
0x000000710069c730,O,000100,_ZN5uking5query10HasSetItem10loadParamsEv
0x000000710069c794,O,000204,_ZNK5uking5query10HasSetItem27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
diff --git a/src/Game/AI/Query/queryBranchByDyeColor.cpp b/src/Game/AI/Query/queryBranchByDyeColor.cpp
index 085367f0..30cfe43e 100644
--- a/src/Game/AI/Query/queryBranchByDyeColor.cpp
+++ b/src/Game/AI/Query/queryBranchByDyeColor.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryBranchByDyeColor.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtCommonFlagsUtils.h"
namespace uking::query {
@@ -7,9 +8,12 @@ BranchByDyeColor::BranchByDyeColor(const InitArg& arg) : ksys::act::ai::Query(ar
BranchByDyeColor::~BranchByDyeColor() = default;
-// FIXME: implement
int BranchByDyeColor::doQuery() {
- return -1;
+ auto index = ksys::gdt::getFlag_ColorChange_MaterialIndex();
+ if (index >= 1 && index <= 15) {
+ return index;
+ }
+ return 0;
}
void BranchByDyeColor::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckAppPoint.cpp b/src/Game/AI/Query/queryCheckAppPoint.cpp
index 2cf9cceb..408b2139 100644
--- a/src/Game/AI/Query/queryCheckAppPoint.cpp
+++ b/src/Game/AI/Query/queryCheckAppPoint.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckAppPoint.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtSpecialFlags.h"
namespace uking::query {
@@ -7,9 +8,10 @@ CheckAppPoint::CheckAppPoint(const InitArg& arg) : ksys::act::ai::Query(arg) {}
CheckAppPoint::~CheckAppPoint() = default;
-// FIXME: implement
int CheckAppPoint::doQuery() {
- return -1;
+ s32 reach = ksys::gdt::getS32ByKey("ReachPointActorDiscoverNum");
+ s32 use = ksys::gdt::getS32ByKey("App_ExtendUsePoint");
+ return reach - use > 1;
}
void CheckAppPoint::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckAppShopSelect.cpp b/src/Game/AI/Query/queryCheckAppShopSelect.cpp
index 3aab27d1..62dddb08 100644
--- a/src/Game/AI/Query/queryCheckAppShopSelect.cpp
+++ b/src/Game/AI/Query/queryCheckAppShopSelect.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckAppShopSelect.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,20 @@ CheckAppShopSelect::CheckAppShopSelect(const InitArg& arg) : ksys::act::ai::Quer
CheckAppShopSelect::~CheckAppShopSelect() = default;
-// FIXME: implement
int CheckAppShopSelect::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm != nullptr) {
+ int screen_type = -1;
+ if (gdm->getParam().get().getS32(&screen_type, "Shop_ScreenType")) {
+ if (screen_type == 15) {
+ return 0;
+ }
+ if (screen_type == 0) {
+ return 1;
+ }
+ }
+ }
+ return 1;
}
void CheckAppShopSelect::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckDyeShopSelect.cpp b/src/Game/AI/Query/queryCheckDyeShopSelect.cpp
index d0cea451..02f6a7ed 100644
--- a/src/Game/AI/Query/queryCheckDyeShopSelect.cpp
+++ b/src/Game/AI/Query/queryCheckDyeShopSelect.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckDyeShopSelect.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,20 @@ CheckDyeShopSelect::CheckDyeShopSelect(const InitArg& arg) : ksys::act::ai::Quer
CheckDyeShopSelect::~CheckDyeShopSelect() = default;
-// FIXME: implement
int CheckDyeShopSelect::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm != nullptr) {
+ int screen_type = -1;
+ if (gdm->getParam().get().getS32(&screen_type, "Shop_ScreenType") && (screen_type != 0)) {
+ if (screen_type == 9) {
+ return 0;
+ }
+ if (screen_type == 10) {
+ return 1;
+ }
+ }
+ }
+ return 2;
}
void CheckDyeShopSelect::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckItemShopDecide.cpp b/src/Game/AI/Query/queryCheckItemShopDecide.cpp
index 1cf568fc..2026f83c 100644
--- a/src/Game/AI/Query/queryCheckItemShopDecide.cpp
+++ b/src/Game/AI/Query/queryCheckItemShopDecide.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckItemShopDecide.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,15 @@ CheckItemShopDecide::CheckItemShopDecide(const InitArg& arg) : ksys::act::ai::Qu
CheckItemShopDecide::~CheckItemShopDecide() = default;
-// FIXME: implement
int CheckItemShopDecide::doQuery() {
- return -1;
+ bool decide = false;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm != nullptr) {
+ if (gdm->getParam().get().getBool(&decide, "Shop_IsDecide") && decide) {
+ return 1;
+ }
+ }
+ return 0;
}
void CheckItemShopDecide::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckItemShopPorchVacancy.cpp b/src/Game/AI/Query/queryCheckItemShopPorchVacancy.cpp
index 04f06191..71603937 100644
--- a/src/Game/AI/Query/queryCheckItemShopPorchVacancy.cpp
+++ b/src/Game/AI/Query/queryCheckItemShopPorchVacancy.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckItemShopPorchVacancy.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -8,9 +9,16 @@ CheckItemShopPorchVacancy::CheckItemShopPorchVacancy(const InitArg& arg)
CheckItemShopPorchVacancy::~CheckItemShopPorchVacancy() = default;
-// FIXME: implement
int CheckItemShopPorchVacancy::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm != nullptr) {
+ int item_state = -1;
+ if (gdm->getParam().get().getS32(&item_state, "Shop_CurrentItemState") &&
+ (item_state == 7)) {
+ return 0;
+ }
+ }
+ return 1;
}
void CheckItemShopPorchVacancy::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckItemShopSelectBuy.cpp b/src/Game/AI/Query/queryCheckItemShopSelectBuy.cpp
index 9d28802c..2122c7e8 100644
--- a/src/Game/AI/Query/queryCheckItemShopSelectBuy.cpp
+++ b/src/Game/AI/Query/queryCheckItemShopSelectBuy.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckItemShopSelectBuy.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,15 @@ CheckItemShopSelectBuy::CheckItemShopSelectBuy(const InitArg& arg) : ksys::act::
CheckItemShopSelectBuy::~CheckItemShopSelectBuy() = default;
-// FIXME: implement
int CheckItemShopSelectBuy::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm != nullptr) {
+ int screen_type = -1;
+ if (gdm->getParam().get().getS32(&screen_type, "Shop_ScreenType")) {
+ return screen_type != 1;
+ }
+ }
+ return 0;
}
void CheckItemShopSelectBuy::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckMaterialValue.cpp b/src/Game/AI/Query/queryCheckMaterialValue.cpp
index 0b0c9924..64415f22 100644
--- a/src/Game/AI/Query/queryCheckMaterialValue.cpp
+++ b/src/Game/AI/Query/queryCheckMaterialValue.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckMaterialValue.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,15 @@ CheckMaterialValue::CheckMaterialValue(const InitArg& arg) : ksys::act::ai::Quer
CheckMaterialValue::~CheckMaterialValue() = default;
-// FIXME: implement
int CheckMaterialValue::doQuery() {
- return -1;
+ int mat = 0;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (!gdm)
+ return 0;
+
+ gdm->getParamBypassPerm().get().getS32(&mat, "AllMaterialValue");
+
+ return mat > 0;
}
void CheckMaterialValue::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryCheckPlacedItemSaled.cpp b/src/Game/AI/Query/queryCheckPlacedItemSaled.cpp
index 5abf174d..3930c9a6 100644
--- a/src/Game/AI/Query/queryCheckPlacedItemSaled.cpp
+++ b/src/Game/AI/Query/queryCheckPlacedItemSaled.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCheckPlacedItemSaled.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,16 @@ CheckPlacedItemSaled::CheckPlacedItemSaled(const InitArg& arg) : ksys::act::ai::
CheckPlacedItemSaled::~CheckPlacedItemSaled() = default;
-// FIXME: implement
int CheckPlacedItemSaled::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ int state = 2;
+ if (gdm != nullptr) {
+ gdm->getParamBypassPerm().get().getS32(&state, "PlacedItemCountState");
+ if (state == 3) {
+ state = 1;
+ }
+ }
+ return state;
}
void CheckPlacedItemSaled::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryHasItemDyeSpecifiedColor.cpp b/src/Game/AI/Query/queryHasItemDyeSpecifiedColor.cpp
index faabedbc..0d712b49 100644
--- a/src/Game/AI/Query/queryHasItemDyeSpecifiedColor.cpp
+++ b/src/Game/AI/Query/queryHasItemDyeSpecifiedColor.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryHasItemDyeSpecifiedColor.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtCommonFlagsUtils.h"
namespace uking::query {
@@ -8,9 +9,18 @@ HasItemDyeSpecifiedColor::HasItemDyeSpecifiedColor(const InitArg& arg)
HasItemDyeSpecifiedColor::~HasItemDyeSpecifiedColor() = default;
-// FIXME: implement
int HasItemDyeSpecifiedColor::doQuery() {
- return -1;
+ s32 state = ksys::gdt::getFlag_Shop_ItemState();
+ switch (state) {
+ case 0:
+ case 9:
+ return 1;
+ case 8:
+ return 0;
+ default:
+ break;
+ }
+ return 0;
}
void HasItemDyeSpecifiedColor::loadParams(const evfl::QueryArg& arg) {}
diff --git a/src/Game/AI/Query/queryHasSetItem.cpp b/src/Game/AI/Query/queryHasSetItem.cpp
index 7b8ccd7d..6b5d0c89 100644
--- a/src/Game/AI/Query/queryHasSetItem.cpp
+++ b/src/Game/AI/Query/queryHasSetItem.cpp
@@ -8,22 +8,19 @@ HasSetItem::HasSetItem(const InitArg& arg) : ksys::act::ai::Query(arg) {}
HasSetItem::~HasSetItem() = default;
-// NON_MATCHING: temp duplication
int HasSetItem::doQuery() {
auto* gdm = ksys::gdt::Manager::instance();
- if (gdm == nullptr)
- return 0;
-
- auto flag_type = gdm->getParam().get1().getBuffer()->getFlagType(mItemName);
-
- if (flag_type == ksys::gdt::FlagType::Bool) {
- bool value = false;
- if (gdm->getParamBypassPerm().get().getBool(&value, mItemName))
- return value;
- } else if (flag_type == ksys::gdt::FlagType::S32) {
- s32 value = 0;
- if (gdm->getParamBypassPerm().get().getS32(&value, mItemName))
- return value >= *mCount;
+ if (gdm != nullptr) {
+ auto flag_type = gdm->getParam().get1().getBuffer()->getFlagType(mItemName);
+ if (flag_type == ksys::gdt::FlagType::Bool) {
+ bool value = false;
+ if (gdm->getParamBypassPerm().get().getBool(&value, mItemName))
+ return value;
+ } else if (flag_type == ksys::gdt::FlagType::S32) {
+ s32 value = 0;
+ if (gdm->getParamBypassPerm().get().getS32(&value, mItemName))
+ return value >= *mCount;
+ }
}
return 0;
}