From eba27136537d8e82deac7abf1fc1b566c5b8ae1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 23 Dec 2020 14:18:41 +0100 Subject: [PATCH] Generate query factories as well --- data/uking_functions.csv | 330 +++++++++++----------- src/Game/AI/CMakeLists.txt | 5 + src/Game/AI/aiQueryFactories.cpp | 351 ++++++++++++++++++++++++ src/Game/AI/aiQueryFactories.h | 7 + src/KingSystem/ActorSystem/actAiQuery.h | 5 + tools/ai_generate_queries.py | 44 +++ tools/ai_identify_matching_stubs.py | 2 + 7 files changed, 579 insertions(+), 165 deletions(-) create mode 100644 src/Game/AI/aiQueryFactories.cpp create mode 100644 src/Game/AI/aiQueryFactories.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 36b1f2bd..a45e303a 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -45365,171 +45365,171 @@ 0x00000071006ea770,PauseMenuPlayer::m2,132, 0x00000071006ea7f4,PauseMenuPlayer::m3,92, 0x00000071006ea850,AI::initQuerys,16, -0x00000071006ea860,AI_F_Query_CheckDeadHorseResistered,56, -0x00000071006ea898,AI_F_Query_IsEquipedDyedArmor,56, -0x00000071006ea8d0,AI_F_Query_CheckHasManifactureArmor,56, -0x00000071006ea908,AI_F_Query_IsRideHorse,56, -0x00000071006ea940,AI_F_Query_CheckHorseTakenOut,56, -0x00000071006ea978,AI_F_Query_CheckShopSelectedItemName,56, -0x00000071006ea9b0,AI_F_Query_CheckPictureBookVacancy,56, -0x00000071006ea9e8,AI_F_Query_CheckSelectPicture,56, -0x00000071006eaa20,AI_F_Query_RandomChoiceExceptOnFlag,56, -0x00000071006eaa58,AI_F_Query_CanCreateMakeItemList,56, -0x00000071006eaa90,AI_F_Query_CheckProConUse,56, -0x00000071006eaac8,AI_F_Query_CheckHorseCustomizeSelect,56, -0x00000071006eab00,AI_F_Query_CompareGameDataInt,56, -0x00000071006eab38,AI_F_Query_CheckItemShopPorchVacancy,56, -0x00000071006eab70,AI_F_Query_CheckWeather,56, -0x00000071006eaba8,AI_F_Query_CheckMaterialValue,56, -0x00000071006eabe0,AI_F_Query_CheckCurrentMap,56, -0x00000071006eac18,AI_F_Query_GeneralChoice3,56, -0x00000071006eac50,AI_F_Query_CheckCurseRRetryEverOnce,56, -0x00000071006eac88,AI_F_Query_CheckStarter,56, -0x00000071006eacc0,AI_F_Query_IsEquippedEnableDye,56, -0x00000071006eacf8,AI_F_Query_CheckPlayerWeaponFired,56, -0x00000071006ead30,AI_F_Query_CheckGameDataFloat,56, -0x00000071006ead68,AI_F_Query_CheckEquipItemType,56, -0x00000071006eada0,AI_F_Query_IsSuccessEndLastDemoAction,56, -0x00000071006eadd8,AI_F_Query_CheckRankOfEnemyAttackedNPC,56, -0x00000071006eae10,AI_F_Query_CheckHorseRegistered,56, -0x00000071006eae48,AI_F_Query_CheckTypeOfOwnedHorseForEvent,56, -0x00000071006eae80,AI_F_Query_KeyInputCheck,56, -0x00000071006eaeb8,AI_F_Query_IsCurrentAocFieldStage,56, -0x00000071006eaef0,AI_F_Query_IsPlayerGrounded,56, -0x00000071006eaf28,AI_F_Query_CheckPlacedItemSaled,56, -0x00000071006eaf60,AI_F_Query_WhatDayOfTheWeek,56, -0x00000071006eaf98,AI_F_Query_CheckDyeShopSelect,56, -0x00000071006eafd0,AI_F_Query_IsEquippedWithLowerBody,56, -0x00000071006eb008,AI_F_Query_CheckMapArea,56, -0x00000071006eb040,AI_F_Query_IsOffLinkTag,56, -0x00000071006eb078,AI_F_Query_CheckDuringBloodyMoon,56, -0x00000071006eb0b0,AI_F_Query_IsWeaponDrawn,56, -0x00000071006eb0e8,AI_F_Query_CheckMasterSwordState,56, -0x00000071006eb120,AI_F_Query_IsAppAlreadyExchanged,56, -0x00000071006eb158,AI_F_Query_CheckGiveReward,56, -0x00000071006eb190,AI_F_Query_isBloodyMoonTrig,56, -0x00000071006eb1c8,AI_F_Query_CheckWarpMist,56, -0x00000071006eb200,AI_F_Query_CheckTime,56, -0x00000071006eb238,AI_F_Query_CheckAppPoint,56, -0x00000071006eb270,AI_F_Query_CheckDistanceForWarp,56, -0x00000071006eb2a8,AI_F_Query_CheckMiniGameTime,56, -0x00000071006eb2e0,AI_F_Query_IsRest,56, -0x00000071006eb318,AI_F_Query_CountFlag4,56, -0x00000071006eb350,AI_F_Query_CheckHorseDeadCause,56, -0x00000071006eb388,AI_F_Query_CheckRupee,56, -0x00000071006eb3c0,AI_F_Query_CheckGameDataInt,56, -0x00000071006eb3f8,AI_F_Query_CheckEquipment,56, -0x00000071006eb430,AI_F_Query_DummyQuery,56, -0x00000071006eb468,AI_F_Query_ComparePlayerFireResistantLevel,56, -0x00000071006eb4a0,AI_F_Query_IsWaitRevival,56, -0x00000071006eb4d8,AI_F_Query_CheckAppShopSelect,56, -0x00000071006eb510,AI_F_Query_CheckSiteBossDamageAnm,56, -0x00000071006eb548,AI_F_Query_CheckDeadlyQuestEscapeTiming,56, -0x00000071006eb580,AI_F_Query_HasPorchArrow,56, -0x00000071006eb5b8,AI_F_Query_IsNoEquipArmorAnyTarget,56, -0x00000071006eb5f0,AI_F_Query_CheckPlayerTemperatureCondition,56, -0x00000071006eb628,AI_F_Query_HasItemDye,56, -0x00000071006eb660,AI_F_Query_HasEnoughPayment,56, -0x00000071006eb698,AI_F_Query_ComparePlayerOriginalHeart,56, -0x00000071006eb6d0,AI_F_Query_CheckPlayerRideSunazarashi,56, -0x00000071006eb708,AI_F_Query_CheckVacancyItem,56, -0x00000071006eb740,AI_F_Query_GeneralChoice2,56, -0x00000071006eb778,AI_F_Query_RandomChoice8,56, -0x00000071006eb7b0,AI_F_Query_CheckPorchInItem,56, -0x00000071006eb7e8,AI_F_Query_CheckPlayerDeadCause,56, -0x00000071006eb820,AI_F_Query_CheckEquipArmorSeriesType,56, -0x00000071006eb858,AI_F_Query_CheckExtraLifeOfPlayer,56, -0x00000071006eb890,AI_F_Query_IsOwnedHorseAssociated,56, -0x00000071006eb8c8,AI_F_Query_RandomChoice4,56, -0x00000071006eb900,AI_F_Query_HasPorchItem,56, -0x00000071006eb938,AI_F_Query_IsCurrentCDungeonStage,56, -0x00000071006eb970,AI_F_Query_CheckEatActor,56, -0x00000071006eb9a8,AI_F_Query_ComparePlayerHeart,56, -0x00000071006eb9e0,AI_F_Query_CheckExistActor,56, -0x00000071006eba18,AI_F_Query_CheckGetDemoTypeFromArg,56, -0x00000071006eba50,AI_F_Query_CheckRainRatio,56, -0x00000071006eba88,AI_F_Query_CheckPlayerFastFadeDead,56, -0x00000071006ebac0,AI_F_Query_CheckBalladOfHeroActiveTiming,56, -0x00000071006ebaf8,AI_F_Query_WhatMoonName,56, -0x00000071006ebb30,AI_F_Query_GeneralChoice4,56, -0x00000071006ebb68,AI_F_Query_CheckActorAction,56, -0x00000071006ebba0,AI_F_Query_CheckE3Mode,56, -0x00000071006ebbd8,AI_F_Query_HasCookResultInPorch,56, -0x00000071006ebc10,AI_F_Query_CheckDownloadItemNum,56, -0x00000071006ebc48,AI_F_Query_GeneralChoice8,56, -0x00000071006ebc80,AI_F_Query_BranchByDyeColor,56, -0x00000071006ebcb8,AI_F_Query_RandomChoice2,56, -0x00000071006ebcf0,AI_F_Query_CheckDistanceFromPlayer,56, -0x00000071006ebd28,AI_F_Query_HasArmorAlreadyDyed,56, -0x00000071006ebd60,AI_F_Query_IsHorseNumMax,56, -0x00000071006ebd98,AI_F_Query_CheckJustBeforeEventCancel,56, -0x00000071006ebdd0,AI_F_Query_CheckIsOpenItemCategory,56, -0x00000071006ebe08,AI_F_Query_CheckNumOfBuyPicture,56, -0x00000071006ebe40,AI_F_Query_WhatCurrentItem,56, -0x00000071006ebe78,AI_F_Query_CheckFame,56, -0x00000071006ebeb0,AI_F_Query_BranchByGameOver,56, -0x00000071006ebee8,AI_F_Query_CheckPlayerEquip,56, -0x00000071006ebf20,AI_F_Query_CheckSellResult,56, -0x00000071006ebf58,AI_F_Query_ComparePlayerMaxHeart,56, -0x00000071006ebf90,AI_F_Query_CompareGameDataFloat,56, -0x00000071006ebfc8,AI_F_Query_CheckPlayerHellType,56, -0x00000071006ec000,AI_F_Query_ComparePlayerMaxStamina,56, -0x00000071006ec038,AI_F_Query_CheckRoad,56, -0x00000071006ec070,AI_F_Query_CheckExtraEnergyOfPlayer,56, -0x00000071006ec0a8,AI_F_Query_CheckAreaTransition,56, -0x00000071006ec0e0,AI_F_Query_HasArmorDye,56, -0x00000071006ec118,AI_F_Query_HasItemDyeSpecifiedColor,56, -0x00000071006ec150,AI_F_Query_IsAwakened,56, -0x00000071006ec188,AI_F_Query_CheckItemShopDecide,56, -0x00000071006ec1c0,AI_F_Query_CheckTypeOfWildHorseAssociated,56, -0x00000071006ec1f8,AI_F_Query_CheckElapsedTimeOfMiniGame,56, -0x00000071006ec230,AI_F_Query_WhatDungeonType,56, -0x00000071006ec268,AI_F_Query_CheckTimeType,56, -0x00000071006ec2a0,AI_F_Query_CheckReceiveTerrorLevel,56, -0x00000071006ec2d8,AI_F_Query_HasSpecificArmorSeries,56, -0x00000071006ec310,AI_F_Query_CheckCookResultStatus,56, -0x00000071006ec348,AI_F_Query_CompareGameDataTime,56, -0x00000071006ec380,AI_F_Query_IsItemInStock,56, -0x00000071006ec3b8,AI_F_Query_CheckMiniGameTimeOver,56, -0x00000071006ec3f0,AI_F_Query_HasPorchItemByCategory,56, -0x00000071006ec428,AI_F_Query_HasPouchItemByPouchCategory,56, -0x00000071006ec460,AI_F_Query_IsSoldOut,56, -0x00000071006ec498,AI_F_Query_IsHorseFamiliarityPassedAlready,56, -0x00000071006ec4d0,AI_F_Query_CheckContainerItem,56, -0x00000071006ec508,AI_F_Query_CheckAddPorchItem,56, -0x00000071006ec540,AI_F_Query_CheckResultOfNPCConflict,56, -0x00000071006ec578,AI_F_Query_CheckManufactResult,56, -0x00000071006ec5b0,AI_F_Query_CheckActorAction14_2,56, -0x00000071006ec5e8,AI_F_Query_Check100EnemyActiveTiming,56, -0x00000071006ec620,AI_F_Query_IsIgnitionByArrowFire,56, -0x00000071006ec658,AI_F_Query_CheckFadeState,56, -0x00000071006ec690,AI_F_Query_IsOnEnterDungeonFlag,56, -0x00000071006ec6c8,AI_F_Query_CheckItemShopSelect,56, -0x00000071006ec700,AI_F_Query_HasSetItem,56, -0x00000071006ec738,AI_F_Query_CheckOwnedHorseFamiliarity,56, -0x00000071006ec770,AI_F_Query_CheckExistArrow,56, -0x00000071006ec7a8,AI_F_Query_RandomChoice3,56, -0x00000071006ec7e0,AI_F_Query_CheckPlayerPullSwordFailEnd,56, -0x00000071006ec818,AI_F_Query_IsCurrentMainFieldDungeonStage,56, -0x00000071006ec850,AI_F_Query_EnemyDieCheck,56, -0x00000071006ec888,AI_F_Query_CheckFlag,56, -0x00000071006ec8c0,AI_F_Query_CheckItemShopSelectBuy,56, -0x00000071006ec8f8,AI_F_Query_IsNeedEquipWeapon,56, -0x00000071006ec930,AI_F_Query_IsArriveAnchorForRain,56, -0x00000071006ec968,AI_F_Query_CheckTerrorLevel,56, -0x00000071006ec9a0,AI_F_Query_IsOnInstEventFlag,56, -0x00000071006ec9d8,AI_F_Query_CheckWeaponVacancyItem,56, -0x00000071006eca10,AI_F_Query_CheckEventCancel,56, -0x00000071006eca48,AI_F_Query_CheckStage,56, -0x00000071006eca80,AI_F_Query_CheckPlayerState,56, -0x00000071006ecab8,AI_F_Query_IsCurrentMainFieldStage,56, -0x00000071006ecaf0,AI_F_Query_CheckDieCnt,56, -0x00000071006ecb28,AI_F_Query_CheckLastDamageAttacker,56, -0x00000071006ecb60,AI_F_Query_CheckPlayerRideHorse,56, -0x00000071006ecb98,AI_F_Query_CanMarkMapPin,56, -0x00000071006ecbd0,AI_F_Query_IsTerrorDisappeared,56, -0x00000071006ecc08,AI_F_Query_CheckActorAction13,56, -0x00000071006ecc40,AI_F_Query_EnemyRestLifeRate,56, +0x00000071006ea860,AI_F_Query_CheckDeadHorseResistered,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24CheckDeadHorseResisteredEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea898,AI_F_Query_IsEquipedDyedArmor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18IsEquipedDyedArmorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea8d0,AI_F_Query_CheckHasManifactureArmor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24CheckHasManifactureArmorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea908,AI_F_Query_IsRideHorse,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query11IsRideHorseEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea940,AI_F_Query_CheckHorseTakenOut,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckHorseTakenOutEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea978,AI_F_Query_CheckShopSelectedItemName,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query25CheckShopSelectedItemNameEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea9b0,AI_F_Query_CheckPictureBookVacancy,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckPictureBookVacancyEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ea9e8,AI_F_Query_CheckSelectPicture,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckSelectPictureEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaa20,AI_F_Query_RandomChoiceExceptOnFlag,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24RandomChoiceExceptOnFlagEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaa58,AI_F_Query_CanCreateMakeItemList,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21CanCreateMakeItemListEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaa90,AI_F_Query_CheckProConUse,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14CheckProConUseEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaac8,AI_F_Query_CheckHorseCustomizeSelect,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query25CheckHorseCustomizeSelectEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eab00,AI_F_Query_CompareGameDataInt,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CompareGameDataIntEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eab38,AI_F_Query_CheckItemShopPorchVacancy,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query25CheckItemShopPorchVacancyEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eab70,AI_F_Query_CheckWeather,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12CheckWeatherEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaba8,AI_F_Query_CheckMaterialValue,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckMaterialValueEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eabe0,AI_F_Query_CheckCurrentMap,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15CheckCurrentMapEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eac18,AI_F_Query_GeneralChoice3,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14GeneralChoice3EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eac50,AI_F_Query_CheckCurseRRetryEverOnce,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24CheckCurseRRetryEverOnceEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eac88,AI_F_Query_CheckStarter,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12CheckStarterEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eacc0,AI_F_Query_IsEquippedEnableDye,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19IsEquippedEnableDyeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eacf8,AI_F_Query_CheckPlayerWeaponFired,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22CheckPlayerWeaponFiredEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ead30,AI_F_Query_CheckGameDataFloat,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckGameDataFloatEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ead68,AI_F_Query_CheckEquipItemType,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckEquipItemTypeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eada0,AI_F_Query_IsSuccessEndLastDemoAction,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26IsSuccessEndLastDemoActionEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eadd8,AI_F_Query_CheckRankOfEnemyAttackedNPC,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query27CheckRankOfEnemyAttackedNPCEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eae10,AI_F_Query_CheckHorseRegistered,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckHorseRegisteredEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eae48,AI_F_Query_CheckTypeOfOwnedHorseForEvent,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query29CheckTypeOfOwnedHorseForEventEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eae80,AI_F_Query_KeyInputCheck,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13KeyInputCheckEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaeb8,AI_F_Query_IsCurrentAocFieldStage,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22IsCurrentAocFieldStageEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaef0,AI_F_Query_IsPlayerGrounded,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16IsPlayerGroundedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaf28,AI_F_Query_CheckPlacedItemSaled,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckPlacedItemSaledEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaf60,AI_F_Query_WhatDayOfTheWeek,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16WhatDayOfTheWeekEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eaf98,AI_F_Query_CheckDyeShopSelect,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckDyeShopSelectEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eafd0,AI_F_Query_IsEquippedWithLowerBody,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23IsEquippedWithLowerBodyEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb008,AI_F_Query_CheckMapArea,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12CheckMapAreaEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb040,AI_F_Query_IsOffLinkTag,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12IsOffLinkTagEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb078,AI_F_Query_CheckDuringBloodyMoon,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21CheckDuringBloodyMoonEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb0b0,AI_F_Query_IsWeaponDrawn,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13IsWeaponDrawnEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb0e8,AI_F_Query_CheckMasterSwordState,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21CheckMasterSwordStateEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb120,AI_F_Query_IsAppAlreadyExchanged,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21IsAppAlreadyExchangedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb158,AI_F_Query_CheckGiveReward,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15CheckGiveRewardEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb190,AI_F_Query_isBloodyMoonTrig,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16IsBloodyMoonTrigEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb1c8,AI_F_Query_CheckWarpMist,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13CheckWarpMistEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb200,AI_F_Query_CheckTime,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query9CheckTimeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb238,AI_F_Query_CheckAppPoint,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13CheckAppPointEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb270,AI_F_Query_CheckDistanceForWarp,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckDistanceForWarpEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb2a8,AI_F_Query_CheckMiniGameTime,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query17CheckMiniGameTimeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb2e0,AI_F_Query_IsRest,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query6IsRestEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb318,AI_F_Query_CountFlag4,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10CountFlag4EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb350,AI_F_Query_CheckHorseDeadCause,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckHorseDeadCauseEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb388,AI_F_Query_CheckRupee,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10CheckRupeeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb3c0,AI_F_Query_CheckGameDataInt,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckGameDataIntEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb3f8,AI_F_Query_CheckEquipment,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14CheckEquipmentEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb430,AI_F_Query_DummyQuery,56,_ZN4ksys3act2ai12QueryFactory4makeINS1_10DummyQueryEEEPNS1_5QueryERKNS5_7InitArgEPN4sead4HeapE +0x00000071006eb468,AI_F_Query_ComparePlayerFireResistantLevel,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query31ComparePlayerFireResistantLevelEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb4a0,AI_F_Query_IsWaitRevival,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13IsWaitRevivalEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb4d8,AI_F_Query_CheckAppShopSelect,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckAppShopSelectEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb510,AI_F_Query_CheckSiteBossDamageAnm,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22CheckSiteBossDamageAnmEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb548,AI_F_Query_CheckDeadlyQuestEscapeTiming,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query28CheckDeadlyQuestEscapeTimingEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb580,AI_F_Query_HasPorchArrow,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13HasPorchArrowEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb5b8,AI_F_Query_IsNoEquipArmorAnyTarget,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23IsNoEquipArmorAnyTargetEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb5f0,AI_F_Query_CheckPlayerTemperatureCondition,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query31CheckPlayerTemperatureConditionEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb628,AI_F_Query_HasItemDye,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10HasItemDyeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb660,AI_F_Query_HasEnoughPayment,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16HasEnoughPaymentEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb698,AI_F_Query_ComparePlayerOriginalHeart,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26ComparePlayerOriginalHeartEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb6d0,AI_F_Query_CheckPlayerRideSunazarashi,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26CheckPlayerRideSunazarashiEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb708,AI_F_Query_CheckVacancyItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckVacancyItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb740,AI_F_Query_GeneralChoice2,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14GeneralChoice2EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb778,AI_F_Query_RandomChoice8,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13RandomChoice8EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb7b0,AI_F_Query_CheckPorchInItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckPorchInItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb7e8,AI_F_Query_CheckPlayerDeadCause,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckPlayerDeadCauseEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb820,AI_F_Query_CheckEquipArmorSeriesType,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query25CheckEquipArmorSeriesTypeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb858,AI_F_Query_CheckExtraLifeOfPlayer,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22CheckExtraLifeOfPlayerEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb890,AI_F_Query_IsOwnedHorseAssociated,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22IsOwnedHorseAssociatedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb8c8,AI_F_Query_RandomChoice4,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13RandomChoice4EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb900,AI_F_Query_HasPorchItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12HasPorchItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb938,AI_F_Query_IsCurrentCDungeonStage,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22IsCurrentCDungeonStageEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb970,AI_F_Query_CheckEatActor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13CheckEatActorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb9a8,AI_F_Query_ComparePlayerHeart,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18ComparePlayerHeartEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eb9e0,AI_F_Query_CheckExistActor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15CheckExistActorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eba18,AI_F_Query_CheckGetDemoTypeFromArg,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckGetDemoTypeFromArgEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eba50,AI_F_Query_CheckRainRatio,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14CheckRainRatioEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eba88,AI_F_Query_CheckPlayerFastFadeDead,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckPlayerFastFadeDeadEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebac0,AI_F_Query_CheckBalladOfHeroActiveTiming,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query29CheckBalladOfHeroActiveTimingEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebaf8,AI_F_Query_WhatMoonName,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query12WhatMoonNameEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebb30,AI_F_Query_GeneralChoice4,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14GeneralChoice4EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebb68,AI_F_Query_CheckActorAction,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckActorActionEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebba0,AI_F_Query_CheckE3Mode,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query11CheckE3ModeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebbd8,AI_F_Query_HasCookResultInPorch,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20HasCookResultInPorchEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebc10,AI_F_Query_CheckDownloadItemNum,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckDownloadItemNumEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebc48,AI_F_Query_GeneralChoice8,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14GeneralChoice8EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebc80,AI_F_Query_BranchByDyeColor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16BranchByDyeColorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebcb8,AI_F_Query_RandomChoice2,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13RandomChoice2EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebcf0,AI_F_Query_CheckDistanceFromPlayer,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckDistanceFromPlayerEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebd28,AI_F_Query_HasArmorAlreadyDyed,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19HasArmorAlreadyDyedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebd60,AI_F_Query_IsHorseNumMax,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13IsHorseNumMaxEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebd98,AI_F_Query_CheckJustBeforeEventCancel,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26CheckJustBeforeEventCancelEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebdd0,AI_F_Query_CheckIsOpenItemCategory,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckIsOpenItemCategoryEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebe08,AI_F_Query_CheckNumOfBuyPicture,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckNumOfBuyPictureEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebe40,AI_F_Query_WhatCurrentItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15WhatCurrentItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebe78,AI_F_Query_CheckFame,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query9CheckFameEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebeb0,AI_F_Query_BranchByGameOver,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16BranchByGameOverEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebee8,AI_F_Query_CheckPlayerEquip,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckPlayerEquipEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebf20,AI_F_Query_CheckSellResult,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15CheckSellResultEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebf58,AI_F_Query_ComparePlayerMaxHeart,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21ComparePlayerMaxHeartEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebf90,AI_F_Query_CompareGameDataFloat,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CompareGameDataFloatEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ebfc8,AI_F_Query_CheckPlayerHellType,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckPlayerHellTypeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec000,AI_F_Query_ComparePlayerMaxStamina,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23ComparePlayerMaxStaminaEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec038,AI_F_Query_CheckRoad,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query9CheckRoadEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec070,AI_F_Query_CheckExtraEnergyOfPlayer,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24CheckExtraEnergyOfPlayerEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec0a8,AI_F_Query_CheckAreaTransition,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckAreaTransitionEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec0e0,AI_F_Query_HasArmorDye,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query11HasArmorDyeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec118,AI_F_Query_HasItemDyeSpecifiedColor,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24HasItemDyeSpecifiedColorEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec150,AI_F_Query_IsAwakened,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10IsAwakenedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec188,AI_F_Query_CheckItemShopDecide,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckItemShopDecideEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec1c0,AI_F_Query_CheckTypeOfWildHorseAssociated,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query30CheckTypeOfWildHorseAssociatedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec1f8,AI_F_Query_CheckElapsedTimeOfMiniGame,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26CheckElapsedTimeOfMiniGameEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec230,AI_F_Query_WhatDungeonType,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15WhatDungeonTypeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec268,AI_F_Query_CheckTimeType,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13CheckTimeTypeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec2a0,AI_F_Query_CheckReceiveTerrorLevel,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckReceiveTerrorLevelEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec2d8,AI_F_Query_HasSpecificArmorSeries,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22HasSpecificArmorSeriesEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec310,AI_F_Query_CheckCookResultStatus,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21CheckCookResultStatusEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec348,AI_F_Query_CompareGameDataTime,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CompareGameDataTimeEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec380,AI_F_Query_IsItemInStock,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13IsItemInStockEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec3b8,AI_F_Query_CheckMiniGameTimeOver,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21CheckMiniGameTimeOverEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec3f0,AI_F_Query_HasPorchItemByCategory,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22HasPorchItemByCategoryEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec428,AI_F_Query_HasPouchItemByPouchCategory,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query27HasPouchItemByPouchCategoryEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec460,AI_F_Query_IsSoldOut,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query9IsSoldOutEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec498,AI_F_Query_IsHorseFamiliarityPassedAlready,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query31IsHorseFamiliarityPassedAlreadyEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec4d0,AI_F_Query_CheckContainerItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckContainerItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec508,AI_F_Query_CheckAddPorchItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query17CheckAddPorchItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec540,AI_F_Query_CheckResultOfNPCConflict,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query24CheckResultOfNPCConflictEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec578,AI_F_Query_CheckManufactResult,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckManufactResultEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec5b0,AI_F_Query_CheckActorAction14_2,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckActorAction14_2EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec5e8,AI_F_Query_Check100EnemyActiveTiming,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query25Check100EnemyActiveTimingEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec620,AI_F_Query_IsIgnitionByArrowFire,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21IsIgnitionByArrowFireEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec658,AI_F_Query_CheckFadeState,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query14CheckFadeStateEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec690,AI_F_Query_IsOnEnterDungeonFlag,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20IsOnEnterDungeonFlagEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec6c8,AI_F_Query_CheckItemShopSelect,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19CheckItemShopSelectEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec700,AI_F_Query_HasSetItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10HasSetItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec738,AI_F_Query_CheckOwnedHorseFamiliarity,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query26CheckOwnedHorseFamiliarityEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec770,AI_F_Query_CheckExistArrow,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query15CheckExistArrowEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec7a8,AI_F_Query_RandomChoice3,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13RandomChoice3EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec7e0,AI_F_Query_CheckPlayerPullSwordFailEnd,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query27CheckPlayerPullSwordFailEndEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec818,AI_F_Query_IsCurrentMainFieldDungeonStage,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query30IsCurrentMainFieldDungeonStageEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec850,AI_F_Query_EnemyDieCheck,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13EnemyDieCheckEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec888,AI_F_Query_CheckFlag,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query9CheckFlagEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec8c0,AI_F_Query_CheckItemShopSelectBuy,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22CheckItemShopSelectBuyEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec8f8,AI_F_Query_IsNeedEquipWeapon,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query17IsNeedEquipWeaponEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec930,AI_F_Query_IsArriveAnchorForRain,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query21IsArriveAnchorForRainEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec968,AI_F_Query_CheckTerrorLevel,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckTerrorLevelEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec9a0,AI_F_Query_IsOnInstEventFlag,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query17IsOnInstEventFlagEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ec9d8,AI_F_Query_CheckWeaponVacancyItem,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query22CheckWeaponVacancyItemEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eca10,AI_F_Query_CheckEventCancel,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckEventCancelEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eca48,AI_F_Query_CheckStage,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query10CheckStageEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006eca80,AI_F_Query_CheckPlayerState,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query16CheckPlayerStateEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecab8,AI_F_Query_IsCurrentMainFieldStage,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23IsCurrentMainFieldStageEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecaf0,AI_F_Query_CheckDieCnt,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query11CheckDieCntEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecb28,AI_F_Query_CheckLastDamageAttacker,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query23CheckLastDamageAttackerEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecb60,AI_F_Query_CheckPlayerRideHorse,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query20CheckPlayerRideHorseEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecb98,AI_F_Query_CanMarkMapPin,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query13CanMarkMapPinEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecbd0,AI_F_Query_IsTerrorDisappeared,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query19IsTerrorDisappearedEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecc08,AI_F_Query_CheckActorAction13,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query18CheckActorAction13EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE +0x00000071006ecc40,AI_F_Query_EnemyRestLifeRate,56,_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query17EnemyRestLifeRateEEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE 0x00000071006ecc78,sub_71006ECC78,144, 0x00000071006ecd08,sub_71006ECD08,100, 0x00000071006ecd6c,sub_71006ECD6C,416, diff --git a/src/Game/AI/CMakeLists.txt b/src/Game/AI/CMakeLists.txt index c7a5a261..cab7162c 100644 --- a/src/Game/AI/CMakeLists.txt +++ b/src/Game/AI/CMakeLists.txt @@ -1,2 +1,7 @@ add_subdirectory(Action) add_subdirectory(Query) + +target_sources(uking PRIVATE + aiQueryFactories.cpp + aiQueryFactories.h +) diff --git a/src/Game/AI/aiQueryFactories.cpp b/src/Game/AI/aiQueryFactories.cpp new file mode 100644 index 00000000..cb87c8f0 --- /dev/null +++ b/src/Game/AI/aiQueryFactories.cpp @@ -0,0 +1,351 @@ +// DO NOT MAKE MAJOR EDITS. This file is automatically generated. +// For major edits, please edit the generator script (ai_generate_queries.py) instead. +// If edits are made to this file, make sure they are not lost when the generator is re-run. + +#include "Game/AI/aiQueryFactories.h" +#include +#include "Game/AI/Query/queryBranchByDyeColor.h" +#include "Game/AI/Query/queryBranchByGameOver.h" +#include "Game/AI/Query/queryCanCreateMakeItemList.h" +#include "Game/AI/Query/queryCanMarkMapPin.h" +#include "Game/AI/Query/queryCheck100EnemyActiveTiming.h" +#include "Game/AI/Query/queryCheckActorAction.h" +#include "Game/AI/Query/queryCheckActorAction13.h" +#include "Game/AI/Query/queryCheckActorAction14_2.h" +#include "Game/AI/Query/queryCheckAddPorchItem.h" +#include "Game/AI/Query/queryCheckAppPoint.h" +#include "Game/AI/Query/queryCheckAppShopSelect.h" +#include "Game/AI/Query/queryCheckAreaTransition.h" +#include "Game/AI/Query/queryCheckBalladOfHeroActiveTiming.h" +#include "Game/AI/Query/queryCheckContainerItem.h" +#include "Game/AI/Query/queryCheckCookResultStatus.h" +#include "Game/AI/Query/queryCheckCurrentMap.h" +#include "Game/AI/Query/queryCheckCurseRRetryEverOnce.h" +#include "Game/AI/Query/queryCheckDeadHorseResistered.h" +#include "Game/AI/Query/queryCheckDeadlyQuestEscapeTiming.h" +#include "Game/AI/Query/queryCheckDieCnt.h" +#include "Game/AI/Query/queryCheckDistanceForWarp.h" +#include "Game/AI/Query/queryCheckDistanceFromPlayer.h" +#include "Game/AI/Query/queryCheckDownloadItemNum.h" +#include "Game/AI/Query/queryCheckDuringBloodyMoon.h" +#include "Game/AI/Query/queryCheckDyeShopSelect.h" +#include "Game/AI/Query/queryCheckE3Mode.h" +#include "Game/AI/Query/queryCheckEatActor.h" +#include "Game/AI/Query/queryCheckElapsedTimeOfMiniGame.h" +#include "Game/AI/Query/queryCheckEquipArmorSeriesType.h" +#include "Game/AI/Query/queryCheckEquipItemType.h" +#include "Game/AI/Query/queryCheckEquipment.h" +#include "Game/AI/Query/queryCheckEventCancel.h" +#include "Game/AI/Query/queryCheckExistActor.h" +#include "Game/AI/Query/queryCheckExistArrow.h" +#include "Game/AI/Query/queryCheckExtraEnergyOfPlayer.h" +#include "Game/AI/Query/queryCheckExtraLifeOfPlayer.h" +#include "Game/AI/Query/queryCheckFadeState.h" +#include "Game/AI/Query/queryCheckFame.h" +#include "Game/AI/Query/queryCheckFlag.h" +#include "Game/AI/Query/queryCheckGameDataFloat.h" +#include "Game/AI/Query/queryCheckGameDataInt.h" +#include "Game/AI/Query/queryCheckGetDemoTypeFromArg.h" +#include "Game/AI/Query/queryCheckGiveReward.h" +#include "Game/AI/Query/queryCheckHasManifactureArmor.h" +#include "Game/AI/Query/queryCheckHorseCustomizeSelect.h" +#include "Game/AI/Query/queryCheckHorseDeadCause.h" +#include "Game/AI/Query/queryCheckHorseRegistered.h" +#include "Game/AI/Query/queryCheckHorseTakenOut.h" +#include "Game/AI/Query/queryCheckIsOpenItemCategory.h" +#include "Game/AI/Query/queryCheckItemShopDecide.h" +#include "Game/AI/Query/queryCheckItemShopPorchVacancy.h" +#include "Game/AI/Query/queryCheckItemShopSelect.h" +#include "Game/AI/Query/queryCheckItemShopSelectBuy.h" +#include "Game/AI/Query/queryCheckJustBeforeEventCancel.h" +#include "Game/AI/Query/queryCheckLastDamageAttacker.h" +#include "Game/AI/Query/queryCheckManufactResult.h" +#include "Game/AI/Query/queryCheckMapArea.h" +#include "Game/AI/Query/queryCheckMasterSwordState.h" +#include "Game/AI/Query/queryCheckMaterialValue.h" +#include "Game/AI/Query/queryCheckMiniGameTime.h" +#include "Game/AI/Query/queryCheckMiniGameTimeOver.h" +#include "Game/AI/Query/queryCheckNumOfBuyPicture.h" +#include "Game/AI/Query/queryCheckOwnedHorseFamiliarity.h" +#include "Game/AI/Query/queryCheckPictureBookVacancy.h" +#include "Game/AI/Query/queryCheckPlacedItemSaled.h" +#include "Game/AI/Query/queryCheckPlayerDeadCause.h" +#include "Game/AI/Query/queryCheckPlayerEquip.h" +#include "Game/AI/Query/queryCheckPlayerFastFadeDead.h" +#include "Game/AI/Query/queryCheckPlayerHellType.h" +#include "Game/AI/Query/queryCheckPlayerPullSwordFailEnd.h" +#include "Game/AI/Query/queryCheckPlayerRideHorse.h" +#include "Game/AI/Query/queryCheckPlayerRideSunazarashi.h" +#include "Game/AI/Query/queryCheckPlayerState.h" +#include "Game/AI/Query/queryCheckPlayerTemperatureCondition.h" +#include "Game/AI/Query/queryCheckPlayerWeaponFired.h" +#include "Game/AI/Query/queryCheckPorchInItem.h" +#include "Game/AI/Query/queryCheckProConUse.h" +#include "Game/AI/Query/queryCheckRainRatio.h" +#include "Game/AI/Query/queryCheckRankOfEnemyAttackedNPC.h" +#include "Game/AI/Query/queryCheckReceiveTerrorLevel.h" +#include "Game/AI/Query/queryCheckResultOfNPCConflict.h" +#include "Game/AI/Query/queryCheckRoad.h" +#include "Game/AI/Query/queryCheckRupee.h" +#include "Game/AI/Query/queryCheckSelectPicture.h" +#include "Game/AI/Query/queryCheckSellResult.h" +#include "Game/AI/Query/queryCheckShopSelectedItemName.h" +#include "Game/AI/Query/queryCheckSiteBossDamageAnm.h" +#include "Game/AI/Query/queryCheckStage.h" +#include "Game/AI/Query/queryCheckStarter.h" +#include "Game/AI/Query/queryCheckTerrorLevel.h" +#include "Game/AI/Query/queryCheckTime.h" +#include "Game/AI/Query/queryCheckTimeType.h" +#include "Game/AI/Query/queryCheckTypeOfOwnedHorseForEvent.h" +#include "Game/AI/Query/queryCheckTypeOfWildHorseAssociated.h" +#include "Game/AI/Query/queryCheckVacancyItem.h" +#include "Game/AI/Query/queryCheckWarpMist.h" +#include "Game/AI/Query/queryCheckWeaponVacancyItem.h" +#include "Game/AI/Query/queryCheckWeather.h" +#include "Game/AI/Query/queryCompareGameDataFloat.h" +#include "Game/AI/Query/queryCompareGameDataInt.h" +#include "Game/AI/Query/queryCompareGameDataTime.h" +#include "Game/AI/Query/queryComparePlayerFireResistantLevel.h" +#include "Game/AI/Query/queryComparePlayerHeart.h" +#include "Game/AI/Query/queryComparePlayerMaxHeart.h" +#include "Game/AI/Query/queryComparePlayerMaxStamina.h" +#include "Game/AI/Query/queryComparePlayerOriginalHeart.h" +#include "Game/AI/Query/queryCountFlag4.h" +#include "Game/AI/Query/queryEnemyDieCheck.h" +#include "Game/AI/Query/queryEnemyRestLifeRate.h" +#include "Game/AI/Query/queryGeneralChoice2.h" +#include "Game/AI/Query/queryGeneralChoice3.h" +#include "Game/AI/Query/queryGeneralChoice4.h" +#include "Game/AI/Query/queryGeneralChoice8.h" +#include "Game/AI/Query/queryHasArmorAlreadyDyed.h" +#include "Game/AI/Query/queryHasArmorDye.h" +#include "Game/AI/Query/queryHasCookResultInPorch.h" +#include "Game/AI/Query/queryHasEnoughPayment.h" +#include "Game/AI/Query/queryHasItemDye.h" +#include "Game/AI/Query/queryHasItemDyeSpecifiedColor.h" +#include "Game/AI/Query/queryHasPorchArrow.h" +#include "Game/AI/Query/queryHasPorchItem.h" +#include "Game/AI/Query/queryHasPorchItemByCategory.h" +#include "Game/AI/Query/queryHasPouchItemByPouchCategory.h" +#include "Game/AI/Query/queryHasSetItem.h" +#include "Game/AI/Query/queryHasSpecificArmorSeries.h" +#include "Game/AI/Query/queryIsAppAlreadyExchanged.h" +#include "Game/AI/Query/queryIsArriveAnchorForRain.h" +#include "Game/AI/Query/queryIsAwakened.h" +#include "Game/AI/Query/queryIsBloodyMoonTrig.h" +#include "Game/AI/Query/queryIsCurrentAocFieldStage.h" +#include "Game/AI/Query/queryIsCurrentCDungeonStage.h" +#include "Game/AI/Query/queryIsCurrentMainFieldDungeonStage.h" +#include "Game/AI/Query/queryIsCurrentMainFieldStage.h" +#include "Game/AI/Query/queryIsEquipedDyedArmor.h" +#include "Game/AI/Query/queryIsEquippedEnableDye.h" +#include "Game/AI/Query/queryIsEquippedWithLowerBody.h" +#include "Game/AI/Query/queryIsHorseFamiliarityPassedAlready.h" +#include "Game/AI/Query/queryIsHorseNumMax.h" +#include "Game/AI/Query/queryIsIgnitionByArrowFire.h" +#include "Game/AI/Query/queryIsItemInStock.h" +#include "Game/AI/Query/queryIsNeedEquipWeapon.h" +#include "Game/AI/Query/queryIsNoEquipArmorAnyTarget.h" +#include "Game/AI/Query/queryIsOffLinkTag.h" +#include "Game/AI/Query/queryIsOnEnterDungeonFlag.h" +#include "Game/AI/Query/queryIsOnInstEventFlag.h" +#include "Game/AI/Query/queryIsOwnedHorseAssociated.h" +#include "Game/AI/Query/queryIsPlayerGrounded.h" +#include "Game/AI/Query/queryIsRest.h" +#include "Game/AI/Query/queryIsRideHorse.h" +#include "Game/AI/Query/queryIsSoldOut.h" +#include "Game/AI/Query/queryIsSuccessEndLastDemoAction.h" +#include "Game/AI/Query/queryIsTerrorDisappeared.h" +#include "Game/AI/Query/queryIsWaitRevival.h" +#include "Game/AI/Query/queryIsWeaponDrawn.h" +#include "Game/AI/Query/queryKeyInputCheck.h" +#include "Game/AI/Query/queryRandomChoice2.h" +#include "Game/AI/Query/queryRandomChoice3.h" +#include "Game/AI/Query/queryRandomChoice4.h" +#include "Game/AI/Query/queryRandomChoice8.h" +#include "Game/AI/Query/queryRandomChoiceExceptOnFlag.h" +#include "Game/AI/Query/queryWhatCurrentItem.h" +#include "Game/AI/Query/queryWhatDayOfTheWeek.h" +#include "Game/AI/Query/queryWhatDungeonType.h" +#include "Game/AI/Query/queryWhatMoonName.h" +#include "KingSystem/ActorSystem/actAiQueries.h" +#include "KingSystem/ActorSystem/actAiQuery.h" +#include "KingSystem/ActorSystem/queryDummyQuery.h" + +namespace uking { + +using Factory = ksys::act::ai::QueryFactory; + +static ksys::act::ai::QueryFactory sQueryFactories[] = { + {0x00f284eb, Factory::make}, + {0x011adade, Factory::make}, + {0x01537944, Factory::make}, + {0x0a457b63, Factory::make}, + {0x0b84de7f, Factory::make}, + {0x104fa725, Factory::make}, + {0x10f6317c, Factory::make}, + {0x1114b11c, Factory::make}, + {0x111b1ea5, Factory::make}, + {0x119d690c, Factory::make}, + {0x13601638, Factory::make}, + {0x1491e6db, Factory::make}, + {0x14a31adf, Factory::make}, + {0x15995510, Factory::make}, + {0x179f2f26, Factory::make}, + {0x18aad679, Factory::make}, + {0x18c87da4, Factory::make}, + {0x19d08c2a, Factory::make}, + {0x1a02a525, Factory::make}, + {0x1b0ddfc3, Factory::make}, + {0x1f3fdfc6, Factory::make}, + {0x21171d40, Factory::make}, + {0x242a4eea, Factory::make}, + {0x26f46b0d, Factory::make}, + {0x273e5dee, Factory::make}, + {0x2754bd6c, Factory::make}, + {0x279054bd, Factory::make}, + {0x2e7d60bc, Factory::make}, + {0x2f7e3c79, Factory::make}, + {0x3200fcb3, Factory::make}, + {0x3293c243, Factory::make}, + {0x329453e0, Factory::make}, + {0x383c25ee, Factory::make}, + {0x39a8f9ac, Factory::make}, + {0x3f91ea1a, Factory::make}, + {0x40da7f69, Factory::make}, + {0x4563a203, Factory::make}, + {0x466ffb31, Factory::make}, + {0x479f4be0, Factory::make}, + {0x47c59074, Factory::make}, + {0x4b19f284, Factory::make}, + {0x4b9c4380, Factory::make}, + {0x52edf76e, Factory::make}, + {0x541025b5, Factory::make}, + {0x55f620ef, Factory::make}, + {0x56330fc5, Factory::make}, + {0x593aeafb, Factory::make}, + {0x5a267486, Factory::make}, + {0x5b8531ea, Factory::make}, + {0x5e0930ab, Factory::make}, + {0x5e30f736, Factory::make}, + {0x5e4b5e37, Factory::make}, + {0x5f35aa5a, Factory::make}, + {0x5f93f5f6, Factory::make}, + {0x6013e082, Factory::make}, + {0x63148c7e, Factory::make}, + {0x6593295f, Factory::make}, + {0x668f18a7, Factory::make}, + {0x67f56d1d, Factory::make}, + {0x692f3d2e, Factory::make}, + {0x695ba369, Factory::make}, + {0x69850566, Factory::make}, + {0x69e3a6cc, Factory::make}, + {0x6a28f65c, Factory::make}, + {0x6a65ae75, Factory::make}, + {0x6ad7618a, Factory::make}, + {0x6be9ad36, Factory::make}, + {0x6cfae748, Factory::make}, + {0x6ed7bcbc, Factory::make}, + {0x71deee37, Factory::make}, + {0x743f140f, Factory::make}, + {0x749d8ed7, Factory::make}, + {0x74a44ed1, Factory::make}, + {0x7804223d, Factory::make}, + {0x78536534, Factory::make}, + {0x7868a21c, Factory::make}, + {0x78bf5625, Factory::make}, + {0x798799cb, Factory::make}, + {0x7b91718e, Factory::make}, + {0x7ca25d9f, Factory::make}, + {0x7edd580d, Factory::make}, + {0x7f950ed0, Factory::make}, + {0x7fe578d7, Factory::make}, + {0x8021dd19, Factory::make}, + {0x811c21e6, Factory::make}, + {0x85d86eb1, Factory::make}, + {0x87b41989, Factory::make}, + {0x87faaf7c, Factory::make}, + {0x88949f2a, Factory::make}, + {0x8a6f4de8, Factory::make}, + {0x8c3dea42, Factory::make}, + {0x8e0255a2, Factory::make}, + {0x90477720, Factory::make}, + {0x910b0729, Factory::make}, + {0x979ded52, Factory::make}, + {0x98297948, Factory::make}, + {0x988da1f6, Factory::make}, + {0x98934f65, Factory::make}, + {0x9909e013, Factory::make}, + {0x9a1ef0c2, Factory::make}, + {0x9f439257, Factory::make}, + {0xa1f5ee43, Factory::make}, + {0xa3479bb1, Factory::make}, + {0xa5abed4c, Factory::make}, + {0xa6b54a76, Factory::make}, + {0xa6f521c1, Factory::make}, + {0xa9bfdafe, Factory::make}, + {0xae2fac6a, Factory::make}, + {0xaf4d3b5c, Factory::make}, + {0xafa27c1b, Factory::make}, + {0xb1af10f2, Factory::make}, + {0xb3b3e50c, Factory::make}, + {0xb44f3c12, Factory::make}, + {0xb4506d9a, Factory::make}, + {0xb55dd6c1, Factory::make}, + {0xb62b2566, Factory::make}, + {0xb70beba6, Factory::make}, + {0xb9a274e8, Factory::make}, + {0xba1e274f, Factory::make}, + {0xc35a0cd9, Factory::make}, + {0xc3bfae2a, Factory::make}, + {0xc4e7d5df, Factory::make}, + {0xc4f7316f, Factory::make}, + {0xc59e26da, Factory::make}, + {0xc6bd2d35, Factory::make}, + {0xc7641ec2, Factory::make}, + {0xc7b0c4b4, Factory::make}, + {0xc9aa53ff, Factory::make}, + {0xcb187157, Factory::make}, + {0xcc8c5c6e, Factory::make}, + {0xcca94665, Factory::make}, + {0xcfb8756a, Factory::make}, + {0xcfd37d18, Factory::make}, + {0xd052b6b8, Factory::make}, + {0xd1070742, Factory::make}, + {0xd23283af, Factory::make}, + {0xd95342d1, Factory::make}, + {0xda2a902d, Factory::make}, + {0xdaeced1e, Factory::make}, + {0xdc704842, Factory::make}, + {0xdf1b5246, Factory::make}, + {0xe17fc869, Factory::make}, + {0xe29fe0ca, Factory::make}, + {0xe60c37bf, Factory::make}, + {0xe6a386e7, Factory::make}, + {0xe6c6fbc5, Factory::make}, + {0xe78234da, Factory::make}, + {0xeb965330, Factory::make}, + {0xec7529d4, Factory::make}, + {0xecfe1e50, Factory::make}, + {0xed049add, Factory::make}, + {0xeda9870b, Factory::make}, + {0xf0074ef3, Factory::make}, + {0xf39c6c52, Factory::make}, + {0xf3bfbc24, Factory::make}, + {0xf445bb27, Factory::make}, + {0xf44bfc07, Factory::make}, + {0xf4db0067, Factory::make}, + {0xf5e56bc8, Factory::make}, + {0xf601bdf7, Factory::make}, + {0xf7cc0cc6, Factory::make}, + {0xf7dce469, Factory::make}, + {0xfaad5f7c, Factory::make}, + {0xfdb77b22, Factory::make}, + {0xfe30a6c1, Factory::make}, +}; + +void initQueryFactories() { + ksys::act::ai::Queries::setFactories(std::size(sQueryFactories), sQueryFactories); +} + +} // namespace uking diff --git a/src/Game/AI/aiQueryFactories.h b/src/Game/AI/aiQueryFactories.h new file mode 100644 index 00000000..6d6a0c02 --- /dev/null +++ b/src/Game/AI/aiQueryFactories.h @@ -0,0 +1,7 @@ +#pragma once + +namespace uking { + +void initQueryFactories(); + +} // namespace uking diff --git a/src/KingSystem/ActorSystem/actAiQuery.h b/src/KingSystem/ActorSystem/actAiQuery.h index 837c491f..8431c920 100644 --- a/src/KingSystem/ActorSystem/actAiQuery.h +++ b/src/KingSystem/ActorSystem/actAiQuery.h @@ -85,6 +85,11 @@ struct QueryFactory { using CreateFn = Query* (*)(const Query::InitArg& arg, sead::Heap* heap); u32 hash; CreateFn create_fn; + + template + static Query* make(const Query::InitArg& arg, sead::Heap* heap) { + return new (heap) T(arg); + } }; } // namespace ksys::act::ai diff --git a/tools/ai_generate_queries.py b/tools/ai_generate_queries.py index 0426ea58..93df975b 100755 --- a/tools/ai_generate_queries.py +++ b/tools/ai_generate_queries.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 import argparse +import zlib +from typing import List + import oead from pathlib import Path import textwrap @@ -136,6 +139,45 @@ def generate_query(class_dir: Path, name: str, query) -> None: (class_dir / f"query{name}.cpp").write_text("\n".join(out)) +def generate_query_factories(class_dir: Path, aidef) -> None: + queries: List[str] = [] + for query_name, data in aidef["Querys"].items(): + if isinstance(data, oead.byml.Hash) and dict(data).get("SystemQuery", False): + continue + queries.append(query_name) + + out = [] + out.append("""\ +// DO NOT MAKE MAJOR EDITS. This file is automatically generated. +// For major edits, please edit the generator script (ai_generate_queries.py) instead. +// If edits are made to this file, make sure they are not lost when the generator is re-run. +""") + out.append('#include "Game/AI/aiQueryFactories.h"') + out.append('#include ') + for query_name in queries: + query_name = query_name[0].upper() + query_name[1:] + out.append(f'#include "Game/AI/Query/query{query_name}.h"') + out.append('#include "KingSystem/ActorSystem/actAiQueries.h"') + out.append('#include "KingSystem/ActorSystem/actAiQuery.h"') + out.append('') + out.append('namespace uking {') + out.append('') + out.append('using Factory = ksys::act::ai::QueryFactory;') + out.append('') + out.append('static ksys::act::ai::QueryFactory sQueryFactories[] = {') + for query_name in sorted(queries, key=lambda query: zlib.crc32(query.encode())): + class_name = "query::" + query_name[0].upper() + query_name[1:] + out.append(f' {{0x{zlib.crc32(query_name.encode()):08x}, Factory::make<{class_name}>}},') + out.append('};') + out.append('') + out.append('void initQueryFactories() {') + out.append(' ksys::act::ai::Queries::setFactories(std::size(sQueryFactories), sQueryFactories);') + out.append('}') + out.append('') + out.append('} // namespace uking') + (class_dir.parent / f"aiQueryFactories.cpp").write_text("\n".join(out)) + + def main() -> None: src_root = Path(__file__).parent.parent class_dir = src_root / "src" / "Game" / "AI" / "Query" @@ -161,6 +203,8 @@ def main() -> None: print(query_name) count += 1 + generate_query_factories(class_dir, aidef) + print() print(f"{count} queries") diff --git a/tools/ai_identify_matching_stubs.py b/tools/ai_identify_matching_stubs.py index e7b0c109..4f4f58e7 100755 --- a/tools/ai_identify_matching_stubs.py +++ b/tools/ai_identify_matching_stubs.py @@ -61,6 +61,8 @@ def main() -> None: (f"{prefix}rtti1", f"_ZNK5uking5query{len(name)}{name}27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE"), (f"{prefix}rtti2", f"_ZNK5uking5query{len(name)}{name}18getRuntimeTypeInfoEv"), + (f"AI_F_Query_{orig_name}", + f"_ZN4ksys3act2ai12QueryFactory4makeIN5uking5query{len(name)}{name}EEEPNS1_5QueryERKNS7_7InitArgEPN4sead4HeapE"), ] identify(functions, checker, new_matches, aidef, "Querys", get_query_pairs)