From 60dd80779a92120c74e7bda9e1ccf2695e2c7c19 Mon Sep 17 00:00:00 2001 From: theo3 Date: Thu, 1 Jul 2021 19:28:09 -0700 Subject: [PATCH] match some ai::Query --- data/status_query.yml | 82 ++++++++--------- data/uking_functions.csv | 90 +++++++++---------- .../Query/queryCheckHorseCustomizeSelect.cpp | 11 ++- src/Game/AI/Query/queryCheckHorseTakenOut.cpp | 9 +- .../AI/Query/queryCheckManufactResult.cpp | 11 ++- src/Game/AI/Query/queryCheckPorchInItem.cpp | 5 +- src/Game/AI/Query/queryCheckProConUse.cpp | 3 +- src/Game/AI/Query/queryCheckRupee.cpp | 8 +- src/Game/AI/Query/queryCheckSellResult.cpp | 13 ++- .../Query/queryCheckShopSelectedItemName.cpp | 6 +- src/Game/AI/Query/queryCheckTimeType.cpp | 15 +++- src/Game/AI/Query/queryCheckWarpMist.cpp | 4 +- src/Game/AI/Query/queryComparePlayerHeart.cpp | 8 +- .../AI/Query/queryComparePlayerMaxHeart.cpp | 9 +- .../AI/Query/queryComparePlayerMaxStamina.cpp | 12 ++- .../Query/queryComparePlayerOriginalHeart.cpp | 16 +++- src/Game/AI/Query/queryCountFlag4.cpp | 26 +++++- src/Game/AI/Query/queryEnemyDieCheck.cpp | 4 +- src/Game/AI/Query/queryEnemyRestLifeRate.cpp | 12 ++- src/Game/AI/Query/queryGeneralChoice2.cpp | 8 +- src/Game/AI/Query/queryGeneralChoice3.cpp | 8 +- src/Game/AI/Query/queryGeneralChoice4.cpp | 7 +- src/Game/AI/Query/queryGeneralChoice8.cpp | 7 +- .../AI/Query/queryHasArmorAlreadyDyed.cpp | 8 +- src/Game/AI/Query/queryHasArmorDye.cpp | 8 +- .../AI/Query/queryHasCookResultInPorch.cpp | 43 ++++++++- src/Game/AI/Query/queryHasCookResultInPorch.h | 2 + src/Game/AI/Query/queryHasEnoughPayment.cpp | 12 ++- src/Game/AI/Query/queryHasItemDye.cpp | 7 +- src/Game/AI/Query/queryHasPorchArrow.cpp | 7 +- src/Game/AI/Query/queryHasPorchItem.cpp | 4 +- .../AI/Query/queryHasPorchItemByCategory.cpp | 69 +++++++++++++- .../queryHasPouchItemByPouchCategory.cpp | 41 ++++++++- src/Game/AI/Query/queryHasSetItem.cpp | 20 ++++- .../AI/Query/queryIsAppAlreadyExchanged.cpp | 3 +- src/Game/AI/Query/queryIsBloodyMoonTrig.cpp | 4 +- .../AI/Query/queryIsCurrentAocFieldStage.cpp | 4 +- .../AI/Query/queryIsCurrentCDungeonStage.cpp | 4 +- .../queryIsCurrentMainFieldDungeonStage.cpp | 4 +- .../AI/Query/queryIsCurrentMainFieldStage.cpp | 4 +- src/Game/AI/Query/queryIsItemInStock.cpp | 12 ++- src/Game/AI/Query/queryIsOnInstEventFlag.cpp | 4 +- .../Query/queryIsSuccessEndLastDemoAction.cpp | 13 ++- .../AI/Query/queryIsTerrorDisappeared.cpp | 3 +- src/Game/AI/Query/queryWhatDayOfTheWeek.cpp | 4 +- src/Game/AI/Query/queryWhatDungeonType.cpp | 4 +- src/Game/AI/Query/queryWhatMoonName.cpp | 5 +- src/Game/UI/uiUtils.h | 4 + src/KingSystem/ActorSystem/actActor.h | 4 +- src/KingSystem/ActorSystem/actActorUtil.h | 2 + src/KingSystem/ActorSystem/actPlayerInfo.h | 3 + src/KingSystem/World/worldEnvMgr.h | 2 + src/KingSystem/World/worldTimeMgr.h | 1 + 53 files changed, 507 insertions(+), 172 deletions(-) diff --git a/data/status_query.yml b/data/status_query.yml index 8ab90dd4..1c364ee3 100644 --- a/data/status_query.yml +++ b/data/status_query.yml @@ -87,13 +87,13 @@ query::CheckGiveReward: query::CheckHasManifactureArmor: status: pending query::CheckHorseCustomizeSelect: - status: pending + status: done query::CheckHorseDeadCause: status: pending query::CheckHorseRegistered: status: pending query::CheckHorseTakenOut: - status: pending + status: done query::CheckIsOpenItemCategory: status: done query::CheckItemShopDecide: @@ -109,7 +109,7 @@ query::CheckJustBeforeEventCancel: query::CheckLastDamageAttacker: status: pending query::CheckManufactResult: - status: pending + status: done query::CheckMapArea: status: pending query::CheckMasterSwordState: @@ -151,7 +151,7 @@ query::CheckPlayerWeaponFired: query::CheckPorchInItem: status: pending query::CheckProConUse: - status: pending + status: done query::CheckRainRatio: status: pending query::CheckRankOfEnemyAttackedNPC: @@ -167,9 +167,9 @@ query::CheckRupee: query::CheckSelectPicture: status: pending query::CheckSellResult: - status: pending + status: done query::CheckShopSelectedItemName: - status: pending + status: done query::CheckSiteBossDamageAnm: status: pending query::CheckStage: @@ -181,7 +181,7 @@ query::CheckTerrorLevel: query::CheckTime: status: pending query::CheckTimeType: - status: pending + status: done query::CheckTypeOfOwnedHorseForEvent: status: pending query::CheckTypeOfWildHorseAssociated: @@ -189,7 +189,7 @@ query::CheckTypeOfWildHorseAssociated: query::CheckVacancyItem: status: pending query::CheckWarpMist: - status: pending + status: done query::CheckWeaponVacancyItem: status: pending query::CheckWeather: @@ -203,67 +203,67 @@ query::CompareGameDataTime: query::ComparePlayerFireResistantLevel: status: pending query::ComparePlayerHeart: - status: pending + status: done query::ComparePlayerMaxHeart: - status: pending + status: done query::ComparePlayerMaxStamina: - status: pending + status: done query::ComparePlayerOriginalHeart: - status: pending + status: done query::CountFlag4: - status: pending + status: done query::EnemyDieCheck: - status: pending + status: done query::EnemyRestLifeRate: - status: pending + status: done query::GeneralChoice2: - status: pending + status: done query::GeneralChoice3: - status: pending + status: done query::GeneralChoice4: - status: pending + status: done query::GeneralChoice8: - status: pending + status: done query::HasArmorAlreadyDyed: - status: pending + status: done query::HasArmorDye: - status: pending + status: done query::HasCookResultInPorch: - status: pending + status: done query::HasEnoughPayment: - status: pending + status: done query::HasItemDye: - status: pending + status: done query::HasItemDyeSpecifiedColor: status: pending query::HasPorchArrow: - status: pending + status: done query::HasPorchItem: - status: pending + status: done query::HasPorchItemByCategory: - status: pending + status: done query::HasPouchItemByPouchCategory: - status: pending + status: done query::HasSetItem: status: pending query::HasSpecificArmorSeries: status: pending query::IsAppAlreadyExchanged: - status: pending + status: done query::IsArriveAnchorForRain: status: pending query::IsAwakened: status: pending query::IsBloodyMoonTrig: - status: pending + status: done query::IsCurrentAocFieldStage: - status: pending + status: done query::IsCurrentCDungeonStage: - status: pending + status: done query::IsCurrentMainFieldDungeonStage: - status: pending + status: done query::IsCurrentMainFieldStage: - status: pending + status: done query::IsEquipedDyedArmor: status: pending query::IsEquippedEnableDye: @@ -277,7 +277,7 @@ query::IsHorseNumMax: query::IsIgnitionByArrowFire: status: pending query::IsItemInStock: - status: pending + status: done query::IsNeedEquipWeapon: status: pending query::IsNoEquipArmorAnyTarget: @@ -285,9 +285,9 @@ query::IsNoEquipArmorAnyTarget: query::IsOffLinkTag: status: pending query::IsOnEnterDungeonFlag: - status: pending + status: done query::IsOnInstEventFlag: - status: pending + status: done query::IsOwnedHorseAssociated: status: pending query::IsPlayerGrounded: @@ -299,7 +299,7 @@ query::IsRideHorse: query::IsSoldOut: status: pending query::IsSuccessEndLastDemoAction: - status: pending + status: done query::IsTerrorDisappeared: status: pending query::IsWaitRevival: @@ -321,8 +321,8 @@ query::RandomChoiceExceptOnFlag: query::WhatCurrentItem: status: pending query::WhatDayOfTheWeek: - status: pending + status: done query::WhatDungeonType: - status: pending + status: done query::WhatMoonName: - status: pending + status: done diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 7a6a1121..a4a55e19 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -40841,7 +40841,7 @@ 0x000000710068e5f8,AI_Query_CheckHorseCustomizeSelect::ctor,48,_ZN5uking5query25CheckHorseCustomizeSelectC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710068e628,AI_Query_CheckHorseCustomizeSelect::dtor,20,_ZN5uking5query25CheckHorseCustomizeSelectD1Ev 0x000000710068e63c,AI_Query_CheckHorseCustomizeSelect::dtorDelete,52,_ZN5uking5query25CheckHorseCustomizeSelectD0Ev -0x000000710068e670,AI_Query_CheckHorseCustomizeSelect::doQuery,76, +0x000000710068e670,AI_Query_CheckHorseCustomizeSelect::doQuery,76,_ZN5uking5query25CheckHorseCustomizeSelect7doQueryEv 0x000000710068e6bc,AI_Query_CheckHorseCustomizeSelect::rtti1,204,_ZNK5uking5query25CheckHorseCustomizeSelect27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710068e788,AI_Query_CheckHorseCustomizeSelect::rtti2,92,_ZNK5uking5query25CheckHorseCustomizeSelect18getRuntimeTypeInfoEv 0x000000710068e7e4,AI_Query_CheckHorseDeadCause::ctor,48,_ZN5uking5query19CheckHorseDeadCauseC1ERKN4ksys3act2ai5Query7InitArgE @@ -40859,7 +40859,7 @@ 0x000000710068ec3c,AI_Query_CheckHorseTakenOut::ctor,48,_ZN5uking5query18CheckHorseTakenOutC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710068ec6c,AI_Query_CheckHorseTakenOut::dtor,20,_ZN5uking5query18CheckHorseTakenOutD1Ev 0x000000710068ec80,AI_Query_CheckHorseTakenOut::dtorDelete,52,_ZN5uking5query18CheckHorseTakenOutD0Ev -0x000000710068ecb4,AI_Query_CheckHorseTakenOut::doQuery,116, +0x000000710068ecb4,AI_Query_CheckHorseTakenOut::doQuery,116,_ZN5uking5query18CheckHorseTakenOut7doQueryEv 0x000000710068ed28,AI_Query_CheckHorseTakenOut::rtti1,204,_ZNK5uking5query18CheckHorseTakenOut27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710068edf4,AI_Query_CheckHorseTakenOut::rtti2,92,_ZNK5uking5query18CheckHorseTakenOut18getRuntimeTypeInfoEv 0x000000710068ee50,AI_Query_CheckIsOpenItemCategory::ctor,52,_ZN5uking5query23CheckIsOpenItemCategoryC1ERKN4ksys3act2ai5Query7InitArgE @@ -40905,7 +40905,7 @@ 0x000000710068fc50,AI_Query_CheckManufactResult::ctor,48,_ZN5uking5query19CheckManufactResultC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710068fc80,AI_Query_CheckManufactResult::dtor,20,_ZN5uking5query19CheckManufactResultD1Ev 0x000000710068fc94,AI_Query_CheckManufactResult::dtorDelete,52,_ZN5uking5query19CheckManufactResultD0Ev -0x000000710068fcc8,AI_Query_CheckManufactResult::doQuery,80, +0x000000710068fcc8,AI_Query_CheckManufactResult::doQuery,80,_ZN5uking5query19CheckManufactResult7doQueryEv 0x000000710068fd18,AI_Query_CheckManufactResult::rtti1,204,_ZNK5uking5query19CheckManufactResult27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710068fde4,AI_Query_CheckManufactResult::rtti2,92,_ZNK5uking5query19CheckManufactResult18getRuntimeTypeInfoEv 0x000000710068fe40,AI_Query_CheckMapArea::ctor,72,_ZN5uking5query12CheckMapAreaC1ERKN4ksys3act2ai5Query7InitArgE @@ -41056,7 +41056,7 @@ 0x00000071006939d0,AI_Query_CheckPorchInItem::ctor,72,_ZN5uking5query16CheckPorchInItemC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100693a18,AI_Query_CheckPorchInItem::dtor,20,_ZN5uking5query16CheckPorchInItemD1Ev 0x0000007100693a2c,AI_Query_CheckPorchInItem::dtorDelete,52,_ZN5uking5query16CheckPorchInItemD0Ev -0x0000007100693a60,AI_Query_CheckPorchInItem::doQuery,36, +0x0000007100693a60,AI_Query_CheckPorchInItem::doQuery,36,_ZN5uking5query16CheckPorchInItem7doQueryEv 0x0000007100693a84,AI_Query_CheckPorchInItem::m10,64,_ZN5uking5query16CheckPorchInItem10loadParamsERKN4evfl8QueryArgE 0x0000007100693ac4,AI_Query_CheckPorchInItem::loadParams,64,_ZN5uking5query16CheckPorchInItem10loadParamsEv 0x0000007100693b04,AI_Query_CheckPorchInItem::rtti1,204,_ZNK5uking5query16CheckPorchInItem27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41064,7 +41064,7 @@ 0x0000007100693c2c,AI_Query_CheckProConUse::ctor,48,_ZN5uking5query14CheckProConUseC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100693c5c,AI_Query_CheckProConUse::dtor,20,_ZN5uking5query14CheckProConUseD1Ev 0x0000007100693c70,AI_Query_CheckProConUse::dtorDelete,52,_ZN5uking5query14CheckProConUseD0Ev -0x0000007100693ca4,AI_Query_CheckProConUse::doQuery,8, +0x0000007100693ca4,AI_Query_CheckProConUse::doQuery,8,_ZN5uking5query14CheckProConUse7doQueryEv 0x0000007100693cac,AI_Query_CheckProConUse::m10,4,_ZN5uking5query14CheckProConUse10loadParamsERKN4evfl8QueryArgE 0x0000007100693cb0,AI_Query_CheckProConUse::loadParams,4,_ZN5uking5query14CheckProConUse10loadParamsEv 0x0000007100693cb4,AI_Query_CheckProConUse::rtti1,204,_ZNK5uking5query14CheckProConUse27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41110,7 +41110,7 @@ 0x0000007100694aac,AI_Query_CheckRupee::ctor,52,_ZN5uking5query10CheckRupeeC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100694ae0,AI_Query_CheckRupee::dtor,20,_ZN5uking5query10CheckRupeeD1Ev 0x0000007100694af4,AI_Query_CheckRupee::dtorDelete,52,_ZN5uking5query10CheckRupeeD0Ev -0x0000007100694b28,AI_Query_CheckRupee::doQuery,140, +0x0000007100694b28,AI_Query_CheckRupee::doQuery,140,_ZN5uking5query10CheckRupee7doQueryEv? 0x0000007100694bb4,AI_Query_CheckRupee::m10,64,_ZN5uking5query10CheckRupee10loadParamsERKN4evfl8QueryArgE 0x0000007100694bf4,AI_Query_CheckRupee::loadParams,64,_ZN5uking5query10CheckRupee10loadParamsEv 0x0000007100694c34,AI_Query_CheckRupee::rtti1,204,_ZNK5uking5query10CheckRupee27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41126,13 +41126,13 @@ 0x0000007100694fc0,AI_Query_CheckSellResult::ctor,48,_ZN5uking5query15CheckSellResultC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100694ff0,AI_Query_CheckSellResult::dtor,20,_ZN5uking5query15CheckSellResultD1Ev 0x0000007100695004,AI_Query_CheckSellResult::dtorDelete,52,_ZN5uking5query15CheckSellResultD0Ev -0x0000007100695038,AI_Query_CheckSellResult::doQuery,96, +0x0000007100695038,AI_Query_CheckSellResult::doQuery,96,_ZN5uking5query15CheckSellResult7doQueryEv 0x0000007100695098,AI_Query_CheckSellResult::rtti1,204,_ZNK5uking5query15CheckSellResult27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100695164,AI_Query_CheckSellResult::rtti2,92,_ZNK5uking5query15CheckSellResult18getRuntimeTypeInfoEv 0x00000071006951c0,AI_Query_CheckShopSelectedItemName::ctor,72,_ZN5uking5query25CheckShopSelectedItemNameC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100695208,AI_Query_CheckShopSelectedItemName::dtor,20,_ZN5uking5query25CheckShopSelectedItemNameD1Ev 0x000000710069521c,AI_Query_CheckShopSelectedItemName::dtorDelete,52,_ZN5uking5query25CheckShopSelectedItemNameD0Ev -0x0000007100695250,AI_Query_CheckShopSelectedItemName::doQuery,240, +0x0000007100695250,AI_Query_CheckShopSelectedItemName::doQuery,240,_ZN5uking5query25CheckShopSelectedItemName7doQueryEv 0x0000007100695340,AI_Query_CheckShopSelectedItemName::m10,64,_ZN5uking5query25CheckShopSelectedItemName10loadParamsERKN4evfl8QueryArgE 0x0000007100695380,AI_Query_CheckShopSelectedItemName::loadParams,64,_ZN5uking5query25CheckShopSelectedItemName10loadParamsEv 0x00000071006953c0,AI_Query_CheckShopSelectedItemName::rtti1,204,_ZNK5uking5query25CheckShopSelectedItemName27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41177,7 +41177,7 @@ 0x0000007100696594,AI_Query_CheckTimeType::ctor,48,_ZN5uking5query13CheckTimeTypeC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006965c4,AI_Query_CheckTimeType::dtor,20,_ZN5uking5query13CheckTimeTypeD1Ev 0x00000071006965d8,AI_Query_CheckTimeType::dtorDelete,52,_ZN5uking5query13CheckTimeTypeD0Ev -0x000000710069660c,AI_Query_CheckTimeType::doQuery,76, +0x000000710069660c,AI_Query_CheckTimeType::doQuery,76,_ZN5uking5query13CheckTimeType7doQueryEv 0x0000007100696658,AI_Query_CheckTimeType::rtti1,204,_ZNK5uking5query13CheckTimeType27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100696724,AI_Query_CheckTimeType::rtti2,92,_ZNK5uking5query13CheckTimeType18getRuntimeTypeInfoEv 0x0000007100696780,AI_Query_CheckTypeOfOwnedHorseForEvent::ctor,48,_ZN5uking5query29CheckTypeOfOwnedHorseForEventC1ERKN4ksys3act2ai5Query7InitArgE @@ -41207,7 +41207,7 @@ 0x0000007100696e88,AI_Query_CheckWarpMist::ctor,48,_ZN5uking5query13CheckWarpMistC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100696eb8,AI_Query_CheckWarpMist::dtor,20,_ZN5uking5query13CheckWarpMistD1Ev 0x0000007100696ecc,AI_Query_CheckWarpMist::dtorDelete,52,_ZN5uking5query13CheckWarpMistD0Ev -0x0000007100696f00,AI_Query_CheckWarpMist::doQuery,44, +0x0000007100696f00,AI_Query_CheckWarpMist::doQuery,44,_ZN5uking5query13CheckWarpMist7doQueryEv 0x0000007100696f2c,AI_Query_CheckWarpMist::m10,4,_ZN5uking5query13CheckWarpMist10loadParamsERKN4evfl8QueryArgE 0x0000007100696f30,AI_Query_CheckWarpMist::loadParams,4,_ZN5uking5query13CheckWarpMist10loadParamsEv 0x0000007100696f34,AI_Query_CheckWarpMist::rtti1,204,_ZNK5uking5query13CheckWarpMist27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41263,7 +41263,7 @@ 0x0000007100698af0,AI_Query_ComparePlayerHeart::ctor,52,_ZN5uking5query18ComparePlayerHeartC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100698b24,AI_Query_ComparePlayerHeart::dtor,20,_ZN5uking5query18ComparePlayerHeartD1Ev 0x0000007100698b38,AI_Query_ComparePlayerHeart::dtorDelete,52,_ZN5uking5query18ComparePlayerHeartD0Ev -0x0000007100698b6c,AI_Query_ComparePlayerHeart::doQuery,64, +0x0000007100698b6c,AI_Query_ComparePlayerHeart::doQuery,64,_ZN5uking5query18ComparePlayerHeart7doQueryEv 0x0000007100698bac,AI_Query_ComparePlayerHeart::m10,64,_ZN5uking5query18ComparePlayerHeart10loadParamsERKN4evfl8QueryArgE 0x0000007100698bec,AI_Query_ComparePlayerHeart::loadParams,64,_ZN5uking5query18ComparePlayerHeart10loadParamsEv 0x0000007100698c2c,AI_Query_ComparePlayerHeart::rtti1,204,_ZNK5uking5query18ComparePlayerHeart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41271,7 +41271,7 @@ 0x0000007100698d54,AI_Query_ComparePlayerMaxHeart::ctor,52,_ZN5uking5query21ComparePlayerMaxHeartC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100698d88,AI_Query_ComparePlayerMaxHeart::dtor,20,_ZN5uking5query21ComparePlayerMaxHeartD1Ev 0x0000007100698d9c,AI_Query_ComparePlayerMaxHeart::dtorDelete,52,_ZN5uking5query21ComparePlayerMaxHeartD0Ev -0x0000007100698dd0,AI_Query_ComparePlayerMaxHeart::doQuery,68, +0x0000007100698dd0,AI_Query_ComparePlayerMaxHeart::doQuery,68,_ZN5uking5query21ComparePlayerMaxHeart7doQueryEv 0x0000007100698e14,AI_Query_ComparePlayerMaxHeart::m10,64,_ZN5uking5query21ComparePlayerMaxHeart10loadParamsERKN4evfl8QueryArgE 0x0000007100698e54,AI_Query_ComparePlayerMaxHeart::loadParams,64,_ZN5uking5query21ComparePlayerMaxHeart10loadParamsEv 0x0000007100698e94,AI_Query_ComparePlayerMaxHeart::rtti1,204,_ZNK5uking5query21ComparePlayerMaxHeart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41279,7 +41279,7 @@ 0x0000007100698fbc,AI_Query_ComparePlayerMaxStamina::ctor,52,_ZN5uking5query23ComparePlayerMaxStaminaC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100698ff0,AI_Query_ComparePlayerMaxStamina::dtor,20,_ZN5uking5query23ComparePlayerMaxStaminaD1Ev 0x0000007100699004,AI_Query_ComparePlayerMaxStamina::dtorDelete,52,_ZN5uking5query23ComparePlayerMaxStaminaD0Ev -0x0000007100699038,AI_Query_ComparePlayerMaxStamina::doQuery,108, +0x0000007100699038,AI_Query_ComparePlayerMaxStamina::doQuery,108,_ZN5uking5query23ComparePlayerMaxStamina7doQueryEv 0x00000071006990a4,AI_Query_ComparePlayerMaxStamina::m10,64,_ZN5uking5query23ComparePlayerMaxStamina10loadParamsERKN4evfl8QueryArgE 0x00000071006990e4,AI_Query_ComparePlayerMaxStamina::loadParams,64,_ZN5uking5query23ComparePlayerMaxStamina10loadParamsEv 0x0000007100699124,AI_Query_ComparePlayerMaxStamina::rtti1,204,_ZNK5uking5query23ComparePlayerMaxStamina27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41287,7 +41287,7 @@ 0x000000710069924c,AI_Query_ComparePlayerOriginalHeart::ctor,52,_ZN5uking5query26ComparePlayerOriginalHeartC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100699280,AI_Query_ComparePlayerOriginalHeart::dtor,20,_ZN5uking5query26ComparePlayerOriginalHeartD1Ev 0x0000007100699294,AI_Query_ComparePlayerOriginalHeart::dtorDelete,52,_ZN5uking5query26ComparePlayerOriginalHeartD0Ev -0x00000071006992c8,AI_Query_ComparePlayerOriginalHeart::doQuery,92, +0x00000071006992c8,AI_Query_ComparePlayerOriginalHeart::doQuery,92,_ZN5uking5query26ComparePlayerOriginalHeart7doQueryEv 0x0000007100699324,AI_Query_ComparePlayerOriginalHeart::m10,64,_ZN5uking5query26ComparePlayerOriginalHeart10loadParamsERKN4evfl8QueryArgE 0x0000007100699364,AI_Query_ComparePlayerOriginalHeart::loadParams,64,_ZN5uking5query26ComparePlayerOriginalHeart10loadParamsEv 0x00000071006993a4,AI_Query_ComparePlayerOriginalHeart::rtti1,204,_ZNK5uking5query26ComparePlayerOriginalHeart27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41295,7 +41295,7 @@ 0x00000071006994cc,AI_Query_CountFlag4::ctor,88,_ZN5uking5query10CountFlag4C1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100699524,AI_Query_CountFlag4::dtor,20,_ZN5uking5query10CountFlag4D1Ev 0x0000007100699538,AI_Query_CountFlag4::dtorDelete,52,_ZN5uking5query10CountFlag4D0Ev -0x000000710069956c,AI_Query_CountFlag4::doQuery,408, +0x000000710069956c,AI_Query_CountFlag4::doQuery,408,_ZN5uking5query10CountFlag47doQueryEv 0x0000007100699704,AI_Query_CountFlag4::m10,196,_ZN5uking5query10CountFlag410loadParamsERKN4evfl8QueryArgE 0x00000071006997c8,AI_Query_CountFlag4::loadParams,184,_ZN5uking5query10CountFlag410loadParamsEv 0x0000007100699880,AI_Query_CountFlag4::rtti1,204,_ZNK5uking5query10CountFlag427checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41303,7 +41303,7 @@ 0x00000071006999a8,AI_Query_EnemyDieCheck::ctor,48,_ZN5uking5query13EnemyDieCheckC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006999d8,AI_Query_EnemyDieCheck::dtor,20,_ZN5uking5query13EnemyDieCheckD1Ev 0x00000071006999ec,AI_Query_EnemyDieCheck::dtorDelete,52,_ZN5uking5query13EnemyDieCheckD0Ev -0x0000007100699a20,AI_Query_EnemyDieCheck::doQuery,20, +0x0000007100699a20,AI_Query_EnemyDieCheck::doQuery,20,_ZN5uking5query13EnemyDieCheck7doQueryEv 0x0000007100699a34,AI_Query_EnemyDieCheck::m10,4,_ZN5uking5query13EnemyDieCheck10loadParamsERKN4evfl8QueryArgE 0x0000007100699a38,AI_Query_EnemyDieCheck::loadParams,4,_ZN5uking5query13EnemyDieCheck10loadParamsEv 0x0000007100699a3c,AI_Query_EnemyDieCheck::rtti1,204,_ZNK5uking5query13EnemyDieCheck27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41311,7 +41311,7 @@ 0x0000007100699b64,AI_Query_EnemyRestLifeRate::ctor,52,_ZN5uking5query17EnemyRestLifeRateC1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100699b98,AI_Query_EnemyRestLifeRate::dtor,20,_ZN5uking5query17EnemyRestLifeRateD1Ev 0x0000007100699bac,AI_Query_EnemyRestLifeRate::dtorDelete,52,_ZN5uking5query17EnemyRestLifeRateD0Ev -0x0000007100699be0,AI_Query_EnemyRestLifeRate::doQuery,112, +0x0000007100699be0,AI_Query_EnemyRestLifeRate::doQuery,112,_ZN5uking5query17EnemyRestLifeRate7doQueryEv? 0x0000007100699c50,AI_Query_EnemyRestLifeRate::m10,64,_ZN5uking5query17EnemyRestLifeRate10loadParamsERKN4evfl8QueryArgE 0x0000007100699c90,AI_Query_EnemyRestLifeRate::loadParams,64,_ZN5uking5query17EnemyRestLifeRate10loadParamsEv 0x0000007100699cd0,AI_Query_EnemyRestLifeRate::rtti1,204,_ZNK5uking5query17EnemyRestLifeRate27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41319,31 +41319,31 @@ 0x0000007100699df8,AI_Query_GeneralChoice2::ctor,48,_ZN5uking5query14GeneralChoice2C1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100699e28,AI_Query_GeneralChoice2::dtor,20,_ZN5uking5query14GeneralChoice2D1Ev 0x0000007100699e3c,AI_Query_GeneralChoice2::dtorDelete,52,_ZN5uking5query14GeneralChoice2D0Ev -0x0000007100699e70,AI_Query_GeneralChoice2::doQuery,36, +0x0000007100699e70,AI_Query_GeneralChoice2::doQuery,36,_ZN5uking5query14GeneralChoice27doQueryEv 0x0000007100699e94,AI_Query_GeneralChoice2::rtti1,204,_ZNK5uking5query14GeneralChoice227checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100699f60,AI_Query_GeneralChoice2::rtti2,92,_ZNK5uking5query14GeneralChoice218getRuntimeTypeInfoEv 0x0000007100699fbc,AI_Query_GeneralChoice3::ctor,48,_ZN5uking5query14GeneralChoice3C1ERKN4ksys3act2ai5Query7InitArgE 0x0000007100699fec,AI_Query_GeneralChoice3::dtor,20,_ZN5uking5query14GeneralChoice3D1Ev 0x000000710069a000,AI_Query_GeneralChoice3::dtorDelete,52,_ZN5uking5query14GeneralChoice3D0Ev -0x000000710069a034,AI_Query_GeneralChoice3::doQuery,36, +0x000000710069a034,AI_Query_GeneralChoice3::doQuery,36,_ZN5uking5query14GeneralChoice37doQueryEv 0x000000710069a058,AI_Query_GeneralChoice3::rtti1,204,_ZNK5uking5query14GeneralChoice327checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069a124,AI_Query_GeneralChoice3::rtti2,92,_ZNK5uking5query14GeneralChoice318getRuntimeTypeInfoEv 0x000000710069a180,AI_Query_GeneralChoice4::ctor,48,_ZN5uking5query14GeneralChoice4C1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069a1b0,AI_Query_GeneralChoice4::dtor,20,_ZN5uking5query14GeneralChoice4D1Ev 0x000000710069a1c4,AI_Query_GeneralChoice4::dtorDelete,52,_ZN5uking5query14GeneralChoice4D0Ev -0x000000710069a1f8,AI_Query_GeneralChoice4::doQuery,36, +0x000000710069a1f8,AI_Query_GeneralChoice4::doQuery,36,_ZN5uking5query14GeneralChoice47doQueryEv 0x000000710069a21c,AI_Query_GeneralChoice4::rtti1,204,_ZNK5uking5query14GeneralChoice427checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069a2e8,AI_Query_GeneralChoice4::rtti2,92,_ZNK5uking5query14GeneralChoice418getRuntimeTypeInfoEv 0x000000710069a344,AI_Query_GeneralChoice8::ctor,48,_ZN5uking5query14GeneralChoice8C1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069a374,AI_Query_GeneralChoice8::dtor,20,_ZN5uking5query14GeneralChoice8D1Ev 0x000000710069a388,AI_Query_GeneralChoice8::dtorDelete,52,_ZN5uking5query14GeneralChoice8D0Ev -0x000000710069a3bc,AI_Query_GeneralChoice8::doQuery,36, +0x000000710069a3bc,AI_Query_GeneralChoice8::doQuery,36,_ZN5uking5query14GeneralChoice87doQueryEv 0x000000710069a3e0,AI_Query_GeneralChoice8::rtti1,204,_ZNK5uking5query14GeneralChoice827checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069a4ac,AI_Query_GeneralChoice8::rtti2,92,_ZNK5uking5query14GeneralChoice818getRuntimeTypeInfoEv 0x000000710069a508,AI_Query_HasArmorAlreadyDyed::ctor,48,_ZN5uking5query19HasArmorAlreadyDyedC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069a538,AI_Query_HasArmorAlreadyDyed::dtor,20,_ZN5uking5query19HasArmorAlreadyDyedD1Ev 0x000000710069a54c,AI_Query_HasArmorAlreadyDyed::dtorDelete,52,_ZN5uking5query19HasArmorAlreadyDyedD0Ev -0x000000710069a580,AI_Query_HasArmorAlreadyDyed::doQuery,44, +0x000000710069a580,AI_Query_HasArmorAlreadyDyed::doQuery,44,_ZN5uking5query19HasArmorAlreadyDyed7doQueryEv 0x000000710069a5ac,AI_Query_HasArmorAlreadyDyed::m10,4,_ZN5uking5query19HasArmorAlreadyDyed10loadParamsERKN4evfl8QueryArgE 0x000000710069a5b0,AI_Query_HasArmorAlreadyDyed::loadParams,4,_ZN5uking5query19HasArmorAlreadyDyed10loadParamsEv 0x000000710069a5b4,AI_Query_HasArmorAlreadyDyed::rtti1,204,_ZNK5uking5query19HasArmorAlreadyDyed27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41351,14 +41351,14 @@ 0x000000710069a6dc,AI_Query_HasArmorDye::ctor,48,_ZN5uking5query11HasArmorDyeC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069a70c,AI_Query_HasArmorDye::dtor,20,_ZN5uking5query11HasArmorDyeD1Ev 0x000000710069a720,AI_Query_HasArmorDye::dtorDelete,52,_ZN5uking5query11HasArmorDyeD0Ev -0x000000710069a754,AI_Query_HasArmorDye::doQuery,44, +0x000000710069a754,AI_Query_HasArmorDye::doQuery,44,_ZN5uking5query11HasArmorDye7doQueryEv 0x000000710069a780,AI_Query_HasArmorDye::rtti1,204,_ZNK5uking5query11HasArmorDye27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069a84c,AI_Query_HasArmorDye::rtti2,92,_ZNK5uking5query11HasArmorDye18getRuntimeTypeInfoEv 0x000000710069a8a8,AI_Query_HasCookResultInPorch::ctor,80,_ZN5uking5query20HasCookResultInPorchC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069a8f8,AI_Query_HasCookResultInPorch::dtor,20,_ZN5uking5query20HasCookResultInPorchD1Ev 0x000000710069a90c,AI_Query_HasCookResultInPorch::dtorDelete,52,_ZN5uking5query20HasCookResultInPorchD0Ev -0x000000710069a940,AI_Query_HasCookResultInPorch::doQuery,220, -0x000000710069aa1c,sub_710069AA1C,1524, +0x000000710069a940,AI_Query_HasCookResultInPorch::doQuery,220,_ZN5uking5query20HasCookResultInPorch7doQueryEv +0x000000710069aa1c,sub_710069AA1C,1524,_ZNK5uking5query20HasCookResultInPorch9getEffectEv 0x000000710069b010,AI_Query_HasCookResultInPorch::m10,140,_ZN5uking5query20HasCookResultInPorch10loadParamsERKN4evfl8QueryArgE 0x000000710069b09c,AI_Query_HasCookResultInPorch::loadParams,128,_ZN5uking5query20HasCookResultInPorch10loadParamsEv 0x000000710069b11c,AI_Query_HasCookResultInPorch::rtti1,204,_ZNK5uking5query20HasCookResultInPorch27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41366,13 +41366,13 @@ 0x000000710069b244,AI_Query_HasEnoughPayment::ctor,48,_ZN5uking5query16HasEnoughPaymentC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069b274,AI_Query_HasEnoughPayment::dtor,20,_ZN5uking5query16HasEnoughPaymentD1Ev 0x000000710069b288,AI_Query_HasEnoughPayment::dtorDelete,52,_ZN5uking5query16HasEnoughPaymentD0Ev -0x000000710069b2bc,AI_Query_HasEnoughPayment::doQuery,136, +0x000000710069b2bc,AI_Query_HasEnoughPayment::doQuery,136,_ZN5uking5query16HasEnoughPayment7doQueryEv 0x000000710069b344,AI_Query_HasEnoughPayment::rtti1,204,_ZNK5uking5query16HasEnoughPayment27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069b410,AI_Query_HasEnoughPayment::rtti2,92,_ZNK5uking5query16HasEnoughPayment18getRuntimeTypeInfoEv 0x000000710069b46c,AI_Query_HasItemDye::ctor,48,_ZN5uking5query10HasItemDyeC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069b49c,AI_Query_HasItemDye::dtor,20,_ZN5uking5query10HasItemDyeD1Ev 0x000000710069b4b0,AI_Query_HasItemDye::dtorDelete,52,_ZN5uking5query10HasItemDyeD0Ev -0x000000710069b4e4,AI_Query_HasItemDye::doQuery,40, +0x000000710069b4e4,AI_Query_HasItemDye::doQuery,40,_ZN5uking5query10HasItemDye7doQueryEv 0x000000710069b50c,AI_Query_HasItemDye::rtti1,204,_ZNK5uking5query10HasItemDye27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069b5d8,AI_Query_HasItemDye::rtti2,92,_ZNK5uking5query10HasItemDye18getRuntimeTypeInfoEv 0x000000710069b634,AI_Query_HasItemDyeSpecifiedColor::ctor,48,_ZN5uking5query24HasItemDyeSpecifiedColorC1ERKN4ksys3act2ai5Query7InitArgE @@ -41384,7 +41384,7 @@ 0x000000710069b808,AI_Query_HasPorchArrow::ctor,52,_ZN5uking5query13HasPorchArrowC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069b83c,AI_Query_HasPorchArrow::dtor,20,_ZN5uking5query13HasPorchArrowD1Ev 0x000000710069b850,AI_Query_HasPorchArrow::dtorDelete,52,_ZN5uking5query13HasPorchArrowD0Ev -0x000000710069b884,AI_Query_HasPorchArrow::doQuery,216, +0x000000710069b884,AI_Query_HasPorchArrow::doQuery,216,_ZN5uking5query13HasPorchArrow7doQueryEv 0x000000710069b95c,AI_Query_HasPorchArrow::m10,64,_ZN5uking5query13HasPorchArrow10loadParamsERKN4evfl8QueryArgE 0x000000710069b99c,AI_Query_HasPorchArrow::loadParams,64,_ZN5uking5query13HasPorchArrow10loadParamsEv 0x000000710069b9dc,AI_Query_HasPorchArrow::rtti1,204,_ZNK5uking5query13HasPorchArrow27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41392,7 +41392,7 @@ 0x000000710069bb04,AI_Query_HasPorchItem::ctor,76,_ZN5uking5query12HasPorchItemC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069bb50,AI_Query_HasPorchItem::dtor,20,_ZN5uking5query12HasPorchItemD1Ev 0x000000710069bb64,AI_Query_HasPorchItem::dtorDelete,52,_ZN5uking5query12HasPorchItemD0Ev -0x000000710069bb98,AI_Query_HasPorchItem::doQuery,52, +0x000000710069bb98,AI_Query_HasPorchItem::doQuery,52,_ZN5uking5query12HasPorchItem7doQueryEv 0x000000710069bbcc,AI_Query_HasPorchItem::m10,112,_ZN5uking5query12HasPorchItem10loadParamsERKN4evfl8QueryArgE 0x000000710069bc3c,AI_Query_HasPorchItem::loadParams,100,_ZN5uking5query12HasPorchItem10loadParamsEv 0x000000710069bca0,AI_Query_HasPorchItem::rtti1,204,_ZNK5uking5query12HasPorchItem27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41400,7 +41400,7 @@ 0x000000710069bdc8,AI_Query_HasPorchItemByCategory::ctor,52,_ZN5uking5query22HasPorchItemByCategoryC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069bdfc,AI_Query_HasPorchItemByCategory::dtor,20,_ZN5uking5query22HasPorchItemByCategoryD1Ev 0x000000710069be10,AI_Query_HasPorchItemByCategory::dtorDelete,52,_ZN5uking5query22HasPorchItemByCategoryD0Ev -0x000000710069be44,AI_Query_HasPorchItemByCategory::doQuery,452, +0x000000710069be44,AI_Query_HasPorchItemByCategory::doQuery,452,_ZN5uking5query22HasPorchItemByCategory7doQueryEv 0x000000710069c008,AI_Query_HasPorchItemByCategory::m10,112,_ZN5uking5query22HasPorchItemByCategory10loadParamsERKN4evfl8QueryArgE 0x000000710069c078,AI_Query_HasPorchItemByCategory::loadParams,100,_ZN5uking5query22HasPorchItemByCategory10loadParamsEv 0x000000710069c0dc,AI_Query_HasPorchItemByCategory::rtti1,204,_ZNK5uking5query22HasPorchItemByCategory27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41408,7 +41408,7 @@ 0x000000710069c204,AI_Query_HasPouchItemByPouchCategory::ctor,52,_ZN5uking5query27HasPouchItemByPouchCategoryC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069c238,AI_Query_HasPouchItemByPouchCategory::dtor,20,_ZN5uking5query27HasPouchItemByPouchCategoryD1Ev 0x000000710069c24c,AI_Query_HasPouchItemByPouchCategory::dtorDelete,52,_ZN5uking5query27HasPouchItemByPouchCategoryD0Ev -0x000000710069c280,AI_Query_HasPouchItemByPouchCategory::doQuery,232, +0x000000710069c280,AI_Query_HasPouchItemByPouchCategory::doQuery,232,_ZN5uking5query27HasPouchItemByPouchCategory7doQueryEv 0x000000710069c368,AI_Query_HasPouchItemByPouchCategory::m10,112,_ZN5uking5query27HasPouchItemByPouchCategory10loadParamsERKN4evfl8QueryArgE 0x000000710069c3d8,AI_Query_HasPouchItemByPouchCategory::loadParams,100,_ZN5uking5query27HasPouchItemByPouchCategory10loadParamsEv 0x000000710069c43c,AI_Query_HasPouchItemByPouchCategory::rtti1,204,_ZNK5uking5query27HasPouchItemByPouchCategory27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41416,7 +41416,7 @@ 0x000000710069c564,AI_Query_HasSetItem::ctor,76,_ZN5uking5query10HasSetItemC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069c5b0,AI_Query_HasSetItem::dtor,20,_ZN5uking5query10HasSetItemD1Ev 0x000000710069c5c4,AI_Query_HasSetItem::dtorDelete,52,_ZN5uking5query10HasSetItemD0Ev -0x000000710069c5f8,AI_Query_HasSetItem::doQuery,200, +0x000000710069c5f8,AI_Query_HasSetItem::doQuery,200,_ZN5uking5query10HasSetItem7doQueryEv? 0x000000710069c6c0,AI_Query_HasSetItem::m10,112,_ZN5uking5query10HasSetItem10loadParamsERKN4evfl8QueryArgE 0x000000710069c730,AI_Query_HasSetItem::loadParams,100,_ZN5uking5query10HasSetItem10loadParamsEv 0x000000710069c794,AI_Query_HasSetItem::rtti1,204,_ZNK5uking5query10HasSetItem27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41432,7 +41432,7 @@ 0x000000710069cf34,AI_Query_IsAppAlreadyExchanged::ctor,48,_ZN5uking5query21IsAppAlreadyExchangedC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069cf64,AI_Query_IsAppAlreadyExchanged::dtor,20,_ZN5uking5query21IsAppAlreadyExchangedD1Ev 0x000000710069cf78,AI_Query_IsAppAlreadyExchanged::dtorDelete,52,_ZN5uking5query21IsAppAlreadyExchangedD0Ev -0x000000710069cfac,AI_Query_IsAppAlreadyExchanged::doQuery,8, +0x000000710069cfac,AI_Query_IsAppAlreadyExchanged::doQuery,8,_ZN5uking5query21IsAppAlreadyExchanged7doQueryEv 0x000000710069cfb4,AI_Query_IsAppAlreadyExchanged::rtti1,204,_ZNK5uking5query21IsAppAlreadyExchanged27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069d080,AI_Query_IsAppAlreadyExchanged::rtti2,92,_ZNK5uking5query21IsAppAlreadyExchanged18getRuntimeTypeInfoEv 0x000000710069d0dc,AI_Query_IsArriveAnchorForRain::ctor,48,_ZN5uking5query21IsArriveAnchorForRainC1ERKN4ksys3act2ai5Query7InitArgE @@ -41452,7 +41452,7 @@ 0x000000710069d700,AI_Query_isBloodyMoonTrig::ctor,48,_ZN5uking5query16IsBloodyMoonTrigC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069d730,AI_Query_isBloodyMoonTrig::dtor,20,_ZN5uking5query16IsBloodyMoonTrigD1Ev 0x000000710069d744,AI_Query_isBloodyMoonTrig::dtorDelete,52,_ZN5uking5query16IsBloodyMoonTrigD0Ev -0x000000710069d778,AI_Query_isBloodyMoonTrig::doQuery,28, +0x000000710069d778,AI_Query_isBloodyMoonTrig::doQuery,28,_ZN5uking5query16IsBloodyMoonTrig7doQueryEv 0x000000710069d794,AI_Query_isBloodyMoonTrig::m10,4,_ZN5uking5query16IsBloodyMoonTrig10loadParamsERKN4evfl8QueryArgE 0x000000710069d798,AI_Query_isBloodyMoonTrig::loadParams,4,_ZN5uking5query16IsBloodyMoonTrig10loadParamsEv 0x000000710069d79c,AI_Query_isBloodyMoonTrig::rtti1,204,_ZNK5uking5query16IsBloodyMoonTrig27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41460,7 +41460,7 @@ 0x000000710069d8c4,AI_Query_IsCurrentAocFieldStage::ctor,48,_ZN5uking5query22IsCurrentAocFieldStageC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069d8f4,AI_Query_IsCurrentAocFieldStage::dtor,20,_ZN5uking5query22IsCurrentAocFieldStageD1Ev 0x000000710069d908,AI_Query_IsCurrentAocFieldStage::dtorDelete,52,_ZN5uking5query22IsCurrentAocFieldStageD0Ev -0x000000710069d93c,AI_Query_IsCurrentAocFieldStage::doQuery,16, +0x000000710069d93c,AI_Query_IsCurrentAocFieldStage::doQuery,16,_ZN5uking5query22IsCurrentAocFieldStage7doQueryEv 0x000000710069d94c,AI_Query_IsCurrentAocFieldStage::m10,4,_ZN5uking5query22IsCurrentAocFieldStage10loadParamsERKN4evfl8QueryArgE 0x000000710069d950,AI_Query_IsCurrentAocFieldStage::loadParams,4,_ZN5uking5query22IsCurrentAocFieldStage10loadParamsEv 0x000000710069d954,AI_Query_IsCurrentAocFieldStage::rtti1,204,_ZNK5uking5query22IsCurrentAocFieldStage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41468,7 +41468,7 @@ 0x000000710069da7c,AI_Query_IsCurrentCDungeonStage::ctor,48,_ZN5uking5query22IsCurrentCDungeonStageC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069daac,AI_Query_IsCurrentCDungeonStage::dtor,20,_ZN5uking5query22IsCurrentCDungeonStageD1Ev 0x000000710069dac0,AI_Query_IsCurrentCDungeonStage::dtorDelete,52,_ZN5uking5query22IsCurrentCDungeonStageD0Ev -0x000000710069daf4,AI_Query_IsCurrentCDungeonStage::doQuery,16, +0x000000710069daf4,AI_Query_IsCurrentCDungeonStage::doQuery,16,_ZN5uking5query22IsCurrentCDungeonStage7doQueryEv 0x000000710069db04,AI_Query_IsCurrentCDungeonStage::m10,4,_ZN5uking5query22IsCurrentCDungeonStage10loadParamsERKN4evfl8QueryArgE 0x000000710069db08,AI_Query_IsCurrentCDungeonStage::loadParams,4,_ZN5uking5query22IsCurrentCDungeonStage10loadParamsEv 0x000000710069db0c,AI_Query_IsCurrentCDungeonStage::rtti1,204,_ZNK5uking5query22IsCurrentCDungeonStage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41476,7 +41476,7 @@ 0x000000710069dc34,AI_Query_IsCurrentMainFieldDungeonStage::ctor,48,_ZN5uking5query30IsCurrentMainFieldDungeonStageC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069dc64,AI_Query_IsCurrentMainFieldDungeonStage::dtor,20,_ZN5uking5query30IsCurrentMainFieldDungeonStageD1Ev 0x000000710069dc78,AI_Query_IsCurrentMainFieldDungeonStage::dtorDelete,52,_ZN5uking5query30IsCurrentMainFieldDungeonStageD0Ev -0x000000710069dcac,AI_Query_IsCurrentMainFieldDungeonStage::doQuery,16, +0x000000710069dcac,AI_Query_IsCurrentMainFieldDungeonStage::doQuery,16,_ZN5uking5query30IsCurrentMainFieldDungeonStage7doQueryEv 0x000000710069dcbc,AI_Query_IsCurrentMainFieldDungeonStage::m10,4,_ZN5uking5query30IsCurrentMainFieldDungeonStage10loadParamsERKN4evfl8QueryArgE 0x000000710069dcc0,AI_Query_IsCurrentMainFieldDungeonStage::loadParams,4,_ZN5uking5query30IsCurrentMainFieldDungeonStage10loadParamsEv 0x000000710069dcc4,AI_Query_IsCurrentMainFieldDungeonStage::rtti1,204,_ZNK5uking5query30IsCurrentMainFieldDungeonStage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41484,7 +41484,7 @@ 0x000000710069ddec,AI_Query_IsCurrentMainFieldStage::ctor,48,_ZN5uking5query23IsCurrentMainFieldStageC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069de1c,AI_Query_IsCurrentMainFieldStage::dtor,20,_ZN5uking5query23IsCurrentMainFieldStageD1Ev 0x000000710069de30,AI_Query_IsCurrentMainFieldStage::dtorDelete,52,_ZN5uking5query23IsCurrentMainFieldStageD0Ev -0x000000710069de64,AI_Query_IsCurrentMainFieldStage::doQuery,144, +0x000000710069de64,AI_Query_IsCurrentMainFieldStage::doQuery,144,_ZN5uking5query23IsCurrentMainFieldStage7doQueryEv 0x000000710069def4,AI_Query_IsCurrentMainFieldStage::m10,4,_ZN5uking5query23IsCurrentMainFieldStage10loadParamsERKN4evfl8QueryArgE 0x000000710069def8,AI_Query_IsCurrentMainFieldStage::loadParams,4,_ZN5uking5query23IsCurrentMainFieldStage10loadParamsEv 0x000000710069defc,AI_Query_IsCurrentMainFieldStage::rtti1,204,_ZNK5uking5query23IsCurrentMainFieldStage27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41538,7 +41538,7 @@ 0x000000710069eb7c,AI_Query_IsItemInStock::ctor,48,_ZN5uking5query13IsItemInStockC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069ebac,AI_Query_IsItemInStock::dtor,20,_ZN5uking5query13IsItemInStockD1Ev 0x000000710069ebc0,AI_Query_IsItemInStock::dtorDelete,52,_ZN5uking5query13IsItemInStockD0Ev -0x000000710069ebf4,AI_Query_IsItemInStock::doQuery,132, +0x000000710069ebf4,AI_Query_IsItemInStock::doQuery,132,_ZN5uking5query13IsItemInStock7doQueryEv 0x000000710069ec78,AI_Query_IsItemInStock::rtti1,204,_ZNK5uking5query13IsItemInStock27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x000000710069ed44,AI_Query_IsItemInStock::rtti2,92,_ZNK5uking5query13IsItemInStock18getRuntimeTypeInfoEv 0x000000710069eda0,AI_Query_IsNeedEquipWeapon::ctor,48,_ZN5uking5query17IsNeedEquipWeaponC1ERKN4ksys3act2ai5Query7InitArgE @@ -41576,7 +41576,7 @@ 0x000000710069fa48,AI_Query_IsOnInstEventFlag::ctor,48,_ZN5uking5query17IsOnInstEventFlagC1ERKN4ksys3act2ai5Query7InitArgE 0x000000710069fa78,AI_Query_IsOnInstEventFlag::dtor,20,_ZN5uking5query17IsOnInstEventFlagD1Ev 0x000000710069fa8c,AI_Query_IsOnInstEventFlag::dtorDelete,52,_ZN5uking5query17IsOnInstEventFlagD0Ev -0x000000710069fac0,AI_Query_IsOnInstEventFlag::doQuery,16, +0x000000710069fac0,AI_Query_IsOnInstEventFlag::doQuery,16,_ZN5uking5query17IsOnInstEventFlag7doQueryEv 0x000000710069fad0,AI_Query_IsOnInstEventFlag::m10,4,_ZN5uking5query17IsOnInstEventFlag10loadParamsERKN4evfl8QueryArgE 0x000000710069fad4,AI_Query_IsOnInstEventFlag::loadParams,4,_ZN5uking5query17IsOnInstEventFlag10loadParamsEv 0x000000710069fad8,AI_Query_IsOnInstEventFlag::rtti1,204,_ZNK5uking5query17IsOnInstEventFlag27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41620,7 +41620,7 @@ 0x00000071006a0b0c,AI_Query_IsSuccessEndLastDemoAction::ctor,48,_ZN5uking5query26IsSuccessEndLastDemoActionC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006a0b3c,AI_Query_IsSuccessEndLastDemoAction::dtor,20,_ZN5uking5query26IsSuccessEndLastDemoActionD1Ev 0x00000071006a0b50,AI_Query_IsSuccessEndLastDemoAction::dtorDelete,52,_ZN5uking5query26IsSuccessEndLastDemoActionD0Ev -0x00000071006a0b84,AI_Query_IsSuccessEndLastDemoAction::doQuery,72, +0x00000071006a0b84,AI_Query_IsSuccessEndLastDemoAction::doQuery,72,_ZN5uking5query26IsSuccessEndLastDemoAction7doQueryEv 0x00000071006a0bcc,AI_Query_IsSuccessEndLastDemoAction::m10,4,_ZN5uking5query26IsSuccessEndLastDemoAction10loadParamsERKN4evfl8QueryArgE 0x00000071006a0bd0,AI_Query_IsSuccessEndLastDemoAction::loadParams,4,_ZN5uking5query26IsSuccessEndLastDemoAction10loadParamsEv 0x00000071006a0bd4,AI_Query_IsSuccessEndLastDemoAction::rtti1,204,_ZNK5uking5query26IsSuccessEndLastDemoAction27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41628,7 +41628,7 @@ 0x00000071006a0cfc,AI_Query_IsTerrorDisappeared::ctor,48,_ZN5uking5query19IsTerrorDisappearedC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006a0d2c,AI_Query_IsTerrorDisappeared::dtor,20,_ZN5uking5query19IsTerrorDisappearedD1Ev 0x00000071006a0d40,AI_Query_IsTerrorDisappeared::dtorDelete,52,_ZN5uking5query19IsTerrorDisappearedD0Ev -0x00000071006a0d74,AI_Query_IsTerrorDisappeared::doQuery,8, +0x00000071006a0d74,AI_Query_IsTerrorDisappeared::doQuery,8,_ZN5uking5query19IsTerrorDisappeared7doQueryEv 0x00000071006a0d7c,AI_Query_IsTerrorDisappeared::rtti1,204,_ZNK5uking5query19IsTerrorDisappeared27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071006a0e48,AI_Query_IsTerrorDisappeared::rtti2,92,_ZNK5uking5query19IsTerrorDisappeared18getRuntimeTypeInfoEv 0x00000071006a0ea4,AI_Query_IsWeaponDrawn::ctor,48,_ZN5uking5query13IsWeaponDrawnC1ERKN4ksys3act2ai5Query7InitArgE @@ -41694,7 +41694,7 @@ 0x00000071006a2854,AI_Query_WhatDayOfTheWeek::ctor,48,_ZN5uking5query16WhatDayOfTheWeekC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006a2884,AI_Query_WhatDayOfTheWeek::dtor,20,_ZN5uking5query16WhatDayOfTheWeekD1Ev 0x00000071006a2898,AI_Query_WhatDayOfTheWeek::dtorDelete,52,_ZN5uking5query16WhatDayOfTheWeekD0Ev -0x00000071006a28cc,AI_Query_WhatDayOfTheWeek::doQuery,72, +0x00000071006a28cc,AI_Query_WhatDayOfTheWeek::doQuery,72,_ZN5uking5query16WhatDayOfTheWeek7doQueryEv 0x00000071006a2914,AI_Query_WhatDayOfTheWeek::m10,4,_ZN5uking5query16WhatDayOfTheWeek10loadParamsERKN4evfl8QueryArgE 0x00000071006a2918,AI_Query_WhatDayOfTheWeek::loadParams,4,_ZN5uking5query16WhatDayOfTheWeek10loadParamsEv 0x00000071006a291c,AI_Query_WhatDayOfTheWeek::rtti1,204,_ZNK5uking5query16WhatDayOfTheWeek27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41702,7 +41702,7 @@ 0x00000071006a2a44,AI_Query_WhatDungeonType::ctor,48,_ZN5uking5query15WhatDungeonTypeC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006a2a74,AI_Query_WhatDungeonType::dtor,20,_ZN5uking5query15WhatDungeonTypeD1Ev 0x00000071006a2a88,AI_Query_WhatDungeonType::dtorDelete,52,_ZN5uking5query15WhatDungeonTypeD0Ev -0x00000071006a2abc,AI_Query_WhatDungeonType::doQuery,36, +0x00000071006a2abc,AI_Query_WhatDungeonType::doQuery,36,_ZN5uking5query15WhatDungeonType7doQueryEv 0x00000071006a2ae0,AI_Query_WhatDungeonType::m10,4,_ZN5uking5query15WhatDungeonType10loadParamsERKN4evfl8QueryArgE 0x00000071006a2ae4,AI_Query_WhatDungeonType::loadParams,4,_ZN5uking5query15WhatDungeonType10loadParamsEv 0x00000071006a2ae8,AI_Query_WhatDungeonType::rtti1,204,_ZNK5uking5query15WhatDungeonType27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE @@ -41710,7 +41710,7 @@ 0x00000071006a2c10,AI_Query_WhatMoonName::ctor,48,_ZN5uking5query12WhatMoonNameC1ERKN4ksys3act2ai5Query7InitArgE 0x00000071006a2c40,AI_Query_WhatMoonName::dtor,20,_ZN5uking5query12WhatMoonNameD1Ev 0x00000071006a2c54,AI_Query_WhatMoonName::dtorDelete,52,_ZN5uking5query12WhatMoonNameD0Ev -0x00000071006a2c88,AI_Query_WhatMoonName::doQuery,60, +0x00000071006a2c88,AI_Query_WhatMoonName::doQuery,60,_ZN5uking5query12WhatMoonName7doQueryEv 0x00000071006a2cc4,AI_Query_WhatMoonName::m10,4,_ZN5uking5query12WhatMoonName10loadParamsERKN4evfl8QueryArgE 0x00000071006a2cc8,AI_Query_WhatMoonName::loadParams,4,_ZN5uking5query12WhatMoonName10loadParamsEv 0x00000071006a2ccc,AI_Query_WhatMoonName::rtti1,204,_ZNK5uking5query12WhatMoonName27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE diff --git a/src/Game/AI/Query/queryCheckHorseCustomizeSelect.cpp b/src/Game/AI/Query/queryCheckHorseCustomizeSelect.cpp index 6244cffe..37ac8f43 100644 --- a/src/Game/AI/Query/queryCheckHorseCustomizeSelect.cpp +++ b/src/Game/AI/Query/queryCheckHorseCustomizeSelect.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckHorseCustomizeSelect.h" #include +#include "KingSystem/GameData/gdtCommonFlagsUtils.h" namespace uking::query { @@ -8,9 +9,15 @@ CheckHorseCustomizeSelect::CheckHorseCustomizeSelect(const InitArg& arg) CheckHorseCustomizeSelect::~CheckHorseCustomizeSelect() = default; -// FIXME: implement int CheckHorseCustomizeSelect::doQuery() { - return -1; + if (ksys::gdt::getFlag_Shop_IsDecide()) { + s32 state = ksys::gdt::getFlag_Shop_CurrentItemState(); + if (state == 0) + return 0; + if (state == 0xF) + return 1; + } + return 2; } void CheckHorseCustomizeSelect::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckHorseTakenOut.cpp b/src/Game/AI/Query/queryCheckHorseTakenOut.cpp index fbaa8bed..d1b25b35 100644 --- a/src/Game/AI/Query/queryCheckHorseTakenOut.cpp +++ b/src/Game/AI/Query/queryCheckHorseTakenOut.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckHorseTakenOut.h" #include +#include "KingSystem/GameData/gdtSpecialFlags.h" namespace uking::query { @@ -7,9 +8,13 @@ CheckHorseTakenOut::CheckHorseTakenOut(const InitArg& arg) : ksys::act::ai::Quer CheckHorseTakenOut::~CheckHorseTakenOut() = default; -// FIXME: implement int CheckHorseTakenOut::doQuery() { - return -1; + s32 active = ksys::gdt::getS32ByKey("Horse_ActiveIndex"); + if (active < 0) + return 2; + + s32 selected = ksys::gdt::getS32ByKey("Horse_SelectedIndex"); + return active == selected; } void CheckHorseTakenOut::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckManufactResult.cpp b/src/Game/AI/Query/queryCheckManufactResult.cpp index 25bdf663..d87c84de 100644 --- a/src/Game/AI/Query/queryCheckManufactResult.cpp +++ b/src/Game/AI/Query/queryCheckManufactResult.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckManufactResult.h" #include +#include "KingSystem/GameData/gdtCommonFlagsUtils.h" namespace uking::query { @@ -7,9 +8,15 @@ CheckManufactResult::CheckManufactResult(const InitArg& arg) : ksys::act::ai::Qu CheckManufactResult::~CheckManufactResult() = default; -// FIXME: implement +static constexpr s32 sManufactResults[8] = {0, 6, 4, 6, 1, 2, 3, 5}; + int CheckManufactResult::doQuery() { - return -1; + if (ksys::gdt::getFlag_Shop_IsDecide()) { + s32 state = ksys::gdt::getFlag_Shop_CurrentItemState(); + if (state < 8 && state >= 0) + return sManufactResults[state]; + } + return 6; } void CheckManufactResult::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckPorchInItem.cpp b/src/Game/AI/Query/queryCheckPorchInItem.cpp index e848e0bf..585d5b7b 100644 --- a/src/Game/AI/Query/queryCheckPorchInItem.cpp +++ b/src/Game/AI/Query/queryCheckPorchInItem.cpp @@ -1,5 +1,7 @@ #include "Game/AI/Query/queryCheckPorchInItem.h" #include +#include "KingSystem/ActorSystem/actActorUtil.h" +#include "KingSystem/ActorSystem/actTag.h" namespace uking::query { @@ -7,9 +9,8 @@ CheckPorchInItem::CheckPorchInItem(const InitArg& arg) : ksys::act::ai::Query(ar CheckPorchInItem::~CheckPorchInItem() = default; -// FIXME: implement int CheckPorchInItem::doQuery() { - return -1; + return ksys::act::hasTag(mPorchItemName, ksys::act::tags::CanGetPouch); } void CheckPorchInItem::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryCheckProConUse.cpp b/src/Game/AI/Query/queryCheckProConUse.cpp index 8a0fd1f2..ce740b77 100644 --- a/src/Game/AI/Query/queryCheckProConUse.cpp +++ b/src/Game/AI/Query/queryCheckProConUse.cpp @@ -7,9 +7,8 @@ CheckProConUse::CheckProConUse(const InitArg& arg) : ksys::act::ai::Query(arg) { CheckProConUse::~CheckProConUse() = default; -// FIXME: implement int CheckProConUse::doQuery() { - return -1; + return 0; } void CheckProConUse::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckRupee.cpp b/src/Game/AI/Query/queryCheckRupee.cpp index c0ae87b3..59dcb572 100644 --- a/src/Game/AI/Query/queryCheckRupee.cpp +++ b/src/Game/AI/Query/queryCheckRupee.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckRupee.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,12 @@ CheckRupee::CheckRupee(const InitArg& arg) : ksys::act::ai::Query(arg) {} CheckRupee::~CheckRupee() = default; -// FIXME: implement +// NON_MATCHING int CheckRupee::doQuery() { - return -1; + s32 value = 0; + if (!ksys::gdt::Manager::instance()->getParamBypassPerm().get().getS32(&value, "CurrentRupee")) + return 0; + return value >= *mValue; } void CheckRupee::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryCheckSellResult.cpp b/src/Game/AI/Query/queryCheckSellResult.cpp index db9a2718..b68dd89a 100644 --- a/src/Game/AI/Query/queryCheckSellResult.cpp +++ b/src/Game/AI/Query/queryCheckSellResult.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckSellResult.h" #include +#include "KingSystem/GameData/gdtCommonFlagsUtils.h" namespace uking::query { @@ -7,9 +8,17 @@ CheckSellResult::CheckSellResult(const InitArg& arg) : ksys::act::ai::Query(arg) CheckSellResult::~CheckSellResult() = default; -// FIXME: implement int CheckSellResult::doQuery() { - return -1; + if (ksys::gdt::getFlag_Shop_IsDecide()) { + s32 flag = ksys::gdt::getFlag_Shop_CurrentItemState(); + if (flag == 0) + return 0; + if (flag == 0xD) + return 1; + if (flag == 0xE) + return 2; + } + return 3; } void CheckSellResult::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckShopSelectedItemName.cpp b/src/Game/AI/Query/queryCheckShopSelectedItemName.cpp index 85a4d04b..e78a3009 100644 --- a/src/Game/AI/Query/queryCheckShopSelectedItemName.cpp +++ b/src/Game/AI/Query/queryCheckShopSelectedItemName.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckShopSelectedItemName.h" #include +#include "KingSystem/GameData/gdtSpecialFlags.h" namespace uking::query { @@ -8,9 +9,10 @@ CheckShopSelectedItemName::CheckShopSelectedItemName(const InitArg& arg) CheckShopSelectedItemName::~CheckShopSelectedItemName() = default; -// FIXME: implement int CheckShopSelectedItemName::doQuery() { - return -1; + const char* result = &sead::SafeString::cNullChar; + ksys::gdt::getStr64ByKey(&result, "Shop_SelectItemName"); + return mPorchItemName == result; } void CheckShopSelectedItemName::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryCheckTimeType.cpp b/src/Game/AI/Query/queryCheckTimeType.cpp index b66d2c06..287059b1 100644 --- a/src/Game/AI/Query/queryCheckTimeType.cpp +++ b/src/Game/AI/Query/queryCheckTimeType.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckTimeType.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,19 @@ CheckTimeType::CheckTimeType(const InitArg& arg) : ksys::act::ai::Query(arg) {} CheckTimeType::~CheckTimeType() = default; -// FIXME: implement int CheckTimeType::doQuery() { - return -1; + auto* wm = ksys::world::Manager::instance(); + if (wm == nullptr) + return 0; + + auto* tm = wm->getTimeMgr(); + if (tm == nullptr) + return 0; + + u32 division = tm->getTimeDivision(); + if (division < 8) + return division; + return 0; } void CheckTimeType::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryCheckWarpMist.cpp b/src/Game/AI/Query/queryCheckWarpMist.cpp index 7f129694..e6533cba 100644 --- a/src/Game/AI/Query/queryCheckWarpMist.cpp +++ b/src/Game/AI/Query/queryCheckWarpMist.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckWarpMist.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,8 @@ CheckWarpMist::CheckWarpMist(const InitArg& arg) : ksys::act::ai::Query(arg) {} CheckWarpMist::~CheckWarpMist() = default; -// FIXME: implement int CheckWarpMist::doQuery() { - return -1; + return ksys::world::Manager::instance()->getEnvMgr()->getWarpMistIntensity() > 0.0f; } void CheckWarpMist::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryComparePlayerHeart.cpp b/src/Game/AI/Query/queryComparePlayerHeart.cpp index 10b81ba2..b7742ad6 100644 --- a/src/Game/AI/Query/queryComparePlayerHeart.cpp +++ b/src/Game/AI/Query/queryComparePlayerHeart.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryComparePlayerHeart.h" #include +#include "KingSystem/ActorSystem/actPlayerInfo.h" namespace uking::query { @@ -7,9 +8,12 @@ ComparePlayerHeart::ComparePlayerHeart(const InitArg& arg) : ksys::act::ai::Quer ComparePlayerHeart::~ComparePlayerHeart() = default; -// FIXME: implement int ComparePlayerHeart::doQuery() { - return -1; + auto* pi = ksys::act::PlayerInfo::instance(); + if (pi == nullptr) + return 0; + + return pi->getLife() >= *mThreshold; } void ComparePlayerHeart::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryComparePlayerMaxHeart.cpp b/src/Game/AI/Query/queryComparePlayerMaxHeart.cpp index 08b49cb7..4482a6f7 100644 --- a/src/Game/AI/Query/queryComparePlayerMaxHeart.cpp +++ b/src/Game/AI/Query/queryComparePlayerMaxHeart.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryComparePlayerMaxHeart.h" #include +#include "KingSystem/ActorSystem/actPlayerInfo.h" namespace uking::query { @@ -7,9 +8,13 @@ ComparePlayerMaxHeart::ComparePlayerMaxHeart(const InitArg& arg) : ksys::act::ai ComparePlayerMaxHeart::~ComparePlayerMaxHeart() = default; -// FIXME: implement int ComparePlayerMaxHeart::doQuery() { - return -1; + auto* pi = ksys::act::PlayerInfo::instance(); + if (pi == nullptr) + return 0; + + s32 full_hearts = pi->getMaxHearts() / 4; + return full_hearts >= *mThreshold; } void ComparePlayerMaxHeart::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryComparePlayerMaxStamina.cpp b/src/Game/AI/Query/queryComparePlayerMaxStamina.cpp index 44706d71..fa2c8c54 100644 --- a/src/Game/AI/Query/queryComparePlayerMaxStamina.cpp +++ b/src/Game/AI/Query/queryComparePlayerMaxStamina.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryComparePlayerMaxStamina.h" #include +#include "KingSystem/ActorSystem/actPlayerInfo.h" namespace uking::query { @@ -7,9 +8,16 @@ ComparePlayerMaxStamina::ComparePlayerMaxStamina(const InitArg& arg) : ksys::act ComparePlayerMaxStamina::~ComparePlayerMaxStamina() = default; -// FIXME: implement int ComparePlayerMaxStamina::doQuery() { - return -1; + auto* pi = ksys::act::PlayerInfo::instance(); + if (pi == nullptr) + return 0; + + s32 stamina = pi->getMaxStamina(); + if (stamina % 200 <= 0) + return stamina / 200 >= *mThreshold; + else + return stamina / 200 + 1 >= *mThreshold; } void ComparePlayerMaxStamina::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryComparePlayerOriginalHeart.cpp b/src/Game/AI/Query/queryComparePlayerOriginalHeart.cpp index 8c0422dd..a107699a 100644 --- a/src/Game/AI/Query/queryComparePlayerOriginalHeart.cpp +++ b/src/Game/AI/Query/queryComparePlayerOriginalHeart.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryComparePlayerOriginalHeart.h" #include +#include "KingSystem/ActorSystem/actPlayerInfo.h" namespace uking::query { @@ -8,9 +9,20 @@ ComparePlayerOriginalHeart::ComparePlayerOriginalHeart(const InitArg& arg) ComparePlayerOriginalHeart::~ComparePlayerOriginalHeart() = default; -// FIXME: implement int ComparePlayerOriginalHeart::doQuery() { - return -1; + using PlayerInfo = ksys::act::PlayerInfo; + + if (PlayerInfo::instance() == nullptr) + return 0; + + s32 life = PlayerInfo::instance()->getLife(); + s32 hearts = PlayerInfo::instance()->getMaxHearts(); + s32 compare; + if (life <= hearts) + compare = life; + else + compare = hearts; + return compare >= *mThreshold; } void ComparePlayerOriginalHeart::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryCountFlag4.cpp b/src/Game/AI/Query/queryCountFlag4.cpp index 0b7210b4..e3a163e3 100644 --- a/src/Game/AI/Query/queryCountFlag4.cpp +++ b/src/Game/AI/Query/queryCountFlag4.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCountFlag4.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,30 @@ CountFlag4::CountFlag4(const InitArg& arg) : ksys::act::ai::Query(arg) {} CountFlag4::~CountFlag4() = default; -// FIXME: implement int CountFlag4::doQuery() { - return -1; + auto* gdm = ksys::gdt::Manager::instance(); + if (gdm == nullptr) + return 0; + + bool x = false; + int result = 0; + + auto isOn = [&](const sead::SafeString& s) { + return gdm->getParamBypassPerm().get().getBool(&x, s) && x; + }; + + if (!mGameDataFlagNo0.isEmpty()) + result += isOn(mGameDataFlagNo0); + if (!mGameDataFlagNo1.isEmpty()) + result += isOn(mGameDataFlagNo1); + if (!mGameDataFlagNo2.isEmpty()) + result += isOn(mGameDataFlagNo2); + if (!mGameDataFlagNo3.isEmpty()) + result += isOn(mGameDataFlagNo3); + if (!mGameDataFlagNo4.isEmpty()) + result += isOn(mGameDataFlagNo4); + + return result; } void CountFlag4::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryEnemyDieCheck.cpp b/src/Game/AI/Query/queryEnemyDieCheck.cpp index 6d52c5e5..16068b31 100644 --- a/src/Game/AI/Query/queryEnemyDieCheck.cpp +++ b/src/Game/AI/Query/queryEnemyDieCheck.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryEnemyDieCheck.h" #include +#include "KingSystem/ActorSystem/actActor.h" namespace uking::query { @@ -7,9 +8,8 @@ EnemyDieCheck::EnemyDieCheck(const InitArg& arg) : ksys::act::ai::Query(arg) {} EnemyDieCheck::~EnemyDieCheck() = default; -// FIXME: implement int EnemyDieCheck::doQuery() { - return -1; + return mActor->getActorFlags2().isOff(ksys::act::Actor::ActorFlag2::Alive); } void EnemyDieCheck::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryEnemyRestLifeRate.cpp b/src/Game/AI/Query/queryEnemyRestLifeRate.cpp index a119fd9a..0d98b36f 100644 --- a/src/Game/AI/Query/queryEnemyRestLifeRate.cpp +++ b/src/Game/AI/Query/queryEnemyRestLifeRate.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryEnemyRestLifeRate.h" #include +#include "KingSystem/ActorSystem/actActor.h" namespace uking::query { @@ -7,9 +8,16 @@ EnemyRestLifeRate::EnemyRestLifeRate(const InitArg& arg) : ksys::act::ai::Query( EnemyRestLifeRate::~EnemyRestLifeRate() = default; -// FIXME: implement int EnemyRestLifeRate::doQuery() { - return -1; + s32* life = mActor->getLife(); + float value; + + if (life != nullptr) + value = *life; + else + value = 1.0f; + + return mActor->getMaxLife() * *mCheckRate <= value; } void EnemyRestLifeRate::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryGeneralChoice2.cpp b/src/Game/AI/Query/queryGeneralChoice2.cpp index 7ff555df..9bb73aaf 100644 --- a/src/Game/AI/Query/queryGeneralChoice2.cpp +++ b/src/Game/AI/Query/queryGeneralChoice2.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryGeneralChoice2.h" #include +#include "KingSystem/ActorSystem/actActorUtil.h" namespace uking::query { @@ -7,9 +8,12 @@ GeneralChoice2::GeneralChoice2(const InitArg& arg) : ksys::act::ai::Query(arg) { GeneralChoice2::~GeneralChoice2() = default; -// FIXME: implement int GeneralChoice2::doQuery() { - return -1; + s32 idx = ksys::act::getSelectedChoiceIdx(2, getName()); + if (idx < 0) + return 0; + + return idx; } void GeneralChoice2::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryGeneralChoice3.cpp b/src/Game/AI/Query/queryGeneralChoice3.cpp index e805e35a..39862387 100644 --- a/src/Game/AI/Query/queryGeneralChoice3.cpp +++ b/src/Game/AI/Query/queryGeneralChoice3.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryGeneralChoice3.h" #include +#include "KingSystem/ActorSystem/actActorUtil.h" namespace uking::query { @@ -7,9 +8,12 @@ GeneralChoice3::GeneralChoice3(const InitArg& arg) : ksys::act::ai::Query(arg) { GeneralChoice3::~GeneralChoice3() = default; -// FIXME: implement int GeneralChoice3::doQuery() { - return -1; + s32 idx = ksys::act::getSelectedChoiceIdx(3, getName()); + if (idx < 0) + return 0; + + return idx; } void GeneralChoice3::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryGeneralChoice4.cpp b/src/Game/AI/Query/queryGeneralChoice4.cpp index 290602f4..cc7b9599 100644 --- a/src/Game/AI/Query/queryGeneralChoice4.cpp +++ b/src/Game/AI/Query/queryGeneralChoice4.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryGeneralChoice4.h" #include +#include "KingSystem/ActorSystem/actActorUtil.h" namespace uking::query { @@ -9,7 +10,11 @@ GeneralChoice4::~GeneralChoice4() = default; // FIXME: implement int GeneralChoice4::doQuery() { - return -1; + s32 idx = ksys::act::getSelectedChoiceIdx(4, getName()); + if (idx < 0) + return 0; + + return idx; } void GeneralChoice4::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryGeneralChoice8.cpp b/src/Game/AI/Query/queryGeneralChoice8.cpp index c6345b8f..74a9784a 100644 --- a/src/Game/AI/Query/queryGeneralChoice8.cpp +++ b/src/Game/AI/Query/queryGeneralChoice8.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryGeneralChoice8.h" #include +#include "KingSystem/ActorSystem/actActorUtil.h" namespace uking::query { @@ -9,7 +10,11 @@ GeneralChoice8::~GeneralChoice8() = default; // FIXME: implement int GeneralChoice8::doQuery() { - return -1; + s32 idx = ksys::act::getSelectedChoiceIdx(8, getName()); + if (idx < 0) + return 0; + + return idx; } void GeneralChoice8::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryHasArmorAlreadyDyed.cpp b/src/Game/AI/Query/queryHasArmorAlreadyDyed.cpp index 7ad39f2c..b042a651 100644 --- a/src/Game/AI/Query/queryHasArmorAlreadyDyed.cpp +++ b/src/Game/AI/Query/queryHasArmorAlreadyDyed.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasArmorAlreadyDyed.h" #include +#include "Game/UI/uiPauseMenuDataMgr.h" namespace uking::query { @@ -7,9 +8,12 @@ HasArmorAlreadyDyed::HasArmorAlreadyDyed(const InitArg& arg) : ksys::act::ai::Qu HasArmorAlreadyDyed::~HasArmorAlreadyDyed() = default; -// FIXME: implement int HasArmorAlreadyDyed::doQuery() { - return -1; + auto* pm = ui::PauseMenuDataMgr::instance(); + if (pm == nullptr) + return 0; + + return pm->countAlreadyDyedArmor() > 0; } void HasArmorAlreadyDyed::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryHasArmorDye.cpp b/src/Game/AI/Query/queryHasArmorDye.cpp index 20c209a4..3910b5ee 100644 --- a/src/Game/AI/Query/queryHasArmorDye.cpp +++ b/src/Game/AI/Query/queryHasArmorDye.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasArmorDye.h" #include +#include "Game/UI/uiPauseMenuDataMgr.h" namespace uking::query { @@ -7,9 +8,12 @@ HasArmorDye::HasArmorDye(const InitArg& arg) : ksys::act::ai::Query(arg) {} HasArmorDye::~HasArmorDye() = default; -// FIXME: implement int HasArmorDye::doQuery() { - return -1; + auto* pm = ui::PauseMenuDataMgr::instance(); + if (pm == nullptr) + return 0; + + return pm->countArmorDye() > 0; } void HasArmorDye::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryHasCookResultInPorch.cpp b/src/Game/AI/Query/queryHasCookResultInPorch.cpp index 581803ec..534de0f5 100644 --- a/src/Game/AI/Query/queryHasCookResultInPorch.cpp +++ b/src/Game/AI/Query/queryHasCookResultInPorch.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasCookResultInPorch.h" #include +#include "Game/UI/uiUtils.h" namespace uking::query { @@ -7,8 +8,48 @@ HasCookResultInPorch::HasCookResultInPorch(const InitArg& arg) : ksys::act::ai:: HasCookResultInPorch::~HasCookResultInPorch() = default; -// FIXME: implement int HasCookResultInPorch::doQuery() { + s32 num; + + if (mCookEffectType == "AllOK") + num = ui::countCookResultsAllOk(mPorchItemName); + else + num = ui::countCookResultsCheck(mPorchItemName, getEffect()); + + if (num < *mCount) + return 0; + else if (num == *mCount) + return 1; + else if (num > *mCount) + return 2; + return 0; +} + +int HasCookResultInPorch::getEffect() const { + if (mCookEffectType == "None") + return -1; + if (mCookEffectType == "ResistHot") + return 4; + if (mCookEffectType == "ResistCold") + return 5; + if (mCookEffectType == "ResistElectric") + return 6; + if (mCookEffectType == "AttackUp") + return 10; + if (mCookEffectType == "DefenseUp") + return 11; + if (mCookEffectType == "Quietness") + return 12; + if (mCookEffectType == "AllSpeed") + return 13; + if (mCookEffectType == "Fireproof") + return 16; + if (mCookEffectType == "GutsRecover") + return 14; + if (mCookEffectType == "ExGutsMaxUp") + return 15; + if (mCookEffectType == "LifeMaxUp") + return 2; return -1; } diff --git a/src/Game/AI/Query/queryHasCookResultInPorch.h b/src/Game/AI/Query/queryHasCookResultInPorch.h index 592eeb91..0c3606d1 100644 --- a/src/Game/AI/Query/queryHasCookResultInPorch.h +++ b/src/Game/AI/Query/queryHasCookResultInPorch.h @@ -11,6 +11,8 @@ public: ~HasCookResultInPorch() override; int doQuery() override; + int getEffect() const; + void loadParams() override; void loadParams(const evfl::QueryArg& arg) override; diff --git a/src/Game/AI/Query/queryHasEnoughPayment.cpp b/src/Game/AI/Query/queryHasEnoughPayment.cpp index 5ef119da..52b86453 100644 --- a/src/Game/AI/Query/queryHasEnoughPayment.cpp +++ b/src/Game/AI/Query/queryHasEnoughPayment.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasEnoughPayment.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,16 @@ HasEnoughPayment::HasEnoughPayment(const InitArg& arg) : ksys::act::ai::Query(ar HasEnoughPayment::~HasEnoughPayment() = default; -// FIXME: implement int HasEnoughPayment::doQuery() { - return -1; + auto* gdm = ksys::gdt::Manager::instance(); + if (gdm != nullptr) { + s32 state = -1; + if (!gdm->getParam().get().getS32(&state, "Shop_CurrentItemState")) + return 1; + if (state == 2 || state == 3) + return 0; + } + return 1; } void HasEnoughPayment::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryHasItemDye.cpp b/src/Game/AI/Query/queryHasItemDye.cpp index cdb5b6f0..f78b0e8b 100644 --- a/src/Game/AI/Query/queryHasItemDye.cpp +++ b/src/Game/AI/Query/queryHasItemDye.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasItemDye.h" #include +#include "Game/UI/uiPauseMenuDataMgr.h" namespace uking::query { @@ -7,9 +8,11 @@ HasItemDye::HasItemDye(const InitArg& arg) : ksys::act::ai::Query(arg) {} HasItemDye::~HasItemDye() = default; -// FIXME: implement int HasItemDye::doQuery() { - return -1; + auto* pm = ui::PauseMenuDataMgr::instance(); + if (pm == nullptr) + return 0; + return pm->hasItemDye(); } void HasItemDye::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryHasPorchArrow.cpp b/src/Game/AI/Query/queryHasPorchArrow.cpp index 3d571d30..b29c2b37 100644 --- a/src/Game/AI/Query/queryHasPorchArrow.cpp +++ b/src/Game/AI/Query/queryHasPorchArrow.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasPorchArrow.h" #include +#include "Game/UI/uiUtils.h" namespace uking::query { @@ -7,9 +8,11 @@ HasPorchArrow::HasPorchArrow(const InitArg& arg) : ksys::act::ai::Query(arg) {} HasPorchArrow::~HasPorchArrow() = default; -// FIXME: implement int HasPorchArrow::doQuery() { - return -1; + s32 arrow_cnt = ui::getItemValue("NormalArrow") + ui::getItemValue("FireArrow") + + ui::getItemValue("IceArrow") + ui::getItemValue("ElectricArrow") + + ui::getItemValue("BombArrow_A") + ui::getItemValue("AncientArrow"); + return arrow_cnt < *mCheckNum; } void HasPorchArrow::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryHasPorchItem.cpp b/src/Game/AI/Query/queryHasPorchItem.cpp index dbfb4b46..1d14acae 100644 --- a/src/Game/AI/Query/queryHasPorchItem.cpp +++ b/src/Game/AI/Query/queryHasPorchItem.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasPorchItem.h" #include +#include "Game/UI/uiUtils.h" namespace uking::query { @@ -7,9 +8,8 @@ HasPorchItem::HasPorchItem(const InitArg& arg) : ksys::act::ai::Query(arg) {} HasPorchItem::~HasPorchItem() = default; -// FIXME: implement int HasPorchItem::doQuery() { - return -1; + return ui::getItemValue(mPorchItemName) >= *mCount; } void HasPorchItem::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryHasPorchItemByCategory.cpp b/src/Game/AI/Query/queryHasPorchItemByCategory.cpp index e9ac46a9..fea15c52 100644 --- a/src/Game/AI/Query/queryHasPorchItemByCategory.cpp +++ b/src/Game/AI/Query/queryHasPorchItemByCategory.cpp @@ -1,5 +1,7 @@ #include "Game/AI/Query/queryHasPorchItemByCategory.h" #include +#include "Game/UI/uiPauseMenuDataMgr.h" +#include "KingSystem/ActorSystem/actTag.h" namespace uking::query { @@ -7,9 +9,72 @@ HasPorchItemByCategory::HasPorchItemByCategory(const InitArg& arg) : ksys::act:: HasPorchItemByCategory::~HasPorchItemByCategory() = default; -// FIXME: implement int HasPorchItemByCategory::doQuery() { - return -1; + s32 result = 0; + using namespace ksys::act::tags; + + auto* pm = ui::PauseMenuDataMgr::instance(); + if (pm == nullptr) + return 1; + + switch (*mCategory) { + case 0: + result = pm->countItemsWithProfile("WeaponBow", true); + break; + case 1: + result = pm->countItemsWithProfile("WeaponShield", true); + break; + case 2: + result = pm->countItemsWithProfile("WeaponSpear", true); + break; + case 3: + result = pm->countItemsWithProfile("WeaponSmallSword", true); + break; + case 4: + result = pm->countItemsWithTag(Arrow, false); + break; + case 16: + result = pm->countItemsWithTag(Arrow, true); + break; + case 5: + result = pm->countItemsWithProfile("WeaponLargeSword", true); + break; + case 6: + result = pm->countItemsWithTag(CookMushroom, true); + break; + case 7: + result = pm->countItemsWithTag(RoastItem, true); + break; + case 8: + result = pm->countItemsWithTag(CookFruit, true); + break; + case 9: + result = pm->countItemsWithTag(CookOre, true); + break; + case 10: + result = pm->countItemsWithTag(CookPlant, true); + break; + case 11: + result = pm->countItemsWithTag(EnemyMaterial, true); + break; + case 12: + result = pm->countItemsWithTag(CookMeat, true); + break; + case 13: + result = pm->countItemsWithTag(CookMaterial, true); + break; + case 14: + result = pm->countItemsWithProfile("HorseReins", true); + break; + case 15: + result = pm->countItemsWithProfile("HorseSaddle", true); + break; + default: + result = 0; + break; + } + + return result < *mCount; } void HasPorchItemByCategory::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryHasPouchItemByPouchCategory.cpp b/src/Game/AI/Query/queryHasPouchItemByPouchCategory.cpp index c38664ab..30f4e2bc 100644 --- a/src/Game/AI/Query/queryHasPouchItemByPouchCategory.cpp +++ b/src/Game/AI/Query/queryHasPouchItemByPouchCategory.cpp @@ -1,5 +1,7 @@ #include "Game/AI/Query/queryHasPouchItemByPouchCategory.h" #include +#include "Game/UI/uiPauseMenuDataMgr.h" +#include "KingSystem/ActorSystem/actTag.h" namespace uking::query { @@ -8,9 +10,44 @@ HasPouchItemByPouchCategory::HasPouchItemByPouchCategory(const InitArg& arg) HasPouchItemByPouchCategory::~HasPouchItemByPouchCategory() = default; -// FIXME: implement int HasPouchItemByPouchCategory::doQuery() { - return -1; + s32 result = 0; + using namespace ksys::act::tags; + + auto* pm = ui::PauseMenuDataMgr::instance(); + if (pm == nullptr) + return 1; + + switch (*mCategory) { + case 0: + result = pm->countItemsWithCategory(ui::PouchCategory::Sword); + break; + case 1: + result = pm->countItemsWithProfile("WeaponBow", false); + break; + case 2: + result = pm->countItemsWithTag(Arrow, false); + break; + case 3: + result = pm->countItemsWithCategory(ui::PouchCategory::Shield); + break; + case 4: + result = pm->countItemsWithCategory(ui::PouchCategory::Armor); + break; + case 5: + result = pm->countItemsWithCategory(ui::PouchCategory::Material); + break; + case 6: + result = pm->countItemsWithCategory(ui::PouchCategory::Food); + break; + case 7: + result = pm->countItemsWithCategory(ui::PouchCategory::KeyItem); + break; + default: + result = 0; + break; + } + return result < *mCount; } void HasPouchItemByPouchCategory::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryHasSetItem.cpp b/src/Game/AI/Query/queryHasSetItem.cpp index aff0ede7..7b8ccd7d 100644 --- a/src/Game/AI/Query/queryHasSetItem.cpp +++ b/src/Game/AI/Query/queryHasSetItem.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryHasSetItem.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,24 @@ HasSetItem::HasSetItem(const InitArg& arg) : ksys::act::ai::Query(arg) {} HasSetItem::~HasSetItem() = default; -// FIXME: implement +// NON_MATCHING: temp duplication int HasSetItem::doQuery() { - return -1; + 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; + } + return 0; } void HasSetItem::loadParams(const evfl::QueryArg& arg) { diff --git a/src/Game/AI/Query/queryIsAppAlreadyExchanged.cpp b/src/Game/AI/Query/queryIsAppAlreadyExchanged.cpp index a70d5909..d665a0db 100644 --- a/src/Game/AI/Query/queryIsAppAlreadyExchanged.cpp +++ b/src/Game/AI/Query/queryIsAppAlreadyExchanged.cpp @@ -7,9 +7,8 @@ IsAppAlreadyExchanged::IsAppAlreadyExchanged(const InitArg& arg) : ksys::act::ai IsAppAlreadyExchanged::~IsAppAlreadyExchanged() = default; -// FIXME: implement int IsAppAlreadyExchanged::doQuery() { - return -1; + return 1; } void IsAppAlreadyExchanged::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsBloodyMoonTrig.cpp b/src/Game/AI/Query/queryIsBloodyMoonTrig.cpp index 81a31bcc..9c65fbed 100644 --- a/src/Game/AI/Query/queryIsBloodyMoonTrig.cpp +++ b/src/Game/AI/Query/queryIsBloodyMoonTrig.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsBloodyMoonTrig.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,8 @@ IsBloodyMoonTrig::IsBloodyMoonTrig(const InitArg& arg) : ksys::act::ai::Query(ar IsBloodyMoonTrig::~IsBloodyMoonTrig() = default; -// FIXME: implement int IsBloodyMoonTrig::doQuery() { - return -1; + return ksys::world::Manager::instance()->getTimeMgr()->wasBloodyDayAndDayPassed(); } void IsBloodyMoonTrig::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsCurrentAocFieldStage.cpp b/src/Game/AI/Query/queryIsCurrentAocFieldStage.cpp index 58a52f3d..fab8122e 100644 --- a/src/Game/AI/Query/queryIsCurrentAocFieldStage.cpp +++ b/src/Game/AI/Query/queryIsCurrentAocFieldStage.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsCurrentAocFieldStage.h" #include +#include "KingSystem/System/StageInfo.h" namespace uking::query { @@ -7,9 +8,8 @@ IsCurrentAocFieldStage::IsCurrentAocFieldStage(const InitArg& arg) : ksys::act:: IsCurrentAocFieldStage::~IsCurrentAocFieldStage() = default; -// FIXME: implement int IsCurrentAocFieldStage::doQuery() { - return -1; + return ksys::StageInfo::sIsAocField; } void IsCurrentAocFieldStage::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsCurrentCDungeonStage.cpp b/src/Game/AI/Query/queryIsCurrentCDungeonStage.cpp index a2a6c1d9..dc422aa8 100644 --- a/src/Game/AI/Query/queryIsCurrentCDungeonStage.cpp +++ b/src/Game/AI/Query/queryIsCurrentCDungeonStage.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsCurrentCDungeonStage.h" #include +#include "KingSystem/System/StageInfo.h" namespace uking::query { @@ -7,9 +8,8 @@ IsCurrentCDungeonStage::IsCurrentCDungeonStage(const InitArg& arg) : ksys::act:: IsCurrentCDungeonStage::~IsCurrentCDungeonStage() = default; -// FIXME: implement int IsCurrentCDungeonStage::doQuery() { - return -1; + return ksys::StageInfo::sIsCDungeon; } void IsCurrentCDungeonStage::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsCurrentMainFieldDungeonStage.cpp b/src/Game/AI/Query/queryIsCurrentMainFieldDungeonStage.cpp index e3eedd18..08e3bfe1 100644 --- a/src/Game/AI/Query/queryIsCurrentMainFieldDungeonStage.cpp +++ b/src/Game/AI/Query/queryIsCurrentMainFieldDungeonStage.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsCurrentMainFieldDungeonStage.h" #include +#include "KingSystem/System/StageInfo.h" namespace uking::query { @@ -8,9 +9,8 @@ IsCurrentMainFieldDungeonStage::IsCurrentMainFieldDungeonStage(const InitArg& ar IsCurrentMainFieldDungeonStage::~IsCurrentMainFieldDungeonStage() = default; -// FIXME: implement int IsCurrentMainFieldDungeonStage::doQuery() { - return -1; + return ksys::StageInfo::sIsMainFieldDungeon; } void IsCurrentMainFieldDungeonStage::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp b/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp index ca4bc4c4..ddd0aa88 100644 --- a/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp +++ b/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsCurrentMainFieldStage.h" #include +#include "KingSystem/System/StageInfo.h" namespace uking::query { @@ -7,9 +8,8 @@ IsCurrentMainFieldStage::IsCurrentMainFieldStage(const InitArg& arg) : ksys::act IsCurrentMainFieldStage::~IsCurrentMainFieldStage() = default; -// FIXME: implement int IsCurrentMainFieldStage::doQuery() { - return -1; + return ksys::StageInfo::getCurrentMapType() == "MainField"; } void IsCurrentMainFieldStage::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsItemInStock.cpp b/src/Game/AI/Query/queryIsItemInStock.cpp index 9f957af8..f3d40e8e 100644 --- a/src/Game/AI/Query/queryIsItemInStock.cpp +++ b/src/Game/AI/Query/queryIsItemInStock.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsItemInStock.h" #include +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,16 @@ IsItemInStock::IsItemInStock(const InitArg& arg) : ksys::act::ai::Query(arg) {} IsItemInStock::~IsItemInStock() = default; -// FIXME: implement int IsItemInStock::doQuery() { - return -1; + auto* gdm = ksys::gdt::Manager::instance(); + if (gdm != nullptr) { + s32 state = -1; + if (!gdm->getParam().get().getS32(&state, "Shop_CurrentItemState")) + return 1; + if (state == 1) + return 0; + } + return 1; } void IsItemInStock::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsOnInstEventFlag.cpp b/src/Game/AI/Query/queryIsOnInstEventFlag.cpp index e46a17e7..987b69c6 100644 --- a/src/Game/AI/Query/queryIsOnInstEventFlag.cpp +++ b/src/Game/AI/Query/queryIsOnInstEventFlag.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryIsOnInstEventFlag.h" #include +#include "KingSystem/ActorSystem/actActor.h" namespace uking::query { @@ -7,9 +8,8 @@ IsOnInstEventFlag::IsOnInstEventFlag(const InitArg& arg) : ksys::act::ai::Query( IsOnInstEventFlag::~IsOnInstEventFlag() = default; -// FIXME: implement int IsOnInstEventFlag::doQuery() { - return -1; + return mActor->getActorFlags2().isOn(ksys::act::Actor::ActorFlag2::InstEvent); } void IsOnInstEventFlag::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsSuccessEndLastDemoAction.cpp b/src/Game/AI/Query/queryIsSuccessEndLastDemoAction.cpp index a34df9e3..37d33fc2 100644 --- a/src/Game/AI/Query/queryIsSuccessEndLastDemoAction.cpp +++ b/src/Game/AI/Query/queryIsSuccessEndLastDemoAction.cpp @@ -1,5 +1,7 @@ #include "Game/AI/Query/queryIsSuccessEndLastDemoAction.h" #include +#include "KingSystem/ActorSystem/actActor.h" +#include "KingSystem/ActorSystem/actAiRoot.h" namespace uking::query { @@ -8,9 +10,16 @@ IsSuccessEndLastDemoAction::IsSuccessEndLastDemoAction(const InitArg& arg) IsSuccessEndLastDemoAction::~IsSuccessEndLastDemoAction() = default; -// FIXME: implement int IsSuccessEndLastDemoAction::doQuery() { - return -1; + if (mActor != nullptr && mActor->getRootAi() != nullptr) { + auto* action = mActor->getRootAi()->getCurrentAction(); + if (action == nullptr) + return 0; + + if (action->isFinished()) + return 1; + } + return 0; } void IsSuccessEndLastDemoAction::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryIsTerrorDisappeared.cpp b/src/Game/AI/Query/queryIsTerrorDisappeared.cpp index 58731f5c..b535891d 100644 --- a/src/Game/AI/Query/queryIsTerrorDisappeared.cpp +++ b/src/Game/AI/Query/queryIsTerrorDisappeared.cpp @@ -7,9 +7,8 @@ IsTerrorDisappeared::IsTerrorDisappeared(const InitArg& arg) : ksys::act::ai::Qu IsTerrorDisappeared::~IsTerrorDisappeared() = default; -// FIXME: implement int IsTerrorDisappeared::doQuery() { - return -1; + return 0; } void IsTerrorDisappeared::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryWhatDayOfTheWeek.cpp b/src/Game/AI/Query/queryWhatDayOfTheWeek.cpp index 77da0090..f5c7f78b 100644 --- a/src/Game/AI/Query/queryWhatDayOfTheWeek.cpp +++ b/src/Game/AI/Query/queryWhatDayOfTheWeek.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryWhatDayOfTheWeek.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,8 @@ WhatDayOfTheWeek::WhatDayOfTheWeek(const InitArg& arg) : ksys::act::ai::Query(ar WhatDayOfTheWeek::~WhatDayOfTheWeek() = default; -// FIXME: implement int WhatDayOfTheWeek::doQuery() { - return -1; + return u8(ksys::world::Manager::instance()->getTimeMgr()->getNumberOfDays() % 7); } void WhatDayOfTheWeek::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryWhatDungeonType.cpp b/src/Game/AI/Query/queryWhatDungeonType.cpp index de51f151..ae02bdb8 100644 --- a/src/Game/AI/Query/queryWhatDungeonType.cpp +++ b/src/Game/AI/Query/queryWhatDungeonType.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryWhatDungeonType.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,8 @@ WhatDungeonType::WhatDungeonType(const InitArg& arg) : ksys::act::ai::Query(arg) WhatDungeonType::~WhatDungeonType() = default; -// FIXME: implement int WhatDungeonType::doQuery() { - return -1; + return u8(ksys::world::Manager::instance()->getDungeonType()); } void WhatDungeonType::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/AI/Query/queryWhatMoonName.cpp b/src/Game/AI/Query/queryWhatMoonName.cpp index df5cc2dd..11c4c275 100644 --- a/src/Game/AI/Query/queryWhatMoonName.cpp +++ b/src/Game/AI/Query/queryWhatMoonName.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryWhatMoonName.h" #include +#include "KingSystem/World/worldManager.h" namespace uking::query { @@ -7,9 +8,9 @@ WhatMoonName::WhatMoonName(const InitArg& arg) : ksys::act::ai::Query(arg) {} WhatMoonName::~WhatMoonName() = default; -// FIXME: implement int WhatMoonName::doQuery() { - return -1; + auto* tm = ksys::world::Manager::instance()->getTimeMgr(); + return static_cast(tm->getMoonType()); } void WhatMoonName::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/UI/uiUtils.h b/src/Game/UI/uiUtils.h index ace7653e..e39d53c9 100644 --- a/src/Game/UI/uiUtils.h +++ b/src/Game/UI/uiUtils.h @@ -34,4 +34,8 @@ int getItemGeneralLife(const char* name); // TODO: move this to yet another translation unit (TBD but not the same one as the above) void addItemForDebug(const sead::SafeString& name, int value); +int countCookResultsCheck(const sead::SafeString& name, s32 effect_type); +int countCookResultsAllOk(const sead::SafeString& name); +int getItemValue(const sead::SafeString& name); + } // namespace uking::ui diff --git a/src/KingSystem/ActorSystem/actActor.h b/src/KingSystem/ActorSystem/actActor.h index 3c109432..6b077653 100644 --- a/src/KingSystem/ActorSystem/actActor.h +++ b/src/KingSystem/ActorSystem/actActor.h @@ -40,7 +40,9 @@ public: }; enum class ActorFlag2 { + InstEvent = 0x8, NoDistanceCheck = 0x80, + Alive = 0x4000000, }; enum class DeleteType { @@ -70,7 +72,7 @@ public: bool is_life_infinite, int i, int life) const; virtual s32 getMaxLife(); - + virtual s32* getLife(); virtual LifeRecoverInfo* getLifeRecoverInfo(); void emitBasicSigOn(); diff --git a/src/KingSystem/ActorSystem/actActorUtil.h b/src/KingSystem/ActorSystem/actActorUtil.h index b8ec6b79..cc642e99 100644 --- a/src/KingSystem/ActorSystem/actActorUtil.h +++ b/src/KingSystem/ActorSystem/actActorUtil.h @@ -165,4 +165,6 @@ bool getSameGroupActorName(sead::SafeString* name, const sead::SafeString& defau al::ByamlIter* actor_info); bool getSameGroupActorName(sead::SafeString* name, const sead::SafeString& actor_name); +s32 getSelectedChoiceIdx(s32 max, const char* query_name); + } // namespace ksys::act diff --git a/src/KingSystem/ActorSystem/actPlayerInfo.h b/src/KingSystem/ActorSystem/actPlayerInfo.h index 9ceb53b2..c356c3f9 100644 --- a/src/KingSystem/ActorSystem/actPlayerInfo.h +++ b/src/KingSystem/ActorSystem/actPlayerInfo.h @@ -14,6 +14,9 @@ class PlayerInfo { public: PlayerBase* getPlayer() const; + s32 getLife() const; + u32 getMaxHearts() const; + f32 getMaxStamina() const; }; } // namespace ksys::act diff --git a/src/KingSystem/World/worldEnvMgr.h b/src/KingSystem/World/worldEnvMgr.h index 3c861f3f..6956a18d 100644 --- a/src/KingSystem/World/worldEnvMgr.h +++ b/src/KingSystem/World/worldEnvMgr.h @@ -207,6 +207,8 @@ public: void allowPaletteOverride(); + float getWarpMistIntensity() const { return mWarpMistIntensity; } + protected: void init_(sead::Heap* heap) override; void calc_() override; diff --git a/src/KingSystem/World/worldTimeMgr.h b/src/KingSystem/World/worldTimeMgr.h index 4320ead0..107b5836 100644 --- a/src/KingSystem/World/worldTimeMgr.h +++ b/src/KingSystem/World/worldTimeMgr.h @@ -98,6 +98,7 @@ public: BloodMoonForceMode getBloodMoonForceMode() const { return mBloodMoonForceMode; } bool isPlayedDemo103Or997() const { return mPlayedDemo103Or997; } bool isFindDungeonActivated() const { return mFindDungeonActivated; } + bool wasBloodyDayAndDayPassed() const { return mWasBloodyDayAndDayPassed; } bool isResetGdtOnNextSceneUnloadForBloodMoon() const { return mResetGdtOnNextSceneUnloadForBloodMoon; }