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 +#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 +#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 +#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 +#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 +#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 +#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 +#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 +#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 +#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 +#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; }