From 3869e440e710334dec4aa1c4fe1280c0c55051c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 31 Dec 2020 14:06:35 +0100 Subject: [PATCH] Generate AIs --- data/aidef_ai_params.yml | 5761 +++++++++++++++++ src/Game/AI/AI/CMakeLists.txt | 2524 ++++++++ src/Game/AI/AI/aiASWeaponRoot.cpp | 30 + src/Game/AI/AI/aiASWeaponRoot.h | 32 + src/Game/AI/AI/aiActorWaterDepthSelect.cpp | 27 + src/Game/AI/AI/aiActorWaterDepthSelect.h | 27 + src/Game/AI/AI/aiAddBasicLinkOn.cpp | 26 + src/Game/AI/AI/aiAddBasicLinkOn.h | 25 + src/Game/AI/AI/aiAddCarried.cpp | 25 + src/Game/AI/AI/aiAddCarried.h | 22 + src/Game/AI/AI/aiAddCarriedBase.cpp | 28 + src/Game/AI/AI/aiAddCarriedBase.h | 29 + src/Game/AI/AI/aiAddDemoCall.cpp | 28 + src/Game/AI/AI/aiAddDemoCall.h | 29 + src/Game/AI/AI/aiAddNodeNodeCarried.cpp | 27 + src/Game/AI/AI/aiAddNodeNodeCarried.h | 26 + src/Game/AI/AI/aiAddNoiseToTargetPos.cpp | 32 + src/Game/AI/AI/aiAddNoiseToTargetPos.h | 37 + .../AI/AI/aiAddPlayerLargeAttackJustGuard.cpp | 22 + .../AI/AI/aiAddPlayerLargeAttackJustGuard.h | 20 + src/Game/AI/AI/aiAddSwarmMove.cpp | 31 + src/Game/AI/AI/aiAddSwarmMove.h | 35 + src/Game/AI/AI/aiAddViewTargetPos.cpp | 25 + src/Game/AI/AI/aiAddViewTargetPos.h | 22 + src/Game/AI/AI/aiAddViewTargetPosBase.cpp | 23 + src/Game/AI/AI/aiAddViewTargetPosBase.h | 21 + src/Game/AI/AI/aiAirOctaBoardBurn.cpp | 26 + src/Game/AI/AI/aiAirOctaBoardBurn.h | 24 + src/Game/AI/AI/aiAirOctaBurnReaction.cpp | 29 + src/Game/AI/AI/aiAirOctaBurnReaction.h | 31 + src/Game/AI/AI/aiAirOctaFlyUp.cpp | 27 + src/Game/AI/AI/aiAirOctaFlyUp.h | 27 + src/Game/AI/AI/aiAirOctaReaction.cpp | 26 + src/Game/AI/AI/aiAirOctaReaction.h | 24 + src/Game/AI/AI/aiAirOctaRoot.cpp | 25 + src/Game/AI/AI/aiAirOctaRoot.h | 24 + src/Game/AI/AI/aiAirOctaState.cpp | 29 + src/Game/AI/AI/aiAirOctaState.h | 30 + src/Game/AI/AI/aiAirOctaWait.cpp | 26 + src/Game/AI/AI/aiAirOctaWait.h | 25 + src/Game/AI/AI/aiAlertCreationNestOnTree.cpp | 26 + src/Game/AI/AI/aiAlertCreationNestOnTree.h | 24 + src/Game/AI/AI/aiAmbushableWeaponShoot.cpp | 25 + src/Game/AI/AI/aiAmbushableWeaponShoot.h | 23 + .../AI/AI/aiAnchorRangeSelectTwoAction.cpp | 28 + src/Game/AI/AI/aiAnchorRangeSelectTwoAction.h | 26 + src/Game/AI/AI/aiAncientNecklaceBall.cpp | 28 + src/Game/AI/AI/aiAncientNecklaceBall.h | 28 + src/Game/AI/AI/aiAncientNecklaceBallBase.cpp | 28 + src/Game/AI/AI/aiAncientNecklaceBallBase.h | 30 + src/Game/AI/AI/aiAnimalAttackOtherTarget.cpp | 23 + src/Game/AI/AI/aiAnimalAttackOtherTarget.h | 21 + src/Game/AI/AI/aiAnimalBattleAggressive.cpp | 30 + src/Game/AI/AI/aiAnimalBattleAggressive.h | 32 + src/Game/AI/AI/aiAnimalBattleMoveLeave.cpp | 26 + src/Game/AI/AI/aiAnimalBattleMoveLeave.h | 25 + src/Game/AI/AI/aiAnimalEscapeAI.cpp | 37 + src/Game/AI/AI/aiAnimalEscapeAI.h | 46 + src/Game/AI/AI/aiAnimalEscapeAfterDamage.cpp | 25 + src/Game/AI/AI/aiAnimalEscapeAfterDamage.h | 22 + src/Game/AI/AI/aiAnimalFollowTarget.cpp | 26 + src/Game/AI/AI/aiAnimalFollowTarget.h | 24 + .../AI/AI/aiAnimalLineOfSightSelector.cpp | 29 + src/Game/AI/AI/aiAnimalLineOfSightSelector.h | 31 + src/Game/AI/AI/aiAnimalPreAttack.cpp | 28 + src/Game/AI/AI/aiAnimalPreAttack.h | 29 + src/Game/AI/AI/aiAnimalRangeKeepMove.cpp | 31 + src/Game/AI/AI/aiAnimalRangeKeepMove.h | 35 + .../AI/AI/aiAnimalRangeKeepMoveWithLOS.cpp | 33 + src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h | 37 + src/Game/AI/AI/aiAnimalRoam.cpp | 32 + src/Game/AI/AI/aiAnimalRoam.h | 36 + src/Game/AI/AI/aiAnimalRoamBase.cpp | 37 + src/Game/AI/AI/aiAnimalRoamBase.h | 47 + src/Game/AI/AI/aiAnimalRoamCheckWater.cpp | 27 + src/Game/AI/AI/aiAnimalRoamCheckWater.h | 26 + src/Game/AI/AI/aiAnimalRushAttack.cpp | 27 + src/Game/AI/AI/aiAnimalRushAttack.h | 27 + src/Game/AI/AI/aiAnimalTimelineAI.cpp | 26 + src/Game/AI/AI/aiAnimalTimelineAI.h | 24 + .../AI/aiAppearFromTargetFrontAfterChase.cpp | 23 + .../AI/AI/aiAppearFromTargetFrontAfterChase.h | 23 + .../AI/AI/aiAppearFromTargetFrontGround.cpp | 26 + .../AI/AI/aiAppearFromTargetFrontGround.h | 22 + src/Game/AI/AI/aiAppearNearTarget.cpp | 28 + src/Game/AI/AI/aiAppearNearTarget.h | 29 + .../AI/AI/aiAppearNearTargetOutOfScrnGnd.cpp | 26 + .../AI/AI/aiAppearNearTargetOutOfScrnGnd.h | 22 + src/Game/AI/AI/aiArmorSearchKorokRoot.cpp | 26 + src/Game/AI/AI/aiArmorSearchKorokRoot.h | 25 + src/Game/AI/AI/aiAroundEnemyCheckSelect.cpp | 21 + src/Game/AI/AI/aiAroundEnemyCheckSelect.h | 22 + src/Game/AI/AI/aiArrow.cpp | 23 + src/Game/AI/AI/aiArrow.h | 21 + src/Game/AI/AI/aiArrowChargeAndShoot.cpp | 26 + src/Game/AI/AI/aiArrowChargeAndShoot.h | 24 + src/Game/AI/AI/aiArrowDelete.cpp | 23 + src/Game/AI/AI/aiArrowDelete.h | 21 + src/Game/AI/AI/aiArrowStickAndPick.cpp | 21 + src/Game/AI/AI/aiArrowStickAndPick.h | 28 + src/Game/AI/AI/aiAssassinBattle.cpp | 35 + src/Game/AI/AI/aiAssassinBattle.h | 43 + src/Game/AI/AI/aiAssassinBattleMove.cpp | 26 + src/Game/AI/AI/aiAssassinBattleMove.h | 24 + src/Game/AI/AI/aiAssassinBattleRange.cpp | 30 + src/Game/AI/AI/aiAssassinBattleRange.h | 32 + src/Game/AI/AI/aiAssassinBossAttackSeq.cpp | 25 + src/Game/AI/AI/aiAssassinBossAttackSeq.h | 22 + src/Game/AI/AI/aiAssassinBossBattle.cpp | 32 + src/Game/AI/AI/aiAssassinBossBattle.h | 37 + .../AI/AI/aiAssassinBossEscapeFromTarget.cpp | 28 + .../AI/AI/aiAssassinBossEscapeFromTarget.h | 26 + src/Game/AI/AI/aiAssassinBossFirstBattle.cpp | 29 + src/Game/AI/AI/aiAssassinBossFirstBattle.h | 30 + .../AI/AI/aiAssassinBossFirstBattleMove.cpp | 29 + .../AI/AI/aiAssassinBossFirstBattleMove.h | 29 + .../AI/aiAssassinBossFirstRangeKeepMove.cpp | 28 + .../AI/AI/aiAssassinBossFirstRangeKeepMove.h | 26 + src/Game/AI/AI/aiAssassinBossFirstRoot.cpp | 25 + src/Game/AI/AI/aiAssassinBossFirstRoot.h | 22 + .../AI/AI/aiAssassinBossIronBallAttack.cpp | 27 + src/Game/AI/AI/aiAssassinBossIronBallAttack.h | 25 + src/Game/AI/AI/aiAssassinBossLastAttack.cpp | 26 + src/Game/AI/AI/aiAssassinBossLastAttack.h | 22 + src/Game/AI/AI/aiAssassinBossRoot.cpp | 27 + src/Game/AI/AI/aiAssassinBossRoot.h | 26 + src/Game/AI/AI/aiAssassinBossRootBase.cpp | 27 + src/Game/AI/AI/aiAssassinBossRootBase.h | 26 + src/Game/AI/AI/aiAssassinCallSelect.cpp | 27 + src/Game/AI/AI/aiAssassinCallSelect.h | 26 + .../AI/AI/aiAssassinFieldShooterBattle.cpp | 26 + src/Game/AI/AI/aiAssassinFieldShooterBattle.h | 22 + .../AI/aiAssassinFieldShooterBattleBase.cpp | 32 + .../AI/AI/aiAssassinFieldShooterBattleBase.h | 35 + src/Game/AI/AI/aiAssassinMagicTgtSelect.cpp | 26 + src/Game/AI/AI/aiAssassinMagicTgtSelect.h | 24 + .../AI/AI/aiAssassinMiddleAzitoDlcRoot.cpp | 26 + src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h | 22 + .../AI/aiAssassinMiddleAzitoNoMemberDemo.cpp | 27 + .../AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h | 25 + src/Game/AI/AI/aiAssassinMiddleAzitoRoot.cpp | 28 + src/Game/AI/AI/aiAssassinMiddleAzitoRoot.h | 28 + .../AI/AI/aiAssassinMiddleAzitoRootAccept.cpp | 28 + .../AI/AI/aiAssassinMiddleAzitoRootAccept.h | 26 + .../AI/AI/aiAssassinMiddleDlcGrabAdapter.cpp | 27 + .../AI/AI/aiAssassinMiddleDlcGrabAdapter.h | 24 + src/Game/AI/AI/aiAssassinMiddleMagicAfter.cpp | 27 + src/Game/AI/AI/aiAssassinMiddleMagicAfter.h | 24 + src/Game/AI/AI/aiAssassinMiddleRoot.cpp | 29 + src/Game/AI/AI/aiAssassinMiddleRoot.h | 30 + src/Game/AI/AI/aiAssassinNormal.cpp | 25 + src/Game/AI/AI/aiAssassinNormal.h | 22 + src/Game/AI/AI/aiAssassinRoot.cpp | 31 + src/Game/AI/AI/aiAssassinRoot.h | 34 + .../AI/aiAssassinShooterJuniorAzitoRoot.cpp | 26 + .../AI/AI/aiAssassinShooterJuniorAzitoRoot.h | 22 + src/Game/AI/AI/aiAttackGrave.cpp | 23 + src/Game/AI/AI/aiAttackGrave.h | 21 + src/Game/AI/AI/aiAttackGraveChase.cpp | 29 + src/Game/AI/AI/aiAttackGraveChase.h | 31 + .../AI/AI/aiAttackGraveChaseWithSensor.cpp | 28 + src/Game/AI/AI/aiAttackGraveChaseWithSensor.h | 26 + src/Game/AI/AI/aiAttackHitCheck.cpp | 25 + src/Game/AI/AI/aiAttackHitCheck.h | 23 + src/Game/AI/AI/aiAwarenessScale.cpp | 25 + src/Game/AI/AI/aiAwarenessScale.h | 23 + src/Game/AI/AI/aiBackAttackEnemyBattle.cpp | 26 + src/Game/AI/AI/aiBackAttackEnemyBattle.h | 24 + src/Game/AI/AI/aiBackStepAndAttack.cpp | 31 + src/Game/AI/AI/aiBackStepAndAttack.h | 35 + src/Game/AI/AI/aiBalloonPlantNormal.cpp | 26 + src/Game/AI/AI/aiBalloonPlantNormal.h | 25 + src/Game/AI/AI/aiBarrelBomb.cpp | 23 + src/Game/AI/AI/aiBarrelBomb.h | 23 + src/Game/AI/AI/aiBasicStatusRoot.cpp | 21 + src/Game/AI/AI/aiBasicStatusRoot.h | 20 + .../AI/AI/aiBattleBgmRequestFinishTag.cpp | 23 + src/Game/AI/AI/aiBattleBgmRequestFinishTag.h | 21 + src/Game/AI/AI/aiBeamExplode.cpp | 25 + src/Game/AI/AI/aiBeamExplode.h | 22 + src/Game/AI/AI/aiBeamExplodeBase.cpp | 26 + src/Game/AI/AI/aiBeamExplodeBase.h | 25 + src/Game/AI/AI/aiBeamExplodeEitherHit.cpp | 26 + src/Game/AI/AI/aiBeamExplodeEitherHit.h | 24 + src/Game/AI/AI/aiBeamosCarried.cpp | 26 + src/Game/AI/AI/aiBeamosCarried.h | 24 + src/Game/AI/AI/aiBeeBattle.cpp | 25 + src/Game/AI/AI/aiBeeBattle.h | 22 + src/Game/AI/AI/aiBeeSwarmFindPlayer.cpp | 25 + src/Game/AI/AI/aiBeeSwarmFindPlayer.h | 22 + src/Game/AI/AI/aiBeeSwarmNormal.cpp | 25 + src/Game/AI/AI/aiBeeSwarmNormal.h | 22 + src/Game/AI/AI/aiBeeSwarmReaction.cpp | 23 + src/Game/AI/AI/aiBeeSwarmReaction.h | 21 + src/Game/AI/AI/aiBeeSwarmRoot.cpp | 25 + src/Game/AI/AI/aiBeeSwarmRoot.h | 22 + src/Game/AI/AI/aiBirdDead.cpp | 25 + src/Game/AI/AI/aiBirdDead.h | 23 + src/Game/AI/AI/aiBirdEscape.cpp | 29 + src/Game/AI/AI/aiBirdEscape.h | 31 + src/Game/AI/AI/aiBlownOff.cpp | 25 + src/Game/AI/AI/aiBlownOff.h | 26 + src/Game/AI/AI/aiBocoblinBackStepAttack.cpp | 18 + src/Game/AI/AI/aiBocoblinBackStepAttack.h | 23 + src/Game/AI/AI/aiBokoblinArrowAttack.cpp | 19 + src/Game/AI/AI/aiBokoblinArrowAttack.h | 28 + src/Game/AI/AI/aiBokoblinArrowBattle.cpp | 39 + src/Game/AI/AI/aiBokoblinArrowBattle.h | 56 + src/Game/AI/AI/aiBokoblinHoldArrow.cpp | 15 + src/Game/AI/AI/aiBokoblinHoldArrow.h | 20 + src/Game/AI/AI/aiBokoblinNoise.cpp | 25 + src/Game/AI/AI/aiBokoblinNoise.h | 26 + src/Game/AI/AI/aiBokoblinRestraint.cpp | 26 + src/Game/AI/AI/aiBokoblinRestraint.h | 32 + src/Game/AI/AI/aiBokoblinRoam.cpp | 32 + src/Game/AI/AI/aiBokoblinRoam.h | 51 + src/Game/AI/AI/aiBossBattleRoomRoot.cpp | 33 + src/Game/AI/AI/aiBossBattleRoomRoot.h | 39 + src/Game/AI/AI/aiBowEquiped.cpp | 17 + src/Game/AI/AI/aiBowEquiped.h | 19 + src/Game/AI/AI/aiBowShoot.cpp | 17 + src/Game/AI/AI/aiBowShoot.h | 19 + src/Game/AI/AI/aiBowlPin.cpp | 25 + src/Game/AI/AI/aiBowlPin.h | 23 + src/Game/AI/AI/aiBoxWaterRoot.cpp | 31 + src/Game/AI/AI/aiBoxWaterRoot.h | 37 + src/Game/AI/AI/aiBreathAttackEnemyBattle.cpp | 34 + src/Game/AI/AI/aiBreathAttackEnemyBattle.h | 41 + src/Game/AI/AI/aiBreathEnemyRangeKeepMove.cpp | 33 + src/Game/AI/AI/aiBreathEnemyRangeKeepMove.h | 38 + src/Game/AI/AI/aiCalledEnemyMove.cpp | 27 + src/Game/AI/AI/aiCalledEnemyMove.h | 27 + src/Game/AI/AI/aiCameraAI.cpp | 23 + src/Game/AI/AI/aiCameraAI.h | 21 + src/Game/AI/AI/aiCameraBow.cpp | 7 + src/Game/AI/AI/aiCameraBow.h | 16 + src/Game/AI/AI/aiCameraEditRoot.cpp | 11 + src/Game/AI/AI/aiCameraEditRoot.h | 17 + src/Game/AI/AI/aiCameraEvent.cpp | 7 + src/Game/AI/AI/aiCameraEvent.h | 16 + .../AI/AI/aiCameraEventReturnSavePoint.cpp | 7 + src/Game/AI/AI/aiCameraEventReturnSavePoint.h | 16 + src/Game/AI/AI/aiCameraEventTalk.cpp | 9 + src/Game/AI/AI/aiCameraEventTalk.h | 17 + src/Game/AI/AI/aiCameraEventTalkAI.cpp | 7 + src/Game/AI/AI/aiCameraEventTalkAI.h | 16 + src/Game/AI/AI/aiCameraEventTalkAIRet.cpp | 7 + src/Game/AI/AI/aiCameraEventTalkAIRet.h | 16 + src/Game/AI/AI/aiCameraGameRoot.cpp | 7 + src/Game/AI/AI/aiCameraGameRoot.h | 16 + src/Game/AI/AI/aiCameraRoot.cpp | 9 + src/Game/AI/AI/aiCameraRoot.h | 17 + src/Game/AI/AI/aiCameraTool.cpp | 9 + src/Game/AI/AI/aiCameraTool.h | 17 + src/Game/AI/AI/aiCannonBallRoot.cpp | 23 + src/Game/AI/AI/aiCannonBallRoot.h | 21 + src/Game/AI/AI/aiCapturedActDeadSelector.cpp | 27 + src/Game/AI/AI/aiCapturedActDeadSelector.h | 23 + src/Game/AI/AI/aiCapturedActorReaction.cpp | 23 + src/Game/AI/AI/aiCapturedActorReaction.h | 21 + .../AI/AI/aiCapturedActorReactionChemical.cpp | 26 + .../AI/AI/aiCapturedActorReactionChemical.h | 23 + src/Game/AI/AI/aiCarryBox.cpp | 23 + src/Game/AI/AI/aiCarryBox.h | 21 + src/Game/AI/AI/aiCastleLynelBattle.cpp | 25 + src/Game/AI/AI/aiCastleLynelBattle.h | 22 + src/Game/AI/AI/aiChangeWeatherTagRoot.cpp | 34 + src/Game/AI/AI/aiChangeWeatherTagRoot.h | 44 + src/Game/AI/AI/aiChangeWindTagRoot.cpp | 26 + src/Game/AI/AI/aiChangeWindTagRoot.h | 25 + src/Game/AI/AI/aiChaseSound.cpp | 26 + src/Game/AI/AI/aiChaseSound.h | 32 + src/Game/AI/AI/aiChemicalEnemyFindPlayer.cpp | 22 + src/Game/AI/AI/aiChemicalEnemyFindPlayer.h | 21 + src/Game/AI/AI/aiChemicalEnemyRoot.cpp | 20 + src/Game/AI/AI/aiChemicalEnemyRoot.h | 26 + src/Game/AI/AI/aiChemicalExplode.cpp | 23 + src/Game/AI/AI/aiChemicalExplode.h | 21 + src/Game/AI/AI/aiChemicalGiantArmorRoot.cpp | 27 + src/Game/AI/AI/aiChemicalGiantArmorRoot.h | 26 + src/Game/AI/AI/aiChemicalStayObjectRoot.cpp | 25 + src/Game/AI/AI/aiChemicalStayObjectRoot.h | 23 + src/Game/AI/AI/aiChemicalWeaponRoot.cpp | 13 + src/Game/AI/AI/aiChemicalWeaponRoot.h | 19 + src/Game/AI/AI/aiChildDeviceReflectArrow.cpp | 20 + src/Game/AI/AI/aiChildDeviceReflectArrow.h | 26 + src/Game/AI/AI/aiChildFavoriteSelector.cpp | 25 + src/Game/AI/AI/aiChildFavoriteSelector.h | 22 + .../AI/AI/aiChildFavoriteSelectorBase.cpp | 26 + src/Game/AI/AI/aiChildFavoriteSelectorBase.h | 25 + src/Game/AI/AI/aiChildHaveSelect.cpp | 25 + src/Game/AI/AI/aiChildHaveSelect.h | 23 + src/Game/AI/AI/aiChmCheck.cpp | 25 + src/Game/AI/AI/aiChmCheck.h | 23 + src/Game/AI/AI/aiChmVolRateCheck.cpp | 30 + src/Game/AI/AI/aiChmVolRateCheck.h | 33 + src/Game/AI/AI/aiChmVolRateCheckBlankOk.cpp | 30 + src/Game/AI/AI/aiChmVolRateCheckBlankOk.h | 33 + src/Game/AI/AI/aiChuchuDieSelect.cpp | 25 + src/Game/AI/AI/aiChuchuDieSelect.h | 22 + src/Game/AI/AI/aiChuchuJellyRoot.cpp | 25 + src/Game/AI/AI/aiChuchuJellyRoot.h | 22 + src/Game/AI/AI/aiChuchuNavMoveTarget.cpp | 26 + src/Game/AI/AI/aiChuchuNavMoveTarget.h | 24 + src/Game/AI/AI/aiChuchuRoot.cpp | 33 + src/Game/AI/AI/aiChuchuRoot.h | 34 + src/Game/AI/AI/aiChuchuTypeSelect.cpp | 23 + src/Game/AI/AI/aiChuchuTypeSelect.h | 21 + src/Game/AI/AI/aiCircleMove.cpp | 28 + src/Game/AI/AI/aiCircleMove.h | 29 + src/Game/AI/AI/aiCircleMoveFlying.cpp | 27 + src/Game/AI/AI/aiCircleMoveFlying.h | 26 + src/Game/AI/AI/aiCircleMoveInFluid.cpp | 38 + src/Game/AI/AI/aiCircleMoveInFluid.h | 49 + src/Game/AI/AI/aiCircleMoveInWater.cpp | 27 + src/Game/AI/AI/aiCircleMoveInWater.h | 26 + src/Game/AI/AI/aiCircleMovePos.cpp | 26 + src/Game/AI/AI/aiCircleMovePos.h | 24 + src/Game/AI/AI/aiCircleMoveTarget.cpp | 26 + src/Game/AI/AI/aiCircleMoveTarget.h | 24 + src/Game/AI/AI/aiCliffCheckSelect.cpp | 19 + src/Game/AI/AI/aiCliffCheckSelect.h | 25 + .../AI/AI/aiCliffCheckTargetDirSelect.cpp | 14 + src/Game/AI/AI/aiCliffCheckTargetDirSelect.h | 21 + .../AI/aiCliffCheckToTargetPosDirSelect.cpp | 26 + .../AI/AI/aiCliffCheckToTargetPosDirSelect.h | 22 + .../AI/aiCliffDistanceSelectThreeAction.cpp | 27 + .../AI/AI/aiCliffDistanceSelectThreeAction.h | 25 + src/Game/AI/AI/aiCloseSmallAttack.cpp | 9 + src/Game/AI/AI/aiCloseSmallAttack.h | 17 + src/Game/AI/AI/aiCloseSmallAttackBase.cpp | 24 + src/Game/AI/AI/aiCloseSmallAttackBase.h | 28 + src/Game/AI/AI/aiClusterRenderCheckTag.cpp | 23 + src/Game/AI/AI/aiClusterRenderCheckTag.h | 21 + src/Game/AI/AI/aiColGroundHitSelect.cpp | 25 + src/Game/AI/AI/aiColGroundHitSelect.h | 23 + .../AI/AI/aiCollaborationShootingStarRoot.cpp | 29 + .../AI/AI/aiCollaborationShootingStarRoot.h | 23 + src/Game/AI/AI/aiCommonPickedItem.cpp | 31 + src/Game/AI/AI/aiCommonPickedItem.h | 35 + .../AI/AI/aiConditionMoveActionSelect.cpp | 28 + src/Game/AI/AI/aiConditionMoveActionSelect.h | 29 + src/Game/AI/AI/aiCookPotRoot.cpp | 26 + src/Game/AI/AI/aiCookPotRoot.h | 25 + src/Game/AI/AI/aiCountSelect.cpp | 25 + src/Game/AI/AI/aiCountSelect.h | 23 + src/Game/AI/AI/aiCreateActor.cpp | 27 + src/Game/AI/AI/aiCreateActor.h | 27 + src/Game/AI/AI/aiCreateActorWithTarget.cpp | 35 + src/Game/AI/AI/aiCreateActorWithTarget.h | 43 + src/Game/AI/AI/aiCreateCarryActor.cpp | 26 + src/Game/AI/AI/aiCreateCarryActor.h | 24 + src/Game/AI/AI/aiCreateOnFaceSelect.cpp | 25 + src/Game/AI/AI/aiCreateOnFaceSelect.h | 23 + src/Game/AI/AI/aiCreationNestOnTree.cpp | 28 + src/Game/AI/AI/aiCreationNestOnTree.h | 28 + src/Game/AI/AI/aiDamageAttrSelect.cpp | 26 + src/Game/AI/AI/aiDamageAttrSelect.h | 25 + src/Game/AI/AI/aiDamageTypeSelect.cpp | 25 + src/Game/AI/AI/aiDamageTypeSelect.h | 23 + src/Game/AI/AI/aiDangerAvoidFlagSelect.cpp | 15 + src/Game/AI/AI/aiDangerAvoidFlagSelect.h | 19 + src/Game/AI/AI/aiDashAndAttack.cpp | 33 + src/Game/AI/AI/aiDashAndAttack.h | 39 + src/Game/AI/AI/aiDeadOrOtherState.cpp | 21 + src/Game/AI/AI/aiDeadOrOtherState.h | 20 + src/Game/AI/AI/aiDeadlyBlowWeaponRoot.cpp | 25 + src/Game/AI/AI/aiDeadlyBlowWeaponRoot.h | 22 + src/Game/AI/AI/aiDefWanderAI.cpp | 21 + src/Game/AI/AI/aiDefWanderAI.h | 29 + src/Game/AI/AI/aiDemoRailMoveRemains.cpp | 27 + src/Game/AI/AI/aiDemoRailMoveRemains.h | 26 + src/Game/AI/AI/aiDemoRootAI.cpp | 23 + src/Game/AI/AI/aiDemoRootAI.h | 21 + .../AI/AI/aiDgnObj_DLC_CWRotDirSwitch.cpp | 23 + src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h | 21 + .../AI/aiDgnObj_DLC_CW_WithEntityBody00.cpp | 26 + .../AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h | 22 + src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.cpp | 29 + src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.h | 33 + .../AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp | 26 + .../AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h | 23 + .../AI/AI/aiDgnObj_DLC_DungeonRotateTag.cpp | 28 + .../AI/AI/aiDgnObj_DLC_DungeonRotateTag.h | 27 + src/Game/AI/AI/aiDgnObj_DLC_Faucet.cpp | 23 + src/Game/AI/AI/aiDgnObj_DLC_Faucet.h | 21 + src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.cpp | 23 + src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h | 21 + src/Game/AI/AI/aiDieSelect.cpp | 23 + src/Game/AI/AI/aiDieSelect.h | 21 + src/Game/AI/AI/aiDieSelectBombPlus.cpp | 25 + src/Game/AI/AI/aiDieSelectBombPlus.h | 22 + src/Game/AI/AI/aiDieSelectChemShockPlus.cpp | 25 + src/Game/AI/AI/aiDieSelectChemShockPlus.h | 22 + src/Game/AI/AI/aiDieSelectChemicalPlus.cpp | 25 + src/Game/AI/AI/aiDieSelectChemicalPlus.h | 22 + src/Game/AI/AI/aiDisplaySelect.cpp | 26 + src/Game/AI/AI/aiDisplaySelect.h | 25 + src/Game/AI/AI/aiDistanceKeepMove.cpp | 26 + src/Game/AI/AI/aiDistanceKeepMove.h | 24 + src/Game/AI/AI/aiDistanceLostCheck.cpp | 28 + src/Game/AI/AI/aiDistanceLostCheck.h | 29 + src/Game/AI/AI/aiDoChangeOneTime.cpp | 23 + src/Game/AI/AI/aiDoChangeOneTime.h | 21 + src/Game/AI/AI/aiDogNormal.cpp | 42 + src/Game/AI/AI/aiDogNormal.h | 56 + src/Game/AI/AI/aiDomesticNormal.cpp | 32 + src/Game/AI/AI/aiDomesticNormal.h | 36 + src/Game/AI/AI/aiDominoRoot.cpp | 32 + src/Game/AI/AI/aiDominoRoot.h | 37 + src/Game/AI/AI/aiDoorRoot.cpp | 33 + src/Game/AI/AI/aiDoorRoot.h | 39 + src/Game/AI/AI/aiDoubtItemSubTargetSelect.cpp | 23 + src/Game/AI/AI/aiDoubtItemSubTargetSelect.h | 21 + .../AI/AI/aiDragonDropItemTargetRootAI.cpp | 10 + src/Game/AI/AI/aiDragonDropItemTargetRootAI.h | 16 + src/Game/AI/AI/aiDragonElecRoot.cpp | 25 + src/Game/AI/AI/aiDragonElecRoot.h | 22 + src/Game/AI/AI/aiDragonFireRoot.cpp | 25 + src/Game/AI/AI/aiDragonFireRoot.h | 22 + src/Game/AI/AI/aiDragonIceRoot.cpp | 49 + src/Game/AI/AI/aiDragonIceRoot.h | 70 + src/Game/AI/AI/aiDragonIceWaitRunel.cpp | 23 + src/Game/AI/AI/aiDragonIceWaitRunel.h | 21 + src/Game/AI/AI/aiDragonItemRoot.cpp | 42 + src/Game/AI/AI/aiDragonItemRoot.h | 56 + src/Game/AI/AI/aiDragonReturn.cpp | 31 + src/Game/AI/AI/aiDragonReturn.h | 35 + src/Game/AI/AI/aiDragonRoot.cpp | 53 + src/Game/AI/AI/aiDragonRoot.h | 78 + src/Game/AI/AI/aiDragonRootBase.cpp | 23 + src/Game/AI/AI/aiDragonRootBase.h | 21 + src/Game/AI/AI/aiDragonTurn.cpp | 28 + src/Game/AI/AI/aiDragonTurn.h | 29 + src/Game/AI/AI/aiDrawnSwordBowSelect.cpp | 26 + src/Game/AI/AI/aiDrawnSwordBowSelect.h | 25 + src/Game/AI/AI/aiDrawnWeaponSelector.cpp | 23 + src/Game/AI/AI/aiDrawnWeaponSelector.h | 21 + src/Game/AI/AI/aiDuckRoot.cpp | 25 + src/Game/AI/AI/aiDuckRoot.h | 22 + .../AI/AI/aiDungeonCannonBallAutoDelete.cpp | 27 + .../AI/AI/aiDungeonCannonBallAutoDelete.h | 25 + src/Game/AI/AI/aiDungeonEntranceRoot.cpp | 25 + src/Game/AI/AI/aiDungeonEntranceRoot.h | 23 + src/Game/AI/AI/aiDungeonMoveTag.cpp | 24 + src/Game/AI/AI/aiDungeonMoveTag.h | 24 + src/Game/AI/AI/aiDungeonMoveTagCont.cpp | 27 + src/Game/AI/AI/aiDungeonMoveTagCont.h | 27 + src/Game/AI/AI/aiDungeonRemainsFire.cpp | 25 + src/Game/AI/AI/aiDungeonRemainsFire.h | 23 + src/Game/AI/AI/aiDungeonResetPosTag.cpp | 23 + src/Game/AI/AI/aiDungeonResetPosTag.h | 21 + src/Game/AI/AI/aiDungeonRotateTag.cpp | 21 + src/Game/AI/AI/aiDungeonRotateTag.h | 20 + src/Game/AI/AI/aiDungeonRotateTag3D.cpp | 30 + src/Game/AI/AI/aiDungeonRotateTag3D.h | 33 + src/Game/AI/AI/aiDungeonRotateTag4ElecApp.cpp | 26 + src/Game/AI/AI/aiDungeonRotateTag4ElecApp.h | 25 + src/Game/AI/AI/aiDungeonRotateTag4FireApp.cpp | 26 + src/Game/AI/AI/aiDungeonRotateTag4FireApp.h | 22 + .../AI/AI/aiDungeonRotateTag4WaterApp.cpp | 37 + src/Game/AI/AI/aiDungeonRotateTag4WaterApp.h | 47 + src/Game/AI/AI/aiDungeonRotateTag4WindApp.cpp | 26 + src/Game/AI/AI/aiDungeonRotateTag4WindApp.h | 22 + src/Game/AI/AI/aiDungeonRotateTagCont.cpp | 26 + src/Game/AI/AI/aiDungeonRotateTagCont.h | 24 + src/Game/AI/AI/aiDungeonRotateTagInOrder.cpp | 23 + src/Game/AI/AI/aiDungeonRotateTagInOrder.h | 24 + src/Game/AI/AI/aiDungeonRotateTagShuttle.cpp | 25 + src/Game/AI/AI/aiDungeonRotateTagShuttle.h | 23 + .../AI/AI/aiDungeonRotateTagWaterChemical.cpp | 29 + .../AI/AI/aiDungeonRotateTagWaterChemical.h | 29 + .../AI/aiDynTargetStoneShootEnemyBattle.cpp | 27 + .../AI/AI/aiDynTargetStoneShootEnemyBattle.h | 24 + .../AI/AI/aiDynTgBreathAttackEnemyBattle.cpp | 27 + .../AI/AI/aiDynTgBreathAttackEnemyBattle.h | 24 + src/Game/AI/AI/aiEarthReleaseAttack.cpp | 31 + src/Game/AI/AI/aiEarthReleaseAttack.h | 35 + src/Game/AI/AI/aiElectricBall.cpp | 23 + src/Game/AI/AI/aiElectricBall.h | 23 + src/Game/AI/AI/aiElectricCable.cpp | 25 + src/Game/AI/AI/aiElectricCable.h | 23 + src/Game/AI/AI/aiEnemyAngry.cpp | 16 + src/Game/AI/AI/aiEnemyAngry.h | 22 + src/Game/AI/AI/aiEnemyAttackAndAway.cpp | 20 + src/Game/AI/AI/aiEnemyAttackAndAway.h | 27 + src/Game/AI/AI/aiEnemyBaseArrowAttack.cpp | 17 + src/Game/AI/AI/aiEnemyBaseArrowAttack.h | 24 + src/Game/AI/AI/aiEnemyBaseFindPlayer.cpp | 45 + src/Game/AI/AI/aiEnemyBaseFindPlayer.h | 63 + src/Game/AI/AI/aiEnemyBattle.cpp | 28 + src/Game/AI/AI/aiEnemyBattle.h | 39 + src/Game/AI/AI/aiEnemyBattleWithAreaCheck.cpp | 29 + src/Game/AI/AI/aiEnemyBattleWithAreaCheck.h | 30 + src/Game/AI/AI/aiEnemyCalledAppear.cpp | 23 + src/Game/AI/AI/aiEnemyCalledAppear.h | 21 + src/Game/AI/AI/aiEnemyChaseShield.cpp | 22 + src/Game/AI/AI/aiEnemyChaseShield.h | 27 + .../AI/AI/aiEnemyChaseTargetAndAction.cpp | 27 + src/Game/AI/AI/aiEnemyChaseTargetAndAction.h | 31 + src/Game/AI/AI/aiEnemyChemTargetAction.cpp | 26 + src/Game/AI/AI/aiEnemyChemTargetAction.h | 24 + .../AI/AI/aiEnemyChemTargetActionBase.cpp | 26 + src/Game/AI/AI/aiEnemyChemTargetActionBase.h | 28 + src/Game/AI/AI/aiEnemyChemicalPowerSelect.cpp | 23 + src/Game/AI/AI/aiEnemyChemicalPowerSelect.h | 21 + src/Game/AI/AI/aiEnemyChemicalSelect.cpp | 26 + src/Game/AI/AI/aiEnemyChemicalSelect.h | 25 + src/Game/AI/AI/aiEnemyConfuse.cpp | 25 + src/Game/AI/AI/aiEnemyConfuse.h | 23 + src/Game/AI/AI/aiEnemyCutRope.cpp | 30 + src/Game/AI/AI/aiEnemyCutRope.h | 31 + src/Game/AI/AI/aiEnemyDefaultReaction.cpp | 22 + src/Game/AI/AI/aiEnemyDefaultReaction.h | 27 + src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.cpp | 29 + src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.h | 30 + src/Game/AI/AI/aiEnemyEscape.cpp | 15 + src/Game/AI/AI/aiEnemyEscape.h | 19 + src/Game/AI/AI/aiEnemyEscapeMove.cpp | 23 + src/Game/AI/AI/aiEnemyEscapeMove.h | 21 + src/Game/AI/AI/aiEnemyEscapeRoot.cpp | 15 + src/Game/AI/AI/aiEnemyEscapeRoot.h | 19 + src/Game/AI/AI/aiEnemyFeintBattle.cpp | 14 + src/Game/AI/AI/aiEnemyFeintBattle.h | 21 + src/Game/AI/AI/aiEnemyFindBadStatusFriend.cpp | 25 + src/Game/AI/AI/aiEnemyFindBadStatusFriend.h | 23 + src/Game/AI/AI/aiEnemyFindHorseRideTarget.cpp | 37 + src/Game/AI/AI/aiEnemyFindHorseRideTarget.h | 47 + src/Game/AI/AI/aiEnemyFindShootable.cpp | 28 + src/Game/AI/AI/aiEnemyFindShootable.h | 32 + src/Game/AI/AI/aiEnemyFortressChat.cpp | 26 + src/Game/AI/AI/aiEnemyFortressChat.h | 25 + src/Game/AI/AI/aiEnemyFortressMgrTag.cpp | 27 + src/Game/AI/AI/aiEnemyFortressMgrTag.h | 27 + src/Game/AI/AI/aiEnemyFortressWait.cpp | 30 + src/Game/AI/AI/aiEnemyFortressWait.h | 30 + .../AI/AI/aiEnemyFortressWatchKeepingWait.cpp | 27 + .../AI/AI/aiEnemyFortressWatchKeepingWait.h | 22 + src/Game/AI/AI/aiEnemyHide.cpp | 23 + src/Game/AI/AI/aiEnemyHide.h | 21 + src/Game/AI/AI/aiEnemyHideGrass.cpp | 26 + src/Game/AI/AI/aiEnemyHideGrass.h | 25 + src/Game/AI/AI/aiEnemyHideShootingBattle.cpp | 21 + src/Game/AI/AI/aiEnemyHideShootingBattle.h | 22 + src/Game/AI/AI/aiEnemyHorseRide.cpp | 27 + src/Game/AI/AI/aiEnemyHorseRide.h | 26 + src/Game/AI/AI/aiEnemyLifeSelect.cpp | 25 + src/Game/AI/AI/aiEnemyLifeSelect.h | 23 + src/Game/AI/AI/aiEnemyLiftShootItem.cpp | 26 + src/Game/AI/AI/aiEnemyLiftShootItem.h | 28 + src/Game/AI/AI/aiEnemyLifted.cpp | 23 + src/Game/AI/AI/aiEnemyLifted.h | 21 + src/Game/AI/AI/aiEnemyLost.cpp | 28 + src/Game/AI/AI/aiEnemyLost.h | 29 + src/Game/AI/AI/aiEnemyMimicrySelect.cpp | 27 + src/Game/AI/AI/aiEnemyMimicrySelect.h | 27 + src/Game/AI/AI/aiEnemyMoveBattle.cpp | 24 + src/Game/AI/AI/aiEnemyMoveBattle.h | 27 + src/Game/AI/AI/aiEnemyMoveToGround.cpp | 27 + src/Game/AI/AI/aiEnemyMoveToGround.h | 27 + src/Game/AI/AI/aiEnemyNoiseTarget.cpp | 37 + src/Game/AI/AI/aiEnemyNoiseTarget.h | 47 + src/Game/AI/AI/aiEnemyNormal.cpp | 47 + src/Game/AI/AI/aiEnemyNormal.h | 67 + src/Game/AI/AI/aiEnemyNotice.cpp | 20 + src/Game/AI/AI/aiEnemyNotice.h | 23 + src/Game/AI/AI/aiEnemyNoticeActiveEnemy.cpp | 26 + src/Game/AI/AI/aiEnemyNoticeActiveEnemy.h | 25 + .../AI/aiEnemyNoticeFearfulLastAttacker.cpp | 26 + .../AI/AI/aiEnemyNoticeFearfulLastAttacker.h | 22 + src/Game/AI/AI/aiEnemyNoticeFearfulTarget.cpp | 25 + src/Game/AI/AI/aiEnemyNoticeFearfulTarget.h | 22 + src/Game/AI/AI/aiEnemyNoticeLimit.cpp | 23 + src/Game/AI/AI/aiEnemyNoticeLimit.h | 22 + src/Game/AI/AI/aiEnemyNoticeSound.cpp | 21 + src/Game/AI/AI/aiEnemyNoticeSound.h | 22 + .../AI/AI/aiEnemyNoticeSoundSensitive.cpp | 26 + src/Game/AI/AI/aiEnemyNoticeSoundSensitive.h | 22 + .../AI/aiEnemyNoticeSoundSensitiveTimer.cpp | 27 + .../AI/AI/aiEnemyNoticeSoundSensitiveTimer.h | 24 + src/Game/AI/AI/aiEnemyNoticeSoundWithUI.cpp | 26 + src/Game/AI/AI/aiEnemyNoticeSoundWithUI.h | 24 + src/Game/AI/AI/aiEnemyNoticeTerror.cpp | 29 + src/Game/AI/AI/aiEnemyNoticeTerror.h | 31 + src/Game/AI/AI/aiEnemyPermitAttackSelect.cpp | 25 + src/Game/AI/AI/aiEnemyPermitAttackSelect.h | 23 + src/Game/AI/AI/aiEnemyPursuingArrowBattle.cpp | 21 + src/Game/AI/AI/aiEnemyPursuingArrowBattle.h | 28 + src/Game/AI/AI/aiEnemyPursuingAttackCheck.cpp | 24 + src/Game/AI/AI/aiEnemyPursuingAttackCheck.h | 28 + src/Game/AI/AI/aiEnemyPursuingBattle.cpp | 20 + src/Game/AI/AI/aiEnemyPursuingBattle.h | 26 + .../AI/AI/aiEnemyRandomRepeatSideStep.cpp | 24 + src/Game/AI/AI/aiEnemyRandomRepeatSideStep.h | 35 + src/Game/AI/AI/aiEnemyRangeKeepMove.cpp | 42 + src/Game/AI/AI/aiEnemyRangeKeepMove.h | 57 + src/Game/AI/AI/aiEnemyRangeKeepSwimMove.cpp | 32 + src/Game/AI/AI/aiEnemyRangeKeepSwimMove.h | 37 + src/Game/AI/AI/aiEnemyRecognizeTarget.cpp | 18 + src/Game/AI/AI/aiEnemyRecognizeTarget.h | 29 + src/Game/AI/AI/aiEnemyRecognizeTargetBase.cpp | 31 + src/Game/AI/AI/aiEnemyRecognizeTargetBase.h | 35 + .../AI/AI/aiEnemyRestraintCheckBattle.cpp | 27 + src/Game/AI/AI/aiEnemyRestraintCheckBattle.h | 34 + src/Game/AI/AI/aiEnemyReturnSelect.cpp | 26 + src/Game/AI/AI/aiEnemyReturnSelect.h | 25 + src/Game/AI/AI/aiEnemyRoam.cpp | 19 + src/Game/AI/AI/aiEnemyRoam.h | 28 + src/Game/AI/AI/aiEnemyRoamSelect.cpp | 27 + src/Game/AI/AI/aiEnemyRoamSelect.h | 27 + src/Game/AI/AI/aiEnemyRoamViewItem.cpp | 27 + src/Game/AI/AI/aiEnemyRoamViewItem.h | 27 + src/Game/AI/AI/aiEnemyRoot.cpp | 39 + src/Game/AI/AI/aiEnemyRoot.h | 53 + src/Game/AI/AI/aiEnemySearchHorse.cpp | 28 + src/Game/AI/AI/aiEnemySearchHorse.h | 29 + .../AI/aiEnemySearchShieldItemFindPlayer.cpp | 33 + .../AI/AI/aiEnemySearchShieldItemFindPlayer.h | 36 + .../AI/AI/aiEnemyShieldSearchOrBattle.cpp | 31 + src/Game/AI/AI/aiEnemyShieldSearchOrBattle.h | 35 + .../AI/AI/aiEnemyShootAttackExplosives.cpp | 20 + src/Game/AI/AI/aiEnemyShootAttackExplosives.h | 24 + src/Game/AI/AI/aiEnemySittingTogether.cpp | 24 + src/Game/AI/AI/aiEnemySittingTogether.h | 24 + src/Game/AI/AI/aiEnemySkyArrowAttack.cpp | 25 + src/Game/AI/AI/aiEnemySkyArrowAttack.h | 22 + src/Game/AI/AI/aiEnemySomeIgniteBattle.cpp | 22 + src/Game/AI/AI/aiEnemySomeIgniteBattle.h | 23 + src/Game/AI/AI/aiEnemySyncAttack.cpp | 33 + src/Game/AI/AI/aiEnemySyncAttack.h | 46 + src/Game/AI/AI/aiEnemyTargetGearSelect.cpp | 26 + src/Game/AI/AI/aiEnemyTargetGearSelect.h | 25 + src/Game/AI/AI/aiEnemyTargetInAreaSelect.cpp | 29 + src/Game/AI/AI/aiEnemyTargetInAreaSelect.h | 30 + src/Game/AI/AI/aiEnemyTargetInSightSelect.cpp | 17 + src/Game/AI/AI/aiEnemyTargetInSightSelect.h | 19 + src/Game/AI/AI/aiEnemyTimelineAI.cpp | 26 + src/Game/AI/AI/aiEnemyTimelineAI.h | 24 + src/Game/AI/AI/aiEnemyTired.cpp | 13 + src/Game/AI/AI/aiEnemyTired.h | 18 + .../AI/AI/aiEnemyTreeWeaponSearchOrBattle.cpp | 28 + .../AI/AI/aiEnemyTreeWeaponSearchOrBattle.h | 27 + src/Game/AI/AI/aiEnemyVacuumBombSelect.cpp | 25 + src/Game/AI/AI/aiEnemyVacuumBombSelect.h | 22 + .../AI/AI/aiEnemyVacuumBombSelectBase.cpp | 55 + src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h | 21 + .../AI/AI/aiEnemyVacuumChangeItemSelect.cpp | 26 + .../AI/AI/aiEnemyVacuumChangeItemSelect.h | 22 + .../AI/AI/aiEnemyVacuumWeaponTypeSelect.cpp | 26 + .../AI/AI/aiEnemyVacuumWeaponTypeSelect.h | 23 + src/Game/AI/AI/aiEnemyWaitViewItem.cpp | 25 + src/Game/AI/AI/aiEnemyWaitViewItem.h | 23 + src/Game/AI/AI/aiEnemyWarnNoticeEndChase.cpp | 25 + src/Game/AI/AI/aiEnemyWarnNoticeEndChase.h | 22 + src/Game/AI/AI/aiEnemyWarnNoticeSelect.cpp | 37 + src/Game/AI/AI/aiEnemyWarnNoticeSelect.h | 47 + src/Game/AI/AI/aiEnemyWatchKeepingWait.cpp | 29 + src/Game/AI/AI/aiEnemyWatchKeepingWait.h | 33 + src/Game/AI/AI/aiEnterFromResetSelect.cpp | 23 + src/Game/AI/AI/aiEnterFromResetSelect.h | 21 + src/Game/AI/AI/aiEnvSeEmitPointRootAI.cpp | 26 + src/Game/AI/AI/aiEnvSeEmitPointRootAI.h | 25 + src/Game/AI/AI/aiEquipConditionSelect.cpp | 25 + src/Game/AI/AI/aiEquipConditionSelect.h | 23 + src/Game/AI/AI/aiEquipHaveSelector.cpp | 25 + src/Game/AI/AI/aiEquipHaveSelector.h | 23 + .../AI/AI/aiEquipShieldEnemySearchWeapon.cpp | 22 + .../AI/AI/aiEquipShieldEnemySearchWeapon.h | 21 + src/Game/AI/AI/aiEquipStand.cpp | 28 + src/Game/AI/AI/aiEquipStand.h | 31 + src/Game/AI/AI/aiEscapeFromTargetFront.cpp | 28 + src/Game/AI/AI/aiEscapeFromTargetFront.h | 29 + .../AI/aiEscapeFromTargetFrontRandomDir.cpp | 27 + .../AI/AI/aiEscapeFromTargetFrontRandomDir.h | 24 + .../AI/AI/aiEscapeOppositeToTargetInWater.cpp | 30 + .../AI/AI/aiEscapeOppositeToTargetInWater.h | 31 + src/Game/AI/AI/aiEscapeOrWaitSelect.cpp | 29 + src/Game/AI/AI/aiEscapeOrWaitSelect.h | 31 + src/Game/AI/AI/aiEternalPlayerTarget.cpp | 23 + src/Game/AI/AI/aiEternalPlayerTarget.h | 21 + src/Game/AI/AI/aiEventTagRootAI.cpp | 29 + src/Game/AI/AI/aiEventTagRootAI.h | 33 + src/Game/AI/AI/aiEventTimeRoot.cpp | 26 + src/Game/AI/AI/aiEventTimeRoot.h | 25 + src/Game/AI/AI/aiExceededImpulseCheck.cpp | 23 + src/Game/AI/AI/aiExceededImpulseCheck.h | 21 + src/Game/AI/AI/aiExplodeCheck.cpp | 23 + src/Game/AI/AI/aiExplodeCheck.h | 21 + src/Game/AI/AI/aiFirstSelect.cpp | 25 + src/Game/AI/AI/aiFirstSelect.h | 23 + src/Game/AI/AI/aiFishGoToAndNibble.cpp | 31 + src/Game/AI/AI/aiFishGoToAndNibble.h | 35 + src/Game/AI/AI/aiFishRoot.cpp | 36 + src/Game/AI/AI/aiFishRoot.h | 44 + src/Game/AI/AI/aiFishSafeReturn.cpp | 29 + src/Game/AI/AI/aiFishSafeReturn.h | 31 + src/Game/AI/AI/aiFixableLiftable.cpp | 26 + src/Game/AI/AI/aiFixableLiftable.h | 26 + src/Game/AI/AI/aiFldObjDlcHeroMapRelief.cpp | 26 + src/Game/AI/AI/aiFldObjDlcHeroMapRelief.h | 25 + src/Game/AI/AI/aiFldObjIvyBurnRoot.cpp | 23 + src/Game/AI/AI/aiFldObjIvyBurnRoot.h | 21 + src/Game/AI/AI/aiFlyInsectRoam.cpp | 35 + src/Game/AI/AI/aiFlyInsectRoam.h | 43 + src/Game/AI/AI/aiFlyMoveToTarget.cpp | 29 + src/Game/AI/AI/aiFlyMoveToTarget.h | 31 + src/Game/AI/AI/aiFlyingEnemyBackKeepMove.cpp | 25 + src/Game/AI/AI/aiFlyingEnemyBackKeepMove.h | 22 + .../AI/AI/aiFlyingEnemyDiagonallyKeepMove.cpp | 23 + .../AI/AI/aiFlyingEnemyDiagonallyKeepMove.h | 23 + src/Game/AI/AI/aiFlyingEnemyFindPlayer.cpp | 25 + src/Game/AI/AI/aiFlyingEnemyFindPlayer.h | 22 + src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.cpp | 25 + src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.h | 22 + src/Game/AI/AI/aiFlyingEnemyKeepMove.cpp | 33 + src/Game/AI/AI/aiFlyingEnemyKeepMove.h | 39 + src/Game/AI/AI/aiFlyingEnemySideKeepMove.cpp | 26 + src/Game/AI/AI/aiFlyingEnemySideKeepMove.h | 24 + src/Game/AI/AI/aiForSaleOrNot.cpp | 23 + src/Game/AI/AI/aiForSaleOrNot.h | 21 + src/Game/AI/AI/aiForbidDoubleNoticeSelect.cpp | 23 + src/Game/AI/AI/aiForbidDoubleNoticeSelect.h | 21 + src/Game/AI/AI/aiForestGiantBattle.cpp | 26 + src/Game/AI/AI/aiForestGiantBattle.h | 24 + src/Game/AI/AI/aiForestGiantBattleMove.cpp | 27 + src/Game/AI/AI/aiForestGiantBattleMove.h | 26 + src/Game/AI/AI/aiForestGiantChanceWait.cpp | 28 + src/Game/AI/AI/aiForestGiantChanceWait.h | 29 + .../AI/aiForestGiantClosestAttackSelect.cpp | 28 + .../AI/AI/aiForestGiantClosestAttackSelect.h | 27 + src/Game/AI/AI/aiForestGiantFindPlayer.cpp | 25 + src/Game/AI/AI/aiForestGiantFindPlayer.h | 22 + src/Game/AI/AI/aiForestGiantNormal.cpp | 26 + src/Game/AI/AI/aiForestGiantNormal.h | 24 + src/Game/AI/AI/aiForestGiantNoticeSound.cpp | 27 + src/Game/AI/AI/aiForestGiantNoticeSound.h | 26 + src/Game/AI/AI/aiForestGiantReaction.cpp | 32 + src/Game/AI/AI/aiForestGiantReaction.h | 36 + .../AI/AI/aiForestGiantRecognizeTarget.cpp | 24 + src/Game/AI/AI/aiForestGiantRecognizeTarget.h | 21 + src/Game/AI/AI/aiForestGiantRoam.cpp | 26 + src/Game/AI/AI/aiForestGiantRoam.h | 24 + src/Game/AI/AI/aiForestGiantRoot.cpp | 50 + src/Game/AI/AI/aiForestGiantRoot.h | 28 + .../AI/AI/aiForestGiantStoneShootBattle.cpp | 29 + .../AI/AI/aiForestGiantStoneShootBattle.h | 28 + src/Game/AI/AI/aiFork2AI.cpp | 9 + src/Game/AI/AI/aiFork2AI.h | 17 + src/Game/AI/AI/aiFork2AIUpperLowerBody.cpp | 23 + src/Game/AI/AI/aiFork2AIUpperLowerBody.h | 22 + src/Game/AI/AI/aiFork3AI.cpp | 9 + src/Game/AI/AI/aiFork3AI.h | 17 + src/Game/AI/AI/aiFork4AI.cpp | 9 + src/Game/AI/AI/aiFork4AI.h | 17 + src/Game/AI/AI/aiFork5AI.cpp | 9 + src/Game/AI/AI/aiFork5AI.h | 17 + src/Game/AI/AI/aiFork6AI.cpp | 9 + src/Game/AI/AI/aiFork6AI.h | 17 + src/Game/AI/AI/aiForkAI.cpp | 21 + src/Game/AI/AI/aiForkAI.h | 20 + src/Game/AI/AI/aiForkActionAndJoin.cpp | 23 + src/Game/AI/AI/aiForkActionAndJoin.h | 21 + src/Game/AI/AI/aiForkBeastGanonRoot.cpp | 23 + src/Game/AI/AI/aiForkBeastGanonRoot.h | 22 + src/Game/AI/AI/aiFreezeInWaterSelect.cpp | 23 + src/Game/AI/AI/aiFreezeInWaterSelect.h | 25 + src/Game/AI/AI/aiFriendCallAction.cpp | 29 + src/Game/AI/AI/aiFriendCallAction.h | 31 + src/Game/AI/AI/aiFromPopPoolDamageSelect.cpp | 23 + src/Game/AI/AI/aiFromPopPoolDamageSelect.h | 21 + src/Game/AI/AI/aiGambleTreasureBoxRoot.cpp | 26 + src/Game/AI/AI/aiGambleTreasureBoxRoot.h | 25 + src/Game/AI/AI/aiGameDataFlagSelector.cpp | 26 + src/Game/AI/AI/aiGameDataFlagSelector.h | 25 + src/Game/AI/AI/aiGanonApproachOnFloorRoot.cpp | 42 + src/Game/AI/AI/aiGanonApproachOnFloorRoot.h | 57 + src/Game/AI/AI/aiGanonApproachOnWallRoot.cpp | 30 + src/Game/AI/AI/aiGanonApproachOnWallRoot.h | 33 + src/Game/AI/AI/aiGanonBattleOnFloorRoot.cpp | 27 + src/Game/AI/AI/aiGanonBattleOnFloorRoot.h | 27 + src/Game/AI/AI/aiGanonBattleOnWallRoot.cpp | 26 + src/Game/AI/AI/aiGanonBattleOnWallRoot.h | 25 + src/Game/AI/AI/aiGanonBattleRoot.cpp | 23 + src/Game/AI/AI/aiGanonBattleRoot.h | 21 + src/Game/AI/AI/aiGanonBeamOnFloor.cpp | 30 + src/Game/AI/AI/aiGanonBeamOnFloor.h | 32 + src/Game/AI/AI/aiGanonBeamOnWall.cpp | 25 + src/Game/AI/AI/aiGanonBeamOnWall.h | 22 + src/Game/AI/AI/aiGanonBeastDying.cpp | 25 + src/Game/AI/AI/aiGanonBeastDying.h | 22 + src/Game/AI/AI/aiGanonBeastMoveSelect.cpp | 29 + src/Game/AI/AI/aiGanonBeastMoveSelect.h | 31 + src/Game/AI/AI/aiGanonBeastReaction.cpp | 28 + src/Game/AI/AI/aiGanonBeastReaction.h | 29 + src/Game/AI/AI/aiGanonBeastRoot.cpp | 38 + src/Game/AI/AI/aiGanonBeastRoot.h | 49 + src/Game/AI/AI/aiGanonBeastStairState.cpp | 23 + src/Game/AI/AI/aiGanonBeastStairState.h | 21 + src/Game/AI/AI/aiGanonBeastSufferChanger.cpp | 38 + src/Game/AI/AI/aiGanonBeastSufferChanger.h | 49 + src/Game/AI/AI/aiGanonBeastWait.cpp | 25 + src/Game/AI/AI/aiGanonBeastWait.h | 23 + .../AI/AI/aiGanonDemoMoveSeqTwoAction.cpp | 23 + src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h | 21 + src/Game/AI/AI/aiGanonFarAttackRootOnWall.cpp | 27 + src/Game/AI/AI/aiGanonFarAttackRootOnWall.h | 27 + src/Game/AI/AI/aiGanonGrudgeNormal.cpp | 25 + src/Game/AI/AI/aiGanonGrudgeNormal.h | 22 + .../AI/AI/aiGanonNearAttackOnFloorRoot.cpp | 29 + src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.h | 29 + src/Game/AI/AI/aiGanonNormalRoot.cpp | 23 + src/Game/AI/AI/aiGanonNormalRoot.h | 21 + src/Game/AI/AI/aiGanonReaction.cpp | 25 + src/Game/AI/AI/aiGanonReaction.h | 22 + src/Game/AI/AI/aiGanonRecognizeRoot.cpp | 23 + src/Game/AI/AI/aiGanonRecognizeRoot.h | 21 + src/Game/AI/AI/aiGanonShockRoot.cpp | 26 + src/Game/AI/AI/aiGanonShockRoot.h | 25 + src/Game/AI/AI/aiGanonStateChangeRoot.cpp | 25 + src/Game/AI/AI/aiGanonStateChangeRoot.h | 23 + src/Game/AI/AI/aiGanonThrowActorRoot.cpp | 35 + src/Game/AI/AI/aiGanonThrowActorRoot.h | 43 + src/Game/AI/AI/aiGanonThrowMultiActorRoot.cpp | 33 + src/Game/AI/AI/aiGanonThrowMultiActorRoot.h | 38 + src/Game/AI/AI/aiGanonWeaponAttackOnFloor.cpp | 27 + src/Game/AI/AI/aiGanonWeaponAttackOnFloor.h | 27 + src/Game/AI/AI/aiGearRangeSelect.cpp | 26 + src/Game/AI/AI/aiGearRangeSelect.h | 25 + src/Game/AI/AI/aiGelEnemyReaction.cpp | 25 + src/Game/AI/AI/aiGelEnemyReaction.h | 22 + src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.cpp | 26 + src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.h | 24 + src/Game/AI/AI/aiGerudoQueenBattle.cpp | 25 + src/Game/AI/AI/aiGerudoQueenBattle.h | 23 + src/Game/AI/AI/aiGetItemBrightBow.cpp | 26 + src/Game/AI/AI/aiGetItemBrightBow.h | 24 + src/Game/AI/AI/aiGetItemNormal.cpp | 21 + src/Game/AI/AI/aiGetItemNormal.h | 20 + src/Game/AI/AI/aiGiantArmorAsWeakPoint.cpp | 25 + src/Game/AI/AI/aiGiantArmorAsWeakPoint.h | 22 + src/Game/AI/AI/aiGiantArmorRoot.cpp | 23 + src/Game/AI/AI/aiGiantArmorRoot.h | 21 + src/Game/AI/AI/aiGiantEarthReleaseAttack.cpp | 30 + src/Game/AI/AI/aiGiantEarthReleaseAttack.h | 32 + .../AI/AI/aiGiantEscapeFromDamageWater.cpp | 24 + src/Game/AI/AI/aiGiantEscapeFromDamageWater.h | 21 + src/Game/AI/AI/aiGiantNavMoveTarget.cpp | 32 + src/Game/AI/AI/aiGiantNavMoveTarget.h | 37 + .../AI/AI/aiGiantNavMoveWithFirstAction.cpp | 26 + .../AI/AI/aiGiantNavMoveWithFirstAction.h | 22 + src/Game/AI/AI/aiGiantRoamSelect.cpp | 25 + src/Game/AI/AI/aiGiantRoamSelect.h | 23 + src/Game/AI/AI/aiGiantSleepNormal.cpp | 27 + src/Game/AI/AI/aiGiantSleepNormal.h | 26 + src/Game/AI/AI/aiGiantSleepReaction.cpp | 23 + src/Game/AI/AI/aiGiantSleepReaction.h | 21 + .../AI/AI/aiGiantStoneShootAngrySelect.cpp | 28 + src/Game/AI/AI/aiGiantStoneShootAngrySelect.h | 27 + src/Game/AI/AI/aiGolemChemicalResetSelect.cpp | 25 + src/Game/AI/AI/aiGolemChemicalResetSelect.h | 23 + .../AI/AI/aiGolemChemicalVanishedSelect.cpp | 26 + .../AI/AI/aiGolemChemicalVanishedSelect.h | 23 + src/Game/AI/AI/aiGolemClimbedSelect.cpp | 26 + src/Game/AI/AI/aiGolemClimbedSelect.h | 25 + src/Game/AI/AI/aiGolemClimbedTimeSelect.cpp | 26 + src/Game/AI/AI/aiGolemClimbedTimeSelect.h | 25 + src/Game/AI/AI/aiGolemFindPlayer.cpp | 26 + src/Game/AI/AI/aiGolemFindPlayer.h | 24 + src/Game/AI/AI/aiGolemFireREnemyBattle.cpp | 26 + src/Game/AI/AI/aiGolemFireREnemyBattle.h | 24 + src/Game/AI/AI/aiGolemNormal.cpp | 25 + src/Game/AI/AI/aiGolemNormal.h | 22 + src/Game/AI/AI/aiGolemNoticeWorry.cpp | 27 + src/Game/AI/AI/aiGolemNoticeWorry.h | 27 + src/Game/AI/AI/aiGolemPartRoot.cpp | 30 + src/Game/AI/AI/aiGolemPartRoot.h | 32 + src/Game/AI/AI/aiGolemPartsSelect.cpp | 26 + src/Game/AI/AI/aiGolemPartsSelect.h | 25 + src/Game/AI/AI/aiGolemRWeakPointRoot.cpp | 25 + src/Game/AI/AI/aiGolemRWeakPointRoot.h | 22 + src/Game/AI/AI/aiGolemReaction.cpp | 41 + src/Game/AI/AI/aiGolemReaction.h | 55 + src/Game/AI/AI/aiGolemRoot.cpp | 32 + src/Game/AI/AI/aiGolemRoot.h | 36 + src/Game/AI/AI/aiGolemRootBase.cpp | 45 + src/Game/AI/AI/aiGolemRootBase.h | 62 + src/Game/AI/AI/aiGolemSleepNormal.cpp | 26 + src/Game/AI/AI/aiGolemSleepNormal.h | 24 + src/Game/AI/AI/aiGolemSleepTypeSelect.cpp | 25 + src/Game/AI/AI/aiGolemSleepTypeSelect.h | 23 + src/Game/AI/AI/aiGolemWeakPointRoot.cpp | 25 + src/Game/AI/AI/aiGolemWeakPointRoot.h | 22 + src/Game/AI/AI/aiGolfBallRoot.cpp | 28 + src/Game/AI/AI/aiGolfBallRoot.h | 29 + src/Game/AI/AI/aiGoronCannon.cpp | 25 + src/Game/AI/AI/aiGoronCannon.h | 22 + src/Game/AI/AI/aiGoronCannonBase.cpp | 37 + src/Game/AI/AI/aiGoronCannonBase.h | 47 + src/Game/AI/AI/aiGoronHeroDescendentRoot.cpp | 33 + src/Game/AI/AI/aiGoronHeroDescendentRoot.h | 39 + src/Game/AI/AI/aiGoronHeroSoulGiftRoot.cpp | 25 + src/Game/AI/AI/aiGoronHeroSoulGiftRoot.h | 22 + src/Game/AI/AI/aiGroundAngleSelect.cpp | 27 + src/Game/AI/AI/aiGroundAngleSelect.h | 27 + src/Game/AI/AI/aiGroundHitSelect.cpp | 26 + src/Game/AI/AI/aiGroundHitSelect.h | 25 + src/Game/AI/AI/aiGrudgeEyeball.cpp | 25 + src/Game/AI/AI/aiGrudgeEyeball.h | 23 + src/Game/AI/AI/aiGuardAndRevenge.cpp | 24 + src/Game/AI/AI/aiGuardAndRevenge.h | 24 + src/Game/AI/AI/aiGuardFlagSelect.cpp | 15 + src/Game/AI/AI/aiGuardFlagSelect.h | 19 + src/Game/AI/AI/aiGuardFrequencySelect.cpp | 15 + src/Game/AI/AI/aiGuardFrequencySelect.h | 19 + src/Game/AI/AI/aiGuardNearTarget.cpp | 29 + src/Game/AI/AI/aiGuardNearTarget.h | 31 + src/Game/AI/AI/aiGuardianAI.cpp | 23 + src/Game/AI/AI/aiGuardianAI.h | 21 + src/Game/AI/AI/aiGuardianBattleBeamAttack.cpp | 25 + src/Game/AI/AI/aiGuardianBattleBeamAttack.h | 22 + src/Game/AI/AI/aiGuardianBeam.cpp | 25 + src/Game/AI/AI/aiGuardianBeam.h | 23 + src/Game/AI/AI/aiGuardianBeamAttack.cpp | 30 + src/Game/AI/AI/aiGuardianBeamAttack.h | 32 + src/Game/AI/AI/aiGuardianBeamAttackBase.cpp | 23 + src/Game/AI/AI/aiGuardianBeamAttackBase.h | 21 + src/Game/AI/AI/aiGuardianBezierRailMove.cpp | 25 + src/Game/AI/AI/aiGuardianBezierRailMove.h | 22 + src/Game/AI/AI/aiGuardianChase.cpp | 26 + src/Game/AI/AI/aiGuardianChase.h | 24 + src/Game/AI/AI/aiGuardianCloseBattle.cpp | 25 + src/Game/AI/AI/aiGuardianCloseBattle.h | 22 + src/Game/AI/AI/aiGuardianDown.cpp | 25 + src/Game/AI/AI/aiGuardianDown.h | 22 + src/Game/AI/AI/aiGuardianMini2ndBattle.cpp | 23 + src/Game/AI/AI/aiGuardianMini2ndBattle.h | 25 + .../AI/AI/aiGuardianMini2ndBattleAttack.cpp | 28 + .../AI/AI/aiGuardianMini2ndBattleAttack.h | 27 + src/Game/AI/AI/aiGuardianMiniBattle.cpp | 43 + src/Game/AI/AI/aiGuardianMiniBattle.h | 58 + .../AI/AI/aiGuardianMiniBattleStateSelect.cpp | 24 + .../AI/AI/aiGuardianMiniBattleStateSelect.h | 26 + src/Game/AI/AI/aiGuardianMiniBeam.cpp | 21 + src/Game/AI/AI/aiGuardianMiniBeam.h | 21 + src/Game/AI/AI/aiGuardianMiniBeamAttack.cpp | 30 + src/Game/AI/AI/aiGuardianMiniBeamAttack.h | 39 + .../AI/AI/aiGuardianMiniBeamAttackMove.cpp | 27 + src/Game/AI/AI/aiGuardianMiniBeamAttackMove.h | 32 + .../AI/AI/aiGuardianMiniBeamAttackNoWait.cpp | 27 + .../AI/AI/aiGuardianMiniBeamAttackNoWait.h | 24 + .../AI/AI/aiGuardianMiniBeamToExplosives.cpp | 20 + .../AI/AI/aiGuardianMiniBeamToExplosives.h | 24 + src/Game/AI/AI/aiGuardianMiniBlownOff.cpp | 26 + src/Game/AI/AI/aiGuardianMiniBlownOff.h | 25 + src/Game/AI/AI/aiGuardianMiniChangeWeapon.cpp | 29 + src/Game/AI/AI/aiGuardianMiniChangeWeapon.h | 31 + src/Game/AI/AI/aiGuardianMiniFinalBattle.cpp | 28 + src/Game/AI/AI/aiGuardianMiniFinalBattle.h | 35 + src/Game/AI/AI/aiGuardianMiniFindPlayer.cpp | 13 + src/Game/AI/AI/aiGuardianMiniFindPlayer.h | 19 + src/Game/AI/AI/aiGuardianMiniGroggy.cpp | 24 + src/Game/AI/AI/aiGuardianMiniGroggy.h | 28 + src/Game/AI/AI/aiGuardianMiniGuardSelect.cpp | 23 + src/Game/AI/AI/aiGuardianMiniGuardSelect.h | 26 + .../AI/AI/aiGuardianMiniNoWeaponSelect.cpp | 22 + src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.h | 22 + src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.cpp | 21 + src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.h | 22 + .../AI/AI/aiGuardianMiniRangeKeepMove.cpp | 22 + src/Game/AI/AI/aiGuardianMiniRangeKeepMove.h | 21 + src/Game/AI/AI/aiGuardianMiniReaction.cpp | 37 + src/Game/AI/AI/aiGuardianMiniReaction.h | 46 + .../AI/AI/aiGuardianMiniRecognizeTarget.cpp | 20 + .../AI/AI/aiGuardianMiniRecognizeTarget.h | 20 + .../AI/AI/aiGuardianMiniRollingAttackMove.cpp | 49 + .../AI/AI/aiGuardianMiniRollingAttackMove.h | 68 + src/Game/AI/AI/aiGuardianMiniRoot.cpp | 31 + src/Game/AI/AI/aiGuardianMiniRoot.h | 34 + .../AI/AI/aiGuardianMiniTargetOnScalffold.cpp | 24 + .../AI/AI/aiGuardianMiniTargetOnScalffold.h | 26 + .../AI/AI/aiGuardianMiniTransformSelect.cpp | 22 + .../AI/AI/aiGuardianMiniTransformSelect.h | 22 + src/Game/AI/AI/aiGuardianMiniViewWait.cpp | 29 + src/Game/AI/AI/aiGuardianMiniViewWait.h | 37 + src/Game/AI/AI/aiGuardianRoam.cpp | 27 + src/Game/AI/AI/aiGuardianRoam.h | 26 + src/Game/AI/AI/aiGuardianRoot.cpp | 27 + src/Game/AI/AI/aiGuardianRoot.h | 26 + src/Game/AI/AI/aiGuardianTargetLost.cpp | 29 + src/Game/AI/AI/aiGuardianTargetLost.h | 30 + src/Game/AI/AI/aiGuardianWait.cpp | 25 + src/Game/AI/AI/aiGuardianWait.h | 22 + src/Game/AI/AI/aiGyroActivateTerminal.cpp | 23 + src/Game/AI/AI/aiGyroActivateTerminal.h | 21 + src/Game/AI/AI/aiHangedLamp.cpp | 25 + src/Game/AI/AI/aiHangedLamp.h | 25 + src/Game/AI/AI/aiHasPreActorSelect.cpp | 23 + src/Game/AI/AI/aiHasPreActorSelect.h | 21 + src/Game/AI/AI/aiHaveNoWeaponSelector.cpp | 9 + src/Game/AI/AI/aiHaveNoWeaponSelector.h | 17 + src/Game/AI/AI/aiHeightSelectTwoAction.cpp | 24 + src/Game/AI/AI/aiHeightSelectTwoAction.h | 28 + src/Game/AI/AI/aiHeroSoulGiftRoot.cpp | 28 + src/Game/AI/AI/aiHeroSoulGiftRoot.h | 29 + src/Game/AI/AI/aiHiddenKorokRoot.cpp | 31 + src/Game/AI/AI/aiHiddenKorokRoot.h | 35 + src/Game/AI/AI/aiHiddenOctarockFindPlayer.cpp | 30 + src/Game/AI/AI/aiHiddenOctarockFindPlayer.h | 33 + src/Game/AI/AI/aiHiddenOctarockNormal.cpp | 33 + src/Game/AI/AI/aiHiddenOctarockNormal.h | 38 + .../AI/AI/aiHiddenOctarockSearchTarget.cpp | 27 + src/Game/AI/AI/aiHiddenOctarockSearchTarget.h | 25 + src/Game/AI/AI/aiHomePosDistanceSelector.cpp | 25 + src/Game/AI/AI/aiHomePosDistanceSelector.h | 23 + src/Game/AI/AI/aiHorse.cpp | 22 + src/Game/AI/AI/aiHorse.h | 24 + .../AI/AI/aiHorseCheckLineOfSightSelector.cpp | 26 + .../AI/AI/aiHorseCheckLineOfSightSelector.h | 22 + .../aiHorseCheckLineOfSightSelectorBase.cpp | 29 + .../AI/aiHorseCheckLineOfSightSelectorBase.h | 29 + src/Game/AI/AI/aiHorseDamageTypeSelect.cpp | 23 + src/Game/AI/AI/aiHorseDamageTypeSelect.h | 21 + src/Game/AI/AI/aiHorseEscapeRouteRailAI.cpp | 27 + src/Game/AI/AI/aiHorseEscapeRouteRailAI.h | 27 + src/Game/AI/AI/aiHorseFollow.cpp | 42 + src/Game/AI/AI/aiHorseFollow.h | 57 + src/Game/AI/AI/aiHorseGoToEatAI.cpp | 26 + src/Game/AI/AI/aiHorseGoToEatAI.h | 25 + src/Game/AI/AI/aiHorseLoopTarget.cpp | 18 + src/Game/AI/AI/aiHorseLoopTarget.h | 23 + src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.cpp | 28 + src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h | 28 + src/Game/AI/AI/aiHorseMoveToPlayer.cpp | 27 + src/Game/AI/AI/aiHorseMoveToPlayer.h | 26 + src/Game/AI/AI/aiHorseNatureSelectAI.cpp | 23 + src/Game/AI/AI/aiHorseNatureSelectAI.h | 21 + src/Game/AI/AI/aiHorseNotRidden.cpp | 41 + src/Game/AI/AI/aiHorseNotRidden.h | 55 + .../AI/AI/aiHorsePrevRiddenStatusSelector.cpp | 24 + .../AI/AI/aiHorsePrevRiddenStatusSelector.h | 21 + src/Game/AI/AI/aiHorseReins.cpp | 13 + src/Game/AI/AI/aiHorseReins.h | 18 + src/Game/AI/AI/aiHorseRiddenAI.cpp | 21 + src/Game/AI/AI/aiHorseRiddenAI.h | 20 + src/Game/AI/AI/aiHorseRiddenByEnemyAI.cpp | 26 + src/Game/AI/AI/aiHorseRiddenByEnemyAI.h | 25 + src/Game/AI/AI/aiHorseRiddenByNPC.cpp | 26 + src/Game/AI/AI/aiHorseRiddenByNPC.h | 24 + src/Game/AI/AI/aiHorseRiddenByNPCBase.cpp | 23 + src/Game/AI/AI/aiHorseRiddenByNPCBase.h | 22 + src/Game/AI/AI/aiHorseRideChargeAttack.cpp | 29 + src/Game/AI/AI/aiHorseRideChargeAttack.h | 31 + .../AI/aiHorseRideChaseBattleAttackMove.cpp | 26 + .../AI/AI/aiHorseRideChaseBattleAttackMove.h | 22 + src/Game/AI/AI/aiHorseRideChaseBattleMove.cpp | 26 + src/Game/AI/AI/aiHorseRideChaseBattleMove.h | 22 + .../AI/AI/aiHorseRideChaseBattleMoveBase.cpp | 29 + .../AI/AI/aiHorseRideChaseBattleMoveBase.h | 29 + src/Game/AI/AI/aiHorseRideDamagedSelector.cpp | 23 + src/Game/AI/AI/aiHorseRideDamagedSelector.h | 21 + src/Game/AI/AI/aiHorseRideEnemyBattle.cpp | 27 + src/Game/AI/AI/aiHorseRideEnemyBattle.h | 26 + src/Game/AI/AI/aiHorseRideEnemyFindPlayer.cpp | 25 + src/Game/AI/AI/aiHorseRideEnemyFindPlayer.h | 22 + src/Game/AI/AI/aiHorseRideEnemyNormal.cpp | 26 + src/Game/AI/AI/aiHorseRideEnemyNormal.h | 24 + src/Game/AI/AI/aiHorseRideMoveTo.cpp | 29 + src/Game/AI/AI/aiHorseRideMoveTo.h | 31 + src/Game/AI/AI/aiHorseRideRangeKeepMove.cpp | 26 + src/Game/AI/AI/aiHorseRideRangeKeepMove.h | 25 + .../AI/AI/aiHorseRideShooterFindPlayer.cpp | 26 + src/Game/AI/AI/aiHorseRideShooterFindPlayer.h | 22 + .../AI/AI/aiHorseRideShootingEnemyBattle.cpp | 30 + .../AI/AI/aiHorseRideShootingEnemyBattle.h | 30 + src/Game/AI/AI/aiHorseRideTurn.cpp | 26 + src/Game/AI/AI/aiHorseRideTurn.h | 25 + src/Game/AI/AI/aiHorseWanderAI.cpp | 19 + src/Game/AI/AI/aiHorseWanderAI.h | 20 + src/Game/AI/AI/aiIAIAttack.cpp | 31 + src/Game/AI/AI/aiIAIAttack.h | 35 + src/Game/AI/AI/aiIbutsuWaterFallRoot.cpp | 23 + src/Game/AI/AI/aiIbutsuWaterFallRoot.h | 21 + src/Game/AI/AI/aiIceEnemyFeintBattle.cpp | 13 + src/Game/AI/AI/aiIceEnemyFeintBattle.h | 19 + src/Game/AI/AI/aiIceMakerBlock.cpp | 27 + src/Game/AI/AI/aiIceMakerBlock.h | 29 + src/Game/AI/AI/aiInDemoSelect.cpp | 29 + src/Game/AI/AI/aiInDemoSelect.h | 31 + .../AI/AI/aiInForceEnemyLostAreaSelect.cpp | 24 + src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h | 21 + src/Game/AI/AI/aiInTerritorySelector.cpp | 21 + src/Game/AI/AI/aiInTerritorySelector.h | 22 + src/Game/AI/AI/aiInWaterKeepSelect.cpp | 26 + src/Game/AI/AI/aiInWaterKeepSelect.h | 24 + src/Game/AI/AI/aiInWaterSelect.cpp | 28 + src/Game/AI/AI/aiInWaterSelect.h | 29 + src/Game/AI/AI/aiIncredibleAction.cpp | 28 + src/Game/AI/AI/aiIncredibleAction.h | 29 + src/Game/AI/AI/aiInitFromInCarryBoxSelect.cpp | 26 + src/Game/AI/AI/aiInitFromInCarryBoxSelect.h | 25 + src/Game/AI/AI/aiInsectEscape.cpp | 31 + src/Game/AI/AI/aiInsectEscape.h | 35 + src/Game/AI/AI/aiInsectFairyRoot.cpp | 25 + src/Game/AI/AI/aiInsectFairyRoot.h | 22 + src/Game/AI/AI/aiInsectRoam.cpp | 29 + src/Game/AI/AI/aiInsectRoam.h | 31 + src/Game/AI/AI/aiInsectRoot.cpp | 26 + src/Game/AI/AI/aiInsectRoot.h | 24 + src/Game/AI/AI/aiInvincibleHiddenOctarock.cpp | 23 + src/Game/AI/AI/aiInvincibleHiddenOctarock.h | 21 + src/Game/AI/AI/aiInvisibleKorokRailMove.cpp | 25 + src/Game/AI/AI/aiInvisibleKorokRailMove.h | 22 + src/Game/AI/AI/aiIsPlacementAreaEnemy.cpp | 25 + src/Game/AI/AI/aiIsPlacementAreaEnemy.h | 23 + src/Game/AI/AI/aiItemAmiiboRoot.cpp | 26 + src/Game/AI/AI/aiItemAmiiboRoot.h | 25 + src/Game/AI/AI/aiItemConductor.cpp | 15 + src/Game/AI/AI/aiItemConductor.h | 19 + src/Game/AI/AI/aiItemOnTree.cpp | 33 + src/Game/AI/AI/aiItemOnTree.h | 38 + src/Game/AI/AI/aiItemRoot.cpp | 26 + src/Game/AI/AI/aiItemRoot.h | 25 + src/Game/AI/AI/aiJumpAttack.cpp | 19 + src/Game/AI/AI/aiJumpAttack.h | 21 + src/Game/AI/AI/aiJustAvoidFinishWait.cpp | 25 + src/Game/AI/AI/aiJustAvoidFinishWait.h | 23 + src/Game/AI/AI/aiKakarikoKokkoTimeline.cpp | 29 + src/Game/AI/AI/aiKakarikoKokkoTimeline.h | 30 + src/Game/AI/AI/aiKeepBackSelect.cpp | 30 + src/Game/AI/AI/aiKeepBackSelect.h | 33 + src/Game/AI/AI/aiKeeseDieSelect.cpp | 25 + src/Game/AI/AI/aiKeeseDieSelect.h | 22 + src/Game/AI/AI/aiKeeseHangOnCeil.cpp | 23 + src/Game/AI/AI/aiKeeseHangOnCeil.h | 21 + src/Game/AI/AI/aiKeeseNormal.cpp | 27 + src/Game/AI/AI/aiKeeseNormal.h | 26 + src/Game/AI/AI/aiKeeseRoam.cpp | 31 + src/Game/AI/AI/aiKeeseRoam.h | 35 + src/Game/AI/AI/aiKeeseSwarmNormal.cpp | 25 + src/Game/AI/AI/aiKeeseSwarmNormal.h | 22 + src/Game/AI/AI/aiKeeseSwarmRoam.cpp | 26 + src/Game/AI/AI/aiKeeseSwarmRoam.h | 24 + src/Game/AI/AI/aiKeyLockedShutter.cpp | 15 + src/Game/AI/AI/aiKeyLockedShutter.h | 19 + src/Game/AI/AI/aiKokkoAngry.cpp | 25 + src/Game/AI/AI/aiKokkoAngry.h | 22 + src/Game/AI/AI/aiKokkoAngryTargetSelect.cpp | 23 + src/Game/AI/AI/aiKokkoAngryTargetSelect.h | 21 + src/Game/AI/AI/aiKokkoEscapeAI.cpp | 25 + src/Game/AI/AI/aiKokkoEscapeAI.h | 22 + src/Game/AI/AI/aiKokkoRoot.cpp | 27 + src/Game/AI/AI/aiKokkoRoot.h | 26 + src/Game/AI/AI/aiKorokAnswerResponceRoot.cpp | 28 + src/Game/AI/AI/aiKorokAnswerResponceRoot.h | 29 + src/Game/AI/AI/aiKorokFlowerColorRoot.cpp | 25 + src/Game/AI/AI/aiKorokFlowerColorRoot.h | 23 + src/Game/AI/AI/aiKorokFlowerRoot.cpp | 26 + src/Game/AI/AI/aiKorokFlowerRoot.h | 25 + src/Game/AI/AI/aiKorokGoalTimerRootAI.cpp | 25 + src/Game/AI/AI/aiKorokGoalTimerRootAI.h | 23 + src/Game/AI/AI/aiKorokPinWheelRoot.cpp | 26 + src/Game/AI/AI/aiKorokPinWheelRoot.h | 25 + src/Game/AI/AI/aiKorokPotRootAI.cpp | 28 + src/Game/AI/AI/aiKorokPotRootAI.h | 29 + src/Game/AI/AI/aiKorokRailMove.cpp | 28 + src/Game/AI/AI/aiKorokRailMove.h | 29 + src/Game/AI/AI/aiKorokStartStandRoot.cpp | 23 + src/Game/AI/AI/aiKorokStartStandRoot.h | 21 + src/Game/AI/AI/aiKorokStoneLift.cpp | 23 + src/Game/AI/AI/aiKorokStoneLift.h | 22 + src/Game/AI/AI/aiKorokTargetRailMove.cpp | 29 + src/Game/AI/AI/aiKorokTargetRailMove.h | 30 + .../AI/AI/aiLOSFurthestHitPointFinder.cpp | 28 + src/Game/AI/AI/aiLOSFurthestHitPointFinder.h | 31 + src/Game/AI/AI/aiLandHumEnemyFindBait.cpp | 26 + src/Game/AI/AI/aiLandHumEnemyFindBait.h | 31 + .../AI/AI/aiLandHumEnemyFindBaitWeapon.cpp | 22 + src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h | 22 + src/Game/AI/AI/aiLandHumEnemyFindPlayer.cpp | 36 + src/Game/AI/AI/aiLandHumEnemyFindPlayer.h | 51 + src/Game/AI/AI/aiLandHumEnemyNormal.cpp | 29 + src/Game/AI/AI/aiLandHumEnemyNormal.h | 30 + src/Game/AI/AI/aiLandHumEnemyThrowWeapon.cpp | 24 + src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h | 28 + .../AI/AI/aiLandHumEnemyUnarmedBattle.cpp | 42 + src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.h | 61 + .../AI/AI/aiLandHumGourmandEnemyNormal.cpp | 31 + src/Game/AI/AI/aiLandHumGourmandEnemyNormal.h | 32 + src/Game/AI/AI/aiLandingChemicalBall.cpp | 32 + src/Game/AI/AI/aiLandingChemicalBall.h | 37 + src/Game/AI/AI/aiLargeCannonAttackRoot.cpp | 25 + src/Game/AI/AI/aiLargeCannonAttackRoot.h | 23 + src/Game/AI/AI/aiLargeEnemyFindPlayer.cpp | 25 + src/Game/AI/AI/aiLargeEnemyFindPlayer.h | 22 + src/Game/AI/AI/aiLastAttackerSelect.cpp | 23 + src/Game/AI/AI/aiLastAttackerSelect.h | 21 + .../AI/aiLastAttackerSpecialActionSelect.cpp | 26 + .../AI/AI/aiLastAttackerSpecialActionSelect.h | 23 + src/Game/AI/AI/aiLastBossBeamAttackRoot.cpp | 41 + src/Game/AI/AI/aiLastBossBeamAttackRoot.h | 55 + src/Game/AI/AI/aiLastBossDemoWarpMove.cpp | 23 + src/Game/AI/AI/aiLastBossDemoWarpMove.h | 21 + src/Game/AI/AI/aiLastBossDemoWarpRoot.cpp | 25 + src/Game/AI/AI/aiLastBossDemoWarpRoot.h | 23 + src/Game/AI/AI/aiLastBossNormalWarpRoot.cpp | 31 + src/Game/AI/AI/aiLastBossNormalWarpRoot.h | 35 + src/Game/AI/AI/aiLastBossRailWarpRoot.cpp | 14 + src/Game/AI/AI/aiLastBossRailWarpRoot.h | 21 + src/Game/AI/AI/aiLastBossRoot.cpp | 33 + src/Game/AI/AI/aiLastBossRoot.h | 39 + src/Game/AI/AI/aiLastBossShieldBash.cpp | 26 + src/Game/AI/AI/aiLastBossShieldBash.h | 25 + .../AI/AI/aiLastBossShootGaleArrowRoot.cpp | 26 + src/Game/AI/AI/aiLastBossShootGaleArrowRoot.h | 22 + .../AI/AI/aiLastBossShootNormalArrowRoot.cpp | 36 + .../AI/AI/aiLastBossShootNormalArrowRoot.h | 43 + src/Game/AI/AI/aiLastBossSwordWhirlSlash.cpp | 26 + src/Game/AI/AI/aiLastBossSwordWhirlSlash.h | 25 + src/Game/AI/AI/aiLastBossThunderRoot.cpp | 23 + src/Game/AI/AI/aiLastBossThunderRoot.h | 21 + src/Game/AI/AI/aiLastBossWeaponAttackRoot.cpp | 31 + src/Game/AI/AI/aiLastBossWeaponAttackRoot.h | 35 + src/Game/AI/AI/aiLeadToTarget.cpp | 32 + src/Game/AI/AI/aiLeadToTarget.h | 37 + src/Game/AI/AI/aiLeaderDistanceSelector.cpp | 27 + src/Game/AI/AI/aiLeaderDistanceSelector.h | 27 + src/Game/AI/AI/aiLeaveFromTarget.cpp | 22 + src/Game/AI/AI/aiLeaveFromTarget.h | 24 + src/Game/AI/AI/aiLifeChangeDemoCaller.cpp | 29 + src/Game/AI/AI/aiLifeChangeDemoCaller.h | 31 + src/Game/AI/AI/aiLifted.cpp | 21 + src/Game/AI/AI/aiLifted.h | 22 + .../AI/AI/aiLimitedTimeredActorCreator.cpp | 31 + src/Game/AI/AI/aiLimitedTimeredActorCreator.h | 33 + src/Game/AI/AI/aiLineCheckTag.cpp | 26 + src/Game/AI/AI/aiLineCheckTag.h | 27 + src/Game/AI/AI/aiLinkTagCheck.cpp | 26 + src/Game/AI/AI/aiLinkTagCheck.h | 28 + src/Game/AI/AI/aiLinkageEnemyNormal.cpp | 25 + src/Game/AI/AI/aiLinkageEnemyNormal.h | 22 + src/Game/AI/AI/aiLizalfosBreathAttack.cpp | 23 + src/Game/AI/AI/aiLizalfosBreathAttack.h | 26 + src/Game/AI/AI/aiLumberjackFallenTree.cpp | 36 + src/Game/AI/AI/aiLumberjackFallenTree.h | 47 + src/Game/AI/AI/aiLumberjackTree.cpp | 37 + src/Game/AI/AI/aiLumberjackTree.h | 49 + src/Game/AI/AI/aiLynelArrowAttackSelect.cpp | 26 + src/Game/AI/AI/aiLynelArrowAttackSelect.h | 22 + .../AI/AI/aiLynelArrowAttackSelectBase.cpp | 26 + src/Game/AI/AI/aiLynelArrowAttackSelectBase.h | 23 + .../AI/AI/aiLynelArrowAttackSelectOnce.cpp | 26 + src/Game/AI/AI/aiLynelArrowAttackSelectOnce.h | 22 + src/Game/AI/AI/aiLynelArrowBattle.cpp | 29 + src/Game/AI/AI/aiLynelArrowBattle.h | 30 + src/Game/AI/AI/aiLynelAttackThroughMove.cpp | 32 + src/Game/AI/AI/aiLynelAttackThroughMove.h | 37 + src/Game/AI/AI/aiLynelBackStepFromTarget.cpp | 28 + src/Game/AI/AI/aiLynelBackStepFromTarget.h | 29 + src/Game/AI/AI/aiLynelBattle.cpp | 40 + src/Game/AI/AI/aiLynelBattle.h | 53 + src/Game/AI/AI/aiLynelChaseBattleMove.cpp | 29 + src/Game/AI/AI/aiLynelChaseBattleMove.h | 31 + src/Game/AI/AI/aiLynelCloseBattle.cpp | 28 + src/Game/AI/AI/aiLynelCloseBattle.h | 28 + src/Game/AI/AI/aiLynelDirSelect.cpp | 30 + src/Game/AI/AI/aiLynelDirSelect.h | 33 + src/Game/AI/AI/aiLynelDistanceLostCheck.cpp | 26 + src/Game/AI/AI/aiLynelDistanceLostCheck.h | 24 + src/Game/AI/AI/aiLynelEscapeFromTarget.cpp | 29 + src/Game/AI/AI/aiLynelEscapeFromTarget.h | 31 + src/Game/AI/AI/aiLynelFindPlayer.cpp | 26 + src/Game/AI/AI/aiLynelFindPlayer.h | 24 + src/Game/AI/AI/aiLynelLineMoveAttack.cpp | 29 + src/Game/AI/AI/aiLynelLineMoveAttack.h | 31 + src/Game/AI/AI/aiLynelNavMoveNoStop.cpp | 29 + src/Game/AI/AI/aiLynelNavMoveNoStop.h | 31 + src/Game/AI/AI/aiLynelNavMoveTarget.cpp | 27 + src/Game/AI/AI/aiLynelNavMoveTarget.h | 26 + src/Game/AI/AI/aiLynelNormal.cpp | 28 + src/Game/AI/AI/aiLynelNormal.h | 28 + src/Game/AI/AI/aiLynelNoticeAttacked.cpp | 29 + src/Game/AI/AI/aiLynelNoticeAttacked.h | 31 + src/Game/AI/AI/aiLynelNoticeTerror.cpp | 25 + src/Game/AI/AI/aiLynelNoticeTerror.h | 22 + src/Game/AI/AI/aiLynelOnNoNavMeshPos.cpp | 29 + src/Game/AI/AI/aiLynelOnNoNavMeshPos.h | 31 + src/Game/AI/AI/aiLynelRecognizeTarget.cpp | 47 + src/Game/AI/AI/aiLynelRecognizeTarget.h | 67 + src/Game/AI/AI/aiLynelRepeatAttack.cpp | 26 + src/Game/AI/AI/aiLynelRepeatAttack.h | 25 + src/Game/AI/AI/aiLynelRoam.cpp | 39 + src/Game/AI/AI/aiLynelRoam.h | 51 + src/Game/AI/AI/aiLynelRodeo.cpp | 25 + src/Game/AI/AI/aiLynelRodeo.h | 23 + src/Game/AI/AI/aiLynelRoot.cpp | 39 + src/Game/AI/AI/aiLynelRoot.h | 48 + src/Game/AI/AI/aiLynelTackleMove.cpp | 28 + src/Game/AI/AI/aiLynelTackleMove.h | 29 + src/Game/AI/AI/aiLynelThreeBreathAttack.cpp | 28 + src/Game/AI/AI/aiLynelThreeBreathAttack.h | 29 + src/Game/AI/AI/aiLynelWarp.cpp | 23 + src/Game/AI/AI/aiLynelWarp.h | 21 + src/Game/AI/AI/aiMagneGearRoot.cpp | 23 + src/Game/AI/AI/aiMagneGearRoot.h | 21 + src/Game/AI/AI/aiMagneGrabSelect.cpp | 23 + src/Game/AI/AI/aiMagneGrabSelect.h | 21 + .../AI/aiMagneGrabbedPartsRangeSelector.cpp | 27 + .../AI/AI/aiMagneGrabbedPartsRangeSelector.h | 24 + src/Game/AI/AI/aiMagneShaftRoot.cpp | 25 + src/Game/AI/AI/aiMagneShaftRoot.h | 22 + src/Game/AI/AI/aiMagneShaftRootBase.cpp | 25 + src/Game/AI/AI/aiMagneShaftRootBase.h | 22 + .../AI/AI/aiMagneSliderBlockRootThunder.cpp | 26 + .../AI/AI/aiMagneSliderBlockRootThunder.h | 22 + src/Game/AI/AI/aiMagneStickRoot.cpp | 31 + src/Game/AI/AI/aiMagneStickRoot.h | 37 + src/Game/AI/AI/aiMagnetglove.cpp | 23 + src/Game/AI/AI/aiMagnetglove.h | 21 + src/Game/AI/AI/aiMainFieldDungeonSelect.cpp | 23 + src/Game/AI/AI/aiMainFieldDungeonSelect.h | 21 + .../AI/AI/aiMasquaradeSubTargetSelect.cpp | 25 + src/Game/AI/AI/aiMasquaradeSubTargetSelect.h | 23 + .../AI/AI/aiMasterSwordBase100EnemyRoot.cpp | 26 + .../AI/AI/aiMasterSwordBase100EnemyRoot.h | 23 + src/Game/AI/AI/aiMasterSwordRoot.cpp | 26 + src/Game/AI/AI/aiMasterSwordRoot.h | 24 + src/Game/AI/AI/aiMergedDungeonPartsRoot.cpp | 56 + src/Game/AI/AI/aiMergedDungeonPartsRoot.h | 85 + src/Game/AI/AI/aiMessageReceiveCheck.cpp | 26 + src/Game/AI/AI/aiMessageReceiveCheck.h | 24 + src/Game/AI/AI/aiMessageReceiveCheckBasic.cpp | 23 + src/Game/AI/AI/aiMessageReceiveCheckBasic.h | 21 + .../AI/AI/aiMessageReceiveCheckEveryFrame.cpp | 27 + .../AI/AI/aiMessageReceiveCheckEveryFrame.h | 24 + src/Game/AI/AI/aiMetalObjectBuried.cpp | 31 + src/Game/AI/AI/aiMetalObjectBuried.h | 35 + src/Game/AI/AI/aiMetalObjectFixed.cpp | 25 + src/Game/AI/AI/aiMetalObjectFixed.h | 23 + .../AI/AI/aiMimicCliffStopEnemyNormal.cpp | 27 + src/Game/AI/AI/aiMimicCliffStopEnemyNormal.h | 24 + .../AI/AI/aiMimicCliffStopEnemyNormalBase.cpp | 32 + .../AI/AI/aiMimicCliffStopEnemyNormalBase.h | 35 + src/Game/AI/AI/aiMimicEnemyFindPlayer.cpp | 24 + src/Game/AI/AI/aiMimicEnemyFindPlayer.h | 27 + src/Game/AI/AI/aiMimicEnemyNormal.cpp | 24 + src/Game/AI/AI/aiMimicEnemyNormal.h | 27 + src/Game/AI/AI/aiMimicFlagSelect.cpp | 25 + src/Game/AI/AI/aiMimicFlagSelect.h | 23 + src/Game/AI/AI/aiMimicryResetCheck.cpp | 23 + src/Game/AI/AI/aiMimicryResetCheck.h | 26 + src/Game/AI/AI/aiMiniBeamAttack.cpp | 33 + src/Game/AI/AI/aiMiniBeamAttack.h | 38 + src/Game/AI/AI/aiMiniGolemLifted.cpp | 26 + src/Game/AI/AI/aiMiniGolemLifted.h | 24 + src/Game/AI/AI/aiMiniGolemReaction.cpp | 26 + src/Game/AI/AI/aiMiniGolemReaction.h | 24 + src/Game/AI/AI/aiMiniGolemRoot.cpp | 27 + src/Game/AI/AI/aiMiniGolemRoot.h | 26 + src/Game/AI/AI/aiMiniGolemSleep.cpp | 26 + src/Game/AI/AI/aiMiniGolemSleep.h | 24 + src/Game/AI/AI/aiMoonAI.cpp | 21 + src/Game/AI/AI/aiMoonAI.h | 20 + src/Game/AI/AI/aiMoonNameTag.cpp | 25 + src/Game/AI/AI/aiMoonNameTag.h | 23 + src/Game/AI/AI/aiMoriblinSpearBattle.cpp | 29 + src/Game/AI/AI/aiMoriblinSpearBattle.h | 38 + src/Game/AI/AI/aiMoriblinSpearNearBattle.cpp | 23 + src/Game/AI/AI/aiMoriblinSpearNearBattle.h | 29 + src/Game/AI/AI/aiMoriblinUnarmedBattle.cpp | 29 + src/Game/AI/AI/aiMoriblinUnarmedBattle.h | 38 + src/Game/AI/AI/aiMotorcycleRoot.cpp | 32 + src/Game/AI/AI/aiMotorcycleRoot.h | 36 + src/Game/AI/AI/aiMotorcycleRootBase.cpp | 23 + src/Game/AI/AI/aiMotorcycleRootBase.h | 21 + src/Game/AI/AI/aiMoveAndFreeFallGondola.cpp | 27 + src/Game/AI/AI/aiMoveAndFreeFallGondola.h | 26 + src/Game/AI/AI/aiMoveAroundTarget.cpp | 30 + src/Game/AI/AI/aiMoveAroundTarget.h | 33 + src/Game/AI/AI/aiMoveLOSFeedback.cpp | 27 + src/Game/AI/AI/aiMoveLOSFeedback.h | 27 + src/Game/AI/AI/aiMoveRemainsElectric.cpp | 30 + src/Game/AI/AI/aiMoveRemainsElectric.h | 32 + src/Game/AI/AI/aiMoveToCameraFrontXZ.cpp | 33 + src/Game/AI/AI/aiMoveToCameraFrontXZ.h | 39 + .../AI/AI/aiMoveToTargetCollisionFeedback.cpp | 35 + .../AI/AI/aiMoveToTargetCollisionFeedback.h | 41 + src/Game/AI/AI/aiNPCAlert.cpp | 27 + src/Game/AI/AI/aiNPCAlert.h | 34 + src/Game/AI/AI/aiNPCArtistRoot.cpp | 26 + src/Game/AI/AI/aiNPCArtistRoot.h | 24 + src/Game/AI/AI/aiNPCAttack.cpp | 35 + src/Game/AI/AI/aiNPCAttack.h | 43 + src/Game/AI/AI/aiNPCAttentionAI.cpp | 24 + src/Game/AI/AI/aiNPCAttentionAI.h | 28 + src/Game/AI/AI/aiNPCAvoid.cpp | 30 + src/Game/AI/AI/aiNPCAvoid.h | 40 + src/Game/AI/AI/aiNPCChasePlayerBlueFire.cpp | 28 + src/Game/AI/AI/aiNPCChasePlayerBlueFire.h | 29 + src/Game/AI/AI/aiNPCClerkRoot.cpp | 25 + src/Game/AI/AI/aiNPCClerkRoot.h | 22 + src/Game/AI/AI/aiNPCConfront.cpp | 35 + src/Game/AI/AI/aiNPCConfront.h | 43 + src/Game/AI/AI/aiNPCConfrontEnemy.cpp | 34 + src/Game/AI/AI/aiNPCConfrontEnemy.h | 41 + src/Game/AI/AI/aiNPCGerudoQueenRoot.cpp | 26 + src/Game/AI/AI/aiNPCGerudoQueenRoot.h | 24 + src/Game/AI/AI/aiNPCHeartsRoot.cpp | 25 + src/Game/AI/AI/aiNPCHeartsRoot.h | 22 + src/Game/AI/AI/aiNPCHorseRide.cpp | 28 + src/Game/AI/AI/aiNPCHorseRide.h | 30 + src/Game/AI/AI/aiNPCHorseRideWait.cpp | 23 + src/Game/AI/AI/aiNPCHorseRideWait.h | 21 + src/Game/AI/AI/aiNPCMamonoShopRoot.cpp | 26 + src/Game/AI/AI/aiNPCMamonoShopRoot.h | 24 + src/Game/AI/AI/aiNPCMove.cpp | 27 + src/Game/AI/AI/aiNPCMove.h | 27 + src/Game/AI/AI/aiNPCMoveToRailPoint.cpp | 29 + src/Game/AI/AI/aiNPCMoveToRailPoint.h | 31 + src/Game/AI/AI/aiNPCReaction.cpp | 25 + src/Game/AI/AI/aiNPCReaction.h | 30 + src/Game/AI/AI/aiNPCReturnAnchor.cpp | 23 + src/Game/AI/AI/aiNPCReturnAnchor.h | 21 + src/Game/AI/AI/aiNPCReturnRestPosRoot.cpp | 25 + src/Game/AI/AI/aiNPCReturnRestPosRoot.h | 23 + src/Game/AI/AI/aiNPCRoam.cpp | 31 + src/Game/AI/AI/aiNPCRoam.h | 35 + src/Game/AI/AI/aiNPCRoot.cpp | 28 + src/Game/AI/AI/aiNPCRoot.h | 29 + src/Game/AI/AI/aiNPCRunaway.cpp | 33 + src/Game/AI/AI/aiNPCRunaway.h | 39 + src/Game/AI/AI/aiNPCSearch.cpp | 27 + src/Game/AI/AI/aiNPCSearch.h | 27 + src/Game/AI/AI/aiNPCSurprised.cpp | 27 + src/Game/AI/AI/aiNPCSurprised.h | 27 + src/Game/AI/AI/aiNPCSuspend.cpp | 29 + src/Game/AI/AI/aiNPCSuspend.h | 31 + src/Game/AI/AI/aiNPCTalkBalloon.cpp | 24 + src/Game/AI/AI/aiNPCTalkBalloon.h | 28 + src/Game/AI/AI/aiNPCTerrorAI.cpp | 29 + src/Game/AI/AI/aiNPCTerrorAI.h | 38 + src/Game/AI/AI/aiNPCTimeline.cpp | 25 + src/Game/AI/AI/aiNPCTimeline.h | 22 + src/Game/AI/AI/aiNPCTravel.cpp | 27 + src/Game/AI/AI/aiNPCTravel.h | 26 + src/Game/AI/AI/aiNPCTravelBase.cpp | 23 + src/Game/AI/AI/aiNPCTravelBase.h | 21 + src/Game/AI/AI/aiNPCTravelerRoot.cpp | 26 + src/Game/AI/AI/aiNPCTravelerRoot.h | 24 + src/Game/AI/AI/aiNPCWander.cpp | 33 + src/Game/AI/AI/aiNPCWander.h | 38 + .../AI/AI/aiNavMeshTurnAwayFromHitPos.cpp | 29 + src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h | 31 + src/Game/AI/AI/aiNavMoveNearTarget.cpp | 27 + src/Game/AI/AI/aiNavMoveNearTarget.h | 26 + src/Game/AI/AI/aiNavMoveTarget.cpp | 35 + src/Game/AI/AI/aiNavMoveTarget.h | 45 + .../AI/AI/aiNavMoveTargetClosestPoint.cpp | 14 + src/Game/AI/AI/aiNavMoveTargetClosestPoint.h | 21 + .../AI/AI/aiNavMoveTargetWithJumpWater.cpp | 29 + src/Game/AI/AI/aiNavMoveTargetWithJumpWater.h | 30 + src/Game/AI/AI/aiNavViewMove.cpp | 27 + src/Game/AI/AI/aiNavViewMove.h | 27 + .../AI/AI/aiNearCreateAppearTypeSelect.cpp | 26 + src/Game/AI/AI/aiNearCreateAppearTypeSelect.h | 23 + src/Game/AI/AI/aiNearCreateSelect.cpp | 25 + src/Game/AI/AI/aiNearCreateSelect.h | 23 + src/Game/AI/AI/aiNewMannequinRoot.cpp | 26 + src/Game/AI/AI/aiNewMannequinRoot.h | 25 + src/Game/AI/AI/aiNonPlayerHorseRide.cpp | 23 + src/Game/AI/AI/aiNonPlayerHorseRide.h | 21 + .../AI/AI/aiNormalHumanEquipableShield.cpp | 26 + src/Game/AI/AI/aiNormalHumanEquipableShield.h | 23 + src/Game/AI/AI/aiNoticePartsRangeSelector.cpp | 26 + src/Game/AI/AI/aiNoticePartsRangeSelector.h | 24 + src/Game/AI/AI/aiNpcDemoRoot.cpp | 23 + src/Game/AI/AI/aiNpcDemoRoot.h | 21 + src/Game/AI/AI/aiNpcMoveToAnchor.cpp | 29 + src/Game/AI/AI/aiNpcMoveToAnchor.h | 31 + src/Game/AI/AI/aiNpcTebaRoot.cpp | 27 + src/Game/AI/AI/aiNpcTebaRoot.h | 27 + src/Game/AI/AI/aiNpcTebaTrainingRoot.cpp | 25 + src/Game/AI/AI/aiNpcTebaTrainingRoot.h | 22 + src/Game/AI/AI/aiNushiEscapeSelector.cpp | 25 + src/Game/AI/AI/aiNushiEscapeSelector.h | 23 + src/Game/AI/AI/aiNushiWarp.cpp | 23 + src/Game/AI/AI/aiNushiWarp.h | 21 + src/Game/AI/AI/aiOctarockBattle.cpp | 33 + src/Game/AI/AI/aiOctarockBattle.h | 38 + src/Game/AI/AI/aiOctarockEscape.cpp | 25 + src/Game/AI/AI/aiOctarockEscape.h | 23 + src/Game/AI/AI/aiOctarockHideEscape.cpp | 26 + src/Game/AI/AI/aiOctarockHideEscape.h | 24 + src/Game/AI/AI/aiOctarockOptionRoot.cpp | 26 + src/Game/AI/AI/aiOctarockOptionRoot.h | 26 + src/Game/AI/AI/aiOctarockReaction.cpp | 27 + src/Game/AI/AI/aiOctarockReaction.h | 26 + src/Game/AI/AI/aiOctarockRoot.cpp | 51 + src/Game/AI/AI/aiOctarockRoot.h | 42 + src/Game/AI/AI/aiOctarockRootBase.cpp | 25 + src/Game/AI/AI/aiOctarockRootBase.h | 22 + src/Game/AI/AI/aiOctarockServiceHideWait.cpp | 30 + src/Game/AI/AI/aiOctarockServiceHideWait.h | 33 + src/Game/AI/AI/aiOctarockWaterWait.cpp | 31 + src/Game/AI/AI/aiOctarockWaterWait.h | 35 + src/Game/AI/AI/aiOnCliffEnemyBattle.cpp | 30 + src/Game/AI/AI/aiOnCliffEnemyBattle.h | 33 + src/Game/AI/AI/aiOnCliffSurfaceSelect.cpp | 26 + src/Game/AI/AI/aiOnCliffSurfaceSelect.h | 25 + src/Game/AI/AI/aiOnCliffViewWait.cpp | 26 + src/Game/AI/AI/aiOnCliffViewWait.h | 24 + src/Game/AI/AI/aiOnEnterEventModeSelect.cpp | 23 + src/Game/AI/AI/aiOnEnterEventModeSelect.h | 21 + src/Game/AI/AI/aiOnNavFaceSelect.cpp | 23 + src/Game/AI/AI/aiOnNavFaceSelect.h | 21 + src/Game/AI/AI/aiOnRagdollSelect.cpp | 23 + src/Game/AI/AI/aiOnRagdollSelect.h | 21 + src/Game/AI/AI/aiOneMemoryMagicBattle.cpp | 26 + src/Game/AI/AI/aiOneMemoryMagicBattle.h | 24 + src/Game/AI/AI/aiOneMemoryMagicBattleBase.cpp | 31 + src/Game/AI/AI/aiOneMemoryMagicBattleBase.h | 34 + src/Game/AI/AI/aiOptionalWeaponAI.cpp | 13 + src/Game/AI/AI/aiOptionalWeaponAI.h | 18 + src/Game/AI/AI/aiOutOfScreen.cpp | 27 + src/Game/AI/AI/aiOutOfScreen.h | 27 + src/Game/AI/AI/aiPartHaveSelect.cpp | 26 + src/Game/AI/AI/aiPartHaveSelect.h | 25 + src/Game/AI/AI/aiPartsNoticeSelect.cpp | 25 + src/Game/AI/AI/aiPartsNoticeSelect.h | 23 + src/Game/AI/AI/aiPartsSleepSelect.cpp | 25 + src/Game/AI/AI/aiPartsSleepSelect.h | 23 + src/Game/AI/AI/aiPauseMenuPlayerRoot.cpp | 23 + src/Game/AI/AI/aiPauseMenuPlayerRoot.h | 21 + src/Game/AI/AI/aiPickShootItemRoot.cpp | 17 + src/Game/AI/AI/aiPickShootItemRoot.h | 21 + src/Game/AI/AI/aiPillarCrack.cpp | 23 + src/Game/AI/AI/aiPillarCrack.h | 21 + src/Game/AI/AI/aiPipeDrawing.cpp | 23 + src/Game/AI/AI/aiPipeDrawing.h | 21 + src/Game/AI/AI/aiPlayerAttack.cpp | 17 + src/Game/AI/AI/aiPlayerAttack.h | 19 + src/Game/AI/AI/aiPlayerBarrierBlow.cpp | 25 + src/Game/AI/AI/aiPlayerBarrierBlow.h | 23 + src/Game/AI/AI/aiPlayerBeetle.cpp | 19 + src/Game/AI/AI/aiPlayerBeetle.h | 19 + src/Game/AI/AI/aiPlayerCamera.cpp | 19 + src/Game/AI/AI/aiPlayerCamera.h | 19 + src/Game/AI/AI/aiPlayerCaught.cpp | 19 + src/Game/AI/AI/aiPlayerCaught.h | 19 + src/Game/AI/AI/aiPlayerClimb.cpp | 23 + src/Game/AI/AI/aiPlayerClimb.h | 22 + src/Game/AI/AI/aiPlayerCutJump.cpp | 17 + src/Game/AI/AI/aiPlayerCutJump.h | 19 + src/Game/AI/AI/aiPlayerDead.cpp | 24 + src/Game/AI/AI/aiPlayerDead.h | 24 + src/Game/AI/AI/aiPlayerDemoRoot.cpp | 23 + src/Game/AI/AI/aiPlayerDemoRoot.h | 21 + src/Game/AI/AI/aiPlayerGrab.cpp | 21 + src/Game/AI/AI/aiPlayerGrab.h | 20 + src/Game/AI/AI/aiPlayerItem.cpp | 17 + src/Game/AI/AI/aiPlayerItem.h | 19 + src/Game/AI/AI/aiPlayerLadder.cpp | 25 + src/Game/AI/AI/aiPlayerLadder.h | 25 + src/Game/AI/AI/aiPlayerNavDestinationMove.cpp | 28 + src/Game/AI/AI/aiPlayerNavDestinationMove.h | 29 + src/Game/AI/AI/aiPlayerNormal.cpp | 45 + src/Game/AI/AI/aiPlayerNormal.h | 65 + src/Game/AI/AI/aiPlayerRideHorse.cpp | 38 + src/Game/AI/AI/aiPlayerRideHorse.h | 49 + src/Game/AI/AI/aiPlayerRoot.cpp | 11 + src/Game/AI/AI/aiPlayerRoot.h | 17 + src/Game/AI/AI/aiPlayerSetTarget.cpp | 23 + src/Game/AI/AI/aiPlayerSetTarget.h | 21 + src/Game/AI/AI/aiPlayerSit.cpp | 19 + src/Game/AI/AI/aiPlayerSit.h | 19 + src/Game/AI/AI/aiPlayerSwim.cpp | 25 + src/Game/AI/AI/aiPlayerSwim.h | 26 + src/Game/AI/AI/aiPlayerWaterFall.cpp | 23 + src/Game/AI/AI/aiPlayerWaterFall.h | 21 + src/Game/AI/AI/aiPlayerZoraRide.cpp | 23 + src/Game/AI/AI/aiPlayerZoraRide.h | 21 + src/Game/AI/AI/aiPointWindTagRoot.cpp | 27 + src/Game/AI/AI/aiPointWindTagRoot.h | 27 + .../AI/AI/aiPracticeGuardianMiniNormal.cpp | 26 + src/Game/AI/AI/aiPracticeGuardianMiniNormal.h | 23 + src/Game/AI/AI/aiPreSleepCheck.cpp | 26 + src/Game/AI/AI/aiPreSleepCheck.h | 25 + src/Game/AI/AI/aiPrevASEndSeq.cpp | 25 + src/Game/AI/AI/aiPrevASEndSeq.h | 23 + src/Game/AI/AI/aiPrevASOR2SelectTwo.cpp | 26 + src/Game/AI/AI/aiPrevASOR2SelectTwo.h | 25 + src/Game/AI/AI/aiPrevASSelect.cpp | 25 + src/Game/AI/AI/aiPrevASSelect.h | 23 + src/Game/AI/AI/aiPrevASSkipSeq.cpp | 26 + src/Game/AI/AI/aiPrevASSkipSeq.h | 24 + src/Game/AI/AI/aiPrevSomeASSelect.cpp | 57 + src/Game/AI/AI/aiPrevSomeASSelect.h | 25 + src/Game/AI/AI/aiPreyChemicalDeadReaction.cpp | 23 + src/Game/AI/AI/aiPreyChemicalDeadReaction.h | 21 + src/Game/AI/AI/aiPreyDead.cpp | 26 + src/Game/AI/AI/aiPreyDead.h | 25 + src/Game/AI/AI/aiPreyDeadCauseSelector.cpp | 23 + src/Game/AI/AI/aiPreyDeadCauseSelector.h | 21 + src/Game/AI/AI/aiPreyDefWanderAI.cpp | 29 + src/Game/AI/AI/aiPreyDefWanderAI.h | 30 + src/Game/AI/AI/aiPreyDropItemRoot.cpp | 28 + src/Game/AI/AI/aiPreyDropItemRoot.h | 28 + src/Game/AI/AI/aiPreyLookAtTarget.cpp | 27 + src/Game/AI/AI/aiPreyLookAtTarget.h | 27 + src/Game/AI/AI/aiPreyNormal.cpp | 43 + src/Game/AI/AI/aiPreyNormal.h | 59 + src/Game/AI/AI/aiPreyReaction.cpp | 23 + src/Game/AI/AI/aiPreyReaction.h | 21 + src/Game/AI/AI/aiPreyRoot.cpp | 36 + src/Game/AI/AI/aiPreyRoot.h | 45 + src/Game/AI/AI/aiPreyStun.cpp | 25 + src/Game/AI/AI/aiPreyStun.h | 23 + src/Game/AI/AI/aiPriestBossActorCloneRoot.cpp | 27 + src/Game/AI/AI/aiPriestBossActorCloneRoot.h | 24 + src/Game/AI/AI/aiPriestBossActorEnemyRoot.cpp | 27 + src/Game/AI/AI/aiPriestBossActorEnemyRoot.h | 26 + .../AI/AI/aiPriestBossActorGiantFouthRoot.cpp | 31 + .../AI/AI/aiPriestBossActorGiantFouthRoot.h | 32 + src/Game/AI/AI/aiPriestBossActorGiantRoot.cpp | 36 + src/Game/AI/AI/aiPriestBossActorGiantRoot.h | 44 + .../AI/AI/aiPriestBossActorNormalMode.cpp | 39 + src/Game/AI/AI/aiPriestBossActorNormalMode.h | 50 + .../AI/AI/aiPriestBossActorNormalRoot.cpp | 27 + src/Game/AI/AI/aiPriestBossActorNormalRoot.h | 24 + .../AI/aiPriestBossActorPhaseSecondStart.cpp | 27 + .../AI/AI/aiPriestBossActorPhaseSecondStart.h | 25 + src/Game/AI/AI/aiPriestBossActorRoot.cpp | 25 + src/Game/AI/AI/aiPriestBossActorRoot.h | 22 + src/Game/AI/AI/aiPriestBossAfterImageRoot.cpp | 23 + src/Game/AI/AI/aiPriestBossAfterImageRoot.h | 21 + src/Game/AI/AI/aiPriestBossAttackGrave.cpp | 25 + src/Game/AI/AI/aiPriestBossAttackGrave.h | 22 + src/Game/AI/AI/aiPriestBossBananaMode.cpp | 28 + src/Game/AI/AI/aiPriestBossBananaMode.h | 28 + src/Game/AI/AI/aiPriestBossBeamExplode.cpp | 28 + src/Game/AI/AI/aiPriestBossBeamExplode.h | 28 + .../AI/AI/aiPriestBossBlowoffDamageSelect.cpp | 24 + .../AI/AI/aiPriestBossBlowoffDamageSelect.h | 21 + .../AI/aiPriestBossBlowoffReadyReaction.cpp | 26 + .../AI/AI/aiPriestBossBlowoffReadyReaction.h | 23 + src/Game/AI/AI/aiPriestBossBowEquiped.cpp | 23 + src/Game/AI/AI/aiPriestBossBowEquiped.h | 22 + .../AI/AI/aiPriestBossCircleFormationRush.cpp | 27 + .../AI/AI/aiPriestBossCircleFormationRush.h | 24 + .../AI/aiPriestBossCircleFormationShoot.cpp | 27 + .../AI/AI/aiPriestBossCircleFormationShoot.h | 24 + .../AI/AI/aiPriestBossCloneBananaMode.cpp | 26 + src/Game/AI/AI/aiPriestBossCloneBananaMode.h | 22 + .../AI/AI/aiPriestBossCloneBulletRoot.cpp | 26 + src/Game/AI/AI/aiPriestBossCloneBulletRoot.h | 24 + .../AI/AI/aiPriestBossDamageTypeSelect.cpp | 24 + src/Game/AI/AI/aiPriestBossDamageTypeSelect.h | 21 + src/Game/AI/AI/aiPriestBossEyeBeam.cpp | 34 + src/Game/AI/AI/aiPriestBossEyeBeam.h | 41 + src/Game/AI/AI/aiPriestBossEyeBeamFourth.cpp | 38 + src/Game/AI/AI/aiPriestBossEyeBeamFourth.h | 48 + .../AI/AI/aiPriestBossEyeBeamStandAim.cpp | 28 + src/Game/AI/AI/aiPriestBossEyeBeamStandAim.h | 29 + src/Game/AI/AI/aiPriestBossEyeBeamThird.cpp | 28 + src/Game/AI/AI/aiPriestBossEyeBeamThird.h | 28 + src/Game/AI/AI/aiPriestBossFastWarpAttack.cpp | 26 + src/Game/AI/AI/aiPriestBossFastWarpAttack.h | 22 + src/Game/AI/AI/aiPriestBossFormation.cpp | 25 + src/Game/AI/AI/aiPriestBossFormation.h | 23 + .../AI/AI/aiPriestBossGiantDeadSelector.cpp | 26 + .../AI/AI/aiPriestBossGiantDeadSelector.h | 23 + src/Game/AI/AI/aiPriestBossGiantDownSeq.cpp | 32 + src/Game/AI/AI/aiPriestBossGiantDownSeq.h | 36 + src/Game/AI/AI/aiPriestBossGiantEnemyRoot.cpp | 29 + src/Game/AI/AI/aiPriestBossGiantEnemyRoot.h | 28 + src/Game/AI/AI/aiPriestBossGiantReaction.cpp | 26 + src/Game/AI/AI/aiPriestBossGiantReaction.h | 24 + .../AI/AI/aiPriestBossGiantStageRotRoot.cpp | 39 + .../AI/AI/aiPriestBossGiantStageRotRoot.h | 48 + .../AI/AI/aiPriestBossGiantStageRotate.cpp | 28 + src/Game/AI/AI/aiPriestBossGiantStageRotate.h | 28 + src/Game/AI/AI/aiPriestBossIAIAttack.cpp | 25 + src/Game/AI/AI/aiPriestBossIAIAttack.h | 22 + src/Game/AI/AI/aiPriestBossIronBall.cpp | 34 + src/Game/AI/AI/aiPriestBossIronBall.h | 41 + src/Game/AI/AI/aiPriestBossIronBallRoot.cpp | 30 + src/Game/AI/AI/aiPriestBossIronBallRoot.h | 32 + .../AI/AI/aiPriestBossIronBallStageRotate.cpp | 31 + .../AI/AI/aiPriestBossIronBallStageRotate.h | 32 + .../AI/AI/aiPriestBossLineFormationAppear.cpp | 26 + .../AI/AI/aiPriestBossLineFormationAppear.h | 22 + .../AI/AI/aiPriestBossLineFormationFall.cpp | 27 + .../AI/AI/aiPriestBossLineFormationFall.h | 24 + .../AI/AI/aiPriestBossLineFormationRush.cpp | 26 + .../AI/AI/aiPriestBossLineFormationRush.h | 22 + src/Game/AI/AI/aiPriestBossMakeClone.cpp | 27 + src/Game/AI/AI/aiPriestBossMakeClone.h | 27 + src/Game/AI/AI/aiPriestBossMeta.cpp | 27 + src/Game/AI/AI/aiPriestBossMeta.h | 27 + src/Game/AI/AI/aiPriestBossMetaAIRoot.cpp | 33 + src/Game/AI/AI/aiPriestBossMetaAIRoot.h | 38 + src/Game/AI/AI/aiPriestBossMode.cpp | 25 + src/Game/AI/AI/aiPriestBossMode.h | 23 + .../AI/AI/aiPriestBossNormalMoveSelector.cpp | 27 + .../AI/AI/aiPriestBossNormalMoveSelector.h | 24 + .../AI/AI/aiPriestBossNormalQuickRecover.cpp | 27 + .../AI/AI/aiPriestBossNormalQuickRecover.h | 24 + src/Game/AI/AI/aiPriestBossNormalReaction.cpp | 29 + src/Game/AI/AI/aiPriestBossNormalReaction.h | 28 + src/Game/AI/AI/aiPriestBossPhase.cpp | 27 + src/Game/AI/AI/aiPriestBossPhase.h | 26 + src/Game/AI/AI/aiPriestBossPhaseFinish.cpp | 27 + src/Game/AI/AI/aiPriestBossPhaseFinish.h | 26 + src/Game/AI/AI/aiPriestBossPhaseFirst.cpp | 25 + src/Game/AI/AI/aiPriestBossPhaseFirst.h | 22 + src/Game/AI/AI/aiPriestBossPhaseFourth.cpp | 28 + src/Game/AI/AI/aiPriestBossPhaseFourth.h | 28 + src/Game/AI/AI/aiPriestBossPhaseSecond.cpp | 46 + src/Game/AI/AI/aiPriestBossPhaseSecond.h | 64 + src/Game/AI/AI/aiPriestBossPhaseSelector.cpp | 26 + src/Game/AI/AI/aiPriestBossPhaseSelector.h | 24 + src/Game/AI/AI/aiPriestBossPhaseThird.cpp | 26 + src/Game/AI/AI/aiPriestBossPhaseThird.h | 24 + .../AI/aiPriestBossShadowCloneEnemyRoot.cpp | 26 + .../AI/AI/aiPriestBossShadowCloneEnemyRoot.h | 22 + .../AI/AI/aiPriestBossShadowCloneThrow.cpp | 32 + src/Game/AI/AI/aiPriestBossShadowCloneThrow.h | 35 + .../AI/aiPriestBossShadowClonesReaction.cpp | 27 + .../AI/AI/aiPriestBossShadowClonesReaction.h | 24 + src/Game/AI/AI/aiPriestBossSlowWarpMove.cpp | 33 + src/Game/AI/AI/aiPriestBossSlowWarpMove.h | 39 + .../AI/aiPriestBossStageRotationSelector.cpp | 26 + .../AI/AI/aiPriestBossStageRotationSelector.h | 22 + src/Game/AI/AI/aiPriestBossSynchroMode.cpp | 27 + src/Game/AI/AI/aiPriestBossSynchroMode.h | 26 + src/Game/AI/AI/aiPriestBossWalkAttack.cpp | 36 + src/Game/AI/AI/aiPriestBossWalkAttack.h | 45 + src/Game/AI/AI/aiPriestBossWarpToSafePos.cpp | 29 + src/Game/AI/AI/aiPriestBossWarpToSafePos.h | 30 + src/Game/AI/AI/aiPriestIronBallAttack.cpp | 29 + src/Game/AI/AI/aiPriestIronBallAttack.h | 31 + src/Game/AI/AI/aiPullOutTree.cpp | 26 + src/Game/AI/AI/aiPullOutTree.h | 25 + src/Game/AI/AI/aiRailMove.cpp | 25 + src/Game/AI/AI/aiRailMove.h | 23 + src/Game/AI/AI/aiRailMoveObject.cpp | 27 + src/Game/AI/AI/aiRailMoveObject.h | 27 + src/Game/AI/AI/aiRailMoveObjectOneWay.cpp | 26 + src/Game/AI/AI/aiRailMoveObjectOneWay.h | 25 + src/Game/AI/AI/aiRailMoveRandomIgnoreStop.cpp | 26 + src/Game/AI/AI/aiRailMoveRandomIgnoreStop.h | 24 + src/Game/AI/AI/aiRailMoveRemains.cpp | 29 + src/Game/AI/AI/aiRailMoveRemains.h | 31 + src/Game/AI/AI/aiRailMoveRemainsBGCamera.cpp | 28 + src/Game/AI/AI/aiRailMoveRemainsBGCamera.h | 28 + .../AI/AI/aiRailMoveRndIgnrStopPlayAS.cpp | 26 + src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h | 22 + src/Game/AI/AI/aiRailMoveWithClose.cpp | 28 + src/Game/AI/AI/aiRailMoveWithClose.h | 28 + src/Game/AI/AI/aiRandomSelectThreeAction.cpp | 29 + src/Game/AI/AI/aiRandomSelectThreeAction.h | 28 + .../AI/AI/aiRandomSelectThreeActionBase.cpp | 28 + .../AI/AI/aiRandomSelectThreeActionBase.h | 27 + src/Game/AI/AI/aiRandomSelectTwoAction.cpp | 14 + src/Game/AI/AI/aiRandomSelectTwoAction.h | 21 + .../AI/AI/aiRandomSelectTwoActionBase.cpp | 26 + src/Game/AI/AI/aiRandomSelectTwoActionBase.h | 25 + src/Game/AI/AI/aiRangeAttackSelect.cpp | 24 + src/Game/AI/AI/aiRangeAttackSelect.h | 28 + src/Game/AI/AI/aiRangeCheckSeqTwoAction.cpp | 27 + src/Game/AI/AI/aiRangeCheckSeqTwoAction.h | 26 + .../AI/AI/aiRangeHeightSelectTwoAction.cpp | 28 + src/Game/AI/AI/aiRangeHeightSelectTwoAction.h | 26 + .../AI/AI/aiRangeLineReachSelectTwoAction.cpp | 26 + .../AI/AI/aiRangeLineReachSelectTwoAction.h | 22 + src/Game/AI/AI/aiRangeObstacleCheck.cpp | 29 + src/Game/AI/AI/aiRangeObstacleCheck.h | 31 + src/Game/AI/AI/aiRangeSelect.cpp | 27 + src/Game/AI/AI/aiRangeSelect.h | 27 + src/Game/AI/AI/aiRangeSelectAction.cpp | 28 + src/Game/AI/AI/aiRangeSelectAction.h | 29 + src/Game/AI/AI/aiRangeSelectThreeAction.cpp | 16 + src/Game/AI/AI/aiRangeSelectThreeAction.h | 25 + src/Game/AI/AI/aiRangeSelectTwoAction.cpp | 15 + src/Game/AI/AI/aiRangeSelectTwoAction.h | 23 + src/Game/AI/AI/aiRapidAttackAllowSelect.cpp | 26 + src/Game/AI/AI/aiRapidAttackAllowSelect.h | 25 + .../AI/AI/aiReduceDistanceToTargetPos.cpp | 29 + src/Game/AI/AI/aiReduceDistanceToTargetPos.h | 31 + .../AI/AI/aiReferenceNPCViewWithDynAS.cpp | 28 + src/Game/AI/AI/aiReferenceNPCViewWithDynAS.h | 27 + src/Game/AI/AI/aiReflectableBulletThrown.cpp | 29 + src/Game/AI/AI/aiReflectableBulletThrown.h | 30 + src/Game/AI/AI/aiReflectableEscape.cpp | 28 + src/Game/AI/AI/aiReflectableEscape.h | 29 + src/Game/AI/AI/aiReflectableIgnitedThrown.cpp | 25 + src/Game/AI/AI/aiReflectableIgnitedThrown.h | 22 + src/Game/AI/AI/aiReflectableThrown.cpp | 28 + src/Game/AI/AI/aiReflectableThrown.h | 29 + .../AI/AI/aiRegistedActorNumTwoSelect.cpp | 27 + src/Game/AI/AI/aiRegistedActorNumTwoSelect.h | 24 + .../AI/AI/aiRegistedActorNumTwoSelectBase.cpp | 26 + .../AI/AI/aiRegistedActorNumTwoSelectBase.h | 23 + .../AI/aiRemainElectricCannonBeamAttack.cpp | 24 + .../AI/AI/aiRemainElectricCannonBeamAttack.h | 21 + src/Game/AI/AI/aiRemainElectricCannonRoot.cpp | 27 + src/Game/AI/AI/aiRemainElectricCannonRoot.h | 24 + .../AI/AI/aiRemainElectricCannonRootBase.cpp | 26 + .../AI/AI/aiRemainElectricCannonRootBase.h | 26 + src/Game/AI/AI/aiRemainsElectricBGCamera.cpp | 27 + src/Game/AI/AI/aiRemainsElectricBGCamera.h | 24 + src/Game/AI/AI/aiRemainsElectricRoot.cpp | 25 + src/Game/AI/AI/aiRemainsElectricRoot.h | 22 + src/Game/AI/AI/aiRemainsFireBattleMove.cpp | 23 + src/Game/AI/AI/aiRemainsFireBattleMove.h | 21 + .../AI/AI/aiRemainsFireBattleStepSelector.cpp | 24 + .../AI/AI/aiRemainsFireBattleStepSelector.h | 21 + src/Game/AI/AI/aiRemainsFireDroneNormal.cpp | 31 + src/Game/AI/AI/aiRemainsFireDroneNormal.h | 34 + src/Game/AI/AI/aiRemainsFireRoot.cpp | 26 + src/Game/AI/AI/aiRemainsFireRoot.h | 24 + src/Game/AI/AI/aiRemainsLithograph.cpp | 23 + src/Game/AI/AI/aiRemainsLithograph.h | 21 + src/Game/AI/AI/aiRemainsRoot.cpp | 26 + src/Game/AI/AI/aiRemainsRoot.h | 25 + src/Game/AI/AI/aiRemainsWaterBattleRoot.cpp | 30 + src/Game/AI/AI/aiRemainsWaterBattleRoot.h | 33 + .../AI/AI/aiRemainsWaterBulletController.cpp | 37 + .../AI/AI/aiRemainsWaterBulletController.h | 47 + .../AI/AI/aiRemainsWaterChaseBulletRoot.cpp | 31 + .../AI/AI/aiRemainsWaterChaseBulletRoot.h | 35 + src/Game/AI/AI/aiRemainsWaterNormal.cpp | 28 + src/Game/AI/AI/aiRemainsWaterNormal.h | 29 + src/Game/AI/AI/aiRemainsWaterRoot.cpp | 26 + src/Game/AI/AI/aiRemainsWaterRoot.h | 24 + .../AI/AI/aiRemainsWaterWeakPointRoot.cpp | 23 + src/Game/AI/AI/aiRemainsWaterWeakPointRoot.h | 21 + src/Game/AI/AI/aiRemainsWindBatteryAttack.cpp | 27 + src/Game/AI/AI/aiRemainsWindBatteryAttack.h | 24 + src/Game/AI/AI/aiRemainsWindBatteryRoot.cpp | 23 + src/Game/AI/AI/aiRemainsWindBatteryRoot.h | 21 + src/Game/AI/AI/aiRemainsWindRoot.cpp | 25 + src/Game/AI/AI/aiRemainsWindRoot.h | 22 + .../AI/AI/aiRememberMesOneActorEnemyRoot.cpp | 26 + .../AI/AI/aiRememberMesOneActorEnemyRoot.h | 24 + src/Game/AI/AI/aiRemoteBomb.cpp | 27 + src/Game/AI/AI/aiRemoteBomb.h | 27 + src/Game/AI/AI/aiRepeatByLargeDamage.cpp | 23 + src/Game/AI/AI/aiRepeatByLargeDamage.h | 21 + src/Game/AI/AI/aiRestLifeSelect.cpp | 27 + src/Game/AI/AI/aiRestLifeSelect.h | 27 + src/Game/AI/AI/aiRestreintTired.cpp | 27 + src/Game/AI/AI/aiRestreintTired.h | 27 + src/Game/AI/AI/aiReturnFromReactionSelect.cpp | 28 + src/Game/AI/AI/aiReturnFromReactionSelect.h | 29 + src/Game/AI/AI/aiReuseBulletPartsRoot.cpp | 23 + src/Game/AI/AI/aiReuseBulletPartsRoot.h | 21 + src/Game/AI/AI/aiRideHorseAI.cpp | 25 + src/Game/AI/AI/aiRideHorseAI.h | 23 + src/Game/AI/AI/aiRitoHeroSoulGiftRoot.cpp | 27 + src/Game/AI/AI/aiRitoHeroSoulGiftRoot.h | 26 + src/Game/AI/AI/aiRodEnemyFindPlayer.cpp | 30 + src/Game/AI/AI/aiRodEnemyFindPlayer.h | 32 + src/Game/AI/AI/aiRodRoot.cpp | 26 + src/Game/AI/AI/aiRodRoot.h | 24 + src/Game/AI/AI/aiRopeRoot.cpp | 26 + src/Game/AI/AI/aiRopeRoot.h | 25 + src/Game/AI/AI/aiRuinGuardianRoot.cpp | 26 + src/Game/AI/AI/aiRuinGuardianRoot.h | 25 + src/Game/AI/AI/aiRupeeRabbitNormal.cpp | 26 + src/Game/AI/AI/aiRupeeRabbitNormal.h | 24 + src/Game/AI/AI/aiSafeMoveAroundTarget.cpp | 37 + src/Game/AI/AI/aiSafeMoveAroundTarget.h | 47 + src/Game/AI/AI/aiSandfallWithSound.cpp | 23 + src/Game/AI/AI/aiSandfallWithSound.h | 21 + src/Game/AI/AI/aiSandwormAttackMove.cpp | 30 + src/Game/AI/AI/aiSandwormAttackMove.h | 33 + src/Game/AI/AI/aiSandwormBattle.cpp | 28 + src/Game/AI/AI/aiSandwormBattle.h | 29 + src/Game/AI/AI/aiSandwormBlownOff.cpp | 25 + src/Game/AI/AI/aiSandwormBlownOff.h | 23 + src/Game/AI/AI/aiSandwormCircleMoveTarget.cpp | 30 + src/Game/AI/AI/aiSandwormCircleMoveTarget.h | 33 + src/Game/AI/AI/aiSandwormFindTarget.cpp | 29 + src/Game/AI/AI/aiSandwormFindTarget.h | 31 + src/Game/AI/AI/aiSandwormLost.cpp | 26 + src/Game/AI/AI/aiSandwormLost.h | 24 + src/Game/AI/AI/aiSandwormNavSearchWait.cpp | 25 + src/Game/AI/AI/aiSandwormNavSearchWait.h | 23 + src/Game/AI/AI/aiSandwormNormal.cpp | 25 + src/Game/AI/AI/aiSandwormNormal.h | 22 + src/Game/AI/AI/aiSandwormNormalBase.cpp | 29 + src/Game/AI/AI/aiSandwormNormalBase.h | 30 + src/Game/AI/AI/aiSandwormNoticeSound.cpp | 29 + src/Game/AI/AI/aiSandwormNoticeSound.h | 31 + src/Game/AI/AI/aiSandwormRNormal.cpp | 25 + src/Game/AI/AI/aiSandwormRNormal.h | 22 + src/Game/AI/AI/aiSandwormRRoot.cpp | 28 + src/Game/AI/AI/aiSandwormRRoot.h | 28 + src/Game/AI/AI/aiSandwormReaction.cpp | 25 + src/Game/AI/AI/aiSandwormReaction.h | 22 + src/Game/AI/AI/aiSandwormRoam.cpp | 27 + src/Game/AI/AI/aiSandwormRoam.h | 27 + src/Game/AI/AI/aiSandwormRoot.cpp | 27 + src/Game/AI/AI/aiSandwormRoot.h | 26 + src/Game/AI/AI/aiSandwormStun.cpp | 23 + src/Game/AI/AI/aiSandwormStun.h | 21 + src/Game/AI/AI/aiSelfXRotSelector.cpp | 25 + src/Game/AI/AI/aiSelfXRotSelector.h | 23 + src/Game/AI/AI/aiSeqAnimalAttack.cpp | 26 + src/Game/AI/AI/aiSeqAnimalAttack.h | 25 + src/Game/AI/AI/aiSeqAtHitAction.cpp | 25 + src/Game/AI/AI/aiSeqAtHitAction.h | 22 + src/Game/AI/AI/aiSeqCloseDistTwoAction.cpp | 20 + src/Game/AI/AI/aiSeqCloseDistTwoAction.h | 26 + .../AI/AI/aiSeqDynamicTimeredTwoAction.cpp | 17 + src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.h | 25 + src/Game/AI/AI/aiSeqFirstPointTwo.cpp | 26 + src/Game/AI/AI/aiSeqFirstPointTwo.h | 25 + src/Game/AI/AI/aiSeqGroundHit.cpp | 27 + src/Game/AI/AI/aiSeqGroundHit.h | 27 + src/Game/AI/AI/aiSeqGroundHitAssassinBoss.cpp | 25 + src/Game/AI/AI/aiSeqGroundHitAssassinBoss.h | 22 + src/Game/AI/AI/aiSeqHiddenOctarockSearch.cpp | 23 + src/Game/AI/AI/aiSeqHiddenOctarockSearch.h | 21 + src/Game/AI/AI/aiSeqIfElseAction.cpp | 25 + src/Game/AI/AI/aiSeqIfElseAction.h | 23 + src/Game/AI/AI/aiSeqIfFailAction.cpp | 25 + src/Game/AI/AI/aiSeqIfFailAction.h | 23 + src/Game/AI/AI/aiSeqNextMessage.cpp | 26 + src/Game/AI/AI/aiSeqNextMessage.h | 24 + src/Game/AI/AI/aiSeqOctarockAttack.cpp | 25 + src/Game/AI/AI/aiSeqOctarockAttack.h | 22 + src/Game/AI/AI/aiSeqOctarockWigReaction.cpp | 25 + src/Game/AI/AI/aiSeqOctarockWigReaction.h | 22 + src/Game/AI/AI/aiSeqPredictOctarockAttack.cpp | 26 + src/Game/AI/AI/aiSeqPredictOctarockAttack.h | 25 + src/Game/AI/AI/aiSeqPursuit.cpp | 30 + src/Game/AI/AI/aiSeqPursuit.h | 32 + src/Game/AI/AI/aiSeqRandomRepeat.cpp | 27 + src/Game/AI/AI/aiSeqRandomRepeat.h | 27 + src/Game/AI/AI/aiSeqTargetTwoAction.cpp | 16 + src/Game/AI/AI/aiSeqTargetTwoAction.h | 22 + src/Game/AI/AI/aiSeqThreeAction.cpp | 27 + src/Game/AI/AI/aiSeqThreeAction.h | 27 + src/Game/AI/AI/aiSeqTimeredAction.cpp | 25 + src/Game/AI/AI/aiSeqTimeredAction.h | 23 + .../AI/AI/aiSeqTimeredPlusRandomTwoAction.cpp | 28 + .../AI/AI/aiSeqTimeredPlusRandomTwoAction.h | 26 + src/Game/AI/AI/aiSeqTimeredTwoAction.cpp | 27 + src/Game/AI/AI/aiSeqTimeredTwoAction.h | 27 + src/Game/AI/AI/aiSeqTrgPartsNotice.cpp | 27 + src/Game/AI/AI/aiSeqTrgPartsNotice.h | 26 + src/Game/AI/AI/aiSeqTwoAction.cpp | 17 + src/Game/AI/AI/aiSeqTwoAction.h | 24 + .../AI/aiSeqTwoLineReachableTargetAction.cpp | 26 + .../AI/AI/aiSeqTwoLineReachableTargetAction.h | 22 + .../aiSeqTwoLineReachableTargetActionBase.cpp | 27 + .../aiSeqTwoLineReachableTargetActionBase.h | 25 + src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.cpp | 26 + src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h | 24 + src/Game/AI/AI/aiSetPartBind.cpp | 22 + src/Game/AI/AI/aiSetPartBind.h | 24 + .../AI/AI/aiSetTargetPosForAngryKokko.cpp | 31 + src/Game/AI/AI/aiSetTargetPosForAngryKokko.h | 35 + .../AI/AI/aiSetTargetPosForFlyThroughMove.cpp | 28 + .../AI/AI/aiSetTargetPosForFlyThroughMove.h | 27 + src/Game/AI/AI/aiSetTargetPosToPlayer.cpp | 30 + src/Game/AI/AI/aiSetTargetPosToPlayer.h | 33 + src/Game/AI/AI/aiShootingEnemyBattle.cpp | 29 + src/Game/AI/AI/aiShootingEnemyBattle.h | 30 + src/Game/AI/AI/aiShootingEnemyFindPlayer.cpp | 32 + src/Game/AI/AI/aiShootingEnemyFindPlayer.h | 34 + src/Game/AI/AI/aiShootingStarRoot.cpp | 23 + src/Game/AI/AI/aiShootingStarRoot.h | 21 + src/Game/AI/AI/aiShutterFence.cpp | 26 + src/Game/AI/AI/aiShutterFence.h | 25 + src/Game/AI/AI/aiSignalFlowchartRootAI.cpp | 26 + src/Game/AI/AI/aiSignalFlowchartRootAI.h | 25 + .../AI/aiSignalSendingMagneStickAcceptor.cpp | 26 + .../AI/AI/aiSignalSendingMagneStickAcceptor.h | 23 + src/Game/AI/AI/aiSignaledSpotBgmTrigger.cpp | 26 + src/Game/AI/AI/aiSignaledSpotBgmTrigger.h | 25 + src/Game/AI/AI/aiSimpleASBridge.cpp | 25 + src/Game/AI/AI/aiSimpleASBridge.h | 23 + src/Game/AI/AI/aiSimpleEnemyNormal.cpp | 25 + src/Game/AI/AI/aiSimpleEnemyNormal.h | 22 + src/Game/AI/AI/aiSimpleEscapeFromTarget.cpp | 28 + src/Game/AI/AI/aiSimpleEscapeFromTarget.h | 29 + src/Game/AI/AI/aiSimpleKokkoRoot.cpp | 26 + src/Game/AI/AI/aiSimpleKokkoRoot.h | 25 + src/Game/AI/AI/aiSimpleLiftable.cpp | 13 + src/Game/AI/AI/aiSimpleLiftable.h | 18 + src/Game/AI/AI/aiSimpleLiftableDLC.cpp | 25 + src/Game/AI/AI/aiSimpleLiftableDLC.h | 23 + src/Game/AI/AI/aiSimpleLineBeam.cpp | 23 + src/Game/AI/AI/aiSimpleLineBeam.h | 21 + .../AI/AI/aiSimpleShootingEnemyFindPlayer.cpp | 28 + .../AI/AI/aiSimpleShootingEnemyFindPlayer.h | 26 + src/Game/AI/AI/aiSimpleWildlifeRoot.cpp | 35 + src/Game/AI/AI/aiSimpleWildlifeRoot.h | 41 + src/Game/AI/AI/aiSiteBossApproachRoot.cpp | 32 + src/Game/AI/AI/aiSiteBossApproachRoot.h | 37 + src/Game/AI/AI/aiSiteBossArrowRainAttack.cpp | 26 + src/Game/AI/AI/aiSiteBossArrowRainAttack.h | 22 + src/Game/AI/AI/aiSiteBossAttackRoot.cpp | 25 + src/Game/AI/AI/aiSiteBossAttackRoot.h | 23 + src/Game/AI/AI/aiSiteBossBigFlameBall.cpp | 29 + src/Game/AI/AI/aiSiteBossBigFlameBall.h | 30 + src/Game/AI/AI/aiSiteBossBlowOff.cpp | 25 + src/Game/AI/AI/aiSiteBossBlowOff.h | 23 + .../AI/AI/aiSiteBossBowChildDeviceRoot.cpp | 28 + src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.h | 27 + src/Game/AI/AI/aiSiteBossBowRoot.cpp | 29 + src/Game/AI/AI/aiSiteBossBowRoot.h | 30 + .../AI/AI/aiSiteBossChemicalProjectile.cpp | 39 + src/Game/AI/AI/aiSiteBossChemicalProjectile.h | 49 + src/Game/AI/AI/aiSiteBossFlameBall.cpp | 33 + src/Game/AI/AI/aiSiteBossFlameBall.h | 38 + src/Game/AI/AI/aiSiteBossGaleArrowRoot.cpp | 25 + src/Game/AI/AI/aiSiteBossGaleArrowRoot.h | 22 + src/Game/AI/AI/aiSiteBossIceSplinterRoot.cpp | 44 + src/Game/AI/AI/aiSiteBossIceSplinterRoot.h | 58 + src/Game/AI/AI/aiSiteBossLswordAttackRoot.cpp | 36 + src/Game/AI/AI/aiSiteBossLswordAttackRoot.h | 45 + .../AI/AI/aiSiteBossLswordFireBallRoot.cpp | 36 + src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h | 43 + src/Game/AI/AI/aiSiteBossLswordRoot.cpp | 38 + src/Game/AI/AI/aiSiteBossLswordRoot.h | 48 + .../AI/AI/aiSiteBossLswordTornadoRoot.cpp | 27 + src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h | 27 + src/Game/AI/AI/aiSiteBossNormalRoot.cpp | 23 + src/Game/AI/AI/aiSiteBossNormalRoot.h | 21 + .../AI/AI/aiSiteBossPierceBulletAttack.cpp | 22 + src/Game/AI/AI/aiSiteBossPierceBulletAttack.h | 21 + src/Game/AI/AI/aiSiteBossReaction.cpp | 26 + src/Game/AI/AI/aiSiteBossReaction.h | 24 + src/Game/AI/AI/aiSiteBossRecognizeRoot.cpp | 30 + src/Game/AI/AI/aiSiteBossRecognizeRoot.h | 32 + .../AI/AI/aiSiteBossRecognizeRootBase.cpp | 29 + src/Game/AI/AI/aiSiteBossRecognizeRootBase.h | 31 + src/Game/AI/AI/aiSiteBossReflectArrowRoot.cpp | 28 + src/Game/AI/AI/aiSiteBossReflectArrowRoot.h | 26 + src/Game/AI/AI/aiSiteBossRoot.cpp | 39 + src/Game/AI/AI/aiSiteBossRoot.h | 51 + src/Game/AI/AI/aiSiteBossShootArrowRoot.cpp | 50 + src/Game/AI/AI/aiSiteBossShootArrowRoot.h | 73 + .../AI/AI/aiSiteBossShootNormalArrowRoot.cpp | 53 + .../AI/AI/aiSiteBossShootNormalArrowRoot.h | 77 + src/Game/AI/AI/aiSiteBossSmallDamageRoot.cpp | 23 + src/Game/AI/AI/aiSiteBossSmallDamageRoot.h | 21 + src/Game/AI/AI/aiSiteBossSpearAttackRoot.cpp | 42 + src/Game/AI/AI/aiSiteBossSpearAttackRoot.h | 57 + .../AI/AI/aiSiteBossSpearLifeSelector.cpp | 26 + src/Game/AI/AI/aiSiteBossSpearLifeSelector.h | 25 + src/Game/AI/AI/aiSiteBossSpearRoot.cpp | 29 + src/Game/AI/AI/aiSiteBossSpearRoot.h | 30 + src/Game/AI/AI/aiSiteBossSpearThrow.cpp | 29 + src/Game/AI/AI/aiSiteBossSpearThrow.h | 31 + .../AI/AI/aiSiteBossSwordApproachRoot.cpp | 32 + src/Game/AI/AI/aiSiteBossSwordApproachRoot.h | 37 + src/Game/AI/AI/aiSiteBossSwordAttackRoot.cpp | 45 + src/Game/AI/AI/aiSiteBossSwordAttackRoot.h | 63 + .../AI/AI/aiSiteBossSwordIronPileRoot.cpp | 32 + src/Game/AI/AI/aiSiteBossSwordIronPileRoot.h | 37 + .../AI/AI/aiSiteBossSwordRailApproach.cpp | 27 + src/Game/AI/AI/aiSiteBossSwordRailApproach.h | 24 + src/Game/AI/AI/aiSiteBossSwordRoot.cpp | 25 + src/Game/AI/AI/aiSiteBossSwordRoot.h | 22 + src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.cpp | 31 + src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h | 35 + src/Game/AI/AI/aiSiteBossSwordWeapon.cpp | 25 + src/Game/AI/AI/aiSiteBossSwordWeapon.h | 22 + src/Game/AI/AI/aiSiteBossThrowIceRoot.cpp | 28 + src/Game/AI/AI/aiSiteBossThrowIceRoot.h | 29 + src/Game/AI/AI/aiSleepBedRoot.cpp | 23 + src/Game/AI/AI/aiSleepBedRoot.h | 21 + src/Game/AI/AI/aiSleepSelect.cpp | 23 + src/Game/AI/AI/aiSleepSelect.h | 21 + src/Game/AI/AI/aiSnowBallNormal.cpp | 38 + src/Game/AI/AI/aiSnowBallNormal.h | 48 + src/Game/AI/AI/aiSnowOctarockBattle.cpp | 27 + src/Game/AI/AI/aiSnowOctarockBattle.h | 26 + src/Game/AI/AI/aiSoundTriggerTag.cpp | 27 + src/Game/AI/AI/aiSoundTriggerTag.h | 27 + src/Game/AI/AI/aiSpearWeaponSelect.cpp | 23 + src/Game/AI/AI/aiSpearWeaponSelect.h | 21 + src/Game/AI/AI/aiSpecialEnemySleep.cpp | 27 + src/Game/AI/AI/aiSpecialEnemySleep.h | 27 + src/Game/AI/AI/aiSpotBgmTrigger.cpp | 26 + src/Game/AI/AI/aiSpotBgmTrigger.h | 25 + src/Game/AI/AI/aiStalEnemyBlownOff.cpp | 25 + src/Game/AI/AI/aiStalEnemyBlownOff.h | 23 + src/Game/AI/AI/aiStalEnemyChasePart.cpp | 27 + src/Game/AI/AI/aiStalEnemyChasePart.h | 27 + .../AI/AI/aiStalEnemyDoShootPartSelect.cpp | 26 + src/Game/AI/AI/aiStalEnemyDoShootPartSelect.h | 23 + .../AI/AI/aiStalEnemyGrabShootOwnPart.cpp | 25 + src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.h | 23 + src/Game/AI/AI/aiStalEnemyNoHeadWait.cpp | 29 + src/Game/AI/AI/aiStalEnemyNoHeadWait.h | 31 + src/Game/AI/AI/aiStalEnemyReaction.cpp | 25 + src/Game/AI/AI/aiStalEnemyReaction.h | 22 + src/Game/AI/AI/aiStalEnemyRoot.cpp | 37 + src/Game/AI/AI/aiStalEnemyRoot.h | 49 + src/Game/AI/AI/aiStalEnemySleep.cpp | 27 + src/Game/AI/AI/aiStalEnemySleep.h | 26 + src/Game/AI/AI/aiStalGiantEnemyReaction.cpp | 25 + src/Game/AI/AI/aiStalGiantEnemyReaction.h | 22 + src/Game/AI/AI/aiStalGiantEnemyRoot.cpp | 83 + src/Game/AI/AI/aiStalGiantEnemyRoot.h | 34 + src/Game/AI/AI/aiStalGiantSleepNormal.cpp | 27 + src/Game/AI/AI/aiStalGiantSleepNormal.h | 27 + src/Game/AI/AI/aiStalHeadLifted.cpp | 27 + src/Game/AI/AI/aiStalHeadLifted.h | 26 + src/Game/AI/AI/aiStalHeadPartRoot.cpp | 25 + src/Game/AI/AI/aiStalHeadPartRoot.h | 22 + src/Game/AI/AI/aiStalPartCatch.cpp | 23 + src/Game/AI/AI/aiStalPartCatch.h | 21 + src/Game/AI/AI/aiStalPartNormal.cpp | 28 + src/Game/AI/AI/aiStalPartNormal.h | 29 + src/Game/AI/AI/aiStalPartRoot.cpp | 25 + src/Game/AI/AI/aiStalPartRoot.h | 25 + src/Game/AI/AI/aiStalPartsHasSelect.cpp | 25 + src/Game/AI/AI/aiStalPartsHasSelect.h | 23 + src/Game/AI/AI/aiStole.cpp | 11 + src/Game/AI/AI/aiStole.h | 17 + src/Game/AI/AI/aiStoneBall_BRoot.cpp | 27 + src/Game/AI/AI/aiStoneBall_BRoot.h | 27 + src/Game/AI/AI/aiStoneOctarockBattle.cpp | 25 + src/Game/AI/AI/aiStoneOctarockBattle.h | 22 + .../AI/AI/aiStoneOctarockGuardNearTarget.cpp | 27 + .../AI/AI/aiStoneOctarockGuardNearTarget.h | 24 + src/Game/AI/AI/aiStoneOctarockWait.cpp | 26 + src/Game/AI/AI/aiStoneOctarockWait.h | 25 + src/Game/AI/AI/aiStoneShootEnemyBattle.cpp | 26 + src/Game/AI/AI/aiStoneShootEnemyBattle.h | 24 + src/Game/AI/AI/aiStoneStickRoot.cpp | 25 + src/Game/AI/AI/aiStoneStickRoot.h | 23 + src/Game/AI/AI/aiStopTimerObserver.cpp | 23 + src/Game/AI/AI/aiStopTimerObserver.h | 21 + src/Game/AI/AI/aiStraightMove.cpp | 30 + src/Game/AI/AI/aiStraightMove.h | 33 + src/Game/AI/AI/aiStunBossReaction.cpp | 23 + src/Game/AI/AI/aiStunBossReaction.h | 21 + src/Game/AI/AI/aiStunWithDamageReaction.cpp | 26 + src/Game/AI/AI/aiStunWithDamageReaction.h | 25 + src/Game/AI/AI/aiSubsAngleSelect.cpp | 28 + src/Game/AI/AI/aiSubsAngleSelect.h | 29 + src/Game/AI/AI/aiSunAI.cpp | 21 + src/Game/AI/AI/aiSunAI.h | 20 + src/Game/AI/AI/aiSunazarashiEscapeMove.cpp | 25 + src/Game/AI/AI/aiSunazarashiEscapeMove.h | 23 + src/Game/AI/AI/aiSunazarashiNormal.cpp | 9 + src/Game/AI/AI/aiSunazarashiNormal.h | 17 + src/Game/AI/AI/aiSunazarashiReturn.cpp | 26 + src/Game/AI/AI/aiSunazarashiReturn.h | 25 + src/Game/AI/AI/aiSunazarashiRoot.cpp | 31 + src/Game/AI/AI/aiSunazarashiRoot.h | 34 + src/Game/AI/AI/aiSunazarashiTowing.cpp | 23 + src/Game/AI/AI/aiSunazarashiTowing.h | 21 + src/Game/AI/AI/aiSwarmBattle.cpp | 27 + src/Game/AI/AI/aiSwarmBattle.h | 27 + src/Game/AI/AI/aiSwarmEscapeDie.cpp | 28 + src/Game/AI/AI/aiSwarmEscapeDie.h | 29 + src/Game/AI/AI/aiSwarmRangeKeepCircleMove.cpp | 28 + src/Game/AI/AI/aiSwarmRangeKeepCircleMove.h | 29 + src/Game/AI/AI/aiSwarmReaction.cpp | 23 + src/Game/AI/AI/aiSwarmReaction.h | 21 + src/Game/AI/AI/aiSwarmRoot.cpp | 26 + src/Game/AI/AI/aiSwarmRoot.h | 24 + src/Game/AI/AI/aiSwarmStopTimerEscape.cpp | 26 + src/Game/AI/AI/aiSwarmStopTimerEscape.h | 24 + src/Game/AI/AI/aiSwimEnemyFindPlayer.cpp | 30 + src/Game/AI/AI/aiSwimEnemyFindPlayer.h | 32 + src/Game/AI/AI/aiSwimEnemyNormal.cpp | 21 + src/Game/AI/AI/aiSwimEnemyNormal.h | 21 + src/Game/AI/AI/aiSwimEnemyRoam.cpp | 24 + src/Game/AI/AI/aiSwimEnemyRoam.h | 28 + src/Game/AI/AI/aiSwitchAI.cpp | 23 + src/Game/AI/AI/aiSwitchAI.h | 21 + src/Game/AI/AI/aiSwitchDistance.cpp | 28 + src/Game/AI/AI/aiSwitchDistance.h | 28 + src/Game/AI/AI/aiSwitchElectric.cpp | 24 + src/Game/AI/AI/aiSwitchElectric.h | 24 + src/Game/AI/AI/aiSwitchHit.cpp | 26 + src/Game/AI/AI/aiSwitchHit.h | 24 + src/Game/AI/AI/aiSwitchHitOnce.cpp | 19 + src/Game/AI/AI/aiSwitchHitOnce.h | 20 + src/Game/AI/AI/aiSwitchLinkTagCheck.cpp | 27 + src/Game/AI/AI/aiSwitchLinkTagCheck.h | 26 + src/Game/AI/AI/aiSwitchRightAndWrong.cpp | 26 + src/Game/AI/AI/aiSwitchRightAndWrong.h | 24 + src/Game/AI/AI/aiSwitchTimeLag.cpp | 25 + src/Game/AI/AI/aiSwitchTimeLag.h | 23 + src/Game/AI/AI/aiSwitchTimeLimited.cpp | 25 + src/Game/AI/AI/aiSwitchTimeLimited.h | 23 + src/Game/AI/AI/aiSwitchTimer.cpp | 25 + src/Game/AI/AI/aiSwitchTimer.h | 23 + src/Game/AI/AI/aiSwitchTorch.cpp | 25 + src/Game/AI/AI/aiSwitchTorch.h | 23 + src/Game/AI/AI/aiSwitchWheel.cpp | 30 + src/Game/AI/AI/aiSwitchWheel.h | 33 + src/Game/AI/AI/aiSwitchWindHit.cpp | 26 + src/Game/AI/AI/aiSwitchWindHit.h | 24 + src/Game/AI/AI/aiTargetAbsolutePos.cpp | 26 + src/Game/AI/AI/aiTargetAbsolutePos.h | 24 + .../AI/AI/aiTargetActorDistanceSelect.cpp | 26 + src/Game/AI/AI/aiTargetActorDistanceSelect.h | 22 + src/Game/AI/AI/aiTargetActorGrabAdapter.cpp | 25 + src/Game/AI/AI/aiTargetActorGrabAdapter.h | 23 + src/Game/AI/AI/aiTargetAngerSelect.cpp | 23 + src/Game/AI/AI/aiTargetAngerSelect.h | 21 + .../AI/AI/aiTargetAttackAttitudeTgtSelect.cpp | 15 + .../AI/AI/aiTargetAttackAttitudeTgtSelect.h | 21 + .../aiTargetAttackAttitudeTgtSelectBase.cpp | 20 + .../AI/aiTargetAttackAttitudeTgtSelectBase.h | 20 + src/Game/AI/AI/aiTargetBaitTypeSelect.cpp | 17 + src/Game/AI/AI/aiTargetBaitTypeSelect.h | 23 + src/Game/AI/AI/aiTargetBeatCheck.cpp | 23 + src/Game/AI/AI/aiTargetBeatCheck.h | 21 + src/Game/AI/AI/aiTargetBeatGetDrop.cpp | 26 + src/Game/AI/AI/aiTargetBeatGetDrop.h | 24 + src/Game/AI/AI/aiTargetClimbSelect.cpp | 23 + src/Game/AI/AI/aiTargetClimbSelect.h | 21 + src/Game/AI/AI/aiTargetDirLRInHideSelect.cpp | 9 + src/Game/AI/AI/aiTargetDirLRInHideSelect.h | 17 + src/Game/AI/AI/aiTargetDirLRSelect.cpp | 13 + src/Game/AI/AI/aiTargetDirLRSelect.h | 18 + src/Game/AI/AI/aiTargetDistanceSelect.cpp | 28 + src/Game/AI/AI/aiTargetDistanceSelect.h | 29 + src/Game/AI/AI/aiTargetDynamicActorPos.cpp | 26 + src/Game/AI/AI/aiTargetDynamicActorPos.h | 24 + src/Game/AI/AI/aiTargetElevationGapSelect.cpp | 25 + src/Game/AI/AI/aiTargetElevationGapSelect.h | 23 + src/Game/AI/AI/aiTargetExistSelect.cpp | 23 + src/Game/AI/AI/aiTargetExistSelect.h | 21 + src/Game/AI/AI/aiTargetHomeDir.cpp | 25 + src/Game/AI/AI/aiTargetHomeDir.h | 22 + src/Game/AI/AI/aiTargetHomePos.cpp | 25 + src/Game/AI/AI/aiTargetHomePos.h | 22 + src/Game/AI/AI/aiTargetHomeRangeSelect.cpp | 25 + src/Game/AI/AI/aiTargetHomeRangeSelect.h | 22 + src/Game/AI/AI/aiTargetInAreaSelect.cpp | 25 + src/Game/AI/AI/aiTargetInAreaSelect.h | 23 + src/Game/AI/AI/aiTargetInFanAreaSelect.cpp | 32 + src/Game/AI/AI/aiTargetInFanAreaSelect.h | 36 + .../AI/AI/aiTargetIsEquipItemSelector.cpp | 25 + src/Game/AI/AI/aiTargetIsEquipItemSelector.h | 23 + src/Game/AI/AI/aiTargetKnockBackBasePos.cpp | 25 + src/Game/AI/AI/aiTargetKnockBackBasePos.h | 22 + src/Game/AI/AI/aiTargetLastAttackedPos.cpp | 25 + src/Game/AI/AI/aiTargetLastAttackedPos.h | 22 + src/Game/AI/AI/aiTargetLastAttacker.cpp | 25 + src/Game/AI/AI/aiTargetLastAttacker.h | 23 + src/Game/AI/AI/aiTargetLastAttackerPos.cpp | 25 + src/Game/AI/AI/aiTargetLastAttackerPos.h | 22 + src/Game/AI/AI/aiTargetLastDamagedPos.cpp | 25 + src/Game/AI/AI/aiTargetLastDamagedPos.h | 22 + src/Game/AI/AI/aiTargetLostCheck.cpp | 27 + src/Game/AI/AI/aiTargetLostCheck.h | 27 + src/Game/AI/AI/aiTargetMyUp.cpp | 25 + src/Game/AI/AI/aiTargetMyUp.h | 23 + src/Game/AI/AI/aiTargetNPCTypeSelector.cpp | 23 + src/Game/AI/AI/aiTargetNPCTypeSelector.h | 21 + .../AI/AI/aiTargetOnMovableNavmeshSelect.cpp | 27 + .../AI/AI/aiTargetOnMovableNavmeshSelect.h | 25 + src/Game/AI/AI/aiTargetPartsPos.cpp | 26 + src/Game/AI/AI/aiTargetPartsPos.h | 24 + src/Game/AI/AI/aiTargetPickedItem.cpp | 26 + src/Game/AI/AI/aiTargetPickedItem.h | 24 + src/Game/AI/AI/aiTargetPlayerPos.cpp | 25 + src/Game/AI/AI/aiTargetPlayerPos.h | 22 + src/Game/AI/AI/aiTargetPosAI.cpp | 25 + src/Game/AI/AI/aiTargetPosAI.h | 23 + .../AI/AI/aiTargetPosAnchorOffsetSelf.cpp | 27 + src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.h | 26 + .../AI/AI/aiTargetPosAnchorOffsetTarget.cpp | 27 + .../AI/AI/aiTargetPosAnchorOffsetTarget.h | 26 + src/Game/AI/AI/aiTargetPosDirLRSelect.cpp | 26 + src/Game/AI/AI/aiTargetPosDirLRSelect.h | 25 + src/Game/AI/AI/aiTargetPosDynParamRot.cpp | 28 + src/Game/AI/AI/aiTargetPosDynParamRot.h | 28 + .../AI/aiTargetPosDynParamRotFromCtrPos.cpp | 27 + .../AI/AI/aiTargetPosDynParamRotFromCtrPos.h | 24 + src/Game/AI/AI/aiTargetPosLostCheck.cpp | 29 + src/Game/AI/AI/aiTargetPosLostCheck.h | 31 + src/Game/AI/AI/aiTargetPosOffset.cpp | 30 + src/Game/AI/AI/aiTargetPosOffset.h | 32 + src/Game/AI/AI/aiTargetPosOffsetFromMyPos.cpp | 26 + src/Game/AI/AI/aiTargetPosOffsetFromMyPos.h | 24 + src/Game/AI/AI/aiTargetPosOnNavFaceSelect.cpp | 26 + src/Game/AI/AI/aiTargetPosOnNavFaceSelect.h | 25 + src/Game/AI/AI/aiTargetPosRotFromMyPos.cpp | 29 + src/Game/AI/AI/aiTargetPosRotFromMyPos.h | 30 + src/Game/AI/AI/aiTargetPosTracking.cpp | 27 + src/Game/AI/AI/aiTargetPosTracking.h | 27 + .../AI/AI/aiTargetPredictRotSpdTargetPos.cpp | 26 + .../AI/AI/aiTargetPredictRotSpdTargetPos.h | 24 + src/Game/AI/AI/aiTargetRangeSelect.cpp | 14 + src/Game/AI/AI/aiTargetRangeSelect.h | 21 + src/Game/AI/AI/aiTargetRepeat.cpp | 25 + src/Game/AI/AI/aiTargetRepeat.h | 23 + src/Game/AI/AI/aiTargetStateSelect.cpp | 23 + src/Game/AI/AI/aiTargetStateSelect.h | 21 + src/Game/AI/AI/aiTargetTargetPos.cpp | 26 + src/Game/AI/AI/aiTargetTargetPos.h | 24 + src/Game/AI/AI/aiTargetTypeSelector.cpp | 25 + src/Game/AI/AI/aiTargetTypeSelector.h | 23 + src/Game/AI/AI/aiTemperatureRandSelect.cpp | 28 + src/Game/AI/AI/aiTemperatureRandSelect.h | 29 + .../AI/AI/aiTerminalEnduranceWarpRoot.cpp | 23 + src/Game/AI/AI/aiTerminalEnduranceWarpRoot.h | 21 + src/Game/AI/AI/aiTimeControlTagRoot.cpp | 37 + src/Game/AI/AI/aiTimeControlTagRoot.h | 47 + src/Game/AI/AI/aiTimedGuardNearTarget.cpp | 28 + src/Game/AI/AI/aiTimedGuardNearTarget.h | 28 + src/Game/AI/AI/aiTimelineAI.cpp | 23 + src/Game/AI/AI/aiTimelineAI.h | 22 + src/Game/AI/AI/aiTimeredViewWait.cpp | 27 + src/Game/AI/AI/aiTimeredViewWait.h | 26 + src/Game/AI/AI/aiTimidityEnemyDrawback.cpp | 30 + src/Game/AI/AI/aiTimidityEnemyDrawback.h | 33 + src/Game/AI/AI/aiTiredDistSelect.cpp | 26 + src/Game/AI/AI/aiTiredDistSelect.h | 24 + src/Game/AI/AI/aiTornadoRoot.cpp | 27 + src/Game/AI/AI/aiTornadoRoot.h | 27 + src/Game/AI/AI/aiTowing.cpp | 34 + src/Game/AI/AI/aiTowing.h | 43 + src/Game/AI/AI/aiTowingPlayer.cpp | 27 + src/Game/AI/AI/aiTowingPlayer.h | 26 + src/Game/AI/AI/aiTreasureBox.cpp | 31 + src/Game/AI/AI/aiTreasureBox.h | 35 + src/Game/AI/AI/aiTreasureBoxRoot.cpp | 32 + src/Game/AI/AI/aiTreasureBoxRoot.h | 37 + src/Game/AI/AI/aiTreasureSpot.cpp | 27 + src/Game/AI/AI/aiTreasureSpot.h | 26 + .../AI/AI/aiTrgTargetChangeToPlayerSelect.cpp | 26 + .../AI/AI/aiTrgTargetChangeToPlayerSelect.h | 23 + src/Game/AI/AI/aiTrolleyGrabbedByMagnet.cpp | 27 + src/Game/AI/AI/aiTrolleyGrabbedByMagnet.h | 27 + src/Game/AI/AI/aiTrolleyOnRail.cpp | 28 + src/Game/AI/AI/aiTrolleyOnRail.h | 29 + src/Game/AI/AI/aiTrolleyRoot.cpp | 27 + src/Game/AI/AI/aiTrolleyRoot.h | 27 + src/Game/AI/AI/aiTurnForLookingAround.cpp | 25 + src/Game/AI/AI/aiTurnForLookingAround.h | 23 + src/Game/AI/AI/aiTurnPreAction.cpp | 22 + src/Game/AI/AI/aiTurnPreAction.h | 24 + .../AI/AI/aiTwnObjDlcFlightTrainingTarget.cpp | 26 + .../AI/AI/aiTwnObjDlcFlightTrainingTarget.h | 23 + src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.cpp | 33 + src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.h | 45 + src/Game/AI/AI/aiUnarmedEnemySearch.cpp | 27 + src/Game/AI/AI/aiUnarmedEnemySearch.h | 27 + src/Game/AI/AI/aiUnarmedEnemySearchWeapon.cpp | 27 + src/Game/AI/AI/aiUnarmedEnemySearchWeapon.h | 33 + .../AI/aiUnarmedWeaponEquipableEnemyAct.cpp | 26 + .../AI/AI/aiUnarmedWeaponEquipableEnemyAct.h | 22 + src/Game/AI/AI/aiUnderWaterDepthSelect.cpp | 27 + src/Game/AI/AI/aiUnderWaterDepthSelect.h | 27 + .../AI/AI/aiUrbosasFuryDamageSelector.cpp | 23 + src/Game/AI/AI/aiUrbosasFuryDamageSelector.h | 21 + src/Game/AI/AI/aiVacuumedBombDamageSelect.cpp | 25 + src/Game/AI/AI/aiVacuumedBombDamageSelect.h | 23 + src/Game/AI/AI/aiVehicleSelector.cpp | 13 + src/Game/AI/AI/aiVehicleSelector.h | 18 + src/Game/AI/AI/aiViewChaseSound.cpp | 26 + src/Game/AI/AI/aiViewChaseSound.h | 25 + src/Game/AI/AI/aiViewMove.cpp | 27 + src/Game/AI/AI/aiViewMove.h | 27 + src/Game/AI/AI/aiViewWait.cpp | 19 + src/Game/AI/AI/aiViewWait.h | 25 + src/Game/AI/AI/aiViewWaitEndWhenAimed.cpp | 29 + src/Game/AI/AI/aiViewWaitEndWhenAimed.h | 30 + src/Game/AI/AI/aiViewWaitRiskAvoid.cpp | 29 + src/Game/AI/AI/aiViewWaitRiskAvoid.h | 30 + src/Game/AI/AI/aiViewWaitWithFaceView.cpp | 26 + src/Game/AI/AI/aiViewWaitWithFaceView.h | 24 + src/Game/AI/AI/aiViewWaitWithInstDynActor.cpp | 26 + src/Game/AI/AI/aiViewWaitWithInstDynActor.h | 24 + src/Game/AI/AI/aiViewfrustumCheckTagRoot.cpp | 26 + src/Game/AI/AI/aiViewfrustumCheckTagRoot.h | 25 + src/Game/AI/AI/aiWaistRotEnemyArrowAttack.cpp | 27 + src/Game/AI/AI/aiWaistRotEnemyArrowAttack.h | 24 + src/Game/AI/AI/aiWaitAndFaceLeader.cpp | 26 + src/Game/AI/AI/aiWaitAndFaceLeader.h | 25 + src/Game/AI/AI/aiWaitForCloseOrWaterSide.cpp | 26 + src/Game/AI/AI/aiWaitForCloseOrWaterSide.h | 24 + src/Game/AI/AI/aiWaitForTargetClose.cpp | 28 + src/Game/AI/AI/aiWaitForTargetClose.h | 29 + src/Game/AI/AI/aiWaitNearTarget.cpp | 30 + src/Game/AI/AI/aiWaitNearTarget.h | 33 + .../AI/AI/aiWaitNearTargetAwarenessRange.cpp | 31 + .../AI/AI/aiWaitNearTargetAwarenessRange.h | 33 + src/Game/AI/AI/aiWaitPartsSleep.cpp | 23 + src/Game/AI/AI/aiWaitPartsSleep.h | 21 + src/Game/AI/AI/aiWarpActivateTerminal.cpp | 30 + src/Game/AI/AI/aiWarpActivateTerminal.h | 33 + src/Game/AI/AI/aiWarpSafeTagRoot.cpp | 23 + src/Game/AI/AI/aiWarpSafeTagRoot.h | 21 + src/Game/AI/AI/aiWarpTagRoot.cpp | 23 + src/Game/AI/AI/aiWarpTagRoot.h | 21 + src/Game/AI/AI/aiWaterFallWithSound.cpp | 23 + src/Game/AI/AI/aiWaterFallWithSound.h | 21 + src/Game/AI/AI/aiWaterSurface.cpp | 28 + src/Game/AI/AI/aiWaterSurface.h | 28 + src/Game/AI/AI/aiWaterSurface4RemainsLava.cpp | 25 + src/Game/AI/AI/aiWaterSurface4RemainsLava.h | 22 + src/Game/AI/AI/aiWaterSurfaceBase.cpp | 25 + src/Game/AI/AI/aiWaterSurfaceBase.h | 23 + src/Game/AI/AI/aiWeakPointRoot.cpp | 29 + src/Game/AI/AI/aiWeakPointRoot.h | 31 + src/Game/AI/AI/aiWeakStateSelecter.cpp | 26 + src/Game/AI/AI/aiWeakStateSelecter.h | 25 + src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.cpp | 27 + src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.h | 27 + src/Game/AI/AI/aiWeaponEquipedAI.cpp | 17 + src/Game/AI/AI/aiWeaponEquipedAI.h | 19 + src/Game/AI/AI/aiWeaponHoldSelector.cpp | 25 + src/Game/AI/AI/aiWeaponHoldSelector.h | 23 + src/Game/AI/AI/aiWeaponOnetimeUse.cpp | 26 + src/Game/AI/AI/aiWeaponOnetimeUse.h | 25 + src/Game/AI/AI/aiWeaponPrepareSelect.cpp | 25 + src/Game/AI/AI/aiWeaponPrepareSelect.h | 23 + src/Game/AI/AI/aiWeaponRangeKindSelect.cpp | 23 + src/Game/AI/AI/aiWeaponRangeKindSelect.h | 22 + src/Game/AI/AI/aiWeaponRootAI.cpp | 29 + src/Game/AI/AI/aiWeaponRootAI.h | 33 + src/Game/AI/AI/aiWeaponSelector.cpp | 21 + src/Game/AI/AI/aiWeaponSelector.h | 20 + src/Game/AI/AI/aiWeaponSubTypeSelect.cpp | 21 + src/Game/AI/AI/aiWeaponSubTypeSelect.h | 22 + src/Game/AI/AI/aiWeaponThrowerSelector.cpp | 23 + src/Game/AI/AI/aiWeaponThrowerSelector.h | 21 + src/Game/AI/AI/aiWeaponTrueFormSelect.cpp | 23 + src/Game/AI/AI/aiWeaponTrueFormSelect.h | 21 + src/Game/AI/AI/aiWeaponUsageSelect.cpp | 23 + src/Game/AI/AI/aiWeaponUsageSelect.h | 22 + src/Game/AI/AI/aiWeatherReactionCheck.cpp | 29 + src/Game/AI/AI/aiWeatherReactionCheck.h | 31 + src/Game/AI/AI/aiWetSelect.cpp | 25 + src/Game/AI/AI/aiWetSelect.h | 23 + src/Game/AI/AI/aiWholeDungeonRotateTag.cpp | 25 + src/Game/AI/AI/aiWholeDungeonRotateTag.h | 23 + src/Game/AI/AI/aiWildHorseDefWanderAI.cpp | 27 + src/Game/AI/AI/aiWildHorseDefWanderAI.h | 27 + .../AI/AI/aiWillBallAttackLevelSelect.cpp | 25 + src/Game/AI/AI/aiWillBallAttackLevelSelect.h | 23 + src/Game/AI/AI/aiWillBallFollowAttack.cpp | 32 + src/Game/AI/AI/aiWillBallFollowAttack.h | 37 + .../AI/aiWillBallFollowAttackWithDynAng.cpp | 27 + .../AI/AI/aiWillBallFollowAttackWithDynAng.h | 24 + src/Game/AI/AI/aiWillBallOperated.cpp | 31 + src/Game/AI/AI/aiWillBallOperated.h | 35 + src/Game/AI/AI/aiWillBallRoot.cpp | 33 + src/Game/AI/AI/aiWillBallRoot.h | 39 + src/Game/AI/AI/aiWindBoxPlace.cpp | 28 + src/Game/AI/AI/aiWindBoxPlace.h | 29 + src/Game/AI/AI/aiWindGenerator.cpp | 21 + src/Game/AI/AI/aiWindGenerator.h | 20 + src/Game/AI/AI/aiWindGeneratorSignal.cpp | 25 + src/Game/AI/AI/aiWindGeneratorSignal.h | 22 + src/Game/AI/AI/aiWithoutWeaponArrow.cpp | 48 + src/Game/AI/AI/aiWithoutWeaponArrow.h | 69 + src/Game/AI/AI/aiWizzrobeBlownOff.cpp | 26 + src/Game/AI/AI/aiWizzrobeBlownOff.h | 25 + src/Game/AI/AI/aiWizzrobeCircleMove.cpp | 29 + src/Game/AI/AI/aiWizzrobeCircleMove.h | 30 + src/Game/AI/AI/aiWizzrobeCombat.cpp | 35 + src/Game/AI/AI/aiWizzrobeCombat.h | 43 + src/Game/AI/AI/aiWizzrobeCombatMove.cpp | 35 + src/Game/AI/AI/aiWizzrobeCombatMove.h | 43 + src/Game/AI/AI/aiWizzrobeFindPlayer.cpp | 28 + src/Game/AI/AI/aiWizzrobeFindPlayer.h | 29 + src/Game/AI/AI/aiWizzrobeRoam.cpp | 34 + src/Game/AI/AI/aiWizzrobeRoam.h | 41 + src/Game/AI/AI/aiWizzrobeRoot.cpp | 29 + src/Game/AI/AI/aiWizzrobeRoot.h | 30 + src/Game/AI/AI/aiWizzrobeWeatherMagic.cpp | 28 + src/Game/AI/AI/aiWizzrobeWeatherMagic.h | 29 + src/Game/AI/AI/aiWolfLinkAmiibo.cpp | 27 + src/Game/AI/AI/aiWolfLinkAmiibo.h | 27 + src/Game/AI/AI/aiWolfLinkBattleRoot.cpp | 28 + src/Game/AI/AI/aiWolfLinkBattleRoot.h | 29 + src/Game/AI/AI/aiWolfLinkChainAttack.cpp | 33 + src/Game/AI/AI/aiWolfLinkChainAttack.h | 39 + src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.cpp | 29 + src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.h | 30 + src/Game/AI/AI/aiWolfLinkFollowWait.cpp | 26 + src/Game/AI/AI/aiWolfLinkFollowWait.h | 25 + src/Game/AI/AI/aiWolfLinkGoToTarget.cpp | 25 + src/Game/AI/AI/aiWolfLinkGoToTarget.h | 22 + src/Game/AI/AI/aiWolfLinkLeadToTarget.cpp | 25 + src/Game/AI/AI/aiWolfLinkLeadToTarget.h | 22 + src/Game/AI/AI/aiWolfLinkNormalRoot.cpp | 31 + src/Game/AI/AI/aiWolfLinkNormalRoot.h | 35 + src/Game/AI/AI/aiWolfLinkReaction.cpp | 23 + src/Game/AI/AI/aiWolfLinkReaction.h | 21 + src/Game/AI/AI/aiWolfLinkRoot.cpp | 23 + src/Game/AI/AI/aiWolfLinkRoot.h | 21 + src/Game/AI/AI/aiWolfLinkRushAttack.cpp | 28 + src/Game/AI/AI/aiWolfLinkRushAttack.h | 29 + src/Game/AI/AI/aiWolfLinkSeqAttack.cpp | 29 + src/Game/AI/AI/aiWolfLinkSeqAttack.h | 31 + src/Game/AI/AI/aiWolfLinkShiekSensorRoot.cpp | 26 + src/Game/AI/AI/aiWolfLinkShiekSensorRoot.h | 25 + src/Game/AI/AI/aiWolfLinkWarp.cpp | 33 + src/Game/AI/AI/aiWolfLinkWarp.h | 39 + src/Game/AI/AI/aiYunBoCannon.cpp | 28 + src/Game/AI/AI/aiYunBoCannon.h | 28 + src/Game/AI/AI/aiYunBoCannonBallRoot.cpp | 26 + src/Game/AI/AI/aiYunBoCannonBallRoot.h | 24 + src/Game/AI/AI/aiZokuchoSunazarashi.cpp | 29 + src/Game/AI/AI/aiZokuchoSunazarashi.h | 31 + .../AI/AI/aiZoraHeroRelicBattleNormal.cpp | 26 + src/Game/AI/AI/aiZoraHeroRelicBattleNormal.h | 27 + .../AI/AI/aiZoraHeroRelicBattleRidePlayer.cpp | 26 + .../AI/AI/aiZoraHeroRelicBattleRidePlayer.h | 23 + src/Game/AI/AI/aiZoraHeroRelicBattleRoot.cpp | 25 + src/Game/AI/AI/aiZoraHeroRelicBattleRoot.h | 23 + src/Game/AI/AI/aiZoraHeroSoulGiftRoot.cpp | 25 + src/Game/AI/AI/aiZoraHeroSoulGiftRoot.h | 22 + src/Game/AI/AI/aiZoraHeroWarp2Player.cpp | 26 + src/Game/AI/AI/aiZoraHeroWarp2Player.h | 25 + src/Game/AI/CMakeLists.txt | 3 + src/Game/AI/aiAiFactories.cpp | 2364 +++++++ src/Game/AI/aiAiFactories.h | 7 + src/KingSystem/ActorSystem/actAiAi.h | 5 + tools/ai_generate_actions.py | 2 +- tools/ai_generate_ais.py | 272 + tools/ai_show_nontrivial_hierarchies.py | 2 +- tools/ida_ai_rename_action_vfns.py | 2 +- tools/ida_ai_rename_ai_vfns.py | 2 +- tools/util/ai_common.py | 7 +- 2534 files changed, 78759 insertions(+), 5 deletions(-) create mode 100644 data/aidef_ai_params.yml create mode 100644 src/Game/AI/AI/CMakeLists.txt create mode 100644 src/Game/AI/AI/aiASWeaponRoot.cpp create mode 100644 src/Game/AI/AI/aiASWeaponRoot.h create mode 100644 src/Game/AI/AI/aiActorWaterDepthSelect.cpp create mode 100644 src/Game/AI/AI/aiActorWaterDepthSelect.h create mode 100644 src/Game/AI/AI/aiAddBasicLinkOn.cpp create mode 100644 src/Game/AI/AI/aiAddBasicLinkOn.h create mode 100644 src/Game/AI/AI/aiAddCarried.cpp create mode 100644 src/Game/AI/AI/aiAddCarried.h create mode 100644 src/Game/AI/AI/aiAddCarriedBase.cpp create mode 100644 src/Game/AI/AI/aiAddCarriedBase.h create mode 100644 src/Game/AI/AI/aiAddDemoCall.cpp create mode 100644 src/Game/AI/AI/aiAddDemoCall.h create mode 100644 src/Game/AI/AI/aiAddNodeNodeCarried.cpp create mode 100644 src/Game/AI/AI/aiAddNodeNodeCarried.h create mode 100644 src/Game/AI/AI/aiAddNoiseToTargetPos.cpp create mode 100644 src/Game/AI/AI/aiAddNoiseToTargetPos.h create mode 100644 src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.cpp create mode 100644 src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h create mode 100644 src/Game/AI/AI/aiAddSwarmMove.cpp create mode 100644 src/Game/AI/AI/aiAddSwarmMove.h create mode 100644 src/Game/AI/AI/aiAddViewTargetPos.cpp create mode 100644 src/Game/AI/AI/aiAddViewTargetPos.h create mode 100644 src/Game/AI/AI/aiAddViewTargetPosBase.cpp create mode 100644 src/Game/AI/AI/aiAddViewTargetPosBase.h create mode 100644 src/Game/AI/AI/aiAirOctaBoardBurn.cpp create mode 100644 src/Game/AI/AI/aiAirOctaBoardBurn.h create mode 100644 src/Game/AI/AI/aiAirOctaBurnReaction.cpp create mode 100644 src/Game/AI/AI/aiAirOctaBurnReaction.h create mode 100644 src/Game/AI/AI/aiAirOctaFlyUp.cpp create mode 100644 src/Game/AI/AI/aiAirOctaFlyUp.h create mode 100644 src/Game/AI/AI/aiAirOctaReaction.cpp create mode 100644 src/Game/AI/AI/aiAirOctaReaction.h create mode 100644 src/Game/AI/AI/aiAirOctaRoot.cpp create mode 100644 src/Game/AI/AI/aiAirOctaRoot.h create mode 100644 src/Game/AI/AI/aiAirOctaState.cpp create mode 100644 src/Game/AI/AI/aiAirOctaState.h create mode 100644 src/Game/AI/AI/aiAirOctaWait.cpp create mode 100644 src/Game/AI/AI/aiAirOctaWait.h create mode 100644 src/Game/AI/AI/aiAlertCreationNestOnTree.cpp create mode 100644 src/Game/AI/AI/aiAlertCreationNestOnTree.h create mode 100644 src/Game/AI/AI/aiAmbushableWeaponShoot.cpp create mode 100644 src/Game/AI/AI/aiAmbushableWeaponShoot.h create mode 100644 src/Game/AI/AI/aiAnchorRangeSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiAnchorRangeSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiAncientNecklaceBall.cpp create mode 100644 src/Game/AI/AI/aiAncientNecklaceBall.h create mode 100644 src/Game/AI/AI/aiAncientNecklaceBallBase.cpp create mode 100644 src/Game/AI/AI/aiAncientNecklaceBallBase.h create mode 100644 src/Game/AI/AI/aiAnimalAttackOtherTarget.cpp create mode 100644 src/Game/AI/AI/aiAnimalAttackOtherTarget.h create mode 100644 src/Game/AI/AI/aiAnimalBattleAggressive.cpp create mode 100644 src/Game/AI/AI/aiAnimalBattleAggressive.h create mode 100644 src/Game/AI/AI/aiAnimalBattleMoveLeave.cpp create mode 100644 src/Game/AI/AI/aiAnimalBattleMoveLeave.h create mode 100644 src/Game/AI/AI/aiAnimalEscapeAI.cpp create mode 100644 src/Game/AI/AI/aiAnimalEscapeAI.h create mode 100644 src/Game/AI/AI/aiAnimalEscapeAfterDamage.cpp create mode 100644 src/Game/AI/AI/aiAnimalEscapeAfterDamage.h create mode 100644 src/Game/AI/AI/aiAnimalFollowTarget.cpp create mode 100644 src/Game/AI/AI/aiAnimalFollowTarget.h create mode 100644 src/Game/AI/AI/aiAnimalLineOfSightSelector.cpp create mode 100644 src/Game/AI/AI/aiAnimalLineOfSightSelector.h create mode 100644 src/Game/AI/AI/aiAnimalPreAttack.cpp create mode 100644 src/Game/AI/AI/aiAnimalPreAttack.h create mode 100644 src/Game/AI/AI/aiAnimalRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiAnimalRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.cpp create mode 100644 src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h create mode 100644 src/Game/AI/AI/aiAnimalRoam.cpp create mode 100644 src/Game/AI/AI/aiAnimalRoam.h create mode 100644 src/Game/AI/AI/aiAnimalRoamBase.cpp create mode 100644 src/Game/AI/AI/aiAnimalRoamBase.h create mode 100644 src/Game/AI/AI/aiAnimalRoamCheckWater.cpp create mode 100644 src/Game/AI/AI/aiAnimalRoamCheckWater.h create mode 100644 src/Game/AI/AI/aiAnimalRushAttack.cpp create mode 100644 src/Game/AI/AI/aiAnimalRushAttack.h create mode 100644 src/Game/AI/AI/aiAnimalTimelineAI.cpp create mode 100644 src/Game/AI/AI/aiAnimalTimelineAI.h create mode 100644 src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.cpp create mode 100644 src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.h create mode 100644 src/Game/AI/AI/aiAppearFromTargetFrontGround.cpp create mode 100644 src/Game/AI/AI/aiAppearFromTargetFrontGround.h create mode 100644 src/Game/AI/AI/aiAppearNearTarget.cpp create mode 100644 src/Game/AI/AI/aiAppearNearTarget.h create mode 100644 src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.cpp create mode 100644 src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h create mode 100644 src/Game/AI/AI/aiArmorSearchKorokRoot.cpp create mode 100644 src/Game/AI/AI/aiArmorSearchKorokRoot.h create mode 100644 src/Game/AI/AI/aiAroundEnemyCheckSelect.cpp create mode 100644 src/Game/AI/AI/aiAroundEnemyCheckSelect.h create mode 100644 src/Game/AI/AI/aiArrow.cpp create mode 100644 src/Game/AI/AI/aiArrow.h create mode 100644 src/Game/AI/AI/aiArrowChargeAndShoot.cpp create mode 100644 src/Game/AI/AI/aiArrowChargeAndShoot.h create mode 100644 src/Game/AI/AI/aiArrowDelete.cpp create mode 100644 src/Game/AI/AI/aiArrowDelete.h create mode 100644 src/Game/AI/AI/aiArrowStickAndPick.cpp create mode 100644 src/Game/AI/AI/aiArrowStickAndPick.h create mode 100644 src/Game/AI/AI/aiAssassinBattle.cpp create mode 100644 src/Game/AI/AI/aiAssassinBattle.h create mode 100644 src/Game/AI/AI/aiAssassinBattleMove.cpp create mode 100644 src/Game/AI/AI/aiAssassinBattleMove.h create mode 100644 src/Game/AI/AI/aiAssassinBattleRange.cpp create mode 100644 src/Game/AI/AI/aiAssassinBattleRange.h create mode 100644 src/Game/AI/AI/aiAssassinBossAttackSeq.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossAttackSeq.h create mode 100644 src/Game/AI/AI/aiAssassinBossBattle.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossBattle.h create mode 100644 src/Game/AI/AI/aiAssassinBossEscapeFromTarget.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h create mode 100644 src/Game/AI/AI/aiAssassinBossFirstBattle.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossFirstBattle.h create mode 100644 src/Game/AI/AI/aiAssassinBossFirstBattleMove.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossFirstBattleMove.h create mode 100644 src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiAssassinBossFirstRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossFirstRoot.h create mode 100644 src/Game/AI/AI/aiAssassinBossIronBallAttack.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossIronBallAttack.h create mode 100644 src/Game/AI/AI/aiAssassinBossLastAttack.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossLastAttack.h create mode 100644 src/Game/AI/AI/aiAssassinBossRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossRoot.h create mode 100644 src/Game/AI/AI/aiAssassinBossRootBase.cpp create mode 100644 src/Game/AI/AI/aiAssassinBossRootBase.h create mode 100644 src/Game/AI/AI/aiAssassinCallSelect.cpp create mode 100644 src/Game/AI/AI/aiAssassinCallSelect.h create mode 100644 src/Game/AI/AI/aiAssassinFieldShooterBattle.cpp create mode 100644 src/Game/AI/AI/aiAssassinFieldShooterBattle.h create mode 100644 src/Game/AI/AI/aiAssassinFieldShooterBattleBase.cpp create mode 100644 src/Game/AI/AI/aiAssassinFieldShooterBattleBase.h create mode 100644 src/Game/AI/AI/aiAssassinMagicTgtSelect.cpp create mode 100644 src/Game/AI/AI/aiAssassinMagicTgtSelect.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoRoot.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleMagicAfter.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleMagicAfter.h create mode 100644 src/Game/AI/AI/aiAssassinMiddleRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinMiddleRoot.h create mode 100644 src/Game/AI/AI/aiAssassinNormal.cpp create mode 100644 src/Game/AI/AI/aiAssassinNormal.h create mode 100644 src/Game/AI/AI/aiAssassinRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinRoot.h create mode 100644 src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.cpp create mode 100644 src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h create mode 100644 src/Game/AI/AI/aiAttackGrave.cpp create mode 100644 src/Game/AI/AI/aiAttackGrave.h create mode 100644 src/Game/AI/AI/aiAttackGraveChase.cpp create mode 100644 src/Game/AI/AI/aiAttackGraveChase.h create mode 100644 src/Game/AI/AI/aiAttackGraveChaseWithSensor.cpp create mode 100644 src/Game/AI/AI/aiAttackGraveChaseWithSensor.h create mode 100644 src/Game/AI/AI/aiAttackHitCheck.cpp create mode 100644 src/Game/AI/AI/aiAttackHitCheck.h create mode 100644 src/Game/AI/AI/aiAwarenessScale.cpp create mode 100644 src/Game/AI/AI/aiAwarenessScale.h create mode 100644 src/Game/AI/AI/aiBackAttackEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiBackAttackEnemyBattle.h create mode 100644 src/Game/AI/AI/aiBackStepAndAttack.cpp create mode 100644 src/Game/AI/AI/aiBackStepAndAttack.h create mode 100644 src/Game/AI/AI/aiBalloonPlantNormal.cpp create mode 100644 src/Game/AI/AI/aiBalloonPlantNormal.h create mode 100644 src/Game/AI/AI/aiBarrelBomb.cpp create mode 100644 src/Game/AI/AI/aiBarrelBomb.h create mode 100644 src/Game/AI/AI/aiBasicStatusRoot.cpp create mode 100644 src/Game/AI/AI/aiBasicStatusRoot.h create mode 100644 src/Game/AI/AI/aiBattleBgmRequestFinishTag.cpp create mode 100644 src/Game/AI/AI/aiBattleBgmRequestFinishTag.h create mode 100644 src/Game/AI/AI/aiBeamExplode.cpp create mode 100644 src/Game/AI/AI/aiBeamExplode.h create mode 100644 src/Game/AI/AI/aiBeamExplodeBase.cpp create mode 100644 src/Game/AI/AI/aiBeamExplodeBase.h create mode 100644 src/Game/AI/AI/aiBeamExplodeEitherHit.cpp create mode 100644 src/Game/AI/AI/aiBeamExplodeEitherHit.h create mode 100644 src/Game/AI/AI/aiBeamosCarried.cpp create mode 100644 src/Game/AI/AI/aiBeamosCarried.h create mode 100644 src/Game/AI/AI/aiBeeBattle.cpp create mode 100644 src/Game/AI/AI/aiBeeBattle.h create mode 100644 src/Game/AI/AI/aiBeeSwarmFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiBeeSwarmFindPlayer.h create mode 100644 src/Game/AI/AI/aiBeeSwarmNormal.cpp create mode 100644 src/Game/AI/AI/aiBeeSwarmNormal.h create mode 100644 src/Game/AI/AI/aiBeeSwarmReaction.cpp create mode 100644 src/Game/AI/AI/aiBeeSwarmReaction.h create mode 100644 src/Game/AI/AI/aiBeeSwarmRoot.cpp create mode 100644 src/Game/AI/AI/aiBeeSwarmRoot.h create mode 100644 src/Game/AI/AI/aiBirdDead.cpp create mode 100644 src/Game/AI/AI/aiBirdDead.h create mode 100644 src/Game/AI/AI/aiBirdEscape.cpp create mode 100644 src/Game/AI/AI/aiBirdEscape.h create mode 100644 src/Game/AI/AI/aiBlownOff.cpp create mode 100644 src/Game/AI/AI/aiBlownOff.h create mode 100644 src/Game/AI/AI/aiBocoblinBackStepAttack.cpp create mode 100644 src/Game/AI/AI/aiBocoblinBackStepAttack.h create mode 100644 src/Game/AI/AI/aiBokoblinArrowAttack.cpp create mode 100644 src/Game/AI/AI/aiBokoblinArrowAttack.h create mode 100644 src/Game/AI/AI/aiBokoblinArrowBattle.cpp create mode 100644 src/Game/AI/AI/aiBokoblinArrowBattle.h create mode 100644 src/Game/AI/AI/aiBokoblinHoldArrow.cpp create mode 100644 src/Game/AI/AI/aiBokoblinHoldArrow.h create mode 100644 src/Game/AI/AI/aiBokoblinNoise.cpp create mode 100644 src/Game/AI/AI/aiBokoblinNoise.h create mode 100644 src/Game/AI/AI/aiBokoblinRestraint.cpp create mode 100644 src/Game/AI/AI/aiBokoblinRestraint.h create mode 100644 src/Game/AI/AI/aiBokoblinRoam.cpp create mode 100644 src/Game/AI/AI/aiBokoblinRoam.h create mode 100644 src/Game/AI/AI/aiBossBattleRoomRoot.cpp create mode 100644 src/Game/AI/AI/aiBossBattleRoomRoot.h create mode 100644 src/Game/AI/AI/aiBowEquiped.cpp create mode 100644 src/Game/AI/AI/aiBowEquiped.h create mode 100644 src/Game/AI/AI/aiBowShoot.cpp create mode 100644 src/Game/AI/AI/aiBowShoot.h create mode 100644 src/Game/AI/AI/aiBowlPin.cpp create mode 100644 src/Game/AI/AI/aiBowlPin.h create mode 100644 src/Game/AI/AI/aiBoxWaterRoot.cpp create mode 100644 src/Game/AI/AI/aiBoxWaterRoot.h create mode 100644 src/Game/AI/AI/aiBreathAttackEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiBreathAttackEnemyBattle.h create mode 100644 src/Game/AI/AI/aiBreathEnemyRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiBreathEnemyRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiCalledEnemyMove.cpp create mode 100644 src/Game/AI/AI/aiCalledEnemyMove.h create mode 100644 src/Game/AI/AI/aiCameraAI.cpp create mode 100644 src/Game/AI/AI/aiCameraAI.h create mode 100644 src/Game/AI/AI/aiCameraBow.cpp create mode 100644 src/Game/AI/AI/aiCameraBow.h create mode 100644 src/Game/AI/AI/aiCameraEditRoot.cpp create mode 100644 src/Game/AI/AI/aiCameraEditRoot.h create mode 100644 src/Game/AI/AI/aiCameraEvent.cpp create mode 100644 src/Game/AI/AI/aiCameraEvent.h create mode 100644 src/Game/AI/AI/aiCameraEventReturnSavePoint.cpp create mode 100644 src/Game/AI/AI/aiCameraEventReturnSavePoint.h create mode 100644 src/Game/AI/AI/aiCameraEventTalk.cpp create mode 100644 src/Game/AI/AI/aiCameraEventTalk.h create mode 100644 src/Game/AI/AI/aiCameraEventTalkAI.cpp create mode 100644 src/Game/AI/AI/aiCameraEventTalkAI.h create mode 100644 src/Game/AI/AI/aiCameraEventTalkAIRet.cpp create mode 100644 src/Game/AI/AI/aiCameraEventTalkAIRet.h create mode 100644 src/Game/AI/AI/aiCameraGameRoot.cpp create mode 100644 src/Game/AI/AI/aiCameraGameRoot.h create mode 100644 src/Game/AI/AI/aiCameraRoot.cpp create mode 100644 src/Game/AI/AI/aiCameraRoot.h create mode 100644 src/Game/AI/AI/aiCameraTool.cpp create mode 100644 src/Game/AI/AI/aiCameraTool.h create mode 100644 src/Game/AI/AI/aiCannonBallRoot.cpp create mode 100644 src/Game/AI/AI/aiCannonBallRoot.h create mode 100644 src/Game/AI/AI/aiCapturedActDeadSelector.cpp create mode 100644 src/Game/AI/AI/aiCapturedActDeadSelector.h create mode 100644 src/Game/AI/AI/aiCapturedActorReaction.cpp create mode 100644 src/Game/AI/AI/aiCapturedActorReaction.h create mode 100644 src/Game/AI/AI/aiCapturedActorReactionChemical.cpp create mode 100644 src/Game/AI/AI/aiCapturedActorReactionChemical.h create mode 100644 src/Game/AI/AI/aiCarryBox.cpp create mode 100644 src/Game/AI/AI/aiCarryBox.h create mode 100644 src/Game/AI/AI/aiCastleLynelBattle.cpp create mode 100644 src/Game/AI/AI/aiCastleLynelBattle.h create mode 100644 src/Game/AI/AI/aiChangeWeatherTagRoot.cpp create mode 100644 src/Game/AI/AI/aiChangeWeatherTagRoot.h create mode 100644 src/Game/AI/AI/aiChangeWindTagRoot.cpp create mode 100644 src/Game/AI/AI/aiChangeWindTagRoot.h create mode 100644 src/Game/AI/AI/aiChaseSound.cpp create mode 100644 src/Game/AI/AI/aiChaseSound.h create mode 100644 src/Game/AI/AI/aiChemicalEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiChemicalEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiChemicalEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiChemicalEnemyRoot.h create mode 100644 src/Game/AI/AI/aiChemicalExplode.cpp create mode 100644 src/Game/AI/AI/aiChemicalExplode.h create mode 100644 src/Game/AI/AI/aiChemicalGiantArmorRoot.cpp create mode 100644 src/Game/AI/AI/aiChemicalGiantArmorRoot.h create mode 100644 src/Game/AI/AI/aiChemicalStayObjectRoot.cpp create mode 100644 src/Game/AI/AI/aiChemicalStayObjectRoot.h create mode 100644 src/Game/AI/AI/aiChemicalWeaponRoot.cpp create mode 100644 src/Game/AI/AI/aiChemicalWeaponRoot.h create mode 100644 src/Game/AI/AI/aiChildDeviceReflectArrow.cpp create mode 100644 src/Game/AI/AI/aiChildDeviceReflectArrow.h create mode 100644 src/Game/AI/AI/aiChildFavoriteSelector.cpp create mode 100644 src/Game/AI/AI/aiChildFavoriteSelector.h create mode 100644 src/Game/AI/AI/aiChildFavoriteSelectorBase.cpp create mode 100644 src/Game/AI/AI/aiChildFavoriteSelectorBase.h create mode 100644 src/Game/AI/AI/aiChildHaveSelect.cpp create mode 100644 src/Game/AI/AI/aiChildHaveSelect.h create mode 100644 src/Game/AI/AI/aiChmCheck.cpp create mode 100644 src/Game/AI/AI/aiChmCheck.h create mode 100644 src/Game/AI/AI/aiChmVolRateCheck.cpp create mode 100644 src/Game/AI/AI/aiChmVolRateCheck.h create mode 100644 src/Game/AI/AI/aiChmVolRateCheckBlankOk.cpp create mode 100644 src/Game/AI/AI/aiChmVolRateCheckBlankOk.h create mode 100644 src/Game/AI/AI/aiChuchuDieSelect.cpp create mode 100644 src/Game/AI/AI/aiChuchuDieSelect.h create mode 100644 src/Game/AI/AI/aiChuchuJellyRoot.cpp create mode 100644 src/Game/AI/AI/aiChuchuJellyRoot.h create mode 100644 src/Game/AI/AI/aiChuchuNavMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiChuchuNavMoveTarget.h create mode 100644 src/Game/AI/AI/aiChuchuRoot.cpp create mode 100644 src/Game/AI/AI/aiChuchuRoot.h create mode 100644 src/Game/AI/AI/aiChuchuTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiChuchuTypeSelect.h create mode 100644 src/Game/AI/AI/aiCircleMove.cpp create mode 100644 src/Game/AI/AI/aiCircleMove.h create mode 100644 src/Game/AI/AI/aiCircleMoveFlying.cpp create mode 100644 src/Game/AI/AI/aiCircleMoveFlying.h create mode 100644 src/Game/AI/AI/aiCircleMoveInFluid.cpp create mode 100644 src/Game/AI/AI/aiCircleMoveInFluid.h create mode 100644 src/Game/AI/AI/aiCircleMoveInWater.cpp create mode 100644 src/Game/AI/AI/aiCircleMoveInWater.h create mode 100644 src/Game/AI/AI/aiCircleMovePos.cpp create mode 100644 src/Game/AI/AI/aiCircleMovePos.h create mode 100644 src/Game/AI/AI/aiCircleMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiCircleMoveTarget.h create mode 100644 src/Game/AI/AI/aiCliffCheckSelect.cpp create mode 100644 src/Game/AI/AI/aiCliffCheckSelect.h create mode 100644 src/Game/AI/AI/aiCliffCheckTargetDirSelect.cpp create mode 100644 src/Game/AI/AI/aiCliffCheckTargetDirSelect.h create mode 100644 src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.cpp create mode 100644 src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h create mode 100644 src/Game/AI/AI/aiCliffDistanceSelectThreeAction.cpp create mode 100644 src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h create mode 100644 src/Game/AI/AI/aiCloseSmallAttack.cpp create mode 100644 src/Game/AI/AI/aiCloseSmallAttack.h create mode 100644 src/Game/AI/AI/aiCloseSmallAttackBase.cpp create mode 100644 src/Game/AI/AI/aiCloseSmallAttackBase.h create mode 100644 src/Game/AI/AI/aiClusterRenderCheckTag.cpp create mode 100644 src/Game/AI/AI/aiClusterRenderCheckTag.h create mode 100644 src/Game/AI/AI/aiColGroundHitSelect.cpp create mode 100644 src/Game/AI/AI/aiColGroundHitSelect.h create mode 100644 src/Game/AI/AI/aiCollaborationShootingStarRoot.cpp create mode 100644 src/Game/AI/AI/aiCollaborationShootingStarRoot.h create mode 100644 src/Game/AI/AI/aiCommonPickedItem.cpp create mode 100644 src/Game/AI/AI/aiCommonPickedItem.h create mode 100644 src/Game/AI/AI/aiConditionMoveActionSelect.cpp create mode 100644 src/Game/AI/AI/aiConditionMoveActionSelect.h create mode 100644 src/Game/AI/AI/aiCookPotRoot.cpp create mode 100644 src/Game/AI/AI/aiCookPotRoot.h create mode 100644 src/Game/AI/AI/aiCountSelect.cpp create mode 100644 src/Game/AI/AI/aiCountSelect.h create mode 100644 src/Game/AI/AI/aiCreateActor.cpp create mode 100644 src/Game/AI/AI/aiCreateActor.h create mode 100644 src/Game/AI/AI/aiCreateActorWithTarget.cpp create mode 100644 src/Game/AI/AI/aiCreateActorWithTarget.h create mode 100644 src/Game/AI/AI/aiCreateCarryActor.cpp create mode 100644 src/Game/AI/AI/aiCreateCarryActor.h create mode 100644 src/Game/AI/AI/aiCreateOnFaceSelect.cpp create mode 100644 src/Game/AI/AI/aiCreateOnFaceSelect.h create mode 100644 src/Game/AI/AI/aiCreationNestOnTree.cpp create mode 100644 src/Game/AI/AI/aiCreationNestOnTree.h create mode 100644 src/Game/AI/AI/aiDamageAttrSelect.cpp create mode 100644 src/Game/AI/AI/aiDamageAttrSelect.h create mode 100644 src/Game/AI/AI/aiDamageTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiDamageTypeSelect.h create mode 100644 src/Game/AI/AI/aiDangerAvoidFlagSelect.cpp create mode 100644 src/Game/AI/AI/aiDangerAvoidFlagSelect.h create mode 100644 src/Game/AI/AI/aiDashAndAttack.cpp create mode 100644 src/Game/AI/AI/aiDashAndAttack.h create mode 100644 src/Game/AI/AI/aiDeadOrOtherState.cpp create mode 100644 src/Game/AI/AI/aiDeadOrOtherState.h create mode 100644 src/Game/AI/AI/aiDeadlyBlowWeaponRoot.cpp create mode 100644 src/Game/AI/AI/aiDeadlyBlowWeaponRoot.h create mode 100644 src/Game/AI/AI/aiDefWanderAI.cpp create mode 100644 src/Game/AI/AI/aiDefWanderAI.h create mode 100644 src/Game/AI/AI/aiDemoRailMoveRemains.cpp create mode 100644 src/Game/AI/AI/aiDemoRailMoveRemains.h create mode 100644 src/Game/AI/AI/aiDemoRootAI.cpp create mode 100644 src/Game/AI/AI/aiDemoRootAI.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_Faucet.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_Faucet.h create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.cpp create mode 100644 src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h create mode 100644 src/Game/AI/AI/aiDieSelect.cpp create mode 100644 src/Game/AI/AI/aiDieSelect.h create mode 100644 src/Game/AI/AI/aiDieSelectBombPlus.cpp create mode 100644 src/Game/AI/AI/aiDieSelectBombPlus.h create mode 100644 src/Game/AI/AI/aiDieSelectChemShockPlus.cpp create mode 100644 src/Game/AI/AI/aiDieSelectChemShockPlus.h create mode 100644 src/Game/AI/AI/aiDieSelectChemicalPlus.cpp create mode 100644 src/Game/AI/AI/aiDieSelectChemicalPlus.h create mode 100644 src/Game/AI/AI/aiDisplaySelect.cpp create mode 100644 src/Game/AI/AI/aiDisplaySelect.h create mode 100644 src/Game/AI/AI/aiDistanceKeepMove.cpp create mode 100644 src/Game/AI/AI/aiDistanceKeepMove.h create mode 100644 src/Game/AI/AI/aiDistanceLostCheck.cpp create mode 100644 src/Game/AI/AI/aiDistanceLostCheck.h create mode 100644 src/Game/AI/AI/aiDoChangeOneTime.cpp create mode 100644 src/Game/AI/AI/aiDoChangeOneTime.h create mode 100644 src/Game/AI/AI/aiDogNormal.cpp create mode 100644 src/Game/AI/AI/aiDogNormal.h create mode 100644 src/Game/AI/AI/aiDomesticNormal.cpp create mode 100644 src/Game/AI/AI/aiDomesticNormal.h create mode 100644 src/Game/AI/AI/aiDominoRoot.cpp create mode 100644 src/Game/AI/AI/aiDominoRoot.h create mode 100644 src/Game/AI/AI/aiDoorRoot.cpp create mode 100644 src/Game/AI/AI/aiDoorRoot.h create mode 100644 src/Game/AI/AI/aiDoubtItemSubTargetSelect.cpp create mode 100644 src/Game/AI/AI/aiDoubtItemSubTargetSelect.h create mode 100644 src/Game/AI/AI/aiDragonDropItemTargetRootAI.cpp create mode 100644 src/Game/AI/AI/aiDragonDropItemTargetRootAI.h create mode 100644 src/Game/AI/AI/aiDragonElecRoot.cpp create mode 100644 src/Game/AI/AI/aiDragonElecRoot.h create mode 100644 src/Game/AI/AI/aiDragonFireRoot.cpp create mode 100644 src/Game/AI/AI/aiDragonFireRoot.h create mode 100644 src/Game/AI/AI/aiDragonIceRoot.cpp create mode 100644 src/Game/AI/AI/aiDragonIceRoot.h create mode 100644 src/Game/AI/AI/aiDragonIceWaitRunel.cpp create mode 100644 src/Game/AI/AI/aiDragonIceWaitRunel.h create mode 100644 src/Game/AI/AI/aiDragonItemRoot.cpp create mode 100644 src/Game/AI/AI/aiDragonItemRoot.h create mode 100644 src/Game/AI/AI/aiDragonReturn.cpp create mode 100644 src/Game/AI/AI/aiDragonReturn.h create mode 100644 src/Game/AI/AI/aiDragonRoot.cpp create mode 100644 src/Game/AI/AI/aiDragonRoot.h create mode 100644 src/Game/AI/AI/aiDragonRootBase.cpp create mode 100644 src/Game/AI/AI/aiDragonRootBase.h create mode 100644 src/Game/AI/AI/aiDragonTurn.cpp create mode 100644 src/Game/AI/AI/aiDragonTurn.h create mode 100644 src/Game/AI/AI/aiDrawnSwordBowSelect.cpp create mode 100644 src/Game/AI/AI/aiDrawnSwordBowSelect.h create mode 100644 src/Game/AI/AI/aiDrawnWeaponSelector.cpp create mode 100644 src/Game/AI/AI/aiDrawnWeaponSelector.h create mode 100644 src/Game/AI/AI/aiDuckRoot.cpp create mode 100644 src/Game/AI/AI/aiDuckRoot.h create mode 100644 src/Game/AI/AI/aiDungeonCannonBallAutoDelete.cpp create mode 100644 src/Game/AI/AI/aiDungeonCannonBallAutoDelete.h create mode 100644 src/Game/AI/AI/aiDungeonEntranceRoot.cpp create mode 100644 src/Game/AI/AI/aiDungeonEntranceRoot.h create mode 100644 src/Game/AI/AI/aiDungeonMoveTag.cpp create mode 100644 src/Game/AI/AI/aiDungeonMoveTag.h create mode 100644 src/Game/AI/AI/aiDungeonMoveTagCont.cpp create mode 100644 src/Game/AI/AI/aiDungeonMoveTagCont.h create mode 100644 src/Game/AI/AI/aiDungeonRemainsFire.cpp create mode 100644 src/Game/AI/AI/aiDungeonRemainsFire.h create mode 100644 src/Game/AI/AI/aiDungeonResetPosTag.cpp create mode 100644 src/Game/AI/AI/aiDungeonResetPosTag.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag3D.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag3D.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4ElecApp.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4ElecApp.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4FireApp.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4FireApp.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4WaterApp.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4WaterApp.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4WindApp.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTag4WindApp.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTagCont.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTagCont.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTagInOrder.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTagInOrder.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTagShuttle.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTagShuttle.h create mode 100644 src/Game/AI/AI/aiDungeonRotateTagWaterChemical.cpp create mode 100644 src/Game/AI/AI/aiDungeonRotateTagWaterChemical.h create mode 100644 src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h create mode 100644 src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h create mode 100644 src/Game/AI/AI/aiEarthReleaseAttack.cpp create mode 100644 src/Game/AI/AI/aiEarthReleaseAttack.h create mode 100644 src/Game/AI/AI/aiElectricBall.cpp create mode 100644 src/Game/AI/AI/aiElectricBall.h create mode 100644 src/Game/AI/AI/aiElectricCable.cpp create mode 100644 src/Game/AI/AI/aiElectricCable.h create mode 100644 src/Game/AI/AI/aiEnemyAngry.cpp create mode 100644 src/Game/AI/AI/aiEnemyAngry.h create mode 100644 src/Game/AI/AI/aiEnemyAttackAndAway.cpp create mode 100644 src/Game/AI/AI/aiEnemyAttackAndAway.h create mode 100644 src/Game/AI/AI/aiEnemyBaseArrowAttack.cpp create mode 100644 src/Game/AI/AI/aiEnemyBaseArrowAttack.h create mode 100644 src/Game/AI/AI/aiEnemyBaseFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiEnemyBaseFindPlayer.h create mode 100644 src/Game/AI/AI/aiEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyBattle.h create mode 100644 src/Game/AI/AI/aiEnemyBattleWithAreaCheck.cpp create mode 100644 src/Game/AI/AI/aiEnemyBattleWithAreaCheck.h create mode 100644 src/Game/AI/AI/aiEnemyCalledAppear.cpp create mode 100644 src/Game/AI/AI/aiEnemyCalledAppear.h create mode 100644 src/Game/AI/AI/aiEnemyChaseShield.cpp create mode 100644 src/Game/AI/AI/aiEnemyChaseShield.h create mode 100644 src/Game/AI/AI/aiEnemyChaseTargetAndAction.cpp create mode 100644 src/Game/AI/AI/aiEnemyChaseTargetAndAction.h create mode 100644 src/Game/AI/AI/aiEnemyChemTargetAction.cpp create mode 100644 src/Game/AI/AI/aiEnemyChemTargetAction.h create mode 100644 src/Game/AI/AI/aiEnemyChemTargetActionBase.cpp create mode 100644 src/Game/AI/AI/aiEnemyChemTargetActionBase.h create mode 100644 src/Game/AI/AI/aiEnemyChemicalPowerSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyChemicalPowerSelect.h create mode 100644 src/Game/AI/AI/aiEnemyChemicalSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyChemicalSelect.h create mode 100644 src/Game/AI/AI/aiEnemyConfuse.cpp create mode 100644 src/Game/AI/AI/aiEnemyConfuse.h create mode 100644 src/Game/AI/AI/aiEnemyCutRope.cpp create mode 100644 src/Game/AI/AI/aiEnemyCutRope.h create mode 100644 src/Game/AI/AI/aiEnemyDefaultReaction.cpp create mode 100644 src/Game/AI/AI/aiEnemyDefaultReaction.h create mode 100644 src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.cpp create mode 100644 src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.h create mode 100644 src/Game/AI/AI/aiEnemyEscape.cpp create mode 100644 src/Game/AI/AI/aiEnemyEscape.h create mode 100644 src/Game/AI/AI/aiEnemyEscapeMove.cpp create mode 100644 src/Game/AI/AI/aiEnemyEscapeMove.h create mode 100644 src/Game/AI/AI/aiEnemyEscapeRoot.cpp create mode 100644 src/Game/AI/AI/aiEnemyEscapeRoot.h create mode 100644 src/Game/AI/AI/aiEnemyFeintBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyFeintBattle.h create mode 100644 src/Game/AI/AI/aiEnemyFindBadStatusFriend.cpp create mode 100644 src/Game/AI/AI/aiEnemyFindBadStatusFriend.h create mode 100644 src/Game/AI/AI/aiEnemyFindHorseRideTarget.cpp create mode 100644 src/Game/AI/AI/aiEnemyFindHorseRideTarget.h create mode 100644 src/Game/AI/AI/aiEnemyFindShootable.cpp create mode 100644 src/Game/AI/AI/aiEnemyFindShootable.h create mode 100644 src/Game/AI/AI/aiEnemyFortressChat.cpp create mode 100644 src/Game/AI/AI/aiEnemyFortressChat.h create mode 100644 src/Game/AI/AI/aiEnemyFortressMgrTag.cpp create mode 100644 src/Game/AI/AI/aiEnemyFortressMgrTag.h create mode 100644 src/Game/AI/AI/aiEnemyFortressWait.cpp create mode 100644 src/Game/AI/AI/aiEnemyFortressWait.h create mode 100644 src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.cpp create mode 100644 src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.h create mode 100644 src/Game/AI/AI/aiEnemyHide.cpp create mode 100644 src/Game/AI/AI/aiEnemyHide.h create mode 100644 src/Game/AI/AI/aiEnemyHideGrass.cpp create mode 100644 src/Game/AI/AI/aiEnemyHideGrass.h create mode 100644 src/Game/AI/AI/aiEnemyHideShootingBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyHideShootingBattle.h create mode 100644 src/Game/AI/AI/aiEnemyHorseRide.cpp create mode 100644 src/Game/AI/AI/aiEnemyHorseRide.h create mode 100644 src/Game/AI/AI/aiEnemyLifeSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyLifeSelect.h create mode 100644 src/Game/AI/AI/aiEnemyLiftShootItem.cpp create mode 100644 src/Game/AI/AI/aiEnemyLiftShootItem.h create mode 100644 src/Game/AI/AI/aiEnemyLifted.cpp create mode 100644 src/Game/AI/AI/aiEnemyLifted.h create mode 100644 src/Game/AI/AI/aiEnemyLost.cpp create mode 100644 src/Game/AI/AI/aiEnemyLost.h create mode 100644 src/Game/AI/AI/aiEnemyMimicrySelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyMimicrySelect.h create mode 100644 src/Game/AI/AI/aiEnemyMoveBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyMoveBattle.h create mode 100644 src/Game/AI/AI/aiEnemyMoveToGround.cpp create mode 100644 src/Game/AI/AI/aiEnemyMoveToGround.h create mode 100644 src/Game/AI/AI/aiEnemyNoiseTarget.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoiseTarget.h create mode 100644 src/Game/AI/AI/aiEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiEnemyNormal.h create mode 100644 src/Game/AI/AI/aiEnemyNotice.cpp create mode 100644 src/Game/AI/AI/aiEnemyNotice.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeActiveEnemy.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeActiveEnemy.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeFearfulTarget.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeFearfulTarget.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeLimit.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeLimit.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeSound.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeSound.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundSensitive.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundSensitive.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundWithUI.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeSoundWithUI.h create mode 100644 src/Game/AI/AI/aiEnemyNoticeTerror.cpp create mode 100644 src/Game/AI/AI/aiEnemyNoticeTerror.h create mode 100644 src/Game/AI/AI/aiEnemyPermitAttackSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyPermitAttackSelect.h create mode 100644 src/Game/AI/AI/aiEnemyPursuingArrowBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyPursuingArrowBattle.h create mode 100644 src/Game/AI/AI/aiEnemyPursuingAttackCheck.cpp create mode 100644 src/Game/AI/AI/aiEnemyPursuingAttackCheck.h create mode 100644 src/Game/AI/AI/aiEnemyPursuingBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyPursuingBattle.h create mode 100644 src/Game/AI/AI/aiEnemyRandomRepeatSideStep.cpp create mode 100644 src/Game/AI/AI/aiEnemyRandomRepeatSideStep.h create mode 100644 src/Game/AI/AI/aiEnemyRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiEnemyRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiEnemyRangeKeepSwimMove.cpp create mode 100644 src/Game/AI/AI/aiEnemyRangeKeepSwimMove.h create mode 100644 src/Game/AI/AI/aiEnemyRecognizeTarget.cpp create mode 100644 src/Game/AI/AI/aiEnemyRecognizeTarget.h create mode 100644 src/Game/AI/AI/aiEnemyRecognizeTargetBase.cpp create mode 100644 src/Game/AI/AI/aiEnemyRecognizeTargetBase.h create mode 100644 src/Game/AI/AI/aiEnemyRestraintCheckBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyRestraintCheckBattle.h create mode 100644 src/Game/AI/AI/aiEnemyReturnSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyReturnSelect.h create mode 100644 src/Game/AI/AI/aiEnemyRoam.cpp create mode 100644 src/Game/AI/AI/aiEnemyRoam.h create mode 100644 src/Game/AI/AI/aiEnemyRoamSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyRoamSelect.h create mode 100644 src/Game/AI/AI/aiEnemyRoamViewItem.cpp create mode 100644 src/Game/AI/AI/aiEnemyRoamViewItem.h create mode 100644 src/Game/AI/AI/aiEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiEnemyRoot.h create mode 100644 src/Game/AI/AI/aiEnemySearchHorse.cpp create mode 100644 src/Game/AI/AI/aiEnemySearchHorse.h create mode 100644 src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h create mode 100644 src/Game/AI/AI/aiEnemyShieldSearchOrBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyShieldSearchOrBattle.h create mode 100644 src/Game/AI/AI/aiEnemyShootAttackExplosives.cpp create mode 100644 src/Game/AI/AI/aiEnemyShootAttackExplosives.h create mode 100644 src/Game/AI/AI/aiEnemySittingTogether.cpp create mode 100644 src/Game/AI/AI/aiEnemySittingTogether.h create mode 100644 src/Game/AI/AI/aiEnemySkyArrowAttack.cpp create mode 100644 src/Game/AI/AI/aiEnemySkyArrowAttack.h create mode 100644 src/Game/AI/AI/aiEnemySomeIgniteBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemySomeIgniteBattle.h create mode 100644 src/Game/AI/AI/aiEnemySyncAttack.cpp create mode 100644 src/Game/AI/AI/aiEnemySyncAttack.h create mode 100644 src/Game/AI/AI/aiEnemyTargetGearSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyTargetGearSelect.h create mode 100644 src/Game/AI/AI/aiEnemyTargetInAreaSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyTargetInAreaSelect.h create mode 100644 src/Game/AI/AI/aiEnemyTargetInSightSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyTargetInSightSelect.h create mode 100644 src/Game/AI/AI/aiEnemyTimelineAI.cpp create mode 100644 src/Game/AI/AI/aiEnemyTimelineAI.h create mode 100644 src/Game/AI/AI/aiEnemyTired.cpp create mode 100644 src/Game/AI/AI/aiEnemyTired.h create mode 100644 src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.cpp create mode 100644 src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h create mode 100644 src/Game/AI/AI/aiEnemyVacuumBombSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyVacuumBombSelect.h create mode 100644 src/Game/AI/AI/aiEnemyVacuumBombSelectBase.cpp create mode 100644 src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h create mode 100644 src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.h create mode 100644 src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h create mode 100644 src/Game/AI/AI/aiEnemyWaitViewItem.cpp create mode 100644 src/Game/AI/AI/aiEnemyWaitViewItem.h create mode 100644 src/Game/AI/AI/aiEnemyWarnNoticeEndChase.cpp create mode 100644 src/Game/AI/AI/aiEnemyWarnNoticeEndChase.h create mode 100644 src/Game/AI/AI/aiEnemyWarnNoticeSelect.cpp create mode 100644 src/Game/AI/AI/aiEnemyWarnNoticeSelect.h create mode 100644 src/Game/AI/AI/aiEnemyWatchKeepingWait.cpp create mode 100644 src/Game/AI/AI/aiEnemyWatchKeepingWait.h create mode 100644 src/Game/AI/AI/aiEnterFromResetSelect.cpp create mode 100644 src/Game/AI/AI/aiEnterFromResetSelect.h create mode 100644 src/Game/AI/AI/aiEnvSeEmitPointRootAI.cpp create mode 100644 src/Game/AI/AI/aiEnvSeEmitPointRootAI.h create mode 100644 src/Game/AI/AI/aiEquipConditionSelect.cpp create mode 100644 src/Game/AI/AI/aiEquipConditionSelect.h create mode 100644 src/Game/AI/AI/aiEquipHaveSelector.cpp create mode 100644 src/Game/AI/AI/aiEquipHaveSelector.h create mode 100644 src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.cpp create mode 100644 src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.h create mode 100644 src/Game/AI/AI/aiEquipStand.cpp create mode 100644 src/Game/AI/AI/aiEquipStand.h create mode 100644 src/Game/AI/AI/aiEscapeFromTargetFront.cpp create mode 100644 src/Game/AI/AI/aiEscapeFromTargetFront.h create mode 100644 src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.cpp create mode 100644 src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h create mode 100644 src/Game/AI/AI/aiEscapeOppositeToTargetInWater.cpp create mode 100644 src/Game/AI/AI/aiEscapeOppositeToTargetInWater.h create mode 100644 src/Game/AI/AI/aiEscapeOrWaitSelect.cpp create mode 100644 src/Game/AI/AI/aiEscapeOrWaitSelect.h create mode 100644 src/Game/AI/AI/aiEternalPlayerTarget.cpp create mode 100644 src/Game/AI/AI/aiEternalPlayerTarget.h create mode 100644 src/Game/AI/AI/aiEventTagRootAI.cpp create mode 100644 src/Game/AI/AI/aiEventTagRootAI.h create mode 100644 src/Game/AI/AI/aiEventTimeRoot.cpp create mode 100644 src/Game/AI/AI/aiEventTimeRoot.h create mode 100644 src/Game/AI/AI/aiExceededImpulseCheck.cpp create mode 100644 src/Game/AI/AI/aiExceededImpulseCheck.h create mode 100644 src/Game/AI/AI/aiExplodeCheck.cpp create mode 100644 src/Game/AI/AI/aiExplodeCheck.h create mode 100644 src/Game/AI/AI/aiFirstSelect.cpp create mode 100644 src/Game/AI/AI/aiFirstSelect.h create mode 100644 src/Game/AI/AI/aiFishGoToAndNibble.cpp create mode 100644 src/Game/AI/AI/aiFishGoToAndNibble.h create mode 100644 src/Game/AI/AI/aiFishRoot.cpp create mode 100644 src/Game/AI/AI/aiFishRoot.h create mode 100644 src/Game/AI/AI/aiFishSafeReturn.cpp create mode 100644 src/Game/AI/AI/aiFishSafeReturn.h create mode 100644 src/Game/AI/AI/aiFixableLiftable.cpp create mode 100644 src/Game/AI/AI/aiFixableLiftable.h create mode 100644 src/Game/AI/AI/aiFldObjDlcHeroMapRelief.cpp create mode 100644 src/Game/AI/AI/aiFldObjDlcHeroMapRelief.h create mode 100644 src/Game/AI/AI/aiFldObjIvyBurnRoot.cpp create mode 100644 src/Game/AI/AI/aiFldObjIvyBurnRoot.h create mode 100644 src/Game/AI/AI/aiFlyInsectRoam.cpp create mode 100644 src/Game/AI/AI/aiFlyInsectRoam.h create mode 100644 src/Game/AI/AI/aiFlyMoveToTarget.cpp create mode 100644 src/Game/AI/AI/aiFlyMoveToTarget.h create mode 100644 src/Game/AI/AI/aiFlyingEnemyBackKeepMove.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemyBackKeepMove.h create mode 100644 src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h create mode 100644 src/Game/AI/AI/aiFlyingEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.h create mode 100644 src/Game/AI/AI/aiFlyingEnemyKeepMove.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemyKeepMove.h create mode 100644 src/Game/AI/AI/aiFlyingEnemySideKeepMove.cpp create mode 100644 src/Game/AI/AI/aiFlyingEnemySideKeepMove.h create mode 100644 src/Game/AI/AI/aiForSaleOrNot.cpp create mode 100644 src/Game/AI/AI/aiForSaleOrNot.h create mode 100644 src/Game/AI/AI/aiForbidDoubleNoticeSelect.cpp create mode 100644 src/Game/AI/AI/aiForbidDoubleNoticeSelect.h create mode 100644 src/Game/AI/AI/aiForestGiantBattle.cpp create mode 100644 src/Game/AI/AI/aiForestGiantBattle.h create mode 100644 src/Game/AI/AI/aiForestGiantBattleMove.cpp create mode 100644 src/Game/AI/AI/aiForestGiantBattleMove.h create mode 100644 src/Game/AI/AI/aiForestGiantChanceWait.cpp create mode 100644 src/Game/AI/AI/aiForestGiantChanceWait.h create mode 100644 src/Game/AI/AI/aiForestGiantClosestAttackSelect.cpp create mode 100644 src/Game/AI/AI/aiForestGiantClosestAttackSelect.h create mode 100644 src/Game/AI/AI/aiForestGiantFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiForestGiantFindPlayer.h create mode 100644 src/Game/AI/AI/aiForestGiantNormal.cpp create mode 100644 src/Game/AI/AI/aiForestGiantNormal.h create mode 100644 src/Game/AI/AI/aiForestGiantNoticeSound.cpp create mode 100644 src/Game/AI/AI/aiForestGiantNoticeSound.h create mode 100644 src/Game/AI/AI/aiForestGiantReaction.cpp create mode 100644 src/Game/AI/AI/aiForestGiantReaction.h create mode 100644 src/Game/AI/AI/aiForestGiantRecognizeTarget.cpp create mode 100644 src/Game/AI/AI/aiForestGiantRecognizeTarget.h create mode 100644 src/Game/AI/AI/aiForestGiantRoam.cpp create mode 100644 src/Game/AI/AI/aiForestGiantRoam.h create mode 100644 src/Game/AI/AI/aiForestGiantRoot.cpp create mode 100644 src/Game/AI/AI/aiForestGiantRoot.h create mode 100644 src/Game/AI/AI/aiForestGiantStoneShootBattle.cpp create mode 100644 src/Game/AI/AI/aiForestGiantStoneShootBattle.h create mode 100644 src/Game/AI/AI/aiFork2AI.cpp create mode 100644 src/Game/AI/AI/aiFork2AI.h create mode 100644 src/Game/AI/AI/aiFork2AIUpperLowerBody.cpp create mode 100644 src/Game/AI/AI/aiFork2AIUpperLowerBody.h create mode 100644 src/Game/AI/AI/aiFork3AI.cpp create mode 100644 src/Game/AI/AI/aiFork3AI.h create mode 100644 src/Game/AI/AI/aiFork4AI.cpp create mode 100644 src/Game/AI/AI/aiFork4AI.h create mode 100644 src/Game/AI/AI/aiFork5AI.cpp create mode 100644 src/Game/AI/AI/aiFork5AI.h create mode 100644 src/Game/AI/AI/aiFork6AI.cpp create mode 100644 src/Game/AI/AI/aiFork6AI.h create mode 100644 src/Game/AI/AI/aiForkAI.cpp create mode 100644 src/Game/AI/AI/aiForkAI.h create mode 100644 src/Game/AI/AI/aiForkActionAndJoin.cpp create mode 100644 src/Game/AI/AI/aiForkActionAndJoin.h create mode 100644 src/Game/AI/AI/aiForkBeastGanonRoot.cpp create mode 100644 src/Game/AI/AI/aiForkBeastGanonRoot.h create mode 100644 src/Game/AI/AI/aiFreezeInWaterSelect.cpp create mode 100644 src/Game/AI/AI/aiFreezeInWaterSelect.h create mode 100644 src/Game/AI/AI/aiFriendCallAction.cpp create mode 100644 src/Game/AI/AI/aiFriendCallAction.h create mode 100644 src/Game/AI/AI/aiFromPopPoolDamageSelect.cpp create mode 100644 src/Game/AI/AI/aiFromPopPoolDamageSelect.h create mode 100644 src/Game/AI/AI/aiGambleTreasureBoxRoot.cpp create mode 100644 src/Game/AI/AI/aiGambleTreasureBoxRoot.h create mode 100644 src/Game/AI/AI/aiGameDataFlagSelector.cpp create mode 100644 src/Game/AI/AI/aiGameDataFlagSelector.h create mode 100644 src/Game/AI/AI/aiGanonApproachOnFloorRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonApproachOnFloorRoot.h create mode 100644 src/Game/AI/AI/aiGanonApproachOnWallRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonApproachOnWallRoot.h create mode 100644 src/Game/AI/AI/aiGanonBattleOnFloorRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonBattleOnFloorRoot.h create mode 100644 src/Game/AI/AI/aiGanonBattleOnWallRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonBattleOnWallRoot.h create mode 100644 src/Game/AI/AI/aiGanonBattleRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonBattleRoot.h create mode 100644 src/Game/AI/AI/aiGanonBeamOnFloor.cpp create mode 100644 src/Game/AI/AI/aiGanonBeamOnFloor.h create mode 100644 src/Game/AI/AI/aiGanonBeamOnWall.cpp create mode 100644 src/Game/AI/AI/aiGanonBeamOnWall.h create mode 100644 src/Game/AI/AI/aiGanonBeastDying.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastDying.h create mode 100644 src/Game/AI/AI/aiGanonBeastMoveSelect.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastMoveSelect.h create mode 100644 src/Game/AI/AI/aiGanonBeastReaction.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastReaction.h create mode 100644 src/Game/AI/AI/aiGanonBeastRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastRoot.h create mode 100644 src/Game/AI/AI/aiGanonBeastStairState.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastStairState.h create mode 100644 src/Game/AI/AI/aiGanonBeastSufferChanger.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastSufferChanger.h create mode 100644 src/Game/AI/AI/aiGanonBeastWait.cpp create mode 100644 src/Game/AI/AI/aiGanonBeastWait.h create mode 100644 src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.cpp create mode 100644 src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h create mode 100644 src/Game/AI/AI/aiGanonFarAttackRootOnWall.cpp create mode 100644 src/Game/AI/AI/aiGanonFarAttackRootOnWall.h create mode 100644 src/Game/AI/AI/aiGanonGrudgeNormal.cpp create mode 100644 src/Game/AI/AI/aiGanonGrudgeNormal.h create mode 100644 src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.h create mode 100644 src/Game/AI/AI/aiGanonNormalRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonNormalRoot.h create mode 100644 src/Game/AI/AI/aiGanonReaction.cpp create mode 100644 src/Game/AI/AI/aiGanonReaction.h create mode 100644 src/Game/AI/AI/aiGanonRecognizeRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonRecognizeRoot.h create mode 100644 src/Game/AI/AI/aiGanonShockRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonShockRoot.h create mode 100644 src/Game/AI/AI/aiGanonStateChangeRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonStateChangeRoot.h create mode 100644 src/Game/AI/AI/aiGanonThrowActorRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonThrowActorRoot.h create mode 100644 src/Game/AI/AI/aiGanonThrowMultiActorRoot.cpp create mode 100644 src/Game/AI/AI/aiGanonThrowMultiActorRoot.h create mode 100644 src/Game/AI/AI/aiGanonWeaponAttackOnFloor.cpp create mode 100644 src/Game/AI/AI/aiGanonWeaponAttackOnFloor.h create mode 100644 src/Game/AI/AI/aiGearRangeSelect.cpp create mode 100644 src/Game/AI/AI/aiGearRangeSelect.h create mode 100644 src/Game/AI/AI/aiGelEnemyReaction.cpp create mode 100644 src/Game/AI/AI/aiGelEnemyReaction.h create mode 100644 src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.cpp create mode 100644 src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.h create mode 100644 src/Game/AI/AI/aiGerudoQueenBattle.cpp create mode 100644 src/Game/AI/AI/aiGerudoQueenBattle.h create mode 100644 src/Game/AI/AI/aiGetItemBrightBow.cpp create mode 100644 src/Game/AI/AI/aiGetItemBrightBow.h create mode 100644 src/Game/AI/AI/aiGetItemNormal.cpp create mode 100644 src/Game/AI/AI/aiGetItemNormal.h create mode 100644 src/Game/AI/AI/aiGiantArmorAsWeakPoint.cpp create mode 100644 src/Game/AI/AI/aiGiantArmorAsWeakPoint.h create mode 100644 src/Game/AI/AI/aiGiantArmorRoot.cpp create mode 100644 src/Game/AI/AI/aiGiantArmorRoot.h create mode 100644 src/Game/AI/AI/aiGiantEarthReleaseAttack.cpp create mode 100644 src/Game/AI/AI/aiGiantEarthReleaseAttack.h create mode 100644 src/Game/AI/AI/aiGiantEscapeFromDamageWater.cpp create mode 100644 src/Game/AI/AI/aiGiantEscapeFromDamageWater.h create mode 100644 src/Game/AI/AI/aiGiantNavMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiGiantNavMoveTarget.h create mode 100644 src/Game/AI/AI/aiGiantNavMoveWithFirstAction.cpp create mode 100644 src/Game/AI/AI/aiGiantNavMoveWithFirstAction.h create mode 100644 src/Game/AI/AI/aiGiantRoamSelect.cpp create mode 100644 src/Game/AI/AI/aiGiantRoamSelect.h create mode 100644 src/Game/AI/AI/aiGiantSleepNormal.cpp create mode 100644 src/Game/AI/AI/aiGiantSleepNormal.h create mode 100644 src/Game/AI/AI/aiGiantSleepReaction.cpp create mode 100644 src/Game/AI/AI/aiGiantSleepReaction.h create mode 100644 src/Game/AI/AI/aiGiantStoneShootAngrySelect.cpp create mode 100644 src/Game/AI/AI/aiGiantStoneShootAngrySelect.h create mode 100644 src/Game/AI/AI/aiGolemChemicalResetSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemChemicalResetSelect.h create mode 100644 src/Game/AI/AI/aiGolemChemicalVanishedSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemChemicalVanishedSelect.h create mode 100644 src/Game/AI/AI/aiGolemClimbedSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemClimbedSelect.h create mode 100644 src/Game/AI/AI/aiGolemClimbedTimeSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemClimbedTimeSelect.h create mode 100644 src/Game/AI/AI/aiGolemFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiGolemFindPlayer.h create mode 100644 src/Game/AI/AI/aiGolemFireREnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiGolemFireREnemyBattle.h create mode 100644 src/Game/AI/AI/aiGolemNormal.cpp create mode 100644 src/Game/AI/AI/aiGolemNormal.h create mode 100644 src/Game/AI/AI/aiGolemNoticeWorry.cpp create mode 100644 src/Game/AI/AI/aiGolemNoticeWorry.h create mode 100644 src/Game/AI/AI/aiGolemPartRoot.cpp create mode 100644 src/Game/AI/AI/aiGolemPartRoot.h create mode 100644 src/Game/AI/AI/aiGolemPartsSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemPartsSelect.h create mode 100644 src/Game/AI/AI/aiGolemRWeakPointRoot.cpp create mode 100644 src/Game/AI/AI/aiGolemRWeakPointRoot.h create mode 100644 src/Game/AI/AI/aiGolemReaction.cpp create mode 100644 src/Game/AI/AI/aiGolemReaction.h create mode 100644 src/Game/AI/AI/aiGolemRoot.cpp create mode 100644 src/Game/AI/AI/aiGolemRoot.h create mode 100644 src/Game/AI/AI/aiGolemRootBase.cpp create mode 100644 src/Game/AI/AI/aiGolemRootBase.h create mode 100644 src/Game/AI/AI/aiGolemSleepNormal.cpp create mode 100644 src/Game/AI/AI/aiGolemSleepNormal.h create mode 100644 src/Game/AI/AI/aiGolemSleepTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiGolemSleepTypeSelect.h create mode 100644 src/Game/AI/AI/aiGolemWeakPointRoot.cpp create mode 100644 src/Game/AI/AI/aiGolemWeakPointRoot.h create mode 100644 src/Game/AI/AI/aiGolfBallRoot.cpp create mode 100644 src/Game/AI/AI/aiGolfBallRoot.h create mode 100644 src/Game/AI/AI/aiGoronCannon.cpp create mode 100644 src/Game/AI/AI/aiGoronCannon.h create mode 100644 src/Game/AI/AI/aiGoronCannonBase.cpp create mode 100644 src/Game/AI/AI/aiGoronCannonBase.h create mode 100644 src/Game/AI/AI/aiGoronHeroDescendentRoot.cpp create mode 100644 src/Game/AI/AI/aiGoronHeroDescendentRoot.h create mode 100644 src/Game/AI/AI/aiGoronHeroSoulGiftRoot.cpp create mode 100644 src/Game/AI/AI/aiGoronHeroSoulGiftRoot.h create mode 100644 src/Game/AI/AI/aiGroundAngleSelect.cpp create mode 100644 src/Game/AI/AI/aiGroundAngleSelect.h create mode 100644 src/Game/AI/AI/aiGroundHitSelect.cpp create mode 100644 src/Game/AI/AI/aiGroundHitSelect.h create mode 100644 src/Game/AI/AI/aiGrudgeEyeball.cpp create mode 100644 src/Game/AI/AI/aiGrudgeEyeball.h create mode 100644 src/Game/AI/AI/aiGuardAndRevenge.cpp create mode 100644 src/Game/AI/AI/aiGuardAndRevenge.h create mode 100644 src/Game/AI/AI/aiGuardFlagSelect.cpp create mode 100644 src/Game/AI/AI/aiGuardFlagSelect.h create mode 100644 src/Game/AI/AI/aiGuardFrequencySelect.cpp create mode 100644 src/Game/AI/AI/aiGuardFrequencySelect.h create mode 100644 src/Game/AI/AI/aiGuardNearTarget.cpp create mode 100644 src/Game/AI/AI/aiGuardNearTarget.h create mode 100644 src/Game/AI/AI/aiGuardianAI.cpp create mode 100644 src/Game/AI/AI/aiGuardianAI.h create mode 100644 src/Game/AI/AI/aiGuardianBattleBeamAttack.cpp create mode 100644 src/Game/AI/AI/aiGuardianBattleBeamAttack.h create mode 100644 src/Game/AI/AI/aiGuardianBeam.cpp create mode 100644 src/Game/AI/AI/aiGuardianBeam.h create mode 100644 src/Game/AI/AI/aiGuardianBeamAttack.cpp create mode 100644 src/Game/AI/AI/aiGuardianBeamAttack.h create mode 100644 src/Game/AI/AI/aiGuardianBeamAttackBase.cpp create mode 100644 src/Game/AI/AI/aiGuardianBeamAttackBase.h create mode 100644 src/Game/AI/AI/aiGuardianBezierRailMove.cpp create mode 100644 src/Game/AI/AI/aiGuardianBezierRailMove.h create mode 100644 src/Game/AI/AI/aiGuardianChase.cpp create mode 100644 src/Game/AI/AI/aiGuardianChase.h create mode 100644 src/Game/AI/AI/aiGuardianCloseBattle.cpp create mode 100644 src/Game/AI/AI/aiGuardianCloseBattle.h create mode 100644 src/Game/AI/AI/aiGuardianDown.cpp create mode 100644 src/Game/AI/AI/aiGuardianDown.h create mode 100644 src/Game/AI/AI/aiGuardianMini2ndBattle.cpp create mode 100644 src/Game/AI/AI/aiGuardianMini2ndBattle.h create mode 100644 src/Game/AI/AI/aiGuardianMini2ndBattleAttack.cpp create mode 100644 src/Game/AI/AI/aiGuardianMini2ndBattleAttack.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBattle.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBattle.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBattleStateSelect.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBattleStateSelect.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBeam.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBeam.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttack.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttack.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttackMove.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttackMove.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamToExplosives.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBeamToExplosives.h create mode 100644 src/Game/AI/AI/aiGuardianMiniBlownOff.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniBlownOff.h create mode 100644 src/Game/AI/AI/aiGuardianMiniChangeWeapon.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniChangeWeapon.h create mode 100644 src/Game/AI/AI/aiGuardianMiniFinalBattle.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniFinalBattle.h create mode 100644 src/Game/AI/AI/aiGuardianMiniFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniFindPlayer.h create mode 100644 src/Game/AI/AI/aiGuardianMiniGroggy.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniGroggy.h create mode 100644 src/Game/AI/AI/aiGuardianMiniGuardSelect.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniGuardSelect.h create mode 100644 src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.h create mode 100644 src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.h create mode 100644 src/Game/AI/AI/aiGuardianMiniRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiGuardianMiniReaction.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniReaction.h create mode 100644 src/Game/AI/AI/aiGuardianMiniRecognizeTarget.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniRecognizeTarget.h create mode 100644 src/Game/AI/AI/aiGuardianMiniRollingAttackMove.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniRollingAttackMove.h create mode 100644 src/Game/AI/AI/aiGuardianMiniRoot.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniRoot.h create mode 100644 src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.h create mode 100644 src/Game/AI/AI/aiGuardianMiniTransformSelect.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniTransformSelect.h create mode 100644 src/Game/AI/AI/aiGuardianMiniViewWait.cpp create mode 100644 src/Game/AI/AI/aiGuardianMiniViewWait.h create mode 100644 src/Game/AI/AI/aiGuardianRoam.cpp create mode 100644 src/Game/AI/AI/aiGuardianRoam.h create mode 100644 src/Game/AI/AI/aiGuardianRoot.cpp create mode 100644 src/Game/AI/AI/aiGuardianRoot.h create mode 100644 src/Game/AI/AI/aiGuardianTargetLost.cpp create mode 100644 src/Game/AI/AI/aiGuardianTargetLost.h create mode 100644 src/Game/AI/AI/aiGuardianWait.cpp create mode 100644 src/Game/AI/AI/aiGuardianWait.h create mode 100644 src/Game/AI/AI/aiGyroActivateTerminal.cpp create mode 100644 src/Game/AI/AI/aiGyroActivateTerminal.h create mode 100644 src/Game/AI/AI/aiHangedLamp.cpp create mode 100644 src/Game/AI/AI/aiHangedLamp.h create mode 100644 src/Game/AI/AI/aiHasPreActorSelect.cpp create mode 100644 src/Game/AI/AI/aiHasPreActorSelect.h create mode 100644 src/Game/AI/AI/aiHaveNoWeaponSelector.cpp create mode 100644 src/Game/AI/AI/aiHaveNoWeaponSelector.h create mode 100644 src/Game/AI/AI/aiHeightSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiHeightSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiHeroSoulGiftRoot.cpp create mode 100644 src/Game/AI/AI/aiHeroSoulGiftRoot.h create mode 100644 src/Game/AI/AI/aiHiddenKorokRoot.cpp create mode 100644 src/Game/AI/AI/aiHiddenKorokRoot.h create mode 100644 src/Game/AI/AI/aiHiddenOctarockFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiHiddenOctarockFindPlayer.h create mode 100644 src/Game/AI/AI/aiHiddenOctarockNormal.cpp create mode 100644 src/Game/AI/AI/aiHiddenOctarockNormal.h create mode 100644 src/Game/AI/AI/aiHiddenOctarockSearchTarget.cpp create mode 100644 src/Game/AI/AI/aiHiddenOctarockSearchTarget.h create mode 100644 src/Game/AI/AI/aiHomePosDistanceSelector.cpp create mode 100644 src/Game/AI/AI/aiHomePosDistanceSelector.h create mode 100644 src/Game/AI/AI/aiHorse.cpp create mode 100644 src/Game/AI/AI/aiHorse.h create mode 100644 src/Game/AI/AI/aiHorseCheckLineOfSightSelector.cpp create mode 100644 src/Game/AI/AI/aiHorseCheckLineOfSightSelector.h create mode 100644 src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.cpp create mode 100644 src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h create mode 100644 src/Game/AI/AI/aiHorseDamageTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiHorseDamageTypeSelect.h create mode 100644 src/Game/AI/AI/aiHorseEscapeRouteRailAI.cpp create mode 100644 src/Game/AI/AI/aiHorseEscapeRouteRailAI.h create mode 100644 src/Game/AI/AI/aiHorseFollow.cpp create mode 100644 src/Game/AI/AI/aiHorseFollow.h create mode 100644 src/Game/AI/AI/aiHorseGoToEatAI.cpp create mode 100644 src/Game/AI/AI/aiHorseGoToEatAI.h create mode 100644 src/Game/AI/AI/aiHorseLoopTarget.cpp create mode 100644 src/Game/AI/AI/aiHorseLoopTarget.h create mode 100644 src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.cpp create mode 100644 src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h create mode 100644 src/Game/AI/AI/aiHorseMoveToPlayer.cpp create mode 100644 src/Game/AI/AI/aiHorseMoveToPlayer.h create mode 100644 src/Game/AI/AI/aiHorseNatureSelectAI.cpp create mode 100644 src/Game/AI/AI/aiHorseNatureSelectAI.h create mode 100644 src/Game/AI/AI/aiHorseNotRidden.cpp create mode 100644 src/Game/AI/AI/aiHorseNotRidden.h create mode 100644 src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.cpp create mode 100644 src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.h create mode 100644 src/Game/AI/AI/aiHorseReins.cpp create mode 100644 src/Game/AI/AI/aiHorseReins.h create mode 100644 src/Game/AI/AI/aiHorseRiddenAI.cpp create mode 100644 src/Game/AI/AI/aiHorseRiddenAI.h create mode 100644 src/Game/AI/AI/aiHorseRiddenByEnemyAI.cpp create mode 100644 src/Game/AI/AI/aiHorseRiddenByEnemyAI.h create mode 100644 src/Game/AI/AI/aiHorseRiddenByNPC.cpp create mode 100644 src/Game/AI/AI/aiHorseRiddenByNPC.h create mode 100644 src/Game/AI/AI/aiHorseRiddenByNPCBase.cpp create mode 100644 src/Game/AI/AI/aiHorseRiddenByNPCBase.h create mode 100644 src/Game/AI/AI/aiHorseRideChargeAttack.cpp create mode 100644 src/Game/AI/AI/aiHorseRideChargeAttack.h create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.cpp create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.h create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleMove.cpp create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleMove.h create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.cpp create mode 100644 src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.h create mode 100644 src/Game/AI/AI/aiHorseRideDamagedSelector.cpp create mode 100644 src/Game/AI/AI/aiHorseRideDamagedSelector.h create mode 100644 src/Game/AI/AI/aiHorseRideEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiHorseRideEnemyBattle.h create mode 100644 src/Game/AI/AI/aiHorseRideEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiHorseRideEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiHorseRideEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiHorseRideEnemyNormal.h create mode 100644 src/Game/AI/AI/aiHorseRideMoveTo.cpp create mode 100644 src/Game/AI/AI/aiHorseRideMoveTo.h create mode 100644 src/Game/AI/AI/aiHorseRideRangeKeepMove.cpp create mode 100644 src/Game/AI/AI/aiHorseRideRangeKeepMove.h create mode 100644 src/Game/AI/AI/aiHorseRideShooterFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiHorseRideShooterFindPlayer.h create mode 100644 src/Game/AI/AI/aiHorseRideShootingEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiHorseRideShootingEnemyBattle.h create mode 100644 src/Game/AI/AI/aiHorseRideTurn.cpp create mode 100644 src/Game/AI/AI/aiHorseRideTurn.h create mode 100644 src/Game/AI/AI/aiHorseWanderAI.cpp create mode 100644 src/Game/AI/AI/aiHorseWanderAI.h create mode 100644 src/Game/AI/AI/aiIAIAttack.cpp create mode 100644 src/Game/AI/AI/aiIAIAttack.h create mode 100644 src/Game/AI/AI/aiIbutsuWaterFallRoot.cpp create mode 100644 src/Game/AI/AI/aiIbutsuWaterFallRoot.h create mode 100644 src/Game/AI/AI/aiIceEnemyFeintBattle.cpp create mode 100644 src/Game/AI/AI/aiIceEnemyFeintBattle.h create mode 100644 src/Game/AI/AI/aiIceMakerBlock.cpp create mode 100644 src/Game/AI/AI/aiIceMakerBlock.h create mode 100644 src/Game/AI/AI/aiInDemoSelect.cpp create mode 100644 src/Game/AI/AI/aiInDemoSelect.h create mode 100644 src/Game/AI/AI/aiInForceEnemyLostAreaSelect.cpp create mode 100644 src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h create mode 100644 src/Game/AI/AI/aiInTerritorySelector.cpp create mode 100644 src/Game/AI/AI/aiInTerritorySelector.h create mode 100644 src/Game/AI/AI/aiInWaterKeepSelect.cpp create mode 100644 src/Game/AI/AI/aiInWaterKeepSelect.h create mode 100644 src/Game/AI/AI/aiInWaterSelect.cpp create mode 100644 src/Game/AI/AI/aiInWaterSelect.h create mode 100644 src/Game/AI/AI/aiIncredibleAction.cpp create mode 100644 src/Game/AI/AI/aiIncredibleAction.h create mode 100644 src/Game/AI/AI/aiInitFromInCarryBoxSelect.cpp create mode 100644 src/Game/AI/AI/aiInitFromInCarryBoxSelect.h create mode 100644 src/Game/AI/AI/aiInsectEscape.cpp create mode 100644 src/Game/AI/AI/aiInsectEscape.h create mode 100644 src/Game/AI/AI/aiInsectFairyRoot.cpp create mode 100644 src/Game/AI/AI/aiInsectFairyRoot.h create mode 100644 src/Game/AI/AI/aiInsectRoam.cpp create mode 100644 src/Game/AI/AI/aiInsectRoam.h create mode 100644 src/Game/AI/AI/aiInsectRoot.cpp create mode 100644 src/Game/AI/AI/aiInsectRoot.h create mode 100644 src/Game/AI/AI/aiInvincibleHiddenOctarock.cpp create mode 100644 src/Game/AI/AI/aiInvincibleHiddenOctarock.h create mode 100644 src/Game/AI/AI/aiInvisibleKorokRailMove.cpp create mode 100644 src/Game/AI/AI/aiInvisibleKorokRailMove.h create mode 100644 src/Game/AI/AI/aiIsPlacementAreaEnemy.cpp create mode 100644 src/Game/AI/AI/aiIsPlacementAreaEnemy.h create mode 100644 src/Game/AI/AI/aiItemAmiiboRoot.cpp create mode 100644 src/Game/AI/AI/aiItemAmiiboRoot.h create mode 100644 src/Game/AI/AI/aiItemConductor.cpp create mode 100644 src/Game/AI/AI/aiItemConductor.h create mode 100644 src/Game/AI/AI/aiItemOnTree.cpp create mode 100644 src/Game/AI/AI/aiItemOnTree.h create mode 100644 src/Game/AI/AI/aiItemRoot.cpp create mode 100644 src/Game/AI/AI/aiItemRoot.h create mode 100644 src/Game/AI/AI/aiJumpAttack.cpp create mode 100644 src/Game/AI/AI/aiJumpAttack.h create mode 100644 src/Game/AI/AI/aiJustAvoidFinishWait.cpp create mode 100644 src/Game/AI/AI/aiJustAvoidFinishWait.h create mode 100644 src/Game/AI/AI/aiKakarikoKokkoTimeline.cpp create mode 100644 src/Game/AI/AI/aiKakarikoKokkoTimeline.h create mode 100644 src/Game/AI/AI/aiKeepBackSelect.cpp create mode 100644 src/Game/AI/AI/aiKeepBackSelect.h create mode 100644 src/Game/AI/AI/aiKeeseDieSelect.cpp create mode 100644 src/Game/AI/AI/aiKeeseDieSelect.h create mode 100644 src/Game/AI/AI/aiKeeseHangOnCeil.cpp create mode 100644 src/Game/AI/AI/aiKeeseHangOnCeil.h create mode 100644 src/Game/AI/AI/aiKeeseNormal.cpp create mode 100644 src/Game/AI/AI/aiKeeseNormal.h create mode 100644 src/Game/AI/AI/aiKeeseRoam.cpp create mode 100644 src/Game/AI/AI/aiKeeseRoam.h create mode 100644 src/Game/AI/AI/aiKeeseSwarmNormal.cpp create mode 100644 src/Game/AI/AI/aiKeeseSwarmNormal.h create mode 100644 src/Game/AI/AI/aiKeeseSwarmRoam.cpp create mode 100644 src/Game/AI/AI/aiKeeseSwarmRoam.h create mode 100644 src/Game/AI/AI/aiKeyLockedShutter.cpp create mode 100644 src/Game/AI/AI/aiKeyLockedShutter.h create mode 100644 src/Game/AI/AI/aiKokkoAngry.cpp create mode 100644 src/Game/AI/AI/aiKokkoAngry.h create mode 100644 src/Game/AI/AI/aiKokkoAngryTargetSelect.cpp create mode 100644 src/Game/AI/AI/aiKokkoAngryTargetSelect.h create mode 100644 src/Game/AI/AI/aiKokkoEscapeAI.cpp create mode 100644 src/Game/AI/AI/aiKokkoEscapeAI.h create mode 100644 src/Game/AI/AI/aiKokkoRoot.cpp create mode 100644 src/Game/AI/AI/aiKokkoRoot.h create mode 100644 src/Game/AI/AI/aiKorokAnswerResponceRoot.cpp create mode 100644 src/Game/AI/AI/aiKorokAnswerResponceRoot.h create mode 100644 src/Game/AI/AI/aiKorokFlowerColorRoot.cpp create mode 100644 src/Game/AI/AI/aiKorokFlowerColorRoot.h create mode 100644 src/Game/AI/AI/aiKorokFlowerRoot.cpp create mode 100644 src/Game/AI/AI/aiKorokFlowerRoot.h create mode 100644 src/Game/AI/AI/aiKorokGoalTimerRootAI.cpp create mode 100644 src/Game/AI/AI/aiKorokGoalTimerRootAI.h create mode 100644 src/Game/AI/AI/aiKorokPinWheelRoot.cpp create mode 100644 src/Game/AI/AI/aiKorokPinWheelRoot.h create mode 100644 src/Game/AI/AI/aiKorokPotRootAI.cpp create mode 100644 src/Game/AI/AI/aiKorokPotRootAI.h create mode 100644 src/Game/AI/AI/aiKorokRailMove.cpp create mode 100644 src/Game/AI/AI/aiKorokRailMove.h create mode 100644 src/Game/AI/AI/aiKorokStartStandRoot.cpp create mode 100644 src/Game/AI/AI/aiKorokStartStandRoot.h create mode 100644 src/Game/AI/AI/aiKorokStoneLift.cpp create mode 100644 src/Game/AI/AI/aiKorokStoneLift.h create mode 100644 src/Game/AI/AI/aiKorokTargetRailMove.cpp create mode 100644 src/Game/AI/AI/aiKorokTargetRailMove.h create mode 100644 src/Game/AI/AI/aiLOSFurthestHitPointFinder.cpp create mode 100644 src/Game/AI/AI/aiLOSFurthestHitPointFinder.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindBait.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindBait.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyNormal.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyThrowWeapon.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h create mode 100644 src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.cpp create mode 100644 src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.h create mode 100644 src/Game/AI/AI/aiLandHumGourmandEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiLandHumGourmandEnemyNormal.h create mode 100644 src/Game/AI/AI/aiLandingChemicalBall.cpp create mode 100644 src/Game/AI/AI/aiLandingChemicalBall.h create mode 100644 src/Game/AI/AI/aiLargeCannonAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiLargeCannonAttackRoot.h create mode 100644 src/Game/AI/AI/aiLargeEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiLargeEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiLastAttackerSelect.cpp create mode 100644 src/Game/AI/AI/aiLastAttackerSelect.h create mode 100644 src/Game/AI/AI/aiLastAttackerSpecialActionSelect.cpp create mode 100644 src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h create mode 100644 src/Game/AI/AI/aiLastBossBeamAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossBeamAttackRoot.h create mode 100644 src/Game/AI/AI/aiLastBossDemoWarpMove.cpp create mode 100644 src/Game/AI/AI/aiLastBossDemoWarpMove.h create mode 100644 src/Game/AI/AI/aiLastBossDemoWarpRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossDemoWarpRoot.h create mode 100644 src/Game/AI/AI/aiLastBossNormalWarpRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossNormalWarpRoot.h create mode 100644 src/Game/AI/AI/aiLastBossRailWarpRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossRailWarpRoot.h create mode 100644 src/Game/AI/AI/aiLastBossRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossRoot.h create mode 100644 src/Game/AI/AI/aiLastBossShieldBash.cpp create mode 100644 src/Game/AI/AI/aiLastBossShieldBash.h create mode 100644 src/Game/AI/AI/aiLastBossShootGaleArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossShootGaleArrowRoot.h create mode 100644 src/Game/AI/AI/aiLastBossShootNormalArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossShootNormalArrowRoot.h create mode 100644 src/Game/AI/AI/aiLastBossSwordWhirlSlash.cpp create mode 100644 src/Game/AI/AI/aiLastBossSwordWhirlSlash.h create mode 100644 src/Game/AI/AI/aiLastBossThunderRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossThunderRoot.h create mode 100644 src/Game/AI/AI/aiLastBossWeaponAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiLastBossWeaponAttackRoot.h create mode 100644 src/Game/AI/AI/aiLeadToTarget.cpp create mode 100644 src/Game/AI/AI/aiLeadToTarget.h create mode 100644 src/Game/AI/AI/aiLeaderDistanceSelector.cpp create mode 100644 src/Game/AI/AI/aiLeaderDistanceSelector.h create mode 100644 src/Game/AI/AI/aiLeaveFromTarget.cpp create mode 100644 src/Game/AI/AI/aiLeaveFromTarget.h create mode 100644 src/Game/AI/AI/aiLifeChangeDemoCaller.cpp create mode 100644 src/Game/AI/AI/aiLifeChangeDemoCaller.h create mode 100644 src/Game/AI/AI/aiLifted.cpp create mode 100644 src/Game/AI/AI/aiLifted.h create mode 100644 src/Game/AI/AI/aiLimitedTimeredActorCreator.cpp create mode 100644 src/Game/AI/AI/aiLimitedTimeredActorCreator.h create mode 100644 src/Game/AI/AI/aiLineCheckTag.cpp create mode 100644 src/Game/AI/AI/aiLineCheckTag.h create mode 100644 src/Game/AI/AI/aiLinkTagCheck.cpp create mode 100644 src/Game/AI/AI/aiLinkTagCheck.h create mode 100644 src/Game/AI/AI/aiLinkageEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiLinkageEnemyNormal.h create mode 100644 src/Game/AI/AI/aiLizalfosBreathAttack.cpp create mode 100644 src/Game/AI/AI/aiLizalfosBreathAttack.h create mode 100644 src/Game/AI/AI/aiLumberjackFallenTree.cpp create mode 100644 src/Game/AI/AI/aiLumberjackFallenTree.h create mode 100644 src/Game/AI/AI/aiLumberjackTree.cpp create mode 100644 src/Game/AI/AI/aiLumberjackTree.h create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelect.cpp create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelect.h create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelectBase.cpp create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelectBase.h create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelectOnce.cpp create mode 100644 src/Game/AI/AI/aiLynelArrowAttackSelectOnce.h create mode 100644 src/Game/AI/AI/aiLynelArrowBattle.cpp create mode 100644 src/Game/AI/AI/aiLynelArrowBattle.h create mode 100644 src/Game/AI/AI/aiLynelAttackThroughMove.cpp create mode 100644 src/Game/AI/AI/aiLynelAttackThroughMove.h create mode 100644 src/Game/AI/AI/aiLynelBackStepFromTarget.cpp create mode 100644 src/Game/AI/AI/aiLynelBackStepFromTarget.h create mode 100644 src/Game/AI/AI/aiLynelBattle.cpp create mode 100644 src/Game/AI/AI/aiLynelBattle.h create mode 100644 src/Game/AI/AI/aiLynelChaseBattleMove.cpp create mode 100644 src/Game/AI/AI/aiLynelChaseBattleMove.h create mode 100644 src/Game/AI/AI/aiLynelCloseBattle.cpp create mode 100644 src/Game/AI/AI/aiLynelCloseBattle.h create mode 100644 src/Game/AI/AI/aiLynelDirSelect.cpp create mode 100644 src/Game/AI/AI/aiLynelDirSelect.h create mode 100644 src/Game/AI/AI/aiLynelDistanceLostCheck.cpp create mode 100644 src/Game/AI/AI/aiLynelDistanceLostCheck.h create mode 100644 src/Game/AI/AI/aiLynelEscapeFromTarget.cpp create mode 100644 src/Game/AI/AI/aiLynelEscapeFromTarget.h create mode 100644 src/Game/AI/AI/aiLynelFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiLynelFindPlayer.h create mode 100644 src/Game/AI/AI/aiLynelLineMoveAttack.cpp create mode 100644 src/Game/AI/AI/aiLynelLineMoveAttack.h create mode 100644 src/Game/AI/AI/aiLynelNavMoveNoStop.cpp create mode 100644 src/Game/AI/AI/aiLynelNavMoveNoStop.h create mode 100644 src/Game/AI/AI/aiLynelNavMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiLynelNavMoveTarget.h create mode 100644 src/Game/AI/AI/aiLynelNormal.cpp create mode 100644 src/Game/AI/AI/aiLynelNormal.h create mode 100644 src/Game/AI/AI/aiLynelNoticeAttacked.cpp create mode 100644 src/Game/AI/AI/aiLynelNoticeAttacked.h create mode 100644 src/Game/AI/AI/aiLynelNoticeTerror.cpp create mode 100644 src/Game/AI/AI/aiLynelNoticeTerror.h create mode 100644 src/Game/AI/AI/aiLynelOnNoNavMeshPos.cpp create mode 100644 src/Game/AI/AI/aiLynelOnNoNavMeshPos.h create mode 100644 src/Game/AI/AI/aiLynelRecognizeTarget.cpp create mode 100644 src/Game/AI/AI/aiLynelRecognizeTarget.h create mode 100644 src/Game/AI/AI/aiLynelRepeatAttack.cpp create mode 100644 src/Game/AI/AI/aiLynelRepeatAttack.h create mode 100644 src/Game/AI/AI/aiLynelRoam.cpp create mode 100644 src/Game/AI/AI/aiLynelRoam.h create mode 100644 src/Game/AI/AI/aiLynelRodeo.cpp create mode 100644 src/Game/AI/AI/aiLynelRodeo.h create mode 100644 src/Game/AI/AI/aiLynelRoot.cpp create mode 100644 src/Game/AI/AI/aiLynelRoot.h create mode 100644 src/Game/AI/AI/aiLynelTackleMove.cpp create mode 100644 src/Game/AI/AI/aiLynelTackleMove.h create mode 100644 src/Game/AI/AI/aiLynelThreeBreathAttack.cpp create mode 100644 src/Game/AI/AI/aiLynelThreeBreathAttack.h create mode 100644 src/Game/AI/AI/aiLynelWarp.cpp create mode 100644 src/Game/AI/AI/aiLynelWarp.h create mode 100644 src/Game/AI/AI/aiMagneGearRoot.cpp create mode 100644 src/Game/AI/AI/aiMagneGearRoot.h create mode 100644 src/Game/AI/AI/aiMagneGrabSelect.cpp create mode 100644 src/Game/AI/AI/aiMagneGrabSelect.h create mode 100644 src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.cpp create mode 100644 src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h create mode 100644 src/Game/AI/AI/aiMagneShaftRoot.cpp create mode 100644 src/Game/AI/AI/aiMagneShaftRoot.h create mode 100644 src/Game/AI/AI/aiMagneShaftRootBase.cpp create mode 100644 src/Game/AI/AI/aiMagneShaftRootBase.h create mode 100644 src/Game/AI/AI/aiMagneSliderBlockRootThunder.cpp create mode 100644 src/Game/AI/AI/aiMagneSliderBlockRootThunder.h create mode 100644 src/Game/AI/AI/aiMagneStickRoot.cpp create mode 100644 src/Game/AI/AI/aiMagneStickRoot.h create mode 100644 src/Game/AI/AI/aiMagnetglove.cpp create mode 100644 src/Game/AI/AI/aiMagnetglove.h create mode 100644 src/Game/AI/AI/aiMainFieldDungeonSelect.cpp create mode 100644 src/Game/AI/AI/aiMainFieldDungeonSelect.h create mode 100644 src/Game/AI/AI/aiMasquaradeSubTargetSelect.cpp create mode 100644 src/Game/AI/AI/aiMasquaradeSubTargetSelect.h create mode 100644 src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.h create mode 100644 src/Game/AI/AI/aiMasterSwordRoot.cpp create mode 100644 src/Game/AI/AI/aiMasterSwordRoot.h create mode 100644 src/Game/AI/AI/aiMergedDungeonPartsRoot.cpp create mode 100644 src/Game/AI/AI/aiMergedDungeonPartsRoot.h create mode 100644 src/Game/AI/AI/aiMessageReceiveCheck.cpp create mode 100644 src/Game/AI/AI/aiMessageReceiveCheck.h create mode 100644 src/Game/AI/AI/aiMessageReceiveCheckBasic.cpp create mode 100644 src/Game/AI/AI/aiMessageReceiveCheckBasic.h create mode 100644 src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.cpp create mode 100644 src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.h create mode 100644 src/Game/AI/AI/aiMetalObjectBuried.cpp create mode 100644 src/Game/AI/AI/aiMetalObjectBuried.h create mode 100644 src/Game/AI/AI/aiMetalObjectFixed.cpp create mode 100644 src/Game/AI/AI/aiMetalObjectFixed.h create mode 100644 src/Game/AI/AI/aiMimicCliffStopEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiMimicCliffStopEnemyNormal.h create mode 100644 src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.cpp create mode 100644 src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h create mode 100644 src/Game/AI/AI/aiMimicEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiMimicEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiMimicEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiMimicEnemyNormal.h create mode 100644 src/Game/AI/AI/aiMimicFlagSelect.cpp create mode 100644 src/Game/AI/AI/aiMimicFlagSelect.h create mode 100644 src/Game/AI/AI/aiMimicryResetCheck.cpp create mode 100644 src/Game/AI/AI/aiMimicryResetCheck.h create mode 100644 src/Game/AI/AI/aiMiniBeamAttack.cpp create mode 100644 src/Game/AI/AI/aiMiniBeamAttack.h create mode 100644 src/Game/AI/AI/aiMiniGolemLifted.cpp create mode 100644 src/Game/AI/AI/aiMiniGolemLifted.h create mode 100644 src/Game/AI/AI/aiMiniGolemReaction.cpp create mode 100644 src/Game/AI/AI/aiMiniGolemReaction.h create mode 100644 src/Game/AI/AI/aiMiniGolemRoot.cpp create mode 100644 src/Game/AI/AI/aiMiniGolemRoot.h create mode 100644 src/Game/AI/AI/aiMiniGolemSleep.cpp create mode 100644 src/Game/AI/AI/aiMiniGolemSleep.h create mode 100644 src/Game/AI/AI/aiMoonAI.cpp create mode 100644 src/Game/AI/AI/aiMoonAI.h create mode 100644 src/Game/AI/AI/aiMoonNameTag.cpp create mode 100644 src/Game/AI/AI/aiMoonNameTag.h create mode 100644 src/Game/AI/AI/aiMoriblinSpearBattle.cpp create mode 100644 src/Game/AI/AI/aiMoriblinSpearBattle.h create mode 100644 src/Game/AI/AI/aiMoriblinSpearNearBattle.cpp create mode 100644 src/Game/AI/AI/aiMoriblinSpearNearBattle.h create mode 100644 src/Game/AI/AI/aiMoriblinUnarmedBattle.cpp create mode 100644 src/Game/AI/AI/aiMoriblinUnarmedBattle.h create mode 100644 src/Game/AI/AI/aiMotorcycleRoot.cpp create mode 100644 src/Game/AI/AI/aiMotorcycleRoot.h create mode 100644 src/Game/AI/AI/aiMotorcycleRootBase.cpp create mode 100644 src/Game/AI/AI/aiMotorcycleRootBase.h create mode 100644 src/Game/AI/AI/aiMoveAndFreeFallGondola.cpp create mode 100644 src/Game/AI/AI/aiMoveAndFreeFallGondola.h create mode 100644 src/Game/AI/AI/aiMoveAroundTarget.cpp create mode 100644 src/Game/AI/AI/aiMoveAroundTarget.h create mode 100644 src/Game/AI/AI/aiMoveLOSFeedback.cpp create mode 100644 src/Game/AI/AI/aiMoveLOSFeedback.h create mode 100644 src/Game/AI/AI/aiMoveRemainsElectric.cpp create mode 100644 src/Game/AI/AI/aiMoveRemainsElectric.h create mode 100644 src/Game/AI/AI/aiMoveToCameraFrontXZ.cpp create mode 100644 src/Game/AI/AI/aiMoveToCameraFrontXZ.h create mode 100644 src/Game/AI/AI/aiMoveToTargetCollisionFeedback.cpp create mode 100644 src/Game/AI/AI/aiMoveToTargetCollisionFeedback.h create mode 100644 src/Game/AI/AI/aiNPCAlert.cpp create mode 100644 src/Game/AI/AI/aiNPCAlert.h create mode 100644 src/Game/AI/AI/aiNPCArtistRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCArtistRoot.h create mode 100644 src/Game/AI/AI/aiNPCAttack.cpp create mode 100644 src/Game/AI/AI/aiNPCAttack.h create mode 100644 src/Game/AI/AI/aiNPCAttentionAI.cpp create mode 100644 src/Game/AI/AI/aiNPCAttentionAI.h create mode 100644 src/Game/AI/AI/aiNPCAvoid.cpp create mode 100644 src/Game/AI/AI/aiNPCAvoid.h create mode 100644 src/Game/AI/AI/aiNPCChasePlayerBlueFire.cpp create mode 100644 src/Game/AI/AI/aiNPCChasePlayerBlueFire.h create mode 100644 src/Game/AI/AI/aiNPCClerkRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCClerkRoot.h create mode 100644 src/Game/AI/AI/aiNPCConfront.cpp create mode 100644 src/Game/AI/AI/aiNPCConfront.h create mode 100644 src/Game/AI/AI/aiNPCConfrontEnemy.cpp create mode 100644 src/Game/AI/AI/aiNPCConfrontEnemy.h create mode 100644 src/Game/AI/AI/aiNPCGerudoQueenRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCGerudoQueenRoot.h create mode 100644 src/Game/AI/AI/aiNPCHeartsRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCHeartsRoot.h create mode 100644 src/Game/AI/AI/aiNPCHorseRide.cpp create mode 100644 src/Game/AI/AI/aiNPCHorseRide.h create mode 100644 src/Game/AI/AI/aiNPCHorseRideWait.cpp create mode 100644 src/Game/AI/AI/aiNPCHorseRideWait.h create mode 100644 src/Game/AI/AI/aiNPCMamonoShopRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCMamonoShopRoot.h create mode 100644 src/Game/AI/AI/aiNPCMove.cpp create mode 100644 src/Game/AI/AI/aiNPCMove.h create mode 100644 src/Game/AI/AI/aiNPCMoveToRailPoint.cpp create mode 100644 src/Game/AI/AI/aiNPCMoveToRailPoint.h create mode 100644 src/Game/AI/AI/aiNPCReaction.cpp create mode 100644 src/Game/AI/AI/aiNPCReaction.h create mode 100644 src/Game/AI/AI/aiNPCReturnAnchor.cpp create mode 100644 src/Game/AI/AI/aiNPCReturnAnchor.h create mode 100644 src/Game/AI/AI/aiNPCReturnRestPosRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCReturnRestPosRoot.h create mode 100644 src/Game/AI/AI/aiNPCRoam.cpp create mode 100644 src/Game/AI/AI/aiNPCRoam.h create mode 100644 src/Game/AI/AI/aiNPCRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCRoot.h create mode 100644 src/Game/AI/AI/aiNPCRunaway.cpp create mode 100644 src/Game/AI/AI/aiNPCRunaway.h create mode 100644 src/Game/AI/AI/aiNPCSearch.cpp create mode 100644 src/Game/AI/AI/aiNPCSearch.h create mode 100644 src/Game/AI/AI/aiNPCSurprised.cpp create mode 100644 src/Game/AI/AI/aiNPCSurprised.h create mode 100644 src/Game/AI/AI/aiNPCSuspend.cpp create mode 100644 src/Game/AI/AI/aiNPCSuspend.h create mode 100644 src/Game/AI/AI/aiNPCTalkBalloon.cpp create mode 100644 src/Game/AI/AI/aiNPCTalkBalloon.h create mode 100644 src/Game/AI/AI/aiNPCTerrorAI.cpp create mode 100644 src/Game/AI/AI/aiNPCTerrorAI.h create mode 100644 src/Game/AI/AI/aiNPCTimeline.cpp create mode 100644 src/Game/AI/AI/aiNPCTimeline.h create mode 100644 src/Game/AI/AI/aiNPCTravel.cpp create mode 100644 src/Game/AI/AI/aiNPCTravel.h create mode 100644 src/Game/AI/AI/aiNPCTravelBase.cpp create mode 100644 src/Game/AI/AI/aiNPCTravelBase.h create mode 100644 src/Game/AI/AI/aiNPCTravelerRoot.cpp create mode 100644 src/Game/AI/AI/aiNPCTravelerRoot.h create mode 100644 src/Game/AI/AI/aiNPCWander.cpp create mode 100644 src/Game/AI/AI/aiNPCWander.h create mode 100644 src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.cpp create mode 100644 src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h create mode 100644 src/Game/AI/AI/aiNavMoveNearTarget.cpp create mode 100644 src/Game/AI/AI/aiNavMoveNearTarget.h create mode 100644 src/Game/AI/AI/aiNavMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiNavMoveTarget.h create mode 100644 src/Game/AI/AI/aiNavMoveTargetClosestPoint.cpp create mode 100644 src/Game/AI/AI/aiNavMoveTargetClosestPoint.h create mode 100644 src/Game/AI/AI/aiNavMoveTargetWithJumpWater.cpp create mode 100644 src/Game/AI/AI/aiNavMoveTargetWithJumpWater.h create mode 100644 src/Game/AI/AI/aiNavViewMove.cpp create mode 100644 src/Game/AI/AI/aiNavViewMove.h create mode 100644 src/Game/AI/AI/aiNearCreateAppearTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiNearCreateAppearTypeSelect.h create mode 100644 src/Game/AI/AI/aiNearCreateSelect.cpp create mode 100644 src/Game/AI/AI/aiNearCreateSelect.h create mode 100644 src/Game/AI/AI/aiNewMannequinRoot.cpp create mode 100644 src/Game/AI/AI/aiNewMannequinRoot.h create mode 100644 src/Game/AI/AI/aiNonPlayerHorseRide.cpp create mode 100644 src/Game/AI/AI/aiNonPlayerHorseRide.h create mode 100644 src/Game/AI/AI/aiNormalHumanEquipableShield.cpp create mode 100644 src/Game/AI/AI/aiNormalHumanEquipableShield.h create mode 100644 src/Game/AI/AI/aiNoticePartsRangeSelector.cpp create mode 100644 src/Game/AI/AI/aiNoticePartsRangeSelector.h create mode 100644 src/Game/AI/AI/aiNpcDemoRoot.cpp create mode 100644 src/Game/AI/AI/aiNpcDemoRoot.h create mode 100644 src/Game/AI/AI/aiNpcMoveToAnchor.cpp create mode 100644 src/Game/AI/AI/aiNpcMoveToAnchor.h create mode 100644 src/Game/AI/AI/aiNpcTebaRoot.cpp create mode 100644 src/Game/AI/AI/aiNpcTebaRoot.h create mode 100644 src/Game/AI/AI/aiNpcTebaTrainingRoot.cpp create mode 100644 src/Game/AI/AI/aiNpcTebaTrainingRoot.h create mode 100644 src/Game/AI/AI/aiNushiEscapeSelector.cpp create mode 100644 src/Game/AI/AI/aiNushiEscapeSelector.h create mode 100644 src/Game/AI/AI/aiNushiWarp.cpp create mode 100644 src/Game/AI/AI/aiNushiWarp.h create mode 100644 src/Game/AI/AI/aiOctarockBattle.cpp create mode 100644 src/Game/AI/AI/aiOctarockBattle.h create mode 100644 src/Game/AI/AI/aiOctarockEscape.cpp create mode 100644 src/Game/AI/AI/aiOctarockEscape.h create mode 100644 src/Game/AI/AI/aiOctarockHideEscape.cpp create mode 100644 src/Game/AI/AI/aiOctarockHideEscape.h create mode 100644 src/Game/AI/AI/aiOctarockOptionRoot.cpp create mode 100644 src/Game/AI/AI/aiOctarockOptionRoot.h create mode 100644 src/Game/AI/AI/aiOctarockReaction.cpp create mode 100644 src/Game/AI/AI/aiOctarockReaction.h create mode 100644 src/Game/AI/AI/aiOctarockRoot.cpp create mode 100644 src/Game/AI/AI/aiOctarockRoot.h create mode 100644 src/Game/AI/AI/aiOctarockRootBase.cpp create mode 100644 src/Game/AI/AI/aiOctarockRootBase.h create mode 100644 src/Game/AI/AI/aiOctarockServiceHideWait.cpp create mode 100644 src/Game/AI/AI/aiOctarockServiceHideWait.h create mode 100644 src/Game/AI/AI/aiOctarockWaterWait.cpp create mode 100644 src/Game/AI/AI/aiOctarockWaterWait.h create mode 100644 src/Game/AI/AI/aiOnCliffEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiOnCliffEnemyBattle.h create mode 100644 src/Game/AI/AI/aiOnCliffSurfaceSelect.cpp create mode 100644 src/Game/AI/AI/aiOnCliffSurfaceSelect.h create mode 100644 src/Game/AI/AI/aiOnCliffViewWait.cpp create mode 100644 src/Game/AI/AI/aiOnCliffViewWait.h create mode 100644 src/Game/AI/AI/aiOnEnterEventModeSelect.cpp create mode 100644 src/Game/AI/AI/aiOnEnterEventModeSelect.h create mode 100644 src/Game/AI/AI/aiOnNavFaceSelect.cpp create mode 100644 src/Game/AI/AI/aiOnNavFaceSelect.h create mode 100644 src/Game/AI/AI/aiOnRagdollSelect.cpp create mode 100644 src/Game/AI/AI/aiOnRagdollSelect.h create mode 100644 src/Game/AI/AI/aiOneMemoryMagicBattle.cpp create mode 100644 src/Game/AI/AI/aiOneMemoryMagicBattle.h create mode 100644 src/Game/AI/AI/aiOneMemoryMagicBattleBase.cpp create mode 100644 src/Game/AI/AI/aiOneMemoryMagicBattleBase.h create mode 100644 src/Game/AI/AI/aiOptionalWeaponAI.cpp create mode 100644 src/Game/AI/AI/aiOptionalWeaponAI.h create mode 100644 src/Game/AI/AI/aiOutOfScreen.cpp create mode 100644 src/Game/AI/AI/aiOutOfScreen.h create mode 100644 src/Game/AI/AI/aiPartHaveSelect.cpp create mode 100644 src/Game/AI/AI/aiPartHaveSelect.h create mode 100644 src/Game/AI/AI/aiPartsNoticeSelect.cpp create mode 100644 src/Game/AI/AI/aiPartsNoticeSelect.h create mode 100644 src/Game/AI/AI/aiPartsSleepSelect.cpp create mode 100644 src/Game/AI/AI/aiPartsSleepSelect.h create mode 100644 src/Game/AI/AI/aiPauseMenuPlayerRoot.cpp create mode 100644 src/Game/AI/AI/aiPauseMenuPlayerRoot.h create mode 100644 src/Game/AI/AI/aiPickShootItemRoot.cpp create mode 100644 src/Game/AI/AI/aiPickShootItemRoot.h create mode 100644 src/Game/AI/AI/aiPillarCrack.cpp create mode 100644 src/Game/AI/AI/aiPillarCrack.h create mode 100644 src/Game/AI/AI/aiPipeDrawing.cpp create mode 100644 src/Game/AI/AI/aiPipeDrawing.h create mode 100644 src/Game/AI/AI/aiPlayerAttack.cpp create mode 100644 src/Game/AI/AI/aiPlayerAttack.h create mode 100644 src/Game/AI/AI/aiPlayerBarrierBlow.cpp create mode 100644 src/Game/AI/AI/aiPlayerBarrierBlow.h create mode 100644 src/Game/AI/AI/aiPlayerBeetle.cpp create mode 100644 src/Game/AI/AI/aiPlayerBeetle.h create mode 100644 src/Game/AI/AI/aiPlayerCamera.cpp create mode 100644 src/Game/AI/AI/aiPlayerCamera.h create mode 100644 src/Game/AI/AI/aiPlayerCaught.cpp create mode 100644 src/Game/AI/AI/aiPlayerCaught.h create mode 100644 src/Game/AI/AI/aiPlayerClimb.cpp create mode 100644 src/Game/AI/AI/aiPlayerClimb.h create mode 100644 src/Game/AI/AI/aiPlayerCutJump.cpp create mode 100644 src/Game/AI/AI/aiPlayerCutJump.h create mode 100644 src/Game/AI/AI/aiPlayerDead.cpp create mode 100644 src/Game/AI/AI/aiPlayerDead.h create mode 100644 src/Game/AI/AI/aiPlayerDemoRoot.cpp create mode 100644 src/Game/AI/AI/aiPlayerDemoRoot.h create mode 100644 src/Game/AI/AI/aiPlayerGrab.cpp create mode 100644 src/Game/AI/AI/aiPlayerGrab.h create mode 100644 src/Game/AI/AI/aiPlayerItem.cpp create mode 100644 src/Game/AI/AI/aiPlayerItem.h create mode 100644 src/Game/AI/AI/aiPlayerLadder.cpp create mode 100644 src/Game/AI/AI/aiPlayerLadder.h create mode 100644 src/Game/AI/AI/aiPlayerNavDestinationMove.cpp create mode 100644 src/Game/AI/AI/aiPlayerNavDestinationMove.h create mode 100644 src/Game/AI/AI/aiPlayerNormal.cpp create mode 100644 src/Game/AI/AI/aiPlayerNormal.h create mode 100644 src/Game/AI/AI/aiPlayerRideHorse.cpp create mode 100644 src/Game/AI/AI/aiPlayerRideHorse.h create mode 100644 src/Game/AI/AI/aiPlayerRoot.cpp create mode 100644 src/Game/AI/AI/aiPlayerRoot.h create mode 100644 src/Game/AI/AI/aiPlayerSetTarget.cpp create mode 100644 src/Game/AI/AI/aiPlayerSetTarget.h create mode 100644 src/Game/AI/AI/aiPlayerSit.cpp create mode 100644 src/Game/AI/AI/aiPlayerSit.h create mode 100644 src/Game/AI/AI/aiPlayerSwim.cpp create mode 100644 src/Game/AI/AI/aiPlayerSwim.h create mode 100644 src/Game/AI/AI/aiPlayerWaterFall.cpp create mode 100644 src/Game/AI/AI/aiPlayerWaterFall.h create mode 100644 src/Game/AI/AI/aiPlayerZoraRide.cpp create mode 100644 src/Game/AI/AI/aiPlayerZoraRide.h create mode 100644 src/Game/AI/AI/aiPointWindTagRoot.cpp create mode 100644 src/Game/AI/AI/aiPointWindTagRoot.h create mode 100644 src/Game/AI/AI/aiPracticeGuardianMiniNormal.cpp create mode 100644 src/Game/AI/AI/aiPracticeGuardianMiniNormal.h create mode 100644 src/Game/AI/AI/aiPreSleepCheck.cpp create mode 100644 src/Game/AI/AI/aiPreSleepCheck.h create mode 100644 src/Game/AI/AI/aiPrevASEndSeq.cpp create mode 100644 src/Game/AI/AI/aiPrevASEndSeq.h create mode 100644 src/Game/AI/AI/aiPrevASOR2SelectTwo.cpp create mode 100644 src/Game/AI/AI/aiPrevASOR2SelectTwo.h create mode 100644 src/Game/AI/AI/aiPrevASSelect.cpp create mode 100644 src/Game/AI/AI/aiPrevASSelect.h create mode 100644 src/Game/AI/AI/aiPrevASSkipSeq.cpp create mode 100644 src/Game/AI/AI/aiPrevASSkipSeq.h create mode 100644 src/Game/AI/AI/aiPrevSomeASSelect.cpp create mode 100644 src/Game/AI/AI/aiPrevSomeASSelect.h create mode 100644 src/Game/AI/AI/aiPreyChemicalDeadReaction.cpp create mode 100644 src/Game/AI/AI/aiPreyChemicalDeadReaction.h create mode 100644 src/Game/AI/AI/aiPreyDead.cpp create mode 100644 src/Game/AI/AI/aiPreyDead.h create mode 100644 src/Game/AI/AI/aiPreyDeadCauseSelector.cpp create mode 100644 src/Game/AI/AI/aiPreyDeadCauseSelector.h create mode 100644 src/Game/AI/AI/aiPreyDefWanderAI.cpp create mode 100644 src/Game/AI/AI/aiPreyDefWanderAI.h create mode 100644 src/Game/AI/AI/aiPreyDropItemRoot.cpp create mode 100644 src/Game/AI/AI/aiPreyDropItemRoot.h create mode 100644 src/Game/AI/AI/aiPreyLookAtTarget.cpp create mode 100644 src/Game/AI/AI/aiPreyLookAtTarget.h create mode 100644 src/Game/AI/AI/aiPreyNormal.cpp create mode 100644 src/Game/AI/AI/aiPreyNormal.h create mode 100644 src/Game/AI/AI/aiPreyReaction.cpp create mode 100644 src/Game/AI/AI/aiPreyReaction.h create mode 100644 src/Game/AI/AI/aiPreyRoot.cpp create mode 100644 src/Game/AI/AI/aiPreyRoot.h create mode 100644 src/Game/AI/AI/aiPreyStun.cpp create mode 100644 src/Game/AI/AI/aiPreyStun.h create mode 100644 src/Game/AI/AI/aiPriestBossActorCloneRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorCloneRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossActorEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorEnemyRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossActorGiantRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorGiantRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossActorNormalMode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorNormalMode.h create mode 100644 src/Game/AI/AI/aiPriestBossActorNormalRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorNormalRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h create mode 100644 src/Game/AI/AI/aiPriestBossActorRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossActorRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossAfterImageRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossAfterImageRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossAttackGrave.cpp create mode 100644 src/Game/AI/AI/aiPriestBossAttackGrave.h create mode 100644 src/Game/AI/AI/aiPriestBossBananaMode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossBananaMode.h create mode 100644 src/Game/AI/AI/aiPriestBossBeamExplode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossBeamExplode.h create mode 100644 src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.cpp create mode 100644 src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.h create mode 100644 src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.cpp create mode 100644 src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.h create mode 100644 src/Game/AI/AI/aiPriestBossBowEquiped.cpp create mode 100644 src/Game/AI/AI/aiPriestBossBowEquiped.h create mode 100644 src/Game/AI/AI/aiPriestBossCircleFormationRush.cpp create mode 100644 src/Game/AI/AI/aiPriestBossCircleFormationRush.h create mode 100644 src/Game/AI/AI/aiPriestBossCircleFormationShoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossCircleFormationShoot.h create mode 100644 src/Game/AI/AI/aiPriestBossCloneBananaMode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossCloneBananaMode.h create mode 100644 src/Game/AI/AI/aiPriestBossCloneBulletRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossCloneBulletRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossDamageTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiPriestBossDamageTypeSelect.h create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeam.cpp create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeam.h create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamFourth.cpp create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamFourth.h create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamStandAim.cpp create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamStandAim.h create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamThird.cpp create mode 100644 src/Game/AI/AI/aiPriestBossEyeBeamThird.h create mode 100644 src/Game/AI/AI/aiPriestBossFastWarpAttack.cpp create mode 100644 src/Game/AI/AI/aiPriestBossFastWarpAttack.h create mode 100644 src/Game/AI/AI/aiPriestBossFormation.cpp create mode 100644 src/Game/AI/AI/aiPriestBossFormation.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantDeadSelector.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantDeadSelector.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantDownSeq.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantDownSeq.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantEnemyRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantReaction.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantReaction.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantStageRotRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantStageRotRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossGiantStageRotate.cpp create mode 100644 src/Game/AI/AI/aiPriestBossGiantStageRotate.h create mode 100644 src/Game/AI/AI/aiPriestBossIAIAttack.cpp create mode 100644 src/Game/AI/AI/aiPriestBossIAIAttack.h create mode 100644 src/Game/AI/AI/aiPriestBossIronBall.cpp create mode 100644 src/Game/AI/AI/aiPriestBossIronBall.h create mode 100644 src/Game/AI/AI/aiPriestBossIronBallRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossIronBallRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossIronBallStageRotate.cpp create mode 100644 src/Game/AI/AI/aiPriestBossIronBallStageRotate.h create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationAppear.cpp create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationAppear.h create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationFall.cpp create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationFall.h create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationRush.cpp create mode 100644 src/Game/AI/AI/aiPriestBossLineFormationRush.h create mode 100644 src/Game/AI/AI/aiPriestBossMakeClone.cpp create mode 100644 src/Game/AI/AI/aiPriestBossMakeClone.h create mode 100644 src/Game/AI/AI/aiPriestBossMeta.cpp create mode 100644 src/Game/AI/AI/aiPriestBossMeta.h create mode 100644 src/Game/AI/AI/aiPriestBossMetaAIRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossMetaAIRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossMode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossMode.h create mode 100644 src/Game/AI/AI/aiPriestBossNormalMoveSelector.cpp create mode 100644 src/Game/AI/AI/aiPriestBossNormalMoveSelector.h create mode 100644 src/Game/AI/AI/aiPriestBossNormalQuickRecover.cpp create mode 100644 src/Game/AI/AI/aiPriestBossNormalQuickRecover.h create mode 100644 src/Game/AI/AI/aiPriestBossNormalReaction.cpp create mode 100644 src/Game/AI/AI/aiPriestBossNormalReaction.h create mode 100644 src/Game/AI/AI/aiPriestBossPhase.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhase.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFinish.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFinish.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFirst.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFirst.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFourth.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseFourth.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseSecond.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseSecond.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseSelector.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseSelector.h create mode 100644 src/Game/AI/AI/aiPriestBossPhaseThird.cpp create mode 100644 src/Game/AI/AI/aiPriestBossPhaseThird.h create mode 100644 src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h create mode 100644 src/Game/AI/AI/aiPriestBossShadowCloneThrow.cpp create mode 100644 src/Game/AI/AI/aiPriestBossShadowCloneThrow.h create mode 100644 src/Game/AI/AI/aiPriestBossShadowClonesReaction.cpp create mode 100644 src/Game/AI/AI/aiPriestBossShadowClonesReaction.h create mode 100644 src/Game/AI/AI/aiPriestBossSlowWarpMove.cpp create mode 100644 src/Game/AI/AI/aiPriestBossSlowWarpMove.h create mode 100644 src/Game/AI/AI/aiPriestBossStageRotationSelector.cpp create mode 100644 src/Game/AI/AI/aiPriestBossStageRotationSelector.h create mode 100644 src/Game/AI/AI/aiPriestBossSynchroMode.cpp create mode 100644 src/Game/AI/AI/aiPriestBossSynchroMode.h create mode 100644 src/Game/AI/AI/aiPriestBossWalkAttack.cpp create mode 100644 src/Game/AI/AI/aiPriestBossWalkAttack.h create mode 100644 src/Game/AI/AI/aiPriestBossWarpToSafePos.cpp create mode 100644 src/Game/AI/AI/aiPriestBossWarpToSafePos.h create mode 100644 src/Game/AI/AI/aiPriestIronBallAttack.cpp create mode 100644 src/Game/AI/AI/aiPriestIronBallAttack.h create mode 100644 src/Game/AI/AI/aiPullOutTree.cpp create mode 100644 src/Game/AI/AI/aiPullOutTree.h create mode 100644 src/Game/AI/AI/aiRailMove.cpp create mode 100644 src/Game/AI/AI/aiRailMove.h create mode 100644 src/Game/AI/AI/aiRailMoveObject.cpp create mode 100644 src/Game/AI/AI/aiRailMoveObject.h create mode 100644 src/Game/AI/AI/aiRailMoveObjectOneWay.cpp create mode 100644 src/Game/AI/AI/aiRailMoveObjectOneWay.h create mode 100644 src/Game/AI/AI/aiRailMoveRandomIgnoreStop.cpp create mode 100644 src/Game/AI/AI/aiRailMoveRandomIgnoreStop.h create mode 100644 src/Game/AI/AI/aiRailMoveRemains.cpp create mode 100644 src/Game/AI/AI/aiRailMoveRemains.h create mode 100644 src/Game/AI/AI/aiRailMoveRemainsBGCamera.cpp create mode 100644 src/Game/AI/AI/aiRailMoveRemainsBGCamera.h create mode 100644 src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.cpp create mode 100644 src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h create mode 100644 src/Game/AI/AI/aiRailMoveWithClose.cpp create mode 100644 src/Game/AI/AI/aiRailMoveWithClose.h create mode 100644 src/Game/AI/AI/aiRandomSelectThreeAction.cpp create mode 100644 src/Game/AI/AI/aiRandomSelectThreeAction.h create mode 100644 src/Game/AI/AI/aiRandomSelectThreeActionBase.cpp create mode 100644 src/Game/AI/AI/aiRandomSelectThreeActionBase.h create mode 100644 src/Game/AI/AI/aiRandomSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiRandomSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiRandomSelectTwoActionBase.cpp create mode 100644 src/Game/AI/AI/aiRandomSelectTwoActionBase.h create mode 100644 src/Game/AI/AI/aiRangeAttackSelect.cpp create mode 100644 src/Game/AI/AI/aiRangeAttackSelect.h create mode 100644 src/Game/AI/AI/aiRangeCheckSeqTwoAction.cpp create mode 100644 src/Game/AI/AI/aiRangeCheckSeqTwoAction.h create mode 100644 src/Game/AI/AI/aiRangeHeightSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiRangeHeightSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiRangeLineReachSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiRangeLineReachSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiRangeObstacleCheck.cpp create mode 100644 src/Game/AI/AI/aiRangeObstacleCheck.h create mode 100644 src/Game/AI/AI/aiRangeSelect.cpp create mode 100644 src/Game/AI/AI/aiRangeSelect.h create mode 100644 src/Game/AI/AI/aiRangeSelectAction.cpp create mode 100644 src/Game/AI/AI/aiRangeSelectAction.h create mode 100644 src/Game/AI/AI/aiRangeSelectThreeAction.cpp create mode 100644 src/Game/AI/AI/aiRangeSelectThreeAction.h create mode 100644 src/Game/AI/AI/aiRangeSelectTwoAction.cpp create mode 100644 src/Game/AI/AI/aiRangeSelectTwoAction.h create mode 100644 src/Game/AI/AI/aiRapidAttackAllowSelect.cpp create mode 100644 src/Game/AI/AI/aiRapidAttackAllowSelect.h create mode 100644 src/Game/AI/AI/aiReduceDistanceToTargetPos.cpp create mode 100644 src/Game/AI/AI/aiReduceDistanceToTargetPos.h create mode 100644 src/Game/AI/AI/aiReferenceNPCViewWithDynAS.cpp create mode 100644 src/Game/AI/AI/aiReferenceNPCViewWithDynAS.h create mode 100644 src/Game/AI/AI/aiReflectableBulletThrown.cpp create mode 100644 src/Game/AI/AI/aiReflectableBulletThrown.h create mode 100644 src/Game/AI/AI/aiReflectableEscape.cpp create mode 100644 src/Game/AI/AI/aiReflectableEscape.h create mode 100644 src/Game/AI/AI/aiReflectableIgnitedThrown.cpp create mode 100644 src/Game/AI/AI/aiReflectableIgnitedThrown.h create mode 100644 src/Game/AI/AI/aiReflectableThrown.cpp create mode 100644 src/Game/AI/AI/aiReflectableThrown.h create mode 100644 src/Game/AI/AI/aiRegistedActorNumTwoSelect.cpp create mode 100644 src/Game/AI/AI/aiRegistedActorNumTwoSelect.h create mode 100644 src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.cpp create mode 100644 src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h create mode 100644 src/Game/AI/AI/aiRemainElectricCannonBeamAttack.cpp create mode 100644 src/Game/AI/AI/aiRemainElectricCannonBeamAttack.h create mode 100644 src/Game/AI/AI/aiRemainElectricCannonRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainElectricCannonRoot.h create mode 100644 src/Game/AI/AI/aiRemainElectricCannonRootBase.cpp create mode 100644 src/Game/AI/AI/aiRemainElectricCannonRootBase.h create mode 100644 src/Game/AI/AI/aiRemainsElectricBGCamera.cpp create mode 100644 src/Game/AI/AI/aiRemainsElectricBGCamera.h create mode 100644 src/Game/AI/AI/aiRemainsElectricRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsElectricRoot.h create mode 100644 src/Game/AI/AI/aiRemainsFireBattleMove.cpp create mode 100644 src/Game/AI/AI/aiRemainsFireBattleMove.h create mode 100644 src/Game/AI/AI/aiRemainsFireBattleStepSelector.cpp create mode 100644 src/Game/AI/AI/aiRemainsFireBattleStepSelector.h create mode 100644 src/Game/AI/AI/aiRemainsFireDroneNormal.cpp create mode 100644 src/Game/AI/AI/aiRemainsFireDroneNormal.h create mode 100644 src/Game/AI/AI/aiRemainsFireRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsFireRoot.h create mode 100644 src/Game/AI/AI/aiRemainsLithograph.cpp create mode 100644 src/Game/AI/AI/aiRemainsLithograph.h create mode 100644 src/Game/AI/AI/aiRemainsRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWaterBattleRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterBattleRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWaterBulletController.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterBulletController.h create mode 100644 src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWaterNormal.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterNormal.h create mode 100644 src/Game/AI/AI/aiRemainsWaterRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWaterWeakPointRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWaterWeakPointRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWindBatteryAttack.cpp create mode 100644 src/Game/AI/AI/aiRemainsWindBatteryAttack.h create mode 100644 src/Game/AI/AI/aiRemainsWindBatteryRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWindBatteryRoot.h create mode 100644 src/Game/AI/AI/aiRemainsWindRoot.cpp create mode 100644 src/Game/AI/AI/aiRemainsWindRoot.h create mode 100644 src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.h create mode 100644 src/Game/AI/AI/aiRemoteBomb.cpp create mode 100644 src/Game/AI/AI/aiRemoteBomb.h create mode 100644 src/Game/AI/AI/aiRepeatByLargeDamage.cpp create mode 100644 src/Game/AI/AI/aiRepeatByLargeDamage.h create mode 100644 src/Game/AI/AI/aiRestLifeSelect.cpp create mode 100644 src/Game/AI/AI/aiRestLifeSelect.h create mode 100644 src/Game/AI/AI/aiRestreintTired.cpp create mode 100644 src/Game/AI/AI/aiRestreintTired.h create mode 100644 src/Game/AI/AI/aiReturnFromReactionSelect.cpp create mode 100644 src/Game/AI/AI/aiReturnFromReactionSelect.h create mode 100644 src/Game/AI/AI/aiReuseBulletPartsRoot.cpp create mode 100644 src/Game/AI/AI/aiReuseBulletPartsRoot.h create mode 100644 src/Game/AI/AI/aiRideHorseAI.cpp create mode 100644 src/Game/AI/AI/aiRideHorseAI.h create mode 100644 src/Game/AI/AI/aiRitoHeroSoulGiftRoot.cpp create mode 100644 src/Game/AI/AI/aiRitoHeroSoulGiftRoot.h create mode 100644 src/Game/AI/AI/aiRodEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiRodEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiRodRoot.cpp create mode 100644 src/Game/AI/AI/aiRodRoot.h create mode 100644 src/Game/AI/AI/aiRopeRoot.cpp create mode 100644 src/Game/AI/AI/aiRopeRoot.h create mode 100644 src/Game/AI/AI/aiRuinGuardianRoot.cpp create mode 100644 src/Game/AI/AI/aiRuinGuardianRoot.h create mode 100644 src/Game/AI/AI/aiRupeeRabbitNormal.cpp create mode 100644 src/Game/AI/AI/aiRupeeRabbitNormal.h create mode 100644 src/Game/AI/AI/aiSafeMoveAroundTarget.cpp create mode 100644 src/Game/AI/AI/aiSafeMoveAroundTarget.h create mode 100644 src/Game/AI/AI/aiSandfallWithSound.cpp create mode 100644 src/Game/AI/AI/aiSandfallWithSound.h create mode 100644 src/Game/AI/AI/aiSandwormAttackMove.cpp create mode 100644 src/Game/AI/AI/aiSandwormAttackMove.h create mode 100644 src/Game/AI/AI/aiSandwormBattle.cpp create mode 100644 src/Game/AI/AI/aiSandwormBattle.h create mode 100644 src/Game/AI/AI/aiSandwormBlownOff.cpp create mode 100644 src/Game/AI/AI/aiSandwormBlownOff.h create mode 100644 src/Game/AI/AI/aiSandwormCircleMoveTarget.cpp create mode 100644 src/Game/AI/AI/aiSandwormCircleMoveTarget.h create mode 100644 src/Game/AI/AI/aiSandwormFindTarget.cpp create mode 100644 src/Game/AI/AI/aiSandwormFindTarget.h create mode 100644 src/Game/AI/AI/aiSandwormLost.cpp create mode 100644 src/Game/AI/AI/aiSandwormLost.h create mode 100644 src/Game/AI/AI/aiSandwormNavSearchWait.cpp create mode 100644 src/Game/AI/AI/aiSandwormNavSearchWait.h create mode 100644 src/Game/AI/AI/aiSandwormNormal.cpp create mode 100644 src/Game/AI/AI/aiSandwormNormal.h create mode 100644 src/Game/AI/AI/aiSandwormNormalBase.cpp create mode 100644 src/Game/AI/AI/aiSandwormNormalBase.h create mode 100644 src/Game/AI/AI/aiSandwormNoticeSound.cpp create mode 100644 src/Game/AI/AI/aiSandwormNoticeSound.h create mode 100644 src/Game/AI/AI/aiSandwormRNormal.cpp create mode 100644 src/Game/AI/AI/aiSandwormRNormal.h create mode 100644 src/Game/AI/AI/aiSandwormRRoot.cpp create mode 100644 src/Game/AI/AI/aiSandwormRRoot.h create mode 100644 src/Game/AI/AI/aiSandwormReaction.cpp create mode 100644 src/Game/AI/AI/aiSandwormReaction.h create mode 100644 src/Game/AI/AI/aiSandwormRoam.cpp create mode 100644 src/Game/AI/AI/aiSandwormRoam.h create mode 100644 src/Game/AI/AI/aiSandwormRoot.cpp create mode 100644 src/Game/AI/AI/aiSandwormRoot.h create mode 100644 src/Game/AI/AI/aiSandwormStun.cpp create mode 100644 src/Game/AI/AI/aiSandwormStun.h create mode 100644 src/Game/AI/AI/aiSelfXRotSelector.cpp create mode 100644 src/Game/AI/AI/aiSelfXRotSelector.h create mode 100644 src/Game/AI/AI/aiSeqAnimalAttack.cpp create mode 100644 src/Game/AI/AI/aiSeqAnimalAttack.h create mode 100644 src/Game/AI/AI/aiSeqAtHitAction.cpp create mode 100644 src/Game/AI/AI/aiSeqAtHitAction.h create mode 100644 src/Game/AI/AI/aiSeqCloseDistTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqCloseDistTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqFirstPointTwo.cpp create mode 100644 src/Game/AI/AI/aiSeqFirstPointTwo.h create mode 100644 src/Game/AI/AI/aiSeqGroundHit.cpp create mode 100644 src/Game/AI/AI/aiSeqGroundHit.h create mode 100644 src/Game/AI/AI/aiSeqGroundHitAssassinBoss.cpp create mode 100644 src/Game/AI/AI/aiSeqGroundHitAssassinBoss.h create mode 100644 src/Game/AI/AI/aiSeqHiddenOctarockSearch.cpp create mode 100644 src/Game/AI/AI/aiSeqHiddenOctarockSearch.h create mode 100644 src/Game/AI/AI/aiSeqIfElseAction.cpp create mode 100644 src/Game/AI/AI/aiSeqIfElseAction.h create mode 100644 src/Game/AI/AI/aiSeqIfFailAction.cpp create mode 100644 src/Game/AI/AI/aiSeqIfFailAction.h create mode 100644 src/Game/AI/AI/aiSeqNextMessage.cpp create mode 100644 src/Game/AI/AI/aiSeqNextMessage.h create mode 100644 src/Game/AI/AI/aiSeqOctarockAttack.cpp create mode 100644 src/Game/AI/AI/aiSeqOctarockAttack.h create mode 100644 src/Game/AI/AI/aiSeqOctarockWigReaction.cpp create mode 100644 src/Game/AI/AI/aiSeqOctarockWigReaction.h create mode 100644 src/Game/AI/AI/aiSeqPredictOctarockAttack.cpp create mode 100644 src/Game/AI/AI/aiSeqPredictOctarockAttack.h create mode 100644 src/Game/AI/AI/aiSeqPursuit.cpp create mode 100644 src/Game/AI/AI/aiSeqPursuit.h create mode 100644 src/Game/AI/AI/aiSeqRandomRepeat.cpp create mode 100644 src/Game/AI/AI/aiSeqRandomRepeat.h create mode 100644 src/Game/AI/AI/aiSeqTargetTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTargetTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqThreeAction.cpp create mode 100644 src/Game/AI/AI/aiSeqThreeAction.h create mode 100644 src/Game/AI/AI/aiSeqTimeredAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTimeredAction.h create mode 100644 src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqTimeredTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTimeredTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqTrgPartsNotice.cpp create mode 100644 src/Game/AI/AI/aiSeqTrgPartsNotice.h create mode 100644 src/Game/AI/AI/aiSeqTwoAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTwoAction.h create mode 100644 src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.cpp create mode 100644 src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.h create mode 100644 src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.cpp create mode 100644 src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h create mode 100644 src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.cpp create mode 100644 src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h create mode 100644 src/Game/AI/AI/aiSetPartBind.cpp create mode 100644 src/Game/AI/AI/aiSetPartBind.h create mode 100644 src/Game/AI/AI/aiSetTargetPosForAngryKokko.cpp create mode 100644 src/Game/AI/AI/aiSetTargetPosForAngryKokko.h create mode 100644 src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.cpp create mode 100644 src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.h create mode 100644 src/Game/AI/AI/aiSetTargetPosToPlayer.cpp create mode 100644 src/Game/AI/AI/aiSetTargetPosToPlayer.h create mode 100644 src/Game/AI/AI/aiShootingEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiShootingEnemyBattle.h create mode 100644 src/Game/AI/AI/aiShootingEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiShootingEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiShootingStarRoot.cpp create mode 100644 src/Game/AI/AI/aiShootingStarRoot.h create mode 100644 src/Game/AI/AI/aiShutterFence.cpp create mode 100644 src/Game/AI/AI/aiShutterFence.h create mode 100644 src/Game/AI/AI/aiSignalFlowchartRootAI.cpp create mode 100644 src/Game/AI/AI/aiSignalFlowchartRootAI.h create mode 100644 src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.cpp create mode 100644 src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.h create mode 100644 src/Game/AI/AI/aiSignaledSpotBgmTrigger.cpp create mode 100644 src/Game/AI/AI/aiSignaledSpotBgmTrigger.h create mode 100644 src/Game/AI/AI/aiSimpleASBridge.cpp create mode 100644 src/Game/AI/AI/aiSimpleASBridge.h create mode 100644 src/Game/AI/AI/aiSimpleEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiSimpleEnemyNormal.h create mode 100644 src/Game/AI/AI/aiSimpleEscapeFromTarget.cpp create mode 100644 src/Game/AI/AI/aiSimpleEscapeFromTarget.h create mode 100644 src/Game/AI/AI/aiSimpleKokkoRoot.cpp create mode 100644 src/Game/AI/AI/aiSimpleKokkoRoot.h create mode 100644 src/Game/AI/AI/aiSimpleLiftable.cpp create mode 100644 src/Game/AI/AI/aiSimpleLiftable.h create mode 100644 src/Game/AI/AI/aiSimpleLiftableDLC.cpp create mode 100644 src/Game/AI/AI/aiSimpleLiftableDLC.h create mode 100644 src/Game/AI/AI/aiSimpleLineBeam.cpp create mode 100644 src/Game/AI/AI/aiSimpleLineBeam.h create mode 100644 src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiSimpleWildlifeRoot.cpp create mode 100644 src/Game/AI/AI/aiSimpleWildlifeRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossApproachRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossApproachRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossArrowRainAttack.cpp create mode 100644 src/Game/AI/AI/aiSiteBossArrowRainAttack.h create mode 100644 src/Game/AI/AI/aiSiteBossAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossAttackRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossBigFlameBall.cpp create mode 100644 src/Game/AI/AI/aiSiteBossBigFlameBall.h create mode 100644 src/Game/AI/AI/aiSiteBossBlowOff.cpp create mode 100644 src/Game/AI/AI/aiSiteBossBlowOff.h create mode 100644 src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossBowRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossBowRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossChemicalProjectile.cpp create mode 100644 src/Game/AI/AI/aiSiteBossChemicalProjectile.h create mode 100644 src/Game/AI/AI/aiSiteBossFlameBall.cpp create mode 100644 src/Game/AI/AI/aiSiteBossFlameBall.h create mode 100644 src/Game/AI/AI/aiSiteBossGaleArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossGaleArrowRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossIceSplinterRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossIceSplinterRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossLswordAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossLswordAttackRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossLswordFireBallRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossLswordRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossLswordRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossLswordTornadoRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossNormalRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossNormalRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossPierceBulletAttack.cpp create mode 100644 src/Game/AI/AI/aiSiteBossPierceBulletAttack.h create mode 100644 src/Game/AI/AI/aiSiteBossReaction.cpp create mode 100644 src/Game/AI/AI/aiSiteBossReaction.h create mode 100644 src/Game/AI/AI/aiSiteBossRecognizeRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossRecognizeRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossRecognizeRootBase.cpp create mode 100644 src/Game/AI/AI/aiSiteBossRecognizeRootBase.h create mode 100644 src/Game/AI/AI/aiSiteBossReflectArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossReflectArrowRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossShootArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossShootArrowRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSmallDamageRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSmallDamageRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSpearAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSpearAttackRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSpearLifeSelector.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSpearLifeSelector.h create mode 100644 src/Game/AI/AI/aiSiteBossSpearRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSpearRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSpearThrow.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSpearThrow.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordApproachRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordApproachRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordAttackRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordAttackRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordIronPileRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordIronPileRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordRailApproach.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordRailApproach.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordRoot.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h create mode 100644 src/Game/AI/AI/aiSiteBossSwordWeapon.cpp create mode 100644 src/Game/AI/AI/aiSiteBossSwordWeapon.h create mode 100644 src/Game/AI/AI/aiSiteBossThrowIceRoot.cpp create mode 100644 src/Game/AI/AI/aiSiteBossThrowIceRoot.h create mode 100644 src/Game/AI/AI/aiSleepBedRoot.cpp create mode 100644 src/Game/AI/AI/aiSleepBedRoot.h create mode 100644 src/Game/AI/AI/aiSleepSelect.cpp create mode 100644 src/Game/AI/AI/aiSleepSelect.h create mode 100644 src/Game/AI/AI/aiSnowBallNormal.cpp create mode 100644 src/Game/AI/AI/aiSnowBallNormal.h create mode 100644 src/Game/AI/AI/aiSnowOctarockBattle.cpp create mode 100644 src/Game/AI/AI/aiSnowOctarockBattle.h create mode 100644 src/Game/AI/AI/aiSoundTriggerTag.cpp create mode 100644 src/Game/AI/AI/aiSoundTriggerTag.h create mode 100644 src/Game/AI/AI/aiSpearWeaponSelect.cpp create mode 100644 src/Game/AI/AI/aiSpearWeaponSelect.h create mode 100644 src/Game/AI/AI/aiSpecialEnemySleep.cpp create mode 100644 src/Game/AI/AI/aiSpecialEnemySleep.h create mode 100644 src/Game/AI/AI/aiSpotBgmTrigger.cpp create mode 100644 src/Game/AI/AI/aiSpotBgmTrigger.h create mode 100644 src/Game/AI/AI/aiStalEnemyBlownOff.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyBlownOff.h create mode 100644 src/Game/AI/AI/aiStalEnemyChasePart.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyChasePart.h create mode 100644 src/Game/AI/AI/aiStalEnemyDoShootPartSelect.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyDoShootPartSelect.h create mode 100644 src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.h create mode 100644 src/Game/AI/AI/aiStalEnemyNoHeadWait.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyNoHeadWait.h create mode 100644 src/Game/AI/AI/aiStalEnemyReaction.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyReaction.h create mode 100644 src/Game/AI/AI/aiStalEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiStalEnemyRoot.h create mode 100644 src/Game/AI/AI/aiStalEnemySleep.cpp create mode 100644 src/Game/AI/AI/aiStalEnemySleep.h create mode 100644 src/Game/AI/AI/aiStalGiantEnemyReaction.cpp create mode 100644 src/Game/AI/AI/aiStalGiantEnemyReaction.h create mode 100644 src/Game/AI/AI/aiStalGiantEnemyRoot.cpp create mode 100644 src/Game/AI/AI/aiStalGiantEnemyRoot.h create mode 100644 src/Game/AI/AI/aiStalGiantSleepNormal.cpp create mode 100644 src/Game/AI/AI/aiStalGiantSleepNormal.h create mode 100644 src/Game/AI/AI/aiStalHeadLifted.cpp create mode 100644 src/Game/AI/AI/aiStalHeadLifted.h create mode 100644 src/Game/AI/AI/aiStalHeadPartRoot.cpp create mode 100644 src/Game/AI/AI/aiStalHeadPartRoot.h create mode 100644 src/Game/AI/AI/aiStalPartCatch.cpp create mode 100644 src/Game/AI/AI/aiStalPartCatch.h create mode 100644 src/Game/AI/AI/aiStalPartNormal.cpp create mode 100644 src/Game/AI/AI/aiStalPartNormal.h create mode 100644 src/Game/AI/AI/aiStalPartRoot.cpp create mode 100644 src/Game/AI/AI/aiStalPartRoot.h create mode 100644 src/Game/AI/AI/aiStalPartsHasSelect.cpp create mode 100644 src/Game/AI/AI/aiStalPartsHasSelect.h create mode 100644 src/Game/AI/AI/aiStole.cpp create mode 100644 src/Game/AI/AI/aiStole.h create mode 100644 src/Game/AI/AI/aiStoneBall_BRoot.cpp create mode 100644 src/Game/AI/AI/aiStoneBall_BRoot.h create mode 100644 src/Game/AI/AI/aiStoneOctarockBattle.cpp create mode 100644 src/Game/AI/AI/aiStoneOctarockBattle.h create mode 100644 src/Game/AI/AI/aiStoneOctarockGuardNearTarget.cpp create mode 100644 src/Game/AI/AI/aiStoneOctarockGuardNearTarget.h create mode 100644 src/Game/AI/AI/aiStoneOctarockWait.cpp create mode 100644 src/Game/AI/AI/aiStoneOctarockWait.h create mode 100644 src/Game/AI/AI/aiStoneShootEnemyBattle.cpp create mode 100644 src/Game/AI/AI/aiStoneShootEnemyBattle.h create mode 100644 src/Game/AI/AI/aiStoneStickRoot.cpp create mode 100644 src/Game/AI/AI/aiStoneStickRoot.h create mode 100644 src/Game/AI/AI/aiStopTimerObserver.cpp create mode 100644 src/Game/AI/AI/aiStopTimerObserver.h create mode 100644 src/Game/AI/AI/aiStraightMove.cpp create mode 100644 src/Game/AI/AI/aiStraightMove.h create mode 100644 src/Game/AI/AI/aiStunBossReaction.cpp create mode 100644 src/Game/AI/AI/aiStunBossReaction.h create mode 100644 src/Game/AI/AI/aiStunWithDamageReaction.cpp create mode 100644 src/Game/AI/AI/aiStunWithDamageReaction.h create mode 100644 src/Game/AI/AI/aiSubsAngleSelect.cpp create mode 100644 src/Game/AI/AI/aiSubsAngleSelect.h create mode 100644 src/Game/AI/AI/aiSunAI.cpp create mode 100644 src/Game/AI/AI/aiSunAI.h create mode 100644 src/Game/AI/AI/aiSunazarashiEscapeMove.cpp create mode 100644 src/Game/AI/AI/aiSunazarashiEscapeMove.h create mode 100644 src/Game/AI/AI/aiSunazarashiNormal.cpp create mode 100644 src/Game/AI/AI/aiSunazarashiNormal.h create mode 100644 src/Game/AI/AI/aiSunazarashiReturn.cpp create mode 100644 src/Game/AI/AI/aiSunazarashiReturn.h create mode 100644 src/Game/AI/AI/aiSunazarashiRoot.cpp create mode 100644 src/Game/AI/AI/aiSunazarashiRoot.h create mode 100644 src/Game/AI/AI/aiSunazarashiTowing.cpp create mode 100644 src/Game/AI/AI/aiSunazarashiTowing.h create mode 100644 src/Game/AI/AI/aiSwarmBattle.cpp create mode 100644 src/Game/AI/AI/aiSwarmBattle.h create mode 100644 src/Game/AI/AI/aiSwarmEscapeDie.cpp create mode 100644 src/Game/AI/AI/aiSwarmEscapeDie.h create mode 100644 src/Game/AI/AI/aiSwarmRangeKeepCircleMove.cpp create mode 100644 src/Game/AI/AI/aiSwarmRangeKeepCircleMove.h create mode 100644 src/Game/AI/AI/aiSwarmReaction.cpp create mode 100644 src/Game/AI/AI/aiSwarmReaction.h create mode 100644 src/Game/AI/AI/aiSwarmRoot.cpp create mode 100644 src/Game/AI/AI/aiSwarmRoot.h create mode 100644 src/Game/AI/AI/aiSwarmStopTimerEscape.cpp create mode 100644 src/Game/AI/AI/aiSwarmStopTimerEscape.h create mode 100644 src/Game/AI/AI/aiSwimEnemyFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiSwimEnemyFindPlayer.h create mode 100644 src/Game/AI/AI/aiSwimEnemyNormal.cpp create mode 100644 src/Game/AI/AI/aiSwimEnemyNormal.h create mode 100644 src/Game/AI/AI/aiSwimEnemyRoam.cpp create mode 100644 src/Game/AI/AI/aiSwimEnemyRoam.h create mode 100644 src/Game/AI/AI/aiSwitchAI.cpp create mode 100644 src/Game/AI/AI/aiSwitchAI.h create mode 100644 src/Game/AI/AI/aiSwitchDistance.cpp create mode 100644 src/Game/AI/AI/aiSwitchDistance.h create mode 100644 src/Game/AI/AI/aiSwitchElectric.cpp create mode 100644 src/Game/AI/AI/aiSwitchElectric.h create mode 100644 src/Game/AI/AI/aiSwitchHit.cpp create mode 100644 src/Game/AI/AI/aiSwitchHit.h create mode 100644 src/Game/AI/AI/aiSwitchHitOnce.cpp create mode 100644 src/Game/AI/AI/aiSwitchHitOnce.h create mode 100644 src/Game/AI/AI/aiSwitchLinkTagCheck.cpp create mode 100644 src/Game/AI/AI/aiSwitchLinkTagCheck.h create mode 100644 src/Game/AI/AI/aiSwitchRightAndWrong.cpp create mode 100644 src/Game/AI/AI/aiSwitchRightAndWrong.h create mode 100644 src/Game/AI/AI/aiSwitchTimeLag.cpp create mode 100644 src/Game/AI/AI/aiSwitchTimeLag.h create mode 100644 src/Game/AI/AI/aiSwitchTimeLimited.cpp create mode 100644 src/Game/AI/AI/aiSwitchTimeLimited.h create mode 100644 src/Game/AI/AI/aiSwitchTimer.cpp create mode 100644 src/Game/AI/AI/aiSwitchTimer.h create mode 100644 src/Game/AI/AI/aiSwitchTorch.cpp create mode 100644 src/Game/AI/AI/aiSwitchTorch.h create mode 100644 src/Game/AI/AI/aiSwitchWheel.cpp create mode 100644 src/Game/AI/AI/aiSwitchWheel.h create mode 100644 src/Game/AI/AI/aiSwitchWindHit.cpp create mode 100644 src/Game/AI/AI/aiSwitchWindHit.h create mode 100644 src/Game/AI/AI/aiTargetAbsolutePos.cpp create mode 100644 src/Game/AI/AI/aiTargetAbsolutePos.h create mode 100644 src/Game/AI/AI/aiTargetActorDistanceSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetActorDistanceSelect.h create mode 100644 src/Game/AI/AI/aiTargetActorGrabAdapter.cpp create mode 100644 src/Game/AI/AI/aiTargetActorGrabAdapter.h create mode 100644 src/Game/AI/AI/aiTargetAngerSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetAngerSelect.h create mode 100644 src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h create mode 100644 src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.cpp create mode 100644 src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h create mode 100644 src/Game/AI/AI/aiTargetBaitTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetBaitTypeSelect.h create mode 100644 src/Game/AI/AI/aiTargetBeatCheck.cpp create mode 100644 src/Game/AI/AI/aiTargetBeatCheck.h create mode 100644 src/Game/AI/AI/aiTargetBeatGetDrop.cpp create mode 100644 src/Game/AI/AI/aiTargetBeatGetDrop.h create mode 100644 src/Game/AI/AI/aiTargetClimbSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetClimbSelect.h create mode 100644 src/Game/AI/AI/aiTargetDirLRInHideSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetDirLRInHideSelect.h create mode 100644 src/Game/AI/AI/aiTargetDirLRSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetDirLRSelect.h create mode 100644 src/Game/AI/AI/aiTargetDistanceSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetDistanceSelect.h create mode 100644 src/Game/AI/AI/aiTargetDynamicActorPos.cpp create mode 100644 src/Game/AI/AI/aiTargetDynamicActorPos.h create mode 100644 src/Game/AI/AI/aiTargetElevationGapSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetElevationGapSelect.h create mode 100644 src/Game/AI/AI/aiTargetExistSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetExistSelect.h create mode 100644 src/Game/AI/AI/aiTargetHomeDir.cpp create mode 100644 src/Game/AI/AI/aiTargetHomeDir.h create mode 100644 src/Game/AI/AI/aiTargetHomePos.cpp create mode 100644 src/Game/AI/AI/aiTargetHomePos.h create mode 100644 src/Game/AI/AI/aiTargetHomeRangeSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetHomeRangeSelect.h create mode 100644 src/Game/AI/AI/aiTargetInAreaSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetInAreaSelect.h create mode 100644 src/Game/AI/AI/aiTargetInFanAreaSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetInFanAreaSelect.h create mode 100644 src/Game/AI/AI/aiTargetIsEquipItemSelector.cpp create mode 100644 src/Game/AI/AI/aiTargetIsEquipItemSelector.h create mode 100644 src/Game/AI/AI/aiTargetKnockBackBasePos.cpp create mode 100644 src/Game/AI/AI/aiTargetKnockBackBasePos.h create mode 100644 src/Game/AI/AI/aiTargetLastAttackedPos.cpp create mode 100644 src/Game/AI/AI/aiTargetLastAttackedPos.h create mode 100644 src/Game/AI/AI/aiTargetLastAttacker.cpp create mode 100644 src/Game/AI/AI/aiTargetLastAttacker.h create mode 100644 src/Game/AI/AI/aiTargetLastAttackerPos.cpp create mode 100644 src/Game/AI/AI/aiTargetLastAttackerPos.h create mode 100644 src/Game/AI/AI/aiTargetLastDamagedPos.cpp create mode 100644 src/Game/AI/AI/aiTargetLastDamagedPos.h create mode 100644 src/Game/AI/AI/aiTargetLostCheck.cpp create mode 100644 src/Game/AI/AI/aiTargetLostCheck.h create mode 100644 src/Game/AI/AI/aiTargetMyUp.cpp create mode 100644 src/Game/AI/AI/aiTargetMyUp.h create mode 100644 src/Game/AI/AI/aiTargetNPCTypeSelector.cpp create mode 100644 src/Game/AI/AI/aiTargetNPCTypeSelector.h create mode 100644 src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.h create mode 100644 src/Game/AI/AI/aiTargetPartsPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPartsPos.h create mode 100644 src/Game/AI/AI/aiTargetPickedItem.cpp create mode 100644 src/Game/AI/AI/aiTargetPickedItem.h create mode 100644 src/Game/AI/AI/aiTargetPlayerPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPlayerPos.h create mode 100644 src/Game/AI/AI/aiTargetPosAI.cpp create mode 100644 src/Game/AI/AI/aiTargetPosAI.h create mode 100644 src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.cpp create mode 100644 src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.h create mode 100644 src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.cpp create mode 100644 src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.h create mode 100644 src/Game/AI/AI/aiTargetPosDirLRSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetPosDirLRSelect.h create mode 100644 src/Game/AI/AI/aiTargetPosDynParamRot.cpp create mode 100644 src/Game/AI/AI/aiTargetPosDynParamRot.h create mode 100644 src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h create mode 100644 src/Game/AI/AI/aiTargetPosLostCheck.cpp create mode 100644 src/Game/AI/AI/aiTargetPosLostCheck.h create mode 100644 src/Game/AI/AI/aiTargetPosOffset.cpp create mode 100644 src/Game/AI/AI/aiTargetPosOffset.h create mode 100644 src/Game/AI/AI/aiTargetPosOffsetFromMyPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPosOffsetFromMyPos.h create mode 100644 src/Game/AI/AI/aiTargetPosOnNavFaceSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetPosOnNavFaceSelect.h create mode 100644 src/Game/AI/AI/aiTargetPosRotFromMyPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPosRotFromMyPos.h create mode 100644 src/Game/AI/AI/aiTargetPosTracking.cpp create mode 100644 src/Game/AI/AI/aiTargetPosTracking.h create mode 100644 src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.cpp create mode 100644 src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.h create mode 100644 src/Game/AI/AI/aiTargetRangeSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetRangeSelect.h create mode 100644 src/Game/AI/AI/aiTargetRepeat.cpp create mode 100644 src/Game/AI/AI/aiTargetRepeat.h create mode 100644 src/Game/AI/AI/aiTargetStateSelect.cpp create mode 100644 src/Game/AI/AI/aiTargetStateSelect.h create mode 100644 src/Game/AI/AI/aiTargetTargetPos.cpp create mode 100644 src/Game/AI/AI/aiTargetTargetPos.h create mode 100644 src/Game/AI/AI/aiTargetTypeSelector.cpp create mode 100644 src/Game/AI/AI/aiTargetTypeSelector.h create mode 100644 src/Game/AI/AI/aiTemperatureRandSelect.cpp create mode 100644 src/Game/AI/AI/aiTemperatureRandSelect.h create mode 100644 src/Game/AI/AI/aiTerminalEnduranceWarpRoot.cpp create mode 100644 src/Game/AI/AI/aiTerminalEnduranceWarpRoot.h create mode 100644 src/Game/AI/AI/aiTimeControlTagRoot.cpp create mode 100644 src/Game/AI/AI/aiTimeControlTagRoot.h create mode 100644 src/Game/AI/AI/aiTimedGuardNearTarget.cpp create mode 100644 src/Game/AI/AI/aiTimedGuardNearTarget.h create mode 100644 src/Game/AI/AI/aiTimelineAI.cpp create mode 100644 src/Game/AI/AI/aiTimelineAI.h create mode 100644 src/Game/AI/AI/aiTimeredViewWait.cpp create mode 100644 src/Game/AI/AI/aiTimeredViewWait.h create mode 100644 src/Game/AI/AI/aiTimidityEnemyDrawback.cpp create mode 100644 src/Game/AI/AI/aiTimidityEnemyDrawback.h create mode 100644 src/Game/AI/AI/aiTiredDistSelect.cpp create mode 100644 src/Game/AI/AI/aiTiredDistSelect.h create mode 100644 src/Game/AI/AI/aiTornadoRoot.cpp create mode 100644 src/Game/AI/AI/aiTornadoRoot.h create mode 100644 src/Game/AI/AI/aiTowing.cpp create mode 100644 src/Game/AI/AI/aiTowing.h create mode 100644 src/Game/AI/AI/aiTowingPlayer.cpp create mode 100644 src/Game/AI/AI/aiTowingPlayer.h create mode 100644 src/Game/AI/AI/aiTreasureBox.cpp create mode 100644 src/Game/AI/AI/aiTreasureBox.h create mode 100644 src/Game/AI/AI/aiTreasureBoxRoot.cpp create mode 100644 src/Game/AI/AI/aiTreasureBoxRoot.h create mode 100644 src/Game/AI/AI/aiTreasureSpot.cpp create mode 100644 src/Game/AI/AI/aiTreasureSpot.h create mode 100644 src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.cpp create mode 100644 src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h create mode 100644 src/Game/AI/AI/aiTrolleyGrabbedByMagnet.cpp create mode 100644 src/Game/AI/AI/aiTrolleyGrabbedByMagnet.h create mode 100644 src/Game/AI/AI/aiTrolleyOnRail.cpp create mode 100644 src/Game/AI/AI/aiTrolleyOnRail.h create mode 100644 src/Game/AI/AI/aiTrolleyRoot.cpp create mode 100644 src/Game/AI/AI/aiTrolleyRoot.h create mode 100644 src/Game/AI/AI/aiTurnForLookingAround.cpp create mode 100644 src/Game/AI/AI/aiTurnForLookingAround.h create mode 100644 src/Game/AI/AI/aiTurnPreAction.cpp create mode 100644 src/Game/AI/AI/aiTurnPreAction.h create mode 100644 src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.cpp create mode 100644 src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h create mode 100644 src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.cpp create mode 100644 src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.h create mode 100644 src/Game/AI/AI/aiUnarmedEnemySearch.cpp create mode 100644 src/Game/AI/AI/aiUnarmedEnemySearch.h create mode 100644 src/Game/AI/AI/aiUnarmedEnemySearchWeapon.cpp create mode 100644 src/Game/AI/AI/aiUnarmedEnemySearchWeapon.h create mode 100644 src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.cpp create mode 100644 src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h create mode 100644 src/Game/AI/AI/aiUnderWaterDepthSelect.cpp create mode 100644 src/Game/AI/AI/aiUnderWaterDepthSelect.h create mode 100644 src/Game/AI/AI/aiUrbosasFuryDamageSelector.cpp create mode 100644 src/Game/AI/AI/aiUrbosasFuryDamageSelector.h create mode 100644 src/Game/AI/AI/aiVacuumedBombDamageSelect.cpp create mode 100644 src/Game/AI/AI/aiVacuumedBombDamageSelect.h create mode 100644 src/Game/AI/AI/aiVehicleSelector.cpp create mode 100644 src/Game/AI/AI/aiVehicleSelector.h create mode 100644 src/Game/AI/AI/aiViewChaseSound.cpp create mode 100644 src/Game/AI/AI/aiViewChaseSound.h create mode 100644 src/Game/AI/AI/aiViewMove.cpp create mode 100644 src/Game/AI/AI/aiViewMove.h create mode 100644 src/Game/AI/AI/aiViewWait.cpp create mode 100644 src/Game/AI/AI/aiViewWait.h create mode 100644 src/Game/AI/AI/aiViewWaitEndWhenAimed.cpp create mode 100644 src/Game/AI/AI/aiViewWaitEndWhenAimed.h create mode 100644 src/Game/AI/AI/aiViewWaitRiskAvoid.cpp create mode 100644 src/Game/AI/AI/aiViewWaitRiskAvoid.h create mode 100644 src/Game/AI/AI/aiViewWaitWithFaceView.cpp create mode 100644 src/Game/AI/AI/aiViewWaitWithFaceView.h create mode 100644 src/Game/AI/AI/aiViewWaitWithInstDynActor.cpp create mode 100644 src/Game/AI/AI/aiViewWaitWithInstDynActor.h create mode 100644 src/Game/AI/AI/aiViewfrustumCheckTagRoot.cpp create mode 100644 src/Game/AI/AI/aiViewfrustumCheckTagRoot.h create mode 100644 src/Game/AI/AI/aiWaistRotEnemyArrowAttack.cpp create mode 100644 src/Game/AI/AI/aiWaistRotEnemyArrowAttack.h create mode 100644 src/Game/AI/AI/aiWaitAndFaceLeader.cpp create mode 100644 src/Game/AI/AI/aiWaitAndFaceLeader.h create mode 100644 src/Game/AI/AI/aiWaitForCloseOrWaterSide.cpp create mode 100644 src/Game/AI/AI/aiWaitForCloseOrWaterSide.h create mode 100644 src/Game/AI/AI/aiWaitForTargetClose.cpp create mode 100644 src/Game/AI/AI/aiWaitForTargetClose.h create mode 100644 src/Game/AI/AI/aiWaitNearTarget.cpp create mode 100644 src/Game/AI/AI/aiWaitNearTarget.h create mode 100644 src/Game/AI/AI/aiWaitNearTargetAwarenessRange.cpp create mode 100644 src/Game/AI/AI/aiWaitNearTargetAwarenessRange.h create mode 100644 src/Game/AI/AI/aiWaitPartsSleep.cpp create mode 100644 src/Game/AI/AI/aiWaitPartsSleep.h create mode 100644 src/Game/AI/AI/aiWarpActivateTerminal.cpp create mode 100644 src/Game/AI/AI/aiWarpActivateTerminal.h create mode 100644 src/Game/AI/AI/aiWarpSafeTagRoot.cpp create mode 100644 src/Game/AI/AI/aiWarpSafeTagRoot.h create mode 100644 src/Game/AI/AI/aiWarpTagRoot.cpp create mode 100644 src/Game/AI/AI/aiWarpTagRoot.h create mode 100644 src/Game/AI/AI/aiWaterFallWithSound.cpp create mode 100644 src/Game/AI/AI/aiWaterFallWithSound.h create mode 100644 src/Game/AI/AI/aiWaterSurface.cpp create mode 100644 src/Game/AI/AI/aiWaterSurface.h create mode 100644 src/Game/AI/AI/aiWaterSurface4RemainsLava.cpp create mode 100644 src/Game/AI/AI/aiWaterSurface4RemainsLava.h create mode 100644 src/Game/AI/AI/aiWaterSurfaceBase.cpp create mode 100644 src/Game/AI/AI/aiWaterSurfaceBase.h create mode 100644 src/Game/AI/AI/aiWeakPointRoot.cpp create mode 100644 src/Game/AI/AI/aiWeakPointRoot.h create mode 100644 src/Game/AI/AI/aiWeakStateSelecter.cpp create mode 100644 src/Game/AI/AI/aiWeakStateSelecter.h create mode 100644 src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.cpp create mode 100644 src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.h create mode 100644 src/Game/AI/AI/aiWeaponEquipedAI.cpp create mode 100644 src/Game/AI/AI/aiWeaponEquipedAI.h create mode 100644 src/Game/AI/AI/aiWeaponHoldSelector.cpp create mode 100644 src/Game/AI/AI/aiWeaponHoldSelector.h create mode 100644 src/Game/AI/AI/aiWeaponOnetimeUse.cpp create mode 100644 src/Game/AI/AI/aiWeaponOnetimeUse.h create mode 100644 src/Game/AI/AI/aiWeaponPrepareSelect.cpp create mode 100644 src/Game/AI/AI/aiWeaponPrepareSelect.h create mode 100644 src/Game/AI/AI/aiWeaponRangeKindSelect.cpp create mode 100644 src/Game/AI/AI/aiWeaponRangeKindSelect.h create mode 100644 src/Game/AI/AI/aiWeaponRootAI.cpp create mode 100644 src/Game/AI/AI/aiWeaponRootAI.h create mode 100644 src/Game/AI/AI/aiWeaponSelector.cpp create mode 100644 src/Game/AI/AI/aiWeaponSelector.h create mode 100644 src/Game/AI/AI/aiWeaponSubTypeSelect.cpp create mode 100644 src/Game/AI/AI/aiWeaponSubTypeSelect.h create mode 100644 src/Game/AI/AI/aiWeaponThrowerSelector.cpp create mode 100644 src/Game/AI/AI/aiWeaponThrowerSelector.h create mode 100644 src/Game/AI/AI/aiWeaponTrueFormSelect.cpp create mode 100644 src/Game/AI/AI/aiWeaponTrueFormSelect.h create mode 100644 src/Game/AI/AI/aiWeaponUsageSelect.cpp create mode 100644 src/Game/AI/AI/aiWeaponUsageSelect.h create mode 100644 src/Game/AI/AI/aiWeatherReactionCheck.cpp create mode 100644 src/Game/AI/AI/aiWeatherReactionCheck.h create mode 100644 src/Game/AI/AI/aiWetSelect.cpp create mode 100644 src/Game/AI/AI/aiWetSelect.h create mode 100644 src/Game/AI/AI/aiWholeDungeonRotateTag.cpp create mode 100644 src/Game/AI/AI/aiWholeDungeonRotateTag.h create mode 100644 src/Game/AI/AI/aiWildHorseDefWanderAI.cpp create mode 100644 src/Game/AI/AI/aiWildHorseDefWanderAI.h create mode 100644 src/Game/AI/AI/aiWillBallAttackLevelSelect.cpp create mode 100644 src/Game/AI/AI/aiWillBallAttackLevelSelect.h create mode 100644 src/Game/AI/AI/aiWillBallFollowAttack.cpp create mode 100644 src/Game/AI/AI/aiWillBallFollowAttack.h create mode 100644 src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.cpp create mode 100644 src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.h create mode 100644 src/Game/AI/AI/aiWillBallOperated.cpp create mode 100644 src/Game/AI/AI/aiWillBallOperated.h create mode 100644 src/Game/AI/AI/aiWillBallRoot.cpp create mode 100644 src/Game/AI/AI/aiWillBallRoot.h create mode 100644 src/Game/AI/AI/aiWindBoxPlace.cpp create mode 100644 src/Game/AI/AI/aiWindBoxPlace.h create mode 100644 src/Game/AI/AI/aiWindGenerator.cpp create mode 100644 src/Game/AI/AI/aiWindGenerator.h create mode 100644 src/Game/AI/AI/aiWindGeneratorSignal.cpp create mode 100644 src/Game/AI/AI/aiWindGeneratorSignal.h create mode 100644 src/Game/AI/AI/aiWithoutWeaponArrow.cpp create mode 100644 src/Game/AI/AI/aiWithoutWeaponArrow.h create mode 100644 src/Game/AI/AI/aiWizzrobeBlownOff.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeBlownOff.h create mode 100644 src/Game/AI/AI/aiWizzrobeCircleMove.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeCircleMove.h create mode 100644 src/Game/AI/AI/aiWizzrobeCombat.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeCombat.h create mode 100644 src/Game/AI/AI/aiWizzrobeCombatMove.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeCombatMove.h create mode 100644 src/Game/AI/AI/aiWizzrobeFindPlayer.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeFindPlayer.h create mode 100644 src/Game/AI/AI/aiWizzrobeRoam.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeRoam.h create mode 100644 src/Game/AI/AI/aiWizzrobeRoot.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeRoot.h create mode 100644 src/Game/AI/AI/aiWizzrobeWeatherMagic.cpp create mode 100644 src/Game/AI/AI/aiWizzrobeWeatherMagic.h create mode 100644 src/Game/AI/AI/aiWolfLinkAmiibo.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkAmiibo.h create mode 100644 src/Game/AI/AI/aiWolfLinkBattleRoot.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkBattleRoot.h create mode 100644 src/Game/AI/AI/aiWolfLinkChainAttack.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkChainAttack.h create mode 100644 src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.h create mode 100644 src/Game/AI/AI/aiWolfLinkFollowWait.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkFollowWait.h create mode 100644 src/Game/AI/AI/aiWolfLinkGoToTarget.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkGoToTarget.h create mode 100644 src/Game/AI/AI/aiWolfLinkLeadToTarget.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkLeadToTarget.h create mode 100644 src/Game/AI/AI/aiWolfLinkNormalRoot.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkNormalRoot.h create mode 100644 src/Game/AI/AI/aiWolfLinkReaction.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkReaction.h create mode 100644 src/Game/AI/AI/aiWolfLinkRoot.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkRoot.h create mode 100644 src/Game/AI/AI/aiWolfLinkRushAttack.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkRushAttack.h create mode 100644 src/Game/AI/AI/aiWolfLinkSeqAttack.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkSeqAttack.h create mode 100644 src/Game/AI/AI/aiWolfLinkShiekSensorRoot.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkShiekSensorRoot.h create mode 100644 src/Game/AI/AI/aiWolfLinkWarp.cpp create mode 100644 src/Game/AI/AI/aiWolfLinkWarp.h create mode 100644 src/Game/AI/AI/aiYunBoCannon.cpp create mode 100644 src/Game/AI/AI/aiYunBoCannon.h create mode 100644 src/Game/AI/AI/aiYunBoCannonBallRoot.cpp create mode 100644 src/Game/AI/AI/aiYunBoCannonBallRoot.h create mode 100644 src/Game/AI/AI/aiZokuchoSunazarashi.cpp create mode 100644 src/Game/AI/AI/aiZokuchoSunazarashi.h create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleNormal.cpp create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleNormal.h create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.cpp create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleRoot.cpp create mode 100644 src/Game/AI/AI/aiZoraHeroRelicBattleRoot.h create mode 100644 src/Game/AI/AI/aiZoraHeroSoulGiftRoot.cpp create mode 100644 src/Game/AI/AI/aiZoraHeroSoulGiftRoot.h create mode 100644 src/Game/AI/AI/aiZoraHeroWarp2Player.cpp create mode 100644 src/Game/AI/AI/aiZoraHeroWarp2Player.h create mode 100644 src/Game/AI/aiAiFactories.cpp create mode 100644 src/Game/AI/aiAiFactories.h create mode 100755 tools/ai_generate_ais.py diff --git a/data/aidef_ai_params.yml b/data/aidef_ai_params.yml new file mode 100644 index 00000000..7660c6c5 --- /dev/null +++ b/data/aidef_ai_params.yml @@ -0,0 +1,5761 @@ +WeaponRootAI: +- {type: static_param, param_type: const float*, param_name: BlinkFrame, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: FallOutSpeed, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: LandNoiseLevel, param_offset: 0x90} +- {type: map_unit_param, param_type: const bool*, param_name: IsFixedPlace, param_offset: 0x98} +- {type: map_unit_param, param_type: const bool*, param_name: IsEmitLandNoise, param_offset: 0xa0} +ASWeaponRoot: +- {type: call, fn: _ZN5uking2ai12WeaponRootAI11loadParams_Ev, addr: 0x7100e1e510} +- {type: static_param, param_type: 'sead::SafeString', param_name: Equiped, param_offset: 0xe8} +- {type: static_param, param_type: 'sead::SafeString', param_name: UnEquiped, param_offset: 0xf8} +- {type: static_param, param_type: 'sead::SafeString', param_name: Thrown, param_offset: 0x108} +- {type: static_param, param_type: 'sead::SafeString', param_name: Stick, param_offset: 0x118} +- {type: static_param, param_type: 'sead::SafeString', param_name: CancelStick, param_offset: 0x128} +ActorWaterDepthSelect: +- {type: static_param, param_type: const float*, param_name: DeepDepth, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: OnEnterOnly, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: ForceDeepChange, param_offset: 0x48} +AddBasicLinkOn: +- {type: static_param, param_type: const bool*, param_name: OnlyOne, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsBroadCastOnlyOne, param_offset: 0x40} +AddCarriedBase: +- {type: static_param, param_type: const float*, param_name: FailDistance, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsRecoverCharCtrlAxis, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsUseConstraint, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: HoldOnXLinkKey, param_offset: 0x50} +AddCarried: +- {type: call, fn: _ZN5uking2ai14AddCarriedBase11loadParams_Ev, addr: 0x71002f7a14} +AddDemoCall: +- {type: static_param, param_type: const bool*, param_name: OnlyOne, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsBroadCastOnlyOne, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: EntryPoint, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x58} +AddNodeNodeCarried: +- {type: call, fn: _ZN5uking2ai14AddCarriedBase11loadParams_Ev, addr: 0x71002f7a14} +- {type: static_param, param_type: 'sead::SafeString', param_name: MyNode, param_offset: 0x138} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: NodeRotOffset, param_offset: 0x148} +AddPlayerLargeAttackJustGuard: [] +AddSwarmMove: +- {type: static_param, param_type: const int*, param_name: IgnoreSensorTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SubSpeed, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SubAccRateMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: SubAccRateMax, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsEndBySensor, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnimName, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +AddViewTargetPosBase: [] +AddViewTargetPos: +- {type: call, fn: _ZN5uking2ai20AddViewTargetPosBase11loadParams_Ev, addr: 0x71002f9d24} +SeqTwoAction: +- {type: static_param, param_type: const bool*, param_name: IsFinishedByFailAction, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsEndChangeable, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsNoChangeable, param_offset: 0x48} +AirOctaBoardBurn: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x50} +AirOctaBurnReaction: +- {type: static_param, param_type: const float*, param_name: DisconnectTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DisconnectRandTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SingleBurnTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ChangeRandTime, param_offset: 0x50} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x58} +AirOctaFlyUp: +- {type: static_param, param_type: const float*, param_name: FlyUpDuration, param_offset: 0x38} +- {type: dynamic_param, param_type: float*, param_name: TargetDistance, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x48} +EnemyDefaultReaction: +- {type: static_param, param_type: const int*, param_name: JustGuardTimesMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: JustGuardTimesMax, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: SmallDamageCancelTimes, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: InComboSmallDamageNoCancel, param_offset: 0x50} +AirOctaReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x68} +ForkAI: [] +Fork2AI: [] +AirOctaRoot: +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x38} +EnemyRoot: +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OutOfWaterOffset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: SpreadDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: SmallSpreadDist, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: FortressTag, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IgnoreHell, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: IsNearCreate, param_offset: 0x78} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem1, param_offset: 0x80} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem2, param_offset: 0x90} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem3, param_offset: 0xa0} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem4, param_offset: 0xb0} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: RideHorseName, param_offset: 0xc0} +- {type: aitree_variable, param_type: int*, param_name: CreateDeadConditionType, param_offset: 0xd0} +- {type: aitree_variable, param_type: int*, param_name: ForceSealSilentKillCount, param_offset: 0xd8} +- {type: aitree_variable, param_type: bool*, param_name: IsTrgChangeUnderWaterState, param_offset: 0xe0} +AirOctaState: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const float*, param_name: RopeGravityFactor, param_offset: 0x1d8} +- {type: static_param, param_type: const float*, param_name: BalloonMassRatio, param_offset: 0x1e0} +- {type: static_param, param_type: const float*, param_name: WindForceScale, param_offset: 0x1e8} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x1f0} +AirOctaWait: +- {type: dynamic_param, param_type: bool*, param_name: IsSameChange, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: AirOctaDataMgr, param_offset: 0x40} +ItemRoot: +- {type: static_param, param_type: const float*, param_name: AtHitImpulseRate, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: InitMotionStatus, param_offset: 0x40} +ItemOnTree: +- {type: call, fn: _ZN5uking2ai8ItemRoot11loadParams_Ev, addr: 0x71004501f8} +- {type: static_param, param_type: const int*, param_name: FallPowerMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: FallPowerMax, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: FallOddsMin, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: FallOddsMax, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: FallIntervalRange, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: FallCheckSpeedTh, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttOnTree, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttOnGround, param_offset: 0x90} +CreationNestOnTree: +- {type: call, fn: _ZN5uking2ai10ItemOnTree11loadParams_Ev, addr: 0x710044fc98} +- {type: static_param, param_type: const int*, param_name: ActorNum, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: TargetEscapedRadius, param_offset: 0xc0} +- {type: static_param, param_type: const bool*, param_name: IsRemainNum, param_offset: 0xc8} +AlertCreationNestOnTree: +- {type: call, fn: _ZN5uking2ai18CreationNestOnTree11loadParams_Ev, addr: 0x710035aca0} +- {type: static_param, param_type: const int*, param_name: CreateIntervalTime, param_offset: 0x1f8} +AmbushableWeaponShoot: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +RangeSelectAction: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsSelectEveryFrame, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsRangeXZ, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +RangeSelectTwoAction: +- {type: call, fn: _ZN5uking2ai17RangeSelectAction11loadParams_Ev, addr: 0x7100539f98} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x60} +AnchorRangeSelectTwoAction: +- {type: call, fn: _ZN5uking2ai20RangeSelectTwoAction11loadParams_Ev, addr: 0x710053a9f8} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x78} +SimpleLiftable: [] +AncientNecklaceBallBase: +- {type: static_param, param_type: const bool*, param_name: IsIgnoreSameOnAS, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreSameOffAS, param_offset: 0xd0} +- {type: static_param, param_type: 'sead::SafeString', param_name: OnAS, param_offset: 0xd8} +- {type: static_param, param_type: 'sead::SafeString', param_name: OffAS, param_offset: 0xe8} +AncientNecklaceBall: +- {type: call, fn: _ZN5uking2ai23AncientNecklaceBallBase11loadParams_Ev, addr: 0x71004f6cc8} +- {type: static_param, param_type: const float*, param_name: LandNoiseLevel, param_offset: 0x100} +- {type: map_unit_param, param_type: const int*, param_name: GrabNodeIndex, param_offset: 0x108} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GiantNecklaceActiveSaveFlag, param_offset: 0x110} +AnimalAttackOtherTarget: [] +EnemyBattle: +- {type: static_param, param_type: const int*, param_name: RetFrmGrdAtkTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: RetFrmGrdAtkPrcTimer, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: RetFrmDmgAtkTimer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: GlobalNoAtkTime, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: GlobalNoAtkTimeRnd, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackAngle, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: DisplayCheckRadius, param_offset: 0x70} +- {type: static_param, param_type: const bool*, param_name: IsUpdateNoticeState, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsCheckLineReachable, param_offset: 0x80} +AnimalBattleAggressive: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: ForceAttackTimer, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: CounterAttackTimer, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: ForceAttackRange, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: CounterAttackRange, param_offset: 0xa8} +- {type: aitree_variable, param_type: bool*, param_name: AnimalEnableCounterFlag, param_offset: 0xb0} +AnimalBattleMoveLeave: +- {type: static_param, param_type: const float*, param_name: CheckForwardDist, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +AnimalRoamBase: +- {type: static_param, param_type: const float*, param_name: SearchNextPathRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RadiusLimit, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ForwardDirDistCoefficient, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: DirRandomMinRatio, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: DirRangeAngle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: RejectDistRatio, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: ContinueAddSearchAngle, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: ContinueReduceDistRatio, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ContinueReduceRejectDistRatio, param_offset: 0x78} +- {type: map_unit_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x80} +- {type: map_unit_param, param_type: const bool*, param_name: EnableNoEntryAreaCheck, param_offset: 0x88} +- {type: aitree_variable, param_type: float*, param_name: FramesStuckOnTerrain, param_offset: 0x90} +- {type: aitree_variable, param_type: bool*, param_name: IsStuckOnTerrain, param_offset: 0x98} +AnimalEscapeAI: +- {type: call, fn: _ZN5uking2ai14AnimalRoamBase11loadParams_Ev, addr: 0x710030a734} +- {type: static_param, param_type: const int*, param_name: NumTimesAllowStuck, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: ContinueDistance, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: ShouldEscapeDistance, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: ShouldEscapeDistanceRand, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: PenaltyScale, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: NavMeshRadiusScale, param_offset: 0xd0} +- {type: static_param, param_type: const float*, param_name: FramesStuckOnTerrainAction, param_offset: 0xd8} +- {type: static_param, param_type: const bool*, param_name: IsSendGoalPos, param_offset: 0xe0} +- {type: static_param, param_type: const bool*, param_name: IsUseBeforeAction, param_offset: 0xe8} +- {type: static_param, param_type: const bool*, param_name: IsDynamicallyOffsetNavChar, param_offset: 0xf0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xf8} +- {type: aitree_variable, param_type: bool*, param_name: IsUseTerritory, param_offset: 0x100} +AnimalEscapeAfterDamage: +- {type: call, fn: _ZN5uking2ai14AnimalEscapeAI11loadParams_Ev, addr: 0x710030602c} +HorseFollow: +- {type: static_param, param_type: const float*, param_name: DistanceSuccessEnd, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DistanceMovingToward, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DistanceRequestingPath, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: DistanceGivingUp, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: DistanceThresholdCry, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: DistanceCheckAvoidance, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: TargetVelocitySuccessEnd, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: UpdateTargetPosFrames, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: UpdateTargetPosFramesNear, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: SuccessEndDelays, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: SideDistance, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: TargetVelocityDistanceSec, param_offset: 0x90} +- {type: static_param, param_type: const bool*, param_name: IsAvoidNavMeshActor, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: IsTargetPosEqualToLeaderPos, param_offset: 0xa0} +- {type: static_param, param_type: const bool*, param_name: CanIgnorePlayer, param_offset: 0xa8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: SelfPositionOffsetLocal, param_offset: 0xb0} +- {type: dynamic_param, param_type: float*, param_name: DistanceKept, param_offset: 0xb8} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0xc0} +AnimalFollowTarget: +- {type: call, fn: _ZN5uking2ai11HorseFollow11loadParams_Ev, addr: 0x7100437a5c} +- {type: static_param, param_type: const int*, param_name: UseLocalOffsetType, param_offset: 0xe0} +AnimalLineOfSightSelector: +- {type: static_param, param_type: const int*, param_name: StartGear, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MinGear, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: MaxGear, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: GearUpRestrictionFrames, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +AnimalPreAttack: +- {type: static_param, param_type: const int*, param_name: ForceEndTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: KeepDistCheckLength, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BackCliffCheckLength, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +AnimalRangeKeepMove: +- {type: static_param, param_type: const int*, param_name: BattleEndTimerMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: BattleEndTimerMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CloseStartDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CloseEndDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LeaveStartDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: LeaveEndDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: BattleEndDist, param_offset: 0x68} +AnimalRangeKeepMoveWithLOS: +- {type: static_param, param_type: const int*, param_name: FindPathBeginTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: NoPathTimer, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CloseStartDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CloseEndDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LeaveStartDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: LeaveEndDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: BattleEndDist, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: DistFailOnUnreachablePath, param_offset: 0x70} +AnimalRoam: +- {type: call, fn: _ZN5uking2ai14AnimalRoamBase11loadParams_Ev, addr: 0x710030a734} +- {type: static_param, param_type: const int*, param_name: FinishChangeCount, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: LimitRadius, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: ChangeWaitRate, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: FramesStuckOnTerrainAction, param_offset: 0xc0} +- {type: static_param, param_type: const bool*, param_name: IsSendGoalPos, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: CheckValidStartPos, param_offset: 0xd0} +- {type: static_param, param_type: const bool*, param_name: CheckLOS, param_offset: 0xd8} +AnimalRoamCheckWater: +- {type: call, fn: _ZN5uking2ai10AnimalRoam11loadParams_Ev, addr: 0x710030b49c} +- {type: static_param, param_type: const float*, param_name: WaterLevelLimitLower, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: WaterLevelLimitUpper, param_offset: 0x100} +AnimalRushAttack: +- {type: static_param, param_type: const int*, param_name: UpdateTargetPosTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttackPosOffsetLength, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +TimelineAI: +- {type: static_param, param_type: const int*, param_name: IntervalToCheckSchedule, param_offset: 0x38} +AnimalTimelineAI: +- {type: call, fn: _ZN5uking2ai10TimelineAI11loadParams_Ev, addr: 0x7100e1c440} +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: DomesticAnimalRailName, param_offset: 0x40} +AppearNearTarget: +- {type: static_param, param_type: const float*, param_name: Dist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TeraDist, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: NearCreateAppearID, param_offset: 0x48} +- {type: aitree_variable, param_type: bool*, param_name: IsStopFallCheck, param_offset: 0x50} +AppearFromTargetFrontAfterChase: +- {type: call, fn: _ZN5uking2ai16AppearNearTarget11loadParams_Ev, addr: 0x710030e73c} +- {type: static_param, param_type: const float*, param_name: AppearDist, param_offset: 0x90} +AppearFromTargetFrontGround: +- {type: call, fn: _ZN5uking2ai16AppearNearTarget11loadParams_Ev, addr: 0x710030e73c} +AppearNearTargetOutOfScrnGnd: +- {type: call, fn: _ZN5uking2ai16AppearNearTarget11loadParams_Ev, addr: 0x710030e73c} +ArmorSearchKorokRoot: +- {type: static_param, param_type: const float*, param_name: SearchKorokDis, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SearchRefreshFrame, param_offset: 0x40} +AroundEnemyCheckSelect: +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x38} +Arrow: [] +ArrowChargeAndShoot: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x50} +ArrowDelete: [] +CommonPickedItem: +- {type: static_param, param_type: const bool*, param_name: CanGetOnBurning, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsControlNoticeDo, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: GetAttKeyName, param_offset: 0x48} +- {type: map_unit_param, param_type: const bool*, param_name: IsPlayerPut, param_offset: 0x58} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: DropTable, param_offset: 0x60} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: DropActor, param_offset: 0x70} +- {type: aitree_variable, param_type: int*, param_name: GetNumLeft, param_offset: 0x80} +ArrowStickAndPick: +- {type: call, fn: _ZN5uking2ai16CommonPickedItem11loadParams_Ev, addr: 0x7100355b18} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: StickPos, param_offset: 0xe8} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: StickPosDiv, param_offset: 0xf0} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: StickActor, param_offset: 0xf8} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: StickBodyName, param_offset: 0x100} +AssassinBattle: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: TiredTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WarpDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BattleBaseDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FirstAttackResetDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BattleDistOutDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FirstAttackAngle, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: TiredDist, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: FirstAttackDist, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: NearTiredOffset, param_offset: 0x80} +- {type: map_unit_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x88} +EnemyRangeKeepMove: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: BackTimeMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: BackTimeMax, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: LeaveTimerMin, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: LeaveTimerMax, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: PosVibrateFrame, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: RotVelVibrateFrame, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: CloseDist, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: SpaceDist, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: SpaceAngle, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: NoMoveDist, param_offset: 0xc0} +- {type: static_param, param_type: const bool*, param_name: IsCheckBack, param_offset: 0xb0} +- {type: static_param, param_type: const bool*, param_name: IsCheckReachable, param_offset: 0xb8} +- {type: aitree_variable, param_type: void*, param_name: RefPosVibrateCheckerForAI, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: RefVelRotVibrateCheckerforAI, param_offset: 0x40} +AssassinBattleMove: +- {type: call, fn: _ZN5uking2ai18EnemyRangeKeepMove11loadParams_Ev, addr: 0x71003ad5bc} +- {type: static_param, param_type: const float*, param_name: WarpDist, param_offset: 0x110} +AssassinBattleRange: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: ScapeGoatCheckInterval, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: ServiceCheckInterval, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: ServicePer, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: ScapeGoatPer, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: ServiceDist, param_offset: 0xb0} +AssassinBossAttackSeq: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +AssassinBossBattle: +- {type: static_param, param_type: const int*, param_name: RetFrmDmgAtkTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: IntervalIntensity, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: HomeDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BattleDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: DyingLifeRatio, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BattleDistSecond, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ReturnHeight, param_offset: 0x68} +SimpleEscapeFromTarget: +- {type: static_param, param_type: const int*, param_name: KeepTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SpaceDist, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +AssassinBossEscapeFromTarget: +- {type: call, fn: _ZN5uking2ai22SimpleEscapeFromTarget11loadParams_Ev, addr: 0x710056d628} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x68} +AssassinBossFirstBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: IronBallNum, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: IronBallKeyName, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: GuardAngle, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: AttackInterseptDist, param_offset: 0xa0} +AssassinBossFirstBattleMove: +- {type: static_param, param_type: const float*, param_name: DistXZ, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CheckTargetDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TooFarXZ, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x50} +AssassinBossFirstRangeKeepMove: +- {type: call, fn: _ZN5uking2ai18EnemyRangeKeepMove11loadParams_Ev, addr: 0x71003ad5bc} +- {type: static_param, param_type: const float*, param_name: NoMoveAnchorDist, param_offset: 0x110} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x118} +AssassinBossRootBase: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const float*, param_name: ChangeModeLifeRatio, param_offset: 0x1e0} +- {type: static_param, param_type: const int*, param_name: RockBallDamage, param_offset: 0x1d8} +AssassinBossFirstRoot: +- {type: call, fn: _ZN5uking2ai20AssassinBossRootBase11loadParams_Ev, addr: 0x710031bb4c} +AssassinBossIronBallAttack: +- {type: static_param, param_type: const int*, param_name: IronBallNum, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: IronBallPartsName, param_offset: 0x40} +AssassinBossLastAttack: +- {type: call, fn: _ZN5uking2ai26AssassinBossIronBallAttack11loadParams_Ev, addr: 0x7100318cc4} +AssassinBossRoot: +- {type: call, fn: _ZN5uking2ai20AssassinBossRootBase11loadParams_Ev, addr: 0x710031bb4c} +- {type: static_param, param_type: const int*, param_name: IronBallNum, param_offset: 0x2b0} +- {type: static_param, param_type: const int*, param_name: BattleAvoidNum, param_offset: 0x2b8} +EnemyCalledAppear: [] +AssassinCallSelect: +- {type: call, fn: _ZN5uking2ai17EnemyCalledAppear11loadParams_Ev, addr: 0x710038306c} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChangeDemoName, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChangeDemoEPName, param_offset: 0x48} +AssassinFieldShooterBattleBase: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: TiredTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WarpDistNear, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: WarpDistFar, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: TerritoryDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: TiredGrHeight, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: IntervalIntensity, param_offset: 0x68} +AssassinFieldShooterBattle: +- {type: call, fn: _ZN5uking2ai30AssassinFieldShooterBattleBase11loadParams_Ev, addr: 0x710032267c} +EnemyNormal: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: SoundLostTimer, param_offset: 0x78} +- {type: static_param, param_type: const int*, param_name: NoActionReactTimeMin, param_offset: 0x80} +- {type: static_param, param_type: const int*, param_name: NoActionReactTimeMax, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: NpcTerritoryArea, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: NoPlayerTerritoryArea, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: SpreadDist, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: EnlargeAwnRatio, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: NoticeTerrorLevel, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: SpeadDist2, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: HomePosRadius, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: SubsTerritoryArea, param_offset: 0xd0} +- {type: static_param, param_type: const float*, param_name: LostExtinguishFireDist, param_offset: 0xd8} +- {type: static_param, param_type: const float*, param_name: ShortRangeTerritoryArea, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: CloseRangeTerritoryArea, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: PressBreakObject, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: TerritoryHeight, param_offset: 0xf8} +- {type: static_param, param_type: const bool*, param_name: IsMindDoubtTarget, param_offset: 0x100} +- {type: static_param, param_type: 'sead::SafeString', param_name: FortressTag, param_offset: 0x108} +- {type: map_unit_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x118} +- {type: aitree_variable, param_type: int*, param_name: PlayerSoundSealRefCount, param_offset: 0x38} +- {type: aitree_variable, param_type: int*, param_name: SealNoPlayerAwnRequestCount, param_offset: 0x40} +LandHumEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: TerrorIgnoreDist, param_offset: 0x3d0} +- {type: static_param, param_type: const float*, param_name: ExplosivesSearchDist, param_offset: 0x3d8} +- {type: static_param, param_type: const float*, param_name: ExplosivesSearchSpeed, param_offset: 0x3e0} +- {type: static_param, param_type: const float*, param_name: ExplosivesSearchAng, param_offset: 0x3e8} +AssassinNormal: +- {type: call, fn: _ZN5uking2ai18LandHumEnemyNormal11loadParams_Ev, addr: 0x7100462d90} +AssassinMiddleAzitoRoot: +- {type: call, fn: _ZN5uking2ai14AssassinNormal11loadParams_Ev, addr: 0x710040ce80} +- {type: static_param, param_type: 'sead::SafeString', param_name: EntryPoint, param_offset: 0x420} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x430} +- {type: static_param, param_type: 'sead::SafeString', param_name: LikeItem, param_offset: 0x440} +AssassinMiddleAzitoDlcRoot: +- {type: call, fn: _ZN5uking2ai23AssassinMiddleAzitoRoot11loadParams_Ev, addr: 0x710031ece0} +AssassinMiddleAzitoNoMemberDemo: +- {type: static_param, param_type: const int*, param_name: DelayTimeMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: DelayTimeMax, param_offset: 0x40} +AssassinMiddleRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const int*, param_name: PodModelUnitIdx, param_offset: 0x1d8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PodNodeName, param_offset: 0x1e0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: SheathOffset, param_offset: 0x200} +- {type: static_param, param_type: 'sead::SafeString', param_name: MagicUsePartsName, param_offset: 0x1f0} +AssassinMiddleAzitoRootAccept: +- {type: call, fn: _ZN5uking2ai18AssassinMiddleRoot11loadParams_Ev, addr: 0x710032138c} +- {type: static_param, param_type: 'sead::SafeString', param_name: EntryPoint, param_offset: 0x340} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x350} +TargetActorGrabAdapter: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x38} +AssassinMiddleDlcGrabAdapter: +- {type: call, fn: _ZN5uking2ai22TargetActorGrabAdapter11loadParams_Ev, addr: 0x71005ba8d8} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x40} +TargetInAreaSelect: +- {type: static_param, param_type: const int*, param_name: Option, param_offset: 0x38} +AssassinMagicTgtSelect: +- {type: call, fn: _ZN5uking2ai18TargetInAreaSelect11loadParams_Ev, addr: 0x71005bfe60} +- {type: static_param, param_type: const float*, param_name: Height, param_offset: 0x40} +AssassinMiddleMagicAfter: +- {type: call, fn: _ZN5uking2ai22AssassinMagicTgtSelect11loadParams_Ev, addr: 0x71005befc8} +- {type: aitree_variable, param_type: bool*, param_name: IsInterseptAttack, param_offset: 0x50} +NPCRoot: +- {type: static_param, param_type: const int*, param_name: ReleaseInterest2Time, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: PlayerHitVelocity, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: StaggerUpperASName, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: StaggerUpperRunASName, param_offset: 0x58} +AssassinRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +- {type: static_param, param_type: const float*, param_name: ChangeDistance, param_offset: 0x238} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem1, param_offset: 0x240} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem2, param_offset: 0x250} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem3, param_offset: 0x260} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem4, param_offset: 0x270} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: RideHorseName, param_offset: 0x280} +RememberMesOneActorEnemyRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: 'sead::SafeString', param_name: RememberKey, param_offset: 0x1d8} +AssassinShooterJuniorAzitoRoot: +- {type: call, fn: _ZN5uking2ai28RememberMesOneActorEnemyRoot11loadParams_Ev, addr: 0x710054f7d4} +AttackGrave: [] +AttackGraveChase: +- {type: static_param, param_type: const int*, param_name: ActionTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: NearTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EndHeight, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EndNear, param_offset: 0x50} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +AttackGraveChaseWithSensor: +- {type: call, fn: _ZN5uking2ai16AttackGraveChase11loadParams_Ev, addr: 0x7100324a40} +- {type: static_param, param_type: 'sead::SafeString', param_name: RigidBodyGroupName, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: RigidBodyName, param_offset: 0x78} +AttackHitCheck: +- {type: static_param, param_type: const int*, param_name: AtkType, param_offset: 0x38} +AwarenessScale: +- {type: static_param, param_type: const float*, param_name: Scale, param_offset: 0x38} +BackAttackEnemyBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const float*, param_name: BackAttackAngle, param_offset: 0x90} +BackStepAndAttack: +- {type: static_param, param_type: const int*, param_name: BackStepMax, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: TurnRepeatMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BackStepMinDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BackStepDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NoBackStepRange, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +BalloonPlantNormal: +- {type: static_param, param_type: const float*, param_name: RopeLength, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: RopeActorName, param_offset: 0x40} +BarrelBomb: +- {type: map_unit_param, param_type: const bool*, param_name: IsFixedPlace, param_offset: 0xc8} +BasicStatusRoot: [] +BattleBgmRequestFinishTag: [] +BeamExplodeBase: +- {type: static_param, param_type: const float*, param_name: MaxDistance, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsDelete, param_offset: 0x40} +BeamExplode: +- {type: call, fn: _ZN5uking2ai15BeamExplodeBase11loadParams_Ev, addr: 0x710056cae0} +BeamExplodeEitherHit: +- {type: call, fn: _ZN5uking2ai11BeamExplode11loadParams_Ev, addr: 0x7100328d08} +- {type: aitree_variable, param_type: bool*, param_name: IsReflectThrownBullet, param_offset: 0x58} +BeamosCarried: +- {type: call, fn: _ZN5uking2ai10AddCarried11loadParams_Ev, addr: 0x71002f6c8c} +- {type: aitree_variable, param_type: void*, param_name: BeamActorLink, param_offset: 0x160} +BeeBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +EnemyBaseFindPlayer: +- {type: static_param, param_type: const int*, param_name: SurpriseAttackPer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: SurpriseAttackTime, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: SurpriseAttackTimeRand, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: RerouteTimeMin, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: RerouteTimeMax, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: RestreintTime, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: RetTiredFromTime, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: SurpriseAttackRange, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: AttackRange, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: AttackVMin, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AttackVMax, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: SwiftAttackVMin, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: SwiftAttackVMax, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: RestreintTiredDist, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: ForceFirstAttackDist, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: RetForceFirstAttackDist, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: PathTooLongDist, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: NoSearchFromTiredDist, param_offset: 0xd0} +- {type: aitree_variable, param_type: bool*, param_name: IsTryingReturnRestreint, param_offset: 0xd8} +FlyingEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +BeeSwarmFindPlayer: +- {type: call, fn: _ZN5uking2ai21FlyingEnemyFindPlayer11loadParams_Ev, addr: 0x71003d2d18} +BeeSwarmNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +BeeSwarmReaction: [] +SwarmRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: 'sead::SafeString', param_name: ASName, param_offset: 0x1d8} +BeeSwarmRoot: +- {type: call, fn: _ZN5uking2ai9SwarmRoot11loadParams_Ev, addr: 0x71005b2ee8} +BirdDead: +- {type: static_param, param_type: const float*, param_name: GravityScale, param_offset: 0x38} +BirdEscape: +- {type: static_param, param_type: const int*, param_name: ForceEndTimer, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsUseEscapeBefore, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsUseEscapeEnd, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: map_unit_param, param_type: const bool*, param_name: IsLocatorCreate, param_offset: 0x58} +BlownOff: +- {type: static_param, param_type: const float*, param_name: DrownDepth, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsForceGetUp, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsIceBreak, param_offset: 0x48} +BocoblinBackStepAttack: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: dynamic_param, param_type: int*, param_name: AttackPer, param_offset: 0x40} +BokoblinArrowAttack: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BackWalkStartDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BackWalkEndDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CliffCheckDist, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +BokoblinArrowBattle: +- {type: static_param, param_type: const int*, param_name: HoldInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: HoldIntervalLast, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: HoldIntervalRand, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LeaveStartDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LeaveEndDist, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: LeaveWaitTime, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: LeaveTime, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: OutDistVMin, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: OutDistVMax, param_offset: 0x88} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: LeaveTime, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: BlindlyAttackMinNum, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: BlindlyAttackMaxNum, param_offset: 0xa0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: ShootDistRatio, param_offset: 0xb0} +- {type: static_param, param_type: const bool*, param_name: IsEndAfterAttack, param_offset: 0xb8} +- {type: static_param, param_type: const bool*, param_name: IsUpdateNoticeState, param_offset: 0xc0} +BokoblinHoldArrow: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +BokoblinNoise: +- {type: static_param, param_type: const int*, param_name: MaxContinueNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: EnterNoiseRate, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +BokoblinRestraint: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x60} +BokoblinRoam: +- {type: static_param, param_type: const int*, param_name: FreeIntervalMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: FreeIntervalMax, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: FreePer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: MoveIntervalMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: MoveIntervalMax, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: NoMoveTime, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: SpAttackServiceTime, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: NoSpAttackMoveTime, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: Territory, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: TargetDistMin, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: TargetDistMax, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: SpAttackServiceDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: SpAttackServiceAngle, param_offset: 0x98} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: TurnCheckDist, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: TurnCheckHeight, param_offset: 0xb0} +BossBattleRoomRoot: +- {type: static_param, param_type: const int*, param_name: FramesRollKeepSecond, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: NumTimesRoll, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TitleAngle, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RollAngle, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FramesRotate, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: FramesReset, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FramesRoll, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: FramesDelayRoll, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: FramesRollKeepFirst, param_offset: 0x78} +BowEquiped: [] +BowShoot: [] +BowlPin: +- {type: static_param, param_type: const float*, param_name: Degree, param_offset: 0x38} +BoxWaterRoot: +- {type: map_unit_param, param_type: const int*, param_name: WaterMaterial, param_offset: 0x70} +- {type: map_unit_param, param_type: const float*, param_name: FlowSpeedFactor, param_offset: 0x78} +- {type: map_unit_param, param_type: const float*, param_name: WaterfallRadius, param_offset: 0x80} +- {type: map_unit_param, param_type: const float*, param_name: WaterfallLength, param_offset: 0x88} +- {type: map_unit_param, param_type: const float*, param_name: WaterfallThickness, param_offset: 0x90} +- {type: map_unit_param, param_type: const float*, param_name: WaterfallAngle, param_offset: 0x98} +- {type: map_unit_param, param_type: const int*, param_name: SoundInDoorType, param_offset: 0xa0} +BreathAttackEnemyBattle: +- {type: static_param, param_type: const int*, param_name: EnlargeTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttackAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AttackRatio, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BreathSize, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: GlobalNoAtkTime, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsEndAfterAttack, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsDeleteBreath, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathName, param_offset: 0x80} +- {type: static_param, param_type: const bool*, param_name: IsUpdateNoticeState, param_offset: 0x78} +BreathEnemyRangeKeepMove: +- {type: call, fn: _ZN5uking2ai18EnemyRangeKeepMove11loadParams_Ev, addr: 0x71003ad5bc} +- {type: static_param, param_type: const int*, param_name: EnlargeTime, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: AttackRatio, param_offset: 0x118} +- {type: static_param, param_type: const float*, param_name: BreathSize, param_offset: 0x120} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathName, param_offset: 0x128} +- {type: static_param, param_type: 'sead::SafeString', param_name: BaseNode, param_offset: 0x138} +- {type: static_param, param_type: const int*, param_name: LoopTime, param_offset: 0x148} +- {type: static_param, param_type: const float*, param_name: BreathEndDist, param_offset: 0x150} +- {type: static_param, param_type: const int*, param_name: BreathMinTime, param_offset: 0x158} +CalledEnemyMove: +- {type: static_param, param_type: const float*, param_name: LostDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: WaitDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x48} +CameraAI: [] +CameraBow: [] +CameraEditRoot: [] +CameraEvent: [] +CameraEventReturnSavePoint: [] +CameraEventTalk: [] +CameraEventTalkAI: [] +CameraEventTalkAIRet: [] +CameraGameRoot: [] +CameraRoot: [] +CameraTool: [] +CannonBallRoot: [] +CapturedActDeadSelector: +- {type: map_unit_param, param_type: const bool*, param_name: IsPlayerPut, param_offset: 0x38} +- {type: call, fn: _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE, addr: 0x7100d66968} +CapturedActorReaction: [] +CapturedActorReactionChemical: +- {type: static_param, param_type: const bool*, param_name: OnEnterOnly, param_offset: 0x38} +CarryBox: [] +LynelBattle: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CloseBattleRepeatMax, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ThroughAttackRepeatNum, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CloseBattleStartDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CloseBattleStartAngle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: HornAttackRate, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: RoarRate, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: BreathStartLifeRate, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: RoarStartLifeRate, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: BattleEndDist, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: SkipBreathRoarRate, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: RoarFlamePartsKey, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey0, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey1, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey2, param_offset: 0xc0} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0xd0} +CastleLynelBattle: +- {type: call, fn: _ZN5uking2ai11LynelBattle11loadParams_Ev, addr: 0x710048df50} +ChangeWeatherTagRoot: +- {type: map_unit_param, param_type: const int*, param_name: Weather, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: WeatherEff, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: PaletteSel, param_offset: 0x48} +- {type: map_unit_param, param_type: const int*, param_name: PSelSpeed, param_offset: 0x50} +- {type: map_unit_param, param_type: const int*, param_name: IgnitedLevel, param_offset: 0x58} +- {type: map_unit_param, param_type: const float*, param_name: TemperatureDay, param_offset: 0x60} +- {type: map_unit_param, param_type: const float*, param_name: TemperatureNight, param_offset: 0x68} +- {type: map_unit_param, param_type: const float*, param_name: TemperatureDirectDay, param_offset: 0x70} +- {type: map_unit_param, param_type: const float*, param_name: TemperatureDirectNight, param_offset: 0x78} +- {type: map_unit_param, param_type: const bool*, param_name: CloudShadowOff, param_offset: 0x80} +- {type: map_unit_param, param_type: const bool*, param_name: BluffThunderOff, param_offset: 0x88} +- {type: map_unit_param, param_type: const bool*, param_name: FogMinusCorrection, param_offset: 0x90} +ChangeWindTagRoot: +- {type: map_unit_param, param_type: const int*, param_name: Direction, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: WindSpeed, param_offset: 0x40} +ChaseSound: +- {type: static_param, param_type: const int*, param_name: TargetUpdateIntervalMin, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: TargetUpdateIntervalMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TurnDir, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: UseViewPointSimpleOffset, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +LandHumEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidDist, param_offset: 0x150} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidSpeed, param_offset: 0x158} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidAng, param_offset: 0x160} +- {type: static_param, param_type: const float*, param_name: ChemicalSearchDist, param_offset: 0x168} +- {type: static_param, param_type: const float*, param_name: NoSearchDist, param_offset: 0x170} +- {type: static_param, param_type: const float*, param_name: Voltage, param_offset: 0x178} +- {type: static_param, param_type: const float*, param_name: ChemicalActionDist, param_offset: 0x180} +- {type: static_param, param_type: const int*, param_name: ThrowWeaponPer, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: ThrowWeaponDist, param_offset: 0x188} +- {type: static_param, param_type: const int*, param_name: NoChemSearchWpIdx, param_offset: 0x148} +- {type: static_param, param_type: const float*, param_name: NoBurnWaterDepth, param_offset: 0x190} +- {type: static_param, param_type: const float*, param_name: NearScaffoldDist, param_offset: 0x198} +- {type: static_param, param_type: const float*, param_name: ClimbVmin, param_offset: 0x1a0} +- {type: static_param, param_type: const float*, param_name: ClimbVmax, param_offset: 0x1a8} +- {type: static_param, param_type: const float*, param_name: ClimbHmax, param_offset: 0x1b0} +ChemicalEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai22LandHumEnemyFindPlayer11loadParams_Ev, addr: 0x710046274c} +ChemicalEnemyRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const bool*, param_name: IsElementNoHit, param_offset: 0x1d8} +- {type: static_param, param_type: const bool*, param_name: IsElectricWater, param_offset: 0x1e0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ColorASName, param_offset: 0x1e8} +ChemicalExplode: [] +GiantArmorRoot: [] +ChemicalGiantArmorRoot: +- {type: call, fn: _ZN5uking2ai14GiantArmorRoot11loadParams_Ev, addr: 0x71003f63fc} +- {type: static_param, param_type: const int*, param_name: ElectricTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ElectricDamageScale, param_offset: 0x40} +ChemicalStayObjectRoot: +- {type: static_param, param_type: const bool*, param_name: IsCheckDelete, param_offset: 0x38} +ChemicalWeaponRoot: [] +WithoutWeaponArrow: +- {type: static_param, param_type: const int*, param_name: AtAttr, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: StickTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Accel, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AimSpeed, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FallAccel, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: FallAimSpeed, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: Gravity, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AtRange, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: AtImpulse, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AtImpact, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: ReflectDamageRate, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: CanReflect, param_offset: 0x90} +- {type: static_param, param_type: const bool*, param_name: IsReflectToParent, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: IsDelete, param_offset: 0xa0} +- {type: static_param, param_type: const bool*, param_name: IsBreakIceBlock, param_offset: 0xa8} +- {type: static_param, param_type: const bool*, param_name: IsAtHitPlayerIgnore, param_offset: 0xb0} +- {type: static_param, param_type: const bool*, param_name: IsDeleteAtHit, param_offset: 0xb8} +- {type: static_param, param_type: 'sead::SafeString', param_name: BindNodeName, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: CallHitSEKey, param_offset: 0xd0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReflectOffset, param_offset: 0xe0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: RotOffset, param_offset: 0xe8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: TransOffset, param_offset: 0xf0} +- {type: map_unit_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0xf8} +- {type: map_unit_param, param_type: const int*, param_name: AttackPower, param_offset: 0x100} +ChildDeviceReflectArrow: +- {type: call, fn: _ZN5uking2ai18WithoutWeaponArrow11loadParams_Ev, addr: 0x71005f8160} +- {type: static_param, param_type: const int*, param_name: ReflectCountMax, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: ReflectAimSpeed, param_offset: 0x148} +- {type: static_param, param_type: const float*, param_name: ReflectAccel, param_offset: 0x150} +ChildFavoriteSelectorBase: +- {type: static_param, param_type: const bool*, param_name: IsNoChildForceEnd, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x40} +ChildFavoriteSelector: +- {type: call, fn: _ZN5uking2ai25ChildFavoriteSelectorBase11loadParams_Ev, addr: 0x710034ad58} +ChildHaveSelect: +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x38} +ChmCheck: +- {type: static_param, param_type: const int*, param_name: ChmType, param_offset: 0x38} +ChmVolRateCheck: +- {type: static_param, param_type: const float*, param_name: VolTh, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DebugScale, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: DebugDraw, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsInvalidBreakJudge, param_offset: 0x50} +- {type: map_unit_param, param_type: const int*, param_name: FreezeTarget, param_offset: 0x58} +- {type: map_unit_param, param_type: const float*, param_name: IceBreakScale, param_offset: 0x60} +ChmVolRateCheckBlankOk: +- {type: static_param, param_type: const float*, param_name: VolTh, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DebugScale, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: DebugDraw, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsInvalidBreakJudge, param_offset: 0x50} +- {type: map_unit_param, param_type: const int*, param_name: FreezeTarget, param_offset: 0x58} +- {type: map_unit_param, param_type: const float*, param_name: IceBreakScale, param_offset: 0x60} +DieSelect: [] +DieSelectChemicalPlus: +- {type: call, fn: _ZN5uking2ai9DieSelect11loadParams_Ev, addr: 0x710036119c} +ChuchuDieSelect: +- {type: call, fn: _ZN5uking2ai21DieSelectChemicalPlus11loadParams_Ev, addr: 0x710036171c} +ChuchuJellyRoot: +- {type: call, fn: _ZN5uking2ai8ItemRoot11loadParams_Ev, addr: 0x71004501f8} +NavMoveTarget: +- {type: static_param, param_type: const int*, param_name: VibrateCheckTime, param_offset: 0x348} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x320} +- {type: static_param, param_type: const float*, param_name: ReachTargetArea, param_offset: 0x328} +- {type: static_param, param_type: const float*, param_name: RepathTime, param_offset: 0x330} +- {type: static_param, param_type: const float*, param_name: TooFarDist, param_offset: 0x338} +- {type: static_param, param_type: const bool*, param_name: UseCharacterRadius, param_offset: 0x340} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x360} +- {type: aitree_variable, param_type: void*, param_name: RefPosVibrateCheckerForAI, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: RefVelRotVibrateCheckerforAI, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsLastLineReachCheck, param_offset: 0x358} +- {type: static_param, param_type: const int*, param_name: RotVibrateCheckTime, param_offset: 0x350} +ChuchuNavMoveTarget: +- {type: call, fn: _ZN5uking2ai13NavMoveTarget11loadParams_Ev, addr: 0x71004b79ac} +- {type: static_param, param_type: const int*, param_name: WallHitTime, param_offset: 0x380} +ChuchuRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const int*, param_name: SubASSlot, param_offset: 0x1d8} +- {type: static_param, param_type: const int*, param_name: ChemicalScaleTime, param_offset: 0x1e0} +- {type: static_param, param_type: const float*, param_name: ClothStiffness30, param_offset: 0x1e8} +- {type: static_param, param_type: const float*, param_name: ClothStiffness20, param_offset: 0x1f0} +- {type: static_param, param_type: 'sead::SafeString', param_name: SubAS, param_offset: 0x1f8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChemicalFieldKey, param_offset: 0x208} +- {type: call, fn: _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE, addr: 0x7100d66968} +ChuchuTypeSelect: [] +CircleMoveInFluid: +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RadiusX, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RadiusZ, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinRandRadiusRate, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: MaxRandRadiusRate, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AddAngleRateX, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AddAngleRateZ, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: RandRangeY, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: RandRangeYOffest, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: LimitSpeedMoveY, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: ChangeInterval, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: RandChangeInterval, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: ReverseMoveRate, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: IsSetSystemDeleteDistance, param_offset: 0xa0} +CircleMoveFlying: +- {type: call, fn: _ZN5uking2ai17CircleMoveInFluid11loadParams_Ev, addr: 0x710034fd30} +- {type: static_param, param_type: const bool*, param_name: IsCheckSafetyAreaRadius, param_offset: 0xe0} +- {type: static_param, param_type: const bool*, param_name: IsUseHomePos, param_offset: 0xe8} +CircleMoveInWater: +- {type: call, fn: _ZN5uking2ai17CircleMoveInFluid11loadParams_Ev, addr: 0x710034fd30} +- {type: static_param, param_type: const float*, param_name: AllowMoveWaterDepth, param_offset: 0xe0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xe8} +CircleMove: +- {type: static_param, param_type: const int*, param_name: Direction, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Radius, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RadiusMargin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x50} +CircleMovePos: +- {type: call, fn: _ZN5uking2ai10CircleMove11loadParams_Ev, addr: 0x710034f0d0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x60} +CircleMoveTarget: +- {type: call, fn: _ZN5uking2ai10CircleMove11loadParams_Ev, addr: 0x710034f0d0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +CliffCheckSelect: +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CheckAngle, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsSelectFirstTime, param_offset: 0x48} +CliffCheckTargetDirSelect: +- {type: call, fn: _ZN5uking2ai16CliffCheckSelect11loadParams_Ev, addr: 0x7100351430} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +CliffCheckToTargetPosDirSelect: +- {type: call, fn: _ZN5uking2ai16CliffCheckSelect11loadParams_Ev, addr: 0x7100351430} +CliffDistanceSelectThreeAction: +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearCliffDist, param_offset: 0x40} +CloseSmallAttackBase: +- {type: static_param, param_type: const float*, param_name: CloseRadius, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreSmallHit, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +CloseSmallAttack: [] +ClusterRenderCheckTag: [] +ColGroundHitSelect: +- {type: static_param, param_type: const bool*, param_name: IsCheckEachFrame, param_offset: 0x38} +CollaborationShootingStarRoot: +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: CollaboShootingStarId, param_offset: 0x38} +- {type: call, fn: _ZN4sead14SafeStringBaseIcEaSERKS1_, addr: 0x7100b0caa0} +- {type: call, fn: _ZNK4sead14SafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: call, fn: _ZN4sead9HashCRC3214calcStringHashEPKc, addr: 0x7100b2170c} +ConditionMoveActionSelect: +- {type: static_param, param_type: const bool*, param_name: CheckLineReachable, param_offset: 0x38} +- {type: dynamic_param, param_type: float*, param_name: DistanceKept, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x50} +CookPotRoot: +- {type: map_unit_param, param_type: const bool*, param_name: InitBurnState, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: CurrentCookResultHolder, param_offset: 0x40} +CountSelect: +- {type: static_param, param_type: const int*, param_name: Counter, param_offset: 0x38} +CreateActor: +- {type: static_param, param_type: const int*, param_name: CreatePriorityState, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Scale, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x48} +CreateCarryActor: +- {type: call, fn: _ZN5uking2ai11CreateActor11loadParams_Ev, addr: 0x710035953c} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: CarryActorName, param_offset: 0x68} +CreateOnFaceSelect: +- {type: map_unit_param, param_type: const bool*, param_name: IsCreateOnFace, param_offset: 0x38} +DamageAttrSelect: +- {type: static_param, param_type: const int*, param_name: KeyAttribute, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: Option, param_offset: 0x40} +DamageTypeSelect: +- {type: static_param, param_type: const int*, param_name: DamageType, param_offset: 0x38} +DangerAvoidFlagSelect: [] +DashAndAttack: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackFrame, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OffsetLR, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AttackRange, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: TiredAngle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: TargetSpeedClampMax, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsAbleSkipNear, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x78} +DeadOrOtherState: [] +DeadlyBlowWeaponRoot: +- {type: call, fn: _ZN5uking2ai12WeaponRootAI11loadParams_Ev, addr: 0x7100e1e510} +DefWanderAI: +- {type: static_param, param_type: const int*, param_name: FinishChangeCount, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ChangeWaitRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MaxWaitTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinWaitTime, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: CheckWaitIsChangable, param_offset: 0x58} +RailMoveRemains: +- {type: static_param, param_type: const float*, param_name: ReactivateTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FrontCheckMinDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FrontDirUpdateInterval, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: SpeedScale, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: InitPosByRailRatio, param_offset: 0x58} +DemoRailMoveRemains: +- {type: call, fn: _ZN5uking2ai15RailMoveRemains11loadParams_Ev, addr: 0x7100535d18} +- {type: dynamic_param, param_type: float*, param_name: DynSpeedScale, param_offset: 0x80} +- {type: dynamic_param, param_type: float*, param_name: DynInitPosByRailRatio, param_offset: 0x88} +DemoRootAI: [] +DgnObj_DLC_CWRotDirSwitch: [] +DgnObj_DLC_CogWheel2: +- {type: static_param, param_type: const bool*, param_name: CorrectConstraint, param_offset: 0x60} +- {type: map_unit_param, param_type: const float*, param_name: GearRatio, param_offset: 0x68} +- {type: map_unit_param, param_type: const bool*, param_name: RegistFromBeginning, param_offset: 0x70} +- {type: map_unit_param, param_type: const bool*, param_name: JoinSystemGroup, param_offset: 0x78} +- {type: aitree_variable, param_type: float*, param_name: RotationOffset, param_offset: 0x80} +DgnObj_DLC_CW_WithEntityBody00: +- {type: call, fn: _ZN5uking2ai20DgnObj_DLC_CogWheel211loadParams_Ev, addr: 0x710035e86c} +DgnObj_DLC_CogWheel_Physics_Ctr: +- {type: static_param, param_type: const bool*, param_name: StateRot, param_offset: 0x38} +DgnObj_DLC_DungeonRotateTag: +- {type: map_unit_param, param_type: const float*, param_name: GearRatio, param_offset: 0x38} +- {type: map_unit_param, param_type: const bool*, param_name: RegistFromBeginning, param_offset: 0x40} +- {type: aitree_variable, param_type: float*, param_name: RotationOffset, param_offset: 0x48} +DgnObj_DLC_Faucet: [] +DgnObj_DLC_SliderBlock: [] +DieSelectBombPlus: +- {type: call, fn: _ZN5uking2ai9DieSelect11loadParams_Ev, addr: 0x710036119c} +DieSelectChemShockPlus: +- {type: call, fn: _ZN5uking2ai21DieSelectChemicalPlus11loadParams_Ev, addr: 0x710036171c} +DisplaySelect: +- {type: static_param, param_type: const float*, param_name: Radius, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x40} +WaitNearTarget: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: StartCloseDistOffset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OutDistOffset, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsCheckLineReachableForClose, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +DistanceKeepMove: +- {type: call, fn: _ZN5uking2ai14WaitNearTarget11loadParams_Ev, addr: 0x71005e9560} +- {type: static_param, param_type: const float*, param_name: StartBackDistOffset, param_offset: 0x68} +DistanceLostCheck: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AddAwarenessRangeType, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +DoChangeOneTime: [] +PreyNormal: +- {type: static_param, param_type: const float*, param_name: ChangeBattleStateRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CounterAttackRadius, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CounterAttackRate, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AddCautionLevelVal, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AutoReduceCautionLevelVal, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: LimitOverReduceCautionLevelVal, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AwnRangeScaleWhenAttention, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: TargetLostTime, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: AllowRoarRadius, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: EscapeWaterFlowLimit, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: NewFoodAddTime, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: IsUseEscapeState, param_offset: 0x90} +- {type: static_param, param_type: const bool*, param_name: IsPositiveAttacker, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: IsSearchTarget, param_offset: 0xa0} +- {type: static_param, param_type: const bool*, param_name: IsEmitForceEscapeSignal, param_offset: 0xa8} +- {type: static_param, param_type: const bool*, param_name: IsReceivedForceEscapeSignal, param_offset: 0xb0} +- {type: static_param, param_type: const bool*, param_name: IsCheckSandStorm, param_offset: 0xb8} +- {type: map_unit_param, param_type: const bool*, param_name: IsLocatorCreate, param_offset: 0xc0} +- {type: map_unit_param, param_type: const bool*, param_name: EnableNoEntryAreaCheck, param_offset: 0xc8} +DomesticNormal: +- {type: call, fn: _ZN5uking2ai10PreyNormal11loadParams_Ev, addr: 0x71004ff008} +- {type: static_param, param_type: const int*, param_name: WaitFramesAfterRunMax, param_offset: 0x340} +- {type: static_param, param_type: const int*, param_name: NumFailPathHomeFadeout, param_offset: 0x348} +- {type: static_param, param_type: const float*, param_name: DistUntilReturnToHomePos, param_offset: 0x350} +- {type: static_param, param_type: const float*, param_name: WaitFramesAfterRunMin, param_offset: 0x358} +- {type: static_param, param_type: const float*, param_name: StaggerVelocityThreshold, param_offset: 0x360} +- {type: static_param, param_type: const float*, param_name: DistHomePosFadeout, param_offset: 0x368} +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: DomesticAnimalRailName, param_offset: 0x370} +DogNormal: +- {type: call, fn: _ZN5uking2ai14DomesticNormal11loadParams_Ev, addr: 0x71003658c0} +- {type: static_param, param_type: const int*, param_name: NumFriendlyFoodForLeadTreasure, param_offset: 0x3a0} +- {type: static_param, param_type: const float*, param_name: MaxFollowDist, param_offset: 0x3a8} +- {type: static_param, param_type: const float*, param_name: MaxFollowFriendDecayRate, param_offset: 0x3b0} +- {type: static_param, param_type: const float*, param_name: FoodFriendRate, param_offset: 0x3b8} +- {type: static_param, param_type: const float*, param_name: FoodFriendDist, param_offset: 0x3c0} +- {type: static_param, param_type: const float*, param_name: NearFriendRate, param_offset: 0x3c8} +- {type: static_param, param_type: const float*, param_name: NearFriendDist, param_offset: 0x3d0} +- {type: static_param, param_type: const float*, param_name: FarFriendDecayRate, param_offset: 0x3d8} +- {type: static_param, param_type: const float*, param_name: FarFriendDist, param_offset: 0x3e0} +- {type: static_param, param_type: const float*, param_name: FarFriendFriendlyDist, param_offset: 0x3e8} +- {type: static_param, param_type: const float*, param_name: AttackFriendDecayRate, param_offset: 0x3f0} +- {type: static_param, param_type: const float*, param_name: FriendTickRate, param_offset: 0x3f8} +- {type: static_param, param_type: const float*, param_name: NoMoveFriendDecayRate, param_offset: 0x400} +- {type: static_param, param_type: const float*, param_name: NoMoveThreshold, param_offset: 0x408} +- {type: static_param, param_type: const float*, param_name: FramesKeepMaxFriendly, param_offset: 0x410} +- {type: static_param, param_type: const float*, param_name: FramesStayAfterLead, param_offset: 0x418} +- {type: static_param, param_type: const float*, param_name: AngleTurnToPlayer, param_offset: 0x420} +DominoRoot: +- {type: static_param, param_type: const float*, param_name: PointVelTh, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LinearRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AngRate, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CheckHeightRate, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: Friction, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreWater, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: IsBreakable, param_offset: 0x68} +- {type: map_unit_param, param_type: const bool*, param_name: EnableToEmitSpEffect, param_offset: 0x70} +DoorRoot: +- {type: static_param, param_type: const float*, param_name: CloseWaitFrame, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCheckBack, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: Open_L_AS, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: Open_R_AS, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: Close_L_AS, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: Close_R_AS, param_offset: 0x78} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: NpcCanOpenFlag, param_offset: 0x88} +- {type: aitree_variable, param_type: bool*, param_name: IsOpenDoor, param_offset: 0x98} +- {type: aitree_variable, param_type: bool*, param_name: IsOpenToInside, param_offset: 0xa0} +DoubtItemSubTargetSelect: [] +DragonDropItemTargetRootAI: [] +DragonRootBase: [] +DragonRoot: +- {type: call, fn: _ZN5uking2ai14DragonRootBase11loadParams_Ev, addr: 0x710035714c} +- {type: static_param, param_type: const int*, param_name: ChemicalBulletRate, param_offset: 0xc0} +- {type: static_param, param_type: const int*, param_name: ChemicalBulletNum, param_offset: 0xc8} +- {type: static_param, param_type: const int*, param_name: UpdraftInterval, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: ReturnTime, param_offset: 0xd8} +- {type: static_param, param_type: const int*, param_name: BodyHitDamage, param_offset: 0xe0} +- {type: static_param, param_type: const int*, param_name: BodyHitPower, param_offset: 0xe8} +- {type: static_param, param_type: const int*, param_name: BodyHitImpact, param_offset: 0xf0} +- {type: static_param, param_type: const int*, param_name: BodyHitShieldDamage, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: OnRailDistance, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: FarDistance, param_offset: 0x108} +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: ChemicalBulletArea, param_offset: 0x118} +- {type: static_param, param_type: const float*, param_name: ChemicalWindArea, param_offset: 0x120} +- {type: static_param, param_type: const float*, param_name: ChemicalWindPower, param_offset: 0x128} +- {type: static_param, param_type: const float*, param_name: ChemicalWindLimitHeight, param_offset: 0x130} +- {type: static_param, param_type: const float*, param_name: UpdraftPower, param_offset: 0x138} +- {type: static_param, param_type: const float*, param_name: UpdraftTime, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: UpdraftBoost, param_offset: 0x148} +- {type: static_param, param_type: const float*, param_name: InitBackRailDistance, param_offset: 0x150} +- {type: static_param, param_type: const bool*, param_name: IsEmitChemical, param_offset: 0x158} +- {type: static_param, param_type: 'sead::SafeString', param_name: CommonTableName, param_offset: 0x160} +- {type: static_param, param_type: 'sead::SafeString', param_name: TsunoTableName, param_offset: 0x170} +- {type: static_param, param_type: 'sead::SafeString', param_name: TsumeTableName, param_offset: 0x180} +- {type: static_param, param_type: 'sead::SafeString', param_name: KibaTableName, param_offset: 0x190} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChemicalBulletActor, param_offset: 0x1a0} +- {type: static_param, param_type: 'sead::SafeString', param_name: DefaultMaterialAnmName, param_offset: 0x1b0} +- {type: static_param, param_type: 'sead::SafeString', param_name: HornAnmName, param_offset: 0x1c0} +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: CreateRailName, param_offset: 0x1d0} +DragonElecRoot: +- {type: call, fn: _ZN5uking2ai10DragonRoot11loadParams_Ev, addr: 0x710036fa6c} +DragonFireRoot: +- {type: call, fn: _ZN5uking2ai10DragonRoot11loadParams_Ev, addr: 0x710036fa6c} +DragonIceRoot: +- {type: call, fn: _ZN5uking2ai10DragonRoot11loadParams_Ev, addr: 0x710036fa6c} +- {type: static_param, param_type: const int*, param_name: GrudgeBulletMaxNum, param_offset: 0x270} +- {type: static_param, param_type: const int*, param_name: GrudgeBulletMinInterval, param_offset: 0x278} +- {type: static_param, param_type: const int*, param_name: GrudgeSmokeTime, param_offset: 0x280} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_pre1stSpeed, param_offset: 0x288} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_1stSpeed, param_offset: 0x290} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_pre2ndSpeed, param_offset: 0x298} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_2ndSpeed, param_offset: 0x2a0} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_pre3rdSpeed, param_offset: 0x2a8} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_3rdSpeed, param_offset: 0x2b0} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_preEndSpeed, param_offset: 0x2b8} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_EndSpeed, param_offset: 0x2c0} +- {type: static_param, param_type: const float*, param_name: GrudgeEventRail_ReturnSpeed, param_offset: 0x2c8} +- {type: static_param, param_type: const float*, param_name: GrudgeBulletRate, param_offset: 0x2d0} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_Start, param_offset: 0x2d8} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_pre1st, param_offset: 0x2e8} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_1st, param_offset: 0x2f8} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_pre2nd, param_offset: 0x308} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_2nd, param_offset: 0x318} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_pre3rd, param_offset: 0x328} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_3rd, param_offset: 0x338} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_preEnd, param_offset: 0x348} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_End, param_offset: 0x358} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeEventRail_ReturnToSky, param_offset: 0x368} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudgeBulletActorName, param_offset: 0x378} +DragonIceWaitRunel: [] +DragonItemRoot: +- {type: call, fn: _ZN5uking2ai8ItemRoot11loadParams_Ev, addr: 0x71004501f8} +- {type: static_param, param_type: const int*, param_name: FlyStartTime, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: ClearFlagTimeAtRunel, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: Gravity, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FlyStartHeightAtRunel, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: TailXLinkEventName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: AuraXLinkEventName, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: FlyPrepareXinkEventName, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: FlyStartXinkEventName, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: HitGroundXLinkEventName, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: LightShaftXLinkEventName, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActivateXlinkEventName, param_offset: 0xd0} +- {type: static_param, param_type: 'sead::SafeString', param_name: DestroySwitchGameData, param_offset: 0xe0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ClearFlagLabel, param_offset: 0xf0} +- {type: static_param, param_type: 'sead::SafeString', param_name: DropItemFlagLabel, param_offset: 0x100} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TargetPosition, param_offset: 0x110} +- {type: aitree_variable, param_type: bool*, param_name: IsInitFromCarryBox, param_offset: 0x118} +- {type: aitree_variable, param_type: bool*, param_name: IsInsideObserverArea, param_offset: 0x120} +DragonReturn: +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RotateRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ChangeMoveHeight, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FinishHeight, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: Angle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AvoidStartDistance, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: ReturnStartFrame, param_offset: 0x68} +DragonTurn: +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AvoidStartDistance, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVec, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +DrawnSwordBowSelect: +- {type: static_param, param_type: const int*, param_name: CloseWeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: BowWeaponIdx, param_offset: 0x40} +DrawnWeaponSelector: [] +PreyRoot: +- {type: static_param, param_type: const int*, param_name: AfterEscapeForceEndState, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EscapeForceEndTime, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsCheckFreeFall, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsCheckStuckConsiderY, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsUseWeakForcePushOutside, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsEnableEscapeForceEndCheck, param_offset: 0x68} +- {type: aitree_variable, param_type: int*, param_name: CreateDeadConditionType, param_offset: 0x70} +- {type: aitree_variable, param_type: float*, param_name: FramesStuckOnTerrain, param_offset: 0x78} +- {type: aitree_variable, param_type: bool*, param_name: IsStuckOnTerrain, param_offset: 0x80} +- {type: aitree_variable, param_type: bool*, param_name: IsChangeableStateFreeFall, param_offset: 0x88} +- {type: aitree_variable, param_type: bool*, param_name: IsUseTerritory, param_offset: 0x90} +DuckRoot: +- {type: call, fn: _ZN5uking2ai8PreyRoot11loadParams_Ev, addr: 0x7100503cf8} +DungeonCannonBallAutoDelete: +- {type: static_param, param_type: const int*, param_name: TriggerVelocityKeepTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TriggerVelocity, param_offset: 0x40} +DungeonEntranceRoot: +- {type: static_param, param_type: const bool*, param_name: IsCheckClear, param_offset: 0x38} +DungeonMoveTag: +- {type: map_unit_param, param_type: const float*, param_name: InitDgnMoveDis, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: MoveDis, param_offset: 0x40} +DungeonMoveTagCont: +- {type: map_unit_param, param_type: const float*, param_name: MoveDis, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: ReturnDisFromCurrentPos, param_offset: 0x40} +- {type: map_unit_param, param_type: const float*, param_name: ReturnSpeedFromCurrentPos, param_offset: 0x48} +DungeonRemainsFire: +- {type: static_param, param_type: 'sead::SafeString', param_name: RailName, param_offset: 0x38} +DungeonResetPosTag: [] +DungeonRotateTag: [] +DungeonRotateTag3D: +- {type: static_param, param_type: const float*, param_name: TargetRad, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: CameraPattern, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: RemainsPartType, param_offset: 0x48} +- {type: map_unit_param, param_type: const float*, param_name: TiltAngularSpeed, param_offset: 0x50} +- {type: map_unit_param, param_type: const float*, param_name: CameraPower, param_offset: 0x58} +- {type: map_unit_param, param_type: const float*, param_name: CameraRange, param_offset: 0x60} +DungeonRotateTag4ElecApp: +- {type: map_unit_param, param_type: const int*, param_name: CtrlDgnRemainsElectricBodyPart, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: InitDgnRotRad, param_offset: 0x40} +WholeDungeonRotateTag: +- {type: map_unit_param, param_type: const float*, param_name: TiltAngle, param_offset: 0x38} +DungeonRotateTag4FireApp: +- {type: call, fn: _ZN5uking2ai21WholeDungeonRotateTag11loadParams_Ev, addr: 0x71003797ac} +DungeonRotateTag4WaterApp: +- {type: static_param, param_type: const float*, param_name: Lv0, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Lv1, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Lv2, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: Lv3, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: Lv4, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: Lv5, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: Lv6, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: Lv7, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: Lv8, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: Lv9, param_offset: 0x80} +- {type: aitree_variable, param_type: float*, param_name: TargetRad, param_offset: 0x88} +- {type: aitree_variable, param_type: float*, param_name: TargetRadMax, param_offset: 0x90} +- {type: aitree_variable, param_type: float*, param_name: TargetRadMin, param_offset: 0x98} +DungeonRotateTag4WindApp: +- {type: call, fn: _ZN5uking2ai21WholeDungeonRotateTag11loadParams_Ev, addr: 0x71003797ac} +DungeonRotateTagInOrder: +- {type: static_param, param_type: const bool*, param_name: RotateTurnOn, param_offset: 0x40} +DungeonRotateTagCont: +- {type: call, fn: _ZN5uking2ai23DungeonRotateTagInOrder11loadParams_Ev, addr: 0x7100379f20} +- {type: aitree_variable, param_type: bool*, param_name: IsContinueRotateOrMove, param_offset: 0x48} +DungeonRotateTagShuttle: +- {type: map_unit_param, param_type: const float*, param_name: InitDgnRotRad, param_offset: 0x38} +DungeonRotateTagWaterChemical: +- {type: static_param, param_type: const float*, param_name: SlowDownRotRadAccel, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SlowDownTimer, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RotRadAccel, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ReverseDotTh, param_offset: 0x50} +StoneShootEnemyBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShootItemName, param_offset: 0x90} +DynTargetStoneShootEnemyBattle: +- {type: call, fn: _ZN5uking2ai21StoneShootEnemyBattle11loadParams_Ev, addr: 0x71005ab174} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0xb0} +DynTgBreathAttackEnemyBattle: +- {type: call, fn: _ZN5uking2ai23BreathAttackEnemyBattle11loadParams_Ev, addr: 0x710033f664} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0xb0} +EarthReleaseAttack: +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: EnlargeTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Range, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: Scale, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: UseAfterAction, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: EarthReleaseActorName, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: EarthReleasePartsName, param_offset: 0x70} +ElectricBall: +- {type: static_param, param_type: const float*, param_name: TargetVol, param_offset: 0xc8} +ElectricCable: +- {type: map_unit_param, param_type: const bool*, param_name: IsDisplayOnUI, param_offset: 0x38} +EnemyAngry: +- {type: static_param, param_type: const float*, param_name: TurnAng, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +EnemyAttackAndAway: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AwayStartDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CheckCliffDist, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +EnemyBaseArrowAttack: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: IntervalIntensity, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +EnemyBattleWithAreaCheck: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AttackVMin, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: AttackVMax, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: AttackFar, param_offset: 0xa8} +EnemyChaseShield: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetWeapon, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: EquipItemSearchIdx, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TurnAng, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ShieldReachDist, param_offset: 0x50} +UnarmedEnemySearch: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReachTargetArea, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TurnStartAng, param_offset: 0x48} +EnemyChaseTargetAndAction: +- {type: call, fn: _ZN5uking2ai18UnarmedEnemySearch11loadParams_Ev, addr: 0x71004b64a0} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: LostDist, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: LostSpeed, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: LostAng, param_offset: 0x80} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x88} +EnemyChemTargetActionBase: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ActionDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ActionDir, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +EnemyChemTargetAction: +- {type: call, fn: _ZN5uking2ai25EnemyChemTargetActionBase11loadParams_Ev, addr: 0x71003c0010} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +EnemyChemicalPowerSelect: [] +EnemyChemicalSelect: +- {type: static_param, param_type: const bool*, param_name: IsCheckActive, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChmObjName, param_offset: 0x40} +EnemyConfuse: +- {type: static_param, param_type: const int*, param_name: ConfuseTime, param_offset: 0x38} +EnemyCutRope: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CutDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CutAngle, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: CutFlyAttack, param_offset: 0x50} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +- {type: call, fn: sub_71002A5BB0, addr: 0x71002a5bb0} +EnemyRecognizeTargetBase: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: CryInterval, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: RandomCryInterval, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: RandomCryIntervalMax, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: SpreadDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: NoCryDist, param_offset: 0x68} +EnemyDemoSumonRecgTgt: +- {type: call, fn: _ZN5uking2ai24EnemyRecognizeTargetBase11loadParams_Ev, addr: 0x71003b14f4} +- {type: static_param, param_type: const bool*, param_name: OnlyOne, param_offset: 0x128} +- {type: static_param, param_type: const bool*, param_name: IsBroadCastOnlyOne, param_offset: 0x130} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x138} +- {type: static_param, param_type: 'sead::SafeString', param_name: EntryPoint, param_offset: 0x148} +EnemyEscape: [] +EnemyEscapeMove: [] +EnemyEscapeRoot: [] +EnemyFeintBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const bool*, param_name: IsAttackEnd, param_offset: 0x90} +EnemyFindBadStatusFriend: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x38} +EnemyFindHorseRideTarget: +- {type: static_param, param_type: const int*, param_name: SurpriseAttackPer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: ChaseTime, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: SurpriseAttackRange, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackRange, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AttackVMin, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AttackVMax, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: AttackTargetSpeed, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: ReChaseDist, param_offset: 0x98} +EnemyFindShootable: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x50} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: AttOffset, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: CanGrabHeavy, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: GrabCheckRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ChaseItemDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ChaseItemSpeed, param_offset: 0x60} +EnemyFortressChat: +- {type: static_param, param_type: const float*, param_name: NextPer, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: RegistedActorUnit, param_offset: 0x40} +EnemyFortressMgrTag: +- {type: static_param, param_type: const int*, param_name: CheckInterval, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ChangePer, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: RegistedActorUnit, param_offset: 0x48} +EnemyWaitViewItem: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x38} +EnemyFortressWait: +- {type: call, fn: _ZN5uking2ai17EnemyWaitViewItem11loadParams_Ev, addr: 0x71003c40e8} +- {type: call, fn: sub, addr: 0x7100392230} +- {type: static_param, param_type: const int*, param_name: EatPer, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: EatItem, param_offset: 0x60} +- {type: map_unit_param, param_type: const int*, param_name: FortressEatPer, param_offset: 0x40} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: FortressEatItem, param_offset: 0x48} +EnemyWatchKeepingWait: +- {type: static_param, param_type: const int*, param_name: IdleCheckMin, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: IdleCheckMax, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: IdlePer, param_offset: 0x50} +- {type: map_unit_param, param_type: const float*, param_name: RotAngle, param_offset: 0x58} +- {type: map_unit_param, param_type: const float*, param_name: WaitTime, param_offset: 0x60} +EnemyFortressWatchKeepingWait: +- {type: call, fn: _ZN5uking2ai21EnemyWatchKeepingWait11loadParams_Ev, addr: 0x71003c639c} +- {type: call, fn: sub, addr: 0x7100392230} +EnemyHide: [] +EnemyHideGrass: +- {type: static_param, param_type: const float*, param_name: SightRatio, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: HearingRatio, param_offset: 0x40} +EnemyHideShootingBattle: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +NonPlayerHorseRide: [] +EnemyHorseRide: +- {type: call, fn: _ZN5uking2ai18NonPlayerHorseRide11loadParams_Ev, addr: 0x7100e605d8} +- {type: static_param, param_type: const int*, param_name: UpperBodyASSlot, param_offset: 0xe0} +- {type: static_param, param_type: const int*, param_name: LowerBodyASSlot, param_offset: 0xe8} +EnemyLifeSelect: +- {type: map_unit_param, param_type: const bool*, param_name: IsWatchKeeping, param_offset: 0x38} +EnemyLiftShootItem: +- {type: static_param, param_type: const float*, param_name: ShootAngle, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ShootDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: ShootItem, param_offset: 0x50} +EnemyLifted: [] +EnemyLost: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: RailCheckInterval, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: SealForceReturn, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ForceReturnNoCameraRad, param_offset: 0x48} +EnemyMimicrySelect: +- {type: map_unit_param, param_type: const bool*, param_name: IsMimicry, param_offset: 0x38} +- {type: aitree_variable, param_type: int*, param_name: MimicryMaterial, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: IsStartResetMimicry, param_offset: 0x48} +EnemyMoveBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: LimitMoveTime, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: MoveDist, param_offset: 0xa0} +EnemyMoveToGround: +- {type: static_param, param_type: const int*, param_name: RetryTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AreaThreshold, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SearchRadius, param_offset: 0x48} +EnemyNoiseTarget: +- {type: static_param, param_type: const int*, param_name: LostTime, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: RerouteTimeMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: RerouteTimeMax, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: ShieldIdx, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: SearchShieldDist, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: NoShieldSearchDist, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: UnReachableToRepathDist, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: NoShieldEquipWpIdx, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: TooFarPathDist, param_offset: 0x98} +- {type: aitree_variable, param_type: bool*, param_name: IsTrgChangeUnderWaterState, param_offset: 0x38} +EnemyNotice: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x40} +EnemyNoticeActiveEnemy: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +EnemyNoticeTerror: +- {type: static_param, param_type: const int*, param_name: WaitTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NoWarnDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NoWarnHeightMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NoWarnHeightMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: NoTerrorDist, param_offset: 0x58} +EnemyNoticeFearfulLastAttacker: +- {type: call, fn: _ZN5uking2ai17EnemyNoticeTerror11loadParams_Ev, addr: 0x71003a7d1c} +EnemyNoticeFearfulTarget: +- {type: call, fn: _ZN5uking2ai17EnemyNoticeTerror11loadParams_Ev, addr: 0x71003a7d1c} +EnemyNoticeLimit: +- {type: static_param, param_type: const int*, param_name: OverNum, param_offset: 0x38} +EnemyNoticeSound: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +EnemyNoticeSoundWithUI: +- {type: call, fn: _ZN5uking2ai16EnemyNoticeSound11loadParams_Ev, addr: 0x71003a66ac} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x48} +EnemyNoticeSoundSensitive: +- {type: call, fn: _ZN5uking2ai22EnemyNoticeSoundWithUI11loadParams_Ev, addr: 0x71003a7498} +EnemyNoticeSoundSensitiveTimer: +- {type: call, fn: _ZN5uking2ai25EnemyNoticeSoundSensitive11loadParams_Ev, addr: 0x71003a6b10} +- {type: static_param, param_type: const int*, param_name: Timer, param_offset: 0x70} +EnemyPermitAttackSelect: +- {type: static_param, param_type: const bool*, param_name: IsIgnoreEnemyMgr, param_offset: 0x38} +EnemyPursuingArrowBattle: +- {type: call, fn: _ZN5uking2ai19BokoblinArrowBattle11loadParams_Ev, addr: 0x7100330d4c} +- {type: static_param, param_type: const int*, param_name: PursuingAttackInterval, param_offset: 0x128} +- {type: static_param, param_type: const int*, param_name: PursuingAttackIntervalRand, param_offset: 0x130} +- {type: static_param, param_type: const float*, param_name: PursuingAttackStartDist, param_offset: 0x138} +- {type: static_param, param_type: const float*, param_name: PursuingAttackStartAng, param_offset: 0x140} +EnemyPursuingAttackCheck: +- {type: static_param, param_type: const int*, param_name: PursuingAttackInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: PursuingAttackIntervalRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: PursuingAttackStartAng, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AttackAng, param_offset: 0x50} +EnemyPursuingBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: PursuingAttackInterval, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: PursuingAttackIntervalRand, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: PursuingAttackStartAng, param_offset: 0xa0} +EnemyRandomRepeatSideStep: +- {type: static_param, param_type: const int*, param_name: MinRepeatNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MaxRepeatNum, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: StepDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: StepAngle, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +EnemyRangeKeepSwimMove: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: Time, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CloseDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: SpaceDist, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsCheckCliff, param_offset: 0x70} +EnemyRecognizeTarget: +- {type: call, fn: _ZN5uking2ai24EnemyRecognizeTargetBase11loadParams_Ev, addr: 0x71003b14f4} +- {type: static_param, param_type: const int*, param_name: SummonNum, param_offset: 0x148} +- {type: static_param, param_type: const float*, param_name: SummonGrassHeight, param_offset: 0x150} +- {type: static_param, param_type: const float*, param_name: SummonCheckDist, param_offset: 0x158} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem1, param_offset: 0x128} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EquipItem2, param_offset: 0x138} +EnemyRestraintCheckBattle: +- {type: static_param, param_type: const int*, param_name: CheckInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CheckRandTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CheckVmin, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CheckVmax, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: CheckAngle, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsResetInterval, param_offset: 0x68} +EnemyReturnSelect: +- {type: static_param, param_type: const float*, param_name: NotReturnDist, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x40} +EnemyRoam: +- {type: static_param, param_type: const int*, param_name: SearchPer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TerritoryRadius, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TerritoryRadiusRnd, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinMoveDist, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x58} +EnemyRoamSelect: +- {type: static_param, param_type: const float*, param_name: HideGrassHeight, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NotReturnDist, param_offset: 0x40} +EnemyRoamViewItem: +- {type: dynamic_param, param_type: bool*, param_name: IsChanged, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x48} +EnemySearchHorse: +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SearchDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RideRadius, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: NoWeaponRiding, param_offset: 0x50} +EnemySearchShieldItemFindPlayer: +- {type: call, fn: _ZN5uking2ai22LandHumEnemyFindPlayer11loadParams_Ev, addr: 0x710046274c} +- {type: static_param, param_type: const int*, param_name: ShieldIdx, param_offset: 0x1e8} +- {type: static_param, param_type: const float*, param_name: SearchShieldDist, param_offset: 0x1f0} +- {type: static_param, param_type: const float*, param_name: NoShieldSearchDist, param_offset: 0x1f8} +- {type: static_param, param_type: const float*, param_name: SearchObjectDist, param_offset: 0x200} +- {type: static_param, param_type: const float*, param_name: ItemChaseableSpd, param_offset: 0x208} +- {type: static_param, param_type: const float*, param_name: ItemChasealeRot, param_offset: 0x210} +- {type: static_param, param_type: const bool*, param_name: CanGrabHeavy, param_offset: 0x218} +EnemyShieldSearchOrBattle: +- {type: static_param, param_type: const int*, param_name: ShieldIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SearchShieldDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NoShieldSearchDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: NoShieldTargetNearDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ShieldReachDist, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: NoShieldEquipWpIdx, param_offset: 0x40} +EnemyShootAttackExplosives: +- {type: call, fn: _ZN5uking2ai20EnemyBaseArrowAttack11loadParams_Ev, addr: 0x710037e074} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: TurnStartAng, param_offset: 0x58} +EnemySittingTogether: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: IsNextActionReserved, param_offset: 0x38} +EnemySkyArrowAttack: +- {type: call, fn: _ZN5uking2ai20EnemyBaseArrowAttack11loadParams_Ev, addr: 0x710037e074} +EnemySomeIgniteBattle: +- {type: call, fn: _ZN5uking2ai23BreathAttackEnemyBattle11loadParams_Ev, addr: 0x710033f664} +- {type: static_param, param_type: const int*, param_name: IgniteNum, param_offset: 0xb0} +EnemySyncAttack: +- {type: static_param, param_type: const int*, param_name: NormalASSlot, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackASSlot, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: JustAvoidCheckLength, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: JustAvoidCheckAngle, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttackNodeName, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttackNodeNameWait, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttackASName, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: AtNodeName, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: AttackDistMin, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: AttackDistMax, param_offset: 0xb0} +- {type: static_param, param_type: const int*, param_name: AttackInterval, param_offset: 0xb8} +- {type: static_param, param_type: const int*, param_name: AttackIntervalRand, param_offset: 0xc0} +EnemyTargetGearSelect: +- {type: static_param, param_type: const int*, param_name: GearThreashold, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsSelectEveryFrame, param_offset: 0x40} +EnemyTargetInAreaSelect: +- {type: call, fn: _ZN5uking2ai18TargetInAreaSelect11loadParams_Ev, addr: 0x71005bfe60} +- {type: static_param, param_type: const float*, param_name: LengthXZ, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LengthMaxY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LengthMinY, param_offset: 0x50} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CentOffset, param_offset: 0x58} +EnemyTargetInSightSelect: [] +EnemyTimelineAI: +- {type: call, fn: _ZN5uking2ai10TimelineAI11loadParams_Ev, addr: 0x7100e1c440} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x40} +EnemyTired: [] +EnemyTreeWeaponSearchOrBattle: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SearchDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NoSearchDist, param_offset: 0x48} +EnemyVacuumBombSelectBase: +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x38} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x48} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x58} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x68} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x89} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x78} +EnemyVacuumBombSelect: +- {type: call, fn: _ZN5uking2ai25EnemyVacuumBombSelectBase11loadParams_Ev, addr: 0x71003c3350} +EnemyVacuumChangeItemSelect: +- {type: call, fn: _ZN5uking2ai21EnemyVacuumBombSelect11loadParams_Ev, addr: 0x71003c2bfc} +EnemyVacuumWeaponTypeSelect: +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsKey, param_offset: 0x38} +EnemyWarnNoticeSelect: +- {type: static_param, param_type: const int*, param_name: WarnNoticeTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WarnNoticeTimeRnd, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WarnBlinkTime, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: LostCounter, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsSight, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsWorry, param_offset: 0x80} +- {type: dynamic_param, param_type: bool*, param_name: ForceNotice, param_offset: 0x88} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: PenaltyStair2Num, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: MaxCountUp, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: Penalty, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: NoPenaltyNum, param_offset: 0x70} +- {type: aitree_variable, param_type: bool*, param_name: IsTrgChangeUnderWaterState, param_offset: 0x98} +EnemyWarnNoticeEndChase: +- {type: call, fn: _ZN5uking2ai21EnemyWarnNoticeSelect11loadParams_Ev, addr: 0x71003c58d4} +EnterFromResetSelect: [] +EnvSeEmitPointRootAI: +- {type: static_param, param_type: const float*, param_name: InvalidatePlayDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: PlayDistance, param_offset: 0x40} +EquipConditionSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +EquipHaveSelector: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +UnarmedEnemySearchWeapon: +- {type: call, fn: _ZN5uking2ai18UnarmedEnemySearch11loadParams_Ev, addr: 0x71004b64a0} +- {type: static_param, param_type: const int*, param_name: EquipItemSearchIdx, param_offset: 0x6b8} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0x6c0} +- {type: static_param, param_type: const float*, param_name: SearchDist, param_offset: 0x6c8} +- {type: static_param, param_type: const float*, param_name: SearchAng, param_offset: 0x6d0} +- {type: static_param, param_type: const bool*, param_name: IsUseSight, param_offset: 0x6d8} +- {type: static_param, param_type: const float*, param_name: LineReachableWeaponDist, param_offset: 0x6e0} +EquipShieldEnemySearchWeapon: +- {type: call, fn: _ZN5uking2ai24UnarmedEnemySearchWeapon11loadParams_Ev, addr: 0x71003b777c} +EquipStand: +- {type: static_param, param_type: 'sead::SafeString', param_name: DisplayAttKey, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: TakeOutAttKey, param_offset: 0x88} +- {type: map_unit_param, param_type: const int*, param_name: EquipStandSlot, param_offset: 0x98} +- {type: aitree_variable, param_type: void*, param_name: EquipDisplayChild, param_offset: 0xa0} +EscapeFromTargetFront: +- {type: static_param, param_type: const int*, param_name: MaxTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MinTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: UseCameraFrontByTargetPlayer, param_offset: 0x50} +EscapeFromTargetFrontRandomDir: +- {type: call, fn: _ZN5uking2ai21EscapeFromTargetFront11loadParams_Ev, addr: 0x71003c8498} +- {type: static_param, param_type: const int*, param_name: InverseDirRatio, param_offset: 0x60} +EscapeOppositeToTargetInWater: +- {type: static_param, param_type: const float*, param_name: RunAwayDistanceMax, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AllowRandAngleVertical, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AllowRandAngleHorizontal, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: DivePercent, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +EscapeOrWaitSelect: +- {type: static_param, param_type: const float*, param_name: EscapeRange, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: EscapeMoveDistMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EscapeMoveDistMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CheckBackAngle, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +EternalPlayerTarget: [] +EventTagRootAI: +- {type: map_unit_param, param_type: const bool*, param_name: LaunchEventByOnSignal, param_offset: 0x48} +- {type: map_unit_param, param_type: const bool*, param_name: LaunchEventByOffSignal, param_offset: 0x50} +- {type: map_unit_param, param_type: const bool*, param_name: IsEndlessEvent, param_offset: 0x58} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EventFlowName, param_offset: 0x60} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EventFlowEntryName, param_offset: 0x70} +EventTimeRoot: +- {type: static_param, param_type: const int*, param_name: TimeLimit, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCountDown, param_offset: 0x40} +ExceededImpulseCheck: [] +ExplodeCheck: [] +FirstSelect: +- {type: static_param, param_type: const bool*, param_name: ResetFromDemo, param_offset: 0x38} +FishGoToAndNibble: +- {type: static_param, param_type: const int*, param_name: NumTimeNibbleMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: NumTimeNibbleRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DistStartNibble, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: DistBackward, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: DepthGiveUp, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x68} +SimpleWildlifeRoot: +- {type: static_param, param_type: const int*, param_name: InvalidTgtTimerVal, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: InvalidEscapeTimerVal, param_offset: 0x70} +- {type: static_param, param_type: const bool*, param_name: IsDeleteWhenDead, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsDeadWhenPut, param_offset: 0x80} +- {type: static_param, param_type: const bool*, param_name: IsEscapeWhenPut, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: IsDeadWhenDrop, param_offset: 0x90} +- {type: map_unit_param, param_type: const bool*, param_name: IsPlayerPut, param_offset: 0x98} +- {type: map_unit_param, param_type: const bool*, param_name: IsLocatorCreate, param_offset: 0xa0} +- {type: map_unit_param, param_type: const bool*, param_name: IsCreateDead, param_offset: 0xa8} +- {type: call, fn: _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE, addr: 0x7100d66968} +FishRoot: +- {type: call, fn: _ZN5uking2ai18SimpleWildlifeRoot11loadParams_Ev, addr: 0x7100342cd0} +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: OnGroundDepth, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: NextJumpTimeBase, param_offset: 0x108} +- {type: static_param, param_type: const float*, param_name: NextJumpTimeRand, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: AllowReturnThreatDist, param_offset: 0x118} +- {type: static_param, param_type: const float*, param_name: FrameUntilOutOfWater, param_offset: 0x120} +- {type: static_param, param_type: const float*, param_name: DistRunFromPlayerOnReturn, param_offset: 0x128} +- {type: static_param, param_type: const float*, param_name: IgnoreFoodBase, param_offset: 0x130} +- {type: static_param, param_type: const float*, param_name: IgnoreFoodRand, param_offset: 0x138} +- {type: static_param, param_type: const float*, param_name: IgnoreFoodAfterSuccessBase, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: IgnoreFoodAfterSuccessRand, param_offset: 0x148} +FishSafeReturn: +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DivePercent, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AllowReturnThreatDist, param_offset: 0x48} +- {type: dynamic_param, param_type: bool*, param_name: IsEscape, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +FixableLiftable: +- {type: static_param, param_type: const float*, param_name: CancelFixedScale, param_offset: 0xc8} +- {type: map_unit_param, param_type: const bool*, param_name: IsFixedPlace, param_offset: 0xd0} +FldObjDlcHeroMapRelief: +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: OpenFlag, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ClearFlag, param_offset: 0x48} +FldObjIvyBurnRoot: [] +FlyInsectRoam: +- {type: static_param, param_type: const float*, param_name: TerritoryRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TerritoryRadiusRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MinHeight, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MaxHeight, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: RePathDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: RePathDistRand, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: RePathYDistRand, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: MaxRotRand, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: MaxRotRandOuter, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsEnableOnLand, param_offset: 0x80} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x88} +FlyMoveToTarget: +- {type: static_param, param_type: const int*, param_name: MoveFailCount, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OffsetHeight, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +FlyingEnemyKeepMove: +- {type: static_param, param_type: const float*, param_name: LostDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AngleRange, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SpaceDistance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: BaseHeight, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: LowHeight, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: HighHeight, param_offset: 0x78} +FlyingEnemyBackKeepMove: +- {type: call, fn: _ZN5uking2ai19FlyingEnemyKeepMove11loadParams_Ev, addr: 0x71003d23d8} +FlyingEnemySideKeepMove: +- {type: call, fn: _ZN5uking2ai19FlyingEnemyKeepMove11loadParams_Ev, addr: 0x71003d23d8} +- {type: static_param, param_type: const int*, param_name: SideDirType, param_offset: 0x80} +FlyingEnemyDiagonallyKeepMove: +- {type: call, fn: _ZN5uking2ai23FlyingEnemySideKeepMove11loadParams_Ev, addr: 0x71003d36a8} +- {type: static_param, param_type: const float*, param_name: DiagAngle, param_offset: 0xa8} +FlyingEnemyFrontKeepMove: +- {type: call, fn: _ZN5uking2ai19FlyingEnemyKeepMove11loadParams_Ev, addr: 0x71003d23d8} +ForSaleOrNot: [] +ForbidDoubleNoticeSelect: [] +ForestGiantBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const float*, param_name: ForceAttackArea, param_offset: 0x90} +ForestGiantBattleMove: +- {type: call, fn: _ZN5uking2ai14WaitNearTarget11loadParams_Ev, addr: 0x71005e9560} +- {type: static_param, param_type: const float*, param_name: AttackHeightMin, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AttackHeightMax, param_offset: 0x70} +ForestGiantChanceWait: +- {type: static_param, param_type: const int*, param_name: ChanceRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CorrectRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +ForestGiantClosestAttackSelect: +- {type: static_param, param_type: const int*, param_name: HipDropRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: HipDropRateFar, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x48} +LargeEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +ForestGiantFindPlayer: +- {type: call, fn: _ZN5uking2ai20LargeEnemyFindPlayer11loadParams_Ev, addr: 0x71003f6a30} +ForestGiantNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: SleepingHearAwnRatio, param_offset: 0x3d0} +ForestGiantNoticeSound: +- {type: call, fn: _ZN5uking2ai16EnemyNoticeSound11loadParams_Ev, addr: 0x71003a66ac} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: UseSimpleOffset, param_offset: 0x50} +ForestGiantReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: static_param, param_type: const int*, param_name: RightLegArmorSlot, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: LeftLegArmorSlot, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: TgLegL, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: BgLegL, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: TgLegR, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: BgLegR, param_offset: 0xa8} +- {type: static_param, param_type: 'sead::SafeString', param_name: TgArmR, param_offset: 0xb8} +ForestGiantRecognizeTarget: [] +ForestGiantRoam: +- {type: call, fn: _ZN5uking2ai12BokoblinRoam11loadParams_Ev, addr: 0x7100334b1c} +- {type: static_param, param_type: const float*, param_name: ReturnHomeDist, param_offset: 0xe0} +ForestGiantRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x1e0} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x1f0} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x200} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x210} +- {type: static_param, param_type: const bool*, param_name: IsDamageToEnemy, param_offset: 0x1d8} +- {type: aitree_variable, param_type: bool*, param_name: IgnoreGiantArmorCondition, param_offset: 0x220} +- {type: aitree_variable, param_type: void*, param_name: GiantNecklaceUnit, param_offset: 0x228} +- {type: call, fn: sub_7100706E98, addr: 0x7100706e98} +ForestGiantStoneShootBattle: +- {type: call, fn: _ZN5uking2ai21StoneShootEnemyBattle11loadParams_Ev, addr: 0x71005ab174} +- {type: static_param, param_type: const int*, param_name: ShootItemRate1, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: ForceAttackArea, param_offset: 0xb8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShootItemName2, param_offset: 0xc0} +Fork2AIUpperLowerBody: [] +Fork3AI: [] +Fork4AI: [] +Fork5AI: [] +Fork6AI: [] +ForkActionAndJoin: [] +ForkBeastGanonRoot: [] +InWaterSelect: +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OutWaterDepth, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsForceChange, param_offset: 0x50} +FreezeInWaterSelect: +- {type: call, fn: _ZN5uking2ai13InWaterSelect11loadParams_Ev, addr: 0x710044ddfc} +- {type: static_param, param_type: const int*, param_name: IceBreakTime, param_offset: 0x58} +- {type: aitree_variable, param_type: bool*, param_name: IsKeepFreeze, param_offset: 0x60} +FriendCallAction: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearDistH, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NearDistVMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NearDistVMin, param_offset: 0x50} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +FromPopPoolDamageSelect: [] +GambleTreasureBoxRoot: +- {type: aitree_variable, param_type: bool*, param_name: IsOpenTreasureBox, param_offset: 0x38} +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: DropActorName, param_offset: 0x40} +GameDataFlagSelector: +- {type: static_param, param_type: const bool*, param_name: CheckOnEnterOnly, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ClearFlag, param_offset: 0x40} +GanonApproachOnFloorRoot: +- {type: static_param, param_type: const float*, param_name: FinDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ApproachTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FinFarDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MoveFrontRate, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: MoveFrontLRRate, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: MoveBackLRRate, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: CloseDist, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: ForbitAngMin, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ForbitAngMax, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: CheckPosAng0, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: CheckPosAng1, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: CheckPosAng2, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: CheckPosAng3, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: CheckPosAng4, param_offset: 0xa0} +- {type: dynamic_param, param_type: bool*, param_name: IsMoveSide, param_offset: 0xa8} +- {type: dynamic_param, param_type: bool*, param_name: IsChangeable, param_offset: 0xb0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xb8} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: MoveDstPos, param_offset: 0xc0} +GanonApproachOnWallRoot: +- {type: static_param, param_type: const float*, param_name: ApproachTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MinDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MaxDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FinDist, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsInterpolateYUp, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +GanonBattleOnFloorRoot: +- {type: static_param, param_type: const float*, param_name: FarAttackDist, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsNoWait, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +GanonBattleOnWallRoot: +- {type: static_param, param_type: const float*, param_name: GuardianActivateHP, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +GanonBattleRoot: [] +LastBossShootNormalArrowRoot: +- {type: static_param, param_type: const int*, param_name: ArrowNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AttackPowerForPlayer, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: BattleNodeOffsetLR, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: BattleNodeOffsetUD, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsPrepreNextArrow, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArrowName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x80} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReflectOffset, param_offset: 0x90} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x98} +GanonBeamOnFloor: +- {type: call, fn: _ZN5uking2ai28LastBossShootNormalArrowRoot11loadParams_Ev, addr: 0x710047c28c} +- {type: static_param, param_type: const float*, param_name: TurnStartAng, param_offset: 0x260} +- {type: static_param, param_type: const float*, param_name: KeepMinDist, param_offset: 0x268} +- {type: static_param, param_type: const float*, param_name: TurnRate, param_offset: 0x270} +- {type: static_param, param_type: 'sead::SafeString', param_name: WalkAS, param_offset: 0x278} +- {type: static_param, param_type: 'sead::SafeString', param_name: TurnAS, param_offset: 0x288} +GanonBeamOnWall: +- {type: call, fn: _ZN5uking2ai28LastBossShootNormalArrowRoot11loadParams_Ev, addr: 0x710047c28c} +GanonBeastWait: +- {type: aitree_variable, param_type: bool*, param_name: IsWeakPointAppearMode, param_offset: 0x38} +GanonBeastDying: +- {type: call, fn: _ZN5uking2ai14GanonBeastWait11loadParams_Ev, addr: 0x71003e8194} +GanonBeastMoveSelect: +- {type: static_param, param_type: const float*, param_name: Dist, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsMoveFinishEnd, param_offset: 0x50} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CentralPoint, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: FrontOffset, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WallDist, param_offset: 0x48} +GanonBeastReaction: +- {type: static_param, param_type: const int*, param_name: ASSlot, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: WeakPointAliveFlag, param_offset: 0x48} +- {type: aitree_variable, param_type: void*, param_name: WeakPointActiveFlag, param_offset: 0x50} +- {type: aitree_variable, param_type: bool*, param_name: IsWeakPointAppearMode, param_offset: 0x40} +GanonBeastRoot: +- {type: static_param, param_type: const int*, param_name: GrudeInterval3, param_offset: 0xc0} +- {type: static_param, param_type: const int*, param_name: GrudeInterval4, param_offset: 0xc8} +- {type: static_param, param_type: const int*, param_name: GrudeInterval5, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: GrudeCreateNum, param_offset: 0xd8} +- {type: static_param, param_type: const int*, param_name: WeakPointASSlot, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: GrudePlayerDist, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: GrudeRandRange, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: GrudeCenterOffset, param_offset: 0xf8} +- {type: static_param, param_type: 'sead::SafeString', param_name: InitWeakPointASName, param_offset: 0x100} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudeRainObject, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: GrudeRainObject2, param_offset: 0xa0} +- {type: aitree_variable, param_type: void*, param_name: WeakPointAliveFlag, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: WeakPointActiveFlag, param_offset: 0x48} +- {type: aitree_variable, param_type: bool*, param_name: IsGanonBeastAngry, param_offset: 0x38} +GanonBeastStairState: [] +GanonBeastSufferChanger: +- {type: static_param, param_type: const int*, param_name: WeakPoint1Time, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: WeakPoint2Time, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: WeakPoint3Time, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: WeakPoint4Time, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: CloseOption, param_offset: 0x78} +- {type: static_param, param_type: const int*, param_name: Timer, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: mstxtName, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: labelName, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: labelName2, param_offset: 0xa8} +- {type: static_param, param_type: 'sead::SafeString', param_name: labelName3, param_offset: 0xb8} +- {type: aitree_variable, param_type: bool*, param_name: IsWeakPointAppearMode, param_offset: 0x40} +- {type: aitree_variable, param_type: int*, param_name: SufferChangeStopCounter, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: SimpleDialogUnit, param_offset: 0x50} +- {type: aitree_variable, param_type: bool*, param_name: InBeastGanonVoiceSequence, param_offset: 0x48} +GanonDemoMoveSeqTwoAction: [] +GanonFarAttackRootOnWall: +- {type: static_param, param_type: const int*, param_name: PillarMax, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: ViewPos, param_offset: 0x48} +GanonGrudgeNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +GanonNearAttackOnFloorRoot: +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsCounter, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsPrevBeam, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +GanonNormalRoot: [] +GanonReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +GanonRecognizeRoot: [] +GanonShockRoot: +- {type: static_param, param_type: const bool*, param_name: IsDoRecoverAction, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsGuardJust, param_offset: 0x40} +GanonStateChangeRoot: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +GanonThrowActorRoot: +- {type: static_param, param_type: const int*, param_name: AttackDamage, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AddAtackPower, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsThrowQuick, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsWaitBulletDelete, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsSetSystemGroupHandler, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsSendDeleteMessageAtLeave, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: ThrowActorName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: RegisterPartsName, param_offset: 0x80} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x90} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: ViewPos, param_offset: 0x98} +GanonThrowMultiActorRoot: +- {type: call, fn: _ZN5uking2ai19GanonThrowActorRoot11loadParams_Ev, addr: 0x71003f008c} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName1, param_offset: 0xa8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName2, param_offset: 0xb8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName3, param_offset: 0xc8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName4, param_offset: 0xd8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName5, param_offset: 0xe8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName6, param_offset: 0xf8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName7, param_offset: 0x108} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName8, param_offset: 0x118} +GanonWeaponAttackOnFloor: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CloseDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +GearRangeSelect: +- {type: static_param, param_type: const int*, param_name: GearThreashold, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +GelEnemyReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +HeroSoulGiftRoot: +- {type: static_param, param_type: const bool*, param_name: UseInitMtxForBasePos, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: UseInitMtxForBaseRot, param_offset: 0x40} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: PosOffset, param_offset: 0x48} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: RotOffset, param_offset: 0x50} +GerudoHeroSoulGiftRoot: +- {type: call, fn: _ZN5uking2ai16HeroSoulGiftRoot11loadParams_Ev, addr: 0x710042eef8} +- {type: static_param, param_type: const float*, param_name: MaxLength, param_offset: 0x90} +GerudoQueenBattle: +- {type: static_param, param_type: const float*, param_name: RetireFrame, param_offset: 0x38} +GetItemNormal: [] +GetItemBrightBow: +- {type: call, fn: _ZN5uking2ai13GetItemNormal11loadParams_Ev, addr: 0x71003f5464} +- {type: static_param, param_type: const float*, param_name: GetRadius, param_offset: 0x40} +GiantArmorAsWeakPoint: +- {type: call, fn: _ZN5uking2ai14GiantArmorRoot11loadParams_Ev, addr: 0x71003f63fc} +GiantEarthReleaseAttack: +- {type: call, fn: _ZN5uking2ai18EarthReleaseAttack11loadParams_Ev, addr: 0x710037c144} +- {type: static_param, param_type: const float*, param_name: StartHeight, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: StartDistFromTarget, param_offset: 0x98} +- {type: aitree_variable, param_type: float*, param_name: KeepDistFromGround, param_offset: 0xa0} +- {type: aitree_variable, param_type: bool*, param_name: IsArrivedAtDestination, param_offset: 0xa8} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0xb0} +GiantEscapeFromDamageWater: [] +GiantNavMoveTarget: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReachTargetArea, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RepathTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: TooFarDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: TargetVMax, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: TargetVMin, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +GiantNavMoveWithFirstAction: +- {type: call, fn: _ZN5uking2ai18GiantNavMoveTarget11loadParams_Ev, addr: 0x71003f8fb4} +GiantRoamSelect: +- {type: map_unit_param, param_type: const int*, param_name: GiantRoamType, param_offset: 0x38} +SpecialEnemySleep: +- {type: static_param, param_type: const float*, param_name: AwakeDelayTime, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsAwakenByHearing, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsWaitAfterAwaken, param_offset: 0x48} +GiantSleepNormal: +- {type: call, fn: _ZN5uking2ai17SpecialEnemySleep11loadParams_Ev, addr: 0x710059ad6c} +- {type: static_param, param_type: const float*, param_name: ForceAwakeDist, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: AwakeRbName, param_offset: 0x68} +GiantSleepReaction: [] +GiantStoneShootAngrySelect: +- {type: static_param, param_type: const int*, param_name: ThrowableAngryRate, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcHandle**', param_name: IgniteHandle, param_offset: 0x48} +GolemChemicalResetSelect: +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x38} +GolemChemicalVanishedSelect: +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x38} +GolemClimbedSelect: +- {type: static_param, param_type: const int*, param_name: ClimbTime, param_offset: 0x38} +- {type: aitree_variable, param_type: float*, param_name: GolemClimbedTime, param_offset: 0x40} +GolemClimbedTimeSelect: +- {type: static_param, param_type: const int*, param_name: LimitTime, param_offset: 0x38} +- {type: aitree_variable, param_type: float*, param_name: GolemClimbedTime, param_offset: 0x40} +GolemFindPlayer: +- {type: call, fn: _ZN5uking2ai20LargeEnemyFindPlayer11loadParams_Ev, addr: 0x71003f6a30} +- {type: static_param, param_type: const float*, param_name: SearchExplosiveDist, param_offset: 0x140} +GolemFireREnemyBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const float*, param_name: PlayerRecoverFromFallFrames, param_offset: 0x90} +GolemNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +GolemNoticeWorry: +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x48} +ReuseBulletPartsRoot: [] +GolemPartRoot: +- {type: call, fn: _ZN5uking2ai20ReuseBulletPartsRoot11loadParams_Ev, addr: 0x7100551f38} +- {type: static_param, param_type: const float*, param_name: ChemFieldScale, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: NormalAS, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActiveAS, param_offset: 0xa8} +- {type: aitree_variable, param_type: bool*, param_name: GolemPartInitialIceMagic, param_offset: 0xb8} +- {type: aitree_variable, param_type: bool*, param_name: GolemPartInitialBurn, param_offset: 0xc0} +GolemPartsSelect: +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmRModelMatrialName, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmLModelMatrialName, param_offset: 0x48} +WeakPointRoot: +- {type: static_param, param_type: const int*, param_name: OwnerDamage, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsBreakable, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsSyncDamage, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsShowCriticalEffect, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsNoReaction, param_offset: 0x58} +GolemWeakPointRoot: +- {type: call, fn: _ZN5uking2ai13WeakPointRoot11loadParams_Ev, addr: 0x71005eee04} +GolemRWeakPointRoot: +- {type: call, fn: _ZN5uking2ai18GolemWeakPointRoot11loadParams_Ev, addr: 0x71004043ac} +GolemReaction: +- {type: static_param, param_type: const int*, param_name: ClimbLimitTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ClampRestClimbTime, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: IgnoreBombTime, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: RightArmTgtBodyName, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: LeftArmTgtBodyName, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreakArmLXLinkKey, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyArmLName1, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyArmLName2, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChmArmLName, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmLMaterialName, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreakArmRXLinkKey, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyArmRName1, param_offset: 0xd0} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyArmRName2, param_offset: 0xe0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChmArmRName, param_offset: 0xf0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmRMaterialName, param_offset: 0x100} +- {type: aitree_variable, param_type: float*, param_name: GolemClimbedTime, param_offset: 0x110} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x118} +GolemRootBase: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const int*, param_name: ShaderASTargetBone, param_offset: 0x1d8} +- {type: static_param, param_type: const int*, param_name: BodyShaderSeqBank, param_offset: 0x1e0} +- {type: static_param, param_type: const int*, param_name: ArmRShaderSeqBank, param_offset: 0x1e8} +- {type: static_param, param_type: const int*, param_name: ArmLShaderSeqBank, param_offset: 0x1f0} +- {type: static_param, param_type: 'sead::SafeString', param_name: UpperArmL_PartsKey, param_offset: 0x1f8} +- {type: static_param, param_type: 'sead::SafeString', param_name: LowerArmL_PartsKey, param_offset: 0x208} +- {type: static_param, param_type: 'sead::SafeString', param_name: UpperArmR_PartsKey, param_offset: 0x218} +- {type: static_param, param_type: 'sead::SafeString', param_name: LowerArmR_PartsKey, param_offset: 0x228} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChemicalFieldKey, param_offset: 0x238} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyDeactiveAS, param_offset: 0x248} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmRDeactiveAS, param_offset: 0x258} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmLDeactiveAS, param_offset: 0x268} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyActiveAS, param_offset: 0x278} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmRActiveAS, param_offset: 0x288} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmLActiveAS, param_offset: 0x298} +- {type: static_param, param_type: 'sead::SafeString', param_name: BodyMimicAS, param_offset: 0x2a8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmRMimicAS, param_offset: 0x2b8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArmLMimicAS, param_offset: 0x2c8} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GolemTextureName, param_offset: 0x2d8} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x2e8} +GolemRoot: +- {type: call, fn: _ZN5uking2ai13GolemRootBase11loadParams_Ev, addr: 0x71004024d0} +- {type: static_param, param_type: const int*, param_name: ClimbFinishTime, param_offset: 0x310} +- {type: static_param, param_type: const float*, param_name: StandContactHeight, param_offset: 0x318} +- {type: static_param, param_type: const bool*, param_name: IsBreakContactTree, param_offset: 0x320} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GolemWeakPointLocation, param_offset: 0x328} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GolemSleepType, param_offset: 0x338} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GolemWeakPointActor, param_offset: 0x348} +- {type: aitree_variable, param_type: float*, param_name: GolemClimbedTime, param_offset: 0x358} +GolemSleepNormal: +- {type: call, fn: _ZN5uking2ai17SpecialEnemySleep11loadParams_Ev, addr: 0x710059ad6c} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x60} +GolemSleepTypeSelect: +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: GolemSleepType, param_offset: 0x38} +GolfBallRoot: +- {type: static_param, param_type: const int*, param_name: IntSmashJudgeFrame, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: IntSmashContinueFrame, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FloatJudgeSmash, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FloatJudgeStop, param_offset: 0x50} +GoronCannonBase: +- {type: static_param, param_type: const float*, param_name: RotRadAccel, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RotBrake, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ShotCannonBallScale, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsDrawDebug, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsUseShotNodeAngle, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActName, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShotNodeName, param_offset: 0x70} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: Offset, param_offset: 0x80} +- {type: map_unit_param, param_type: const float*, param_name: TiltAngle, param_offset: 0x88} +- {type: map_unit_param, param_type: const float*, param_name: TiltAngularSpeed, param_offset: 0x90} +- {type: map_unit_param, param_type: const float*, param_name: Angle, param_offset: 0x98} +- {type: map_unit_param, param_type: const float*, param_name: Speed, param_offset: 0xa0} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0xa8} +GoronCannon: +- {type: call, fn: _ZN5uking2ai15GoronCannonBase11loadParams_Ev, addr: 0x710032db80} +GoronHeroDescendentRoot: +- {type: static_param, param_type: const int*, param_name: GuardEndDelayTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WhistleReactTimeGo, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WhistleReactTimeStop, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AppearWaitTime, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: PlayerNearDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: PlayerLeaveDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: PlayerSeparateDist, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: FollowModeFlagName, param_offset: 0x70} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: PlayerFollowOffset, param_offset: 0x80} +GoronHeroSoulGiftRoot: +- {type: call, fn: _ZN5uking2ai16HeroSoulGiftRoot11loadParams_Ev, addr: 0x710042eef8} +GroundAngleSelect: +- {type: static_param, param_type: const float*, param_name: SlopeAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsCheckActorMtx, param_offset: 0x48} +GroundHitSelect: +- {type: static_param, param_type: const bool*, param_name: IsActionEndEnd, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsEnterCheck, param_offset: 0x40} +GrudgeEyeball: +- {type: map_unit_param, param_type: const int*, param_name: EyeballFirstState, param_offset: 0x38} +GuardAndRevenge: +- {type: static_param, param_type: const float*, param_name: DrownDepth, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +GuardFlagSelect: [] +GuardFrequencySelect: [] +GuardianAI: [] +GuardianBattleBeamAttack: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +GuardianBeam: +- {type: static_param, param_type: const float*, param_name: MaxDistance, param_offset: 0x38} +GuardianBeamAttackBase: [] +GuardianBeamAttack: +- {type: call, fn: _ZN5uking2ai22GuardianBeamAttackBase11loadParams_Ev, addr: 0x7100411ddc} +- {type: static_param, param_type: const float*, param_name: LightRadius, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: LightLength, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: LightLengthOffset, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: EarSpeed, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: AdjustRadius, param_offset: 0xa0} +RailMove: +- {type: static_param, param_type: const bool*, param_name: IsIgnoreNoWaitStopPoint, param_offset: 0x38} +RailMoveWithClose: +- {type: call, fn: _ZN5uking2ai8RailMove11loadParams_Ev, addr: 0x710032c528} +- {type: static_param, param_type: const float*, param_name: OnRailDistance, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: FarDistance, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0xb0} +GuardianBezierRailMove: +- {type: call, fn: _ZN5uking2ai17RailMoveWithClose11loadParams_Ev, addr: 0x71005375b8} +GuardianChase: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +- {type: map_unit_param, param_type: const float*, param_name: ChaseRange, param_offset: 0x38} +GuardianCloseBattle: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +GuardianDown: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +GuardianMiniBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm1NodeName, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm2NodeName, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm3NodeName, param_offset: 0xc0} +- {type: static_param, param_type: const int*, param_name: ASSlotRight, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: ASSlotLeft, param_offset: 0xd8} +- {type: static_param, param_type: const int*, param_name: ASSlotBack, param_offset: 0xe0} +- {type: static_param, param_type: const int*, param_name: RollingInterval, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0xf8} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreArmCondition, param_offset: 0x100} +- {type: static_param, param_type: const int*, param_name: TurnMoveTime, param_offset: 0x108} +- {type: static_param, param_type: const int*, param_name: TurnMovePer, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: TurnMoveStartDist, param_offset: 0x118} +- {type: static_param, param_type: const int*, param_name: CounterStartDamageCount, param_offset: 0x120} +- {type: static_param, param_type: const int*, param_name: CounterStartTime, param_offset: 0x128} +- {type: static_param, param_type: const bool*, param_name: CheckOnNoNavMesh, param_offset: 0x130} +- {type: aitree_variable, param_type: int*, param_name: DamagedCount, param_offset: 0x138} +GuardianMini2ndBattle: +- {type: call, fn: _ZN5uking2ai18GuardianMiniBattle11loadParams_Ev, addr: 0x7100415790} +- {type: static_param, param_type: const int*, param_name: AttackHitNum, param_offset: 0x1b8} +- {type: static_param, param_type: const int*, param_name: CounterStopTime, param_offset: 0x1c0} +GuardianMini2ndBattleAttack: +- {type: static_param, param_type: 'sead::SafeString', param_name: AscendingCurrentName, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AscendingCurrentTime, param_offset: 0x48} +- {type: aitree_variable, param_type: int*, param_name: GuardianMiniChanceTimeState, param_offset: 0x50} +GuardianMiniBattleStateSelect: +- {type: static_param, param_type: const float*, param_name: SecondLifeRatio, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FinalLifeRatio, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsEnterOnly, param_offset: 0x48} +GuardianMiniBeam: +- {type: call, fn: _ZN5uking2ai15BeamExplodeBase11loadParams_Ev, addr: 0x710056cae0} +MiniBeamAttack: +- {type: call, fn: _ZN5uking2ai23BreathAttackEnemyBattle11loadParams_Ev, addr: 0x710033f664} +- {type: static_param, param_type: const float*, param_name: FluctuationRange, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: FluctuationSpan, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: TargetOffsetY, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: NodeName, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: IsValidGuide, param_offset: 0xd8} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreSmallHit, param_offset: 0xe0} +- {type: static_param, param_type: const bool*, param_name: IsChangeable, param_offset: 0xe8} +- {type: static_param, param_type: 'sead::SafeString', param_name: AimEffectName, param_offset: 0xf0} +GuardianMiniBeamAttack: +- {type: call, fn: _ZN5uking2ai14MiniBeamAttack11loadParams_Ev, addr: 0x710042d2f4} +- {type: static_param, param_type: 'sead::SafeString', param_name: HeadNodeName, param_offset: 0x250} +- {type: static_param, param_type: const int*, param_name: AttackInterval, param_offset: 0x260} +- {type: static_param, param_type: const int*, param_name: EndShaderASFrame, param_offset: 0x268} +- {type: static_param, param_type: 'sead::SafeString', param_name: LoopShaderASName, param_offset: 0x270} +- {type: static_param, param_type: 'sead::SafeString', param_name: EndShaderASName, param_offset: 0x280} +- {type: static_param, param_type: 'sead::SafeString', param_name: PreLaunchEffectName, param_offset: 0x290} +- {type: static_param, param_type: const bool*, param_name: IsChangeable, param_offset: 0x2a0} +- {type: static_param, param_type: const bool*, param_name: IsFinalBattle, param_offset: 0x2a8} +- {type: static_param, param_type: const float*, param_name: InDirAngle, param_offset: 0x2b0} +GuardianMiniBeamAttackMove: +- {type: static_param, param_type: const int*, param_name: MoveTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackInterval, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BeamSpeed, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: BaseNode, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: TargetDistOffset, param_offset: 0x68} +GuardianMiniBeamAttackNoWait: +- {type: call, fn: _ZN5uking2ai22GuardianMiniBeamAttack11loadParams_Ev, addr: 0x7100417c00} +- {type: static_param, param_type: const float*, param_name: AttackAngle, param_offset: 0x2d8} +GuardianMiniBeamToExplosives: +- {type: call, fn: _ZN5uking2ai22GuardianMiniBeamAttack11loadParams_Ev, addr: 0x7100417c00} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidDist, param_offset: 0x2d8} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x2e0} +GuardianMiniBlownOff: +- {type: static_param, param_type: const float*, param_name: RotNeckAngle, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RotNeckSpeed, param_offset: 0x40} +GuardianMiniChangeWeapon: +- {type: static_param, param_type: const int*, param_name: RotValue, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RotSpeed, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: DamageNodeName, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: DamageASName, param_offset: 0x68} +GuardianMiniFinalBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: ASSlotRight, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: ASSlotLeft, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: ASSlotBack, param_offset: 0xa0} +- {type: static_param, param_type: const int*, param_name: AttackHitNum, param_offset: 0xa8} +- {type: static_param, param_type: const bool*, param_name: IsPreAttackMove, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: RotNeckRate, param_offset: 0xb8} +- {type: aitree_variable, param_type: int*, param_name: GuardianMiniChanceTimeState, param_offset: 0xc0} +GuardianMiniFindPlayer: +- {type: call, fn: _ZN5uking2ai22LandHumEnemyFindPlayer11loadParams_Ev, addr: 0x710046274c} +GuardianMiniGroggy: +- {type: static_param, param_type: const int*, param_name: ChanceTime, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: RestartASName, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: DefaultASName, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +GuardianMiniGuardSelect: +- {type: static_param, param_type: const int*, param_name: ASSlotRight, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ASSlotLeft, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ASSlotBack, param_offset: 0x48} +GuardianMiniNoWeaponSelect: +- {type: static_param, param_type: const bool*, param_name: IsSelectFirstTime, param_offset: 0x38} +GuardianMiniOnNoNavMesh: +- {type: static_param, param_type: const int*, param_name: ChangeToIceTimer, param_offset: 0x38} +GuardianMiniRangeKeepMove: +- {type: call, fn: _ZN5uking2ai18EnemyRangeKeepMove11loadParams_Ev, addr: 0x71003ad5bc} +GuardianMiniReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm1NodeName, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm2NodeName, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm3NodeName, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: ASSlotRight, param_offset: 0xa8} +- {type: static_param, param_type: const int*, param_name: ASSlotLeft, param_offset: 0xb0} +- {type: static_param, param_type: const int*, param_name: ASSlotBack, param_offset: 0xb8} +- {type: static_param, param_type: 'sead::SafeString', param_name: PreAttackASRight, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: PreAttackASLeft, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: JustGuardNumForBreak, param_offset: 0xe0} +- {type: static_param, param_type: const bool*, param_name: IsChangeWeapon, param_offset: 0xe8} +- {type: aitree_variable, param_type: int*, param_name: GuardianMiniChanceTimeState, param_offset: 0xf0} +GuardianMiniRecognizeTarget: [] +GuardianMiniRollingAttackMove: +- {type: call, fn: _ZN5uking2ai18EnemyRangeKeepMove11loadParams_Ev, addr: 0x71003ad5bc} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x110} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttackNodeName, param_offset: 0x120} +- {type: static_param, param_type: 'sead::SafeString', param_name: AttackASName, param_offset: 0x130} +- {type: static_param, param_type: const int*, param_name: RollingNumMin, param_offset: 0x140} +- {type: static_param, param_type: const int*, param_name: RollingNumMax, param_offset: 0x148} +- {type: static_param, param_type: const int*, param_name: RollingWaitTime, param_offset: 0x150} +- {type: static_param, param_type: const int*, param_name: RollingIntervalTime, param_offset: 0x158} +- {type: static_param, param_type: const int*, param_name: StopRollingNum, param_offset: 0x160} +- {type: static_param, param_type: const float*, param_name: JustAvoidSideDist, param_offset: 0x168} +- {type: static_param, param_type: const float*, param_name: JustAvoidBackDist, param_offset: 0x170} +- {type: static_param, param_type: const float*, param_name: JustAvoidAngle, param_offset: 0x178} +- {type: static_param, param_type: const float*, param_name: RotSpeed, param_offset: 0x180} +- {type: static_param, param_type: const float*, param_name: BackWalkRotSpeedRatio, param_offset: 0x188} +- {type: static_param, param_type: const float*, param_name: RushRotSpeedRatio, param_offset: 0x190} +- {type: static_param, param_type: const int*, param_name: AttackType, param_offset: 0x198} +- {type: static_param, param_type: const int*, param_name: BackWalkMinTime, param_offset: 0x1a0} +- {type: static_param, param_type: const int*, param_name: BackWalkRollingStartTime, param_offset: 0x1a8} +- {type: static_param, param_type: const float*, param_name: BackWalkDist, param_offset: 0x1b0} +- {type: static_param, param_type: const int*, param_name: RushAttackImpulse, param_offset: 0x1b8} +- {type: static_param, param_type: const int*, param_name: RollingStopTime, param_offset: 0x1c0} +- {type: static_param, param_type: const bool*, param_name: IsValidChanceTime, param_offset: 0x1c8} +- {type: static_param, param_type: const int*, param_name: CrashDamage, param_offset: 0x1d0} +- {type: static_param, param_type: const int*, param_name: BreakPillarTime, param_offset: 0x1d8} +GuardianMiniRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const float*, param_name: NeckRotRatio, param_offset: 0x1d8} +- {type: static_param, param_type: const int*, param_name: JustGuardNumForBreak, param_offset: 0x1e0} +- {type: static_param, param_type: const float*, param_name: RotStopSpeed, param_offset: 0x1e8} +- {type: aitree_variable, param_type: int*, param_name: DamagedCount, param_offset: 0x1f0} +- {type: aitree_variable, param_type: bool*, param_name: IsTransformedGuardianMini, param_offset: 0x1f8} +- {type: aitree_variable, param_type: int*, param_name: GuardianMiniChanceTimeState, param_offset: 0x200} +GuardianMiniTargetOnScalffold: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x40} +GuardianMiniTransformSelect: +- {type: aitree_variable, param_type: bool*, param_name: IsTransformedGuardianMini, param_offset: 0x38} +ViewWait: +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +GuardianMiniViewWait: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: static_param, param_type: const int*, param_name: ASSlotRight, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: ASSlotLeft, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: ASSlotBack, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: RootNodeName, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm1NodeName, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm2NodeName, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: Arm3NodeName, param_offset: 0xa8} +- {type: static_param, param_type: const bool*, param_name: IsPartialBind, param_offset: 0xb8} +GuardianRoam: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +- {type: static_param, param_type: const int*, param_name: MoveTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MoveRadius, param_offset: 0x40} +GuardianRoot: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +- {type: map_unit_param, param_type: const bool*, param_name: IsSuspended, param_offset: 0x38} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: ForceSetDropPos, param_offset: 0x40} +GuardianTargetLost: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +- {type: static_param, param_type: const int*, param_name: LostCountMax, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: MoveRange, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: BackOffset, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AirThreshold, param_offset: 0x80} +GuardianWait: +- {type: call, fn: _ZN5uking2ai10GuardianAI11loadParams_Ev, addr: 0x710040da68} +GyroActivateTerminal: [] +HangedLamp: +- {type: static_param, param_type: const bool*, param_name: DisableImpulseByArrow, param_offset: 0x60} +HasPreActorSelect: [] +HaveNoWeaponSelector: [] +HeightSelectTwoAction: +- {type: static_param, param_type: const int*, param_name: SelectCheckInterval, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: HeightMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: HeightMax, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +HiddenKorokRoot: +- {type: static_param, param_type: const float*, param_name: PainTalkHitSpeed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: PainTalkDistance, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: KorokEventStartWaitFrame, param_offset: 0x48} +- {type: map_unit_param, param_type: const bool*, param_name: IsAppearCheck, param_offset: 0x50} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: PlacementType, param_offset: 0x58} +- {type: map_unit_param, param_type: const bool*, param_name: IsHiddenKorokLiftAppear, param_offset: 0x68} +- {type: map_unit_param, param_type: const bool*, param_name: IsInvisibleKorok, param_offset: 0x70} +HiddenOctarockFindPlayer: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ActorRadius, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LostDistOffset, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NoticeDelayTime, param_offset: 0x60} +HiddenOctarockNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: OptionHitReactionDelay, param_offset: 0x3d0} +- {type: static_param, param_type: const bool*, param_name: IsSitDown, param_offset: 0x3d8} +- {type: static_param, param_type: const bool*, param_name: IsHitGround, param_offset: 0x3e0} +- {type: static_param, param_type: const bool*, param_name: IsReactionByWigHit, param_offset: 0x3e8} +- {type: static_param, param_type: const bool*, param_name: IsHide, param_offset: 0x3f0} +- {type: static_param, param_type: const bool*, param_name: IsIvalidateSight, param_offset: 0x3f8} +- {type: static_param, param_type: const bool*, param_name: IsSealHearing, param_offset: 0x400} +- {type: map_unit_param, param_type: const bool*, param_name: IsNearCreate, param_offset: 0x408} +HiddenOctarockSearchTarget: +- {type: static_param, param_type: const float*, param_name: NoticeTerrorLevel, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NoticeWorryRange, param_offset: 0x40} +HomePosDistanceSelector: +- {type: static_param, param_type: const float*, param_name: BoundaryDistance, param_offset: 0x38} +Horse: +- {type: static_param, param_type: const float*, param_name: DistanceFall, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DistanceFallDie, param_offset: 0x40} +HorseCheckLineOfSightSelectorBase: +- {type: static_param, param_type: const int*, param_name: DirectionNum, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DirectionAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Distance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RadiusScale, param_offset: 0x50} +HorseCheckLineOfSightSelector: +- {type: call, fn: _ZN5uking2ai33HorseCheckLineOfSightSelectorBase11loadParams_Ev, addr: 0x7100346d88} +HorseDamageTypeSelect: [] +HorseEscapeRouteRailAI: +- {type: static_param, param_type: const int*, param_name: Count, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: UpdatePosDistance, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +HorseGoToEatAI: +- {type: static_param, param_type: const int*, param_name: TimeoutFrame, param_offset: 0x38} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x40} +HorseLoopTarget: +- {type: static_param, param_type: 'sead::SafeString', param_name: TargetName, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsFlip, param_offset: 0x48} +HorseLoopTargetAndWaitAI: +- {type: call, fn: _ZN5uking2ai15HorseLoopTarget11loadParams_Ev, addr: 0x7101280044} +- {type: static_param, param_type: const float*, param_name: ChangeWaitRate, param_offset: 0x170} +- {type: static_param, param_type: const float*, param_name: MaxWaitTime, param_offset: 0x178} +- {type: static_param, param_type: const float*, param_name: MinWaitTime, param_offset: 0x180} +HorseMoveToPlayer: +- {type: call, fn: _ZN5uking2ai11HorseFollow11loadParams_Ev, addr: 0x7100437a5c} +- {type: static_param, param_type: const float*, param_name: DistanceSuccessEndIfInterrupted, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: DistanceResetGearInput, param_offset: 0xe8} +HorseNatureSelectAI: [] +HorseNotRidden: +- {type: static_param, param_type: const int*, param_name: EscapeCountThreshold, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearHorseAssociationDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EscapeDelayFramesMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EscapeDelayFramesMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CallDelayFrames, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackFrontDistance, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AttackFrontAngleCos, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AttackBackDistance, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: AttackBackAngleCos, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AttackDefinitelyDistance, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: AttackIntervalFrames, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: MoveAttackCLOSDistanceByRadius, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: CarriedItemCosThresholdForEat, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: StaggerVelocityThreshold, param_offset: 0xa0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CarriedItemPosRTYOffset, param_offset: 0xa8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CarriedItemPosRTYWidth, param_offset: 0xb0} +- {type: dynamic_param, param_type: int*, param_name: ChildSelectAtFirst, param_offset: 0xb8} +HorsePrevRiddenStatusSelector: [] +HorseReins: [] +HorseRiddenAI: [] +HorseRiddenByEnemyAI: +- {type: static_param, param_type: const float*, param_name: AngryASPeriods, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FramesRetryNormalActionAtFailed, param_offset: 0x40} +HorseRiddenByNPCBase: +- {type: static_param, param_type: const bool*, param_name: IsEscapeFromSameActorType, param_offset: 0x38} +HorseRiddenByNPC: +- {type: call, fn: _ZN5uking2ai20HorseRiddenByNPCBase11loadParams_Ev, addr: 0x7100e4c5c0} +- {type: static_param, param_type: const float*, param_name: NavMeshCharacterScaleAtPrecise, param_offset: 0x48} +HorseRideChargeAttack: +- {type: static_param, param_type: const int*, param_name: UpperBodyASSlot, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: LowerBodyASSlot, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AttackableAngle, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +HorseRideChaseBattleMoveBase: +- {type: static_param, param_type: const float*, param_name: SlowDownDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SpeedUpDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x50} +HorseRideChaseBattleAttackMove: +- {type: call, fn: _ZN5uking2ai28HorseRideChaseBattleMoveBase11loadParams_Ev, addr: 0x7100440b54} +HorseRideChaseBattleMove: +- {type: call, fn: _ZN5uking2ai28HorseRideChaseBattleMoveBase11loadParams_Ev, addr: 0x7100440b54} +HorseRideDamagedSelector: [] +HorseRideEnemyBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AttackRadius, param_offset: 0x98} +HorseRideEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +HorseRideEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: SightAwarenessScale, param_offset: 0x3d0} +HorseRideMoveTo: +- {type: static_param, param_type: const int*, param_name: UpperBodyASSlot, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: LowerBodyASSlot, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FinRadius, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +HorseRideRangeKeepMove: +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x40} +SimpleShootingEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +- {type: static_param, param_type: const float*, param_name: ShootBaseDist, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: ShootDistRatio, param_offset: 0x148} +HorseRideShooterFindPlayer: +- {type: call, fn: _ZN5uking2ai29SimpleShootingEnemyFindPlayer11loadParams_Ev, addr: 0x710056f834} +ShootingEnemyBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: OutScreenAttackNum, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: OutScreenDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: OutScrnAtkOffset, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: OutScrnAtkOffsetY, param_offset: 0xa8} +HorseRideShootingEnemyBattle: +- {type: call, fn: _ZN5uking2ai19ShootingEnemyBattle11loadParams_Ev, addr: 0x7100569bd8} +- {type: static_param, param_type: const int*, param_name: TrackTime, param_offset: 0xc8} +- {type: static_param, param_type: const int*, param_name: TrackTimeRand, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: SlowTime, param_offset: 0xd8} +- {type: static_param, param_type: const int*, param_name: SlowTimeRand, param_offset: 0xe0} +HorseRideTurn: +- {type: static_param, param_type: const float*, param_name: FinAngle, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +HorseWanderAI: [] +IAIAttack: +- {type: static_param, param_type: const float*, param_name: OffsetLR, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CloseDistLR, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ClsoeDistFB, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsAbleSkipNear, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: TiredAngle, param_offset: 0x58} +IbutsuWaterFallRoot: [] +IceEnemyFeintBattle: +- {type: call, fn: _ZN5uking2ai16EnemyFeintBattle11loadParams_Ev, addr: 0x710038bc04} +IceMakerBlock: +- {type: static_param, param_type: const float*, param_name: SubRigidStartOffset, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: SubRigidEndOffset, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: SubRigidExOffset, param_offset: 0x70} +InDemoSelect: +- {type: static_param, param_type: const int*, param_name: DemoRetDelayMax, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: OtherDemoNoRun, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: ForceChangeDemo, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoFile, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoEntryPoint, param_offset: 0x60} +InForceEnemyLostAreaSelect: [] +InTerritorySelector: +- {type: static_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x38} +InWaterKeepSelect: +- {type: call, fn: _ZN5uking2ai13InWaterSelect11loadParams_Ev, addr: 0x710044ddfc} +- {type: aitree_variable, param_type: bool*, param_name: IsKeepInWater, param_offset: 0x58} +IncredibleAction: +- {type: static_param, param_type: const bool*, param_name: IsInvincible, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsUnmoving, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsNoCollide, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsUseIncredibleActionDCCallback, param_offset: 0x50} +InitFromInCarryBoxSelect: +- {type: static_param, param_type: const bool*, param_name: IsResetInCarryBoxFlag, param_offset: 0x38} +- {type: aitree_variable, param_type: bool*, param_name: IsInitFromCarryBox, param_offset: 0x40} +InsectEscape: +- {type: static_param, param_type: const float*, param_name: RunAwayDistanceMax, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RunAwayDistanceMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RunAwayHeightOffset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AllowRandAngleVertical, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AllowRandAngleHorizontal, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: InWater, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +InsectRoot: +- {type: call, fn: _ZN5uking2ai18SimpleWildlifeRoot11loadParams_Ev, addr: 0x7100342cd0} +- {type: static_param, param_type: const bool*, param_name: IsEscapeInWater, param_offset: 0xf8} +InsectFairyRoot: +- {type: call, fn: _ZN5uking2ai10InsectRoot11loadParams_Ev, addr: 0x710044b680} +InsectRoam: +- {type: static_param, param_type: const float*, param_name: TerritoryRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TerritoryRadiusRnd, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MoveDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MoveSpeed, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +InvincibleHiddenOctarock: [] +KorokRailMove: +- {type: static_param, param_type: const float*, param_name: OnRailDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FarDistance, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreNoWaitStopPoint, param_offset: 0x48} +- {type: map_unit_param, param_type: const float*, param_name: RailMoveSpeed, param_offset: 0x50} +InvisibleKorokRailMove: +- {type: call, fn: _ZN5uking2ai13KorokRailMove11loadParams_Ev, addr: 0x710045bc68} +IsPlacementAreaEnemy: +- {type: static_param, param_type: const int*, param_name: CheckType, param_offset: 0x38} +ItemAmiiboRoot: +- {type: map_unit_param, param_type: const int*, param_name: AmiiboCharacterId, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: AmiiboNumberingId, param_offset: 0x40} +ItemConductor: [] +JumpAttack: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +JustAvoidFinishWait: +- {type: static_param, param_type: const bool*, param_name: IsUseWaitAfterMain, param_offset: 0x38} +KakarikoKokkoTimeline: +- {type: call, fn: _ZN5uking2ai16AnimalTimelineAI11loadParams_Ev, addr: 0x710030d2f4} +- {type: static_param, param_type: 'sead::SafeString', param_name: ForceChangeChildKeyName, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: StartForceChangeFlagName, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: EndForceChangeFlagName, param_offset: 0xa0} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: CheckGatheredFlagName, param_offset: 0xb0} +KeepBackSelect: +- {type: static_param, param_type: const int*, param_name: KeepTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: BaseAxis, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BackAngle, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: XZOnly, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: NodeName, param_offset: 0x58} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: LocalOffset, param_offset: 0x68} +KeeseDieSelect: +- {type: call, fn: _ZN5uking2ai22DieSelectChemShockPlus11loadParams_Ev, addr: 0x7100361814} +KeeseHangOnCeil: [] +KeeseNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: RoamHeightFromGlowObj, param_offset: 0x3d0} +- {type: map_unit_param, param_type: const bool*, param_name: IsCreateOnFace, param_offset: 0x3d8} +KeeseRoam: +- {type: static_param, param_type: const float*, param_name: MinOffsetY, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MaxOffsetY, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RoamRadius, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinMoveDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: MaxMoveDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NoWaitRatio, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x68} +KeeseSwarmNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +KeeseSwarmRoam: +- {type: call, fn: _ZN5uking2ai10CircleMove11loadParams_Ev, addr: 0x710034f0d0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x60} +KeyLockedShutter: [] +CreateActorWithTarget: +- {type: static_param, param_type: const int*, param_name: CreateNewActorInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CreateBasePosNum, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CreateContinueTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AfterWaitTime, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsAllowCreateNoSafeArea, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsRotateTargetDir, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: CreateActorName, param_offset: 0x68} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BaseOffset, param_offset: 0x78} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CreateRandArea, param_offset: 0x80} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ProhibitedCreateArea, param_offset: 0x88} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x90} +KokkoAngry: +- {type: call, fn: _ZN5uking2ai21CreateActorWithTarget11loadParams_Ev, addr: 0x7100359af8} +KokkoAngryTargetSelect: [] +KokkoEscapeAI: +- {type: call, fn: _ZN5uking2ai14AnimalEscapeAI11loadParams_Ev, addr: 0x710030602c} +KokkoRoot: +- {type: call, fn: _ZN5uking2ai8PreyRoot11loadParams_Ev, addr: 0x7100503cf8} +- {type: static_param, param_type: const int*, param_name: StartSpecialAttackCount, param_offset: 0x208} +- {type: static_param, param_type: 'sead::SafeString', param_name: AvoidCountActorName, param_offset: 0x210} +KorokAnswerResponceRoot: +- {type: map_unit_param, param_type: const float*, param_name: EffectDispSize, param_offset: 0x38} +- {type: map_unit_param, param_type: const bool*, param_name: IsNoResponceSound, param_offset: 0x40} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EffectDispActorName, param_offset: 0x48} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: EffectDIspOffset, param_offset: 0x58} +KorokFlowerColorRoot: +- {type: map_unit_param, param_type: const int*, param_name: KorokFlowerColorNum, param_offset: 0x38} +KorokFlowerRoot: +- {type: map_unit_param, param_type: const bool*, param_name: IsNoAppearEffect, param_offset: 0x38} +- {type: map_unit_param, param_type: const bool*, param_name: IsLastKorokFlower, param_offset: 0x40} +KorokGoalTimerRootAI: +- {type: map_unit_param, param_type: const float*, param_name: GoalCountLimit, param_offset: 0x38} +KorokPinWheelRoot: +- {type: static_param, param_type: const float*, param_name: RotSpd, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Length, param_offset: 0x40} +KorokPotRootAI: +- {type: static_param, param_type: const float*, param_name: CrayLaunchSpeedRate, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CrayLaunchAngularSpeed, param_offset: 0x40} +- {type: map_unit_param, param_type: const float*, param_name: CrayLaunchSpeed, param_offset: 0x48} +- {type: map_unit_param, param_type: const bool*, param_name: IsCrayShot, param_offset: 0x50} +KorokStartStandRoot: [] +KorokStoneLift: [] +KorokTargetRailMove: +- {type: call, fn: _ZN5uking2ai13KorokRailMove11loadParams_Ev, addr: 0x710045bc68} +- {type: static_param, param_type: const float*, param_name: RotSpd, param_offset: 0xc0} +- {type: map_unit_param, param_type: const int*, param_name: KorokTargetAppearFrame, param_offset: 0xc8} +- {type: map_unit_param, param_type: const int*, param_name: KorokTargetVanishFrame, param_offset: 0xd0} +- {type: map_unit_param, param_type: const bool*, param_name: IsNoAppearEffect, param_offset: 0xd8} +LOSFurthestHitPointFinder: +- {type: static_param, param_type: const int*, param_name: MaxNumCheck, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CheckDistance, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: OnlyCheckBehind, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: UseActionB, param_offset: 0x60} +LandHumEnemyFindBait: +- {type: call, fn: _ZN5uking2ai18UnarmedEnemySearch11loadParams_Ev, addr: 0x71004b64a0} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0x68} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetBait, param_offset: 0x70} +- {type: dynamic_param, param_type: bool*, param_name: IsNotice, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: IsDropWeapon, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsValidForceNeck, param_offset: 0x80} +LandHumEnemyFindBaitWeapon: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetWeapon, param_offset: 0x38} +LandHumEnemyThrowWeapon: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ThrowWeaponNearDist, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WaitTimeMax, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +LandHumEnemyUnarmedBattle: +- {type: call, fn: _ZN5uking2ai18UnarmedEnemySearch11loadParams_Ev, addr: 0x71004b64a0} +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: EquipItemSearchIdx, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: SearchWeaponDist, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: SearchBaseWeaponDist, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: SearchWeaponTargetDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: SearchBowTargetDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: GrabCheckRadius, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: SearchObjectDist, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: ItemChaseableSpd, param_offset: 0xa8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: AttOffset, param_offset: 0xb0} +- {type: static_param, param_type: const bool*, param_name: CanGrabHeavy, param_offset: 0xb8} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidDist, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidSpeed, param_offset: 0xd0} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidAng, param_offset: 0xd8} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: OnCoHitAllowGrabAngle, param_offset: 0xf8} +LandHumGourmandEnemyNormal: +- {type: call, fn: _ZN5uking2ai18LandHumEnemyNormal11loadParams_Ev, addr: 0x7100462d90} +- {type: static_param, param_type: const int*, param_name: RefindBaitTime, param_offset: 0x400} +- {type: static_param, param_type: const int*, param_name: EatArea, param_offset: 0x408} +- {type: static_param, param_type: const int*, param_name: EatNavType, param_offset: 0x410} +- {type: aitree_variable, param_type: void*, param_name: TargetBaitActorLink, param_offset: 0x430} +- {type: aitree_variable, param_type: bool*, param_name: IsTrgChangeUnderWaterState, param_offset: 0x438} +LandingChemicalBall: +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackIntensity, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AttackType, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: CutGrassType, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: Scale, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsUseAtCollision, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: CheckColConInfo, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: ExpandActorName, param_offset: 0x70} +LargeCannonAttackRoot: +- {type: static_param, param_type: const float*, param_name: AttackWaitTime, param_offset: 0x38} +LastAttackerSelect: [] +LastAttackerSpecialActionSelect: +- {type: static_param, param_type: const bool*, param_name: IsAngerActorSpecial, param_offset: 0x38} +LastBossBeamAttackRoot: +- {type: static_param, param_type: const int*, param_name: AttackPowerForPlayer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AddAttackPower, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: WaitTime, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: KeepDistance, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: MoveSpeed, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: InitSpeed, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: Accel, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: KeepDistanceRand, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: RandKeepFrame, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: BrakeStartFrame, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: MoveYSpeed, param_offset: 0x98} +- {type: static_param, param_type: const bool*, param_name: IsMove, param_offset: 0xa0} +- {type: static_param, param_type: const bool*, param_name: IsChangeable, param_offset: 0xa8} +- {type: static_param, param_type: const bool*, param_name: IsCreateGuardEffect, param_offset: 0xb0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReflectOffset, param_offset: 0xb8} +LastBossDemoWarpMove: [] +LastBossDemoWarpRoot: +- {type: static_param, param_type: const bool*, param_name: IsPartsActorTgOn, param_offset: 0x38} +LastBossNormalWarpRoot: +- {type: static_param, param_type: const bool*, param_name: IsKeepDisableDraw, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: SleepPartsActorName, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsReturnHome, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsForceWarp, param_offset: 0x58} +- {type: dynamic_param, param_type: bool*, param_name: IsPartsActorTgOn, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsPartsWarpEffectSync, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +LastBossRailWarpRoot: +- {type: call, fn: _ZN5uking2ai22LastBossNormalWarpRoot11loadParams_Ev, addr: 0x7100477ca8} +- {type: dynamic_param, param_type: int*, param_name: RailIndex, param_offset: 0x80} +LastBossRoot: +- {type: static_param, param_type: const int*, param_name: ForceRecoverHitMax, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ForceRecoverDamageMax, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AddForceRecoverHitNum, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AddForceRecoverDamage, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AuraHPRate, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: AuraDemoName, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: AuraEntryName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: AuraWallEntry, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: AuraDemoDownEntry, param_offset: 0x90} +LastBossShieldBash: +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +LastBossShootGaleArrowRoot: +- {type: call, fn: _ZN5uking2ai28LastBossShootNormalArrowRoot11loadParams_Ev, addr: 0x710047c28c} +LastBossSwordWhirlSlash: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsNoCharge, param_offset: 0x40} +LastBossThunderRoot: [] +LastBossWeaponAttackRoot: +- {type: static_param, param_type: const int*, param_name: EnemyType, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsStartBossBgm, param_offset: 0x40} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDist, param_offset: 0x48} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDistOffset, param_offset: 0x50} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReappearanceDist, param_offset: 0x58} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReappearanceDistOffset, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0x68} +LeadToTarget: +- {type: static_param, param_type: const float*, param_name: SuccessRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: WaitDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ResumeLeadDistance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OkPathFailRange, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: DontWaitIfLeaderIsAhead, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: LeaderActor, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: WaitFramesAfterArrive, param_offset: 0x58} +LeaderDistanceSelector: +- {type: static_param, param_type: const float*, param_name: BoundaryDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OverlapDistance, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: LeaderActor, param_offset: 0x48} +LeaveFromTarget: +- {type: static_param, param_type: const float*, param_name: LeaveDist, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +LifeChangeDemoCaller: +- {type: static_param, param_type: const float*, param_name: LifeRatio, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: OnlyOnce, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsIgnorePlayerLand, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoEntryPoint, param_offset: 0x60} +Lifted: +- {type: static_param, param_type: const bool*, param_name: IsGetItem, param_offset: 0x38} +LimitedTimeredActorCreator: +- {type: static_param, param_type: const float*, param_name: CreateTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CreateTimerRand, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: CreateActorName, param_offset: 0x48} +- {type: map_unit_param, param_type: const int*, param_name: CreateLimit, param_offset: 0x58} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x60} +- {type: aitree_variable, param_type: void*, param_name: GeneratedActorLink, param_offset: 0x70} +LineCheckTag: +- {type: map_unit_param, param_type: const int*, param_name: LineCheckType, param_offset: 0x40} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: LineCheckVec, param_offset: 0x48} +LinkTagCheck: +- {type: static_param, param_type: const int*, param_name: SignalType, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: SetEnableJobTimerTiming, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsNotConnectOn, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsCheckChildEnd, param_offset: 0x50} +LinkageEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +LizalfosBreathAttack: +- {type: static_param, param_type: const int*, param_name: MinAttackTimeForTired, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MinTiredTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TiredTimeRate, param_offset: 0x48} +LumberjackFallenTree: +- {type: static_param, param_type: const float*, param_name: ToLogAngVel, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: MaxCheckAng, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: CheckDis, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: CheckHeightRate, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: TerrorRegistAng, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: TerrorUnregistTimelimit, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: NoiseLevel, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: IsCheckHeight, param_offset: 0xd0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: TerrorOffsetPos4Falling, param_offset: 0xd8} +- {type: aitree_variable, param_type: int*, param_name: LumberjackType, param_offset: 0xe0} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: ForceSetDropPos, param_offset: 0xe8} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: MoveDirection, param_offset: 0xf0} +LumberjackTree: +- {type: static_param, param_type: const float*, param_name: FallInterval, param_offset: 0x250} +- {type: static_param, param_type: const float*, param_name: FellImpRate, param_offset: 0x258} +- {type: static_param, param_type: const float*, param_name: FellRotRate, param_offset: 0x260} +- {type: static_param, param_type: const float*, param_name: CutOffsetLower, param_offset: 0x268} +- {type: static_param, param_type: const float*, param_name: CutOffsetUpper, param_offset: 0x270} +- {type: static_param, param_type: const float*, param_name: AlphaLower, param_offset: 0x278} +- {type: static_param, param_type: const float*, param_name: AlphaSpeed, param_offset: 0x280} +- {type: map_unit_param, param_type: const float*, param_name: CutRate, param_offset: 0x288} +- {type: map_unit_param, param_type: const float*, param_name: AngleY, param_offset: 0x290} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: DropTable, param_offset: 0x298} +- {type: aitree_variable, param_type: int*, param_name: LumberjackType, param_offset: 0x2a8} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: ForceSetDropPos, param_offset: 0x2b0} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: MoveDirection, param_offset: 0x2b8} +LynelArrowAttackSelectBase: +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0x38} +LynelArrowAttackSelect: +- {type: call, fn: _ZN5uking2ai26LynelArrowAttackSelectBase11loadParams_Ev, addr: 0x710048b2e4} +LynelArrowAttackSelectOnce: +- {type: call, fn: _ZN5uking2ai26LynelArrowAttackSelectBase11loadParams_Ev, addr: 0x710048b2e4} +LynelArrowBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: AttackCount, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: FrontCheckBoneName, param_offset: 0xa0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: FrontDirFromBone, param_offset: 0xb0} +LynelAttackThroughMove: +- {type: static_param, param_type: const int*, param_name: SideOffsetDirType, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CliffFailTime, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: SideOffset, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ThroughDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AcceptableRadius, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +LynelBackStepFromTarget: +- {type: static_param, param_type: const float*, param_name: MoveDistMin, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MoveDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AddCheckAngle, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +LynelChaseBattleMove: +- {type: static_param, param_type: const float*, param_name: SlowDownDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SpeedUpDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CloseStartDist, param_offset: 0x58} +LynelCloseBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: BackAngleAction, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: BackAngle, param_offset: 0x98} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0xa0} +LynelDirSelect: +- {type: static_param, param_type: const float*, param_name: BasePosOffsetFront, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BasePosOffsetBack, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BackAngle, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsCheckOnlyXZ, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +LynelDistanceLostCheck: +- {type: call, fn: _ZN5uking2ai17DistanceLostCheck11loadParams_Ev, addr: 0x7100362868} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0x68} +LynelEscapeFromTarget: +- {type: static_param, param_type: const int*, param_name: KeepTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SpaceDistMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SpaceDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MoveDistMin, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +LynelFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0x140} +LynelLineMoveAttack: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: GoalRadius, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsSkipPrepare, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x58} +LynelNavMoveNoStop: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReachTargetArea, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RepathTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: TooFarDist, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +LynelNavMoveTarget: +- {type: call, fn: _ZN5uking2ai18LynelNavMoveNoStop11loadParams_Ev, addr: 0x71004931c4} +- {type: static_param, param_type: const int*, param_name: StopGear, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: CliffCheckDist, param_offset: 0x78} +LynelNormal: +- {type: call, fn: _ZN5uking2ai18LandHumEnemyNormal11loadParams_Ev, addr: 0x7100462d90} +- {type: aitree_variable, param_type: int*, param_name: LynelAreaAlarmPoint, param_offset: 0x400} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0x408} +- {type: aitree_variable, param_type: int*, param_name: LynelNoticeAttackRepeatNum, param_offset: 0x410} +LynelNoticeAttacked: +- {type: static_param, param_type: const int*, param_name: RepeatMax, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: RepeatResetTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ForceReturnDistFromHomePos, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: aitree_variable, param_type: int*, param_name: LynelNoticeAttackRepeatNum, param_offset: 0x58} +LynelNoticeTerror: +- {type: call, fn: _ZN5uking2ai17EnemyNoticeTerror11loadParams_Ev, addr: 0x71003a7d1c} +LynelOnNoNavMeshPos: +- {type: static_param, param_type: const int*, param_name: JumpTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: HeavySlopeAngle, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NoJumpDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: HyperJumpDist, param_offset: 0x58} +LynelRecognizeTarget: +- {type: static_param, param_type: const int*, param_name: AttensionStartPoint, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ObserveEndPoint, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: DrawnWeaponPoint, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: WeaponAimPoint, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: AttackPoint, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: DashPoint, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: AppPoint, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: HorseRidePoint, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: DamagePoint, param_offset: 0x78} +- {type: static_param, param_type: const int*, param_name: TrickedMaskPoint, param_offset: 0x80} +- {type: static_param, param_type: const int*, param_name: BombPoint, param_offset: 0x88} +- {type: static_param, param_type: const int*, param_name: AimPoint, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: NearDistPoint, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: MiddleDistPoint, param_offset: 0xa0} +- {type: static_param, param_type: const int*, param_name: TiredTime, param_offset: 0xa8} +- {type: static_param, param_type: const int*, param_name: TiredPoint, param_offset: 0xb0} +- {type: static_param, param_type: const int*, param_name: ForceBattleStartTime, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: NearDistance, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: FarDistance, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: AimAngle, param_offset: 0xd0} +- {type: map_unit_param, param_type: const bool*, param_name: IsNearCreate, param_offset: 0xd8} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0xe0} +- {type: aitree_variable, param_type: int*, param_name: LynelAreaAlarmPoint, param_offset: 0xe8} +LynelRepeatAttack: +- {type: static_param, param_type: const int*, param_name: AttackNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +LynelRoam: +- {type: static_param, param_type: const int*, param_name: FreeIntervalMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: FreeIntervalMax, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: FreePer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: MoveIntervalMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: MoveIntervalMax, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: NoMoveTime, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: NoSpAttackMoveTime, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: SpAttackServiceTime, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: Territory, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: TargetDistMin, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: TargetDistMax, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: SpAttackServiceDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: SpAttackServiceAngle, param_offset: 0xa0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0xa8} +LynelRodeo: +- {type: aitree_variable, param_type: int*, param_name: LynelRodeoAttackHitNum, param_offset: 0x38} +LynelRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const int*, param_name: BowIdx, param_offset: 0x1d8} +- {type: static_param, param_type: const float*, param_name: BoneStandAddRatio, param_offset: 0x1e0} +- {type: static_param, param_type: 'sead::SafeString', param_name: RoarFlameActorName, param_offset: 0x1e8} +- {type: static_param, param_type: 'sead::SafeString', param_name: RoarFlamePartsKey, param_offset: 0x1f8} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathActorName, param_offset: 0x208} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey0, param_offset: 0x218} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey1, param_offset: 0x228} +- {type: static_param, param_type: 'sead::SafeString', param_name: BreathPartsKey2, param_offset: 0x238} +- {type: static_param, param_type: 'sead::SafeString', param_name: StandBoneName, param_offset: 0x248} +- {type: aitree_variable, param_type: int*, param_name: LynelAIFlags, param_offset: 0x258} +- {type: aitree_variable, param_type: int*, param_name: LynelAreaAlarmPoint, param_offset: 0x260} +- {type: aitree_variable, param_type: void*, param_name: LynelBodyControlUnit, param_offset: 0x268} +- {type: aitree_variable, param_type: void*, param_name: LynelMoveParam, param_offset: 0x270} +- {type: call, fn: sub_710070F83C, addr: 0x710070f83c} +LynelTackleMove: +- {type: static_param, param_type: const float*, param_name: ThroughDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CloseEndAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CloseEndDist, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +LynelThreeBreathAttack: +- {type: static_param, param_type: const float*, param_name: NearRange, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FarRange, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsCheckXZ, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +LynelWarp: [] +MagneGearRoot: [] +MagneGrabSelect: [] +RangeSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsSelectEveryFrame, param_offset: 0x48} +MagneGrabbedPartsRangeSelector: +- {type: call, fn: _ZN5uking2ai11RangeSelect11loadParams_Ev, addr: 0x71004bc308} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x50} +MagneStickRoot: +- {type: static_param, param_type: const float*, param_name: DefaultConnectionDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CollideRadiusFactor, param_offset: 0x48} +- {type: map_unit_param, param_type: const float*, param_name: CollideRadius, param_offset: 0x50} +- {type: map_unit_param, param_type: const bool*, param_name: JoinSystemGroup, param_offset: 0x58} +- {type: map_unit_param, param_type: const bool*, param_name: RegistFromBeginning, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: IgnoreObstacle, param_offset: 0x68} +- {type: aitree_variable, param_type: bool*, param_name: IsTargetFixedAcceptor, param_offset: 0x70} +MagneShaftRootBase: +- {type: call, fn: _ZN5uking2ai14MagneStickRoot11loadParams_Ev, addr: 0x71004a0084} +MagneShaftRoot: +- {type: call, fn: _ZN5uking2ai18MagneShaftRootBase11loadParams_Ev, addr: 0x710049f514} +MagneSliderBlockRootThunder: +- {type: call, fn: _ZN5uking2ai18MagneShaftRootBase11loadParams_Ev, addr: 0x710049f514} +Magnetglove: [] +MainFieldDungeonSelect: [] +MasquaradeSubTargetSelect: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x38} +MasterSwordBase100EnemyRoot: +- {type: static_param, param_type: const float*, param_name: KillAttentionWaitFrame, param_offset: 0x38} +MasterSwordRoot: +- {type: call, fn: _ZN5uking2ai12WeaponRootAI11loadParams_Ev, addr: 0x7100e1e510} +- {type: aitree_variable, param_type: void*, param_name: MagicCreateUnit, param_offset: 0xf0} +MergedDungeonPartsRoot: +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup00, param_offset: 0x38} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup00, param_offset: 0x40} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup01, param_offset: 0x48} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup01, param_offset: 0x50} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup02, param_offset: 0x58} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup02, param_offset: 0x60} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup03, param_offset: 0x68} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup03, param_offset: 0x70} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup04, param_offset: 0x78} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup04, param_offset: 0x80} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup05, param_offset: 0x88} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup05, param_offset: 0x90} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup06, param_offset: 0x98} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup06, param_offset: 0xa0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup07, param_offset: 0xa8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup07, param_offset: 0xb0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup08, param_offset: 0xb8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup08, param_offset: 0xc0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup09, param_offset: 0xc8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup09, param_offset: 0xd0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup10, param_offset: 0xd8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup10, param_offset: 0xe0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup11, param_offset: 0xe8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup11, param_offset: 0xf0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup12, param_offset: 0xf8} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup12, param_offset: 0x100} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup13, param_offset: 0x108} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup13, param_offset: 0x110} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup14, param_offset: 0x118} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup14, param_offset: 0x120} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: TransFieldBodyGroup15, param_offset: 0x128} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotateFieldBodyGroup15, param_offset: 0x130} +MessageReceiveCheckBasic: [] +MessageReceiveCheck: +- {type: call, fn: _ZN5uking2ai24MessageReceiveCheckBasic11loadParams_Ev, addr: 0x71004a4f40} +- {type: static_param, param_type: const int*, param_name: MsgType, param_offset: 0x40} +MessageReceiveCheckEveryFrame: +- {type: call, fn: _ZN5uking2ai24MessageReceiveCheckBasic11loadParams_Ev, addr: 0x71004a4f40} +- {type: static_param, param_type: const int*, param_name: MsgType, param_offset: 0x40} +MetalObjectBuried: +- {type: static_param, param_type: const float*, param_name: PullOutSpeed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CheckGroundRadiusScale, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreResistanceArea, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsCheckGrabYPosFix, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsCheckSelfY, param_offset: 0x58} +- {type: map_unit_param, param_type: const bool*, param_name: IsInGround, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: EnableRevival, param_offset: 0x68} +MetalObjectFixed: +- {type: map_unit_param, param_type: const bool*, param_name: IsFixedPlace, param_offset: 0x38} +MimicCliffStopEnemyNormalBase: +- {type: static_param, param_type: const int*, param_name: NoticeSoundTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OffsetHand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OffsetTail, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OffsetHandRotBase, param_offset: 0x50} +- {type: aitree_variable, param_type: int*, param_name: MimicryMaterial, param_offset: 0x58} +- {type: aitree_variable, param_type: bool*, param_name: IsStartResetMimicry, param_offset: 0x60} +- {type: aitree_variable, param_type: bool*, param_name: IsCliffFreeze, param_offset: 0x68} +MimicCliffStopEnemyNormal: +- {type: call, fn: _ZN5uking2ai29MimicCliffStopEnemyNormalBase11loadParams_Ev, addr: 0x7100352f8c} +- {type: static_param, param_type: const float*, param_name: JumpDistXZ, param_offset: 0x1e0} +MimicEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +- {type: static_param, param_type: const float*, param_name: PlayerForceFindDist, param_offset: 0x140} +- {type: aitree_variable, param_type: int*, param_name: MimicryMaterial, param_offset: 0x148} +- {type: aitree_variable, param_type: bool*, param_name: IsStartResetMimicry, param_offset: 0x150} +MimicEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const float*, param_name: PlayerForceFindDist, param_offset: 0x3d0} +- {type: static_param, param_type: const float*, param_name: RideHorseMaskPlayerFindDist, param_offset: 0x3d8} +- {type: aitree_variable, param_type: bool*, param_name: IsStartResetMimicry, param_offset: 0x3e0} +MimicFlagSelect: +- {type: map_unit_param, param_type: const bool*, param_name: IsMimicry, param_offset: 0x38} +MimicryResetCheck: +- {type: static_param, param_type: const float*, param_name: ResetRate, param_offset: 0x38} +- {type: aitree_variable, param_type: int*, param_name: MimicryMaterial, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: IsStartResetMimicry, param_offset: 0x48} +MiniGolemLifted: +- {type: call, fn: _ZN5uking2ai11EnemyLifted11loadParams_Ev, addr: 0x7100397308} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x70} +MiniGolemReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x68} +MiniGolemRoot: +- {type: call, fn: _ZN5uking2ai13GolemRootBase11loadParams_Ev, addr: 0x71004024d0} +- {type: static_param, param_type: const int*, param_name: LiftDeadTime, param_offset: 0x318} +- {type: aitree_variable, param_type: bool*, param_name: IsAllowReactionLift, param_offset: 0x310} +MiniGolemSleep: +- {type: call, fn: _ZN5uking2ai17SpecialEnemySleep11loadParams_Ev, addr: 0x710059ad6c} +- {type: aitree_variable, param_type: void*, param_name: GolemChemicalController, param_offset: 0x60} +MoonAI: [] +MoonNameTag: +- {type: map_unit_param, param_type: const int*, param_name: MoonNameType, param_offset: 0x38} +MoriblinSpearBattle: +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AttackStartRotate, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: ForceAttackDist, param_offset: 0x70} +MoriblinSpearNearBattle: +- {type: static_param, param_type: const int*, param_name: BackWalkPer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: BackStepPer, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +MoriblinUnarmedBattle: +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AttackStartRotate, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: PursuingAttackInterval, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: PursuingAttackStartAng, param_offset: 0x78} +MotorcycleRootBase: [] +MotorcycleRoot: +- {type: call, fn: _ZN5uking2ai18MotorcycleRootBase11loadParams_Ev, addr: 0x710043ec84} +- {type: static_param, param_type: const float*, param_name: InWaterRateForDisappear, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DistanceToPlayerForDisappear, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NoiseEnergyEmpty, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: NoiseNotRidden, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: NoiseThrottleClose, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NoiseThrottleOpen, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: ForestFogRatioForDisappear, param_offset: 0x68} +MoveAndFreeFallGondola: +- {type: call, fn: _ZN5uking2ai8RailMove11loadParams_Ev, addr: 0x710032c528} +- {type: map_unit_param, param_type: const float*, param_name: RailMoveSpeed, param_offset: 0xa0} +- {type: map_unit_param, param_type: const float*, param_name: GondolaRailOffsetTime, param_offset: 0xa8} +MoveAroundTarget: +- {type: static_param, param_type: const int*, param_name: TurnTimeBase, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: TurnTimeRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: StartRange, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EndRange, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ChangeRangeRate, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +MoveLOSFeedback: +- {type: static_param, param_type: const float*, param_name: FramesCooldownFeedback, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LOSCheckLength, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +MoveRemainsElectric: +- {type: call, fn: _ZN5uking2ai15RailMoveRemains11loadParams_Ev, addr: 0x7100535d18} +- {type: static_param, param_type: const float*, param_name: ReactiveRange, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: DemoCallWaitTime, param_offset: 0x88} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: CannonOffset, param_offset: 0x90} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: WeakPointOffset, param_offset: 0x98} +- {type: map_unit_param, param_type: const bool*, param_name: IsJoinRemainsBattle, param_offset: 0xa0} +MoveToCameraFrontXZ: +- {type: static_param, param_type: const int*, param_name: ReverseTimer, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ReverseCount, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: DistFromPlayer, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: MinDistFromPlayer, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AvoidPlayerDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AddLineCheckNavRadius, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: ReachableRadius, param_offset: 0x70} +- {type: static_param, param_type: const bool*, param_name: IsSuccessByLineReachable, param_offset: 0x78} +MoveToTargetCollisionFeedback: +- {type: static_param, param_type: const float*, param_name: CooldownFramesTargetAdjust, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FramesUntilRetryOriginalPos, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: IdealDepthMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: IdealDepthMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: IgnoreYComponentThreshold, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: UseMoveAwayFromPos, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: RetryOriginalPos, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsAdjustDepthOnCollision, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x78} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: MoveAwayFromPos, param_offset: 0x80} +NPCAlert: +- {type: static_param, param_type: const int*, param_name: MinReactionTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReleaseDist, param_offset: 0x40} +- {type: dynamic_param, param_type: int*, param_name: TerrorLevel, param_offset: 0x48} +- {type: dynamic_param, param_type: bool*, param_name: IsTimeOver, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsSitting, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TerrorEmitter, param_offset: 0x68} +NPCArtistRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x238} +NPCAttack: +- {type: static_param, param_type: const int*, param_name: ActionBaseTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ActionTimePlay, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ActionRate, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AttackRate, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: AttackModeTime, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: GuardModeTime, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: EnemyChanceTime, param_offset: 0x68} +- {type: dynamic_param, param_type: float*, param_name: TerrorLevel, param_offset: 0x70} +- {type: dynamic_param, param_type: bool*, param_name: IsBattleStart, param_offset: 0x78} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x80} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: EnemyLink, param_offset: 0x88} +NPCAttentionAI: +- {type: static_param, param_type: const int*, param_name: DurationTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TurnAngleDiff, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsUseSight, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +NPCAvoid: +- {type: static_param, param_type: const int*, param_name: TargetTerrorLevel, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ReleaseCrouchTime, param_offset: 0x40} +- {type: dynamic_param, param_type: int*, param_name: TerrorLevel, param_offset: 0x48} +- {type: dynamic_param, param_type: int*, param_name: TerrorLayer, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsReturnFromDemo, param_offset: 0x58} +- {type: dynamic_param, param_type: bool*, param_name: IsNeedUnEquipWeapon, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsSitting, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x78} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TerrorEmitter, param_offset: 0x80} +NPCChasePlayerBlueFire: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LeaveDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostDist, param_offset: 0x50} +NPCClerkRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +NPCConfront: +- {type: static_param, param_type: const int*, param_name: CounterGuardCount, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReleaseDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ReleaseTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: CounterRate, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: DirectTurnAngle, param_offset: 0x58} +- {type: dynamic_param, param_type: int*, param_name: TerrorLevel, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsTimeOver, param_offset: 0x68} +- {type: dynamic_param, param_type: bool*, param_name: IsSitting, param_offset: 0x70} +- {type: dynamic_param, param_type: bool*, param_name: IsNeedUnEquipWeapon, param_offset: 0x78} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x80} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TerrorEmitter, param_offset: 0x88} +NPCConfrontEnemy: +- {type: static_param, param_type: const float*, param_name: ReleaseDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ReleaseTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RewardDistance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: TerrorDistAfterPlayerRescue, param_offset: 0x50} +- {type: dynamic_param, param_type: int*, param_name: TerrorLevel, param_offset: 0x58} +- {type: dynamic_param, param_type: int*, param_name: TerrorLayer, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsReturnFromDemo, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x78} +- {type: map_unit_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x80} +NPCGerudoQueenRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +- {type: map_unit_param, param_type: const bool*, param_name: IsOnHelmet, param_offset: 0x238} +NPCHeartsRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +NPCHorseRide: +- {type: static_param, param_type: const int*, param_name: GearLevel, param_offset: 0xe0} +- {type: static_param, param_type: const int*, param_name: GearResetPathNum, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: PlayerNearDistance, param_offset: 0xf0} +- {type: aitree_variable, param_type: void*, param_name: EventBindUnit, param_offset: 0x268} +NPCHorseRideWait: [] +NPCMamonoShopRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: MamonoShopPlacement, param_offset: 0x238} +NPCMove: +- {type: static_param, param_type: const float*, param_name: TerritoryRange, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: Destination, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: MoveEndASName, param_offset: 0x50} +NPCMoveToRailPoint: +- {type: dynamic_param, param_type: int*, param_name: RailPointIndex, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsTurnToRailPointDir, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsAlignmentAnchor, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: RailUniqueName, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: ASName, param_offset: 0x60} +NPCReaction: +- {type: dynamic_param, param_type: int*, param_name: ReactionId, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsReceiveInterest2, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: MessageId, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: GazeASName, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: StaggerDir, param_offset: 0x68} +NPCReturnAnchor: [] +NPCReturnRestPosRoot: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +NPCRoam: +- {type: static_param, param_type: const int*, param_name: WaitFrame, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WaitFrameRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Radius, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: WalkDistMin, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: WalkDistMax, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: WaitASName, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: BasisPos, param_offset: 0x70} +NPCRunaway: +- {type: static_param, param_type: const float*, param_name: ReleaseDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CorneredDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: StandRateTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: StandingTime, param_offset: 0x50} +- {type: dynamic_param, param_type: int*, param_name: TerrorLevel, param_offset: 0x58} +- {type: dynamic_param, param_type: int*, param_name: TerrorLayer, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsReturnFromDemo, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x78} +NPCSearch: +- {type: dynamic_param, param_type: bool*, param_name: IsHearing, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: Target, param_offset: 0x48} +NPCSurprised: +- {type: dynamic_param, param_type: int*, param_name: TerrorLayer, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsNeedUnEquipWeapon, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TerrorEmitter, param_offset: 0x48} +NPCSuspend: +- {type: static_param, param_type: const int*, param_name: WaitTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: EndMoveTime, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: RetryCount, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: SearchRadius, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: ASName, param_offset: 0x58} +NPCTalkBalloon: +- {type: static_param, param_type: const int*, param_name: DurationTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: DelayFrame, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: MessageId, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +NPCTerrorAI: +- {type: static_param, param_type: const int*, param_name: TerrorEndTime, param_offset: 0x38} +- {type: dynamic_param, param_type: int*, param_name: TerrorLayer, param_offset: 0x40} +- {type: dynamic_param, param_type: float*, param_name: TerrorLevel, param_offset: 0x48} +- {type: dynamic_param, param_type: bool*, param_name: IsReturnFromDemo, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsTimeOver, param_offset: 0x58} +- {type: dynamic_param, param_type: bool*, param_name: IsNeedUnEquipWeapon, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x70} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TerrorEmitter, param_offset: 0x78} +NPCTimeline: +- {type: call, fn: _ZN5uking2ai10TimelineAI11loadParams_Ev, addr: 0x7100e1c440} +NPCTravelBase: [] +NPCTravel: +- {type: call, fn: _ZN5uking2ai13NPCTravelBase11loadParams_Ev, addr: 0x71004df788} +- {type: static_param, param_type: const float*, param_name: WaitHorseReturnDist, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: GiveUpWaitHorseTime, param_offset: 0x80} +NPCTravelerRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +- {type: static_param, param_type: const bool*, param_name: IsRiderChangableAction, param_offset: 0x238} +NPCWander: +- {type: call, fn: _ZN5uking2ai13NPCTravelBase11loadParams_Ev, addr: 0x71004df788} +- {type: static_param, param_type: const float*, param_name: RainWaitTime, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: GoalDistance, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: RailUpdateDistRate, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: RainDestination, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: NormalASKeyName, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: RainASKeyName, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: RailUniqueName, param_offset: 0xc0} +- {type: dynamic_param, param_type: bool*, param_name: IsPathRest, param_offset: 0xd0} +NavMeshTurnAwayFromHitPos: +- {type: static_param, param_type: const int*, param_name: NumLOSCheckMax, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LOSCheckLength, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: MoveToSafePosAfterTurn, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: HitPos, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +NavMoveNearTarget: +- {type: call, fn: _ZN5uking2ai13NavMoveTarget11loadParams_Ev, addr: 0x71004b79ac} +- {type: static_param, param_type: const float*, param_name: TargetVMax, param_offset: 0x380} +- {type: static_param, param_type: const float*, param_name: TargetVMin, param_offset: 0x388} +NavMoveTargetClosestPoint: +- {type: call, fn: _ZN5uking2ai17NavMoveNearTarget11loadParams_Ev, addr: 0x71004b7078} +- {type: static_param, param_type: const float*, param_name: SearchRadius, param_offset: 0x3a0} +NavMoveTargetWithJumpWater: +- {type: call, fn: _ZN5uking2ai13NavMoveTarget11loadParams_Ev, addr: 0x71004b79ac} +- {type: static_param, param_type: const float*, param_name: JumpDist, param_offset: 0x380} +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x388} +- {type: static_param, param_type: const float*, param_name: WaterCheckDist, param_offset: 0x390} +- {type: static_param, param_type: const bool*, param_name: IsCheckDamage, param_offset: 0x398} +NavViewMove: +- {type: static_param, param_type: const float*, param_name: SubsAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +NearCreateAppearTypeSelect: +- {type: map_unit_param, param_type: const int*, param_name: NearCreateAppearType, param_offset: 0x38} +NearCreateSelect: +- {type: map_unit_param, param_type: const bool*, param_name: IsNearCreate, param_offset: 0x38} +NewMannequinRoot: +- {type: map_unit_param, param_type: const int*, param_name: ArmorDyeColor, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: ShopSellType, param_offset: 0x40} +NormalHumanEquipableShield: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +NoticePartsRangeSelector: +- {type: call, fn: _ZN5uking2ai11RangeSelect11loadParams_Ev, addr: 0x71004bc308} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x50} +NpcDemoRoot: [] +NpcMoveToAnchor: +- {type: dynamic_param, param_type: bool*, param_name: IsTurnToAnchorDir, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsAlignmentAnchor, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: AnchorName, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: AnchorUniqueName, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: ASKeyName, param_offset: 0x68} +NpcTebaRoot: +- {type: static_param, param_type: const int*, param_name: ShowMessageLockonMinInterval, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ApproachPlayerHeight, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ShowMessageDoDist, param_offset: 0x48} +NpcTebaTrainingRoot: +- {type: call, fn: _ZN5uking2ai7NPCRoot11loadParams_Ev, addr: 0x71004dc91c} +NushiEscapeSelector: +- {type: static_param, param_type: const int*, param_name: NumOfAllowedEscapes, param_offset: 0x38} +NushiWarp: [] +OctarockBattle: +- {type: call, fn: _ZN5uking2ai19ShootingEnemyBattle11loadParams_Ev, addr: 0x7100569bd8} +- {type: static_param, param_type: const float*, param_name: ActorDisplayRadius, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: AttackDistMin, param_offset: 0xd0} +- {type: static_param, param_type: const bool*, param_name: IsAttackOnlyOutScreen, param_offset: 0xd8} +- {type: static_param, param_type: const bool*, param_name: IsHideMode, param_offset: 0xe0} +- {type: static_param, param_type: const bool*, param_name: IsFirstAttackIntervalZero, param_offset: 0xe8} +- {type: static_param, param_type: const bool*, param_name: IsLostAttack, param_offset: 0xf0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShootActorKey, param_offset: 0xf8} +- {type: static_param, param_type: 'sead::SafeString', param_name: VacuumPartsKey, param_offset: 0x108} +OctarockEscape: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +OctarockHideEscape: +- {type: call, fn: _ZN5uking2ai14OctarockEscape11loadParams_Ev, addr: 0x71004ec950} +- {type: static_param, param_type: const float*, param_name: EscapeDist, param_offset: 0x60} +OctarockOptionRoot: +- {type: static_param, param_type: const bool*, param_name: IsBreakable, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: IsMimicry, param_offset: 0xd0} +OctarockReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: static_param, param_type: const bool*, param_name: IsWigBreackByGust, param_offset: 0x68} +- {type: aitree_variable, param_type: void*, param_name: OctarockFormChangeUnit, param_offset: 0x70} +OctarockRootBase: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +OctarockRoot: +- {type: call, fn: _ZN5uking2ai16OctarockRootBase11loadParams_Ev, addr: 0x71005e3400} +- {type: static_param, param_type: const bool*, param_name: IsWigBreakable, param_offset: 0x1d8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ItemName, param_offset: 0x1e0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ConnectRigidBodyName, param_offset: 0x1f0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ConnectTgtBodyName, param_offset: 0x200} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShootActorName, param_offset: 0x210} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE, addr: 0x7100b0c320} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x220} +- {type: call, fn: _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE, addr: 0x7100b0c320} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x230} +- {type: call, fn: _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE, addr: 0x7100b0c320} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x240} +- {type: static_param, param_type: 'sead::SafeString', param_name: ExtraShootActorName, param_offset: 0x250} +- {type: static_param, param_type: 'sead::SafeString', param_name: ExtraShootActorKey, param_offset: 0x260} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: CarryActorName, param_offset: 0x270} +- {type: aitree_variable, param_type: void*, param_name: VacuumedExplodingBomb, param_offset: 0x280} +- {type: aitree_variable, param_type: void*, param_name: OctarockFormChangeUnit, param_offset: 0x288} +OctarockServiceHideWait: +- {type: static_param, param_type: const float*, param_name: SafeAreaDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SafeAreaDistRange, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MinWaitTime, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinWaitTimeRand, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: NoticeTerrorLevel, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: NoticeWorryRange, param_offset: 0x60} +OctarockWaterWait: +- {type: static_param, param_type: const int*, param_name: NoRiseTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: RiseDelayTimeMin, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: RiseDelayTimeMax, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: FinishFloatDelayTimeMin, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: FinishFloatDelayTimeMax, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: MinHeightFromWater, param_offset: 0x60} +- {type: aitree_variable, param_type: void*, param_name: OctarockFormChangeUnit, param_offset: 0x68} +OnCliffEnemyBattle: +- {type: static_param, param_type: const int*, param_name: LostCounter, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttackDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AttackAngleH, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AttackAngleVMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AttackAngleVMin, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x60} +OnCliffSurfaceSelect: +- {type: map_unit_param, param_type: const bool*, param_name: OnCliff, param_offset: 0x38} +- {type: aitree_variable, param_type: bool*, param_name: IsCliffFreeze, param_offset: 0x40} +OnCliffViewWait: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: map_unit_param, param_type: const bool*, param_name: OnCliffTurn, param_offset: 0x60} +OnEnterEventModeSelect: [] +OnNavFaceSelect: [] +OnRagdollSelect: [] +OneMemoryMagicBattleBase: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: const int*, param_name: EnlargeTime, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AttackRatio, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: BreathSize, param_offset: 0xb0} +- {type: static_param, param_type: 'sead::SafeString', param_name: MagicName, param_offset: 0xb8} +- {type: static_param, param_type: const int*, param_name: MagicPer, param_offset: 0x98} +- {type: static_param, param_type: const int*, param_name: AttackPowDirect, param_offset: 0xa0} +OneMemoryMagicBattle: +- {type: call, fn: _ZN5uking2ai24OneMemoryMagicBattleBase11loadParams_Ev, addr: 0x710049d940} +- {type: static_param, param_type: 'sead::SafeString', param_name: MemoryPartsName, param_offset: 0xe0} +OptionalWeaponAI: [] +OutOfScreen: +- {type: static_param, param_type: const int*, param_name: UpdateInterval, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TagetDistance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DeleteDistance, param_offset: 0x48} +PartHaveSelect: +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsKey, param_offset: 0x40} +PartsNoticeSelect: +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x38} +PartsSleepSelect: +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x38} +PauseMenuPlayerRoot: [] +PickShootItemRoot: +- {type: static_param, param_type: const int*, param_name: RemainTime, param_offset: 0x38} +PillarCrack: [] +PipeDrawing: [] +PlayerAttack: [] +PlayerBarrierBlow: +- {type: static_param, param_type: const float*, param_name: BlowRagdollTime, param_offset: 0x38} +PlayerBeetle: [] +PlayerCamera: [] +PlayerCaught: [] +PlayerClimb: +- {type: static_param, param_type: const float*, param_name: NoClimbTime, param_offset: 0x38} +PlayerCutJump: [] +PlayerDead: +- {type: static_param, param_type: const int*, param_name: RumbleType, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RumblePower, param_offset: 0x40} +PlayerDemoRoot: [] +PlayerGrab: [] +PlayerItem: [] +PlayerLadder: +- {type: static_param, param_type: const float*, param_name: LadderToClimbTime, param_offset: 0x50} +PlayerNavDestinationMove: +- {type: dynamic_param, param_type: float*, param_name: DestPosX, param_offset: 0x38} +- {type: dynamic_param, param_type: float*, param_name: DestPosY, param_offset: 0x40} +- {type: dynamic_param, param_type: float*, param_name: DestPosZ, param_offset: 0x48} +- {type: dynamic_param, param_type: float*, param_name: StickValue, param_offset: 0x50} +PlayerNormal: +- {type: static_param, param_type: const float*, param_name: EquipNoiseValue, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AttackNoiseValue, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ArrowReadyNoiseValue, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: ParashawlInvalidHeight, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: ParashawlInvalidHeightSurfing, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: ForceSlipSpeed, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: DoForbidTime, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: NoRideJumpDiffY, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: DashUpEnableSpeed, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: EnergyPerChargeLv, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: EnergyChargeStart, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: WallSlipEnableSpeed, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: CutAddSpeedRate, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: CutAddSpeedMax, param_offset: 0xd0} +- {type: static_param, param_type: const float*, param_name: CutAddSpeedDec, param_offset: 0xd8} +- {type: static_param, param_type: const float*, param_name: HorseCallTime, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: SwordSearchAngle, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: DoClimbForbidTime, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: DoClimbForbidAngVel, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: InWaterTimeForRagdoll, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: ToFallHeightForJustRush, param_offset: 0x108} +PlayerRideHorse: +- {type: static_param, param_type: const float*, param_name: DoForbidTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ThrowPowerY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ThrowPowerF, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: BackDismountSpeed, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: WaistAngleApplyRateFoward, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: WaistAngleApplyRateBack, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: MoveNoise, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: SwordAttackNoise, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AimAngleAddApplyAngle, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: AimAngleAdd, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: AimAngleAddApplySpeed, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: LowerAngleWaitTime, param_offset: 0x98} +- {type: dynamic_param, param_type: bool*, param_name: HasToPlayRidingOnAS, param_offset: 0xa0} +- {type: static_param, param_type: const int*, param_name: LynelRodeoCutNum, param_offset: 0x38} +PlayerRoot: [] +PlayerSetTarget: [] +PlayerSit: [] +PlayerSwim: +- {type: static_param, param_type: const float*, param_name: CatchHeightL, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CatchHeightH, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EnableHeight, param_offset: 0x48} +PlayerWaterFall: [] +PlayerZoraRide: [] +PointWindTagRoot: +- {type: map_unit_param, param_type: const int*, param_name: Direction, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: WindSpeed, param_offset: 0x40} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: Shape, param_offset: 0x48} +PracticeGuardianMiniNormal: +- {type: aitree_variable, param_type: int*, param_name: GuardianMiniPracticeState, param_offset: 0x38} +PreSleepCheck: +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CheckRadius, param_offset: 0x40} +PrevASEndSeq: +- {type: static_param, param_type: 'sead::SafeString', param_name: PrevASName, param_offset: 0x38} +PrevASOR2SelectTwo: +- {type: static_param, param_type: 'sead::SafeString', param_name: AS1, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: AS2, param_offset: 0x48} +PrevASSelect: +- {type: static_param, param_type: 'sead::SafeString', param_name: ASName, param_offset: 0x38} +PrevASSkipSeq: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: 'sead::SafeString', param_name: PrevASName, param_offset: 0x50} +PrevSomeASSelect: +- {type: static_param, param_type: const int*, param_name: SeqBank, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: TargetBone, param_offset: 0x40} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x48} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x58} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x68} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x78} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x88} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x98} +PreyChemicalDeadReaction: [] +PreyDead: +- {type: static_param, param_type: const float*, param_name: SendRadius, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsEmitForceEscapeSignal, param_offset: 0x40} +PreyDeadCauseSelector: [] +PreyDefWanderAI: +- {type: call, fn: _ZN5uking2ai11DefWanderAI11loadParams_Ev, addr: 0x7100e4cd40} +- {type: static_param, param_type: const int*, param_name: TimesStuckLimit, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: FramesStuckLimit, param_offset: 0x88} +- {type: aitree_variable, param_type: float*, param_name: FramesStuckOnTerrain, param_offset: 0x90} +- {type: aitree_variable, param_type: bool*, param_name: IsStuckOnTerrain, param_offset: 0x98} +PreyDropItemRoot: +- {type: call, fn: _ZN5uking2ai8PreyRoot11loadParams_Ev, addr: 0x7100503cf8} +- {type: static_param, param_type: const int*, param_name: MaxDropCount, param_offset: 0x208} +- {type: static_param, param_type: const float*, param_name: ForceDeleteInterval, param_offset: 0x210} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InitialVelocity, param_offset: 0x218} +PreyLookAtTarget: +- {type: static_param, param_type: const float*, param_name: LimitAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsUpdateViewPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +PreyReaction: [] +PreyStun: +- {type: static_param, param_type: const int*, param_name: StunTime, param_offset: 0x38} +PriestBossMode: +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x38} +PriestBossActorRoot: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +PriestBossActorNormalRoot: +- {type: call, fn: _ZN5uking2ai19PriestBossActorRoot11loadParams_Ev, addr: 0x710050edf8} +- {type: aitree_variable, param_type: int*, param_name: EquipWeaponBufIndex, param_offset: 0x40} +PriestBossActorCloneRoot: +- {type: call, fn: _ZN5uking2ai25PriestBossActorNormalRoot11loadParams_Ev, addr: 0x710050e230} +- {type: static_param, param_type: 'sead::SafeString', param_name: DisappearXLinkEventKey, param_offset: 0x88} +PriestBossActorEnemyRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const bool*, param_name: IsReactionOnDead, param_offset: 0x1d8} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x1e0} +PriestBossActorGiantRoot: +- {type: call, fn: _ZN5uking2ai19PriestBossActorRoot11loadParams_Ev, addr: 0x710050edf8} +- {type: static_param, param_type: const float*, param_name: FreqIronBallAttack, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FreqBigEarthReleaseAttack, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FreqEyeBeamAttack, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FreqStageRotation, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: FloatDistFromPlayer, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsFreeMoving, param_offset: 0x68} +- {type: aitree_variable, param_type: float*, param_name: KeepDistFromGround, param_offset: 0x70} +- {type: aitree_variable, param_type: bool*, param_name: IsActive, param_offset: 0x78} +- {type: aitree_variable, param_type: bool*, param_name: IsArrivedAtDestination, param_offset: 0x80} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0x88} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: FacePos, param_offset: 0x90} +PriestBossActorGiantFouthRoot: +- {type: call, fn: _ZN5uking2ai24PriestBossActorGiantRoot11loadParams_Ev, addr: 0x7100509ff4} +- {type: static_param, param_type: const float*, param_name: StompDistance, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: StompInAreaTimer, param_offset: 0x100} +- {type: static_param, param_type: const bool*, param_name: StompAction, param_offset: 0x108} +- {type: static_param, param_type: const bool*, param_name: StompAlwaysChange, param_offset: 0x110} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x118} +PriestBossActorNormalMode: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const int*, param_name: ApproachWarpRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ApproachStartDistance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LeaveStartDistance, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LeaveStartTime, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: WaitMinTime, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: WaitMaxTime, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: SecondHalfLifePercent, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: FramesRestrictEarthRelease, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: WarpPosDistFromPlayer, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: StageMarginRateForEarthRelease, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: IsManagedBtlMgr, param_offset: 0x90} +- {type: dynamic_param, param_type: bool*, param_name: FromSyncMode, param_offset: 0x98} +- {type: aitree_variable, param_type: int*, param_name: EquipWeaponBufIndex, param_offset: 0xa0} +- {type: aitree_variable, param_type: bool*, param_name: ReturnFromBananaMode, param_offset: 0xa8} +PriestBossActorPhaseSecondStart: +- {type: aitree_variable, param_type: int*, param_name: EquipWeaponBufIndex, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x40} +PriestBossAfterImageRoot: [] +PriestBossAttackGrave: +- {type: call, fn: _ZN5uking2ai11AttackGrave11loadParams_Ev, addr: 0x7100324360} +PriestBossBananaMode: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const int*, param_name: HealAmount, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: TimeUpFrames, param_offset: 0x88} +- {type: aitree_variable, param_type: bool*, param_name: ReturnFromBananaMode, param_offset: 0x90} +PriestBossBeamExplode: +- {type: call, fn: _ZN5uking2ai20BeamExplodeEitherHit11loadParams_Ev, addr: 0x7100329010} +- {type: static_param, param_type: const float*, param_name: MaxDistance, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: MaxDistanceChangeableBorder, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: MaxDistanceChangeableRevise, param_offset: 0x70} +PriestBossBlowoffDamageSelect: [] +PriestBossBlowoffReadyReaction: +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x38} +PriestBossBowEquiped: [] +PriestBossFormation: +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x38} +PriestBossCircleFormationRush: +- {type: call, fn: _ZN5uking2ai19PriestBossFormation11loadParams_Ev, addr: 0x7100518408} +- {type: static_param, param_type: const float*, param_name: HomingAttackTime, param_offset: 0x80} +PriestBossCircleFormationShoot: +- {type: call, fn: _ZN5uking2ai19PriestBossFormation11loadParams_Ev, addr: 0x7100518408} +- {type: static_param, param_type: const float*, param_name: HomingAttackTime, param_offset: 0x80} +PriestBossCloneBananaMode: +- {type: call, fn: _ZN5uking2ai20PriestBossBananaMode11loadParams_Ev, addr: 0x7100510098} +PriestBossCloneBulletRoot: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x40} +PriestBossDamageTypeSelect: [] +PriestBossEyeBeam: +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AttackPowerForPlayer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: ShotReviseAngleXU, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: ShotReviseAngleXD, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: ShotReviseAngleY, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsCreateGuardEffect, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsChangeable, param_offset: 0x70} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReflectOffset, param_offset: 0x78} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ShotOffset, param_offset: 0x80} +PriestBossEyeBeamFourth: +- {type: call, fn: _ZN5uking2ai17PriestBossEyeBeam11loadParams_Ev, addr: 0x7100514c4c} +- {type: static_param, param_type: const int*, param_name: AtDirType, param_offset: 0xb8} +- {type: static_param, param_type: const int*, param_name: AtAttr, param_offset: 0xc0} +- {type: static_param, param_type: const int*, param_name: AtType, param_offset: 0xc8} +- {type: static_param, param_type: const int*, param_name: AtShieldBreakPower, param_offset: 0xd0} +- {type: static_param, param_type: const int*, param_name: AtImpact, param_offset: 0xd8} +- {type: static_param, param_type: const int*, param_name: AtPowerReduce, param_offset: 0xe0} +- {type: static_param, param_type: const int*, param_name: AtPower, param_offset: 0xe8} +- {type: static_param, param_type: const int*, param_name: AtDamage, param_offset: 0xf0} +- {type: static_param, param_type: const int*, param_name: SearchEndAngle, param_offset: 0xf8} +- {type: aitree_variable, param_type: bool*, param_name: IsArrivedAtDestination, param_offset: 0x100} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0x108} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: FacePos, param_offset: 0x110} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x118} +PriestBossEyeBeamStandAim: +- {type: static_param, param_type: const float*, param_name: BorderDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BorderHeight, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: AimTargetPos, param_offset: 0x50} +PriestBossEyeBeamThird: +- {type: call, fn: _ZN5uking2ai17PriestBossEyeBeam11loadParams_Ev, addr: 0x7100514c4c} +- {type: aitree_variable, param_type: bool*, param_name: IsArrivedAtDestination, param_offset: 0xb8} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0xc0} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: FacePos, param_offset: 0xc8} +SiteBossSwordApproachRoot: +- {type: static_param, param_type: const float*, param_name: KeepDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MoveWidth, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BaseOffsetY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: PredictMoveFrame, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsCloseMove, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsPlayRunStartAS, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: OldTargetPos, param_offset: 0x70} +PriestBossFastWarpAttack: +- {type: call, fn: _ZN5uking2ai25SiteBossSwordApproachRoot11loadParams_Ev, addr: 0x7100592c44} +PriestBossGiantDeadSelector: +- {type: aitree_variable, param_type: bool*, param_name: PriestBossDownSideASPlaying, param_offset: 0x38} +PriestBossGiantDownSeq: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const bool*, param_name: RecoverIfAlreadyDown, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsUseRecover, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: HitGroundASName, param_offset: 0x50} +- {type: aitree_variable, param_type: float*, param_name: KeepDistFromGround, param_offset: 0x60} +- {type: aitree_variable, param_type: bool*, param_name: IsActive, param_offset: 0x68} +- {type: aitree_variable, param_type: bool*, param_name: IsArrivedAtDestination, param_offset: 0x70} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0x78} +PriestBossGiantEnemyRoot: +- {type: call, fn: _ZN5uking2ai24PriestBossActorEnemyRoot11loadParams_Ev, addr: 0x7100507940} +- {type: static_param, param_type: const int*, param_name: InvalidateIronBallDamageFrame, param_offset: 0x230} +- {type: aitree_variable, param_type: bool*, param_name: PriestBossDownSideASPlaying, param_offset: 0x238} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x240} +PriestBossGiantReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: aitree_variable, param_type: bool*, param_name: PriestBossUrbosasFuryEShock, param_offset: 0x68} +PriestBossGiantStageRotRoot: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const float*, param_name: CentralAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: PercentRadiusHeight, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: IronBallHeightOffset, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ArcPercent, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ZOffset, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: ZOffsetIndex, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: HoldBallsCounterLength, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: BallsReleaseIntervalFrames, param_offset: 0x78} +- {type: aitree_variable, param_type: float*, param_name: KeepDistFromGround, param_offset: 0x80} +- {type: aitree_variable, param_type: bool*, param_name: IsActive, param_offset: 0x88} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: FacePos, param_offset: 0x90} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0x98} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0xa0} +PriestBossGiantStageRotate: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const int*, param_name: SendCommand, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: SendOnThrowASEvent, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsUseStartAction, param_offset: 0x50} +PriestBossIAIAttack: +- {type: call, fn: _ZN5uking2ai9IAIAttack11loadParams_Ev, addr: 0x7100444de8} +PriestBossIronBall: +- {type: static_param, param_type: const int*, param_name: IronBallWaitThunderTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ChangeEndAnime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: IronBallOffsetY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: IronBallRadius, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: IronBallAngle, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: IronSummonLeftBoneName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: IronSummonRightBoneName, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: IronBallAngleOffset, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsAfterAttack, param_offset: 0x68} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x90} +PriestBossIronBallRoot: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AttackPowerForPlayer, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: MagneLightningTime, param_offset: 0x58} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x60} +PriestBossIronBallStageRotate: +- {type: call, fn: _ZN5uking2ai18PriestBossIronBall11loadParams_Ev, addr: 0x71005201d4} +- {type: static_param, param_type: const float*, param_name: IronBallSummonRadius, param_offset: 0x6c0} +- {type: static_param, param_type: const float*, param_name: IronBallSummonArchAngle, param_offset: 0x6c8} +- {type: static_param, param_type: const float*, param_name: IronBallSummonOffsetY, param_offset: 0x6d0} +- {type: aitree_variable, param_type: bool*, param_name: IsActive, param_offset: 0x6d8} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x6e0} +PriestBossLineFormationAppear: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +PriestBossLineFormationFall: +- {type: call, fn: _ZN5uking2ai19PriestBossFormation11loadParams_Ev, addr: 0x7100518408} +- {type: static_param, param_type: const float*, param_name: WarpHightOffset, param_offset: 0x80} +PriestBossLineFormationRush: +- {type: call, fn: _ZN5uking2ai19PriestBossFormation11loadParams_Ev, addr: 0x7100518408} +PriestBossMakeClone: +- {type: static_param, param_type: const int*, param_name: RespawnFrame, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BackStepDistance, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x48} +PriestBossMeta: +- {type: aitree_variable, param_type: int*, param_name: MetaAILife, param_offset: 0x38} +- {type: aitree_variable, param_type: int*, param_name: MetaAIMaxLife, param_offset: 0x40} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x48} +PriestBossMetaAIRoot: +- {type: call, fn: _ZN5uking2ai14PriestBossMeta11loadParams_Ev, addr: 0x7100525cbc} +- {type: static_param, param_type: const int*, param_name: Life, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: PlayerRecoverFromFallFrames, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: BowActorName, param_offset: 0x60} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArrowActorName, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: WeaponActorName, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: ThunderActorName, param_offset: 0x90} +- {type: map_unit_param, param_type: const int*, param_name: PriestBossStartPhase, param_offset: 0xa0} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: UniqueNameMessageLabel, param_offset: 0xa8} +PriestBossNormalMoveSelector: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: MoveTargetPos, param_offset: 0x40} +PriestBossNormalQuickRecover: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: dynamic_param, param_type: bool*, param_name: IsFromRagdoll, param_offset: 0x40} +PriestBossNormalReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: static_param, param_type: const bool*, param_name: IsUseQuickRecover, param_offset: 0x68} +- {type: aitree_variable, param_type: bool*, param_name: PriestBossUrbosasFuryEShock, param_offset: 0x70} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x78} +PriestBossPhase: +- {type: call, fn: _ZN5uking2ai14PriestBossMeta11loadParams_Ev, addr: 0x7100525cbc} +- {type: static_param, param_type: const float*, param_name: PercentLifeTransition, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: PercentLifePrevious, param_offset: 0x58} +PriestBossPhaseFinish: +- {type: call, fn: _ZN5uking2ai15PriestBossPhase11loadParams_Ev, addr: 0x71005296ec} +- {type: static_param, param_type: const float*, param_name: StartDemoDelayFrames, param_offset: 0x80} +- {type: map_unit_param, param_type: const int*, param_name: PriestBossStartPhase, param_offset: 0x88} +PriestBossPhaseFirst: +- {type: call, fn: _ZN5uking2ai15PriestBossPhase11loadParams_Ev, addr: 0x71005296ec} +PriestBossPhaseFourth: +- {type: call, fn: _ZN5uking2ai15PriestBossPhase11loadParams_Ev, addr: 0x71005296ec} +- {type: static_param, param_type: const int*, param_name: SimAtkMax, param_offset: 0x80} +- {type: static_param, param_type: const int*, param_name: BowEquipMax, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: RespawnSpan, param_offset: 0x90} +PriestBossPhaseSecond: +- {type: call, fn: _ZN5uking2ai15PriestBossPhase11loadParams_Ev, addr: 0x71005296ec} +- {type: static_param, param_type: const int*, param_name: ModeChangeLife, param_offset: 0x80} +- {type: static_param, param_type: const int*, param_name: SimAtkMax, param_offset: 0x88} +- {type: static_param, param_type: const int*, param_name: BowEquipMax, param_offset: 0x90} +- {type: static_param, param_type: const int*, param_name: SyncAtkMax, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: ModeChangeBlockTime, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: RespawnSpan, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: RespawnBaseSpace, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: RespawnBaseMoveTime, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: RespawnBaseInterval, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: CircleFormRange, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: CircleFormRushWait, param_offset: 0xd0} +- {type: static_param, param_type: const float*, param_name: CircleFormRushInterval, param_offset: 0xd8} +- {type: static_param, param_type: const float*, param_name: CircleFormShootWait, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: CircleFormShootInterval, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: LineFormDistFromPlayer, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: LineFormSpace, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: LineFormRushWait, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: LineFormRushInterval, param_offset: 0x108} +- {type: static_param, param_type: const float*, param_name: LineFormFallWait, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: LineFormFallInterval, param_offset: 0x118} +- {type: map_unit_param, param_type: const int*, param_name: PriestBossStartPhase, param_offset: 0x120} +PriestBossPhaseSelector: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const bool*, param_name: IsSelectOnlyOnce, param_offset: 0x40} +PriestBossPhaseThird: +- {type: call, fn: _ZN5uking2ai15PriestBossPhase11loadParams_Ev, addr: 0x71005296ec} +- {type: static_param, param_type: const int*, param_name: BreakIronBallCount, param_offset: 0x80} +PriestBossShadowCloneEnemyRoot: +- {type: call, fn: _ZN5uking2ai24PriestBossActorEnemyRoot11loadParams_Ev, addr: 0x7100507940} +PriestBossShadowCloneThrow: +- {type: static_param, param_type: const float*, param_name: ShadowCloneOffsetY, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ShadowCloneRadius, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ShadowCloneAngleOffset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: PrepareTimer, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShadowCloneLefeBoneName, param_offset: 0x58} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShadowCloneRightBoneName, param_offset: 0x68} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x78} +PriestBossShadowClonesReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x68} +PriestBossSlowWarpMove: +- {type: static_param, param_type: const float*, param_name: AfterImage0AppearFrame, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AfterImage1AppearFrame, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AppearFrame, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: TurnFirst, param_offset: 0x50} +- {type: dynamic_param, param_type: float*, param_name: CurrentFrame, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: MoveDstPos, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: AfterImage0Pos, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: AfterImage1Pos, param_offset: 0x78} +PriestBossStageRotationSelector: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +PriestBossSynchroMode: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: aitree_variable, param_type: int*, param_name: EquipWeaponBufIndex, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: ReturnFromBananaMode, param_offset: 0x48} +PriestBossWalkAttack: +- {type: static_param, param_type: const int*, param_name: AtDirType, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AtAttr, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AtType, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AtShieldBreakPower, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: AtImpact, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: AtPowerReduce, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: AtPower, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: AtDamage, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: GoalDistanceTolerance, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AngleNeedTurn, param_offset: 0x80} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x88} +- {type: aitree_variable, param_type: void*, param_name: PriestBossMetaAIUnit, param_offset: 0x90} +PriestBossWarpToSafePos: +- {type: call, fn: _ZN5uking2ai14PriestBossMode11loadParams_Ev, addr: 0x7100505e7c} +- {type: static_param, param_type: const float*, param_name: OffsetY, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OffsetZ, param_offset: 0x48} +- {type: aitree_variable, param_type: bool*, param_name: IsActive, param_offset: 0x50} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: DestinationPos, param_offset: 0x58} +PriestIronBallAttack: +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ShootPitchMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ShootPitchMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: Noise, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +PullOutTree: +- {type: static_param, param_type: const float*, param_name: TurnAng, param_offset: 0x38} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x40} +RailMoveObject: +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_On, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_Off, param_offset: 0x48} +- {type: map_unit_param, param_type: const float*, param_name: RailMoveSpeed, param_offset: 0x58} +RailMoveObjectOneWay: +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_On, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_Off, param_offset: 0x48} +RailMoveRandomIgnoreStop: +- {type: call, fn: _ZN5uking2ai17RailMoveWithClose11loadParams_Ev, addr: 0x71005375b8} +- {type: static_param, param_type: const int*, param_name: StopRate, param_offset: 0xb8} +RailMoveRemainsBGCamera: +- {type: call, fn: _ZN5uking2ai15RailMoveRemains11loadParams_Ev, addr: 0x7100535d18} +- {type: static_param, param_type: const bool*, param_name: IsAllowRotAxisX, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: DungeonName, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: RailName, param_offset: 0x98} +RailMoveRndIgnrStopPlayAS: +- {type: call, fn: _ZN5uking2ai24RailMoveRandomIgnoreStop11loadParams_Ev, addr: 0x71005352dc} +RandomSelectThreeActionBase: +- {type: static_param, param_type: const float*, param_name: CorrectRatioA, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CorrectRatioB, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: CorrectRatioC, param_offset: 0x48} +RandomSelectThreeAction: +- {type: call, fn: _ZN5uking2ai27RandomSelectThreeActionBase11loadParams_Ev, addr: 0x7100537d10} +- {type: static_param, param_type: const float*, param_name: RateActionA, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: RateActionB, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: RateActionC, param_offset: 0x70} +RandomSelectTwoActionBase: +- {type: static_param, param_type: const int*, param_name: CorrectRateToA, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CorrectRateToB, param_offset: 0x40} +RandomSelectTwoAction: +- {type: call, fn: _ZN5uking2ai25RandomSelectTwoActionBase11loadParams_Ev, addr: 0x7100538444} +- {type: static_param, param_type: const int*, param_name: TransitionRateToA, param_offset: 0x50} +RangeAttackSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RangeDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreSmallHit, param_offset: 0x50} +SeqTargetTwoAction: +- {type: static_param, param_type: const bool*, param_name: IsFinishedByFailAction, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +RangeCheckSeqTwoAction: +- {type: call, fn: _ZN5uking2ai18SeqTargetTwoAction11loadParams_Ev, addr: 0x710056573c} +- {type: static_param, param_type: const float*, param_name: Range, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: CheckFar, param_offset: 0x50} +RangeHeightSelectTwoAction: +- {type: call, fn: _ZN5uking2ai20RangeSelectTwoAction11loadParams_Ev, addr: 0x710053a9f8} +- {type: static_param, param_type: const float*, param_name: MaxY, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: MinY, param_offset: 0x78} +RangeLineReachSelectTwoAction: +- {type: call, fn: _ZN5uking2ai20RangeSelectTwoAction11loadParams_Ev, addr: 0x710053a9f8} +RangeObstacleCheck: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RangeDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: HeightMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: HeightMax, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +RangeSelectThreeAction: +- {type: call, fn: _ZN5uking2ai17RangeSelectAction11loadParams_Ev, addr: 0x7100539f98} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x68} +RapidAttackAllowSelect: +- {type: static_param, param_type: const int*, param_name: AttackNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x40} +ReduceDistanceToTargetPos: +- {type: static_param, param_type: const float*, param_name: DistanceScale, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MinReduceDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MaxReduceDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinDist, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +ReferenceNPCViewWithDynAS: +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: DynASKey, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: DynASKey, param_offset: 0x48} +ReflectableThrown: +- {type: static_param, param_type: const bool*, param_name: IsReflectByGuard, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsReflectByArrow, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: HitColName, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RefSpeedRatioByJustGuard, param_offset: 0x58} +ReflectableBulletThrown: +- {type: call, fn: _ZN5uking2ai17ReflectableThrown11loadParams_Ev, addr: 0x710053dda4} +- {type: dynamic_param, param_type: float*, param_name: Power, param_offset: 0xa8} +- {type: dynamic_param, param_type: bool*, param_name: IsShootByPlayer, param_offset: 0xb0} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetDir, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: ReclectSpd, param_offset: 0xc0} +ReflectableEscape: +- {type: static_param, param_type: const float*, param_name: EscapeDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EscapeTimer, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +ReflectableIgnitedThrown: +- {type: call, fn: _ZN5uking2ai17ReflectableThrown11loadParams_Ev, addr: 0x710053dda4} +RegistedActorNumTwoSelectBase: +- {type: aitree_variable, param_type: void*, param_name: RegistedActorUnit, param_offset: 0x38} +RegistedActorNumTwoSelect: +- {type: call, fn: _ZN5uking2ai29RegistedActorNumTwoSelectBase11loadParams_Ev, addr: 0x710053e124} +- {type: static_param, param_type: const int*, param_name: Num, param_offset: 0x40} +RemainElectricCannonBeamAttack: [] +RemainElectricCannonRootBase: +- {type: static_param, param_type: const float*, param_name: SearchMaxDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SearchMinDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SearchDistMargin, param_offset: 0x48} +RemainElectricCannonRoot: +- {type: call, fn: _ZN5uking2ai28RemainElectricCannonRootBase11loadParams_Ev, addr: 0x71004743b4} +- {type: static_param, param_type: const float*, param_name: SearchMaxDistLoiter, param_offset: 0x60} +RemainsElectricBGCamera: +- {type: call, fn: _ZN5uking2ai23RailMoveRemainsBGCamera11loadParams_Ev, addr: 0x7100536b3c} +- {type: static_param, param_type: 'sead::SafeString', param_name: ParentActorName, param_offset: 0x108} +RemainsRoot: +- {type: static_param, param_type: const int*, param_name: RemainsTypeID, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsAllowRotAxisX, param_offset: 0x40} +RemainsElectricRoot: +- {type: call, fn: _ZN5uking2ai11RemainsRoot11loadParams_Ev, addr: 0x710054579c} +RemainsFireBattleMove: [] +RemainsFireBattleStepSelector: [] +RemainsFireDroneNormal: +- {type: call, fn: _ZN5uking2ai8RailMove11loadParams_Ev, addr: 0x710032c528} +- {type: static_param, param_type: const float*, param_name: LightLengthOffset, param_offset: 0xa0} +- {type: static_param, param_type: const bool*, param_name: AdjustRadius, param_offset: 0xa8} +- {type: map_unit_param, param_type: const int*, param_name: SearchLightType, param_offset: 0xb0} +- {type: map_unit_param, param_type: const float*, param_name: LightRadius, param_offset: 0xc0} +- {type: map_unit_param, param_type: const float*, param_name: LightLength, param_offset: 0xb8} +- {type: aitree_variable, param_type: float*, param_name: TargetSpeed, param_offset: 0xc8} +RemainsFireRoot: +- {type: call, fn: _ZN5uking2ai11RemainsRoot11loadParams_Ev, addr: 0x710054579c} +- {type: static_param, param_type: 'sead::SafeString', param_name: TargetBoneName, param_offset: 0x50} +RemainsLithograph: [] +RemainsWaterBattleRoot: +- {type: static_param, param_type: const float*, param_name: CallClearDemoTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AfterDamageTimer, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AfterPaooonTimer, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: AfterHellTimer, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FirstBulletTimer, param_offset: 0x58} +- {type: aitree_variable, param_type: void*, param_name: RemainsWaterBattleInfo, param_offset: 0x60} +RemainsWaterBulletController: +- {type: static_param, param_type: const float*, param_name: InsideAreaRadius, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FirstBulletTimer, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: SecondBulletTimer, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: NextBulletTimerSuccess, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: NextBulletTimerFail, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChaseBulletNum, param_offset: 0x78} +- {type: static_param, param_type: 'sead::SafeString', param_name: ExplodeBulletNum, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChaseBulletActorName, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: ExplodeBulletActorName, param_offset: 0xa8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaCenter, param_offset: 0xb8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaWidth, param_offset: 0xc0} +- {type: aitree_variable, param_type: void*, param_name: RemainsWaterBattleInfo, param_offset: 0xc8} +RemainsWaterChaseBulletRoot: +- {type: static_param, param_type: const int*, param_name: AtkMinDamage, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CheckPower, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: HighDamageAddSpd, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: LowDamageAddSpd, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: ShootAddSpd, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: ResetASName, param_offset: 0x78} +RemainsWaterNormal: +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaWidth, param_offset: 0x38} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaCenter, param_offset: 0x40} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaWidth02, param_offset: 0x48} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: InsideAreaCenter02, param_offset: 0x50} +RemainsWaterRoot: +- {type: call, fn: _ZN5uking2ai11RemainsRoot11loadParams_Ev, addr: 0x710054579c} +- {type: aitree_variable, param_type: void*, param_name: RemainsWaterBattleInfo, param_offset: 0x50} +RemainsWaterWeakPointRoot: [] +RemainsWindBatteryAttack: +- {type: call, fn: _ZN5uking2ai22GuardianBeamAttackBase11loadParams_Ev, addr: 0x7100411ddc} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xc0} +RemainsWindBatteryRoot: [] +RemainsWindRoot: +- {type: call, fn: _ZN5uking2ai11RemainsRoot11loadParams_Ev, addr: 0x710054579c} +RemoteBomb: +- {type: static_param, param_type: const float*, param_name: WindRatio, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: XLinkKey, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: IsIgniteCarriedBomb, param_offset: 0x50} +RepeatByLargeDamage: [] +RestLifeSelect: +- {type: static_param, param_type: const float*, param_name: LifeRatio, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsTrgOnly, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsEnter, param_offset: 0x48} +RestreintTired: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x40} +- {type: aitree_variable, param_type: bool*, param_name: IsTryingReturnRestreint, param_offset: 0x48} +ReturnFromReactionSelect: +- {type: static_param, param_type: const bool*, param_name: IsChangeToNormalByFinish, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsEnableRetFromDamage, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsEnableRetFromGuard, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsEnableRetFromRebound, param_offset: 0x50} +RideHorseAI: +- {type: dynamic2_param, param_type: bool*, param_name: HasToPlayRidingOnAS, param_offset: 0x38} +RitoHeroSoulGiftRoot: +- {type: call, fn: _ZN5uking2ai16HeroSoulGiftRoot11loadParams_Ev, addr: 0x710042eef8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x90} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: Scale, param_offset: 0xa0} +RodEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai22LandHumEnemyFindPlayer11loadParams_Ev, addr: 0x710046274c} +- {type: static_param, param_type: const int*, param_name: MagicPer, param_offset: 0x1e8} +- {type: static_param, param_type: const float*, param_name: MagicIntervalIntensity, param_offset: 0x208} +- {type: static_param, param_type: const int*, param_name: MagicCheckInterval, param_offset: 0x1f0} +- {type: static_param, param_type: const int*, param_name: RodWeaponIdx, param_offset: 0x1f8} +- {type: static_param, param_type: const float*, param_name: MagicAttackDir, param_offset: 0x200} +RodRoot: +- {type: call, fn: _ZN5uking2ai12WeaponRootAI11loadParams_Ev, addr: 0x7100e1e510} +- {type: aitree_variable, param_type: void*, param_name: MagicCreateUnit, param_offset: 0xe8} +RopeRoot: +- {type: map_unit_param, param_type: const int*, param_name: RopeFlag, param_offset: 0x38} +- {type: map_unit_param, param_type: const bool*, param_name: RopeAlwaysUpdateRigidParam, param_offset: 0x40} +RuinGuardianRoot: +- {type: static_param, param_type: const int*, param_name: SweepFrame, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DropThreshold, param_offset: 0x40} +RupeeRabbitNormal: +- {type: call, fn: _ZN5uking2ai10PreyNormal11loadParams_Ev, addr: 0x71004ff008} +- {type: map_unit_param, param_type: const bool*, param_name: DeleteEndNushiTime, param_offset: 0x340} +SafeMoveAroundTarget: +- {type: static_param, param_type: const int*, param_name: ForceTurnTimeBase, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ForceTurnTimeRand, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ForceTurnStopTimeBase, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: ForceTurnStopTimeRand, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: UpdateTargetPosTime, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: UpdateNumCalc, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: StartRange, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: EndRange, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ChangeRangeRate, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: TargetOffsetDegree, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: LOSFailOffsetDegree, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: MinOffsetLength, param_offset: 0x90} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x98} +SandfallWithSound: [] +SandwormAttackMove: +- {type: static_param, param_type: const float*, param_name: SecessionDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttackAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DamageAngle, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostDist, param_offset: 0x50} +- {type: static_param, param_type: 'sead::SafeString', param_name: DamageBaseNode, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +SandwormBattle: +- {type: static_param, param_type: const float*, param_name: AttackAngle, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttackInterval, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AttackIntervalRand, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BattleFailTimer, param_offset: 0x50} +SandwormBlownOff: +- {type: static_param, param_type: const float*, param_name: BlownOffTimer, param_offset: 0x38} +SandwormCircleMoveTarget: +- {type: static_param, param_type: const int*, param_name: Direction, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Radius, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RadiusMargin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FrontCheckLength, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +SandwormFindTarget: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AttackRange, param_offset: 0x58} +SandwormLost: +- {type: call, fn: _ZN5uking2ai9EnemyLost11loadParams_Ev, addr: 0x7100398584} +- {type: static_param, param_type: const float*, param_name: DiveSandOffset, param_offset: 0x60} +SandwormNavSearchWait: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +SandwormNormalBase: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +- {type: static_param, param_type: const bool*, param_name: SealedSight, param_offset: 0x3d0} +- {type: static_param, param_type: const bool*, param_name: SealedHearing, param_offset: 0x3d8} +- {type: static_param, param_type: const bool*, param_name: SealedTerror, param_offset: 0x3e0} +- {type: static_param, param_type: const bool*, param_name: SealedWorry, param_offset: 0x3e8} +SandwormNormal: +- {type: call, fn: _ZN5uking2ai18SandwormNormalBase11loadParams_Ev, addr: 0x7100325ba8} +SandwormNoticeSound: +- {type: static_param, param_type: const float*, param_name: RetryDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: TargetActorLockOnDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TargetPosLockOnDist, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +SandwormRNormal: +- {type: call, fn: _ZN5uking2ai14SandwormNormal11loadParams_Ev, addr: 0x710055b75c} +SandwormRRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const float*, param_name: SandOffset, param_offset: 0x1d8} +- {type: static_param, param_type: const float*, param_name: WeakPointDamageRate, param_offset: 0x1e0} +- {type: static_param, param_type: const float*, param_name: WeakChimicalDamageRate, param_offset: 0x1e8} +SandwormReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +SandwormRoam: +- {type: static_param, param_type: const float*, param_name: JumpTimerBase, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: JumpTimerRand, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: JumpDistanceXZ, param_offset: 0x48} +SandwormRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const float*, param_name: SandOffset, param_offset: 0x1d8} +- {type: static_param, param_type: const float*, param_name: WeakPointDamageRate, param_offset: 0x1e0} +SandwormStun: [] +SelfXRotSelector: +- {type: static_param, param_type: const float*, param_name: Angle, param_offset: 0x38} +SeqAnimalAttack: +- {type: static_param, param_type: const bool*, param_name: IsUseAfterAttackState, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +SeqAtHitAction: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +SeqCloseDistTwoAction: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: CloseDist, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +SeqTimeredTwoAction: +- {type: static_param, param_type: const int*, param_name: FirstActionTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: SecondActionTime, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AllActionTime, param_offset: 0x48} +SeqDynamicTimeredTwoAction: +- {type: call, fn: _ZN5uking2ai19SeqTimeredTwoAction11loadParams_Ev, addr: 0x7100566768} +- {type: dynamic_param, param_type: int*, param_name: DynFirstActionTime, param_offset: 0x70} +- {type: dynamic_param, param_type: int*, param_name: DynSecondActionTime, param_offset: 0x78} +- {type: dynamic_param, param_type: int*, param_name: DynAllActionTime, param_offset: 0x80} +SeqFirstPointTwo: +- {type: static_param, param_type: const bool*, param_name: IsFinishedByFailAction, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +SeqGroundHit: +- {type: static_param, param_type: const int*, param_name: CheckType, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsCheckChangeable, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsNoHitEnd, param_offset: 0x48} +SeqGroundHitAssassinBoss: +- {type: call, fn: _ZN5uking2ai12SeqGroundHit11loadParams_Ev, addr: 0x7100562184} +SeqHiddenOctarockSearch: [] +SeqIfElseAction: +- {type: static_param, param_type: const int*, param_name: FailType, param_offset: 0x38} +SeqIfFailAction: +- {type: static_param, param_type: const bool*, param_name: IsEndChangeable, param_offset: 0x38} +SeqNextMessage: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: const int*, param_name: DelayTimeMax, param_offset: 0x50} +SeqThreeAction: +- {type: static_param, param_type: const bool*, param_name: IsFinishedByFailAction, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsEndChangeable, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsNoChangeable, param_offset: 0x48} +SeqOctarockAttack: +- {type: call, fn: _ZN5uking2ai14SeqThreeAction11loadParams_Ev, addr: 0x7100565b3c} +SeqOctarockWigReaction: +- {type: call, fn: _ZN5uking2ai14SeqThreeAction11loadParams_Ev, addr: 0x7100565b3c} +SeqPredictOctarockAttack: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetVel, param_offset: 0x40} +SeqPursuit: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: const int*, param_name: PursuitPer, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: PursuitDist, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsEndPursuit, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsGuardNoPursuit, param_offset: 0x70} +SeqRandomRepeat: +- {type: static_param, param_type: const int*, param_name: MinActionNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MaxActionNum, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsEndChangeable, param_offset: 0x48} +SeqTimeredAction: +- {type: static_param, param_type: const int*, param_name: ActionTime, param_offset: 0x38} +SeqTimeredPlusRandomTwoAction: +- {type: call, fn: _ZN5uking2ai19SeqTimeredTwoAction11loadParams_Ev, addr: 0x7100566768} +- {type: static_param, param_type: const int*, param_name: FirstActionRandMax, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: SecondActionRandMax, param_offset: 0x78} +SeqTrgPartsNotice: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsFinishByNoNoticeActionEnd, param_offset: 0x50} +SeqTwoLineReachableTargetActionBase: +- {type: static_param, param_type: const int*, param_name: ReachableCheckType1, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ReachableCheckType2, param_offset: 0x40} +SeqTwoLineReachableTargetAction: +- {type: call, fn: _ZN5uking2ai35SeqTwoLineReachableTargetActionBase11loadParams_Ev, addr: 0x71005676a0} +SeqTwoWeakPointOnFirstDo: +- {type: call, fn: _ZN5uking2ai12SeqTwoAction11loadParams_Ev, addr: 0x710056706c} +- {type: aitree_variable, param_type: bool*, param_name: IsWeakPointAppearMode, param_offset: 0x50} +SetPartBind: +- {type: static_param, param_type: 'sead::SafeString', param_name: BaseNodeName, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartialNodeName, param_offset: 0x48} +SetTargetPosForAngryKokko: +- {type: static_param, param_type: const int*, param_name: UpdateTargetInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MaxUpdateNum, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AddLength, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: HeightOffset, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: RandRange, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: RandRate, param_offset: 0x60} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x68} +SetTargetPosForFlyThroughMove: +- {type: static_param, param_type: const float*, param_name: TargetPosFixDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ThroughDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +SetTargetPosToPlayer: +- {type: static_param, param_type: const int*, param_name: UpdateTargetInterval, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MaxUpdateNum, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AddLength, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: HeightOffset, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: RandRange, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: RandRate, param_offset: 0x60} +ShootingEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai29SimpleShootingEnemyFindPlayer11loadParams_Ev, addr: 0x710056f834} +- {type: static_param, param_type: const int*, param_name: ReHideTime, param_offset: 0x150} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidDist, param_offset: 0x158} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidSpeed, param_offset: 0x160} +- {type: static_param, param_type: const float*, param_name: ExplosivesAvoidAng, param_offset: 0x168} +- {type: static_param, param_type: const float*, param_name: HideStartDistMin, param_offset: 0x170} +- {type: static_param, param_type: const float*, param_name: HideStartDistMax, param_offset: 0x178} +ShootingStarRoot: [] +ShutterFence: +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_On, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ASKeyName_Off, param_offset: 0x48} +SignalFlowchartRootAI: +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EventFlowName, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: EventFlowEntryName, param_offset: 0x48} +SignalSendingMagneStickAcceptor: +- {type: map_unit_param, param_type: const float*, param_name: MagneStickMaxSearchDistance, param_offset: 0x38} +SignaledSpotBgmTrigger: +- {type: map_unit_param, param_type: const bool*, param_name: IsStopWithoutReductionY, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: Sound, param_offset: 0x40} +SimpleASBridge: +- {type: static_param, param_type: 'sead::SafeString', param_name: ASName, param_offset: 0x38} +SimpleEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +SimpleKokkoRoot: +- {type: static_param, param_type: const float*, param_name: AliveTime, param_offset: 0x38} +- {type: aitree_variable, param_type: void*, param_name: AttackTargetActorLink, param_offset: 0x40} +SimpleLiftableDLC: +- {type: static_param, param_type: const float*, param_name: ScaleToLiftUp, param_offset: 0x38} +SimpleLineBeam: [] +SiteBossApproachRoot: +- {type: static_param, param_type: const float*, param_name: CheckWallDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ApproachTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: EndDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EndFarDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AttackStartDist, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: DoAttack, param_offset: 0x60} +- {type: dynamic_param, param_type: bool*, param_name: IsMoveSide, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +SiteBossShootNormalArrowRoot: +- {type: static_param, param_type: const int*, param_name: ArrowNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AddAttackPower, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: AvoidCountMax, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: SeqAvoidRate, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: UpDownAvoidRate, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: HoldTime, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: InitHoldTime, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AvoidLifeRate, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: AvoidAngle, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: AvoidDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AvoidDistRand, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: AvoidWaitCount, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: AvoidWaitCountRand, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: KeepDistance, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: TrigEventAtHold, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: SpineControlOffsetAngleLR, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: SpineControlOffsetAngleUD, param_offset: 0xc8} +- {type: static_param, param_type: const bool*, param_name: IsFinishAtNoDevice, param_offset: 0xd0} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreCancelAttack, param_offset: 0xd8} +- {type: static_param, param_type: const bool*, param_name: IsKeepDistance, param_offset: 0xe0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ArrowName, param_offset: 0xe8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDist, param_offset: 0xf8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDistOffset, param_offset: 0x100} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ReflectOffset, param_offset: 0x108} +- {type: dynamic_param, param_type: bool*, param_name: IsCancelAttack, param_offset: 0x110} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x118} +SiteBossReflectArrowRoot: +- {type: call, fn: _ZN5uking2ai28SiteBossShootNormalArrowRoot11loadParams_Ev, addr: 0x710058745c} +- {type: dynamic_param, param_type: bool*, param_name: IsReflectAmongChild, param_offset: 0x338} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x340} +SiteBossArrowRainAttack: +- {type: call, fn: _ZN5uking2ai24SiteBossReflectArrowRoot11loadParams_Ev, addr: 0x71005829f0} +SiteBossAttackRoot: +- {type: static_param, param_type: const int*, param_name: EquipWeapon, param_offset: 0x38} +SiteBossChemicalProjectile: +- {type: static_param, param_type: const float*, param_name: ExplosionTime, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ChaseAngleLimit, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ReflectSpeedRate, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsForceDelete, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsAdjustHeight, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsSetParentSystemGroupHandler, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsSetBindSpeed, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsIgnoreObject, param_offset: 0x70} +- {type: static_param, param_type: 'sead::SafeString', param_name: BindNodeName, param_offset: 0x78} +- {type: map_unit_param, param_type: const int*, param_name: AttackPower, param_offset: 0x88} +- {type: map_unit_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x90} +- {type: map_unit_param, param_type: const float*, param_name: ScaleTime, param_offset: 0x98} +- {type: map_unit_param, param_type: const float*, param_name: Range, param_offset: 0xa0} +- {type: map_unit_param, param_type: const float*, param_name: AtkRadiusMax, param_offset: 0xa8} +SiteBossFlameBall: +- {type: call, fn: _ZN5uking2ai26SiteBossChemicalProjectile11loadParams_Ev, addr: 0x71003eba34} +- {type: static_param, param_type: const int*, param_name: ChemicalIndex, param_offset: 0x180} +- {type: static_param, param_type: const int*, param_name: AtAttr, param_offset: 0x188} +- {type: static_param, param_type: const float*, param_name: MoveSpeed, param_offset: 0x190} +- {type: static_param, param_type: const float*, param_name: MoveOffset, param_offset: 0x198} +- {type: static_param, param_type: const float*, param_name: CountOffset, param_offset: 0x1a0} +- {type: static_param, param_type: const bool*, param_name: IsInfluence, param_offset: 0x1a8} +- {type: map_unit_param, param_type: const int*, param_name: Count, param_offset: 0x1b0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: PosOffset, param_offset: 0x1b8} +SiteBossBigFlameBall: +- {type: call, fn: _ZN5uking2ai17SiteBossFlameBall11loadParams_Ev, addr: 0x7100576e24} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: DestOffset, param_offset: 0x1d0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: DestOffset1, param_offset: 0x1d8} +- {type: map_unit_param, param_type: const float*, param_name: Speed, param_offset: 0x1e0} +- {type: map_unit_param, param_type: 'const sead::Vector3f*', param_name: RotOffset, param_offset: 0x1e8} +SiteBossBlowOff: +- {type: dynamic_param, param_type: bool*, param_name: IsPlayDamageAnm, param_offset: 0x38} +SiteBossBowChildDeviceRoot: +- {type: static_param, param_type: const float*, param_name: XRotateSpeed, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: SlowRate, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: Count, param_offset: 0x48} +SiteBossRoot: +- {type: static_param, param_type: const int*, param_name: OffFlagIndexAtClipping, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AddAttackPower, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ForceRecoverHitMax, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: ForceRecoverDamageMax, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: AddForceRecoverHitNum, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: AddForceRecoverDamage, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: BlownOffAtWeakPointHitNum, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: DemoPlayHPRate, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: WeakPointDamageRate, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsRemainBoss, param_offset: 0x80} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: NormalEntryName, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: AtDownEntryName, param_offset: 0xa8} +- {type: static_param, param_type: 'sead::SafeString', param_name: IsPlayed_DemoFlagName, param_offset: 0xb8} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: UniqueNameMessageLabel, param_offset: 0xc8} +SiteBossBowRoot: +- {type: call, fn: _ZN5uking2ai12SiteBossRoot11loadParams_Ev, addr: 0x7100583ff0} +- {type: static_param, param_type: const int*, param_name: ArrowRainAttackPower, param_offset: 0xf8} +- {type: static_param, param_type: const int*, param_name: AtMinPower, param_offset: 0x100} +- {type: static_param, param_type: const int*, param_name: ReflectArrowAttackPower, param_offset: 0x108} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0x110} +SiteBossGaleArrowRoot: +- {type: call, fn: _ZN5uking2ai18WithoutWeaponArrow11loadParams_Ev, addr: 0x71005f8160} +SiteBossIceSplinterRoot: +- {type: call, fn: _ZN5uking2ai26SiteBossChemicalProjectile11loadParams_Ev, addr: 0x71003eba34} +- {type: static_param, param_type: const int*, param_name: ReflectAtkPower, param_offset: 0x180} +- {type: static_param, param_type: const float*, param_name: ChaseAngleMin, param_offset: 0x188} +- {type: static_param, param_type: const float*, param_name: RotateSpeed, param_offset: 0x190} +- {type: static_param, param_type: 'sead::SafeString', param_name: BindNodeName0, param_offset: 0x198} +- {type: static_param, param_type: 'sead::SafeString', param_name: BindNodeName1, param_offset: 0x1a8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ChaseParentNode, param_offset: 0x1b8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset0, param_offset: 0x1c8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset1, param_offset: 0x1d0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset2, param_offset: 0x1d8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset3, param_offset: 0x1e0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset4, param_offset: 0x1e8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset5, param_offset: 0x1f0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset6, param_offset: 0x1f8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset7, param_offset: 0x200} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindOffset8, param_offset: 0x208} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: RotateSpeedAtHit, param_offset: 0x210} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: RotateSpeedAtFall, param_offset: 0x218} +- {type: map_unit_param, param_type: const int*, param_name: Count, param_offset: 0x220} +SiteBossLswordAttackRoot: +- {type: static_param, param_type: const int*, param_name: HighSlashRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: WhirlSlashRate, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: FireBallRate, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: CrossSlashRate, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: TornadoAttackRate, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ChemicalPlusHPRate, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: IsFarDist, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: PatternShiftFirstLifeRate, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ReturnWaitCount, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: ForceApproachCount, param_offset: 0x80} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0x88} +- {type: dynamic_param, param_type: bool*, param_name: IsCancelAttack, param_offset: 0x90} +SiteBossLswordFireBallRoot: +- {type: static_param, param_type: const float*, param_name: PredictPosRate, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: PosReduceRatio, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: KeepDistance, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MoveSpeed, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: YOffset, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsThrowChildDevice, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsNeedCreateChildDevice, param_offset: 0x68} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BindPosOffset, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::SafeString*', param_name: ThrowActorName, param_offset: 0x78} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x88} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x90} +SiteBossLswordRoot: +- {type: call, fn: _ZN5uking2ai12SiteBossRoot11loadParams_Ev, addr: 0x7100583ff0} +- {type: static_param, param_type: const int*, param_name: FireBallAttackPower, param_offset: 0xf8} +- {type: static_param, param_type: const int*, param_name: FireBallMinDamage, param_offset: 0x100} +- {type: static_param, param_type: const int*, param_name: BigFireBallAttackPower, param_offset: 0x108} +- {type: static_param, param_type: const int*, param_name: BigFireBallMinDamage, param_offset: 0x110} +- {type: static_param, param_type: const int*, param_name: WearFlameAttackPower, param_offset: 0x118} +- {type: static_param, param_type: const int*, param_name: WearFlameMinDamage, param_offset: 0x120} +- {type: static_param, param_type: const float*, param_name: BigFireBallScaleTime0, param_offset: 0x128} +- {type: static_param, param_type: const float*, param_name: BigFireBallScaleMax, param_offset: 0x130} +- {type: static_param, param_type: const float*, param_name: BigFireBallScaleTime1, param_offset: 0x138} +- {type: static_param, param_type: const float*, param_name: BigFireBallMoveSpeed0, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: BigFireBallMoveSpeed1, param_offset: 0x148} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BigFireBallPosOffset, param_offset: 0x150} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: BigFireBallRotOffset, param_offset: 0x158} +SiteBossLswordTornadoRoot: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: DestPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x48} +SiteBossNormalRoot: [] +SiteBossPierceBulletAttack: [] +SiteBossReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +- {type: static_param, param_type: const bool*, param_name: IsChangeEffectiveDamage, param_offset: 0x68} +SiteBossRecognizeRootBase: +- {type: static_param, param_type: const int*, param_name: AttackNum, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AttackRandNum, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WarpStartDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ForceWarpRetryDist, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0x58} +SiteBossRecognizeRoot: +- {type: call, fn: _ZN5uking2ai25SiteBossRecognizeRootBase11loadParams_Ev, addr: 0x7100478ff8} +- {type: static_param, param_type: const int*, param_name: IgnoreWaprDistMax, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsCheckChildDevice, param_offset: 0x70} +- {type: static_param, param_type: const bool*, param_name: IgnoreWarpDistRetFromDamage, param_offset: 0x78} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDist, param_offset: 0x80} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDistOffset, param_offset: 0x88} +SiteBossShootArrowRoot: +- {type: static_param, param_type: const int*, param_name: ChildDeviceMax, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ChildDeviceSupplyNum, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ChildDeviceSupplyInterval, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: ArrowRainBaseDamage, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: ArrowRainAddDamage, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: AvoidCountMax, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: SeqAvoidRate, param_offset: 0x70} +- {type: static_param, param_type: const int*, param_name: UpDownAvoidRate, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: PatternShiftFirstLifeRate, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: PatternShiftSecondLifeRate, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: PatternShiftThirdLifeRate, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: CancelCreateTornadoHeight, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: AvoidAngle, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: AvoidLifeRate, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: AvoidDist, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: AvoidDistRand, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: AvoidWaitCount, param_offset: 0xc0} +- {type: static_param, param_type: const float*, param_name: AvoidWaitCountRand, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: TornadoCreateHeight, param_offset: 0xd0} +- {type: static_param, param_type: 'sead::SafeString', param_name: NoWaitWarpAttackKey, param_offset: 0xd8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDist, param_offset: 0xe8} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDistOffset, param_offset: 0xf0} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0xf8} +- {type: dynamic_param, param_type: bool*, param_name: IsCancelAttack, param_offset: 0x100} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x108} +SiteBossSmallDamageRoot: [] +SiteBossSpearAttackRoot: +- {type: static_param, param_type: const int*, param_name: ThrowSpearRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: BeamRate, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: IceBulletRate, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: SweepRateAtFar, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: SweepRateAtNear, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ReturnWaitCount, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: BeamPatternChangeHP, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: FarDistanceAttackRange, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: NearDistanceAttackRange, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: VerticalAttackRange, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: OnIceBlockHeight, param_offset: 0x88} +- {type: static_param, param_type: const bool*, param_name: IsBowAimedCounterOn, param_offset: 0x90} +- {type: static_param, param_type: const bool*, param_name: IsIceBulletOn, param_offset: 0x98} +- {type: static_param, param_type: 'sead::SafeString', param_name: WarpAnchorFirstSuffix, param_offset: 0xa0} +- {type: static_param, param_type: 'sead::SafeString', param_name: WarpAnchorAfterSuffix, param_offset: 0xb0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDist, param_offset: 0xc0} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: ChaseDistOffset, param_offset: 0xc8} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0xd0} +SiteBossSpearLifeSelector: +- {type: static_param, param_type: const float*, param_name: PatternChangeLife2, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: PatternChangeLife3, param_offset: 0x40} +SiteBossSpearRoot: +- {type: call, fn: _ZN5uking2ai12SiteBossRoot11loadParams_Ev, addr: 0x7100583ff0} +- {type: static_param, param_type: const int*, param_name: ThrowSpearAttackPower, param_offset: 0xf8} +- {type: static_param, param_type: const int*, param_name: ThrowSpearMinDmage, param_offset: 0x100} +- {type: static_param, param_type: const int*, param_name: IceSplinterAttackPower, param_offset: 0x108} +- {type: static_param, param_type: const int*, param_name: IceSplinterMinDamage, param_offset: 0x110} +SiteBossSpearThrow: +- {type: static_param, param_type: const int*, param_name: AttackPower, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: AtMnDamage, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: AddAttackPower, param_offset: 0x48} +- {type: static_param, param_type: 'sead::SafeString', param_name: ThrowActorName, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +SiteBossSwordAttackRoot: +- {type: static_param, param_type: const int*, param_name: CloseAttackRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ChemicalPlusRate, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: ThrowAttackPower, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: AddAttackPower, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: ThrowMinDamage, param_offset: 0x58} +- {type: static_param, param_type: const int*, param_name: ThrowRate, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: PillarMax, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: ElectricCounterMax, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: ChemicalPlusHPRate, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: ShieldRepairTime, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: FirstAttackHPRate, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: SecondAttackHPRate, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: BeamAttackHPRate, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: ElectricBallScaleTime, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: ElectricBallScale, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: ElectricBallRange, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: ThrowDist, param_offset: 0xb8} +- {type: static_param, param_type: 'sead::SafeString', param_name: DemoName, param_offset: 0xc0} +- {type: static_param, param_type: 'sead::SafeString', param_name: EntryPointName, param_offset: 0xd0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ThrowActorName, param_offset: 0xe0} +- {type: dynamic_param, param_type: bool*, param_name: IsCancelAttack, param_offset: 0xf0} +SiteBossSwordIronPileRoot: +- {type: static_param, param_type: const float*, param_name: FallWaitCount, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: FallSpeed, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: SlopeRate, param_offset: 0x48} +- {type: map_unit_param, param_type: const int*, param_name: AddAtkPower, param_offset: 0x50} +- {type: map_unit_param, param_type: const int*, param_name: AttackPower, param_offset: 0x58} +- {type: map_unit_param, param_type: const int*, param_name: AttackPowerForPlayer, param_offset: 0x60} +- {type: map_unit_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x68} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x70} +SiteBossSwordRailApproach: +- {type: call, fn: _ZN5uking2ai25SiteBossSwordApproachRoot11loadParams_Ev, addr: 0x7100592c44} +- {type: dynamic_param, param_type: bool*, param_name: IsResetOldMoveIdx, param_offset: 0xc0} +SiteBossSwordRoot: +- {type: call, fn: _ZN5uking2ai12SiteBossRoot11loadParams_Ev, addr: 0x7100583ff0} +SiteBossSwordSeqThreeAI: +- {type: static_param, param_type: const bool*, param_name: IsSkipLastAction, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsResetEndTime, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsAttackPatternFixed, param_offset: 0x48} +- {type: dynamic_param, param_type: bool*, param_name: IsNoCharge, param_offset: 0x50} +- {type: dynamic_param, param_type: bool*, param_name: IsRestart, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: OldTargetPos, param_offset: 0x68} +SiteBossSwordWeapon: +- {type: call, fn: _ZN5uking2ai12WeaponRootAI11loadParams_Ev, addr: 0x7100e1e510} +SiteBossThrowIceRoot: +- {type: static_param, param_type: const int*, param_name: IgnitionNum, param_offset: 0x38} +- {type: static_param, param_type: 'sead::SafeString', param_name: ThrowActorName, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x58} +SleepBedRoot: [] +SleepSelect: [] +SnowBallNormal: +- {type: call, fn: _ZN5uking2ai15FixableLiftable11loadParams_Ev, addr: 0x71003d0504} +- {type: static_param, param_type: const float*, param_name: ScaleRate, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: ScaleMax, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: CarryScaleLimit, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: SendSignalLinearVelTh, param_offset: 0xf8} +- {type: static_param, param_type: const float*, param_name: SendSignalScaleTh, param_offset: 0x100} +- {type: static_param, param_type: const float*, param_name: ScaleMin, param_offset: 0x108} +- {type: static_param, param_type: const float*, param_name: DeleteUnderWaterDepth, param_offset: 0x110} +- {type: static_param, param_type: const float*, param_name: MaxImpulseMassRate, param_offset: 0x118} +- {type: static_param, param_type: const float*, param_name: AttReturnOnOffset, param_offset: 0x120} +- {type: static_param, param_type: const float*, param_name: ScaleIncreaseDistance, param_offset: 0x128} +- {type: static_param, param_type: const float*, param_name: ItemDropSetScaleOffset, param_offset: 0x130} +- {type: static_param, param_type: const float*, param_name: ItemDropDeleteScaleOffset, param_offset: 0x138} +- {type: static_param, param_type: const float*, param_name: MinImpulseRatio, param_offset: 0x140} +SnowOctarockBattle: +- {type: call, fn: _ZN5uking2ai11EnemyBattle11loadParams_Ev, addr: 0x71003827ec} +- {type: static_param, param_type: 'sead::SafeString', param_name: VacuumPartsKey, param_offset: 0x90} +- {type: static_param, param_type: 'sead::SafeString', param_name: ShootActorKey, param_offset: 0xa0} +SoundTriggerTag: +- {type: map_unit_param, param_type: const int*, param_name: SoundDelay, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: Sound, param_offset: 0x40} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: SLinkInst, param_offset: 0x50} +SpearWeaponSelect: [] +SpotBgmTrigger: +- {type: map_unit_param, param_type: const bool*, param_name: IsStopWithoutReductionY, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: Sound, param_offset: 0x40} +StalEnemyBlownOff: +- {type: static_param, param_type: const float*, param_name: DrownDepth, param_offset: 0x38} +StalEnemyChasePart: +- {type: dynamic_param, param_type: bool*, param_name: IsCarried, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: IsCarriedByPlayer, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +StalEnemyDoShootPartSelect: +- {type: static_param, param_type: const int*, param_name: ShootRate, param_offset: 0x38} +StalEnemyGrabShootOwnPart: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +StalEnemyNoHeadWait: +- {type: static_param, param_type: const float*, param_name: RebootDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RebootTimer, param_offset: 0x40} +- {type: dynamic_param, param_type: bool*, param_name: IsExistLivingHead, param_offset: 0x48} +- {type: dynamic_param, param_type: bool*, param_name: IsExistActiveActor, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +StalEnemyReaction: +- {type: call, fn: _ZN5uking2ai20EnemyDefaultReaction11loadParams_Ev, addr: 0x7100388294} +StalEnemyRoot: +- {type: static_param, param_type: const int*, param_name: DeadCount, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: SearchFrame, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: InWaterDepth, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: OutOfWaterOffset, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: DeadCheckFrame, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: SpreadDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: SmallSpreadDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: SearchDistXZ, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: SearchDistY, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: FallHeight, param_offset: 0xb0} +- {type: map_unit_param, param_type: const bool*, param_name: IsCreateStalPart, param_offset: 0xb8} +- {type: aitree_variable, param_type: bool*, param_name: IsStopFallCheck, param_offset: 0xc0} +- {type: aitree_variable, param_type: void*, param_name: StalEnemyUnit, param_offset: 0xc8} +StalEnemySleep: +- {type: call, fn: _ZN5uking2ai17SpecialEnemySleep11loadParams_Ev, addr: 0x710059ad6c} +- {type: static_param, param_type: const bool*, param_name: UseAwarenessWakeUp, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: UseNoticeActiveWakeUp, param_offset: 0x68} +StalGiantEnemyReaction: +- {type: call, fn: _ZN5uking2ai19ForestGiantReaction11loadParams_Ev, addr: 0x71003d8654} +StalGiantEnemyRoot: +- {type: call, fn: _ZN5uking2ai13StalEnemyRoot11loadParams_Ev, addr: 0x71005a21f8} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorNameChin, param_offset: 0x7c0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorNameRib1, param_offset: 0x7d0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorNameRib2, param_offset: 0x7e0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorNameRib3, param_offset: 0x7f0} +- {type: static_param, param_type: 'sead::SafeString', param_name: ActorNameRib4, param_offset: 0x800} +- {type: static_param, param_type: const bool*, param_name: IsDamageToEnemy, param_offset: 0x810} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x300} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x310} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x320} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x330} +- {type: call, fn: _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev, addr: 0x7100b0ce00} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x340} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: const int*, param_name: '', param_offset: 0x350} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x4c0} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: const int*, param_name: '', param_offset: 0x4d0} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: 'sead::SafeString', param_name: '', param_offset: 0x640} +- {type: call, fn: sub_7100B0C35C, addr: 0x7100b0c35c} +- {type: call, fn: _ZN4sead14PrintFormatterlsEPKc, addr: 0x7100b0bfd8} +- {type: call, fn: _ZN4sead14PrintFormatter20proceedToFormatMark_EPc, addr: 0x7100b0bde0} +- {type: call, fn: _ZN4sead14PrintFormatter5flushEv, addr: 0x7100b0bd94} +- {type: call, fn: sead__PrintFormatter__x, addr: 0x7100b0c528} +- {type: static_param, param_type: const int*, param_name: '', param_offset: 0x650} +StalGiantSleepNormal: +- {type: static_param, param_type: const float*, param_name: AwakeDelayTime, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsAwakenByHearing, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsWaitAfterAwaken, param_offset: 0x48} +StalHeadLifted: +- {type: call, fn: _ZN5uking2ai6Lifted11loadParams_Ev, addr: 0x7100482560} +- {type: static_param, param_type: const float*, param_name: EscapeSpeed, param_offset: 0x98} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: EscapeDir, param_offset: 0xa0} +StalHeadPartRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +StalPartCatch: [] +StalPartNormal: +- {type: static_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: CatchArea, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WaitTimer, param_offset: 0x48} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: TgtOffset, param_offset: 0x50} +StalPartRoot: +- {type: static_param, param_type: const float*, param_name: InvincibleTime, param_offset: 0x88} +StalPartsHasSelect: +- {type: static_param, param_type: const int*, param_name: PartsID, param_offset: 0x38} +Stole: [] +StoneBall_BRoot: +- {type: static_param, param_type: const float*, param_name: WeaponImpulseAmplifyPower, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BombImpulseAmplifyPower, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DoubleBombImpulseAmplifyPower, param_offset: 0x48} +StoneOctarockBattle: +- {type: call, fn: _ZN5uking2ai19ShootingEnemyBattle11loadParams_Ev, addr: 0x7100569bd8} +GuardNearTarget: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: GuardStartDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: GuardEndDist, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +TimedGuardNearTarget: +- {type: call, fn: _ZN5uking2ai15GuardNearTarget11loadParams_Ev, addr: 0x710044d110} +- {type: static_param, param_type: const int*, param_name: GuardEndTime, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: GuardStartAngle, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: GuardEndAngle, param_offset: 0x98} +StoneOctarockGuardNearTarget: +- {type: call, fn: _ZN5uking2ai20TimedGuardNearTarget11loadParams_Ev, addr: 0x710044c2ac} +- {type: static_param, param_type: const int*, param_name: NoticeTerrorLevel, param_offset: 0xb0} +StoneOctarockWait: +- {type: static_param, param_type: const int*, param_name: GuardEndTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: NoticeTerrorLevel, param_offset: 0x40} +StoneStickRoot: +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: FixPoint, param_offset: 0x38} +StopTimerObserver: [] +StraightMove: +- {type: static_param, param_type: const float*, param_name: AngleLimit, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: DistanceMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DistanceMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RetryAngleMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: RetryAngleMin, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsRetryMove, param_offset: 0x60} +StunBossReaction: [] +StunWithDamageReaction: +- {type: static_param, param_type: const int*, param_name: Timer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ForceEndLifeRatio, param_offset: 0x40} +SubsAngleSelect: +- {type: static_param, param_type: const float*, param_name: SubsAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: YRotOnly, param_offset: 0x48} +SunAI: [] +SunazarashiEscapeMove: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +SunazarashiNormal: [] +SunazarashiReturn: +- {type: static_param, param_type: const bool*, param_name: IsForceReturnHome, param_offset: 0x38} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: SunazarashiReturnPos, param_offset: 0x40} +SunazarashiRoot: +- {type: call, fn: _ZN5uking2ai8PreyRoot11loadParams_Ev, addr: 0x7100503cf8} +- {type: static_param, param_type: const float*, param_name: StunNoiseLevel, param_offset: 0x208} +- {type: static_param, param_type: const float*, param_name: ClashSpeed, param_offset: 0x210} +- {type: static_param, param_type: const float*, param_name: ClashAngle, param_offset: 0x218} +- {type: static_param, param_type: const bool*, param_name: EnableHangAlways, param_offset: 0x220} +- {type: map_unit_param, param_type: const bool*, param_name: ForbidSystemDeleteDistance, param_offset: 0x228} +- {type: aitree_variable, param_type: 'sead::Vector3f*', param_name: SunazarashiReturnPos, param_offset: 0x230} +SunazarashiTowing: [] +SwarmBattle: +- {type: static_param, param_type: const float*, param_name: FailedRiseHeight, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RiseFailedMoveDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AttackIntervalIntensity, param_offset: 0x48} +SwarmEscapeDie: +- {type: static_param, param_type: const int*, param_name: Time, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RiseHeight, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RiseDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EndDist, param_offset: 0x50} +SwarmRangeKeepCircleMove: +- {type: static_param, param_type: const float*, param_name: BaseDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Speed, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: UpdateCircleMoveDistance, param_offset: 0x50} +SwarmReaction: [] +SwarmStopTimerEscape: +- {type: call, fn: _ZN5uking2ai14SwarmEscapeDie11loadParams_Ev, addr: 0x71005b1b8c} +- {type: static_param, param_type: 'sead::SafeString', param_name: StopActorName, param_offset: 0x70} +SwimEnemyFindPlayer: +- {type: call, fn: _ZN5uking2ai19EnemyBaseFindPlayer11loadParams_Ev, addr: 0x71003815ac} +- {type: static_param, param_type: const bool*, param_name: IsAbleToLand, param_offset: 0x140} +- {type: static_param, param_type: const float*, param_name: NearScaffoldDist, param_offset: 0x150} +- {type: static_param, param_type: const float*, param_name: ClimbVmin, param_offset: 0x158} +- {type: static_param, param_type: const float*, param_name: ClimbVmax, param_offset: 0x160} +- {type: static_param, param_type: const float*, param_name: ClimbHmax, param_offset: 0x168} +SwimEnemyNormal: +- {type: call, fn: _ZN5uking2ai11EnemyNormal11loadParams_Ev, addr: 0x71003a3e2c} +SwimEnemyRoam: +- {type: static_param, param_type: const float*, param_name: RoamRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RoamRatio, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RoamXRadius, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RoamZRadius, param_offset: 0x50} +SwitchAI: [] +SwitchDistance: +- {type: call, fn: _ZN5uking2ai8SwitchAI11loadParams_Ev, addr: 0x71005b5e1c} +- {type: static_param, param_type: const float*, param_name: OnDis, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OffsetDis, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: ChangeSeq, param_offset: 0x48} +SwitchElectric: +- {type: static_param, param_type: const float*, param_name: ElecReq, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: VolReq, param_offset: 0x40} +SwitchHit: +- {type: call, fn: _ZN5uking2ai8SwitchAI11loadParams_Ev, addr: 0x71005b5e1c} +- {type: static_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +SwitchHitOnce: [] +SwitchLinkTagCheck: +- {type: call, fn: _ZN5uking2ai8SwitchAI11loadParams_Ev, addr: 0x71005b5e1c} +- {type: static_param, param_type: const int*, param_name: SignalType, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: SetEnableJobTimerTiming, param_offset: 0x40} +SwitchRightAndWrong: +- {type: call, fn: _ZN5uking2ai8SwitchAI11loadParams_Ev, addr: 0x71005b5e1c} +- {type: static_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +SwitchTimeLag: +- {type: map_unit_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +SwitchTimeLimited: +- {type: map_unit_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +SwitchTimer: +- {type: map_unit_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +SwitchTorch: +- {type: map_unit_param, param_type: const int*, param_name: SwitchTorchSpType, param_offset: 0x38} +SwitchWheel: +- {type: static_param, param_type: const float*, param_name: RotateStartRad, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RotateEndRad, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ReverseEndRad, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ReverseStartRad, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsAbleToReverse, param_offset: 0x58} +- {type: map_unit_param, param_type: const int*, param_name: RotAxis, param_offset: 0x60} +SwitchWindHit: +- {type: call, fn: _ZN5uking2ai8SwitchAI11loadParams_Ev, addr: 0x71005b5e1c} +- {type: static_param, param_type: const float*, param_name: WaitTime, param_offset: 0x38} +TargetPosAI: +- {type: static_param, param_type: const bool*, param_name: OnEnterOnly, param_offset: 0x38} +TargetAbsolutePos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +TargetDistanceSelect: +- {type: static_param, param_type: const float*, param_name: BoundaryDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OverlapDistance, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsUpdateTarget, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +TargetActorDistanceSelect: +- {type: call, fn: _ZN5uking2ai20TargetDistanceSelect11loadParams_Ev, addr: 0x71005be408} +TargetAngerSelect: [] +TargetAttackAttitudeTgtSelectBase: [] +TargetAttackAttitudeTgtSelect: +- {type: call, fn: _ZN5uking2ai33TargetAttackAttitudeTgtSelectBase11loadParams_Ev, addr: 0x71005bb700} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +TargetBaitTypeSelect: +- {type: aitree_variable, param_type: void*, param_name: TargetBaitActorLink, param_offset: 0x40} +TargetBeatCheck: [] +TargetBeatGetDrop: +- {type: call, fn: _ZN5uking2ai15TargetBeatCheck11loadParams_Ev, addr: 0x71005bc938} +- {type: static_param, param_type: const float*, param_name: SearchDist, param_offset: 0x38} +TargetClimbSelect: [] +TargetDirLRSelect: [] +TargetDirLRInHideSelect: [] +TargetDynamicActorPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x40} +TargetElevationGapSelect: +- {type: static_param, param_type: const float*, param_name: ElvGap, param_offset: 0x38} +TargetExistSelect: [] +TargetHomeDir: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetHomePos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetHomeRangeSelect: +- {type: call, fn: _ZN5uking2ai11RangeSelect11loadParams_Ev, addr: 0x71004bc308} +TargetInFanAreaSelect: +- {type: call, fn: _ZN5uking2ai18TargetInAreaSelect11loadParams_Ev, addr: 0x71005bfe60} +- {type: static_param, param_type: const float*, param_name: NearYMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NearYMin, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: FarYMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: FarYMin, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: XZRange, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: Angle, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} +TargetIsEquipItemSelector: +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x38} +TargetKnockBackBasePos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetLastAttackedPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetLastAttacker: +- {type: static_param, param_type: const bool*, param_name: OnEnterOnly, param_offset: 0x38} +TargetLastAttackerPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetLastDamagedPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetLostCheck: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsLostByScaffold, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsLostByTeached, param_offset: 0x48} +TargetMyUp: +- {type: static_param, param_type: const float*, param_name: EndHeight, param_offset: 0x38} +TargetNPCTypeSelector: [] +TargetOnMovableNavmeshSelect: +- {type: static_param, param_type: const float*, param_name: CheckDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: OnStopCheckDist, param_offset: 0x40} +TargetPartsPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: 'sead::SafeString', param_name: PartsName, param_offset: 0x40} +TargetPickedItem: +- {type: call, fn: _ZN5uking2ai16CommonPickedItem11loadParams_Ev, addr: 0x7100355b18} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xe8} +TargetPlayerPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +TargetPosAnchorOffsetSelf: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const float*, param_name: Dist, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x48} +TargetPosAnchorOffsetTarget: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const float*, param_name: Dist, param_offset: 0x40} +- {type: static_param, param_type: 'sead::SafeString', param_name: AnchorName, param_offset: 0x48} +TargetPosDirLRSelect: +- {type: static_param, param_type: const bool*, param_name: IsCheckEveryFrame, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +TargetPosDynParamRot: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const float*, param_name: MinDist, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: Angle, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +TargetPosDynParamRotFromCtrPos: +- {type: call, fn: _ZN5uking2ai20TargetPosDynParamRot11loadParams_Ev, addr: 0x71005c4ffc} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CenterPos, param_offset: 0x58} +TargetPosLostCheck: +- {type: static_param, param_type: const int*, param_name: LostTimer, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +TargetPosOffset: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const int*, param_name: Dir, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Offset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: MinDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: SideDist, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: IsRandSide, param_offset: 0x60} +TargetPosOffsetFromMyPos: +- {type: call, fn: _ZN5uking2ai15TargetPosOffset11loadParams_Ev, addr: 0x71004f174c} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +TargetPosOnNavFaceSelect: +- {type: static_param, param_type: const float*, param_name: SearchRadius, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +TargetPosRotFromMyPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const bool*, param_name: IsRandSign, param_offset: 0x48} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: Angle, param_offset: 0x50} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: MinDist, param_offset: 0x40} +TargetPosTracking: +- {type: static_param, param_type: const float*, param_name: TrackSpeed, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsStoppedByJustAvoid, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +TargetPredictRotSpdTargetPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const float*, param_name: AddSpeed, param_offset: 0x40} +TargetRangeSelect: +- {type: call, fn: _ZN5uking2ai11RangeSelect11loadParams_Ev, addr: 0x71004bc308} +- {type: static_param, param_type: const bool*, param_name: IsXZOnly, param_offset: 0x50} +TargetRepeat: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x38} +TargetStateSelect: [] +TargetTargetPos: +- {type: call, fn: _ZN5uking2ai11TargetPosAI11loadParams_Ev, addr: 0x71005bad1c} +- {type: static_param, param_type: const float*, param_name: AddSpeed, param_offset: 0x40} +TargetTypeSelector: +- {type: aitree_variable, param_type: bool*, param_name: IsTrgTargetChangeToPlayer, param_offset: 0x38} +TemperatureRandSelect: +- {type: static_param, param_type: const int*, param_name: BaseChangeRatio, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: useBaseRatioTiming, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TemperatureChangeRatio, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BaseTemperature, param_offset: 0x50} +TerminalEnduranceWarpRoot: [] +TimeControlTagRoot: +- {type: map_unit_param, param_type: const int*, param_name: StartTime, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: EndTime, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: StartTimeMinute, param_offset: 0x48} +- {type: map_unit_param, param_type: const int*, param_name: EndTimeMinute, param_offset: 0x50} +- {type: map_unit_param, param_type: const bool*, param_name: IsDirectTime, param_offset: 0x58} +- {type: map_unit_param, param_type: const bool*, param_name: IsMorningA, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: IsMorningB, param_offset: 0x68} +- {type: map_unit_param, param_type: const bool*, param_name: IsNoonA, param_offset: 0x70} +- {type: map_unit_param, param_type: const bool*, param_name: IsNoonB, param_offset: 0x78} +- {type: map_unit_param, param_type: const bool*, param_name: IsEveningA, param_offset: 0x80} +- {type: map_unit_param, param_type: const bool*, param_name: IsEveningB, param_offset: 0x88} +- {type: map_unit_param, param_type: const bool*, param_name: IsNightA, param_offset: 0x90} +- {type: map_unit_param, param_type: const bool*, param_name: IsNightB, param_offset: 0x98} +TimeredViewWait: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: static_param, param_type: const int*, param_name: Time, param_offset: 0x60} +- {type: static_param, param_type: const int*, param_name: TimeRand, param_offset: 0x68} +TimidityEnemyDrawback: +- {type: static_param, param_type: const float*, param_name: EscapeDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: EscapeDistFromHome, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +TiredDistSelect: +- {type: call, fn: _ZN5uking2ai21TargetHomeRangeSelect11loadParams_Ev, addr: 0x71005bf6e8} +- {type: map_unit_param, param_type: const float*, param_name: TerritoryArea, param_offset: 0x50} +TornadoRoot: +- {type: static_param, param_type: const bool*, param_name: IsHitOnlyPlayer, param_offset: 0x38} +- {type: map_unit_param, param_type: const int*, param_name: AtMinDamage, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: AttackPower, param_offset: 0x48} +Towing: +- {type: static_param, param_type: const int*, param_name: KeepMaxTime, param_offset: 0x78} +- {type: static_param, param_type: const int*, param_name: StopTowingDef, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: MaxSpeed, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: InitSpeed, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: AddSpeed, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: StandardSpeed, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: BrakeDecSpeed, param_offset: 0xa8} +- {type: static_param, param_type: const float*, param_name: AttFrontRate, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: SandCheckLength, param_offset: 0xb8} +- {type: static_param, param_type: const float*, param_name: SandCheckAngle, param_offset: 0xc0} +TowingPlayer: +- {type: call, fn: _ZN5uking2ai6Towing11loadParams_Ev, addr: 0x71005cc47c} +- {type: static_param, param_type: const float*, param_name: InterruptDef, param_offset: 0xc8} +- {type: static_param, param_type: const float*, param_name: CheckPlayerStateDef, param_offset: 0xd0} +TreasureBox: +- {type: map_unit_param, param_type: const int*, param_name: SharpWeaponJudgeType, param_offset: 0x38} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: DropActor, param_offset: 0x40} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: DropTable, param_offset: 0x50} +- {type: aitree_variable, param_type: bool*, param_name: IsOpenTreasureBox, param_offset: 0x60} +- {type: aitree_variable, param_type: bool*, param_name: IsSetupDropActor, param_offset: 0x68} +- {type: aitree_variable, param_type: 'sead::SafeString*', param_name: DropActorName, param_offset: 0x70} +- {type: aitree_variable, param_type: void*, param_name: SharpWeaponAddParam, param_offset: 0x78} +TreasureBoxRoot: +- {type: static_param, param_type: const float*, param_name: InGroundOffsetY, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: InGroundScale, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OnGroundOffsetY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: OnGroundScale, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: JumpPower, param_offset: 0x58} +- {type: static_param, param_type: const bool*, param_name: DebugDraw, param_offset: 0x60} +- {type: map_unit_param, param_type: const bool*, param_name: IsInGround, param_offset: 0x68} +- {type: map_unit_param, param_type: const bool*, param_name: EnableRevival, param_offset: 0x70} +TreasureSpot: +- {type: call, fn: _ZN5uking2ai16CommonPickedItem11loadParams_Ev, addr: 0x7100355b18} +- {type: static_param, param_type: 'sead::SafeString', param_name: GetAttKeyForGuardian, param_offset: 0xe8} +- {type: map_unit_param, param_type: const int*, param_name: TresasureSpotType, param_offset: 0xf8} +TrgTargetChangeToPlayerSelect: +- {type: aitree_variable, param_type: bool*, param_name: IsTrgTargetChangeToPlayer, param_offset: 0x38} +TrolleyGrabbedByMagnet: +- {type: dynamic_param, param_type: float*, param_name: RailDist, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: RailPos, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: RailDir, param_offset: 0x48} +TrolleyOnRail: +- {type: dynamic_param, param_type: float*, param_name: RailDist, param_offset: 0x38} +- {type: dynamic_param, param_type: float*, param_name: VelocityReduce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: RailPos, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: RailDir, param_offset: 0x50} +TrolleyRoot: +- {type: static_param, param_type: const float*, param_name: NearGoalDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: NearGoalLimitSpd, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: NearGoalReduceRate, param_offset: 0x48} +TurnForLookingAround: +- {type: static_param, param_type: const float*, param_name: Angle, param_offset: 0x38} +TurnPreAction: +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +TwnObjDlcFlightTrainingTarget: +- {type: static_param, param_type: const float*, param_name: LimitTime, param_offset: 0x38} +UnarmedEnemyNoiseTarget: +- {type: call, fn: _ZN5uking2ai18UnarmedEnemySearch11loadParams_Ev, addr: 0x71004b64a0} +- {type: static_param, param_type: const int*, param_name: LostTime, param_offset: 0x68} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: LostRange, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: LostVMin, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: LostVMax, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: SearchWeaponDist, param_offset: 0x90} +- {type: static_param, param_type: const float*, param_name: SearchBaseWeaponDist, param_offset: 0x98} +- {type: static_param, param_type: const float*, param_name: AbsorpDist, param_offset: 0xa0} +- {type: static_param, param_type: const float*, param_name: FarDist, param_offset: 0xa8} +- {type: static_param, param_type: const int*, param_name: RepathTime, param_offset: 0xb0} +- {type: static_param, param_type: const float*, param_name: SearchWeaponTargetDist, param_offset: 0xb8} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0xc0} +UnarmedWeaponEquipableEnemyAct: +- {type: call, fn: _ZN5uking2ai24UnarmedEnemySearchWeapon11loadParams_Ev, addr: 0x71003b777c} +UnderWaterDepthSelect: +- {type: static_param, param_type: const float*, param_name: DeepDepth, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: OnEnterOnly, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: ForceDeepChange, param_offset: 0x48} +UrbosasFuryDamageSelector: [] +VacuumedBombDamageSelect: +- {type: aitree_variable, param_type: void*, param_name: VacuumedExplodingBomb, param_offset: 0x38} +VehicleSelector: [] +ViewChaseSound: +- {type: static_param, param_type: const float*, param_name: TurnDir, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +ViewMove: +- {type: static_param, param_type: const float*, param_name: TurnStartAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: CheckOnce, param_offset: 0x40} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x48} +ViewWaitEndWhenAimed: +- {type: call, fn: _ZN5uking2ai15TimeredViewWait11loadParams_Ev, addr: 0x71005c9970} +- {type: static_param, param_type: const int*, param_name: EndTime, param_offset: 0x78} +- {type: static_param, param_type: const float*, param_name: AimedAngle, param_offset: 0x80} +- {type: static_param, param_type: const float*, param_name: BowRange, param_offset: 0x88} +- {type: static_param, param_type: 'sead::SafeString', param_name: BoneName, param_offset: 0x90} +ViewWaitRiskAvoid: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: static_param, param_type: const int*, param_name: AvoidFrame, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: FrontAngle, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: SpaceAngle, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: SpaceDist, param_offset: 0x78} +ViewWaitWithFaceView: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: static_param, param_type: const bool*, param_name: UseSimpleOffset, param_offset: 0x60} +ViewWaitWithInstDynActor: +- {type: call, fn: _ZN5uking2ai8ViewWait11loadParams_Ev, addr: 0x71005e5bc4} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x60} +ViewfrustumCheckTagRoot: +- {type: map_unit_param, param_type: const float*, param_name: AllwaysOnDisFromPlayer, param_offset: 0x38} +- {type: map_unit_param, param_type: const float*, param_name: AllwaysOnCamDir, param_offset: 0x40} +WaistRotEnemyArrowAttack: +- {type: call, fn: _ZN5uking2ai20EnemyBaseArrowAttack11loadParams_Ev, addr: 0x710037e074} +- {type: static_param, param_type: const int*, param_name: RandomPredictFrame, param_offset: 0x50} +WaitAndFaceLeader: +- {type: static_param, param_type: const float*, param_name: TurnThreshold, param_offset: 0x38} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: LeaderActor, param_offset: 0x40} +WaitForTargetClose: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: Range, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: FailRange, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +WaitForCloseOrWaterSide: +- {type: call, fn: _ZN5uking2ai18WaitForTargetClose11loadParams_Ev, addr: 0x71005e8c18} +- {type: static_param, param_type: const float*, param_name: DistFromWater, param_offset: 0x58} +WaitNearTargetAwarenessRange: +- {type: static_param, param_type: const int*, param_name: AddAwarenessRangeType, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: StartCloseDist, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: OutDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: EndCloseDist, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: UseNavMeshRequest, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x60} +WaitPartsSleep: [] +WarpActivateTerminal: +- {type: static_param, param_type: const float*, param_name: DoLimitAngle, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsAbleToReboot, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsCheckLimit, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsRejectMsgForRemains, param_offset: 0x50} +- {type: map_unit_param, param_type: const int*, param_name: RemainsTerminalType, param_offset: 0x58} +- {type: map_unit_param, param_type: const int*, param_name: RemainsTerminalIndex, param_offset: 0x60} +WarpSafeTagRoot: [] +WarpTagRoot: [] +WaterFallWithSound: [] +WaterSurfaceBase: +- {type: map_unit_param, param_type: const float*, param_name: FlowSpeedFactor, param_offset: 0x38} +WaterSurface: +- {type: call, fn: _ZN5uking2ai16WaterSurfaceBase11loadParams_Ev, addr: 0x71005ed75c} +- {type: static_param, param_type: const int*, param_name: LinkTagType, param_offset: 0x78} +- {type: map_unit_param, param_type: const float*, param_name: RiseLength, param_offset: 0x80} +- {type: map_unit_param, param_type: const float*, param_name: RiseSpeed, param_offset: 0x88} +WaterSurface4RemainsLava: +- {type: call, fn: _ZN5uking2ai12WaterSurface11loadParams_Ev, addr: 0x71005eca00} +WeakStateSelecter: +- {type: static_param, param_type: const bool*, param_name: IsAlwaysUpdate, param_offset: 0x38} +- {type: aitree_variable, param_type: bool*, param_name: IsWeakPointAppearMode, param_offset: 0x40} +WeaponEquipEnemyWakeUp: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: ShieldIdx, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: WeaponGetRange, param_offset: 0x48} +WeaponEquipedAI: [] +WeaponHoldSelector: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeaponOnetimeUse: +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeaponPrepareSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeaponRangeKindSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeaponSelector: [] +WeaponSubTypeSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeaponThrowerSelector: [] +WeaponTrueFormSelect: [] +WeaponUsageSelect: +- {type: static_param, param_type: const int*, param_name: WeaponIdx, param_offset: 0x38} +WeatherReactionCheck: +- {type: static_param, param_type: const int*, param_name: RandTime, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsReactionRain, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsReactionSnow, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: IsReturnNormal, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: IsForceChangeable, param_offset: 0x58} +WetSelect: +- {type: static_param, param_type: const float*, param_name: WetRateThreashold, param_offset: 0x38} +WildHorseDefWanderAI: +- {type: static_param, param_type: const float*, param_name: ChangeWaitRate, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MaxWaitTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MinWaitTime, param_offset: 0x48} +WillBallAttackLevelSelect: +- {type: dynamic_param, param_type: int*, param_name: Level, param_offset: 0x38} +WillBallFollowAttack: +- {type: static_param, param_type: const int*, param_name: ImmidiateLightningTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: CycleY, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: DelayTimer, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningXZ, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningY, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AmplitudeY, param_offset: 0x60} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CenterPos, param_offset: 0x70} +WillBallFollowAttackWithDynAng: +- {type: call, fn: _ZN5uking2ai20WillBallFollowAttack11loadParams_Ev, addr: 0x71005f3b90} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: Angle, param_offset: 0x90} +WillBallOperated: +- {type: dynamic_param, param_type: int*, param_name: WaitTime, param_offset: 0x50} +- {type: dynamic_param, param_type: int*, param_name: Command, param_offset: 0x58} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: BasePos, param_offset: 0x60} +- {type: dynamic_param, param_type: 'ksys::act::BaseProcLink*', param_name: TargetActor, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: WarpDist, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AttakedChangeDist, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: IsAttackedTimeAffect, param_offset: 0x48} +WillBallRoot: +- {type: static_param, param_type: const int*, param_name: MagneLightningTime, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MinimizedTime, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningXZ, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningY, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningXZTarget, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: ImmidiateLightningYTarget, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: LightningTimeMinimizeDist, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsExplode, param_offset: 0x70} +- {type: map_unit_param, param_type: const int*, param_name: Count, param_offset: 0x78} +WindBoxPlace: +- {type: static_param, param_type: const float*, param_name: Radius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: MaxSpeed, param_offset: 0x40} +- {type: map_unit_param, param_type: const int*, param_name: Direction, param_offset: 0x48} +- {type: map_unit_param, param_type: const float*, param_name: WindSpeed, param_offset: 0x50} +WindGenerator: [] +WindGeneratorSignal: +- {type: call, fn: _ZN5uking2ai13WindGenerator11loadParams_Ev, addr: 0x71005f6fc8} +WizzrobeBlownOff: +- {type: static_param, param_type: const float*, param_name: DrownDepth, param_offset: 0x38} +- {type: static_param, param_type: const bool*, param_name: IsForceGetUp, param_offset: 0x40} +WizzrobeCircleMove: +- {type: call, fn: _ZN5uking2ai16CircleMoveTarget11loadParams_Ev, addr: 0x7100350e64} +- {type: static_param, param_type: const float*, param_name: FinRadius, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: RadiusTimer, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: EndTimer, param_offset: 0x78} +- {type: static_param, param_type: const bool*, param_name: IsAttCentral, param_offset: 0x80} +WizzrobeCombat: +- {type: static_param, param_type: const int*, param_name: WeatherMagicRate, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: SummonRate, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: SummonBufferSize, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: MaxHeightLevel, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: SummonCount, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackLength, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: HeightOffset, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: SummonBufferKey, param_offset: 0x70} +- {type: static_param, param_type: 'const sead::Vector3f*', param_name: TargetOffset, param_offset: 0x80} +- {type: aitree_variable, param_type: int*, param_name: SummonCount, param_offset: 0x88} +- {type: aitree_variable, param_type: bool*, param_name: IsWizzrobeInBattleAreaFlag, param_offset: 0x90} +WizzrobeCombatMove: +- {type: static_param, param_type: const int*, param_name: MoveCountMin, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: MoveCountMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: DistY, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RetryLength, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: MaxDistXZ, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: MinDistXZ, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: EscapeLength, param_offset: 0x68} +- {type: static_param, param_type: 'sead::SafeString', param_name: IgnoreHideActionASName, param_offset: 0x70} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x80} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: AttPos, param_offset: 0x88} +- {type: aitree_variable, param_type: bool*, param_name: IsWizzrobeInBattleAreaFlag, param_offset: 0x90} +WizzrobeFindPlayer: +- {type: static_param, param_type: const float*, param_name: HomeTerritoryWidth, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: HomeTerritoryHeight, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BattleTerritoryWidth, param_offset: 0x48} +- {type: aitree_variable, param_type: bool*, param_name: IsWizzrobeInBattleAreaFlag, param_offset: 0x50} +WizzrobeRoam: +- {type: static_param, param_type: const int*, param_name: MoveCountMin, param_offset: 0x40} +- {type: static_param, param_type: const int*, param_name: MoveCountMax, param_offset: 0x48} +- {type: static_param, param_type: const int*, param_name: ChangeHeightPer, param_offset: 0x50} +- {type: static_param, param_type: const int*, param_name: MexHeightLevel, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: TerritoryRadius, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: TerritoryRadiusRnd, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: RetryLength, param_offset: 0x70} +- {type: static_param, param_type: const float*, param_name: HeightOffset, param_offset: 0x78} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: CentralPos, param_offset: 0x80} +- {type: aitree_variable, param_type: void*, param_name: WizzrobeMagicWeatherUnit, param_offset: 0x38} +WizzrobeRoot: +- {type: call, fn: _ZN5uking2ai9EnemyRoot11loadParams_Ev, addr: 0x71003b6090} +- {type: static_param, param_type: const int*, param_name: MagicTargetIdx, param_offset: 0x1d8} +- {type: static_param, param_type: 'sead::SafeString', param_name: StartASName, param_offset: 0x1e0} +- {type: static_param, param_type: 'sead::SafeString', param_name: StopASName, param_offset: 0x1f0} +- {type: aitree_variable, param_type: void*, param_name: WizzrobeMagicWeatherUnit, param_offset: 0x200} +WizzrobeWeatherMagic: +- {type: static_param, param_type: const float*, param_name: RiseLength, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: Timer, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +- {type: aitree_variable, param_type: void*, param_name: WizzrobeMagicWeatherUnit, param_offset: 0x38} +WolfLinkAmiibo: +- {type: static_param, param_type: const int*, param_name: AreaSearchCharacterRadius, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AreaThreshold, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AreaSearchRadius, param_offset: 0x48} +WolfLinkBattleRoot: +- {type: static_param, param_type: const float*, param_name: AttackIntiationRange, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ChanceToBarkOnAttackFail, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: UseChainAttack, param_offset: 0x48} +- {type: dynamic_param, param_type: float*, param_name: KeepTargetRange, param_offset: 0x50} +WolfLinkChainAttack: +- {type: static_param, param_type: const int*, param_name: NumAttacks, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AnimalUnitRate, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: BeginEndAnimASPlayRate, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: TurnAnimPlayRate, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: AttackAnimPlayRate, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AttackAnimMinDistance, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AttackDistanceOffset, param_offset: 0x68} +- {type: static_param, param_type: const bool*, param_name: IsInvincible, param_offset: 0x70} +- {type: static_param, param_type: const bool*, param_name: IsIncrementHitOnMiss, param_offset: 0x78} +WolfLinkFollowPlayerRoot: +- {type: call, fn: _ZN5uking2ai11HorseFollow11loadParams_Ev, addr: 0x7100437a5c} +- {type: static_param, param_type: const float*, param_name: LateralDistance, param_offset: 0xe0} +- {type: static_param, param_type: const float*, param_name: AnteriorDistanceStop, param_offset: 0xe8} +- {type: static_param, param_type: const float*, param_name: AnteriorDistanceRun, param_offset: 0xf0} +- {type: static_param, param_type: const float*, param_name: AnteriorDistanceSprint, param_offset: 0xf8} +WolfLinkFollowWait: +- {type: static_param, param_type: const float*, param_name: TurnThreshold, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LockonTurnThreshold, param_offset: 0x40} +WolfLinkGoToTarget: +- {type: call, fn: _ZN5uking2ai11HorseFollow11loadParams_Ev, addr: 0x7100437a5c} +WolfLinkLeadToTarget: +- {type: call, fn: _ZN5uking2ai12LeadToTarget11loadParams_Ev, addr: 0x7100480520} +WolfLinkNormalRoot: +- {type: static_param, param_type: const float*, param_name: ShiekSensorLeadDistance, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: ShiekSensorGoalTolerance, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: ShiekSensorTargetFowardOffset, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: BattleAggressionRange, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: HowlAtEnemyRange, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: UtilityWantsToHunt, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: WarpToPlayerDistance, param_offset: 0x68} +WolfLinkReaction: [] +WolfLinkRoot: [] +WolfLinkRushAttack: +- {type: static_param, param_type: const float*, param_name: AttackPosOffsetLength, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AllowUpdateTimerLength, param_offset: 0x40} +- {type: static_param, param_type: const bool*, param_name: CheckSafeGround, param_offset: 0x48} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x50} +WolfLinkSeqAttack: +- {type: static_param, param_type: const float*, param_name: DistBeginAttackAnimation, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: AngleReqBeginAttackAnimationMin, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: AngleReqBeginAttackAnimationMax, param_offset: 0x48} +- {type: static_param, param_type: const bool*, param_name: PlayOnMissAI, param_offset: 0x50} +- {type: static_param, param_type: const bool*, param_name: ChargeChainAttackOnHit, param_offset: 0x58} +WolfLinkShiekSensorRoot: +- {type: static_param, param_type: const float*, param_name: DistanceUntilUpdateTarget, param_offset: 0x38} +- {type: dynamic_param, param_type: bool*, param_name: UpdateTarget, param_offset: 0x40} +WolfLinkWarp: +- {type: static_param, param_type: const int*, param_name: NumCalcPerFrame, param_offset: 0x38} +- {type: static_param, param_type: const int*, param_name: FramesUntilFail, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: TransitFrames, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: WarpFromPlayerOffset, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: InitialAngle, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: AreaSearchRadius, param_offset: 0x60} +- {type: static_param, param_type: const float*, param_name: AreaSearchCharacterRadius, param_offset: 0x68} +- {type: static_param, param_type: const float*, param_name: AreaThreshold, param_offset: 0x70} +- {type: dynamic_param, param_type: int*, param_name: WarpType, param_offset: 0x78} +YunBoCannon: +- {type: call, fn: _ZN5uking2ai15GoronCannonBase11loadParams_Ev, addr: 0x710032db80} +- {type: static_param, param_type: 'sead::SafeString', param_name: ReturnAnchorName, param_offset: 0x130} +- {type: map_unit_param, param_type: const int*, param_name: CannonSpot, param_offset: 0x140} +- {type: map_unit_param, param_type: 'sead::SafeString', param_name: ActorName, param_offset: 0x148} +YunBoCannonBallRoot: +- {type: call, fn: _ZN5uking2ai14CannonBallRoot11loadParams_Ev, addr: 0x710034156c} +- {type: map_unit_param, param_type: const int*, param_name: CannonSpot, param_offset: 0x38} +ZokuchoSunazarashi: +- {type: static_param, param_type: const float*, param_name: PlayerLostDis, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: LeadPlayerAngle, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: MoveTargetDist, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: StopMoveDist, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: StayAwayDist, param_offset: 0x58} +ZoraHeroRelicBattleNormal: +- {type: static_param, param_type: const float*, param_name: WarpDistanceXZ, param_offset: 0x88} +- {type: static_param, param_type: const float*, param_name: NearPlayerDistanceXZ, param_offset: 0x90} +ZoraHeroRelicBattleRidePlayer: +- {type: aitree_variable, param_type: void*, param_name: ZoraHeroShowMsgUnit, param_offset: 0x38} +ZoraHeroRelicBattleRoot: +- {type: aitree_variable, param_type: void*, param_name: ZoraHeroShowMsgUnit, param_offset: 0x38} +ZoraHeroSoulGiftRoot: +- {type: call, fn: _ZN5uking2ai16HeroSoulGiftRoot11loadParams_Ev, addr: 0x710042eef8} +ZoraHeroWarp2Player: +- {type: static_param, param_type: const float*, param_name: DepthOffset, param_offset: 0x38} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x40} +addNoiseToTargetPos: +- {type: static_param, param_type: const float*, param_name: RandYMin, param_offset: 0x38} +- {type: static_param, param_type: const float*, param_name: RandYMax, param_offset: 0x40} +- {type: static_param, param_type: const float*, param_name: RandLeftMax, param_offset: 0x48} +- {type: static_param, param_type: const float*, param_name: RandRightMax, param_offset: 0x50} +- {type: static_param, param_type: const float*, param_name: RandDistMin, param_offset: 0x58} +- {type: static_param, param_type: const float*, param_name: RandDistMax, param_offset: 0x60} +- {type: static_param, param_type: const bool*, param_name: IsUpdateEveryFrame, param_offset: 0x68} +- {type: dynamic_param, param_type: 'sead::Vector3f*', param_name: TargetPos, param_offset: 0x70} diff --git a/src/Game/AI/AI/CMakeLists.txt b/src/Game/AI/AI/CMakeLists.txt new file mode 100644 index 00000000..7db107d6 --- /dev/null +++ b/src/Game/AI/AI/CMakeLists.txt @@ -0,0 +1,2524 @@ +target_sources(uking PRIVATE + aiActorWaterDepthSelect.cpp + aiActorWaterDepthSelect.h + aiAddBasicLinkOn.cpp + aiAddBasicLinkOn.h + aiAddCarriedBase.cpp + aiAddCarriedBase.h + aiAddCarried.cpp + aiAddCarried.h + aiAddDemoCall.cpp + aiAddDemoCall.h + aiAddNodeNodeCarried.cpp + aiAddNodeNodeCarried.h + aiAddNoiseToTargetPos.cpp + aiAddNoiseToTargetPos.h + aiAddPlayerLargeAttackJustGuard.cpp + aiAddPlayerLargeAttackJustGuard.h + aiAddSwarmMove.cpp + aiAddSwarmMove.h + aiAddViewTargetPosBase.cpp + aiAddViewTargetPosBase.h + aiAddViewTargetPos.cpp + aiAddViewTargetPos.h + aiAirOctaBoardBurn.cpp + aiAirOctaBoardBurn.h + aiAirOctaBurnReaction.cpp + aiAirOctaBurnReaction.h + aiAirOctaFlyUp.cpp + aiAirOctaFlyUp.h + aiAirOctaReaction.cpp + aiAirOctaReaction.h + aiAirOctaRoot.cpp + aiAirOctaRoot.h + aiAirOctaState.cpp + aiAirOctaState.h + aiAirOctaWait.cpp + aiAirOctaWait.h + aiAlertCreationNestOnTree.cpp + aiAlertCreationNestOnTree.h + aiAmbushableWeaponShoot.cpp + aiAmbushableWeaponShoot.h + aiAnchorRangeSelectTwoAction.cpp + aiAnchorRangeSelectTwoAction.h + aiAncientNecklaceBallBase.cpp + aiAncientNecklaceBallBase.h + aiAncientNecklaceBall.cpp + aiAncientNecklaceBall.h + aiAnimalAttackOtherTarget.cpp + aiAnimalAttackOtherTarget.h + aiAnimalBattleAggressive.cpp + aiAnimalBattleAggressive.h + aiAnimalBattleMoveLeave.cpp + aiAnimalBattleMoveLeave.h + aiAnimalEscapeAfterDamage.cpp + aiAnimalEscapeAfterDamage.h + aiAnimalEscapeAI.cpp + aiAnimalEscapeAI.h + aiAnimalFollowTarget.cpp + aiAnimalFollowTarget.h + aiAnimalLineOfSightSelector.cpp + aiAnimalLineOfSightSelector.h + aiAnimalPreAttack.cpp + aiAnimalPreAttack.h + aiAnimalRangeKeepMove.cpp + aiAnimalRangeKeepMove.h + aiAnimalRangeKeepMoveWithLOS.cpp + aiAnimalRangeKeepMoveWithLOS.h + aiAnimalRoamBase.cpp + aiAnimalRoamBase.h + aiAnimalRoamCheckWater.cpp + aiAnimalRoamCheckWater.h + aiAnimalRoam.cpp + aiAnimalRoam.h + aiAnimalRushAttack.cpp + aiAnimalRushAttack.h + aiAnimalTimelineAI.cpp + aiAnimalTimelineAI.h + aiAppearFromTargetFrontAfterChase.cpp + aiAppearFromTargetFrontAfterChase.h + aiAppearFromTargetFrontGround.cpp + aiAppearFromTargetFrontGround.h + aiAppearNearTarget.cpp + aiAppearNearTarget.h + aiAppearNearTargetOutOfScrnGnd.cpp + aiAppearNearTargetOutOfScrnGnd.h + aiArmorSearchKorokRoot.cpp + aiArmorSearchKorokRoot.h + aiAroundEnemyCheckSelect.cpp + aiAroundEnemyCheckSelect.h + aiArrowChargeAndShoot.cpp + aiArrowChargeAndShoot.h + aiArrow.cpp + aiArrowDelete.cpp + aiArrowDelete.h + aiArrow.h + aiArrowStickAndPick.cpp + aiArrowStickAndPick.h + aiAssassinBattle.cpp + aiAssassinBattle.h + aiAssassinBattleMove.cpp + aiAssassinBattleMove.h + aiAssassinBattleRange.cpp + aiAssassinBattleRange.h + aiAssassinBossAttackSeq.cpp + aiAssassinBossAttackSeq.h + aiAssassinBossBattle.cpp + aiAssassinBossBattle.h + aiAssassinBossEscapeFromTarget.cpp + aiAssassinBossEscapeFromTarget.h + aiAssassinBossFirstBattle.cpp + aiAssassinBossFirstBattle.h + aiAssassinBossFirstBattleMove.cpp + aiAssassinBossFirstBattleMove.h + aiAssassinBossFirstRangeKeepMove.cpp + aiAssassinBossFirstRangeKeepMove.h + aiAssassinBossFirstRoot.cpp + aiAssassinBossFirstRoot.h + aiAssassinBossIronBallAttack.cpp + aiAssassinBossIronBallAttack.h + aiAssassinBossLastAttack.cpp + aiAssassinBossLastAttack.h + aiAssassinBossRootBase.cpp + aiAssassinBossRootBase.h + aiAssassinBossRoot.cpp + aiAssassinBossRoot.h + aiAssassinCallSelect.cpp + aiAssassinCallSelect.h + aiAssassinFieldShooterBattleBase.cpp + aiAssassinFieldShooterBattleBase.h + aiAssassinFieldShooterBattle.cpp + aiAssassinFieldShooterBattle.h + aiAssassinMagicTgtSelect.cpp + aiAssassinMagicTgtSelect.h + aiAssassinMiddleAzitoDlcRoot.cpp + aiAssassinMiddleAzitoDlcRoot.h + aiAssassinMiddleAzitoNoMemberDemo.cpp + aiAssassinMiddleAzitoNoMemberDemo.h + aiAssassinMiddleAzitoRootAccept.cpp + aiAssassinMiddleAzitoRootAccept.h + aiAssassinMiddleAzitoRoot.cpp + aiAssassinMiddleAzitoRoot.h + aiAssassinMiddleDlcGrabAdapter.cpp + aiAssassinMiddleDlcGrabAdapter.h + aiAssassinMiddleMagicAfter.cpp + aiAssassinMiddleMagicAfter.h + aiAssassinMiddleRoot.cpp + aiAssassinMiddleRoot.h + aiAssassinNormal.cpp + aiAssassinNormal.h + aiAssassinRoot.cpp + aiAssassinRoot.h + aiAssassinShooterJuniorAzitoRoot.cpp + aiAssassinShooterJuniorAzitoRoot.h + aiASWeaponRoot.cpp + aiASWeaponRoot.h + aiAttackGraveChase.cpp + aiAttackGraveChase.h + aiAttackGraveChaseWithSensor.cpp + aiAttackGraveChaseWithSensor.h + aiAttackGrave.cpp + aiAttackGrave.h + aiAttackHitCheck.cpp + aiAttackHitCheck.h + aiAwarenessScale.cpp + aiAwarenessScale.h + aiBackAttackEnemyBattle.cpp + aiBackAttackEnemyBattle.h + aiBackStepAndAttack.cpp + aiBackStepAndAttack.h + aiBalloonPlantNormal.cpp + aiBalloonPlantNormal.h + aiBarrelBomb.cpp + aiBarrelBomb.h + aiBasicStatusRoot.cpp + aiBasicStatusRoot.h + aiBattleBgmRequestFinishTag.cpp + aiBattleBgmRequestFinishTag.h + aiBeamExplodeBase.cpp + aiBeamExplodeBase.h + aiBeamExplode.cpp + aiBeamExplodeEitherHit.cpp + aiBeamExplodeEitherHit.h + aiBeamExplode.h + aiBeamosCarried.cpp + aiBeamosCarried.h + aiBeeBattle.cpp + aiBeeBattle.h + aiBeeSwarmFindPlayer.cpp + aiBeeSwarmFindPlayer.h + aiBeeSwarmNormal.cpp + aiBeeSwarmNormal.h + aiBeeSwarmReaction.cpp + aiBeeSwarmReaction.h + aiBeeSwarmRoot.cpp + aiBeeSwarmRoot.h + aiBirdDead.cpp + aiBirdDead.h + aiBirdEscape.cpp + aiBirdEscape.h + aiBlownOff.cpp + aiBlownOff.h + aiBocoblinBackStepAttack.cpp + aiBocoblinBackStepAttack.h + aiBokoblinArrowAttack.cpp + aiBokoblinArrowAttack.h + aiBokoblinArrowBattle.cpp + aiBokoblinArrowBattle.h + aiBokoblinHoldArrow.cpp + aiBokoblinHoldArrow.h + aiBokoblinNoise.cpp + aiBokoblinNoise.h + aiBokoblinRestraint.cpp + aiBokoblinRestraint.h + aiBokoblinRoam.cpp + aiBokoblinRoam.h + aiBossBattleRoomRoot.cpp + aiBossBattleRoomRoot.h + aiBowEquiped.cpp + aiBowEquiped.h + aiBowlPin.cpp + aiBowlPin.h + aiBowShoot.cpp + aiBowShoot.h + aiBoxWaterRoot.cpp + aiBoxWaterRoot.h + aiBreathAttackEnemyBattle.cpp + aiBreathAttackEnemyBattle.h + aiBreathEnemyRangeKeepMove.cpp + aiBreathEnemyRangeKeepMove.h + aiCalledEnemyMove.cpp + aiCalledEnemyMove.h + aiCameraAI.cpp + aiCameraAI.h + aiCameraBow.cpp + aiCameraBow.h + aiCameraEditRoot.cpp + aiCameraEditRoot.h + aiCameraEvent.cpp + aiCameraEvent.h + aiCameraEventReturnSavePoint.cpp + aiCameraEventReturnSavePoint.h + aiCameraEventTalkAI.cpp + aiCameraEventTalkAI.h + aiCameraEventTalkAIRet.cpp + aiCameraEventTalkAIRet.h + aiCameraEventTalk.cpp + aiCameraEventTalk.h + aiCameraGameRoot.cpp + aiCameraGameRoot.h + aiCameraRoot.cpp + aiCameraRoot.h + aiCameraTool.cpp + aiCameraTool.h + aiCannonBallRoot.cpp + aiCannonBallRoot.h + aiCapturedActDeadSelector.cpp + aiCapturedActDeadSelector.h + aiCapturedActorReactionChemical.cpp + aiCapturedActorReactionChemical.h + aiCapturedActorReaction.cpp + aiCapturedActorReaction.h + aiCarryBox.cpp + aiCarryBox.h + aiCastleLynelBattle.cpp + aiCastleLynelBattle.h + aiChangeWeatherTagRoot.cpp + aiChangeWeatherTagRoot.h + aiChangeWindTagRoot.cpp + aiChangeWindTagRoot.h + aiChaseSound.cpp + aiChaseSound.h + aiChemicalEnemyFindPlayer.cpp + aiChemicalEnemyFindPlayer.h + aiChemicalEnemyRoot.cpp + aiChemicalEnemyRoot.h + aiChemicalExplode.cpp + aiChemicalExplode.h + aiChemicalGiantArmorRoot.cpp + aiChemicalGiantArmorRoot.h + aiChemicalStayObjectRoot.cpp + aiChemicalStayObjectRoot.h + aiChemicalWeaponRoot.cpp + aiChemicalWeaponRoot.h + aiChildDeviceReflectArrow.cpp + aiChildDeviceReflectArrow.h + aiChildFavoriteSelectorBase.cpp + aiChildFavoriteSelectorBase.h + aiChildFavoriteSelector.cpp + aiChildFavoriteSelector.h + aiChildHaveSelect.cpp + aiChildHaveSelect.h + aiChmCheck.cpp + aiChmCheck.h + aiChmVolRateCheckBlankOk.cpp + aiChmVolRateCheckBlankOk.h + aiChmVolRateCheck.cpp + aiChmVolRateCheck.h + aiChuchuDieSelect.cpp + aiChuchuDieSelect.h + aiChuchuJellyRoot.cpp + aiChuchuJellyRoot.h + aiChuchuNavMoveTarget.cpp + aiChuchuNavMoveTarget.h + aiChuchuRoot.cpp + aiChuchuRoot.h + aiChuchuTypeSelect.cpp + aiChuchuTypeSelect.h + aiCircleMove.cpp + aiCircleMoveFlying.cpp + aiCircleMoveFlying.h + aiCircleMove.h + aiCircleMoveInFluid.cpp + aiCircleMoveInFluid.h + aiCircleMoveInWater.cpp + aiCircleMoveInWater.h + aiCircleMovePos.cpp + aiCircleMovePos.h + aiCircleMoveTarget.cpp + aiCircleMoveTarget.h + aiCliffCheckSelect.cpp + aiCliffCheckSelect.h + aiCliffCheckTargetDirSelect.cpp + aiCliffCheckTargetDirSelect.h + aiCliffCheckToTargetPosDirSelect.cpp + aiCliffCheckToTargetPosDirSelect.h + aiCliffDistanceSelectThreeAction.cpp + aiCliffDistanceSelectThreeAction.h + aiCloseSmallAttackBase.cpp + aiCloseSmallAttackBase.h + aiCloseSmallAttack.cpp + aiCloseSmallAttack.h + aiClusterRenderCheckTag.cpp + aiClusterRenderCheckTag.h + aiColGroundHitSelect.cpp + aiColGroundHitSelect.h + aiCollaborationShootingStarRoot.cpp + aiCollaborationShootingStarRoot.h + aiCommonPickedItem.cpp + aiCommonPickedItem.h + aiConditionMoveActionSelect.cpp + aiConditionMoveActionSelect.h + aiCookPotRoot.cpp + aiCookPotRoot.h + aiCountSelect.cpp + aiCountSelect.h + aiCreateActor.cpp + aiCreateActor.h + aiCreateActorWithTarget.cpp + aiCreateActorWithTarget.h + aiCreateCarryActor.cpp + aiCreateCarryActor.h + aiCreateOnFaceSelect.cpp + aiCreateOnFaceSelect.h + aiCreationNestOnTree.cpp + aiCreationNestOnTree.h + aiDamageAttrSelect.cpp + aiDamageAttrSelect.h + aiDamageTypeSelect.cpp + aiDamageTypeSelect.h + aiDangerAvoidFlagSelect.cpp + aiDangerAvoidFlagSelect.h + aiDashAndAttack.cpp + aiDashAndAttack.h + aiDeadlyBlowWeaponRoot.cpp + aiDeadlyBlowWeaponRoot.h + aiDeadOrOtherState.cpp + aiDeadOrOtherState.h + aiDefWanderAI.cpp + aiDefWanderAI.h + aiDemoRailMoveRemains.cpp + aiDemoRailMoveRemains.h + aiDemoRootAI.cpp + aiDemoRootAI.h + aiDgnObj_DLC_CogWheel2.cpp + aiDgnObj_DLC_CogWheel2.h + aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp + aiDgnObj_DLC_CogWheel_Physics_Ctr.h + aiDgnObj_DLC_CWRotDirSwitch.cpp + aiDgnObj_DLC_CWRotDirSwitch.h + aiDgnObj_DLC_CW_WithEntityBody00.cpp + aiDgnObj_DLC_CW_WithEntityBody00.h + aiDgnObj_DLC_DungeonRotateTag.cpp + aiDgnObj_DLC_DungeonRotateTag.h + aiDgnObj_DLC_Faucet.cpp + aiDgnObj_DLC_Faucet.h + aiDgnObj_DLC_SliderBlock.cpp + aiDgnObj_DLC_SliderBlock.h + aiDieSelectBombPlus.cpp + aiDieSelectBombPlus.h + aiDieSelectChemicalPlus.cpp + aiDieSelectChemicalPlus.h + aiDieSelectChemShockPlus.cpp + aiDieSelectChemShockPlus.h + aiDieSelect.cpp + aiDieSelect.h + aiDisplaySelect.cpp + aiDisplaySelect.h + aiDistanceKeepMove.cpp + aiDistanceKeepMove.h + aiDistanceLostCheck.cpp + aiDistanceLostCheck.h + aiDoChangeOneTime.cpp + aiDoChangeOneTime.h + aiDogNormal.cpp + aiDogNormal.h + aiDomesticNormal.cpp + aiDomesticNormal.h + aiDominoRoot.cpp + aiDominoRoot.h + aiDoorRoot.cpp + aiDoorRoot.h + aiDoubtItemSubTargetSelect.cpp + aiDoubtItemSubTargetSelect.h + aiDragonDropItemTargetRootAI.cpp + aiDragonDropItemTargetRootAI.h + aiDragonElecRoot.cpp + aiDragonElecRoot.h + aiDragonFireRoot.cpp + aiDragonFireRoot.h + aiDragonIceRoot.cpp + aiDragonIceRoot.h + aiDragonIceWaitRunel.cpp + aiDragonIceWaitRunel.h + aiDragonItemRoot.cpp + aiDragonItemRoot.h + aiDragonReturn.cpp + aiDragonReturn.h + aiDragonRootBase.cpp + aiDragonRootBase.h + aiDragonRoot.cpp + aiDragonRoot.h + aiDragonTurn.cpp + aiDragonTurn.h + aiDrawnSwordBowSelect.cpp + aiDrawnSwordBowSelect.h + aiDrawnWeaponSelector.cpp + aiDrawnWeaponSelector.h + aiDuckRoot.cpp + aiDuckRoot.h + aiDungeonCannonBallAutoDelete.cpp + aiDungeonCannonBallAutoDelete.h + aiDungeonEntranceRoot.cpp + aiDungeonEntranceRoot.h + aiDungeonMoveTagCont.cpp + aiDungeonMoveTagCont.h + aiDungeonMoveTag.cpp + aiDungeonMoveTag.h + aiDungeonRemainsFire.cpp + aiDungeonRemainsFire.h + aiDungeonResetPosTag.cpp + aiDungeonResetPosTag.h + aiDungeonRotateTag3D.cpp + aiDungeonRotateTag3D.h + aiDungeonRotateTag4ElecApp.cpp + aiDungeonRotateTag4ElecApp.h + aiDungeonRotateTag4FireApp.cpp + aiDungeonRotateTag4FireApp.h + aiDungeonRotateTag4WaterApp.cpp + aiDungeonRotateTag4WaterApp.h + aiDungeonRotateTag4WindApp.cpp + aiDungeonRotateTag4WindApp.h + aiDungeonRotateTagCont.cpp + aiDungeonRotateTagCont.h + aiDungeonRotateTag.cpp + aiDungeonRotateTag.h + aiDungeonRotateTagInOrder.cpp + aiDungeonRotateTagInOrder.h + aiDungeonRotateTagShuttle.cpp + aiDungeonRotateTagShuttle.h + aiDungeonRotateTagWaterChemical.cpp + aiDungeonRotateTagWaterChemical.h + aiDynTargetStoneShootEnemyBattle.cpp + aiDynTargetStoneShootEnemyBattle.h + aiDynTgBreathAttackEnemyBattle.cpp + aiDynTgBreathAttackEnemyBattle.h + aiEarthReleaseAttack.cpp + aiEarthReleaseAttack.h + aiElectricBall.cpp + aiElectricBall.h + aiElectricCable.cpp + aiElectricCable.h + aiEnemyAngry.cpp + aiEnemyAngry.h + aiEnemyAttackAndAway.cpp + aiEnemyAttackAndAway.h + aiEnemyBaseArrowAttack.cpp + aiEnemyBaseArrowAttack.h + aiEnemyBaseFindPlayer.cpp + aiEnemyBaseFindPlayer.h + aiEnemyBattle.cpp + aiEnemyBattle.h + aiEnemyBattleWithAreaCheck.cpp + aiEnemyBattleWithAreaCheck.h + aiEnemyCalledAppear.cpp + aiEnemyCalledAppear.h + aiEnemyChaseShield.cpp + aiEnemyChaseShield.h + aiEnemyChaseTargetAndAction.cpp + aiEnemyChaseTargetAndAction.h + aiEnemyChemicalPowerSelect.cpp + aiEnemyChemicalPowerSelect.h + aiEnemyChemicalSelect.cpp + aiEnemyChemicalSelect.h + aiEnemyChemTargetActionBase.cpp + aiEnemyChemTargetActionBase.h + aiEnemyChemTargetAction.cpp + aiEnemyChemTargetAction.h + aiEnemyConfuse.cpp + aiEnemyConfuse.h + aiEnemyCutRope.cpp + aiEnemyCutRope.h + aiEnemyDefaultReaction.cpp + aiEnemyDefaultReaction.h + aiEnemyDemoSumonRecgTgt.cpp + aiEnemyDemoSumonRecgTgt.h + aiEnemyEscape.cpp + aiEnemyEscape.h + aiEnemyEscapeMove.cpp + aiEnemyEscapeMove.h + aiEnemyEscapeRoot.cpp + aiEnemyEscapeRoot.h + aiEnemyFeintBattle.cpp + aiEnemyFeintBattle.h + aiEnemyFindBadStatusFriend.cpp + aiEnemyFindBadStatusFriend.h + aiEnemyFindHorseRideTarget.cpp + aiEnemyFindHorseRideTarget.h + aiEnemyFindShootable.cpp + aiEnemyFindShootable.h + aiEnemyFortressChat.cpp + aiEnemyFortressChat.h + aiEnemyFortressMgrTag.cpp + aiEnemyFortressMgrTag.h + aiEnemyFortressWait.cpp + aiEnemyFortressWait.h + aiEnemyFortressWatchKeepingWait.cpp + aiEnemyFortressWatchKeepingWait.h + aiEnemyHide.cpp + aiEnemyHideGrass.cpp + aiEnemyHideGrass.h + aiEnemyHide.h + aiEnemyHideShootingBattle.cpp + aiEnemyHideShootingBattle.h + aiEnemyHorseRide.cpp + aiEnemyHorseRide.h + aiEnemyLifeSelect.cpp + aiEnemyLifeSelect.h + aiEnemyLifted.cpp + aiEnemyLifted.h + aiEnemyLiftShootItem.cpp + aiEnemyLiftShootItem.h + aiEnemyLost.cpp + aiEnemyLost.h + aiEnemyMimicrySelect.cpp + aiEnemyMimicrySelect.h + aiEnemyMoveBattle.cpp + aiEnemyMoveBattle.h + aiEnemyMoveToGround.cpp + aiEnemyMoveToGround.h + aiEnemyNoiseTarget.cpp + aiEnemyNoiseTarget.h + aiEnemyNormal.cpp + aiEnemyNormal.h + aiEnemyNoticeActiveEnemy.cpp + aiEnemyNoticeActiveEnemy.h + aiEnemyNotice.cpp + aiEnemyNoticeFearfulLastAttacker.cpp + aiEnemyNoticeFearfulLastAttacker.h + aiEnemyNoticeFearfulTarget.cpp + aiEnemyNoticeFearfulTarget.h + aiEnemyNotice.h + aiEnemyNoticeLimit.cpp + aiEnemyNoticeLimit.h + aiEnemyNoticeSound.cpp + aiEnemyNoticeSound.h + aiEnemyNoticeSoundSensitive.cpp + aiEnemyNoticeSoundSensitive.h + aiEnemyNoticeSoundSensitiveTimer.cpp + aiEnemyNoticeSoundSensitiveTimer.h + aiEnemyNoticeSoundWithUI.cpp + aiEnemyNoticeSoundWithUI.h + aiEnemyNoticeTerror.cpp + aiEnemyNoticeTerror.h + aiEnemyPermitAttackSelect.cpp + aiEnemyPermitAttackSelect.h + aiEnemyPursuingArrowBattle.cpp + aiEnemyPursuingArrowBattle.h + aiEnemyPursuingAttackCheck.cpp + aiEnemyPursuingAttackCheck.h + aiEnemyPursuingBattle.cpp + aiEnemyPursuingBattle.h + aiEnemyRandomRepeatSideStep.cpp + aiEnemyRandomRepeatSideStep.h + aiEnemyRangeKeepMove.cpp + aiEnemyRangeKeepMove.h + aiEnemyRangeKeepSwimMove.cpp + aiEnemyRangeKeepSwimMove.h + aiEnemyRecognizeTargetBase.cpp + aiEnemyRecognizeTargetBase.h + aiEnemyRecognizeTarget.cpp + aiEnemyRecognizeTarget.h + aiEnemyRestraintCheckBattle.cpp + aiEnemyRestraintCheckBattle.h + aiEnemyReturnSelect.cpp + aiEnemyReturnSelect.h + aiEnemyRoam.cpp + aiEnemyRoam.h + aiEnemyRoamSelect.cpp + aiEnemyRoamSelect.h + aiEnemyRoamViewItem.cpp + aiEnemyRoamViewItem.h + aiEnemyRoot.cpp + aiEnemyRoot.h + aiEnemySearchHorse.cpp + aiEnemySearchHorse.h + aiEnemySearchShieldItemFindPlayer.cpp + aiEnemySearchShieldItemFindPlayer.h + aiEnemyShieldSearchOrBattle.cpp + aiEnemyShieldSearchOrBattle.h + aiEnemyShootAttackExplosives.cpp + aiEnemyShootAttackExplosives.h + aiEnemySittingTogether.cpp + aiEnemySittingTogether.h + aiEnemySkyArrowAttack.cpp + aiEnemySkyArrowAttack.h + aiEnemySomeIgniteBattle.cpp + aiEnemySomeIgniteBattle.h + aiEnemySyncAttack.cpp + aiEnemySyncAttack.h + aiEnemyTargetGearSelect.cpp + aiEnemyTargetGearSelect.h + aiEnemyTargetInAreaSelect.cpp + aiEnemyTargetInAreaSelect.h + aiEnemyTargetInSightSelect.cpp + aiEnemyTargetInSightSelect.h + aiEnemyTimelineAI.cpp + aiEnemyTimelineAI.h + aiEnemyTired.cpp + aiEnemyTired.h + aiEnemyTreeWeaponSearchOrBattle.cpp + aiEnemyTreeWeaponSearchOrBattle.h + aiEnemyVacuumBombSelectBase.cpp + aiEnemyVacuumBombSelectBase.h + aiEnemyVacuumBombSelect.cpp + aiEnemyVacuumBombSelect.h + aiEnemyVacuumChangeItemSelect.cpp + aiEnemyVacuumChangeItemSelect.h + aiEnemyVacuumWeaponTypeSelect.cpp + aiEnemyVacuumWeaponTypeSelect.h + aiEnemyWaitViewItem.cpp + aiEnemyWaitViewItem.h + aiEnemyWarnNoticeEndChase.cpp + aiEnemyWarnNoticeEndChase.h + aiEnemyWarnNoticeSelect.cpp + aiEnemyWarnNoticeSelect.h + aiEnemyWatchKeepingWait.cpp + aiEnemyWatchKeepingWait.h + aiEnterFromResetSelect.cpp + aiEnterFromResetSelect.h + aiEnvSeEmitPointRootAI.cpp + aiEnvSeEmitPointRootAI.h + aiEquipConditionSelect.cpp + aiEquipConditionSelect.h + aiEquipHaveSelector.cpp + aiEquipHaveSelector.h + aiEquipShieldEnemySearchWeapon.cpp + aiEquipShieldEnemySearchWeapon.h + aiEquipStand.cpp + aiEquipStand.h + aiEscapeFromTargetFront.cpp + aiEscapeFromTargetFront.h + aiEscapeFromTargetFrontRandomDir.cpp + aiEscapeFromTargetFrontRandomDir.h + aiEscapeOppositeToTargetInWater.cpp + aiEscapeOppositeToTargetInWater.h + aiEscapeOrWaitSelect.cpp + aiEscapeOrWaitSelect.h + aiEternalPlayerTarget.cpp + aiEternalPlayerTarget.h + aiEventTagRootAI.cpp + aiEventTagRootAI.h + aiEventTimeRoot.cpp + aiEventTimeRoot.h + aiExceededImpulseCheck.cpp + aiExceededImpulseCheck.h + aiExplodeCheck.cpp + aiExplodeCheck.h + aiFirstSelect.cpp + aiFirstSelect.h + aiFishGoToAndNibble.cpp + aiFishGoToAndNibble.h + aiFishRoot.cpp + aiFishRoot.h + aiFishSafeReturn.cpp + aiFishSafeReturn.h + aiFixableLiftable.cpp + aiFixableLiftable.h + aiFldObjDlcHeroMapRelief.cpp + aiFldObjDlcHeroMapRelief.h + aiFldObjIvyBurnRoot.cpp + aiFldObjIvyBurnRoot.h + aiFlyingEnemyBackKeepMove.cpp + aiFlyingEnemyBackKeepMove.h + aiFlyingEnemyDiagonallyKeepMove.cpp + aiFlyingEnemyDiagonallyKeepMove.h + aiFlyingEnemyFindPlayer.cpp + aiFlyingEnemyFindPlayer.h + aiFlyingEnemyFrontKeepMove.cpp + aiFlyingEnemyFrontKeepMove.h + aiFlyingEnemyKeepMove.cpp + aiFlyingEnemyKeepMove.h + aiFlyingEnemySideKeepMove.cpp + aiFlyingEnemySideKeepMove.h + aiFlyInsectRoam.cpp + aiFlyInsectRoam.h + aiFlyMoveToTarget.cpp + aiFlyMoveToTarget.h + aiForbidDoubleNoticeSelect.cpp + aiForbidDoubleNoticeSelect.h + aiForestGiantBattle.cpp + aiForestGiantBattle.h + aiForestGiantBattleMove.cpp + aiForestGiantBattleMove.h + aiForestGiantChanceWait.cpp + aiForestGiantChanceWait.h + aiForestGiantClosestAttackSelect.cpp + aiForestGiantClosestAttackSelect.h + aiForestGiantFindPlayer.cpp + aiForestGiantFindPlayer.h + aiForestGiantNormal.cpp + aiForestGiantNormal.h + aiForestGiantNoticeSound.cpp + aiForestGiantNoticeSound.h + aiForestGiantReaction.cpp + aiForestGiantReaction.h + aiForestGiantRecognizeTarget.cpp + aiForestGiantRecognizeTarget.h + aiForestGiantRoam.cpp + aiForestGiantRoam.h + aiForestGiantRoot.cpp + aiForestGiantRoot.h + aiForestGiantStoneShootBattle.cpp + aiForestGiantStoneShootBattle.h + aiFork2AI.cpp + aiFork2AI.h + aiFork2AIUpperLowerBody.cpp + aiFork2AIUpperLowerBody.h + aiFork3AI.cpp + aiFork3AI.h + aiFork4AI.cpp + aiFork4AI.h + aiFork5AI.cpp + aiFork5AI.h + aiFork6AI.cpp + aiFork6AI.h + aiForkActionAndJoin.cpp + aiForkActionAndJoin.h + aiForkAI.cpp + aiForkAI.h + aiForkBeastGanonRoot.cpp + aiForkBeastGanonRoot.h + aiForSaleOrNot.cpp + aiForSaleOrNot.h + aiFreezeInWaterSelect.cpp + aiFreezeInWaterSelect.h + aiFriendCallAction.cpp + aiFriendCallAction.h + aiFromPopPoolDamageSelect.cpp + aiFromPopPoolDamageSelect.h + aiGambleTreasureBoxRoot.cpp + aiGambleTreasureBoxRoot.h + aiGameDataFlagSelector.cpp + aiGameDataFlagSelector.h + aiGanonApproachOnFloorRoot.cpp + aiGanonApproachOnFloorRoot.h + aiGanonApproachOnWallRoot.cpp + aiGanonApproachOnWallRoot.h + aiGanonBattleOnFloorRoot.cpp + aiGanonBattleOnFloorRoot.h + aiGanonBattleOnWallRoot.cpp + aiGanonBattleOnWallRoot.h + aiGanonBattleRoot.cpp + aiGanonBattleRoot.h + aiGanonBeamOnFloor.cpp + aiGanonBeamOnFloor.h + aiGanonBeamOnWall.cpp + aiGanonBeamOnWall.h + aiGanonBeastDying.cpp + aiGanonBeastDying.h + aiGanonBeastMoveSelect.cpp + aiGanonBeastMoveSelect.h + aiGanonBeastReaction.cpp + aiGanonBeastReaction.h + aiGanonBeastRoot.cpp + aiGanonBeastRoot.h + aiGanonBeastStairState.cpp + aiGanonBeastStairState.h + aiGanonBeastSufferChanger.cpp + aiGanonBeastSufferChanger.h + aiGanonBeastWait.cpp + aiGanonBeastWait.h + aiGanonDemoMoveSeqTwoAction.cpp + aiGanonDemoMoveSeqTwoAction.h + aiGanonFarAttackRootOnWall.cpp + aiGanonFarAttackRootOnWall.h + aiGanonGrudgeNormal.cpp + aiGanonGrudgeNormal.h + aiGanonNearAttackOnFloorRoot.cpp + aiGanonNearAttackOnFloorRoot.h + aiGanonNormalRoot.cpp + aiGanonNormalRoot.h + aiGanonReaction.cpp + aiGanonReaction.h + aiGanonRecognizeRoot.cpp + aiGanonRecognizeRoot.h + aiGanonShockRoot.cpp + aiGanonShockRoot.h + aiGanonStateChangeRoot.cpp + aiGanonStateChangeRoot.h + aiGanonThrowActorRoot.cpp + aiGanonThrowActorRoot.h + aiGanonThrowMultiActorRoot.cpp + aiGanonThrowMultiActorRoot.h + aiGanonWeaponAttackOnFloor.cpp + aiGanonWeaponAttackOnFloor.h + aiGearRangeSelect.cpp + aiGearRangeSelect.h + aiGelEnemyReaction.cpp + aiGelEnemyReaction.h + aiGerudoHeroSoulGiftRoot.cpp + aiGerudoHeroSoulGiftRoot.h + aiGerudoQueenBattle.cpp + aiGerudoQueenBattle.h + aiGetItemBrightBow.cpp + aiGetItemBrightBow.h + aiGetItemNormal.cpp + aiGetItemNormal.h + aiGiantArmorAsWeakPoint.cpp + aiGiantArmorAsWeakPoint.h + aiGiantArmorRoot.cpp + aiGiantArmorRoot.h + aiGiantEarthReleaseAttack.cpp + aiGiantEarthReleaseAttack.h + aiGiantEscapeFromDamageWater.cpp + aiGiantEscapeFromDamageWater.h + aiGiantNavMoveTarget.cpp + aiGiantNavMoveTarget.h + aiGiantNavMoveWithFirstAction.cpp + aiGiantNavMoveWithFirstAction.h + aiGiantRoamSelect.cpp + aiGiantRoamSelect.h + aiGiantSleepNormal.cpp + aiGiantSleepNormal.h + aiGiantSleepReaction.cpp + aiGiantSleepReaction.h + aiGiantStoneShootAngrySelect.cpp + aiGiantStoneShootAngrySelect.h + aiGolemChemicalResetSelect.cpp + aiGolemChemicalResetSelect.h + aiGolemChemicalVanishedSelect.cpp + aiGolemChemicalVanishedSelect.h + aiGolemClimbedSelect.cpp + aiGolemClimbedSelect.h + aiGolemClimbedTimeSelect.cpp + aiGolemClimbedTimeSelect.h + aiGolemFindPlayer.cpp + aiGolemFindPlayer.h + aiGolemFireREnemyBattle.cpp + aiGolemFireREnemyBattle.h + aiGolemNormal.cpp + aiGolemNormal.h + aiGolemNoticeWorry.cpp + aiGolemNoticeWorry.h + aiGolemPartRoot.cpp + aiGolemPartRoot.h + aiGolemPartsSelect.cpp + aiGolemPartsSelect.h + aiGolemReaction.cpp + aiGolemReaction.h + aiGolemRootBase.cpp + aiGolemRootBase.h + aiGolemRoot.cpp + aiGolemRoot.h + aiGolemRWeakPointRoot.cpp + aiGolemRWeakPointRoot.h + aiGolemSleepNormal.cpp + aiGolemSleepNormal.h + aiGolemSleepTypeSelect.cpp + aiGolemSleepTypeSelect.h + aiGolemWeakPointRoot.cpp + aiGolemWeakPointRoot.h + aiGolfBallRoot.cpp + aiGolfBallRoot.h + aiGoronCannonBase.cpp + aiGoronCannonBase.h + aiGoronCannon.cpp + aiGoronCannon.h + aiGoronHeroDescendentRoot.cpp + aiGoronHeroDescendentRoot.h + aiGoronHeroSoulGiftRoot.cpp + aiGoronHeroSoulGiftRoot.h + aiGroundAngleSelect.cpp + aiGroundAngleSelect.h + aiGroundHitSelect.cpp + aiGroundHitSelect.h + aiGrudgeEyeball.cpp + aiGrudgeEyeball.h + aiGuardAndRevenge.cpp + aiGuardAndRevenge.h + aiGuardFlagSelect.cpp + aiGuardFlagSelect.h + aiGuardFrequencySelect.cpp + aiGuardFrequencySelect.h + aiGuardianAI.cpp + aiGuardianAI.h + aiGuardianBattleBeamAttack.cpp + aiGuardianBattleBeamAttack.h + aiGuardianBeamAttackBase.cpp + aiGuardianBeamAttackBase.h + aiGuardianBeamAttack.cpp + aiGuardianBeamAttack.h + aiGuardianBeam.cpp + aiGuardianBeam.h + aiGuardianBezierRailMove.cpp + aiGuardianBezierRailMove.h + aiGuardianChase.cpp + aiGuardianChase.h + aiGuardianCloseBattle.cpp + aiGuardianCloseBattle.h + aiGuardianDown.cpp + aiGuardianDown.h + aiGuardianMini2ndBattleAttack.cpp + aiGuardianMini2ndBattleAttack.h + aiGuardianMini2ndBattle.cpp + aiGuardianMini2ndBattle.h + aiGuardianMiniBattle.cpp + aiGuardianMiniBattle.h + aiGuardianMiniBattleStateSelect.cpp + aiGuardianMiniBattleStateSelect.h + aiGuardianMiniBeamAttack.cpp + aiGuardianMiniBeamAttack.h + aiGuardianMiniBeamAttackMove.cpp + aiGuardianMiniBeamAttackMove.h + aiGuardianMiniBeamAttackNoWait.cpp + aiGuardianMiniBeamAttackNoWait.h + aiGuardianMiniBeam.cpp + aiGuardianMiniBeam.h + aiGuardianMiniBeamToExplosives.cpp + aiGuardianMiniBeamToExplosives.h + aiGuardianMiniBlownOff.cpp + aiGuardianMiniBlownOff.h + aiGuardianMiniChangeWeapon.cpp + aiGuardianMiniChangeWeapon.h + aiGuardianMiniFinalBattle.cpp + aiGuardianMiniFinalBattle.h + aiGuardianMiniFindPlayer.cpp + aiGuardianMiniFindPlayer.h + aiGuardianMiniGroggy.cpp + aiGuardianMiniGroggy.h + aiGuardianMiniGuardSelect.cpp + aiGuardianMiniGuardSelect.h + aiGuardianMiniNoWeaponSelect.cpp + aiGuardianMiniNoWeaponSelect.h + aiGuardianMiniOnNoNavMesh.cpp + aiGuardianMiniOnNoNavMesh.h + aiGuardianMiniRangeKeepMove.cpp + aiGuardianMiniRangeKeepMove.h + aiGuardianMiniReaction.cpp + aiGuardianMiniReaction.h + aiGuardianMiniRecognizeTarget.cpp + aiGuardianMiniRecognizeTarget.h + aiGuardianMiniRollingAttackMove.cpp + aiGuardianMiniRollingAttackMove.h + aiGuardianMiniRoot.cpp + aiGuardianMiniRoot.h + aiGuardianMiniTargetOnScalffold.cpp + aiGuardianMiniTargetOnScalffold.h + aiGuardianMiniTransformSelect.cpp + aiGuardianMiniTransformSelect.h + aiGuardianMiniViewWait.cpp + aiGuardianMiniViewWait.h + aiGuardianRoam.cpp + aiGuardianRoam.h + aiGuardianRoot.cpp + aiGuardianRoot.h + aiGuardianTargetLost.cpp + aiGuardianTargetLost.h + aiGuardianWait.cpp + aiGuardianWait.h + aiGuardNearTarget.cpp + aiGuardNearTarget.h + aiGyroActivateTerminal.cpp + aiGyroActivateTerminal.h + aiHangedLamp.cpp + aiHangedLamp.h + aiHasPreActorSelect.cpp + aiHasPreActorSelect.h + aiHaveNoWeaponSelector.cpp + aiHaveNoWeaponSelector.h + aiHeightSelectTwoAction.cpp + aiHeightSelectTwoAction.h + aiHeroSoulGiftRoot.cpp + aiHeroSoulGiftRoot.h + aiHiddenKorokRoot.cpp + aiHiddenKorokRoot.h + aiHiddenOctarockFindPlayer.cpp + aiHiddenOctarockFindPlayer.h + aiHiddenOctarockNormal.cpp + aiHiddenOctarockNormal.h + aiHiddenOctarockSearchTarget.cpp + aiHiddenOctarockSearchTarget.h + aiHomePosDistanceSelector.cpp + aiHomePosDistanceSelector.h + aiHorseCheckLineOfSightSelectorBase.cpp + aiHorseCheckLineOfSightSelectorBase.h + aiHorseCheckLineOfSightSelector.cpp + aiHorseCheckLineOfSightSelector.h + aiHorse.cpp + aiHorseDamageTypeSelect.cpp + aiHorseDamageTypeSelect.h + aiHorseEscapeRouteRailAI.cpp + aiHorseEscapeRouteRailAI.h + aiHorseFollow.cpp + aiHorseFollow.h + aiHorseGoToEatAI.cpp + aiHorseGoToEatAI.h + aiHorse.h + aiHorseLoopTargetAndWaitAI.cpp + aiHorseLoopTargetAndWaitAI.h + aiHorseLoopTarget.cpp + aiHorseLoopTarget.h + aiHorseMoveToPlayer.cpp + aiHorseMoveToPlayer.h + aiHorseNatureSelectAI.cpp + aiHorseNatureSelectAI.h + aiHorseNotRidden.cpp + aiHorseNotRidden.h + aiHorsePrevRiddenStatusSelector.cpp + aiHorsePrevRiddenStatusSelector.h + aiHorseReins.cpp + aiHorseReins.h + aiHorseRiddenAI.cpp + aiHorseRiddenAI.h + aiHorseRiddenByEnemyAI.cpp + aiHorseRiddenByEnemyAI.h + aiHorseRiddenByNPCBase.cpp + aiHorseRiddenByNPCBase.h + aiHorseRiddenByNPC.cpp + aiHorseRiddenByNPC.h + aiHorseRideChargeAttack.cpp + aiHorseRideChargeAttack.h + aiHorseRideChaseBattleAttackMove.cpp + aiHorseRideChaseBattleAttackMove.h + aiHorseRideChaseBattleMoveBase.cpp + aiHorseRideChaseBattleMoveBase.h + aiHorseRideChaseBattleMove.cpp + aiHorseRideChaseBattleMove.h + aiHorseRideDamagedSelector.cpp + aiHorseRideDamagedSelector.h + aiHorseRideEnemyBattle.cpp + aiHorseRideEnemyBattle.h + aiHorseRideEnemyFindPlayer.cpp + aiHorseRideEnemyFindPlayer.h + aiHorseRideEnemyNormal.cpp + aiHorseRideEnemyNormal.h + aiHorseRideMoveTo.cpp + aiHorseRideMoveTo.h + aiHorseRideRangeKeepMove.cpp + aiHorseRideRangeKeepMove.h + aiHorseRideShooterFindPlayer.cpp + aiHorseRideShooterFindPlayer.h + aiHorseRideShootingEnemyBattle.cpp + aiHorseRideShootingEnemyBattle.h + aiHorseRideTurn.cpp + aiHorseRideTurn.h + aiHorseWanderAI.cpp + aiHorseWanderAI.h + aiIAIAttack.cpp + aiIAIAttack.h + aiIbutsuWaterFallRoot.cpp + aiIbutsuWaterFallRoot.h + aiIceEnemyFeintBattle.cpp + aiIceEnemyFeintBattle.h + aiIceMakerBlock.cpp + aiIceMakerBlock.h + aiIncredibleAction.cpp + aiIncredibleAction.h + aiInDemoSelect.cpp + aiInDemoSelect.h + aiInForceEnemyLostAreaSelect.cpp + aiInForceEnemyLostAreaSelect.h + aiInitFromInCarryBoxSelect.cpp + aiInitFromInCarryBoxSelect.h + aiInsectEscape.cpp + aiInsectEscape.h + aiInsectFairyRoot.cpp + aiInsectFairyRoot.h + aiInsectRoam.cpp + aiInsectRoam.h + aiInsectRoot.cpp + aiInsectRoot.h + aiInTerritorySelector.cpp + aiInTerritorySelector.h + aiInvincibleHiddenOctarock.cpp + aiInvincibleHiddenOctarock.h + aiInvisibleKorokRailMove.cpp + aiInvisibleKorokRailMove.h + aiInWaterKeepSelect.cpp + aiInWaterKeepSelect.h + aiInWaterSelect.cpp + aiInWaterSelect.h + aiIsPlacementAreaEnemy.cpp + aiIsPlacementAreaEnemy.h + aiItemAmiiboRoot.cpp + aiItemAmiiboRoot.h + aiItemConductor.cpp + aiItemConductor.h + aiItemOnTree.cpp + aiItemOnTree.h + aiItemRoot.cpp + aiItemRoot.h + aiJumpAttack.cpp + aiJumpAttack.h + aiJustAvoidFinishWait.cpp + aiJustAvoidFinishWait.h + aiKakarikoKokkoTimeline.cpp + aiKakarikoKokkoTimeline.h + aiKeepBackSelect.cpp + aiKeepBackSelect.h + aiKeeseDieSelect.cpp + aiKeeseDieSelect.h + aiKeeseHangOnCeil.cpp + aiKeeseHangOnCeil.h + aiKeeseNormal.cpp + aiKeeseNormal.h + aiKeeseRoam.cpp + aiKeeseRoam.h + aiKeeseSwarmNormal.cpp + aiKeeseSwarmNormal.h + aiKeeseSwarmRoam.cpp + aiKeeseSwarmRoam.h + aiKeyLockedShutter.cpp + aiKeyLockedShutter.h + aiKokkoAngry.cpp + aiKokkoAngry.h + aiKokkoAngryTargetSelect.cpp + aiKokkoAngryTargetSelect.h + aiKokkoEscapeAI.cpp + aiKokkoEscapeAI.h + aiKokkoRoot.cpp + aiKokkoRoot.h + aiKorokAnswerResponceRoot.cpp + aiKorokAnswerResponceRoot.h + aiKorokFlowerColorRoot.cpp + aiKorokFlowerColorRoot.h + aiKorokFlowerRoot.cpp + aiKorokFlowerRoot.h + aiKorokGoalTimerRootAI.cpp + aiKorokGoalTimerRootAI.h + aiKorokPinWheelRoot.cpp + aiKorokPinWheelRoot.h + aiKorokPotRootAI.cpp + aiKorokPotRootAI.h + aiKorokRailMove.cpp + aiKorokRailMove.h + aiKorokStartStandRoot.cpp + aiKorokStartStandRoot.h + aiKorokStoneLift.cpp + aiKorokStoneLift.h + aiKorokTargetRailMove.cpp + aiKorokTargetRailMove.h + aiLandHumEnemyFindBait.cpp + aiLandHumEnemyFindBait.h + aiLandHumEnemyFindBaitWeapon.cpp + aiLandHumEnemyFindBaitWeapon.h + aiLandHumEnemyFindPlayer.cpp + aiLandHumEnemyFindPlayer.h + aiLandHumEnemyNormal.cpp + aiLandHumEnemyNormal.h + aiLandHumEnemyThrowWeapon.cpp + aiLandHumEnemyThrowWeapon.h + aiLandHumEnemyUnarmedBattle.cpp + aiLandHumEnemyUnarmedBattle.h + aiLandHumGourmandEnemyNormal.cpp + aiLandHumGourmandEnemyNormal.h + aiLandingChemicalBall.cpp + aiLandingChemicalBall.h + aiLargeCannonAttackRoot.cpp + aiLargeCannonAttackRoot.h + aiLargeEnemyFindPlayer.cpp + aiLargeEnemyFindPlayer.h + aiLastAttackerSelect.cpp + aiLastAttackerSelect.h + aiLastAttackerSpecialActionSelect.cpp + aiLastAttackerSpecialActionSelect.h + aiLastBossBeamAttackRoot.cpp + aiLastBossBeamAttackRoot.h + aiLastBossDemoWarpMove.cpp + aiLastBossDemoWarpMove.h + aiLastBossDemoWarpRoot.cpp + aiLastBossDemoWarpRoot.h + aiLastBossNormalWarpRoot.cpp + aiLastBossNormalWarpRoot.h + aiLastBossRailWarpRoot.cpp + aiLastBossRailWarpRoot.h + aiLastBossRoot.cpp + aiLastBossRoot.h + aiLastBossShieldBash.cpp + aiLastBossShieldBash.h + aiLastBossShootGaleArrowRoot.cpp + aiLastBossShootGaleArrowRoot.h + aiLastBossShootNormalArrowRoot.cpp + aiLastBossShootNormalArrowRoot.h + aiLastBossSwordWhirlSlash.cpp + aiLastBossSwordWhirlSlash.h + aiLastBossThunderRoot.cpp + aiLastBossThunderRoot.h + aiLastBossWeaponAttackRoot.cpp + aiLastBossWeaponAttackRoot.h + aiLeaderDistanceSelector.cpp + aiLeaderDistanceSelector.h + aiLeadToTarget.cpp + aiLeadToTarget.h + aiLeaveFromTarget.cpp + aiLeaveFromTarget.h + aiLifeChangeDemoCaller.cpp + aiLifeChangeDemoCaller.h + aiLifted.cpp + aiLifted.h + aiLimitedTimeredActorCreator.cpp + aiLimitedTimeredActorCreator.h + aiLineCheckTag.cpp + aiLineCheckTag.h + aiLinkageEnemyNormal.cpp + aiLinkageEnemyNormal.h + aiLinkTagCheck.cpp + aiLinkTagCheck.h + aiLizalfosBreathAttack.cpp + aiLizalfosBreathAttack.h + aiLOSFurthestHitPointFinder.cpp + aiLOSFurthestHitPointFinder.h + aiLumberjackFallenTree.cpp + aiLumberjackFallenTree.h + aiLumberjackTree.cpp + aiLumberjackTree.h + aiLynelArrowAttackSelectBase.cpp + aiLynelArrowAttackSelectBase.h + aiLynelArrowAttackSelect.cpp + aiLynelArrowAttackSelect.h + aiLynelArrowAttackSelectOnce.cpp + aiLynelArrowAttackSelectOnce.h + aiLynelArrowBattle.cpp + aiLynelArrowBattle.h + aiLynelAttackThroughMove.cpp + aiLynelAttackThroughMove.h + aiLynelBackStepFromTarget.cpp + aiLynelBackStepFromTarget.h + aiLynelBattle.cpp + aiLynelBattle.h + aiLynelChaseBattleMove.cpp + aiLynelChaseBattleMove.h + aiLynelCloseBattle.cpp + aiLynelCloseBattle.h + aiLynelDirSelect.cpp + aiLynelDirSelect.h + aiLynelDistanceLostCheck.cpp + aiLynelDistanceLostCheck.h + aiLynelEscapeFromTarget.cpp + aiLynelEscapeFromTarget.h + aiLynelFindPlayer.cpp + aiLynelFindPlayer.h + aiLynelLineMoveAttack.cpp + aiLynelLineMoveAttack.h + aiLynelNavMoveNoStop.cpp + aiLynelNavMoveNoStop.h + aiLynelNavMoveTarget.cpp + aiLynelNavMoveTarget.h + aiLynelNormal.cpp + aiLynelNormal.h + aiLynelNoticeAttacked.cpp + aiLynelNoticeAttacked.h + aiLynelNoticeTerror.cpp + aiLynelNoticeTerror.h + aiLynelOnNoNavMeshPos.cpp + aiLynelOnNoNavMeshPos.h + aiLynelRecognizeTarget.cpp + aiLynelRecognizeTarget.h + aiLynelRepeatAttack.cpp + aiLynelRepeatAttack.h + aiLynelRoam.cpp + aiLynelRoam.h + aiLynelRodeo.cpp + aiLynelRodeo.h + aiLynelRoot.cpp + aiLynelRoot.h + aiLynelTackleMove.cpp + aiLynelTackleMove.h + aiLynelThreeBreathAttack.cpp + aiLynelThreeBreathAttack.h + aiLynelWarp.cpp + aiLynelWarp.h + aiMagneGearRoot.cpp + aiMagneGearRoot.h + aiMagneGrabbedPartsRangeSelector.cpp + aiMagneGrabbedPartsRangeSelector.h + aiMagneGrabSelect.cpp + aiMagneGrabSelect.h + aiMagneShaftRootBase.cpp + aiMagneShaftRootBase.h + aiMagneShaftRoot.cpp + aiMagneShaftRoot.h + aiMagneSliderBlockRootThunder.cpp + aiMagneSliderBlockRootThunder.h + aiMagneStickRoot.cpp + aiMagneStickRoot.h + aiMagnetglove.cpp + aiMagnetglove.h + aiMainFieldDungeonSelect.cpp + aiMainFieldDungeonSelect.h + aiMasquaradeSubTargetSelect.cpp + aiMasquaradeSubTargetSelect.h + aiMasterSwordBase100EnemyRoot.cpp + aiMasterSwordBase100EnemyRoot.h + aiMasterSwordRoot.cpp + aiMasterSwordRoot.h + aiMergedDungeonPartsRoot.cpp + aiMergedDungeonPartsRoot.h + aiMessageReceiveCheckBasic.cpp + aiMessageReceiveCheckBasic.h + aiMessageReceiveCheck.cpp + aiMessageReceiveCheckEveryFrame.cpp + aiMessageReceiveCheckEveryFrame.h + aiMessageReceiveCheck.h + aiMetalObjectBuried.cpp + aiMetalObjectBuried.h + aiMetalObjectFixed.cpp + aiMetalObjectFixed.h + aiMimicCliffStopEnemyNormalBase.cpp + aiMimicCliffStopEnemyNormalBase.h + aiMimicCliffStopEnemyNormal.cpp + aiMimicCliffStopEnemyNormal.h + aiMimicEnemyFindPlayer.cpp + aiMimicEnemyFindPlayer.h + aiMimicEnemyNormal.cpp + aiMimicEnemyNormal.h + aiMimicFlagSelect.cpp + aiMimicFlagSelect.h + aiMimicryResetCheck.cpp + aiMimicryResetCheck.h + aiMiniBeamAttack.cpp + aiMiniBeamAttack.h + aiMiniGolemLifted.cpp + aiMiniGolemLifted.h + aiMiniGolemReaction.cpp + aiMiniGolemReaction.h + aiMiniGolemRoot.cpp + aiMiniGolemRoot.h + aiMiniGolemSleep.cpp + aiMiniGolemSleep.h + aiMoonAI.cpp + aiMoonAI.h + aiMoonNameTag.cpp + aiMoonNameTag.h + aiMoriblinSpearBattle.cpp + aiMoriblinSpearBattle.h + aiMoriblinSpearNearBattle.cpp + aiMoriblinSpearNearBattle.h + aiMoriblinUnarmedBattle.cpp + aiMoriblinUnarmedBattle.h + aiMotorcycleRootBase.cpp + aiMotorcycleRootBase.h + aiMotorcycleRoot.cpp + aiMotorcycleRoot.h + aiMoveAndFreeFallGondola.cpp + aiMoveAndFreeFallGondola.h + aiMoveAroundTarget.cpp + aiMoveAroundTarget.h + aiMoveLOSFeedback.cpp + aiMoveLOSFeedback.h + aiMoveRemainsElectric.cpp + aiMoveRemainsElectric.h + aiMoveToCameraFrontXZ.cpp + aiMoveToCameraFrontXZ.h + aiMoveToTargetCollisionFeedback.cpp + aiMoveToTargetCollisionFeedback.h + aiNavMeshTurnAwayFromHitPos.cpp + aiNavMeshTurnAwayFromHitPos.h + aiNavMoveNearTarget.cpp + aiNavMoveNearTarget.h + aiNavMoveTargetClosestPoint.cpp + aiNavMoveTargetClosestPoint.h + aiNavMoveTarget.cpp + aiNavMoveTarget.h + aiNavMoveTargetWithJumpWater.cpp + aiNavMoveTargetWithJumpWater.h + aiNavViewMove.cpp + aiNavViewMove.h + aiNearCreateAppearTypeSelect.cpp + aiNearCreateAppearTypeSelect.h + aiNearCreateSelect.cpp + aiNearCreateSelect.h + aiNewMannequinRoot.cpp + aiNewMannequinRoot.h + aiNonPlayerHorseRide.cpp + aiNonPlayerHorseRide.h + aiNormalHumanEquipableShield.cpp + aiNormalHumanEquipableShield.h + aiNoticePartsRangeSelector.cpp + aiNoticePartsRangeSelector.h + aiNPCAlert.cpp + aiNPCAlert.h + aiNPCArtistRoot.cpp + aiNPCArtistRoot.h + aiNPCAttack.cpp + aiNPCAttack.h + aiNPCAttentionAI.cpp + aiNPCAttentionAI.h + aiNPCAvoid.cpp + aiNPCAvoid.h + aiNPCChasePlayerBlueFire.cpp + aiNPCChasePlayerBlueFire.h + aiNPCClerkRoot.cpp + aiNPCClerkRoot.h + aiNPCConfront.cpp + aiNPCConfrontEnemy.cpp + aiNPCConfrontEnemy.h + aiNPCConfront.h + aiNpcDemoRoot.cpp + aiNpcDemoRoot.h + aiNPCGerudoQueenRoot.cpp + aiNPCGerudoQueenRoot.h + aiNPCHeartsRoot.cpp + aiNPCHeartsRoot.h + aiNPCHorseRide.cpp + aiNPCHorseRide.h + aiNPCHorseRideWait.cpp + aiNPCHorseRideWait.h + aiNPCMamonoShopRoot.cpp + aiNPCMamonoShopRoot.h + aiNPCMove.cpp + aiNPCMove.h + aiNpcMoveToAnchor.cpp + aiNpcMoveToAnchor.h + aiNPCMoveToRailPoint.cpp + aiNPCMoveToRailPoint.h + aiNPCReaction.cpp + aiNPCReaction.h + aiNPCReturnAnchor.cpp + aiNPCReturnAnchor.h + aiNPCReturnRestPosRoot.cpp + aiNPCReturnRestPosRoot.h + aiNPCRoam.cpp + aiNPCRoam.h + aiNPCRoot.cpp + aiNPCRoot.h + aiNPCRunaway.cpp + aiNPCRunaway.h + aiNPCSearch.cpp + aiNPCSearch.h + aiNPCSurprised.cpp + aiNPCSurprised.h + aiNPCSuspend.cpp + aiNPCSuspend.h + aiNPCTalkBalloon.cpp + aiNPCTalkBalloon.h + aiNpcTebaRoot.cpp + aiNpcTebaRoot.h + aiNpcTebaTrainingRoot.cpp + aiNpcTebaTrainingRoot.h + aiNPCTerrorAI.cpp + aiNPCTerrorAI.h + aiNPCTimeline.cpp + aiNPCTimeline.h + aiNPCTravelBase.cpp + aiNPCTravelBase.h + aiNPCTravel.cpp + aiNPCTravelerRoot.cpp + aiNPCTravelerRoot.h + aiNPCTravel.h + aiNPCWander.cpp + aiNPCWander.h + aiNushiEscapeSelector.cpp + aiNushiEscapeSelector.h + aiNushiWarp.cpp + aiNushiWarp.h + aiOctarockBattle.cpp + aiOctarockBattle.h + aiOctarockEscape.cpp + aiOctarockEscape.h + aiOctarockHideEscape.cpp + aiOctarockHideEscape.h + aiOctarockOptionRoot.cpp + aiOctarockOptionRoot.h + aiOctarockReaction.cpp + aiOctarockReaction.h + aiOctarockRootBase.cpp + aiOctarockRootBase.h + aiOctarockRoot.cpp + aiOctarockRoot.h + aiOctarockServiceHideWait.cpp + aiOctarockServiceHideWait.h + aiOctarockWaterWait.cpp + aiOctarockWaterWait.h + aiOnCliffEnemyBattle.cpp + aiOnCliffEnemyBattle.h + aiOnCliffSurfaceSelect.cpp + aiOnCliffSurfaceSelect.h + aiOnCliffViewWait.cpp + aiOnCliffViewWait.h + aiOneMemoryMagicBattleBase.cpp + aiOneMemoryMagicBattleBase.h + aiOneMemoryMagicBattle.cpp + aiOneMemoryMagicBattle.h + aiOnEnterEventModeSelect.cpp + aiOnEnterEventModeSelect.h + aiOnNavFaceSelect.cpp + aiOnNavFaceSelect.h + aiOnRagdollSelect.cpp + aiOnRagdollSelect.h + aiOptionalWeaponAI.cpp + aiOptionalWeaponAI.h + aiOutOfScreen.cpp + aiOutOfScreen.h + aiPartHaveSelect.cpp + aiPartHaveSelect.h + aiPartsNoticeSelect.cpp + aiPartsNoticeSelect.h + aiPartsSleepSelect.cpp + aiPartsSleepSelect.h + aiPauseMenuPlayerRoot.cpp + aiPauseMenuPlayerRoot.h + aiPickShootItemRoot.cpp + aiPickShootItemRoot.h + aiPillarCrack.cpp + aiPillarCrack.h + aiPipeDrawing.cpp + aiPipeDrawing.h + aiPlayerAttack.cpp + aiPlayerAttack.h + aiPlayerBarrierBlow.cpp + aiPlayerBarrierBlow.h + aiPlayerBeetle.cpp + aiPlayerBeetle.h + aiPlayerCamera.cpp + aiPlayerCamera.h + aiPlayerCaught.cpp + aiPlayerCaught.h + aiPlayerClimb.cpp + aiPlayerClimb.h + aiPlayerCutJump.cpp + aiPlayerCutJump.h + aiPlayerDead.cpp + aiPlayerDead.h + aiPlayerDemoRoot.cpp + aiPlayerDemoRoot.h + aiPlayerGrab.cpp + aiPlayerGrab.h + aiPlayerItem.cpp + aiPlayerItem.h + aiPlayerLadder.cpp + aiPlayerLadder.h + aiPlayerNavDestinationMove.cpp + aiPlayerNavDestinationMove.h + aiPlayerNormal.cpp + aiPlayerNormal.h + aiPlayerRideHorse.cpp + aiPlayerRideHorse.h + aiPlayerRoot.cpp + aiPlayerRoot.h + aiPlayerSetTarget.cpp + aiPlayerSetTarget.h + aiPlayerSit.cpp + aiPlayerSit.h + aiPlayerSwim.cpp + aiPlayerSwim.h + aiPlayerWaterFall.cpp + aiPlayerWaterFall.h + aiPlayerZoraRide.cpp + aiPlayerZoraRide.h + aiPointWindTagRoot.cpp + aiPointWindTagRoot.h + aiPracticeGuardianMiniNormal.cpp + aiPracticeGuardianMiniNormal.h + aiPreSleepCheck.cpp + aiPreSleepCheck.h + aiPrevASEndSeq.cpp + aiPrevASEndSeq.h + aiPrevASOR2SelectTwo.cpp + aiPrevASOR2SelectTwo.h + aiPrevASSelect.cpp + aiPrevASSelect.h + aiPrevASSkipSeq.cpp + aiPrevASSkipSeq.h + aiPrevSomeASSelect.cpp + aiPrevSomeASSelect.h + aiPreyChemicalDeadReaction.cpp + aiPreyChemicalDeadReaction.h + aiPreyDeadCauseSelector.cpp + aiPreyDeadCauseSelector.h + aiPreyDead.cpp + aiPreyDead.h + aiPreyDefWanderAI.cpp + aiPreyDefWanderAI.h + aiPreyDropItemRoot.cpp + aiPreyDropItemRoot.h + aiPreyLookAtTarget.cpp + aiPreyLookAtTarget.h + aiPreyNormal.cpp + aiPreyNormal.h + aiPreyReaction.cpp + aiPreyReaction.h + aiPreyRoot.cpp + aiPreyRoot.h + aiPreyStun.cpp + aiPreyStun.h + aiPriestBossActorCloneRoot.cpp + aiPriestBossActorCloneRoot.h + aiPriestBossActorEnemyRoot.cpp + aiPriestBossActorEnemyRoot.h + aiPriestBossActorGiantFouthRoot.cpp + aiPriestBossActorGiantFouthRoot.h + aiPriestBossActorGiantRoot.cpp + aiPriestBossActorGiantRoot.h + aiPriestBossActorNormalMode.cpp + aiPriestBossActorNormalMode.h + aiPriestBossActorNormalRoot.cpp + aiPriestBossActorNormalRoot.h + aiPriestBossActorPhaseSecondStart.cpp + aiPriestBossActorPhaseSecondStart.h + aiPriestBossActorRoot.cpp + aiPriestBossActorRoot.h + aiPriestBossAfterImageRoot.cpp + aiPriestBossAfterImageRoot.h + aiPriestBossAttackGrave.cpp + aiPriestBossAttackGrave.h + aiPriestBossBananaMode.cpp + aiPriestBossBananaMode.h + aiPriestBossBeamExplode.cpp + aiPriestBossBeamExplode.h + aiPriestBossBlowoffDamageSelect.cpp + aiPriestBossBlowoffDamageSelect.h + aiPriestBossBlowoffReadyReaction.cpp + aiPriestBossBlowoffReadyReaction.h + aiPriestBossBowEquiped.cpp + aiPriestBossBowEquiped.h + aiPriestBossCircleFormationRush.cpp + aiPriestBossCircleFormationRush.h + aiPriestBossCircleFormationShoot.cpp + aiPriestBossCircleFormationShoot.h + aiPriestBossCloneBananaMode.cpp + aiPriestBossCloneBananaMode.h + aiPriestBossCloneBulletRoot.cpp + aiPriestBossCloneBulletRoot.h + aiPriestBossDamageTypeSelect.cpp + aiPriestBossDamageTypeSelect.h + aiPriestBossEyeBeam.cpp + aiPriestBossEyeBeamFourth.cpp + aiPriestBossEyeBeamFourth.h + aiPriestBossEyeBeam.h + aiPriestBossEyeBeamStandAim.cpp + aiPriestBossEyeBeamStandAim.h + aiPriestBossEyeBeamThird.cpp + aiPriestBossEyeBeamThird.h + aiPriestBossFastWarpAttack.cpp + aiPriestBossFastWarpAttack.h + aiPriestBossFormation.cpp + aiPriestBossFormation.h + aiPriestBossGiantDeadSelector.cpp + aiPriestBossGiantDeadSelector.h + aiPriestBossGiantDownSeq.cpp + aiPriestBossGiantDownSeq.h + aiPriestBossGiantEnemyRoot.cpp + aiPriestBossGiantEnemyRoot.h + aiPriestBossGiantReaction.cpp + aiPriestBossGiantReaction.h + aiPriestBossGiantStageRotate.cpp + aiPriestBossGiantStageRotate.h + aiPriestBossGiantStageRotRoot.cpp + aiPriestBossGiantStageRotRoot.h + aiPriestBossIAIAttack.cpp + aiPriestBossIAIAttack.h + aiPriestBossIronBall.cpp + aiPriestBossIronBall.h + aiPriestBossIronBallRoot.cpp + aiPriestBossIronBallRoot.h + aiPriestBossIronBallStageRotate.cpp + aiPriestBossIronBallStageRotate.h + aiPriestBossLineFormationAppear.cpp + aiPriestBossLineFormationAppear.h + aiPriestBossLineFormationFall.cpp + aiPriestBossLineFormationFall.h + aiPriestBossLineFormationRush.cpp + aiPriestBossLineFormationRush.h + aiPriestBossMakeClone.cpp + aiPriestBossMakeClone.h + aiPriestBossMetaAIRoot.cpp + aiPriestBossMetaAIRoot.h + aiPriestBossMeta.cpp + aiPriestBossMeta.h + aiPriestBossMode.cpp + aiPriestBossMode.h + aiPriestBossNormalMoveSelector.cpp + aiPriestBossNormalMoveSelector.h + aiPriestBossNormalQuickRecover.cpp + aiPriestBossNormalQuickRecover.h + aiPriestBossNormalReaction.cpp + aiPriestBossNormalReaction.h + aiPriestBossPhase.cpp + aiPriestBossPhaseFinish.cpp + aiPriestBossPhaseFinish.h + aiPriestBossPhaseFirst.cpp + aiPriestBossPhaseFirst.h + aiPriestBossPhaseFourth.cpp + aiPriestBossPhaseFourth.h + aiPriestBossPhase.h + aiPriestBossPhaseSecond.cpp + aiPriestBossPhaseSecond.h + aiPriestBossPhaseSelector.cpp + aiPriestBossPhaseSelector.h + aiPriestBossPhaseThird.cpp + aiPriestBossPhaseThird.h + aiPriestBossShadowCloneEnemyRoot.cpp + aiPriestBossShadowCloneEnemyRoot.h + aiPriestBossShadowClonesReaction.cpp + aiPriestBossShadowClonesReaction.h + aiPriestBossShadowCloneThrow.cpp + aiPriestBossShadowCloneThrow.h + aiPriestBossSlowWarpMove.cpp + aiPriestBossSlowWarpMove.h + aiPriestBossStageRotationSelector.cpp + aiPriestBossStageRotationSelector.h + aiPriestBossSynchroMode.cpp + aiPriestBossSynchroMode.h + aiPriestBossWalkAttack.cpp + aiPriestBossWalkAttack.h + aiPriestBossWarpToSafePos.cpp + aiPriestBossWarpToSafePos.h + aiPriestIronBallAttack.cpp + aiPriestIronBallAttack.h + aiPullOutTree.cpp + aiPullOutTree.h + aiRailMove.cpp + aiRailMove.h + aiRailMoveObject.cpp + aiRailMoveObject.h + aiRailMoveObjectOneWay.cpp + aiRailMoveObjectOneWay.h + aiRailMoveRandomIgnoreStop.cpp + aiRailMoveRandomIgnoreStop.h + aiRailMoveRemainsBGCamera.cpp + aiRailMoveRemainsBGCamera.h + aiRailMoveRemains.cpp + aiRailMoveRemains.h + aiRailMoveRndIgnrStopPlayAS.cpp + aiRailMoveRndIgnrStopPlayAS.h + aiRailMoveWithClose.cpp + aiRailMoveWithClose.h + aiRandomSelectThreeActionBase.cpp + aiRandomSelectThreeActionBase.h + aiRandomSelectThreeAction.cpp + aiRandomSelectThreeAction.h + aiRandomSelectTwoActionBase.cpp + aiRandomSelectTwoActionBase.h + aiRandomSelectTwoAction.cpp + aiRandomSelectTwoAction.h + aiRangeAttackSelect.cpp + aiRangeAttackSelect.h + aiRangeCheckSeqTwoAction.cpp + aiRangeCheckSeqTwoAction.h + aiRangeHeightSelectTwoAction.cpp + aiRangeHeightSelectTwoAction.h + aiRangeLineReachSelectTwoAction.cpp + aiRangeLineReachSelectTwoAction.h + aiRangeObstacleCheck.cpp + aiRangeObstacleCheck.h + aiRangeSelectAction.cpp + aiRangeSelectAction.h + aiRangeSelect.cpp + aiRangeSelect.h + aiRangeSelectThreeAction.cpp + aiRangeSelectThreeAction.h + aiRangeSelectTwoAction.cpp + aiRangeSelectTwoAction.h + aiRapidAttackAllowSelect.cpp + aiRapidAttackAllowSelect.h + aiReduceDistanceToTargetPos.cpp + aiReduceDistanceToTargetPos.h + aiReferenceNPCViewWithDynAS.cpp + aiReferenceNPCViewWithDynAS.h + aiReflectableBulletThrown.cpp + aiReflectableBulletThrown.h + aiReflectableEscape.cpp + aiReflectableEscape.h + aiReflectableIgnitedThrown.cpp + aiReflectableIgnitedThrown.h + aiReflectableThrown.cpp + aiReflectableThrown.h + aiRegistedActorNumTwoSelectBase.cpp + aiRegistedActorNumTwoSelectBase.h + aiRegistedActorNumTwoSelect.cpp + aiRegistedActorNumTwoSelect.h + aiRemainElectricCannonBeamAttack.cpp + aiRemainElectricCannonBeamAttack.h + aiRemainElectricCannonRootBase.cpp + aiRemainElectricCannonRootBase.h + aiRemainElectricCannonRoot.cpp + aiRemainElectricCannonRoot.h + aiRemainsElectricBGCamera.cpp + aiRemainsElectricBGCamera.h + aiRemainsElectricRoot.cpp + aiRemainsElectricRoot.h + aiRemainsFireBattleMove.cpp + aiRemainsFireBattleMove.h + aiRemainsFireBattleStepSelector.cpp + aiRemainsFireBattleStepSelector.h + aiRemainsFireDroneNormal.cpp + aiRemainsFireDroneNormal.h + aiRemainsFireRoot.cpp + aiRemainsFireRoot.h + aiRemainsLithograph.cpp + aiRemainsLithograph.h + aiRemainsRoot.cpp + aiRemainsRoot.h + aiRemainsWaterBattleRoot.cpp + aiRemainsWaterBattleRoot.h + aiRemainsWaterBulletController.cpp + aiRemainsWaterBulletController.h + aiRemainsWaterChaseBulletRoot.cpp + aiRemainsWaterChaseBulletRoot.h + aiRemainsWaterNormal.cpp + aiRemainsWaterNormal.h + aiRemainsWaterRoot.cpp + aiRemainsWaterRoot.h + aiRemainsWaterWeakPointRoot.cpp + aiRemainsWaterWeakPointRoot.h + aiRemainsWindBatteryAttack.cpp + aiRemainsWindBatteryAttack.h + aiRemainsWindBatteryRoot.cpp + aiRemainsWindBatteryRoot.h + aiRemainsWindRoot.cpp + aiRemainsWindRoot.h + aiRememberMesOneActorEnemyRoot.cpp + aiRememberMesOneActorEnemyRoot.h + aiRemoteBomb.cpp + aiRemoteBomb.h + aiRepeatByLargeDamage.cpp + aiRepeatByLargeDamage.h + aiRestLifeSelect.cpp + aiRestLifeSelect.h + aiRestreintTired.cpp + aiRestreintTired.h + aiReturnFromReactionSelect.cpp + aiReturnFromReactionSelect.h + aiReuseBulletPartsRoot.cpp + aiReuseBulletPartsRoot.h + aiRideHorseAI.cpp + aiRideHorseAI.h + aiRitoHeroSoulGiftRoot.cpp + aiRitoHeroSoulGiftRoot.h + aiRodEnemyFindPlayer.cpp + aiRodEnemyFindPlayer.h + aiRodRoot.cpp + aiRodRoot.h + aiRopeRoot.cpp + aiRopeRoot.h + aiRuinGuardianRoot.cpp + aiRuinGuardianRoot.h + aiRupeeRabbitNormal.cpp + aiRupeeRabbitNormal.h + aiSafeMoveAroundTarget.cpp + aiSafeMoveAroundTarget.h + aiSandfallWithSound.cpp + aiSandfallWithSound.h + aiSandwormAttackMove.cpp + aiSandwormAttackMove.h + aiSandwormBattle.cpp + aiSandwormBattle.h + aiSandwormBlownOff.cpp + aiSandwormBlownOff.h + aiSandwormCircleMoveTarget.cpp + aiSandwormCircleMoveTarget.h + aiSandwormFindTarget.cpp + aiSandwormFindTarget.h + aiSandwormLost.cpp + aiSandwormLost.h + aiSandwormNavSearchWait.cpp + aiSandwormNavSearchWait.h + aiSandwormNormalBase.cpp + aiSandwormNormalBase.h + aiSandwormNormal.cpp + aiSandwormNormal.h + aiSandwormNoticeSound.cpp + aiSandwormNoticeSound.h + aiSandwormReaction.cpp + aiSandwormReaction.h + aiSandwormRNormal.cpp + aiSandwormRNormal.h + aiSandwormRoam.cpp + aiSandwormRoam.h + aiSandwormRoot.cpp + aiSandwormRoot.h + aiSandwormRRoot.cpp + aiSandwormRRoot.h + aiSandwormStun.cpp + aiSandwormStun.h + aiSelfXRotSelector.cpp + aiSelfXRotSelector.h + aiSeqAnimalAttack.cpp + aiSeqAnimalAttack.h + aiSeqAtHitAction.cpp + aiSeqAtHitAction.h + aiSeqCloseDistTwoAction.cpp + aiSeqCloseDistTwoAction.h + aiSeqDynamicTimeredTwoAction.cpp + aiSeqDynamicTimeredTwoAction.h + aiSeqFirstPointTwo.cpp + aiSeqFirstPointTwo.h + aiSeqGroundHitAssassinBoss.cpp + aiSeqGroundHitAssassinBoss.h + aiSeqGroundHit.cpp + aiSeqGroundHit.h + aiSeqHiddenOctarockSearch.cpp + aiSeqHiddenOctarockSearch.h + aiSeqIfElseAction.cpp + aiSeqIfElseAction.h + aiSeqIfFailAction.cpp + aiSeqIfFailAction.h + aiSeqNextMessage.cpp + aiSeqNextMessage.h + aiSeqOctarockAttack.cpp + aiSeqOctarockAttack.h + aiSeqOctarockWigReaction.cpp + aiSeqOctarockWigReaction.h + aiSeqPredictOctarockAttack.cpp + aiSeqPredictOctarockAttack.h + aiSeqPursuit.cpp + aiSeqPursuit.h + aiSeqRandomRepeat.cpp + aiSeqRandomRepeat.h + aiSeqTargetTwoAction.cpp + aiSeqTargetTwoAction.h + aiSeqThreeAction.cpp + aiSeqThreeAction.h + aiSeqTimeredAction.cpp + aiSeqTimeredAction.h + aiSeqTimeredPlusRandomTwoAction.cpp + aiSeqTimeredPlusRandomTwoAction.h + aiSeqTimeredTwoAction.cpp + aiSeqTimeredTwoAction.h + aiSeqTrgPartsNotice.cpp + aiSeqTrgPartsNotice.h + aiSeqTwoAction.cpp + aiSeqTwoAction.h + aiSeqTwoLineReachableTargetActionBase.cpp + aiSeqTwoLineReachableTargetActionBase.h + aiSeqTwoLineReachableTargetAction.cpp + aiSeqTwoLineReachableTargetAction.h + aiSeqTwoWeakPointOnFirstDo.cpp + aiSeqTwoWeakPointOnFirstDo.h + aiSetPartBind.cpp + aiSetPartBind.h + aiSetTargetPosForAngryKokko.cpp + aiSetTargetPosForAngryKokko.h + aiSetTargetPosForFlyThroughMove.cpp + aiSetTargetPosForFlyThroughMove.h + aiSetTargetPosToPlayer.cpp + aiSetTargetPosToPlayer.h + aiShootingEnemyBattle.cpp + aiShootingEnemyBattle.h + aiShootingEnemyFindPlayer.cpp + aiShootingEnemyFindPlayer.h + aiShootingStarRoot.cpp + aiShootingStarRoot.h + aiShutterFence.cpp + aiShutterFence.h + aiSignaledSpotBgmTrigger.cpp + aiSignaledSpotBgmTrigger.h + aiSignalFlowchartRootAI.cpp + aiSignalFlowchartRootAI.h + aiSignalSendingMagneStickAcceptor.cpp + aiSignalSendingMagneStickAcceptor.h + aiSimpleASBridge.cpp + aiSimpleASBridge.h + aiSimpleEnemyNormal.cpp + aiSimpleEnemyNormal.h + aiSimpleEscapeFromTarget.cpp + aiSimpleEscapeFromTarget.h + aiSimpleKokkoRoot.cpp + aiSimpleKokkoRoot.h + aiSimpleLiftable.cpp + aiSimpleLiftableDLC.cpp + aiSimpleLiftableDLC.h + aiSimpleLiftable.h + aiSimpleLineBeam.cpp + aiSimpleLineBeam.h + aiSimpleShootingEnemyFindPlayer.cpp + aiSimpleShootingEnemyFindPlayer.h + aiSimpleWildlifeRoot.cpp + aiSimpleWildlifeRoot.h + aiSiteBossApproachRoot.cpp + aiSiteBossApproachRoot.h + aiSiteBossArrowRainAttack.cpp + aiSiteBossArrowRainAttack.h + aiSiteBossAttackRoot.cpp + aiSiteBossAttackRoot.h + aiSiteBossBigFlameBall.cpp + aiSiteBossBigFlameBall.h + aiSiteBossBlowOff.cpp + aiSiteBossBlowOff.h + aiSiteBossBowChildDeviceRoot.cpp + aiSiteBossBowChildDeviceRoot.h + aiSiteBossBowRoot.cpp + aiSiteBossBowRoot.h + aiSiteBossChemicalProjectile.cpp + aiSiteBossChemicalProjectile.h + aiSiteBossFlameBall.cpp + aiSiteBossFlameBall.h + aiSiteBossGaleArrowRoot.cpp + aiSiteBossGaleArrowRoot.h + aiSiteBossIceSplinterRoot.cpp + aiSiteBossIceSplinterRoot.h + aiSiteBossLswordAttackRoot.cpp + aiSiteBossLswordAttackRoot.h + aiSiteBossLswordFireBallRoot.cpp + aiSiteBossLswordFireBallRoot.h + aiSiteBossLswordRoot.cpp + aiSiteBossLswordRoot.h + aiSiteBossLswordTornadoRoot.cpp + aiSiteBossLswordTornadoRoot.h + aiSiteBossNormalRoot.cpp + aiSiteBossNormalRoot.h + aiSiteBossPierceBulletAttack.cpp + aiSiteBossPierceBulletAttack.h + aiSiteBossReaction.cpp + aiSiteBossReaction.h + aiSiteBossRecognizeRootBase.cpp + aiSiteBossRecognizeRootBase.h + aiSiteBossRecognizeRoot.cpp + aiSiteBossRecognizeRoot.h + aiSiteBossReflectArrowRoot.cpp + aiSiteBossReflectArrowRoot.h + aiSiteBossRoot.cpp + aiSiteBossRoot.h + aiSiteBossShootArrowRoot.cpp + aiSiteBossShootArrowRoot.h + aiSiteBossShootNormalArrowRoot.cpp + aiSiteBossShootNormalArrowRoot.h + aiSiteBossSmallDamageRoot.cpp + aiSiteBossSmallDamageRoot.h + aiSiteBossSpearAttackRoot.cpp + aiSiteBossSpearAttackRoot.h + aiSiteBossSpearLifeSelector.cpp + aiSiteBossSpearLifeSelector.h + aiSiteBossSpearRoot.cpp + aiSiteBossSpearRoot.h + aiSiteBossSpearThrow.cpp + aiSiteBossSpearThrow.h + aiSiteBossSwordApproachRoot.cpp + aiSiteBossSwordApproachRoot.h + aiSiteBossSwordAttackRoot.cpp + aiSiteBossSwordAttackRoot.h + aiSiteBossSwordIronPileRoot.cpp + aiSiteBossSwordIronPileRoot.h + aiSiteBossSwordRailApproach.cpp + aiSiteBossSwordRailApproach.h + aiSiteBossSwordRoot.cpp + aiSiteBossSwordRoot.h + aiSiteBossSwordSeqThreeAI.cpp + aiSiteBossSwordSeqThreeAI.h + aiSiteBossSwordWeapon.cpp + aiSiteBossSwordWeapon.h + aiSiteBossThrowIceRoot.cpp + aiSiteBossThrowIceRoot.h + aiSleepBedRoot.cpp + aiSleepBedRoot.h + aiSleepSelect.cpp + aiSleepSelect.h + aiSnowBallNormal.cpp + aiSnowBallNormal.h + aiSnowOctarockBattle.cpp + aiSnowOctarockBattle.h + aiSoundTriggerTag.cpp + aiSoundTriggerTag.h + aiSpearWeaponSelect.cpp + aiSpearWeaponSelect.h + aiSpecialEnemySleep.cpp + aiSpecialEnemySleep.h + aiSpotBgmTrigger.cpp + aiSpotBgmTrigger.h + aiStalEnemyBlownOff.cpp + aiStalEnemyBlownOff.h + aiStalEnemyChasePart.cpp + aiStalEnemyChasePart.h + aiStalEnemyDoShootPartSelect.cpp + aiStalEnemyDoShootPartSelect.h + aiStalEnemyGrabShootOwnPart.cpp + aiStalEnemyGrabShootOwnPart.h + aiStalEnemyNoHeadWait.cpp + aiStalEnemyNoHeadWait.h + aiStalEnemyReaction.cpp + aiStalEnemyReaction.h + aiStalEnemyRoot.cpp + aiStalEnemyRoot.h + aiStalEnemySleep.cpp + aiStalEnemySleep.h + aiStalGiantEnemyReaction.cpp + aiStalGiantEnemyReaction.h + aiStalGiantEnemyRoot.cpp + aiStalGiantEnemyRoot.h + aiStalGiantSleepNormal.cpp + aiStalGiantSleepNormal.h + aiStalHeadLifted.cpp + aiStalHeadLifted.h + aiStalHeadPartRoot.cpp + aiStalHeadPartRoot.h + aiStalPartCatch.cpp + aiStalPartCatch.h + aiStalPartNormal.cpp + aiStalPartNormal.h + aiStalPartRoot.cpp + aiStalPartRoot.h + aiStalPartsHasSelect.cpp + aiStalPartsHasSelect.h + aiStole.cpp + aiStole.h + aiStoneBall_BRoot.cpp + aiStoneBall_BRoot.h + aiStoneOctarockBattle.cpp + aiStoneOctarockBattle.h + aiStoneOctarockGuardNearTarget.cpp + aiStoneOctarockGuardNearTarget.h + aiStoneOctarockWait.cpp + aiStoneOctarockWait.h + aiStoneShootEnemyBattle.cpp + aiStoneShootEnemyBattle.h + aiStoneStickRoot.cpp + aiStoneStickRoot.h + aiStopTimerObserver.cpp + aiStopTimerObserver.h + aiStraightMove.cpp + aiStraightMove.h + aiStunBossReaction.cpp + aiStunBossReaction.h + aiStunWithDamageReaction.cpp + aiStunWithDamageReaction.h + aiSubsAngleSelect.cpp + aiSubsAngleSelect.h + aiSunAI.cpp + aiSunAI.h + aiSunazarashiEscapeMove.cpp + aiSunazarashiEscapeMove.h + aiSunazarashiNormal.cpp + aiSunazarashiNormal.h + aiSunazarashiReturn.cpp + aiSunazarashiReturn.h + aiSunazarashiRoot.cpp + aiSunazarashiRoot.h + aiSunazarashiTowing.cpp + aiSunazarashiTowing.h + aiSwarmBattle.cpp + aiSwarmBattle.h + aiSwarmEscapeDie.cpp + aiSwarmEscapeDie.h + aiSwarmRangeKeepCircleMove.cpp + aiSwarmRangeKeepCircleMove.h + aiSwarmReaction.cpp + aiSwarmReaction.h + aiSwarmRoot.cpp + aiSwarmRoot.h + aiSwarmStopTimerEscape.cpp + aiSwarmStopTimerEscape.h + aiSwimEnemyFindPlayer.cpp + aiSwimEnemyFindPlayer.h + aiSwimEnemyNormal.cpp + aiSwimEnemyNormal.h + aiSwimEnemyRoam.cpp + aiSwimEnemyRoam.h + aiSwitchAI.cpp + aiSwitchAI.h + aiSwitchDistance.cpp + aiSwitchDistance.h + aiSwitchElectric.cpp + aiSwitchElectric.h + aiSwitchHit.cpp + aiSwitchHit.h + aiSwitchHitOnce.cpp + aiSwitchHitOnce.h + aiSwitchLinkTagCheck.cpp + aiSwitchLinkTagCheck.h + aiSwitchRightAndWrong.cpp + aiSwitchRightAndWrong.h + aiSwitchTimeLag.cpp + aiSwitchTimeLag.h + aiSwitchTimeLimited.cpp + aiSwitchTimeLimited.h + aiSwitchTimer.cpp + aiSwitchTimer.h + aiSwitchTorch.cpp + aiSwitchTorch.h + aiSwitchWheel.cpp + aiSwitchWheel.h + aiSwitchWindHit.cpp + aiSwitchWindHit.h + aiTargetAbsolutePos.cpp + aiTargetAbsolutePos.h + aiTargetActorDistanceSelect.cpp + aiTargetActorDistanceSelect.h + aiTargetActorGrabAdapter.cpp + aiTargetActorGrabAdapter.h + aiTargetAngerSelect.cpp + aiTargetAngerSelect.h + aiTargetAttackAttitudeTgtSelectBase.cpp + aiTargetAttackAttitudeTgtSelectBase.h + aiTargetAttackAttitudeTgtSelect.cpp + aiTargetAttackAttitudeTgtSelect.h + aiTargetBaitTypeSelect.cpp + aiTargetBaitTypeSelect.h + aiTargetBeatCheck.cpp + aiTargetBeatCheck.h + aiTargetBeatGetDrop.cpp + aiTargetBeatGetDrop.h + aiTargetClimbSelect.cpp + aiTargetClimbSelect.h + aiTargetDirLRInHideSelect.cpp + aiTargetDirLRInHideSelect.h + aiTargetDirLRSelect.cpp + aiTargetDirLRSelect.h + aiTargetDistanceSelect.cpp + aiTargetDistanceSelect.h + aiTargetDynamicActorPos.cpp + aiTargetDynamicActorPos.h + aiTargetElevationGapSelect.cpp + aiTargetElevationGapSelect.h + aiTargetExistSelect.cpp + aiTargetExistSelect.h + aiTargetHomeDir.cpp + aiTargetHomeDir.h + aiTargetHomePos.cpp + aiTargetHomePos.h + aiTargetHomeRangeSelect.cpp + aiTargetHomeRangeSelect.h + aiTargetInAreaSelect.cpp + aiTargetInAreaSelect.h + aiTargetInFanAreaSelect.cpp + aiTargetInFanAreaSelect.h + aiTargetIsEquipItemSelector.cpp + aiTargetIsEquipItemSelector.h + aiTargetKnockBackBasePos.cpp + aiTargetKnockBackBasePos.h + aiTargetLastAttackedPos.cpp + aiTargetLastAttackedPos.h + aiTargetLastAttacker.cpp + aiTargetLastAttacker.h + aiTargetLastAttackerPos.cpp + aiTargetLastAttackerPos.h + aiTargetLastDamagedPos.cpp + aiTargetLastDamagedPos.h + aiTargetLostCheck.cpp + aiTargetLostCheck.h + aiTargetMyUp.cpp + aiTargetMyUp.h + aiTargetNPCTypeSelector.cpp + aiTargetNPCTypeSelector.h + aiTargetOnMovableNavmeshSelect.cpp + aiTargetOnMovableNavmeshSelect.h + aiTargetPartsPos.cpp + aiTargetPartsPos.h + aiTargetPickedItem.cpp + aiTargetPickedItem.h + aiTargetPlayerPos.cpp + aiTargetPlayerPos.h + aiTargetPosAI.cpp + aiTargetPosAI.h + aiTargetPosAnchorOffsetSelf.cpp + aiTargetPosAnchorOffsetSelf.h + aiTargetPosAnchorOffsetTarget.cpp + aiTargetPosAnchorOffsetTarget.h + aiTargetPosDirLRSelect.cpp + aiTargetPosDirLRSelect.h + aiTargetPosDynParamRot.cpp + aiTargetPosDynParamRotFromCtrPos.cpp + aiTargetPosDynParamRotFromCtrPos.h + aiTargetPosDynParamRot.h + aiTargetPosLostCheck.cpp + aiTargetPosLostCheck.h + aiTargetPosOffset.cpp + aiTargetPosOffsetFromMyPos.cpp + aiTargetPosOffsetFromMyPos.h + aiTargetPosOffset.h + aiTargetPosOnNavFaceSelect.cpp + aiTargetPosOnNavFaceSelect.h + aiTargetPosRotFromMyPos.cpp + aiTargetPosRotFromMyPos.h + aiTargetPosTracking.cpp + aiTargetPosTracking.h + aiTargetPredictRotSpdTargetPos.cpp + aiTargetPredictRotSpdTargetPos.h + aiTargetRangeSelect.cpp + aiTargetRangeSelect.h + aiTargetRepeat.cpp + aiTargetRepeat.h + aiTargetStateSelect.cpp + aiTargetStateSelect.h + aiTargetTargetPos.cpp + aiTargetTargetPos.h + aiTargetTypeSelector.cpp + aiTargetTypeSelector.h + aiTemperatureRandSelect.cpp + aiTemperatureRandSelect.h + aiTerminalEnduranceWarpRoot.cpp + aiTerminalEnduranceWarpRoot.h + aiTimeControlTagRoot.cpp + aiTimeControlTagRoot.h + aiTimedGuardNearTarget.cpp + aiTimedGuardNearTarget.h + aiTimelineAI.cpp + aiTimelineAI.h + aiTimeredViewWait.cpp + aiTimeredViewWait.h + aiTimidityEnemyDrawback.cpp + aiTimidityEnemyDrawback.h + aiTiredDistSelect.cpp + aiTiredDistSelect.h + aiTornadoRoot.cpp + aiTornadoRoot.h + aiTowing.cpp + aiTowing.h + aiTowingPlayer.cpp + aiTowingPlayer.h + aiTreasureBox.cpp + aiTreasureBox.h + aiTreasureBoxRoot.cpp + aiTreasureBoxRoot.h + aiTreasureSpot.cpp + aiTreasureSpot.h + aiTrgTargetChangeToPlayerSelect.cpp + aiTrgTargetChangeToPlayerSelect.h + aiTrolleyGrabbedByMagnet.cpp + aiTrolleyGrabbedByMagnet.h + aiTrolleyOnRail.cpp + aiTrolleyOnRail.h + aiTrolleyRoot.cpp + aiTrolleyRoot.h + aiTurnForLookingAround.cpp + aiTurnForLookingAround.h + aiTurnPreAction.cpp + aiTurnPreAction.h + aiTwnObjDlcFlightTrainingTarget.cpp + aiTwnObjDlcFlightTrainingTarget.h + aiUnarmedEnemyNoiseTarget.cpp + aiUnarmedEnemyNoiseTarget.h + aiUnarmedEnemySearch.cpp + aiUnarmedEnemySearch.h + aiUnarmedEnemySearchWeapon.cpp + aiUnarmedEnemySearchWeapon.h + aiUnarmedWeaponEquipableEnemyAct.cpp + aiUnarmedWeaponEquipableEnemyAct.h + aiUnderWaterDepthSelect.cpp + aiUnderWaterDepthSelect.h + aiUrbosasFuryDamageSelector.cpp + aiUrbosasFuryDamageSelector.h + aiVacuumedBombDamageSelect.cpp + aiVacuumedBombDamageSelect.h + aiVehicleSelector.cpp + aiVehicleSelector.h + aiViewChaseSound.cpp + aiViewChaseSound.h + aiViewfrustumCheckTagRoot.cpp + aiViewfrustumCheckTagRoot.h + aiViewMove.cpp + aiViewMove.h + aiViewWait.cpp + aiViewWaitEndWhenAimed.cpp + aiViewWaitEndWhenAimed.h + aiViewWait.h + aiViewWaitRiskAvoid.cpp + aiViewWaitRiskAvoid.h + aiViewWaitWithFaceView.cpp + aiViewWaitWithFaceView.h + aiViewWaitWithInstDynActor.cpp + aiViewWaitWithInstDynActor.h + aiWaistRotEnemyArrowAttack.cpp + aiWaistRotEnemyArrowAttack.h + aiWaitAndFaceLeader.cpp + aiWaitAndFaceLeader.h + aiWaitForCloseOrWaterSide.cpp + aiWaitForCloseOrWaterSide.h + aiWaitForTargetClose.cpp + aiWaitForTargetClose.h + aiWaitNearTargetAwarenessRange.cpp + aiWaitNearTargetAwarenessRange.h + aiWaitNearTarget.cpp + aiWaitNearTarget.h + aiWaitPartsSleep.cpp + aiWaitPartsSleep.h + aiWarpActivateTerminal.cpp + aiWarpActivateTerminal.h + aiWarpSafeTagRoot.cpp + aiWarpSafeTagRoot.h + aiWarpTagRoot.cpp + aiWarpTagRoot.h + aiWaterFallWithSound.cpp + aiWaterFallWithSound.h + aiWaterSurface4RemainsLava.cpp + aiWaterSurface4RemainsLava.h + aiWaterSurfaceBase.cpp + aiWaterSurfaceBase.h + aiWaterSurface.cpp + aiWaterSurface.h + aiWeakPointRoot.cpp + aiWeakPointRoot.h + aiWeakStateSelecter.cpp + aiWeakStateSelecter.h + aiWeaponEquipedAI.cpp + aiWeaponEquipedAI.h + aiWeaponEquipEnemyWakeUp.cpp + aiWeaponEquipEnemyWakeUp.h + aiWeaponHoldSelector.cpp + aiWeaponHoldSelector.h + aiWeaponOnetimeUse.cpp + aiWeaponOnetimeUse.h + aiWeaponPrepareSelect.cpp + aiWeaponPrepareSelect.h + aiWeaponRangeKindSelect.cpp + aiWeaponRangeKindSelect.h + aiWeaponRootAI.cpp + aiWeaponRootAI.h + aiWeaponSelector.cpp + aiWeaponSelector.h + aiWeaponSubTypeSelect.cpp + aiWeaponSubTypeSelect.h + aiWeaponThrowerSelector.cpp + aiWeaponThrowerSelector.h + aiWeaponTrueFormSelect.cpp + aiWeaponTrueFormSelect.h + aiWeaponUsageSelect.cpp + aiWeaponUsageSelect.h + aiWeatherReactionCheck.cpp + aiWeatherReactionCheck.h + aiWetSelect.cpp + aiWetSelect.h + aiWholeDungeonRotateTag.cpp + aiWholeDungeonRotateTag.h + aiWildHorseDefWanderAI.cpp + aiWildHorseDefWanderAI.h + aiWillBallAttackLevelSelect.cpp + aiWillBallAttackLevelSelect.h + aiWillBallFollowAttack.cpp + aiWillBallFollowAttack.h + aiWillBallFollowAttackWithDynAng.cpp + aiWillBallFollowAttackWithDynAng.h + aiWillBallOperated.cpp + aiWillBallOperated.h + aiWillBallRoot.cpp + aiWillBallRoot.h + aiWindBoxPlace.cpp + aiWindBoxPlace.h + aiWindGenerator.cpp + aiWindGenerator.h + aiWindGeneratorSignal.cpp + aiWindGeneratorSignal.h + aiWithoutWeaponArrow.cpp + aiWithoutWeaponArrow.h + aiWizzrobeBlownOff.cpp + aiWizzrobeBlownOff.h + aiWizzrobeCircleMove.cpp + aiWizzrobeCircleMove.h + aiWizzrobeCombat.cpp + aiWizzrobeCombat.h + aiWizzrobeCombatMove.cpp + aiWizzrobeCombatMove.h + aiWizzrobeFindPlayer.cpp + aiWizzrobeFindPlayer.h + aiWizzrobeRoam.cpp + aiWizzrobeRoam.h + aiWizzrobeRoot.cpp + aiWizzrobeRoot.h + aiWizzrobeWeatherMagic.cpp + aiWizzrobeWeatherMagic.h + aiWolfLinkAmiibo.cpp + aiWolfLinkAmiibo.h + aiWolfLinkBattleRoot.cpp + aiWolfLinkBattleRoot.h + aiWolfLinkChainAttack.cpp + aiWolfLinkChainAttack.h + aiWolfLinkFollowPlayerRoot.cpp + aiWolfLinkFollowPlayerRoot.h + aiWolfLinkFollowWait.cpp + aiWolfLinkFollowWait.h + aiWolfLinkGoToTarget.cpp + aiWolfLinkGoToTarget.h + aiWolfLinkLeadToTarget.cpp + aiWolfLinkLeadToTarget.h + aiWolfLinkNormalRoot.cpp + aiWolfLinkNormalRoot.h + aiWolfLinkReaction.cpp + aiWolfLinkReaction.h + aiWolfLinkRoot.cpp + aiWolfLinkRoot.h + aiWolfLinkRushAttack.cpp + aiWolfLinkRushAttack.h + aiWolfLinkSeqAttack.cpp + aiWolfLinkSeqAttack.h + aiWolfLinkShiekSensorRoot.cpp + aiWolfLinkShiekSensorRoot.h + aiWolfLinkWarp.cpp + aiWolfLinkWarp.h + aiYunBoCannonBallRoot.cpp + aiYunBoCannonBallRoot.h + aiYunBoCannon.cpp + aiYunBoCannon.h + aiZokuchoSunazarashi.cpp + aiZokuchoSunazarashi.h + aiZoraHeroRelicBattleNormal.cpp + aiZoraHeroRelicBattleNormal.h + aiZoraHeroRelicBattleRidePlayer.cpp + aiZoraHeroRelicBattleRidePlayer.h + aiZoraHeroRelicBattleRoot.cpp + aiZoraHeroRelicBattleRoot.h + aiZoraHeroSoulGiftRoot.cpp + aiZoraHeroSoulGiftRoot.h + aiZoraHeroWarp2Player.cpp + aiZoraHeroWarp2Player.h +) diff --git a/src/Game/AI/AI/aiASWeaponRoot.cpp b/src/Game/AI/AI/aiASWeaponRoot.cpp new file mode 100644 index 00000000..d9aae258 --- /dev/null +++ b/src/Game/AI/AI/aiASWeaponRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiASWeaponRoot.h" + +namespace uking::ai { + +ASWeaponRoot::ASWeaponRoot(const InitArg& arg) : WeaponRootAI(arg) {} + +ASWeaponRoot::~ASWeaponRoot() = default; + +bool ASWeaponRoot::init_(sead::Heap* heap) { + return WeaponRootAI::init_(heap); +} + +void ASWeaponRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeaponRootAI::enter_(params); +} + +void ASWeaponRoot::leave_() { + WeaponRootAI::leave_(); +} + +void ASWeaponRoot::loadParams_() { + WeaponRootAI::loadParams_(); + getStaticParam(&mEquiped_s, "Equiped"); + getStaticParam(&mUnEquiped_s, "UnEquiped"); + getStaticParam(&mThrown_s, "Thrown"); + getStaticParam(&mStick_s, "Stick"); + getStaticParam(&mCancelStick_s, "CancelStick"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiASWeaponRoot.h b/src/Game/AI/AI/aiASWeaponRoot.h new file mode 100644 index 00000000..2f5216cf --- /dev/null +++ b/src/Game/AI/AI/aiASWeaponRoot.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ASWeaponRoot : public WeaponRootAI { + SEAD_RTTI_OVERRIDE(ASWeaponRoot, WeaponRootAI) +public: + explicit ASWeaponRoot(const InitArg& arg); + ~ASWeaponRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe8 + sead::SafeString mEquiped_s{}; + // static_param at offset 0xf8 + sead::SafeString mUnEquiped_s{}; + // static_param at offset 0x108 + sead::SafeString mThrown_s{}; + // static_param at offset 0x118 + sead::SafeString mStick_s{}; + // static_param at offset 0x128 + sead::SafeString mCancelStick_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiActorWaterDepthSelect.cpp b/src/Game/AI/AI/aiActorWaterDepthSelect.cpp new file mode 100644 index 00000000..ddbb21e1 --- /dev/null +++ b/src/Game/AI/AI/aiActorWaterDepthSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiActorWaterDepthSelect.h" + +namespace uking::ai { + +ActorWaterDepthSelect::ActorWaterDepthSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ActorWaterDepthSelect::~ActorWaterDepthSelect() = default; + +bool ActorWaterDepthSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ActorWaterDepthSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ActorWaterDepthSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ActorWaterDepthSelect::loadParams_() { + getStaticParam(&mDeepDepth_s, "DeepDepth"); + getStaticParam(&mOnEnterOnly_s, "OnEnterOnly"); + getStaticParam(&mForceDeepChange_s, "ForceDeepChange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiActorWaterDepthSelect.h b/src/Game/AI/AI/aiActorWaterDepthSelect.h new file mode 100644 index 00000000..01df54ec --- /dev/null +++ b/src/Game/AI/AI/aiActorWaterDepthSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ActorWaterDepthSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ActorWaterDepthSelect, ksys::act::ai::Ai) +public: + explicit ActorWaterDepthSelect(const InitArg& arg); + ~ActorWaterDepthSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDeepDepth_s{}; + // static_param at offset 0x40 + const bool* mOnEnterOnly_s{}; + // static_param at offset 0x48 + const bool* mForceDeepChange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddBasicLinkOn.cpp b/src/Game/AI/AI/aiAddBasicLinkOn.cpp new file mode 100644 index 00000000..c35d2f32 --- /dev/null +++ b/src/Game/AI/AI/aiAddBasicLinkOn.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAddBasicLinkOn.h" + +namespace uking::ai { + +AddBasicLinkOn::AddBasicLinkOn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddBasicLinkOn::~AddBasicLinkOn() = default; + +bool AddBasicLinkOn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddBasicLinkOn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddBasicLinkOn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddBasicLinkOn::loadParams_() { + getStaticParam(&mOnlyOne_s, "OnlyOne"); + getStaticParam(&mIsBroadCastOnlyOne_s, "IsBroadCastOnlyOne"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddBasicLinkOn.h b/src/Game/AI/AI/aiAddBasicLinkOn.h new file mode 100644 index 00000000..7466e33f --- /dev/null +++ b/src/Game/AI/AI/aiAddBasicLinkOn.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddBasicLinkOn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddBasicLinkOn, ksys::act::ai::Ai) +public: + explicit AddBasicLinkOn(const InitArg& arg); + ~AddBasicLinkOn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mOnlyOne_s{}; + // static_param at offset 0x40 + const bool* mIsBroadCastOnlyOne_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddCarried.cpp b/src/Game/AI/AI/aiAddCarried.cpp new file mode 100644 index 00000000..d14ac520 --- /dev/null +++ b/src/Game/AI/AI/aiAddCarried.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAddCarried.h" + +namespace uking::ai { + +AddCarried::AddCarried(const InitArg& arg) : AddCarriedBase(arg) {} + +AddCarried::~AddCarried() = default; + +bool AddCarried::init_(sead::Heap* heap) { + return AddCarriedBase::init_(heap); +} + +void AddCarried::enter_(ksys::act::ai::InlineParamPack* params) { + AddCarriedBase::enter_(params); +} + +void AddCarried::leave_() { + AddCarriedBase::leave_(); +} + +void AddCarried::loadParams_() { + AddCarriedBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddCarried.h b/src/Game/AI/AI/aiAddCarried.h new file mode 100644 index 00000000..6f4a35d8 --- /dev/null +++ b/src/Game/AI/AI/aiAddCarried.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAddCarriedBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddCarried : public AddCarriedBase { + SEAD_RTTI_OVERRIDE(AddCarried, AddCarriedBase) +public: + explicit AddCarried(const InitArg& arg); + ~AddCarried() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddCarriedBase.cpp b/src/Game/AI/AI/aiAddCarriedBase.cpp new file mode 100644 index 00000000..0588919c --- /dev/null +++ b/src/Game/AI/AI/aiAddCarriedBase.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAddCarriedBase.h" + +namespace uking::ai { + +AddCarriedBase::AddCarriedBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddCarriedBase::~AddCarriedBase() = default; + +bool AddCarriedBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddCarriedBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddCarriedBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddCarriedBase::loadParams_() { + getStaticParam(&mFailDistance_s, "FailDistance"); + getStaticParam(&mIsRecoverCharCtrlAxis_s, "IsRecoverCharCtrlAxis"); + getStaticParam(&mIsUseConstraint_s, "IsUseConstraint"); + getStaticParam(&mHoldOnXLinkKey_s, "HoldOnXLinkKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddCarriedBase.h b/src/Game/AI/AI/aiAddCarriedBase.h new file mode 100644 index 00000000..8c11bac8 --- /dev/null +++ b/src/Game/AI/AI/aiAddCarriedBase.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddCarriedBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddCarriedBase, ksys::act::ai::Ai) +public: + explicit AddCarriedBase(const InitArg& arg); + ~AddCarriedBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFailDistance_s{}; + // static_param at offset 0x40 + const bool* mIsRecoverCharCtrlAxis_s{}; + // static_param at offset 0x48 + const bool* mIsUseConstraint_s{}; + // static_param at offset 0x50 + sead::SafeString mHoldOnXLinkKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddDemoCall.cpp b/src/Game/AI/AI/aiAddDemoCall.cpp new file mode 100644 index 00000000..bb6ecdb5 --- /dev/null +++ b/src/Game/AI/AI/aiAddDemoCall.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAddDemoCall.h" + +namespace uking::ai { + +AddDemoCall::AddDemoCall(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddDemoCall::~AddDemoCall() = default; + +bool AddDemoCall::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddDemoCall::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddDemoCall::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddDemoCall::loadParams_() { + getStaticParam(&mOnlyOne_s, "OnlyOne"); + getStaticParam(&mIsBroadCastOnlyOne_s, "IsBroadCastOnlyOne"); + getStaticParam(&mEntryPoint_s, "EntryPoint"); + getStaticParam(&mDemoName_s, "DemoName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddDemoCall.h b/src/Game/AI/AI/aiAddDemoCall.h new file mode 100644 index 00000000..343c01ec --- /dev/null +++ b/src/Game/AI/AI/aiAddDemoCall.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddDemoCall : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddDemoCall, ksys::act::ai::Ai) +public: + explicit AddDemoCall(const InitArg& arg); + ~AddDemoCall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mOnlyOne_s{}; + // static_param at offset 0x40 + const bool* mIsBroadCastOnlyOne_s{}; + // static_param at offset 0x48 + sead::SafeString mEntryPoint_s{}; + // static_param at offset 0x58 + sead::SafeString mDemoName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddNodeNodeCarried.cpp b/src/Game/AI/AI/aiAddNodeNodeCarried.cpp new file mode 100644 index 00000000..41e991f1 --- /dev/null +++ b/src/Game/AI/AI/aiAddNodeNodeCarried.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAddNodeNodeCarried.h" + +namespace uking::ai { + +AddNodeNodeCarried::AddNodeNodeCarried(const InitArg& arg) : AddCarriedBase(arg) {} + +AddNodeNodeCarried::~AddNodeNodeCarried() = default; + +bool AddNodeNodeCarried::init_(sead::Heap* heap) { + return AddCarriedBase::init_(heap); +} + +void AddNodeNodeCarried::enter_(ksys::act::ai::InlineParamPack* params) { + AddCarriedBase::enter_(params); +} + +void AddNodeNodeCarried::leave_() { + AddCarriedBase::leave_(); +} + +void AddNodeNodeCarried::loadParams_() { + AddCarriedBase::loadParams_(); + getStaticParam(&mMyNode_s, "MyNode"); + getStaticParam(&mNodeRotOffset_s, "NodeRotOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddNodeNodeCarried.h b/src/Game/AI/AI/aiAddNodeNodeCarried.h new file mode 100644 index 00000000..40d2e5c8 --- /dev/null +++ b/src/Game/AI/AI/aiAddNodeNodeCarried.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiAddCarriedBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddNodeNodeCarried : public AddCarriedBase { + SEAD_RTTI_OVERRIDE(AddNodeNodeCarried, AddCarriedBase) +public: + explicit AddNodeNodeCarried(const InitArg& arg); + ~AddNodeNodeCarried() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x138 + sead::SafeString mMyNode_s{}; + // static_param at offset 0x148 + const sead::Vector3f* mNodeRotOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddNoiseToTargetPos.cpp b/src/Game/AI/AI/aiAddNoiseToTargetPos.cpp new file mode 100644 index 00000000..76b8d9ef --- /dev/null +++ b/src/Game/AI/AI/aiAddNoiseToTargetPos.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiAddNoiseToTargetPos.h" + +namespace uking::ai { + +AddNoiseToTargetPos::AddNoiseToTargetPos(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddNoiseToTargetPos::~AddNoiseToTargetPos() = default; + +bool AddNoiseToTargetPos::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddNoiseToTargetPos::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddNoiseToTargetPos::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddNoiseToTargetPos::loadParams_() { + getStaticParam(&mRandYMin_s, "RandYMin"); + getStaticParam(&mRandYMax_s, "RandYMax"); + getStaticParam(&mRandLeftMax_s, "RandLeftMax"); + getStaticParam(&mRandRightMax_s, "RandRightMax"); + getStaticParam(&mRandDistMin_s, "RandDistMin"); + getStaticParam(&mRandDistMax_s, "RandDistMax"); + getStaticParam(&mIsUpdateEveryFrame_s, "IsUpdateEveryFrame"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddNoiseToTargetPos.h b/src/Game/AI/AI/aiAddNoiseToTargetPos.h new file mode 100644 index 00000000..332e3a6f --- /dev/null +++ b/src/Game/AI/AI/aiAddNoiseToTargetPos.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddNoiseToTargetPos : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddNoiseToTargetPos, ksys::act::ai::Ai) +public: + explicit AddNoiseToTargetPos(const InitArg& arg); + ~AddNoiseToTargetPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRandYMin_s{}; + // static_param at offset 0x40 + const float* mRandYMax_s{}; + // static_param at offset 0x48 + const float* mRandLeftMax_s{}; + // static_param at offset 0x50 + const float* mRandRightMax_s{}; + // static_param at offset 0x58 + const float* mRandDistMin_s{}; + // static_param at offset 0x60 + const float* mRandDistMax_s{}; + // static_param at offset 0x68 + const bool* mIsUpdateEveryFrame_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.cpp b/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.cpp new file mode 100644 index 00000000..c6af714d --- /dev/null +++ b/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h" + +namespace uking::ai { + +AddPlayerLargeAttackJustGuard::AddPlayerLargeAttackJustGuard(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +bool AddPlayerLargeAttackJustGuard::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddPlayerLargeAttackJustGuard::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddPlayerLargeAttackJustGuard::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddPlayerLargeAttackJustGuard::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h b/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h new file mode 100644 index 00000000..ff9fd492 --- /dev/null +++ b/src/Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddPlayerLargeAttackJustGuard : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddPlayerLargeAttackJustGuard, ksys::act::ai::Ai) +public: + explicit AddPlayerLargeAttackJustGuard(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddSwarmMove.cpp b/src/Game/AI/AI/aiAddSwarmMove.cpp new file mode 100644 index 00000000..d755c356 --- /dev/null +++ b/src/Game/AI/AI/aiAddSwarmMove.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiAddSwarmMove.h" + +namespace uking::ai { + +AddSwarmMove::AddSwarmMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddSwarmMove::~AddSwarmMove() = default; + +bool AddSwarmMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddSwarmMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddSwarmMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddSwarmMove::loadParams_() { + getStaticParam(&mIgnoreSensorTime_s, "IgnoreSensorTime"); + getStaticParam(&mSubSpeed_s, "SubSpeed"); + getStaticParam(&mSubAccRateMin_s, "SubAccRateMin"); + getStaticParam(&mSubAccRateMax_s, "SubAccRateMax"); + getStaticParam(&mIsEndBySensor_s, "IsEndBySensor"); + getStaticParam(&mAnimName_s, "AnimName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddSwarmMove.h b/src/Game/AI/AI/aiAddSwarmMove.h new file mode 100644 index 00000000..7ac94d58 --- /dev/null +++ b/src/Game/AI/AI/aiAddSwarmMove.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddSwarmMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddSwarmMove, ksys::act::ai::Ai) +public: + explicit AddSwarmMove(const InitArg& arg); + ~AddSwarmMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIgnoreSensorTime_s{}; + // static_param at offset 0x40 + const float* mSubSpeed_s{}; + // static_param at offset 0x48 + const float* mSubAccRateMin_s{}; + // static_param at offset 0x50 + const float* mSubAccRateMax_s{}; + // static_param at offset 0x58 + const bool* mIsEndBySensor_s{}; + // static_param at offset 0x60 + sead::SafeString mAnimName_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddViewTargetPos.cpp b/src/Game/AI/AI/aiAddViewTargetPos.cpp new file mode 100644 index 00000000..dc9ee066 --- /dev/null +++ b/src/Game/AI/AI/aiAddViewTargetPos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAddViewTargetPos.h" + +namespace uking::ai { + +AddViewTargetPos::AddViewTargetPos(const InitArg& arg) : AddViewTargetPosBase(arg) {} + +AddViewTargetPos::~AddViewTargetPos() = default; + +bool AddViewTargetPos::init_(sead::Heap* heap) { + return AddViewTargetPosBase::init_(heap); +} + +void AddViewTargetPos::enter_(ksys::act::ai::InlineParamPack* params) { + AddViewTargetPosBase::enter_(params); +} + +void AddViewTargetPos::leave_() { + AddViewTargetPosBase::leave_(); +} + +void AddViewTargetPos::loadParams_() { + AddViewTargetPosBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddViewTargetPos.h b/src/Game/AI/AI/aiAddViewTargetPos.h new file mode 100644 index 00000000..4a1c5c76 --- /dev/null +++ b/src/Game/AI/AI/aiAddViewTargetPos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAddViewTargetPosBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddViewTargetPos : public AddViewTargetPosBase { + SEAD_RTTI_OVERRIDE(AddViewTargetPos, AddViewTargetPosBase) +public: + explicit AddViewTargetPos(const InitArg& arg); + ~AddViewTargetPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddViewTargetPosBase.cpp b/src/Game/AI/AI/aiAddViewTargetPosBase.cpp new file mode 100644 index 00000000..e8c87b8e --- /dev/null +++ b/src/Game/AI/AI/aiAddViewTargetPosBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiAddViewTargetPosBase.h" + +namespace uking::ai { + +AddViewTargetPosBase::AddViewTargetPosBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AddViewTargetPosBase::~AddViewTargetPosBase() = default; + +bool AddViewTargetPosBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AddViewTargetPosBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AddViewTargetPosBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AddViewTargetPosBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAddViewTargetPosBase.h b/src/Game/AI/AI/aiAddViewTargetPosBase.h new file mode 100644 index 00000000..c4f31b4d --- /dev/null +++ b/src/Game/AI/AI/aiAddViewTargetPosBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AddViewTargetPosBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AddViewTargetPosBase, ksys::act::ai::Ai) +public: + explicit AddViewTargetPosBase(const InitArg& arg); + ~AddViewTargetPosBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaBoardBurn.cpp b/src/Game/AI/AI/aiAirOctaBoardBurn.cpp new file mode 100644 index 00000000..322c163e --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaBoardBurn.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAirOctaBoardBurn.h" + +namespace uking::ai { + +AirOctaBoardBurn::AirOctaBoardBurn(const InitArg& arg) : SeqTwoAction(arg) {} + +AirOctaBoardBurn::~AirOctaBoardBurn() = default; + +bool AirOctaBoardBurn::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void AirOctaBoardBurn::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void AirOctaBoardBurn::leave_() { + SeqTwoAction::leave_(); +} + +void AirOctaBoardBurn::loadParams_() { + SeqTwoAction::loadParams_(); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaBoardBurn.h b/src/Game/AI/AI/aiAirOctaBoardBurn.h new file mode 100644 index 00000000..7e3cfbbe --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaBoardBurn.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaBoardBurn : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(AirOctaBoardBurn, SeqTwoAction) +public: + explicit AirOctaBoardBurn(const InitArg& arg); + ~AirOctaBoardBurn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x50 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaBurnReaction.cpp b/src/Game/AI/AI/aiAirOctaBurnReaction.cpp new file mode 100644 index 00000000..50cd7307 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaBurnReaction.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAirOctaBurnReaction.h" + +namespace uking::ai { + +AirOctaBurnReaction::AirOctaBurnReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AirOctaBurnReaction::~AirOctaBurnReaction() = default; + +bool AirOctaBurnReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AirOctaBurnReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AirOctaBurnReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AirOctaBurnReaction::loadParams_() { + getStaticParam(&mDisconnectTime_s, "DisconnectTime"); + getStaticParam(&mDisconnectRandTime_s, "DisconnectRandTime"); + getStaticParam(&mSingleBurnTime_s, "SingleBurnTime"); + getStaticParam(&mChangeRandTime_s, "ChangeRandTime"); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaBurnReaction.h b/src/Game/AI/AI/aiAirOctaBurnReaction.h new file mode 100644 index 00000000..3ed158b1 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaBurnReaction.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaBurnReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AirOctaBurnReaction, ksys::act::ai::Ai) +public: + explicit AirOctaBurnReaction(const InitArg& arg); + ~AirOctaBurnReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDisconnectTime_s{}; + // static_param at offset 0x40 + const float* mDisconnectRandTime_s{}; + // static_param at offset 0x48 + const float* mSingleBurnTime_s{}; + // static_param at offset 0x50 + const float* mChangeRandTime_s{}; + // aitree_variable at offset 0x58 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaFlyUp.cpp b/src/Game/AI/AI/aiAirOctaFlyUp.cpp new file mode 100644 index 00000000..3b46b337 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaFlyUp.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAirOctaFlyUp.h" + +namespace uking::ai { + +AirOctaFlyUp::AirOctaFlyUp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AirOctaFlyUp::~AirOctaFlyUp() = default; + +bool AirOctaFlyUp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AirOctaFlyUp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AirOctaFlyUp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AirOctaFlyUp::loadParams_() { + getStaticParam(&mFlyUpDuration_s, "FlyUpDuration"); + getDynamicParam(&mTargetDistance_d, "TargetDistance"); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaFlyUp.h b/src/Game/AI/AI/aiAirOctaFlyUp.h new file mode 100644 index 00000000..26c682b5 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaFlyUp.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaFlyUp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AirOctaFlyUp, ksys::act::ai::Ai) +public: + explicit AirOctaFlyUp(const InitArg& arg); + ~AirOctaFlyUp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFlyUpDuration_s{}; + // dynamic_param at offset 0x40 + float* mTargetDistance_d{}; + // aitree_variable at offset 0x48 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaReaction.cpp b/src/Game/AI/AI/aiAirOctaReaction.cpp new file mode 100644 index 00000000..9ef0fe55 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAirOctaReaction.h" + +namespace uking::ai { + +AirOctaReaction::AirOctaReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +AirOctaReaction::~AirOctaReaction() = default; + +bool AirOctaReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void AirOctaReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void AirOctaReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void AirOctaReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaReaction.h b/src/Game/AI/AI/aiAirOctaReaction.h new file mode 100644 index 00000000..c69ff580 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaReaction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(AirOctaReaction, EnemyDefaultReaction) +public: + explicit AirOctaReaction(const InitArg& arg); + ~AirOctaReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x68 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaRoot.cpp b/src/Game/AI/AI/aiAirOctaRoot.cpp new file mode 100644 index 00000000..a7da0c9a --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAirOctaRoot.h" + +namespace uking::ai { + +AirOctaRoot::AirOctaRoot(const InitArg& arg) : Fork2AI(arg) {} + +AirOctaRoot::~AirOctaRoot() = default; + +bool AirOctaRoot::init_(sead::Heap* heap) { + return Fork2AI::init_(heap); +} + +void AirOctaRoot::enter_(ksys::act::ai::InlineParamPack* params) { + Fork2AI::enter_(params); +} + +void AirOctaRoot::leave_() { + Fork2AI::leave_(); +} + +void AirOctaRoot::loadParams_() { + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaRoot.h b/src/Game/AI/AI/aiAirOctaRoot.h new file mode 100644 index 00000000..ce0068eb --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiFork2AI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaRoot : public Fork2AI { + SEAD_RTTI_OVERRIDE(AirOctaRoot, Fork2AI) +public: + explicit AirOctaRoot(const InitArg& arg); + ~AirOctaRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaState.cpp b/src/Game/AI/AI/aiAirOctaState.cpp new file mode 100644 index 00000000..adb681a3 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaState.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAirOctaState.h" + +namespace uking::ai { + +AirOctaState::AirOctaState(const InitArg& arg) : EnemyRoot(arg) {} + +AirOctaState::~AirOctaState() = default; + +bool AirOctaState::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void AirOctaState::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void AirOctaState::leave_() { + EnemyRoot::leave_(); +} + +void AirOctaState::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mRopeGravityFactor_s, "RopeGravityFactor"); + getStaticParam(&mBalloonMassRatio_s, "BalloonMassRatio"); + getStaticParam(&mWindForceScale_s, "WindForceScale"); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaState.h b/src/Game/AI/AI/aiAirOctaState.h new file mode 100644 index 00000000..f3160f81 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaState.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaState : public EnemyRoot { + SEAD_RTTI_OVERRIDE(AirOctaState, EnemyRoot) +public: + explicit AirOctaState(const InitArg& arg); + ~AirOctaState() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const float* mRopeGravityFactor_s{}; + // static_param at offset 0x1e0 + const float* mBalloonMassRatio_s{}; + // static_param at offset 0x1e8 + const float* mWindForceScale_s{}; + // aitree_variable at offset 0x1f0 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaWait.cpp b/src/Game/AI/AI/aiAirOctaWait.cpp new file mode 100644 index 00000000..b2568688 --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaWait.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAirOctaWait.h" + +namespace uking::ai { + +AirOctaWait::AirOctaWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AirOctaWait::~AirOctaWait() = default; + +bool AirOctaWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AirOctaWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AirOctaWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AirOctaWait::loadParams_() { + getDynamicParam(&mIsSameChange_d, "IsSameChange"); + getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAirOctaWait.h b/src/Game/AI/AI/aiAirOctaWait.h new file mode 100644 index 00000000..d270904b --- /dev/null +++ b/src/Game/AI/AI/aiAirOctaWait.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AirOctaWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AirOctaWait, ksys::act::ai::Ai) +public: + explicit AirOctaWait(const InitArg& arg); + ~AirOctaWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsSameChange_d{}; + // aitree_variable at offset 0x40 + void* mAirOctaDataMgr_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAlertCreationNestOnTree.cpp b/src/Game/AI/AI/aiAlertCreationNestOnTree.cpp new file mode 100644 index 00000000..2c526fba --- /dev/null +++ b/src/Game/AI/AI/aiAlertCreationNestOnTree.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAlertCreationNestOnTree.h" + +namespace uking::ai { + +AlertCreationNestOnTree::AlertCreationNestOnTree(const InitArg& arg) : CreationNestOnTree(arg) {} + +AlertCreationNestOnTree::~AlertCreationNestOnTree() = default; + +bool AlertCreationNestOnTree::init_(sead::Heap* heap) { + return CreationNestOnTree::init_(heap); +} + +void AlertCreationNestOnTree::enter_(ksys::act::ai::InlineParamPack* params) { + CreationNestOnTree::enter_(params); +} + +void AlertCreationNestOnTree::leave_() { + CreationNestOnTree::leave_(); +} + +void AlertCreationNestOnTree::loadParams_() { + CreationNestOnTree::loadParams_(); + getStaticParam(&mCreateIntervalTime_s, "CreateIntervalTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAlertCreationNestOnTree.h b/src/Game/AI/AI/aiAlertCreationNestOnTree.h new file mode 100644 index 00000000..8926bf54 --- /dev/null +++ b/src/Game/AI/AI/aiAlertCreationNestOnTree.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCreationNestOnTree.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AlertCreationNestOnTree : public CreationNestOnTree { + SEAD_RTTI_OVERRIDE(AlertCreationNestOnTree, CreationNestOnTree) +public: + explicit AlertCreationNestOnTree(const InitArg& arg); + ~AlertCreationNestOnTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1f8 + const int* mCreateIntervalTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAmbushableWeaponShoot.cpp b/src/Game/AI/AI/aiAmbushableWeaponShoot.cpp new file mode 100644 index 00000000..9f914fb9 --- /dev/null +++ b/src/Game/AI/AI/aiAmbushableWeaponShoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAmbushableWeaponShoot.h" + +namespace uking::ai { + +AmbushableWeaponShoot::AmbushableWeaponShoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AmbushableWeaponShoot::~AmbushableWeaponShoot() = default; + +bool AmbushableWeaponShoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AmbushableWeaponShoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AmbushableWeaponShoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AmbushableWeaponShoot::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAmbushableWeaponShoot.h b/src/Game/AI/AI/aiAmbushableWeaponShoot.h new file mode 100644 index 00000000..66708d7f --- /dev/null +++ b/src/Game/AI/AI/aiAmbushableWeaponShoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AmbushableWeaponShoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AmbushableWeaponShoot, ksys::act::ai::Ai) +public: + explicit AmbushableWeaponShoot(const InitArg& arg); + ~AmbushableWeaponShoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.cpp b/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.cpp new file mode 100644 index 00000000..77c5bff9 --- /dev/null +++ b/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAnchorRangeSelectTwoAction.h" + +namespace uking::ai { + +AnchorRangeSelectTwoAction::AnchorRangeSelectTwoAction(const InitArg& arg) + : RangeSelectTwoAction(arg) {} + +AnchorRangeSelectTwoAction::~AnchorRangeSelectTwoAction() = default; + +bool AnchorRangeSelectTwoAction::init_(sead::Heap* heap) { + return RangeSelectTwoAction::init_(heap); +} + +void AnchorRangeSelectTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelectTwoAction::enter_(params); +} + +void AnchorRangeSelectTwoAction::leave_() { + RangeSelectTwoAction::leave_(); +} + +void AnchorRangeSelectTwoAction::loadParams_() { + RangeSelectTwoAction::loadParams_(); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mAnchorName_s, "AnchorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.h b/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.h new file mode 100644 index 00000000..e651abab --- /dev/null +++ b/src/Game/AI/AI/aiAnchorRangeSelectTwoAction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelectTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnchorRangeSelectTwoAction : public RangeSelectTwoAction { + SEAD_RTTI_OVERRIDE(AnchorRangeSelectTwoAction, RangeSelectTwoAction) +public: + explicit AnchorRangeSelectTwoAction(const InitArg& arg); + ~AnchorRangeSelectTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + const float* mFarDist_s{}; + // static_param at offset 0x78 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAncientNecklaceBall.cpp b/src/Game/AI/AI/aiAncientNecklaceBall.cpp new file mode 100644 index 00000000..adeaba1b --- /dev/null +++ b/src/Game/AI/AI/aiAncientNecklaceBall.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAncientNecklaceBall.h" + +namespace uking::ai { + +AncientNecklaceBall::AncientNecklaceBall(const InitArg& arg) : AncientNecklaceBallBase(arg) {} + +AncientNecklaceBall::~AncientNecklaceBall() = default; + +bool AncientNecklaceBall::init_(sead::Heap* heap) { + return AncientNecklaceBallBase::init_(heap); +} + +void AncientNecklaceBall::enter_(ksys::act::ai::InlineParamPack* params) { + AncientNecklaceBallBase::enter_(params); +} + +void AncientNecklaceBall::leave_() { + AncientNecklaceBallBase::leave_(); +} + +void AncientNecklaceBall::loadParams_() { + AncientNecklaceBallBase::loadParams_(); + getStaticParam(&mLandNoiseLevel_s, "LandNoiseLevel"); + getMapUnitParam(&mGrabNodeIndex_m, "GrabNodeIndex"); + getMapUnitParam(&mGiantNecklaceActiveSaveFlag_m, "GiantNecklaceActiveSaveFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAncientNecklaceBall.h b/src/Game/AI/AI/aiAncientNecklaceBall.h new file mode 100644 index 00000000..1fc7f849 --- /dev/null +++ b/src/Game/AI/AI/aiAncientNecklaceBall.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiAncientNecklaceBallBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AncientNecklaceBall : public AncientNecklaceBallBase { + SEAD_RTTI_OVERRIDE(AncientNecklaceBall, AncientNecklaceBallBase) +public: + explicit AncientNecklaceBall(const InitArg& arg); + ~AncientNecklaceBall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x100 + const float* mLandNoiseLevel_s{}; + // map_unit_param at offset 0x108 + const int* mGrabNodeIndex_m{}; + // map_unit_param at offset 0x110 + sead::SafeString mGiantNecklaceActiveSaveFlag_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAncientNecklaceBallBase.cpp b/src/Game/AI/AI/aiAncientNecklaceBallBase.cpp new file mode 100644 index 00000000..76890b2d --- /dev/null +++ b/src/Game/AI/AI/aiAncientNecklaceBallBase.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAncientNecklaceBallBase.h" + +namespace uking::ai { + +AncientNecklaceBallBase::AncientNecklaceBallBase(const InitArg& arg) : SimpleLiftable(arg) {} + +AncientNecklaceBallBase::~AncientNecklaceBallBase() = default; + +bool AncientNecklaceBallBase::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void AncientNecklaceBallBase::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void AncientNecklaceBallBase::leave_() { + SimpleLiftable::leave_(); +} + +void AncientNecklaceBallBase::loadParams_() { + getStaticParam(&mIsIgnoreSameOnAS_s, "IsIgnoreSameOnAS"); + getStaticParam(&mIsIgnoreSameOffAS_s, "IsIgnoreSameOffAS"); + getStaticParam(&mOnAS_s, "OnAS"); + getStaticParam(&mOffAS_s, "OffAS"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAncientNecklaceBallBase.h b/src/Game/AI/AI/aiAncientNecklaceBallBase.h new file mode 100644 index 00000000..ce830be1 --- /dev/null +++ b/src/Game/AI/AI/aiAncientNecklaceBallBase.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AncientNecklaceBallBase : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(AncientNecklaceBallBase, SimpleLiftable) +public: + explicit AncientNecklaceBallBase(const InitArg& arg); + ~AncientNecklaceBallBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const bool* mIsIgnoreSameOnAS_s{}; + // static_param at offset 0xd0 + const bool* mIsIgnoreSameOffAS_s{}; + // static_param at offset 0xd8 + sead::SafeString mOnAS_s{}; + // static_param at offset 0xe8 + sead::SafeString mOffAS_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalAttackOtherTarget.cpp b/src/Game/AI/AI/aiAnimalAttackOtherTarget.cpp new file mode 100644 index 00000000..158664b8 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalAttackOtherTarget.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiAnimalAttackOtherTarget.h" + +namespace uking::ai { + +AnimalAttackOtherTarget::AnimalAttackOtherTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalAttackOtherTarget::~AnimalAttackOtherTarget() = default; + +bool AnimalAttackOtherTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalAttackOtherTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalAttackOtherTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalAttackOtherTarget::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalAttackOtherTarget.h b/src/Game/AI/AI/aiAnimalAttackOtherTarget.h new file mode 100644 index 00000000..61683cbd --- /dev/null +++ b/src/Game/AI/AI/aiAnimalAttackOtherTarget.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalAttackOtherTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalAttackOtherTarget, ksys::act::ai::Ai) +public: + explicit AnimalAttackOtherTarget(const InitArg& arg); + ~AnimalAttackOtherTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalBattleAggressive.cpp b/src/Game/AI/AI/aiAnimalBattleAggressive.cpp new file mode 100644 index 00000000..fe686ba2 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalBattleAggressive.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiAnimalBattleAggressive.h" + +namespace uking::ai { + +AnimalBattleAggressive::AnimalBattleAggressive(const InitArg& arg) : EnemyBattle(arg) {} + +AnimalBattleAggressive::~AnimalBattleAggressive() = default; + +bool AnimalBattleAggressive::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void AnimalBattleAggressive::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void AnimalBattleAggressive::leave_() { + EnemyBattle::leave_(); +} + +void AnimalBattleAggressive::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mForceAttackTimer_s, "ForceAttackTimer"); + getStaticParam(&mCounterAttackTimer_s, "CounterAttackTimer"); + getStaticParam(&mForceAttackRange_s, "ForceAttackRange"); + getStaticParam(&mCounterAttackRange_s, "CounterAttackRange"); + getAITreeVariable(&mAnimalEnableCounterFlag_a, "AnimalEnableCounterFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalBattleAggressive.h b/src/Game/AI/AI/aiAnimalBattleAggressive.h new file mode 100644 index 00000000..323ff748 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalBattleAggressive.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalBattleAggressive : public EnemyBattle { + SEAD_RTTI_OVERRIDE(AnimalBattleAggressive, EnemyBattle) +public: + explicit AnimalBattleAggressive(const InitArg& arg); + ~AnimalBattleAggressive() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mForceAttackTimer_s{}; + // static_param at offset 0x98 + const int* mCounterAttackTimer_s{}; + // static_param at offset 0xa0 + const float* mForceAttackRange_s{}; + // static_param at offset 0xa8 + const float* mCounterAttackRange_s{}; + // aitree_variable at offset 0xb0 + bool* mAnimalEnableCounterFlag_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalBattleMoveLeave.cpp b/src/Game/AI/AI/aiAnimalBattleMoveLeave.cpp new file mode 100644 index 00000000..0d0c88a3 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalBattleMoveLeave.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAnimalBattleMoveLeave.h" + +namespace uking::ai { + +AnimalBattleMoveLeave::AnimalBattleMoveLeave(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalBattleMoveLeave::~AnimalBattleMoveLeave() = default; + +bool AnimalBattleMoveLeave::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalBattleMoveLeave::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalBattleMoveLeave::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalBattleMoveLeave::loadParams_() { + getStaticParam(&mCheckForwardDist_s, "CheckForwardDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalBattleMoveLeave.h b/src/Game/AI/AI/aiAnimalBattleMoveLeave.h new file mode 100644 index 00000000..19c1df57 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalBattleMoveLeave.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalBattleMoveLeave : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalBattleMoveLeave, ksys::act::ai::Ai) +public: + explicit AnimalBattleMoveLeave(const InitArg& arg); + ~AnimalBattleMoveLeave() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckForwardDist_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalEscapeAI.cpp b/src/Game/AI/AI/aiAnimalEscapeAI.cpp new file mode 100644 index 00000000..6b1f4c74 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalEscapeAI.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiAnimalEscapeAI.h" + +namespace uking::ai { + +AnimalEscapeAI::AnimalEscapeAI(const InitArg& arg) : AnimalRoamBase(arg) {} + +AnimalEscapeAI::~AnimalEscapeAI() = default; + +bool AnimalEscapeAI::init_(sead::Heap* heap) { + return AnimalRoamBase::init_(heap); +} + +void AnimalEscapeAI::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalRoamBase::enter_(params); +} + +void AnimalEscapeAI::leave_() { + AnimalRoamBase::leave_(); +} + +void AnimalEscapeAI::loadParams_() { + AnimalRoamBase::loadParams_(); + getStaticParam(&mNumTimesAllowStuck_s, "NumTimesAllowStuck"); + getStaticParam(&mContinueDistance_s, "ContinueDistance"); + getStaticParam(&mShouldEscapeDistance_s, "ShouldEscapeDistance"); + getStaticParam(&mShouldEscapeDistanceRand_s, "ShouldEscapeDistanceRand"); + getStaticParam(&mPenaltyScale_s, "PenaltyScale"); + getStaticParam(&mNavMeshRadiusScale_s, "NavMeshRadiusScale"); + getStaticParam(&mFramesStuckOnTerrainAction_s, "FramesStuckOnTerrainAction"); + getStaticParam(&mIsSendGoalPos_s, "IsSendGoalPos"); + getStaticParam(&mIsUseBeforeAction_s, "IsUseBeforeAction"); + getStaticParam(&mIsDynamicallyOffsetNavChar_s, "IsDynamicallyOffsetNavChar"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mIsUseTerritory_a, "IsUseTerritory"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalEscapeAI.h b/src/Game/AI/AI/aiAnimalEscapeAI.h new file mode 100644 index 00000000..df29eee3 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalEscapeAI.h @@ -0,0 +1,46 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalRoamBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalEscapeAI : public AnimalRoamBase { + SEAD_RTTI_OVERRIDE(AnimalEscapeAI, AnimalRoamBase) +public: + explicit AnimalEscapeAI(const InitArg& arg); + ~AnimalEscapeAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa8 + const int* mNumTimesAllowStuck_s{}; + // static_param at offset 0xb0 + const float* mContinueDistance_s{}; + // static_param at offset 0xb8 + const float* mShouldEscapeDistance_s{}; + // static_param at offset 0xc0 + const float* mShouldEscapeDistanceRand_s{}; + // static_param at offset 0xc8 + const float* mPenaltyScale_s{}; + // static_param at offset 0xd0 + const float* mNavMeshRadiusScale_s{}; + // static_param at offset 0xd8 + const float* mFramesStuckOnTerrainAction_s{}; + // static_param at offset 0xe0 + const bool* mIsSendGoalPos_s{}; + // static_param at offset 0xe8 + const bool* mIsUseBeforeAction_s{}; + // static_param at offset 0xf0 + const bool* mIsDynamicallyOffsetNavChar_s{}; + // dynamic_param at offset 0xf8 + sead::Vector3f* mTargetPos_d{}; + // aitree_variable at offset 0x100 + bool* mIsUseTerritory_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalEscapeAfterDamage.cpp b/src/Game/AI/AI/aiAnimalEscapeAfterDamage.cpp new file mode 100644 index 00000000..a15fa5ad --- /dev/null +++ b/src/Game/AI/AI/aiAnimalEscapeAfterDamage.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAnimalEscapeAfterDamage.h" + +namespace uking::ai { + +AnimalEscapeAfterDamage::AnimalEscapeAfterDamage(const InitArg& arg) : AnimalEscapeAI(arg) {} + +AnimalEscapeAfterDamage::~AnimalEscapeAfterDamage() = default; + +bool AnimalEscapeAfterDamage::init_(sead::Heap* heap) { + return AnimalEscapeAI::init_(heap); +} + +void AnimalEscapeAfterDamage::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalEscapeAI::enter_(params); +} + +void AnimalEscapeAfterDamage::leave_() { + AnimalEscapeAI::leave_(); +} + +void AnimalEscapeAfterDamage::loadParams_() { + AnimalEscapeAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalEscapeAfterDamage.h b/src/Game/AI/AI/aiAnimalEscapeAfterDamage.h new file mode 100644 index 00000000..8e74569e --- /dev/null +++ b/src/Game/AI/AI/aiAnimalEscapeAfterDamage.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalEscapeAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalEscapeAfterDamage : public AnimalEscapeAI { + SEAD_RTTI_OVERRIDE(AnimalEscapeAfterDamage, AnimalEscapeAI) +public: + explicit AnimalEscapeAfterDamage(const InitArg& arg); + ~AnimalEscapeAfterDamage() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalFollowTarget.cpp b/src/Game/AI/AI/aiAnimalFollowTarget.cpp new file mode 100644 index 00000000..43d3176d --- /dev/null +++ b/src/Game/AI/AI/aiAnimalFollowTarget.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAnimalFollowTarget.h" + +namespace uking::ai { + +AnimalFollowTarget::AnimalFollowTarget(const InitArg& arg) : HorseFollow(arg) {} + +AnimalFollowTarget::~AnimalFollowTarget() = default; + +bool AnimalFollowTarget::init_(sead::Heap* heap) { + return HorseFollow::init_(heap); +} + +void AnimalFollowTarget::enter_(ksys::act::ai::InlineParamPack* params) { + HorseFollow::enter_(params); +} + +void AnimalFollowTarget::leave_() { + HorseFollow::leave_(); +} + +void AnimalFollowTarget::loadParams_() { + HorseFollow::loadParams_(); + getStaticParam(&mUseLocalOffsetType_s, "UseLocalOffsetType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalFollowTarget.h b/src/Game/AI/AI/aiAnimalFollowTarget.h new file mode 100644 index 00000000..51cdde58 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalFollowTarget.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiHorseFollow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalFollowTarget : public HorseFollow { + SEAD_RTTI_OVERRIDE(AnimalFollowTarget, HorseFollow) +public: + explicit AnimalFollowTarget(const InitArg& arg); + ~AnimalFollowTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const int* mUseLocalOffsetType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalLineOfSightSelector.cpp b/src/Game/AI/AI/aiAnimalLineOfSightSelector.cpp new file mode 100644 index 00000000..7b06b58c --- /dev/null +++ b/src/Game/AI/AI/aiAnimalLineOfSightSelector.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAnimalLineOfSightSelector.h" + +namespace uking::ai { + +AnimalLineOfSightSelector::AnimalLineOfSightSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalLineOfSightSelector::~AnimalLineOfSightSelector() = default; + +bool AnimalLineOfSightSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalLineOfSightSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalLineOfSightSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalLineOfSightSelector::loadParams_() { + getStaticParam(&mStartGear_s, "StartGear"); + getStaticParam(&mMinGear_s, "MinGear"); + getStaticParam(&mMaxGear_s, "MaxGear"); + getStaticParam(&mGearUpRestrictionFrames_s, "GearUpRestrictionFrames"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalLineOfSightSelector.h b/src/Game/AI/AI/aiAnimalLineOfSightSelector.h new file mode 100644 index 00000000..a029724c --- /dev/null +++ b/src/Game/AI/AI/aiAnimalLineOfSightSelector.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalLineOfSightSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalLineOfSightSelector, ksys::act::ai::Ai) +public: + explicit AnimalLineOfSightSelector(const InitArg& arg); + ~AnimalLineOfSightSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mStartGear_s{}; + // static_param at offset 0x40 + const int* mMinGear_s{}; + // static_param at offset 0x48 + const int* mMaxGear_s{}; + // static_param at offset 0x50 + const float* mGearUpRestrictionFrames_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalPreAttack.cpp b/src/Game/AI/AI/aiAnimalPreAttack.cpp new file mode 100644 index 00000000..cfa9955e --- /dev/null +++ b/src/Game/AI/AI/aiAnimalPreAttack.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAnimalPreAttack.h" + +namespace uking::ai { + +AnimalPreAttack::AnimalPreAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalPreAttack::~AnimalPreAttack() = default; + +bool AnimalPreAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalPreAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalPreAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalPreAttack::loadParams_() { + getStaticParam(&mForceEndTime_s, "ForceEndTime"); + getStaticParam(&mKeepDistCheckLength_s, "KeepDistCheckLength"); + getStaticParam(&mBackCliffCheckLength_s, "BackCliffCheckLength"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalPreAttack.h b/src/Game/AI/AI/aiAnimalPreAttack.h new file mode 100644 index 00000000..8e5a07a1 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalPreAttack.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalPreAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalPreAttack, ksys::act::ai::Ai) +public: + explicit AnimalPreAttack(const InitArg& arg); + ~AnimalPreAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mForceEndTime_s{}; + // static_param at offset 0x40 + const float* mKeepDistCheckLength_s{}; + // static_param at offset 0x48 + const float* mBackCliffCheckLength_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRangeKeepMove.cpp b/src/Game/AI/AI/aiAnimalRangeKeepMove.cpp new file mode 100644 index 00000000..1ebda67f --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRangeKeepMove.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiAnimalRangeKeepMove.h" + +namespace uking::ai { + +AnimalRangeKeepMove::AnimalRangeKeepMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalRangeKeepMove::~AnimalRangeKeepMove() = default; + +bool AnimalRangeKeepMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalRangeKeepMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalRangeKeepMove::loadParams_() { + getStaticParam(&mBattleEndTimerMin_s, "BattleEndTimerMin"); + getStaticParam(&mBattleEndTimerMax_s, "BattleEndTimerMax"); + getStaticParam(&mCloseStartDist_s, "CloseStartDist"); + getStaticParam(&mCloseEndDist_s, "CloseEndDist"); + getStaticParam(&mLeaveStartDist_s, "LeaveStartDist"); + getStaticParam(&mLeaveEndDist_s, "LeaveEndDist"); + getStaticParam(&mBattleEndDist_s, "BattleEndDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRangeKeepMove.h b/src/Game/AI/AI/aiAnimalRangeKeepMove.h new file mode 100644 index 00000000..f110c725 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRangeKeepMove.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRangeKeepMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalRangeKeepMove, ksys::act::ai::Ai) +public: + explicit AnimalRangeKeepMove(const InitArg& arg); + ~AnimalRangeKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mBattleEndTimerMin_s{}; + // static_param at offset 0x40 + const int* mBattleEndTimerMax_s{}; + // static_param at offset 0x48 + const float* mCloseStartDist_s{}; + // static_param at offset 0x50 + const float* mCloseEndDist_s{}; + // static_param at offset 0x58 + const float* mLeaveStartDist_s{}; + // static_param at offset 0x60 + const float* mLeaveEndDist_s{}; + // static_param at offset 0x68 + const float* mBattleEndDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.cpp b/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.cpp new file mode 100644 index 00000000..e435bfd5 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h" + +namespace uking::ai { + +AnimalRangeKeepMoveWithLOS::AnimalRangeKeepMoveWithLOS(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +AnimalRangeKeepMoveWithLOS::~AnimalRangeKeepMoveWithLOS() = default; + +bool AnimalRangeKeepMoveWithLOS::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalRangeKeepMoveWithLOS::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalRangeKeepMoveWithLOS::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalRangeKeepMoveWithLOS::loadParams_() { + getStaticParam(&mFindPathBeginTimer_s, "FindPathBeginTimer"); + getStaticParam(&mNoPathTimer_s, "NoPathTimer"); + getStaticParam(&mCloseStartDist_s, "CloseStartDist"); + getStaticParam(&mCloseEndDist_s, "CloseEndDist"); + getStaticParam(&mLeaveStartDist_s, "LeaveStartDist"); + getStaticParam(&mLeaveEndDist_s, "LeaveEndDist"); + getStaticParam(&mBattleEndDist_s, "BattleEndDist"); + getStaticParam(&mDistFailOnUnreachablePath_s, "DistFailOnUnreachablePath"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h b/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h new file mode 100644 index 00000000..bb04ffb9 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRangeKeepMoveWithLOS : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalRangeKeepMoveWithLOS, ksys::act::ai::Ai) +public: + explicit AnimalRangeKeepMoveWithLOS(const InitArg& arg); + ~AnimalRangeKeepMoveWithLOS() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFindPathBeginTimer_s{}; + // static_param at offset 0x40 + const int* mNoPathTimer_s{}; + // static_param at offset 0x48 + const float* mCloseStartDist_s{}; + // static_param at offset 0x50 + const float* mCloseEndDist_s{}; + // static_param at offset 0x58 + const float* mLeaveStartDist_s{}; + // static_param at offset 0x60 + const float* mLeaveEndDist_s{}; + // static_param at offset 0x68 + const float* mBattleEndDist_s{}; + // static_param at offset 0x70 + const float* mDistFailOnUnreachablePath_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoam.cpp b/src/Game/AI/AI/aiAnimalRoam.cpp new file mode 100644 index 00000000..2ce23474 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoam.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiAnimalRoam.h" + +namespace uking::ai { + +AnimalRoam::AnimalRoam(const InitArg& arg) : AnimalRoamBase(arg) {} + +AnimalRoam::~AnimalRoam() = default; + +bool AnimalRoam::init_(sead::Heap* heap) { + return AnimalRoamBase::init_(heap); +} + +void AnimalRoam::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalRoamBase::enter_(params); +} + +void AnimalRoam::leave_() { + AnimalRoamBase::leave_(); +} + +void AnimalRoam::loadParams_() { + AnimalRoamBase::loadParams_(); + getStaticParam(&mFinishChangeCount_s, "FinishChangeCount"); + getStaticParam(&mLimitRadius_s, "LimitRadius"); + getStaticParam(&mChangeWaitRate_s, "ChangeWaitRate"); + getStaticParam(&mFramesStuckOnTerrainAction_s, "FramesStuckOnTerrainAction"); + getStaticParam(&mIsSendGoalPos_s, "IsSendGoalPos"); + getStaticParam(&mCheckValidStartPos_s, "CheckValidStartPos"); + getStaticParam(&mCheckLOS_s, "CheckLOS"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoam.h b/src/Game/AI/AI/aiAnimalRoam.h new file mode 100644 index 00000000..f44f7433 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoam.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalRoamBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRoam : public AnimalRoamBase { + SEAD_RTTI_OVERRIDE(AnimalRoam, AnimalRoamBase) +public: + explicit AnimalRoam(const InitArg& arg); + ~AnimalRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa8 + const int* mFinishChangeCount_s{}; + // static_param at offset 0xb0 + const float* mLimitRadius_s{}; + // static_param at offset 0xb8 + const float* mChangeWaitRate_s{}; + // static_param at offset 0xc0 + const float* mFramesStuckOnTerrainAction_s{}; + // static_param at offset 0xc8 + const bool* mIsSendGoalPos_s{}; + // static_param at offset 0xd0 + const bool* mCheckValidStartPos_s{}; + // static_param at offset 0xd8 + const bool* mCheckLOS_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoamBase.cpp b/src/Game/AI/AI/aiAnimalRoamBase.cpp new file mode 100644 index 00000000..fbc35c90 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoamBase.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiAnimalRoamBase.h" + +namespace uking::ai { + +AnimalRoamBase::AnimalRoamBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalRoamBase::~AnimalRoamBase() = default; + +bool AnimalRoamBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalRoamBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalRoamBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalRoamBase::loadParams_() { + getStaticParam(&mSearchNextPathRadius_s, "SearchNextPathRadius"); + getStaticParam(&mRadiusLimit_s, "RadiusLimit"); + getStaticParam(&mForwardDirDistCoefficient_s, "ForwardDirDistCoefficient"); + getStaticParam(&mDirRandomMinRatio_s, "DirRandomMinRatio"); + getStaticParam(&mDirRangeAngle_s, "DirRangeAngle"); + getStaticParam(&mRejectDistRatio_s, "RejectDistRatio"); + getStaticParam(&mContinueAddSearchAngle_s, "ContinueAddSearchAngle"); + getStaticParam(&mContinueReduceDistRatio_s, "ContinueReduceDistRatio"); + getStaticParam(&mContinueReduceRejectDistRatio_s, "ContinueReduceRejectDistRatio"); + getMapUnitParam(&mTerritoryArea_m, "TerritoryArea"); + getMapUnitParam(&mEnableNoEntryAreaCheck_m, "EnableNoEntryAreaCheck"); + getAITreeVariable(&mFramesStuckOnTerrain_a, "FramesStuckOnTerrain"); + getAITreeVariable(&mIsStuckOnTerrain_a, "IsStuckOnTerrain"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoamBase.h b/src/Game/AI/AI/aiAnimalRoamBase.h new file mode 100644 index 00000000..e01c6d6f --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoamBase.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRoamBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalRoamBase, ksys::act::ai::Ai) +public: + explicit AnimalRoamBase(const InitArg& arg); + ~AnimalRoamBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSearchNextPathRadius_s{}; + // static_param at offset 0x40 + const float* mRadiusLimit_s{}; + // static_param at offset 0x48 + const float* mForwardDirDistCoefficient_s{}; + // static_param at offset 0x50 + const float* mDirRandomMinRatio_s{}; + // static_param at offset 0x58 + const float* mDirRangeAngle_s{}; + // static_param at offset 0x60 + const float* mRejectDistRatio_s{}; + // static_param at offset 0x68 + const float* mContinueAddSearchAngle_s{}; + // static_param at offset 0x70 + const float* mContinueReduceDistRatio_s{}; + // static_param at offset 0x78 + const float* mContinueReduceRejectDistRatio_s{}; + // map_unit_param at offset 0x80 + const float* mTerritoryArea_m{}; + // map_unit_param at offset 0x88 + const bool* mEnableNoEntryAreaCheck_m{}; + // aitree_variable at offset 0x90 + float* mFramesStuckOnTerrain_a{}; + // aitree_variable at offset 0x98 + bool* mIsStuckOnTerrain_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoamCheckWater.cpp b/src/Game/AI/AI/aiAnimalRoamCheckWater.cpp new file mode 100644 index 00000000..526671ec --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoamCheckWater.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAnimalRoamCheckWater.h" + +namespace uking::ai { + +AnimalRoamCheckWater::AnimalRoamCheckWater(const InitArg& arg) : AnimalRoam(arg) {} + +AnimalRoamCheckWater::~AnimalRoamCheckWater() = default; + +bool AnimalRoamCheckWater::init_(sead::Heap* heap) { + return AnimalRoam::init_(heap); +} + +void AnimalRoamCheckWater::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalRoam::enter_(params); +} + +void AnimalRoamCheckWater::leave_() { + AnimalRoam::leave_(); +} + +void AnimalRoamCheckWater::loadParams_() { + AnimalRoam::loadParams_(); + getStaticParam(&mWaterLevelLimitLower_s, "WaterLevelLimitLower"); + getStaticParam(&mWaterLevelLimitUpper_s, "WaterLevelLimitUpper"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRoamCheckWater.h b/src/Game/AI/AI/aiAnimalRoamCheckWater.h new file mode 100644 index 00000000..c9c72e68 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRoamCheckWater.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalRoam.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRoamCheckWater : public AnimalRoam { + SEAD_RTTI_OVERRIDE(AnimalRoamCheckWater, AnimalRoam) +public: + explicit AnimalRoamCheckWater(const InitArg& arg); + ~AnimalRoamCheckWater() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const float* mWaterLevelLimitLower_s{}; + // static_param at offset 0x100 + const float* mWaterLevelLimitUpper_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRushAttack.cpp b/src/Game/AI/AI/aiAnimalRushAttack.cpp new file mode 100644 index 00000000..517de7d9 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRushAttack.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAnimalRushAttack.h" + +namespace uking::ai { + +AnimalRushAttack::AnimalRushAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AnimalRushAttack::~AnimalRushAttack() = default; + +bool AnimalRushAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AnimalRushAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AnimalRushAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AnimalRushAttack::loadParams_() { + getStaticParam(&mUpdateTargetPosTime_s, "UpdateTargetPosTime"); + getStaticParam(&mAttackPosOffsetLength_s, "AttackPosOffsetLength"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalRushAttack.h b/src/Game/AI/AI/aiAnimalRushAttack.h new file mode 100644 index 00000000..0aaf6f02 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalRushAttack.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalRushAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AnimalRushAttack, ksys::act::ai::Ai) +public: + explicit AnimalRushAttack(const InitArg& arg); + ~AnimalRushAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpdateTargetPosTime_s{}; + // static_param at offset 0x40 + const float* mAttackPosOffsetLength_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalTimelineAI.cpp b/src/Game/AI/AI/aiAnimalTimelineAI.cpp new file mode 100644 index 00000000..e45f5ade --- /dev/null +++ b/src/Game/AI/AI/aiAnimalTimelineAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAnimalTimelineAI.h" + +namespace uking::ai { + +AnimalTimelineAI::AnimalTimelineAI(const InitArg& arg) : TimelineAI(arg) {} + +AnimalTimelineAI::~AnimalTimelineAI() = default; + +bool AnimalTimelineAI::init_(sead::Heap* heap) { + return TimelineAI::init_(heap); +} + +void AnimalTimelineAI::enter_(ksys::act::ai::InlineParamPack* params) { + TimelineAI::enter_(params); +} + +void AnimalTimelineAI::leave_() { + TimelineAI::leave_(); +} + +void AnimalTimelineAI::loadParams_() { + TimelineAI::loadParams_(); + getAITreeVariable(&mDomesticAnimalRailName_a, "DomesticAnimalRailName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAnimalTimelineAI.h b/src/Game/AI/AI/aiAnimalTimelineAI.h new file mode 100644 index 00000000..79a82e22 --- /dev/null +++ b/src/Game/AI/AI/aiAnimalTimelineAI.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTimelineAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AnimalTimelineAI : public TimelineAI { + SEAD_RTTI_OVERRIDE(AnimalTimelineAI, TimelineAI) +public: + explicit AnimalTimelineAI(const InitArg& arg); + ~AnimalTimelineAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x40 + sead::SafeString* mDomesticAnimalRailName_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.cpp b/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.cpp new file mode 100644 index 00000000..1fa8efd3 --- /dev/null +++ b/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiAppearFromTargetFrontAfterChase.h" + +namespace uking::ai { + +AppearFromTargetFrontAfterChase::AppearFromTargetFrontAfterChase(const InitArg& arg) + : AppearNearTarget(arg) {} + +AppearFromTargetFrontAfterChase::~AppearFromTargetFrontAfterChase() = default; + +void AppearFromTargetFrontAfterChase::enter_(ksys::act::ai::InlineParamPack* params) { + AppearNearTarget::enter_(params); +} + +void AppearFromTargetFrontAfterChase::leave_() { + AppearNearTarget::leave_(); +} + +void AppearFromTargetFrontAfterChase::loadParams_() { + AppearNearTarget::loadParams_(); + getStaticParam(&mAppearDist_s, "AppearDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.h b/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.h new file mode 100644 index 00000000..bdee425b --- /dev/null +++ b/src/Game/AI/AI/aiAppearFromTargetFrontAfterChase.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiAppearNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AppearFromTargetFrontAfterChase : public AppearNearTarget { + SEAD_RTTI_OVERRIDE(AppearFromTargetFrontAfterChase, AppearNearTarget) +public: + explicit AppearFromTargetFrontAfterChase(const InitArg& arg); + ~AppearFromTargetFrontAfterChase() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mAppearDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearFromTargetFrontGround.cpp b/src/Game/AI/AI/aiAppearFromTargetFrontGround.cpp new file mode 100644 index 00000000..7b7d1cc6 --- /dev/null +++ b/src/Game/AI/AI/aiAppearFromTargetFrontGround.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAppearFromTargetFrontGround.h" + +namespace uking::ai { + +AppearFromTargetFrontGround::AppearFromTargetFrontGround(const InitArg& arg) + : AppearNearTarget(arg) {} + +AppearFromTargetFrontGround::~AppearFromTargetFrontGround() = default; + +bool AppearFromTargetFrontGround::init_(sead::Heap* heap) { + return AppearNearTarget::init_(heap); +} + +void AppearFromTargetFrontGround::enter_(ksys::act::ai::InlineParamPack* params) { + AppearNearTarget::enter_(params); +} + +void AppearFromTargetFrontGround::leave_() { + AppearNearTarget::leave_(); +} + +void AppearFromTargetFrontGround::loadParams_() { + AppearNearTarget::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearFromTargetFrontGround.h b/src/Game/AI/AI/aiAppearFromTargetFrontGround.h new file mode 100644 index 00000000..a65e83ab --- /dev/null +++ b/src/Game/AI/AI/aiAppearFromTargetFrontGround.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAppearNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AppearFromTargetFrontGround : public AppearNearTarget { + SEAD_RTTI_OVERRIDE(AppearFromTargetFrontGround, AppearNearTarget) +public: + explicit AppearFromTargetFrontGround(const InitArg& arg); + ~AppearFromTargetFrontGround() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearNearTarget.cpp b/src/Game/AI/AI/aiAppearNearTarget.cpp new file mode 100644 index 00000000..65095d53 --- /dev/null +++ b/src/Game/AI/AI/aiAppearNearTarget.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAppearNearTarget.h" + +namespace uking::ai { + +AppearNearTarget::AppearNearTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AppearNearTarget::~AppearNearTarget() = default; + +bool AppearNearTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AppearNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AppearNearTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AppearNearTarget::loadParams_() { + getStaticParam(&mDist_s, "Dist"); + getStaticParam(&mTeraDist_s, "TeraDist"); + getMapUnitParam(&mNearCreateAppearID_m, "NearCreateAppearID"); + getAITreeVariable(&mIsStopFallCheck_a, "IsStopFallCheck"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearNearTarget.h b/src/Game/AI/AI/aiAppearNearTarget.h new file mode 100644 index 00000000..b846acb4 --- /dev/null +++ b/src/Game/AI/AI/aiAppearNearTarget.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AppearNearTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AppearNearTarget, ksys::act::ai::Ai) +public: + explicit AppearNearTarget(const InitArg& arg); + ~AppearNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDist_s{}; + // static_param at offset 0x40 + const float* mTeraDist_s{}; + // map_unit_param at offset 0x48 + const int* mNearCreateAppearID_m{}; + // aitree_variable at offset 0x50 + bool* mIsStopFallCheck_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.cpp b/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.cpp new file mode 100644 index 00000000..9226183e --- /dev/null +++ b/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h" + +namespace uking::ai { + +AppearNearTargetOutOfScrnGnd::AppearNearTargetOutOfScrnGnd(const InitArg& arg) + : AppearNearTarget(arg) {} + +AppearNearTargetOutOfScrnGnd::~AppearNearTargetOutOfScrnGnd() = default; + +bool AppearNearTargetOutOfScrnGnd::init_(sead::Heap* heap) { + return AppearNearTarget::init_(heap); +} + +void AppearNearTargetOutOfScrnGnd::enter_(ksys::act::ai::InlineParamPack* params) { + AppearNearTarget::enter_(params); +} + +void AppearNearTargetOutOfScrnGnd::leave_() { + AppearNearTarget::leave_(); +} + +void AppearNearTargetOutOfScrnGnd::loadParams_() { + AppearNearTarget::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h b/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h new file mode 100644 index 00000000..d568500d --- /dev/null +++ b/src/Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAppearNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AppearNearTargetOutOfScrnGnd : public AppearNearTarget { + SEAD_RTTI_OVERRIDE(AppearNearTargetOutOfScrnGnd, AppearNearTarget) +public: + explicit AppearNearTargetOutOfScrnGnd(const InitArg& arg); + ~AppearNearTargetOutOfScrnGnd() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArmorSearchKorokRoot.cpp b/src/Game/AI/AI/aiArmorSearchKorokRoot.cpp new file mode 100644 index 00000000..37afeb1b --- /dev/null +++ b/src/Game/AI/AI/aiArmorSearchKorokRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiArmorSearchKorokRoot.h" + +namespace uking::ai { + +ArmorSearchKorokRoot::ArmorSearchKorokRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ArmorSearchKorokRoot::~ArmorSearchKorokRoot() = default; + +bool ArmorSearchKorokRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ArmorSearchKorokRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ArmorSearchKorokRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ArmorSearchKorokRoot::loadParams_() { + getStaticParam(&mSearchKorokDis_s, "SearchKorokDis"); + getStaticParam(&mSearchRefreshFrame_s, "SearchRefreshFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArmorSearchKorokRoot.h b/src/Game/AI/AI/aiArmorSearchKorokRoot.h new file mode 100644 index 00000000..8c6014bc --- /dev/null +++ b/src/Game/AI/AI/aiArmorSearchKorokRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ArmorSearchKorokRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ArmorSearchKorokRoot, ksys::act::ai::Ai) +public: + explicit ArmorSearchKorokRoot(const InitArg& arg); + ~ArmorSearchKorokRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSearchKorokDis_s{}; + // static_param at offset 0x40 + const float* mSearchRefreshFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAroundEnemyCheckSelect.cpp b/src/Game/AI/AI/aiAroundEnemyCheckSelect.cpp new file mode 100644 index 00000000..815132ab --- /dev/null +++ b/src/Game/AI/AI/aiAroundEnemyCheckSelect.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiAroundEnemyCheckSelect.h" + +namespace uking::ai { + +AroundEnemyCheckSelect::AroundEnemyCheckSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AroundEnemyCheckSelect::~AroundEnemyCheckSelect() = default; + +void AroundEnemyCheckSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AroundEnemyCheckSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AroundEnemyCheckSelect::loadParams_() { + getStaticParam(&mCheckDist_s, "CheckDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAroundEnemyCheckSelect.h b/src/Game/AI/AI/aiAroundEnemyCheckSelect.h new file mode 100644 index 00000000..d32eb64a --- /dev/null +++ b/src/Game/AI/AI/aiAroundEnemyCheckSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AroundEnemyCheckSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AroundEnemyCheckSelect, ksys::act::ai::Ai) +public: + explicit AroundEnemyCheckSelect(const InitArg& arg); + ~AroundEnemyCheckSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrow.cpp b/src/Game/AI/AI/aiArrow.cpp new file mode 100644 index 00000000..f6072e0c --- /dev/null +++ b/src/Game/AI/AI/aiArrow.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiArrow.h" + +namespace uking::ai { + +Arrow::Arrow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +Arrow::~Arrow() = default; + +bool Arrow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void Arrow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void Arrow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void Arrow::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrow.h b/src/Game/AI/AI/aiArrow.h new file mode 100644 index 00000000..9f2e4150 --- /dev/null +++ b/src/Game/AI/AI/aiArrow.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Arrow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Arrow, ksys::act::ai::Ai) +public: + explicit Arrow(const InitArg& arg); + ~Arrow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowChargeAndShoot.cpp b/src/Game/AI/AI/aiArrowChargeAndShoot.cpp new file mode 100644 index 00000000..e1ded1a9 --- /dev/null +++ b/src/Game/AI/AI/aiArrowChargeAndShoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiArrowChargeAndShoot.h" + +namespace uking::ai { + +ArrowChargeAndShoot::ArrowChargeAndShoot(const InitArg& arg) : SeqTwoAction(arg) {} + +ArrowChargeAndShoot::~ArrowChargeAndShoot() = default; + +bool ArrowChargeAndShoot::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void ArrowChargeAndShoot::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void ArrowChargeAndShoot::leave_() { + SeqTwoAction::leave_(); +} + +void ArrowChargeAndShoot::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowChargeAndShoot.h b/src/Game/AI/AI/aiArrowChargeAndShoot.h new file mode 100644 index 00000000..97fdbae7 --- /dev/null +++ b/src/Game/AI/AI/aiArrowChargeAndShoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ArrowChargeAndShoot : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(ArrowChargeAndShoot, SeqTwoAction) +public: + explicit ArrowChargeAndShoot(const InitArg& arg); + ~ArrowChargeAndShoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowDelete.cpp b/src/Game/AI/AI/aiArrowDelete.cpp new file mode 100644 index 00000000..3f0dba9c --- /dev/null +++ b/src/Game/AI/AI/aiArrowDelete.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiArrowDelete.h" + +namespace uking::ai { + +ArrowDelete::ArrowDelete(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ArrowDelete::~ArrowDelete() = default; + +bool ArrowDelete::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ArrowDelete::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ArrowDelete::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ArrowDelete::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowDelete.h b/src/Game/AI/AI/aiArrowDelete.h new file mode 100644 index 00000000..d10548c1 --- /dev/null +++ b/src/Game/AI/AI/aiArrowDelete.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ArrowDelete : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ArrowDelete, ksys::act::ai::Ai) +public: + explicit ArrowDelete(const InitArg& arg); + ~ArrowDelete() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowStickAndPick.cpp b/src/Game/AI/AI/aiArrowStickAndPick.cpp new file mode 100644 index 00000000..5ae75571 --- /dev/null +++ b/src/Game/AI/AI/aiArrowStickAndPick.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiArrowStickAndPick.h" + +namespace uking::ai { + +ArrowStickAndPick::ArrowStickAndPick(const InitArg& arg) : CommonPickedItem(arg) {} + +ArrowStickAndPick::~ArrowStickAndPick() = default; + +void ArrowStickAndPick::enter_(ksys::act::ai::InlineParamPack* params) { + CommonPickedItem::enter_(params); +} + +void ArrowStickAndPick::loadParams_() { + CommonPickedItem::loadParams_(); + getDynamicParam(&mStickPos_d, "StickPos"); + getDynamicParam(&mStickPosDiv_d, "StickPosDiv"); + getDynamicParam(&mStickActor_d, "StickActor"); + getDynamicParam(&mStickBodyName_d, "StickBodyName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiArrowStickAndPick.h b/src/Game/AI/AI/aiArrowStickAndPick.h new file mode 100644 index 00000000..a6b514c4 --- /dev/null +++ b/src/Game/AI/AI/aiArrowStickAndPick.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiCommonPickedItem.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ArrowStickAndPick : public CommonPickedItem { + SEAD_RTTI_OVERRIDE(ArrowStickAndPick, CommonPickedItem) +public: + explicit ArrowStickAndPick(const InitArg& arg); + ~ArrowStickAndPick() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xe8 + sead::Vector3f* mStickPos_d{}; + // dynamic_param at offset 0xf0 + sead::Vector3f* mStickPosDiv_d{}; + // dynamic_param at offset 0xf8 + ksys::act::BaseProcLink* mStickActor_d{}; + // dynamic_param at offset 0x100 + sead::SafeString* mStickBodyName_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattle.cpp b/src/Game/AI/AI/aiAssassinBattle.cpp new file mode 100644 index 00000000..646b4c50 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattle.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiAssassinBattle.h" + +namespace uking::ai { + +AssassinBattle::AssassinBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AssassinBattle::~AssassinBattle() = default; + +bool AssassinBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinBattle::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mTiredTime_s, "TiredTime"); + getStaticParam(&mWarpDist_s, "WarpDist"); + getStaticParam(&mBattleBaseDist_s, "BattleBaseDist"); + getStaticParam(&mFirstAttackResetDist_s, "FirstAttackResetDist"); + getStaticParam(&mBattleDistOutDist_s, "BattleDistOutDist"); + getStaticParam(&mFirstAttackAngle_s, "FirstAttackAngle"); + getStaticParam(&mTiredDist_s, "TiredDist"); + getStaticParam(&mFirstAttackDist_s, "FirstAttackDist"); + getStaticParam(&mNearTiredOffset_s, "NearTiredOffset"); + getMapUnitParam(&mTerritoryArea_m, "TerritoryArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattle.h b/src/Game/AI/AI/aiAssassinBattle.h new file mode 100644 index 00000000..92b09ce0 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattle.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinBattle, ksys::act::ai::Ai) +public: + explicit AssassinBattle(const InitArg& arg); + ~AssassinBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mTiredTime_s{}; + // static_param at offset 0x48 + const float* mWarpDist_s{}; + // static_param at offset 0x50 + const float* mBattleBaseDist_s{}; + // static_param at offset 0x58 + const float* mFirstAttackResetDist_s{}; + // static_param at offset 0x60 + const float* mBattleDistOutDist_s{}; + // static_param at offset 0x68 + const float* mFirstAttackAngle_s{}; + // static_param at offset 0x70 + const float* mTiredDist_s{}; + // static_param at offset 0x78 + const float* mFirstAttackDist_s{}; + // static_param at offset 0x80 + const float* mNearTiredOffset_s{}; + // map_unit_param at offset 0x88 + const float* mTerritoryArea_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattleMove.cpp b/src/Game/AI/AI/aiAssassinBattleMove.cpp new file mode 100644 index 00000000..4520f697 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattleMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinBattleMove.h" + +namespace uking::ai { + +AssassinBattleMove::AssassinBattleMove(const InitArg& arg) : EnemyRangeKeepMove(arg) {} + +AssassinBattleMove::~AssassinBattleMove() = default; + +bool AssassinBattleMove::init_(sead::Heap* heap) { + return EnemyRangeKeepMove::init_(heap); +} + +void AssassinBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRangeKeepMove::enter_(params); +} + +void AssassinBattleMove::leave_() { + EnemyRangeKeepMove::leave_(); +} + +void AssassinBattleMove::loadParams_() { + EnemyRangeKeepMove::loadParams_(); + getStaticParam(&mWarpDist_s, "WarpDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattleMove.h b/src/Game/AI/AI/aiAssassinBattleMove.h new file mode 100644 index 00000000..414d9a6d --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattleMove.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBattleMove : public EnemyRangeKeepMove { + SEAD_RTTI_OVERRIDE(AssassinBattleMove, EnemyRangeKeepMove) +public: + explicit AssassinBattleMove(const InitArg& arg); + ~AssassinBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x110 + const float* mWarpDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattleRange.cpp b/src/Game/AI/AI/aiAssassinBattleRange.cpp new file mode 100644 index 00000000..51b92134 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattleRange.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiAssassinBattleRange.h" + +namespace uking::ai { + +AssassinBattleRange::AssassinBattleRange(const InitArg& arg) : EnemyBattle(arg) {} + +AssassinBattleRange::~AssassinBattleRange() = default; + +bool AssassinBattleRange::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void AssassinBattleRange::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void AssassinBattleRange::leave_() { + EnemyBattle::leave_(); +} + +void AssassinBattleRange::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mScapeGoatCheckInterval_s, "ScapeGoatCheckInterval"); + getStaticParam(&mServiceCheckInterval_s, "ServiceCheckInterval"); + getStaticParam(&mServicePer_s, "ServicePer"); + getStaticParam(&mScapeGoatPer_s, "ScapeGoatPer"); + getStaticParam(&mServiceDist_s, "ServiceDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBattleRange.h b/src/Game/AI/AI/aiAssassinBattleRange.h new file mode 100644 index 00000000..9f78be66 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBattleRange.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBattleRange : public EnemyBattle { + SEAD_RTTI_OVERRIDE(AssassinBattleRange, EnemyBattle) +public: + explicit AssassinBattleRange(const InitArg& arg); + ~AssassinBattleRange() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mScapeGoatCheckInterval_s{}; + // static_param at offset 0x98 + const int* mServiceCheckInterval_s{}; + // static_param at offset 0xa0 + const int* mServicePer_s{}; + // static_param at offset 0xa8 + const float* mScapeGoatPer_s{}; + // static_param at offset 0xb0 + const float* mServiceDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossAttackSeq.cpp b/src/Game/AI/AI/aiAssassinBossAttackSeq.cpp new file mode 100644 index 00000000..8347f734 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossAttackSeq.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAssassinBossAttackSeq.h" + +namespace uking::ai { + +AssassinBossAttackSeq::AssassinBossAttackSeq(const InitArg& arg) : SeqTwoAction(arg) {} + +AssassinBossAttackSeq::~AssassinBossAttackSeq() = default; + +bool AssassinBossAttackSeq::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void AssassinBossAttackSeq::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void AssassinBossAttackSeq::leave_() { + SeqTwoAction::leave_(); +} + +void AssassinBossAttackSeq::loadParams_() { + SeqTwoAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossAttackSeq.h b/src/Game/AI/AI/aiAssassinBossAttackSeq.h new file mode 100644 index 00000000..75e741ed --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossAttackSeq.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossAttackSeq : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(AssassinBossAttackSeq, SeqTwoAction) +public: + explicit AssassinBossAttackSeq(const InitArg& arg); + ~AssassinBossAttackSeq() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossBattle.cpp b/src/Game/AI/AI/aiAssassinBossBattle.cpp new file mode 100644 index 00000000..afc16f5a --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossBattle.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiAssassinBossBattle.h" + +namespace uking::ai { + +AssassinBossBattle::AssassinBossBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AssassinBossBattle::~AssassinBossBattle() = default; + +bool AssassinBossBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinBossBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinBossBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinBossBattle::loadParams_() { + getStaticParam(&mRetFrmDmgAtkTimer_s, "RetFrmDmgAtkTimer"); + getStaticParam(&mIntervalIntensity_s, "IntervalIntensity"); + getStaticParam(&mHomeDist_s, "HomeDist"); + getStaticParam(&mBattleDist_s, "BattleDist"); + getStaticParam(&mDyingLifeRatio_s, "DyingLifeRatio"); + getStaticParam(&mBattleDistSecond_s, "BattleDistSecond"); + getStaticParam(&mAnchorName_s, "AnchorName"); + getStaticParam(&mReturnHeight_s, "ReturnHeight"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossBattle.h b/src/Game/AI/AI/aiAssassinBossBattle.h new file mode 100644 index 00000000..4132bfc1 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossBattle.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinBossBattle, ksys::act::ai::Ai) +public: + explicit AssassinBossBattle(const InitArg& arg); + ~AssassinBossBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRetFrmDmgAtkTimer_s{}; + // static_param at offset 0x40 + const float* mIntervalIntensity_s{}; + // static_param at offset 0x48 + const float* mHomeDist_s{}; + // static_param at offset 0x50 + const float* mBattleDist_s{}; + // static_param at offset 0x58 + const float* mDyingLifeRatio_s{}; + // static_param at offset 0x60 + const float* mBattleDistSecond_s{}; + // static_param at offset 0x68 + const float* mReturnHeight_s{}; + // static_param at offset 0x70 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.cpp b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.cpp new file mode 100644 index 00000000..8bb3400e --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAssassinBossEscapeFromTarget.h" + +namespace uking::ai { + +AssassinBossEscapeFromTarget::AssassinBossEscapeFromTarget(const InitArg& arg) + : SimpleEscapeFromTarget(arg) {} + +AssassinBossEscapeFromTarget::~AssassinBossEscapeFromTarget() = default; + +bool AssassinBossEscapeFromTarget::init_(sead::Heap* heap) { + return SimpleEscapeFromTarget::init_(heap); +} + +void AssassinBossEscapeFromTarget::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleEscapeFromTarget::enter_(params); +} + +void AssassinBossEscapeFromTarget::leave_() { + SimpleEscapeFromTarget::leave_(); +} + +void AssassinBossEscapeFromTarget::loadParams_() { + SimpleEscapeFromTarget::loadParams_(); + getStaticParam(&mAnchorName_s, "AnchorName"); + getStaticParam(&mCheckDist_s, "CheckDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h new file mode 100644 index 00000000..095cee9c --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossEscapeFromTarget.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleEscapeFromTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossEscapeFromTarget : public SimpleEscapeFromTarget { + SEAD_RTTI_OVERRIDE(AssassinBossEscapeFromTarget, SimpleEscapeFromTarget) +public: + explicit AssassinBossEscapeFromTarget(const InitArg& arg); + ~AssassinBossEscapeFromTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const float* mCheckDist_s{}; + // static_param at offset 0x70 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstBattle.cpp b/src/Game/AI/AI/aiAssassinBossFirstBattle.cpp new file mode 100644 index 00000000..53175547 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAssassinBossFirstBattle.h" + +namespace uking::ai { + +AssassinBossFirstBattle::AssassinBossFirstBattle(const InitArg& arg) : EnemyBattle(arg) {} + +AssassinBossFirstBattle::~AssassinBossFirstBattle() = default; + +bool AssassinBossFirstBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void AssassinBossFirstBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void AssassinBossFirstBattle::leave_() { + EnemyBattle::leave_(); +} + +void AssassinBossFirstBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mIronBallNum_s, "IronBallNum"); + getStaticParam(&mIronBallKeyName_s, "IronBallKeyName"); + getStaticParam(&mGuardAngle_s, "GuardAngle"); + getStaticParam(&mAttackInterseptDist_s, "AttackInterseptDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstBattle.h b/src/Game/AI/AI/aiAssassinBossFirstBattle.h new file mode 100644 index 00000000..8dc23a2c --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstBattle.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossFirstBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(AssassinBossFirstBattle, EnemyBattle) +public: + explicit AssassinBossFirstBattle(const InitArg& arg); + ~AssassinBossFirstBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mIronBallNum_s{}; + // static_param at offset 0x98 + const float* mGuardAngle_s{}; + // static_param at offset 0xa0 + const float* mAttackInterseptDist_s{}; + // static_param at offset 0xa8 + sead::SafeString mIronBallKeyName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstBattleMove.cpp b/src/Game/AI/AI/aiAssassinBossFirstBattleMove.cpp new file mode 100644 index 00000000..574e00c0 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstBattleMove.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAssassinBossFirstBattleMove.h" + +namespace uking::ai { + +AssassinBossFirstBattleMove::AssassinBossFirstBattleMove(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +AssassinBossFirstBattleMove::~AssassinBossFirstBattleMove() = default; + +bool AssassinBossFirstBattleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinBossFirstBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinBossFirstBattleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinBossFirstBattleMove::loadParams_() { + getStaticParam(&mDistXZ_s, "DistXZ"); + getStaticParam(&mCheckTargetDist_s, "CheckTargetDist"); + getStaticParam(&mTooFarXZ_s, "TooFarXZ"); + getStaticParam(&mAnchorName_s, "AnchorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstBattleMove.h b/src/Game/AI/AI/aiAssassinBossFirstBattleMove.h new file mode 100644 index 00000000..65e7313e --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstBattleMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossFirstBattleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinBossFirstBattleMove, ksys::act::ai::Ai) +public: + explicit AssassinBossFirstBattleMove(const InitArg& arg); + ~AssassinBossFirstBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistXZ_s{}; + // static_param at offset 0x40 + const float* mCheckTargetDist_s{}; + // static_param at offset 0x48 + const float* mTooFarXZ_s{}; + // static_param at offset 0x50 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.cpp b/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.cpp new file mode 100644 index 00000000..39da0e52 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h" + +namespace uking::ai { + +AssassinBossFirstRangeKeepMove::AssassinBossFirstRangeKeepMove(const InitArg& arg) + : EnemyRangeKeepMove(arg) {} + +AssassinBossFirstRangeKeepMove::~AssassinBossFirstRangeKeepMove() = default; + +bool AssassinBossFirstRangeKeepMove::init_(sead::Heap* heap) { + return EnemyRangeKeepMove::init_(heap); +} + +void AssassinBossFirstRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRangeKeepMove::enter_(params); +} + +void AssassinBossFirstRangeKeepMove::leave_() { + EnemyRangeKeepMove::leave_(); +} + +void AssassinBossFirstRangeKeepMove::loadParams_() { + EnemyRangeKeepMove::loadParams_(); + getStaticParam(&mNoMoveAnchorDist_s, "NoMoveAnchorDist"); + getStaticParam(&mAnchorName_s, "AnchorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h b/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h new file mode 100644 index 00000000..ff6cbcc1 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossFirstRangeKeepMove : public EnemyRangeKeepMove { + SEAD_RTTI_OVERRIDE(AssassinBossFirstRangeKeepMove, EnemyRangeKeepMove) +public: + explicit AssassinBossFirstRangeKeepMove(const InitArg& arg); + ~AssassinBossFirstRangeKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x110 + const float* mNoMoveAnchorDist_s{}; + // static_param at offset 0x118 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstRoot.cpp b/src/Game/AI/AI/aiAssassinBossFirstRoot.cpp new file mode 100644 index 00000000..16a2a7e9 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAssassinBossFirstRoot.h" + +namespace uking::ai { + +AssassinBossFirstRoot::AssassinBossFirstRoot(const InitArg& arg) : AssassinBossRootBase(arg) {} + +AssassinBossFirstRoot::~AssassinBossFirstRoot() = default; + +bool AssassinBossFirstRoot::init_(sead::Heap* heap) { + return AssassinBossRootBase::init_(heap); +} + +void AssassinBossFirstRoot::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinBossRootBase::enter_(params); +} + +void AssassinBossFirstRoot::leave_() { + AssassinBossRootBase::leave_(); +} + +void AssassinBossFirstRoot::loadParams_() { + AssassinBossRootBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossFirstRoot.h b/src/Game/AI/AI/aiAssassinBossFirstRoot.h new file mode 100644 index 00000000..761819dd --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossFirstRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinBossRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossFirstRoot : public AssassinBossRootBase { + SEAD_RTTI_OVERRIDE(AssassinBossFirstRoot, AssassinBossRootBase) +public: + explicit AssassinBossFirstRoot(const InitArg& arg); + ~AssassinBossFirstRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossIronBallAttack.cpp b/src/Game/AI/AI/aiAssassinBossIronBallAttack.cpp new file mode 100644 index 00000000..41328055 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossIronBallAttack.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinBossIronBallAttack.h" + +namespace uking::ai { + +AssassinBossIronBallAttack::AssassinBossIronBallAttack(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +AssassinBossIronBallAttack::~AssassinBossIronBallAttack() = default; + +bool AssassinBossIronBallAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinBossIronBallAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinBossIronBallAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinBossIronBallAttack::loadParams_() { + getStaticParam(&mIronBallNum_s, "IronBallNum"); + getStaticParam(&mIronBallPartsName_s, "IronBallPartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossIronBallAttack.h b/src/Game/AI/AI/aiAssassinBossIronBallAttack.h new file mode 100644 index 00000000..3547ea87 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossIronBallAttack.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossIronBallAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinBossIronBallAttack, ksys::act::ai::Ai) +public: + explicit AssassinBossIronBallAttack(const InitArg& arg); + ~AssassinBossIronBallAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIronBallNum_s{}; + // static_param at offset 0x40 + sead::SafeString mIronBallPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossLastAttack.cpp b/src/Game/AI/AI/aiAssassinBossLastAttack.cpp new file mode 100644 index 00000000..9a4eab0a --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossLastAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinBossLastAttack.h" + +namespace uking::ai { + +AssassinBossLastAttack::AssassinBossLastAttack(const InitArg& arg) + : AssassinBossIronBallAttack(arg) {} + +AssassinBossLastAttack::~AssassinBossLastAttack() = default; + +bool AssassinBossLastAttack::init_(sead::Heap* heap) { + return AssassinBossIronBallAttack::init_(heap); +} + +void AssassinBossLastAttack::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinBossIronBallAttack::enter_(params); +} + +void AssassinBossLastAttack::leave_() { + AssassinBossIronBallAttack::leave_(); +} + +void AssassinBossLastAttack::loadParams_() { + AssassinBossIronBallAttack::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossLastAttack.h b/src/Game/AI/AI/aiAssassinBossLastAttack.h new file mode 100644 index 00000000..2a52478b --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossLastAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinBossIronBallAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossLastAttack : public AssassinBossIronBallAttack { + SEAD_RTTI_OVERRIDE(AssassinBossLastAttack, AssassinBossIronBallAttack) +public: + explicit AssassinBossLastAttack(const InitArg& arg); + ~AssassinBossLastAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossRoot.cpp b/src/Game/AI/AI/aiAssassinBossRoot.cpp new file mode 100644 index 00000000..8b247756 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinBossRoot.h" + +namespace uking::ai { + +AssassinBossRoot::AssassinBossRoot(const InitArg& arg) : AssassinBossRootBase(arg) {} + +AssassinBossRoot::~AssassinBossRoot() = default; + +bool AssassinBossRoot::init_(sead::Heap* heap) { + return AssassinBossRootBase::init_(heap); +} + +void AssassinBossRoot::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinBossRootBase::enter_(params); +} + +void AssassinBossRoot::leave_() { + AssassinBossRootBase::leave_(); +} + +void AssassinBossRoot::loadParams_() { + AssassinBossRootBase::loadParams_(); + getStaticParam(&mIronBallNum_s, "IronBallNum"); + getStaticParam(&mBattleAvoidNum_s, "BattleAvoidNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossRoot.h b/src/Game/AI/AI/aiAssassinBossRoot.h new file mode 100644 index 00000000..5b6d24b7 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinBossRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossRoot : public AssassinBossRootBase { + SEAD_RTTI_OVERRIDE(AssassinBossRoot, AssassinBossRootBase) +public: + explicit AssassinBossRoot(const InitArg& arg); + ~AssassinBossRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x2b0 + const int* mIronBallNum_s{}; + // static_param at offset 0x2b8 + const int* mBattleAvoidNum_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossRootBase.cpp b/src/Game/AI/AI/aiAssassinBossRootBase.cpp new file mode 100644 index 00000000..301496c4 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossRootBase.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinBossRootBase.h" + +namespace uking::ai { + +AssassinBossRootBase::AssassinBossRootBase(const InitArg& arg) : EnemyRoot(arg) {} + +AssassinBossRootBase::~AssassinBossRootBase() = default; + +bool AssassinBossRootBase::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void AssassinBossRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void AssassinBossRootBase::leave_() { + EnemyRoot::leave_(); +} + +void AssassinBossRootBase::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mChangeModeLifeRatio_s, "ChangeModeLifeRatio"); + getStaticParam(&mRockBallDamage_s, "RockBallDamage"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinBossRootBase.h b/src/Game/AI/AI/aiAssassinBossRootBase.h new file mode 100644 index 00000000..5521008f --- /dev/null +++ b/src/Game/AI/AI/aiAssassinBossRootBase.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinBossRootBase : public EnemyRoot { + SEAD_RTTI_OVERRIDE(AssassinBossRootBase, EnemyRoot) +public: + explicit AssassinBossRootBase(const InitArg& arg); + ~AssassinBossRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mRockBallDamage_s{}; + // static_param at offset 0x1e0 + const float* mChangeModeLifeRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinCallSelect.cpp b/src/Game/AI/AI/aiAssassinCallSelect.cpp new file mode 100644 index 00000000..74a063ab --- /dev/null +++ b/src/Game/AI/AI/aiAssassinCallSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinCallSelect.h" + +namespace uking::ai { + +AssassinCallSelect::AssassinCallSelect(const InitArg& arg) : EnemyCalledAppear(arg) {} + +AssassinCallSelect::~AssassinCallSelect() = default; + +bool AssassinCallSelect::init_(sead::Heap* heap) { + return EnemyCalledAppear::init_(heap); +} + +void AssassinCallSelect::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyCalledAppear::enter_(params); +} + +void AssassinCallSelect::leave_() { + EnemyCalledAppear::leave_(); +} + +void AssassinCallSelect::loadParams_() { + EnemyCalledAppear::loadParams_(); + getStaticParam(&mChangeDemoName_s, "ChangeDemoName"); + getStaticParam(&mChangeDemoEPName_s, "ChangeDemoEPName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinCallSelect.h b/src/Game/AI/AI/aiAssassinCallSelect.h new file mode 100644 index 00000000..fcf6fc37 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinCallSelect.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyCalledAppear.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinCallSelect : public EnemyCalledAppear { + SEAD_RTTI_OVERRIDE(AssassinCallSelect, EnemyCalledAppear) +public: + explicit AssassinCallSelect(const InitArg& arg); + ~AssassinCallSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mChangeDemoName_s{}; + // static_param at offset 0x48 + sead::SafeString mChangeDemoEPName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinFieldShooterBattle.cpp b/src/Game/AI/AI/aiAssassinFieldShooterBattle.cpp new file mode 100644 index 00000000..b218a55c --- /dev/null +++ b/src/Game/AI/AI/aiAssassinFieldShooterBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinFieldShooterBattle.h" + +namespace uking::ai { + +AssassinFieldShooterBattle::AssassinFieldShooterBattle(const InitArg& arg) + : AssassinFieldShooterBattleBase(arg) {} + +AssassinFieldShooterBattle::~AssassinFieldShooterBattle() = default; + +bool AssassinFieldShooterBattle::init_(sead::Heap* heap) { + return AssassinFieldShooterBattleBase::init_(heap); +} + +void AssassinFieldShooterBattle::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinFieldShooterBattleBase::enter_(params); +} + +void AssassinFieldShooterBattle::leave_() { + AssassinFieldShooterBattleBase::leave_(); +} + +void AssassinFieldShooterBattle::loadParams_() { + AssassinFieldShooterBattleBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinFieldShooterBattle.h b/src/Game/AI/AI/aiAssassinFieldShooterBattle.h new file mode 100644 index 00000000..2a1e9cd4 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinFieldShooterBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinFieldShooterBattleBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinFieldShooterBattle : public AssassinFieldShooterBattleBase { + SEAD_RTTI_OVERRIDE(AssassinFieldShooterBattle, AssassinFieldShooterBattleBase) +public: + explicit AssassinFieldShooterBattle(const InitArg& arg); + ~AssassinFieldShooterBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.cpp b/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.cpp new file mode 100644 index 00000000..ae75aa6d --- /dev/null +++ b/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiAssassinFieldShooterBattleBase.h" + +namespace uking::ai { + +AssassinFieldShooterBattleBase::AssassinFieldShooterBattleBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +AssassinFieldShooterBattleBase::~AssassinFieldShooterBattleBase() = default; + +bool AssassinFieldShooterBattleBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinFieldShooterBattleBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinFieldShooterBattleBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinFieldShooterBattleBase::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mTiredTime_s, "TiredTime"); + getStaticParam(&mWarpDistNear_s, "WarpDistNear"); + getStaticParam(&mWarpDistFar_s, "WarpDistFar"); + getStaticParam(&mTerritoryDist_s, "TerritoryDist"); + getStaticParam(&mTiredGrHeight_s, "TiredGrHeight"); + getStaticParam(&mIntervalIntensity_s, "IntervalIntensity"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.h b/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.h new file mode 100644 index 00000000..fc0aa506 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinFieldShooterBattleBase.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinFieldShooterBattleBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinFieldShooterBattleBase, ksys::act::ai::Ai) +public: + explicit AssassinFieldShooterBattleBase(const InitArg& arg); + ~AssassinFieldShooterBattleBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mTiredTime_s{}; + // static_param at offset 0x48 + const float* mWarpDistNear_s{}; + // static_param at offset 0x50 + const float* mWarpDistFar_s{}; + // static_param at offset 0x58 + const float* mTerritoryDist_s{}; + // static_param at offset 0x60 + const float* mTiredGrHeight_s{}; + // static_param at offset 0x68 + const float* mIntervalIntensity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMagicTgtSelect.cpp b/src/Game/AI/AI/aiAssassinMagicTgtSelect.cpp new file mode 100644 index 00000000..0cd6b496 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMagicTgtSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinMagicTgtSelect.h" + +namespace uking::ai { + +AssassinMagicTgtSelect::AssassinMagicTgtSelect(const InitArg& arg) : TargetInAreaSelect(arg) {} + +AssassinMagicTgtSelect::~AssassinMagicTgtSelect() = default; + +bool AssassinMagicTgtSelect::init_(sead::Heap* heap) { + return TargetInAreaSelect::init_(heap); +} + +void AssassinMagicTgtSelect::enter_(ksys::act::ai::InlineParamPack* params) { + TargetInAreaSelect::enter_(params); +} + +void AssassinMagicTgtSelect::leave_() { + TargetInAreaSelect::leave_(); +} + +void AssassinMagicTgtSelect::loadParams_() { + TargetInAreaSelect::loadParams_(); + getStaticParam(&mHeight_s, "Height"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMagicTgtSelect.h b/src/Game/AI/AI/aiAssassinMagicTgtSelect.h new file mode 100644 index 00000000..9588d2aa --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMagicTgtSelect.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetInAreaSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMagicTgtSelect : public TargetInAreaSelect { + SEAD_RTTI_OVERRIDE(AssassinMagicTgtSelect, TargetInAreaSelect) +public: + explicit AssassinMagicTgtSelect(const InitArg& arg); + ~AssassinMagicTgtSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mHeight_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.cpp b/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.cpp new file mode 100644 index 00000000..4b27ea09 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h" + +namespace uking::ai { + +AssassinMiddleAzitoDlcRoot::AssassinMiddleAzitoDlcRoot(const InitArg& arg) + : AssassinMiddleAzitoRoot(arg) {} + +AssassinMiddleAzitoDlcRoot::~AssassinMiddleAzitoDlcRoot() = default; + +bool AssassinMiddleAzitoDlcRoot::init_(sead::Heap* heap) { + return AssassinMiddleAzitoRoot::init_(heap); +} + +void AssassinMiddleAzitoDlcRoot::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinMiddleAzitoRoot::enter_(params); +} + +void AssassinMiddleAzitoDlcRoot::leave_() { + AssassinMiddleAzitoRoot::leave_(); +} + +void AssassinMiddleAzitoDlcRoot::loadParams_() { + AssassinMiddleAzitoRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h b/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h new file mode 100644 index 00000000..91b0d719 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinMiddleAzitoRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleAzitoDlcRoot : public AssassinMiddleAzitoRoot { + SEAD_RTTI_OVERRIDE(AssassinMiddleAzitoDlcRoot, AssassinMiddleAzitoRoot) +public: + explicit AssassinMiddleAzitoDlcRoot(const InitArg& arg); + ~AssassinMiddleAzitoDlcRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.cpp b/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.cpp new file mode 100644 index 00000000..516a35fd --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h" + +namespace uking::ai { + +AssassinMiddleAzitoNoMemberDemo::AssassinMiddleAzitoNoMemberDemo(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +AssassinMiddleAzitoNoMemberDemo::~AssassinMiddleAzitoNoMemberDemo() = default; + +bool AssassinMiddleAzitoNoMemberDemo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AssassinMiddleAzitoNoMemberDemo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AssassinMiddleAzitoNoMemberDemo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AssassinMiddleAzitoNoMemberDemo::loadParams_() { + getStaticParam(&mDelayTimeMin_s, "DelayTimeMin"); + getStaticParam(&mDelayTimeMax_s, "DelayTimeMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h b/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h new file mode 100644 index 00000000..e92029bd --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleAzitoNoMemberDemo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AssassinMiddleAzitoNoMemberDemo, ksys::act::ai::Ai) +public: + explicit AssassinMiddleAzitoNoMemberDemo(const InitArg& arg); + ~AssassinMiddleAzitoNoMemberDemo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDelayTimeMin_s{}; + // static_param at offset 0x40 + const int* mDelayTimeMax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.cpp b/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.cpp new file mode 100644 index 00000000..aebe97e9 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAssassinMiddleAzitoRoot.h" + +namespace uking::ai { + +AssassinMiddleAzitoRoot::AssassinMiddleAzitoRoot(const InitArg& arg) : AssassinNormal(arg) {} + +AssassinMiddleAzitoRoot::~AssassinMiddleAzitoRoot() = default; + +bool AssassinMiddleAzitoRoot::init_(sead::Heap* heap) { + return AssassinNormal::init_(heap); +} + +void AssassinMiddleAzitoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinNormal::enter_(params); +} + +void AssassinMiddleAzitoRoot::leave_() { + AssassinNormal::leave_(); +} + +void AssassinMiddleAzitoRoot::loadParams_() { + AssassinNormal::loadParams_(); + getStaticParam(&mEntryPoint_s, "EntryPoint"); + getStaticParam(&mDemoName_s, "DemoName"); + getStaticParam(&mLikeItem_s, "LikeItem"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.h b/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.h new file mode 100644 index 00000000..6910e020 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoRoot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleAzitoRoot : public AssassinNormal { + SEAD_RTTI_OVERRIDE(AssassinMiddleAzitoRoot, AssassinNormal) +public: + explicit AssassinMiddleAzitoRoot(const InitArg& arg); + ~AssassinMiddleAzitoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x420 + sead::SafeString mEntryPoint_s{}; + // static_param at offset 0x430 + sead::SafeString mDemoName_s{}; + // static_param at offset 0x440 + sead::SafeString mLikeItem_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.cpp b/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.cpp new file mode 100644 index 00000000..3978e959 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h" + +namespace uking::ai { + +AssassinMiddleAzitoRootAccept::AssassinMiddleAzitoRootAccept(const InitArg& arg) + : AssassinMiddleRoot(arg) {} + +AssassinMiddleAzitoRootAccept::~AssassinMiddleAzitoRootAccept() = default; + +bool AssassinMiddleAzitoRootAccept::init_(sead::Heap* heap) { + return AssassinMiddleRoot::init_(heap); +} + +void AssassinMiddleAzitoRootAccept::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinMiddleRoot::enter_(params); +} + +void AssassinMiddleAzitoRootAccept::leave_() { + AssassinMiddleRoot::leave_(); +} + +void AssassinMiddleAzitoRootAccept::loadParams_() { + AssassinMiddleRoot::loadParams_(); + getStaticParam(&mEntryPoint_s, "EntryPoint"); + getStaticParam(&mDemoName_s, "DemoName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h b/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h new file mode 100644 index 00000000..6fc7a486 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinMiddleRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleAzitoRootAccept : public AssassinMiddleRoot { + SEAD_RTTI_OVERRIDE(AssassinMiddleAzitoRootAccept, AssassinMiddleRoot) +public: + explicit AssassinMiddleAzitoRootAccept(const InitArg& arg); + ~AssassinMiddleAzitoRootAccept() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x340 + sead::SafeString mEntryPoint_s{}; + // static_param at offset 0x350 + sead::SafeString mDemoName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.cpp b/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.cpp new file mode 100644 index 00000000..14a313d9 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h" + +namespace uking::ai { + +AssassinMiddleDlcGrabAdapter::AssassinMiddleDlcGrabAdapter(const InitArg& arg) + : TargetActorGrabAdapter(arg) {} + +AssassinMiddleDlcGrabAdapter::~AssassinMiddleDlcGrabAdapter() = default; + +bool AssassinMiddleDlcGrabAdapter::init_(sead::Heap* heap) { + return TargetActorGrabAdapter::init_(heap); +} + +void AssassinMiddleDlcGrabAdapter::enter_(ksys::act::ai::InlineParamPack* params) { + TargetActorGrabAdapter::enter_(params); +} + +void AssassinMiddleDlcGrabAdapter::leave_() { + TargetActorGrabAdapter::leave_(); +} + +void AssassinMiddleDlcGrabAdapter::loadParams_() { + TargetActorGrabAdapter::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h b/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h new file mode 100644 index 00000000..6075e685 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetActorGrabAdapter.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleDlcGrabAdapter : public TargetActorGrabAdapter { + SEAD_RTTI_OVERRIDE(AssassinMiddleDlcGrabAdapter, TargetActorGrabAdapter) +public: + explicit AssassinMiddleDlcGrabAdapter(const InitArg& arg); + ~AssassinMiddleDlcGrabAdapter() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleMagicAfter.cpp b/src/Game/AI/AI/aiAssassinMiddleMagicAfter.cpp new file mode 100644 index 00000000..f99dd6ce --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleMagicAfter.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiAssassinMiddleMagicAfter.h" + +namespace uking::ai { + +AssassinMiddleMagicAfter::AssassinMiddleMagicAfter(const InitArg& arg) + : AssassinMagicTgtSelect(arg) {} + +AssassinMiddleMagicAfter::~AssassinMiddleMagicAfter() = default; + +bool AssassinMiddleMagicAfter::init_(sead::Heap* heap) { + return AssassinMagicTgtSelect::init_(heap); +} + +void AssassinMiddleMagicAfter::enter_(ksys::act::ai::InlineParamPack* params) { + AssassinMagicTgtSelect::enter_(params); +} + +void AssassinMiddleMagicAfter::leave_() { + AssassinMagicTgtSelect::leave_(); +} + +void AssassinMiddleMagicAfter::loadParams_() { + AssassinMagicTgtSelect::loadParams_(); + getAITreeVariable(&mIsInterseptAttack_a, "IsInterseptAttack"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleMagicAfter.h b/src/Game/AI/AI/aiAssassinMiddleMagicAfter.h new file mode 100644 index 00000000..ee9ad473 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleMagicAfter.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiAssassinMagicTgtSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleMagicAfter : public AssassinMagicTgtSelect { + SEAD_RTTI_OVERRIDE(AssassinMiddleMagicAfter, AssassinMagicTgtSelect) +public: + explicit AssassinMiddleMagicAfter(const InitArg& arg); + ~AssassinMiddleMagicAfter() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x50 + bool* mIsInterseptAttack_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleRoot.cpp b/src/Game/AI/AI/aiAssassinMiddleRoot.cpp new file mode 100644 index 00000000..e138ddd6 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAssassinMiddleRoot.h" + +namespace uking::ai { + +AssassinMiddleRoot::AssassinMiddleRoot(const InitArg& arg) : EnemyRoot(arg) {} + +AssassinMiddleRoot::~AssassinMiddleRoot() = default; + +bool AssassinMiddleRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void AssassinMiddleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void AssassinMiddleRoot::leave_() { + EnemyRoot::leave_(); +} + +void AssassinMiddleRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mPodModelUnitIdx_s, "PodModelUnitIdx"); + getStaticParam(&mPodNodeName_s, "PodNodeName"); + getStaticParam(&mSheathOffset_s, "SheathOffset"); + getStaticParam(&mMagicUsePartsName_s, "MagicUsePartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinMiddleRoot.h b/src/Game/AI/AI/aiAssassinMiddleRoot.h new file mode 100644 index 00000000..5d9cfb07 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinMiddleRoot.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinMiddleRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(AssassinMiddleRoot, EnemyRoot) +public: + explicit AssassinMiddleRoot(const InitArg& arg); + ~AssassinMiddleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mPodModelUnitIdx_s{}; + // static_param at offset 0x1e0 + sead::SafeString mPodNodeName_s{}; + // static_param at offset 0x1f0 + sead::SafeString mMagicUsePartsName_s{}; + // static_param at offset 0x200 + const sead::Vector3f* mSheathOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinNormal.cpp b/src/Game/AI/AI/aiAssassinNormal.cpp new file mode 100644 index 00000000..8a670fed --- /dev/null +++ b/src/Game/AI/AI/aiAssassinNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAssassinNormal.h" + +namespace uking::ai { + +AssassinNormal::AssassinNormal(const InitArg& arg) : LandHumEnemyNormal(arg) {} + +AssassinNormal::~AssassinNormal() = default; + +bool AssassinNormal::init_(sead::Heap* heap) { + return LandHumEnemyNormal::init_(heap); +} + +void AssassinNormal::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyNormal::enter_(params); +} + +void AssassinNormal::leave_() { + LandHumEnemyNormal::leave_(); +} + +void AssassinNormal::loadParams_() { + LandHumEnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinNormal.h b/src/Game/AI/AI/aiAssassinNormal.h new file mode 100644 index 00000000..b99ebc9c --- /dev/null +++ b/src/Game/AI/AI/aiAssassinNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinNormal : public LandHumEnemyNormal { + SEAD_RTTI_OVERRIDE(AssassinNormal, LandHumEnemyNormal) +public: + explicit AssassinNormal(const InitArg& arg); + ~AssassinNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinRoot.cpp b/src/Game/AI/AI/aiAssassinRoot.cpp new file mode 100644 index 00000000..1bc1046c --- /dev/null +++ b/src/Game/AI/AI/aiAssassinRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiAssassinRoot.h" + +namespace uking::ai { + +AssassinRoot::AssassinRoot(const InitArg& arg) : NPCRoot(arg) {} + +AssassinRoot::~AssassinRoot() = default; + +bool AssassinRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void AssassinRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void AssassinRoot::leave_() { + NPCRoot::leave_(); +} + +void AssassinRoot::loadParams_() { + NPCRoot::loadParams_(); + getStaticParam(&mChangeDistance_s, "ChangeDistance"); + getMapUnitParam(&mEquipItem1_m, "EquipItem1"); + getMapUnitParam(&mEquipItem2_m, "EquipItem2"); + getMapUnitParam(&mEquipItem3_m, "EquipItem3"); + getMapUnitParam(&mEquipItem4_m, "EquipItem4"); + getMapUnitParam(&mRideHorseName_m, "RideHorseName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinRoot.h b/src/Game/AI/AI/aiAssassinRoot.h new file mode 100644 index 00000000..af48fcf5 --- /dev/null +++ b/src/Game/AI/AI/aiAssassinRoot.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(AssassinRoot, NPCRoot) +public: + explicit AssassinRoot(const InitArg& arg); + ~AssassinRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x238 + const float* mChangeDistance_s{}; + // map_unit_param at offset 0x240 + sead::SafeString mEquipItem1_m{}; + // map_unit_param at offset 0x250 + sead::SafeString mEquipItem2_m{}; + // map_unit_param at offset 0x260 + sead::SafeString mEquipItem3_m{}; + // map_unit_param at offset 0x270 + sead::SafeString mEquipItem4_m{}; + // map_unit_param at offset 0x280 + sead::SafeString mRideHorseName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.cpp b/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.cpp new file mode 100644 index 00000000..0c5e3f0e --- /dev/null +++ b/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h" + +namespace uking::ai { + +AssassinShooterJuniorAzitoRoot::AssassinShooterJuniorAzitoRoot(const InitArg& arg) + : RememberMesOneActorEnemyRoot(arg) {} + +AssassinShooterJuniorAzitoRoot::~AssassinShooterJuniorAzitoRoot() = default; + +bool AssassinShooterJuniorAzitoRoot::init_(sead::Heap* heap) { + return RememberMesOneActorEnemyRoot::init_(heap); +} + +void AssassinShooterJuniorAzitoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RememberMesOneActorEnemyRoot::enter_(params); +} + +void AssassinShooterJuniorAzitoRoot::leave_() { + RememberMesOneActorEnemyRoot::leave_(); +} + +void AssassinShooterJuniorAzitoRoot::loadParams_() { + RememberMesOneActorEnemyRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h b/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h new file mode 100644 index 00000000..0eb4dfad --- /dev/null +++ b/src/Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRememberMesOneActorEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AssassinShooterJuniorAzitoRoot : public RememberMesOneActorEnemyRoot { + SEAD_RTTI_OVERRIDE(AssassinShooterJuniorAzitoRoot, RememberMesOneActorEnemyRoot) +public: + explicit AssassinShooterJuniorAzitoRoot(const InitArg& arg); + ~AssassinShooterJuniorAzitoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGrave.cpp b/src/Game/AI/AI/aiAttackGrave.cpp new file mode 100644 index 00000000..54817538 --- /dev/null +++ b/src/Game/AI/AI/aiAttackGrave.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiAttackGrave.h" + +namespace uking::ai { + +AttackGrave::AttackGrave(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AttackGrave::~AttackGrave() = default; + +bool AttackGrave::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AttackGrave::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AttackGrave::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AttackGrave::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGrave.h b/src/Game/AI/AI/aiAttackGrave.h new file mode 100644 index 00000000..992a2a9c --- /dev/null +++ b/src/Game/AI/AI/aiAttackGrave.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AttackGrave : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AttackGrave, ksys::act::ai::Ai) +public: + explicit AttackGrave(const InitArg& arg); + ~AttackGrave() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGraveChase.cpp b/src/Game/AI/AI/aiAttackGraveChase.cpp new file mode 100644 index 00000000..233f23df --- /dev/null +++ b/src/Game/AI/AI/aiAttackGraveChase.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiAttackGraveChase.h" + +namespace uking::ai { + +AttackGraveChase::AttackGraveChase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AttackGraveChase::~AttackGraveChase() = default; + +bool AttackGraveChase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AttackGraveChase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AttackGraveChase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AttackGraveChase::loadParams_() { + getStaticParam(&mActionTime_s, "ActionTime"); + getStaticParam(&mNearTime_s, "NearTime"); + getStaticParam(&mEndHeight_s, "EndHeight"); + getStaticParam(&mEndNear_s, "EndNear"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGraveChase.h b/src/Game/AI/AI/aiAttackGraveChase.h new file mode 100644 index 00000000..f38ccf87 --- /dev/null +++ b/src/Game/AI/AI/aiAttackGraveChase.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AttackGraveChase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AttackGraveChase, ksys::act::ai::Ai) +public: + explicit AttackGraveChase(const InitArg& arg); + ~AttackGraveChase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mActionTime_s{}; + // static_param at offset 0x40 + const int* mNearTime_s{}; + // static_param at offset 0x48 + const float* mEndHeight_s{}; + // static_param at offset 0x50 + const float* mEndNear_s{}; + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGraveChaseWithSensor.cpp b/src/Game/AI/AI/aiAttackGraveChaseWithSensor.cpp new file mode 100644 index 00000000..471d6dfd --- /dev/null +++ b/src/Game/AI/AI/aiAttackGraveChaseWithSensor.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiAttackGraveChaseWithSensor.h" + +namespace uking::ai { + +AttackGraveChaseWithSensor::AttackGraveChaseWithSensor(const InitArg& arg) + : AttackGraveChase(arg) {} + +AttackGraveChaseWithSensor::~AttackGraveChaseWithSensor() = default; + +bool AttackGraveChaseWithSensor::init_(sead::Heap* heap) { + return AttackGraveChase::init_(heap); +} + +void AttackGraveChaseWithSensor::enter_(ksys::act::ai::InlineParamPack* params) { + AttackGraveChase::enter_(params); +} + +void AttackGraveChaseWithSensor::leave_() { + AttackGraveChase::leave_(); +} + +void AttackGraveChaseWithSensor::loadParams_() { + AttackGraveChase::loadParams_(); + getStaticParam(&mRigidBodyGroupName_s, "RigidBodyGroupName"); + getStaticParam(&mRigidBodyName_s, "RigidBodyName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackGraveChaseWithSensor.h b/src/Game/AI/AI/aiAttackGraveChaseWithSensor.h new file mode 100644 index 00000000..a74f0db6 --- /dev/null +++ b/src/Game/AI/AI/aiAttackGraveChaseWithSensor.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiAttackGraveChase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AttackGraveChaseWithSensor : public AttackGraveChase { + SEAD_RTTI_OVERRIDE(AttackGraveChaseWithSensor, AttackGraveChase) +public: + explicit AttackGraveChaseWithSensor(const InitArg& arg); + ~AttackGraveChaseWithSensor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + sead::SafeString mRigidBodyGroupName_s{}; + // static_param at offset 0x78 + sead::SafeString mRigidBodyName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackHitCheck.cpp b/src/Game/AI/AI/aiAttackHitCheck.cpp new file mode 100644 index 00000000..89136796 --- /dev/null +++ b/src/Game/AI/AI/aiAttackHitCheck.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAttackHitCheck.h" + +namespace uking::ai { + +AttackHitCheck::AttackHitCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AttackHitCheck::~AttackHitCheck() = default; + +bool AttackHitCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AttackHitCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AttackHitCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AttackHitCheck::loadParams_() { + getStaticParam(&mAtkType_s, "AtkType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAttackHitCheck.h b/src/Game/AI/AI/aiAttackHitCheck.h new file mode 100644 index 00000000..975e87ed --- /dev/null +++ b/src/Game/AI/AI/aiAttackHitCheck.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AttackHitCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AttackHitCheck, ksys::act::ai::Ai) +public: + explicit AttackHitCheck(const InitArg& arg); + ~AttackHitCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAtkType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAwarenessScale.cpp b/src/Game/AI/AI/aiAwarenessScale.cpp new file mode 100644 index 00000000..54e247fd --- /dev/null +++ b/src/Game/AI/AI/aiAwarenessScale.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiAwarenessScale.h" + +namespace uking::ai { + +AwarenessScale::AwarenessScale(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +AwarenessScale::~AwarenessScale() = default; + +bool AwarenessScale::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void AwarenessScale::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void AwarenessScale::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void AwarenessScale::loadParams_() { + getStaticParam(&mScale_s, "Scale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiAwarenessScale.h b/src/Game/AI/AI/aiAwarenessScale.h new file mode 100644 index 00000000..d4c76b50 --- /dev/null +++ b/src/Game/AI/AI/aiAwarenessScale.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class AwarenessScale : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(AwarenessScale, ksys::act::ai::Ai) +public: + explicit AwarenessScale(const InitArg& arg); + ~AwarenessScale() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBackAttackEnemyBattle.cpp b/src/Game/AI/AI/aiBackAttackEnemyBattle.cpp new file mode 100644 index 00000000..54566562 --- /dev/null +++ b/src/Game/AI/AI/aiBackAttackEnemyBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBackAttackEnemyBattle.h" + +namespace uking::ai { + +BackAttackEnemyBattle::BackAttackEnemyBattle(const InitArg& arg) : EnemyBattle(arg) {} + +BackAttackEnemyBattle::~BackAttackEnemyBattle() = default; + +bool BackAttackEnemyBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void BackAttackEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void BackAttackEnemyBattle::leave_() { + EnemyBattle::leave_(); +} + +void BackAttackEnemyBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mBackAttackAngle_s, "BackAttackAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBackAttackEnemyBattle.h b/src/Game/AI/AI/aiBackAttackEnemyBattle.h new file mode 100644 index 00000000..ddc9163c --- /dev/null +++ b/src/Game/AI/AI/aiBackAttackEnemyBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BackAttackEnemyBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(BackAttackEnemyBattle, EnemyBattle) +public: + explicit BackAttackEnemyBattle(const InitArg& arg); + ~BackAttackEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mBackAttackAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBackStepAndAttack.cpp b/src/Game/AI/AI/aiBackStepAndAttack.cpp new file mode 100644 index 00000000..f62ee874 --- /dev/null +++ b/src/Game/AI/AI/aiBackStepAndAttack.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiBackStepAndAttack.h" + +namespace uking::ai { + +BackStepAndAttack::BackStepAndAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BackStepAndAttack::~BackStepAndAttack() = default; + +bool BackStepAndAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BackStepAndAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BackStepAndAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BackStepAndAttack::loadParams_() { + getStaticParam(&mBackStepMax_s, "BackStepMax"); + getStaticParam(&mTurnRepeatMax_s, "TurnRepeatMax"); + getStaticParam(&mBackStepMinDist_s, "BackStepMinDist"); + getStaticParam(&mBackStepDist_s, "BackStepDist"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getStaticParam(&mNoBackStepRange_s, "NoBackStepRange"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBackStepAndAttack.h b/src/Game/AI/AI/aiBackStepAndAttack.h new file mode 100644 index 00000000..faefdc6d --- /dev/null +++ b/src/Game/AI/AI/aiBackStepAndAttack.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BackStepAndAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BackStepAndAttack, ksys::act::ai::Ai) +public: + explicit BackStepAndAttack(const InitArg& arg); + ~BackStepAndAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mBackStepMax_s{}; + // static_param at offset 0x40 + const int* mTurnRepeatMax_s{}; + // static_param at offset 0x48 + const float* mBackStepMinDist_s{}; + // static_param at offset 0x50 + const float* mBackStepDist_s{}; + // static_param at offset 0x58 + const float* mFrontAngle_s{}; + // static_param at offset 0x60 + const float* mNoBackStepRange_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBalloonPlantNormal.cpp b/src/Game/AI/AI/aiBalloonPlantNormal.cpp new file mode 100644 index 00000000..036ffc83 --- /dev/null +++ b/src/Game/AI/AI/aiBalloonPlantNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBalloonPlantNormal.h" + +namespace uking::ai { + +BalloonPlantNormal::BalloonPlantNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BalloonPlantNormal::~BalloonPlantNormal() = default; + +bool BalloonPlantNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BalloonPlantNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BalloonPlantNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BalloonPlantNormal::loadParams_() { + getStaticParam(&mRopeLength_s, "RopeLength"); + getStaticParam(&mRopeActorName_s, "RopeActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBalloonPlantNormal.h b/src/Game/AI/AI/aiBalloonPlantNormal.h new file mode 100644 index 00000000..fb2d4ba7 --- /dev/null +++ b/src/Game/AI/AI/aiBalloonPlantNormal.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BalloonPlantNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BalloonPlantNormal, ksys::act::ai::Ai) +public: + explicit BalloonPlantNormal(const InitArg& arg); + ~BalloonPlantNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRopeLength_s{}; + // static_param at offset 0x40 + sead::SafeString mRopeActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBarrelBomb.cpp b/src/Game/AI/AI/aiBarrelBomb.cpp new file mode 100644 index 00000000..dfc974ab --- /dev/null +++ b/src/Game/AI/AI/aiBarrelBomb.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiBarrelBomb.h" + +namespace uking::ai { + +BarrelBomb::BarrelBomb(const InitArg& arg) : SimpleLiftable(arg) {} + +bool BarrelBomb::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void BarrelBomb::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void BarrelBomb::leave_() { + SimpleLiftable::leave_(); +} + +void BarrelBomb::loadParams_() { + getMapUnitParam(&mIsFixedPlace_m, "IsFixedPlace"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBarrelBomb.h b/src/Game/AI/AI/aiBarrelBomb.h new file mode 100644 index 00000000..6f60a522 --- /dev/null +++ b/src/Game/AI/AI/aiBarrelBomb.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BarrelBomb : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(BarrelBomb, SimpleLiftable) +public: + explicit BarrelBomb(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0xc8 + const bool* mIsFixedPlace_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBasicStatusRoot.cpp b/src/Game/AI/AI/aiBasicStatusRoot.cpp new file mode 100644 index 00000000..a1c1e592 --- /dev/null +++ b/src/Game/AI/AI/aiBasicStatusRoot.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiBasicStatusRoot.h" + +namespace uking::ai { + +BasicStatusRoot::BasicStatusRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool BasicStatusRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BasicStatusRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BasicStatusRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BasicStatusRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBasicStatusRoot.h b/src/Game/AI/AI/aiBasicStatusRoot.h new file mode 100644 index 00000000..218d01aa --- /dev/null +++ b/src/Game/AI/AI/aiBasicStatusRoot.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BasicStatusRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BasicStatusRoot, ksys::act::ai::Ai) +public: + explicit BasicStatusRoot(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBattleBgmRequestFinishTag.cpp b/src/Game/AI/AI/aiBattleBgmRequestFinishTag.cpp new file mode 100644 index 00000000..91e08127 --- /dev/null +++ b/src/Game/AI/AI/aiBattleBgmRequestFinishTag.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiBattleBgmRequestFinishTag.h" + +namespace uking::ai { + +BattleBgmRequestFinishTag::BattleBgmRequestFinishTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BattleBgmRequestFinishTag::~BattleBgmRequestFinishTag() = default; + +bool BattleBgmRequestFinishTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BattleBgmRequestFinishTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BattleBgmRequestFinishTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BattleBgmRequestFinishTag::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBattleBgmRequestFinishTag.h b/src/Game/AI/AI/aiBattleBgmRequestFinishTag.h new file mode 100644 index 00000000..a755fd99 --- /dev/null +++ b/src/Game/AI/AI/aiBattleBgmRequestFinishTag.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BattleBgmRequestFinishTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BattleBgmRequestFinishTag, ksys::act::ai::Ai) +public: + explicit BattleBgmRequestFinishTag(const InitArg& arg); + ~BattleBgmRequestFinishTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplode.cpp b/src/Game/AI/AI/aiBeamExplode.cpp new file mode 100644 index 00000000..0d94b55f --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplode.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBeamExplode.h" + +namespace uking::ai { + +BeamExplode::BeamExplode(const InitArg& arg) : BeamExplodeBase(arg) {} + +BeamExplode::~BeamExplode() = default; + +bool BeamExplode::init_(sead::Heap* heap) { + return BeamExplodeBase::init_(heap); +} + +void BeamExplode::enter_(ksys::act::ai::InlineParamPack* params) { + BeamExplodeBase::enter_(params); +} + +void BeamExplode::leave_() { + BeamExplodeBase::leave_(); +} + +void BeamExplode::loadParams_() { + BeamExplodeBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplode.h b/src/Game/AI/AI/aiBeamExplode.h new file mode 100644 index 00000000..e34a9f6c --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplode.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiBeamExplodeBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeamExplode : public BeamExplodeBase { + SEAD_RTTI_OVERRIDE(BeamExplode, BeamExplodeBase) +public: + explicit BeamExplode(const InitArg& arg); + ~BeamExplode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplodeBase.cpp b/src/Game/AI/AI/aiBeamExplodeBase.cpp new file mode 100644 index 00000000..ef29118a --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplodeBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBeamExplodeBase.h" + +namespace uking::ai { + +BeamExplodeBase::BeamExplodeBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BeamExplodeBase::~BeamExplodeBase() = default; + +bool BeamExplodeBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BeamExplodeBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BeamExplodeBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BeamExplodeBase::loadParams_() { + getStaticParam(&mMaxDistance_s, "MaxDistance"); + getStaticParam(&mIsDelete_s, "IsDelete"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplodeBase.h b/src/Game/AI/AI/aiBeamExplodeBase.h new file mode 100644 index 00000000..21f94dcc --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplodeBase.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeamExplodeBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BeamExplodeBase, ksys::act::ai::Ai) +public: + explicit BeamExplodeBase(const InitArg& arg); + ~BeamExplodeBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mMaxDistance_s{}; + // static_param at offset 0x40 + const bool* mIsDelete_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplodeEitherHit.cpp b/src/Game/AI/AI/aiBeamExplodeEitherHit.cpp new file mode 100644 index 00000000..410758b1 --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplodeEitherHit.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBeamExplodeEitherHit.h" + +namespace uking::ai { + +BeamExplodeEitherHit::BeamExplodeEitherHit(const InitArg& arg) : BeamExplode(arg) {} + +BeamExplodeEitherHit::~BeamExplodeEitherHit() = default; + +bool BeamExplodeEitherHit::init_(sead::Heap* heap) { + return BeamExplode::init_(heap); +} + +void BeamExplodeEitherHit::enter_(ksys::act::ai::InlineParamPack* params) { + BeamExplode::enter_(params); +} + +void BeamExplodeEitherHit::leave_() { + BeamExplode::leave_(); +} + +void BeamExplodeEitherHit::loadParams_() { + BeamExplode::loadParams_(); + getAITreeVariable(&mIsReflectThrownBullet_a, "IsReflectThrownBullet"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamExplodeEitherHit.h b/src/Game/AI/AI/aiBeamExplodeEitherHit.h new file mode 100644 index 00000000..dad20116 --- /dev/null +++ b/src/Game/AI/AI/aiBeamExplodeEitherHit.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiBeamExplode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeamExplodeEitherHit : public BeamExplode { + SEAD_RTTI_OVERRIDE(BeamExplodeEitherHit, BeamExplode) +public: + explicit BeamExplodeEitherHit(const InitArg& arg); + ~BeamExplodeEitherHit() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x58 + bool* mIsReflectThrownBullet_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamosCarried.cpp b/src/Game/AI/AI/aiBeamosCarried.cpp new file mode 100644 index 00000000..60687d51 --- /dev/null +++ b/src/Game/AI/AI/aiBeamosCarried.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBeamosCarried.h" + +namespace uking::ai { + +BeamosCarried::BeamosCarried(const InitArg& arg) : AddCarried(arg) {} + +BeamosCarried::~BeamosCarried() = default; + +bool BeamosCarried::init_(sead::Heap* heap) { + return AddCarried::init_(heap); +} + +void BeamosCarried::enter_(ksys::act::ai::InlineParamPack* params) { + AddCarried::enter_(params); +} + +void BeamosCarried::leave_() { + AddCarried::leave_(); +} + +void BeamosCarried::loadParams_() { + AddCarried::loadParams_(); + getAITreeVariable(&mBeamActorLink_a, "BeamActorLink"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeamosCarried.h b/src/Game/AI/AI/aiBeamosCarried.h new file mode 100644 index 00000000..3bce780b --- /dev/null +++ b/src/Game/AI/AI/aiBeamosCarried.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiAddCarried.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeamosCarried : public AddCarried { + SEAD_RTTI_OVERRIDE(BeamosCarried, AddCarried) +public: + explicit BeamosCarried(const InitArg& arg); + ~BeamosCarried() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x160 + void* mBeamActorLink_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeBattle.cpp b/src/Game/AI/AI/aiBeeBattle.cpp new file mode 100644 index 00000000..12a720cf --- /dev/null +++ b/src/Game/AI/AI/aiBeeBattle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBeeBattle.h" + +namespace uking::ai { + +BeeBattle::BeeBattle(const InitArg& arg) : EnemyBattle(arg) {} + +BeeBattle::~BeeBattle() = default; + +bool BeeBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void BeeBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void BeeBattle::leave_() { + EnemyBattle::leave_(); +} + +void BeeBattle::loadParams_() { + EnemyBattle::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeBattle.h b/src/Game/AI/AI/aiBeeBattle.h new file mode 100644 index 00000000..12677752 --- /dev/null +++ b/src/Game/AI/AI/aiBeeBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeeBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(BeeBattle, EnemyBattle) +public: + explicit BeeBattle(const InitArg& arg); + ~BeeBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmFindPlayer.cpp b/src/Game/AI/AI/aiBeeSwarmFindPlayer.cpp new file mode 100644 index 00000000..6d08e672 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmFindPlayer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBeeSwarmFindPlayer.h" + +namespace uking::ai { + +BeeSwarmFindPlayer::BeeSwarmFindPlayer(const InitArg& arg) : FlyingEnemyFindPlayer(arg) {} + +BeeSwarmFindPlayer::~BeeSwarmFindPlayer() = default; + +bool BeeSwarmFindPlayer::init_(sead::Heap* heap) { + return FlyingEnemyFindPlayer::init_(heap); +} + +void BeeSwarmFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + FlyingEnemyFindPlayer::enter_(params); +} + +void BeeSwarmFindPlayer::leave_() { + FlyingEnemyFindPlayer::leave_(); +} + +void BeeSwarmFindPlayer::loadParams_() { + FlyingEnemyFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmFindPlayer.h b/src/Game/AI/AI/aiBeeSwarmFindPlayer.h new file mode 100644 index 00000000..1dbef776 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiFlyingEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeeSwarmFindPlayer : public FlyingEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(BeeSwarmFindPlayer, FlyingEnemyFindPlayer) +public: + explicit BeeSwarmFindPlayer(const InitArg& arg); + ~BeeSwarmFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmNormal.cpp b/src/Game/AI/AI/aiBeeSwarmNormal.cpp new file mode 100644 index 00000000..58ba4144 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBeeSwarmNormal.h" + +namespace uking::ai { + +BeeSwarmNormal::BeeSwarmNormal(const InitArg& arg) : EnemyNormal(arg) {} + +BeeSwarmNormal::~BeeSwarmNormal() = default; + +bool BeeSwarmNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void BeeSwarmNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void BeeSwarmNormal::leave_() { + EnemyNormal::leave_(); +} + +void BeeSwarmNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmNormal.h b/src/Game/AI/AI/aiBeeSwarmNormal.h new file mode 100644 index 00000000..12748988 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeeSwarmNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(BeeSwarmNormal, EnemyNormal) +public: + explicit BeeSwarmNormal(const InitArg& arg); + ~BeeSwarmNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmReaction.cpp b/src/Game/AI/AI/aiBeeSwarmReaction.cpp new file mode 100644 index 00000000..c459fb05 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiBeeSwarmReaction.h" + +namespace uking::ai { + +BeeSwarmReaction::BeeSwarmReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BeeSwarmReaction::~BeeSwarmReaction() = default; + +bool BeeSwarmReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BeeSwarmReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BeeSwarmReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BeeSwarmReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmReaction.h b/src/Game/AI/AI/aiBeeSwarmReaction.h new file mode 100644 index 00000000..f767de5f --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeeSwarmReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BeeSwarmReaction, ksys::act::ai::Ai) +public: + explicit BeeSwarmReaction(const InitArg& arg); + ~BeeSwarmReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmRoot.cpp b/src/Game/AI/AI/aiBeeSwarmRoot.cpp new file mode 100644 index 00000000..4e2ce98c --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBeeSwarmRoot.h" + +namespace uking::ai { + +BeeSwarmRoot::BeeSwarmRoot(const InitArg& arg) : SwarmRoot(arg) {} + +BeeSwarmRoot::~BeeSwarmRoot() = default; + +bool BeeSwarmRoot::init_(sead::Heap* heap) { + return SwarmRoot::init_(heap); +} + +void BeeSwarmRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SwarmRoot::enter_(params); +} + +void BeeSwarmRoot::leave_() { + SwarmRoot::leave_(); +} + +void BeeSwarmRoot::loadParams_() { + SwarmRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBeeSwarmRoot.h b/src/Game/AI/AI/aiBeeSwarmRoot.h new file mode 100644 index 00000000..902cb462 --- /dev/null +++ b/src/Game/AI/AI/aiBeeSwarmRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSwarmRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BeeSwarmRoot : public SwarmRoot { + SEAD_RTTI_OVERRIDE(BeeSwarmRoot, SwarmRoot) +public: + explicit BeeSwarmRoot(const InitArg& arg); + ~BeeSwarmRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBirdDead.cpp b/src/Game/AI/AI/aiBirdDead.cpp new file mode 100644 index 00000000..42af16e0 --- /dev/null +++ b/src/Game/AI/AI/aiBirdDead.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBirdDead.h" + +namespace uking::ai { + +BirdDead::BirdDead(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BirdDead::~BirdDead() = default; + +bool BirdDead::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BirdDead::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BirdDead::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BirdDead::loadParams_() { + getStaticParam(&mGravityScale_s, "GravityScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBirdDead.h b/src/Game/AI/AI/aiBirdDead.h new file mode 100644 index 00000000..06a90a0f --- /dev/null +++ b/src/Game/AI/AI/aiBirdDead.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BirdDead : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BirdDead, ksys::act::ai::Ai) +public: + explicit BirdDead(const InitArg& arg); + ~BirdDead() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mGravityScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBirdEscape.cpp b/src/Game/AI/AI/aiBirdEscape.cpp new file mode 100644 index 00000000..d3b9f26f --- /dev/null +++ b/src/Game/AI/AI/aiBirdEscape.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiBirdEscape.h" + +namespace uking::ai { + +BirdEscape::BirdEscape(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BirdEscape::~BirdEscape() = default; + +bool BirdEscape::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BirdEscape::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BirdEscape::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BirdEscape::loadParams_() { + getStaticParam(&mForceEndTimer_s, "ForceEndTimer"); + getStaticParam(&mIsUseEscapeBefore_s, "IsUseEscapeBefore"); + getStaticParam(&mIsUseEscapeEnd_s, "IsUseEscapeEnd"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getMapUnitParam(&mIsLocatorCreate_m, "IsLocatorCreate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBirdEscape.h b/src/Game/AI/AI/aiBirdEscape.h new file mode 100644 index 00000000..bb6bb865 --- /dev/null +++ b/src/Game/AI/AI/aiBirdEscape.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BirdEscape : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BirdEscape, ksys::act::ai::Ai) +public: + explicit BirdEscape(const InitArg& arg); + ~BirdEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mForceEndTimer_s{}; + // static_param at offset 0x40 + const bool* mIsUseEscapeBefore_s{}; + // static_param at offset 0x48 + const bool* mIsUseEscapeEnd_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; + // map_unit_param at offset 0x58 + const bool* mIsLocatorCreate_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBlownOff.cpp b/src/Game/AI/AI/aiBlownOff.cpp new file mode 100644 index 00000000..49bd6600 --- /dev/null +++ b/src/Game/AI/AI/aiBlownOff.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBlownOff.h" + +namespace uking::ai { + +BlownOff::BlownOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool BlownOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BlownOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BlownOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BlownOff::loadParams_() { + getStaticParam(&mDrownDepth_s, "DrownDepth"); + getStaticParam(&mIsForceGetUp_s, "IsForceGetUp"); + getStaticParam(&mIsIceBreak_s, "IsIceBreak"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBlownOff.h b/src/Game/AI/AI/aiBlownOff.h new file mode 100644 index 00000000..7ce50a3a --- /dev/null +++ b/src/Game/AI/AI/aiBlownOff.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BlownOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BlownOff, ksys::act::ai::Ai) +public: + explicit BlownOff(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDrownDepth_s{}; + // static_param at offset 0x40 + const bool* mIsForceGetUp_s{}; + // static_param at offset 0x48 + const bool* mIsIceBreak_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBocoblinBackStepAttack.cpp b/src/Game/AI/AI/aiBocoblinBackStepAttack.cpp new file mode 100644 index 00000000..5c9e0991 --- /dev/null +++ b/src/Game/AI/AI/aiBocoblinBackStepAttack.cpp @@ -0,0 +1,18 @@ +#include "Game/AI/AI/aiBocoblinBackStepAttack.h" + +namespace uking::ai { + +BocoblinBackStepAttack::BocoblinBackStepAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BocoblinBackStepAttack::~BocoblinBackStepAttack() = default; + +void BocoblinBackStepAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BocoblinBackStepAttack::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mAttackPer_d, "AttackPer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBocoblinBackStepAttack.h b/src/Game/AI/AI/aiBocoblinBackStepAttack.h new file mode 100644 index 00000000..0957f0fe --- /dev/null +++ b/src/Game/AI/AI/aiBocoblinBackStepAttack.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BocoblinBackStepAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BocoblinBackStepAttack, ksys::act::ai::Ai) +public: + explicit BocoblinBackStepAttack(const InitArg& arg); + ~BocoblinBackStepAttack() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + int* mAttackPer_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinArrowAttack.cpp b/src/Game/AI/AI/aiBokoblinArrowAttack.cpp new file mode 100644 index 00000000..1060ecd0 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinArrowAttack.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiBokoblinArrowAttack.h" + +namespace uking::ai { + +BokoblinArrowAttack::BokoblinArrowAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void BokoblinArrowAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinArrowAttack::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mBackWalkStartDist_s, "BackWalkStartDist"); + getStaticParam(&mBackWalkEndDist_s, "BackWalkEndDist"); + getStaticParam(&mCliffCheckDist_s, "CliffCheckDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinArrowAttack.h b/src/Game/AI/AI/aiBokoblinArrowAttack.h new file mode 100644 index 00000000..0f5be8c3 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinArrowAttack.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinArrowAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinArrowAttack, ksys::act::ai::Ai) +public: + explicit BokoblinArrowAttack(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mBackWalkStartDist_s{}; + // static_param at offset 0x48 + const float* mBackWalkEndDist_s{}; + // static_param at offset 0x50 + const float* mCliffCheckDist_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinArrowBattle.cpp b/src/Game/AI/AI/aiBokoblinArrowBattle.cpp new file mode 100644 index 00000000..c56b3a5d --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinArrowBattle.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiBokoblinArrowBattle.h" + +namespace uking::ai { + +BokoblinArrowBattle::BokoblinArrowBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BokoblinArrowBattle::~BokoblinArrowBattle() = default; + +void BokoblinArrowBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinArrowBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BokoblinArrowBattle::loadParams_() { + getStaticParam(&mHoldInterval_s, "HoldInterval"); + getStaticParam(&mHoldIntervalLast_s, "HoldIntervalLast"); + getStaticParam(&mHoldIntervalRand_s, "HoldIntervalRand"); + getStaticParam(&mLeaveStartDist_s, "LeaveStartDist"); + getStaticParam(&mLeaveEndDist_s, "LeaveEndDist"); + getStaticParam(&mLeaveWaitTime_s, "LeaveWaitTime"); + getStaticParam(&mLeaveTime_s, "LeaveTime"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mOutDistVMin_s, "OutDistVMin"); + getStaticParam(&mOutDistVMax_s, "OutDistVMax"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mLeaveTime_s, "LeaveTime"); + getStaticParam(&mBlindlyAttackMinNum_s, "BlindlyAttackMinNum"); + getStaticParam(&mBlindlyAttackMaxNum_s, "BlindlyAttackMaxNum"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mShootDistRatio_s, "ShootDistRatio"); + getStaticParam(&mIsEndAfterAttack_s, "IsEndAfterAttack"); + getStaticParam(&mIsUpdateNoticeState_s, "IsUpdateNoticeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinArrowBattle.h b/src/Game/AI/AI/aiBokoblinArrowBattle.h new file mode 100644 index 00000000..b19ad12b --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinArrowBattle.h @@ -0,0 +1,56 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinArrowBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinArrowBattle, ksys::act::ai::Ai) +public: + explicit BokoblinArrowBattle(const InitArg& arg); + ~BokoblinArrowBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mHoldInterval_s{}; + // static_param at offset 0x40 + const int* mHoldIntervalLast_s{}; + // static_param at offset 0x48 + const int* mHoldIntervalRand_s{}; + // static_param at offset 0x50 + const float* mLeaveStartDist_s{}; + // static_param at offset 0x58 + const float* mLeaveEndDist_s{}; + // static_param at offset 0x60 + const int* mLeaveWaitTime_s{}; + // static_param at offset 0x68 + const int* mLeaveTime_s{}; + // static_param at offset 0x70 + const float* mBaseDist_s{}; + // static_param at offset 0x78 + const float* mOutDist_s{}; + // static_param at offset 0x80 + const float* mOutDistVMin_s{}; + // static_param at offset 0x88 + const float* mOutDistVMax_s{}; + // static_param at offset 0x90 + const int* mWeaponIdx_s{}; + // static_param at offset 0x98 + const int* mBlindlyAttackMinNum_s{}; + // static_param at offset 0xa0 + const int* mBlindlyAttackMaxNum_s{}; + // dynamic_param at offset 0xa8 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0xb0 + const float* mShootDistRatio_s{}; + // static_param at offset 0xb8 + const bool* mIsEndAfterAttack_s{}; + // static_param at offset 0xc0 + const bool* mIsUpdateNoticeState_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinHoldArrow.cpp b/src/Game/AI/AI/aiBokoblinHoldArrow.cpp new file mode 100644 index 00000000..4952182c --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinHoldArrow.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiBokoblinHoldArrow.h" + +namespace uking::ai { + +BokoblinHoldArrow::BokoblinHoldArrow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void BokoblinHoldArrow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinHoldArrow::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinHoldArrow.h b/src/Game/AI/AI/aiBokoblinHoldArrow.h new file mode 100644 index 00000000..10ce02d6 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinHoldArrow.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinHoldArrow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinHoldArrow, ksys::act::ai::Ai) +public: + explicit BokoblinHoldArrow(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinNoise.cpp b/src/Game/AI/AI/aiBokoblinNoise.cpp new file mode 100644 index 00000000..0b81bf2a --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinNoise.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBokoblinNoise.h" + +namespace uking::ai { + +BokoblinNoise::BokoblinNoise(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool BokoblinNoise::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BokoblinNoise::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinNoise::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BokoblinNoise::loadParams_() { + getStaticParam(&mMaxContinueNum_s, "MaxContinueNum"); + getStaticParam(&mEnterNoiseRate_s, "EnterNoiseRate"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinNoise.h b/src/Game/AI/AI/aiBokoblinNoise.h new file mode 100644 index 00000000..9d1c7927 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinNoise.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinNoise : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinNoise, ksys::act::ai::Ai) +public: + explicit BokoblinNoise(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMaxContinueNum_s{}; + // static_param at offset 0x40 + const int* mEnterNoiseRate_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinRestraint.cpp b/src/Game/AI/AI/aiBokoblinRestraint.cpp new file mode 100644 index 00000000..c64993d0 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinRestraint.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiBokoblinRestraint.h" + +namespace uking::ai { + +BokoblinRestraint::BokoblinRestraint(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BokoblinRestraint::~BokoblinRestraint() = default; + +void BokoblinRestraint::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinRestraint::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BokoblinRestraint::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mLostRange_s, "LostRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinRestraint.h b/src/Game/AI/AI/aiBokoblinRestraint.h new file mode 100644 index 00000000..3e22e59a --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinRestraint.h @@ -0,0 +1,32 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinRestraint : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinRestraint, ksys::act::ai::Ai) +public: + explicit BokoblinRestraint(const InitArg& arg); + ~BokoblinRestraint() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x40 + const float* mBaseDist_s{}; + // static_param at offset 0x48 + const float* mLostVMin_s{}; + // static_param at offset 0x50 + const float* mLostVMax_s{}; + // static_param at offset 0x58 + const int* mLostTimer_s{}; + // static_param at offset 0x60 + const float* mLostRange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinRoam.cpp b/src/Game/AI/AI/aiBokoblinRoam.cpp new file mode 100644 index 00000000..b91bceee --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinRoam.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiBokoblinRoam.h" + +namespace uking::ai { + +BokoblinRoam::BokoblinRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BokoblinRoam::~BokoblinRoam() = default; + +void BokoblinRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BokoblinRoam::loadParams_() { + getStaticParam(&mFreeIntervalMin_s, "FreeIntervalMin"); + getStaticParam(&mFreeIntervalMax_s, "FreeIntervalMax"); + getStaticParam(&mFreePer_s, "FreePer"); + getStaticParam(&mMoveIntervalMin_s, "MoveIntervalMin"); + getStaticParam(&mMoveIntervalMax_s, "MoveIntervalMax"); + getStaticParam(&mNoMoveTime_s, "NoMoveTime"); + getStaticParam(&mSpAttackServiceTime_s, "SpAttackServiceTime"); + getStaticParam(&mNoSpAttackMoveTime_s, "NoSpAttackMoveTime"); + getStaticParam(&mTerritory_s, "Territory"); + getStaticParam(&mTargetDistMin_s, "TargetDistMin"); + getStaticParam(&mTargetDistMax_s, "TargetDistMax"); + getStaticParam(&mSpAttackServiceDist_s, "SpAttackServiceDist"); + getStaticParam(&mSpAttackServiceAngle_s, "SpAttackServiceAngle"); + getDynamicParam(&mCentralPos_d, "CentralPos"); + getStaticParam(&mTurnCheckDist_s, "TurnCheckDist"); + getStaticParam(&mTurnCheckHeight_s, "TurnCheckHeight"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBokoblinRoam.h b/src/Game/AI/AI/aiBokoblinRoam.h new file mode 100644 index 00000000..01e9ee71 --- /dev/null +++ b/src/Game/AI/AI/aiBokoblinRoam.h @@ -0,0 +1,51 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BokoblinRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BokoblinRoam, ksys::act::ai::Ai) +public: + explicit BokoblinRoam(const InitArg& arg); + ~BokoblinRoam() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFreeIntervalMin_s{}; + // static_param at offset 0x40 + const int* mFreeIntervalMax_s{}; + // static_param at offset 0x48 + const int* mFreePer_s{}; + // static_param at offset 0x50 + const int* mMoveIntervalMin_s{}; + // static_param at offset 0x58 + const int* mMoveIntervalMax_s{}; + // static_param at offset 0x60 + const int* mNoMoveTime_s{}; + // static_param at offset 0x68 + const int* mNoSpAttackMoveTime_s{}; + // static_param at offset 0x70 + const int* mSpAttackServiceTime_s{}; + // static_param at offset 0x78 + const float* mTerritory_s{}; + // static_param at offset 0x80 + const float* mTargetDistMin_s{}; + // static_param at offset 0x88 + const float* mTargetDistMax_s{}; + // static_param at offset 0x90 + const float* mSpAttackServiceDist_s{}; + // static_param at offset 0x98 + const float* mSpAttackServiceAngle_s{}; + // dynamic_param at offset 0xa0 + sead::Vector3f* mCentralPos_d{}; + // static_param at offset 0xa8 + const float* mTurnCheckDist_s{}; + // static_param at offset 0xb0 + const float* mTurnCheckHeight_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBossBattleRoomRoot.cpp b/src/Game/AI/AI/aiBossBattleRoomRoot.cpp new file mode 100644 index 00000000..d2bc21ff --- /dev/null +++ b/src/Game/AI/AI/aiBossBattleRoomRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiBossBattleRoomRoot.h" + +namespace uking::ai { + +BossBattleRoomRoot::BossBattleRoomRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BossBattleRoomRoot::~BossBattleRoomRoot() = default; + +bool BossBattleRoomRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BossBattleRoomRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BossBattleRoomRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BossBattleRoomRoot::loadParams_() { + getStaticParam(&mFramesRollKeepSecond_s, "FramesRollKeepSecond"); + getStaticParam(&mNumTimesRoll_s, "NumTimesRoll"); + getStaticParam(&mTitleAngle_s, "TitleAngle"); + getStaticParam(&mRollAngle_s, "RollAngle"); + getStaticParam(&mFramesRotate_s, "FramesRotate"); + getStaticParam(&mFramesReset_s, "FramesReset"); + getStaticParam(&mFramesRoll_s, "FramesRoll"); + getStaticParam(&mFramesDelayRoll_s, "FramesDelayRoll"); + getStaticParam(&mFramesRollKeepFirst_s, "FramesRollKeepFirst"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBossBattleRoomRoot.h b/src/Game/AI/AI/aiBossBattleRoomRoot.h new file mode 100644 index 00000000..48703491 --- /dev/null +++ b/src/Game/AI/AI/aiBossBattleRoomRoot.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BossBattleRoomRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BossBattleRoomRoot, ksys::act::ai::Ai) +public: + explicit BossBattleRoomRoot(const InitArg& arg); + ~BossBattleRoomRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFramesRollKeepSecond_s{}; + // static_param at offset 0x40 + const int* mNumTimesRoll_s{}; + // static_param at offset 0x48 + const float* mTitleAngle_s{}; + // static_param at offset 0x50 + const float* mRollAngle_s{}; + // static_param at offset 0x58 + const float* mFramesRotate_s{}; + // static_param at offset 0x60 + const float* mFramesReset_s{}; + // static_param at offset 0x68 + const float* mFramesRoll_s{}; + // static_param at offset 0x70 + const float* mFramesDelayRoll_s{}; + // static_param at offset 0x78 + const float* mFramesRollKeepFirst_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowEquiped.cpp b/src/Game/AI/AI/aiBowEquiped.cpp new file mode 100644 index 00000000..ae73f06c --- /dev/null +++ b/src/Game/AI/AI/aiBowEquiped.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiBowEquiped.h" + +namespace uking::ai { + +BowEquiped::BowEquiped(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BowEquiped::~BowEquiped() = default; + +void BowEquiped::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BowEquiped::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowEquiped.h b/src/Game/AI/AI/aiBowEquiped.h new file mode 100644 index 00000000..c98880aa --- /dev/null +++ b/src/Game/AI/AI/aiBowEquiped.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BowEquiped : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BowEquiped, ksys::act::ai::Ai) +public: + explicit BowEquiped(const InitArg& arg); + ~BowEquiped() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowShoot.cpp b/src/Game/AI/AI/aiBowShoot.cpp new file mode 100644 index 00000000..6b2ac4ac --- /dev/null +++ b/src/Game/AI/AI/aiBowShoot.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiBowShoot.h" + +namespace uking::ai { + +BowShoot::BowShoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BowShoot::~BowShoot() = default; + +void BowShoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BowShoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowShoot.h b/src/Game/AI/AI/aiBowShoot.h new file mode 100644 index 00000000..2470dc46 --- /dev/null +++ b/src/Game/AI/AI/aiBowShoot.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BowShoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BowShoot, ksys::act::ai::Ai) +public: + explicit BowShoot(const InitArg& arg); + ~BowShoot() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowlPin.cpp b/src/Game/AI/AI/aiBowlPin.cpp new file mode 100644 index 00000000..dbd8fe40 --- /dev/null +++ b/src/Game/AI/AI/aiBowlPin.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiBowlPin.h" + +namespace uking::ai { + +BowlPin::BowlPin(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BowlPin::~BowlPin() = default; + +bool BowlPin::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BowlPin::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BowlPin::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BowlPin::loadParams_() { + getStaticParam(&mDegree_s, "Degree"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBowlPin.h b/src/Game/AI/AI/aiBowlPin.h new file mode 100644 index 00000000..d81b9dad --- /dev/null +++ b/src/Game/AI/AI/aiBowlPin.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BowlPin : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BowlPin, ksys::act::ai::Ai) +public: + explicit BowlPin(const InitArg& arg); + ~BowlPin() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDegree_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBoxWaterRoot.cpp b/src/Game/AI/AI/aiBoxWaterRoot.cpp new file mode 100644 index 00000000..09a74992 --- /dev/null +++ b/src/Game/AI/AI/aiBoxWaterRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiBoxWaterRoot.h" + +namespace uking::ai { + +BoxWaterRoot::BoxWaterRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BoxWaterRoot::~BoxWaterRoot() = default; + +bool BoxWaterRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BoxWaterRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BoxWaterRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BoxWaterRoot::loadParams_() { + getMapUnitParam(&mWaterMaterial_m, "WaterMaterial"); + getMapUnitParam(&mFlowSpeedFactor_m, "FlowSpeedFactor"); + getMapUnitParam(&mWaterfallRadius_m, "WaterfallRadius"); + getMapUnitParam(&mWaterfallLength_m, "WaterfallLength"); + getMapUnitParam(&mWaterfallThickness_m, "WaterfallThickness"); + getMapUnitParam(&mWaterfallAngle_m, "WaterfallAngle"); + getMapUnitParam(&mSoundInDoorType_m, "SoundInDoorType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBoxWaterRoot.h b/src/Game/AI/AI/aiBoxWaterRoot.h new file mode 100644 index 00000000..72f6b97c --- /dev/null +++ b/src/Game/AI/AI/aiBoxWaterRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BoxWaterRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BoxWaterRoot, ksys::act::ai::Ai) +public: + explicit BoxWaterRoot(const InitArg& arg); + ~BoxWaterRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x38]; + // map_unit_param at offset 0x70 + const int* mWaterMaterial_m{}; + // map_unit_param at offset 0x78 + const float* mFlowSpeedFactor_m{}; + // map_unit_param at offset 0x80 + const float* mWaterfallRadius_m{}; + // map_unit_param at offset 0x88 + const float* mWaterfallLength_m{}; + // map_unit_param at offset 0x90 + const float* mWaterfallThickness_m{}; + // map_unit_param at offset 0x98 + const float* mWaterfallAngle_m{}; + // map_unit_param at offset 0xa0 + const int* mSoundInDoorType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBreathAttackEnemyBattle.cpp b/src/Game/AI/AI/aiBreathAttackEnemyBattle.cpp new file mode 100644 index 00000000..967253ac --- /dev/null +++ b/src/Game/AI/AI/aiBreathAttackEnemyBattle.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiBreathAttackEnemyBattle.h" + +namespace uking::ai { + +BreathAttackEnemyBattle::BreathAttackEnemyBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +BreathAttackEnemyBattle::~BreathAttackEnemyBattle() = default; + +bool BreathAttackEnemyBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void BreathAttackEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void BreathAttackEnemyBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void BreathAttackEnemyBattle::loadParams_() { + getStaticParam(&mEnlargeTime_s, "EnlargeTime"); + getStaticParam(&mAttackAngle_s, "AttackAngle"); + getStaticParam(&mAttackRatio_s, "AttackRatio"); + getStaticParam(&mBreathSize_s, "BreathSize"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); + getStaticParam(&mGlobalNoAtkTime_s, "GlobalNoAtkTime"); + getStaticParam(&mIsEndAfterAttack_s, "IsEndAfterAttack"); + getStaticParam(&mIsDeleteBreath_s, "IsDeleteBreath"); + getStaticParam(&mBreathName_s, "BreathName"); + getStaticParam(&mIsUpdateNoticeState_s, "IsUpdateNoticeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBreathAttackEnemyBattle.h b/src/Game/AI/AI/aiBreathAttackEnemyBattle.h new file mode 100644 index 00000000..1e9e103f --- /dev/null +++ b/src/Game/AI/AI/aiBreathAttackEnemyBattle.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BreathAttackEnemyBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(BreathAttackEnemyBattle, ksys::act::ai::Ai) +public: + explicit BreathAttackEnemyBattle(const InitArg& arg); + ~BreathAttackEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mEnlargeTime_s{}; + // static_param at offset 0x40 + const float* mAttackAngle_s{}; + // static_param at offset 0x48 + const float* mAttackRatio_s{}; + // static_param at offset 0x50 + const float* mBreathSize_s{}; + // static_param at offset 0x58 + const float* mAttackIntervalIntensity_s{}; + // static_param at offset 0x60 + const int* mGlobalNoAtkTime_s{}; + // static_param at offset 0x68 + const bool* mIsEndAfterAttack_s{}; + // static_param at offset 0x70 + const bool* mIsDeleteBreath_s{}; + // static_param at offset 0x78 + const bool* mIsUpdateNoticeState_s{}; + // static_param at offset 0x80 + sead::SafeString mBreathName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.cpp b/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.cpp new file mode 100644 index 00000000..41f2499f --- /dev/null +++ b/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiBreathEnemyRangeKeepMove.h" + +namespace uking::ai { + +BreathEnemyRangeKeepMove::BreathEnemyRangeKeepMove(const InitArg& arg) : EnemyRangeKeepMove(arg) {} + +BreathEnemyRangeKeepMove::~BreathEnemyRangeKeepMove() = default; + +bool BreathEnemyRangeKeepMove::init_(sead::Heap* heap) { + return EnemyRangeKeepMove::init_(heap); +} + +void BreathEnemyRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRangeKeepMove::enter_(params); +} + +void BreathEnemyRangeKeepMove::leave_() { + EnemyRangeKeepMove::leave_(); +} + +void BreathEnemyRangeKeepMove::loadParams_() { + EnemyRangeKeepMove::loadParams_(); + getStaticParam(&mEnlargeTime_s, "EnlargeTime"); + getStaticParam(&mAttackRatio_s, "AttackRatio"); + getStaticParam(&mBreathSize_s, "BreathSize"); + getStaticParam(&mBreathName_s, "BreathName"); + getStaticParam(&mBaseNode_s, "BaseNode"); + getStaticParam(&mLoopTime_s, "LoopTime"); + getStaticParam(&mBreathEndDist_s, "BreathEndDist"); + getStaticParam(&mBreathMinTime_s, "BreathMinTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.h b/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.h new file mode 100644 index 00000000..46b2c9a5 --- /dev/null +++ b/src/Game/AI/AI/aiBreathEnemyRangeKeepMove.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class BreathEnemyRangeKeepMove : public EnemyRangeKeepMove { + SEAD_RTTI_OVERRIDE(BreathEnemyRangeKeepMove, EnemyRangeKeepMove) +public: + explicit BreathEnemyRangeKeepMove(const InitArg& arg); + ~BreathEnemyRangeKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x110 + const int* mEnlargeTime_s{}; + // static_param at offset 0x118 + const float* mAttackRatio_s{}; + // static_param at offset 0x120 + const float* mBreathSize_s{}; + // static_param at offset 0x128 + sead::SafeString mBreathName_s{}; + // static_param at offset 0x138 + sead::SafeString mBaseNode_s{}; + // static_param at offset 0x148 + const int* mLoopTime_s{}; + // static_param at offset 0x150 + const float* mBreathEndDist_s{}; + // static_param at offset 0x158 + const int* mBreathMinTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCalledEnemyMove.cpp b/src/Game/AI/AI/aiCalledEnemyMove.cpp new file mode 100644 index 00000000..123234aa --- /dev/null +++ b/src/Game/AI/AI/aiCalledEnemyMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCalledEnemyMove.h" + +namespace uking::ai { + +CalledEnemyMove::CalledEnemyMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CalledEnemyMove::~CalledEnemyMove() = default; + +bool CalledEnemyMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CalledEnemyMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CalledEnemyMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CalledEnemyMove::loadParams_() { + getStaticParam(&mLostDist_s, "LostDist"); + getStaticParam(&mWaitDist_s, "WaitDist"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCalledEnemyMove.h b/src/Game/AI/AI/aiCalledEnemyMove.h new file mode 100644 index 00000000..179e86ba --- /dev/null +++ b/src/Game/AI/AI/aiCalledEnemyMove.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CalledEnemyMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CalledEnemyMove, ksys::act::ai::Ai) +public: + explicit CalledEnemyMove(const InitArg& arg); + ~CalledEnemyMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLostDist_s{}; + // static_param at offset 0x40 + const float* mWaitDist_s{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraAI.cpp b/src/Game/AI/AI/aiCameraAI.cpp new file mode 100644 index 00000000..aded7718 --- /dev/null +++ b/src/Game/AI/AI/aiCameraAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiCameraAI.h" + +namespace uking::ai { + +CameraAI::CameraAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CameraAI::~CameraAI() = default; + +bool CameraAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CameraAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CameraAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CameraAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraAI.h b/src/Game/AI/AI/aiCameraAI.h new file mode 100644 index 00000000..dd2fbc8f --- /dev/null +++ b/src/Game/AI/AI/aiCameraAI.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CameraAI, ksys::act::ai::Ai) +public: + explicit CameraAI(const InitArg& arg); + ~CameraAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraBow.cpp b/src/Game/AI/AI/aiCameraBow.cpp new file mode 100644 index 00000000..7c4cf484 --- /dev/null +++ b/src/Game/AI/AI/aiCameraBow.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraBow.h" + +namespace uking::ai { + +CameraBow::CameraBow(const InitArg& arg) : CameraAI(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraBow.h b/src/Game/AI/AI/aiCameraBow.h new file mode 100644 index 00000000..41e5d082 --- /dev/null +++ b/src/Game/AI/AI/aiCameraBow.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraBow : public CameraAI { + SEAD_RTTI_OVERRIDE(CameraBow, CameraAI) +public: + explicit CameraBow(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEditRoot.cpp b/src/Game/AI/AI/aiCameraEditRoot.cpp new file mode 100644 index 00000000..d420a252 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEditRoot.cpp @@ -0,0 +1,11 @@ +#include "Game/AI/AI/aiCameraEditRoot.h" + +namespace uking::ai { + +CameraEditRoot::CameraEditRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool CameraEditRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEditRoot.h b/src/Game/AI/AI/aiCameraEditRoot.h new file mode 100644 index 00000000..29145a09 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEditRoot.h @@ -0,0 +1,17 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEditRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CameraEditRoot, ksys::act::ai::Ai) +public: + explicit CameraEditRoot(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEvent.cpp b/src/Game/AI/AI/aiCameraEvent.cpp new file mode 100644 index 00000000..a7b33f6d --- /dev/null +++ b/src/Game/AI/AI/aiCameraEvent.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraEvent.h" + +namespace uking::ai { + +CameraEvent::CameraEvent(const InitArg& arg) : CameraAI(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEvent.h b/src/Game/AI/AI/aiCameraEvent.h new file mode 100644 index 00000000..4daeee75 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEvent.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEvent : public CameraAI { + SEAD_RTTI_OVERRIDE(CameraEvent, CameraAI) +public: + explicit CameraEvent(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventReturnSavePoint.cpp b/src/Game/AI/AI/aiCameraEventReturnSavePoint.cpp new file mode 100644 index 00000000..7d005db2 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventReturnSavePoint.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraEventReturnSavePoint.h" + +namespace uking::ai { + +CameraEventReturnSavePoint::CameraEventReturnSavePoint(const InitArg& arg) : CameraEvent(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventReturnSavePoint.h b/src/Game/AI/AI/aiCameraEventReturnSavePoint.h new file mode 100644 index 00000000..2bda1945 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventReturnSavePoint.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraEvent.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEventReturnSavePoint : public CameraEvent { + SEAD_RTTI_OVERRIDE(CameraEventReturnSavePoint, CameraEvent) +public: + explicit CameraEventReturnSavePoint(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalk.cpp b/src/Game/AI/AI/aiCameraEventTalk.cpp new file mode 100644 index 00000000..f5e4098d --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalk.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiCameraEventTalk.h" + +namespace uking::ai { + +CameraEventTalk::CameraEventTalk(const InitArg& arg) : CameraEvent(arg) {} + +CameraEventTalk::~CameraEventTalk() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalk.h b/src/Game/AI/AI/aiCameraEventTalk.h new file mode 100644 index 00000000..37c30d14 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalk.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiCameraEvent.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEventTalk : public CameraEvent { + SEAD_RTTI_OVERRIDE(CameraEventTalk, CameraEvent) +public: + explicit CameraEventTalk(const InitArg& arg); + ~CameraEventTalk() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalkAI.cpp b/src/Game/AI/AI/aiCameraEventTalkAI.cpp new file mode 100644 index 00000000..60f3e6bb --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalkAI.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraEventTalkAI.h" + +namespace uking::ai { + +CameraEventTalkAI::CameraEventTalkAI(const InitArg& arg) : CameraEventTalk(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalkAI.h b/src/Game/AI/AI/aiCameraEventTalkAI.h new file mode 100644 index 00000000..9e57849c --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalkAI.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraEventTalk.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEventTalkAI : public CameraEventTalk { + SEAD_RTTI_OVERRIDE(CameraEventTalkAI, CameraEventTalk) +public: + explicit CameraEventTalkAI(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalkAIRet.cpp b/src/Game/AI/AI/aiCameraEventTalkAIRet.cpp new file mode 100644 index 00000000..cfe18689 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalkAIRet.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraEventTalkAIRet.h" + +namespace uking::ai { + +CameraEventTalkAIRet::CameraEventTalkAIRet(const InitArg& arg) : CameraEventTalk(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraEventTalkAIRet.h b/src/Game/AI/AI/aiCameraEventTalkAIRet.h new file mode 100644 index 00000000..f74b5285 --- /dev/null +++ b/src/Game/AI/AI/aiCameraEventTalkAIRet.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraEventTalk.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraEventTalkAIRet : public CameraEventTalk { + SEAD_RTTI_OVERRIDE(CameraEventTalkAIRet, CameraEventTalk) +public: + explicit CameraEventTalkAIRet(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraGameRoot.cpp b/src/Game/AI/AI/aiCameraGameRoot.cpp new file mode 100644 index 00000000..838fb11f --- /dev/null +++ b/src/Game/AI/AI/aiCameraGameRoot.cpp @@ -0,0 +1,7 @@ +#include "Game/AI/AI/aiCameraGameRoot.h" + +namespace uking::ai { + +CameraGameRoot::CameraGameRoot(const InitArg& arg) : CameraAI(arg) {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraGameRoot.h b/src/Game/AI/AI/aiCameraGameRoot.h new file mode 100644 index 00000000..1e7cbc7a --- /dev/null +++ b/src/Game/AI/AI/aiCameraGameRoot.h @@ -0,0 +1,16 @@ +#pragma once + +#include "Game/AI/AI/aiCameraAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraGameRoot : public CameraAI { + SEAD_RTTI_OVERRIDE(CameraGameRoot, CameraAI) +public: + explicit CameraGameRoot(const InitArg& arg); + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraRoot.cpp b/src/Game/AI/AI/aiCameraRoot.cpp new file mode 100644 index 00000000..34acc952 --- /dev/null +++ b/src/Game/AI/AI/aiCameraRoot.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiCameraRoot.h" + +namespace uking::ai { + +CameraRoot::CameraRoot(const InitArg& arg) : CameraAI(arg) {} + +CameraRoot::~CameraRoot() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraRoot.h b/src/Game/AI/AI/aiCameraRoot.h new file mode 100644 index 00000000..b92e7776 --- /dev/null +++ b/src/Game/AI/AI/aiCameraRoot.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiCameraAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraRoot : public CameraAI { + SEAD_RTTI_OVERRIDE(CameraRoot, CameraAI) +public: + explicit CameraRoot(const InitArg& arg); + ~CameraRoot() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraTool.cpp b/src/Game/AI/AI/aiCameraTool.cpp new file mode 100644 index 00000000..03d5327c --- /dev/null +++ b/src/Game/AI/AI/aiCameraTool.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiCameraTool.h" + +namespace uking::ai { + +CameraTool::CameraTool(const InitArg& arg) : CameraAI(arg) {} + +CameraTool::~CameraTool() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCameraTool.h b/src/Game/AI/AI/aiCameraTool.h new file mode 100644 index 00000000..62ecae73 --- /dev/null +++ b/src/Game/AI/AI/aiCameraTool.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiCameraAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CameraTool : public CameraAI { + SEAD_RTTI_OVERRIDE(CameraTool, CameraAI) +public: + explicit CameraTool(const InitArg& arg); + ~CameraTool() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCannonBallRoot.cpp b/src/Game/AI/AI/aiCannonBallRoot.cpp new file mode 100644 index 00000000..5c402455 --- /dev/null +++ b/src/Game/AI/AI/aiCannonBallRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiCannonBallRoot.h" + +namespace uking::ai { + +CannonBallRoot::CannonBallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CannonBallRoot::~CannonBallRoot() = default; + +bool CannonBallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CannonBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CannonBallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CannonBallRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCannonBallRoot.h b/src/Game/AI/AI/aiCannonBallRoot.h new file mode 100644 index 00000000..7c177e45 --- /dev/null +++ b/src/Game/AI/AI/aiCannonBallRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CannonBallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CannonBallRoot, ksys::act::ai::Ai) +public: + explicit CannonBallRoot(const InitArg& arg); + ~CannonBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActDeadSelector.cpp b/src/Game/AI/AI/aiCapturedActDeadSelector.cpp new file mode 100644 index 00000000..21f540fb --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActDeadSelector.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCapturedActDeadSelector.h" + +namespace uking::ai { + +CapturedActDeadSelector::CapturedActDeadSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CapturedActDeadSelector::~CapturedActDeadSelector() = default; + +bool CapturedActDeadSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CapturedActDeadSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CapturedActDeadSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CapturedActDeadSelector::loadParams_() { + getMapUnitParam(&mIsPlayerPut_m, "IsPlayerPut"); + // FIXME: CALL _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE @ + // 0x7100d66968 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActDeadSelector.h b/src/Game/AI/AI/aiCapturedActDeadSelector.h new file mode 100644 index 00000000..09e4edd7 --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActDeadSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CapturedActDeadSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CapturedActDeadSelector, ksys::act::ai::Ai) +public: + explicit CapturedActDeadSelector(const InitArg& arg); + ~CapturedActDeadSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsPlayerPut_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActorReaction.cpp b/src/Game/AI/AI/aiCapturedActorReaction.cpp new file mode 100644 index 00000000..65a409f9 --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActorReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiCapturedActorReaction.h" + +namespace uking::ai { + +CapturedActorReaction::CapturedActorReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CapturedActorReaction::~CapturedActorReaction() = default; + +bool CapturedActorReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CapturedActorReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CapturedActorReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CapturedActorReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActorReaction.h b/src/Game/AI/AI/aiCapturedActorReaction.h new file mode 100644 index 00000000..77ca1b3d --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActorReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CapturedActorReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CapturedActorReaction, ksys::act::ai::Ai) +public: + explicit CapturedActorReaction(const InitArg& arg); + ~CapturedActorReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActorReactionChemical.cpp b/src/Game/AI/AI/aiCapturedActorReactionChemical.cpp new file mode 100644 index 00000000..437eaa08 --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActorReactionChemical.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCapturedActorReactionChemical.h" + +namespace uking::ai { + +CapturedActorReactionChemical::CapturedActorReactionChemical(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +CapturedActorReactionChemical::~CapturedActorReactionChemical() = default; + +bool CapturedActorReactionChemical::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CapturedActorReactionChemical::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CapturedActorReactionChemical::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CapturedActorReactionChemical::loadParams_() { + getStaticParam(&mOnEnterOnly_s, "OnEnterOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCapturedActorReactionChemical.h b/src/Game/AI/AI/aiCapturedActorReactionChemical.h new file mode 100644 index 00000000..62c7c0b7 --- /dev/null +++ b/src/Game/AI/AI/aiCapturedActorReactionChemical.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CapturedActorReactionChemical : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CapturedActorReactionChemical, ksys::act::ai::Ai) +public: + explicit CapturedActorReactionChemical(const InitArg& arg); + ~CapturedActorReactionChemical() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mOnEnterOnly_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCarryBox.cpp b/src/Game/AI/AI/aiCarryBox.cpp new file mode 100644 index 00000000..77ff1178 --- /dev/null +++ b/src/Game/AI/AI/aiCarryBox.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiCarryBox.h" + +namespace uking::ai { + +CarryBox::CarryBox(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CarryBox::~CarryBox() = default; + +bool CarryBox::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CarryBox::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CarryBox::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CarryBox::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCarryBox.h b/src/Game/AI/AI/aiCarryBox.h new file mode 100644 index 00000000..7baeacd7 --- /dev/null +++ b/src/Game/AI/AI/aiCarryBox.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CarryBox : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CarryBox, ksys::act::ai::Ai) +public: + explicit CarryBox(const InitArg& arg); + ~CarryBox() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCastleLynelBattle.cpp b/src/Game/AI/AI/aiCastleLynelBattle.cpp new file mode 100644 index 00000000..0b6824a1 --- /dev/null +++ b/src/Game/AI/AI/aiCastleLynelBattle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiCastleLynelBattle.h" + +namespace uking::ai { + +CastleLynelBattle::CastleLynelBattle(const InitArg& arg) : LynelBattle(arg) {} + +CastleLynelBattle::~CastleLynelBattle() = default; + +bool CastleLynelBattle::init_(sead::Heap* heap) { + return LynelBattle::init_(heap); +} + +void CastleLynelBattle::enter_(ksys::act::ai::InlineParamPack* params) { + LynelBattle::enter_(params); +} + +void CastleLynelBattle::leave_() { + LynelBattle::leave_(); +} + +void CastleLynelBattle::loadParams_() { + LynelBattle::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCastleLynelBattle.h b/src/Game/AI/AI/aiCastleLynelBattle.h new file mode 100644 index 00000000..ff1ec332 --- /dev/null +++ b/src/Game/AI/AI/aiCastleLynelBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLynelBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CastleLynelBattle : public LynelBattle { + SEAD_RTTI_OVERRIDE(CastleLynelBattle, LynelBattle) +public: + explicit CastleLynelBattle(const InitArg& arg); + ~CastleLynelBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChangeWeatherTagRoot.cpp b/src/Game/AI/AI/aiChangeWeatherTagRoot.cpp new file mode 100644 index 00000000..9a7f4bff --- /dev/null +++ b/src/Game/AI/AI/aiChangeWeatherTagRoot.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiChangeWeatherTagRoot.h" + +namespace uking::ai { + +ChangeWeatherTagRoot::ChangeWeatherTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool ChangeWeatherTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChangeWeatherTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChangeWeatherTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChangeWeatherTagRoot::loadParams_() { + getMapUnitParam(&mWeather_m, "Weather"); + getMapUnitParam(&mWeatherEff_m, "WeatherEff"); + getMapUnitParam(&mPaletteSel_m, "PaletteSel"); + getMapUnitParam(&mPSelSpeed_m, "PSelSpeed"); + getMapUnitParam(&mIgnitedLevel_m, "IgnitedLevel"); + getMapUnitParam(&mTemperatureDay_m, "TemperatureDay"); + getMapUnitParam(&mTemperatureNight_m, "TemperatureNight"); + getMapUnitParam(&mTemperatureDirectDay_m, "TemperatureDirectDay"); + getMapUnitParam(&mTemperatureDirectNight_m, "TemperatureDirectNight"); + getMapUnitParam(&mCloudShadowOff_m, "CloudShadowOff"); + getMapUnitParam(&mBluffThunderOff_m, "BluffThunderOff"); + getMapUnitParam(&mFogMinusCorrection_m, "FogMinusCorrection"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChangeWeatherTagRoot.h b/src/Game/AI/AI/aiChangeWeatherTagRoot.h new file mode 100644 index 00000000..7501c5d4 --- /dev/null +++ b/src/Game/AI/AI/aiChangeWeatherTagRoot.h @@ -0,0 +1,44 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChangeWeatherTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChangeWeatherTagRoot, ksys::act::ai::Ai) +public: + explicit ChangeWeatherTagRoot(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mWeather_m{}; + // map_unit_param at offset 0x40 + const int* mWeatherEff_m{}; + // map_unit_param at offset 0x48 + const int* mPaletteSel_m{}; + // map_unit_param at offset 0x50 + const int* mPSelSpeed_m{}; + // map_unit_param at offset 0x58 + const int* mIgnitedLevel_m{}; + // map_unit_param at offset 0x60 + const float* mTemperatureDay_m{}; + // map_unit_param at offset 0x68 + const float* mTemperatureNight_m{}; + // map_unit_param at offset 0x70 + const float* mTemperatureDirectDay_m{}; + // map_unit_param at offset 0x78 + const float* mTemperatureDirectNight_m{}; + // map_unit_param at offset 0x80 + const bool* mCloudShadowOff_m{}; + // map_unit_param at offset 0x88 + const bool* mBluffThunderOff_m{}; + // map_unit_param at offset 0x90 + const bool* mFogMinusCorrection_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChangeWindTagRoot.cpp b/src/Game/AI/AI/aiChangeWindTagRoot.cpp new file mode 100644 index 00000000..ce008e43 --- /dev/null +++ b/src/Game/AI/AI/aiChangeWindTagRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiChangeWindTagRoot.h" + +namespace uking::ai { + +ChangeWindTagRoot::ChangeWindTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChangeWindTagRoot::~ChangeWindTagRoot() = default; + +bool ChangeWindTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChangeWindTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChangeWindTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChangeWindTagRoot::loadParams_() { + getMapUnitParam(&mDirection_m, "Direction"); + getMapUnitParam(&mWindSpeed_m, "WindSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChangeWindTagRoot.h b/src/Game/AI/AI/aiChangeWindTagRoot.h new file mode 100644 index 00000000..83c1a59b --- /dev/null +++ b/src/Game/AI/AI/aiChangeWindTagRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChangeWindTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChangeWindTagRoot, ksys::act::ai::Ai) +public: + explicit ChangeWindTagRoot(const InitArg& arg); + ~ChangeWindTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mDirection_m{}; + // map_unit_param at offset 0x40 + const float* mWindSpeed_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChaseSound.cpp b/src/Game/AI/AI/aiChaseSound.cpp new file mode 100644 index 00000000..23d6e4b5 --- /dev/null +++ b/src/Game/AI/AI/aiChaseSound.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiChaseSound.h" + +namespace uking::ai { + +ChaseSound::ChaseSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChaseSound::~ChaseSound() = default; + +void ChaseSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChaseSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChaseSound::loadParams_() { + getStaticParam(&mTargetUpdateIntervalMin_s, "TargetUpdateIntervalMin"); + getStaticParam(&mTargetUpdateIntervalMax_s, "TargetUpdateIntervalMax"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mTurnDir_s, "TurnDir"); + getStaticParam(&mUseViewPointSimpleOffset_s, "UseViewPointSimpleOffset"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChaseSound.h b/src/Game/AI/AI/aiChaseSound.h new file mode 100644 index 00000000..2f789b5f --- /dev/null +++ b/src/Game/AI/AI/aiChaseSound.h @@ -0,0 +1,32 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChaseSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChaseSound, ksys::act::ai::Ai) +public: + explicit ChaseSound(const InitArg& arg); + ~ChaseSound() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNearDist_s{}; + // static_param at offset 0x40 + const float* mTurnDir_s{}; + // static_param at offset 0x48 + const int* mTargetUpdateIntervalMin_s{}; + // static_param at offset 0x50 + const int* mTargetUpdateIntervalMax_s{}; + // static_param at offset 0x58 + const bool* mUseViewPointSimpleOffset_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalEnemyFindPlayer.cpp b/src/Game/AI/AI/aiChemicalEnemyFindPlayer.cpp new file mode 100644 index 00000000..de0569c4 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalEnemyFindPlayer.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiChemicalEnemyFindPlayer.h" + +namespace uking::ai { + +ChemicalEnemyFindPlayer::ChemicalEnemyFindPlayer(const InitArg& arg) + : LandHumEnemyFindPlayer(arg) {} + +ChemicalEnemyFindPlayer::~ChemicalEnemyFindPlayer() = default; + +void ChemicalEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyFindPlayer::enter_(params); +} + +void ChemicalEnemyFindPlayer::leave_() { + LandHumEnemyFindPlayer::leave_(); +} + +void ChemicalEnemyFindPlayer::loadParams_() { + LandHumEnemyFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalEnemyFindPlayer.h b/src/Game/AI/AI/aiChemicalEnemyFindPlayer.h new file mode 100644 index 00000000..d85f8932 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalEnemyFindPlayer.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalEnemyFindPlayer : public LandHumEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(ChemicalEnemyFindPlayer, LandHumEnemyFindPlayer) +public: + explicit ChemicalEnemyFindPlayer(const InitArg& arg); + ~ChemicalEnemyFindPlayer() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalEnemyRoot.cpp b/src/Game/AI/AI/aiChemicalEnemyRoot.cpp new file mode 100644 index 00000000..94bbc0a9 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalEnemyRoot.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiChemicalEnemyRoot.h" + +namespace uking::ai { + +ChemicalEnemyRoot::ChemicalEnemyRoot(const InitArg& arg) : EnemyRoot(arg) {} + +ChemicalEnemyRoot::~ChemicalEnemyRoot() = default; + +void ChemicalEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void ChemicalEnemyRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mIsElementNoHit_s, "IsElementNoHit"); + getStaticParam(&mIsElectricWater_s, "IsElectricWater"); + getStaticParam(&mColorASName_s, "ColorASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalEnemyRoot.h b/src/Game/AI/AI/aiChemicalEnemyRoot.h new file mode 100644 index 00000000..7e191534 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalEnemyRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalEnemyRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(ChemicalEnemyRoot, EnemyRoot) +public: + explicit ChemicalEnemyRoot(const InitArg& arg); + ~ChemicalEnemyRoot() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const bool* mIsElementNoHit_s{}; + // static_param at offset 0x1e0 + const bool* mIsElectricWater_s{}; + // static_param at offset 0x1e8 + sead::SafeString mColorASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalExplode.cpp b/src/Game/AI/AI/aiChemicalExplode.cpp new file mode 100644 index 00000000..09db9f12 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalExplode.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiChemicalExplode.h" + +namespace uking::ai { + +ChemicalExplode::ChemicalExplode(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChemicalExplode::~ChemicalExplode() = default; + +bool ChemicalExplode::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChemicalExplode::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChemicalExplode::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChemicalExplode::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalExplode.h b/src/Game/AI/AI/aiChemicalExplode.h new file mode 100644 index 00000000..0550dbaa --- /dev/null +++ b/src/Game/AI/AI/aiChemicalExplode.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalExplode : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChemicalExplode, ksys::act::ai::Ai) +public: + explicit ChemicalExplode(const InitArg& arg); + ~ChemicalExplode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalGiantArmorRoot.cpp b/src/Game/AI/AI/aiChemicalGiantArmorRoot.cpp new file mode 100644 index 00000000..8d0da32c --- /dev/null +++ b/src/Game/AI/AI/aiChemicalGiantArmorRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiChemicalGiantArmorRoot.h" + +namespace uking::ai { + +ChemicalGiantArmorRoot::ChemicalGiantArmorRoot(const InitArg& arg) : GiantArmorRoot(arg) {} + +ChemicalGiantArmorRoot::~ChemicalGiantArmorRoot() = default; + +bool ChemicalGiantArmorRoot::init_(sead::Heap* heap) { + return GiantArmorRoot::init_(heap); +} + +void ChemicalGiantArmorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GiantArmorRoot::enter_(params); +} + +void ChemicalGiantArmorRoot::leave_() { + GiantArmorRoot::leave_(); +} + +void ChemicalGiantArmorRoot::loadParams_() { + GiantArmorRoot::loadParams_(); + getStaticParam(&mElectricTime_s, "ElectricTime"); + getStaticParam(&mElectricDamageScale_s, "ElectricDamageScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalGiantArmorRoot.h b/src/Game/AI/AI/aiChemicalGiantArmorRoot.h new file mode 100644 index 00000000..b64cce0b --- /dev/null +++ b/src/Game/AI/AI/aiChemicalGiantArmorRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiGiantArmorRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalGiantArmorRoot : public GiantArmorRoot { + SEAD_RTTI_OVERRIDE(ChemicalGiantArmorRoot, GiantArmorRoot) +public: + explicit ChemicalGiantArmorRoot(const InitArg& arg); + ~ChemicalGiantArmorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mElectricTime_s{}; + // static_param at offset 0x40 + const float* mElectricDamageScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalStayObjectRoot.cpp b/src/Game/AI/AI/aiChemicalStayObjectRoot.cpp new file mode 100644 index 00000000..e10b1443 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalStayObjectRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChemicalStayObjectRoot.h" + +namespace uking::ai { + +ChemicalStayObjectRoot::ChemicalStayObjectRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChemicalStayObjectRoot::~ChemicalStayObjectRoot() = default; + +bool ChemicalStayObjectRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChemicalStayObjectRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChemicalStayObjectRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChemicalStayObjectRoot::loadParams_() { + getStaticParam(&mIsCheckDelete_s, "IsCheckDelete"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalStayObjectRoot.h b/src/Game/AI/AI/aiChemicalStayObjectRoot.h new file mode 100644 index 00000000..9f4af8bd --- /dev/null +++ b/src/Game/AI/AI/aiChemicalStayObjectRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalStayObjectRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChemicalStayObjectRoot, ksys::act::ai::Ai) +public: + explicit ChemicalStayObjectRoot(const InitArg& arg); + ~ChemicalStayObjectRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckDelete_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalWeaponRoot.cpp b/src/Game/AI/AI/aiChemicalWeaponRoot.cpp new file mode 100644 index 00000000..014ca383 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalWeaponRoot.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiChemicalWeaponRoot.h" + +namespace uking::ai { + +ChemicalWeaponRoot::ChemicalWeaponRoot(const InitArg& arg) : WeaponRootAI(arg) {} + +ChemicalWeaponRoot::~ChemicalWeaponRoot() = default; + +void ChemicalWeaponRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeaponRootAI::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChemicalWeaponRoot.h b/src/Game/AI/AI/aiChemicalWeaponRoot.h new file mode 100644 index 00000000..9aa9da83 --- /dev/null +++ b/src/Game/AI/AI/aiChemicalWeaponRoot.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChemicalWeaponRoot : public WeaponRootAI { + SEAD_RTTI_OVERRIDE(ChemicalWeaponRoot, WeaponRootAI) +public: + explicit ChemicalWeaponRoot(const InitArg& arg); + ~ChemicalWeaponRoot() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildDeviceReflectArrow.cpp b/src/Game/AI/AI/aiChildDeviceReflectArrow.cpp new file mode 100644 index 00000000..7feb0a69 --- /dev/null +++ b/src/Game/AI/AI/aiChildDeviceReflectArrow.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiChildDeviceReflectArrow.h" + +namespace uking::ai { + +ChildDeviceReflectArrow::ChildDeviceReflectArrow(const InitArg& arg) : WithoutWeaponArrow(arg) {} + +ChildDeviceReflectArrow::~ChildDeviceReflectArrow() = default; + +void ChildDeviceReflectArrow::enter_(ksys::act::ai::InlineParamPack* params) { + WithoutWeaponArrow::enter_(params); +} + +void ChildDeviceReflectArrow::loadParams_() { + WithoutWeaponArrow::loadParams_(); + getStaticParam(&mReflectCountMax_s, "ReflectCountMax"); + getStaticParam(&mReflectAimSpeed_s, "ReflectAimSpeed"); + getStaticParam(&mReflectAccel_s, "ReflectAccel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildDeviceReflectArrow.h b/src/Game/AI/AI/aiChildDeviceReflectArrow.h new file mode 100644 index 00000000..7aca9648 --- /dev/null +++ b/src/Game/AI/AI/aiChildDeviceReflectArrow.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiWithoutWeaponArrow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChildDeviceReflectArrow : public WithoutWeaponArrow { + SEAD_RTTI_OVERRIDE(ChildDeviceReflectArrow, WithoutWeaponArrow) +public: + explicit ChildDeviceReflectArrow(const InitArg& arg); + ~ChildDeviceReflectArrow() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const int* mReflectCountMax_s{}; + // static_param at offset 0x148 + const float* mReflectAimSpeed_s{}; + // static_param at offset 0x150 + const float* mReflectAccel_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildFavoriteSelector.cpp b/src/Game/AI/AI/aiChildFavoriteSelector.cpp new file mode 100644 index 00000000..9790850d --- /dev/null +++ b/src/Game/AI/AI/aiChildFavoriteSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChildFavoriteSelector.h" + +namespace uking::ai { + +ChildFavoriteSelector::ChildFavoriteSelector(const InitArg& arg) : ChildFavoriteSelectorBase(arg) {} + +ChildFavoriteSelector::~ChildFavoriteSelector() = default; + +bool ChildFavoriteSelector::init_(sead::Heap* heap) { + return ChildFavoriteSelectorBase::init_(heap); +} + +void ChildFavoriteSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ChildFavoriteSelectorBase::enter_(params); +} + +void ChildFavoriteSelector::leave_() { + ChildFavoriteSelectorBase::leave_(); +} + +void ChildFavoriteSelector::loadParams_() { + ChildFavoriteSelectorBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildFavoriteSelector.h b/src/Game/AI/AI/aiChildFavoriteSelector.h new file mode 100644 index 00000000..ae5a84ca --- /dev/null +++ b/src/Game/AI/AI/aiChildFavoriteSelector.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiChildFavoriteSelectorBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChildFavoriteSelector : public ChildFavoriteSelectorBase { + SEAD_RTTI_OVERRIDE(ChildFavoriteSelector, ChildFavoriteSelectorBase) +public: + explicit ChildFavoriteSelector(const InitArg& arg); + ~ChildFavoriteSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildFavoriteSelectorBase.cpp b/src/Game/AI/AI/aiChildFavoriteSelectorBase.cpp new file mode 100644 index 00000000..4df49bb7 --- /dev/null +++ b/src/Game/AI/AI/aiChildFavoriteSelectorBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiChildFavoriteSelectorBase.h" + +namespace uking::ai { + +ChildFavoriteSelectorBase::ChildFavoriteSelectorBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChildFavoriteSelectorBase::~ChildFavoriteSelectorBase() = default; + +bool ChildFavoriteSelectorBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChildFavoriteSelectorBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChildFavoriteSelectorBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChildFavoriteSelectorBase::loadParams_() { + getStaticParam(&mIsNoChildForceEnd_s, "IsNoChildForceEnd"); + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildFavoriteSelectorBase.h b/src/Game/AI/AI/aiChildFavoriteSelectorBase.h new file mode 100644 index 00000000..3f18da0c --- /dev/null +++ b/src/Game/AI/AI/aiChildFavoriteSelectorBase.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChildFavoriteSelectorBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChildFavoriteSelectorBase, ksys::act::ai::Ai) +public: + explicit ChildFavoriteSelectorBase(const InitArg& arg); + ~ChildFavoriteSelectorBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsNoChildForceEnd_s{}; + // static_param at offset 0x40 + const bool* mIsCheckEveryFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildHaveSelect.cpp b/src/Game/AI/AI/aiChildHaveSelect.cpp new file mode 100644 index 00000000..ee50f7d2 --- /dev/null +++ b/src/Game/AI/AI/aiChildHaveSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChildHaveSelect.h" + +namespace uking::ai { + +ChildHaveSelect::ChildHaveSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChildHaveSelect::~ChildHaveSelect() = default; + +bool ChildHaveSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChildHaveSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChildHaveSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChildHaveSelect::loadParams_() { + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChildHaveSelect.h b/src/Game/AI/AI/aiChildHaveSelect.h new file mode 100644 index 00000000..c22b10c0 --- /dev/null +++ b/src/Game/AI/AI/aiChildHaveSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChildHaveSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChildHaveSelect, ksys::act::ai::Ai) +public: + explicit ChildHaveSelect(const InitArg& arg); + ~ChildHaveSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckEveryFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmCheck.cpp b/src/Game/AI/AI/aiChmCheck.cpp new file mode 100644 index 00000000..7f928cbc --- /dev/null +++ b/src/Game/AI/AI/aiChmCheck.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChmCheck.h" + +namespace uking::ai { + +ChmCheck::ChmCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChmCheck::~ChmCheck() = default; + +bool ChmCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChmCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChmCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChmCheck::loadParams_() { + getStaticParam(&mChmType_s, "ChmType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmCheck.h b/src/Game/AI/AI/aiChmCheck.h new file mode 100644 index 00000000..774f056d --- /dev/null +++ b/src/Game/AI/AI/aiChmCheck.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChmCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChmCheck, ksys::act::ai::Ai) +public: + explicit ChmCheck(const InitArg& arg); + ~ChmCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mChmType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmVolRateCheck.cpp b/src/Game/AI/AI/aiChmVolRateCheck.cpp new file mode 100644 index 00000000..ac2c1c71 --- /dev/null +++ b/src/Game/AI/AI/aiChmVolRateCheck.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiChmVolRateCheck.h" + +namespace uking::ai { + +ChmVolRateCheck::ChmVolRateCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChmVolRateCheck::~ChmVolRateCheck() = default; + +bool ChmVolRateCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChmVolRateCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChmVolRateCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChmVolRateCheck::loadParams_() { + getStaticParam(&mVolTh_s, "VolTh"); + getStaticParam(&mDebugScale_s, "DebugScale"); + getStaticParam(&mDebugDraw_s, "DebugDraw"); + getStaticParam(&mIsInvalidBreakJudge_s, "IsInvalidBreakJudge"); + getMapUnitParam(&mFreezeTarget_m, "FreezeTarget"); + getMapUnitParam(&mIceBreakScale_m, "IceBreakScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmVolRateCheck.h b/src/Game/AI/AI/aiChmVolRateCheck.h new file mode 100644 index 00000000..0ce39798 --- /dev/null +++ b/src/Game/AI/AI/aiChmVolRateCheck.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChmVolRateCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChmVolRateCheck, ksys::act::ai::Ai) +public: + explicit ChmVolRateCheck(const InitArg& arg); + ~ChmVolRateCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mVolTh_s{}; + // static_param at offset 0x40 + const float* mDebugScale_s{}; + // static_param at offset 0x48 + const bool* mDebugDraw_s{}; + // static_param at offset 0x50 + const bool* mIsInvalidBreakJudge_s{}; + // map_unit_param at offset 0x58 + const int* mFreezeTarget_m{}; + // map_unit_param at offset 0x60 + const float* mIceBreakScale_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmVolRateCheckBlankOk.cpp b/src/Game/AI/AI/aiChmVolRateCheckBlankOk.cpp new file mode 100644 index 00000000..9d1f240d --- /dev/null +++ b/src/Game/AI/AI/aiChmVolRateCheckBlankOk.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiChmVolRateCheckBlankOk.h" + +namespace uking::ai { + +ChmVolRateCheckBlankOk::ChmVolRateCheckBlankOk(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChmVolRateCheckBlankOk::~ChmVolRateCheckBlankOk() = default; + +bool ChmVolRateCheckBlankOk::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChmVolRateCheckBlankOk::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChmVolRateCheckBlankOk::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChmVolRateCheckBlankOk::loadParams_() { + getStaticParam(&mVolTh_s, "VolTh"); + getStaticParam(&mDebugScale_s, "DebugScale"); + getStaticParam(&mDebugDraw_s, "DebugDraw"); + getStaticParam(&mIsInvalidBreakJudge_s, "IsInvalidBreakJudge"); + getMapUnitParam(&mFreezeTarget_m, "FreezeTarget"); + getMapUnitParam(&mIceBreakScale_m, "IceBreakScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChmVolRateCheckBlankOk.h b/src/Game/AI/AI/aiChmVolRateCheckBlankOk.h new file mode 100644 index 00000000..359ccf0e --- /dev/null +++ b/src/Game/AI/AI/aiChmVolRateCheckBlankOk.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChmVolRateCheckBlankOk : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChmVolRateCheckBlankOk, ksys::act::ai::Ai) +public: + explicit ChmVolRateCheckBlankOk(const InitArg& arg); + ~ChmVolRateCheckBlankOk() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mVolTh_s{}; + // static_param at offset 0x40 + const float* mDebugScale_s{}; + // static_param at offset 0x48 + const bool* mDebugDraw_s{}; + // static_param at offset 0x50 + const bool* mIsInvalidBreakJudge_s{}; + // map_unit_param at offset 0x58 + const int* mFreezeTarget_m{}; + // map_unit_param at offset 0x60 + const float* mIceBreakScale_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuDieSelect.cpp b/src/Game/AI/AI/aiChuchuDieSelect.cpp new file mode 100644 index 00000000..969e16c4 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuDieSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChuchuDieSelect.h" + +namespace uking::ai { + +ChuchuDieSelect::ChuchuDieSelect(const InitArg& arg) : DieSelectChemicalPlus(arg) {} + +ChuchuDieSelect::~ChuchuDieSelect() = default; + +bool ChuchuDieSelect::init_(sead::Heap* heap) { + return DieSelectChemicalPlus::init_(heap); +} + +void ChuchuDieSelect::enter_(ksys::act::ai::InlineParamPack* params) { + DieSelectChemicalPlus::enter_(params); +} + +void ChuchuDieSelect::leave_() { + DieSelectChemicalPlus::leave_(); +} + +void ChuchuDieSelect::loadParams_() { + DieSelectChemicalPlus::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuDieSelect.h b/src/Game/AI/AI/aiChuchuDieSelect.h new file mode 100644 index 00000000..64dad8e9 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuDieSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDieSelectChemicalPlus.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChuchuDieSelect : public DieSelectChemicalPlus { + SEAD_RTTI_OVERRIDE(ChuchuDieSelect, DieSelectChemicalPlus) +public: + explicit ChuchuDieSelect(const InitArg& arg); + ~ChuchuDieSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuJellyRoot.cpp b/src/Game/AI/AI/aiChuchuJellyRoot.cpp new file mode 100644 index 00000000..6083d020 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuJellyRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiChuchuJellyRoot.h" + +namespace uking::ai { + +ChuchuJellyRoot::ChuchuJellyRoot(const InitArg& arg) : ItemRoot(arg) {} + +ChuchuJellyRoot::~ChuchuJellyRoot() = default; + +bool ChuchuJellyRoot::init_(sead::Heap* heap) { + return ItemRoot::init_(heap); +} + +void ChuchuJellyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ItemRoot::enter_(params); +} + +void ChuchuJellyRoot::leave_() { + ItemRoot::leave_(); +} + +void ChuchuJellyRoot::loadParams_() { + ItemRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuJellyRoot.h b/src/Game/AI/AI/aiChuchuJellyRoot.h new file mode 100644 index 00000000..c4b5184a --- /dev/null +++ b/src/Game/AI/AI/aiChuchuJellyRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiItemRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChuchuJellyRoot : public ItemRoot { + SEAD_RTTI_OVERRIDE(ChuchuJellyRoot, ItemRoot) +public: + explicit ChuchuJellyRoot(const InitArg& arg); + ~ChuchuJellyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuNavMoveTarget.cpp b/src/Game/AI/AI/aiChuchuNavMoveTarget.cpp new file mode 100644 index 00000000..fa7a591e --- /dev/null +++ b/src/Game/AI/AI/aiChuchuNavMoveTarget.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiChuchuNavMoveTarget.h" + +namespace uking::ai { + +ChuchuNavMoveTarget::ChuchuNavMoveTarget(const InitArg& arg) : NavMoveTarget(arg) {} + +ChuchuNavMoveTarget::~ChuchuNavMoveTarget() = default; + +bool ChuchuNavMoveTarget::init_(sead::Heap* heap) { + return NavMoveTarget::init_(heap); +} + +void ChuchuNavMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + NavMoveTarget::enter_(params); +} + +void ChuchuNavMoveTarget::leave_() { + NavMoveTarget::leave_(); +} + +void ChuchuNavMoveTarget::loadParams_() { + NavMoveTarget::loadParams_(); + getStaticParam(&mWallHitTime_s, "WallHitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuNavMoveTarget.h b/src/Game/AI/AI/aiChuchuNavMoveTarget.h new file mode 100644 index 00000000..dc48ed12 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuNavMoveTarget.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiNavMoveTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChuchuNavMoveTarget : public NavMoveTarget { + SEAD_RTTI_OVERRIDE(ChuchuNavMoveTarget, NavMoveTarget) +public: + explicit ChuchuNavMoveTarget(const InitArg& arg); + ~ChuchuNavMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x380 + const int* mWallHitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuRoot.cpp b/src/Game/AI/AI/aiChuchuRoot.cpp new file mode 100644 index 00000000..93aacbec --- /dev/null +++ b/src/Game/AI/AI/aiChuchuRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiChuchuRoot.h" + +namespace uking::ai { + +ChuchuRoot::ChuchuRoot(const InitArg& arg) : EnemyRoot(arg) {} + +ChuchuRoot::~ChuchuRoot() = default; + +bool ChuchuRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void ChuchuRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void ChuchuRoot::leave_() { + EnemyRoot::leave_(); +} + +void ChuchuRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mSubASSlot_s, "SubASSlot"); + getStaticParam(&mChemicalScaleTime_s, "ChemicalScaleTime"); + getStaticParam(&mClothStiffness30_s, "ClothStiffness30"); + getStaticParam(&mClothStiffness20_s, "ClothStiffness20"); + getStaticParam(&mSubAS_s, "SubAS"); + getStaticParam(&mChemicalFieldKey_s, "ChemicalFieldKey"); + // FIXME: CALL _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE @ + // 0x7100d66968 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuRoot.h b/src/Game/AI/AI/aiChuchuRoot.h new file mode 100644 index 00000000..f44d6446 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuRoot.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChuchuRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(ChuchuRoot, EnemyRoot) +public: + explicit ChuchuRoot(const InitArg& arg); + ~ChuchuRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mSubASSlot_s{}; + // static_param at offset 0x1e0 + const int* mChemicalScaleTime_s{}; + // static_param at offset 0x1e8 + const float* mClothStiffness30_s{}; + // static_param at offset 0x1f0 + const float* mClothStiffness20_s{}; + // static_param at offset 0x1f8 + sead::SafeString mSubAS_s{}; + // static_param at offset 0x208 + sead::SafeString mChemicalFieldKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuTypeSelect.cpp b/src/Game/AI/AI/aiChuchuTypeSelect.cpp new file mode 100644 index 00000000..996a61b0 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuTypeSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiChuchuTypeSelect.h" + +namespace uking::ai { + +ChuchuTypeSelect::ChuchuTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ChuchuTypeSelect::~ChuchuTypeSelect() = default; + +bool ChuchuTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ChuchuTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ChuchuTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ChuchuTypeSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiChuchuTypeSelect.h b/src/Game/AI/AI/aiChuchuTypeSelect.h new file mode 100644 index 00000000..4e2e4dc2 --- /dev/null +++ b/src/Game/AI/AI/aiChuchuTypeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ChuchuTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ChuchuTypeSelect, ksys::act::ai::Ai) +public: + explicit ChuchuTypeSelect(const InitArg& arg); + ~ChuchuTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMove.cpp b/src/Game/AI/AI/aiCircleMove.cpp new file mode 100644 index 00000000..182b3e9f --- /dev/null +++ b/src/Game/AI/AI/aiCircleMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiCircleMove.h" + +namespace uking::ai { + +CircleMove::CircleMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CircleMove::~CircleMove() = default; + +bool CircleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CircleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CircleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CircleMove::loadParams_() { + getStaticParam(&mDirection_s, "Direction"); + getStaticParam(&mRadius_s, "Radius"); + getStaticParam(&mRadiusMargin_s, "RadiusMargin"); + getStaticParam(&mSpeed_s, "Speed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMove.h b/src/Game/AI/AI/aiCircleMove.h new file mode 100644 index 00000000..bc195267 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CircleMove, ksys::act::ai::Ai) +public: + explicit CircleMove(const InitArg& arg); + ~CircleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDirection_s{}; + // static_param at offset 0x40 + const float* mRadius_s{}; + // static_param at offset 0x48 + const float* mRadiusMargin_s{}; + // static_param at offset 0x50 + const float* mSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveFlying.cpp b/src/Game/AI/AI/aiCircleMoveFlying.cpp new file mode 100644 index 00000000..2f050ade --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveFlying.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCircleMoveFlying.h" + +namespace uking::ai { + +CircleMoveFlying::CircleMoveFlying(const InitArg& arg) : CircleMoveInFluid(arg) {} + +CircleMoveFlying::~CircleMoveFlying() = default; + +bool CircleMoveFlying::init_(sead::Heap* heap) { + return CircleMoveInFluid::init_(heap); +} + +void CircleMoveFlying::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMoveInFluid::enter_(params); +} + +void CircleMoveFlying::leave_() { + CircleMoveInFluid::leave_(); +} + +void CircleMoveFlying::loadParams_() { + CircleMoveInFluid::loadParams_(); + getStaticParam(&mIsCheckSafetyAreaRadius_s, "IsCheckSafetyAreaRadius"); + getStaticParam(&mIsUseHomePos_s, "IsUseHomePos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveFlying.h b/src/Game/AI/AI/aiCircleMoveFlying.h new file mode 100644 index 00000000..2baba6ee --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveFlying.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMoveInFluid.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMoveFlying : public CircleMoveInFluid { + SEAD_RTTI_OVERRIDE(CircleMoveFlying, CircleMoveInFluid) +public: + explicit CircleMoveFlying(const InitArg& arg); + ~CircleMoveFlying() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const bool* mIsCheckSafetyAreaRadius_s{}; + // static_param at offset 0xe8 + const bool* mIsUseHomePos_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveInFluid.cpp b/src/Game/AI/AI/aiCircleMoveInFluid.cpp new file mode 100644 index 00000000..203cc6da --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveInFluid.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiCircleMoveInFluid.h" + +namespace uking::ai { + +CircleMoveInFluid::CircleMoveInFluid(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CircleMoveInFluid::~CircleMoveInFluid() = default; + +bool CircleMoveInFluid::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CircleMoveInFluid::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CircleMoveInFluid::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CircleMoveInFluid::loadParams_() { + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mRadiusX_s, "RadiusX"); + getStaticParam(&mRadiusZ_s, "RadiusZ"); + getStaticParam(&mMinRandRadiusRate_s, "MinRandRadiusRate"); + getStaticParam(&mMaxRandRadiusRate_s, "MaxRandRadiusRate"); + getStaticParam(&mAddAngleRateX_s, "AddAngleRateX"); + getStaticParam(&mAddAngleRateZ_s, "AddAngleRateZ"); + getStaticParam(&mRandRangeY_s, "RandRangeY"); + getStaticParam(&mRandRangeYOffest_s, "RandRangeYOffest"); + getStaticParam(&mLimitSpeedMoveY_s, "LimitSpeedMoveY"); + getStaticParam(&mChangeInterval_s, "ChangeInterval"); + getStaticParam(&mRandChangeInterval_s, "RandChangeInterval"); + getStaticParam(&mReverseMoveRate_s, "ReverseMoveRate"); + getStaticParam(&mIsSetSystemDeleteDistance_s, "IsSetSystemDeleteDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveInFluid.h b/src/Game/AI/AI/aiCircleMoveInFluid.h new file mode 100644 index 00000000..04499001 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveInFluid.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMoveInFluid : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CircleMoveInFluid, ksys::act::ai::Ai) +public: + explicit CircleMoveInFluid(const InitArg& arg); + ~CircleMoveInFluid() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSpeed_s{}; + // static_param at offset 0x40 + const float* mRadiusX_s{}; + // static_param at offset 0x48 + const float* mRadiusZ_s{}; + // static_param at offset 0x50 + const float* mMinRandRadiusRate_s{}; + // static_param at offset 0x58 + const float* mMaxRandRadiusRate_s{}; + // static_param at offset 0x60 + const float* mAddAngleRateX_s{}; + // static_param at offset 0x68 + const float* mAddAngleRateZ_s{}; + // static_param at offset 0x70 + const float* mRandRangeY_s{}; + // static_param at offset 0x78 + const float* mRandRangeYOffest_s{}; + // static_param at offset 0x80 + const float* mLimitSpeedMoveY_s{}; + // static_param at offset 0x88 + const float* mChangeInterval_s{}; + // static_param at offset 0x90 + const float* mRandChangeInterval_s{}; + // static_param at offset 0x98 + const float* mReverseMoveRate_s{}; + // static_param at offset 0xa0 + const bool* mIsSetSystemDeleteDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveInWater.cpp b/src/Game/AI/AI/aiCircleMoveInWater.cpp new file mode 100644 index 00000000..e34b9a4d --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveInWater.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCircleMoveInWater.h" + +namespace uking::ai { + +CircleMoveInWater::CircleMoveInWater(const InitArg& arg) : CircleMoveInFluid(arg) {} + +CircleMoveInWater::~CircleMoveInWater() = default; + +bool CircleMoveInWater::init_(sead::Heap* heap) { + return CircleMoveInFluid::init_(heap); +} + +void CircleMoveInWater::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMoveInFluid::enter_(params); +} + +void CircleMoveInWater::leave_() { + CircleMoveInFluid::leave_(); +} + +void CircleMoveInWater::loadParams_() { + CircleMoveInFluid::loadParams_(); + getStaticParam(&mAllowMoveWaterDepth_s, "AllowMoveWaterDepth"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveInWater.h b/src/Game/AI/AI/aiCircleMoveInWater.h new file mode 100644 index 00000000..ce4a8be8 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveInWater.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMoveInFluid.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMoveInWater : public CircleMoveInFluid { + SEAD_RTTI_OVERRIDE(CircleMoveInWater, CircleMoveInFluid) +public: + explicit CircleMoveInWater(const InitArg& arg); + ~CircleMoveInWater() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const float* mAllowMoveWaterDepth_s{}; + // dynamic_param at offset 0xe8 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMovePos.cpp b/src/Game/AI/AI/aiCircleMovePos.cpp new file mode 100644 index 00000000..a0cc0985 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMovePos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCircleMovePos.h" + +namespace uking::ai { + +CircleMovePos::CircleMovePos(const InitArg& arg) : CircleMove(arg) {} + +CircleMovePos::~CircleMovePos() = default; + +bool CircleMovePos::init_(sead::Heap* heap) { + return CircleMove::init_(heap); +} + +void CircleMovePos::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMove::enter_(params); +} + +void CircleMovePos::leave_() { + CircleMove::leave_(); +} + +void CircleMovePos::loadParams_() { + CircleMove::loadParams_(); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMovePos.h b/src/Game/AI/AI/aiCircleMovePos.h new file mode 100644 index 00000000..c843efd4 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMovePos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMovePos : public CircleMove { + SEAD_RTTI_OVERRIDE(CircleMovePos, CircleMove) +public: + explicit CircleMovePos(const InitArg& arg); + ~CircleMovePos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x60 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveTarget.cpp b/src/Game/AI/AI/aiCircleMoveTarget.cpp new file mode 100644 index 00000000..2f625caf --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveTarget.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCircleMoveTarget.h" + +namespace uking::ai { + +CircleMoveTarget::CircleMoveTarget(const InitArg& arg) : CircleMove(arg) {} + +CircleMoveTarget::~CircleMoveTarget() = default; + +bool CircleMoveTarget::init_(sead::Heap* heap) { + return CircleMove::init_(heap); +} + +void CircleMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMove::enter_(params); +} + +void CircleMoveTarget::leave_() { + CircleMove::leave_(); +} + +void CircleMoveTarget::loadParams_() { + CircleMove::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCircleMoveTarget.h b/src/Game/AI/AI/aiCircleMoveTarget.h new file mode 100644 index 00000000..b6cd8727 --- /dev/null +++ b/src/Game/AI/AI/aiCircleMoveTarget.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CircleMoveTarget : public CircleMove { + SEAD_RTTI_OVERRIDE(CircleMoveTarget, CircleMove) +public: + explicit CircleMoveTarget(const InitArg& arg); + ~CircleMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckSelect.cpp b/src/Game/AI/AI/aiCliffCheckSelect.cpp new file mode 100644 index 00000000..f7751535 --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckSelect.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiCliffCheckSelect.h" + +namespace uking::ai { + +CliffCheckSelect::CliffCheckSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CliffCheckSelect::~CliffCheckSelect() = default; + +void CliffCheckSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CliffCheckSelect::loadParams_() { + getStaticParam(&mCheckDist_s, "CheckDist"); + getStaticParam(&mCheckAngle_s, "CheckAngle"); + getStaticParam(&mIsSelectFirstTime_s, "IsSelectFirstTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckSelect.h b/src/Game/AI/AI/aiCliffCheckSelect.h new file mode 100644 index 00000000..05692838 --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CliffCheckSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CliffCheckSelect, ksys::act::ai::Ai) +public: + explicit CliffCheckSelect(const InitArg& arg); + ~CliffCheckSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckDist_s{}; + // static_param at offset 0x40 + const float* mCheckAngle_s{}; + // static_param at offset 0x48 + const bool* mIsSelectFirstTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckTargetDirSelect.cpp b/src/Game/AI/AI/aiCliffCheckTargetDirSelect.cpp new file mode 100644 index 00000000..8daff5b5 --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckTargetDirSelect.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiCliffCheckTargetDirSelect.h" + +namespace uking::ai { + +CliffCheckTargetDirSelect::CliffCheckTargetDirSelect(const InitArg& arg) : CliffCheckSelect(arg) {} + +CliffCheckTargetDirSelect::~CliffCheckTargetDirSelect() = default; + +void CliffCheckTargetDirSelect::loadParams_() { + CliffCheckSelect::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckTargetDirSelect.h b/src/Game/AI/AI/aiCliffCheckTargetDirSelect.h new file mode 100644 index 00000000..426ce8e2 --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckTargetDirSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiCliffCheckSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CliffCheckTargetDirSelect : public CliffCheckSelect { + SEAD_RTTI_OVERRIDE(CliffCheckTargetDirSelect, CliffCheckSelect) +public: + explicit CliffCheckTargetDirSelect(const InitArg& arg); + ~CliffCheckTargetDirSelect() override; + + void loadParams_() override; + +protected: + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.cpp b/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.cpp new file mode 100644 index 00000000..58a73f50 --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h" + +namespace uking::ai { + +CliffCheckToTargetPosDirSelect::CliffCheckToTargetPosDirSelect(const InitArg& arg) + : CliffCheckSelect(arg) {} + +CliffCheckToTargetPosDirSelect::~CliffCheckToTargetPosDirSelect() = default; + +bool CliffCheckToTargetPosDirSelect::init_(sead::Heap* heap) { + return CliffCheckSelect::init_(heap); +} + +void CliffCheckToTargetPosDirSelect::enter_(ksys::act::ai::InlineParamPack* params) { + CliffCheckSelect::enter_(params); +} + +void CliffCheckToTargetPosDirSelect::leave_() { + CliffCheckSelect::leave_(); +} + +void CliffCheckToTargetPosDirSelect::loadParams_() { + CliffCheckSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h b/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h new file mode 100644 index 00000000..d4f93e7b --- /dev/null +++ b/src/Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiCliffCheckSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CliffCheckToTargetPosDirSelect : public CliffCheckSelect { + SEAD_RTTI_OVERRIDE(CliffCheckToTargetPosDirSelect, CliffCheckSelect) +public: + explicit CliffCheckToTargetPosDirSelect(const InitArg& arg); + ~CliffCheckToTargetPosDirSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.cpp b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.cpp new file mode 100644 index 00000000..60fd384c --- /dev/null +++ b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCliffDistanceSelectThreeAction.h" + +namespace uking::ai { + +CliffDistanceSelectThreeAction::CliffDistanceSelectThreeAction(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +CliffDistanceSelectThreeAction::~CliffDistanceSelectThreeAction() = default; + +bool CliffDistanceSelectThreeAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CliffDistanceSelectThreeAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CliffDistanceSelectThreeAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CliffDistanceSelectThreeAction::loadParams_() { + getStaticParam(&mCheckDist_s, "CheckDist"); + getStaticParam(&mNearCliffDist_s, "NearCliffDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h new file mode 100644 index 00000000..57f194c1 --- /dev/null +++ b/src/Game/AI/AI/aiCliffDistanceSelectThreeAction.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CliffDistanceSelectThreeAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CliffDistanceSelectThreeAction, ksys::act::ai::Ai) +public: + explicit CliffDistanceSelectThreeAction(const InitArg& arg); + ~CliffDistanceSelectThreeAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckDist_s{}; + // static_param at offset 0x40 + const float* mNearCliffDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCloseSmallAttack.cpp b/src/Game/AI/AI/aiCloseSmallAttack.cpp new file mode 100644 index 00000000..e7358d19 --- /dev/null +++ b/src/Game/AI/AI/aiCloseSmallAttack.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiCloseSmallAttack.h" + +namespace uking::ai { + +CloseSmallAttack::CloseSmallAttack(const InitArg& arg) : CloseSmallAttackBase(arg) {} + +CloseSmallAttack::~CloseSmallAttack() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCloseSmallAttack.h b/src/Game/AI/AI/aiCloseSmallAttack.h new file mode 100644 index 00000000..cbe5c7d8 --- /dev/null +++ b/src/Game/AI/AI/aiCloseSmallAttack.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiCloseSmallAttackBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CloseSmallAttack : public CloseSmallAttackBase { + SEAD_RTTI_OVERRIDE(CloseSmallAttack, CloseSmallAttackBase) +public: + explicit CloseSmallAttack(const InitArg& arg); + ~CloseSmallAttack() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCloseSmallAttackBase.cpp b/src/Game/AI/AI/aiCloseSmallAttackBase.cpp new file mode 100644 index 00000000..6b27e731 --- /dev/null +++ b/src/Game/AI/AI/aiCloseSmallAttackBase.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiCloseSmallAttackBase.h" + +namespace uking::ai { + +CloseSmallAttackBase::CloseSmallAttackBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CloseSmallAttackBase::~CloseSmallAttackBase() = default; + +void CloseSmallAttackBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CloseSmallAttackBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CloseSmallAttackBase::loadParams_() { + getStaticParam(&mCloseRadius_s, "CloseRadius"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mIsIgnoreSmallHit_s, "IsIgnoreSmallHit"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCloseSmallAttackBase.h b/src/Game/AI/AI/aiCloseSmallAttackBase.h new file mode 100644 index 00000000..133f1204 --- /dev/null +++ b/src/Game/AI/AI/aiCloseSmallAttackBase.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CloseSmallAttackBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CloseSmallAttackBase, ksys::act::ai::Ai) +public: + explicit CloseSmallAttackBase(const InitArg& arg); + ~CloseSmallAttackBase() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCloseRadius_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const bool* mIsIgnoreSmallHit_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiClusterRenderCheckTag.cpp b/src/Game/AI/AI/aiClusterRenderCheckTag.cpp new file mode 100644 index 00000000..ae82bd53 --- /dev/null +++ b/src/Game/AI/AI/aiClusterRenderCheckTag.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiClusterRenderCheckTag.h" + +namespace uking::ai { + +ClusterRenderCheckTag::ClusterRenderCheckTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ClusterRenderCheckTag::~ClusterRenderCheckTag() = default; + +bool ClusterRenderCheckTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ClusterRenderCheckTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ClusterRenderCheckTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ClusterRenderCheckTag::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiClusterRenderCheckTag.h b/src/Game/AI/AI/aiClusterRenderCheckTag.h new file mode 100644 index 00000000..0df91f7a --- /dev/null +++ b/src/Game/AI/AI/aiClusterRenderCheckTag.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ClusterRenderCheckTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ClusterRenderCheckTag, ksys::act::ai::Ai) +public: + explicit ClusterRenderCheckTag(const InitArg& arg); + ~ClusterRenderCheckTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiColGroundHitSelect.cpp b/src/Game/AI/AI/aiColGroundHitSelect.cpp new file mode 100644 index 00000000..f9d9c903 --- /dev/null +++ b/src/Game/AI/AI/aiColGroundHitSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiColGroundHitSelect.h" + +namespace uking::ai { + +ColGroundHitSelect::ColGroundHitSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ColGroundHitSelect::~ColGroundHitSelect() = default; + +bool ColGroundHitSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ColGroundHitSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ColGroundHitSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ColGroundHitSelect::loadParams_() { + getStaticParam(&mIsCheckEachFrame_s, "IsCheckEachFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiColGroundHitSelect.h b/src/Game/AI/AI/aiColGroundHitSelect.h new file mode 100644 index 00000000..9e85f913 --- /dev/null +++ b/src/Game/AI/AI/aiColGroundHitSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ColGroundHitSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ColGroundHitSelect, ksys::act::ai::Ai) +public: + explicit ColGroundHitSelect(const InitArg& arg); + ~ColGroundHitSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckEachFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCollaborationShootingStarRoot.cpp b/src/Game/AI/AI/aiCollaborationShootingStarRoot.cpp new file mode 100644 index 00000000..d1aa0403 --- /dev/null +++ b/src/Game/AI/AI/aiCollaborationShootingStarRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiCollaborationShootingStarRoot.h" + +namespace uking::ai { + +CollaborationShootingStarRoot::CollaborationShootingStarRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +CollaborationShootingStarRoot::~CollaborationShootingStarRoot() = default; + +bool CollaborationShootingStarRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CollaborationShootingStarRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CollaborationShootingStarRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CollaborationShootingStarRoot::loadParams_() { + getAITreeVariable(&mCollaboShootingStarId_a, "CollaboShootingStarId"); + // FIXME: CALL _ZN4sead14SafeStringBaseIcEaSERKS1_ @ 0x7100b0caa0 + // FIXME: CALL _ZNK4sead14SafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 + // FIXME: CALL _ZN4sead9HashCRC3214calcStringHashEPKc @ 0x7100b2170c +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCollaborationShootingStarRoot.h b/src/Game/AI/AI/aiCollaborationShootingStarRoot.h new file mode 100644 index 00000000..e7cde621 --- /dev/null +++ b/src/Game/AI/AI/aiCollaborationShootingStarRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CollaborationShootingStarRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CollaborationShootingStarRoot, ksys::act::ai::Ai) +public: + explicit CollaborationShootingStarRoot(const InitArg& arg); + ~CollaborationShootingStarRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + sead::SafeString* mCollaboShootingStarId_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCommonPickedItem.cpp b/src/Game/AI/AI/aiCommonPickedItem.cpp new file mode 100644 index 00000000..1209d58b --- /dev/null +++ b/src/Game/AI/AI/aiCommonPickedItem.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiCommonPickedItem.h" + +namespace uking::ai { + +CommonPickedItem::CommonPickedItem(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CommonPickedItem::~CommonPickedItem() = default; + +bool CommonPickedItem::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CommonPickedItem::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CommonPickedItem::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CommonPickedItem::loadParams_() { + getStaticParam(&mCanGetOnBurning_s, "CanGetOnBurning"); + getStaticParam(&mIsControlNoticeDo_s, "IsControlNoticeDo"); + getStaticParam(&mGetAttKeyName_s, "GetAttKeyName"); + getMapUnitParam(&mIsPlayerPut_m, "IsPlayerPut"); + getMapUnitParam(&mDropTable_m, "DropTable"); + getMapUnitParam(&mDropActor_m, "DropActor"); + getAITreeVariable(&mGetNumLeft_a, "GetNumLeft"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCommonPickedItem.h b/src/Game/AI/AI/aiCommonPickedItem.h new file mode 100644 index 00000000..c765e45f --- /dev/null +++ b/src/Game/AI/AI/aiCommonPickedItem.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CommonPickedItem : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CommonPickedItem, ksys::act::ai::Ai) +public: + explicit CommonPickedItem(const InitArg& arg); + ~CommonPickedItem() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mCanGetOnBurning_s{}; + // static_param at offset 0x40 + const bool* mIsControlNoticeDo_s{}; + // static_param at offset 0x48 + sead::SafeString mGetAttKeyName_s{}; + // map_unit_param at offset 0x58 + const bool* mIsPlayerPut_m{}; + // map_unit_param at offset 0x60 + sead::SafeString mDropTable_m{}; + // map_unit_param at offset 0x70 + sead::SafeString mDropActor_m{}; + // aitree_variable at offset 0x80 + int* mGetNumLeft_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiConditionMoveActionSelect.cpp b/src/Game/AI/AI/aiConditionMoveActionSelect.cpp new file mode 100644 index 00000000..8051ce23 --- /dev/null +++ b/src/Game/AI/AI/aiConditionMoveActionSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiConditionMoveActionSelect.h" + +namespace uking::ai { + +ConditionMoveActionSelect::ConditionMoveActionSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ConditionMoveActionSelect::~ConditionMoveActionSelect() = default; + +bool ConditionMoveActionSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ConditionMoveActionSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ConditionMoveActionSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ConditionMoveActionSelect::loadParams_() { + getStaticParam(&mCheckLineReachable_s, "CheckLineReachable"); + getDynamicParam(&mDistanceKept_d, "DistanceKept"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiConditionMoveActionSelect.h b/src/Game/AI/AI/aiConditionMoveActionSelect.h new file mode 100644 index 00000000..fa1973c7 --- /dev/null +++ b/src/Game/AI/AI/aiConditionMoveActionSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ConditionMoveActionSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ConditionMoveActionSelect, ksys::act::ai::Ai) +public: + explicit ConditionMoveActionSelect(const InitArg& arg); + ~ConditionMoveActionSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mCheckLineReachable_s{}; + // dynamic_param at offset 0x40 + float* mDistanceKept_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x50 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCookPotRoot.cpp b/src/Game/AI/AI/aiCookPotRoot.cpp new file mode 100644 index 00000000..f55ecf24 --- /dev/null +++ b/src/Game/AI/AI/aiCookPotRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCookPotRoot.h" + +namespace uking::ai { + +CookPotRoot::CookPotRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CookPotRoot::~CookPotRoot() = default; + +bool CookPotRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CookPotRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CookPotRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CookPotRoot::loadParams_() { + getMapUnitParam(&mInitBurnState_m, "InitBurnState"); + getAITreeVariable(&mCurrentCookResultHolder_a, "CurrentCookResultHolder"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCookPotRoot.h b/src/Game/AI/AI/aiCookPotRoot.h new file mode 100644 index 00000000..fdedb902 --- /dev/null +++ b/src/Game/AI/AI/aiCookPotRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CookPotRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CookPotRoot, ksys::act::ai::Ai) +public: + explicit CookPotRoot(const InitArg& arg); + ~CookPotRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mInitBurnState_m{}; + // aitree_variable at offset 0x40 + void* mCurrentCookResultHolder_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCountSelect.cpp b/src/Game/AI/AI/aiCountSelect.cpp new file mode 100644 index 00000000..538a5199 --- /dev/null +++ b/src/Game/AI/AI/aiCountSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiCountSelect.h" + +namespace uking::ai { + +CountSelect::CountSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CountSelect::~CountSelect() = default; + +bool CountSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CountSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CountSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CountSelect::loadParams_() { + getStaticParam(&mCounter_s, "Counter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCountSelect.h b/src/Game/AI/AI/aiCountSelect.h new file mode 100644 index 00000000..f4492fed --- /dev/null +++ b/src/Game/AI/AI/aiCountSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CountSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CountSelect, ksys::act::ai::Ai) +public: + explicit CountSelect(const InitArg& arg); + ~CountSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCounter_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateActor.cpp b/src/Game/AI/AI/aiCreateActor.cpp new file mode 100644 index 00000000..44d9bdea --- /dev/null +++ b/src/Game/AI/AI/aiCreateActor.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiCreateActor.h" + +namespace uking::ai { + +CreateActor::CreateActor(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CreateActor::~CreateActor() = default; + +bool CreateActor::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CreateActor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CreateActor::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CreateActor::loadParams_() { + getStaticParam(&mCreatePriorityState_s, "CreatePriorityState"); + getStaticParam(&mScale_s, "Scale"); + getStaticParam(&mActorName_s, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateActor.h b/src/Game/AI/AI/aiCreateActor.h new file mode 100644 index 00000000..51982e50 --- /dev/null +++ b/src/Game/AI/AI/aiCreateActor.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CreateActor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CreateActor, ksys::act::ai::Ai) +public: + explicit CreateActor(const InitArg& arg); + ~CreateActor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCreatePriorityState_s{}; + // static_param at offset 0x40 + const float* mScale_s{}; + // static_param at offset 0x48 + sead::SafeString mActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateActorWithTarget.cpp b/src/Game/AI/AI/aiCreateActorWithTarget.cpp new file mode 100644 index 00000000..28463ab9 --- /dev/null +++ b/src/Game/AI/AI/aiCreateActorWithTarget.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiCreateActorWithTarget.h" + +namespace uking::ai { + +CreateActorWithTarget::CreateActorWithTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CreateActorWithTarget::~CreateActorWithTarget() = default; + +bool CreateActorWithTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CreateActorWithTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CreateActorWithTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CreateActorWithTarget::loadParams_() { + getStaticParam(&mCreateNewActorInterval_s, "CreateNewActorInterval"); + getStaticParam(&mCreateBasePosNum_s, "CreateBasePosNum"); + getStaticParam(&mCreateContinueTime_s, "CreateContinueTime"); + getStaticParam(&mAfterWaitTime_s, "AfterWaitTime"); + getStaticParam(&mIsAllowCreateNoSafeArea_s, "IsAllowCreateNoSafeArea"); + getStaticParam(&mIsRotateTargetDir_s, "IsRotateTargetDir"); + getStaticParam(&mCreateActorName_s, "CreateActorName"); + getStaticParam(&mBaseOffset_s, "BaseOffset"); + getStaticParam(&mCreateRandArea_s, "CreateRandArea"); + getStaticParam(&mProhibitedCreateArea_s, "ProhibitedCreateArea"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateActorWithTarget.h b/src/Game/AI/AI/aiCreateActorWithTarget.h new file mode 100644 index 00000000..16090e67 --- /dev/null +++ b/src/Game/AI/AI/aiCreateActorWithTarget.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CreateActorWithTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CreateActorWithTarget, ksys::act::ai::Ai) +public: + explicit CreateActorWithTarget(const InitArg& arg); + ~CreateActorWithTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCreateNewActorInterval_s{}; + // static_param at offset 0x40 + const int* mCreateBasePosNum_s{}; + // static_param at offset 0x48 + const float* mCreateContinueTime_s{}; + // static_param at offset 0x50 + const float* mAfterWaitTime_s{}; + // static_param at offset 0x58 + const bool* mIsAllowCreateNoSafeArea_s{}; + // static_param at offset 0x60 + const bool* mIsRotateTargetDir_s{}; + // static_param at offset 0x68 + sead::SafeString mCreateActorName_s{}; + // static_param at offset 0x78 + const sead::Vector3f* mBaseOffset_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mCreateRandArea_s{}; + // static_param at offset 0x88 + const sead::Vector3f* mProhibitedCreateArea_s{}; + // dynamic_param at offset 0x90 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateCarryActor.cpp b/src/Game/AI/AI/aiCreateCarryActor.cpp new file mode 100644 index 00000000..8e8dddb2 --- /dev/null +++ b/src/Game/AI/AI/aiCreateCarryActor.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiCreateCarryActor.h" + +namespace uking::ai { + +CreateCarryActor::CreateCarryActor(const InitArg& arg) : CreateActor(arg) {} + +CreateCarryActor::~CreateCarryActor() = default; + +bool CreateCarryActor::init_(sead::Heap* heap) { + return CreateActor::init_(heap); +} + +void CreateCarryActor::enter_(ksys::act::ai::InlineParamPack* params) { + CreateActor::enter_(params); +} + +void CreateCarryActor::leave_() { + CreateActor::leave_(); +} + +void CreateCarryActor::loadParams_() { + CreateActor::loadParams_(); + getMapUnitParam(&mCarryActorName_m, "CarryActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateCarryActor.h b/src/Game/AI/AI/aiCreateCarryActor.h new file mode 100644 index 00000000..55445aba --- /dev/null +++ b/src/Game/AI/AI/aiCreateCarryActor.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCreateActor.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CreateCarryActor : public CreateActor { + SEAD_RTTI_OVERRIDE(CreateCarryActor, CreateActor) +public: + explicit CreateCarryActor(const InitArg& arg); + ~CreateCarryActor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x68 + sead::SafeString mCarryActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateOnFaceSelect.cpp b/src/Game/AI/AI/aiCreateOnFaceSelect.cpp new file mode 100644 index 00000000..201c318c --- /dev/null +++ b/src/Game/AI/AI/aiCreateOnFaceSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiCreateOnFaceSelect.h" + +namespace uking::ai { + +CreateOnFaceSelect::CreateOnFaceSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +CreateOnFaceSelect::~CreateOnFaceSelect() = default; + +bool CreateOnFaceSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void CreateOnFaceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void CreateOnFaceSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void CreateOnFaceSelect::loadParams_() { + getMapUnitParam(&mIsCreateOnFace_m, "IsCreateOnFace"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreateOnFaceSelect.h b/src/Game/AI/AI/aiCreateOnFaceSelect.h new file mode 100644 index 00000000..d306dc43 --- /dev/null +++ b/src/Game/AI/AI/aiCreateOnFaceSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CreateOnFaceSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(CreateOnFaceSelect, ksys::act::ai::Ai) +public: + explicit CreateOnFaceSelect(const InitArg& arg); + ~CreateOnFaceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsCreateOnFace_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreationNestOnTree.cpp b/src/Game/AI/AI/aiCreationNestOnTree.cpp new file mode 100644 index 00000000..f5f6e034 --- /dev/null +++ b/src/Game/AI/AI/aiCreationNestOnTree.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiCreationNestOnTree.h" + +namespace uking::ai { + +CreationNestOnTree::CreationNestOnTree(const InitArg& arg) : ItemOnTree(arg) {} + +CreationNestOnTree::~CreationNestOnTree() = default; + +bool CreationNestOnTree::init_(sead::Heap* heap) { + return ItemOnTree::init_(heap); +} + +void CreationNestOnTree::enter_(ksys::act::ai::InlineParamPack* params) { + ItemOnTree::enter_(params); +} + +void CreationNestOnTree::leave_() { + ItemOnTree::leave_(); +} + +void CreationNestOnTree::loadParams_() { + ItemOnTree::loadParams_(); + getStaticParam(&mActorNum_s, "ActorNum"); + getStaticParam(&mTargetEscapedRadius_s, "TargetEscapedRadius"); + getStaticParam(&mIsRemainNum_s, "IsRemainNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiCreationNestOnTree.h b/src/Game/AI/AI/aiCreationNestOnTree.h new file mode 100644 index 00000000..f2fa1aae --- /dev/null +++ b/src/Game/AI/AI/aiCreationNestOnTree.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiItemOnTree.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class CreationNestOnTree : public ItemOnTree { + SEAD_RTTI_OVERRIDE(CreationNestOnTree, ItemOnTree) +public: + explicit CreationNestOnTree(const InitArg& arg); + ~CreationNestOnTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb8 + const int* mActorNum_s{}; + // static_param at offset 0xc0 + const float* mTargetEscapedRadius_s{}; + // static_param at offset 0xc8 + const bool* mIsRemainNum_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDamageAttrSelect.cpp b/src/Game/AI/AI/aiDamageAttrSelect.cpp new file mode 100644 index 00000000..6e9ec81d --- /dev/null +++ b/src/Game/AI/AI/aiDamageAttrSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDamageAttrSelect.h" + +namespace uking::ai { + +DamageAttrSelect::DamageAttrSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DamageAttrSelect::~DamageAttrSelect() = default; + +bool DamageAttrSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DamageAttrSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DamageAttrSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DamageAttrSelect::loadParams_() { + getStaticParam(&mKeyAttribute_s, "KeyAttribute"); + getStaticParam(&mOption_s, "Option"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDamageAttrSelect.h b/src/Game/AI/AI/aiDamageAttrSelect.h new file mode 100644 index 00000000..084bf8bb --- /dev/null +++ b/src/Game/AI/AI/aiDamageAttrSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DamageAttrSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DamageAttrSelect, ksys::act::ai::Ai) +public: + explicit DamageAttrSelect(const InitArg& arg); + ~DamageAttrSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mKeyAttribute_s{}; + // static_param at offset 0x40 + const int* mOption_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDamageTypeSelect.cpp b/src/Game/AI/AI/aiDamageTypeSelect.cpp new file mode 100644 index 00000000..16963096 --- /dev/null +++ b/src/Game/AI/AI/aiDamageTypeSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDamageTypeSelect.h" + +namespace uking::ai { + +DamageTypeSelect::DamageTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DamageTypeSelect::~DamageTypeSelect() = default; + +bool DamageTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DamageTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DamageTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DamageTypeSelect::loadParams_() { + getStaticParam(&mDamageType_s, "DamageType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDamageTypeSelect.h b/src/Game/AI/AI/aiDamageTypeSelect.h new file mode 100644 index 00000000..b588aed2 --- /dev/null +++ b/src/Game/AI/AI/aiDamageTypeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DamageTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DamageTypeSelect, ksys::act::ai::Ai) +public: + explicit DamageTypeSelect(const InitArg& arg); + ~DamageTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDamageType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDangerAvoidFlagSelect.cpp b/src/Game/AI/AI/aiDangerAvoidFlagSelect.cpp new file mode 100644 index 00000000..2da56b9e --- /dev/null +++ b/src/Game/AI/AI/aiDangerAvoidFlagSelect.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiDangerAvoidFlagSelect.h" + +namespace uking::ai { + +DangerAvoidFlagSelect::DangerAvoidFlagSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DangerAvoidFlagSelect::~DangerAvoidFlagSelect() = default; + +void DangerAvoidFlagSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DangerAvoidFlagSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDangerAvoidFlagSelect.h b/src/Game/AI/AI/aiDangerAvoidFlagSelect.h new file mode 100644 index 00000000..532b08c8 --- /dev/null +++ b/src/Game/AI/AI/aiDangerAvoidFlagSelect.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DangerAvoidFlagSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DangerAvoidFlagSelect, ksys::act::ai::Ai) +public: + explicit DangerAvoidFlagSelect(const InitArg& arg); + ~DangerAvoidFlagSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDashAndAttack.cpp b/src/Game/AI/AI/aiDashAndAttack.cpp new file mode 100644 index 00000000..b3c74881 --- /dev/null +++ b/src/Game/AI/AI/aiDashAndAttack.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiDashAndAttack.h" + +namespace uking::ai { + +DashAndAttack::DashAndAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DashAndAttack::~DashAndAttack() = default; + +bool DashAndAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DashAndAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DashAndAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DashAndAttack::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAttackFrame_s, "AttackFrame"); + getStaticParam(&mOffsetLR_s, "OffsetLR"); + getStaticParam(&mAttackRange_s, "AttackRange"); + getStaticParam(&mTiredAngle_s, "TiredAngle"); + getStaticParam(&mTargetSpeedClampMax_s, "TargetSpeedClampMax"); + getStaticParam(&mIsAbleSkipNear_s, "IsAbleSkipNear"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDashAndAttack.h b/src/Game/AI/AI/aiDashAndAttack.h new file mode 100644 index 00000000..748fc48c --- /dev/null +++ b/src/Game/AI/AI/aiDashAndAttack.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DashAndAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DashAndAttack, ksys::act::ai::Ai) +public: + explicit DashAndAttack(const InitArg& arg); + ~DashAndAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mAttackFrame_s{}; + // static_param at offset 0x48 + const float* mOffsetLR_s{}; + // static_param at offset 0x50 + const float* mAttackRange_s{}; + // static_param at offset 0x58 + const float* mTiredAngle_s{}; + // static_param at offset 0x60 + const float* mTargetSpeedClampMax_s{}; + // static_param at offset 0x68 + const bool* mIsAbleSkipNear_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mTargetVel_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDeadOrOtherState.cpp b/src/Game/AI/AI/aiDeadOrOtherState.cpp new file mode 100644 index 00000000..4aa59e8e --- /dev/null +++ b/src/Game/AI/AI/aiDeadOrOtherState.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiDeadOrOtherState.h" + +namespace uking::ai { + +DeadOrOtherState::DeadOrOtherState(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool DeadOrOtherState::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DeadOrOtherState::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DeadOrOtherState::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DeadOrOtherState::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDeadOrOtherState.h b/src/Game/AI/AI/aiDeadOrOtherState.h new file mode 100644 index 00000000..ed6baeed --- /dev/null +++ b/src/Game/AI/AI/aiDeadOrOtherState.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DeadOrOtherState : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DeadOrOtherState, ksys::act::ai::Ai) +public: + explicit DeadOrOtherState(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.cpp b/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.cpp new file mode 100644 index 00000000..539ab4d7 --- /dev/null +++ b/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDeadlyBlowWeaponRoot.h" + +namespace uking::ai { + +DeadlyBlowWeaponRoot::DeadlyBlowWeaponRoot(const InitArg& arg) : WeaponRootAI(arg) {} + +DeadlyBlowWeaponRoot::~DeadlyBlowWeaponRoot() = default; + +bool DeadlyBlowWeaponRoot::init_(sead::Heap* heap) { + return WeaponRootAI::init_(heap); +} + +void DeadlyBlowWeaponRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeaponRootAI::enter_(params); +} + +void DeadlyBlowWeaponRoot::leave_() { + WeaponRootAI::leave_(); +} + +void DeadlyBlowWeaponRoot::loadParams_() { + WeaponRootAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.h b/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.h new file mode 100644 index 00000000..e689455c --- /dev/null +++ b/src/Game/AI/AI/aiDeadlyBlowWeaponRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DeadlyBlowWeaponRoot : public WeaponRootAI { + SEAD_RTTI_OVERRIDE(DeadlyBlowWeaponRoot, WeaponRootAI) +public: + explicit DeadlyBlowWeaponRoot(const InitArg& arg); + ~DeadlyBlowWeaponRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDefWanderAI.cpp b/src/Game/AI/AI/aiDefWanderAI.cpp new file mode 100644 index 00000000..13f063c6 --- /dev/null +++ b/src/Game/AI/AI/aiDefWanderAI.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiDefWanderAI.h" + +namespace uking::ai { + +DefWanderAI::DefWanderAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DefWanderAI::~DefWanderAI() = default; + +void DefWanderAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DefWanderAI::loadParams_() { + getStaticParam(&mFinishChangeCount_s, "FinishChangeCount"); + getStaticParam(&mChangeWaitRate_s, "ChangeWaitRate"); + getStaticParam(&mMaxWaitTime_s, "MaxWaitTime"); + getStaticParam(&mMinWaitTime_s, "MinWaitTime"); + getStaticParam(&mCheckWaitIsChangable_s, "CheckWaitIsChangable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDefWanderAI.h b/src/Game/AI/AI/aiDefWanderAI.h new file mode 100644 index 00000000..8ba8ea5c --- /dev/null +++ b/src/Game/AI/AI/aiDefWanderAI.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DefWanderAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DefWanderAI, ksys::act::ai::Ai) +public: + explicit DefWanderAI(const InitArg& arg); + ~DefWanderAI() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFinishChangeCount_s{}; + // static_param at offset 0x40 + const float* mChangeWaitRate_s{}; + // static_param at offset 0x48 + const float* mMaxWaitTime_s{}; + // static_param at offset 0x50 + const float* mMinWaitTime_s{}; + // static_param at offset 0x58 + const bool* mCheckWaitIsChangable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDemoRailMoveRemains.cpp b/src/Game/AI/AI/aiDemoRailMoveRemains.cpp new file mode 100644 index 00000000..4ddba24e --- /dev/null +++ b/src/Game/AI/AI/aiDemoRailMoveRemains.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiDemoRailMoveRemains.h" + +namespace uking::ai { + +DemoRailMoveRemains::DemoRailMoveRemains(const InitArg& arg) : RailMoveRemains(arg) {} + +DemoRailMoveRemains::~DemoRailMoveRemains() = default; + +bool DemoRailMoveRemains::init_(sead::Heap* heap) { + return RailMoveRemains::init_(heap); +} + +void DemoRailMoveRemains::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveRemains::enter_(params); +} + +void DemoRailMoveRemains::leave_() { + RailMoveRemains::leave_(); +} + +void DemoRailMoveRemains::loadParams_() { + RailMoveRemains::loadParams_(); + getDynamicParam(&mDynSpeedScale_d, "DynSpeedScale"); + getDynamicParam(&mDynInitPosByRailRatio_d, "DynInitPosByRailRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDemoRailMoveRemains.h b/src/Game/AI/AI/aiDemoRailMoveRemains.h new file mode 100644 index 00000000..57c4c6dd --- /dev/null +++ b/src/Game/AI/AI/aiDemoRailMoveRemains.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveRemains.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DemoRailMoveRemains : public RailMoveRemains { + SEAD_RTTI_OVERRIDE(DemoRailMoveRemains, RailMoveRemains) +public: + explicit DemoRailMoveRemains(const InitArg& arg); + ~DemoRailMoveRemains() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x80 + float* mDynSpeedScale_d{}; + // dynamic_param at offset 0x88 + float* mDynInitPosByRailRatio_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDemoRootAI.cpp b/src/Game/AI/AI/aiDemoRootAI.cpp new file mode 100644 index 00000000..a91ae900 --- /dev/null +++ b/src/Game/AI/AI/aiDemoRootAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDemoRootAI.h" + +namespace uking::ai { + +DemoRootAI::DemoRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DemoRootAI::~DemoRootAI() = default; + +bool DemoRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DemoRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DemoRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DemoRootAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDemoRootAI.h b/src/Game/AI/AI/aiDemoRootAI.h new file mode 100644 index 00000000..513f0872 --- /dev/null +++ b/src/Game/AI/AI/aiDemoRootAI.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DemoRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DemoRootAI, ksys::act::ai::Ai) +public: + explicit DemoRootAI(const InitArg& arg); + ~DemoRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.cpp b/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.cpp new file mode 100644 index 00000000..50a03b03 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h" + +namespace uking::ai { + +DgnObj_DLC_CWRotDirSwitch::DgnObj_DLC_CWRotDirSwitch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_CWRotDirSwitch::~DgnObj_DLC_CWRotDirSwitch() = default; + +bool DgnObj_DLC_CWRotDirSwitch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_CWRotDirSwitch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_CWRotDirSwitch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_CWRotDirSwitch::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h b/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h new file mode 100644 index 00000000..494966ff --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_CWRotDirSwitch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_CWRotDirSwitch, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_CWRotDirSwitch(const InitArg& arg); + ~DgnObj_DLC_CWRotDirSwitch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.cpp b/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.cpp new file mode 100644 index 00000000..bc5230f7 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h" + +namespace uking::ai { + +DgnObj_DLC_CW_WithEntityBody00::DgnObj_DLC_CW_WithEntityBody00(const InitArg& arg) + : DgnObj_DLC_CogWheel2(arg) {} + +DgnObj_DLC_CW_WithEntityBody00::~DgnObj_DLC_CW_WithEntityBody00() = default; + +bool DgnObj_DLC_CW_WithEntityBody00::init_(sead::Heap* heap) { + return DgnObj_DLC_CogWheel2::init_(heap); +} + +void DgnObj_DLC_CW_WithEntityBody00::enter_(ksys::act::ai::InlineParamPack* params) { + DgnObj_DLC_CogWheel2::enter_(params); +} + +void DgnObj_DLC_CW_WithEntityBody00::leave_() { + DgnObj_DLC_CogWheel2::leave_(); +} + +void DgnObj_DLC_CW_WithEntityBody00::loadParams_() { + DgnObj_DLC_CogWheel2::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h b/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h new file mode 100644 index 00000000..8ab5e9a6 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDgnObj_DLC_CogWheel2.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_CW_WithEntityBody00 : public DgnObj_DLC_CogWheel2 { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_CW_WithEntityBody00, DgnObj_DLC_CogWheel2) +public: + explicit DgnObj_DLC_CW_WithEntityBody00(const InitArg& arg); + ~DgnObj_DLC_CW_WithEntityBody00() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.cpp b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.cpp new file mode 100644 index 00000000..861a188f --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiDgnObj_DLC_CogWheel2.h" + +namespace uking::ai { + +DgnObj_DLC_CogWheel2::DgnObj_DLC_CogWheel2(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_CogWheel2::~DgnObj_DLC_CogWheel2() = default; + +bool DgnObj_DLC_CogWheel2::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_CogWheel2::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_CogWheel2::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_CogWheel2::loadParams_() { + getStaticParam(&mCorrectConstraint_s, "CorrectConstraint"); + getMapUnitParam(&mGearRatio_m, "GearRatio"); + getMapUnitParam(&mRegistFromBeginning_m, "RegistFromBeginning"); + getMapUnitParam(&mJoinSystemGroup_m, "JoinSystemGroup"); + getAITreeVariable(&mRotationOffset_a, "RotationOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.h b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.h new file mode 100644 index 00000000..87bd4051 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel2.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_CogWheel2 : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_CogWheel2, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_CogWheel2(const InitArg& arg); + ~DgnObj_DLC_CogWheel2() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x28]; + // static_param at offset 0x60 + const bool* mCorrectConstraint_s{}; + // map_unit_param at offset 0x68 + const float* mGearRatio_m{}; + // map_unit_param at offset 0x70 + const bool* mRegistFromBeginning_m{}; + // map_unit_param at offset 0x78 + const bool* mJoinSystemGroup_m{}; + // aitree_variable at offset 0x80 + float* mRotationOffset_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp new file mode 100644 index 00000000..8765337e --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h" + +namespace uking::ai { + +DgnObj_DLC_CogWheel_Physics_Ctr::DgnObj_DLC_CogWheel_Physics_Ctr(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_CogWheel_Physics_Ctr::~DgnObj_DLC_CogWheel_Physics_Ctr() = default; + +bool DgnObj_DLC_CogWheel_Physics_Ctr::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_CogWheel_Physics_Ctr::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_CogWheel_Physics_Ctr::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_CogWheel_Physics_Ctr::loadParams_() { + getStaticParam(&mStateRot_s, "StateRot"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h new file mode 100644 index 00000000..e7bc378c --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_CogWheel_Physics_Ctr : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_CogWheel_Physics_Ctr, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_CogWheel_Physics_Ctr(const InitArg& arg); + ~DgnObj_DLC_CogWheel_Physics_Ctr() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mStateRot_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.cpp b/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.cpp new file mode 100644 index 00000000..a1da449c --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h" + +namespace uking::ai { + +DgnObj_DLC_DungeonRotateTag::DgnObj_DLC_DungeonRotateTag(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_DungeonRotateTag::~DgnObj_DLC_DungeonRotateTag() = default; + +bool DgnObj_DLC_DungeonRotateTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_DungeonRotateTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_DungeonRotateTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_DungeonRotateTag::loadParams_() { + getMapUnitParam(&mGearRatio_m, "GearRatio"); + getMapUnitParam(&mRegistFromBeginning_m, "RegistFromBeginning"); + getAITreeVariable(&mRotationOffset_a, "RotationOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h b/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h new file mode 100644 index 00000000..ef0e84c0 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_DungeonRotateTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_DungeonRotateTag, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_DungeonRotateTag(const InitArg& arg); + ~DgnObj_DLC_DungeonRotateTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mGearRatio_m{}; + // map_unit_param at offset 0x40 + const bool* mRegistFromBeginning_m{}; + // aitree_variable at offset 0x48 + float* mRotationOffset_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_Faucet.cpp b/src/Game/AI/AI/aiDgnObj_DLC_Faucet.cpp new file mode 100644 index 00000000..451f0dc7 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_Faucet.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDgnObj_DLC_Faucet.h" + +namespace uking::ai { + +DgnObj_DLC_Faucet::DgnObj_DLC_Faucet(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_Faucet::~DgnObj_DLC_Faucet() = default; + +bool DgnObj_DLC_Faucet::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_Faucet::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_Faucet::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_Faucet::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_Faucet.h b/src/Game/AI/AI/aiDgnObj_DLC_Faucet.h new file mode 100644 index 00000000..85dd2cf8 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_Faucet.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_Faucet : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_Faucet, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_Faucet(const InitArg& arg); + ~DgnObj_DLC_Faucet() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.cpp b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.cpp new file mode 100644 index 00000000..ca57af56 --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDgnObj_DLC_SliderBlock.h" + +namespace uking::ai { + +DgnObj_DLC_SliderBlock::DgnObj_DLC_SliderBlock(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DgnObj_DLC_SliderBlock::~DgnObj_DLC_SliderBlock() = default; + +bool DgnObj_DLC_SliderBlock::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DgnObj_DLC_SliderBlock::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DgnObj_DLC_SliderBlock::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DgnObj_DLC_SliderBlock::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h new file mode 100644 index 00000000..8b82f4ea --- /dev/null +++ b/src/Game/AI/AI/aiDgnObj_DLC_SliderBlock.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DgnObj_DLC_SliderBlock : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DgnObj_DLC_SliderBlock, ksys::act::ai::Ai) +public: + explicit DgnObj_DLC_SliderBlock(const InitArg& arg); + ~DgnObj_DLC_SliderBlock() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelect.cpp b/src/Game/AI/AI/aiDieSelect.cpp new file mode 100644 index 00000000..4399144c --- /dev/null +++ b/src/Game/AI/AI/aiDieSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDieSelect.h" + +namespace uking::ai { + +DieSelect::DieSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DieSelect::~DieSelect() = default; + +bool DieSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DieSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DieSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DieSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelect.h b/src/Game/AI/AI/aiDieSelect.h new file mode 100644 index 00000000..77be6981 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DieSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DieSelect, ksys::act::ai::Ai) +public: + explicit DieSelect(const InitArg& arg); + ~DieSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectBombPlus.cpp b/src/Game/AI/AI/aiDieSelectBombPlus.cpp new file mode 100644 index 00000000..eff88d64 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectBombPlus.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDieSelectBombPlus.h" + +namespace uking::ai { + +DieSelectBombPlus::DieSelectBombPlus(const InitArg& arg) : DieSelect(arg) {} + +DieSelectBombPlus::~DieSelectBombPlus() = default; + +bool DieSelectBombPlus::init_(sead::Heap* heap) { + return DieSelect::init_(heap); +} + +void DieSelectBombPlus::enter_(ksys::act::ai::InlineParamPack* params) { + DieSelect::enter_(params); +} + +void DieSelectBombPlus::leave_() { + DieSelect::leave_(); +} + +void DieSelectBombPlus::loadParams_() { + DieSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectBombPlus.h b/src/Game/AI/AI/aiDieSelectBombPlus.h new file mode 100644 index 00000000..db44a626 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectBombPlus.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDieSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DieSelectBombPlus : public DieSelect { + SEAD_RTTI_OVERRIDE(DieSelectBombPlus, DieSelect) +public: + explicit DieSelectBombPlus(const InitArg& arg); + ~DieSelectBombPlus() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectChemShockPlus.cpp b/src/Game/AI/AI/aiDieSelectChemShockPlus.cpp new file mode 100644 index 00000000..eb90767b --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectChemShockPlus.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDieSelectChemShockPlus.h" + +namespace uking::ai { + +DieSelectChemShockPlus::DieSelectChemShockPlus(const InitArg& arg) : DieSelectChemicalPlus(arg) {} + +DieSelectChemShockPlus::~DieSelectChemShockPlus() = default; + +bool DieSelectChemShockPlus::init_(sead::Heap* heap) { + return DieSelectChemicalPlus::init_(heap); +} + +void DieSelectChemShockPlus::enter_(ksys::act::ai::InlineParamPack* params) { + DieSelectChemicalPlus::enter_(params); +} + +void DieSelectChemShockPlus::leave_() { + DieSelectChemicalPlus::leave_(); +} + +void DieSelectChemShockPlus::loadParams_() { + DieSelectChemicalPlus::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectChemShockPlus.h b/src/Game/AI/AI/aiDieSelectChemShockPlus.h new file mode 100644 index 00000000..abfe8a31 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectChemShockPlus.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDieSelectChemicalPlus.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DieSelectChemShockPlus : public DieSelectChemicalPlus { + SEAD_RTTI_OVERRIDE(DieSelectChemShockPlus, DieSelectChemicalPlus) +public: + explicit DieSelectChemShockPlus(const InitArg& arg); + ~DieSelectChemShockPlus() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectChemicalPlus.cpp b/src/Game/AI/AI/aiDieSelectChemicalPlus.cpp new file mode 100644 index 00000000..18c98432 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectChemicalPlus.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDieSelectChemicalPlus.h" + +namespace uking::ai { + +DieSelectChemicalPlus::DieSelectChemicalPlus(const InitArg& arg) : DieSelect(arg) {} + +DieSelectChemicalPlus::~DieSelectChemicalPlus() = default; + +bool DieSelectChemicalPlus::init_(sead::Heap* heap) { + return DieSelect::init_(heap); +} + +void DieSelectChemicalPlus::enter_(ksys::act::ai::InlineParamPack* params) { + DieSelect::enter_(params); +} + +void DieSelectChemicalPlus::leave_() { + DieSelect::leave_(); +} + +void DieSelectChemicalPlus::loadParams_() { + DieSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDieSelectChemicalPlus.h b/src/Game/AI/AI/aiDieSelectChemicalPlus.h new file mode 100644 index 00000000..7be59159 --- /dev/null +++ b/src/Game/AI/AI/aiDieSelectChemicalPlus.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDieSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DieSelectChemicalPlus : public DieSelect { + SEAD_RTTI_OVERRIDE(DieSelectChemicalPlus, DieSelect) +public: + explicit DieSelectChemicalPlus(const InitArg& arg); + ~DieSelectChemicalPlus() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDisplaySelect.cpp b/src/Game/AI/AI/aiDisplaySelect.cpp new file mode 100644 index 00000000..d5bda418 --- /dev/null +++ b/src/Game/AI/AI/aiDisplaySelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDisplaySelect.h" + +namespace uking::ai { + +DisplaySelect::DisplaySelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DisplaySelect::~DisplaySelect() = default; + +bool DisplaySelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DisplaySelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DisplaySelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DisplaySelect::loadParams_() { + getStaticParam(&mRadius_s, "Radius"); + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDisplaySelect.h b/src/Game/AI/AI/aiDisplaySelect.h new file mode 100644 index 00000000..55863497 --- /dev/null +++ b/src/Game/AI/AI/aiDisplaySelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DisplaySelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DisplaySelect, ksys::act::ai::Ai) +public: + explicit DisplaySelect(const InitArg& arg); + ~DisplaySelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRadius_s{}; + // static_param at offset 0x40 + const bool* mIsCheckEveryFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDistanceKeepMove.cpp b/src/Game/AI/AI/aiDistanceKeepMove.cpp new file mode 100644 index 00000000..3b6304fd --- /dev/null +++ b/src/Game/AI/AI/aiDistanceKeepMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDistanceKeepMove.h" + +namespace uking::ai { + +DistanceKeepMove::DistanceKeepMove(const InitArg& arg) : WaitNearTarget(arg) {} + +DistanceKeepMove::~DistanceKeepMove() = default; + +bool DistanceKeepMove::init_(sead::Heap* heap) { + return WaitNearTarget::init_(heap); +} + +void DistanceKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + WaitNearTarget::enter_(params); +} + +void DistanceKeepMove::leave_() { + WaitNearTarget::leave_(); +} + +void DistanceKeepMove::loadParams_() { + WaitNearTarget::loadParams_(); + getStaticParam(&mStartBackDistOffset_s, "StartBackDistOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDistanceKeepMove.h b/src/Game/AI/AI/aiDistanceKeepMove.h new file mode 100644 index 00000000..a32bd470 --- /dev/null +++ b/src/Game/AI/AI/aiDistanceKeepMove.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiWaitNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DistanceKeepMove : public WaitNearTarget { + SEAD_RTTI_OVERRIDE(DistanceKeepMove, WaitNearTarget) +public: + explicit DistanceKeepMove(const InitArg& arg); + ~DistanceKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const float* mStartBackDistOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDistanceLostCheck.cpp b/src/Game/AI/AI/aiDistanceLostCheck.cpp new file mode 100644 index 00000000..3541d6b9 --- /dev/null +++ b/src/Game/AI/AI/aiDistanceLostCheck.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiDistanceLostCheck.h" + +namespace uking::ai { + +DistanceLostCheck::DistanceLostCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DistanceLostCheck::~DistanceLostCheck() = default; + +bool DistanceLostCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DistanceLostCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DistanceLostCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DistanceLostCheck::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mAddAwarenessRangeType_s, "AddAwarenessRangeType"); + getStaticParam(&mLostRange_s, "LostRange"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDistanceLostCheck.h b/src/Game/AI/AI/aiDistanceLostCheck.h new file mode 100644 index 00000000..cb8ea15b --- /dev/null +++ b/src/Game/AI/AI/aiDistanceLostCheck.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DistanceLostCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DistanceLostCheck, ksys::act::ai::Ai) +public: + explicit DistanceLostCheck(const InitArg& arg); + ~DistanceLostCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const int* mAddAwarenessRangeType_s{}; + // static_param at offset 0x48 + const float* mLostRange_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoChangeOneTime.cpp b/src/Game/AI/AI/aiDoChangeOneTime.cpp new file mode 100644 index 00000000..7a8cd11c --- /dev/null +++ b/src/Game/AI/AI/aiDoChangeOneTime.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDoChangeOneTime.h" + +namespace uking::ai { + +DoChangeOneTime::DoChangeOneTime(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DoChangeOneTime::~DoChangeOneTime() = default; + +bool DoChangeOneTime::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DoChangeOneTime::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DoChangeOneTime::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DoChangeOneTime::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoChangeOneTime.h b/src/Game/AI/AI/aiDoChangeOneTime.h new file mode 100644 index 00000000..c80546f7 --- /dev/null +++ b/src/Game/AI/AI/aiDoChangeOneTime.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DoChangeOneTime : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DoChangeOneTime, ksys::act::ai::Ai) +public: + explicit DoChangeOneTime(const InitArg& arg); + ~DoChangeOneTime() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDogNormal.cpp b/src/Game/AI/AI/aiDogNormal.cpp new file mode 100644 index 00000000..db4bf48a --- /dev/null +++ b/src/Game/AI/AI/aiDogNormal.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiDogNormal.h" + +namespace uking::ai { + +DogNormal::DogNormal(const InitArg& arg) : DomesticNormal(arg) {} + +DogNormal::~DogNormal() = default; + +bool DogNormal::init_(sead::Heap* heap) { + return DomesticNormal::init_(heap); +} + +void DogNormal::enter_(ksys::act::ai::InlineParamPack* params) { + DomesticNormal::enter_(params); +} + +void DogNormal::leave_() { + DomesticNormal::leave_(); +} + +void DogNormal::loadParams_() { + DomesticNormal::loadParams_(); + getStaticParam(&mNumFriendlyFoodForLeadTreasure_s, "NumFriendlyFoodForLeadTreasure"); + getStaticParam(&mMaxFollowDist_s, "MaxFollowDist"); + getStaticParam(&mMaxFollowFriendDecayRate_s, "MaxFollowFriendDecayRate"); + getStaticParam(&mFoodFriendRate_s, "FoodFriendRate"); + getStaticParam(&mFoodFriendDist_s, "FoodFriendDist"); + getStaticParam(&mNearFriendRate_s, "NearFriendRate"); + getStaticParam(&mNearFriendDist_s, "NearFriendDist"); + getStaticParam(&mFarFriendDecayRate_s, "FarFriendDecayRate"); + getStaticParam(&mFarFriendDist_s, "FarFriendDist"); + getStaticParam(&mFarFriendFriendlyDist_s, "FarFriendFriendlyDist"); + getStaticParam(&mAttackFriendDecayRate_s, "AttackFriendDecayRate"); + getStaticParam(&mFriendTickRate_s, "FriendTickRate"); + getStaticParam(&mNoMoveFriendDecayRate_s, "NoMoveFriendDecayRate"); + getStaticParam(&mNoMoveThreshold_s, "NoMoveThreshold"); + getStaticParam(&mFramesKeepMaxFriendly_s, "FramesKeepMaxFriendly"); + getStaticParam(&mFramesStayAfterLead_s, "FramesStayAfterLead"); + getStaticParam(&mAngleTurnToPlayer_s, "AngleTurnToPlayer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDogNormal.h b/src/Game/AI/AI/aiDogNormal.h new file mode 100644 index 00000000..b2d9f8d5 --- /dev/null +++ b/src/Game/AI/AI/aiDogNormal.h @@ -0,0 +1,56 @@ +#pragma once + +#include "Game/AI/AI/aiDomesticNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DogNormal : public DomesticNormal { + SEAD_RTTI_OVERRIDE(DogNormal, DomesticNormal) +public: + explicit DogNormal(const InitArg& arg); + ~DogNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3a0 + const int* mNumFriendlyFoodForLeadTreasure_s{}; + // static_param at offset 0x3a8 + const float* mMaxFollowDist_s{}; + // static_param at offset 0x3b0 + const float* mMaxFollowFriendDecayRate_s{}; + // static_param at offset 0x3b8 + const float* mFoodFriendRate_s{}; + // static_param at offset 0x3c0 + const float* mFoodFriendDist_s{}; + // static_param at offset 0x3c8 + const float* mNearFriendRate_s{}; + // static_param at offset 0x3d0 + const float* mNearFriendDist_s{}; + // static_param at offset 0x3d8 + const float* mFarFriendDecayRate_s{}; + // static_param at offset 0x3e0 + const float* mFarFriendDist_s{}; + // static_param at offset 0x3e8 + const float* mFarFriendFriendlyDist_s{}; + // static_param at offset 0x3f0 + const float* mAttackFriendDecayRate_s{}; + // static_param at offset 0x3f8 + const float* mFriendTickRate_s{}; + // static_param at offset 0x400 + const float* mNoMoveFriendDecayRate_s{}; + // static_param at offset 0x408 + const float* mNoMoveThreshold_s{}; + // static_param at offset 0x410 + const float* mFramesKeepMaxFriendly_s{}; + // static_param at offset 0x418 + const float* mFramesStayAfterLead_s{}; + // static_param at offset 0x420 + const float* mAngleTurnToPlayer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDomesticNormal.cpp b/src/Game/AI/AI/aiDomesticNormal.cpp new file mode 100644 index 00000000..ae239f46 --- /dev/null +++ b/src/Game/AI/AI/aiDomesticNormal.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiDomesticNormal.h" + +namespace uking::ai { + +DomesticNormal::DomesticNormal(const InitArg& arg) : PreyNormal(arg) {} + +DomesticNormal::~DomesticNormal() = default; + +bool DomesticNormal::init_(sead::Heap* heap) { + return PreyNormal::init_(heap); +} + +void DomesticNormal::enter_(ksys::act::ai::InlineParamPack* params) { + PreyNormal::enter_(params); +} + +void DomesticNormal::leave_() { + PreyNormal::leave_(); +} + +void DomesticNormal::loadParams_() { + PreyNormal::loadParams_(); + getStaticParam(&mWaitFramesAfterRunMax_s, "WaitFramesAfterRunMax"); + getStaticParam(&mNumFailPathHomeFadeout_s, "NumFailPathHomeFadeout"); + getStaticParam(&mDistUntilReturnToHomePos_s, "DistUntilReturnToHomePos"); + getStaticParam(&mWaitFramesAfterRunMin_s, "WaitFramesAfterRunMin"); + getStaticParam(&mStaggerVelocityThreshold_s, "StaggerVelocityThreshold"); + getStaticParam(&mDistHomePosFadeout_s, "DistHomePosFadeout"); + getAITreeVariable(&mDomesticAnimalRailName_a, "DomesticAnimalRailName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDomesticNormal.h b/src/Game/AI/AI/aiDomesticNormal.h new file mode 100644 index 00000000..f3d95a11 --- /dev/null +++ b/src/Game/AI/AI/aiDomesticNormal.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiPreyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DomesticNormal : public PreyNormal { + SEAD_RTTI_OVERRIDE(DomesticNormal, PreyNormal) +public: + explicit DomesticNormal(const InitArg& arg); + ~DomesticNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x340 + const int* mWaitFramesAfterRunMax_s{}; + // static_param at offset 0x348 + const int* mNumFailPathHomeFadeout_s{}; + // static_param at offset 0x350 + const float* mDistUntilReturnToHomePos_s{}; + // static_param at offset 0x358 + const float* mWaitFramesAfterRunMin_s{}; + // static_param at offset 0x360 + const float* mStaggerVelocityThreshold_s{}; + // static_param at offset 0x368 + const float* mDistHomePosFadeout_s{}; + // aitree_variable at offset 0x370 + sead::SafeString* mDomesticAnimalRailName_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDominoRoot.cpp b/src/Game/AI/AI/aiDominoRoot.cpp new file mode 100644 index 00000000..241ddb32 --- /dev/null +++ b/src/Game/AI/AI/aiDominoRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiDominoRoot.h" + +namespace uking::ai { + +DominoRoot::DominoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DominoRoot::~DominoRoot() = default; + +bool DominoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DominoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DominoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DominoRoot::loadParams_() { + getStaticParam(&mPointVelTh_s, "PointVelTh"); + getStaticParam(&mLinearRate_s, "LinearRate"); + getStaticParam(&mAngRate_s, "AngRate"); + getStaticParam(&mCheckHeightRate_s, "CheckHeightRate"); + getStaticParam(&mFriction_s, "Friction"); + getStaticParam(&mIsIgnoreWater_s, "IsIgnoreWater"); + getMapUnitParam(&mIsBreakable_m, "IsBreakable"); + getMapUnitParam(&mEnableToEmitSpEffect_m, "EnableToEmitSpEffect"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDominoRoot.h b/src/Game/AI/AI/aiDominoRoot.h new file mode 100644 index 00000000..a7da53bf --- /dev/null +++ b/src/Game/AI/AI/aiDominoRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DominoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DominoRoot, ksys::act::ai::Ai) +public: + explicit DominoRoot(const InitArg& arg); + ~DominoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPointVelTh_s{}; + // static_param at offset 0x40 + const float* mLinearRate_s{}; + // static_param at offset 0x48 + const float* mAngRate_s{}; + // static_param at offset 0x50 + const float* mCheckHeightRate_s{}; + // static_param at offset 0x58 + const float* mFriction_s{}; + // static_param at offset 0x60 + const bool* mIsIgnoreWater_s{}; + // map_unit_param at offset 0x68 + const bool* mIsBreakable_m{}; + // map_unit_param at offset 0x70 + const bool* mEnableToEmitSpEffect_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoorRoot.cpp b/src/Game/AI/AI/aiDoorRoot.cpp new file mode 100644 index 00000000..aada3110 --- /dev/null +++ b/src/Game/AI/AI/aiDoorRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiDoorRoot.h" + +namespace uking::ai { + +DoorRoot::DoorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DoorRoot::~DoorRoot() = default; + +bool DoorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DoorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DoorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DoorRoot::loadParams_() { + getStaticParam(&mCloseWaitFrame_s, "CloseWaitFrame"); + getStaticParam(&mIsCheckBack_s, "IsCheckBack"); + getStaticParam(&mOpen_L_AS_s, "Open_L_AS"); + getStaticParam(&mOpen_R_AS_s, "Open_R_AS"); + getStaticParam(&mClose_L_AS_s, "Close_L_AS"); + getStaticParam(&mClose_R_AS_s, "Close_R_AS"); + getMapUnitParam(&mNpcCanOpenFlag_m, "NpcCanOpenFlag"); + getAITreeVariable(&mIsOpenDoor_a, "IsOpenDoor"); + getAITreeVariable(&mIsOpenToInside_a, "IsOpenToInside"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoorRoot.h b/src/Game/AI/AI/aiDoorRoot.h new file mode 100644 index 00000000..84694077 --- /dev/null +++ b/src/Game/AI/AI/aiDoorRoot.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DoorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DoorRoot, ksys::act::ai::Ai) +public: + explicit DoorRoot(const InitArg& arg); + ~DoorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCloseWaitFrame_s{}; + // static_param at offset 0x40 + const bool* mIsCheckBack_s{}; + // static_param at offset 0x48 + sead::SafeString mOpen_L_AS_s{}; + // static_param at offset 0x58 + sead::SafeString mOpen_R_AS_s{}; + // static_param at offset 0x68 + sead::SafeString mClose_L_AS_s{}; + // static_param at offset 0x78 + sead::SafeString mClose_R_AS_s{}; + // map_unit_param at offset 0x88 + sead::SafeString mNpcCanOpenFlag_m{}; + // aitree_variable at offset 0x98 + bool* mIsOpenDoor_a{}; + // aitree_variable at offset 0xa0 + bool* mIsOpenToInside_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoubtItemSubTargetSelect.cpp b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.cpp new file mode 100644 index 00000000..7483b1a1 --- /dev/null +++ b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDoubtItemSubTargetSelect.h" + +namespace uking::ai { + +DoubtItemSubTargetSelect::DoubtItemSubTargetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DoubtItemSubTargetSelect::~DoubtItemSubTargetSelect() = default; + +bool DoubtItemSubTargetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DoubtItemSubTargetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DoubtItemSubTargetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DoubtItemSubTargetSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h new file mode 100644 index 00000000..0898413a --- /dev/null +++ b/src/Game/AI/AI/aiDoubtItemSubTargetSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DoubtItemSubTargetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DoubtItemSubTargetSelect, ksys::act::ai::Ai) +public: + explicit DoubtItemSubTargetSelect(const InitArg& arg); + ~DoubtItemSubTargetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonDropItemTargetRootAI.cpp b/src/Game/AI/AI/aiDragonDropItemTargetRootAI.cpp new file mode 100644 index 00000000..81478254 --- /dev/null +++ b/src/Game/AI/AI/aiDragonDropItemTargetRootAI.cpp @@ -0,0 +1,10 @@ +#include "Game/AI/AI/aiDragonDropItemTargetRootAI.h" + +namespace uking::ai { + +DragonDropItemTargetRootAI::DragonDropItemTargetRootAI(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +DragonDropItemTargetRootAI::~DragonDropItemTargetRootAI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonDropItemTargetRootAI.h b/src/Game/AI/AI/aiDragonDropItemTargetRootAI.h new file mode 100644 index 00000000..40c38e7f --- /dev/null +++ b/src/Game/AI/AI/aiDragonDropItemTargetRootAI.h @@ -0,0 +1,16 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonDropItemTargetRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DragonDropItemTargetRootAI, ksys::act::ai::Ai) +public: + explicit DragonDropItemTargetRootAI(const InitArg& arg); + ~DragonDropItemTargetRootAI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonElecRoot.cpp b/src/Game/AI/AI/aiDragonElecRoot.cpp new file mode 100644 index 00000000..6500324b --- /dev/null +++ b/src/Game/AI/AI/aiDragonElecRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDragonElecRoot.h" + +namespace uking::ai { + +DragonElecRoot::DragonElecRoot(const InitArg& arg) : DragonRoot(arg) {} + +DragonElecRoot::~DragonElecRoot() = default; + +bool DragonElecRoot::init_(sead::Heap* heap) { + return DragonRoot::init_(heap); +} + +void DragonElecRoot::enter_(ksys::act::ai::InlineParamPack* params) { + DragonRoot::enter_(params); +} + +void DragonElecRoot::leave_() { + DragonRoot::leave_(); +} + +void DragonElecRoot::loadParams_() { + DragonRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonElecRoot.h b/src/Game/AI/AI/aiDragonElecRoot.h new file mode 100644 index 00000000..1b158297 --- /dev/null +++ b/src/Game/AI/AI/aiDragonElecRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDragonRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonElecRoot : public DragonRoot { + SEAD_RTTI_OVERRIDE(DragonElecRoot, DragonRoot) +public: + explicit DragonElecRoot(const InitArg& arg); + ~DragonElecRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonFireRoot.cpp b/src/Game/AI/AI/aiDragonFireRoot.cpp new file mode 100644 index 00000000..dc918671 --- /dev/null +++ b/src/Game/AI/AI/aiDragonFireRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDragonFireRoot.h" + +namespace uking::ai { + +DragonFireRoot::DragonFireRoot(const InitArg& arg) : DragonRoot(arg) {} + +DragonFireRoot::~DragonFireRoot() = default; + +bool DragonFireRoot::init_(sead::Heap* heap) { + return DragonRoot::init_(heap); +} + +void DragonFireRoot::enter_(ksys::act::ai::InlineParamPack* params) { + DragonRoot::enter_(params); +} + +void DragonFireRoot::leave_() { + DragonRoot::leave_(); +} + +void DragonFireRoot::loadParams_() { + DragonRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonFireRoot.h b/src/Game/AI/AI/aiDragonFireRoot.h new file mode 100644 index 00000000..8bdb1cc6 --- /dev/null +++ b/src/Game/AI/AI/aiDragonFireRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDragonRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonFireRoot : public DragonRoot { + SEAD_RTTI_OVERRIDE(DragonFireRoot, DragonRoot) +public: + explicit DragonFireRoot(const InitArg& arg); + ~DragonFireRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonIceRoot.cpp b/src/Game/AI/AI/aiDragonIceRoot.cpp new file mode 100644 index 00000000..61b1a8ef --- /dev/null +++ b/src/Game/AI/AI/aiDragonIceRoot.cpp @@ -0,0 +1,49 @@ +#include "Game/AI/AI/aiDragonIceRoot.h" + +namespace uking::ai { + +DragonIceRoot::DragonIceRoot(const InitArg& arg) : DragonRoot(arg) {} + +DragonIceRoot::~DragonIceRoot() = default; + +bool DragonIceRoot::init_(sead::Heap* heap) { + return DragonRoot::init_(heap); +} + +void DragonIceRoot::enter_(ksys::act::ai::InlineParamPack* params) { + DragonRoot::enter_(params); +} + +void DragonIceRoot::leave_() { + DragonRoot::leave_(); +} + +void DragonIceRoot::loadParams_() { + DragonRoot::loadParams_(); + getStaticParam(&mGrudgeBulletMaxNum_s, "GrudgeBulletMaxNum"); + getStaticParam(&mGrudgeBulletMinInterval_s, "GrudgeBulletMinInterval"); + getStaticParam(&mGrudgeSmokeTime_s, "GrudgeSmokeTime"); + getStaticParam(&mGrudgeEventRail_pre1stSpeed_s, "GrudgeEventRail_pre1stSpeed"); + getStaticParam(&mGrudgeEventRail_1stSpeed_s, "GrudgeEventRail_1stSpeed"); + getStaticParam(&mGrudgeEventRail_pre2ndSpeed_s, "GrudgeEventRail_pre2ndSpeed"); + getStaticParam(&mGrudgeEventRail_2ndSpeed_s, "GrudgeEventRail_2ndSpeed"); + getStaticParam(&mGrudgeEventRail_pre3rdSpeed_s, "GrudgeEventRail_pre3rdSpeed"); + getStaticParam(&mGrudgeEventRail_3rdSpeed_s, "GrudgeEventRail_3rdSpeed"); + getStaticParam(&mGrudgeEventRail_preEndSpeed_s, "GrudgeEventRail_preEndSpeed"); + getStaticParam(&mGrudgeEventRail_EndSpeed_s, "GrudgeEventRail_EndSpeed"); + getStaticParam(&mGrudgeEventRail_ReturnSpeed_s, "GrudgeEventRail_ReturnSpeed"); + getStaticParam(&mGrudgeBulletRate_s, "GrudgeBulletRate"); + getStaticParam(&mGrudgeEventRail_Start_s, "GrudgeEventRail_Start"); + getStaticParam(&mGrudgeEventRail_pre1st_s, "GrudgeEventRail_pre1st"); + getStaticParam(&mGrudgeEventRail_1st_s, "GrudgeEventRail_1st"); + getStaticParam(&mGrudgeEventRail_pre2nd_s, "GrudgeEventRail_pre2nd"); + getStaticParam(&mGrudgeEventRail_2nd_s, "GrudgeEventRail_2nd"); + getStaticParam(&mGrudgeEventRail_pre3rd_s, "GrudgeEventRail_pre3rd"); + getStaticParam(&mGrudgeEventRail_3rd_s, "GrudgeEventRail_3rd"); + getStaticParam(&mGrudgeEventRail_preEnd_s, "GrudgeEventRail_preEnd"); + getStaticParam(&mGrudgeEventRail_End_s, "GrudgeEventRail_End"); + getStaticParam(&mGrudgeEventRail_ReturnToSky_s, "GrudgeEventRail_ReturnToSky"); + getStaticParam(&mGrudgeBulletActorName_s, "GrudgeBulletActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonIceRoot.h b/src/Game/AI/AI/aiDragonIceRoot.h new file mode 100644 index 00000000..56c148c8 --- /dev/null +++ b/src/Game/AI/AI/aiDragonIceRoot.h @@ -0,0 +1,70 @@ +#pragma once + +#include "Game/AI/AI/aiDragonRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonIceRoot : public DragonRoot { + SEAD_RTTI_OVERRIDE(DragonIceRoot, DragonRoot) +public: + explicit DragonIceRoot(const InitArg& arg); + ~DragonIceRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x270 + const int* mGrudgeBulletMaxNum_s{}; + // static_param at offset 0x278 + const int* mGrudgeBulletMinInterval_s{}; + // static_param at offset 0x280 + const int* mGrudgeSmokeTime_s{}; + // static_param at offset 0x288 + const float* mGrudgeEventRail_pre1stSpeed_s{}; + // static_param at offset 0x290 + const float* mGrudgeEventRail_1stSpeed_s{}; + // static_param at offset 0x298 + const float* mGrudgeEventRail_pre2ndSpeed_s{}; + // static_param at offset 0x2a0 + const float* mGrudgeEventRail_2ndSpeed_s{}; + // static_param at offset 0x2a8 + const float* mGrudgeEventRail_pre3rdSpeed_s{}; + // static_param at offset 0x2b0 + const float* mGrudgeEventRail_3rdSpeed_s{}; + // static_param at offset 0x2b8 + const float* mGrudgeEventRail_preEndSpeed_s{}; + // static_param at offset 0x2c0 + const float* mGrudgeEventRail_EndSpeed_s{}; + // static_param at offset 0x2c8 + const float* mGrudgeEventRail_ReturnSpeed_s{}; + // static_param at offset 0x2d0 + const float* mGrudgeBulletRate_s{}; + // static_param at offset 0x2d8 + sead::SafeString mGrudgeEventRail_Start_s{}; + // static_param at offset 0x2e8 + sead::SafeString mGrudgeEventRail_pre1st_s{}; + // static_param at offset 0x2f8 + sead::SafeString mGrudgeEventRail_1st_s{}; + // static_param at offset 0x308 + sead::SafeString mGrudgeEventRail_pre2nd_s{}; + // static_param at offset 0x318 + sead::SafeString mGrudgeEventRail_2nd_s{}; + // static_param at offset 0x328 + sead::SafeString mGrudgeEventRail_pre3rd_s{}; + // static_param at offset 0x338 + sead::SafeString mGrudgeEventRail_3rd_s{}; + // static_param at offset 0x348 + sead::SafeString mGrudgeEventRail_preEnd_s{}; + // static_param at offset 0x358 + sead::SafeString mGrudgeEventRail_End_s{}; + // static_param at offset 0x368 + sead::SafeString mGrudgeEventRail_ReturnToSky_s{}; + // static_param at offset 0x378 + sead::SafeString mGrudgeBulletActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonIceWaitRunel.cpp b/src/Game/AI/AI/aiDragonIceWaitRunel.cpp new file mode 100644 index 00000000..d090f102 --- /dev/null +++ b/src/Game/AI/AI/aiDragonIceWaitRunel.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDragonIceWaitRunel.h" + +namespace uking::ai { + +DragonIceWaitRunel::DragonIceWaitRunel(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DragonIceWaitRunel::~DragonIceWaitRunel() = default; + +bool DragonIceWaitRunel::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DragonIceWaitRunel::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DragonIceWaitRunel::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DragonIceWaitRunel::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonIceWaitRunel.h b/src/Game/AI/AI/aiDragonIceWaitRunel.h new file mode 100644 index 00000000..e5094bb9 --- /dev/null +++ b/src/Game/AI/AI/aiDragonIceWaitRunel.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonIceWaitRunel : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DragonIceWaitRunel, ksys::act::ai::Ai) +public: + explicit DragonIceWaitRunel(const InitArg& arg); + ~DragonIceWaitRunel() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonItemRoot.cpp b/src/Game/AI/AI/aiDragonItemRoot.cpp new file mode 100644 index 00000000..88d8de27 --- /dev/null +++ b/src/Game/AI/AI/aiDragonItemRoot.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiDragonItemRoot.h" + +namespace uking::ai { + +DragonItemRoot::DragonItemRoot(const InitArg& arg) : ItemRoot(arg) {} + +DragonItemRoot::~DragonItemRoot() = default; + +bool DragonItemRoot::init_(sead::Heap* heap) { + return ItemRoot::init_(heap); +} + +void DragonItemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ItemRoot::enter_(params); +} + +void DragonItemRoot::leave_() { + ItemRoot::leave_(); +} + +void DragonItemRoot::loadParams_() { + ItemRoot::loadParams_(); + getStaticParam(&mFlyStartTime_s, "FlyStartTime"); + getStaticParam(&mClearFlagTimeAtRunel_s, "ClearFlagTimeAtRunel"); + getStaticParam(&mGravity_s, "Gravity"); + getStaticParam(&mFlyStartHeightAtRunel_s, "FlyStartHeightAtRunel"); + getStaticParam(&mTailXLinkEventName_s, "TailXLinkEventName"); + getStaticParam(&mAuraXLinkEventName_s, "AuraXLinkEventName"); + getStaticParam(&mFlyPrepareXinkEventName_s, "FlyPrepareXinkEventName"); + getStaticParam(&mFlyStartXinkEventName_s, "FlyStartXinkEventName"); + getStaticParam(&mHitGroundXLinkEventName_s, "HitGroundXLinkEventName"); + getStaticParam(&mLightShaftXLinkEventName_s, "LightShaftXLinkEventName"); + getStaticParam(&mActivateXlinkEventName_s, "ActivateXlinkEventName"); + getStaticParam(&mDestroySwitchGameData_s, "DestroySwitchGameData"); + getStaticParam(&mClearFlagLabel_s, "ClearFlagLabel"); + getStaticParam(&mDropItemFlagLabel_s, "DropItemFlagLabel"); + getMapUnitParam(&mTargetPosition_m, "TargetPosition"); + getAITreeVariable(&mIsInitFromCarryBox_a, "IsInitFromCarryBox"); + getAITreeVariable(&mIsInsideObserverArea_a, "IsInsideObserverArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonItemRoot.h b/src/Game/AI/AI/aiDragonItemRoot.h new file mode 100644 index 00000000..cef97036 --- /dev/null +++ b/src/Game/AI/AI/aiDragonItemRoot.h @@ -0,0 +1,56 @@ +#pragma once + +#include "Game/AI/AI/aiItemRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonItemRoot : public ItemRoot { + SEAD_RTTI_OVERRIDE(DragonItemRoot, ItemRoot) +public: + explicit DragonItemRoot(const InitArg& arg); + ~DragonItemRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mFlyStartTime_s{}; + // static_param at offset 0x58 + const int* mClearFlagTimeAtRunel_s{}; + // static_param at offset 0x60 + const float* mGravity_s{}; + // static_param at offset 0x68 + const float* mFlyStartHeightAtRunel_s{}; + // static_param at offset 0x70 + sead::SafeString mTailXLinkEventName_s{}; + // static_param at offset 0x80 + sead::SafeString mAuraXLinkEventName_s{}; + // static_param at offset 0x90 + sead::SafeString mFlyPrepareXinkEventName_s{}; + // static_param at offset 0xa0 + sead::SafeString mFlyStartXinkEventName_s{}; + // static_param at offset 0xb0 + sead::SafeString mHitGroundXLinkEventName_s{}; + // static_param at offset 0xc0 + sead::SafeString mLightShaftXLinkEventName_s{}; + // static_param at offset 0xd0 + sead::SafeString mActivateXlinkEventName_s{}; + // static_param at offset 0xe0 + sead::SafeString mDestroySwitchGameData_s{}; + // static_param at offset 0xf0 + sead::SafeString mClearFlagLabel_s{}; + // static_param at offset 0x100 + sead::SafeString mDropItemFlagLabel_s{}; + // map_unit_param at offset 0x110 + const sead::Vector3f* mTargetPosition_m{}; + // aitree_variable at offset 0x118 + bool* mIsInitFromCarryBox_a{}; + // aitree_variable at offset 0x120 + bool* mIsInsideObserverArea_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonReturn.cpp b/src/Game/AI/AI/aiDragonReturn.cpp new file mode 100644 index 00000000..253708c6 --- /dev/null +++ b/src/Game/AI/AI/aiDragonReturn.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiDragonReturn.h" + +namespace uking::ai { + +DragonReturn::DragonReturn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DragonReturn::~DragonReturn() = default; + +bool DragonReturn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DragonReturn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DragonReturn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DragonReturn::loadParams_() { + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mRotateRate_s, "RotateRate"); + getStaticParam(&mChangeMoveHeight_s, "ChangeMoveHeight"); + getStaticParam(&mFinishHeight_s, "FinishHeight"); + getStaticParam(&mAngle_s, "Angle"); + getStaticParam(&mAvoidStartDistance_s, "AvoidStartDistance"); + getStaticParam(&mReturnStartFrame_s, "ReturnStartFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonReturn.h b/src/Game/AI/AI/aiDragonReturn.h new file mode 100644 index 00000000..e1e5f238 --- /dev/null +++ b/src/Game/AI/AI/aiDragonReturn.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonReturn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DragonReturn, ksys::act::ai::Ai) +public: + explicit DragonReturn(const InitArg& arg); + ~DragonReturn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSpeed_s{}; + // static_param at offset 0x40 + const float* mRotateRate_s{}; + // static_param at offset 0x48 + const float* mChangeMoveHeight_s{}; + // static_param at offset 0x50 + const float* mFinishHeight_s{}; + // static_param at offset 0x58 + const float* mAngle_s{}; + // static_param at offset 0x60 + const float* mAvoidStartDistance_s{}; + // static_param at offset 0x68 + const float* mReturnStartFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonRoot.cpp b/src/Game/AI/AI/aiDragonRoot.cpp new file mode 100644 index 00000000..ee80ab85 --- /dev/null +++ b/src/Game/AI/AI/aiDragonRoot.cpp @@ -0,0 +1,53 @@ +#include "Game/AI/AI/aiDragonRoot.h" + +namespace uking::ai { + +DragonRoot::DragonRoot(const InitArg& arg) : DragonRootBase(arg) {} + +DragonRoot::~DragonRoot() = default; + +bool DragonRoot::init_(sead::Heap* heap) { + return DragonRootBase::init_(heap); +} + +void DragonRoot::enter_(ksys::act::ai::InlineParamPack* params) { + DragonRootBase::enter_(params); +} + +void DragonRoot::leave_() { + DragonRootBase::leave_(); +} + +void DragonRoot::loadParams_() { + DragonRootBase::loadParams_(); + getStaticParam(&mChemicalBulletRate_s, "ChemicalBulletRate"); + getStaticParam(&mChemicalBulletNum_s, "ChemicalBulletNum"); + getStaticParam(&mUpdraftInterval_s, "UpdraftInterval"); + getStaticParam(&mReturnTime_s, "ReturnTime"); + getStaticParam(&mBodyHitDamage_s, "BodyHitDamage"); + getStaticParam(&mBodyHitPower_s, "BodyHitPower"); + getStaticParam(&mBodyHitImpact_s, "BodyHitImpact"); + getStaticParam(&mBodyHitShieldDamage_s, "BodyHitShieldDamage"); + getStaticParam(&mOnRailDistance_s, "OnRailDistance"); + getStaticParam(&mFarDistance_s, "FarDistance"); + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mChemicalBulletArea_s, "ChemicalBulletArea"); + getStaticParam(&mChemicalWindArea_s, "ChemicalWindArea"); + getStaticParam(&mChemicalWindPower_s, "ChemicalWindPower"); + getStaticParam(&mChemicalWindLimitHeight_s, "ChemicalWindLimitHeight"); + getStaticParam(&mUpdraftPower_s, "UpdraftPower"); + getStaticParam(&mUpdraftTime_s, "UpdraftTime"); + getStaticParam(&mUpdraftBoost_s, "UpdraftBoost"); + getStaticParam(&mInitBackRailDistance_s, "InitBackRailDistance"); + getStaticParam(&mIsEmitChemical_s, "IsEmitChemical"); + getStaticParam(&mCommonTableName_s, "CommonTableName"); + getStaticParam(&mTsunoTableName_s, "TsunoTableName"); + getStaticParam(&mTsumeTableName_s, "TsumeTableName"); + getStaticParam(&mKibaTableName_s, "KibaTableName"); + getStaticParam(&mChemicalBulletActor_s, "ChemicalBulletActor"); + getStaticParam(&mDefaultMaterialAnmName_s, "DefaultMaterialAnmName"); + getStaticParam(&mHornAnmName_s, "HornAnmName"); + getAITreeVariable(&mCreateRailName_a, "CreateRailName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonRoot.h b/src/Game/AI/AI/aiDragonRoot.h new file mode 100644 index 00000000..78098e44 --- /dev/null +++ b/src/Game/AI/AI/aiDragonRoot.h @@ -0,0 +1,78 @@ +#pragma once + +#include "Game/AI/AI/aiDragonRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonRoot : public DragonRootBase { + SEAD_RTTI_OVERRIDE(DragonRoot, DragonRootBase) +public: + explicit DragonRoot(const InitArg& arg); + ~DragonRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc0 + const int* mChemicalBulletRate_s{}; + // static_param at offset 0xc8 + const int* mChemicalBulletNum_s{}; + // static_param at offset 0xd0 + const int* mUpdraftInterval_s{}; + // static_param at offset 0xd8 + const int* mReturnTime_s{}; + // static_param at offset 0xe0 + const int* mBodyHitDamage_s{}; + // static_param at offset 0xe8 + const int* mBodyHitPower_s{}; + // static_param at offset 0xf0 + const int* mBodyHitImpact_s{}; + // static_param at offset 0xf8 + const int* mBodyHitShieldDamage_s{}; + // static_param at offset 0x100 + const float* mOnRailDistance_s{}; + // static_param at offset 0x108 + const float* mFarDistance_s{}; + // static_param at offset 0x110 + const float* mSpeed_s{}; + // static_param at offset 0x118 + const float* mChemicalBulletArea_s{}; + // static_param at offset 0x120 + const float* mChemicalWindArea_s{}; + // static_param at offset 0x128 + const float* mChemicalWindPower_s{}; + // static_param at offset 0x130 + const float* mChemicalWindLimitHeight_s{}; + // static_param at offset 0x138 + const float* mUpdraftPower_s{}; + // static_param at offset 0x140 + const float* mUpdraftTime_s{}; + // static_param at offset 0x148 + const float* mUpdraftBoost_s{}; + // static_param at offset 0x150 + const float* mInitBackRailDistance_s{}; + // static_param at offset 0x158 + const bool* mIsEmitChemical_s{}; + // static_param at offset 0x160 + sead::SafeString mCommonTableName_s{}; + // static_param at offset 0x170 + sead::SafeString mTsunoTableName_s{}; + // static_param at offset 0x180 + sead::SafeString mTsumeTableName_s{}; + // static_param at offset 0x190 + sead::SafeString mKibaTableName_s{}; + // static_param at offset 0x1a0 + sead::SafeString mChemicalBulletActor_s{}; + // static_param at offset 0x1b0 + sead::SafeString mDefaultMaterialAnmName_s{}; + // static_param at offset 0x1c0 + sead::SafeString mHornAnmName_s{}; + // aitree_variable at offset 0x1d0 + sead::SafeString* mCreateRailName_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonRootBase.cpp b/src/Game/AI/AI/aiDragonRootBase.cpp new file mode 100644 index 00000000..ca465e3e --- /dev/null +++ b/src/Game/AI/AI/aiDragonRootBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDragonRootBase.h" + +namespace uking::ai { + +DragonRootBase::DragonRootBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DragonRootBase::~DragonRootBase() = default; + +bool DragonRootBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DragonRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DragonRootBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DragonRootBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonRootBase.h b/src/Game/AI/AI/aiDragonRootBase.h new file mode 100644 index 00000000..5070e38e --- /dev/null +++ b/src/Game/AI/AI/aiDragonRootBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonRootBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DragonRootBase, ksys::act::ai::Ai) +public: + explicit DragonRootBase(const InitArg& arg); + ~DragonRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonTurn.cpp b/src/Game/AI/AI/aiDragonTurn.cpp new file mode 100644 index 00000000..303c0444 --- /dev/null +++ b/src/Game/AI/AI/aiDragonTurn.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiDragonTurn.h" + +namespace uking::ai { + +DragonTurn::DragonTurn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DragonTurn::~DragonTurn() = default; + +bool DragonTurn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DragonTurn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DragonTurn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DragonTurn::loadParams_() { + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mAvoidStartDistance_s, "AvoidStartDistance"); + getDynamicParam(&mTargetVec_d, "TargetVec"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDragonTurn.h b/src/Game/AI/AI/aiDragonTurn.h new file mode 100644 index 00000000..b8769567 --- /dev/null +++ b/src/Game/AI/AI/aiDragonTurn.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DragonTurn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DragonTurn, ksys::act::ai::Ai) +public: + explicit DragonTurn(const InitArg& arg); + ~DragonTurn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSpeed_s{}; + // static_param at offset 0x40 + const float* mAvoidStartDistance_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetVec_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDrawnSwordBowSelect.cpp b/src/Game/AI/AI/aiDrawnSwordBowSelect.cpp new file mode 100644 index 00000000..277a4cab --- /dev/null +++ b/src/Game/AI/AI/aiDrawnSwordBowSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDrawnSwordBowSelect.h" + +namespace uking::ai { + +DrawnSwordBowSelect::DrawnSwordBowSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DrawnSwordBowSelect::~DrawnSwordBowSelect() = default; + +bool DrawnSwordBowSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DrawnSwordBowSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DrawnSwordBowSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DrawnSwordBowSelect::loadParams_() { + getStaticParam(&mCloseWeaponIdx_s, "CloseWeaponIdx"); + getStaticParam(&mBowWeaponIdx_s, "BowWeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDrawnSwordBowSelect.h b/src/Game/AI/AI/aiDrawnSwordBowSelect.h new file mode 100644 index 00000000..073f333f --- /dev/null +++ b/src/Game/AI/AI/aiDrawnSwordBowSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DrawnSwordBowSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DrawnSwordBowSelect, ksys::act::ai::Ai) +public: + explicit DrawnSwordBowSelect(const InitArg& arg); + ~DrawnSwordBowSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCloseWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mBowWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDrawnWeaponSelector.cpp b/src/Game/AI/AI/aiDrawnWeaponSelector.cpp new file mode 100644 index 00000000..c876e48d --- /dev/null +++ b/src/Game/AI/AI/aiDrawnWeaponSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDrawnWeaponSelector.h" + +namespace uking::ai { + +DrawnWeaponSelector::DrawnWeaponSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DrawnWeaponSelector::~DrawnWeaponSelector() = default; + +bool DrawnWeaponSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DrawnWeaponSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DrawnWeaponSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DrawnWeaponSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDrawnWeaponSelector.h b/src/Game/AI/AI/aiDrawnWeaponSelector.h new file mode 100644 index 00000000..de2de078 --- /dev/null +++ b/src/Game/AI/AI/aiDrawnWeaponSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DrawnWeaponSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DrawnWeaponSelector, ksys::act::ai::Ai) +public: + explicit DrawnWeaponSelector(const InitArg& arg); + ~DrawnWeaponSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDuckRoot.cpp b/src/Game/AI/AI/aiDuckRoot.cpp new file mode 100644 index 00000000..0938adcb --- /dev/null +++ b/src/Game/AI/AI/aiDuckRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDuckRoot.h" + +namespace uking::ai { + +DuckRoot::DuckRoot(const InitArg& arg) : PreyRoot(arg) {} + +DuckRoot::~DuckRoot() = default; + +bool DuckRoot::init_(sead::Heap* heap) { + return PreyRoot::init_(heap); +} + +void DuckRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PreyRoot::enter_(params); +} + +void DuckRoot::leave_() { + PreyRoot::leave_(); +} + +void DuckRoot::loadParams_() { + PreyRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDuckRoot.h b/src/Game/AI/AI/aiDuckRoot.h new file mode 100644 index 00000000..54baa12d --- /dev/null +++ b/src/Game/AI/AI/aiDuckRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPreyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DuckRoot : public PreyRoot { + SEAD_RTTI_OVERRIDE(DuckRoot, PreyRoot) +public: + explicit DuckRoot(const InitArg& arg); + ~DuckRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.cpp b/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.cpp new file mode 100644 index 00000000..28632961 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiDungeonCannonBallAutoDelete.h" + +namespace uking::ai { + +DungeonCannonBallAutoDelete::DungeonCannonBallAutoDelete(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +DungeonCannonBallAutoDelete::~DungeonCannonBallAutoDelete() = default; + +bool DungeonCannonBallAutoDelete::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonCannonBallAutoDelete::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonCannonBallAutoDelete::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonCannonBallAutoDelete::loadParams_() { + getStaticParam(&mTriggerVelocityKeepTime_s, "TriggerVelocityKeepTime"); + getStaticParam(&mTriggerVelocity_s, "TriggerVelocity"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.h b/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.h new file mode 100644 index 00000000..8264b142 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonCannonBallAutoDelete.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonCannonBallAutoDelete : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonCannonBallAutoDelete, ksys::act::ai::Ai) +public: + explicit DungeonCannonBallAutoDelete(const InitArg& arg); + ~DungeonCannonBallAutoDelete() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTriggerVelocityKeepTime_s{}; + // static_param at offset 0x40 + const float* mTriggerVelocity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonEntranceRoot.cpp b/src/Game/AI/AI/aiDungeonEntranceRoot.cpp new file mode 100644 index 00000000..cf9c1ba6 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonEntranceRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDungeonEntranceRoot.h" + +namespace uking::ai { + +DungeonEntranceRoot::DungeonEntranceRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonEntranceRoot::~DungeonEntranceRoot() = default; + +bool DungeonEntranceRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonEntranceRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonEntranceRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonEntranceRoot::loadParams_() { + getStaticParam(&mIsCheckClear_s, "IsCheckClear"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonEntranceRoot.h b/src/Game/AI/AI/aiDungeonEntranceRoot.h new file mode 100644 index 00000000..9b1d8dee --- /dev/null +++ b/src/Game/AI/AI/aiDungeonEntranceRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonEntranceRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonEntranceRoot, ksys::act::ai::Ai) +public: + explicit DungeonEntranceRoot(const InitArg& arg); + ~DungeonEntranceRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckClear_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonMoveTag.cpp b/src/Game/AI/AI/aiDungeonMoveTag.cpp new file mode 100644 index 00000000..a750a75a --- /dev/null +++ b/src/Game/AI/AI/aiDungeonMoveTag.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiDungeonMoveTag.h" + +namespace uking::ai { + +DungeonMoveTag::DungeonMoveTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool DungeonMoveTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonMoveTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonMoveTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonMoveTag::loadParams_() { + getMapUnitParam(&mInitDgnMoveDis_m, "InitDgnMoveDis"); + getMapUnitParam(&mMoveDis_m, "MoveDis"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonMoveTag.h b/src/Game/AI/AI/aiDungeonMoveTag.h new file mode 100644 index 00000000..e0279a8a --- /dev/null +++ b/src/Game/AI/AI/aiDungeonMoveTag.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonMoveTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonMoveTag, ksys::act::ai::Ai) +public: + explicit DungeonMoveTag(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mInitDgnMoveDis_m{}; + // map_unit_param at offset 0x40 + const float* mMoveDis_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonMoveTagCont.cpp b/src/Game/AI/AI/aiDungeonMoveTagCont.cpp new file mode 100644 index 00000000..96d4aa8c --- /dev/null +++ b/src/Game/AI/AI/aiDungeonMoveTagCont.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiDungeonMoveTagCont.h" + +namespace uking::ai { + +DungeonMoveTagCont::DungeonMoveTagCont(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonMoveTagCont::~DungeonMoveTagCont() = default; + +bool DungeonMoveTagCont::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonMoveTagCont::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonMoveTagCont::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonMoveTagCont::loadParams_() { + getMapUnitParam(&mMoveDis_m, "MoveDis"); + getMapUnitParam(&mReturnDisFromCurrentPos_m, "ReturnDisFromCurrentPos"); + getMapUnitParam(&mReturnSpeedFromCurrentPos_m, "ReturnSpeedFromCurrentPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonMoveTagCont.h b/src/Game/AI/AI/aiDungeonMoveTagCont.h new file mode 100644 index 00000000..2495fb68 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonMoveTagCont.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonMoveTagCont : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonMoveTagCont, ksys::act::ai::Ai) +public: + explicit DungeonMoveTagCont(const InitArg& arg); + ~DungeonMoveTagCont() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mMoveDis_m{}; + // map_unit_param at offset 0x40 + const float* mReturnDisFromCurrentPos_m{}; + // map_unit_param at offset 0x48 + const float* mReturnSpeedFromCurrentPos_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRemainsFire.cpp b/src/Game/AI/AI/aiDungeonRemainsFire.cpp new file mode 100644 index 00000000..e89f8bf7 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRemainsFire.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDungeonRemainsFire.h" + +namespace uking::ai { + +DungeonRemainsFire::DungeonRemainsFire(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonRemainsFire::~DungeonRemainsFire() = default; + +bool DungeonRemainsFire::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRemainsFire::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRemainsFire::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRemainsFire::loadParams_() { + getStaticParam(&mRailName_s, "RailName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRemainsFire.h b/src/Game/AI/AI/aiDungeonRemainsFire.h new file mode 100644 index 00000000..75b19b8b --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRemainsFire.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRemainsFire : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRemainsFire, ksys::act::ai::Ai) +public: + explicit DungeonRemainsFire(const InitArg& arg); + ~DungeonRemainsFire() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mRailName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonResetPosTag.cpp b/src/Game/AI/AI/aiDungeonResetPosTag.cpp new file mode 100644 index 00000000..15230f42 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonResetPosTag.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDungeonResetPosTag.h" + +namespace uking::ai { + +DungeonResetPosTag::DungeonResetPosTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonResetPosTag::~DungeonResetPosTag() = default; + +bool DungeonResetPosTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonResetPosTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonResetPosTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonResetPosTag::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonResetPosTag.h b/src/Game/AI/AI/aiDungeonResetPosTag.h new file mode 100644 index 00000000..95331d1b --- /dev/null +++ b/src/Game/AI/AI/aiDungeonResetPosTag.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonResetPosTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonResetPosTag, ksys::act::ai::Ai) +public: + explicit DungeonResetPosTag(const InitArg& arg); + ~DungeonResetPosTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag.cpp b/src/Game/AI/AI/aiDungeonRotateTag.cpp new file mode 100644 index 00000000..8fd49b33 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiDungeonRotateTag.h" + +namespace uking::ai { + +DungeonRotateTag::DungeonRotateTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool DungeonRotateTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTag::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag.h b/src/Game/AI/AI/aiDungeonRotateTag.h new file mode 100644 index 00000000..46ffe2be --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTag, ksys::act::ai::Ai) +public: + explicit DungeonRotateTag(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag3D.cpp b/src/Game/AI/AI/aiDungeonRotateTag3D.cpp new file mode 100644 index 00000000..e55cb37a --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag3D.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiDungeonRotateTag3D.h" + +namespace uking::ai { + +DungeonRotateTag3D::DungeonRotateTag3D(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonRotateTag3D::~DungeonRotateTag3D() = default; + +bool DungeonRotateTag3D::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTag3D::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTag3D::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTag3D::loadParams_() { + getStaticParam(&mTargetRad_s, "TargetRad"); + getMapUnitParam(&mCameraPattern_m, "CameraPattern"); + getMapUnitParam(&mRemainsPartType_m, "RemainsPartType"); + getMapUnitParam(&mTiltAngularSpeed_m, "TiltAngularSpeed"); + getMapUnitParam(&mCameraPower_m, "CameraPower"); + getMapUnitParam(&mCameraRange_m, "CameraRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag3D.h b/src/Game/AI/AI/aiDungeonRotateTag3D.h new file mode 100644 index 00000000..851e4992 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag3D.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag3D : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTag3D, ksys::act::ai::Ai) +public: + explicit DungeonRotateTag3D(const InitArg& arg); + ~DungeonRotateTag3D() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTargetRad_s{}; + // map_unit_param at offset 0x40 + const int* mCameraPattern_m{}; + // map_unit_param at offset 0x48 + const int* mRemainsPartType_m{}; + // map_unit_param at offset 0x50 + const float* mTiltAngularSpeed_m{}; + // map_unit_param at offset 0x58 + const float* mCameraPower_m{}; + // map_unit_param at offset 0x60 + const float* mCameraRange_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.cpp b/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.cpp new file mode 100644 index 00000000..c63f3d44 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDungeonRotateTag4ElecApp.h" + +namespace uking::ai { + +DungeonRotateTag4ElecApp::DungeonRotateTag4ElecApp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonRotateTag4ElecApp::~DungeonRotateTag4ElecApp() = default; + +bool DungeonRotateTag4ElecApp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTag4ElecApp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTag4ElecApp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTag4ElecApp::loadParams_() { + getMapUnitParam(&mCtrlDgnRemainsElectricBodyPart_m, "CtrlDgnRemainsElectricBodyPart"); + getMapUnitParam(&mInitDgnRotRad_m, "InitDgnRotRad"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.h b/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.h new file mode 100644 index 00000000..513524e2 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4ElecApp.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag4ElecApp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTag4ElecApp, ksys::act::ai::Ai) +public: + explicit DungeonRotateTag4ElecApp(const InitArg& arg); + ~DungeonRotateTag4ElecApp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mCtrlDgnRemainsElectricBodyPart_m{}; + // map_unit_param at offset 0x40 + const float* mInitDgnRotRad_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4FireApp.cpp b/src/Game/AI/AI/aiDungeonRotateTag4FireApp.cpp new file mode 100644 index 00000000..22b21e6e --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4FireApp.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDungeonRotateTag4FireApp.h" + +namespace uking::ai { + +DungeonRotateTag4FireApp::DungeonRotateTag4FireApp(const InitArg& arg) + : WholeDungeonRotateTag(arg) {} + +DungeonRotateTag4FireApp::~DungeonRotateTag4FireApp() = default; + +bool DungeonRotateTag4FireApp::init_(sead::Heap* heap) { + return WholeDungeonRotateTag::init_(heap); +} + +void DungeonRotateTag4FireApp::enter_(ksys::act::ai::InlineParamPack* params) { + WholeDungeonRotateTag::enter_(params); +} + +void DungeonRotateTag4FireApp::leave_() { + WholeDungeonRotateTag::leave_(); +} + +void DungeonRotateTag4FireApp::loadParams_() { + WholeDungeonRotateTag::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4FireApp.h b/src/Game/AI/AI/aiDungeonRotateTag4FireApp.h new file mode 100644 index 00000000..7a888b98 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4FireApp.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWholeDungeonRotateTag.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag4FireApp : public WholeDungeonRotateTag { + SEAD_RTTI_OVERRIDE(DungeonRotateTag4FireApp, WholeDungeonRotateTag) +public: + explicit DungeonRotateTag4FireApp(const InitArg& arg); + ~DungeonRotateTag4FireApp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.cpp b/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.cpp new file mode 100644 index 00000000..7d36a796 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiDungeonRotateTag4WaterApp.h" + +namespace uking::ai { + +DungeonRotateTag4WaterApp::DungeonRotateTag4WaterApp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonRotateTag4WaterApp::~DungeonRotateTag4WaterApp() = default; + +bool DungeonRotateTag4WaterApp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTag4WaterApp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTag4WaterApp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTag4WaterApp::loadParams_() { + getStaticParam(&mLv0_s, "Lv0"); + getStaticParam(&mLv1_s, "Lv1"); + getStaticParam(&mLv2_s, "Lv2"); + getStaticParam(&mLv3_s, "Lv3"); + getStaticParam(&mLv4_s, "Lv4"); + getStaticParam(&mLv5_s, "Lv5"); + getStaticParam(&mLv6_s, "Lv6"); + getStaticParam(&mLv7_s, "Lv7"); + getStaticParam(&mLv8_s, "Lv8"); + getStaticParam(&mLv9_s, "Lv9"); + getAITreeVariable(&mTargetRad_a, "TargetRad"); + getAITreeVariable(&mTargetRadMax_a, "TargetRadMax"); + getAITreeVariable(&mTargetRadMin_a, "TargetRadMin"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.h b/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.h new file mode 100644 index 00000000..4f7b83c4 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4WaterApp.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag4WaterApp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTag4WaterApp, ksys::act::ai::Ai) +public: + explicit DungeonRotateTag4WaterApp(const InitArg& arg); + ~DungeonRotateTag4WaterApp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLv0_s{}; + // static_param at offset 0x40 + const float* mLv1_s{}; + // static_param at offset 0x48 + const float* mLv2_s{}; + // static_param at offset 0x50 + const float* mLv3_s{}; + // static_param at offset 0x58 + const float* mLv4_s{}; + // static_param at offset 0x60 + const float* mLv5_s{}; + // static_param at offset 0x68 + const float* mLv6_s{}; + // static_param at offset 0x70 + const float* mLv7_s{}; + // static_param at offset 0x78 + const float* mLv8_s{}; + // static_param at offset 0x80 + const float* mLv9_s{}; + // aitree_variable at offset 0x88 + float* mTargetRad_a{}; + // aitree_variable at offset 0x90 + float* mTargetRadMax_a{}; + // aitree_variable at offset 0x98 + float* mTargetRadMin_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4WindApp.cpp b/src/Game/AI/AI/aiDungeonRotateTag4WindApp.cpp new file mode 100644 index 00000000..ced76df8 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4WindApp.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDungeonRotateTag4WindApp.h" + +namespace uking::ai { + +DungeonRotateTag4WindApp::DungeonRotateTag4WindApp(const InitArg& arg) + : WholeDungeonRotateTag(arg) {} + +DungeonRotateTag4WindApp::~DungeonRotateTag4WindApp() = default; + +bool DungeonRotateTag4WindApp::init_(sead::Heap* heap) { + return WholeDungeonRotateTag::init_(heap); +} + +void DungeonRotateTag4WindApp::enter_(ksys::act::ai::InlineParamPack* params) { + WholeDungeonRotateTag::enter_(params); +} + +void DungeonRotateTag4WindApp::leave_() { + WholeDungeonRotateTag::leave_(); +} + +void DungeonRotateTag4WindApp::loadParams_() { + WholeDungeonRotateTag::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTag4WindApp.h b/src/Game/AI/AI/aiDungeonRotateTag4WindApp.h new file mode 100644 index 00000000..43ff3adb --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTag4WindApp.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWholeDungeonRotateTag.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTag4WindApp : public WholeDungeonRotateTag { + SEAD_RTTI_OVERRIDE(DungeonRotateTag4WindApp, WholeDungeonRotateTag) +public: + explicit DungeonRotateTag4WindApp(const InitArg& arg); + ~DungeonRotateTag4WindApp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagCont.cpp b/src/Game/AI/AI/aiDungeonRotateTagCont.cpp new file mode 100644 index 00000000..9915d42f --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagCont.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiDungeonRotateTagCont.h" + +namespace uking::ai { + +DungeonRotateTagCont::DungeonRotateTagCont(const InitArg& arg) : DungeonRotateTagInOrder(arg) {} + +DungeonRotateTagCont::~DungeonRotateTagCont() = default; + +bool DungeonRotateTagCont::init_(sead::Heap* heap) { + return DungeonRotateTagInOrder::init_(heap); +} + +void DungeonRotateTagCont::enter_(ksys::act::ai::InlineParamPack* params) { + DungeonRotateTagInOrder::enter_(params); +} + +void DungeonRotateTagCont::leave_() { + DungeonRotateTagInOrder::leave_(); +} + +void DungeonRotateTagCont::loadParams_() { + DungeonRotateTagInOrder::loadParams_(); + getAITreeVariable(&mIsContinueRotateOrMove_a, "IsContinueRotateOrMove"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagCont.h b/src/Game/AI/AI/aiDungeonRotateTagCont.h new file mode 100644 index 00000000..f38a8fa7 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagCont.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiDungeonRotateTagInOrder.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTagCont : public DungeonRotateTagInOrder { + SEAD_RTTI_OVERRIDE(DungeonRotateTagCont, DungeonRotateTagInOrder) +public: + explicit DungeonRotateTagCont(const InitArg& arg); + ~DungeonRotateTagCont() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x48 + bool* mIsContinueRotateOrMove_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagInOrder.cpp b/src/Game/AI/AI/aiDungeonRotateTagInOrder.cpp new file mode 100644 index 00000000..add5ac2a --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagInOrder.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiDungeonRotateTagInOrder.h" + +namespace uking::ai { + +DungeonRotateTagInOrder::DungeonRotateTagInOrder(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool DungeonRotateTagInOrder::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTagInOrder::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTagInOrder::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTagInOrder::loadParams_() { + getStaticParam(&mRotateTurnOn_s, "RotateTurnOn"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagInOrder.h b/src/Game/AI/AI/aiDungeonRotateTagInOrder.h new file mode 100644 index 00000000..5c7ca016 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagInOrder.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTagInOrder : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTagInOrder, ksys::act::ai::Ai) +public: + explicit DungeonRotateTagInOrder(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // static_param at offset 0x40 + const bool* mRotateTurnOn_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagShuttle.cpp b/src/Game/AI/AI/aiDungeonRotateTagShuttle.cpp new file mode 100644 index 00000000..d3a2669a --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagShuttle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiDungeonRotateTagShuttle.h" + +namespace uking::ai { + +DungeonRotateTagShuttle::DungeonRotateTagShuttle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +DungeonRotateTagShuttle::~DungeonRotateTagShuttle() = default; + +bool DungeonRotateTagShuttle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTagShuttle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTagShuttle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTagShuttle::loadParams_() { + getMapUnitParam(&mInitDgnRotRad_m, "InitDgnRotRad"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagShuttle.h b/src/Game/AI/AI/aiDungeonRotateTagShuttle.h new file mode 100644 index 00000000..df7f6dce --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagShuttle.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTagShuttle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTagShuttle, ksys::act::ai::Ai) +public: + explicit DungeonRotateTagShuttle(const InitArg& arg); + ~DungeonRotateTagShuttle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mInitDgnRotRad_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.cpp b/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.cpp new file mode 100644 index 00000000..2f616784 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiDungeonRotateTagWaterChemical.h" + +namespace uking::ai { + +DungeonRotateTagWaterChemical::DungeonRotateTagWaterChemical(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +DungeonRotateTagWaterChemical::~DungeonRotateTagWaterChemical() = default; + +bool DungeonRotateTagWaterChemical::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void DungeonRotateTagWaterChemical::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void DungeonRotateTagWaterChemical::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void DungeonRotateTagWaterChemical::loadParams_() { + getStaticParam(&mSlowDownRotRadAccel_s, "SlowDownRotRadAccel"); + getStaticParam(&mSlowDownTimer_s, "SlowDownTimer"); + getStaticParam(&mRotRadAccel_s, "RotRadAccel"); + getStaticParam(&mReverseDotTh_s, "ReverseDotTh"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.h b/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.h new file mode 100644 index 00000000..ca6170a7 --- /dev/null +++ b/src/Game/AI/AI/aiDungeonRotateTagWaterChemical.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DungeonRotateTagWaterChemical : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(DungeonRotateTagWaterChemical, ksys::act::ai::Ai) +public: + explicit DungeonRotateTagWaterChemical(const InitArg& arg); + ~DungeonRotateTagWaterChemical() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSlowDownRotRadAccel_s{}; + // static_param at offset 0x40 + const float* mSlowDownTimer_s{}; + // static_param at offset 0x48 + const float* mRotRadAccel_s{}; + // static_param at offset 0x50 + const float* mReverseDotTh_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.cpp b/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.cpp new file mode 100644 index 00000000..5e8798b7 --- /dev/null +++ b/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h" + +namespace uking::ai { + +DynTargetStoneShootEnemyBattle::DynTargetStoneShootEnemyBattle(const InitArg& arg) + : StoneShootEnemyBattle(arg) {} + +DynTargetStoneShootEnemyBattle::~DynTargetStoneShootEnemyBattle() = default; + +bool DynTargetStoneShootEnemyBattle::init_(sead::Heap* heap) { + return StoneShootEnemyBattle::init_(heap); +} + +void DynTargetStoneShootEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + StoneShootEnemyBattle::enter_(params); +} + +void DynTargetStoneShootEnemyBattle::leave_() { + StoneShootEnemyBattle::leave_(); +} + +void DynTargetStoneShootEnemyBattle::loadParams_() { + StoneShootEnemyBattle::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h b/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h new file mode 100644 index 00000000..7099806c --- /dev/null +++ b/src/Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiStoneShootEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DynTargetStoneShootEnemyBattle : public StoneShootEnemyBattle { + SEAD_RTTI_OVERRIDE(DynTargetStoneShootEnemyBattle, StoneShootEnemyBattle) +public: + explicit DynTargetStoneShootEnemyBattle(const InitArg& arg); + ~DynTargetStoneShootEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xb0 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.cpp b/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.cpp new file mode 100644 index 00000000..15129318 --- /dev/null +++ b/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h" + +namespace uking::ai { + +DynTgBreathAttackEnemyBattle::DynTgBreathAttackEnemyBattle(const InitArg& arg) + : BreathAttackEnemyBattle(arg) {} + +DynTgBreathAttackEnemyBattle::~DynTgBreathAttackEnemyBattle() = default; + +bool DynTgBreathAttackEnemyBattle::init_(sead::Heap* heap) { + return BreathAttackEnemyBattle::init_(heap); +} + +void DynTgBreathAttackEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + BreathAttackEnemyBattle::enter_(params); +} + +void DynTgBreathAttackEnemyBattle::leave_() { + BreathAttackEnemyBattle::leave_(); +} + +void DynTgBreathAttackEnemyBattle::loadParams_() { + BreathAttackEnemyBattle::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h b/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h new file mode 100644 index 00000000..ceea1c36 --- /dev/null +++ b/src/Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiBreathAttackEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class DynTgBreathAttackEnemyBattle : public BreathAttackEnemyBattle { + SEAD_RTTI_OVERRIDE(DynTgBreathAttackEnemyBattle, BreathAttackEnemyBattle) +public: + explicit DynTgBreathAttackEnemyBattle(const InitArg& arg); + ~DynTgBreathAttackEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xb0 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEarthReleaseAttack.cpp b/src/Game/AI/AI/aiEarthReleaseAttack.cpp new file mode 100644 index 00000000..fee48685 --- /dev/null +++ b/src/Game/AI/AI/aiEarthReleaseAttack.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiEarthReleaseAttack.h" + +namespace uking::ai { + +EarthReleaseAttack::EarthReleaseAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EarthReleaseAttack::~EarthReleaseAttack() = default; + +bool EarthReleaseAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EarthReleaseAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EarthReleaseAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EarthReleaseAttack::loadParams_() { + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mEnlargeTime_s, "EnlargeTime"); + getStaticParam(&mRange_s, "Range"); + getStaticParam(&mScale_s, "Scale"); + getStaticParam(&mUseAfterAction_s, "UseAfterAction"); + getStaticParam(&mEarthReleaseActorName_s, "EarthReleaseActorName"); + getStaticParam(&mEarthReleasePartsName_s, "EarthReleasePartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEarthReleaseAttack.h b/src/Game/AI/AI/aiEarthReleaseAttack.h new file mode 100644 index 00000000..09f204c1 --- /dev/null +++ b/src/Game/AI/AI/aiEarthReleaseAttack.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EarthReleaseAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EarthReleaseAttack, ksys::act::ai::Ai) +public: + explicit EarthReleaseAttack(const InitArg& arg); + ~EarthReleaseAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackPower_s{}; + // static_param at offset 0x40 + const float* mEnlargeTime_s{}; + // static_param at offset 0x48 + const float* mRange_s{}; + // static_param at offset 0x50 + const float* mScale_s{}; + // static_param at offset 0x58 + const bool* mUseAfterAction_s{}; + // static_param at offset 0x60 + sead::SafeString mEarthReleaseActorName_s{}; + // static_param at offset 0x70 + sead::SafeString mEarthReleasePartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiElectricBall.cpp b/src/Game/AI/AI/aiElectricBall.cpp new file mode 100644 index 00000000..b0850958 --- /dev/null +++ b/src/Game/AI/AI/aiElectricBall.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiElectricBall.h" + +namespace uking::ai { + +ElectricBall::ElectricBall(const InitArg& arg) : SimpleLiftable(arg) {} + +bool ElectricBall::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void ElectricBall::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void ElectricBall::leave_() { + SimpleLiftable::leave_(); +} + +void ElectricBall::loadParams_() { + getStaticParam(&mTargetVol_s, "TargetVol"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiElectricBall.h b/src/Game/AI/AI/aiElectricBall.h new file mode 100644 index 00000000..05c0e62f --- /dev/null +++ b/src/Game/AI/AI/aiElectricBall.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ElectricBall : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(ElectricBall, SimpleLiftable) +public: + explicit ElectricBall(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const float* mTargetVol_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiElectricCable.cpp b/src/Game/AI/AI/aiElectricCable.cpp new file mode 100644 index 00000000..e9205603 --- /dev/null +++ b/src/Game/AI/AI/aiElectricCable.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiElectricCable.h" + +namespace uking::ai { + +ElectricCable::ElectricCable(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ElectricCable::~ElectricCable() = default; + +bool ElectricCable::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ElectricCable::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ElectricCable::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ElectricCable::loadParams_() { + getMapUnitParam(&mIsDisplayOnUI_m, "IsDisplayOnUI"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiElectricCable.h b/src/Game/AI/AI/aiElectricCable.h new file mode 100644 index 00000000..77f7ab0a --- /dev/null +++ b/src/Game/AI/AI/aiElectricCable.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ElectricCable : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ElectricCable, ksys::act::ai::Ai) +public: + explicit ElectricCable(const InitArg& arg); + ~ElectricCable() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsDisplayOnUI_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyAngry.cpp b/src/Game/AI/AI/aiEnemyAngry.cpp new file mode 100644 index 00000000..d6226186 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyAngry.cpp @@ -0,0 +1,16 @@ +#include "Game/AI/AI/aiEnemyAngry.h" + +namespace uking::ai { + +EnemyAngry::EnemyAngry(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyAngry::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyAngry::loadParams_() { + getStaticParam(&mTurnAng_s, "TurnAng"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyAngry.h b/src/Game/AI/AI/aiEnemyAngry.h new file mode 100644 index 00000000..53c44362 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyAngry.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyAngry : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyAngry, ksys::act::ai::Ai) +public: + explicit EnemyAngry(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnAng_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyAttackAndAway.cpp b/src/Game/AI/AI/aiEnemyAttackAndAway.cpp new file mode 100644 index 00000000..55b92666 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyAttackAndAway.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiEnemyAttackAndAway.h" + +namespace uking::ai { + +EnemyAttackAndAway::EnemyAttackAndAway(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyAttackAndAway::~EnemyAttackAndAway() = default; + +void EnemyAttackAndAway::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyAttackAndAway::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAwayStartDist_s, "AwayStartDist"); + getStaticParam(&mCheckCliffDist_s, "CheckCliffDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyAttackAndAway.h b/src/Game/AI/AI/aiEnemyAttackAndAway.h new file mode 100644 index 00000000..3ce7f3dd --- /dev/null +++ b/src/Game/AI/AI/aiEnemyAttackAndAway.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyAttackAndAway : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyAttackAndAway, ksys::act::ai::Ai) +public: + explicit EnemyAttackAndAway(const InitArg& arg); + ~EnemyAttackAndAway() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mAwayStartDist_s{}; + // static_param at offset 0x48 + const float* mCheckCliffDist_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBaseArrowAttack.cpp b/src/Game/AI/AI/aiEnemyBaseArrowAttack.cpp new file mode 100644 index 00000000..bcc0391b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBaseArrowAttack.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiEnemyBaseArrowAttack.h" + +namespace uking::ai { + +EnemyBaseArrowAttack::EnemyBaseArrowAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyBaseArrowAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyBaseArrowAttack::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mIntervalIntensity_s, "IntervalIntensity"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBaseArrowAttack.h b/src/Game/AI/AI/aiEnemyBaseArrowAttack.h new file mode 100644 index 00000000..2bd57586 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBaseArrowAttack.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyBaseArrowAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyBaseArrowAttack, ksys::act::ai::Ai) +public: + explicit EnemyBaseArrowAttack(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mIntervalIntensity_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBaseFindPlayer.cpp b/src/Game/AI/AI/aiEnemyBaseFindPlayer.cpp new file mode 100644 index 00000000..bf49e632 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBaseFindPlayer.cpp @@ -0,0 +1,45 @@ +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" + +namespace uking::ai { + +EnemyBaseFindPlayer::EnemyBaseFindPlayer(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyBaseFindPlayer::~EnemyBaseFindPlayer() = default; + +bool EnemyBaseFindPlayer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyBaseFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyBaseFindPlayer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyBaseFindPlayer::loadParams_() { + getStaticParam(&mSurpriseAttackPer_s, "SurpriseAttackPer"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mSurpriseAttackTime_s, "SurpriseAttackTime"); + getStaticParam(&mSurpriseAttackTimeRand_s, "SurpriseAttackTimeRand"); + getStaticParam(&mRerouteTimeMin_s, "RerouteTimeMin"); + getStaticParam(&mRerouteTimeMax_s, "RerouteTimeMax"); + getStaticParam(&mRestreintTime_s, "RestreintTime"); + getStaticParam(&mRetTiredFromTime_s, "RetTiredFromTime"); + getStaticParam(&mSurpriseAttackRange_s, "SurpriseAttackRange"); + getStaticParam(&mAttackRange_s, "AttackRange"); + getStaticParam(&mAttackVMin_s, "AttackVMin"); + getStaticParam(&mAttackVMax_s, "AttackVMax"); + getStaticParam(&mSwiftAttackVMin_s, "SwiftAttackVMin"); + getStaticParam(&mSwiftAttackVMax_s, "SwiftAttackVMax"); + getStaticParam(&mRestreintTiredDist_s, "RestreintTiredDist"); + getStaticParam(&mForceFirstAttackDist_s, "ForceFirstAttackDist"); + getStaticParam(&mRetForceFirstAttackDist_s, "RetForceFirstAttackDist"); + getStaticParam(&mPathTooLongDist_s, "PathTooLongDist"); + getStaticParam(&mNoSearchFromTiredDist_s, "NoSearchFromTiredDist"); + getAITreeVariable(&mIsTryingReturnRestreint_a, "IsTryingReturnRestreint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBaseFindPlayer.h b/src/Game/AI/AI/aiEnemyBaseFindPlayer.h new file mode 100644 index 00000000..1998e18b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBaseFindPlayer.h @@ -0,0 +1,63 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyBaseFindPlayer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyBaseFindPlayer, ksys::act::ai::Ai) +public: + explicit EnemyBaseFindPlayer(const InitArg& arg); + ~EnemyBaseFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSurpriseAttackPer_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const int* mLostTimer_s{}; + // static_param at offset 0x50 + const int* mSurpriseAttackTime_s{}; + // static_param at offset 0x58 + const int* mSurpriseAttackTimeRand_s{}; + // static_param at offset 0x60 + const int* mRerouteTimeMin_s{}; + // static_param at offset 0x68 + const int* mRerouteTimeMax_s{}; + // static_param at offset 0x70 + const int* mRestreintTime_s{}; + // static_param at offset 0x78 + const int* mRetTiredFromTime_s{}; + // static_param at offset 0x80 + const float* mSurpriseAttackRange_s{}; + // static_param at offset 0x88 + const float* mAttackRange_s{}; + // static_param at offset 0x90 + const float* mAttackVMin_s{}; + // static_param at offset 0x98 + const float* mAttackVMax_s{}; + // static_param at offset 0xa0 + const float* mSwiftAttackVMin_s{}; + // static_param at offset 0xa8 + const float* mSwiftAttackVMax_s{}; + // static_param at offset 0xb0 + const float* mRestreintTiredDist_s{}; + // static_param at offset 0xb8 + const float* mForceFirstAttackDist_s{}; + // static_param at offset 0xc0 + const float* mRetForceFirstAttackDist_s{}; + // static_param at offset 0xc8 + const float* mPathTooLongDist_s{}; + // static_param at offset 0xd0 + const float* mNoSearchFromTiredDist_s{}; + // aitree_variable at offset 0xd8 + bool* mIsTryingReturnRestreint_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBattle.cpp b/src/Game/AI/AI/aiEnemyBattle.cpp new file mode 100644 index 00000000..72c9603b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBattle.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEnemyBattle.h" + +namespace uking::ai { + +EnemyBattle::EnemyBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyBattle::loadParams_() { + getStaticParam(&mRetFrmGrdAtkTimer_s, "RetFrmGrdAtkTimer"); + getStaticParam(&mRetFrmGrdAtkPrcTimer_s, "RetFrmGrdAtkPrcTimer"); + getStaticParam(&mRetFrmDmgAtkTimer_s, "RetFrmDmgAtkTimer"); + getStaticParam(&mGlobalNoAtkTime_s, "GlobalNoAtkTime"); + getStaticParam(&mGlobalNoAtkTimeRnd_s, "GlobalNoAtkTimeRnd"); + getStaticParam(&mAttackAngle_s, "AttackAngle"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); + getStaticParam(&mDisplayCheckRadius_s, "DisplayCheckRadius"); + getStaticParam(&mIsUpdateNoticeState_s, "IsUpdateNoticeState"); + getStaticParam(&mIsCheckLineReachable_s, "IsCheckLineReachable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBattle.h b/src/Game/AI/AI/aiEnemyBattle.h new file mode 100644 index 00000000..d4554e26 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBattle.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyBattle, ksys::act::ai::Ai) +public: + explicit EnemyBattle(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRetFrmGrdAtkTimer_s{}; + // static_param at offset 0x40 + const int* mRetFrmGrdAtkPrcTimer_s{}; + // static_param at offset 0x48 + const int* mRetFrmDmgAtkTimer_s{}; + // static_param at offset 0x50 + const int* mGlobalNoAtkTime_s{}; + // static_param at offset 0x58 + const int* mGlobalNoAtkTimeRnd_s{}; + // static_param at offset 0x60 + const float* mAttackAngle_s{}; + // static_param at offset 0x68 + const float* mAttackIntervalIntensity_s{}; + // static_param at offset 0x70 + const float* mDisplayCheckRadius_s{}; + // static_param at offset 0x78 + const bool* mIsUpdateNoticeState_s{}; + // static_param at offset 0x80 + const bool* mIsCheckLineReachable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.cpp b/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.cpp new file mode 100644 index 00000000..88b11924 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEnemyBattleWithAreaCheck.h" + +namespace uking::ai { + +EnemyBattleWithAreaCheck::EnemyBattleWithAreaCheck(const InitArg& arg) : EnemyBattle(arg) {} + +EnemyBattleWithAreaCheck::~EnemyBattleWithAreaCheck() = default; + +bool EnemyBattleWithAreaCheck::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void EnemyBattleWithAreaCheck::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void EnemyBattleWithAreaCheck::leave_() { + EnemyBattle::leave_(); +} + +void EnemyBattleWithAreaCheck::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAttackVMin_s, "AttackVMin"); + getStaticParam(&mAttackVMax_s, "AttackVMax"); + getStaticParam(&mAttackFar_s, "AttackFar"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.h b/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.h new file mode 100644 index 00000000..f713599d --- /dev/null +++ b/src/Game/AI/AI/aiEnemyBattleWithAreaCheck.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyBattleWithAreaCheck : public EnemyBattle { + SEAD_RTTI_OVERRIDE(EnemyBattleWithAreaCheck, EnemyBattle) +public: + explicit EnemyBattleWithAreaCheck(const InitArg& arg); + ~EnemyBattleWithAreaCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mWeaponIdx_s{}; + // static_param at offset 0x98 + const float* mAttackVMin_s{}; + // static_param at offset 0xa0 + const float* mAttackVMax_s{}; + // static_param at offset 0xa8 + const float* mAttackFar_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyCalledAppear.cpp b/src/Game/AI/AI/aiEnemyCalledAppear.cpp new file mode 100644 index 00000000..99d74be5 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyCalledAppear.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyCalledAppear.h" + +namespace uking::ai { + +EnemyCalledAppear::EnemyCalledAppear(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyCalledAppear::~EnemyCalledAppear() = default; + +bool EnemyCalledAppear::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyCalledAppear::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyCalledAppear::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyCalledAppear::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyCalledAppear.h b/src/Game/AI/AI/aiEnemyCalledAppear.h new file mode 100644 index 00000000..fe764fff --- /dev/null +++ b/src/Game/AI/AI/aiEnemyCalledAppear.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyCalledAppear : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyCalledAppear, ksys::act::ai::Ai) +public: + explicit EnemyCalledAppear(const InitArg& arg); + ~EnemyCalledAppear() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChaseShield.cpp b/src/Game/AI/AI/aiEnemyChaseShield.cpp new file mode 100644 index 00000000..732ecc31 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChaseShield.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiEnemyChaseShield.h" + +namespace uking::ai { + +EnemyChaseShield::EnemyChaseShield(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemyChaseShield::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyChaseShield::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyChaseShield::loadParams_() { + getDynamicParam(&mTargetWeapon_d, "TargetWeapon"); + getStaticParam(&mEquipItemSearchIdx_s, "EquipItemSearchIdx"); + getStaticParam(&mTurnAng_s, "TurnAng"); + getStaticParam(&mShieldReachDist_s, "ShieldReachDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChaseShield.h b/src/Game/AI/AI/aiEnemyChaseShield.h new file mode 100644 index 00000000..31beccb6 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChaseShield.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChaseShield : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyChaseShield, ksys::act::ai::Ai) +public: + explicit EnemyChaseShield(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetWeapon_d{}; + // static_param at offset 0x40 + const int* mEquipItemSearchIdx_s{}; + // static_param at offset 0x48 + const float* mTurnAng_s{}; + // static_param at offset 0x50 + const float* mShieldReachDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChaseTargetAndAction.cpp b/src/Game/AI/AI/aiEnemyChaseTargetAndAction.cpp new file mode 100644 index 00000000..14886286 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChaseTargetAndAction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyChaseTargetAndAction.h" + +namespace uking::ai { + +EnemyChaseTargetAndAction::EnemyChaseTargetAndAction(const InitArg& arg) + : UnarmedEnemySearch(arg) {} + +EnemyChaseTargetAndAction::~EnemyChaseTargetAndAction() = default; + +void EnemyChaseTargetAndAction::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearch::enter_(params); +} + +void EnemyChaseTargetAndAction::leave_() { + UnarmedEnemySearch::leave_(); +} + +void EnemyChaseTargetAndAction::loadParams_() { + UnarmedEnemySearch::loadParams_(); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mLostDist_s, "LostDist"); + getStaticParam(&mLostSpeed_s, "LostSpeed"); + getStaticParam(&mLostAng_s, "LostAng"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChaseTargetAndAction.h b/src/Game/AI/AI/aiEnemyChaseTargetAndAction.h new file mode 100644 index 00000000..95ba2b4f --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChaseTargetAndAction.h @@ -0,0 +1,31 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearch.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChaseTargetAndAction : public UnarmedEnemySearch { + SEAD_RTTI_OVERRIDE(EnemyChaseTargetAndAction, UnarmedEnemySearch) +public: + explicit EnemyChaseTargetAndAction(const InitArg& arg); + ~EnemyChaseTargetAndAction() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mRepathTime_s{}; + // static_param at offset 0x70 + const float* mLostDist_s{}; + // static_param at offset 0x78 + const float* mLostSpeed_s{}; + // static_param at offset 0x80 + const float* mLostAng_s{}; + // dynamic_param at offset 0x88 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemTargetAction.cpp b/src/Game/AI/AI/aiEnemyChemTargetAction.cpp new file mode 100644 index 00000000..d46e2bf9 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemTargetAction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyChemTargetAction.h" + +namespace uking::ai { + +EnemyChemTargetAction::EnemyChemTargetAction(const InitArg& arg) : EnemyChemTargetActionBase(arg) {} + +EnemyChemTargetAction::~EnemyChemTargetAction() = default; + +bool EnemyChemTargetAction::init_(sead::Heap* heap) { + return EnemyChemTargetActionBase::init_(heap); +} + +void EnemyChemTargetAction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyChemTargetActionBase::enter_(params); +} + +void EnemyChemTargetAction::leave_() { + EnemyChemTargetActionBase::leave_(); +} + +void EnemyChemTargetAction::loadParams_() { + EnemyChemTargetActionBase::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemTargetAction.h b/src/Game/AI/AI/aiEnemyChemTargetAction.h new file mode 100644 index 00000000..199ea736 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemTargetAction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyChemTargetActionBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChemTargetAction : public EnemyChemTargetActionBase { + SEAD_RTTI_OVERRIDE(EnemyChemTargetAction, EnemyChemTargetActionBase) +public: + explicit EnemyChemTargetAction(const InitArg& arg); + ~EnemyChemTargetAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemTargetActionBase.cpp b/src/Game/AI/AI/aiEnemyChemTargetActionBase.cpp new file mode 100644 index 00000000..d1b0ef33 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemTargetActionBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyChemTargetActionBase.h" + +namespace uking::ai { + +EnemyChemTargetActionBase::EnemyChemTargetActionBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemyChemTargetActionBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyChemTargetActionBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyChemTargetActionBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyChemTargetActionBase::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mActionDist_s, "ActionDist"); + getStaticParam(&mActionDir_s, "ActionDir"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemTargetActionBase.h b/src/Game/AI/AI/aiEnemyChemTargetActionBase.h new file mode 100644 index 00000000..f68aaa2f --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemTargetActionBase.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChemTargetActionBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyChemTargetActionBase, ksys::act::ai::Ai) +public: + explicit EnemyChemTargetActionBase(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mActionDist_s{}; + // static_param at offset 0x48 + const float* mActionDir_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalPowerSelect.cpp b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.cpp new file mode 100644 index 00000000..8059147c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyChemicalPowerSelect.h" + +namespace uking::ai { + +EnemyChemicalPowerSelect::EnemyChemicalPowerSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyChemicalPowerSelect::~EnemyChemicalPowerSelect() = default; + +bool EnemyChemicalPowerSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyChemicalPowerSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyChemicalPowerSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyChemicalPowerSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h new file mode 100644 index 00000000..fd287224 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemicalPowerSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChemicalPowerSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyChemicalPowerSelect, ksys::act::ai::Ai) +public: + explicit EnemyChemicalPowerSelect(const InitArg& arg); + ~EnemyChemicalPowerSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalSelect.cpp b/src/Game/AI/AI/aiEnemyChemicalSelect.cpp new file mode 100644 index 00000000..c5fdb0c8 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemicalSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyChemicalSelect.h" + +namespace uking::ai { + +EnemyChemicalSelect::EnemyChemicalSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyChemicalSelect::~EnemyChemicalSelect() = default; + +bool EnemyChemicalSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyChemicalSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyChemicalSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyChemicalSelect::loadParams_() { + getStaticParam(&mIsCheckActive_s, "IsCheckActive"); + getStaticParam(&mChmObjName_s, "ChmObjName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyChemicalSelect.h b/src/Game/AI/AI/aiEnemyChemicalSelect.h new file mode 100644 index 00000000..37e114a1 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyChemicalSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyChemicalSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyChemicalSelect, ksys::act::ai::Ai) +public: + explicit EnemyChemicalSelect(const InitArg& arg); + ~EnemyChemicalSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckActive_s{}; + // static_param at offset 0x40 + sead::SafeString mChmObjName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyConfuse.cpp b/src/Game/AI/AI/aiEnemyConfuse.cpp new file mode 100644 index 00000000..b5964a22 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyConfuse.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyConfuse.h" + +namespace uking::ai { + +EnemyConfuse::EnemyConfuse(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyConfuse::~EnemyConfuse() = default; + +bool EnemyConfuse::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyConfuse::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyConfuse::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyConfuse::loadParams_() { + getStaticParam(&mConfuseTime_s, "ConfuseTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyConfuse.h b/src/Game/AI/AI/aiEnemyConfuse.h new file mode 100644 index 00000000..fa168820 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyConfuse.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyConfuse : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyConfuse, ksys::act::ai::Ai) +public: + explicit EnemyConfuse(const InitArg& arg); + ~EnemyConfuse() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mConfuseTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyCutRope.cpp b/src/Game/AI/AI/aiEnemyCutRope.cpp new file mode 100644 index 00000000..459950eb --- /dev/null +++ b/src/Game/AI/AI/aiEnemyCutRope.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiEnemyCutRope.h" + +namespace uking::ai { + +EnemyCutRope::EnemyCutRope(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyCutRope::~EnemyCutRope() = default; + +bool EnemyCutRope::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyCutRope::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyCutRope::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyCutRope::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mCutDist_s, "CutDist"); + getStaticParam(&mCutAngle_s, "CutAngle"); + getStaticParam(&mCutFlyAttack_s, "CutFlyAttack"); + getDynamicParam(&mTargetActor_d, "TargetActor"); + // FIXME: CALL sub_71002A5BB0 @ 0x71002a5bb0 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyCutRope.h b/src/Game/AI/AI/aiEnemyCutRope.h new file mode 100644 index 00000000..da41bf9e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyCutRope.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyCutRope : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyCutRope, ksys::act::ai::Ai) +public: + explicit EnemyCutRope(const InitArg& arg); + ~EnemyCutRope() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mCutDist_s{}; + // static_param at offset 0x48 + const float* mCutAngle_s{}; + // static_param at offset 0x50 + const bool* mCutFlyAttack_s{}; + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyDefaultReaction.cpp b/src/Game/AI/AI/aiEnemyDefaultReaction.cpp new file mode 100644 index 00000000..1dffd24a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyDefaultReaction.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiEnemyDefaultReaction.h" + +namespace uking::ai { + +EnemyDefaultReaction::EnemyDefaultReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyDefaultReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyDefaultReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyDefaultReaction::loadParams_() { + getStaticParam(&mJustGuardTimesMin_s, "JustGuardTimesMin"); + getStaticParam(&mJustGuardTimesMax_s, "JustGuardTimesMax"); + getStaticParam(&mSmallDamageCancelTimes_s, "SmallDamageCancelTimes"); + getStaticParam(&mInComboSmallDamageNoCancel_s, "InComboSmallDamageNoCancel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyDefaultReaction.h b/src/Game/AI/AI/aiEnemyDefaultReaction.h new file mode 100644 index 00000000..9042b6a4 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyDefaultReaction.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyDefaultReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyDefaultReaction, ksys::act::ai::Ai) +public: + explicit EnemyDefaultReaction(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mJustGuardTimesMin_s{}; + // static_param at offset 0x40 + const int* mJustGuardTimesMax_s{}; + // static_param at offset 0x48 + const int* mSmallDamageCancelTimes_s{}; + // static_param at offset 0x50 + const bool* mInComboSmallDamageNoCancel_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.cpp b/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.cpp new file mode 100644 index 00000000..a8fa649f --- /dev/null +++ b/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEnemyDemoSumonRecgTgt.h" + +namespace uking::ai { + +EnemyDemoSumonRecgTgt::EnemyDemoSumonRecgTgt(const InitArg& arg) : EnemyRecognizeTargetBase(arg) {} + +EnemyDemoSumonRecgTgt::~EnemyDemoSumonRecgTgt() = default; + +bool EnemyDemoSumonRecgTgt::init_(sead::Heap* heap) { + return EnemyRecognizeTargetBase::init_(heap); +} + +void EnemyDemoSumonRecgTgt::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRecognizeTargetBase::enter_(params); +} + +void EnemyDemoSumonRecgTgt::leave_() { + EnemyRecognizeTargetBase::leave_(); +} + +void EnemyDemoSumonRecgTgt::loadParams_() { + EnemyRecognizeTargetBase::loadParams_(); + getStaticParam(&mOnlyOne_s, "OnlyOne"); + getStaticParam(&mIsBroadCastOnlyOne_s, "IsBroadCastOnlyOne"); + getStaticParam(&mDemoName_s, "DemoName"); + getStaticParam(&mEntryPoint_s, "EntryPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.h b/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.h new file mode 100644 index 00000000..d56fd0c1 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyDemoSumonRecgTgt.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRecognizeTargetBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyDemoSumonRecgTgt : public EnemyRecognizeTargetBase { + SEAD_RTTI_OVERRIDE(EnemyDemoSumonRecgTgt, EnemyRecognizeTargetBase) +public: + explicit EnemyDemoSumonRecgTgt(const InitArg& arg); + ~EnemyDemoSumonRecgTgt() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x128 + const bool* mOnlyOne_s{}; + // static_param at offset 0x130 + const bool* mIsBroadCastOnlyOne_s{}; + // static_param at offset 0x138 + sead::SafeString mDemoName_s{}; + // static_param at offset 0x148 + sead::SafeString mEntryPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscape.cpp b/src/Game/AI/AI/aiEnemyEscape.cpp new file mode 100644 index 00000000..81ae10b1 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscape.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiEnemyEscape.h" + +namespace uking::ai { + +EnemyEscape::EnemyEscape(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyEscape::~EnemyEscape() = default; + +void EnemyEscape::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyEscape::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscape.h b/src/Game/AI/AI/aiEnemyEscape.h new file mode 100644 index 00000000..d4adb48b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscape.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyEscape : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyEscape, ksys::act::ai::Ai) +public: + explicit EnemyEscape(const InitArg& arg); + ~EnemyEscape() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscapeMove.cpp b/src/Game/AI/AI/aiEnemyEscapeMove.cpp new file mode 100644 index 00000000..e221511e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscapeMove.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyEscapeMove.h" + +namespace uking::ai { + +EnemyEscapeMove::EnemyEscapeMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyEscapeMove::~EnemyEscapeMove() = default; + +bool EnemyEscapeMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyEscapeMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyEscapeMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyEscapeMove::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscapeMove.h b/src/Game/AI/AI/aiEnemyEscapeMove.h new file mode 100644 index 00000000..d09dcb35 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscapeMove.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyEscapeMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyEscapeMove, ksys::act::ai::Ai) +public: + explicit EnemyEscapeMove(const InitArg& arg); + ~EnemyEscapeMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscapeRoot.cpp b/src/Game/AI/AI/aiEnemyEscapeRoot.cpp new file mode 100644 index 00000000..9545e05b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscapeRoot.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiEnemyEscapeRoot.h" + +namespace uking::ai { + +EnemyEscapeRoot::EnemyEscapeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyEscapeRoot::~EnemyEscapeRoot() = default; + +void EnemyEscapeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyEscapeRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyEscapeRoot.h b/src/Game/AI/AI/aiEnemyEscapeRoot.h new file mode 100644 index 00000000..799baf98 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyEscapeRoot.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyEscapeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyEscapeRoot, ksys::act::ai::Ai) +public: + explicit EnemyEscapeRoot(const InitArg& arg); + ~EnemyEscapeRoot() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFeintBattle.cpp b/src/Game/AI/AI/aiEnemyFeintBattle.cpp new file mode 100644 index 00000000..f67ac75c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFeintBattle.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiEnemyFeintBattle.h" + +namespace uking::ai { + +EnemyFeintBattle::EnemyFeintBattle(const InitArg& arg) : EnemyBattle(arg) {} + +EnemyFeintBattle::~EnemyFeintBattle() = default; + +void EnemyFeintBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mIsAttackEnd_s, "IsAttackEnd"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFeintBattle.h b/src/Game/AI/AI/aiEnemyFeintBattle.h new file mode 100644 index 00000000..5b19cef3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFeintBattle.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFeintBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(EnemyFeintBattle, EnemyBattle) +public: + explicit EnemyFeintBattle(const InitArg& arg); + ~EnemyFeintBattle() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const bool* mIsAttackEnd_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindBadStatusFriend.cpp b/src/Game/AI/AI/aiEnemyFindBadStatusFriend.cpp new file mode 100644 index 00000000..5567d19a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindBadStatusFriend.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyFindBadStatusFriend.h" + +namespace uking::ai { + +EnemyFindBadStatusFriend::EnemyFindBadStatusFriend(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyFindBadStatusFriend::~EnemyFindBadStatusFriend() = default; + +bool EnemyFindBadStatusFriend::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyFindBadStatusFriend::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyFindBadStatusFriend::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyFindBadStatusFriend::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindBadStatusFriend.h b/src/Game/AI/AI/aiEnemyFindBadStatusFriend.h new file mode 100644 index 00000000..caf02af6 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindBadStatusFriend.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFindBadStatusFriend : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyFindBadStatusFriend, ksys::act::ai::Ai) +public: + explicit EnemyFindBadStatusFriend(const InitArg& arg); + ~EnemyFindBadStatusFriend() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindHorseRideTarget.cpp b/src/Game/AI/AI/aiEnemyFindHorseRideTarget.cpp new file mode 100644 index 00000000..4a5197a3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindHorseRideTarget.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiEnemyFindHorseRideTarget.h" + +namespace uking::ai { + +EnemyFindHorseRideTarget::EnemyFindHorseRideTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyFindHorseRideTarget::~EnemyFindHorseRideTarget() = default; + +bool EnemyFindHorseRideTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyFindHorseRideTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyFindHorseRideTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyFindHorseRideTarget::loadParams_() { + getStaticParam(&mSurpriseAttackPer_s, "SurpriseAttackPer"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mChaseTime_s, "ChaseTime"); + getStaticParam(&mSurpriseAttackRange_s, "SurpriseAttackRange"); + getStaticParam(&mAttackRange_s, "AttackRange"); + getStaticParam(&mAttackVMin_s, "AttackVMin"); + getStaticParam(&mAttackVMax_s, "AttackVMax"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mLostRange_s, "LostRange"); + getStaticParam(&mAttackTargetSpeed_s, "AttackTargetSpeed"); + getStaticParam(&mReChaseDist_s, "ReChaseDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindHorseRideTarget.h b/src/Game/AI/AI/aiEnemyFindHorseRideTarget.h new file mode 100644 index 00000000..6d7ff914 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindHorseRideTarget.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFindHorseRideTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyFindHorseRideTarget, ksys::act::ai::Ai) +public: + explicit EnemyFindHorseRideTarget(const InitArg& arg); + ~EnemyFindHorseRideTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSurpriseAttackPer_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const int* mLostTimer_s{}; + // static_param at offset 0x50 + const int* mChaseTime_s{}; + // static_param at offset 0x58 + const float* mSurpriseAttackRange_s{}; + // static_param at offset 0x60 + const float* mAttackRange_s{}; + // static_param at offset 0x68 + const float* mAttackVMin_s{}; + // static_param at offset 0x70 + const float* mAttackVMax_s{}; + // static_param at offset 0x78 + const float* mLostVMin_s{}; + // static_param at offset 0x80 + const float* mLostVMax_s{}; + // static_param at offset 0x88 + const float* mLostRange_s{}; + // static_param at offset 0x90 + const float* mAttackTargetSpeed_s{}; + // static_param at offset 0x98 + const float* mReChaseDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindShootable.cpp b/src/Game/AI/AI/aiEnemyFindShootable.cpp new file mode 100644 index 00000000..b15e8fc3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindShootable.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEnemyFindShootable.h" + +namespace uking::ai { + +EnemyFindShootable::EnemyFindShootable(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemyFindShootable::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyFindShootable::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyFindShootable::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyFindShootable::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); + getStaticParam(&mAttOffset_s, "AttOffset"); + getStaticParam(&mCanGrabHeavy_s, "CanGrabHeavy"); + getStaticParam(&mGrabCheckRadius_s, "GrabCheckRadius"); + getStaticParam(&mChaseItemDist_s, "ChaseItemDist"); + getStaticParam(&mChaseItemSpeed_s, "ChaseItemSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFindShootable.h b/src/Game/AI/AI/aiEnemyFindShootable.h new file mode 100644 index 00000000..24072ffe --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFindShootable.h @@ -0,0 +1,32 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFindShootable : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyFindShootable, ksys::act::ai::Ai) +public: + explicit EnemyFindShootable(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mGrabCheckRadius_s{}; + // static_param at offset 0x40 + const bool* mCanGrabHeavy_s{}; + // static_param at offset 0x48 + const sead::Vector3f* mAttOffset_s{}; + // dynamic_param at offset 0x50 + ksys::act::BaseProcLink* mTargetActor_d{}; + // static_param at offset 0x58 + const float* mChaseItemDist_s{}; + // static_param at offset 0x60 + const float* mChaseItemSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressChat.cpp b/src/Game/AI/AI/aiEnemyFortressChat.cpp new file mode 100644 index 00000000..7664b518 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressChat.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyFortressChat.h" + +namespace uking::ai { + +EnemyFortressChat::EnemyFortressChat(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyFortressChat::~EnemyFortressChat() = default; + +bool EnemyFortressChat::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyFortressChat::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyFortressChat::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyFortressChat::loadParams_() { + getStaticParam(&mNextPer_s, "NextPer"); + getAITreeVariable(&mRegistedActorUnit_a, "RegistedActorUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressChat.h b/src/Game/AI/AI/aiEnemyFortressChat.h new file mode 100644 index 00000000..53febd13 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressChat.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFortressChat : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyFortressChat, ksys::act::ai::Ai) +public: + explicit EnemyFortressChat(const InitArg& arg); + ~EnemyFortressChat() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNextPer_s{}; + // aitree_variable at offset 0x40 + void* mRegistedActorUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressMgrTag.cpp b/src/Game/AI/AI/aiEnemyFortressMgrTag.cpp new file mode 100644 index 00000000..7983fca8 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressMgrTag.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyFortressMgrTag.h" + +namespace uking::ai { + +EnemyFortressMgrTag::EnemyFortressMgrTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyFortressMgrTag::~EnemyFortressMgrTag() = default; + +bool EnemyFortressMgrTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyFortressMgrTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyFortressMgrTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyFortressMgrTag::loadParams_() { + getStaticParam(&mCheckInterval_s, "CheckInterval"); + getStaticParam(&mChangePer_s, "ChangePer"); + getAITreeVariable(&mRegistedActorUnit_a, "RegistedActorUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressMgrTag.h b/src/Game/AI/AI/aiEnemyFortressMgrTag.h new file mode 100644 index 00000000..6a8331b0 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressMgrTag.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFortressMgrTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyFortressMgrTag, ksys::act::ai::Ai) +public: + explicit EnemyFortressMgrTag(const InitArg& arg); + ~EnemyFortressMgrTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCheckInterval_s{}; + // static_param at offset 0x40 + const float* mChangePer_s{}; + // aitree_variable at offset 0x48 + void* mRegistedActorUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressWait.cpp b/src/Game/AI/AI/aiEnemyFortressWait.cpp new file mode 100644 index 00000000..e8f71a44 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressWait.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiEnemyFortressWait.h" + +namespace uking::ai { + +EnemyFortressWait::EnemyFortressWait(const InitArg& arg) : EnemyWaitViewItem(arg) {} + +EnemyFortressWait::~EnemyFortressWait() = default; + +bool EnemyFortressWait::init_(sead::Heap* heap) { + return EnemyWaitViewItem::init_(heap); +} + +void EnemyFortressWait::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyWaitViewItem::enter_(params); +} + +void EnemyFortressWait::leave_() { + EnemyWaitViewItem::leave_(); +} + +void EnemyFortressWait::loadParams_() { + EnemyWaitViewItem::loadParams_(); + // FIXME: CALL sub @ 0x7100392230 + getStaticParam(&mEatPer_s, "EatPer"); + getStaticParam(&mEatItem_s, "EatItem"); + getMapUnitParam(&mFortressEatPer_m, "FortressEatPer"); + getMapUnitParam(&mFortressEatItem_m, "FortressEatItem"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressWait.h b/src/Game/AI/AI/aiEnemyFortressWait.h new file mode 100644 index 00000000..54286a6e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressWait.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyWaitViewItem.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFortressWait : public EnemyWaitViewItem { + SEAD_RTTI_OVERRIDE(EnemyFortressWait, EnemyWaitViewItem) +public: + explicit EnemyFortressWait(const InitArg& arg); + ~EnemyFortressWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x40 + const int* mFortressEatPer_m{}; + // map_unit_param at offset 0x48 + sead::SafeString mFortressEatItem_m{}; + // static_param at offset 0x58 + const int* mEatPer_s{}; + // static_param at offset 0x60 + sead::SafeString mEatItem_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.cpp b/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.cpp new file mode 100644 index 00000000..54d64f31 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyFortressWatchKeepingWait.h" + +namespace uking::ai { + +EnemyFortressWatchKeepingWait::EnemyFortressWatchKeepingWait(const InitArg& arg) + : EnemyWatchKeepingWait(arg) {} + +EnemyFortressWatchKeepingWait::~EnemyFortressWatchKeepingWait() = default; + +bool EnemyFortressWatchKeepingWait::init_(sead::Heap* heap) { + return EnemyWatchKeepingWait::init_(heap); +} + +void EnemyFortressWatchKeepingWait::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyWatchKeepingWait::enter_(params); +} + +void EnemyFortressWatchKeepingWait::leave_() { + EnemyWatchKeepingWait::leave_(); +} + +void EnemyFortressWatchKeepingWait::loadParams_() { + EnemyWatchKeepingWait::loadParams_(); + // FIXME: CALL sub @ 0x7100392230 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.h b/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.h new file mode 100644 index 00000000..414cac9c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyFortressWatchKeepingWait.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyWatchKeepingWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyFortressWatchKeepingWait : public EnemyWatchKeepingWait { + SEAD_RTTI_OVERRIDE(EnemyFortressWatchKeepingWait, EnemyWatchKeepingWait) +public: + explicit EnemyFortressWatchKeepingWait(const InitArg& arg); + ~EnemyFortressWatchKeepingWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHide.cpp b/src/Game/AI/AI/aiEnemyHide.cpp new file mode 100644 index 00000000..982dbabe --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHide.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyHide.h" + +namespace uking::ai { + +EnemyHide::EnemyHide(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyHide::~EnemyHide() = default; + +bool EnemyHide::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyHide::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyHide::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyHide::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHide.h b/src/Game/AI/AI/aiEnemyHide.h new file mode 100644 index 00000000..10c2fb93 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHide.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyHide : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyHide, ksys::act::ai::Ai) +public: + explicit EnemyHide(const InitArg& arg); + ~EnemyHide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHideGrass.cpp b/src/Game/AI/AI/aiEnemyHideGrass.cpp new file mode 100644 index 00000000..9f1a9502 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHideGrass.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyHideGrass.h" + +namespace uking::ai { + +EnemyHideGrass::EnemyHideGrass(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyHideGrass::~EnemyHideGrass() = default; + +bool EnemyHideGrass::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyHideGrass::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyHideGrass::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyHideGrass::loadParams_() { + getStaticParam(&mSightRatio_s, "SightRatio"); + getStaticParam(&mHearingRatio_s, "HearingRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHideGrass.h b/src/Game/AI/AI/aiEnemyHideGrass.h new file mode 100644 index 00000000..5924dfb0 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHideGrass.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyHideGrass : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyHideGrass, ksys::act::ai::Ai) +public: + explicit EnemyHideGrass(const InitArg& arg); + ~EnemyHideGrass() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSightRatio_s{}; + // static_param at offset 0x40 + const float* mHearingRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHideShootingBattle.cpp b/src/Game/AI/AI/aiEnemyHideShootingBattle.cpp new file mode 100644 index 00000000..56c69093 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHideShootingBattle.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiEnemyHideShootingBattle.h" + +namespace uking::ai { + +EnemyHideShootingBattle::EnemyHideShootingBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyHideShootingBattle::~EnemyHideShootingBattle() = default; + +void EnemyHideShootingBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyHideShootingBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyHideShootingBattle::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHideShootingBattle.h b/src/Game/AI/AI/aiEnemyHideShootingBattle.h new file mode 100644 index 00000000..3b5feb06 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHideShootingBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyHideShootingBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyHideShootingBattle, ksys::act::ai::Ai) +public: + explicit EnemyHideShootingBattle(const InitArg& arg); + ~EnemyHideShootingBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHorseRide.cpp b/src/Game/AI/AI/aiEnemyHorseRide.cpp new file mode 100644 index 00000000..db652ca3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHorseRide.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyHorseRide.h" + +namespace uking::ai { + +EnemyHorseRide::EnemyHorseRide(const InitArg& arg) : NonPlayerHorseRide(arg) {} + +EnemyHorseRide::~EnemyHorseRide() = default; + +bool EnemyHorseRide::init_(sead::Heap* heap) { + return NonPlayerHorseRide::init_(heap); +} + +void EnemyHorseRide::enter_(ksys::act::ai::InlineParamPack* params) { + NonPlayerHorseRide::enter_(params); +} + +void EnemyHorseRide::leave_() { + NonPlayerHorseRide::leave_(); +} + +void EnemyHorseRide::loadParams_() { + NonPlayerHorseRide::loadParams_(); + getStaticParam(&mUpperBodyASSlot_s, "UpperBodyASSlot"); + getStaticParam(&mLowerBodyASSlot_s, "LowerBodyASSlot"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyHorseRide.h b/src/Game/AI/AI/aiEnemyHorseRide.h new file mode 100644 index 00000000..e696e18c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyHorseRide.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiNonPlayerHorseRide.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyHorseRide : public NonPlayerHorseRide { + SEAD_RTTI_OVERRIDE(EnemyHorseRide, NonPlayerHorseRide) +public: + explicit EnemyHorseRide(const InitArg& arg); + ~EnemyHorseRide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const int* mUpperBodyASSlot_s{}; + // static_param at offset 0xe8 + const int* mLowerBodyASSlot_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLifeSelect.cpp b/src/Game/AI/AI/aiEnemyLifeSelect.cpp new file mode 100644 index 00000000..c93ab183 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLifeSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyLifeSelect.h" + +namespace uking::ai { + +EnemyLifeSelect::EnemyLifeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyLifeSelect::~EnemyLifeSelect() = default; + +bool EnemyLifeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyLifeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyLifeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyLifeSelect::loadParams_() { + getMapUnitParam(&mIsWatchKeeping_m, "IsWatchKeeping"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLifeSelect.h b/src/Game/AI/AI/aiEnemyLifeSelect.h new file mode 100644 index 00000000..4e8a0242 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLifeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyLifeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyLifeSelect, ksys::act::ai::Ai) +public: + explicit EnemyLifeSelect(const InitArg& arg); + ~EnemyLifeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsWatchKeeping_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLiftShootItem.cpp b/src/Game/AI/AI/aiEnemyLiftShootItem.cpp new file mode 100644 index 00000000..22ec4767 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLiftShootItem.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyLiftShootItem.h" + +namespace uking::ai { + +EnemyLiftShootItem::EnemyLiftShootItem(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemyLiftShootItem::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyLiftShootItem::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyLiftShootItem::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyLiftShootItem::loadParams_() { + getStaticParam(&mShootAngle_s, "ShootAngle"); + getStaticParam(&mShootDist_s, "ShootDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mShootItem_d, "ShootItem"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLiftShootItem.h b/src/Game/AI/AI/aiEnemyLiftShootItem.h new file mode 100644 index 00000000..04b8f64e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLiftShootItem.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyLiftShootItem : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyLiftShootItem, ksys::act::ai::Ai) +public: + explicit EnemyLiftShootItem(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mShootAngle_s{}; + // static_param at offset 0x40 + const float* mShootDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x50 + ksys::act::BaseProcLink* mShootItem_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLifted.cpp b/src/Game/AI/AI/aiEnemyLifted.cpp new file mode 100644 index 00000000..ab70a650 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLifted.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyLifted.h" + +namespace uking::ai { + +EnemyLifted::EnemyLifted(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyLifted::~EnemyLifted() = default; + +bool EnemyLifted::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyLifted::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyLifted::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyLifted::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLifted.h b/src/Game/AI/AI/aiEnemyLifted.h new file mode 100644 index 00000000..d5581d41 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLifted.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyLifted : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyLifted, ksys::act::ai::Ai) +public: + explicit EnemyLifted(const InitArg& arg); + ~EnemyLifted() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLost.cpp b/src/Game/AI/AI/aiEnemyLost.cpp new file mode 100644 index 00000000..8cdcc6ac --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLost.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEnemyLost.h" + +namespace uking::ai { + +EnemyLost::EnemyLost(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyLost::~EnemyLost() = default; + +bool EnemyLost::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyLost::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyLost::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyLost::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mRailCheckInterval_s, "RailCheckInterval"); + getStaticParam(&mSealForceReturn_s, "SealForceReturn"); + getStaticParam(&mForceReturnNoCameraRad_s, "ForceReturnNoCameraRad"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyLost.h b/src/Game/AI/AI/aiEnemyLost.h new file mode 100644 index 00000000..0bc14dfc --- /dev/null +++ b/src/Game/AI/AI/aiEnemyLost.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyLost : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyLost, ksys::act::ai::Ai) +public: + explicit EnemyLost(const InitArg& arg); + ~EnemyLost() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRailCheckInterval_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x48 + const float* mForceReturnNoCameraRad_s{}; + // static_param at offset 0x50 + const bool* mSealForceReturn_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMimicrySelect.cpp b/src/Game/AI/AI/aiEnemyMimicrySelect.cpp new file mode 100644 index 00000000..1ea1cda8 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMimicrySelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyMimicrySelect.h" + +namespace uking::ai { + +EnemyMimicrySelect::EnemyMimicrySelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyMimicrySelect::~EnemyMimicrySelect() = default; + +bool EnemyMimicrySelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyMimicrySelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyMimicrySelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyMimicrySelect::loadParams_() { + getMapUnitParam(&mIsMimicry_m, "IsMimicry"); + getAITreeVariable(&mMimicryMaterial_a, "MimicryMaterial"); + getAITreeVariable(&mIsStartResetMimicry_a, "IsStartResetMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMimicrySelect.h b/src/Game/AI/AI/aiEnemyMimicrySelect.h new file mode 100644 index 00000000..5127d4e0 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMimicrySelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyMimicrySelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyMimicrySelect, ksys::act::ai::Ai) +public: + explicit EnemyMimicrySelect(const InitArg& arg); + ~EnemyMimicrySelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsMimicry_m{}; + // aitree_variable at offset 0x40 + int* mMimicryMaterial_a{}; + // aitree_variable at offset 0x48 + bool* mIsStartResetMimicry_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMoveBattle.cpp b/src/Game/AI/AI/aiEnemyMoveBattle.cpp new file mode 100644 index 00000000..cef3e949 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMoveBattle.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiEnemyMoveBattle.h" + +namespace uking::ai { + +EnemyMoveBattle::EnemyMoveBattle(const InitArg& arg) : EnemyBattle(arg) {} + +EnemyMoveBattle::~EnemyMoveBattle() = default; + +void EnemyMoveBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void EnemyMoveBattle::leave_() { + EnemyBattle::leave_(); +} + +void EnemyMoveBattle::loadParams_() { + EnemyBattle::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mLimitMoveTime_s, "LimitMoveTime"); + getStaticParam(&mMoveDist_s, "MoveDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMoveBattle.h b/src/Game/AI/AI/aiEnemyMoveBattle.h new file mode 100644 index 00000000..fb0f99c9 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMoveBattle.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyMoveBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(EnemyMoveBattle, EnemyBattle) +public: + explicit EnemyMoveBattle(const InitArg& arg); + ~EnemyMoveBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x90 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x98 + const int* mLimitMoveTime_s{}; + // static_param at offset 0xa0 + const float* mMoveDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMoveToGround.cpp b/src/Game/AI/AI/aiEnemyMoveToGround.cpp new file mode 100644 index 00000000..2d81d833 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMoveToGround.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyMoveToGround.h" + +namespace uking::ai { + +EnemyMoveToGround::EnemyMoveToGround(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyMoveToGround::~EnemyMoveToGround() = default; + +bool EnemyMoveToGround::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyMoveToGround::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyMoveToGround::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyMoveToGround::loadParams_() { + getStaticParam(&mRetryTime_s, "RetryTime"); + getStaticParam(&mAreaThreshold_s, "AreaThreshold"); + getStaticParam(&mSearchRadius_s, "SearchRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyMoveToGround.h b/src/Game/AI/AI/aiEnemyMoveToGround.h new file mode 100644 index 00000000..278002e4 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyMoveToGround.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyMoveToGround : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyMoveToGround, ksys::act::ai::Ai) +public: + explicit EnemyMoveToGround(const InitArg& arg); + ~EnemyMoveToGround() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRetryTime_s{}; + // static_param at offset 0x40 + const float* mAreaThreshold_s{}; + // static_param at offset 0x48 + const float* mSearchRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoiseTarget.cpp b/src/Game/AI/AI/aiEnemyNoiseTarget.cpp new file mode 100644 index 00000000..2001435e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoiseTarget.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiEnemyNoiseTarget.h" + +namespace uking::ai { + +EnemyNoiseTarget::EnemyNoiseTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyNoiseTarget::~EnemyNoiseTarget() = default; + +bool EnemyNoiseTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyNoiseTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNoiseTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNoiseTarget::loadParams_() { + getStaticParam(&mLostTime_s, "LostTime"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mRerouteTimeMin_s, "RerouteTimeMin"); + getStaticParam(&mRerouteTimeMax_s, "RerouteTimeMax"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mShieldIdx_s, "ShieldIdx"); + getStaticParam(&mSearchShieldDist_s, "SearchShieldDist"); + getStaticParam(&mNoShieldSearchDist_s, "NoShieldSearchDist"); + getStaticParam(&mUnReachableToRepathDist_s, "UnReachableToRepathDist"); + getStaticParam(&mNoShieldEquipWpIdx_s, "NoShieldEquipWpIdx"); + getStaticParam(&mTooFarPathDist_s, "TooFarPathDist"); + getAITreeVariable(&mIsTrgChangeUnderWaterState_a, "IsTrgChangeUnderWaterState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoiseTarget.h b/src/Game/AI/AI/aiEnemyNoiseTarget.h new file mode 100644 index 00000000..6befd96c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoiseTarget.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoiseTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNoiseTarget, ksys::act::ai::Ai) +public: + explicit EnemyNoiseTarget(const InitArg& arg); + ~EnemyNoiseTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsTrgChangeUnderWaterState_a{}; + // static_param at offset 0x40 + const int* mLostTime_s{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const int* mRerouteTimeMin_s{}; + // static_param at offset 0x58 + const int* mRerouteTimeMax_s{}; + // static_param at offset 0x60 + const float* mNearDist_s{}; + // static_param at offset 0x68 + const float* mFarDist_s{}; + // static_param at offset 0x70 + const int* mShieldIdx_s{}; + // static_param at offset 0x78 + const float* mSearchShieldDist_s{}; + // static_param at offset 0x80 + const int* mNoShieldEquipWpIdx_s{}; + // static_param at offset 0x88 + const float* mNoShieldSearchDist_s{}; + // static_param at offset 0x90 + const float* mUnReachableToRepathDist_s{}; + // static_param at offset 0x98 + const float* mTooFarPathDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNormal.cpp b/src/Game/AI/AI/aiEnemyNormal.cpp new file mode 100644 index 00000000..93532787 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNormal.cpp @@ -0,0 +1,47 @@ +#include "Game/AI/AI/aiEnemyNormal.h" + +namespace uking::ai { + +EnemyNormal::EnemyNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyNormal::~EnemyNormal() = default; + +bool EnemyNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNormal::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mSoundLostTimer_s, "SoundLostTimer"); + getStaticParam(&mNoActionReactTimeMin_s, "NoActionReactTimeMin"); + getStaticParam(&mNoActionReactTimeMax_s, "NoActionReactTimeMax"); + getStaticParam(&mTerritoryArea_s, "TerritoryArea"); + getStaticParam(&mNpcTerritoryArea_s, "NpcTerritoryArea"); + getStaticParam(&mNoPlayerTerritoryArea_s, "NoPlayerTerritoryArea"); + getStaticParam(&mSpreadDist_s, "SpreadDist"); + getStaticParam(&mEnlargeAwnRatio_s, "EnlargeAwnRatio"); + getStaticParam(&mNoticeTerrorLevel_s, "NoticeTerrorLevel"); + getStaticParam(&mSpeadDist2_s, "SpeadDist2"); + getStaticParam(&mHomePosRadius_s, "HomePosRadius"); + getStaticParam(&mSubsTerritoryArea_s, "SubsTerritoryArea"); + getStaticParam(&mLostExtinguishFireDist_s, "LostExtinguishFireDist"); + getStaticParam(&mShortRangeTerritoryArea_s, "ShortRangeTerritoryArea"); + getStaticParam(&mCloseRangeTerritoryArea_s, "CloseRangeTerritoryArea"); + getStaticParam(&mPressBreakObject_s, "PressBreakObject"); + getStaticParam(&mTerritoryHeight_s, "TerritoryHeight"); + getStaticParam(&mIsMindDoubtTarget_s, "IsMindDoubtTarget"); + getStaticParam(&mFortressTag_s, "FortressTag"); + getMapUnitParam(&mTerritoryArea_m, "TerritoryArea"); + getAITreeVariable(&mPlayerSoundSealRefCount_a, "PlayerSoundSealRefCount"); + getAITreeVariable(&mSealNoPlayerAwnRequestCount_a, "SealNoPlayerAwnRequestCount"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNormal.h b/src/Game/AI/AI/aiEnemyNormal.h new file mode 100644 index 00000000..1c606b3f --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNormal.h @@ -0,0 +1,67 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNormal, ksys::act::ai::Ai) +public: + explicit EnemyNormal(const InitArg& arg); + ~EnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mPlayerSoundSealRefCount_a{}; + // aitree_variable at offset 0x40 + int* mSealNoPlayerAwnRequestCount_a{}; + // static_param at offset 0x70 + const int* mWeaponIdx_s{}; + // static_param at offset 0x78 + const int* mSoundLostTimer_s{}; + // static_param at offset 0x80 + const int* mNoActionReactTimeMin_s{}; + // static_param at offset 0x88 + const int* mNoActionReactTimeMax_s{}; + // static_param at offset 0x90 + const float* mTerritoryArea_s{}; + // static_param at offset 0x98 + const float* mNpcTerritoryArea_s{}; + // static_param at offset 0xa0 + const float* mNoPlayerTerritoryArea_s{}; + // static_param at offset 0xa8 + const float* mSpreadDist_s{}; + // static_param at offset 0xb0 + const float* mEnlargeAwnRatio_s{}; + // static_param at offset 0xb8 + const float* mNoticeTerrorLevel_s{}; + // static_param at offset 0xc0 + const float* mSpeadDist2_s{}; + // static_param at offset 0xc8 + const float* mHomePosRadius_s{}; + // static_param at offset 0xd0 + const float* mSubsTerritoryArea_s{}; + // static_param at offset 0xd8 + const float* mLostExtinguishFireDist_s{}; + // static_param at offset 0xe0 + const float* mShortRangeTerritoryArea_s{}; + // static_param at offset 0xe8 + const float* mCloseRangeTerritoryArea_s{}; + // static_param at offset 0xf0 + const float* mPressBreakObject_s{}; + // static_param at offset 0xf8 + const float* mTerritoryHeight_s{}; + // static_param at offset 0x100 + const bool* mIsMindDoubtTarget_s{}; + // static_param at offset 0x108 + sead::SafeString mFortressTag_s{}; + // map_unit_param at offset 0x118 + const float* mTerritoryArea_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNotice.cpp b/src/Game/AI/AI/aiEnemyNotice.cpp new file mode 100644 index 00000000..2cea9d87 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNotice.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiEnemyNotice.h" + +namespace uking::ai { + +EnemyNotice::EnemyNotice(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyNotice::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNotice::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNotice::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNotice.h b/src/Game/AI/AI/aiEnemyNotice.h new file mode 100644 index 00000000..c9e8442a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNotice.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNotice : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNotice, ksys::act::ai::Ai) +public: + explicit EnemyNotice(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x40 + const float* mTurnStartAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.cpp b/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.cpp new file mode 100644 index 00000000..965325ea --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyNoticeActiveEnemy.h" + +namespace uking::ai { + +EnemyNoticeActiveEnemy::EnemyNoticeActiveEnemy(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyNoticeActiveEnemy::~EnemyNoticeActiveEnemy() = default; + +bool EnemyNoticeActiveEnemy::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyNoticeActiveEnemy::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNoticeActiveEnemy::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNoticeActiveEnemy::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.h b/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.h new file mode 100644 index 00000000..88ecd308 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeActiveEnemy.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeActiveEnemy : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNoticeActiveEnemy, ksys::act::ai::Ai) +public: + explicit EnemyNoticeActiveEnemy(const InitArg& arg); + ~EnemyNoticeActiveEnemy() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.cpp b/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.cpp new file mode 100644 index 00000000..6868017c --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h" + +namespace uking::ai { + +EnemyNoticeFearfulLastAttacker::EnemyNoticeFearfulLastAttacker(const InitArg& arg) + : EnemyNoticeTerror(arg) {} + +EnemyNoticeFearfulLastAttacker::~EnemyNoticeFearfulLastAttacker() = default; + +bool EnemyNoticeFearfulLastAttacker::init_(sead::Heap* heap) { + return EnemyNoticeTerror::init_(heap); +} + +void EnemyNoticeFearfulLastAttacker::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeTerror::enter_(params); +} + +void EnemyNoticeFearfulLastAttacker::leave_() { + EnemyNoticeTerror::leave_(); +} + +void EnemyNoticeFearfulLastAttacker::loadParams_() { + EnemyNoticeTerror::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h b/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h new file mode 100644 index 00000000..6d430d1d --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeTerror.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeFearfulLastAttacker : public EnemyNoticeTerror { + SEAD_RTTI_OVERRIDE(EnemyNoticeFearfulLastAttacker, EnemyNoticeTerror) +public: + explicit EnemyNoticeFearfulLastAttacker(const InitArg& arg); + ~EnemyNoticeFearfulLastAttacker() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.cpp b/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.cpp new file mode 100644 index 00000000..7d47961e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyNoticeFearfulTarget.h" + +namespace uking::ai { + +EnemyNoticeFearfulTarget::EnemyNoticeFearfulTarget(const InitArg& arg) : EnemyNoticeTerror(arg) {} + +EnemyNoticeFearfulTarget::~EnemyNoticeFearfulTarget() = default; + +bool EnemyNoticeFearfulTarget::init_(sead::Heap* heap) { + return EnemyNoticeTerror::init_(heap); +} + +void EnemyNoticeFearfulTarget::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeTerror::enter_(params); +} + +void EnemyNoticeFearfulTarget::leave_() { + EnemyNoticeTerror::leave_(); +} + +void EnemyNoticeFearfulTarget::loadParams_() { + EnemyNoticeTerror::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.h b/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.h new file mode 100644 index 00000000..6c182683 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeFearfulTarget.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeTerror.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeFearfulTarget : public EnemyNoticeTerror { + SEAD_RTTI_OVERRIDE(EnemyNoticeFearfulTarget, EnemyNoticeTerror) +public: + explicit EnemyNoticeFearfulTarget(const InitArg& arg); + ~EnemyNoticeFearfulTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeLimit.cpp b/src/Game/AI/AI/aiEnemyNoticeLimit.cpp new file mode 100644 index 00000000..1a9e1a35 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeLimit.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnemyNoticeLimit.h" + +namespace uking::ai { + +EnemyNoticeLimit::EnemyNoticeLimit(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemyNoticeLimit::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyNoticeLimit::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNoticeLimit::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNoticeLimit::loadParams_() { + getStaticParam(&mOverNum_s, "OverNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeLimit.h b/src/Game/AI/AI/aiEnemyNoticeLimit.h new file mode 100644 index 00000000..ae438d74 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeLimit.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeLimit : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNoticeLimit, ksys::act::ai::Ai) +public: + explicit EnemyNoticeLimit(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mOverNum_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSound.cpp b/src/Game/AI/AI/aiEnemyNoticeSound.cpp new file mode 100644 index 00000000..1b6b4665 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSound.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiEnemyNoticeSound.h" + +namespace uking::ai { + +EnemyNoticeSound::EnemyNoticeSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyNoticeSound::~EnemyNoticeSound() = default; + +void EnemyNoticeSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNoticeSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNoticeSound::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSound.h b/src/Game/AI/AI/aiEnemyNoticeSound.h new file mode 100644 index 00000000..2cd1f6ae --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSound.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNoticeSound, ksys::act::ai::Ai) +public: + explicit EnemyNoticeSound(const InitArg& arg); + ~EnemyNoticeSound() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.cpp b/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.cpp new file mode 100644 index 00000000..8ed07633 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyNoticeSoundSensitive.h" + +namespace uking::ai { + +EnemyNoticeSoundSensitive::EnemyNoticeSoundSensitive(const InitArg& arg) + : EnemyNoticeSoundWithUI(arg) {} + +EnemyNoticeSoundSensitive::~EnemyNoticeSoundSensitive() = default; + +bool EnemyNoticeSoundSensitive::init_(sead::Heap* heap) { + return EnemyNoticeSoundWithUI::init_(heap); +} + +void EnemyNoticeSoundSensitive::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeSoundWithUI::enter_(params); +} + +void EnemyNoticeSoundSensitive::leave_() { + EnemyNoticeSoundWithUI::leave_(); +} + +void EnemyNoticeSoundSensitive::loadParams_() { + EnemyNoticeSoundWithUI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.h b/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.h new file mode 100644 index 00000000..38345a87 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundSensitive.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeSoundWithUI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeSoundSensitive : public EnemyNoticeSoundWithUI { + SEAD_RTTI_OVERRIDE(EnemyNoticeSoundSensitive, EnemyNoticeSoundWithUI) +public: + explicit EnemyNoticeSoundSensitive(const InitArg& arg); + ~EnemyNoticeSoundSensitive() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.cpp b/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.cpp new file mode 100644 index 00000000..faad4826 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h" + +namespace uking::ai { + +EnemyNoticeSoundSensitiveTimer::EnemyNoticeSoundSensitiveTimer(const InitArg& arg) + : EnemyNoticeSoundSensitive(arg) {} + +EnemyNoticeSoundSensitiveTimer::~EnemyNoticeSoundSensitiveTimer() = default; + +bool EnemyNoticeSoundSensitiveTimer::init_(sead::Heap* heap) { + return EnemyNoticeSoundSensitive::init_(heap); +} + +void EnemyNoticeSoundSensitiveTimer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeSoundSensitive::enter_(params); +} + +void EnemyNoticeSoundSensitiveTimer::leave_() { + EnemyNoticeSoundSensitive::leave_(); +} + +void EnemyNoticeSoundSensitiveTimer::loadParams_() { + EnemyNoticeSoundSensitive::loadParams_(); + getStaticParam(&mTimer_s, "Timer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h b/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h new file mode 100644 index 00000000..d9ffa4f7 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeSoundSensitive.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeSoundSensitiveTimer : public EnemyNoticeSoundSensitive { + SEAD_RTTI_OVERRIDE(EnemyNoticeSoundSensitiveTimer, EnemyNoticeSoundSensitive) +public: + explicit EnemyNoticeSoundSensitiveTimer(const InitArg& arg); + ~EnemyNoticeSoundSensitiveTimer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + const int* mTimer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.cpp b/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.cpp new file mode 100644 index 00000000..acd0a05a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyNoticeSoundWithUI.h" + +namespace uking::ai { + +EnemyNoticeSoundWithUI::EnemyNoticeSoundWithUI(const InitArg& arg) : EnemyNoticeSound(arg) {} + +EnemyNoticeSoundWithUI::~EnemyNoticeSoundWithUI() = default; + +bool EnemyNoticeSoundWithUI::init_(sead::Heap* heap) { + return EnemyNoticeSound::init_(heap); +} + +void EnemyNoticeSoundWithUI::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeSound::enter_(params); +} + +void EnemyNoticeSoundWithUI::leave_() { + EnemyNoticeSound::leave_(); +} + +void EnemyNoticeSoundWithUI::loadParams_() { + EnemyNoticeSound::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.h b/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.h new file mode 100644 index 00000000..57f10d37 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeSoundWithUI.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeSound.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeSoundWithUI : public EnemyNoticeSound { + SEAD_RTTI_OVERRIDE(EnemyNoticeSoundWithUI, EnemyNoticeSound) +public: + explicit EnemyNoticeSoundWithUI(const InitArg& arg); + ~EnemyNoticeSoundWithUI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeTerror.cpp b/src/Game/AI/AI/aiEnemyNoticeTerror.cpp new file mode 100644 index 00000000..ac4b1917 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeTerror.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEnemyNoticeTerror.h" + +namespace uking::ai { + +EnemyNoticeTerror::EnemyNoticeTerror(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyNoticeTerror::~EnemyNoticeTerror() = default; + +bool EnemyNoticeTerror::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyNoticeTerror::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyNoticeTerror::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyNoticeTerror::loadParams_() { + getStaticParam(&mWaitTime_s, "WaitTime"); + getStaticParam(&mNoWarnDist_s, "NoWarnDist"); + getStaticParam(&mNoWarnHeightMin_s, "NoWarnHeightMin"); + getStaticParam(&mNoWarnHeightMax_s, "NoWarnHeightMax"); + getStaticParam(&mNoTerrorDist_s, "NoTerrorDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyNoticeTerror.h b/src/Game/AI/AI/aiEnemyNoticeTerror.h new file mode 100644 index 00000000..1cc97e94 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyNoticeTerror.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyNoticeTerror : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyNoticeTerror, ksys::act::ai::Ai) +public: + explicit EnemyNoticeTerror(const InitArg& arg); + ~EnemyNoticeTerror() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWaitTime_s{}; + // static_param at offset 0x40 + const float* mNoWarnDist_s{}; + // static_param at offset 0x48 + const float* mNoWarnHeightMin_s{}; + // static_param at offset 0x50 + const float* mNoWarnHeightMax_s{}; + // static_param at offset 0x58 + const float* mNoTerrorDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPermitAttackSelect.cpp b/src/Game/AI/AI/aiEnemyPermitAttackSelect.cpp new file mode 100644 index 00000000..76a20564 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPermitAttackSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyPermitAttackSelect.h" + +namespace uking::ai { + +EnemyPermitAttackSelect::EnemyPermitAttackSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyPermitAttackSelect::~EnemyPermitAttackSelect() = default; + +bool EnemyPermitAttackSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyPermitAttackSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyPermitAttackSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyPermitAttackSelect::loadParams_() { + getStaticParam(&mIsIgnoreEnemyMgr_s, "IsIgnoreEnemyMgr"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPermitAttackSelect.h b/src/Game/AI/AI/aiEnemyPermitAttackSelect.h new file mode 100644 index 00000000..5f29f4d4 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPermitAttackSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyPermitAttackSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyPermitAttackSelect, ksys::act::ai::Ai) +public: + explicit EnemyPermitAttackSelect(const InitArg& arg); + ~EnemyPermitAttackSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsIgnoreEnemyMgr_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingArrowBattle.cpp b/src/Game/AI/AI/aiEnemyPursuingArrowBattle.cpp new file mode 100644 index 00000000..0d120680 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingArrowBattle.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiEnemyPursuingArrowBattle.h" + +namespace uking::ai { + +EnemyPursuingArrowBattle::EnemyPursuingArrowBattle(const InitArg& arg) : BokoblinArrowBattle(arg) {} + +EnemyPursuingArrowBattle::~EnemyPursuingArrowBattle() = default; + +void EnemyPursuingArrowBattle::enter_(ksys::act::ai::InlineParamPack* params) { + BokoblinArrowBattle::enter_(params); +} + +void EnemyPursuingArrowBattle::loadParams_() { + BokoblinArrowBattle::loadParams_(); + getStaticParam(&mPursuingAttackInterval_s, "PursuingAttackInterval"); + getStaticParam(&mPursuingAttackIntervalRand_s, "PursuingAttackIntervalRand"); + getStaticParam(&mPursuingAttackStartDist_s, "PursuingAttackStartDist"); + getStaticParam(&mPursuingAttackStartAng_s, "PursuingAttackStartAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingArrowBattle.h b/src/Game/AI/AI/aiEnemyPursuingArrowBattle.h new file mode 100644 index 00000000..0c249392 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingArrowBattle.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiBokoblinArrowBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyPursuingArrowBattle : public BokoblinArrowBattle { + SEAD_RTTI_OVERRIDE(EnemyPursuingArrowBattle, BokoblinArrowBattle) +public: + explicit EnemyPursuingArrowBattle(const InitArg& arg); + ~EnemyPursuingArrowBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x128 + const int* mPursuingAttackInterval_s{}; + // static_param at offset 0x130 + const int* mPursuingAttackIntervalRand_s{}; + // static_param at offset 0x138 + const float* mPursuingAttackStartDist_s{}; + // static_param at offset 0x140 + const float* mPursuingAttackStartAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingAttackCheck.cpp b/src/Game/AI/AI/aiEnemyPursuingAttackCheck.cpp new file mode 100644 index 00000000..b6188a1a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingAttackCheck.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiEnemyPursuingAttackCheck.h" + +namespace uking::ai { + +EnemyPursuingAttackCheck::EnemyPursuingAttackCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyPursuingAttackCheck::~EnemyPursuingAttackCheck() = default; + +void EnemyPursuingAttackCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyPursuingAttackCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyPursuingAttackCheck::loadParams_() { + getStaticParam(&mPursuingAttackInterval_s, "PursuingAttackInterval"); + getStaticParam(&mPursuingAttackIntervalRand_s, "PursuingAttackIntervalRand"); + getStaticParam(&mPursuingAttackStartAng_s, "PursuingAttackStartAng"); + getStaticParam(&mAttackAng_s, "AttackAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingAttackCheck.h b/src/Game/AI/AI/aiEnemyPursuingAttackCheck.h new file mode 100644 index 00000000..5859c804 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingAttackCheck.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyPursuingAttackCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyPursuingAttackCheck, ksys::act::ai::Ai) +public: + explicit EnemyPursuingAttackCheck(const InitArg& arg); + ~EnemyPursuingAttackCheck() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mPursuingAttackInterval_s{}; + // static_param at offset 0x40 + const int* mPursuingAttackIntervalRand_s{}; + // static_param at offset 0x48 + const float* mPursuingAttackStartAng_s{}; + // static_param at offset 0x50 + const float* mAttackAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingBattle.cpp b/src/Game/AI/AI/aiEnemyPursuingBattle.cpp new file mode 100644 index 00000000..d5c86de0 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingBattle.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiEnemyPursuingBattle.h" + +namespace uking::ai { + +EnemyPursuingBattle::EnemyPursuingBattle(const InitArg& arg) : EnemyBattle(arg) {} + +EnemyPursuingBattle::~EnemyPursuingBattle() = default; + +void EnemyPursuingBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void EnemyPursuingBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mPursuingAttackInterval_s, "PursuingAttackInterval"); + getStaticParam(&mPursuingAttackIntervalRand_s, "PursuingAttackIntervalRand"); + getStaticParam(&mPursuingAttackStartAng_s, "PursuingAttackStartAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyPursuingBattle.h b/src/Game/AI/AI/aiEnemyPursuingBattle.h new file mode 100644 index 00000000..3827b925 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyPursuingBattle.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyPursuingBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(EnemyPursuingBattle, EnemyBattle) +public: + explicit EnemyPursuingBattle(const InitArg& arg); + ~EnemyPursuingBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mPursuingAttackInterval_s{}; + // static_param at offset 0x98 + const int* mPursuingAttackIntervalRand_s{}; + // static_param at offset 0xa0 + const float* mPursuingAttackStartAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.cpp b/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.cpp new file mode 100644 index 00000000..f1d5e060 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiEnemyRandomRepeatSideStep.h" + +namespace uking::ai { + +EnemyRandomRepeatSideStep::EnemyRandomRepeatSideStep(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRandomRepeatSideStep::~EnemyRandomRepeatSideStep() = default; + +void EnemyRandomRepeatSideStep::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRandomRepeatSideStep::loadParams_() { + getStaticParam(&mMinRepeatNum_s, "MinRepeatNum"); + getStaticParam(&mMaxRepeatNum_s, "MaxRepeatNum"); + getStaticParam(&mStepDist_s, "StepDist"); + getStaticParam(&mStepAngle_s, "StepAngle"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.h b/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.h new file mode 100644 index 00000000..58c0fd6d --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRandomRepeatSideStep.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRandomRepeatSideStep : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRandomRepeatSideStep, ksys::act::ai::Ai) +public: + explicit EnemyRandomRepeatSideStep(const InitArg& arg); + ~EnemyRandomRepeatSideStep() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMinRepeatNum_s{}; + // static_param at offset 0x40 + const int* mMaxRepeatNum_s{}; + // static_param at offset 0x48 + const float* mStepDist_s{}; + // static_param at offset 0x50 + const float* mStepAngle_s{}; + // static_param at offset 0x58 + const int* mWeaponIdx_s{}; + // static_param at offset 0x60 + const float* mBaseDist_s{}; + // static_param at offset 0x68 + const float* mOutDist_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRangeKeepMove.cpp b/src/Game/AI/AI/aiEnemyRangeKeepMove.cpp new file mode 100644 index 00000000..afd6ca38 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRangeKeepMove.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" + +namespace uking::ai { + +EnemyRangeKeepMove::EnemyRangeKeepMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRangeKeepMove::~EnemyRangeKeepMove() = default; + +bool EnemyRangeKeepMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRangeKeepMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRangeKeepMove::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mBackTimeMin_s, "BackTimeMin"); + getStaticParam(&mBackTimeMax_s, "BackTimeMax"); + getStaticParam(&mLeaveTimerMin_s, "LeaveTimerMin"); + getStaticParam(&mLeaveTimerMax_s, "LeaveTimerMax"); + getStaticParam(&mPosVibrateFrame_s, "PosVibrateFrame"); + getStaticParam(&mRotVelVibrateFrame_s, "RotVelVibrateFrame"); + getStaticParam(&mCloseDist_s, "CloseDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mSpaceDist_s, "SpaceDist"); + getStaticParam(&mSpaceAngle_s, "SpaceAngle"); + getStaticParam(&mNoMoveDist_s, "NoMoveDist"); + getStaticParam(&mIsCheckBack_s, "IsCheckBack"); + getStaticParam(&mIsCheckReachable_s, "IsCheckReachable"); + getAITreeVariable(&mRefPosVibrateCheckerForAI_a, "RefPosVibrateCheckerForAI"); + getAITreeVariable(&mRefVelRotVibrateCheckerforAI_a, "RefVelRotVibrateCheckerforAI"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRangeKeepMove.h b/src/Game/AI/AI/aiEnemyRangeKeepMove.h new file mode 100644 index 00000000..8a08117d --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRangeKeepMove.h @@ -0,0 +1,57 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRangeKeepMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRangeKeepMove, ksys::act::ai::Ai) +public: + explicit EnemyRangeKeepMove(const InitArg& arg); + ~EnemyRangeKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mRefPosVibrateCheckerForAI_a{}; + // aitree_variable at offset 0x40 + void* mRefVelRotVibrateCheckerforAI_a{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const int* mBackTimeMin_s{}; + // static_param at offset 0x58 + const int* mBackTimeMax_s{}; + // static_param at offset 0x60 + const int* mLeaveTimerMin_s{}; + // static_param at offset 0x68 + const int* mLeaveTimerMax_s{}; + // static_param at offset 0x70 + const int* mPosVibrateFrame_s{}; + // static_param at offset 0x78 + const int* mRotVelVibrateFrame_s{}; + // static_param at offset 0x80 + const float* mCloseDist_s{}; + // static_param at offset 0x88 + const float* mFarDist_s{}; + // static_param at offset 0x90 + const float* mOutDist_s{}; + // static_param at offset 0x98 + const float* mBaseDist_s{}; + // static_param at offset 0xa0 + const float* mSpaceDist_s{}; + // static_param at offset 0xa8 + const float* mSpaceAngle_s{}; + // static_param at offset 0xb0 + const bool* mIsCheckBack_s{}; + // static_param at offset 0xb8 + const bool* mIsCheckReachable_s{}; + // static_param at offset 0xc0 + const float* mNoMoveDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.cpp b/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.cpp new file mode 100644 index 00000000..9a8a3380 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiEnemyRangeKeepSwimMove.h" + +namespace uking::ai { + +EnemyRangeKeepSwimMove::EnemyRangeKeepSwimMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRangeKeepSwimMove::~EnemyRangeKeepSwimMove() = default; + +bool EnemyRangeKeepSwimMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRangeKeepSwimMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRangeKeepSwimMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRangeKeepSwimMove::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mTime_s, "Time"); + getStaticParam(&mCloseDist_s, "CloseDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mSpaceDist_s, "SpaceDist"); + getStaticParam(&mIsCheckCliff_s, "IsCheckCliff"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.h b/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.h new file mode 100644 index 00000000..8cdd47c3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRangeKeepSwimMove.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRangeKeepSwimMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRangeKeepSwimMove, ksys::act::ai::Ai) +public: + explicit EnemyRangeKeepSwimMove(const InitArg& arg); + ~EnemyRangeKeepSwimMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mTime_s{}; + // static_param at offset 0x48 + const float* mCloseDist_s{}; + // static_param at offset 0x50 + const float* mFarDist_s{}; + // static_param at offset 0x58 + const float* mOutDist_s{}; + // static_param at offset 0x60 + const float* mBaseDist_s{}; + // static_param at offset 0x68 + const float* mSpaceDist_s{}; + // static_param at offset 0x70 + const bool* mIsCheckCliff_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRecognizeTarget.cpp b/src/Game/AI/AI/aiEnemyRecognizeTarget.cpp new file mode 100644 index 00000000..6fa56c34 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRecognizeTarget.cpp @@ -0,0 +1,18 @@ +#include "Game/AI/AI/aiEnemyRecognizeTarget.h" + +namespace uking::ai { + +EnemyRecognizeTarget::EnemyRecognizeTarget(const InitArg& arg) : EnemyRecognizeTargetBase(arg) {} + +EnemyRecognizeTarget::~EnemyRecognizeTarget() = default; + +void EnemyRecognizeTarget::loadParams_() { + EnemyRecognizeTargetBase::loadParams_(); + getStaticParam(&mSummonNum_s, "SummonNum"); + getStaticParam(&mSummonGrassHeight_s, "SummonGrassHeight"); + getStaticParam(&mSummonCheckDist_s, "SummonCheckDist"); + getMapUnitParam(&mEquipItem1_m, "EquipItem1"); + getMapUnitParam(&mEquipItem2_m, "EquipItem2"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRecognizeTarget.h b/src/Game/AI/AI/aiEnemyRecognizeTarget.h new file mode 100644 index 00000000..0b456277 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRecognizeTarget.h @@ -0,0 +1,29 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRecognizeTargetBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRecognizeTarget : public EnemyRecognizeTargetBase { + SEAD_RTTI_OVERRIDE(EnemyRecognizeTarget, EnemyRecognizeTargetBase) +public: + explicit EnemyRecognizeTarget(const InitArg& arg); + ~EnemyRecognizeTarget() override; + + void loadParams_() override; + +protected: + // map_unit_param at offset 0x128 + sead::SafeString mEquipItem1_m{}; + // map_unit_param at offset 0x138 + sead::SafeString mEquipItem2_m{}; + // static_param at offset 0x148 + const int* mSummonNum_s{}; + // static_param at offset 0x150 + const float* mSummonGrassHeight_s{}; + // static_param at offset 0x158 + const float* mSummonCheckDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRecognizeTargetBase.cpp b/src/Game/AI/AI/aiEnemyRecognizeTargetBase.cpp new file mode 100644 index 00000000..dc64d276 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRecognizeTargetBase.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiEnemyRecognizeTargetBase.h" + +namespace uking::ai { + +EnemyRecognizeTargetBase::EnemyRecognizeTargetBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRecognizeTargetBase::~EnemyRecognizeTargetBase() = default; + +bool EnemyRecognizeTargetBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRecognizeTargetBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRecognizeTargetBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRecognizeTargetBase::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mCryInterval_s, "CryInterval"); + getStaticParam(&mRandomCryInterval_s, "RandomCryInterval"); + getStaticParam(&mRandomCryIntervalMax_s, "RandomCryIntervalMax"); + getStaticParam(&mSpreadDist_s, "SpreadDist"); + getStaticParam(&mNoCryDist_s, "NoCryDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRecognizeTargetBase.h b/src/Game/AI/AI/aiEnemyRecognizeTargetBase.h new file mode 100644 index 00000000..189ec905 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRecognizeTargetBase.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRecognizeTargetBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRecognizeTargetBase, ksys::act::ai::Ai) +public: + explicit EnemyRecognizeTargetBase(const InitArg& arg); + ~EnemyRecognizeTargetBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const int* mCryInterval_s{}; + // static_param at offset 0x50 + const int* mRandomCryInterval_s{}; + // static_param at offset 0x58 + const int* mRandomCryIntervalMax_s{}; + // static_param at offset 0x60 + const float* mSpreadDist_s{}; + // static_param at offset 0x68 + const float* mNoCryDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRestraintCheckBattle.cpp b/src/Game/AI/AI/aiEnemyRestraintCheckBattle.cpp new file mode 100644 index 00000000..6c2aa8c0 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRestraintCheckBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyRestraintCheckBattle.h" + +namespace uking::ai { + +EnemyRestraintCheckBattle::EnemyRestraintCheckBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRestraintCheckBattle::~EnemyRestraintCheckBattle() = default; + +void EnemyRestraintCheckBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRestraintCheckBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRestraintCheckBattle::loadParams_() { + getStaticParam(&mCheckInterval_s, "CheckInterval"); + getStaticParam(&mCheckRandTime_s, "CheckRandTime"); + getStaticParam(&mCheckDist_s, "CheckDist"); + getStaticParam(&mCheckVmin_s, "CheckVmin"); + getStaticParam(&mCheckVmax_s, "CheckVmax"); + getStaticParam(&mCheckAngle_s, "CheckAngle"); + getStaticParam(&mIsResetInterval_s, "IsResetInterval"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRestraintCheckBattle.h b/src/Game/AI/AI/aiEnemyRestraintCheckBattle.h new file mode 100644 index 00000000..0905b6af --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRestraintCheckBattle.h @@ -0,0 +1,34 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRestraintCheckBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRestraintCheckBattle, ksys::act::ai::Ai) +public: + explicit EnemyRestraintCheckBattle(const InitArg& arg); + ~EnemyRestraintCheckBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCheckInterval_s{}; + // static_param at offset 0x40 + const int* mCheckRandTime_s{}; + // static_param at offset 0x48 + const float* mCheckDist_s{}; + // static_param at offset 0x50 + const float* mCheckVmin_s{}; + // static_param at offset 0x58 + const float* mCheckVmax_s{}; + // static_param at offset 0x60 + const float* mCheckAngle_s{}; + // static_param at offset 0x68 + const bool* mIsResetInterval_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyReturnSelect.cpp b/src/Game/AI/AI/aiEnemyReturnSelect.cpp new file mode 100644 index 00000000..a5604e29 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyReturnSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyReturnSelect.h" + +namespace uking::ai { + +EnemyReturnSelect::EnemyReturnSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyReturnSelect::~EnemyReturnSelect() = default; + +bool EnemyReturnSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyReturnSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyReturnSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyReturnSelect::loadParams_() { + getStaticParam(&mNotReturnDist_s, "NotReturnDist"); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyReturnSelect.h b/src/Game/AI/AI/aiEnemyReturnSelect.h new file mode 100644 index 00000000..b8231419 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyReturnSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyReturnSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyReturnSelect, ksys::act::ai::Ai) +public: + explicit EnemyReturnSelect(const InitArg& arg); + ~EnemyReturnSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNotReturnDist_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoam.cpp b/src/Game/AI/AI/aiEnemyRoam.cpp new file mode 100644 index 00000000..a46078ab --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoam.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiEnemyRoam.h" + +namespace uking::ai { + +EnemyRoam::EnemyRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRoam::loadParams_() { + getStaticParam(&mSearchPer_s, "SearchPer"); + getStaticParam(&mTerritoryRadius_s, "TerritoryRadius"); + getStaticParam(&mTerritoryRadiusRnd_s, "TerritoryRadiusRnd"); + getStaticParam(&mMinMoveDist_s, "MinMoveDist"); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoam.h b/src/Game/AI/AI/aiEnemyRoam.h new file mode 100644 index 00000000..4a6a5953 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoam.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRoam, ksys::act::ai::Ai) +public: + explicit EnemyRoam(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSearchPer_s{}; + // static_param at offset 0x40 + const float* mTerritoryRadius_s{}; + // static_param at offset 0x48 + const float* mTerritoryRadiusRnd_s{}; + // static_param at offset 0x50 + const float* mMinMoveDist_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoamSelect.cpp b/src/Game/AI/AI/aiEnemyRoamSelect.cpp new file mode 100644 index 00000000..227d72cc --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoamSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyRoamSelect.h" + +namespace uking::ai { + +EnemyRoamSelect::EnemyRoamSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRoamSelect::~EnemyRoamSelect() = default; + +bool EnemyRoamSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRoamSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRoamSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRoamSelect::loadParams_() { + getStaticParam(&mHideGrassHeight_s, "HideGrassHeight"); + getDynamicParam(&mCentralPos_d, "CentralPos"); + getStaticParam(&mNotReturnDist_s, "NotReturnDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoamSelect.h b/src/Game/AI/AI/aiEnemyRoamSelect.h new file mode 100644 index 00000000..74517d5f --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoamSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRoamSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRoamSelect, ksys::act::ai::Ai) +public: + explicit EnemyRoamSelect(const InitArg& arg); + ~EnemyRoamSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mHideGrassHeight_s{}; + // static_param at offset 0x40 + const float* mNotReturnDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoamViewItem.cpp b/src/Game/AI/AI/aiEnemyRoamViewItem.cpp new file mode 100644 index 00000000..7822068b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoamViewItem.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEnemyRoamViewItem.h" + +namespace uking::ai { + +EnemyRoamViewItem::EnemyRoamViewItem(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRoamViewItem::~EnemyRoamViewItem() = default; + +bool EnemyRoamViewItem::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRoamViewItem::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRoamViewItem::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRoamViewItem::loadParams_() { + getDynamicParam(&mIsChanged_d, "IsChanged"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoamViewItem.h b/src/Game/AI/AI/aiEnemyRoamViewItem.h new file mode 100644 index 00000000..9d96f54a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoamViewItem.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRoamViewItem : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRoamViewItem, ksys::act::ai::Ai) +public: + explicit EnemyRoamViewItem(const InitArg& arg); + ~EnemyRoamViewItem() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsChanged_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoot.cpp b/src/Game/AI/AI/aiEnemyRoot.cpp new file mode 100644 index 00000000..c3027026 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoot.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiEnemyRoot.h" + +namespace uking::ai { + +EnemyRoot::EnemyRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyRoot::~EnemyRoot() = default; + +bool EnemyRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyRoot::loadParams_() { + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mOutOfWaterOffset_s, "OutOfWaterOffset"); + getStaticParam(&mSpreadDist_s, "SpreadDist"); + getStaticParam(&mSmallSpreadDist_s, "SmallSpreadDist"); + getStaticParam(&mFortressTag_s, "FortressTag"); + getStaticParam(&mIgnoreHell_s, "IgnoreHell"); + getMapUnitParam(&mIsNearCreate_m, "IsNearCreate"); + getMapUnitParam(&mEquipItem1_m, "EquipItem1"); + getMapUnitParam(&mEquipItem2_m, "EquipItem2"); + getMapUnitParam(&mEquipItem3_m, "EquipItem3"); + getMapUnitParam(&mEquipItem4_m, "EquipItem4"); + getMapUnitParam(&mRideHorseName_m, "RideHorseName"); + getAITreeVariable(&mCreateDeadConditionType_a, "CreateDeadConditionType"); + getAITreeVariable(&mForceSealSilentKillCount_a, "ForceSealSilentKillCount"); + getAITreeVariable(&mIsTrgChangeUnderWaterState_a, "IsTrgChangeUnderWaterState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyRoot.h b/src/Game/AI/AI/aiEnemyRoot.h new file mode 100644 index 00000000..84fc3efb --- /dev/null +++ b/src/Game/AI/AI/aiEnemyRoot.h @@ -0,0 +1,53 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyRoot, ksys::act::ai::Ai) +public: + explicit EnemyRoot(const InitArg& arg); + ~EnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // static_param at offset 0x40 + const float* mInWaterDepth_s{}; + // static_param at offset 0x48 + const float* mOutOfWaterOffset_s{}; + // static_param at offset 0x50 + const float* mSpreadDist_s{}; + // static_param at offset 0x58 + const float* mSmallSpreadDist_s{}; + // static_param at offset 0x60 + const bool* mIgnoreHell_s{}; + // static_param at offset 0x68 + sead::SafeString mFortressTag_s{}; + // map_unit_param at offset 0x78 + const bool* mIsNearCreate_m{}; + // map_unit_param at offset 0x80 + sead::SafeString mEquipItem1_m{}; + // map_unit_param at offset 0x90 + sead::SafeString mEquipItem2_m{}; + // map_unit_param at offset 0xa0 + sead::SafeString mEquipItem3_m{}; + // map_unit_param at offset 0xb0 + sead::SafeString mEquipItem4_m{}; + // map_unit_param at offset 0xc0 + sead::SafeString mRideHorseName_m{}; + // aitree_variable at offset 0xd0 + int* mCreateDeadConditionType_a{}; + // aitree_variable at offset 0xd8 + int* mForceSealSilentKillCount_a{}; + // aitree_variable at offset 0xe0 + bool* mIsTrgChangeUnderWaterState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySearchHorse.cpp b/src/Game/AI/AI/aiEnemySearchHorse.cpp new file mode 100644 index 00000000..33a5c1eb --- /dev/null +++ b/src/Game/AI/AI/aiEnemySearchHorse.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEnemySearchHorse.h" + +namespace uking::ai { + +EnemySearchHorse::EnemySearchHorse(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemySearchHorse::~EnemySearchHorse() = default; + +bool EnemySearchHorse::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemySearchHorse::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemySearchHorse::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemySearchHorse::loadParams_() { + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mSearchDist_s, "SearchDist"); + getStaticParam(&mRideRadius_s, "RideRadius"); + getStaticParam(&mNoWeaponRiding_s, "NoWeaponRiding"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySearchHorse.h b/src/Game/AI/AI/aiEnemySearchHorse.h new file mode 100644 index 00000000..338ab9fd --- /dev/null +++ b/src/Game/AI/AI/aiEnemySearchHorse.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySearchHorse : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemySearchHorse, ksys::act::ai::Ai) +public: + explicit EnemySearchHorse(const InitArg& arg); + ~EnemySearchHorse() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRepathTime_s{}; + // static_param at offset 0x40 + const float* mSearchDist_s{}; + // static_param at offset 0x48 + const float* mRideRadius_s{}; + // static_param at offset 0x50 + const bool* mNoWeaponRiding_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.cpp b/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.cpp new file mode 100644 index 00000000..171299eb --- /dev/null +++ b/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h" + +namespace uking::ai { + +EnemySearchShieldItemFindPlayer::EnemySearchShieldItemFindPlayer(const InitArg& arg) + : LandHumEnemyFindPlayer(arg) {} + +EnemySearchShieldItemFindPlayer::~EnemySearchShieldItemFindPlayer() = default; + +bool EnemySearchShieldItemFindPlayer::init_(sead::Heap* heap) { + return LandHumEnemyFindPlayer::init_(heap); +} + +void EnemySearchShieldItemFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyFindPlayer::enter_(params); +} + +void EnemySearchShieldItemFindPlayer::leave_() { + LandHumEnemyFindPlayer::leave_(); +} + +void EnemySearchShieldItemFindPlayer::loadParams_() { + LandHumEnemyFindPlayer::loadParams_(); + getStaticParam(&mShieldIdx_s, "ShieldIdx"); + getStaticParam(&mSearchShieldDist_s, "SearchShieldDist"); + getStaticParam(&mNoShieldSearchDist_s, "NoShieldSearchDist"); + getStaticParam(&mSearchObjectDist_s, "SearchObjectDist"); + getStaticParam(&mItemChaseableSpd_s, "ItemChaseableSpd"); + getStaticParam(&mItemChasealeRot_s, "ItemChasealeRot"); + getStaticParam(&mCanGrabHeavy_s, "CanGrabHeavy"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h b/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h new file mode 100644 index 00000000..90618259 --- /dev/null +++ b/src/Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySearchShieldItemFindPlayer : public LandHumEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(EnemySearchShieldItemFindPlayer, LandHumEnemyFindPlayer) +public: + explicit EnemySearchShieldItemFindPlayer(const InitArg& arg); + ~EnemySearchShieldItemFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1e8 + const int* mShieldIdx_s{}; + // static_param at offset 0x1f0 + const float* mSearchShieldDist_s{}; + // static_param at offset 0x1f8 + const float* mNoShieldSearchDist_s{}; + // static_param at offset 0x200 + const float* mSearchObjectDist_s{}; + // static_param at offset 0x208 + const float* mItemChaseableSpd_s{}; + // static_param at offset 0x210 + const float* mItemChasealeRot_s{}; + // static_param at offset 0x218 + const bool* mCanGrabHeavy_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.cpp b/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.cpp new file mode 100644 index 00000000..ec2fa291 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiEnemyShieldSearchOrBattle.h" + +namespace uking::ai { + +EnemyShieldSearchOrBattle::EnemyShieldSearchOrBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyShieldSearchOrBattle::~EnemyShieldSearchOrBattle() = default; + +bool EnemyShieldSearchOrBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyShieldSearchOrBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyShieldSearchOrBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyShieldSearchOrBattle::loadParams_() { + getStaticParam(&mShieldIdx_s, "ShieldIdx"); + getStaticParam(&mSearchShieldDist_s, "SearchShieldDist"); + getStaticParam(&mNoShieldSearchDist_s, "NoShieldSearchDist"); + getStaticParam(&mNoShieldTargetNearDist_s, "NoShieldTargetNearDist"); + getStaticParam(&mShieldReachDist_s, "ShieldReachDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mNoShieldEquipWpIdx_s, "NoShieldEquipWpIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.h b/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.h new file mode 100644 index 00000000..251d9a4d --- /dev/null +++ b/src/Game/AI/AI/aiEnemyShieldSearchOrBattle.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyShieldSearchOrBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyShieldSearchOrBattle, ksys::act::ai::Ai) +public: + explicit EnemyShieldSearchOrBattle(const InitArg& arg); + ~EnemyShieldSearchOrBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mShieldIdx_s{}; + // static_param at offset 0x40 + const int* mNoShieldEquipWpIdx_s{}; + // static_param at offset 0x48 + const float* mSearchShieldDist_s{}; + // static_param at offset 0x50 + const float* mNoShieldSearchDist_s{}; + // static_param at offset 0x58 + const float* mNoShieldTargetNearDist_s{}; + // static_param at offset 0x60 + const float* mShieldReachDist_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyShootAttackExplosives.cpp b/src/Game/AI/AI/aiEnemyShootAttackExplosives.cpp new file mode 100644 index 00000000..157673c3 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyShootAttackExplosives.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiEnemyShootAttackExplosives.h" + +namespace uking::ai { + +EnemyShootAttackExplosives::EnemyShootAttackExplosives(const InitArg& arg) + : EnemyBaseArrowAttack(arg) {} + +EnemyShootAttackExplosives::~EnemyShootAttackExplosives() = default; + +void EnemyShootAttackExplosives::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseArrowAttack::enter_(params); +} + +void EnemyShootAttackExplosives::loadParams_() { + EnemyBaseArrowAttack::loadParams_(); + getStaticParam(&mExplosivesAvoidDist_s, "ExplosivesAvoidDist"); + getStaticParam(&mTurnStartAng_s, "TurnStartAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyShootAttackExplosives.h b/src/Game/AI/AI/aiEnemyShootAttackExplosives.h new file mode 100644 index 00000000..235fbe25 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyShootAttackExplosives.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseArrowAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyShootAttackExplosives : public EnemyBaseArrowAttack { + SEAD_RTTI_OVERRIDE(EnemyShootAttackExplosives, EnemyBaseArrowAttack) +public: + explicit EnemyShootAttackExplosives(const InitArg& arg); + ~EnemyShootAttackExplosives() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const float* mExplosivesAvoidDist_s{}; + // static_param at offset 0x58 + const float* mTurnStartAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySittingTogether.cpp b/src/Game/AI/AI/aiEnemySittingTogether.cpp new file mode 100644 index 00000000..6a0b4d0e --- /dev/null +++ b/src/Game/AI/AI/aiEnemySittingTogether.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiEnemySittingTogether.h" + +namespace uking::ai { + +EnemySittingTogether::EnemySittingTogether(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool EnemySittingTogether::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemySittingTogether::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemySittingTogether::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemySittingTogether::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mIsNextActionReserved_a, "IsNextActionReserved"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySittingTogether.h b/src/Game/AI/AI/aiEnemySittingTogether.h new file mode 100644 index 00000000..7cfbbf67 --- /dev/null +++ b/src/Game/AI/AI/aiEnemySittingTogether.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySittingTogether : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemySittingTogether, ksys::act::ai::Ai) +public: + explicit EnemySittingTogether(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsNextActionReserved_a{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySkyArrowAttack.cpp b/src/Game/AI/AI/aiEnemySkyArrowAttack.cpp new file mode 100644 index 00000000..42f5be37 --- /dev/null +++ b/src/Game/AI/AI/aiEnemySkyArrowAttack.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemySkyArrowAttack.h" + +namespace uking::ai { + +EnemySkyArrowAttack::EnemySkyArrowAttack(const InitArg& arg) : EnemyBaseArrowAttack(arg) {} + +EnemySkyArrowAttack::~EnemySkyArrowAttack() = default; + +bool EnemySkyArrowAttack::init_(sead::Heap* heap) { + return EnemyBaseArrowAttack::init_(heap); +} + +void EnemySkyArrowAttack::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseArrowAttack::enter_(params); +} + +void EnemySkyArrowAttack::leave_() { + EnemyBaseArrowAttack::leave_(); +} + +void EnemySkyArrowAttack::loadParams_() { + EnemyBaseArrowAttack::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySkyArrowAttack.h b/src/Game/AI/AI/aiEnemySkyArrowAttack.h new file mode 100644 index 00000000..fd34055f --- /dev/null +++ b/src/Game/AI/AI/aiEnemySkyArrowAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseArrowAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySkyArrowAttack : public EnemyBaseArrowAttack { + SEAD_RTTI_OVERRIDE(EnemySkyArrowAttack, EnemyBaseArrowAttack) +public: + explicit EnemySkyArrowAttack(const InitArg& arg); + ~EnemySkyArrowAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySomeIgniteBattle.cpp b/src/Game/AI/AI/aiEnemySomeIgniteBattle.cpp new file mode 100644 index 00000000..09631cb2 --- /dev/null +++ b/src/Game/AI/AI/aiEnemySomeIgniteBattle.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiEnemySomeIgniteBattle.h" + +namespace uking::ai { + +EnemySomeIgniteBattle::EnemySomeIgniteBattle(const InitArg& arg) : BreathAttackEnemyBattle(arg) {} + +EnemySomeIgniteBattle::~EnemySomeIgniteBattle() = default; + +void EnemySomeIgniteBattle::enter_(ksys::act::ai::InlineParamPack* params) { + BreathAttackEnemyBattle::enter_(params); +} + +void EnemySomeIgniteBattle::leave_() { + BreathAttackEnemyBattle::leave_(); +} + +void EnemySomeIgniteBattle::loadParams_() { + BreathAttackEnemyBattle::loadParams_(); + getStaticParam(&mIgniteNum_s, "IgniteNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySomeIgniteBattle.h b/src/Game/AI/AI/aiEnemySomeIgniteBattle.h new file mode 100644 index 00000000..852f23dc --- /dev/null +++ b/src/Game/AI/AI/aiEnemySomeIgniteBattle.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiBreathAttackEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySomeIgniteBattle : public BreathAttackEnemyBattle { + SEAD_RTTI_OVERRIDE(EnemySomeIgniteBattle, BreathAttackEnemyBattle) +public: + explicit EnemySomeIgniteBattle(const InitArg& arg); + ~EnemySomeIgniteBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb0 + const int* mIgniteNum_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySyncAttack.cpp b/src/Game/AI/AI/aiEnemySyncAttack.cpp new file mode 100644 index 00000000..56ebb4bf --- /dev/null +++ b/src/Game/AI/AI/aiEnemySyncAttack.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiEnemySyncAttack.h" + +namespace uking::ai { + +EnemySyncAttack::EnemySyncAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemySyncAttack::~EnemySyncAttack() = default; + +void EnemySyncAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemySyncAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemySyncAttack::loadParams_() { + getStaticParam(&mNormalASSlot_s, "NormalASSlot"); + getStaticParam(&mAttackASSlot_s, "AttackASSlot"); + getStaticParam(&mJustAvoidCheckLength_s, "JustAvoidCheckLength"); + getStaticParam(&mJustAvoidCheckAngle_s, "JustAvoidCheckAngle"); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mAttackNodeName_s, "AttackNodeName"); + getStaticParam(&mAttackNodeNameWait_s, "AttackNodeNameWait"); + getStaticParam(&mAttackASName_s, "AttackASName"); + getStaticParam(&mAtNodeName_s, "AtNodeName"); + getStaticParam(&mAttackDistMin_s, "AttackDistMin"); + getStaticParam(&mAttackDistMax_s, "AttackDistMax"); + getStaticParam(&mAttackInterval_s, "AttackInterval"); + getStaticParam(&mAttackIntervalRand_s, "AttackIntervalRand"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemySyncAttack.h b/src/Game/AI/AI/aiEnemySyncAttack.h new file mode 100644 index 00000000..39237106 --- /dev/null +++ b/src/Game/AI/AI/aiEnemySyncAttack.h @@ -0,0 +1,46 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemySyncAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemySyncAttack, ksys::act::ai::Ai) +public: + explicit EnemySyncAttack(const InitArg& arg); + ~EnemySyncAttack() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNormalASSlot_s{}; + // static_param at offset 0x40 + const int* mAttackASSlot_s{}; + // static_param at offset 0x48 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0x58 + sead::SafeString mAttackNodeName_s{}; + // static_param at offset 0x68 + sead::SafeString mAttackNodeNameWait_s{}; + // static_param at offset 0x78 + sead::SafeString mAttackASName_s{}; + // static_param at offset 0x88 + sead::SafeString mAtNodeName_s{}; + // static_param at offset 0x98 + const float* mJustAvoidCheckLength_s{}; + // static_param at offset 0xa0 + const float* mJustAvoidCheckAngle_s{}; + // static_param at offset 0xa8 + const float* mAttackDistMin_s{}; + // static_param at offset 0xb0 + const float* mAttackDistMax_s{}; + // static_param at offset 0xb8 + const int* mAttackInterval_s{}; + // static_param at offset 0xc0 + const int* mAttackIntervalRand_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetGearSelect.cpp b/src/Game/AI/AI/aiEnemyTargetGearSelect.cpp new file mode 100644 index 00000000..040c904e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetGearSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyTargetGearSelect.h" + +namespace uking::ai { + +EnemyTargetGearSelect::EnemyTargetGearSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyTargetGearSelect::~EnemyTargetGearSelect() = default; + +bool EnemyTargetGearSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyTargetGearSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyTargetGearSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyTargetGearSelect::loadParams_() { + getStaticParam(&mGearThreashold_s, "GearThreashold"); + getStaticParam(&mIsSelectEveryFrame_s, "IsSelectEveryFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetGearSelect.h b/src/Game/AI/AI/aiEnemyTargetGearSelect.h new file mode 100644 index 00000000..30d88d93 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetGearSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTargetGearSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyTargetGearSelect, ksys::act::ai::Ai) +public: + explicit EnemyTargetGearSelect(const InitArg& arg); + ~EnemyTargetGearSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mGearThreashold_s{}; + // static_param at offset 0x40 + const bool* mIsSelectEveryFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetInAreaSelect.cpp b/src/Game/AI/AI/aiEnemyTargetInAreaSelect.cpp new file mode 100644 index 00000000..fc4fad35 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetInAreaSelect.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEnemyTargetInAreaSelect.h" + +namespace uking::ai { + +EnemyTargetInAreaSelect::EnemyTargetInAreaSelect(const InitArg& arg) : TargetInAreaSelect(arg) {} + +EnemyTargetInAreaSelect::~EnemyTargetInAreaSelect() = default; + +bool EnemyTargetInAreaSelect::init_(sead::Heap* heap) { + return TargetInAreaSelect::init_(heap); +} + +void EnemyTargetInAreaSelect::enter_(ksys::act::ai::InlineParamPack* params) { + TargetInAreaSelect::enter_(params); +} + +void EnemyTargetInAreaSelect::leave_() { + TargetInAreaSelect::leave_(); +} + +void EnemyTargetInAreaSelect::loadParams_() { + TargetInAreaSelect::loadParams_(); + getStaticParam(&mLengthXZ_s, "LengthXZ"); + getStaticParam(&mLengthMaxY_s, "LengthMaxY"); + getStaticParam(&mLengthMinY_s, "LengthMinY"); + getStaticParam(&mCentOffset_s, "CentOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetInAreaSelect.h b/src/Game/AI/AI/aiEnemyTargetInAreaSelect.h new file mode 100644 index 00000000..dcc777cf --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetInAreaSelect.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiTargetInAreaSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTargetInAreaSelect : public TargetInAreaSelect { + SEAD_RTTI_OVERRIDE(EnemyTargetInAreaSelect, TargetInAreaSelect) +public: + explicit EnemyTargetInAreaSelect(const InitArg& arg); + ~EnemyTargetInAreaSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mLengthXZ_s{}; + // static_param at offset 0x48 + const float* mLengthMaxY_s{}; + // static_param at offset 0x50 + const float* mLengthMinY_s{}; + // static_param at offset 0x58 + const sead::Vector3f* mCentOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetInSightSelect.cpp b/src/Game/AI/AI/aiEnemyTargetInSightSelect.cpp new file mode 100644 index 00000000..d0c98d70 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetInSightSelect.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiEnemyTargetInSightSelect.h" + +namespace uking::ai { + +EnemyTargetInSightSelect::EnemyTargetInSightSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyTargetInSightSelect::~EnemyTargetInSightSelect() = default; + +void EnemyTargetInSightSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyTargetInSightSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTargetInSightSelect.h b/src/Game/AI/AI/aiEnemyTargetInSightSelect.h new file mode 100644 index 00000000..9ca1063b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTargetInSightSelect.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTargetInSightSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyTargetInSightSelect, ksys::act::ai::Ai) +public: + explicit EnemyTargetInSightSelect(const InitArg& arg); + ~EnemyTargetInSightSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTimelineAI.cpp b/src/Game/AI/AI/aiEnemyTimelineAI.cpp new file mode 100644 index 00000000..3ccd4730 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTimelineAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyTimelineAI.h" + +namespace uking::ai { + +EnemyTimelineAI::EnemyTimelineAI(const InitArg& arg) : TimelineAI(arg) {} + +EnemyTimelineAI::~EnemyTimelineAI() = default; + +bool EnemyTimelineAI::init_(sead::Heap* heap) { + return TimelineAI::init_(heap); +} + +void EnemyTimelineAI::enter_(ksys::act::ai::InlineParamPack* params) { + TimelineAI::enter_(params); +} + +void EnemyTimelineAI::leave_() { + TimelineAI::leave_(); +} + +void EnemyTimelineAI::loadParams_() { + TimelineAI::loadParams_(); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTimelineAI.h b/src/Game/AI/AI/aiEnemyTimelineAI.h new file mode 100644 index 00000000..54d5ac6b --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTimelineAI.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTimelineAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTimelineAI : public TimelineAI { + SEAD_RTTI_OVERRIDE(EnemyTimelineAI, TimelineAI) +public: + explicit EnemyTimelineAI(const InitArg& arg); + ~EnemyTimelineAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x40 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTired.cpp b/src/Game/AI/AI/aiEnemyTired.cpp new file mode 100644 index 00000000..acd5bc1a --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTired.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiEnemyTired.h" + +namespace uking::ai { + +EnemyTired::EnemyTired(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void EnemyTired::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyTired::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTired.h b/src/Game/AI/AI/aiEnemyTired.h new file mode 100644 index 00000000..0747a4cd --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTired.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTired : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyTired, ksys::act::ai::Ai) +public: + explicit EnemyTired(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.cpp b/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.cpp new file mode 100644 index 00000000..8eea03a2 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h" + +namespace uking::ai { + +EnemyTreeWeaponSearchOrBattle::EnemyTreeWeaponSearchOrBattle(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +EnemyTreeWeaponSearchOrBattle::~EnemyTreeWeaponSearchOrBattle() = default; + +bool EnemyTreeWeaponSearchOrBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyTreeWeaponSearchOrBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyTreeWeaponSearchOrBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyTreeWeaponSearchOrBattle::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mSearchDist_s, "SearchDist"); + getStaticParam(&mNoSearchDist_s, "NoSearchDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h b/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h new file mode 100644 index 00000000..a92003cf --- /dev/null +++ b/src/Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyTreeWeaponSearchOrBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyTreeWeaponSearchOrBattle, ksys::act::ai::Ai) +public: + explicit EnemyTreeWeaponSearchOrBattle(const InitArg& arg); + ~EnemyTreeWeaponSearchOrBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mSearchDist_s{}; + // static_param at offset 0x48 + const float* mNoSearchDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumBombSelect.cpp b/src/Game/AI/AI/aiEnemyVacuumBombSelect.cpp new file mode 100644 index 00000000..95a2ab52 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumBombSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyVacuumBombSelect.h" + +namespace uking::ai { + +EnemyVacuumBombSelect::EnemyVacuumBombSelect(const InitArg& arg) : EnemyVacuumBombSelectBase(arg) {} + +EnemyVacuumBombSelect::~EnemyVacuumBombSelect() = default; + +bool EnemyVacuumBombSelect::init_(sead::Heap* heap) { + return EnemyVacuumBombSelectBase::init_(heap); +} + +void EnemyVacuumBombSelect::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyVacuumBombSelectBase::enter_(params); +} + +void EnemyVacuumBombSelect::leave_() { + EnemyVacuumBombSelectBase::leave_(); +} + +void EnemyVacuumBombSelect::loadParams_() { + EnemyVacuumBombSelectBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumBombSelect.h b/src/Game/AI/AI/aiEnemyVacuumBombSelect.h new file mode 100644 index 00000000..c9eb4c52 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumBombSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyVacuumBombSelectBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyVacuumBombSelect : public EnemyVacuumBombSelectBase { + SEAD_RTTI_OVERRIDE(EnemyVacuumBombSelect, EnemyVacuumBombSelectBase) +public: + explicit EnemyVacuumBombSelect(const InitArg& arg); + ~EnemyVacuumBombSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.cpp b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.cpp new file mode 100644 index 00000000..fb5dfca1 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.cpp @@ -0,0 +1,55 @@ +#include "Game/AI/AI/aiEnemyVacuumBombSelectBase.h" + +namespace uking::ai { + +EnemyVacuumBombSelectBase::EnemyVacuumBombSelectBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyVacuumBombSelectBase::~EnemyVacuumBombSelectBase() = default; + +bool EnemyVacuumBombSelectBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyVacuumBombSelectBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyVacuumBombSelectBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyVacuumBombSelectBase::loadParams_() { + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x89 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h new file mode 100644 index 00000000..46f98880 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumBombSelectBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyVacuumBombSelectBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyVacuumBombSelectBase, ksys::act::ai::Ai) +public: + explicit EnemyVacuumBombSelectBase(const InitArg& arg); + ~EnemyVacuumBombSelectBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.cpp b/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.cpp new file mode 100644 index 00000000..439a0fda --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyVacuumChangeItemSelect.h" + +namespace uking::ai { + +EnemyVacuumChangeItemSelect::EnemyVacuumChangeItemSelect(const InitArg& arg) + : EnemyVacuumBombSelect(arg) {} + +EnemyVacuumChangeItemSelect::~EnemyVacuumChangeItemSelect() = default; + +bool EnemyVacuumChangeItemSelect::init_(sead::Heap* heap) { + return EnemyVacuumBombSelect::init_(heap); +} + +void EnemyVacuumChangeItemSelect::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyVacuumBombSelect::enter_(params); +} + +void EnemyVacuumChangeItemSelect::leave_() { + EnemyVacuumBombSelect::leave_(); +} + +void EnemyVacuumChangeItemSelect::loadParams_() { + EnemyVacuumBombSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.h b/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.h new file mode 100644 index 00000000..afd60fe7 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumChangeItemSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyVacuumBombSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyVacuumChangeItemSelect : public EnemyVacuumBombSelect { + SEAD_RTTI_OVERRIDE(EnemyVacuumChangeItemSelect, EnemyVacuumBombSelect) +public: + explicit EnemyVacuumChangeItemSelect(const InitArg& arg); + ~EnemyVacuumChangeItemSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.cpp b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.cpp new file mode 100644 index 00000000..983074ec --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h" + +namespace uking::ai { + +EnemyVacuumWeaponTypeSelect::EnemyVacuumWeaponTypeSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +EnemyVacuumWeaponTypeSelect::~EnemyVacuumWeaponTypeSelect() = default; + +bool EnemyVacuumWeaponTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyVacuumWeaponTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyVacuumWeaponTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyVacuumWeaponTypeSelect::loadParams_() { + getStaticParam(&mPartsKey_s, "PartsKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h new file mode 100644 index 00000000..2b5beba6 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyVacuumWeaponTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyVacuumWeaponTypeSelect, ksys::act::ai::Ai) +public: + explicit EnemyVacuumWeaponTypeSelect(const InitArg& arg); + ~EnemyVacuumWeaponTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mPartsKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWaitViewItem.cpp b/src/Game/AI/AI/aiEnemyWaitViewItem.cpp new file mode 100644 index 00000000..7d187220 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWaitViewItem.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyWaitViewItem.h" + +namespace uking::ai { + +EnemyWaitViewItem::EnemyWaitViewItem(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyWaitViewItem::~EnemyWaitViewItem() = default; + +bool EnemyWaitViewItem::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyWaitViewItem::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyWaitViewItem::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyWaitViewItem::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWaitViewItem.h b/src/Game/AI/AI/aiEnemyWaitViewItem.h new file mode 100644 index 00000000..2655d365 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWaitViewItem.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyWaitViewItem : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyWaitViewItem, ksys::act::ai::Ai) +public: + explicit EnemyWaitViewItem(const InitArg& arg); + ~EnemyWaitViewItem() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.cpp b/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.cpp new file mode 100644 index 00000000..ca8a3ccc --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEnemyWarnNoticeEndChase.h" + +namespace uking::ai { + +EnemyWarnNoticeEndChase::EnemyWarnNoticeEndChase(const InitArg& arg) : EnemyWarnNoticeSelect(arg) {} + +EnemyWarnNoticeEndChase::~EnemyWarnNoticeEndChase() = default; + +bool EnemyWarnNoticeEndChase::init_(sead::Heap* heap) { + return EnemyWarnNoticeSelect::init_(heap); +} + +void EnemyWarnNoticeEndChase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyWarnNoticeSelect::enter_(params); +} + +void EnemyWarnNoticeEndChase::leave_() { + EnemyWarnNoticeSelect::leave_(); +} + +void EnemyWarnNoticeEndChase::loadParams_() { + EnemyWarnNoticeSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.h b/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.h new file mode 100644 index 00000000..31229932 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWarnNoticeEndChase.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyWarnNoticeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyWarnNoticeEndChase : public EnemyWarnNoticeSelect { + SEAD_RTTI_OVERRIDE(EnemyWarnNoticeEndChase, EnemyWarnNoticeSelect) +public: + explicit EnemyWarnNoticeEndChase(const InitArg& arg); + ~EnemyWarnNoticeEndChase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWarnNoticeSelect.cpp b/src/Game/AI/AI/aiEnemyWarnNoticeSelect.cpp new file mode 100644 index 00000000..350c3303 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWarnNoticeSelect.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiEnemyWarnNoticeSelect.h" + +namespace uking::ai { + +EnemyWarnNoticeSelect::EnemyWarnNoticeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyWarnNoticeSelect::~EnemyWarnNoticeSelect() = default; + +bool EnemyWarnNoticeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyWarnNoticeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyWarnNoticeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyWarnNoticeSelect::loadParams_() { + getStaticParam(&mWarnNoticeTime_s, "WarnNoticeTime"); + getStaticParam(&mWarnNoticeTimeRnd_s, "WarnNoticeTimeRnd"); + getStaticParam(&mWarnBlinkTime_s, "WarnBlinkTime"); + getStaticParam(&mLostCounter_s, "LostCounter"); + getStaticParam(&mIsSight_s, "IsSight"); + getStaticParam(&mIsWorry_s, "IsWorry"); + getDynamicParam(&mForceNotice_d, "ForceNotice"); + getDynamicParam(&mTargetActor_d, "TargetActor"); + getStaticParam(&mPenaltyStair2Num_s, "PenaltyStair2Num"); + getStaticParam(&mMaxCountUp_s, "MaxCountUp"); + getStaticParam(&mPenalty_s, "Penalty"); + getStaticParam(&mNoPenaltyNum_s, "NoPenaltyNum"); + getAITreeVariable(&mIsTrgChangeUnderWaterState_a, "IsTrgChangeUnderWaterState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWarnNoticeSelect.h b/src/Game/AI/AI/aiEnemyWarnNoticeSelect.h new file mode 100644 index 00000000..e423213e --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWarnNoticeSelect.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyWarnNoticeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyWarnNoticeSelect, ksys::act::ai::Ai) +public: + explicit EnemyWarnNoticeSelect(const InitArg& arg); + ~EnemyWarnNoticeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWarnNoticeTime_s{}; + // static_param at offset 0x40 + const int* mWarnNoticeTimeRnd_s{}; + // static_param at offset 0x48 + const int* mWarnBlinkTime_s{}; + // static_param at offset 0x50 + const int* mLostCounter_s{}; + // static_param at offset 0x58 + const int* mPenaltyStair2Num_s{}; + // static_param at offset 0x60 + const float* mMaxCountUp_s{}; + // static_param at offset 0x68 + const float* mPenalty_s{}; + // static_param at offset 0x70 + const int* mNoPenaltyNum_s{}; + // static_param at offset 0x78 + const bool* mIsSight_s{}; + // static_param at offset 0x80 + const bool* mIsWorry_s{}; + // dynamic_param at offset 0x88 + bool* mForceNotice_d{}; + // dynamic_param at offset 0x90 + ksys::act::BaseProcLink* mTargetActor_d{}; + // aitree_variable at offset 0x98 + bool* mIsTrgChangeUnderWaterState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWatchKeepingWait.cpp b/src/Game/AI/AI/aiEnemyWatchKeepingWait.cpp new file mode 100644 index 00000000..d6f22e79 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWatchKeepingWait.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEnemyWatchKeepingWait.h" + +namespace uking::ai { + +EnemyWatchKeepingWait::EnemyWatchKeepingWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnemyWatchKeepingWait::~EnemyWatchKeepingWait() = default; + +bool EnemyWatchKeepingWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnemyWatchKeepingWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnemyWatchKeepingWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnemyWatchKeepingWait::loadParams_() { + getStaticParam(&mIdleCheckMin_s, "IdleCheckMin"); + getStaticParam(&mIdleCheckMax_s, "IdleCheckMax"); + getStaticParam(&mIdlePer_s, "IdlePer"); + getMapUnitParam(&mRotAngle_m, "RotAngle"); + getMapUnitParam(&mWaitTime_m, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnemyWatchKeepingWait.h b/src/Game/AI/AI/aiEnemyWatchKeepingWait.h new file mode 100644 index 00000000..2ae72b42 --- /dev/null +++ b/src/Game/AI/AI/aiEnemyWatchKeepingWait.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnemyWatchKeepingWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnemyWatchKeepingWait, ksys::act::ai::Ai) +public: + explicit EnemyWatchKeepingWait(const InitArg& arg); + ~EnemyWatchKeepingWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // static_param at offset 0x40 + const int* mIdleCheckMin_s{}; + // static_param at offset 0x48 + const int* mIdleCheckMax_s{}; + // static_param at offset 0x50 + const int* mIdlePer_s{}; + // map_unit_param at offset 0x58 + const float* mRotAngle_m{}; + // map_unit_param at offset 0x60 + const float* mWaitTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnterFromResetSelect.cpp b/src/Game/AI/AI/aiEnterFromResetSelect.cpp new file mode 100644 index 00000000..4f401c0f --- /dev/null +++ b/src/Game/AI/AI/aiEnterFromResetSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEnterFromResetSelect.h" + +namespace uking::ai { + +EnterFromResetSelect::EnterFromResetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnterFromResetSelect::~EnterFromResetSelect() = default; + +bool EnterFromResetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnterFromResetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnterFromResetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnterFromResetSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnterFromResetSelect.h b/src/Game/AI/AI/aiEnterFromResetSelect.h new file mode 100644 index 00000000..ba711973 --- /dev/null +++ b/src/Game/AI/AI/aiEnterFromResetSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnterFromResetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnterFromResetSelect, ksys::act::ai::Ai) +public: + explicit EnterFromResetSelect(const InitArg& arg); + ~EnterFromResetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnvSeEmitPointRootAI.cpp b/src/Game/AI/AI/aiEnvSeEmitPointRootAI.cpp new file mode 100644 index 00000000..c2a6807b --- /dev/null +++ b/src/Game/AI/AI/aiEnvSeEmitPointRootAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEnvSeEmitPointRootAI.h" + +namespace uking::ai { + +EnvSeEmitPointRootAI::EnvSeEmitPointRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EnvSeEmitPointRootAI::~EnvSeEmitPointRootAI() = default; + +bool EnvSeEmitPointRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EnvSeEmitPointRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EnvSeEmitPointRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EnvSeEmitPointRootAI::loadParams_() { + getStaticParam(&mInvalidatePlayDistance_s, "InvalidatePlayDistance"); + getStaticParam(&mPlayDistance_s, "PlayDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEnvSeEmitPointRootAI.h b/src/Game/AI/AI/aiEnvSeEmitPointRootAI.h new file mode 100644 index 00000000..78d51520 --- /dev/null +++ b/src/Game/AI/AI/aiEnvSeEmitPointRootAI.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EnvSeEmitPointRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EnvSeEmitPointRootAI, ksys::act::ai::Ai) +public: + explicit EnvSeEmitPointRootAI(const InitArg& arg); + ~EnvSeEmitPointRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mInvalidatePlayDistance_s{}; + // static_param at offset 0x40 + const float* mPlayDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipConditionSelect.cpp b/src/Game/AI/AI/aiEquipConditionSelect.cpp new file mode 100644 index 00000000..68535efd --- /dev/null +++ b/src/Game/AI/AI/aiEquipConditionSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEquipConditionSelect.h" + +namespace uking::ai { + +EquipConditionSelect::EquipConditionSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EquipConditionSelect::~EquipConditionSelect() = default; + +bool EquipConditionSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EquipConditionSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EquipConditionSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EquipConditionSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipConditionSelect.h b/src/Game/AI/AI/aiEquipConditionSelect.h new file mode 100644 index 00000000..57929170 --- /dev/null +++ b/src/Game/AI/AI/aiEquipConditionSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EquipConditionSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EquipConditionSelect, ksys::act::ai::Ai) +public: + explicit EquipConditionSelect(const InitArg& arg); + ~EquipConditionSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipHaveSelector.cpp b/src/Game/AI/AI/aiEquipHaveSelector.cpp new file mode 100644 index 00000000..3cfa0d18 --- /dev/null +++ b/src/Game/AI/AI/aiEquipHaveSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiEquipHaveSelector.h" + +namespace uking::ai { + +EquipHaveSelector::EquipHaveSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EquipHaveSelector::~EquipHaveSelector() = default; + +bool EquipHaveSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EquipHaveSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EquipHaveSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EquipHaveSelector::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipHaveSelector.h b/src/Game/AI/AI/aiEquipHaveSelector.h new file mode 100644 index 00000000..e0d14158 --- /dev/null +++ b/src/Game/AI/AI/aiEquipHaveSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EquipHaveSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EquipHaveSelector, ksys::act::ai::Ai) +public: + explicit EquipHaveSelector(const InitArg& arg); + ~EquipHaveSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.cpp b/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.cpp new file mode 100644 index 00000000..66ef090e --- /dev/null +++ b/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiEquipShieldEnemySearchWeapon.h" + +namespace uking::ai { + +EquipShieldEnemySearchWeapon::EquipShieldEnemySearchWeapon(const InitArg& arg) + : UnarmedEnemySearchWeapon(arg) {} + +EquipShieldEnemySearchWeapon::~EquipShieldEnemySearchWeapon() = default; + +void EquipShieldEnemySearchWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearchWeapon::enter_(params); +} + +void EquipShieldEnemySearchWeapon::leave_() { + UnarmedEnemySearchWeapon::leave_(); +} + +void EquipShieldEnemySearchWeapon::loadParams_() { + UnarmedEnemySearchWeapon::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.h b/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.h new file mode 100644 index 00000000..8206636c --- /dev/null +++ b/src/Game/AI/AI/aiEquipShieldEnemySearchWeapon.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearchWeapon.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EquipShieldEnemySearchWeapon : public UnarmedEnemySearchWeapon { + SEAD_RTTI_OVERRIDE(EquipShieldEnemySearchWeapon, UnarmedEnemySearchWeapon) +public: + explicit EquipShieldEnemySearchWeapon(const InitArg& arg); + ~EquipShieldEnemySearchWeapon() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipStand.cpp b/src/Game/AI/AI/aiEquipStand.cpp new file mode 100644 index 00000000..ed074097 --- /dev/null +++ b/src/Game/AI/AI/aiEquipStand.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEquipStand.h" + +namespace uking::ai { + +EquipStand::EquipStand(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EquipStand::~EquipStand() = default; + +bool EquipStand::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EquipStand::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EquipStand::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EquipStand::loadParams_() { + getStaticParam(&mDisplayAttKey_s, "DisplayAttKey"); + getStaticParam(&mTakeOutAttKey_s, "TakeOutAttKey"); + getMapUnitParam(&mEquipStandSlot_m, "EquipStandSlot"); + getAITreeVariable(&mEquipDisplayChild_a, "EquipDisplayChild"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEquipStand.h b/src/Game/AI/AI/aiEquipStand.h new file mode 100644 index 00000000..269370c6 --- /dev/null +++ b/src/Game/AI/AI/aiEquipStand.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EquipStand : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EquipStand, ksys::act::ai::Ai) +public: + explicit EquipStand(const InitArg& arg); + ~EquipStand() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x40]; + // static_param at offset 0x78 + sead::SafeString mDisplayAttKey_s{}; + // static_param at offset 0x88 + sead::SafeString mTakeOutAttKey_s{}; + // map_unit_param at offset 0x98 + const int* mEquipStandSlot_m{}; + // aitree_variable at offset 0xa0 + void* mEquipDisplayChild_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeFromTargetFront.cpp b/src/Game/AI/AI/aiEscapeFromTargetFront.cpp new file mode 100644 index 00000000..7823eb14 --- /dev/null +++ b/src/Game/AI/AI/aiEscapeFromTargetFront.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiEscapeFromTargetFront.h" + +namespace uking::ai { + +EscapeFromTargetFront::EscapeFromTargetFront(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EscapeFromTargetFront::~EscapeFromTargetFront() = default; + +bool EscapeFromTargetFront::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EscapeFromTargetFront::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EscapeFromTargetFront::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EscapeFromTargetFront::loadParams_() { + getStaticParam(&mMaxTime_s, "MaxTime"); + getStaticParam(&mMinTime_s, "MinTime"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getStaticParam(&mUseCameraFrontByTargetPlayer_s, "UseCameraFrontByTargetPlayer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeFromTargetFront.h b/src/Game/AI/AI/aiEscapeFromTargetFront.h new file mode 100644 index 00000000..bca2305f --- /dev/null +++ b/src/Game/AI/AI/aiEscapeFromTargetFront.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EscapeFromTargetFront : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EscapeFromTargetFront, ksys::act::ai::Ai) +public: + explicit EscapeFromTargetFront(const InitArg& arg); + ~EscapeFromTargetFront() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMaxTime_s{}; + // static_param at offset 0x40 + const int* mMinTime_s{}; + // static_param at offset 0x48 + const float* mFrontAngle_s{}; + // static_param at offset 0x50 + const bool* mUseCameraFrontByTargetPlayer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.cpp b/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.cpp new file mode 100644 index 00000000..ecb641f3 --- /dev/null +++ b/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h" + +namespace uking::ai { + +EscapeFromTargetFrontRandomDir::EscapeFromTargetFrontRandomDir(const InitArg& arg) + : EscapeFromTargetFront(arg) {} + +EscapeFromTargetFrontRandomDir::~EscapeFromTargetFrontRandomDir() = default; + +bool EscapeFromTargetFrontRandomDir::init_(sead::Heap* heap) { + return EscapeFromTargetFront::init_(heap); +} + +void EscapeFromTargetFrontRandomDir::enter_(ksys::act::ai::InlineParamPack* params) { + EscapeFromTargetFront::enter_(params); +} + +void EscapeFromTargetFrontRandomDir::leave_() { + EscapeFromTargetFront::leave_(); +} + +void EscapeFromTargetFrontRandomDir::loadParams_() { + EscapeFromTargetFront::loadParams_(); + getStaticParam(&mInverseDirRatio_s, "InverseDirRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h b/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h new file mode 100644 index 00000000..cad599ea --- /dev/null +++ b/src/Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEscapeFromTargetFront.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EscapeFromTargetFrontRandomDir : public EscapeFromTargetFront { + SEAD_RTTI_OVERRIDE(EscapeFromTargetFrontRandomDir, EscapeFromTargetFront) +public: + explicit EscapeFromTargetFrontRandomDir(const InitArg& arg); + ~EscapeFromTargetFrontRandomDir() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const int* mInverseDirRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.cpp b/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.cpp new file mode 100644 index 00000000..a3bddf13 --- /dev/null +++ b/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiEscapeOppositeToTargetInWater.h" + +namespace uking::ai { + +EscapeOppositeToTargetInWater::EscapeOppositeToTargetInWater(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +EscapeOppositeToTargetInWater::~EscapeOppositeToTargetInWater() = default; + +bool EscapeOppositeToTargetInWater::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EscapeOppositeToTargetInWater::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EscapeOppositeToTargetInWater::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EscapeOppositeToTargetInWater::loadParams_() { + getStaticParam(&mRunAwayDistanceMax_s, "RunAwayDistanceMax"); + getStaticParam(&mAllowRandAngleVertical_s, "AllowRandAngleVertical"); + getStaticParam(&mAllowRandAngleHorizontal_s, "AllowRandAngleHorizontal"); + getStaticParam(&mDivePercent_s, "DivePercent"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.h b/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.h new file mode 100644 index 00000000..a55a5dd5 --- /dev/null +++ b/src/Game/AI/AI/aiEscapeOppositeToTargetInWater.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EscapeOppositeToTargetInWater : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EscapeOppositeToTargetInWater, ksys::act::ai::Ai) +public: + explicit EscapeOppositeToTargetInWater(const InitArg& arg); + ~EscapeOppositeToTargetInWater() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRunAwayDistanceMax_s{}; + // static_param at offset 0x40 + const float* mAllowRandAngleVertical_s{}; + // static_param at offset 0x48 + const float* mAllowRandAngleHorizontal_s{}; + // static_param at offset 0x50 + const float* mDivePercent_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeOrWaitSelect.cpp b/src/Game/AI/AI/aiEscapeOrWaitSelect.cpp new file mode 100644 index 00000000..6e4832db --- /dev/null +++ b/src/Game/AI/AI/aiEscapeOrWaitSelect.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEscapeOrWaitSelect.h" + +namespace uking::ai { + +EscapeOrWaitSelect::EscapeOrWaitSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EscapeOrWaitSelect::~EscapeOrWaitSelect() = default; + +bool EscapeOrWaitSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EscapeOrWaitSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EscapeOrWaitSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EscapeOrWaitSelect::loadParams_() { + getStaticParam(&mEscapeRange_s, "EscapeRange"); + getStaticParam(&mEscapeMoveDistMin_s, "EscapeMoveDistMin"); + getStaticParam(&mEscapeMoveDistMax_s, "EscapeMoveDistMax"); + getStaticParam(&mCheckBackAngle_s, "CheckBackAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEscapeOrWaitSelect.h b/src/Game/AI/AI/aiEscapeOrWaitSelect.h new file mode 100644 index 00000000..49ae46f5 --- /dev/null +++ b/src/Game/AI/AI/aiEscapeOrWaitSelect.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EscapeOrWaitSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EscapeOrWaitSelect, ksys::act::ai::Ai) +public: + explicit EscapeOrWaitSelect(const InitArg& arg); + ~EscapeOrWaitSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mEscapeRange_s{}; + // static_param at offset 0x40 + const float* mEscapeMoveDistMin_s{}; + // static_param at offset 0x48 + const float* mEscapeMoveDistMax_s{}; + // static_param at offset 0x50 + const float* mCheckBackAngle_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEternalPlayerTarget.cpp b/src/Game/AI/AI/aiEternalPlayerTarget.cpp new file mode 100644 index 00000000..e3f47510 --- /dev/null +++ b/src/Game/AI/AI/aiEternalPlayerTarget.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiEternalPlayerTarget.h" + +namespace uking::ai { + +EternalPlayerTarget::EternalPlayerTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EternalPlayerTarget::~EternalPlayerTarget() = default; + +bool EternalPlayerTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EternalPlayerTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EternalPlayerTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EternalPlayerTarget::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEternalPlayerTarget.h b/src/Game/AI/AI/aiEternalPlayerTarget.h new file mode 100644 index 00000000..f4ee4dcf --- /dev/null +++ b/src/Game/AI/AI/aiEternalPlayerTarget.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EternalPlayerTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EternalPlayerTarget, ksys::act::ai::Ai) +public: + explicit EternalPlayerTarget(const InitArg& arg); + ~EternalPlayerTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEventTagRootAI.cpp b/src/Game/AI/AI/aiEventTagRootAI.cpp new file mode 100644 index 00000000..26632feb --- /dev/null +++ b/src/Game/AI/AI/aiEventTagRootAI.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiEventTagRootAI.h" + +namespace uking::ai { + +EventTagRootAI::EventTagRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EventTagRootAI::~EventTagRootAI() = default; + +bool EventTagRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EventTagRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EventTagRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EventTagRootAI::loadParams_() { + getMapUnitParam(&mLaunchEventByOnSignal_m, "LaunchEventByOnSignal"); + getMapUnitParam(&mLaunchEventByOffSignal_m, "LaunchEventByOffSignal"); + getMapUnitParam(&mIsEndlessEvent_m, "IsEndlessEvent"); + getMapUnitParam(&mEventFlowName_m, "EventFlowName"); + getMapUnitParam(&mEventFlowEntryName_m, "EventFlowEntryName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEventTagRootAI.h b/src/Game/AI/AI/aiEventTagRootAI.h new file mode 100644 index 00000000..fb39e1e6 --- /dev/null +++ b/src/Game/AI/AI/aiEventTagRootAI.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EventTagRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EventTagRootAI, ksys::act::ai::Ai) +public: + explicit EventTagRootAI(const InitArg& arg); + ~EventTagRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x10]; + // map_unit_param at offset 0x48 + const bool* mLaunchEventByOnSignal_m{}; + // map_unit_param at offset 0x50 + const bool* mLaunchEventByOffSignal_m{}; + // map_unit_param at offset 0x58 + const bool* mIsEndlessEvent_m{}; + // map_unit_param at offset 0x60 + sead::SafeString mEventFlowName_m{}; + // map_unit_param at offset 0x70 + sead::SafeString mEventFlowEntryName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEventTimeRoot.cpp b/src/Game/AI/AI/aiEventTimeRoot.cpp new file mode 100644 index 00000000..52024ba4 --- /dev/null +++ b/src/Game/AI/AI/aiEventTimeRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiEventTimeRoot.h" + +namespace uking::ai { + +EventTimeRoot::EventTimeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +EventTimeRoot::~EventTimeRoot() = default; + +bool EventTimeRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void EventTimeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void EventTimeRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void EventTimeRoot::loadParams_() { + getStaticParam(&mTimeLimit_s, "TimeLimit"); + getStaticParam(&mIsCountDown_s, "IsCountDown"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiEventTimeRoot.h b/src/Game/AI/AI/aiEventTimeRoot.h new file mode 100644 index 00000000..f4fc226b --- /dev/null +++ b/src/Game/AI/AI/aiEventTimeRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class EventTimeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(EventTimeRoot, ksys::act::ai::Ai) +public: + explicit EventTimeRoot(const InitArg& arg); + ~EventTimeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTimeLimit_s{}; + // static_param at offset 0x40 + const bool* mIsCountDown_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiExceededImpulseCheck.cpp b/src/Game/AI/AI/aiExceededImpulseCheck.cpp new file mode 100644 index 00000000..6d32ce93 --- /dev/null +++ b/src/Game/AI/AI/aiExceededImpulseCheck.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiExceededImpulseCheck.h" + +namespace uking::ai { + +ExceededImpulseCheck::ExceededImpulseCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ExceededImpulseCheck::~ExceededImpulseCheck() = default; + +bool ExceededImpulseCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ExceededImpulseCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ExceededImpulseCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ExceededImpulseCheck::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiExceededImpulseCheck.h b/src/Game/AI/AI/aiExceededImpulseCheck.h new file mode 100644 index 00000000..12897311 --- /dev/null +++ b/src/Game/AI/AI/aiExceededImpulseCheck.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ExceededImpulseCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ExceededImpulseCheck, ksys::act::ai::Ai) +public: + explicit ExceededImpulseCheck(const InitArg& arg); + ~ExceededImpulseCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiExplodeCheck.cpp b/src/Game/AI/AI/aiExplodeCheck.cpp new file mode 100644 index 00000000..82e27745 --- /dev/null +++ b/src/Game/AI/AI/aiExplodeCheck.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiExplodeCheck.h" + +namespace uking::ai { + +ExplodeCheck::ExplodeCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ExplodeCheck::~ExplodeCheck() = default; + +bool ExplodeCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ExplodeCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ExplodeCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ExplodeCheck::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiExplodeCheck.h b/src/Game/AI/AI/aiExplodeCheck.h new file mode 100644 index 00000000..d6a2aa5f --- /dev/null +++ b/src/Game/AI/AI/aiExplodeCheck.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ExplodeCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ExplodeCheck, ksys::act::ai::Ai) +public: + explicit ExplodeCheck(const InitArg& arg); + ~ExplodeCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFirstSelect.cpp b/src/Game/AI/AI/aiFirstSelect.cpp new file mode 100644 index 00000000..d09100dd --- /dev/null +++ b/src/Game/AI/AI/aiFirstSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiFirstSelect.h" + +namespace uking::ai { + +FirstSelect::FirstSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FirstSelect::~FirstSelect() = default; + +bool FirstSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FirstSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FirstSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FirstSelect::loadParams_() { + getStaticParam(&mResetFromDemo_s, "ResetFromDemo"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFirstSelect.h b/src/Game/AI/AI/aiFirstSelect.h new file mode 100644 index 00000000..694cc3ec --- /dev/null +++ b/src/Game/AI/AI/aiFirstSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FirstSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FirstSelect, ksys::act::ai::Ai) +public: + explicit FirstSelect(const InitArg& arg); + ~FirstSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mResetFromDemo_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishGoToAndNibble.cpp b/src/Game/AI/AI/aiFishGoToAndNibble.cpp new file mode 100644 index 00000000..7a5ac13f --- /dev/null +++ b/src/Game/AI/AI/aiFishGoToAndNibble.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiFishGoToAndNibble.h" + +namespace uking::ai { + +FishGoToAndNibble::FishGoToAndNibble(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FishGoToAndNibble::~FishGoToAndNibble() = default; + +bool FishGoToAndNibble::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FishGoToAndNibble::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FishGoToAndNibble::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FishGoToAndNibble::loadParams_() { + getStaticParam(&mNumTimeNibbleMin_s, "NumTimeNibbleMin"); + getStaticParam(&mNumTimeNibbleRand_s, "NumTimeNibbleRand"); + getStaticParam(&mDistStartNibble_s, "DistStartNibble"); + getStaticParam(&mDistBackward_s, "DistBackward"); + getStaticParam(&mDepthGiveUp_s, "DepthGiveUp"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishGoToAndNibble.h b/src/Game/AI/AI/aiFishGoToAndNibble.h new file mode 100644 index 00000000..91c812d6 --- /dev/null +++ b/src/Game/AI/AI/aiFishGoToAndNibble.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FishGoToAndNibble : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FishGoToAndNibble, ksys::act::ai::Ai) +public: + explicit FishGoToAndNibble(const InitArg& arg); + ~FishGoToAndNibble() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNumTimeNibbleMin_s{}; + // static_param at offset 0x40 + const int* mNumTimeNibbleRand_s{}; + // static_param at offset 0x48 + const float* mDistStartNibble_s{}; + // static_param at offset 0x50 + const float* mDistBackward_s{}; + // static_param at offset 0x58 + const float* mDepthGiveUp_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x68 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishRoot.cpp b/src/Game/AI/AI/aiFishRoot.cpp new file mode 100644 index 00000000..99ba1872 --- /dev/null +++ b/src/Game/AI/AI/aiFishRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiFishRoot.h" + +namespace uking::ai { + +FishRoot::FishRoot(const InitArg& arg) : SimpleWildlifeRoot(arg) {} + +FishRoot::~FishRoot() = default; + +bool FishRoot::init_(sead::Heap* heap) { + return SimpleWildlifeRoot::init_(heap); +} + +void FishRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleWildlifeRoot::enter_(params); +} + +void FishRoot::leave_() { + SimpleWildlifeRoot::leave_(); +} + +void FishRoot::loadParams_() { + SimpleWildlifeRoot::loadParams_(); + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mOnGroundDepth_s, "OnGroundDepth"); + getStaticParam(&mNextJumpTimeBase_s, "NextJumpTimeBase"); + getStaticParam(&mNextJumpTimeRand_s, "NextJumpTimeRand"); + getStaticParam(&mAllowReturnThreatDist_s, "AllowReturnThreatDist"); + getStaticParam(&mFrameUntilOutOfWater_s, "FrameUntilOutOfWater"); + getStaticParam(&mDistRunFromPlayerOnReturn_s, "DistRunFromPlayerOnReturn"); + getStaticParam(&mIgnoreFoodBase_s, "IgnoreFoodBase"); + getStaticParam(&mIgnoreFoodRand_s, "IgnoreFoodRand"); + getStaticParam(&mIgnoreFoodAfterSuccessBase_s, "IgnoreFoodAfterSuccessBase"); + getStaticParam(&mIgnoreFoodAfterSuccessRand_s, "IgnoreFoodAfterSuccessRand"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishRoot.h b/src/Game/AI/AI/aiFishRoot.h new file mode 100644 index 00000000..0d62209f --- /dev/null +++ b/src/Game/AI/AI/aiFishRoot.h @@ -0,0 +1,44 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleWildlifeRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FishRoot : public SimpleWildlifeRoot { + SEAD_RTTI_OVERRIDE(FishRoot, SimpleWildlifeRoot) +public: + explicit FishRoot(const InitArg& arg); + ~FishRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const float* mInWaterDepth_s{}; + // static_param at offset 0x100 + const float* mOnGroundDepth_s{}; + // static_param at offset 0x108 + const float* mNextJumpTimeBase_s{}; + // static_param at offset 0x110 + const float* mNextJumpTimeRand_s{}; + // static_param at offset 0x118 + const float* mAllowReturnThreatDist_s{}; + // static_param at offset 0x120 + const float* mFrameUntilOutOfWater_s{}; + // static_param at offset 0x128 + const float* mDistRunFromPlayerOnReturn_s{}; + // static_param at offset 0x130 + const float* mIgnoreFoodBase_s{}; + // static_param at offset 0x138 + const float* mIgnoreFoodRand_s{}; + // static_param at offset 0x140 + const float* mIgnoreFoodAfterSuccessBase_s{}; + // static_param at offset 0x148 + const float* mIgnoreFoodAfterSuccessRand_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishSafeReturn.cpp b/src/Game/AI/AI/aiFishSafeReturn.cpp new file mode 100644 index 00000000..530c4d75 --- /dev/null +++ b/src/Game/AI/AI/aiFishSafeReturn.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiFishSafeReturn.h" + +namespace uking::ai { + +FishSafeReturn::FishSafeReturn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FishSafeReturn::~FishSafeReturn() = default; + +bool FishSafeReturn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FishSafeReturn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FishSafeReturn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FishSafeReturn::loadParams_() { + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mDivePercent_s, "DivePercent"); + getStaticParam(&mAllowReturnThreatDist_s, "AllowReturnThreatDist"); + getDynamicParam(&mIsEscape_d, "IsEscape"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFishSafeReturn.h b/src/Game/AI/AI/aiFishSafeReturn.h new file mode 100644 index 00000000..cf151643 --- /dev/null +++ b/src/Game/AI/AI/aiFishSafeReturn.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FishSafeReturn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FishSafeReturn, ksys::act::ai::Ai) +public: + explicit FishSafeReturn(const InitArg& arg); + ~FishSafeReturn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mInWaterDepth_s{}; + // static_param at offset 0x40 + const float* mDivePercent_s{}; + // static_param at offset 0x48 + const float* mAllowReturnThreatDist_s{}; + // dynamic_param at offset 0x50 + bool* mIsEscape_d{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFixableLiftable.cpp b/src/Game/AI/AI/aiFixableLiftable.cpp new file mode 100644 index 00000000..f352ddcf --- /dev/null +++ b/src/Game/AI/AI/aiFixableLiftable.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiFixableLiftable.h" + +namespace uking::ai { + +FixableLiftable::FixableLiftable(const InitArg& arg) : SimpleLiftable(arg) {} + +FixableLiftable::~FixableLiftable() = default; + +bool FixableLiftable::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void FixableLiftable::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void FixableLiftable::leave_() { + SimpleLiftable::leave_(); +} + +void FixableLiftable::loadParams_() { + getStaticParam(&mCancelFixedScale_s, "CancelFixedScale"); + getMapUnitParam(&mIsFixedPlace_m, "IsFixedPlace"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFixableLiftable.h b/src/Game/AI/AI/aiFixableLiftable.h new file mode 100644 index 00000000..d6a0c2cb --- /dev/null +++ b/src/Game/AI/AI/aiFixableLiftable.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FixableLiftable : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(FixableLiftable, SimpleLiftable) +public: + explicit FixableLiftable(const InitArg& arg); + ~FixableLiftable() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const float* mCancelFixedScale_s{}; + // map_unit_param at offset 0xd0 + const bool* mIsFixedPlace_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.cpp b/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.cpp new file mode 100644 index 00000000..0efa70ad --- /dev/null +++ b/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiFldObjDlcHeroMapRelief.h" + +namespace uking::ai { + +FldObjDlcHeroMapRelief::FldObjDlcHeroMapRelief(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FldObjDlcHeroMapRelief::~FldObjDlcHeroMapRelief() = default; + +bool FldObjDlcHeroMapRelief::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FldObjDlcHeroMapRelief::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FldObjDlcHeroMapRelief::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FldObjDlcHeroMapRelief::loadParams_() { + getMapUnitParam(&mOpenFlag_m, "OpenFlag"); + getMapUnitParam(&mClearFlag_m, "ClearFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.h b/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.h new file mode 100644 index 00000000..0dd3bce6 --- /dev/null +++ b/src/Game/AI/AI/aiFldObjDlcHeroMapRelief.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FldObjDlcHeroMapRelief : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FldObjDlcHeroMapRelief, ksys::act::ai::Ai) +public: + explicit FldObjDlcHeroMapRelief(const InitArg& arg); + ~FldObjDlcHeroMapRelief() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + sead::SafeString mOpenFlag_m{}; + // map_unit_param at offset 0x48 + sead::SafeString mClearFlag_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFldObjIvyBurnRoot.cpp b/src/Game/AI/AI/aiFldObjIvyBurnRoot.cpp new file mode 100644 index 00000000..07755a82 --- /dev/null +++ b/src/Game/AI/AI/aiFldObjIvyBurnRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiFldObjIvyBurnRoot.h" + +namespace uking::ai { + +FldObjIvyBurnRoot::FldObjIvyBurnRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FldObjIvyBurnRoot::~FldObjIvyBurnRoot() = default; + +bool FldObjIvyBurnRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FldObjIvyBurnRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FldObjIvyBurnRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FldObjIvyBurnRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFldObjIvyBurnRoot.h b/src/Game/AI/AI/aiFldObjIvyBurnRoot.h new file mode 100644 index 00000000..28eb8e07 --- /dev/null +++ b/src/Game/AI/AI/aiFldObjIvyBurnRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FldObjIvyBurnRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FldObjIvyBurnRoot, ksys::act::ai::Ai) +public: + explicit FldObjIvyBurnRoot(const InitArg& arg); + ~FldObjIvyBurnRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyInsectRoam.cpp b/src/Game/AI/AI/aiFlyInsectRoam.cpp new file mode 100644 index 00000000..061bfcf8 --- /dev/null +++ b/src/Game/AI/AI/aiFlyInsectRoam.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiFlyInsectRoam.h" + +namespace uking::ai { + +FlyInsectRoam::FlyInsectRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FlyInsectRoam::~FlyInsectRoam() = default; + +bool FlyInsectRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FlyInsectRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FlyInsectRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FlyInsectRoam::loadParams_() { + getStaticParam(&mTerritoryRadius_s, "TerritoryRadius"); + getStaticParam(&mTerritoryRadiusRand_s, "TerritoryRadiusRand"); + getStaticParam(&mMinHeight_s, "MinHeight"); + getStaticParam(&mMaxHeight_s, "MaxHeight"); + getStaticParam(&mRePathDist_s, "RePathDist"); + getStaticParam(&mRePathDistRand_s, "RePathDistRand"); + getStaticParam(&mRePathYDistRand_s, "RePathYDistRand"); + getStaticParam(&mMaxRotRand_s, "MaxRotRand"); + getStaticParam(&mMaxRotRandOuter_s, "MaxRotRandOuter"); + getStaticParam(&mIsEnableOnLand_s, "IsEnableOnLand"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyInsectRoam.h b/src/Game/AI/AI/aiFlyInsectRoam.h new file mode 100644 index 00000000..ba9998b8 --- /dev/null +++ b/src/Game/AI/AI/aiFlyInsectRoam.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyInsectRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FlyInsectRoam, ksys::act::ai::Ai) +public: + explicit FlyInsectRoam(const InitArg& arg); + ~FlyInsectRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTerritoryRadius_s{}; + // static_param at offset 0x40 + const float* mTerritoryRadiusRand_s{}; + // static_param at offset 0x48 + const float* mMinHeight_s{}; + // static_param at offset 0x50 + const float* mMaxHeight_s{}; + // static_param at offset 0x58 + const float* mRePathDist_s{}; + // static_param at offset 0x60 + const float* mRePathDistRand_s{}; + // static_param at offset 0x68 + const float* mRePathYDistRand_s{}; + // static_param at offset 0x70 + const float* mMaxRotRand_s{}; + // static_param at offset 0x78 + const float* mMaxRotRandOuter_s{}; + // static_param at offset 0x80 + const bool* mIsEnableOnLand_s{}; + // dynamic_param at offset 0x88 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyMoveToTarget.cpp b/src/Game/AI/AI/aiFlyMoveToTarget.cpp new file mode 100644 index 00000000..649d71b1 --- /dev/null +++ b/src/Game/AI/AI/aiFlyMoveToTarget.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiFlyMoveToTarget.h" + +namespace uking::ai { + +FlyMoveToTarget::FlyMoveToTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FlyMoveToTarget::~FlyMoveToTarget() = default; + +bool FlyMoveToTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FlyMoveToTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FlyMoveToTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FlyMoveToTarget::loadParams_() { + getStaticParam(&mMoveFailCount_s, "MoveFailCount"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mOffsetHeight_s, "OffsetHeight"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyMoveToTarget.h b/src/Game/AI/AI/aiFlyMoveToTarget.h new file mode 100644 index 00000000..18be1c44 --- /dev/null +++ b/src/Game/AI/AI/aiFlyMoveToTarget.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyMoveToTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FlyMoveToTarget, ksys::act::ai::Ai) +public: + explicit FlyMoveToTarget(const InitArg& arg); + ~FlyMoveToTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMoveFailCount_s{}; + // static_param at offset 0x40 + const float* mFarDist_s{}; + // static_param at offset 0x48 + const float* mOutDist_s{}; + // static_param at offset 0x50 + const float* mOffsetHeight_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.cpp b/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.cpp new file mode 100644 index 00000000..5f78adeb --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiFlyingEnemyBackKeepMove.h" + +namespace uking::ai { + +FlyingEnemyBackKeepMove::FlyingEnemyBackKeepMove(const InitArg& arg) : FlyingEnemyKeepMove(arg) {} + +FlyingEnemyBackKeepMove::~FlyingEnemyBackKeepMove() = default; + +bool FlyingEnemyBackKeepMove::init_(sead::Heap* heap) { + return FlyingEnemyKeepMove::init_(heap); +} + +void FlyingEnemyBackKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + FlyingEnemyKeepMove::enter_(params); +} + +void FlyingEnemyBackKeepMove::leave_() { + FlyingEnemyKeepMove::leave_(); +} + +void FlyingEnemyBackKeepMove::loadParams_() { + FlyingEnemyKeepMove::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.h b/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.h new file mode 100644 index 00000000..6385ebb7 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyBackKeepMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiFlyingEnemyKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemyBackKeepMove : public FlyingEnemyKeepMove { + SEAD_RTTI_OVERRIDE(FlyingEnemyBackKeepMove, FlyingEnemyKeepMove) +public: + explicit FlyingEnemyBackKeepMove(const InitArg& arg); + ~FlyingEnemyBackKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.cpp b/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.cpp new file mode 100644 index 00000000..97cde1f9 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h" + +namespace uking::ai { + +FlyingEnemyDiagonallyKeepMove::FlyingEnemyDiagonallyKeepMove(const InitArg& arg) + : FlyingEnemySideKeepMove(arg) {} + +FlyingEnemyDiagonallyKeepMove::~FlyingEnemyDiagonallyKeepMove() = default; + +void FlyingEnemyDiagonallyKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + FlyingEnemySideKeepMove::enter_(params); +} + +void FlyingEnemyDiagonallyKeepMove::leave_() { + FlyingEnemySideKeepMove::leave_(); +} + +void FlyingEnemyDiagonallyKeepMove::loadParams_() { + FlyingEnemySideKeepMove::loadParams_(); + getStaticParam(&mDiagAngle_s, "DiagAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h b/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h new file mode 100644 index 00000000..dbddee5d --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiFlyingEnemySideKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemyDiagonallyKeepMove : public FlyingEnemySideKeepMove { + SEAD_RTTI_OVERRIDE(FlyingEnemyDiagonallyKeepMove, FlyingEnemySideKeepMove) +public: + explicit FlyingEnemyDiagonallyKeepMove(const InitArg& arg); + ~FlyingEnemyDiagonallyKeepMove() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa8 + const float* mDiagAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyFindPlayer.cpp b/src/Game/AI/AI/aiFlyingEnemyFindPlayer.cpp new file mode 100644 index 00000000..04561dac --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyFindPlayer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiFlyingEnemyFindPlayer.h" + +namespace uking::ai { + +FlyingEnemyFindPlayer::FlyingEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +FlyingEnemyFindPlayer::~FlyingEnemyFindPlayer() = default; + +bool FlyingEnemyFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void FlyingEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void FlyingEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void FlyingEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyFindPlayer.h b/src/Game/AI/AI/aiFlyingEnemyFindPlayer.h new file mode 100644 index 00000000..e2ab41b6 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(FlyingEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit FlyingEnemyFindPlayer(const InitArg& arg); + ~FlyingEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.cpp b/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.cpp new file mode 100644 index 00000000..12c6468f --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiFlyingEnemyFrontKeepMove.h" + +namespace uking::ai { + +FlyingEnemyFrontKeepMove::FlyingEnemyFrontKeepMove(const InitArg& arg) : FlyingEnemyKeepMove(arg) {} + +FlyingEnemyFrontKeepMove::~FlyingEnemyFrontKeepMove() = default; + +bool FlyingEnemyFrontKeepMove::init_(sead::Heap* heap) { + return FlyingEnemyKeepMove::init_(heap); +} + +void FlyingEnemyFrontKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + FlyingEnemyKeepMove::enter_(params); +} + +void FlyingEnemyFrontKeepMove::leave_() { + FlyingEnemyKeepMove::leave_(); +} + +void FlyingEnemyFrontKeepMove::loadParams_() { + FlyingEnemyKeepMove::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.h b/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.h new file mode 100644 index 00000000..7227281a --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyFrontKeepMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiFlyingEnemyKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemyFrontKeepMove : public FlyingEnemyKeepMove { + SEAD_RTTI_OVERRIDE(FlyingEnemyFrontKeepMove, FlyingEnemyKeepMove) +public: + explicit FlyingEnemyFrontKeepMove(const InitArg& arg); + ~FlyingEnemyFrontKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyKeepMove.cpp b/src/Game/AI/AI/aiFlyingEnemyKeepMove.cpp new file mode 100644 index 00000000..b2804c22 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyKeepMove.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiFlyingEnemyKeepMove.h" + +namespace uking::ai { + +FlyingEnemyKeepMove::FlyingEnemyKeepMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FlyingEnemyKeepMove::~FlyingEnemyKeepMove() = default; + +bool FlyingEnemyKeepMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FlyingEnemyKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FlyingEnemyKeepMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FlyingEnemyKeepMove::loadParams_() { + getStaticParam(&mLostDistance_s, "LostDistance"); + getStaticParam(&mAngleRange_s, "AngleRange"); + getStaticParam(&mSpaceDistance_s, "SpaceDistance"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mBaseHeight_s, "BaseHeight"); + getStaticParam(&mLowHeight_s, "LowHeight"); + getStaticParam(&mHighHeight_s, "HighHeight"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemyKeepMove.h b/src/Game/AI/AI/aiFlyingEnemyKeepMove.h new file mode 100644 index 00000000..c59e1b8f --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemyKeepMove.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemyKeepMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FlyingEnemyKeepMove, ksys::act::ai::Ai) +public: + explicit FlyingEnemyKeepMove(const InitArg& arg); + ~FlyingEnemyKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLostDistance_s{}; + // static_param at offset 0x40 + const float* mAngleRange_s{}; + // static_param at offset 0x48 + const float* mSpaceDistance_s{}; + // static_param at offset 0x50 + const float* mNearDist_s{}; + // static_param at offset 0x58 + const float* mFarDist_s{}; + // static_param at offset 0x60 + const float* mBaseDist_s{}; + // static_param at offset 0x68 + const float* mBaseHeight_s{}; + // static_param at offset 0x70 + const float* mLowHeight_s{}; + // static_param at offset 0x78 + const float* mHighHeight_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemySideKeepMove.cpp b/src/Game/AI/AI/aiFlyingEnemySideKeepMove.cpp new file mode 100644 index 00000000..03cc4de7 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemySideKeepMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiFlyingEnemySideKeepMove.h" + +namespace uking::ai { + +FlyingEnemySideKeepMove::FlyingEnemySideKeepMove(const InitArg& arg) : FlyingEnemyKeepMove(arg) {} + +FlyingEnemySideKeepMove::~FlyingEnemySideKeepMove() = default; + +bool FlyingEnemySideKeepMove::init_(sead::Heap* heap) { + return FlyingEnemyKeepMove::init_(heap); +} + +void FlyingEnemySideKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + FlyingEnemyKeepMove::enter_(params); +} + +void FlyingEnemySideKeepMove::leave_() { + FlyingEnemyKeepMove::leave_(); +} + +void FlyingEnemySideKeepMove::loadParams_() { + FlyingEnemyKeepMove::loadParams_(); + getStaticParam(&mSideDirType_s, "SideDirType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFlyingEnemySideKeepMove.h b/src/Game/AI/AI/aiFlyingEnemySideKeepMove.h new file mode 100644 index 00000000..3f5e0489 --- /dev/null +++ b/src/Game/AI/AI/aiFlyingEnemySideKeepMove.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiFlyingEnemyKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FlyingEnemySideKeepMove : public FlyingEnemyKeepMove { + SEAD_RTTI_OVERRIDE(FlyingEnemySideKeepMove, FlyingEnemyKeepMove) +public: + explicit FlyingEnemySideKeepMove(const InitArg& arg); + ~FlyingEnemySideKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mSideDirType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForSaleOrNot.cpp b/src/Game/AI/AI/aiForSaleOrNot.cpp new file mode 100644 index 00000000..e9a1e634 --- /dev/null +++ b/src/Game/AI/AI/aiForSaleOrNot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiForSaleOrNot.h" + +namespace uking::ai { + +ForSaleOrNot::ForSaleOrNot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ForSaleOrNot::~ForSaleOrNot() = default; + +bool ForSaleOrNot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForSaleOrNot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForSaleOrNot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForSaleOrNot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForSaleOrNot.h b/src/Game/AI/AI/aiForSaleOrNot.h new file mode 100644 index 00000000..acda70c6 --- /dev/null +++ b/src/Game/AI/AI/aiForSaleOrNot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForSaleOrNot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForSaleOrNot, ksys::act::ai::Ai) +public: + explicit ForSaleOrNot(const InitArg& arg); + ~ForSaleOrNot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForbidDoubleNoticeSelect.cpp b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.cpp new file mode 100644 index 00000000..11a840ab --- /dev/null +++ b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiForbidDoubleNoticeSelect.h" + +namespace uking::ai { + +ForbidDoubleNoticeSelect::ForbidDoubleNoticeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ForbidDoubleNoticeSelect::~ForbidDoubleNoticeSelect() = default; + +bool ForbidDoubleNoticeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForbidDoubleNoticeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForbidDoubleNoticeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForbidDoubleNoticeSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h new file mode 100644 index 00000000..5e17aff6 --- /dev/null +++ b/src/Game/AI/AI/aiForbidDoubleNoticeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForbidDoubleNoticeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForbidDoubleNoticeSelect, ksys::act::ai::Ai) +public: + explicit ForbidDoubleNoticeSelect(const InitArg& arg); + ~ForbidDoubleNoticeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantBattle.cpp b/src/Game/AI/AI/aiForestGiantBattle.cpp new file mode 100644 index 00000000..882f3a55 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiForestGiantBattle.h" + +namespace uking::ai { + +ForestGiantBattle::ForestGiantBattle(const InitArg& arg) : EnemyBattle(arg) {} + +ForestGiantBattle::~ForestGiantBattle() = default; + +bool ForestGiantBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void ForestGiantBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void ForestGiantBattle::leave_() { + EnemyBattle::leave_(); +} + +void ForestGiantBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mForceAttackArea_s, "ForceAttackArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantBattle.h b/src/Game/AI/AI/aiForestGiantBattle.h new file mode 100644 index 00000000..399b8891 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(ForestGiantBattle, EnemyBattle) +public: + explicit ForestGiantBattle(const InitArg& arg); + ~ForestGiantBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mForceAttackArea_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantBattleMove.cpp b/src/Game/AI/AI/aiForestGiantBattleMove.cpp new file mode 100644 index 00000000..b588eb64 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantBattleMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiForestGiantBattleMove.h" + +namespace uking::ai { + +ForestGiantBattleMove::ForestGiantBattleMove(const InitArg& arg) : WaitNearTarget(arg) {} + +ForestGiantBattleMove::~ForestGiantBattleMove() = default; + +bool ForestGiantBattleMove::init_(sead::Heap* heap) { + return WaitNearTarget::init_(heap); +} + +void ForestGiantBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + WaitNearTarget::enter_(params); +} + +void ForestGiantBattleMove::leave_() { + WaitNearTarget::leave_(); +} + +void ForestGiantBattleMove::loadParams_() { + WaitNearTarget::loadParams_(); + getStaticParam(&mAttackHeightMin_s, "AttackHeightMin"); + getStaticParam(&mAttackHeightMax_s, "AttackHeightMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantBattleMove.h b/src/Game/AI/AI/aiForestGiantBattleMove.h new file mode 100644 index 00000000..0a779a53 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantBattleMove.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiWaitNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantBattleMove : public WaitNearTarget { + SEAD_RTTI_OVERRIDE(ForestGiantBattleMove, WaitNearTarget) +public: + explicit ForestGiantBattleMove(const InitArg& arg); + ~ForestGiantBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const float* mAttackHeightMin_s{}; + // static_param at offset 0x70 + const float* mAttackHeightMax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantChanceWait.cpp b/src/Game/AI/AI/aiForestGiantChanceWait.cpp new file mode 100644 index 00000000..99eb26c5 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantChanceWait.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiForestGiantChanceWait.h" + +namespace uking::ai { + +ForestGiantChanceWait::ForestGiantChanceWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ForestGiantChanceWait::~ForestGiantChanceWait() = default; + +bool ForestGiantChanceWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForestGiantChanceWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForestGiantChanceWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForestGiantChanceWait::loadParams_() { + getStaticParam(&mChanceRate_s, "ChanceRate"); + getStaticParam(&mCorrectRate_s, "CorrectRate"); + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantChanceWait.h b/src/Game/AI/AI/aiForestGiantChanceWait.h new file mode 100644 index 00000000..0c4a6c4e --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantChanceWait.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantChanceWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForestGiantChanceWait, ksys::act::ai::Ai) +public: + explicit ForestGiantChanceWait(const InitArg& arg); + ~ForestGiantChanceWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mChanceRate_s{}; + // static_param at offset 0x40 + const int* mCorrectRate_s{}; + // static_param at offset 0x48 + const float* mTurnStartAngle_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantClosestAttackSelect.cpp b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.cpp new file mode 100644 index 00000000..7d884aa5 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiForestGiantClosestAttackSelect.h" + +namespace uking::ai { + +ForestGiantClosestAttackSelect::ForestGiantClosestAttackSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +ForestGiantClosestAttackSelect::~ForestGiantClosestAttackSelect() = default; + +bool ForestGiantClosestAttackSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForestGiantClosestAttackSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForestGiantClosestAttackSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForestGiantClosestAttackSelect::loadParams_() { + getStaticParam(&mHipDropRate_s, "HipDropRate"); + getStaticParam(&mHipDropRateFar_s, "HipDropRateFar"); + getStaticParam(&mFarDist_s, "FarDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h new file mode 100644 index 00000000..f4881fc6 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantClosestAttackSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantClosestAttackSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForestGiantClosestAttackSelect, ksys::act::ai::Ai) +public: + explicit ForestGiantClosestAttackSelect(const InitArg& arg); + ~ForestGiantClosestAttackSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mHipDropRate_s{}; + // static_param at offset 0x40 + const int* mHipDropRateFar_s{}; + // static_param at offset 0x48 + const float* mFarDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantFindPlayer.cpp b/src/Game/AI/AI/aiForestGiantFindPlayer.cpp new file mode 100644 index 00000000..32bab370 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantFindPlayer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiForestGiantFindPlayer.h" + +namespace uking::ai { + +ForestGiantFindPlayer::ForestGiantFindPlayer(const InitArg& arg) : LargeEnemyFindPlayer(arg) {} + +ForestGiantFindPlayer::~ForestGiantFindPlayer() = default; + +bool ForestGiantFindPlayer::init_(sead::Heap* heap) { + return LargeEnemyFindPlayer::init_(heap); +} + +void ForestGiantFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + LargeEnemyFindPlayer::enter_(params); +} + +void ForestGiantFindPlayer::leave_() { + LargeEnemyFindPlayer::leave_(); +} + +void ForestGiantFindPlayer::loadParams_() { + LargeEnemyFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantFindPlayer.h b/src/Game/AI/AI/aiForestGiantFindPlayer.h new file mode 100644 index 00000000..855bbe6b --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLargeEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantFindPlayer : public LargeEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(ForestGiantFindPlayer, LargeEnemyFindPlayer) +public: + explicit ForestGiantFindPlayer(const InitArg& arg); + ~ForestGiantFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantNormal.cpp b/src/Game/AI/AI/aiForestGiantNormal.cpp new file mode 100644 index 00000000..a06c2bc1 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiForestGiantNormal.h" + +namespace uking::ai { + +ForestGiantNormal::ForestGiantNormal(const InitArg& arg) : EnemyNormal(arg) {} + +ForestGiantNormal::~ForestGiantNormal() = default; + +bool ForestGiantNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void ForestGiantNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void ForestGiantNormal::leave_() { + EnemyNormal::leave_(); +} + +void ForestGiantNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mSleepingHearAwnRatio_s, "SleepingHearAwnRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantNormal.h b/src/Game/AI/AI/aiForestGiantNormal.h new file mode 100644 index 00000000..3a4eccb9 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantNormal.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(ForestGiantNormal, EnemyNormal) +public: + explicit ForestGiantNormal(const InitArg& arg); + ~ForestGiantNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mSleepingHearAwnRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantNoticeSound.cpp b/src/Game/AI/AI/aiForestGiantNoticeSound.cpp new file mode 100644 index 00000000..b9a23b0d --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantNoticeSound.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiForestGiantNoticeSound.h" + +namespace uking::ai { + +ForestGiantNoticeSound::ForestGiantNoticeSound(const InitArg& arg) : EnemyNoticeSound(arg) {} + +ForestGiantNoticeSound::~ForestGiantNoticeSound() = default; + +bool ForestGiantNoticeSound::init_(sead::Heap* heap) { + return EnemyNoticeSound::init_(heap); +} + +void ForestGiantNoticeSound::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeSound::enter_(params); +} + +void ForestGiantNoticeSound::leave_() { + EnemyNoticeSound::leave_(); +} + +void ForestGiantNoticeSound::loadParams_() { + EnemyNoticeSound::loadParams_(); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getStaticParam(&mUseSimpleOffset_s, "UseSimpleOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantNoticeSound.h b/src/Game/AI/AI/aiForestGiantNoticeSound.h new file mode 100644 index 00000000..e0de2cca --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantNoticeSound.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeSound.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantNoticeSound : public EnemyNoticeSound { + SEAD_RTTI_OVERRIDE(ForestGiantNoticeSound, EnemyNoticeSound) +public: + explicit ForestGiantNoticeSound(const InitArg& arg); + ~ForestGiantNoticeSound() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x48 + const float* mFrontAngle_s{}; + // static_param at offset 0x50 + const bool* mUseSimpleOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantReaction.cpp b/src/Game/AI/AI/aiForestGiantReaction.cpp new file mode 100644 index 00000000..92a0f76b --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantReaction.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiForestGiantReaction.h" + +namespace uking::ai { + +ForestGiantReaction::ForestGiantReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +ForestGiantReaction::~ForestGiantReaction() = default; + +bool ForestGiantReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void ForestGiantReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void ForestGiantReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void ForestGiantReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getStaticParam(&mRightLegArmorSlot_s, "RightLegArmorSlot"); + getStaticParam(&mLeftLegArmorSlot_s, "LeftLegArmorSlot"); + getStaticParam(&mTgLegL_s, "TgLegL"); + getStaticParam(&mBgLegL_s, "BgLegL"); + getStaticParam(&mTgLegR_s, "TgLegR"); + getStaticParam(&mBgLegR_s, "BgLegR"); + getStaticParam(&mTgArmR_s, "TgArmR"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantReaction.h b/src/Game/AI/AI/aiForestGiantReaction.h new file mode 100644 index 00000000..08cbb726 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantReaction.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(ForestGiantReaction, EnemyDefaultReaction) +public: + explicit ForestGiantReaction(const InitArg& arg); + ~ForestGiantReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mRightLegArmorSlot_s{}; + // static_param at offset 0x70 + const int* mLeftLegArmorSlot_s{}; + // static_param at offset 0x78 + sead::SafeString mTgLegL_s{}; + // static_param at offset 0x88 + sead::SafeString mBgLegL_s{}; + // static_param at offset 0x98 + sead::SafeString mTgLegR_s{}; + // static_param at offset 0xa8 + sead::SafeString mBgLegR_s{}; + // static_param at offset 0xb8 + sead::SafeString mTgArmR_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRecognizeTarget.cpp b/src/Game/AI/AI/aiForestGiantRecognizeTarget.cpp new file mode 100644 index 00000000..a183cac7 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRecognizeTarget.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiForestGiantRecognizeTarget.h" + +namespace uking::ai { + +ForestGiantRecognizeTarget::ForestGiantRecognizeTarget(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +ForestGiantRecognizeTarget::~ForestGiantRecognizeTarget() = default; + +bool ForestGiantRecognizeTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForestGiantRecognizeTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForestGiantRecognizeTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForestGiantRecognizeTarget::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRecognizeTarget.h b/src/Game/AI/AI/aiForestGiantRecognizeTarget.h new file mode 100644 index 00000000..0f4179cd --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRecognizeTarget.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantRecognizeTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForestGiantRecognizeTarget, ksys::act::ai::Ai) +public: + explicit ForestGiantRecognizeTarget(const InitArg& arg); + ~ForestGiantRecognizeTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRoam.cpp b/src/Game/AI/AI/aiForestGiantRoam.cpp new file mode 100644 index 00000000..9c815d17 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRoam.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiForestGiantRoam.h" + +namespace uking::ai { + +ForestGiantRoam::ForestGiantRoam(const InitArg& arg) : BokoblinRoam(arg) {} + +ForestGiantRoam::~ForestGiantRoam() = default; + +bool ForestGiantRoam::init_(sead::Heap* heap) { + return BokoblinRoam::init_(heap); +} + +void ForestGiantRoam::enter_(ksys::act::ai::InlineParamPack* params) { + BokoblinRoam::enter_(params); +} + +void ForestGiantRoam::leave_() { + BokoblinRoam::leave_(); +} + +void ForestGiantRoam::loadParams_() { + BokoblinRoam::loadParams_(); + getStaticParam(&mReturnHomeDist_s, "ReturnHomeDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRoam.h b/src/Game/AI/AI/aiForestGiantRoam.h new file mode 100644 index 00000000..a3d4f3e0 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRoam.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiBokoblinRoam.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantRoam : public BokoblinRoam { + SEAD_RTTI_OVERRIDE(ForestGiantRoam, BokoblinRoam) +public: + explicit ForestGiantRoam(const InitArg& arg); + ~ForestGiantRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const float* mReturnHomeDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRoot.cpp b/src/Game/AI/AI/aiForestGiantRoot.cpp new file mode 100644 index 00000000..9d110d4e --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRoot.cpp @@ -0,0 +1,50 @@ +#include "Game/AI/AI/aiForestGiantRoot.h" + +namespace uking::ai { + +ForestGiantRoot::ForestGiantRoot(const InitArg& arg) : EnemyRoot(arg) {} + +ForestGiantRoot::~ForestGiantRoot() = default; + +bool ForestGiantRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void ForestGiantRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void ForestGiantRoot::leave_() { + EnemyRoot::leave_(); +} + +void ForestGiantRoot::loadParams_() { + EnemyRoot::loadParams_(); + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + getStaticParam(&mIsDamageToEnemy_s, "IsDamageToEnemy"); + getAITreeVariable(&mIgnoreGiantArmorCondition_a, "IgnoreGiantArmorCondition"); + getAITreeVariable(&mGiantNecklaceUnit_a, "GiantNecklaceUnit"); + // FIXME: CALL sub_7100706E98 @ 0x7100706e98 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantRoot.h b/src/Game/AI/AI/aiForestGiantRoot.h new file mode 100644 index 00000000..e9525662 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantRoot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(ForestGiantRoot, EnemyRoot) +public: + explicit ForestGiantRoot(const InitArg& arg); + ~ForestGiantRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const bool* mIsDamageToEnemy_s{}; + // aitree_variable at offset 0x220 + bool* mIgnoreGiantArmorCondition_a{}; + // aitree_variable at offset 0x228 + void* mGiantNecklaceUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantStoneShootBattle.cpp b/src/Game/AI/AI/aiForestGiantStoneShootBattle.cpp new file mode 100644 index 00000000..8f607291 --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantStoneShootBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiForestGiantStoneShootBattle.h" + +namespace uking::ai { + +ForestGiantStoneShootBattle::ForestGiantStoneShootBattle(const InitArg& arg) + : StoneShootEnemyBattle(arg) {} + +ForestGiantStoneShootBattle::~ForestGiantStoneShootBattle() = default; + +bool ForestGiantStoneShootBattle::init_(sead::Heap* heap) { + return StoneShootEnemyBattle::init_(heap); +} + +void ForestGiantStoneShootBattle::enter_(ksys::act::ai::InlineParamPack* params) { + StoneShootEnemyBattle::enter_(params); +} + +void ForestGiantStoneShootBattle::leave_() { + StoneShootEnemyBattle::leave_(); +} + +void ForestGiantStoneShootBattle::loadParams_() { + StoneShootEnemyBattle::loadParams_(); + getStaticParam(&mShootItemRate1_s, "ShootItemRate1"); + getStaticParam(&mForceAttackArea_s, "ForceAttackArea"); + getStaticParam(&mShootItemName2_s, "ShootItemName2"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForestGiantStoneShootBattle.h b/src/Game/AI/AI/aiForestGiantStoneShootBattle.h new file mode 100644 index 00000000..1795512d --- /dev/null +++ b/src/Game/AI/AI/aiForestGiantStoneShootBattle.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiStoneShootEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForestGiantStoneShootBattle : public StoneShootEnemyBattle { + SEAD_RTTI_OVERRIDE(ForestGiantStoneShootBattle, StoneShootEnemyBattle) +public: + explicit ForestGiantStoneShootBattle(const InitArg& arg); + ~ForestGiantStoneShootBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb0 + const int* mShootItemRate1_s{}; + // static_param at offset 0xb8 + const float* mForceAttackArea_s{}; + // static_param at offset 0xc0 + sead::SafeString mShootItemName2_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork2AI.cpp b/src/Game/AI/AI/aiFork2AI.cpp new file mode 100644 index 00000000..9bcdcb23 --- /dev/null +++ b/src/Game/AI/AI/aiFork2AI.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiFork2AI.h" + +namespace uking::ai { + +Fork2AI::Fork2AI(const InitArg& arg) : ForkAI(arg) {} + +Fork2AI::~Fork2AI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork2AI.h b/src/Game/AI/AI/aiFork2AI.h new file mode 100644 index 00000000..32cdf452 --- /dev/null +++ b/src/Game/AI/AI/aiFork2AI.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork2AI : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork2AI, ForkAI) +public: + explicit Fork2AI(const InitArg& arg); + ~Fork2AI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork2AIUpperLowerBody.cpp b/src/Game/AI/AI/aiFork2AIUpperLowerBody.cpp new file mode 100644 index 00000000..1ee422ee --- /dev/null +++ b/src/Game/AI/AI/aiFork2AIUpperLowerBody.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiFork2AIUpperLowerBody.h" + +namespace uking::ai { + +Fork2AIUpperLowerBody::Fork2AIUpperLowerBody(const InitArg& arg) : ForkAI(arg) {} + +Fork2AIUpperLowerBody::~Fork2AIUpperLowerBody() = default; + +bool Fork2AIUpperLowerBody::init_(sead::Heap* heap) { + return ForkAI::init_(heap); +} + +void Fork2AIUpperLowerBody::enter_(ksys::act::ai::InlineParamPack* params) { + ForkAI::enter_(params); +} + +void Fork2AIUpperLowerBody::leave_() { + ForkAI::leave_(); +} + +void Fork2AIUpperLowerBody::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork2AIUpperLowerBody.h b/src/Game/AI/AI/aiFork2AIUpperLowerBody.h new file mode 100644 index 00000000..a94fa424 --- /dev/null +++ b/src/Game/AI/AI/aiFork2AIUpperLowerBody.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork2AIUpperLowerBody : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork2AIUpperLowerBody, ForkAI) +public: + explicit Fork2AIUpperLowerBody(const InitArg& arg); + ~Fork2AIUpperLowerBody() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork3AI.cpp b/src/Game/AI/AI/aiFork3AI.cpp new file mode 100644 index 00000000..57330d83 --- /dev/null +++ b/src/Game/AI/AI/aiFork3AI.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiFork3AI.h" + +namespace uking::ai { + +Fork3AI::Fork3AI(const InitArg& arg) : ForkAI(arg) {} + +Fork3AI::~Fork3AI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork3AI.h b/src/Game/AI/AI/aiFork3AI.h new file mode 100644 index 00000000..1a03fb30 --- /dev/null +++ b/src/Game/AI/AI/aiFork3AI.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork3AI : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork3AI, ForkAI) +public: + explicit Fork3AI(const InitArg& arg); + ~Fork3AI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork4AI.cpp b/src/Game/AI/AI/aiFork4AI.cpp new file mode 100644 index 00000000..5d63af20 --- /dev/null +++ b/src/Game/AI/AI/aiFork4AI.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiFork4AI.h" + +namespace uking::ai { + +Fork4AI::Fork4AI(const InitArg& arg) : ForkAI(arg) {} + +Fork4AI::~Fork4AI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork4AI.h b/src/Game/AI/AI/aiFork4AI.h new file mode 100644 index 00000000..47038a37 --- /dev/null +++ b/src/Game/AI/AI/aiFork4AI.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork4AI : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork4AI, ForkAI) +public: + explicit Fork4AI(const InitArg& arg); + ~Fork4AI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork5AI.cpp b/src/Game/AI/AI/aiFork5AI.cpp new file mode 100644 index 00000000..ef81b1d0 --- /dev/null +++ b/src/Game/AI/AI/aiFork5AI.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiFork5AI.h" + +namespace uking::ai { + +Fork5AI::Fork5AI(const InitArg& arg) : ForkAI(arg) {} + +Fork5AI::~Fork5AI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork5AI.h b/src/Game/AI/AI/aiFork5AI.h new file mode 100644 index 00000000..40a3f1a6 --- /dev/null +++ b/src/Game/AI/AI/aiFork5AI.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork5AI : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork5AI, ForkAI) +public: + explicit Fork5AI(const InitArg& arg); + ~Fork5AI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork6AI.cpp b/src/Game/AI/AI/aiFork6AI.cpp new file mode 100644 index 00000000..98295673 --- /dev/null +++ b/src/Game/AI/AI/aiFork6AI.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiFork6AI.h" + +namespace uking::ai { + +Fork6AI::Fork6AI(const InitArg& arg) : ForkAI(arg) {} + +Fork6AI::~Fork6AI() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFork6AI.h b/src/Game/AI/AI/aiFork6AI.h new file mode 100644 index 00000000..e46b6dc7 --- /dev/null +++ b/src/Game/AI/AI/aiFork6AI.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Fork6AI : public ForkAI { + SEAD_RTTI_OVERRIDE(Fork6AI, ForkAI) +public: + explicit Fork6AI(const InitArg& arg); + ~Fork6AI() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkAI.cpp b/src/Game/AI/AI/aiForkAI.cpp new file mode 100644 index 00000000..09c5bf8b --- /dev/null +++ b/src/Game/AI/AI/aiForkAI.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiForkAI.h" + +namespace uking::ai { + +ForkAI::ForkAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ForkAI::~ForkAI() = default; + +bool ForkAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForkAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForkAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkAI.h b/src/Game/AI/AI/aiForkAI.h new file mode 100644 index 00000000..ca7ba046 --- /dev/null +++ b/src/Game/AI/AI/aiForkAI.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForkAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForkAI, ksys::act::ai::Ai) +public: + explicit ForkAI(const InitArg& arg); + ~ForkAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkActionAndJoin.cpp b/src/Game/AI/AI/aiForkActionAndJoin.cpp new file mode 100644 index 00000000..b6d79c00 --- /dev/null +++ b/src/Game/AI/AI/aiForkActionAndJoin.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiForkActionAndJoin.h" + +namespace uking::ai { + +ForkActionAndJoin::ForkActionAndJoin(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ForkActionAndJoin::~ForkActionAndJoin() = default; + +bool ForkActionAndJoin::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ForkActionAndJoin::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ForkActionAndJoin::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ForkActionAndJoin::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkActionAndJoin.h b/src/Game/AI/AI/aiForkActionAndJoin.h new file mode 100644 index 00000000..cd0ff8b6 --- /dev/null +++ b/src/Game/AI/AI/aiForkActionAndJoin.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForkActionAndJoin : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ForkActionAndJoin, ksys::act::ai::Ai) +public: + explicit ForkActionAndJoin(const InitArg& arg); + ~ForkActionAndJoin() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkBeastGanonRoot.cpp b/src/Game/AI/AI/aiForkBeastGanonRoot.cpp new file mode 100644 index 00000000..1021b266 --- /dev/null +++ b/src/Game/AI/AI/aiForkBeastGanonRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiForkBeastGanonRoot.h" + +namespace uking::ai { + +ForkBeastGanonRoot::ForkBeastGanonRoot(const InitArg& arg) : ForkAI(arg) {} + +ForkBeastGanonRoot::~ForkBeastGanonRoot() = default; + +bool ForkBeastGanonRoot::init_(sead::Heap* heap) { + return ForkAI::init_(heap); +} + +void ForkBeastGanonRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ForkAI::enter_(params); +} + +void ForkBeastGanonRoot::leave_() { + ForkAI::leave_(); +} + +void ForkBeastGanonRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiForkBeastGanonRoot.h b/src/Game/AI/AI/aiForkBeastGanonRoot.h new file mode 100644 index 00000000..aa14ec14 --- /dev/null +++ b/src/Game/AI/AI/aiForkBeastGanonRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiForkAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ForkBeastGanonRoot : public ForkAI { + SEAD_RTTI_OVERRIDE(ForkBeastGanonRoot, ForkAI) +public: + explicit ForkBeastGanonRoot(const InitArg& arg); + ~ForkBeastGanonRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFreezeInWaterSelect.cpp b/src/Game/AI/AI/aiFreezeInWaterSelect.cpp new file mode 100644 index 00000000..1ef6dfc6 --- /dev/null +++ b/src/Game/AI/AI/aiFreezeInWaterSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiFreezeInWaterSelect.h" + +namespace uking::ai { + +FreezeInWaterSelect::FreezeInWaterSelect(const InitArg& arg) : InWaterSelect(arg) {} + +FreezeInWaterSelect::~FreezeInWaterSelect() = default; + +void FreezeInWaterSelect::enter_(ksys::act::ai::InlineParamPack* params) { + InWaterSelect::enter_(params); +} + +void FreezeInWaterSelect::leave_() { + InWaterSelect::leave_(); +} + +void FreezeInWaterSelect::loadParams_() { + InWaterSelect::loadParams_(); + getStaticParam(&mIceBreakTime_s, "IceBreakTime"); + getAITreeVariable(&mIsKeepFreeze_a, "IsKeepFreeze"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFreezeInWaterSelect.h b/src/Game/AI/AI/aiFreezeInWaterSelect.h new file mode 100644 index 00000000..9d39fac1 --- /dev/null +++ b/src/Game/AI/AI/aiFreezeInWaterSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "Game/AI/AI/aiInWaterSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FreezeInWaterSelect : public InWaterSelect { + SEAD_RTTI_OVERRIDE(FreezeInWaterSelect, InWaterSelect) +public: + explicit FreezeInWaterSelect(const InitArg& arg); + ~FreezeInWaterSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x58 + const int* mIceBreakTime_s{}; + // aitree_variable at offset 0x60 + bool* mIsKeepFreeze_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFriendCallAction.cpp b/src/Game/AI/AI/aiFriendCallAction.cpp new file mode 100644 index 00000000..4981532d --- /dev/null +++ b/src/Game/AI/AI/aiFriendCallAction.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiFriendCallAction.h" + +namespace uking::ai { + +FriendCallAction::FriendCallAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FriendCallAction::~FriendCallAction() = default; + +bool FriendCallAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FriendCallAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FriendCallAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FriendCallAction::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mNearDistH_s, "NearDistH"); + getStaticParam(&mNearDistVMax_s, "NearDistVMax"); + getStaticParam(&mNearDistVMin_s, "NearDistVMin"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFriendCallAction.h b/src/Game/AI/AI/aiFriendCallAction.h new file mode 100644 index 00000000..bea1e8bb --- /dev/null +++ b/src/Game/AI/AI/aiFriendCallAction.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FriendCallAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FriendCallAction, ksys::act::ai::Ai) +public: + explicit FriendCallAction(const InitArg& arg); + ~FriendCallAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mNearDistH_s{}; + // static_param at offset 0x48 + const float* mNearDistVMax_s{}; + // static_param at offset 0x50 + const float* mNearDistVMin_s{}; + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFromPopPoolDamageSelect.cpp b/src/Game/AI/AI/aiFromPopPoolDamageSelect.cpp new file mode 100644 index 00000000..9d8b8807 --- /dev/null +++ b/src/Game/AI/AI/aiFromPopPoolDamageSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiFromPopPoolDamageSelect.h" + +namespace uking::ai { + +FromPopPoolDamageSelect::FromPopPoolDamageSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +FromPopPoolDamageSelect::~FromPopPoolDamageSelect() = default; + +bool FromPopPoolDamageSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void FromPopPoolDamageSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void FromPopPoolDamageSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void FromPopPoolDamageSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiFromPopPoolDamageSelect.h b/src/Game/AI/AI/aiFromPopPoolDamageSelect.h new file mode 100644 index 00000000..cefb978d --- /dev/null +++ b/src/Game/AI/AI/aiFromPopPoolDamageSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class FromPopPoolDamageSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(FromPopPoolDamageSelect, ksys::act::ai::Ai) +public: + explicit FromPopPoolDamageSelect(const InitArg& arg); + ~FromPopPoolDamageSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGambleTreasureBoxRoot.cpp b/src/Game/AI/AI/aiGambleTreasureBoxRoot.cpp new file mode 100644 index 00000000..cda4725a --- /dev/null +++ b/src/Game/AI/AI/aiGambleTreasureBoxRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGambleTreasureBoxRoot.h" + +namespace uking::ai { + +GambleTreasureBoxRoot::GambleTreasureBoxRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GambleTreasureBoxRoot::~GambleTreasureBoxRoot() = default; + +bool GambleTreasureBoxRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GambleTreasureBoxRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GambleTreasureBoxRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GambleTreasureBoxRoot::loadParams_() { + getAITreeVariable(&mIsOpenTreasureBox_a, "IsOpenTreasureBox"); + getAITreeVariable(&mDropActorName_a, "DropActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGambleTreasureBoxRoot.h b/src/Game/AI/AI/aiGambleTreasureBoxRoot.h new file mode 100644 index 00000000..23e57732 --- /dev/null +++ b/src/Game/AI/AI/aiGambleTreasureBoxRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GambleTreasureBoxRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GambleTreasureBoxRoot, ksys::act::ai::Ai) +public: + explicit GambleTreasureBoxRoot(const InitArg& arg); + ~GambleTreasureBoxRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsOpenTreasureBox_a{}; + // aitree_variable at offset 0x40 + sead::SafeString* mDropActorName_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGameDataFlagSelector.cpp b/src/Game/AI/AI/aiGameDataFlagSelector.cpp new file mode 100644 index 00000000..6fe1d8ec --- /dev/null +++ b/src/Game/AI/AI/aiGameDataFlagSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGameDataFlagSelector.h" + +namespace uking::ai { + +GameDataFlagSelector::GameDataFlagSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GameDataFlagSelector::~GameDataFlagSelector() = default; + +bool GameDataFlagSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GameDataFlagSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GameDataFlagSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GameDataFlagSelector::loadParams_() { + getStaticParam(&mCheckOnEnterOnly_s, "CheckOnEnterOnly"); + getMapUnitParam(&mClearFlag_m, "ClearFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGameDataFlagSelector.h b/src/Game/AI/AI/aiGameDataFlagSelector.h new file mode 100644 index 00000000..a173ddb0 --- /dev/null +++ b/src/Game/AI/AI/aiGameDataFlagSelector.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GameDataFlagSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GameDataFlagSelector, ksys::act::ai::Ai) +public: + explicit GameDataFlagSelector(const InitArg& arg); + ~GameDataFlagSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mCheckOnEnterOnly_s{}; + // map_unit_param at offset 0x40 + sead::SafeString mClearFlag_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonApproachOnFloorRoot.cpp b/src/Game/AI/AI/aiGanonApproachOnFloorRoot.cpp new file mode 100644 index 00000000..ebfd767d --- /dev/null +++ b/src/Game/AI/AI/aiGanonApproachOnFloorRoot.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiGanonApproachOnFloorRoot.h" + +namespace uking::ai { + +GanonApproachOnFloorRoot::GanonApproachOnFloorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonApproachOnFloorRoot::~GanonApproachOnFloorRoot() = default; + +bool GanonApproachOnFloorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonApproachOnFloorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonApproachOnFloorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonApproachOnFloorRoot::loadParams_() { + getStaticParam(&mFinDist_s, "FinDist"); + getStaticParam(&mApproachTime_s, "ApproachTime"); + getStaticParam(&mFinFarDist_s, "FinFarDist"); + getStaticParam(&mMoveFrontRate_s, "MoveFrontRate"); + getStaticParam(&mMoveFrontLRRate_s, "MoveFrontLRRate"); + getStaticParam(&mMoveBackLRRate_s, "MoveBackLRRate"); + getStaticParam(&mCloseDist_s, "CloseDist"); + getStaticParam(&mForbitAngMin_s, "ForbitAngMin"); + getStaticParam(&mForbitAngMax_s, "ForbitAngMax"); + getStaticParam(&mCheckPosAng0_s, "CheckPosAng0"); + getStaticParam(&mCheckPosAng1_s, "CheckPosAng1"); + getStaticParam(&mCheckPosAng2_s, "CheckPosAng2"); + getStaticParam(&mCheckPosAng3_s, "CheckPosAng3"); + getStaticParam(&mCheckPosAng4_s, "CheckPosAng4"); + getDynamicParam(&mIsMoveSide_d, "IsMoveSide"); + getDynamicParam(&mIsChangeable_d, "IsChangeable"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mMoveDstPos_d, "MoveDstPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonApproachOnFloorRoot.h b/src/Game/AI/AI/aiGanonApproachOnFloorRoot.h new file mode 100644 index 00000000..16a2c6bf --- /dev/null +++ b/src/Game/AI/AI/aiGanonApproachOnFloorRoot.h @@ -0,0 +1,57 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonApproachOnFloorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonApproachOnFloorRoot, ksys::act::ai::Ai) +public: + explicit GanonApproachOnFloorRoot(const InitArg& arg); + ~GanonApproachOnFloorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFinDist_s{}; + // static_param at offset 0x40 + const float* mApproachTime_s{}; + // static_param at offset 0x48 + const float* mFinFarDist_s{}; + // static_param at offset 0x50 + const float* mMoveFrontRate_s{}; + // static_param at offset 0x58 + const float* mMoveFrontLRRate_s{}; + // static_param at offset 0x60 + const float* mMoveBackLRRate_s{}; + // static_param at offset 0x68 + const float* mCloseDist_s{}; + // static_param at offset 0x70 + const float* mForbitAngMin_s{}; + // static_param at offset 0x78 + const float* mForbitAngMax_s{}; + // static_param at offset 0x80 + const float* mCheckPosAng0_s{}; + // static_param at offset 0x88 + const float* mCheckPosAng1_s{}; + // static_param at offset 0x90 + const float* mCheckPosAng2_s{}; + // static_param at offset 0x98 + const float* mCheckPosAng3_s{}; + // static_param at offset 0xa0 + const float* mCheckPosAng4_s{}; + // dynamic_param at offset 0xa8 + bool* mIsMoveSide_d{}; + // dynamic_param at offset 0xb0 + bool* mIsChangeable_d{}; + // dynamic_param at offset 0xb8 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0xc0 + sead::Vector3f* mMoveDstPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonApproachOnWallRoot.cpp b/src/Game/AI/AI/aiGanonApproachOnWallRoot.cpp new file mode 100644 index 00000000..10bab7ca --- /dev/null +++ b/src/Game/AI/AI/aiGanonApproachOnWallRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGanonApproachOnWallRoot.h" + +namespace uking::ai { + +GanonApproachOnWallRoot::GanonApproachOnWallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonApproachOnWallRoot::~GanonApproachOnWallRoot() = default; + +bool GanonApproachOnWallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonApproachOnWallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonApproachOnWallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonApproachOnWallRoot::loadParams_() { + getStaticParam(&mApproachTime_s, "ApproachTime"); + getStaticParam(&mMinDist_s, "MinDist"); + getStaticParam(&mMaxDist_s, "MaxDist"); + getStaticParam(&mFinDist_s, "FinDist"); + getStaticParam(&mIsInterpolateYUp_s, "IsInterpolateYUp"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonApproachOnWallRoot.h b/src/Game/AI/AI/aiGanonApproachOnWallRoot.h new file mode 100644 index 00000000..baa2a269 --- /dev/null +++ b/src/Game/AI/AI/aiGanonApproachOnWallRoot.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonApproachOnWallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonApproachOnWallRoot, ksys::act::ai::Ai) +public: + explicit GanonApproachOnWallRoot(const InitArg& arg); + ~GanonApproachOnWallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mApproachTime_s{}; + // static_param at offset 0x40 + const float* mMinDist_s{}; + // static_param at offset 0x48 + const float* mMaxDist_s{}; + // static_param at offset 0x50 + const float* mFinDist_s{}; + // static_param at offset 0x58 + const bool* mIsInterpolateYUp_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleOnFloorRoot.cpp b/src/Game/AI/AI/aiGanonBattleOnFloorRoot.cpp new file mode 100644 index 00000000..dd73bffc --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleOnFloorRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGanonBattleOnFloorRoot.h" + +namespace uking::ai { + +GanonBattleOnFloorRoot::GanonBattleOnFloorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBattleOnFloorRoot::~GanonBattleOnFloorRoot() = default; + +bool GanonBattleOnFloorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBattleOnFloorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBattleOnFloorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBattleOnFloorRoot::loadParams_() { + getStaticParam(&mFarAttackDist_s, "FarAttackDist"); + getDynamicParam(&mIsNoWait_d, "IsNoWait"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleOnFloorRoot.h b/src/Game/AI/AI/aiGanonBattleOnFloorRoot.h new file mode 100644 index 00000000..95ad3792 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleOnFloorRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBattleOnFloorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBattleOnFloorRoot, ksys::act::ai::Ai) +public: + explicit GanonBattleOnFloorRoot(const InitArg& arg); + ~GanonBattleOnFloorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFarAttackDist_s{}; + // dynamic_param at offset 0x40 + bool* mIsNoWait_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleOnWallRoot.cpp b/src/Game/AI/AI/aiGanonBattleOnWallRoot.cpp new file mode 100644 index 00000000..626778d6 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleOnWallRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGanonBattleOnWallRoot.h" + +namespace uking::ai { + +GanonBattleOnWallRoot::GanonBattleOnWallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBattleOnWallRoot::~GanonBattleOnWallRoot() = default; + +bool GanonBattleOnWallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBattleOnWallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBattleOnWallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBattleOnWallRoot::loadParams_() { + getStaticParam(&mGuardianActivateHP_s, "GuardianActivateHP"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleOnWallRoot.h b/src/Game/AI/AI/aiGanonBattleOnWallRoot.h new file mode 100644 index 00000000..28492556 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleOnWallRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBattleOnWallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBattleOnWallRoot, ksys::act::ai::Ai) +public: + explicit GanonBattleOnWallRoot(const InitArg& arg); + ~GanonBattleOnWallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mGuardianActivateHP_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleRoot.cpp b/src/Game/AI/AI/aiGanonBattleRoot.cpp new file mode 100644 index 00000000..45157f08 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGanonBattleRoot.h" + +namespace uking::ai { + +GanonBattleRoot::GanonBattleRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBattleRoot::~GanonBattleRoot() = default; + +bool GanonBattleRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBattleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBattleRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBattleRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBattleRoot.h b/src/Game/AI/AI/aiGanonBattleRoot.h new file mode 100644 index 00000000..38f37b22 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBattleRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBattleRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBattleRoot, ksys::act::ai::Ai) +public: + explicit GanonBattleRoot(const InitArg& arg); + ~GanonBattleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeamOnFloor.cpp b/src/Game/AI/AI/aiGanonBeamOnFloor.cpp new file mode 100644 index 00000000..b03c2b78 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeamOnFloor.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGanonBeamOnFloor.h" + +namespace uking::ai { + +GanonBeamOnFloor::GanonBeamOnFloor(const InitArg& arg) : LastBossShootNormalArrowRoot(arg) {} + +GanonBeamOnFloor::~GanonBeamOnFloor() = default; + +bool GanonBeamOnFloor::init_(sead::Heap* heap) { + return LastBossShootNormalArrowRoot::init_(heap); +} + +void GanonBeamOnFloor::enter_(ksys::act::ai::InlineParamPack* params) { + LastBossShootNormalArrowRoot::enter_(params); +} + +void GanonBeamOnFloor::leave_() { + LastBossShootNormalArrowRoot::leave_(); +} + +void GanonBeamOnFloor::loadParams_() { + LastBossShootNormalArrowRoot::loadParams_(); + getStaticParam(&mTurnStartAng_s, "TurnStartAng"); + getStaticParam(&mKeepMinDist_s, "KeepMinDist"); + getStaticParam(&mTurnRate_s, "TurnRate"); + getStaticParam(&mWalkAS_s, "WalkAS"); + getStaticParam(&mTurnAS_s, "TurnAS"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeamOnFloor.h b/src/Game/AI/AI/aiGanonBeamOnFloor.h new file mode 100644 index 00000000..e96115a0 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeamOnFloor.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiLastBossShootNormalArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeamOnFloor : public LastBossShootNormalArrowRoot { + SEAD_RTTI_OVERRIDE(GanonBeamOnFloor, LastBossShootNormalArrowRoot) +public: + explicit GanonBeamOnFloor(const InitArg& arg); + ~GanonBeamOnFloor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x260 + const float* mTurnStartAng_s{}; + // static_param at offset 0x268 + const float* mKeepMinDist_s{}; + // static_param at offset 0x270 + const float* mTurnRate_s{}; + // static_param at offset 0x278 + sead::SafeString mWalkAS_s{}; + // static_param at offset 0x288 + sead::SafeString mTurnAS_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeamOnWall.cpp b/src/Game/AI/AI/aiGanonBeamOnWall.cpp new file mode 100644 index 00000000..03d5438c --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeamOnWall.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonBeamOnWall.h" + +namespace uking::ai { + +GanonBeamOnWall::GanonBeamOnWall(const InitArg& arg) : LastBossShootNormalArrowRoot(arg) {} + +GanonBeamOnWall::~GanonBeamOnWall() = default; + +bool GanonBeamOnWall::init_(sead::Heap* heap) { + return LastBossShootNormalArrowRoot::init_(heap); +} + +void GanonBeamOnWall::enter_(ksys::act::ai::InlineParamPack* params) { + LastBossShootNormalArrowRoot::enter_(params); +} + +void GanonBeamOnWall::leave_() { + LastBossShootNormalArrowRoot::leave_(); +} + +void GanonBeamOnWall::loadParams_() { + LastBossShootNormalArrowRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeamOnWall.h b/src/Game/AI/AI/aiGanonBeamOnWall.h new file mode 100644 index 00000000..78f1bc86 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeamOnWall.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLastBossShootNormalArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeamOnWall : public LastBossShootNormalArrowRoot { + SEAD_RTTI_OVERRIDE(GanonBeamOnWall, LastBossShootNormalArrowRoot) +public: + explicit GanonBeamOnWall(const InitArg& arg); + ~GanonBeamOnWall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastDying.cpp b/src/Game/AI/AI/aiGanonBeastDying.cpp new file mode 100644 index 00000000..af0dfbc0 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastDying.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonBeastDying.h" + +namespace uking::ai { + +GanonBeastDying::GanonBeastDying(const InitArg& arg) : GanonBeastWait(arg) {} + +GanonBeastDying::~GanonBeastDying() = default; + +bool GanonBeastDying::init_(sead::Heap* heap) { + return GanonBeastWait::init_(heap); +} + +void GanonBeastDying::enter_(ksys::act::ai::InlineParamPack* params) { + GanonBeastWait::enter_(params); +} + +void GanonBeastDying::leave_() { + GanonBeastWait::leave_(); +} + +void GanonBeastDying::loadParams_() { + GanonBeastWait::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastDying.h b/src/Game/AI/AI/aiGanonBeastDying.h new file mode 100644 index 00000000..0152a47e --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastDying.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGanonBeastWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastDying : public GanonBeastWait { + SEAD_RTTI_OVERRIDE(GanonBeastDying, GanonBeastWait) +public: + explicit GanonBeastDying(const InitArg& arg); + ~GanonBeastDying() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastMoveSelect.cpp b/src/Game/AI/AI/aiGanonBeastMoveSelect.cpp new file mode 100644 index 00000000..ca373ae4 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastMoveSelect.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGanonBeastMoveSelect.h" + +namespace uking::ai { + +GanonBeastMoveSelect::GanonBeastMoveSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastMoveSelect::~GanonBeastMoveSelect() = default; + +bool GanonBeastMoveSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastMoveSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastMoveSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastMoveSelect::loadParams_() { + getStaticParam(&mDist_s, "Dist"); + getStaticParam(&mIsMoveFinishEnd_s, "IsMoveFinishEnd"); + getStaticParam(&mCentralPoint_s, "CentralPoint"); + getStaticParam(&mFrontOffset_s, "FrontOffset"); + getStaticParam(&mWallDist_s, "WallDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastMoveSelect.h b/src/Game/AI/AI/aiGanonBeastMoveSelect.h new file mode 100644 index 00000000..7db2ffe0 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastMoveSelect.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastMoveSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastMoveSelect, ksys::act::ai::Ai) +public: + explicit GanonBeastMoveSelect(const InitArg& arg); + ~GanonBeastMoveSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDist_s{}; + // static_param at offset 0x40 + const float* mFrontOffset_s{}; + // static_param at offset 0x48 + const float* mWallDist_s{}; + // static_param at offset 0x50 + const bool* mIsMoveFinishEnd_s{}; + // static_param at offset 0x58 + const sead::Vector3f* mCentralPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastReaction.cpp b/src/Game/AI/AI/aiGanonBeastReaction.cpp new file mode 100644 index 00000000..0c8cc618 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastReaction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiGanonBeastReaction.h" + +namespace uking::ai { + +GanonBeastReaction::GanonBeastReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastReaction::~GanonBeastReaction() = default; + +bool GanonBeastReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastReaction::loadParams_() { + getStaticParam(&mASSlot_s, "ASSlot"); + getAITreeVariable(&mWeakPointAliveFlag_a, "WeakPointAliveFlag"); + getAITreeVariable(&mWeakPointActiveFlag_a, "WeakPointActiveFlag"); + getAITreeVariable(&mIsWeakPointAppearMode_a, "IsWeakPointAppearMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastReaction.h b/src/Game/AI/AI/aiGanonBeastReaction.h new file mode 100644 index 00000000..e7654234 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastReaction.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastReaction, ksys::act::ai::Ai) +public: + explicit GanonBeastReaction(const InitArg& arg); + ~GanonBeastReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mASSlot_s{}; + // aitree_variable at offset 0x40 + bool* mIsWeakPointAppearMode_a{}; + // aitree_variable at offset 0x48 + void* mWeakPointAliveFlag_a{}; + // aitree_variable at offset 0x50 + void* mWeakPointActiveFlag_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastRoot.cpp b/src/Game/AI/AI/aiGanonBeastRoot.cpp new file mode 100644 index 00000000..4d5df148 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastRoot.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiGanonBeastRoot.h" + +namespace uking::ai { + +GanonBeastRoot::GanonBeastRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastRoot::~GanonBeastRoot() = default; + +bool GanonBeastRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastRoot::loadParams_() { + getStaticParam(&mGrudeInterval3_s, "GrudeInterval3"); + getStaticParam(&mGrudeInterval4_s, "GrudeInterval4"); + getStaticParam(&mGrudeInterval5_s, "GrudeInterval5"); + getStaticParam(&mGrudeCreateNum_s, "GrudeCreateNum"); + getStaticParam(&mWeakPointASSlot_s, "WeakPointASSlot"); + getStaticParam(&mGrudePlayerDist_s, "GrudePlayerDist"); + getStaticParam(&mGrudeRandRange_s, "GrudeRandRange"); + getStaticParam(&mGrudeCenterOffset_s, "GrudeCenterOffset"); + getStaticParam(&mInitWeakPointASName_s, "InitWeakPointASName"); + getStaticParam(&mGrudeRainObject_s, "GrudeRainObject"); + getStaticParam(&mGrudeRainObject2_s, "GrudeRainObject2"); + getAITreeVariable(&mWeakPointAliveFlag_a, "WeakPointAliveFlag"); + getAITreeVariable(&mWeakPointActiveFlag_a, "WeakPointActiveFlag"); + getAITreeVariable(&mIsGanonBeastAngry_a, "IsGanonBeastAngry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastRoot.h b/src/Game/AI/AI/aiGanonBeastRoot.h new file mode 100644 index 00000000..a19a7c7a --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastRoot.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastRoot, ksys::act::ai::Ai) +public: + explicit GanonBeastRoot(const InitArg& arg); + ~GanonBeastRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsGanonBeastAngry_a{}; + // aitree_variable at offset 0x40 + void* mWeakPointAliveFlag_a{}; + // aitree_variable at offset 0x48 + void* mWeakPointActiveFlag_a{}; + // static_param at offset 0x90 + sead::SafeString mGrudeRainObject_s{}; + // static_param at offset 0xa0 + sead::SafeString mGrudeRainObject2_s{}; + // static_param at offset 0xc0 + const int* mGrudeInterval3_s{}; + // static_param at offset 0xc8 + const int* mGrudeInterval4_s{}; + // static_param at offset 0xd0 + const int* mGrudeInterval5_s{}; + // static_param at offset 0xd8 + const int* mGrudeCreateNum_s{}; + // static_param at offset 0xe0 + const int* mWeakPointASSlot_s{}; + // static_param at offset 0xe8 + const float* mGrudePlayerDist_s{}; + // static_param at offset 0xf0 + const float* mGrudeRandRange_s{}; + // static_param at offset 0xf8 + const float* mGrudeCenterOffset_s{}; + // static_param at offset 0x100 + sead::SafeString mInitWeakPointASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastStairState.cpp b/src/Game/AI/AI/aiGanonBeastStairState.cpp new file mode 100644 index 00000000..9322a79f --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastStairState.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGanonBeastStairState.h" + +namespace uking::ai { + +GanonBeastStairState::GanonBeastStairState(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastStairState::~GanonBeastStairState() = default; + +bool GanonBeastStairState::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastStairState::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastStairState::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastStairState::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastStairState.h b/src/Game/AI/AI/aiGanonBeastStairState.h new file mode 100644 index 00000000..f2e9df3d --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastStairState.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastStairState : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastStairState, ksys::act::ai::Ai) +public: + explicit GanonBeastStairState(const InitArg& arg); + ~GanonBeastStairState() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastSufferChanger.cpp b/src/Game/AI/AI/aiGanonBeastSufferChanger.cpp new file mode 100644 index 00000000..7ac9010e --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastSufferChanger.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiGanonBeastSufferChanger.h" + +namespace uking::ai { + +GanonBeastSufferChanger::GanonBeastSufferChanger(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastSufferChanger::~GanonBeastSufferChanger() = default; + +bool GanonBeastSufferChanger::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastSufferChanger::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastSufferChanger::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastSufferChanger::loadParams_() { + getStaticParam(&mWeakPoint1Time_s, "WeakPoint1Time"); + getStaticParam(&mWeakPoint2Time_s, "WeakPoint2Time"); + getStaticParam(&mWeakPoint3Time_s, "WeakPoint3Time"); + getStaticParam(&mWeakPoint4Time_s, "WeakPoint4Time"); + getStaticParam(&mCloseOption_s, "CloseOption"); + getStaticParam(&mTimer_s, "Timer"); + getStaticParam(&mmstxtName_s, "mstxtName"); + getStaticParam(&mlabelName_s, "labelName"); + getStaticParam(&mlabelName2_s, "labelName2"); + getStaticParam(&mlabelName3_s, "labelName3"); + getAITreeVariable(&mIsWeakPointAppearMode_a, "IsWeakPointAppearMode"); + getAITreeVariable(&mSufferChangeStopCounter_a, "SufferChangeStopCounter"); + getAITreeVariable(&mSimpleDialogUnit_a, "SimpleDialogUnit"); + getAITreeVariable(&mInBeastGanonVoiceSequence_a, "InBeastGanonVoiceSequence"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastSufferChanger.h b/src/Game/AI/AI/aiGanonBeastSufferChanger.h new file mode 100644 index 00000000..edfa1d19 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastSufferChanger.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastSufferChanger : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastSufferChanger, ksys::act::ai::Ai) +public: + explicit GanonBeastSufferChanger(const InitArg& arg); + ~GanonBeastSufferChanger() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mSufferChangeStopCounter_a{}; + // aitree_variable at offset 0x40 + bool* mIsWeakPointAppearMode_a{}; + // aitree_variable at offset 0x48 + bool* mInBeastGanonVoiceSequence_a{}; + // aitree_variable at offset 0x50 + void* mSimpleDialogUnit_a{}; + // static_param at offset 0x58 + const int* mWeakPoint1Time_s{}; + // static_param at offset 0x60 + const int* mWeakPoint2Time_s{}; + // static_param at offset 0x68 + const int* mWeakPoint3Time_s{}; + // static_param at offset 0x70 + const int* mWeakPoint4Time_s{}; + // static_param at offset 0x78 + const int* mCloseOption_s{}; + // static_param at offset 0x80 + const int* mTimer_s{}; + // static_param at offset 0x88 + sead::SafeString mmstxtName_s{}; + // static_param at offset 0x98 + sead::SafeString mlabelName_s{}; + // static_param at offset 0xa8 + sead::SafeString mlabelName2_s{}; + // static_param at offset 0xb8 + sead::SafeString mlabelName3_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastWait.cpp b/src/Game/AI/AI/aiGanonBeastWait.cpp new file mode 100644 index 00000000..9b8352cc --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastWait.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonBeastWait.h" + +namespace uking::ai { + +GanonBeastWait::GanonBeastWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonBeastWait::~GanonBeastWait() = default; + +bool GanonBeastWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonBeastWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonBeastWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonBeastWait::loadParams_() { + getAITreeVariable(&mIsWeakPointAppearMode_a, "IsWeakPointAppearMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonBeastWait.h b/src/Game/AI/AI/aiGanonBeastWait.h new file mode 100644 index 00000000..ec3c4f77 --- /dev/null +++ b/src/Game/AI/AI/aiGanonBeastWait.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonBeastWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonBeastWait, ksys::act::ai::Ai) +public: + explicit GanonBeastWait(const InitArg& arg); + ~GanonBeastWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsWeakPointAppearMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.cpp b/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.cpp new file mode 100644 index 00000000..2a0b9253 --- /dev/null +++ b/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h" + +namespace uking::ai { + +GanonDemoMoveSeqTwoAction::GanonDemoMoveSeqTwoAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonDemoMoveSeqTwoAction::~GanonDemoMoveSeqTwoAction() = default; + +bool GanonDemoMoveSeqTwoAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonDemoMoveSeqTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonDemoMoveSeqTwoAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonDemoMoveSeqTwoAction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h b/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h new file mode 100644 index 00000000..cadef8f4 --- /dev/null +++ b/src/Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonDemoMoveSeqTwoAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonDemoMoveSeqTwoAction, ksys::act::ai::Ai) +public: + explicit GanonDemoMoveSeqTwoAction(const InitArg& arg); + ~GanonDemoMoveSeqTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonFarAttackRootOnWall.cpp b/src/Game/AI/AI/aiGanonFarAttackRootOnWall.cpp new file mode 100644 index 00000000..2388b2aa --- /dev/null +++ b/src/Game/AI/AI/aiGanonFarAttackRootOnWall.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGanonFarAttackRootOnWall.h" + +namespace uking::ai { + +GanonFarAttackRootOnWall::GanonFarAttackRootOnWall(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonFarAttackRootOnWall::~GanonFarAttackRootOnWall() = default; + +bool GanonFarAttackRootOnWall::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonFarAttackRootOnWall::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonFarAttackRootOnWall::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonFarAttackRootOnWall::loadParams_() { + getStaticParam(&mPillarMax_s, "PillarMax"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mViewPos_d, "ViewPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonFarAttackRootOnWall.h b/src/Game/AI/AI/aiGanonFarAttackRootOnWall.h new file mode 100644 index 00000000..6811f9a7 --- /dev/null +++ b/src/Game/AI/AI/aiGanonFarAttackRootOnWall.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonFarAttackRootOnWall : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonFarAttackRootOnWall, ksys::act::ai::Ai) +public: + explicit GanonFarAttackRootOnWall(const InitArg& arg); + ~GanonFarAttackRootOnWall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mPillarMax_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mViewPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonGrudgeNormal.cpp b/src/Game/AI/AI/aiGanonGrudgeNormal.cpp new file mode 100644 index 00000000..e3bb428f --- /dev/null +++ b/src/Game/AI/AI/aiGanonGrudgeNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonGrudgeNormal.h" + +namespace uking::ai { + +GanonGrudgeNormal::GanonGrudgeNormal(const InitArg& arg) : EnemyNormal(arg) {} + +GanonGrudgeNormal::~GanonGrudgeNormal() = default; + +bool GanonGrudgeNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void GanonGrudgeNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void GanonGrudgeNormal::leave_() { + EnemyNormal::leave_(); +} + +void GanonGrudgeNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonGrudgeNormal.h b/src/Game/AI/AI/aiGanonGrudgeNormal.h new file mode 100644 index 00000000..b1eeff1b --- /dev/null +++ b/src/Game/AI/AI/aiGanonGrudgeNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonGrudgeNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(GanonGrudgeNormal, EnemyNormal) +public: + explicit GanonGrudgeNormal(const InitArg& arg); + ~GanonGrudgeNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.cpp b/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.cpp new file mode 100644 index 00000000..6573f3c1 --- /dev/null +++ b/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGanonNearAttackOnFloorRoot.h" + +namespace uking::ai { + +GanonNearAttackOnFloorRoot::GanonNearAttackOnFloorRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GanonNearAttackOnFloorRoot::~GanonNearAttackOnFloorRoot() = default; + +bool GanonNearAttackOnFloorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonNearAttackOnFloorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonNearAttackOnFloorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonNearAttackOnFloorRoot::loadParams_() { + getStaticParam(&mNearDist_s, "NearDist"); + getDynamicParam(&mIsCounter_d, "IsCounter"); + getDynamicParam(&mIsPrevBeam_d, "IsPrevBeam"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.h b/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.h new file mode 100644 index 00000000..5ebd08ca --- /dev/null +++ b/src/Game/AI/AI/aiGanonNearAttackOnFloorRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonNearAttackOnFloorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonNearAttackOnFloorRoot, ksys::act::ai::Ai) +public: + explicit GanonNearAttackOnFloorRoot(const InitArg& arg); + ~GanonNearAttackOnFloorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNearDist_s{}; + // dynamic_param at offset 0x40 + bool* mIsCounter_d{}; + // dynamic_param at offset 0x48 + bool* mIsPrevBeam_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonNormalRoot.cpp b/src/Game/AI/AI/aiGanonNormalRoot.cpp new file mode 100644 index 00000000..4879913c --- /dev/null +++ b/src/Game/AI/AI/aiGanonNormalRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGanonNormalRoot.h" + +namespace uking::ai { + +GanonNormalRoot::GanonNormalRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonNormalRoot::~GanonNormalRoot() = default; + +bool GanonNormalRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonNormalRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonNormalRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonNormalRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonNormalRoot.h b/src/Game/AI/AI/aiGanonNormalRoot.h new file mode 100644 index 00000000..1fecc9f3 --- /dev/null +++ b/src/Game/AI/AI/aiGanonNormalRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonNormalRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonNormalRoot, ksys::act::ai::Ai) +public: + explicit GanonNormalRoot(const InitArg& arg); + ~GanonNormalRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonReaction.cpp b/src/Game/AI/AI/aiGanonReaction.cpp new file mode 100644 index 00000000..67310c20 --- /dev/null +++ b/src/Game/AI/AI/aiGanonReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonReaction.h" + +namespace uking::ai { + +GanonReaction::GanonReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +GanonReaction::~GanonReaction() = default; + +bool GanonReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void GanonReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void GanonReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void GanonReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonReaction.h b/src/Game/AI/AI/aiGanonReaction.h new file mode 100644 index 00000000..77b5efed --- /dev/null +++ b/src/Game/AI/AI/aiGanonReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(GanonReaction, EnemyDefaultReaction) +public: + explicit GanonReaction(const InitArg& arg); + ~GanonReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonRecognizeRoot.cpp b/src/Game/AI/AI/aiGanonRecognizeRoot.cpp new file mode 100644 index 00000000..54e3ca12 --- /dev/null +++ b/src/Game/AI/AI/aiGanonRecognizeRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGanonRecognizeRoot.h" + +namespace uking::ai { + +GanonRecognizeRoot::GanonRecognizeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonRecognizeRoot::~GanonRecognizeRoot() = default; + +bool GanonRecognizeRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonRecognizeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonRecognizeRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonRecognizeRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonRecognizeRoot.h b/src/Game/AI/AI/aiGanonRecognizeRoot.h new file mode 100644 index 00000000..b0c54e6c --- /dev/null +++ b/src/Game/AI/AI/aiGanonRecognizeRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonRecognizeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonRecognizeRoot, ksys::act::ai::Ai) +public: + explicit GanonRecognizeRoot(const InitArg& arg); + ~GanonRecognizeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonShockRoot.cpp b/src/Game/AI/AI/aiGanonShockRoot.cpp new file mode 100644 index 00000000..d232ff94 --- /dev/null +++ b/src/Game/AI/AI/aiGanonShockRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGanonShockRoot.h" + +namespace uking::ai { + +GanonShockRoot::GanonShockRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonShockRoot::~GanonShockRoot() = default; + +bool GanonShockRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonShockRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonShockRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonShockRoot::loadParams_() { + getStaticParam(&mIsDoRecoverAction_s, "IsDoRecoverAction"); + getStaticParam(&mIsGuardJust_s, "IsGuardJust"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonShockRoot.h b/src/Game/AI/AI/aiGanonShockRoot.h new file mode 100644 index 00000000..1c125f10 --- /dev/null +++ b/src/Game/AI/AI/aiGanonShockRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonShockRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonShockRoot, ksys::act::ai::Ai) +public: + explicit GanonShockRoot(const InitArg& arg); + ~GanonShockRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsDoRecoverAction_s{}; + // static_param at offset 0x40 + const bool* mIsGuardJust_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonStateChangeRoot.cpp b/src/Game/AI/AI/aiGanonStateChangeRoot.cpp new file mode 100644 index 00000000..fddeddad --- /dev/null +++ b/src/Game/AI/AI/aiGanonStateChangeRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGanonStateChangeRoot.h" + +namespace uking::ai { + +GanonStateChangeRoot::GanonStateChangeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonStateChangeRoot::~GanonStateChangeRoot() = default; + +bool GanonStateChangeRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonStateChangeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonStateChangeRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonStateChangeRoot::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonStateChangeRoot.h b/src/Game/AI/AI/aiGanonStateChangeRoot.h new file mode 100644 index 00000000..3801f7ac --- /dev/null +++ b/src/Game/AI/AI/aiGanonStateChangeRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonStateChangeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonStateChangeRoot, ksys::act::ai::Ai) +public: + explicit GanonStateChangeRoot(const InitArg& arg); + ~GanonStateChangeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonThrowActorRoot.cpp b/src/Game/AI/AI/aiGanonThrowActorRoot.cpp new file mode 100644 index 00000000..09d4df19 --- /dev/null +++ b/src/Game/AI/AI/aiGanonThrowActorRoot.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiGanonThrowActorRoot.h" + +namespace uking::ai { + +GanonThrowActorRoot::GanonThrowActorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonThrowActorRoot::~GanonThrowActorRoot() = default; + +bool GanonThrowActorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonThrowActorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonThrowActorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonThrowActorRoot::loadParams_() { + getStaticParam(&mAttackDamage_s, "AttackDamage"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mAddAtackPower_s, "AddAtackPower"); + getStaticParam(&mIsThrowQuick_s, "IsThrowQuick"); + getStaticParam(&mIsWaitBulletDelete_s, "IsWaitBulletDelete"); + getStaticParam(&mIsSetSystemGroupHandler_s, "IsSetSystemGroupHandler"); + getStaticParam(&mIsSendDeleteMessageAtLeave_s, "IsSendDeleteMessageAtLeave"); + getStaticParam(&mThrowActorName_s, "ThrowActorName"); + getStaticParam(&mRegisterPartsName_s, "RegisterPartsName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mViewPos_d, "ViewPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonThrowActorRoot.h b/src/Game/AI/AI/aiGanonThrowActorRoot.h new file mode 100644 index 00000000..8f11a98c --- /dev/null +++ b/src/Game/AI/AI/aiGanonThrowActorRoot.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonThrowActorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonThrowActorRoot, ksys::act::ai::Ai) +public: + explicit GanonThrowActorRoot(const InitArg& arg); + ~GanonThrowActorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackDamage_s{}; + // static_param at offset 0x40 + const int* mAtMinDamage_s{}; + // static_param at offset 0x48 + const int* mAddAtackPower_s{}; + // static_param at offset 0x50 + const bool* mIsThrowQuick_s{}; + // static_param at offset 0x58 + const bool* mIsWaitBulletDelete_s{}; + // static_param at offset 0x60 + const bool* mIsSetSystemGroupHandler_s{}; + // static_param at offset 0x68 + const bool* mIsSendDeleteMessageAtLeave_s{}; + // static_param at offset 0x70 + sead::SafeString mThrowActorName_s{}; + // static_param at offset 0x80 + sead::SafeString mRegisterPartsName_s{}; + // dynamic_param at offset 0x90 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x98 + sead::Vector3f* mViewPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonThrowMultiActorRoot.cpp b/src/Game/AI/AI/aiGanonThrowMultiActorRoot.cpp new file mode 100644 index 00000000..2d0b6339 --- /dev/null +++ b/src/Game/AI/AI/aiGanonThrowMultiActorRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiGanonThrowMultiActorRoot.h" + +namespace uking::ai { + +GanonThrowMultiActorRoot::GanonThrowMultiActorRoot(const InitArg& arg) : GanonThrowActorRoot(arg) {} + +GanonThrowMultiActorRoot::~GanonThrowMultiActorRoot() = default; + +bool GanonThrowMultiActorRoot::init_(sead::Heap* heap) { + return GanonThrowActorRoot::init_(heap); +} + +void GanonThrowMultiActorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GanonThrowActorRoot::enter_(params); +} + +void GanonThrowMultiActorRoot::leave_() { + GanonThrowActorRoot::leave_(); +} + +void GanonThrowMultiActorRoot::loadParams_() { + GanonThrowActorRoot::loadParams_(); + getStaticParam(&mPartsName1_s, "PartsName1"); + getStaticParam(&mPartsName2_s, "PartsName2"); + getStaticParam(&mPartsName3_s, "PartsName3"); + getStaticParam(&mPartsName4_s, "PartsName4"); + getStaticParam(&mPartsName5_s, "PartsName5"); + getStaticParam(&mPartsName6_s, "PartsName6"); + getStaticParam(&mPartsName7_s, "PartsName7"); + getStaticParam(&mPartsName8_s, "PartsName8"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonThrowMultiActorRoot.h b/src/Game/AI/AI/aiGanonThrowMultiActorRoot.h new file mode 100644 index 00000000..537e5e0a --- /dev/null +++ b/src/Game/AI/AI/aiGanonThrowMultiActorRoot.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiGanonThrowActorRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonThrowMultiActorRoot : public GanonThrowActorRoot { + SEAD_RTTI_OVERRIDE(GanonThrowMultiActorRoot, GanonThrowActorRoot) +public: + explicit GanonThrowMultiActorRoot(const InitArg& arg); + ~GanonThrowMultiActorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa8 + sead::SafeString mPartsName1_s{}; + // static_param at offset 0xb8 + sead::SafeString mPartsName2_s{}; + // static_param at offset 0xc8 + sead::SafeString mPartsName3_s{}; + // static_param at offset 0xd8 + sead::SafeString mPartsName4_s{}; + // static_param at offset 0xe8 + sead::SafeString mPartsName5_s{}; + // static_param at offset 0xf8 + sead::SafeString mPartsName6_s{}; + // static_param at offset 0x108 + sead::SafeString mPartsName7_s{}; + // static_param at offset 0x118 + sead::SafeString mPartsName8_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.cpp b/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.cpp new file mode 100644 index 00000000..d5df7d1a --- /dev/null +++ b/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGanonWeaponAttackOnFloor.h" + +namespace uking::ai { + +GanonWeaponAttackOnFloor::GanonWeaponAttackOnFloor(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GanonWeaponAttackOnFloor::~GanonWeaponAttackOnFloor() = default; + +bool GanonWeaponAttackOnFloor::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GanonWeaponAttackOnFloor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GanonWeaponAttackOnFloor::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GanonWeaponAttackOnFloor::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mCloseDist_s, "CloseDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.h b/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.h new file mode 100644 index 00000000..1e2f236a --- /dev/null +++ b/src/Game/AI/AI/aiGanonWeaponAttackOnFloor.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GanonWeaponAttackOnFloor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GanonWeaponAttackOnFloor, ksys::act::ai::Ai) +public: + explicit GanonWeaponAttackOnFloor(const InitArg& arg); + ~GanonWeaponAttackOnFloor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mCloseDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGearRangeSelect.cpp b/src/Game/AI/AI/aiGearRangeSelect.cpp new file mode 100644 index 00000000..abe2968d --- /dev/null +++ b/src/Game/AI/AI/aiGearRangeSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGearRangeSelect.h" + +namespace uking::ai { + +GearRangeSelect::GearRangeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GearRangeSelect::~GearRangeSelect() = default; + +bool GearRangeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GearRangeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GearRangeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GearRangeSelect::loadParams_() { + getStaticParam(&mGearThreashold_s, "GearThreashold"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGearRangeSelect.h b/src/Game/AI/AI/aiGearRangeSelect.h new file mode 100644 index 00000000..70ac6603 --- /dev/null +++ b/src/Game/AI/AI/aiGearRangeSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GearRangeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GearRangeSelect, ksys::act::ai::Ai) +public: + explicit GearRangeSelect(const InitArg& arg); + ~GearRangeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mGearThreashold_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGelEnemyReaction.cpp b/src/Game/AI/AI/aiGelEnemyReaction.cpp new file mode 100644 index 00000000..fdfeea0c --- /dev/null +++ b/src/Game/AI/AI/aiGelEnemyReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGelEnemyReaction.h" + +namespace uking::ai { + +GelEnemyReaction::GelEnemyReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +GelEnemyReaction::~GelEnemyReaction() = default; + +bool GelEnemyReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void GelEnemyReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void GelEnemyReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void GelEnemyReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGelEnemyReaction.h b/src/Game/AI/AI/aiGelEnemyReaction.h new file mode 100644 index 00000000..613a1605 --- /dev/null +++ b/src/Game/AI/AI/aiGelEnemyReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GelEnemyReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(GelEnemyReaction, EnemyDefaultReaction) +public: + explicit GelEnemyReaction(const InitArg& arg); + ~GelEnemyReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.cpp b/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.cpp new file mode 100644 index 00000000..dfb57500 --- /dev/null +++ b/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGerudoHeroSoulGiftRoot.h" + +namespace uking::ai { + +GerudoHeroSoulGiftRoot::GerudoHeroSoulGiftRoot(const InitArg& arg) : HeroSoulGiftRoot(arg) {} + +GerudoHeroSoulGiftRoot::~GerudoHeroSoulGiftRoot() = default; + +bool GerudoHeroSoulGiftRoot::init_(sead::Heap* heap) { + return HeroSoulGiftRoot::init_(heap); +} + +void GerudoHeroSoulGiftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + HeroSoulGiftRoot::enter_(params); +} + +void GerudoHeroSoulGiftRoot::leave_() { + HeroSoulGiftRoot::leave_(); +} + +void GerudoHeroSoulGiftRoot::loadParams_() { + HeroSoulGiftRoot::loadParams_(); + getStaticParam(&mMaxLength_s, "MaxLength"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.h b/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.h new file mode 100644 index 00000000..95ad9ce5 --- /dev/null +++ b/src/Game/AI/AI/aiGerudoHeroSoulGiftRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GerudoHeroSoulGiftRoot : public HeroSoulGiftRoot { + SEAD_RTTI_OVERRIDE(GerudoHeroSoulGiftRoot, HeroSoulGiftRoot) +public: + explicit GerudoHeroSoulGiftRoot(const InitArg& arg); + ~GerudoHeroSoulGiftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mMaxLength_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGerudoQueenBattle.cpp b/src/Game/AI/AI/aiGerudoQueenBattle.cpp new file mode 100644 index 00000000..9ce0b9a6 --- /dev/null +++ b/src/Game/AI/AI/aiGerudoQueenBattle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGerudoQueenBattle.h" + +namespace uking::ai { + +GerudoQueenBattle::GerudoQueenBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GerudoQueenBattle::~GerudoQueenBattle() = default; + +bool GerudoQueenBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GerudoQueenBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GerudoQueenBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GerudoQueenBattle::loadParams_() { + getStaticParam(&mRetireFrame_s, "RetireFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGerudoQueenBattle.h b/src/Game/AI/AI/aiGerudoQueenBattle.h new file mode 100644 index 00000000..9703ed14 --- /dev/null +++ b/src/Game/AI/AI/aiGerudoQueenBattle.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GerudoQueenBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GerudoQueenBattle, ksys::act::ai::Ai) +public: + explicit GerudoQueenBattle(const InitArg& arg); + ~GerudoQueenBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRetireFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGetItemBrightBow.cpp b/src/Game/AI/AI/aiGetItemBrightBow.cpp new file mode 100644 index 00000000..6669e988 --- /dev/null +++ b/src/Game/AI/AI/aiGetItemBrightBow.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGetItemBrightBow.h" + +namespace uking::ai { + +GetItemBrightBow::GetItemBrightBow(const InitArg& arg) : GetItemNormal(arg) {} + +GetItemBrightBow::~GetItemBrightBow() = default; + +bool GetItemBrightBow::init_(sead::Heap* heap) { + return GetItemNormal::init_(heap); +} + +void GetItemBrightBow::enter_(ksys::act::ai::InlineParamPack* params) { + GetItemNormal::enter_(params); +} + +void GetItemBrightBow::leave_() { + GetItemNormal::leave_(); +} + +void GetItemBrightBow::loadParams_() { + GetItemNormal::loadParams_(); + getStaticParam(&mGetRadius_s, "GetRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGetItemBrightBow.h b/src/Game/AI/AI/aiGetItemBrightBow.h new file mode 100644 index 00000000..80751d40 --- /dev/null +++ b/src/Game/AI/AI/aiGetItemBrightBow.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiGetItemNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GetItemBrightBow : public GetItemNormal { + SEAD_RTTI_OVERRIDE(GetItemBrightBow, GetItemNormal) +public: + explicit GetItemBrightBow(const InitArg& arg); + ~GetItemBrightBow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mGetRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGetItemNormal.cpp b/src/Game/AI/AI/aiGetItemNormal.cpp new file mode 100644 index 00000000..e828d803 --- /dev/null +++ b/src/Game/AI/AI/aiGetItemNormal.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiGetItemNormal.h" + +namespace uking::ai { + +GetItemNormal::GetItemNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool GetItemNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GetItemNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GetItemNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GetItemNormal::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGetItemNormal.h b/src/Game/AI/AI/aiGetItemNormal.h new file mode 100644 index 00000000..d9af9341 --- /dev/null +++ b/src/Game/AI/AI/aiGetItemNormal.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GetItemNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GetItemNormal, ksys::act::ai::Ai) +public: + explicit GetItemNormal(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantArmorAsWeakPoint.cpp b/src/Game/AI/AI/aiGiantArmorAsWeakPoint.cpp new file mode 100644 index 00000000..5c10b700 --- /dev/null +++ b/src/Game/AI/AI/aiGiantArmorAsWeakPoint.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGiantArmorAsWeakPoint.h" + +namespace uking::ai { + +GiantArmorAsWeakPoint::GiantArmorAsWeakPoint(const InitArg& arg) : GiantArmorRoot(arg) {} + +GiantArmorAsWeakPoint::~GiantArmorAsWeakPoint() = default; + +bool GiantArmorAsWeakPoint::init_(sead::Heap* heap) { + return GiantArmorRoot::init_(heap); +} + +void GiantArmorAsWeakPoint::enter_(ksys::act::ai::InlineParamPack* params) { + GiantArmorRoot::enter_(params); +} + +void GiantArmorAsWeakPoint::leave_() { + GiantArmorRoot::leave_(); +} + +void GiantArmorAsWeakPoint::loadParams_() { + GiantArmorRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantArmorAsWeakPoint.h b/src/Game/AI/AI/aiGiantArmorAsWeakPoint.h new file mode 100644 index 00000000..6c45d497 --- /dev/null +++ b/src/Game/AI/AI/aiGiantArmorAsWeakPoint.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGiantArmorRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantArmorAsWeakPoint : public GiantArmorRoot { + SEAD_RTTI_OVERRIDE(GiantArmorAsWeakPoint, GiantArmorRoot) +public: + explicit GiantArmorAsWeakPoint(const InitArg& arg); + ~GiantArmorAsWeakPoint() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantArmorRoot.cpp b/src/Game/AI/AI/aiGiantArmorRoot.cpp new file mode 100644 index 00000000..47c42d38 --- /dev/null +++ b/src/Game/AI/AI/aiGiantArmorRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGiantArmorRoot.h" + +namespace uking::ai { + +GiantArmorRoot::GiantArmorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GiantArmorRoot::~GiantArmorRoot() = default; + +bool GiantArmorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantArmorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantArmorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantArmorRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantArmorRoot.h b/src/Game/AI/AI/aiGiantArmorRoot.h new file mode 100644 index 00000000..5ddc441e --- /dev/null +++ b/src/Game/AI/AI/aiGiantArmorRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantArmorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantArmorRoot, ksys::act::ai::Ai) +public: + explicit GiantArmorRoot(const InitArg& arg); + ~GiantArmorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantEarthReleaseAttack.cpp b/src/Game/AI/AI/aiGiantEarthReleaseAttack.cpp new file mode 100644 index 00000000..3af143c3 --- /dev/null +++ b/src/Game/AI/AI/aiGiantEarthReleaseAttack.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGiantEarthReleaseAttack.h" + +namespace uking::ai { + +GiantEarthReleaseAttack::GiantEarthReleaseAttack(const InitArg& arg) : EarthReleaseAttack(arg) {} + +GiantEarthReleaseAttack::~GiantEarthReleaseAttack() = default; + +bool GiantEarthReleaseAttack::init_(sead::Heap* heap) { + return EarthReleaseAttack::init_(heap); +} + +void GiantEarthReleaseAttack::enter_(ksys::act::ai::InlineParamPack* params) { + EarthReleaseAttack::enter_(params); +} + +void GiantEarthReleaseAttack::leave_() { + EarthReleaseAttack::leave_(); +} + +void GiantEarthReleaseAttack::loadParams_() { + EarthReleaseAttack::loadParams_(); + getStaticParam(&mStartHeight_s, "StartHeight"); + getStaticParam(&mStartDistFromTarget_s, "StartDistFromTarget"); + getAITreeVariable(&mKeepDistFromGround_a, "KeepDistFromGround"); + getAITreeVariable(&mIsArrivedAtDestination_a, "IsArrivedAtDestination"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantEarthReleaseAttack.h b/src/Game/AI/AI/aiGiantEarthReleaseAttack.h new file mode 100644 index 00000000..cd1e7bfe --- /dev/null +++ b/src/Game/AI/AI/aiGiantEarthReleaseAttack.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiEarthReleaseAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantEarthReleaseAttack : public EarthReleaseAttack { + SEAD_RTTI_OVERRIDE(GiantEarthReleaseAttack, EarthReleaseAttack) +public: + explicit GiantEarthReleaseAttack(const InitArg& arg); + ~GiantEarthReleaseAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mStartHeight_s{}; + // static_param at offset 0x98 + const float* mStartDistFromTarget_s{}; + // aitree_variable at offset 0xa0 + float* mKeepDistFromGround_a{}; + // aitree_variable at offset 0xa8 + bool* mIsArrivedAtDestination_a{}; + // aitree_variable at offset 0xb0 + sead::Vector3f* mDestinationPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantEscapeFromDamageWater.cpp b/src/Game/AI/AI/aiGiantEscapeFromDamageWater.cpp new file mode 100644 index 00000000..5138003c --- /dev/null +++ b/src/Game/AI/AI/aiGiantEscapeFromDamageWater.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiGiantEscapeFromDamageWater.h" + +namespace uking::ai { + +GiantEscapeFromDamageWater::GiantEscapeFromDamageWater(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GiantEscapeFromDamageWater::~GiantEscapeFromDamageWater() = default; + +bool GiantEscapeFromDamageWater::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantEscapeFromDamageWater::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantEscapeFromDamageWater::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantEscapeFromDamageWater::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantEscapeFromDamageWater.h b/src/Game/AI/AI/aiGiantEscapeFromDamageWater.h new file mode 100644 index 00000000..92e255f8 --- /dev/null +++ b/src/Game/AI/AI/aiGiantEscapeFromDamageWater.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantEscapeFromDamageWater : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantEscapeFromDamageWater, ksys::act::ai::Ai) +public: + explicit GiantEscapeFromDamageWater(const InitArg& arg); + ~GiantEscapeFromDamageWater() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantNavMoveTarget.cpp b/src/Game/AI/AI/aiGiantNavMoveTarget.cpp new file mode 100644 index 00000000..425e8b43 --- /dev/null +++ b/src/Game/AI/AI/aiGiantNavMoveTarget.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiGiantNavMoveTarget.h" + +namespace uking::ai { + +GiantNavMoveTarget::GiantNavMoveTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GiantNavMoveTarget::~GiantNavMoveTarget() = default; + +bool GiantNavMoveTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantNavMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantNavMoveTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantNavMoveTarget::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mReachTargetArea_s, "ReachTargetArea"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mTooFarDist_s, "TooFarDist"); + getStaticParam(&mTargetVMax_s, "TargetVMax"); + getStaticParam(&mTargetVMin_s, "TargetVMin"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantNavMoveTarget.h b/src/Game/AI/AI/aiGiantNavMoveTarget.h new file mode 100644 index 00000000..2ee1c231 --- /dev/null +++ b/src/Game/AI/AI/aiGiantNavMoveTarget.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantNavMoveTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantNavMoveTarget, ksys::act::ai::Ai) +public: + explicit GiantNavMoveTarget(const InitArg& arg); + ~GiantNavMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mReachTargetArea_s{}; + // static_param at offset 0x48 + const float* mRepathTime_s{}; + // static_param at offset 0x50 + const float* mTooFarDist_s{}; + // static_param at offset 0x58 + const float* mTargetVMax_s{}; + // static_param at offset 0x60 + const float* mTargetVMin_s{}; + // static_param at offset 0x68 + const float* mFrontAngle_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.cpp b/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.cpp new file mode 100644 index 00000000..4de054b9 --- /dev/null +++ b/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGiantNavMoveWithFirstAction.h" + +namespace uking::ai { + +GiantNavMoveWithFirstAction::GiantNavMoveWithFirstAction(const InitArg& arg) + : GiantNavMoveTarget(arg) {} + +GiantNavMoveWithFirstAction::~GiantNavMoveWithFirstAction() = default; + +bool GiantNavMoveWithFirstAction::init_(sead::Heap* heap) { + return GiantNavMoveTarget::init_(heap); +} + +void GiantNavMoveWithFirstAction::enter_(ksys::act::ai::InlineParamPack* params) { + GiantNavMoveTarget::enter_(params); +} + +void GiantNavMoveWithFirstAction::leave_() { + GiantNavMoveTarget::leave_(); +} + +void GiantNavMoveWithFirstAction::loadParams_() { + GiantNavMoveTarget::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.h b/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.h new file mode 100644 index 00000000..bc04166b --- /dev/null +++ b/src/Game/AI/AI/aiGiantNavMoveWithFirstAction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGiantNavMoveTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantNavMoveWithFirstAction : public GiantNavMoveTarget { + SEAD_RTTI_OVERRIDE(GiantNavMoveWithFirstAction, GiantNavMoveTarget) +public: + explicit GiantNavMoveWithFirstAction(const InitArg& arg); + ~GiantNavMoveWithFirstAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantRoamSelect.cpp b/src/Game/AI/AI/aiGiantRoamSelect.cpp new file mode 100644 index 00000000..b3a3c6af --- /dev/null +++ b/src/Game/AI/AI/aiGiantRoamSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGiantRoamSelect.h" + +namespace uking::ai { + +GiantRoamSelect::GiantRoamSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GiantRoamSelect::~GiantRoamSelect() = default; + +bool GiantRoamSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantRoamSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantRoamSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantRoamSelect::loadParams_() { + getMapUnitParam(&mGiantRoamType_m, "GiantRoamType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantRoamSelect.h b/src/Game/AI/AI/aiGiantRoamSelect.h new file mode 100644 index 00000000..eb24beec --- /dev/null +++ b/src/Game/AI/AI/aiGiantRoamSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantRoamSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantRoamSelect, ksys::act::ai::Ai) +public: + explicit GiantRoamSelect(const InitArg& arg); + ~GiantRoamSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mGiantRoamType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantSleepNormal.cpp b/src/Game/AI/AI/aiGiantSleepNormal.cpp new file mode 100644 index 00000000..2f8bd358 --- /dev/null +++ b/src/Game/AI/AI/aiGiantSleepNormal.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGiantSleepNormal.h" + +namespace uking::ai { + +GiantSleepNormal::GiantSleepNormal(const InitArg& arg) : SpecialEnemySleep(arg) {} + +GiantSleepNormal::~GiantSleepNormal() = default; + +bool GiantSleepNormal::init_(sead::Heap* heap) { + return SpecialEnemySleep::init_(heap); +} + +void GiantSleepNormal::enter_(ksys::act::ai::InlineParamPack* params) { + SpecialEnemySleep::enter_(params); +} + +void GiantSleepNormal::leave_() { + SpecialEnemySleep::leave_(); +} + +void GiantSleepNormal::loadParams_() { + SpecialEnemySleep::loadParams_(); + getStaticParam(&mForceAwakeDist_s, "ForceAwakeDist"); + getStaticParam(&mAwakeRbName_s, "AwakeRbName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantSleepNormal.h b/src/Game/AI/AI/aiGiantSleepNormal.h new file mode 100644 index 00000000..d0586892 --- /dev/null +++ b/src/Game/AI/AI/aiGiantSleepNormal.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSpecialEnemySleep.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantSleepNormal : public SpecialEnemySleep { + SEAD_RTTI_OVERRIDE(GiantSleepNormal, SpecialEnemySleep) +public: + explicit GiantSleepNormal(const InitArg& arg); + ~GiantSleepNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mForceAwakeDist_s{}; + // static_param at offset 0x68 + sead::SafeString mAwakeRbName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantSleepReaction.cpp b/src/Game/AI/AI/aiGiantSleepReaction.cpp new file mode 100644 index 00000000..61a5cb00 --- /dev/null +++ b/src/Game/AI/AI/aiGiantSleepReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGiantSleepReaction.h" + +namespace uking::ai { + +GiantSleepReaction::GiantSleepReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GiantSleepReaction::~GiantSleepReaction() = default; + +bool GiantSleepReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantSleepReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantSleepReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantSleepReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantSleepReaction.h b/src/Game/AI/AI/aiGiantSleepReaction.h new file mode 100644 index 00000000..0a94f054 --- /dev/null +++ b/src/Game/AI/AI/aiGiantSleepReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantSleepReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantSleepReaction, ksys::act::ai::Ai) +public: + explicit GiantSleepReaction(const InitArg& arg); + ~GiantSleepReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantStoneShootAngrySelect.cpp b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.cpp new file mode 100644 index 00000000..d742c857 --- /dev/null +++ b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiGiantStoneShootAngrySelect.h" + +namespace uking::ai { + +GiantStoneShootAngrySelect::GiantStoneShootAngrySelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GiantStoneShootAngrySelect::~GiantStoneShootAngrySelect() = default; + +bool GiantStoneShootAngrySelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GiantStoneShootAngrySelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GiantStoneShootAngrySelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GiantStoneShootAngrySelect::loadParams_() { + getStaticParam(&mThrowableAngryRate_s, "ThrowableAngryRate"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mIgniteHandle_d, "IgniteHandle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h new file mode 100644 index 00000000..17023ffa --- /dev/null +++ b/src/Game/AI/AI/aiGiantStoneShootAngrySelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GiantStoneShootAngrySelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GiantStoneShootAngrySelect, ksys::act::ai::Ai) +public: + explicit GiantStoneShootAngrySelect(const InitArg& arg); + ~GiantStoneShootAngrySelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mThrowableAngryRate_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcHandle** mIgniteHandle_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemChemicalResetSelect.cpp b/src/Game/AI/AI/aiGolemChemicalResetSelect.cpp new file mode 100644 index 00000000..919d0ff9 --- /dev/null +++ b/src/Game/AI/AI/aiGolemChemicalResetSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGolemChemicalResetSelect.h" + +namespace uking::ai { + +GolemChemicalResetSelect::GolemChemicalResetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemChemicalResetSelect::~GolemChemicalResetSelect() = default; + +bool GolemChemicalResetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemChemicalResetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemChemicalResetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemChemicalResetSelect::loadParams_() { + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemChemicalResetSelect.h b/src/Game/AI/AI/aiGolemChemicalResetSelect.h new file mode 100644 index 00000000..b8adbee9 --- /dev/null +++ b/src/Game/AI/AI/aiGolemChemicalResetSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemChemicalResetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemChemicalResetSelect, ksys::act::ai::Ai) +public: + explicit GolemChemicalResetSelect(const InitArg& arg); + ~GolemChemicalResetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemChemicalVanishedSelect.cpp b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.cpp new file mode 100644 index 00000000..1dc240d0 --- /dev/null +++ b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemChemicalVanishedSelect.h" + +namespace uking::ai { + +GolemChemicalVanishedSelect::GolemChemicalVanishedSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GolemChemicalVanishedSelect::~GolemChemicalVanishedSelect() = default; + +bool GolemChemicalVanishedSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemChemicalVanishedSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemChemicalVanishedSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemChemicalVanishedSelect::loadParams_() { + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h new file mode 100644 index 00000000..3c9d3a94 --- /dev/null +++ b/src/Game/AI/AI/aiGolemChemicalVanishedSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemChemicalVanishedSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemChemicalVanishedSelect, ksys::act::ai::Ai) +public: + explicit GolemChemicalVanishedSelect(const InitArg& arg); + ~GolemChemicalVanishedSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemClimbedSelect.cpp b/src/Game/AI/AI/aiGolemClimbedSelect.cpp new file mode 100644 index 00000000..b77bcaa0 --- /dev/null +++ b/src/Game/AI/AI/aiGolemClimbedSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemClimbedSelect.h" + +namespace uking::ai { + +GolemClimbedSelect::GolemClimbedSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemClimbedSelect::~GolemClimbedSelect() = default; + +bool GolemClimbedSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemClimbedSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemClimbedSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemClimbedSelect::loadParams_() { + getStaticParam(&mClimbTime_s, "ClimbTime"); + getAITreeVariable(&mGolemClimbedTime_a, "GolemClimbedTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemClimbedSelect.h b/src/Game/AI/AI/aiGolemClimbedSelect.h new file mode 100644 index 00000000..9204d315 --- /dev/null +++ b/src/Game/AI/AI/aiGolemClimbedSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemClimbedSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemClimbedSelect, ksys::act::ai::Ai) +public: + explicit GolemClimbedSelect(const InitArg& arg); + ~GolemClimbedSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mClimbTime_s{}; + // aitree_variable at offset 0x40 + float* mGolemClimbedTime_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemClimbedTimeSelect.cpp b/src/Game/AI/AI/aiGolemClimbedTimeSelect.cpp new file mode 100644 index 00000000..52dd2abb --- /dev/null +++ b/src/Game/AI/AI/aiGolemClimbedTimeSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemClimbedTimeSelect.h" + +namespace uking::ai { + +GolemClimbedTimeSelect::GolemClimbedTimeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemClimbedTimeSelect::~GolemClimbedTimeSelect() = default; + +bool GolemClimbedTimeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemClimbedTimeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemClimbedTimeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemClimbedTimeSelect::loadParams_() { + getStaticParam(&mLimitTime_s, "LimitTime"); + getAITreeVariable(&mGolemClimbedTime_a, "GolemClimbedTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemClimbedTimeSelect.h b/src/Game/AI/AI/aiGolemClimbedTimeSelect.h new file mode 100644 index 00000000..9e093a97 --- /dev/null +++ b/src/Game/AI/AI/aiGolemClimbedTimeSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemClimbedTimeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemClimbedTimeSelect, ksys::act::ai::Ai) +public: + explicit GolemClimbedTimeSelect(const InitArg& arg); + ~GolemClimbedTimeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLimitTime_s{}; + // aitree_variable at offset 0x40 + float* mGolemClimbedTime_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemFindPlayer.cpp b/src/Game/AI/AI/aiGolemFindPlayer.cpp new file mode 100644 index 00000000..ac3fc588 --- /dev/null +++ b/src/Game/AI/AI/aiGolemFindPlayer.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemFindPlayer.h" + +namespace uking::ai { + +GolemFindPlayer::GolemFindPlayer(const InitArg& arg) : LargeEnemyFindPlayer(arg) {} + +GolemFindPlayer::~GolemFindPlayer() = default; + +bool GolemFindPlayer::init_(sead::Heap* heap) { + return LargeEnemyFindPlayer::init_(heap); +} + +void GolemFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + LargeEnemyFindPlayer::enter_(params); +} + +void GolemFindPlayer::leave_() { + LargeEnemyFindPlayer::leave_(); +} + +void GolemFindPlayer::loadParams_() { + LargeEnemyFindPlayer::loadParams_(); + getStaticParam(&mSearchExplosiveDist_s, "SearchExplosiveDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemFindPlayer.h b/src/Game/AI/AI/aiGolemFindPlayer.h new file mode 100644 index 00000000..bbcf566e --- /dev/null +++ b/src/Game/AI/AI/aiGolemFindPlayer.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiLargeEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemFindPlayer : public LargeEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(GolemFindPlayer, LargeEnemyFindPlayer) +public: + explicit GolemFindPlayer(const InitArg& arg); + ~GolemFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const float* mSearchExplosiveDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemFireREnemyBattle.cpp b/src/Game/AI/AI/aiGolemFireREnemyBattle.cpp new file mode 100644 index 00000000..7c3c06d6 --- /dev/null +++ b/src/Game/AI/AI/aiGolemFireREnemyBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemFireREnemyBattle.h" + +namespace uking::ai { + +GolemFireREnemyBattle::GolemFireREnemyBattle(const InitArg& arg) : EnemyBattle(arg) {} + +GolemFireREnemyBattle::~GolemFireREnemyBattle() = default; + +bool GolemFireREnemyBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void GolemFireREnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void GolemFireREnemyBattle::leave_() { + EnemyBattle::leave_(); +} + +void GolemFireREnemyBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mPlayerRecoverFromFallFrames_s, "PlayerRecoverFromFallFrames"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemFireREnemyBattle.h b/src/Game/AI/AI/aiGolemFireREnemyBattle.h new file mode 100644 index 00000000..d96e2754 --- /dev/null +++ b/src/Game/AI/AI/aiGolemFireREnemyBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemFireREnemyBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(GolemFireREnemyBattle, EnemyBattle) +public: + explicit GolemFireREnemyBattle(const InitArg& arg); + ~GolemFireREnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mPlayerRecoverFromFallFrames_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemNormal.cpp b/src/Game/AI/AI/aiGolemNormal.cpp new file mode 100644 index 00000000..de036468 --- /dev/null +++ b/src/Game/AI/AI/aiGolemNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGolemNormal.h" + +namespace uking::ai { + +GolemNormal::GolemNormal(const InitArg& arg) : EnemyNormal(arg) {} + +GolemNormal::~GolemNormal() = default; + +bool GolemNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void GolemNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void GolemNormal::leave_() { + EnemyNormal::leave_(); +} + +void GolemNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemNormal.h b/src/Game/AI/AI/aiGolemNormal.h new file mode 100644 index 00000000..c1a5bd65 --- /dev/null +++ b/src/Game/AI/AI/aiGolemNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(GolemNormal, EnemyNormal) +public: + explicit GolemNormal(const InitArg& arg); + ~GolemNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemNoticeWorry.cpp b/src/Game/AI/AI/aiGolemNoticeWorry.cpp new file mode 100644 index 00000000..2b548ffd --- /dev/null +++ b/src/Game/AI/AI/aiGolemNoticeWorry.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGolemNoticeWorry.h" + +namespace uking::ai { + +GolemNoticeWorry::GolemNoticeWorry(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemNoticeWorry::~GolemNoticeWorry() = default; + +bool GolemNoticeWorry::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemNoticeWorry::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemNoticeWorry::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemNoticeWorry::loadParams_() { + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemNoticeWorry.h b/src/Game/AI/AI/aiGolemNoticeWorry.h new file mode 100644 index 00000000..3037eacd --- /dev/null +++ b/src/Game/AI/AI/aiGolemNoticeWorry.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemNoticeWorry : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemNoticeWorry, ksys::act::ai::Ai) +public: + explicit GolemNoticeWorry(const InitArg& arg); + ~GolemNoticeWorry() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnStartAngle_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemPartRoot.cpp b/src/Game/AI/AI/aiGolemPartRoot.cpp new file mode 100644 index 00000000..8107c959 --- /dev/null +++ b/src/Game/AI/AI/aiGolemPartRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGolemPartRoot.h" + +namespace uking::ai { + +GolemPartRoot::GolemPartRoot(const InitArg& arg) : ReuseBulletPartsRoot(arg) {} + +GolemPartRoot::~GolemPartRoot() = default; + +bool GolemPartRoot::init_(sead::Heap* heap) { + return ReuseBulletPartsRoot::init_(heap); +} + +void GolemPartRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ReuseBulletPartsRoot::enter_(params); +} + +void GolemPartRoot::leave_() { + ReuseBulletPartsRoot::leave_(); +} + +void GolemPartRoot::loadParams_() { + ReuseBulletPartsRoot::loadParams_(); + getStaticParam(&mChemFieldScale_s, "ChemFieldScale"); + getStaticParam(&mNormalAS_s, "NormalAS"); + getStaticParam(&mActiveAS_s, "ActiveAS"); + getAITreeVariable(&mGolemPartInitialIceMagic_a, "GolemPartInitialIceMagic"); + getAITreeVariable(&mGolemPartInitialBurn_a, "GolemPartInitialBurn"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemPartRoot.h b/src/Game/AI/AI/aiGolemPartRoot.h new file mode 100644 index 00000000..a2c47360 --- /dev/null +++ b/src/Game/AI/AI/aiGolemPartRoot.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiReuseBulletPartsRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemPartRoot : public ReuseBulletPartsRoot { + SEAD_RTTI_OVERRIDE(GolemPartRoot, ReuseBulletPartsRoot) +public: + explicit GolemPartRoot(const InitArg& arg); + ~GolemPartRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const float* mChemFieldScale_s{}; + // static_param at offset 0x98 + sead::SafeString mNormalAS_s{}; + // static_param at offset 0xa8 + sead::SafeString mActiveAS_s{}; + // aitree_variable at offset 0xb8 + bool* mGolemPartInitialIceMagic_a{}; + // aitree_variable at offset 0xc0 + bool* mGolemPartInitialBurn_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemPartsSelect.cpp b/src/Game/AI/AI/aiGolemPartsSelect.cpp new file mode 100644 index 00000000..c018f5ff --- /dev/null +++ b/src/Game/AI/AI/aiGolemPartsSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemPartsSelect.h" + +namespace uking::ai { + +GolemPartsSelect::GolemPartsSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemPartsSelect::~GolemPartsSelect() = default; + +bool GolemPartsSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemPartsSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemPartsSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemPartsSelect::loadParams_() { + getStaticParam(&mArmRModelMatrialName_s, "ArmRModelMatrialName"); + getStaticParam(&mArmLModelMatrialName_s, "ArmLModelMatrialName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemPartsSelect.h b/src/Game/AI/AI/aiGolemPartsSelect.h new file mode 100644 index 00000000..4bb011a8 --- /dev/null +++ b/src/Game/AI/AI/aiGolemPartsSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemPartsSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemPartsSelect, ksys::act::ai::Ai) +public: + explicit GolemPartsSelect(const InitArg& arg); + ~GolemPartsSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mArmRModelMatrialName_s{}; + // static_param at offset 0x48 + sead::SafeString mArmLModelMatrialName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRWeakPointRoot.cpp b/src/Game/AI/AI/aiGolemRWeakPointRoot.cpp new file mode 100644 index 00000000..09980de3 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRWeakPointRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGolemRWeakPointRoot.h" + +namespace uking::ai { + +GolemRWeakPointRoot::GolemRWeakPointRoot(const InitArg& arg) : GolemWeakPointRoot(arg) {} + +GolemRWeakPointRoot::~GolemRWeakPointRoot() = default; + +bool GolemRWeakPointRoot::init_(sead::Heap* heap) { + return GolemWeakPointRoot::init_(heap); +} + +void GolemRWeakPointRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GolemWeakPointRoot::enter_(params); +} + +void GolemRWeakPointRoot::leave_() { + GolemWeakPointRoot::leave_(); +} + +void GolemRWeakPointRoot::loadParams_() { + GolemWeakPointRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRWeakPointRoot.h b/src/Game/AI/AI/aiGolemRWeakPointRoot.h new file mode 100644 index 00000000..b0c515a3 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRWeakPointRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGolemWeakPointRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemRWeakPointRoot : public GolemWeakPointRoot { + SEAD_RTTI_OVERRIDE(GolemRWeakPointRoot, GolemWeakPointRoot) +public: + explicit GolemRWeakPointRoot(const InitArg& arg); + ~GolemRWeakPointRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemReaction.cpp b/src/Game/AI/AI/aiGolemReaction.cpp new file mode 100644 index 00000000..d238a82c --- /dev/null +++ b/src/Game/AI/AI/aiGolemReaction.cpp @@ -0,0 +1,41 @@ +#include "Game/AI/AI/aiGolemReaction.h" + +namespace uking::ai { + +GolemReaction::GolemReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemReaction::~GolemReaction() = default; + +bool GolemReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemReaction::loadParams_() { + getStaticParam(&mClimbLimitTime_s, "ClimbLimitTime"); + getStaticParam(&mClampRestClimbTime_s, "ClampRestClimbTime"); + getStaticParam(&mIgnoreBombTime_s, "IgnoreBombTime"); + getStaticParam(&mRightArmTgtBodyName_s, "RightArmTgtBodyName"); + getStaticParam(&mLeftArmTgtBodyName_s, "LeftArmTgtBodyName"); + getStaticParam(&mBreakArmLXLinkKey_s, "BreakArmLXLinkKey"); + getStaticParam(&mBodyArmLName1_s, "BodyArmLName1"); + getStaticParam(&mBodyArmLName2_s, "BodyArmLName2"); + getStaticParam(&mChmArmLName_s, "ChmArmLName"); + getStaticParam(&mArmLMaterialName_s, "ArmLMaterialName"); + getStaticParam(&mBreakArmRXLinkKey_s, "BreakArmRXLinkKey"); + getStaticParam(&mBodyArmRName1_s, "BodyArmRName1"); + getStaticParam(&mBodyArmRName2_s, "BodyArmRName2"); + getStaticParam(&mChmArmRName_s, "ChmArmRName"); + getStaticParam(&mArmRMaterialName_s, "ArmRMaterialName"); + getAITreeVariable(&mGolemClimbedTime_a, "GolemClimbedTime"); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemReaction.h b/src/Game/AI/AI/aiGolemReaction.h new file mode 100644 index 00000000..22c75783 --- /dev/null +++ b/src/Game/AI/AI/aiGolemReaction.h @@ -0,0 +1,55 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemReaction, ksys::act::ai::Ai) +public: + explicit GolemReaction(const InitArg& arg); + ~GolemReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mClimbLimitTime_s{}; + // static_param at offset 0x40 + const int* mClampRestClimbTime_s{}; + // static_param at offset 0x48 + const int* mIgnoreBombTime_s{}; + // static_param at offset 0x50 + sead::SafeString mRightArmTgtBodyName_s{}; + // static_param at offset 0x60 + sead::SafeString mLeftArmTgtBodyName_s{}; + // static_param at offset 0x70 + sead::SafeString mBreakArmLXLinkKey_s{}; + // static_param at offset 0x80 + sead::SafeString mBodyArmLName1_s{}; + // static_param at offset 0x90 + sead::SafeString mBodyArmLName2_s{}; + // static_param at offset 0xa0 + sead::SafeString mChmArmLName_s{}; + // static_param at offset 0xb0 + sead::SafeString mArmLMaterialName_s{}; + // static_param at offset 0xc0 + sead::SafeString mBreakArmRXLinkKey_s{}; + // static_param at offset 0xd0 + sead::SafeString mBodyArmRName1_s{}; + // static_param at offset 0xe0 + sead::SafeString mBodyArmRName2_s{}; + // static_param at offset 0xf0 + sead::SafeString mChmArmRName_s{}; + // static_param at offset 0x100 + sead::SafeString mArmRMaterialName_s{}; + // aitree_variable at offset 0x110 + float* mGolemClimbedTime_a{}; + // aitree_variable at offset 0x118 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRoot.cpp b/src/Game/AI/AI/aiGolemRoot.cpp new file mode 100644 index 00000000..f971e804 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiGolemRoot.h" + +namespace uking::ai { + +GolemRoot::GolemRoot(const InitArg& arg) : GolemRootBase(arg) {} + +GolemRoot::~GolemRoot() = default; + +bool GolemRoot::init_(sead::Heap* heap) { + return GolemRootBase::init_(heap); +} + +void GolemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GolemRootBase::enter_(params); +} + +void GolemRoot::leave_() { + GolemRootBase::leave_(); +} + +void GolemRoot::loadParams_() { + GolemRootBase::loadParams_(); + getStaticParam(&mClimbFinishTime_s, "ClimbFinishTime"); + getStaticParam(&mStandContactHeight_s, "StandContactHeight"); + getStaticParam(&mIsBreakContactTree_s, "IsBreakContactTree"); + getMapUnitParam(&mGolemWeakPointLocation_m, "GolemWeakPointLocation"); + getMapUnitParam(&mGolemSleepType_m, "GolemSleepType"); + getMapUnitParam(&mGolemWeakPointActor_m, "GolemWeakPointActor"); + getAITreeVariable(&mGolemClimbedTime_a, "GolemClimbedTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRoot.h b/src/Game/AI/AI/aiGolemRoot.h new file mode 100644 index 00000000..ccc74ed3 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRoot.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiGolemRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemRoot : public GolemRootBase { + SEAD_RTTI_OVERRIDE(GolemRoot, GolemRootBase) +public: + explicit GolemRoot(const InitArg& arg); + ~GolemRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x310 + const int* mClimbFinishTime_s{}; + // static_param at offset 0x318 + const float* mStandContactHeight_s{}; + // static_param at offset 0x320 + const bool* mIsBreakContactTree_s{}; + // map_unit_param at offset 0x328 + sead::SafeString mGolemWeakPointLocation_m{}; + // map_unit_param at offset 0x338 + sead::SafeString mGolemSleepType_m{}; + // map_unit_param at offset 0x348 + sead::SafeString mGolemWeakPointActor_m{}; + // aitree_variable at offset 0x358 + float* mGolemClimbedTime_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRootBase.cpp b/src/Game/AI/AI/aiGolemRootBase.cpp new file mode 100644 index 00000000..8f858f01 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRootBase.cpp @@ -0,0 +1,45 @@ +#include "Game/AI/AI/aiGolemRootBase.h" + +namespace uking::ai { + +GolemRootBase::GolemRootBase(const InitArg& arg) : EnemyRoot(arg) {} + +GolemRootBase::~GolemRootBase() = default; + +bool GolemRootBase::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void GolemRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void GolemRootBase::leave_() { + EnemyRoot::leave_(); +} + +void GolemRootBase::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mShaderASTargetBone_s, "ShaderASTargetBone"); + getStaticParam(&mBodyShaderSeqBank_s, "BodyShaderSeqBank"); + getStaticParam(&mArmRShaderSeqBank_s, "ArmRShaderSeqBank"); + getStaticParam(&mArmLShaderSeqBank_s, "ArmLShaderSeqBank"); + getStaticParam(&mUpperArmL_PartsKey_s, "UpperArmL_PartsKey"); + getStaticParam(&mLowerArmL_PartsKey_s, "LowerArmL_PartsKey"); + getStaticParam(&mUpperArmR_PartsKey_s, "UpperArmR_PartsKey"); + getStaticParam(&mLowerArmR_PartsKey_s, "LowerArmR_PartsKey"); + getStaticParam(&mChemicalFieldKey_s, "ChemicalFieldKey"); + getStaticParam(&mBodyDeactiveAS_s, "BodyDeactiveAS"); + getStaticParam(&mArmRDeactiveAS_s, "ArmRDeactiveAS"); + getStaticParam(&mArmLDeactiveAS_s, "ArmLDeactiveAS"); + getStaticParam(&mBodyActiveAS_s, "BodyActiveAS"); + getStaticParam(&mArmRActiveAS_s, "ArmRActiveAS"); + getStaticParam(&mArmLActiveAS_s, "ArmLActiveAS"); + getStaticParam(&mBodyMimicAS_s, "BodyMimicAS"); + getStaticParam(&mArmRMimicAS_s, "ArmRMimicAS"); + getStaticParam(&mArmLMimicAS_s, "ArmLMimicAS"); + getMapUnitParam(&mGolemTextureName_m, "GolemTextureName"); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemRootBase.h b/src/Game/AI/AI/aiGolemRootBase.h new file mode 100644 index 00000000..c1d1fac7 --- /dev/null +++ b/src/Game/AI/AI/aiGolemRootBase.h @@ -0,0 +1,62 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemRootBase : public EnemyRoot { + SEAD_RTTI_OVERRIDE(GolemRootBase, EnemyRoot) +public: + explicit GolemRootBase(const InitArg& arg); + ~GolemRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mShaderASTargetBone_s{}; + // static_param at offset 0x1e0 + const int* mBodyShaderSeqBank_s{}; + // static_param at offset 0x1e8 + const int* mArmRShaderSeqBank_s{}; + // static_param at offset 0x1f0 + const int* mArmLShaderSeqBank_s{}; + // static_param at offset 0x1f8 + sead::SafeString mUpperArmL_PartsKey_s{}; + // static_param at offset 0x208 + sead::SafeString mLowerArmL_PartsKey_s{}; + // static_param at offset 0x218 + sead::SafeString mUpperArmR_PartsKey_s{}; + // static_param at offset 0x228 + sead::SafeString mLowerArmR_PartsKey_s{}; + // static_param at offset 0x238 + sead::SafeString mChemicalFieldKey_s{}; + // static_param at offset 0x248 + sead::SafeString mBodyDeactiveAS_s{}; + // static_param at offset 0x258 + sead::SafeString mArmRDeactiveAS_s{}; + // static_param at offset 0x268 + sead::SafeString mArmLDeactiveAS_s{}; + // static_param at offset 0x278 + sead::SafeString mBodyActiveAS_s{}; + // static_param at offset 0x288 + sead::SafeString mArmRActiveAS_s{}; + // static_param at offset 0x298 + sead::SafeString mArmLActiveAS_s{}; + // static_param at offset 0x2a8 + sead::SafeString mBodyMimicAS_s{}; + // static_param at offset 0x2b8 + sead::SafeString mArmRMimicAS_s{}; + // static_param at offset 0x2c8 + sead::SafeString mArmLMimicAS_s{}; + // map_unit_param at offset 0x2d8 + sead::SafeString mGolemTextureName_m{}; + // aitree_variable at offset 0x2e8 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemSleepNormal.cpp b/src/Game/AI/AI/aiGolemSleepNormal.cpp new file mode 100644 index 00000000..ca6208dc --- /dev/null +++ b/src/Game/AI/AI/aiGolemSleepNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGolemSleepNormal.h" + +namespace uking::ai { + +GolemSleepNormal::GolemSleepNormal(const InitArg& arg) : SpecialEnemySleep(arg) {} + +GolemSleepNormal::~GolemSleepNormal() = default; + +bool GolemSleepNormal::init_(sead::Heap* heap) { + return SpecialEnemySleep::init_(heap); +} + +void GolemSleepNormal::enter_(ksys::act::ai::InlineParamPack* params) { + SpecialEnemySleep::enter_(params); +} + +void GolemSleepNormal::leave_() { + SpecialEnemySleep::leave_(); +} + +void GolemSleepNormal::loadParams_() { + SpecialEnemySleep::loadParams_(); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemSleepNormal.h b/src/Game/AI/AI/aiGolemSleepNormal.h new file mode 100644 index 00000000..ac3f6200 --- /dev/null +++ b/src/Game/AI/AI/aiGolemSleepNormal.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSpecialEnemySleep.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemSleepNormal : public SpecialEnemySleep { + SEAD_RTTI_OVERRIDE(GolemSleepNormal, SpecialEnemySleep) +public: + explicit GolemSleepNormal(const InitArg& arg); + ~GolemSleepNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x60 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemSleepTypeSelect.cpp b/src/Game/AI/AI/aiGolemSleepTypeSelect.cpp new file mode 100644 index 00000000..2d232472 --- /dev/null +++ b/src/Game/AI/AI/aiGolemSleepTypeSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGolemSleepTypeSelect.h" + +namespace uking::ai { + +GolemSleepTypeSelect::GolemSleepTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolemSleepTypeSelect::~GolemSleepTypeSelect() = default; + +bool GolemSleepTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolemSleepTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolemSleepTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolemSleepTypeSelect::loadParams_() { + getMapUnitParam(&mGolemSleepType_m, "GolemSleepType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemSleepTypeSelect.h b/src/Game/AI/AI/aiGolemSleepTypeSelect.h new file mode 100644 index 00000000..e4f36975 --- /dev/null +++ b/src/Game/AI/AI/aiGolemSleepTypeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemSleepTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolemSleepTypeSelect, ksys::act::ai::Ai) +public: + explicit GolemSleepTypeSelect(const InitArg& arg); + ~GolemSleepTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + sead::SafeString mGolemSleepType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemWeakPointRoot.cpp b/src/Game/AI/AI/aiGolemWeakPointRoot.cpp new file mode 100644 index 00000000..1f50a3a1 --- /dev/null +++ b/src/Game/AI/AI/aiGolemWeakPointRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGolemWeakPointRoot.h" + +namespace uking::ai { + +GolemWeakPointRoot::GolemWeakPointRoot(const InitArg& arg) : WeakPointRoot(arg) {} + +GolemWeakPointRoot::~GolemWeakPointRoot() = default; + +bool GolemWeakPointRoot::init_(sead::Heap* heap) { + return WeakPointRoot::init_(heap); +} + +void GolemWeakPointRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeakPointRoot::enter_(params); +} + +void GolemWeakPointRoot::leave_() { + WeakPointRoot::leave_(); +} + +void GolemWeakPointRoot::loadParams_() { + WeakPointRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolemWeakPointRoot.h b/src/Game/AI/AI/aiGolemWeakPointRoot.h new file mode 100644 index 00000000..68af351d --- /dev/null +++ b/src/Game/AI/AI/aiGolemWeakPointRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWeakPointRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolemWeakPointRoot : public WeakPointRoot { + SEAD_RTTI_OVERRIDE(GolemWeakPointRoot, WeakPointRoot) +public: + explicit GolemWeakPointRoot(const InitArg& arg); + ~GolemWeakPointRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolfBallRoot.cpp b/src/Game/AI/AI/aiGolfBallRoot.cpp new file mode 100644 index 00000000..db326c44 --- /dev/null +++ b/src/Game/AI/AI/aiGolfBallRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiGolfBallRoot.h" + +namespace uking::ai { + +GolfBallRoot::GolfBallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GolfBallRoot::~GolfBallRoot() = default; + +bool GolfBallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GolfBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GolfBallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GolfBallRoot::loadParams_() { + getStaticParam(&mIntSmashJudgeFrame_s, "IntSmashJudgeFrame"); + getStaticParam(&mIntSmashContinueFrame_s, "IntSmashContinueFrame"); + getStaticParam(&mFloatJudgeSmash_s, "FloatJudgeSmash"); + getStaticParam(&mFloatJudgeStop_s, "FloatJudgeStop"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGolfBallRoot.h b/src/Game/AI/AI/aiGolfBallRoot.h new file mode 100644 index 00000000..04ff9cac --- /dev/null +++ b/src/Game/AI/AI/aiGolfBallRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GolfBallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GolfBallRoot, ksys::act::ai::Ai) +public: + explicit GolfBallRoot(const InitArg& arg); + ~GolfBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIntSmashJudgeFrame_s{}; + // static_param at offset 0x40 + const int* mIntSmashContinueFrame_s{}; + // static_param at offset 0x48 + const float* mFloatJudgeSmash_s{}; + // static_param at offset 0x50 + const float* mFloatJudgeStop_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronCannon.cpp b/src/Game/AI/AI/aiGoronCannon.cpp new file mode 100644 index 00000000..aef6c9ea --- /dev/null +++ b/src/Game/AI/AI/aiGoronCannon.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGoronCannon.h" + +namespace uking::ai { + +GoronCannon::GoronCannon(const InitArg& arg) : GoronCannonBase(arg) {} + +GoronCannon::~GoronCannon() = default; + +bool GoronCannon::init_(sead::Heap* heap) { + return GoronCannonBase::init_(heap); +} + +void GoronCannon::enter_(ksys::act::ai::InlineParamPack* params) { + GoronCannonBase::enter_(params); +} + +void GoronCannon::leave_() { + GoronCannonBase::leave_(); +} + +void GoronCannon::loadParams_() { + GoronCannonBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronCannon.h b/src/Game/AI/AI/aiGoronCannon.h new file mode 100644 index 00000000..4209d08c --- /dev/null +++ b/src/Game/AI/AI/aiGoronCannon.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGoronCannonBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GoronCannon : public GoronCannonBase { + SEAD_RTTI_OVERRIDE(GoronCannon, GoronCannonBase) +public: + explicit GoronCannon(const InitArg& arg); + ~GoronCannon() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronCannonBase.cpp b/src/Game/AI/AI/aiGoronCannonBase.cpp new file mode 100644 index 00000000..a31e2e4e --- /dev/null +++ b/src/Game/AI/AI/aiGoronCannonBase.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiGoronCannonBase.h" + +namespace uking::ai { + +GoronCannonBase::GoronCannonBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GoronCannonBase::~GoronCannonBase() = default; + +bool GoronCannonBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GoronCannonBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GoronCannonBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GoronCannonBase::loadParams_() { + getStaticParam(&mRotRadAccel_s, "RotRadAccel"); + getStaticParam(&mRotBrake_s, "RotBrake"); + getStaticParam(&mShotCannonBallScale_s, "ShotCannonBallScale"); + getStaticParam(&mIsDrawDebug_s, "IsDrawDebug"); + getStaticParam(&mIsUseShotNodeAngle_s, "IsUseShotNodeAngle"); + getStaticParam(&mActName_s, "ActName"); + getStaticParam(&mShotNodeName_s, "ShotNodeName"); + getStaticParam(&mOffset_s, "Offset"); + getMapUnitParam(&mTiltAngle_m, "TiltAngle"); + getMapUnitParam(&mTiltAngularSpeed_m, "TiltAngularSpeed"); + getMapUnitParam(&mAngle_m, "Angle"); + getMapUnitParam(&mSpeed_m, "Speed"); + getMapUnitParam(&mActorName_m, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronCannonBase.h b/src/Game/AI/AI/aiGoronCannonBase.h new file mode 100644 index 00000000..e2acc424 --- /dev/null +++ b/src/Game/AI/AI/aiGoronCannonBase.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GoronCannonBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GoronCannonBase, ksys::act::ai::Ai) +public: + explicit GoronCannonBase(const InitArg& arg); + ~GoronCannonBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRotRadAccel_s{}; + // static_param at offset 0x40 + const float* mRotBrake_s{}; + // static_param at offset 0x48 + const float* mShotCannonBallScale_s{}; + // static_param at offset 0x50 + const bool* mIsDrawDebug_s{}; + // static_param at offset 0x58 + const bool* mIsUseShotNodeAngle_s{}; + // static_param at offset 0x60 + sead::SafeString mActName_s{}; + // static_param at offset 0x70 + sead::SafeString mShotNodeName_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mOffset_s{}; + // map_unit_param at offset 0x88 + const float* mTiltAngle_m{}; + // map_unit_param at offset 0x90 + const float* mTiltAngularSpeed_m{}; + // map_unit_param at offset 0x98 + const float* mAngle_m{}; + // map_unit_param at offset 0xa0 + const float* mSpeed_m{}; + // map_unit_param at offset 0xa8 + sead::SafeString mActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronHeroDescendentRoot.cpp b/src/Game/AI/AI/aiGoronHeroDescendentRoot.cpp new file mode 100644 index 00000000..7c7e202f --- /dev/null +++ b/src/Game/AI/AI/aiGoronHeroDescendentRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiGoronHeroDescendentRoot.h" + +namespace uking::ai { + +GoronHeroDescendentRoot::GoronHeroDescendentRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GoronHeroDescendentRoot::~GoronHeroDescendentRoot() = default; + +bool GoronHeroDescendentRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GoronHeroDescendentRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GoronHeroDescendentRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GoronHeroDescendentRoot::loadParams_() { + getStaticParam(&mGuardEndDelayTime_s, "GuardEndDelayTime"); + getStaticParam(&mWhistleReactTimeGo_s, "WhistleReactTimeGo"); + getStaticParam(&mWhistleReactTimeStop_s, "WhistleReactTimeStop"); + getStaticParam(&mAppearWaitTime_s, "AppearWaitTime"); + getStaticParam(&mPlayerNearDist_s, "PlayerNearDist"); + getStaticParam(&mPlayerLeaveDist_s, "PlayerLeaveDist"); + getStaticParam(&mPlayerSeparateDist_s, "PlayerSeparateDist"); + getStaticParam(&mFollowModeFlagName_s, "FollowModeFlagName"); + getStaticParam(&mPlayerFollowOffset_s, "PlayerFollowOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronHeroDescendentRoot.h b/src/Game/AI/AI/aiGoronHeroDescendentRoot.h new file mode 100644 index 00000000..cc9a36f0 --- /dev/null +++ b/src/Game/AI/AI/aiGoronHeroDescendentRoot.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GoronHeroDescendentRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GoronHeroDescendentRoot, ksys::act::ai::Ai) +public: + explicit GoronHeroDescendentRoot(const InitArg& arg); + ~GoronHeroDescendentRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mGuardEndDelayTime_s{}; + // static_param at offset 0x40 + const int* mWhistleReactTimeGo_s{}; + // static_param at offset 0x48 + const int* mWhistleReactTimeStop_s{}; + // static_param at offset 0x50 + const int* mAppearWaitTime_s{}; + // static_param at offset 0x58 + const float* mPlayerNearDist_s{}; + // static_param at offset 0x60 + const float* mPlayerLeaveDist_s{}; + // static_param at offset 0x68 + const float* mPlayerSeparateDist_s{}; + // static_param at offset 0x70 + sead::SafeString mFollowModeFlagName_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mPlayerFollowOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.cpp b/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.cpp new file mode 100644 index 00000000..6fe3a09e --- /dev/null +++ b/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGoronHeroSoulGiftRoot.h" + +namespace uking::ai { + +GoronHeroSoulGiftRoot::GoronHeroSoulGiftRoot(const InitArg& arg) : HeroSoulGiftRoot(arg) {} + +GoronHeroSoulGiftRoot::~GoronHeroSoulGiftRoot() = default; + +bool GoronHeroSoulGiftRoot::init_(sead::Heap* heap) { + return HeroSoulGiftRoot::init_(heap); +} + +void GoronHeroSoulGiftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + HeroSoulGiftRoot::enter_(params); +} + +void GoronHeroSoulGiftRoot::leave_() { + HeroSoulGiftRoot::leave_(); +} + +void GoronHeroSoulGiftRoot::loadParams_() { + HeroSoulGiftRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.h b/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.h new file mode 100644 index 00000000..727b48ea --- /dev/null +++ b/src/Game/AI/AI/aiGoronHeroSoulGiftRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GoronHeroSoulGiftRoot : public HeroSoulGiftRoot { + SEAD_RTTI_OVERRIDE(GoronHeroSoulGiftRoot, HeroSoulGiftRoot) +public: + explicit GoronHeroSoulGiftRoot(const InitArg& arg); + ~GoronHeroSoulGiftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGroundAngleSelect.cpp b/src/Game/AI/AI/aiGroundAngleSelect.cpp new file mode 100644 index 00000000..f337f54e --- /dev/null +++ b/src/Game/AI/AI/aiGroundAngleSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGroundAngleSelect.h" + +namespace uking::ai { + +GroundAngleSelect::GroundAngleSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GroundAngleSelect::~GroundAngleSelect() = default; + +bool GroundAngleSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GroundAngleSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GroundAngleSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GroundAngleSelect::loadParams_() { + getStaticParam(&mSlopeAngle_s, "SlopeAngle"); + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); + getStaticParam(&mIsCheckActorMtx_s, "IsCheckActorMtx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGroundAngleSelect.h b/src/Game/AI/AI/aiGroundAngleSelect.h new file mode 100644 index 00000000..0f7099fc --- /dev/null +++ b/src/Game/AI/AI/aiGroundAngleSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GroundAngleSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GroundAngleSelect, ksys::act::ai::Ai) +public: + explicit GroundAngleSelect(const InitArg& arg); + ~GroundAngleSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSlopeAngle_s{}; + // static_param at offset 0x40 + const bool* mIsCheckEveryFrame_s{}; + // static_param at offset 0x48 + const bool* mIsCheckActorMtx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGroundHitSelect.cpp b/src/Game/AI/AI/aiGroundHitSelect.cpp new file mode 100644 index 00000000..087dbf26 --- /dev/null +++ b/src/Game/AI/AI/aiGroundHitSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGroundHitSelect.h" + +namespace uking::ai { + +GroundHitSelect::GroundHitSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GroundHitSelect::~GroundHitSelect() = default; + +bool GroundHitSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GroundHitSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GroundHitSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GroundHitSelect::loadParams_() { + getStaticParam(&mIsActionEndEnd_s, "IsActionEndEnd"); + getStaticParam(&mIsEnterCheck_s, "IsEnterCheck"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGroundHitSelect.h b/src/Game/AI/AI/aiGroundHitSelect.h new file mode 100644 index 00000000..a77b6f96 --- /dev/null +++ b/src/Game/AI/AI/aiGroundHitSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GroundHitSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GroundHitSelect, ksys::act::ai::Ai) +public: + explicit GroundHitSelect(const InitArg& arg); + ~GroundHitSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsActionEndEnd_s{}; + // static_param at offset 0x40 + const bool* mIsEnterCheck_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGrudgeEyeball.cpp b/src/Game/AI/AI/aiGrudgeEyeball.cpp new file mode 100644 index 00000000..690be357 --- /dev/null +++ b/src/Game/AI/AI/aiGrudgeEyeball.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGrudgeEyeball.h" + +namespace uking::ai { + +GrudgeEyeball::GrudgeEyeball(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GrudgeEyeball::~GrudgeEyeball() = default; + +bool GrudgeEyeball::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GrudgeEyeball::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GrudgeEyeball::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GrudgeEyeball::loadParams_() { + getMapUnitParam(&mEyeballFirstState_m, "EyeballFirstState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGrudgeEyeball.h b/src/Game/AI/AI/aiGrudgeEyeball.h new file mode 100644 index 00000000..0d2e5bba --- /dev/null +++ b/src/Game/AI/AI/aiGrudgeEyeball.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GrudgeEyeball : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GrudgeEyeball, ksys::act::ai::Ai) +public: + explicit GrudgeEyeball(const InitArg& arg); + ~GrudgeEyeball() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mEyeballFirstState_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardAndRevenge.cpp b/src/Game/AI/AI/aiGuardAndRevenge.cpp new file mode 100644 index 00000000..d23a2840 --- /dev/null +++ b/src/Game/AI/AI/aiGuardAndRevenge.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiGuardAndRevenge.h" + +namespace uking::ai { + +GuardAndRevenge::GuardAndRevenge(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool GuardAndRevenge::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardAndRevenge::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardAndRevenge::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardAndRevenge::loadParams_() { + getStaticParam(&mDrownDepth_s, "DrownDepth"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardAndRevenge.h b/src/Game/AI/AI/aiGuardAndRevenge.h new file mode 100644 index 00000000..683d561d --- /dev/null +++ b/src/Game/AI/AI/aiGuardAndRevenge.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardAndRevenge : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardAndRevenge, ksys::act::ai::Ai) +public: + explicit GuardAndRevenge(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDrownDepth_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardFlagSelect.cpp b/src/Game/AI/AI/aiGuardFlagSelect.cpp new file mode 100644 index 00000000..61b8f288 --- /dev/null +++ b/src/Game/AI/AI/aiGuardFlagSelect.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiGuardFlagSelect.h" + +namespace uking::ai { + +GuardFlagSelect::GuardFlagSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardFlagSelect::~GuardFlagSelect() = default; + +void GuardFlagSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardFlagSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardFlagSelect.h b/src/Game/AI/AI/aiGuardFlagSelect.h new file mode 100644 index 00000000..6d9882c1 --- /dev/null +++ b/src/Game/AI/AI/aiGuardFlagSelect.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardFlagSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardFlagSelect, ksys::act::ai::Ai) +public: + explicit GuardFlagSelect(const InitArg& arg); + ~GuardFlagSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardFrequencySelect.cpp b/src/Game/AI/AI/aiGuardFrequencySelect.cpp new file mode 100644 index 00000000..c65e282d --- /dev/null +++ b/src/Game/AI/AI/aiGuardFrequencySelect.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiGuardFrequencySelect.h" + +namespace uking::ai { + +GuardFrequencySelect::GuardFrequencySelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardFrequencySelect::~GuardFrequencySelect() = default; + +void GuardFrequencySelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardFrequencySelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardFrequencySelect.h b/src/Game/AI/AI/aiGuardFrequencySelect.h new file mode 100644 index 00000000..620ec25b --- /dev/null +++ b/src/Game/AI/AI/aiGuardFrequencySelect.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardFrequencySelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardFrequencySelect, ksys::act::ai::Ai) +public: + explicit GuardFrequencySelect(const InitArg& arg); + ~GuardFrequencySelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardNearTarget.cpp b/src/Game/AI/AI/aiGuardNearTarget.cpp new file mode 100644 index 00000000..c24d1736 --- /dev/null +++ b/src/Game/AI/AI/aiGuardNearTarget.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGuardNearTarget.h" + +namespace uking::ai { + +GuardNearTarget::GuardNearTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardNearTarget::~GuardNearTarget() = default; + +bool GuardNearTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardNearTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardNearTarget::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mGuardStartDist_s, "GuardStartDist"); + getStaticParam(&mGuardEndDist_s, "GuardEndDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardNearTarget.h b/src/Game/AI/AI/aiGuardNearTarget.h new file mode 100644 index 00000000..b42cb987 --- /dev/null +++ b/src/Game/AI/AI/aiGuardNearTarget.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardNearTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardNearTarget, ksys::act::ai::Ai) +public: + explicit GuardNearTarget(const InitArg& arg); + ~GuardNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mBaseDist_s{}; + // static_param at offset 0x48 + const float* mGuardStartDist_s{}; + // static_param at offset 0x50 + const float* mGuardEndDist_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianAI.cpp b/src/Game/AI/AI/aiGuardianAI.cpp new file mode 100644 index 00000000..7521a552 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGuardianAI.h" + +namespace uking::ai { + +GuardianAI::GuardianAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianAI::~GuardianAI() = default; + +bool GuardianAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianAI.h b/src/Game/AI/AI/aiGuardianAI.h new file mode 100644 index 00000000..d8c04b00 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianAI.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianAI, ksys::act::ai::Ai) +public: + explicit GuardianAI(const InitArg& arg); + ~GuardianAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBattleBeamAttack.cpp b/src/Game/AI/AI/aiGuardianBattleBeamAttack.cpp new file mode 100644 index 00000000..2fce9add --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBattleBeamAttack.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianBattleBeamAttack.h" + +namespace uking::ai { + +GuardianBattleBeamAttack::GuardianBattleBeamAttack(const InitArg& arg) : GuardianAI(arg) {} + +GuardianBattleBeamAttack::~GuardianBattleBeamAttack() = default; + +bool GuardianBattleBeamAttack::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianBattleBeamAttack::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianBattleBeamAttack::leave_() { + GuardianAI::leave_(); +} + +void GuardianBattleBeamAttack::loadParams_() { + GuardianAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBattleBeamAttack.h b/src/Game/AI/AI/aiGuardianBattleBeamAttack.h new file mode 100644 index 00000000..3b0769e0 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBattleBeamAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianBattleBeamAttack : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianBattleBeamAttack, GuardianAI) +public: + explicit GuardianBattleBeamAttack(const InitArg& arg); + ~GuardianBattleBeamAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeam.cpp b/src/Game/AI/AI/aiGuardianBeam.cpp new file mode 100644 index 00000000..57733514 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeam.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianBeam.h" + +namespace uking::ai { + +GuardianBeam::GuardianBeam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianBeam::~GuardianBeam() = default; + +bool GuardianBeam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianBeam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianBeam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianBeam::loadParams_() { + getStaticParam(&mMaxDistance_s, "MaxDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeam.h b/src/Game/AI/AI/aiGuardianBeam.h new file mode 100644 index 00000000..75517639 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeam.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianBeam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianBeam, ksys::act::ai::Ai) +public: + explicit GuardianBeam(const InitArg& arg); + ~GuardianBeam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mMaxDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeamAttack.cpp b/src/Game/AI/AI/aiGuardianBeamAttack.cpp new file mode 100644 index 00000000..7f608b32 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeamAttack.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGuardianBeamAttack.h" + +namespace uking::ai { + +GuardianBeamAttack::GuardianBeamAttack(const InitArg& arg) : GuardianBeamAttackBase(arg) {} + +GuardianBeamAttack::~GuardianBeamAttack() = default; + +bool GuardianBeamAttack::init_(sead::Heap* heap) { + return GuardianBeamAttackBase::init_(heap); +} + +void GuardianBeamAttack::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianBeamAttackBase::enter_(params); +} + +void GuardianBeamAttack::leave_() { + GuardianBeamAttackBase::leave_(); +} + +void GuardianBeamAttack::loadParams_() { + GuardianBeamAttackBase::loadParams_(); + getStaticParam(&mLightRadius_s, "LightRadius"); + getStaticParam(&mLightLength_s, "LightLength"); + getStaticParam(&mLightLengthOffset_s, "LightLengthOffset"); + getStaticParam(&mEarSpeed_s, "EarSpeed"); + getStaticParam(&mAdjustRadius_s, "AdjustRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeamAttack.h b/src/Game/AI/AI/aiGuardianBeamAttack.h new file mode 100644 index 00000000..e4f3c65a --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeamAttack.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianBeamAttackBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianBeamAttack : public GuardianBeamAttackBase { + SEAD_RTTI_OVERRIDE(GuardianBeamAttack, GuardianBeamAttackBase) +public: + explicit GuardianBeamAttack(const InitArg& arg); + ~GuardianBeamAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mLightRadius_s{}; + // static_param at offset 0x88 + const float* mLightLength_s{}; + // static_param at offset 0x90 + const float* mLightLengthOffset_s{}; + // static_param at offset 0x98 + const float* mEarSpeed_s{}; + // static_param at offset 0xa0 + const bool* mAdjustRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeamAttackBase.cpp b/src/Game/AI/AI/aiGuardianBeamAttackBase.cpp new file mode 100644 index 00000000..27bf7302 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeamAttackBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGuardianBeamAttackBase.h" + +namespace uking::ai { + +GuardianBeamAttackBase::GuardianBeamAttackBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianBeamAttackBase::~GuardianBeamAttackBase() = default; + +bool GuardianBeamAttackBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianBeamAttackBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianBeamAttackBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianBeamAttackBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBeamAttackBase.h b/src/Game/AI/AI/aiGuardianBeamAttackBase.h new file mode 100644 index 00000000..7ee6ce45 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBeamAttackBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianBeamAttackBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianBeamAttackBase, ksys::act::ai::Ai) +public: + explicit GuardianBeamAttackBase(const InitArg& arg); + ~GuardianBeamAttackBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBezierRailMove.cpp b/src/Game/AI/AI/aiGuardianBezierRailMove.cpp new file mode 100644 index 00000000..67ebd38c --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBezierRailMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianBezierRailMove.h" + +namespace uking::ai { + +GuardianBezierRailMove::GuardianBezierRailMove(const InitArg& arg) : RailMoveWithClose(arg) {} + +GuardianBezierRailMove::~GuardianBezierRailMove() = default; + +bool GuardianBezierRailMove::init_(sead::Heap* heap) { + return RailMoveWithClose::init_(heap); +} + +void GuardianBezierRailMove::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveWithClose::enter_(params); +} + +void GuardianBezierRailMove::leave_() { + RailMoveWithClose::leave_(); +} + +void GuardianBezierRailMove::loadParams_() { + RailMoveWithClose::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianBezierRailMove.h b/src/Game/AI/AI/aiGuardianBezierRailMove.h new file mode 100644 index 00000000..385f95f2 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianBezierRailMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveWithClose.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianBezierRailMove : public RailMoveWithClose { + SEAD_RTTI_OVERRIDE(GuardianBezierRailMove, RailMoveWithClose) +public: + explicit GuardianBezierRailMove(const InitArg& arg); + ~GuardianBezierRailMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianChase.cpp b/src/Game/AI/AI/aiGuardianChase.cpp new file mode 100644 index 00000000..3c1a1ea6 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianChase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGuardianChase.h" + +namespace uking::ai { + +GuardianChase::GuardianChase(const InitArg& arg) : GuardianAI(arg) {} + +GuardianChase::~GuardianChase() = default; + +bool GuardianChase::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianChase::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianChase::leave_() { + GuardianAI::leave_(); +} + +void GuardianChase::loadParams_() { + GuardianAI::loadParams_(); + getMapUnitParam(&mChaseRange_m, "ChaseRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianChase.h b/src/Game/AI/AI/aiGuardianChase.h new file mode 100644 index 00000000..a6779e8d --- /dev/null +++ b/src/Game/AI/AI/aiGuardianChase.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianChase : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianChase, GuardianAI) +public: + explicit GuardianChase(const InitArg& arg); + ~GuardianChase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mChaseRange_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianCloseBattle.cpp b/src/Game/AI/AI/aiGuardianCloseBattle.cpp new file mode 100644 index 00000000..7a88f759 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianCloseBattle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianCloseBattle.h" + +namespace uking::ai { + +GuardianCloseBattle::GuardianCloseBattle(const InitArg& arg) : GuardianAI(arg) {} + +GuardianCloseBattle::~GuardianCloseBattle() = default; + +bool GuardianCloseBattle::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianCloseBattle::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianCloseBattle::leave_() { + GuardianAI::leave_(); +} + +void GuardianCloseBattle::loadParams_() { + GuardianAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianCloseBattle.h b/src/Game/AI/AI/aiGuardianCloseBattle.h new file mode 100644 index 00000000..4cbeae00 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianCloseBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianCloseBattle : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianCloseBattle, GuardianAI) +public: + explicit GuardianCloseBattle(const InitArg& arg); + ~GuardianCloseBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianDown.cpp b/src/Game/AI/AI/aiGuardianDown.cpp new file mode 100644 index 00000000..35125e9b --- /dev/null +++ b/src/Game/AI/AI/aiGuardianDown.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianDown.h" + +namespace uking::ai { + +GuardianDown::GuardianDown(const InitArg& arg) : GuardianAI(arg) {} + +GuardianDown::~GuardianDown() = default; + +bool GuardianDown::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianDown::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianDown::leave_() { + GuardianAI::leave_(); +} + +void GuardianDown::loadParams_() { + GuardianAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianDown.h b/src/Game/AI/AI/aiGuardianDown.h new file mode 100644 index 00000000..23fe714a --- /dev/null +++ b/src/Game/AI/AI/aiGuardianDown.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianDown : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianDown, GuardianAI) +public: + explicit GuardianDown(const InitArg& arg); + ~GuardianDown() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMini2ndBattle.cpp b/src/Game/AI/AI/aiGuardianMini2ndBattle.cpp new file mode 100644 index 00000000..b59744ed --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMini2ndBattle.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGuardianMini2ndBattle.h" + +namespace uking::ai { + +GuardianMini2ndBattle::GuardianMini2ndBattle(const InitArg& arg) : GuardianMiniBattle(arg) {} + +GuardianMini2ndBattle::~GuardianMini2ndBattle() = default; + +void GuardianMini2ndBattle::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianMiniBattle::enter_(params); +} + +void GuardianMini2ndBattle::leave_() { + GuardianMiniBattle::leave_(); +} + +void GuardianMini2ndBattle::loadParams_() { + GuardianMiniBattle::loadParams_(); + getStaticParam(&mAttackHitNum_s, "AttackHitNum"); + getStaticParam(&mCounterStopTime_s, "CounterStopTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMini2ndBattle.h b/src/Game/AI/AI/aiGuardianMini2ndBattle.h new file mode 100644 index 00000000..c1632fdc --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMini2ndBattle.h @@ -0,0 +1,25 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianMiniBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMini2ndBattle : public GuardianMiniBattle { + SEAD_RTTI_OVERRIDE(GuardianMini2ndBattle, GuardianMiniBattle) +public: + explicit GuardianMini2ndBattle(const InitArg& arg); + ~GuardianMini2ndBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1b8 + const int* mAttackHitNum_s{}; + // static_param at offset 0x1c0 + const int* mCounterStopTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.cpp b/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.cpp new file mode 100644 index 00000000..1811c589 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiGuardianMini2ndBattleAttack.h" + +namespace uking::ai { + +GuardianMini2ndBattleAttack::GuardianMini2ndBattleAttack(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMini2ndBattleAttack::~GuardianMini2ndBattleAttack() = default; + +bool GuardianMini2ndBattleAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianMini2ndBattleAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMini2ndBattleAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMini2ndBattleAttack::loadParams_() { + getStaticParam(&mAscendingCurrentName_s, "AscendingCurrentName"); + getStaticParam(&mAscendingCurrentTime_s, "AscendingCurrentTime"); + getAITreeVariable(&mGuardianMiniChanceTimeState_a, "GuardianMiniChanceTimeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.h b/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.h new file mode 100644 index 00000000..a038fc50 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMini2ndBattleAttack.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMini2ndBattleAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMini2ndBattleAttack, ksys::act::ai::Ai) +public: + explicit GuardianMini2ndBattleAttack(const InitArg& arg); + ~GuardianMini2ndBattleAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mAscendingCurrentName_s{}; + // static_param at offset 0x48 + const int* mAscendingCurrentTime_s{}; + // aitree_variable at offset 0x50 + int* mGuardianMiniChanceTimeState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBattle.cpp b/src/Game/AI/AI/aiGuardianMiniBattle.cpp new file mode 100644 index 00000000..955a6fdc --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBattle.cpp @@ -0,0 +1,43 @@ +#include "Game/AI/AI/aiGuardianMiniBattle.h" + +namespace uking::ai { + +GuardianMiniBattle::GuardianMiniBattle(const InitArg& arg) : EnemyBattle(arg) {} + +GuardianMiniBattle::~GuardianMiniBattle() = default; + +bool GuardianMiniBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void GuardianMiniBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void GuardianMiniBattle::leave_() { + EnemyBattle::leave_(); +} + +void GuardianMiniBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mArm1NodeName_s, "Arm1NodeName"); + getStaticParam(&mArm2NodeName_s, "Arm2NodeName"); + getStaticParam(&mArm3NodeName_s, "Arm3NodeName"); + getStaticParam(&mASSlotRight_s, "ASSlotRight"); + getStaticParam(&mASSlotLeft_s, "ASSlotLeft"); + getStaticParam(&mASSlotBack_s, "ASSlotBack"); + getStaticParam(&mRollingInterval_s, "RollingInterval"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mIsIgnoreArmCondition_s, "IsIgnoreArmCondition"); + getStaticParam(&mTurnMoveTime_s, "TurnMoveTime"); + getStaticParam(&mTurnMovePer_s, "TurnMovePer"); + getStaticParam(&mTurnMoveStartDist_s, "TurnMoveStartDist"); + getStaticParam(&mCounterStartDamageCount_s, "CounterStartDamageCount"); + getStaticParam(&mCounterStartTime_s, "CounterStartTime"); + getStaticParam(&mCheckOnNoNavMesh_s, "CheckOnNoNavMesh"); + getAITreeVariable(&mDamagedCount_a, "DamagedCount"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBattle.h b/src/Game/AI/AI/aiGuardianMiniBattle.h new file mode 100644 index 00000000..2743cddd --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBattle.h @@ -0,0 +1,58 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(GuardianMiniBattle, EnemyBattle) +public: + explicit GuardianMiniBattle(const InitArg& arg); + ~GuardianMiniBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0xa0 + sead::SafeString mArm1NodeName_s{}; + // static_param at offset 0xb0 + sead::SafeString mArm2NodeName_s{}; + // static_param at offset 0xc0 + sead::SafeString mArm3NodeName_s{}; + // static_param at offset 0xd0 + const int* mASSlotRight_s{}; + // static_param at offset 0xd8 + const int* mASSlotLeft_s{}; + // static_param at offset 0xe0 + const int* mASSlotBack_s{}; + // static_param at offset 0xe8 + const int* mRollingInterval_s{}; + // static_param at offset 0xf0 + const float* mBaseDist_s{}; + // static_param at offset 0xf8 + const float* mFarDist_s{}; + // static_param at offset 0x100 + const bool* mIsIgnoreArmCondition_s{}; + // static_param at offset 0x108 + const int* mTurnMoveTime_s{}; + // static_param at offset 0x110 + const int* mTurnMovePer_s{}; + // static_param at offset 0x118 + const float* mTurnMoveStartDist_s{}; + // static_param at offset 0x120 + const int* mCounterStartDamageCount_s{}; + // static_param at offset 0x128 + const int* mCounterStartTime_s{}; + // static_param at offset 0x130 + const bool* mCheckOnNoNavMesh_s{}; + // aitree_variable at offset 0x138 + int* mDamagedCount_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.cpp b/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.cpp new file mode 100644 index 00000000..8700af9b --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiGuardianMiniBattleStateSelect.h" + +namespace uking::ai { + +GuardianMiniBattleStateSelect::GuardianMiniBattleStateSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniBattleStateSelect::~GuardianMiniBattleStateSelect() = default; + +void GuardianMiniBattleStateSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniBattleStateSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniBattleStateSelect::loadParams_() { + getStaticParam(&mSecondLifeRatio_s, "SecondLifeRatio"); + getStaticParam(&mFinalLifeRatio_s, "FinalLifeRatio"); + getStaticParam(&mIsEnterOnly_s, "IsEnterOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.h b/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.h new file mode 100644 index 00000000..fc0c06b0 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBattleStateSelect.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBattleStateSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniBattleStateSelect, ksys::act::ai::Ai) +public: + explicit GuardianMiniBattleStateSelect(const InitArg& arg); + ~GuardianMiniBattleStateSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSecondLifeRatio_s{}; + // static_param at offset 0x40 + const float* mFinalLifeRatio_s{}; + // static_param at offset 0x48 + const bool* mIsEnterOnly_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeam.cpp b/src/Game/AI/AI/aiGuardianMiniBeam.cpp new file mode 100644 index 00000000..9e50fd6d --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeam.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiGuardianMiniBeam.h" + +namespace uking::ai { + +GuardianMiniBeam::GuardianMiniBeam(const InitArg& arg) : BeamExplodeBase(arg) {} + +GuardianMiniBeam::~GuardianMiniBeam() = default; + +void GuardianMiniBeam::enter_(ksys::act::ai::InlineParamPack* params) { + BeamExplodeBase::enter_(params); +} + +void GuardianMiniBeam::leave_() { + BeamExplodeBase::leave_(); +} + +void GuardianMiniBeam::loadParams_() { + BeamExplodeBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeam.h b/src/Game/AI/AI/aiGuardianMiniBeam.h new file mode 100644 index 00000000..b6cadea5 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeam.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiBeamExplodeBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBeam : public BeamExplodeBase { + SEAD_RTTI_OVERRIDE(GuardianMiniBeam, BeamExplodeBase) +public: + explicit GuardianMiniBeam(const InitArg& arg); + ~GuardianMiniBeam() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttack.cpp b/src/Game/AI/AI/aiGuardianMiniBeamAttack.cpp new file mode 100644 index 00000000..a79024c2 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttack.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiGuardianMiniBeamAttack.h" + +namespace uking::ai { + +GuardianMiniBeamAttack::GuardianMiniBeamAttack(const InitArg& arg) : MiniBeamAttack(arg) {} + +GuardianMiniBeamAttack::~GuardianMiniBeamAttack() = default; + +void GuardianMiniBeamAttack::enter_(ksys::act::ai::InlineParamPack* params) { + MiniBeamAttack::enter_(params); +} + +void GuardianMiniBeamAttack::leave_() { + MiniBeamAttack::leave_(); +} + +void GuardianMiniBeamAttack::loadParams_() { + MiniBeamAttack::loadParams_(); + getStaticParam(&mHeadNodeName_s, "HeadNodeName"); + getStaticParam(&mAttackInterval_s, "AttackInterval"); + getStaticParam(&mEndShaderASFrame_s, "EndShaderASFrame"); + getStaticParam(&mLoopShaderASName_s, "LoopShaderASName"); + getStaticParam(&mEndShaderASName_s, "EndShaderASName"); + getStaticParam(&mPreLaunchEffectName_s, "PreLaunchEffectName"); + getStaticParam(&mIsChangeable_s, "IsChangeable"); + getStaticParam(&mIsFinalBattle_s, "IsFinalBattle"); + getStaticParam(&mInDirAngle_s, "InDirAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttack.h b/src/Game/AI/AI/aiGuardianMiniBeamAttack.h new file mode 100644 index 00000000..583373f5 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttack.h @@ -0,0 +1,39 @@ +#pragma once + +#include "Game/AI/AI/aiMiniBeamAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBeamAttack : public MiniBeamAttack { + SEAD_RTTI_OVERRIDE(GuardianMiniBeamAttack, MiniBeamAttack) +public: + explicit GuardianMiniBeamAttack(const InitArg& arg); + ~GuardianMiniBeamAttack() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x250 + sead::SafeString mHeadNodeName_s{}; + // static_param at offset 0x260 + const int* mAttackInterval_s{}; + // static_param at offset 0x268 + const int* mEndShaderASFrame_s{}; + // static_param at offset 0x270 + sead::SafeString mLoopShaderASName_s{}; + // static_param at offset 0x280 + sead::SafeString mEndShaderASName_s{}; + // static_param at offset 0x290 + sead::SafeString mPreLaunchEffectName_s{}; + // static_param at offset 0x2a0 + const bool* mIsChangeable_s{}; + // static_param at offset 0x2a8 + const bool* mIsFinalBattle_s{}; + // static_param at offset 0x2b0 + const float* mInDirAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.cpp b/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.cpp new file mode 100644 index 00000000..f60a98e3 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGuardianMiniBeamAttackMove.h" + +namespace uking::ai { + +GuardianMiniBeamAttackMove::GuardianMiniBeamAttackMove(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniBeamAttackMove::~GuardianMiniBeamAttackMove() = default; + +void GuardianMiniBeamAttackMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniBeamAttackMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniBeamAttackMove::loadParams_() { + getStaticParam(&mMoveTime_s, "MoveTime"); + getStaticParam(&mAttackInterval_s, "AttackInterval"); + getStaticParam(&mBeamSpeed_s, "BeamSpeed"); + getStaticParam(&mBaseNode_s, "BaseNode"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mTargetDistOffset_s, "TargetDistOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.h b/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.h new file mode 100644 index 00000000..e4120ee8 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttackMove.h @@ -0,0 +1,32 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBeamAttackMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniBeamAttackMove, ksys::act::ai::Ai) +public: + explicit GuardianMiniBeamAttackMove(const InitArg& arg); + ~GuardianMiniBeamAttackMove() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMoveTime_s{}; + // static_param at offset 0x40 + const int* mAttackInterval_s{}; + // static_param at offset 0x48 + const float* mBeamSpeed_s{}; + // static_param at offset 0x50 + sead::SafeString mBaseNode_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x68 + const float* mTargetDistOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.cpp b/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.cpp new file mode 100644 index 00000000..ec8e3dfa --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h" + +namespace uking::ai { + +GuardianMiniBeamAttackNoWait::GuardianMiniBeamAttackNoWait(const InitArg& arg) + : GuardianMiniBeamAttack(arg) {} + +GuardianMiniBeamAttackNoWait::~GuardianMiniBeamAttackNoWait() = default; + +bool GuardianMiniBeamAttackNoWait::init_(sead::Heap* heap) { + return GuardianMiniBeamAttack::init_(heap); +} + +void GuardianMiniBeamAttackNoWait::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianMiniBeamAttack::enter_(params); +} + +void GuardianMiniBeamAttackNoWait::leave_() { + GuardianMiniBeamAttack::leave_(); +} + +void GuardianMiniBeamAttackNoWait::loadParams_() { + GuardianMiniBeamAttack::loadParams_(); + getStaticParam(&mAttackAngle_s, "AttackAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h b/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h new file mode 100644 index 00000000..b54420db --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianMiniBeamAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBeamAttackNoWait : public GuardianMiniBeamAttack { + SEAD_RTTI_OVERRIDE(GuardianMiniBeamAttackNoWait, GuardianMiniBeamAttack) +public: + explicit GuardianMiniBeamAttackNoWait(const InitArg& arg); + ~GuardianMiniBeamAttackNoWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x2d8 + const float* mAttackAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.cpp b/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.cpp new file mode 100644 index 00000000..b736a852 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiGuardianMiniBeamToExplosives.h" + +namespace uking::ai { + +GuardianMiniBeamToExplosives::GuardianMiniBeamToExplosives(const InitArg& arg) + : GuardianMiniBeamAttack(arg) {} + +GuardianMiniBeamToExplosives::~GuardianMiniBeamToExplosives() = default; + +void GuardianMiniBeamToExplosives::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianMiniBeamAttack::enter_(params); +} + +void GuardianMiniBeamToExplosives::loadParams_() { + GuardianMiniBeamAttack::loadParams_(); + getStaticParam(&mExplosivesAvoidDist_s, "ExplosivesAvoidDist"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.h b/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.h new file mode 100644 index 00000000..e114c64c --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBeamToExplosives.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianMiniBeamAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBeamToExplosives : public GuardianMiniBeamAttack { + SEAD_RTTI_OVERRIDE(GuardianMiniBeamToExplosives, GuardianMiniBeamAttack) +public: + explicit GuardianMiniBeamToExplosives(const InitArg& arg); + ~GuardianMiniBeamToExplosives() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x2d8 + const float* mExplosivesAvoidDist_s{}; + // dynamic_param at offset 0x2e0 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBlownOff.cpp b/src/Game/AI/AI/aiGuardianMiniBlownOff.cpp new file mode 100644 index 00000000..f12cf19c --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBlownOff.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiGuardianMiniBlownOff.h" + +namespace uking::ai { + +GuardianMiniBlownOff::GuardianMiniBlownOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianMiniBlownOff::~GuardianMiniBlownOff() = default; + +bool GuardianMiniBlownOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianMiniBlownOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniBlownOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniBlownOff::loadParams_() { + getStaticParam(&mRotNeckAngle_s, "RotNeckAngle"); + getStaticParam(&mRotNeckSpeed_s, "RotNeckSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniBlownOff.h b/src/Game/AI/AI/aiGuardianMiniBlownOff.h new file mode 100644 index 00000000..6f30d4c3 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniBlownOff.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniBlownOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniBlownOff, ksys::act::ai::Ai) +public: + explicit GuardianMiniBlownOff(const InitArg& arg); + ~GuardianMiniBlownOff() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRotNeckAngle_s{}; + // static_param at offset 0x40 + const float* mRotNeckSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniChangeWeapon.cpp b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.cpp new file mode 100644 index 00000000..66fb5fbb --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGuardianMiniChangeWeapon.h" + +namespace uking::ai { + +GuardianMiniChangeWeapon::GuardianMiniChangeWeapon(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianMiniChangeWeapon::~GuardianMiniChangeWeapon() = default; + +bool GuardianMiniChangeWeapon::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GuardianMiniChangeWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniChangeWeapon::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniChangeWeapon::loadParams_() { + getStaticParam(&mRotValue_s, "RotValue"); + getStaticParam(&mRotSpeed_s, "RotSpeed"); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mDamageNodeName_s, "DamageNodeName"); + getStaticParam(&mDamageASName_s, "DamageASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h new file mode 100644 index 00000000..b363a992 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniChangeWeapon.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniChangeWeapon : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniChangeWeapon, ksys::act::ai::Ai) +public: + explicit GuardianMiniChangeWeapon(const InitArg& arg); + ~GuardianMiniChangeWeapon() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRotValue_s{}; + // static_param at offset 0x40 + const float* mRotSpeed_s{}; + // static_param at offset 0x48 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0x58 + sead::SafeString mDamageNodeName_s{}; + // static_param at offset 0x68 + sead::SafeString mDamageASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniFinalBattle.cpp b/src/Game/AI/AI/aiGuardianMiniFinalBattle.cpp new file mode 100644 index 00000000..d90a1131 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniFinalBattle.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiGuardianMiniFinalBattle.h" + +namespace uking::ai { + +GuardianMiniFinalBattle::GuardianMiniFinalBattle(const InitArg& arg) : EnemyBattle(arg) {} + +GuardianMiniFinalBattle::~GuardianMiniFinalBattle() = default; + +void GuardianMiniFinalBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void GuardianMiniFinalBattle::leave_() { + EnemyBattle::leave_(); +} + +void GuardianMiniFinalBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mASSlotRight_s, "ASSlotRight"); + getStaticParam(&mASSlotLeft_s, "ASSlotLeft"); + getStaticParam(&mASSlotBack_s, "ASSlotBack"); + getStaticParam(&mAttackHitNum_s, "AttackHitNum"); + getStaticParam(&mIsPreAttackMove_s, "IsPreAttackMove"); + getStaticParam(&mRotNeckRate_s, "RotNeckRate"); + getAITreeVariable(&mGuardianMiniChanceTimeState_a, "GuardianMiniChanceTimeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniFinalBattle.h b/src/Game/AI/AI/aiGuardianMiniFinalBattle.h new file mode 100644 index 00000000..c7da22e5 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniFinalBattle.h @@ -0,0 +1,35 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniFinalBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(GuardianMiniFinalBattle, EnemyBattle) +public: + explicit GuardianMiniFinalBattle(const InitArg& arg); + ~GuardianMiniFinalBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mASSlotRight_s{}; + // static_param at offset 0x98 + const int* mASSlotLeft_s{}; + // static_param at offset 0xa0 + const int* mASSlotBack_s{}; + // static_param at offset 0xa8 + const int* mAttackHitNum_s{}; + // static_param at offset 0xb0 + const bool* mIsPreAttackMove_s{}; + // static_param at offset 0xb8 + const float* mRotNeckRate_s{}; + // aitree_variable at offset 0xc0 + int* mGuardianMiniChanceTimeState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniFindPlayer.cpp b/src/Game/AI/AI/aiGuardianMiniFindPlayer.cpp new file mode 100644 index 00000000..5c4c1864 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniFindPlayer.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiGuardianMiniFindPlayer.h" + +namespace uking::ai { + +GuardianMiniFindPlayer::GuardianMiniFindPlayer(const InitArg& arg) : LandHumEnemyFindPlayer(arg) {} + +GuardianMiniFindPlayer::~GuardianMiniFindPlayer() = default; + +void GuardianMiniFindPlayer::loadParams_() { + LandHumEnemyFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniFindPlayer.h b/src/Game/AI/AI/aiGuardianMiniFindPlayer.h new file mode 100644 index 00000000..a1e36a4b --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniFindPlayer.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniFindPlayer : public LandHumEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(GuardianMiniFindPlayer, LandHumEnemyFindPlayer) +public: + explicit GuardianMiniFindPlayer(const InitArg& arg); + ~GuardianMiniFindPlayer() override; + + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniGroggy.cpp b/src/Game/AI/AI/aiGuardianMiniGroggy.cpp new file mode 100644 index 00000000..55b1ee49 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniGroggy.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiGuardianMiniGroggy.h" + +namespace uking::ai { + +GuardianMiniGroggy::GuardianMiniGroggy(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianMiniGroggy::~GuardianMiniGroggy() = default; + +void GuardianMiniGroggy::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniGroggy::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniGroggy::loadParams_() { + getStaticParam(&mChanceTime_s, "ChanceTime"); + getStaticParam(&mRestartASName_s, "RestartASName"); + getStaticParam(&mDefaultASName_s, "DefaultASName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniGroggy.h b/src/Game/AI/AI/aiGuardianMiniGroggy.h new file mode 100644 index 00000000..c7fc182f --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniGroggy.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniGroggy : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniGroggy, ksys::act::ai::Ai) +public: + explicit GuardianMiniGroggy(const InitArg& arg); + ~GuardianMiniGroggy() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mChanceTime_s{}; + // static_param at offset 0x40 + sead::SafeString mRestartASName_s{}; + // static_param at offset 0x50 + sead::SafeString mDefaultASName_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniGuardSelect.cpp b/src/Game/AI/AI/aiGuardianMiniGuardSelect.cpp new file mode 100644 index 00000000..87306f4f --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniGuardSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGuardianMiniGuardSelect.h" + +namespace uking::ai { + +GuardianMiniGuardSelect::GuardianMiniGuardSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianMiniGuardSelect::~GuardianMiniGuardSelect() = default; + +void GuardianMiniGuardSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniGuardSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniGuardSelect::loadParams_() { + getStaticParam(&mASSlotRight_s, "ASSlotRight"); + getStaticParam(&mASSlotLeft_s, "ASSlotLeft"); + getStaticParam(&mASSlotBack_s, "ASSlotBack"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniGuardSelect.h b/src/Game/AI/AI/aiGuardianMiniGuardSelect.h new file mode 100644 index 00000000..1caea3c6 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniGuardSelect.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniGuardSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniGuardSelect, ksys::act::ai::Ai) +public: + explicit GuardianMiniGuardSelect(const InitArg& arg); + ~GuardianMiniGuardSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mASSlotRight_s{}; + // static_param at offset 0x40 + const int* mASSlotLeft_s{}; + // static_param at offset 0x48 + const int* mASSlotBack_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.cpp b/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.cpp new file mode 100644 index 00000000..4724ac3d --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiGuardianMiniNoWeaponSelect.h" + +namespace uking::ai { + +GuardianMiniNoWeaponSelect::GuardianMiniNoWeaponSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniNoWeaponSelect::~GuardianMiniNoWeaponSelect() = default; + +void GuardianMiniNoWeaponSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniNoWeaponSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniNoWeaponSelect::loadParams_() { + getStaticParam(&mIsSelectFirstTime_s, "IsSelectFirstTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.h b/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.h new file mode 100644 index 00000000..b51f85f5 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniNoWeaponSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniNoWeaponSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniNoWeaponSelect, ksys::act::ai::Ai) +public: + explicit GuardianMiniNoWeaponSelect(const InitArg& arg); + ~GuardianMiniNoWeaponSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsSelectFirstTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.cpp b/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.cpp new file mode 100644 index 00000000..5935ed77 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiGuardianMiniOnNoNavMesh.h" + +namespace uking::ai { + +GuardianMiniOnNoNavMesh::GuardianMiniOnNoNavMesh(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GuardianMiniOnNoNavMesh::~GuardianMiniOnNoNavMesh() = default; + +void GuardianMiniOnNoNavMesh::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniOnNoNavMesh::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniOnNoNavMesh::loadParams_() { + getStaticParam(&mChangeToIceTimer_s, "ChangeToIceTimer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.h b/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.h new file mode 100644 index 00000000..8f6694a6 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniOnNoNavMesh.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniOnNoNavMesh : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniOnNoNavMesh, ksys::act::ai::Ai) +public: + explicit GuardianMiniOnNoNavMesh(const InitArg& arg); + ~GuardianMiniOnNoNavMesh() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mChangeToIceTimer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.cpp b/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.cpp new file mode 100644 index 00000000..360dc516 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiGuardianMiniRangeKeepMove.h" + +namespace uking::ai { + +GuardianMiniRangeKeepMove::GuardianMiniRangeKeepMove(const InitArg& arg) + : EnemyRangeKeepMove(arg) {} + +GuardianMiniRangeKeepMove::~GuardianMiniRangeKeepMove() = default; + +void GuardianMiniRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRangeKeepMove::enter_(params); +} + +void GuardianMiniRangeKeepMove::leave_() { + EnemyRangeKeepMove::leave_(); +} + +void GuardianMiniRangeKeepMove::loadParams_() { + EnemyRangeKeepMove::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.h b/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.h new file mode 100644 index 00000000..73f306f2 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRangeKeepMove.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniRangeKeepMove : public EnemyRangeKeepMove { + SEAD_RTTI_OVERRIDE(GuardianMiniRangeKeepMove, EnemyRangeKeepMove) +public: + explicit GuardianMiniRangeKeepMove(const InitArg& arg); + ~GuardianMiniRangeKeepMove() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniReaction.cpp b/src/Game/AI/AI/aiGuardianMiniReaction.cpp new file mode 100644 index 00000000..21e63726 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniReaction.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiGuardianMiniReaction.h" + +namespace uking::ai { + +GuardianMiniReaction::GuardianMiniReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +GuardianMiniReaction::~GuardianMiniReaction() = default; + +bool GuardianMiniReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void GuardianMiniReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void GuardianMiniReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void GuardianMiniReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mArm1NodeName_s, "Arm1NodeName"); + getStaticParam(&mArm2NodeName_s, "Arm2NodeName"); + getStaticParam(&mArm3NodeName_s, "Arm3NodeName"); + getStaticParam(&mASSlotRight_s, "ASSlotRight"); + getStaticParam(&mASSlotLeft_s, "ASSlotLeft"); + getStaticParam(&mASSlotBack_s, "ASSlotBack"); + getStaticParam(&mPreAttackASRight_s, "PreAttackASRight"); + getStaticParam(&mPreAttackASLeft_s, "PreAttackASLeft"); + getStaticParam(&mJustGuardNumForBreak_s, "JustGuardNumForBreak"); + getStaticParam(&mIsChangeWeapon_s, "IsChangeWeapon"); + getAITreeVariable(&mGuardianMiniChanceTimeState_a, "GuardianMiniChanceTimeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniReaction.h b/src/Game/AI/AI/aiGuardianMiniReaction.h new file mode 100644 index 00000000..e7e0b5bd --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniReaction.h @@ -0,0 +1,46 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(GuardianMiniReaction, EnemyDefaultReaction) +public: + explicit GuardianMiniReaction(const InitArg& arg); + ~GuardianMiniReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0x78 + sead::SafeString mArm1NodeName_s{}; + // static_param at offset 0x88 + sead::SafeString mArm2NodeName_s{}; + // static_param at offset 0x98 + sead::SafeString mArm3NodeName_s{}; + // static_param at offset 0xa8 + const int* mASSlotRight_s{}; + // static_param at offset 0xb0 + const int* mASSlotLeft_s{}; + // static_param at offset 0xb8 + const int* mASSlotBack_s{}; + // static_param at offset 0xc0 + sead::SafeString mPreAttackASRight_s{}; + // static_param at offset 0xd0 + sead::SafeString mPreAttackASLeft_s{}; + // static_param at offset 0xe0 + const int* mJustGuardNumForBreak_s{}; + // static_param at offset 0xe8 + const bool* mIsChangeWeapon_s{}; + // aitree_variable at offset 0xf0 + int* mGuardianMiniChanceTimeState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.cpp b/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.cpp new file mode 100644 index 00000000..8a2b8362 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiGuardianMiniRecognizeTarget.h" + +namespace uking::ai { + +GuardianMiniRecognizeTarget::GuardianMiniRecognizeTarget(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniRecognizeTarget::~GuardianMiniRecognizeTarget() = default; + +void GuardianMiniRecognizeTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniRecognizeTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniRecognizeTarget::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.h b/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.h new file mode 100644 index 00000000..6b113e9e --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRecognizeTarget.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniRecognizeTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniRecognizeTarget, ksys::act::ai::Ai) +public: + explicit GuardianMiniRecognizeTarget(const InitArg& arg); + ~GuardianMiniRecognizeTarget() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.cpp b/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.cpp new file mode 100644 index 00000000..ebda1c94 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.cpp @@ -0,0 +1,49 @@ +#include "Game/AI/AI/aiGuardianMiniRollingAttackMove.h" + +namespace uking::ai { + +GuardianMiniRollingAttackMove::GuardianMiniRollingAttackMove(const InitArg& arg) + : EnemyRangeKeepMove(arg) {} + +GuardianMiniRollingAttackMove::~GuardianMiniRollingAttackMove() = default; + +bool GuardianMiniRollingAttackMove::init_(sead::Heap* heap) { + return EnemyRangeKeepMove::init_(heap); +} + +void GuardianMiniRollingAttackMove::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRangeKeepMove::enter_(params); +} + +void GuardianMiniRollingAttackMove::leave_() { + EnemyRangeKeepMove::leave_(); +} + +void GuardianMiniRollingAttackMove::loadParams_() { + EnemyRangeKeepMove::loadParams_(); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mAttackNodeName_s, "AttackNodeName"); + getStaticParam(&mAttackASName_s, "AttackASName"); + getStaticParam(&mRollingNumMin_s, "RollingNumMin"); + getStaticParam(&mRollingNumMax_s, "RollingNumMax"); + getStaticParam(&mRollingWaitTime_s, "RollingWaitTime"); + getStaticParam(&mRollingIntervalTime_s, "RollingIntervalTime"); + getStaticParam(&mStopRollingNum_s, "StopRollingNum"); + getStaticParam(&mJustAvoidSideDist_s, "JustAvoidSideDist"); + getStaticParam(&mJustAvoidBackDist_s, "JustAvoidBackDist"); + getStaticParam(&mJustAvoidAngle_s, "JustAvoidAngle"); + getStaticParam(&mRotSpeed_s, "RotSpeed"); + getStaticParam(&mBackWalkRotSpeedRatio_s, "BackWalkRotSpeedRatio"); + getStaticParam(&mRushRotSpeedRatio_s, "RushRotSpeedRatio"); + getStaticParam(&mAttackType_s, "AttackType"); + getStaticParam(&mBackWalkMinTime_s, "BackWalkMinTime"); + getStaticParam(&mBackWalkRollingStartTime_s, "BackWalkRollingStartTime"); + getStaticParam(&mBackWalkDist_s, "BackWalkDist"); + getStaticParam(&mRushAttackImpulse_s, "RushAttackImpulse"); + getStaticParam(&mRollingStopTime_s, "RollingStopTime"); + getStaticParam(&mIsValidChanceTime_s, "IsValidChanceTime"); + getStaticParam(&mCrashDamage_s, "CrashDamage"); + getStaticParam(&mBreakPillarTime_s, "BreakPillarTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.h b/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.h new file mode 100644 index 00000000..d27178d7 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRollingAttackMove.h @@ -0,0 +1,68 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniRollingAttackMove : public EnemyRangeKeepMove { + SEAD_RTTI_OVERRIDE(GuardianMiniRollingAttackMove, EnemyRangeKeepMove) +public: + explicit GuardianMiniRollingAttackMove(const InitArg& arg); + ~GuardianMiniRollingAttackMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x110 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0x120 + sead::SafeString mAttackNodeName_s{}; + // static_param at offset 0x130 + sead::SafeString mAttackASName_s{}; + // static_param at offset 0x140 + const int* mRollingNumMin_s{}; + // static_param at offset 0x148 + const int* mRollingNumMax_s{}; + // static_param at offset 0x150 + const int* mRollingWaitTime_s{}; + // static_param at offset 0x158 + const int* mRollingIntervalTime_s{}; + // static_param at offset 0x160 + const int* mStopRollingNum_s{}; + // static_param at offset 0x168 + const float* mJustAvoidSideDist_s{}; + // static_param at offset 0x170 + const float* mJustAvoidBackDist_s{}; + // static_param at offset 0x178 + const float* mJustAvoidAngle_s{}; + // static_param at offset 0x180 + const float* mRotSpeed_s{}; + // static_param at offset 0x188 + const float* mBackWalkRotSpeedRatio_s{}; + // static_param at offset 0x190 + const float* mRushRotSpeedRatio_s{}; + // static_param at offset 0x198 + const int* mAttackType_s{}; + // static_param at offset 0x1a0 + const int* mBackWalkMinTime_s{}; + // static_param at offset 0x1a8 + const int* mBackWalkRollingStartTime_s{}; + // static_param at offset 0x1b0 + const float* mBackWalkDist_s{}; + // static_param at offset 0x1b8 + const int* mRushAttackImpulse_s{}; + // static_param at offset 0x1c0 + const int* mRollingStopTime_s{}; + // static_param at offset 0x1c8 + const bool* mIsValidChanceTime_s{}; + // static_param at offset 0x1d0 + const int* mCrashDamage_s{}; + // static_param at offset 0x1d8 + const int* mBreakPillarTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRoot.cpp b/src/Game/AI/AI/aiGuardianMiniRoot.cpp new file mode 100644 index 00000000..b897e8a0 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiGuardianMiniRoot.h" + +namespace uking::ai { + +GuardianMiniRoot::GuardianMiniRoot(const InitArg& arg) : EnemyRoot(arg) {} + +GuardianMiniRoot::~GuardianMiniRoot() = default; + +bool GuardianMiniRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void GuardianMiniRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void GuardianMiniRoot::leave_() { + EnemyRoot::leave_(); +} + +void GuardianMiniRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mNeckRotRatio_s, "NeckRotRatio"); + getStaticParam(&mJustGuardNumForBreak_s, "JustGuardNumForBreak"); + getStaticParam(&mRotStopSpeed_s, "RotStopSpeed"); + getAITreeVariable(&mDamagedCount_a, "DamagedCount"); + getAITreeVariable(&mIsTransformedGuardianMini_a, "IsTransformedGuardianMini"); + getAITreeVariable(&mGuardianMiniChanceTimeState_a, "GuardianMiniChanceTimeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniRoot.h b/src/Game/AI/AI/aiGuardianMiniRoot.h new file mode 100644 index 00000000..2a81125e --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniRoot.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(GuardianMiniRoot, EnemyRoot) +public: + explicit GuardianMiniRoot(const InitArg& arg); + ~GuardianMiniRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const float* mNeckRotRatio_s{}; + // static_param at offset 0x1e0 + const int* mJustGuardNumForBreak_s{}; + // static_param at offset 0x1e8 + const float* mRotStopSpeed_s{}; + // aitree_variable at offset 0x1f0 + int* mDamagedCount_a{}; + // aitree_variable at offset 0x1f8 + bool* mIsTransformedGuardianMini_a{}; + // aitree_variable at offset 0x200 + int* mGuardianMiniChanceTimeState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.cpp b/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.cpp new file mode 100644 index 00000000..552441dd --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiGuardianMiniTargetOnScalffold.h" + +namespace uking::ai { + +GuardianMiniTargetOnScalffold::GuardianMiniTargetOnScalffold(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniTargetOnScalffold::~GuardianMiniTargetOnScalffold() = default; + +void GuardianMiniTargetOnScalffold::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniTargetOnScalffold::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniTargetOnScalffold::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mNearDist_s, "NearDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.h b/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.h new file mode 100644 index 00000000..96a90099 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniTargetOnScalffold.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniTargetOnScalffold : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniTargetOnScalffold, ksys::act::ai::Ai) +public: + explicit GuardianMiniTargetOnScalffold(const InitArg& arg); + ~GuardianMiniTargetOnScalffold() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFarDist_s{}; + // static_param at offset 0x40 + const float* mNearDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniTransformSelect.cpp b/src/Game/AI/AI/aiGuardianMiniTransformSelect.cpp new file mode 100644 index 00000000..dac63159 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniTransformSelect.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiGuardianMiniTransformSelect.h" + +namespace uking::ai { + +GuardianMiniTransformSelect::GuardianMiniTransformSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +GuardianMiniTransformSelect::~GuardianMiniTransformSelect() = default; + +void GuardianMiniTransformSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GuardianMiniTransformSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GuardianMiniTransformSelect::loadParams_() { + getAITreeVariable(&mIsTransformedGuardianMini_a, "IsTransformedGuardianMini"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniTransformSelect.h b/src/Game/AI/AI/aiGuardianMiniTransformSelect.h new file mode 100644 index 00000000..89523cf9 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniTransformSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniTransformSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GuardianMiniTransformSelect, ksys::act::ai::Ai) +public: + explicit GuardianMiniTransformSelect(const InitArg& arg); + ~GuardianMiniTransformSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsTransformedGuardianMini_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniViewWait.cpp b/src/Game/AI/AI/aiGuardianMiniViewWait.cpp new file mode 100644 index 00000000..adc84e5e --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniViewWait.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGuardianMiniViewWait.h" + +namespace uking::ai { + +GuardianMiniViewWait::GuardianMiniViewWait(const InitArg& arg) : ViewWait(arg) {} + +GuardianMiniViewWait::~GuardianMiniViewWait() = default; + +void GuardianMiniViewWait::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void GuardianMiniViewWait::leave_() { + ViewWait::leave_(); +} + +void GuardianMiniViewWait::loadParams_() { + ViewWait::loadParams_(); + getStaticParam(&mASSlotRight_s, "ASSlotRight"); + getStaticParam(&mASSlotLeft_s, "ASSlotLeft"); + getStaticParam(&mASSlotBack_s, "ASSlotBack"); + getStaticParam(&mRootNodeName_s, "RootNodeName"); + getStaticParam(&mArm1NodeName_s, "Arm1NodeName"); + getStaticParam(&mArm2NodeName_s, "Arm2NodeName"); + getStaticParam(&mArm3NodeName_s, "Arm3NodeName"); + getStaticParam(&mIsPartialBind_s, "IsPartialBind"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianMiniViewWait.h b/src/Game/AI/AI/aiGuardianMiniViewWait.h new file mode 100644 index 00000000..9a6fc8b1 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianMiniViewWait.h @@ -0,0 +1,37 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianMiniViewWait : public ViewWait { + SEAD_RTTI_OVERRIDE(GuardianMiniViewWait, ViewWait) +public: + explicit GuardianMiniViewWait(const InitArg& arg); + ~GuardianMiniViewWait() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const int* mASSlotRight_s{}; + // static_param at offset 0x68 + const int* mASSlotLeft_s{}; + // static_param at offset 0x70 + const int* mASSlotBack_s{}; + // static_param at offset 0x78 + sead::SafeString mRootNodeName_s{}; + // static_param at offset 0x88 + sead::SafeString mArm1NodeName_s{}; + // static_param at offset 0x98 + sead::SafeString mArm2NodeName_s{}; + // static_param at offset 0xa8 + sead::SafeString mArm3NodeName_s{}; + // static_param at offset 0xb8 + const bool* mIsPartialBind_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianRoam.cpp b/src/Game/AI/AI/aiGuardianRoam.cpp new file mode 100644 index 00000000..3bb4ccb8 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianRoam.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGuardianRoam.h" + +namespace uking::ai { + +GuardianRoam::GuardianRoam(const InitArg& arg) : GuardianAI(arg) {} + +GuardianRoam::~GuardianRoam() = default; + +bool GuardianRoam::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianRoam::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianRoam::leave_() { + GuardianAI::leave_(); +} + +void GuardianRoam::loadParams_() { + GuardianAI::loadParams_(); + getStaticParam(&mMoveTime_s, "MoveTime"); + getStaticParam(&mMoveRadius_s, "MoveRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianRoam.h b/src/Game/AI/AI/aiGuardianRoam.h new file mode 100644 index 00000000..9d702a5a --- /dev/null +++ b/src/Game/AI/AI/aiGuardianRoam.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianRoam : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianRoam, GuardianAI) +public: + explicit GuardianRoam(const InitArg& arg); + ~GuardianRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMoveTime_s{}; + // static_param at offset 0x40 + const float* mMoveRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianRoot.cpp b/src/Game/AI/AI/aiGuardianRoot.cpp new file mode 100644 index 00000000..ff147d6f --- /dev/null +++ b/src/Game/AI/AI/aiGuardianRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiGuardianRoot.h" + +namespace uking::ai { + +GuardianRoot::GuardianRoot(const InitArg& arg) : GuardianAI(arg) {} + +GuardianRoot::~GuardianRoot() = default; + +bool GuardianRoot::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianRoot::leave_() { + GuardianAI::leave_(); +} + +void GuardianRoot::loadParams_() { + GuardianAI::loadParams_(); + getMapUnitParam(&mIsSuspended_m, "IsSuspended"); + getAITreeVariable(&mForceSetDropPos_a, "ForceSetDropPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianRoot.h b/src/Game/AI/AI/aiGuardianRoot.h new file mode 100644 index 00000000..058ca5ac --- /dev/null +++ b/src/Game/AI/AI/aiGuardianRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianRoot : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianRoot, GuardianAI) +public: + explicit GuardianRoot(const InitArg& arg); + ~GuardianRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsSuspended_m{}; + // aitree_variable at offset 0x40 + sead::Vector3f* mForceSetDropPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianTargetLost.cpp b/src/Game/AI/AI/aiGuardianTargetLost.cpp new file mode 100644 index 00000000..d4d2f69b --- /dev/null +++ b/src/Game/AI/AI/aiGuardianTargetLost.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiGuardianTargetLost.h" + +namespace uking::ai { + +GuardianTargetLost::GuardianTargetLost(const InitArg& arg) : GuardianAI(arg) {} + +GuardianTargetLost::~GuardianTargetLost() = default; + +bool GuardianTargetLost::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianTargetLost::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianTargetLost::leave_() { + GuardianAI::leave_(); +} + +void GuardianTargetLost::loadParams_() { + GuardianAI::loadParams_(); + getStaticParam(&mLostCountMax_s, "LostCountMax"); + getStaticParam(&mMoveRange_s, "MoveRange"); + getStaticParam(&mBackOffset_s, "BackOffset"); + getStaticParam(&mAirThreshold_s, "AirThreshold"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianTargetLost.h b/src/Game/AI/AI/aiGuardianTargetLost.h new file mode 100644 index 00000000..a6347742 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianTargetLost.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianTargetLost : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianTargetLost, GuardianAI) +public: + explicit GuardianTargetLost(const InitArg& arg); + ~GuardianTargetLost() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mLostCountMax_s{}; + // static_param at offset 0x70 + const float* mMoveRange_s{}; + // static_param at offset 0x78 + const float* mBackOffset_s{}; + // static_param at offset 0x80 + const float* mAirThreshold_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianWait.cpp b/src/Game/AI/AI/aiGuardianWait.cpp new file mode 100644 index 00000000..514cc216 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianWait.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiGuardianWait.h" + +namespace uking::ai { + +GuardianWait::GuardianWait(const InitArg& arg) : GuardianAI(arg) {} + +GuardianWait::~GuardianWait() = default; + +bool GuardianWait::init_(sead::Heap* heap) { + return GuardianAI::init_(heap); +} + +void GuardianWait::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianAI::enter_(params); +} + +void GuardianWait::leave_() { + GuardianAI::leave_(); +} + +void GuardianWait::loadParams_() { + GuardianAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGuardianWait.h b/src/Game/AI/AI/aiGuardianWait.h new file mode 100644 index 00000000..a9a82327 --- /dev/null +++ b/src/Game/AI/AI/aiGuardianWait.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GuardianWait : public GuardianAI { + SEAD_RTTI_OVERRIDE(GuardianWait, GuardianAI) +public: + explicit GuardianWait(const InitArg& arg); + ~GuardianWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGyroActivateTerminal.cpp b/src/Game/AI/AI/aiGyroActivateTerminal.cpp new file mode 100644 index 00000000..456c17fe --- /dev/null +++ b/src/Game/AI/AI/aiGyroActivateTerminal.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiGyroActivateTerminal.h" + +namespace uking::ai { + +GyroActivateTerminal::GyroActivateTerminal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +GyroActivateTerminal::~GyroActivateTerminal() = default; + +bool GyroActivateTerminal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void GyroActivateTerminal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void GyroActivateTerminal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void GyroActivateTerminal::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiGyroActivateTerminal.h b/src/Game/AI/AI/aiGyroActivateTerminal.h new file mode 100644 index 00000000..a8fb5b60 --- /dev/null +++ b/src/Game/AI/AI/aiGyroActivateTerminal.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class GyroActivateTerminal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(GyroActivateTerminal, ksys::act::ai::Ai) +public: + explicit GyroActivateTerminal(const InitArg& arg); + ~GyroActivateTerminal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHangedLamp.cpp b/src/Game/AI/AI/aiHangedLamp.cpp new file mode 100644 index 00000000..6d03bed3 --- /dev/null +++ b/src/Game/AI/AI/aiHangedLamp.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiHangedLamp.h" + +namespace uking::ai { + +HangedLamp::HangedLamp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HangedLamp::~HangedLamp() = default; + +bool HangedLamp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HangedLamp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HangedLamp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HangedLamp::loadParams_() { + getStaticParam(&mDisableImpulseByArrow_s, "DisableImpulseByArrow"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHangedLamp.h b/src/Game/AI/AI/aiHangedLamp.h new file mode 100644 index 00000000..617e96eb --- /dev/null +++ b/src/Game/AI/AI/aiHangedLamp.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HangedLamp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HangedLamp, ksys::act::ai::Ai) +public: + explicit HangedLamp(const InitArg& arg); + ~HangedLamp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x28]; + // static_param at offset 0x60 + const bool* mDisableImpulseByArrow_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHasPreActorSelect.cpp b/src/Game/AI/AI/aiHasPreActorSelect.cpp new file mode 100644 index 00000000..b7e733f6 --- /dev/null +++ b/src/Game/AI/AI/aiHasPreActorSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiHasPreActorSelect.h" + +namespace uking::ai { + +HasPreActorSelect::HasPreActorSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HasPreActorSelect::~HasPreActorSelect() = default; + +bool HasPreActorSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HasPreActorSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HasPreActorSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HasPreActorSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHasPreActorSelect.h b/src/Game/AI/AI/aiHasPreActorSelect.h new file mode 100644 index 00000000..45c8be80 --- /dev/null +++ b/src/Game/AI/AI/aiHasPreActorSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HasPreActorSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HasPreActorSelect, ksys::act::ai::Ai) +public: + explicit HasPreActorSelect(const InitArg& arg); + ~HasPreActorSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHaveNoWeaponSelector.cpp b/src/Game/AI/AI/aiHaveNoWeaponSelector.cpp new file mode 100644 index 00000000..fcd5276d --- /dev/null +++ b/src/Game/AI/AI/aiHaveNoWeaponSelector.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiHaveNoWeaponSelector.h" + +namespace uking::ai { + +HaveNoWeaponSelector::HaveNoWeaponSelector(const InitArg& arg) : EquipHaveSelector(arg) {} + +HaveNoWeaponSelector::~HaveNoWeaponSelector() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHaveNoWeaponSelector.h b/src/Game/AI/AI/aiHaveNoWeaponSelector.h new file mode 100644 index 00000000..da3394b5 --- /dev/null +++ b/src/Game/AI/AI/aiHaveNoWeaponSelector.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiEquipHaveSelector.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HaveNoWeaponSelector : public EquipHaveSelector { + SEAD_RTTI_OVERRIDE(HaveNoWeaponSelector, EquipHaveSelector) +public: + explicit HaveNoWeaponSelector(const InitArg& arg); + ~HaveNoWeaponSelector() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHeightSelectTwoAction.cpp b/src/Game/AI/AI/aiHeightSelectTwoAction.cpp new file mode 100644 index 00000000..88be65f6 --- /dev/null +++ b/src/Game/AI/AI/aiHeightSelectTwoAction.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiHeightSelectTwoAction.h" + +namespace uking::ai { + +HeightSelectTwoAction::HeightSelectTwoAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HeightSelectTwoAction::~HeightSelectTwoAction() = default; + +void HeightSelectTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HeightSelectTwoAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HeightSelectTwoAction::loadParams_() { + getStaticParam(&mSelectCheckInterval_s, "SelectCheckInterval"); + getStaticParam(&mHeightMin_s, "HeightMin"); + getStaticParam(&mHeightMax_s, "HeightMax"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHeightSelectTwoAction.h b/src/Game/AI/AI/aiHeightSelectTwoAction.h new file mode 100644 index 00000000..9dfd2b4b --- /dev/null +++ b/src/Game/AI/AI/aiHeightSelectTwoAction.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HeightSelectTwoAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HeightSelectTwoAction, ksys::act::ai::Ai) +public: + explicit HeightSelectTwoAction(const InitArg& arg); + ~HeightSelectTwoAction() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSelectCheckInterval_s{}; + // static_param at offset 0x40 + const float* mHeightMin_s{}; + // static_param at offset 0x48 + const float* mHeightMax_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHeroSoulGiftRoot.cpp b/src/Game/AI/AI/aiHeroSoulGiftRoot.cpp new file mode 100644 index 00000000..9821652e --- /dev/null +++ b/src/Game/AI/AI/aiHeroSoulGiftRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" + +namespace uking::ai { + +HeroSoulGiftRoot::HeroSoulGiftRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HeroSoulGiftRoot::~HeroSoulGiftRoot() = default; + +bool HeroSoulGiftRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HeroSoulGiftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HeroSoulGiftRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HeroSoulGiftRoot::loadParams_() { + getStaticParam(&mUseInitMtxForBasePos_s, "UseInitMtxForBasePos"); + getStaticParam(&mUseInitMtxForBaseRot_s, "UseInitMtxForBaseRot"); + getStaticParam(&mPosOffset_s, "PosOffset"); + getStaticParam(&mRotOffset_s, "RotOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHeroSoulGiftRoot.h b/src/Game/AI/AI/aiHeroSoulGiftRoot.h new file mode 100644 index 00000000..174744bc --- /dev/null +++ b/src/Game/AI/AI/aiHeroSoulGiftRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HeroSoulGiftRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HeroSoulGiftRoot, ksys::act::ai::Ai) +public: + explicit HeroSoulGiftRoot(const InitArg& arg); + ~HeroSoulGiftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mUseInitMtxForBasePos_s{}; + // static_param at offset 0x40 + const bool* mUseInitMtxForBaseRot_s{}; + // static_param at offset 0x48 + const sead::Vector3f* mPosOffset_s{}; + // static_param at offset 0x50 + const sead::Vector3f* mRotOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenKorokRoot.cpp b/src/Game/AI/AI/aiHiddenKorokRoot.cpp new file mode 100644 index 00000000..a4824ca3 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenKorokRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiHiddenKorokRoot.h" + +namespace uking::ai { + +HiddenKorokRoot::HiddenKorokRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HiddenKorokRoot::~HiddenKorokRoot() = default; + +bool HiddenKorokRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HiddenKorokRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HiddenKorokRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HiddenKorokRoot::loadParams_() { + getStaticParam(&mPainTalkHitSpeed_s, "PainTalkHitSpeed"); + getStaticParam(&mPainTalkDistance_s, "PainTalkDistance"); + getMapUnitParam(&mKorokEventStartWaitFrame_m, "KorokEventStartWaitFrame"); + getMapUnitParam(&mIsAppearCheck_m, "IsAppearCheck"); + getMapUnitParam(&mPlacementType_m, "PlacementType"); + getMapUnitParam(&mIsHiddenKorokLiftAppear_m, "IsHiddenKorokLiftAppear"); + getMapUnitParam(&mIsInvisibleKorok_m, "IsInvisibleKorok"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenKorokRoot.h b/src/Game/AI/AI/aiHiddenKorokRoot.h new file mode 100644 index 00000000..81a9fa48 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenKorokRoot.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HiddenKorokRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HiddenKorokRoot, ksys::act::ai::Ai) +public: + explicit HiddenKorokRoot(const InitArg& arg); + ~HiddenKorokRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPainTalkHitSpeed_s{}; + // static_param at offset 0x40 + const float* mPainTalkDistance_s{}; + // map_unit_param at offset 0x48 + const int* mKorokEventStartWaitFrame_m{}; + // map_unit_param at offset 0x50 + const bool* mIsAppearCheck_m{}; + // map_unit_param at offset 0x58 + sead::SafeString mPlacementType_m{}; + // map_unit_param at offset 0x68 + const bool* mIsHiddenKorokLiftAppear_m{}; + // map_unit_param at offset 0x70 + const bool* mIsInvisibleKorok_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockFindPlayer.cpp b/src/Game/AI/AI/aiHiddenOctarockFindPlayer.cpp new file mode 100644 index 00000000..c5f3a0f7 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockFindPlayer.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiHiddenOctarockFindPlayer.h" + +namespace uking::ai { + +HiddenOctarockFindPlayer::HiddenOctarockFindPlayer(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HiddenOctarockFindPlayer::~HiddenOctarockFindPlayer() = default; + +bool HiddenOctarockFindPlayer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HiddenOctarockFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HiddenOctarockFindPlayer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HiddenOctarockFindPlayer::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mActorRadius_s, "ActorRadius"); + getStaticParam(&mLostDistOffset_s, "LostDistOffset"); + getStaticParam(&mNoticeDelayTime_s, "NoticeDelayTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockFindPlayer.h b/src/Game/AI/AI/aiHiddenOctarockFindPlayer.h new file mode 100644 index 00000000..ab74311c --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockFindPlayer.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HiddenOctarockFindPlayer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HiddenOctarockFindPlayer, ksys::act::ai::Ai) +public: + explicit HiddenOctarockFindPlayer(const InitArg& arg); + ~HiddenOctarockFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mLostTimer_s{}; + // static_param at offset 0x48 + const float* mFarDist_s{}; + // static_param at offset 0x50 + const float* mActorRadius_s{}; + // static_param at offset 0x58 + const float* mLostDistOffset_s{}; + // static_param at offset 0x60 + const float* mNoticeDelayTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockNormal.cpp b/src/Game/AI/AI/aiHiddenOctarockNormal.cpp new file mode 100644 index 00000000..51f789f1 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockNormal.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiHiddenOctarockNormal.h" + +namespace uking::ai { + +HiddenOctarockNormal::HiddenOctarockNormal(const InitArg& arg) : EnemyNormal(arg) {} + +HiddenOctarockNormal::~HiddenOctarockNormal() = default; + +bool HiddenOctarockNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void HiddenOctarockNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void HiddenOctarockNormal::leave_() { + EnemyNormal::leave_(); +} + +void HiddenOctarockNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mOptionHitReactionDelay_s, "OptionHitReactionDelay"); + getStaticParam(&mIsSitDown_s, "IsSitDown"); + getStaticParam(&mIsHitGround_s, "IsHitGround"); + getStaticParam(&mIsReactionByWigHit_s, "IsReactionByWigHit"); + getStaticParam(&mIsHide_s, "IsHide"); + getStaticParam(&mIsIvalidateSight_s, "IsIvalidateSight"); + getStaticParam(&mIsSealHearing_s, "IsSealHearing"); + getMapUnitParam(&mIsNearCreate_m, "IsNearCreate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockNormal.h b/src/Game/AI/AI/aiHiddenOctarockNormal.h new file mode 100644 index 00000000..f1773c41 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockNormal.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HiddenOctarockNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(HiddenOctarockNormal, EnemyNormal) +public: + explicit HiddenOctarockNormal(const InitArg& arg); + ~HiddenOctarockNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mOptionHitReactionDelay_s{}; + // static_param at offset 0x3d8 + const bool* mIsSitDown_s{}; + // static_param at offset 0x3e0 + const bool* mIsHitGround_s{}; + // static_param at offset 0x3e8 + const bool* mIsReactionByWigHit_s{}; + // static_param at offset 0x3f0 + const bool* mIsHide_s{}; + // static_param at offset 0x3f8 + const bool* mIsIvalidateSight_s{}; + // static_param at offset 0x400 + const bool* mIsSealHearing_s{}; + // map_unit_param at offset 0x408 + const bool* mIsNearCreate_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockSearchTarget.cpp b/src/Game/AI/AI/aiHiddenOctarockSearchTarget.cpp new file mode 100644 index 00000000..b1abf56e --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockSearchTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiHiddenOctarockSearchTarget.h" + +namespace uking::ai { + +HiddenOctarockSearchTarget::HiddenOctarockSearchTarget(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +HiddenOctarockSearchTarget::~HiddenOctarockSearchTarget() = default; + +bool HiddenOctarockSearchTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HiddenOctarockSearchTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HiddenOctarockSearchTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HiddenOctarockSearchTarget::loadParams_() { + getStaticParam(&mNoticeTerrorLevel_s, "NoticeTerrorLevel"); + getStaticParam(&mNoticeWorryRange_s, "NoticeWorryRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHiddenOctarockSearchTarget.h b/src/Game/AI/AI/aiHiddenOctarockSearchTarget.h new file mode 100644 index 00000000..a63f5560 --- /dev/null +++ b/src/Game/AI/AI/aiHiddenOctarockSearchTarget.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HiddenOctarockSearchTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HiddenOctarockSearchTarget, ksys::act::ai::Ai) +public: + explicit HiddenOctarockSearchTarget(const InitArg& arg); + ~HiddenOctarockSearchTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNoticeTerrorLevel_s{}; + // static_param at offset 0x40 + const float* mNoticeWorryRange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHomePosDistanceSelector.cpp b/src/Game/AI/AI/aiHomePosDistanceSelector.cpp new file mode 100644 index 00000000..5b12cc79 --- /dev/null +++ b/src/Game/AI/AI/aiHomePosDistanceSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiHomePosDistanceSelector.h" + +namespace uking::ai { + +HomePosDistanceSelector::HomePosDistanceSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HomePosDistanceSelector::~HomePosDistanceSelector() = default; + +bool HomePosDistanceSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HomePosDistanceSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HomePosDistanceSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HomePosDistanceSelector::loadParams_() { + getStaticParam(&mBoundaryDistance_s, "BoundaryDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHomePosDistanceSelector.h b/src/Game/AI/AI/aiHomePosDistanceSelector.h new file mode 100644 index 00000000..34bfb418 --- /dev/null +++ b/src/Game/AI/AI/aiHomePosDistanceSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HomePosDistanceSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HomePosDistanceSelector, ksys::act::ai::Ai) +public: + explicit HomePosDistanceSelector(const InitArg& arg); + ~HomePosDistanceSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBoundaryDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorse.cpp b/src/Game/AI/AI/aiHorse.cpp new file mode 100644 index 00000000..f9d86aa1 --- /dev/null +++ b/src/Game/AI/AI/aiHorse.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiHorse.h" + +namespace uking::ai { + +Horse::Horse(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +Horse::~Horse() = default; + +void Horse::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void Horse::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void Horse::loadParams_() { + getStaticParam(&mDistanceFall_s, "DistanceFall"); + getStaticParam(&mDistanceFallDie_s, "DistanceFallDie"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorse.h b/src/Game/AI/AI/aiHorse.h new file mode 100644 index 00000000..d23d9e48 --- /dev/null +++ b/src/Game/AI/AI/aiHorse.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Horse : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Horse, ksys::act::ai::Ai) +public: + explicit Horse(const InitArg& arg); + ~Horse() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistanceFall_s{}; + // static_param at offset 0x40 + const float* mDistanceFallDie_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.cpp b/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.cpp new file mode 100644 index 00000000..2ebcc620 --- /dev/null +++ b/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseCheckLineOfSightSelector.h" + +namespace uking::ai { + +HorseCheckLineOfSightSelector::HorseCheckLineOfSightSelector(const InitArg& arg) + : HorseCheckLineOfSightSelectorBase(arg) {} + +HorseCheckLineOfSightSelector::~HorseCheckLineOfSightSelector() = default; + +bool HorseCheckLineOfSightSelector::init_(sead::Heap* heap) { + return HorseCheckLineOfSightSelectorBase::init_(heap); +} + +void HorseCheckLineOfSightSelector::enter_(ksys::act::ai::InlineParamPack* params) { + HorseCheckLineOfSightSelectorBase::enter_(params); +} + +void HorseCheckLineOfSightSelector::leave_() { + HorseCheckLineOfSightSelectorBase::leave_(); +} + +void HorseCheckLineOfSightSelector::loadParams_() { + HorseCheckLineOfSightSelectorBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.h b/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.h new file mode 100644 index 00000000..258bb54a --- /dev/null +++ b/src/Game/AI/AI/aiHorseCheckLineOfSightSelector.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseCheckLineOfSightSelector : public HorseCheckLineOfSightSelectorBase { + SEAD_RTTI_OVERRIDE(HorseCheckLineOfSightSelector, HorseCheckLineOfSightSelectorBase) +public: + explicit HorseCheckLineOfSightSelector(const InitArg& arg); + ~HorseCheckLineOfSightSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.cpp b/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.cpp new file mode 100644 index 00000000..9fc31deb --- /dev/null +++ b/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h" + +namespace uking::ai { + +HorseCheckLineOfSightSelectorBase::HorseCheckLineOfSightSelectorBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +HorseCheckLineOfSightSelectorBase::~HorseCheckLineOfSightSelectorBase() = default; + +bool HorseCheckLineOfSightSelectorBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseCheckLineOfSightSelectorBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseCheckLineOfSightSelectorBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseCheckLineOfSightSelectorBase::loadParams_() { + getStaticParam(&mDirectionNum_s, "DirectionNum"); + getStaticParam(&mDirectionAngle_s, "DirectionAngle"); + getStaticParam(&mDistance_s, "Distance"); + getStaticParam(&mRadiusScale_s, "RadiusScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h b/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h new file mode 100644 index 00000000..ccde851b --- /dev/null +++ b/src/Game/AI/AI/aiHorseCheckLineOfSightSelectorBase.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseCheckLineOfSightSelectorBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseCheckLineOfSightSelectorBase, ksys::act::ai::Ai) +public: + explicit HorseCheckLineOfSightSelectorBase(const InitArg& arg); + ~HorseCheckLineOfSightSelectorBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDirectionNum_s{}; + // static_param at offset 0x40 + const float* mDirectionAngle_s{}; + // static_param at offset 0x48 + const float* mDistance_s{}; + // static_param at offset 0x50 + const float* mRadiusScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseDamageTypeSelect.cpp b/src/Game/AI/AI/aiHorseDamageTypeSelect.cpp new file mode 100644 index 00000000..184ae720 --- /dev/null +++ b/src/Game/AI/AI/aiHorseDamageTypeSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiHorseDamageTypeSelect.h" + +namespace uking::ai { + +HorseDamageTypeSelect::HorseDamageTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseDamageTypeSelect::~HorseDamageTypeSelect() = default; + +bool HorseDamageTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseDamageTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseDamageTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseDamageTypeSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseDamageTypeSelect.h b/src/Game/AI/AI/aiHorseDamageTypeSelect.h new file mode 100644 index 00000000..54fc27d5 --- /dev/null +++ b/src/Game/AI/AI/aiHorseDamageTypeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseDamageTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseDamageTypeSelect, ksys::act::ai::Ai) +public: + explicit HorseDamageTypeSelect(const InitArg& arg); + ~HorseDamageTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseEscapeRouteRailAI.cpp b/src/Game/AI/AI/aiHorseEscapeRouteRailAI.cpp new file mode 100644 index 00000000..9ffcc6d1 --- /dev/null +++ b/src/Game/AI/AI/aiHorseEscapeRouteRailAI.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiHorseEscapeRouteRailAI.h" + +namespace uking::ai { + +HorseEscapeRouteRailAI::HorseEscapeRouteRailAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseEscapeRouteRailAI::~HorseEscapeRouteRailAI() = default; + +bool HorseEscapeRouteRailAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseEscapeRouteRailAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseEscapeRouteRailAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseEscapeRouteRailAI::loadParams_() { + getStaticParam(&mCount_s, "Count"); + getStaticParam(&mUpdatePosDistance_s, "UpdatePosDistance"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseEscapeRouteRailAI.h b/src/Game/AI/AI/aiHorseEscapeRouteRailAI.h new file mode 100644 index 00000000..196c14a8 --- /dev/null +++ b/src/Game/AI/AI/aiHorseEscapeRouteRailAI.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseEscapeRouteRailAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseEscapeRouteRailAI, ksys::act::ai::Ai) +public: + explicit HorseEscapeRouteRailAI(const InitArg& arg); + ~HorseEscapeRouteRailAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCount_s{}; + // static_param at offset 0x40 + const float* mUpdatePosDistance_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseFollow.cpp b/src/Game/AI/AI/aiHorseFollow.cpp new file mode 100644 index 00000000..bef131d7 --- /dev/null +++ b/src/Game/AI/AI/aiHorseFollow.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiHorseFollow.h" + +namespace uking::ai { + +HorseFollow::HorseFollow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseFollow::~HorseFollow() = default; + +bool HorseFollow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseFollow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseFollow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseFollow::loadParams_() { + getStaticParam(&mDistanceSuccessEnd_s, "DistanceSuccessEnd"); + getStaticParam(&mDistanceMovingToward_s, "DistanceMovingToward"); + getStaticParam(&mDistanceRequestingPath_s, "DistanceRequestingPath"); + getStaticParam(&mDistanceGivingUp_s, "DistanceGivingUp"); + getStaticParam(&mDistanceThresholdCry_s, "DistanceThresholdCry"); + getStaticParam(&mDistanceCheckAvoidance_s, "DistanceCheckAvoidance"); + getStaticParam(&mTargetVelocitySuccessEnd_s, "TargetVelocitySuccessEnd"); + getStaticParam(&mUpdateTargetPosFrames_s, "UpdateTargetPosFrames"); + getStaticParam(&mUpdateTargetPosFramesNear_s, "UpdateTargetPosFramesNear"); + getStaticParam(&mSuccessEndDelays_s, "SuccessEndDelays"); + getStaticParam(&mSideDistance_s, "SideDistance"); + getStaticParam(&mTargetVelocityDistanceSec_s, "TargetVelocityDistanceSec"); + getStaticParam(&mIsAvoidNavMeshActor_s, "IsAvoidNavMeshActor"); + getStaticParam(&mIsTargetPosEqualToLeaderPos_s, "IsTargetPosEqualToLeaderPos"); + getStaticParam(&mCanIgnorePlayer_s, "CanIgnorePlayer"); + getStaticParam(&mSelfPositionOffsetLocal_s, "SelfPositionOffsetLocal"); + getDynamicParam(&mDistanceKept_d, "DistanceKept"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseFollow.h b/src/Game/AI/AI/aiHorseFollow.h new file mode 100644 index 00000000..443b8554 --- /dev/null +++ b/src/Game/AI/AI/aiHorseFollow.h @@ -0,0 +1,57 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseFollow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseFollow, ksys::act::ai::Ai) +public: + explicit HorseFollow(const InitArg& arg); + ~HorseFollow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistanceSuccessEnd_s{}; + // static_param at offset 0x40 + const float* mDistanceMovingToward_s{}; + // static_param at offset 0x48 + const float* mDistanceRequestingPath_s{}; + // static_param at offset 0x50 + const float* mDistanceGivingUp_s{}; + // static_param at offset 0x58 + const float* mDistanceThresholdCry_s{}; + // static_param at offset 0x60 + const float* mDistanceCheckAvoidance_s{}; + // static_param at offset 0x68 + const float* mTargetVelocitySuccessEnd_s{}; + // static_param at offset 0x70 + const float* mUpdateTargetPosFrames_s{}; + // static_param at offset 0x78 + const float* mUpdateTargetPosFramesNear_s{}; + // static_param at offset 0x80 + const float* mSuccessEndDelays_s{}; + // static_param at offset 0x88 + const float* mSideDistance_s{}; + // static_param at offset 0x90 + const float* mTargetVelocityDistanceSec_s{}; + // static_param at offset 0x98 + const bool* mIsAvoidNavMeshActor_s{}; + // static_param at offset 0xa0 + const bool* mIsTargetPosEqualToLeaderPos_s{}; + // static_param at offset 0xa8 + const bool* mCanIgnorePlayer_s{}; + // static_param at offset 0xb0 + const sead::Vector3f* mSelfPositionOffsetLocal_s{}; + // dynamic_param at offset 0xb8 + float* mDistanceKept_d{}; + // dynamic_param at offset 0xc0 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseGoToEatAI.cpp b/src/Game/AI/AI/aiHorseGoToEatAI.cpp new file mode 100644 index 00000000..2cf8a47f --- /dev/null +++ b/src/Game/AI/AI/aiHorseGoToEatAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseGoToEatAI.h" + +namespace uking::ai { + +HorseGoToEatAI::HorseGoToEatAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseGoToEatAI::~HorseGoToEatAI() = default; + +bool HorseGoToEatAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseGoToEatAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseGoToEatAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseGoToEatAI::loadParams_() { + getStaticParam(&mTimeoutFrame_s, "TimeoutFrame"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseGoToEatAI.h b/src/Game/AI/AI/aiHorseGoToEatAI.h new file mode 100644 index 00000000..3669b1e5 --- /dev/null +++ b/src/Game/AI/AI/aiHorseGoToEatAI.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseGoToEatAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseGoToEatAI, ksys::act::ai::Ai) +public: + explicit HorseGoToEatAI(const InitArg& arg); + ~HorseGoToEatAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTimeoutFrame_s{}; + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseLoopTarget.cpp b/src/Game/AI/AI/aiHorseLoopTarget.cpp new file mode 100644 index 00000000..b608dc5e --- /dev/null +++ b/src/Game/AI/AI/aiHorseLoopTarget.cpp @@ -0,0 +1,18 @@ +#include "Game/AI/AI/aiHorseLoopTarget.h" + +namespace uking::ai { + +HorseLoopTarget::HorseLoopTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseLoopTarget::~HorseLoopTarget() = default; + +void HorseLoopTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseLoopTarget::loadParams_() { + getStaticParam(&mTargetName_s, "TargetName"); + getStaticParam(&mIsFlip_s, "IsFlip"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseLoopTarget.h b/src/Game/AI/AI/aiHorseLoopTarget.h new file mode 100644 index 00000000..ff90dbe5 --- /dev/null +++ b/src/Game/AI/AI/aiHorseLoopTarget.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseLoopTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseLoopTarget, ksys::act::ai::Ai) +public: + explicit HorseLoopTarget(const InitArg& arg); + ~HorseLoopTarget() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mTargetName_s{}; + // static_param at offset 0x48 + const bool* mIsFlip_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.cpp b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.cpp new file mode 100644 index 00000000..b8ac0107 --- /dev/null +++ b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiHorseLoopTargetAndWaitAI.h" + +namespace uking::ai { + +HorseLoopTargetAndWaitAI::HorseLoopTargetAndWaitAI(const InitArg& arg) : HorseLoopTarget(arg) {} + +HorseLoopTargetAndWaitAI::~HorseLoopTargetAndWaitAI() = default; + +bool HorseLoopTargetAndWaitAI::init_(sead::Heap* heap) { + return HorseLoopTarget::init_(heap); +} + +void HorseLoopTargetAndWaitAI::enter_(ksys::act::ai::InlineParamPack* params) { + HorseLoopTarget::enter_(params); +} + +void HorseLoopTargetAndWaitAI::leave_() { + HorseLoopTarget::leave_(); +} + +void HorseLoopTargetAndWaitAI::loadParams_() { + HorseLoopTarget::loadParams_(); + getStaticParam(&mChangeWaitRate_s, "ChangeWaitRate"); + getStaticParam(&mMaxWaitTime_s, "MaxWaitTime"); + getStaticParam(&mMinWaitTime_s, "MinWaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h new file mode 100644 index 00000000..bb2cd1e2 --- /dev/null +++ b/src/Game/AI/AI/aiHorseLoopTargetAndWaitAI.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiHorseLoopTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseLoopTargetAndWaitAI : public HorseLoopTarget { + SEAD_RTTI_OVERRIDE(HorseLoopTargetAndWaitAI, HorseLoopTarget) +public: + explicit HorseLoopTargetAndWaitAI(const InitArg& arg); + ~HorseLoopTargetAndWaitAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x170 + const float* mChangeWaitRate_s{}; + // static_param at offset 0x178 + const float* mMaxWaitTime_s{}; + // static_param at offset 0x180 + const float* mMinWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseMoveToPlayer.cpp b/src/Game/AI/AI/aiHorseMoveToPlayer.cpp new file mode 100644 index 00000000..feba3e05 --- /dev/null +++ b/src/Game/AI/AI/aiHorseMoveToPlayer.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiHorseMoveToPlayer.h" + +namespace uking::ai { + +HorseMoveToPlayer::HorseMoveToPlayer(const InitArg& arg) : HorseFollow(arg) {} + +HorseMoveToPlayer::~HorseMoveToPlayer() = default; + +bool HorseMoveToPlayer::init_(sead::Heap* heap) { + return HorseFollow::init_(heap); +} + +void HorseMoveToPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + HorseFollow::enter_(params); +} + +void HorseMoveToPlayer::leave_() { + HorseFollow::leave_(); +} + +void HorseMoveToPlayer::loadParams_() { + HorseFollow::loadParams_(); + getStaticParam(&mDistanceSuccessEndIfInterrupted_s, "DistanceSuccessEndIfInterrupted"); + getStaticParam(&mDistanceResetGearInput_s, "DistanceResetGearInput"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseMoveToPlayer.h b/src/Game/AI/AI/aiHorseMoveToPlayer.h new file mode 100644 index 00000000..a8e9c38a --- /dev/null +++ b/src/Game/AI/AI/aiHorseMoveToPlayer.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiHorseFollow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseMoveToPlayer : public HorseFollow { + SEAD_RTTI_OVERRIDE(HorseMoveToPlayer, HorseFollow) +public: + explicit HorseMoveToPlayer(const InitArg& arg); + ~HorseMoveToPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const float* mDistanceSuccessEndIfInterrupted_s{}; + // static_param at offset 0xe8 + const float* mDistanceResetGearInput_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseNatureSelectAI.cpp b/src/Game/AI/AI/aiHorseNatureSelectAI.cpp new file mode 100644 index 00000000..98c6b169 --- /dev/null +++ b/src/Game/AI/AI/aiHorseNatureSelectAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiHorseNatureSelectAI.h" + +namespace uking::ai { + +HorseNatureSelectAI::HorseNatureSelectAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseNatureSelectAI::~HorseNatureSelectAI() = default; + +bool HorseNatureSelectAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseNatureSelectAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseNatureSelectAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseNatureSelectAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseNatureSelectAI.h b/src/Game/AI/AI/aiHorseNatureSelectAI.h new file mode 100644 index 00000000..d93c4690 --- /dev/null +++ b/src/Game/AI/AI/aiHorseNatureSelectAI.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseNatureSelectAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseNatureSelectAI, ksys::act::ai::Ai) +public: + explicit HorseNatureSelectAI(const InitArg& arg); + ~HorseNatureSelectAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseNotRidden.cpp b/src/Game/AI/AI/aiHorseNotRidden.cpp new file mode 100644 index 00000000..812d5b8b --- /dev/null +++ b/src/Game/AI/AI/aiHorseNotRidden.cpp @@ -0,0 +1,41 @@ +#include "Game/AI/AI/aiHorseNotRidden.h" + +namespace uking::ai { + +HorseNotRidden::HorseNotRidden(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseNotRidden::~HorseNotRidden() = default; + +bool HorseNotRidden::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseNotRidden::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseNotRidden::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseNotRidden::loadParams_() { + getStaticParam(&mEscapeCountThreshold_s, "EscapeCountThreshold"); + getStaticParam(&mNearHorseAssociationDistance_s, "NearHorseAssociationDistance"); + getStaticParam(&mEscapeDelayFramesMin_s, "EscapeDelayFramesMin"); + getStaticParam(&mEscapeDelayFramesMax_s, "EscapeDelayFramesMax"); + getStaticParam(&mCallDelayFrames_s, "CallDelayFrames"); + getStaticParam(&mAttackFrontDistance_s, "AttackFrontDistance"); + getStaticParam(&mAttackFrontAngleCos_s, "AttackFrontAngleCos"); + getStaticParam(&mAttackBackDistance_s, "AttackBackDistance"); + getStaticParam(&mAttackBackAngleCos_s, "AttackBackAngleCos"); + getStaticParam(&mAttackDefinitelyDistance_s, "AttackDefinitelyDistance"); + getStaticParam(&mAttackIntervalFrames_s, "AttackIntervalFrames"); + getStaticParam(&mMoveAttackCLOSDistanceByRadius_s, "MoveAttackCLOSDistanceByRadius"); + getStaticParam(&mCarriedItemCosThresholdForEat_s, "CarriedItemCosThresholdForEat"); + getStaticParam(&mStaggerVelocityThreshold_s, "StaggerVelocityThreshold"); + getStaticParam(&mCarriedItemPosRTYOffset_s, "CarriedItemPosRTYOffset"); + getStaticParam(&mCarriedItemPosRTYWidth_s, "CarriedItemPosRTYWidth"); + getDynamicParam(&mChildSelectAtFirst_d, "ChildSelectAtFirst"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseNotRidden.h b/src/Game/AI/AI/aiHorseNotRidden.h new file mode 100644 index 00000000..0933d05d --- /dev/null +++ b/src/Game/AI/AI/aiHorseNotRidden.h @@ -0,0 +1,55 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseNotRidden : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseNotRidden, ksys::act::ai::Ai) +public: + explicit HorseNotRidden(const InitArg& arg); + ~HorseNotRidden() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mEscapeCountThreshold_s{}; + // static_param at offset 0x40 + const float* mNearHorseAssociationDistance_s{}; + // static_param at offset 0x48 + const float* mEscapeDelayFramesMin_s{}; + // static_param at offset 0x50 + const float* mEscapeDelayFramesMax_s{}; + // static_param at offset 0x58 + const float* mCallDelayFrames_s{}; + // static_param at offset 0x60 + const float* mAttackFrontDistance_s{}; + // static_param at offset 0x68 + const float* mAttackFrontAngleCos_s{}; + // static_param at offset 0x70 + const float* mAttackBackDistance_s{}; + // static_param at offset 0x78 + const float* mAttackBackAngleCos_s{}; + // static_param at offset 0x80 + const float* mAttackDefinitelyDistance_s{}; + // static_param at offset 0x88 + const float* mAttackIntervalFrames_s{}; + // static_param at offset 0x90 + const float* mMoveAttackCLOSDistanceByRadius_s{}; + // static_param at offset 0x98 + const float* mCarriedItemCosThresholdForEat_s{}; + // static_param at offset 0xa0 + const float* mStaggerVelocityThreshold_s{}; + // static_param at offset 0xa8 + const sead::Vector3f* mCarriedItemPosRTYOffset_s{}; + // static_param at offset 0xb0 + const sead::Vector3f* mCarriedItemPosRTYWidth_s{}; + // dynamic_param at offset 0xb8 + int* mChildSelectAtFirst_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.cpp b/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.cpp new file mode 100644 index 00000000..2d5b2529 --- /dev/null +++ b/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiHorsePrevRiddenStatusSelector.h" + +namespace uking::ai { + +HorsePrevRiddenStatusSelector::HorsePrevRiddenStatusSelector(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +HorsePrevRiddenStatusSelector::~HorsePrevRiddenStatusSelector() = default; + +bool HorsePrevRiddenStatusSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorsePrevRiddenStatusSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorsePrevRiddenStatusSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorsePrevRiddenStatusSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.h b/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.h new file mode 100644 index 00000000..e63e695f --- /dev/null +++ b/src/Game/AI/AI/aiHorsePrevRiddenStatusSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorsePrevRiddenStatusSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorsePrevRiddenStatusSelector, ksys::act::ai::Ai) +public: + explicit HorsePrevRiddenStatusSelector(const InitArg& arg); + ~HorsePrevRiddenStatusSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseReins.cpp b/src/Game/AI/AI/aiHorseReins.cpp new file mode 100644 index 00000000..ab61ccc9 --- /dev/null +++ b/src/Game/AI/AI/aiHorseReins.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiHorseReins.h" + +namespace uking::ai { + +HorseReins::HorseReins(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void HorseReins::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseReins::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseReins.h b/src/Game/AI/AI/aiHorseReins.h new file mode 100644 index 00000000..2817ed8b --- /dev/null +++ b/src/Game/AI/AI/aiHorseReins.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseReins : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseReins, ksys::act::ai::Ai) +public: + explicit HorseReins(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenAI.cpp b/src/Game/AI/AI/aiHorseRiddenAI.cpp new file mode 100644 index 00000000..e29f40b9 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenAI.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiHorseRiddenAI.h" + +namespace uking::ai { + +HorseRiddenAI::HorseRiddenAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool HorseRiddenAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRiddenAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRiddenAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRiddenAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenAI.h b/src/Game/AI/AI/aiHorseRiddenAI.h new file mode 100644 index 00000000..3131fc80 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenAI.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRiddenAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRiddenAI, ksys::act::ai::Ai) +public: + explicit HorseRiddenAI(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByEnemyAI.cpp b/src/Game/AI/AI/aiHorseRiddenByEnemyAI.cpp new file mode 100644 index 00000000..8cdf9319 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByEnemyAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRiddenByEnemyAI.h" + +namespace uking::ai { + +HorseRiddenByEnemyAI::HorseRiddenByEnemyAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRiddenByEnemyAI::~HorseRiddenByEnemyAI() = default; + +bool HorseRiddenByEnemyAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRiddenByEnemyAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRiddenByEnemyAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRiddenByEnemyAI::loadParams_() { + getStaticParam(&mAngryASPeriods_s, "AngryASPeriods"); + getStaticParam(&mFramesRetryNormalActionAtFailed_s, "FramesRetryNormalActionAtFailed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByEnemyAI.h b/src/Game/AI/AI/aiHorseRiddenByEnemyAI.h new file mode 100644 index 00000000..ab17ec66 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByEnemyAI.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRiddenByEnemyAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRiddenByEnemyAI, ksys::act::ai::Ai) +public: + explicit HorseRiddenByEnemyAI(const InitArg& arg); + ~HorseRiddenByEnemyAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAngryASPeriods_s{}; + // static_param at offset 0x40 + const float* mFramesRetryNormalActionAtFailed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByNPC.cpp b/src/Game/AI/AI/aiHorseRiddenByNPC.cpp new file mode 100644 index 00000000..b14461fc --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByNPC.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRiddenByNPC.h" + +namespace uking::ai { + +HorseRiddenByNPC::HorseRiddenByNPC(const InitArg& arg) : HorseRiddenByNPCBase(arg) {} + +HorseRiddenByNPC::~HorseRiddenByNPC() = default; + +bool HorseRiddenByNPC::init_(sead::Heap* heap) { + return HorseRiddenByNPCBase::init_(heap); +} + +void HorseRiddenByNPC::enter_(ksys::act::ai::InlineParamPack* params) { + HorseRiddenByNPCBase::enter_(params); +} + +void HorseRiddenByNPC::leave_() { + HorseRiddenByNPCBase::leave_(); +} + +void HorseRiddenByNPC::loadParams_() { + HorseRiddenByNPCBase::loadParams_(); + getStaticParam(&mNavMeshCharacterScaleAtPrecise_s, "NavMeshCharacterScaleAtPrecise"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByNPC.h b/src/Game/AI/AI/aiHorseRiddenByNPC.h new file mode 100644 index 00000000..bff5c8f0 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByNPC.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiHorseRiddenByNPCBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRiddenByNPC : public HorseRiddenByNPCBase { + SEAD_RTTI_OVERRIDE(HorseRiddenByNPC, HorseRiddenByNPCBase) +public: + explicit HorseRiddenByNPC(const InitArg& arg); + ~HorseRiddenByNPC() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x48 + const float* mNavMeshCharacterScaleAtPrecise_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByNPCBase.cpp b/src/Game/AI/AI/aiHorseRiddenByNPCBase.cpp new file mode 100644 index 00000000..f0178559 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByNPCBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiHorseRiddenByNPCBase.h" + +namespace uking::ai { + +HorseRiddenByNPCBase::HorseRiddenByNPCBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool HorseRiddenByNPCBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRiddenByNPCBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRiddenByNPCBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRiddenByNPCBase::loadParams_() { + getStaticParam(&mIsEscapeFromSameActorType_s, "IsEscapeFromSameActorType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRiddenByNPCBase.h b/src/Game/AI/AI/aiHorseRiddenByNPCBase.h new file mode 100644 index 00000000..0d692b13 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRiddenByNPCBase.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRiddenByNPCBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRiddenByNPCBase, ksys::act::ai::Ai) +public: + explicit HorseRiddenByNPCBase(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsEscapeFromSameActorType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChargeAttack.cpp b/src/Game/AI/AI/aiHorseRideChargeAttack.cpp new file mode 100644 index 00000000..a9adc49b --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChargeAttack.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiHorseRideChargeAttack.h" + +namespace uking::ai { + +HorseRideChargeAttack::HorseRideChargeAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRideChargeAttack::~HorseRideChargeAttack() = default; + +bool HorseRideChargeAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideChargeAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideChargeAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideChargeAttack::loadParams_() { + getStaticParam(&mUpperBodyASSlot_s, "UpperBodyASSlot"); + getStaticParam(&mLowerBodyASSlot_s, "LowerBodyASSlot"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAttackableAngle_s, "AttackableAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChargeAttack.h b/src/Game/AI/AI/aiHorseRideChargeAttack.h new file mode 100644 index 00000000..85f2473a --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChargeAttack.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideChargeAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideChargeAttack, ksys::act::ai::Ai) +public: + explicit HorseRideChargeAttack(const InitArg& arg); + ~HorseRideChargeAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpperBodyASSlot_s{}; + // static_param at offset 0x40 + const int* mLowerBodyASSlot_s{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const float* mAttackableAngle_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.cpp b/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.cpp new file mode 100644 index 00000000..77e45ef9 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideChaseBattleAttackMove.h" + +namespace uking::ai { + +HorseRideChaseBattleAttackMove::HorseRideChaseBattleAttackMove(const InitArg& arg) + : HorseRideChaseBattleMoveBase(arg) {} + +HorseRideChaseBattleAttackMove::~HorseRideChaseBattleAttackMove() = default; + +bool HorseRideChaseBattleAttackMove::init_(sead::Heap* heap) { + return HorseRideChaseBattleMoveBase::init_(heap); +} + +void HorseRideChaseBattleAttackMove::enter_(ksys::act::ai::InlineParamPack* params) { + HorseRideChaseBattleMoveBase::enter_(params); +} + +void HorseRideChaseBattleAttackMove::leave_() { + HorseRideChaseBattleMoveBase::leave_(); +} + +void HorseRideChaseBattleAttackMove::loadParams_() { + HorseRideChaseBattleMoveBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.h b/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.h new file mode 100644 index 00000000..ae62694d --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleAttackMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHorseRideChaseBattleMoveBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideChaseBattleAttackMove : public HorseRideChaseBattleMoveBase { + SEAD_RTTI_OVERRIDE(HorseRideChaseBattleAttackMove, HorseRideChaseBattleMoveBase) +public: + explicit HorseRideChaseBattleAttackMove(const InitArg& arg); + ~HorseRideChaseBattleAttackMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleMove.cpp b/src/Game/AI/AI/aiHorseRideChaseBattleMove.cpp new file mode 100644 index 00000000..a2af9456 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideChaseBattleMove.h" + +namespace uking::ai { + +HorseRideChaseBattleMove::HorseRideChaseBattleMove(const InitArg& arg) + : HorseRideChaseBattleMoveBase(arg) {} + +HorseRideChaseBattleMove::~HorseRideChaseBattleMove() = default; + +bool HorseRideChaseBattleMove::init_(sead::Heap* heap) { + return HorseRideChaseBattleMoveBase::init_(heap); +} + +void HorseRideChaseBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + HorseRideChaseBattleMoveBase::enter_(params); +} + +void HorseRideChaseBattleMove::leave_() { + HorseRideChaseBattleMoveBase::leave_(); +} + +void HorseRideChaseBattleMove::loadParams_() { + HorseRideChaseBattleMoveBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleMove.h b/src/Game/AI/AI/aiHorseRideChaseBattleMove.h new file mode 100644 index 00000000..99d98196 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHorseRideChaseBattleMoveBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideChaseBattleMove : public HorseRideChaseBattleMoveBase { + SEAD_RTTI_OVERRIDE(HorseRideChaseBattleMove, HorseRideChaseBattleMoveBase) +public: + explicit HorseRideChaseBattleMove(const InitArg& arg); + ~HorseRideChaseBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.cpp b/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.cpp new file mode 100644 index 00000000..982e5218 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiHorseRideChaseBattleMoveBase.h" + +namespace uking::ai { + +HorseRideChaseBattleMoveBase::HorseRideChaseBattleMoveBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +HorseRideChaseBattleMoveBase::~HorseRideChaseBattleMoveBase() = default; + +bool HorseRideChaseBattleMoveBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideChaseBattleMoveBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideChaseBattleMoveBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideChaseBattleMoveBase::loadParams_() { + getStaticParam(&mSlowDownDist_s, "SlowDownDist"); + getStaticParam(&mSpeedUpDist_s, "SpeedUpDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mOutDist_s, "OutDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.h b/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.h new file mode 100644 index 00000000..fd361a7c --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideChaseBattleMoveBase.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideChaseBattleMoveBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideChaseBattleMoveBase, ksys::act::ai::Ai) +public: + explicit HorseRideChaseBattleMoveBase(const InitArg& arg); + ~HorseRideChaseBattleMoveBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSlowDownDist_s{}; + // static_param at offset 0x40 + const float* mSpeedUpDist_s{}; + // static_param at offset 0x48 + const float* mBaseDist_s{}; + // static_param at offset 0x50 + const float* mOutDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideDamagedSelector.cpp b/src/Game/AI/AI/aiHorseRideDamagedSelector.cpp new file mode 100644 index 00000000..7bef0739 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideDamagedSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiHorseRideDamagedSelector.h" + +namespace uking::ai { + +HorseRideDamagedSelector::HorseRideDamagedSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRideDamagedSelector::~HorseRideDamagedSelector() = default; + +bool HorseRideDamagedSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideDamagedSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideDamagedSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideDamagedSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideDamagedSelector.h b/src/Game/AI/AI/aiHorseRideDamagedSelector.h new file mode 100644 index 00000000..4fc8c5a4 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideDamagedSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideDamagedSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideDamagedSelector, ksys::act::ai::Ai) +public: + explicit HorseRideDamagedSelector(const InitArg& arg); + ~HorseRideDamagedSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyBattle.cpp b/src/Game/AI/AI/aiHorseRideEnemyBattle.cpp new file mode 100644 index 00000000..235e3ded --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiHorseRideEnemyBattle.h" + +namespace uking::ai { + +HorseRideEnemyBattle::HorseRideEnemyBattle(const InitArg& arg) : EnemyBattle(arg) {} + +HorseRideEnemyBattle::~HorseRideEnemyBattle() = default; + +bool HorseRideEnemyBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void HorseRideEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void HorseRideEnemyBattle::leave_() { + EnemyBattle::leave_(); +} + +void HorseRideEnemyBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAttackRadius_s, "AttackRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyBattle.h b/src/Game/AI/AI/aiHorseRideEnemyBattle.h new file mode 100644 index 00000000..1a034cb9 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyBattle.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideEnemyBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(HorseRideEnemyBattle, EnemyBattle) +public: + explicit HorseRideEnemyBattle(const InitArg& arg); + ~HorseRideEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mWeaponIdx_s{}; + // static_param at offset 0x98 + const float* mAttackRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.cpp b/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.cpp new file mode 100644 index 00000000..bbec8afa --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiHorseRideEnemyFindPlayer.h" + +namespace uking::ai { + +HorseRideEnemyFindPlayer::HorseRideEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +HorseRideEnemyFindPlayer::~HorseRideEnemyFindPlayer() = default; + +bool HorseRideEnemyFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void HorseRideEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void HorseRideEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void HorseRideEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.h b/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.h new file mode 100644 index 00000000..17b03d1b --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(HorseRideEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit HorseRideEnemyFindPlayer(const InitArg& arg); + ~HorseRideEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyNormal.cpp b/src/Game/AI/AI/aiHorseRideEnemyNormal.cpp new file mode 100644 index 00000000..dfd9643c --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideEnemyNormal.h" + +namespace uking::ai { + +HorseRideEnemyNormal::HorseRideEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +HorseRideEnemyNormal::~HorseRideEnemyNormal() = default; + +bool HorseRideEnemyNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void HorseRideEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void HorseRideEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void HorseRideEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mSightAwarenessScale_s, "SightAwarenessScale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideEnemyNormal.h b/src/Game/AI/AI/aiHorseRideEnemyNormal.h new file mode 100644 index 00000000..641a8890 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideEnemyNormal.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(HorseRideEnemyNormal, EnemyNormal) +public: + explicit HorseRideEnemyNormal(const InitArg& arg); + ~HorseRideEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mSightAwarenessScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideMoveTo.cpp b/src/Game/AI/AI/aiHorseRideMoveTo.cpp new file mode 100644 index 00000000..d10b19ea --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideMoveTo.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiHorseRideMoveTo.h" + +namespace uking::ai { + +HorseRideMoveTo::HorseRideMoveTo(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRideMoveTo::~HorseRideMoveTo() = default; + +bool HorseRideMoveTo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideMoveTo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideMoveTo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideMoveTo::loadParams_() { + getStaticParam(&mUpperBodyASSlot_s, "UpperBodyASSlot"); + getStaticParam(&mLowerBodyASSlot_s, "LowerBodyASSlot"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mFinRadius_s, "FinRadius"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideMoveTo.h b/src/Game/AI/AI/aiHorseRideMoveTo.h new file mode 100644 index 00000000..4596f7e3 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideMoveTo.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideMoveTo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideMoveTo, ksys::act::ai::Ai) +public: + explicit HorseRideMoveTo(const InitArg& arg); + ~HorseRideMoveTo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpperBodyASSlot_s{}; + // static_param at offset 0x40 + const int* mLowerBodyASSlot_s{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const float* mFinRadius_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideRangeKeepMove.cpp b/src/Game/AI/AI/aiHorseRideRangeKeepMove.cpp new file mode 100644 index 00000000..151f5134 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideRangeKeepMove.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideRangeKeepMove.h" + +namespace uking::ai { + +HorseRideRangeKeepMove::HorseRideRangeKeepMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRideRangeKeepMove::~HorseRideRangeKeepMove() = default; + +bool HorseRideRangeKeepMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideRangeKeepMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideRangeKeepMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideRangeKeepMove::loadParams_() { + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideRangeKeepMove.h b/src/Game/AI/AI/aiHorseRideRangeKeepMove.h new file mode 100644 index 00000000..851bfbd3 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideRangeKeepMove.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideRangeKeepMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideRangeKeepMove, ksys::act::ai::Ai) +public: + explicit HorseRideRangeKeepMove(const InitArg& arg); + ~HorseRideRangeKeepMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mOutDist_s{}; + // static_param at offset 0x40 + const float* mBaseDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideShooterFindPlayer.cpp b/src/Game/AI/AI/aiHorseRideShooterFindPlayer.cpp new file mode 100644 index 00000000..0bc90064 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideShooterFindPlayer.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideShooterFindPlayer.h" + +namespace uking::ai { + +HorseRideShooterFindPlayer::HorseRideShooterFindPlayer(const InitArg& arg) + : SimpleShootingEnemyFindPlayer(arg) {} + +HorseRideShooterFindPlayer::~HorseRideShooterFindPlayer() = default; + +bool HorseRideShooterFindPlayer::init_(sead::Heap* heap) { + return SimpleShootingEnemyFindPlayer::init_(heap); +} + +void HorseRideShooterFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleShootingEnemyFindPlayer::enter_(params); +} + +void HorseRideShooterFindPlayer::leave_() { + SimpleShootingEnemyFindPlayer::leave_(); +} + +void HorseRideShooterFindPlayer::loadParams_() { + SimpleShootingEnemyFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideShooterFindPlayer.h b/src/Game/AI/AI/aiHorseRideShooterFindPlayer.h new file mode 100644 index 00000000..5c55a5d1 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideShooterFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideShooterFindPlayer : public SimpleShootingEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(HorseRideShooterFindPlayer, SimpleShootingEnemyFindPlayer) +public: + explicit HorseRideShooterFindPlayer(const InitArg& arg); + ~HorseRideShooterFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.cpp b/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.cpp new file mode 100644 index 00000000..1ecd8a9d --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiHorseRideShootingEnemyBattle.h" + +namespace uking::ai { + +HorseRideShootingEnemyBattle::HorseRideShootingEnemyBattle(const InitArg& arg) + : ShootingEnemyBattle(arg) {} + +HorseRideShootingEnemyBattle::~HorseRideShootingEnemyBattle() = default; + +bool HorseRideShootingEnemyBattle::init_(sead::Heap* heap) { + return ShootingEnemyBattle::init_(heap); +} + +void HorseRideShootingEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ShootingEnemyBattle::enter_(params); +} + +void HorseRideShootingEnemyBattle::leave_() { + ShootingEnemyBattle::leave_(); +} + +void HorseRideShootingEnemyBattle::loadParams_() { + ShootingEnemyBattle::loadParams_(); + getStaticParam(&mTrackTime_s, "TrackTime"); + getStaticParam(&mTrackTimeRand_s, "TrackTimeRand"); + getStaticParam(&mSlowTime_s, "SlowTime"); + getStaticParam(&mSlowTimeRand_s, "SlowTimeRand"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.h b/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.h new file mode 100644 index 00000000..8bfed6a2 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideShootingEnemyBattle.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiShootingEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideShootingEnemyBattle : public ShootingEnemyBattle { + SEAD_RTTI_OVERRIDE(HorseRideShootingEnemyBattle, ShootingEnemyBattle) +public: + explicit HorseRideShootingEnemyBattle(const InitArg& arg); + ~HorseRideShootingEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const int* mTrackTime_s{}; + // static_param at offset 0xd0 + const int* mTrackTimeRand_s{}; + // static_param at offset 0xd8 + const int* mSlowTime_s{}; + // static_param at offset 0xe0 + const int* mSlowTimeRand_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideTurn.cpp b/src/Game/AI/AI/aiHorseRideTurn.cpp new file mode 100644 index 00000000..31788522 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideTurn.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiHorseRideTurn.h" + +namespace uking::ai { + +HorseRideTurn::HorseRideTurn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseRideTurn::~HorseRideTurn() = default; + +bool HorseRideTurn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void HorseRideTurn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseRideTurn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseRideTurn::loadParams_() { + getStaticParam(&mFinAngle_s, "FinAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseRideTurn.h b/src/Game/AI/AI/aiHorseRideTurn.h new file mode 100644 index 00000000..6cca06b6 --- /dev/null +++ b/src/Game/AI/AI/aiHorseRideTurn.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseRideTurn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseRideTurn, ksys::act::ai::Ai) +public: + explicit HorseRideTurn(const InitArg& arg); + ~HorseRideTurn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFinAngle_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseWanderAI.cpp b/src/Game/AI/AI/aiHorseWanderAI.cpp new file mode 100644 index 00000000..ab557e41 --- /dev/null +++ b/src/Game/AI/AI/aiHorseWanderAI.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiHorseWanderAI.h" + +namespace uking::ai { + +HorseWanderAI::HorseWanderAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +HorseWanderAI::~HorseWanderAI() = default; + +void HorseWanderAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void HorseWanderAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void HorseWanderAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiHorseWanderAI.h b/src/Game/AI/AI/aiHorseWanderAI.h new file mode 100644 index 00000000..28a6ade5 --- /dev/null +++ b/src/Game/AI/AI/aiHorseWanderAI.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class HorseWanderAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(HorseWanderAI, ksys::act::ai::Ai) +public: + explicit HorseWanderAI(const InitArg& arg); + ~HorseWanderAI() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIAIAttack.cpp b/src/Game/AI/AI/aiIAIAttack.cpp new file mode 100644 index 00000000..8c0cbc11 --- /dev/null +++ b/src/Game/AI/AI/aiIAIAttack.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiIAIAttack.h" + +namespace uking::ai { + +IAIAttack::IAIAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +IAIAttack::~IAIAttack() = default; + +bool IAIAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void IAIAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void IAIAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void IAIAttack::loadParams_() { + getStaticParam(&mOffsetLR_s, "OffsetLR"); + getStaticParam(&mCloseDistLR_s, "CloseDistLR"); + getStaticParam(&mClsoeDistFB_s, "ClsoeDistFB"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mIsAbleSkipNear_s, "IsAbleSkipNear"); + getStaticParam(&mTiredAngle_s, "TiredAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIAIAttack.h b/src/Game/AI/AI/aiIAIAttack.h new file mode 100644 index 00000000..bcd55636 --- /dev/null +++ b/src/Game/AI/AI/aiIAIAttack.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IAIAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(IAIAttack, ksys::act::ai::Ai) +public: + explicit IAIAttack(const InitArg& arg); + ~IAIAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mOffsetLR_s{}; + // static_param at offset 0x48 + const float* mCloseDistLR_s{}; + // static_param at offset 0x50 + const float* mClsoeDistFB_s{}; + // static_param at offset 0x58 + const float* mTiredAngle_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x68 + const bool* mIsAbleSkipNear_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIbutsuWaterFallRoot.cpp b/src/Game/AI/AI/aiIbutsuWaterFallRoot.cpp new file mode 100644 index 00000000..b6865997 --- /dev/null +++ b/src/Game/AI/AI/aiIbutsuWaterFallRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiIbutsuWaterFallRoot.h" + +namespace uking::ai { + +IbutsuWaterFallRoot::IbutsuWaterFallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +IbutsuWaterFallRoot::~IbutsuWaterFallRoot() = default; + +bool IbutsuWaterFallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void IbutsuWaterFallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void IbutsuWaterFallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void IbutsuWaterFallRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIbutsuWaterFallRoot.h b/src/Game/AI/AI/aiIbutsuWaterFallRoot.h new file mode 100644 index 00000000..c9c0ca33 --- /dev/null +++ b/src/Game/AI/AI/aiIbutsuWaterFallRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IbutsuWaterFallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(IbutsuWaterFallRoot, ksys::act::ai::Ai) +public: + explicit IbutsuWaterFallRoot(const InitArg& arg); + ~IbutsuWaterFallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIceEnemyFeintBattle.cpp b/src/Game/AI/AI/aiIceEnemyFeintBattle.cpp new file mode 100644 index 00000000..2c04919b --- /dev/null +++ b/src/Game/AI/AI/aiIceEnemyFeintBattle.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiIceEnemyFeintBattle.h" + +namespace uking::ai { + +IceEnemyFeintBattle::IceEnemyFeintBattle(const InitArg& arg) : EnemyFeintBattle(arg) {} + +IceEnemyFeintBattle::~IceEnemyFeintBattle() = default; + +void IceEnemyFeintBattle::loadParams_() { + EnemyFeintBattle::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIceEnemyFeintBattle.h b/src/Game/AI/AI/aiIceEnemyFeintBattle.h new file mode 100644 index 00000000..a44180f6 --- /dev/null +++ b/src/Game/AI/AI/aiIceEnemyFeintBattle.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyFeintBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IceEnemyFeintBattle : public EnemyFeintBattle { + SEAD_RTTI_OVERRIDE(IceEnemyFeintBattle, EnemyFeintBattle) +public: + explicit IceEnemyFeintBattle(const InitArg& arg); + ~IceEnemyFeintBattle() override; + + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIceMakerBlock.cpp b/src/Game/AI/AI/aiIceMakerBlock.cpp new file mode 100644 index 00000000..cb4066fd --- /dev/null +++ b/src/Game/AI/AI/aiIceMakerBlock.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiIceMakerBlock.h" + +namespace uking::ai { + +IceMakerBlock::IceMakerBlock(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +IceMakerBlock::~IceMakerBlock() = default; + +bool IceMakerBlock::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void IceMakerBlock::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void IceMakerBlock::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void IceMakerBlock::loadParams_() { + getStaticParam(&mSubRigidStartOffset_s, "SubRigidStartOffset"); + getStaticParam(&mSubRigidEndOffset_s, "SubRigidEndOffset"); + getStaticParam(&mSubRigidExOffset_s, "SubRigidExOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIceMakerBlock.h b/src/Game/AI/AI/aiIceMakerBlock.h new file mode 100644 index 00000000..2dc73bed --- /dev/null +++ b/src/Game/AI/AI/aiIceMakerBlock.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IceMakerBlock : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(IceMakerBlock, ksys::act::ai::Ai) +public: + explicit IceMakerBlock(const InitArg& arg); + ~IceMakerBlock() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x28]; + // static_param at offset 0x60 + const float* mSubRigidStartOffset_s{}; + // static_param at offset 0x68 + const float* mSubRigidEndOffset_s{}; + // static_param at offset 0x70 + const float* mSubRigidExOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInDemoSelect.cpp b/src/Game/AI/AI/aiInDemoSelect.cpp new file mode 100644 index 00000000..17b5e309 --- /dev/null +++ b/src/Game/AI/AI/aiInDemoSelect.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiInDemoSelect.h" + +namespace uking::ai { + +InDemoSelect::InDemoSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InDemoSelect::~InDemoSelect() = default; + +bool InDemoSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InDemoSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InDemoSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InDemoSelect::loadParams_() { + getStaticParam(&mDemoRetDelayMax_s, "DemoRetDelayMax"); + getStaticParam(&mOtherDemoNoRun_s, "OtherDemoNoRun"); + getStaticParam(&mForceChangeDemo_s, "ForceChangeDemo"); + getStaticParam(&mDemoFile_s, "DemoFile"); + getStaticParam(&mDemoEntryPoint_s, "DemoEntryPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInDemoSelect.h b/src/Game/AI/AI/aiInDemoSelect.h new file mode 100644 index 00000000..73470d40 --- /dev/null +++ b/src/Game/AI/AI/aiInDemoSelect.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InDemoSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InDemoSelect, ksys::act::ai::Ai) +public: + explicit InDemoSelect(const InitArg& arg); + ~InDemoSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDemoRetDelayMax_s{}; + // static_param at offset 0x40 + const bool* mOtherDemoNoRun_s{}; + // static_param at offset 0x48 + const bool* mForceChangeDemo_s{}; + // static_param at offset 0x50 + sead::SafeString mDemoFile_s{}; + // static_param at offset 0x60 + sead::SafeString mDemoEntryPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.cpp b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.cpp new file mode 100644 index 00000000..03040674 --- /dev/null +++ b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiInForceEnemyLostAreaSelect.h" + +namespace uking::ai { + +InForceEnemyLostAreaSelect::InForceEnemyLostAreaSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +InForceEnemyLostAreaSelect::~InForceEnemyLostAreaSelect() = default; + +bool InForceEnemyLostAreaSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InForceEnemyLostAreaSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InForceEnemyLostAreaSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InForceEnemyLostAreaSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h new file mode 100644 index 00000000..3a20504e --- /dev/null +++ b/src/Game/AI/AI/aiInForceEnemyLostAreaSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InForceEnemyLostAreaSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InForceEnemyLostAreaSelect, ksys::act::ai::Ai) +public: + explicit InForceEnemyLostAreaSelect(const InitArg& arg); + ~InForceEnemyLostAreaSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInTerritorySelector.cpp b/src/Game/AI/AI/aiInTerritorySelector.cpp new file mode 100644 index 00000000..489cb5bf --- /dev/null +++ b/src/Game/AI/AI/aiInTerritorySelector.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiInTerritorySelector.h" + +namespace uking::ai { + +InTerritorySelector::InTerritorySelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InTerritorySelector::~InTerritorySelector() = default; + +void InTerritorySelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InTerritorySelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InTerritorySelector::loadParams_() { + getStaticParam(&mTerritoryArea_s, "TerritoryArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInTerritorySelector.h b/src/Game/AI/AI/aiInTerritorySelector.h new file mode 100644 index 00000000..b8481747 --- /dev/null +++ b/src/Game/AI/AI/aiInTerritorySelector.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InTerritorySelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InTerritorySelector, ksys::act::ai::Ai) +public: + explicit InTerritorySelector(const InitArg& arg); + ~InTerritorySelector() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTerritoryArea_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInWaterKeepSelect.cpp b/src/Game/AI/AI/aiInWaterKeepSelect.cpp new file mode 100644 index 00000000..f8fc217b --- /dev/null +++ b/src/Game/AI/AI/aiInWaterKeepSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiInWaterKeepSelect.h" + +namespace uking::ai { + +InWaterKeepSelect::InWaterKeepSelect(const InitArg& arg) : InWaterSelect(arg) {} + +InWaterKeepSelect::~InWaterKeepSelect() = default; + +bool InWaterKeepSelect::init_(sead::Heap* heap) { + return InWaterSelect::init_(heap); +} + +void InWaterKeepSelect::enter_(ksys::act::ai::InlineParamPack* params) { + InWaterSelect::enter_(params); +} + +void InWaterKeepSelect::leave_() { + InWaterSelect::leave_(); +} + +void InWaterKeepSelect::loadParams_() { + InWaterSelect::loadParams_(); + getAITreeVariable(&mIsKeepInWater_a, "IsKeepInWater"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInWaterKeepSelect.h b/src/Game/AI/AI/aiInWaterKeepSelect.h new file mode 100644 index 00000000..1cfda2f7 --- /dev/null +++ b/src/Game/AI/AI/aiInWaterKeepSelect.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiInWaterSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InWaterKeepSelect : public InWaterSelect { + SEAD_RTTI_OVERRIDE(InWaterKeepSelect, InWaterSelect) +public: + explicit InWaterKeepSelect(const InitArg& arg); + ~InWaterKeepSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x58 + bool* mIsKeepInWater_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInWaterSelect.cpp b/src/Game/AI/AI/aiInWaterSelect.cpp new file mode 100644 index 00000000..5c5e77f6 --- /dev/null +++ b/src/Game/AI/AI/aiInWaterSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiInWaterSelect.h" + +namespace uking::ai { + +InWaterSelect::InWaterSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InWaterSelect::~InWaterSelect() = default; + +bool InWaterSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InWaterSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InWaterSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InWaterSelect::loadParams_() { + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mOutWaterDepth_s, "OutWaterDepth"); + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); + getStaticParam(&mIsForceChange_s, "IsForceChange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInWaterSelect.h b/src/Game/AI/AI/aiInWaterSelect.h new file mode 100644 index 00000000..e20db96d --- /dev/null +++ b/src/Game/AI/AI/aiInWaterSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InWaterSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InWaterSelect, ksys::act::ai::Ai) +public: + explicit InWaterSelect(const InitArg& arg); + ~InWaterSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mInWaterDepth_s{}; + // static_param at offset 0x40 + const float* mOutWaterDepth_s{}; + // static_param at offset 0x48 + const bool* mIsCheckEveryFrame_s{}; + // static_param at offset 0x50 + const bool* mIsForceChange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIncredibleAction.cpp b/src/Game/AI/AI/aiIncredibleAction.cpp new file mode 100644 index 00000000..60c37e44 --- /dev/null +++ b/src/Game/AI/AI/aiIncredibleAction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiIncredibleAction.h" + +namespace uking::ai { + +IncredibleAction::IncredibleAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +IncredibleAction::~IncredibleAction() = default; + +bool IncredibleAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void IncredibleAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void IncredibleAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void IncredibleAction::loadParams_() { + getStaticParam(&mIsInvincible_s, "IsInvincible"); + getStaticParam(&mIsUnmoving_s, "IsUnmoving"); + getStaticParam(&mIsNoCollide_s, "IsNoCollide"); + getStaticParam(&mIsUseIncredibleActionDCCallback_s, "IsUseIncredibleActionDCCallback"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIncredibleAction.h b/src/Game/AI/AI/aiIncredibleAction.h new file mode 100644 index 00000000..fee32139 --- /dev/null +++ b/src/Game/AI/AI/aiIncredibleAction.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IncredibleAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(IncredibleAction, ksys::act::ai::Ai) +public: + explicit IncredibleAction(const InitArg& arg); + ~IncredibleAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsInvincible_s{}; + // static_param at offset 0x40 + const bool* mIsUnmoving_s{}; + // static_param at offset 0x48 + const bool* mIsNoCollide_s{}; + // static_param at offset 0x50 + const bool* mIsUseIncredibleActionDCCallback_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInitFromInCarryBoxSelect.cpp b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.cpp new file mode 100644 index 00000000..56eef0ec --- /dev/null +++ b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiInitFromInCarryBoxSelect.h" + +namespace uking::ai { + +InitFromInCarryBoxSelect::InitFromInCarryBoxSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InitFromInCarryBoxSelect::~InitFromInCarryBoxSelect() = default; + +bool InitFromInCarryBoxSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InitFromInCarryBoxSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InitFromInCarryBoxSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InitFromInCarryBoxSelect::loadParams_() { + getStaticParam(&mIsResetInCarryBoxFlag_s, "IsResetInCarryBoxFlag"); + getAITreeVariable(&mIsInitFromCarryBox_a, "IsInitFromCarryBox"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h new file mode 100644 index 00000000..818a1174 --- /dev/null +++ b/src/Game/AI/AI/aiInitFromInCarryBoxSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InitFromInCarryBoxSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InitFromInCarryBoxSelect, ksys::act::ai::Ai) +public: + explicit InitFromInCarryBoxSelect(const InitArg& arg); + ~InitFromInCarryBoxSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsResetInCarryBoxFlag_s{}; + // aitree_variable at offset 0x40 + bool* mIsInitFromCarryBox_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectEscape.cpp b/src/Game/AI/AI/aiInsectEscape.cpp new file mode 100644 index 00000000..e96f6dfc --- /dev/null +++ b/src/Game/AI/AI/aiInsectEscape.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiInsectEscape.h" + +namespace uking::ai { + +InsectEscape::InsectEscape(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InsectEscape::~InsectEscape() = default; + +bool InsectEscape::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InsectEscape::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InsectEscape::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InsectEscape::loadParams_() { + getStaticParam(&mRunAwayDistanceMax_s, "RunAwayDistanceMax"); + getStaticParam(&mRunAwayDistanceMin_s, "RunAwayDistanceMin"); + getStaticParam(&mRunAwayHeightOffset_s, "RunAwayHeightOffset"); + getStaticParam(&mAllowRandAngleVertical_s, "AllowRandAngleVertical"); + getStaticParam(&mAllowRandAngleHorizontal_s, "AllowRandAngleHorizontal"); + getStaticParam(&mInWater_s, "InWater"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectEscape.h b/src/Game/AI/AI/aiInsectEscape.h new file mode 100644 index 00000000..a550e2a8 --- /dev/null +++ b/src/Game/AI/AI/aiInsectEscape.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InsectEscape : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InsectEscape, ksys::act::ai::Ai) +public: + explicit InsectEscape(const InitArg& arg); + ~InsectEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRunAwayDistanceMax_s{}; + // static_param at offset 0x40 + const float* mRunAwayDistanceMin_s{}; + // static_param at offset 0x48 + const float* mRunAwayHeightOffset_s{}; + // static_param at offset 0x50 + const float* mAllowRandAngleVertical_s{}; + // static_param at offset 0x58 + const float* mAllowRandAngleHorizontal_s{}; + // static_param at offset 0x60 + const bool* mInWater_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectFairyRoot.cpp b/src/Game/AI/AI/aiInsectFairyRoot.cpp new file mode 100644 index 00000000..082f3237 --- /dev/null +++ b/src/Game/AI/AI/aiInsectFairyRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiInsectFairyRoot.h" + +namespace uking::ai { + +InsectFairyRoot::InsectFairyRoot(const InitArg& arg) : InsectRoot(arg) {} + +InsectFairyRoot::~InsectFairyRoot() = default; + +bool InsectFairyRoot::init_(sead::Heap* heap) { + return InsectRoot::init_(heap); +} + +void InsectFairyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + InsectRoot::enter_(params); +} + +void InsectFairyRoot::leave_() { + InsectRoot::leave_(); +} + +void InsectFairyRoot::loadParams_() { + InsectRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectFairyRoot.h b/src/Game/AI/AI/aiInsectFairyRoot.h new file mode 100644 index 00000000..930d80ef --- /dev/null +++ b/src/Game/AI/AI/aiInsectFairyRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiInsectRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InsectFairyRoot : public InsectRoot { + SEAD_RTTI_OVERRIDE(InsectFairyRoot, InsectRoot) +public: + explicit InsectFairyRoot(const InitArg& arg); + ~InsectFairyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectRoam.cpp b/src/Game/AI/AI/aiInsectRoam.cpp new file mode 100644 index 00000000..d54fe5c9 --- /dev/null +++ b/src/Game/AI/AI/aiInsectRoam.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiInsectRoam.h" + +namespace uking::ai { + +InsectRoam::InsectRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InsectRoam::~InsectRoam() = default; + +bool InsectRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InsectRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InsectRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InsectRoam::loadParams_() { + getStaticParam(&mTerritoryRadius_s, "TerritoryRadius"); + getStaticParam(&mTerritoryRadiusRnd_s, "TerritoryRadiusRnd"); + getStaticParam(&mMoveDist_s, "MoveDist"); + getStaticParam(&mMoveSpeed_s, "MoveSpeed"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectRoam.h b/src/Game/AI/AI/aiInsectRoam.h new file mode 100644 index 00000000..0a0f8643 --- /dev/null +++ b/src/Game/AI/AI/aiInsectRoam.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InsectRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InsectRoam, ksys::act::ai::Ai) +public: + explicit InsectRoam(const InitArg& arg); + ~InsectRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTerritoryRadius_s{}; + // static_param at offset 0x40 + const float* mTerritoryRadiusRnd_s{}; + // static_param at offset 0x48 + const float* mMoveDist_s{}; + // static_param at offset 0x50 + const float* mMoveSpeed_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectRoot.cpp b/src/Game/AI/AI/aiInsectRoot.cpp new file mode 100644 index 00000000..5f2d37f0 --- /dev/null +++ b/src/Game/AI/AI/aiInsectRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiInsectRoot.h" + +namespace uking::ai { + +InsectRoot::InsectRoot(const InitArg& arg) : SimpleWildlifeRoot(arg) {} + +InsectRoot::~InsectRoot() = default; + +bool InsectRoot::init_(sead::Heap* heap) { + return SimpleWildlifeRoot::init_(heap); +} + +void InsectRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleWildlifeRoot::enter_(params); +} + +void InsectRoot::leave_() { + SimpleWildlifeRoot::leave_(); +} + +void InsectRoot::loadParams_() { + SimpleWildlifeRoot::loadParams_(); + getStaticParam(&mIsEscapeInWater_s, "IsEscapeInWater"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInsectRoot.h b/src/Game/AI/AI/aiInsectRoot.h new file mode 100644 index 00000000..9fa9d1fc --- /dev/null +++ b/src/Game/AI/AI/aiInsectRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleWildlifeRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InsectRoot : public SimpleWildlifeRoot { + SEAD_RTTI_OVERRIDE(InsectRoot, SimpleWildlifeRoot) +public: + explicit InsectRoot(const InitArg& arg); + ~InsectRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const bool* mIsEscapeInWater_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInvincibleHiddenOctarock.cpp b/src/Game/AI/AI/aiInvincibleHiddenOctarock.cpp new file mode 100644 index 00000000..73e36561 --- /dev/null +++ b/src/Game/AI/AI/aiInvincibleHiddenOctarock.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiInvincibleHiddenOctarock.h" + +namespace uking::ai { + +InvincibleHiddenOctarock::InvincibleHiddenOctarock(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +InvincibleHiddenOctarock::~InvincibleHiddenOctarock() = default; + +bool InvincibleHiddenOctarock::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void InvincibleHiddenOctarock::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void InvincibleHiddenOctarock::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void InvincibleHiddenOctarock::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInvincibleHiddenOctarock.h b/src/Game/AI/AI/aiInvincibleHiddenOctarock.h new file mode 100644 index 00000000..9c9ad8ab --- /dev/null +++ b/src/Game/AI/AI/aiInvincibleHiddenOctarock.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InvincibleHiddenOctarock : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(InvincibleHiddenOctarock, ksys::act::ai::Ai) +public: + explicit InvincibleHiddenOctarock(const InitArg& arg); + ~InvincibleHiddenOctarock() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInvisibleKorokRailMove.cpp b/src/Game/AI/AI/aiInvisibleKorokRailMove.cpp new file mode 100644 index 00000000..69ac0b5b --- /dev/null +++ b/src/Game/AI/AI/aiInvisibleKorokRailMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiInvisibleKorokRailMove.h" + +namespace uking::ai { + +InvisibleKorokRailMove::InvisibleKorokRailMove(const InitArg& arg) : KorokRailMove(arg) {} + +InvisibleKorokRailMove::~InvisibleKorokRailMove() = default; + +bool InvisibleKorokRailMove::init_(sead::Heap* heap) { + return KorokRailMove::init_(heap); +} + +void InvisibleKorokRailMove::enter_(ksys::act::ai::InlineParamPack* params) { + KorokRailMove::enter_(params); +} + +void InvisibleKorokRailMove::leave_() { + KorokRailMove::leave_(); +} + +void InvisibleKorokRailMove::loadParams_() { + KorokRailMove::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiInvisibleKorokRailMove.h b/src/Game/AI/AI/aiInvisibleKorokRailMove.h new file mode 100644 index 00000000..668b833d --- /dev/null +++ b/src/Game/AI/AI/aiInvisibleKorokRailMove.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiKorokRailMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class InvisibleKorokRailMove : public KorokRailMove { + SEAD_RTTI_OVERRIDE(InvisibleKorokRailMove, KorokRailMove) +public: + explicit InvisibleKorokRailMove(const InitArg& arg); + ~InvisibleKorokRailMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIsPlacementAreaEnemy.cpp b/src/Game/AI/AI/aiIsPlacementAreaEnemy.cpp new file mode 100644 index 00000000..d6a96050 --- /dev/null +++ b/src/Game/AI/AI/aiIsPlacementAreaEnemy.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiIsPlacementAreaEnemy.h" + +namespace uking::ai { + +IsPlacementAreaEnemy::IsPlacementAreaEnemy(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +IsPlacementAreaEnemy::~IsPlacementAreaEnemy() = default; + +bool IsPlacementAreaEnemy::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void IsPlacementAreaEnemy::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void IsPlacementAreaEnemy::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void IsPlacementAreaEnemy::loadParams_() { + getStaticParam(&mCheckType_s, "CheckType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiIsPlacementAreaEnemy.h b/src/Game/AI/AI/aiIsPlacementAreaEnemy.h new file mode 100644 index 00000000..8500f08f --- /dev/null +++ b/src/Game/AI/AI/aiIsPlacementAreaEnemy.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class IsPlacementAreaEnemy : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(IsPlacementAreaEnemy, ksys::act::ai::Ai) +public: + explicit IsPlacementAreaEnemy(const InitArg& arg); + ~IsPlacementAreaEnemy() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCheckType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemAmiiboRoot.cpp b/src/Game/AI/AI/aiItemAmiiboRoot.cpp new file mode 100644 index 00000000..b2ab91da --- /dev/null +++ b/src/Game/AI/AI/aiItemAmiiboRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiItemAmiiboRoot.h" + +namespace uking::ai { + +ItemAmiiboRoot::ItemAmiiboRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ItemAmiiboRoot::~ItemAmiiboRoot() = default; + +bool ItemAmiiboRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ItemAmiiboRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ItemAmiiboRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ItemAmiiboRoot::loadParams_() { + getMapUnitParam(&mAmiiboCharacterId_m, "AmiiboCharacterId"); + getMapUnitParam(&mAmiiboNumberingId_m, "AmiiboNumberingId"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemAmiiboRoot.h b/src/Game/AI/AI/aiItemAmiiboRoot.h new file mode 100644 index 00000000..1c97e86f --- /dev/null +++ b/src/Game/AI/AI/aiItemAmiiboRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ItemAmiiboRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ItemAmiiboRoot, ksys::act::ai::Ai) +public: + explicit ItemAmiiboRoot(const InitArg& arg); + ~ItemAmiiboRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mAmiiboCharacterId_m{}; + // map_unit_param at offset 0x40 + const int* mAmiiboNumberingId_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemConductor.cpp b/src/Game/AI/AI/aiItemConductor.cpp new file mode 100644 index 00000000..87416b17 --- /dev/null +++ b/src/Game/AI/AI/aiItemConductor.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiItemConductor.h" + +namespace uking::ai { + +ItemConductor::ItemConductor(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ItemConductor::~ItemConductor() = default; + +void ItemConductor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ItemConductor::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemConductor.h b/src/Game/AI/AI/aiItemConductor.h new file mode 100644 index 00000000..8759e647 --- /dev/null +++ b/src/Game/AI/AI/aiItemConductor.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ItemConductor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ItemConductor, ksys::act::ai::Ai) +public: + explicit ItemConductor(const InitArg& arg); + ~ItemConductor() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemOnTree.cpp b/src/Game/AI/AI/aiItemOnTree.cpp new file mode 100644 index 00000000..2f191b43 --- /dev/null +++ b/src/Game/AI/AI/aiItemOnTree.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiItemOnTree.h" + +namespace uking::ai { + +ItemOnTree::ItemOnTree(const InitArg& arg) : ItemRoot(arg) {} + +ItemOnTree::~ItemOnTree() = default; + +bool ItemOnTree::init_(sead::Heap* heap) { + return ItemRoot::init_(heap); +} + +void ItemOnTree::enter_(ksys::act::ai::InlineParamPack* params) { + ItemRoot::enter_(params); +} + +void ItemOnTree::leave_() { + ItemRoot::leave_(); +} + +void ItemOnTree::loadParams_() { + ItemRoot::loadParams_(); + getStaticParam(&mFallPowerMin_s, "FallPowerMin"); + getStaticParam(&mFallPowerMax_s, "FallPowerMax"); + getStaticParam(&mFallOddsMin_s, "FallOddsMin"); + getStaticParam(&mFallOddsMax_s, "FallOddsMax"); + getStaticParam(&mFallIntervalRange_s, "FallIntervalRange"); + getStaticParam(&mFallCheckSpeedTh_s, "FallCheckSpeedTh"); + getStaticParam(&mAttOnTree_s, "AttOnTree"); + getStaticParam(&mAttOnGround_s, "AttOnGround"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemOnTree.h b/src/Game/AI/AI/aiItemOnTree.h new file mode 100644 index 00000000..4ee67bf4 --- /dev/null +++ b/src/Game/AI/AI/aiItemOnTree.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiItemRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ItemOnTree : public ItemRoot { + SEAD_RTTI_OVERRIDE(ItemOnTree, ItemRoot) +public: + explicit ItemOnTree(const InitArg& arg); + ~ItemOnTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mFallPowerMin_s{}; + // static_param at offset 0x58 + const int* mFallPowerMax_s{}; + // static_param at offset 0x60 + const int* mFallOddsMin_s{}; + // static_param at offset 0x68 + const int* mFallOddsMax_s{}; + // static_param at offset 0x70 + const float* mFallIntervalRange_s{}; + // static_param at offset 0x78 + const float* mFallCheckSpeedTh_s{}; + // static_param at offset 0x80 + sead::SafeString mAttOnTree_s{}; + // static_param at offset 0x90 + sead::SafeString mAttOnGround_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemRoot.cpp b/src/Game/AI/AI/aiItemRoot.cpp new file mode 100644 index 00000000..debbb0bb --- /dev/null +++ b/src/Game/AI/AI/aiItemRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiItemRoot.h" + +namespace uking::ai { + +ItemRoot::ItemRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ItemRoot::~ItemRoot() = default; + +bool ItemRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ItemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ItemRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ItemRoot::loadParams_() { + getStaticParam(&mAtHitImpulseRate_s, "AtHitImpulseRate"); + getMapUnitParam(&mInitMotionStatus_m, "InitMotionStatus"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiItemRoot.h b/src/Game/AI/AI/aiItemRoot.h new file mode 100644 index 00000000..68502570 --- /dev/null +++ b/src/Game/AI/AI/aiItemRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ItemRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ItemRoot, ksys::act::ai::Ai) +public: + explicit ItemRoot(const InitArg& arg); + ~ItemRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAtHitImpulseRate_s{}; + // map_unit_param at offset 0x40 + const int* mInitMotionStatus_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiJumpAttack.cpp b/src/Game/AI/AI/aiJumpAttack.cpp new file mode 100644 index 00000000..746ddc49 --- /dev/null +++ b/src/Game/AI/AI/aiJumpAttack.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiJumpAttack.h" + +namespace uking::ai { + +JumpAttack::JumpAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void JumpAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void JumpAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void JumpAttack::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiJumpAttack.h b/src/Game/AI/AI/aiJumpAttack.h new file mode 100644 index 00000000..cfa897ea --- /dev/null +++ b/src/Game/AI/AI/aiJumpAttack.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class JumpAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(JumpAttack, ksys::act::ai::Ai) +public: + explicit JumpAttack(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiJustAvoidFinishWait.cpp b/src/Game/AI/AI/aiJustAvoidFinishWait.cpp new file mode 100644 index 00000000..0826cca2 --- /dev/null +++ b/src/Game/AI/AI/aiJustAvoidFinishWait.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiJustAvoidFinishWait.h" + +namespace uking::ai { + +JustAvoidFinishWait::JustAvoidFinishWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +JustAvoidFinishWait::~JustAvoidFinishWait() = default; + +bool JustAvoidFinishWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void JustAvoidFinishWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void JustAvoidFinishWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void JustAvoidFinishWait::loadParams_() { + getStaticParam(&mIsUseWaitAfterMain_s, "IsUseWaitAfterMain"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiJustAvoidFinishWait.h b/src/Game/AI/AI/aiJustAvoidFinishWait.h new file mode 100644 index 00000000..2912b7c1 --- /dev/null +++ b/src/Game/AI/AI/aiJustAvoidFinishWait.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class JustAvoidFinishWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(JustAvoidFinishWait, ksys::act::ai::Ai) +public: + explicit JustAvoidFinishWait(const InitArg& arg); + ~JustAvoidFinishWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsUseWaitAfterMain_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKakarikoKokkoTimeline.cpp b/src/Game/AI/AI/aiKakarikoKokkoTimeline.cpp new file mode 100644 index 00000000..ae3fa9f8 --- /dev/null +++ b/src/Game/AI/AI/aiKakarikoKokkoTimeline.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiKakarikoKokkoTimeline.h" + +namespace uking::ai { + +KakarikoKokkoTimeline::KakarikoKokkoTimeline(const InitArg& arg) : AnimalTimelineAI(arg) {} + +KakarikoKokkoTimeline::~KakarikoKokkoTimeline() = default; + +bool KakarikoKokkoTimeline::init_(sead::Heap* heap) { + return AnimalTimelineAI::init_(heap); +} + +void KakarikoKokkoTimeline::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalTimelineAI::enter_(params); +} + +void KakarikoKokkoTimeline::leave_() { + AnimalTimelineAI::leave_(); +} + +void KakarikoKokkoTimeline::loadParams_() { + AnimalTimelineAI::loadParams_(); + getStaticParam(&mForceChangeChildKeyName_s, "ForceChangeChildKeyName"); + getStaticParam(&mStartForceChangeFlagName_s, "StartForceChangeFlagName"); + getStaticParam(&mEndForceChangeFlagName_s, "EndForceChangeFlagName"); + getMapUnitParam(&mCheckGatheredFlagName_m, "CheckGatheredFlagName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKakarikoKokkoTimeline.h b/src/Game/AI/AI/aiKakarikoKokkoTimeline.h new file mode 100644 index 00000000..d8e687b2 --- /dev/null +++ b/src/Game/AI/AI/aiKakarikoKokkoTimeline.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalTimelineAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KakarikoKokkoTimeline : public AnimalTimelineAI { + SEAD_RTTI_OVERRIDE(KakarikoKokkoTimeline, AnimalTimelineAI) +public: + explicit KakarikoKokkoTimeline(const InitArg& arg); + ~KakarikoKokkoTimeline() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + sead::SafeString mForceChangeChildKeyName_s{}; + // static_param at offset 0x90 + sead::SafeString mStartForceChangeFlagName_s{}; + // static_param at offset 0xa0 + sead::SafeString mEndForceChangeFlagName_s{}; + // map_unit_param at offset 0xb0 + sead::SafeString mCheckGatheredFlagName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeepBackSelect.cpp b/src/Game/AI/AI/aiKeepBackSelect.cpp new file mode 100644 index 00000000..6ef42e7c --- /dev/null +++ b/src/Game/AI/AI/aiKeepBackSelect.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiKeepBackSelect.h" + +namespace uking::ai { + +KeepBackSelect::KeepBackSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KeepBackSelect::~KeepBackSelect() = default; + +bool KeepBackSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KeepBackSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KeepBackSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KeepBackSelect::loadParams_() { + getStaticParam(&mKeepTime_s, "KeepTime"); + getStaticParam(&mBaseAxis_s, "BaseAxis"); + getStaticParam(&mBackAngle_s, "BackAngle"); + getStaticParam(&mXZOnly_s, "XZOnly"); + getStaticParam(&mNodeName_s, "NodeName"); + getStaticParam(&mLocalOffset_s, "LocalOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeepBackSelect.h b/src/Game/AI/AI/aiKeepBackSelect.h new file mode 100644 index 00000000..17852510 --- /dev/null +++ b/src/Game/AI/AI/aiKeepBackSelect.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeepBackSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KeepBackSelect, ksys::act::ai::Ai) +public: + explicit KeepBackSelect(const InitArg& arg); + ~KeepBackSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mKeepTime_s{}; + // static_param at offset 0x40 + const int* mBaseAxis_s{}; + // static_param at offset 0x48 + const float* mBackAngle_s{}; + // static_param at offset 0x50 + const bool* mXZOnly_s{}; + // static_param at offset 0x58 + sead::SafeString mNodeName_s{}; + // static_param at offset 0x68 + const sead::Vector3f* mLocalOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseDieSelect.cpp b/src/Game/AI/AI/aiKeeseDieSelect.cpp new file mode 100644 index 00000000..f2846cb3 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseDieSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKeeseDieSelect.h" + +namespace uking::ai { + +KeeseDieSelect::KeeseDieSelect(const InitArg& arg) : DieSelectChemShockPlus(arg) {} + +KeeseDieSelect::~KeeseDieSelect() = default; + +bool KeeseDieSelect::init_(sead::Heap* heap) { + return DieSelectChemShockPlus::init_(heap); +} + +void KeeseDieSelect::enter_(ksys::act::ai::InlineParamPack* params) { + DieSelectChemShockPlus::enter_(params); +} + +void KeeseDieSelect::leave_() { + DieSelectChemShockPlus::leave_(); +} + +void KeeseDieSelect::loadParams_() { + DieSelectChemShockPlus::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseDieSelect.h b/src/Game/AI/AI/aiKeeseDieSelect.h new file mode 100644 index 00000000..3579e8cb --- /dev/null +++ b/src/Game/AI/AI/aiKeeseDieSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiDieSelectChemShockPlus.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseDieSelect : public DieSelectChemShockPlus { + SEAD_RTTI_OVERRIDE(KeeseDieSelect, DieSelectChemShockPlus) +public: + explicit KeeseDieSelect(const InitArg& arg); + ~KeeseDieSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseHangOnCeil.cpp b/src/Game/AI/AI/aiKeeseHangOnCeil.cpp new file mode 100644 index 00000000..79770909 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseHangOnCeil.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiKeeseHangOnCeil.h" + +namespace uking::ai { + +KeeseHangOnCeil::KeeseHangOnCeil(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KeeseHangOnCeil::~KeeseHangOnCeil() = default; + +bool KeeseHangOnCeil::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KeeseHangOnCeil::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KeeseHangOnCeil::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KeeseHangOnCeil::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseHangOnCeil.h b/src/Game/AI/AI/aiKeeseHangOnCeil.h new file mode 100644 index 00000000..5cd174f3 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseHangOnCeil.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseHangOnCeil : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KeeseHangOnCeil, ksys::act::ai::Ai) +public: + explicit KeeseHangOnCeil(const InitArg& arg); + ~KeeseHangOnCeil() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseNormal.cpp b/src/Game/AI/AI/aiKeeseNormal.cpp new file mode 100644 index 00000000..83da4830 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseNormal.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiKeeseNormal.h" + +namespace uking::ai { + +KeeseNormal::KeeseNormal(const InitArg& arg) : EnemyNormal(arg) {} + +KeeseNormal::~KeeseNormal() = default; + +bool KeeseNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void KeeseNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void KeeseNormal::leave_() { + EnemyNormal::leave_(); +} + +void KeeseNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mRoamHeightFromGlowObj_s, "RoamHeightFromGlowObj"); + getMapUnitParam(&mIsCreateOnFace_m, "IsCreateOnFace"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseNormal.h b/src/Game/AI/AI/aiKeeseNormal.h new file mode 100644 index 00000000..49017f6d --- /dev/null +++ b/src/Game/AI/AI/aiKeeseNormal.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(KeeseNormal, EnemyNormal) +public: + explicit KeeseNormal(const InitArg& arg); + ~KeeseNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mRoamHeightFromGlowObj_s{}; + // map_unit_param at offset 0x3d8 + const bool* mIsCreateOnFace_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseRoam.cpp b/src/Game/AI/AI/aiKeeseRoam.cpp new file mode 100644 index 00000000..1c2e0725 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseRoam.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiKeeseRoam.h" + +namespace uking::ai { + +KeeseRoam::KeeseRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KeeseRoam::~KeeseRoam() = default; + +bool KeeseRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KeeseRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KeeseRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KeeseRoam::loadParams_() { + getStaticParam(&mMinOffsetY_s, "MinOffsetY"); + getStaticParam(&mMaxOffsetY_s, "MaxOffsetY"); + getStaticParam(&mRoamRadius_s, "RoamRadius"); + getStaticParam(&mMinMoveDist_s, "MinMoveDist"); + getStaticParam(&mMaxMoveDist_s, "MaxMoveDist"); + getStaticParam(&mNoWaitRatio_s, "NoWaitRatio"); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseRoam.h b/src/Game/AI/AI/aiKeeseRoam.h new file mode 100644 index 00000000..bcbd3384 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseRoam.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KeeseRoam, ksys::act::ai::Ai) +public: + explicit KeeseRoam(const InitArg& arg); + ~KeeseRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mMinOffsetY_s{}; + // static_param at offset 0x40 + const float* mMaxOffsetY_s{}; + // static_param at offset 0x48 + const float* mRoamRadius_s{}; + // static_param at offset 0x50 + const float* mMinMoveDist_s{}; + // static_param at offset 0x58 + const float* mMaxMoveDist_s{}; + // static_param at offset 0x60 + const float* mNoWaitRatio_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseSwarmNormal.cpp b/src/Game/AI/AI/aiKeeseSwarmNormal.cpp new file mode 100644 index 00000000..2c6b4233 --- /dev/null +++ b/src/Game/AI/AI/aiKeeseSwarmNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKeeseSwarmNormal.h" + +namespace uking::ai { + +KeeseSwarmNormal::KeeseSwarmNormal(const InitArg& arg) : EnemyNormal(arg) {} + +KeeseSwarmNormal::~KeeseSwarmNormal() = default; + +bool KeeseSwarmNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void KeeseSwarmNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void KeeseSwarmNormal::leave_() { + EnemyNormal::leave_(); +} + +void KeeseSwarmNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseSwarmNormal.h b/src/Game/AI/AI/aiKeeseSwarmNormal.h new file mode 100644 index 00000000..1e30622c --- /dev/null +++ b/src/Game/AI/AI/aiKeeseSwarmNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseSwarmNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(KeeseSwarmNormal, EnemyNormal) +public: + explicit KeeseSwarmNormal(const InitArg& arg); + ~KeeseSwarmNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseSwarmRoam.cpp b/src/Game/AI/AI/aiKeeseSwarmRoam.cpp new file mode 100644 index 00000000..feac27cb --- /dev/null +++ b/src/Game/AI/AI/aiKeeseSwarmRoam.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiKeeseSwarmRoam.h" + +namespace uking::ai { + +KeeseSwarmRoam::KeeseSwarmRoam(const InitArg& arg) : CircleMove(arg) {} + +KeeseSwarmRoam::~KeeseSwarmRoam() = default; + +bool KeeseSwarmRoam::init_(sead::Heap* heap) { + return CircleMove::init_(heap); +} + +void KeeseSwarmRoam::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMove::enter_(params); +} + +void KeeseSwarmRoam::leave_() { + CircleMove::leave_(); +} + +void KeeseSwarmRoam::loadParams_() { + CircleMove::loadParams_(); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeeseSwarmRoam.h b/src/Game/AI/AI/aiKeeseSwarmRoam.h new file mode 100644 index 00000000..dd9ea52b --- /dev/null +++ b/src/Game/AI/AI/aiKeeseSwarmRoam.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeeseSwarmRoam : public CircleMove { + SEAD_RTTI_OVERRIDE(KeeseSwarmRoam, CircleMove) +public: + explicit KeeseSwarmRoam(const InitArg& arg); + ~KeeseSwarmRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x60 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeyLockedShutter.cpp b/src/Game/AI/AI/aiKeyLockedShutter.cpp new file mode 100644 index 00000000..2877382a --- /dev/null +++ b/src/Game/AI/AI/aiKeyLockedShutter.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiKeyLockedShutter.h" + +namespace uking::ai { + +KeyLockedShutter::KeyLockedShutter(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KeyLockedShutter::~KeyLockedShutter() = default; + +void KeyLockedShutter::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KeyLockedShutter::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKeyLockedShutter.h b/src/Game/AI/AI/aiKeyLockedShutter.h new file mode 100644 index 00000000..f6884269 --- /dev/null +++ b/src/Game/AI/AI/aiKeyLockedShutter.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KeyLockedShutter : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KeyLockedShutter, ksys::act::ai::Ai) +public: + explicit KeyLockedShutter(const InitArg& arg); + ~KeyLockedShutter() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoAngry.cpp b/src/Game/AI/AI/aiKokkoAngry.cpp new file mode 100644 index 00000000..097f196f --- /dev/null +++ b/src/Game/AI/AI/aiKokkoAngry.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKokkoAngry.h" + +namespace uking::ai { + +KokkoAngry::KokkoAngry(const InitArg& arg) : CreateActorWithTarget(arg) {} + +KokkoAngry::~KokkoAngry() = default; + +bool KokkoAngry::init_(sead::Heap* heap) { + return CreateActorWithTarget::init_(heap); +} + +void KokkoAngry::enter_(ksys::act::ai::InlineParamPack* params) { + CreateActorWithTarget::enter_(params); +} + +void KokkoAngry::leave_() { + CreateActorWithTarget::leave_(); +} + +void KokkoAngry::loadParams_() { + CreateActorWithTarget::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoAngry.h b/src/Game/AI/AI/aiKokkoAngry.h new file mode 100644 index 00000000..d97df4e7 --- /dev/null +++ b/src/Game/AI/AI/aiKokkoAngry.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiCreateActorWithTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KokkoAngry : public CreateActorWithTarget { + SEAD_RTTI_OVERRIDE(KokkoAngry, CreateActorWithTarget) +public: + explicit KokkoAngry(const InitArg& arg); + ~KokkoAngry() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoAngryTargetSelect.cpp b/src/Game/AI/AI/aiKokkoAngryTargetSelect.cpp new file mode 100644 index 00000000..f7c78cef --- /dev/null +++ b/src/Game/AI/AI/aiKokkoAngryTargetSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiKokkoAngryTargetSelect.h" + +namespace uking::ai { + +KokkoAngryTargetSelect::KokkoAngryTargetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KokkoAngryTargetSelect::~KokkoAngryTargetSelect() = default; + +bool KokkoAngryTargetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KokkoAngryTargetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KokkoAngryTargetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KokkoAngryTargetSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoAngryTargetSelect.h b/src/Game/AI/AI/aiKokkoAngryTargetSelect.h new file mode 100644 index 00000000..c512d1e0 --- /dev/null +++ b/src/Game/AI/AI/aiKokkoAngryTargetSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KokkoAngryTargetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KokkoAngryTargetSelect, ksys::act::ai::Ai) +public: + explicit KokkoAngryTargetSelect(const InitArg& arg); + ~KokkoAngryTargetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoEscapeAI.cpp b/src/Game/AI/AI/aiKokkoEscapeAI.cpp new file mode 100644 index 00000000..cec3f89b --- /dev/null +++ b/src/Game/AI/AI/aiKokkoEscapeAI.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKokkoEscapeAI.h" + +namespace uking::ai { + +KokkoEscapeAI::KokkoEscapeAI(const InitArg& arg) : AnimalEscapeAI(arg) {} + +KokkoEscapeAI::~KokkoEscapeAI() = default; + +bool KokkoEscapeAI::init_(sead::Heap* heap) { + return AnimalEscapeAI::init_(heap); +} + +void KokkoEscapeAI::enter_(ksys::act::ai::InlineParamPack* params) { + AnimalEscapeAI::enter_(params); +} + +void KokkoEscapeAI::leave_() { + AnimalEscapeAI::leave_(); +} + +void KokkoEscapeAI::loadParams_() { + AnimalEscapeAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoEscapeAI.h b/src/Game/AI/AI/aiKokkoEscapeAI.h new file mode 100644 index 00000000..bfc2537c --- /dev/null +++ b/src/Game/AI/AI/aiKokkoEscapeAI.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAnimalEscapeAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KokkoEscapeAI : public AnimalEscapeAI { + SEAD_RTTI_OVERRIDE(KokkoEscapeAI, AnimalEscapeAI) +public: + explicit KokkoEscapeAI(const InitArg& arg); + ~KokkoEscapeAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoRoot.cpp b/src/Game/AI/AI/aiKokkoRoot.cpp new file mode 100644 index 00000000..055f6ae5 --- /dev/null +++ b/src/Game/AI/AI/aiKokkoRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiKokkoRoot.h" + +namespace uking::ai { + +KokkoRoot::KokkoRoot(const InitArg& arg) : PreyRoot(arg) {} + +KokkoRoot::~KokkoRoot() = default; + +bool KokkoRoot::init_(sead::Heap* heap) { + return PreyRoot::init_(heap); +} + +void KokkoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PreyRoot::enter_(params); +} + +void KokkoRoot::leave_() { + PreyRoot::leave_(); +} + +void KokkoRoot::loadParams_() { + PreyRoot::loadParams_(); + getStaticParam(&mStartSpecialAttackCount_s, "StartSpecialAttackCount"); + getStaticParam(&mAvoidCountActorName_s, "AvoidCountActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKokkoRoot.h b/src/Game/AI/AI/aiKokkoRoot.h new file mode 100644 index 00000000..31b47f93 --- /dev/null +++ b/src/Game/AI/AI/aiKokkoRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiPreyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KokkoRoot : public PreyRoot { + SEAD_RTTI_OVERRIDE(KokkoRoot, PreyRoot) +public: + explicit KokkoRoot(const InitArg& arg); + ~KokkoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x208 + const int* mStartSpecialAttackCount_s{}; + // static_param at offset 0x210 + sead::SafeString mAvoidCountActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokAnswerResponceRoot.cpp b/src/Game/AI/AI/aiKorokAnswerResponceRoot.cpp new file mode 100644 index 00000000..0ee44609 --- /dev/null +++ b/src/Game/AI/AI/aiKorokAnswerResponceRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiKorokAnswerResponceRoot.h" + +namespace uking::ai { + +KorokAnswerResponceRoot::KorokAnswerResponceRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokAnswerResponceRoot::~KorokAnswerResponceRoot() = default; + +bool KorokAnswerResponceRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokAnswerResponceRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokAnswerResponceRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokAnswerResponceRoot::loadParams_() { + getMapUnitParam(&mEffectDispSize_m, "EffectDispSize"); + getMapUnitParam(&mIsNoResponceSound_m, "IsNoResponceSound"); + getMapUnitParam(&mEffectDispActorName_m, "EffectDispActorName"); + getMapUnitParam(&mEffectDIspOffset_m, "EffectDIspOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokAnswerResponceRoot.h b/src/Game/AI/AI/aiKorokAnswerResponceRoot.h new file mode 100644 index 00000000..21b51ab1 --- /dev/null +++ b/src/Game/AI/AI/aiKorokAnswerResponceRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokAnswerResponceRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokAnswerResponceRoot, ksys::act::ai::Ai) +public: + explicit KorokAnswerResponceRoot(const InitArg& arg); + ~KorokAnswerResponceRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mEffectDispSize_m{}; + // map_unit_param at offset 0x40 + const bool* mIsNoResponceSound_m{}; + // map_unit_param at offset 0x48 + sead::SafeString mEffectDispActorName_m{}; + // map_unit_param at offset 0x58 + const sead::Vector3f* mEffectDIspOffset_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokFlowerColorRoot.cpp b/src/Game/AI/AI/aiKorokFlowerColorRoot.cpp new file mode 100644 index 00000000..a25117e4 --- /dev/null +++ b/src/Game/AI/AI/aiKorokFlowerColorRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKorokFlowerColorRoot.h" + +namespace uking::ai { + +KorokFlowerColorRoot::KorokFlowerColorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokFlowerColorRoot::~KorokFlowerColorRoot() = default; + +bool KorokFlowerColorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokFlowerColorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokFlowerColorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokFlowerColorRoot::loadParams_() { + getMapUnitParam(&mKorokFlowerColorNum_m, "KorokFlowerColorNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokFlowerColorRoot.h b/src/Game/AI/AI/aiKorokFlowerColorRoot.h new file mode 100644 index 00000000..714dd41d --- /dev/null +++ b/src/Game/AI/AI/aiKorokFlowerColorRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokFlowerColorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokFlowerColorRoot, ksys::act::ai::Ai) +public: + explicit KorokFlowerColorRoot(const InitArg& arg); + ~KorokFlowerColorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mKorokFlowerColorNum_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokFlowerRoot.cpp b/src/Game/AI/AI/aiKorokFlowerRoot.cpp new file mode 100644 index 00000000..462358d0 --- /dev/null +++ b/src/Game/AI/AI/aiKorokFlowerRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiKorokFlowerRoot.h" + +namespace uking::ai { + +KorokFlowerRoot::KorokFlowerRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokFlowerRoot::~KorokFlowerRoot() = default; + +bool KorokFlowerRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokFlowerRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokFlowerRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokFlowerRoot::loadParams_() { + getMapUnitParam(&mIsNoAppearEffect_m, "IsNoAppearEffect"); + getMapUnitParam(&mIsLastKorokFlower_m, "IsLastKorokFlower"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokFlowerRoot.h b/src/Game/AI/AI/aiKorokFlowerRoot.h new file mode 100644 index 00000000..945618e7 --- /dev/null +++ b/src/Game/AI/AI/aiKorokFlowerRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokFlowerRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokFlowerRoot, ksys::act::ai::Ai) +public: + explicit KorokFlowerRoot(const InitArg& arg); + ~KorokFlowerRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsNoAppearEffect_m{}; + // map_unit_param at offset 0x40 + const bool* mIsLastKorokFlower_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokGoalTimerRootAI.cpp b/src/Game/AI/AI/aiKorokGoalTimerRootAI.cpp new file mode 100644 index 00000000..a63e1d44 --- /dev/null +++ b/src/Game/AI/AI/aiKorokGoalTimerRootAI.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiKorokGoalTimerRootAI.h" + +namespace uking::ai { + +KorokGoalTimerRootAI::KorokGoalTimerRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokGoalTimerRootAI::~KorokGoalTimerRootAI() = default; + +bool KorokGoalTimerRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokGoalTimerRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokGoalTimerRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokGoalTimerRootAI::loadParams_() { + getMapUnitParam(&mGoalCountLimit_m, "GoalCountLimit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokGoalTimerRootAI.h b/src/Game/AI/AI/aiKorokGoalTimerRootAI.h new file mode 100644 index 00000000..db3f191f --- /dev/null +++ b/src/Game/AI/AI/aiKorokGoalTimerRootAI.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokGoalTimerRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokGoalTimerRootAI, ksys::act::ai::Ai) +public: + explicit KorokGoalTimerRootAI(const InitArg& arg); + ~KorokGoalTimerRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mGoalCountLimit_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokPinWheelRoot.cpp b/src/Game/AI/AI/aiKorokPinWheelRoot.cpp new file mode 100644 index 00000000..f72a215f --- /dev/null +++ b/src/Game/AI/AI/aiKorokPinWheelRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiKorokPinWheelRoot.h" + +namespace uking::ai { + +KorokPinWheelRoot::KorokPinWheelRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokPinWheelRoot::~KorokPinWheelRoot() = default; + +bool KorokPinWheelRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokPinWheelRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokPinWheelRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokPinWheelRoot::loadParams_() { + getStaticParam(&mRotSpd_s, "RotSpd"); + getStaticParam(&mLength_s, "Length"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokPinWheelRoot.h b/src/Game/AI/AI/aiKorokPinWheelRoot.h new file mode 100644 index 00000000..2583b039 --- /dev/null +++ b/src/Game/AI/AI/aiKorokPinWheelRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokPinWheelRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokPinWheelRoot, ksys::act::ai::Ai) +public: + explicit KorokPinWheelRoot(const InitArg& arg); + ~KorokPinWheelRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRotSpd_s{}; + // static_param at offset 0x40 + const float* mLength_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokPotRootAI.cpp b/src/Game/AI/AI/aiKorokPotRootAI.cpp new file mode 100644 index 00000000..30ebadaf --- /dev/null +++ b/src/Game/AI/AI/aiKorokPotRootAI.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiKorokPotRootAI.h" + +namespace uking::ai { + +KorokPotRootAI::KorokPotRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokPotRootAI::~KorokPotRootAI() = default; + +bool KorokPotRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokPotRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokPotRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokPotRootAI::loadParams_() { + getStaticParam(&mCrayLaunchSpeedRate_s, "CrayLaunchSpeedRate"); + getStaticParam(&mCrayLaunchAngularSpeed_s, "CrayLaunchAngularSpeed"); + getMapUnitParam(&mCrayLaunchSpeed_m, "CrayLaunchSpeed"); + getMapUnitParam(&mIsCrayShot_m, "IsCrayShot"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokPotRootAI.h b/src/Game/AI/AI/aiKorokPotRootAI.h new file mode 100644 index 00000000..12eb5247 --- /dev/null +++ b/src/Game/AI/AI/aiKorokPotRootAI.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokPotRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokPotRootAI, ksys::act::ai::Ai) +public: + explicit KorokPotRootAI(const InitArg& arg); + ~KorokPotRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCrayLaunchSpeedRate_s{}; + // static_param at offset 0x40 + const float* mCrayLaunchAngularSpeed_s{}; + // map_unit_param at offset 0x48 + const float* mCrayLaunchSpeed_m{}; + // map_unit_param at offset 0x50 + const bool* mIsCrayShot_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokRailMove.cpp b/src/Game/AI/AI/aiKorokRailMove.cpp new file mode 100644 index 00000000..c2138a5e --- /dev/null +++ b/src/Game/AI/AI/aiKorokRailMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiKorokRailMove.h" + +namespace uking::ai { + +KorokRailMove::KorokRailMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokRailMove::~KorokRailMove() = default; + +bool KorokRailMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokRailMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokRailMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokRailMove::loadParams_() { + getStaticParam(&mOnRailDistance_s, "OnRailDistance"); + getStaticParam(&mFarDistance_s, "FarDistance"); + getStaticParam(&mIsIgnoreNoWaitStopPoint_s, "IsIgnoreNoWaitStopPoint"); + getMapUnitParam(&mRailMoveSpeed_m, "RailMoveSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokRailMove.h b/src/Game/AI/AI/aiKorokRailMove.h new file mode 100644 index 00000000..80232a52 --- /dev/null +++ b/src/Game/AI/AI/aiKorokRailMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokRailMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokRailMove, ksys::act::ai::Ai) +public: + explicit KorokRailMove(const InitArg& arg); + ~KorokRailMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mOnRailDistance_s{}; + // static_param at offset 0x40 + const float* mFarDistance_s{}; + // static_param at offset 0x48 + const bool* mIsIgnoreNoWaitStopPoint_s{}; + // map_unit_param at offset 0x50 + const float* mRailMoveSpeed_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokStartStandRoot.cpp b/src/Game/AI/AI/aiKorokStartStandRoot.cpp new file mode 100644 index 00000000..d94981ca --- /dev/null +++ b/src/Game/AI/AI/aiKorokStartStandRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiKorokStartStandRoot.h" + +namespace uking::ai { + +KorokStartStandRoot::KorokStartStandRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +KorokStartStandRoot::~KorokStartStandRoot() = default; + +bool KorokStartStandRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void KorokStartStandRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void KorokStartStandRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void KorokStartStandRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokStartStandRoot.h b/src/Game/AI/AI/aiKorokStartStandRoot.h new file mode 100644 index 00000000..9d90d931 --- /dev/null +++ b/src/Game/AI/AI/aiKorokStartStandRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokStartStandRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(KorokStartStandRoot, ksys::act::ai::Ai) +public: + explicit KorokStartStandRoot(const InitArg& arg); + ~KorokStartStandRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokStoneLift.cpp b/src/Game/AI/AI/aiKorokStoneLift.cpp new file mode 100644 index 00000000..ca862fc5 --- /dev/null +++ b/src/Game/AI/AI/aiKorokStoneLift.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiKorokStoneLift.h" + +namespace uking::ai { + +KorokStoneLift::KorokStoneLift(const InitArg& arg) : SimpleLiftable(arg) {} + +KorokStoneLift::~KorokStoneLift() = default; + +bool KorokStoneLift::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void KorokStoneLift::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void KorokStoneLift::leave_() { + SimpleLiftable::leave_(); +} + +void KorokStoneLift::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokStoneLift.h b/src/Game/AI/AI/aiKorokStoneLift.h new file mode 100644 index 00000000..f21850e2 --- /dev/null +++ b/src/Game/AI/AI/aiKorokStoneLift.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokStoneLift : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(KorokStoneLift, SimpleLiftable) +public: + explicit KorokStoneLift(const InitArg& arg); + ~KorokStoneLift() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokTargetRailMove.cpp b/src/Game/AI/AI/aiKorokTargetRailMove.cpp new file mode 100644 index 00000000..3e622db9 --- /dev/null +++ b/src/Game/AI/AI/aiKorokTargetRailMove.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiKorokTargetRailMove.h" + +namespace uking::ai { + +KorokTargetRailMove::KorokTargetRailMove(const InitArg& arg) : KorokRailMove(arg) {} + +KorokTargetRailMove::~KorokTargetRailMove() = default; + +bool KorokTargetRailMove::init_(sead::Heap* heap) { + return KorokRailMove::init_(heap); +} + +void KorokTargetRailMove::enter_(ksys::act::ai::InlineParamPack* params) { + KorokRailMove::enter_(params); +} + +void KorokTargetRailMove::leave_() { + KorokRailMove::leave_(); +} + +void KorokTargetRailMove::loadParams_() { + KorokRailMove::loadParams_(); + getStaticParam(&mRotSpd_s, "RotSpd"); + getMapUnitParam(&mKorokTargetAppearFrame_m, "KorokTargetAppearFrame"); + getMapUnitParam(&mKorokTargetVanishFrame_m, "KorokTargetVanishFrame"); + getMapUnitParam(&mIsNoAppearEffect_m, "IsNoAppearEffect"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiKorokTargetRailMove.h b/src/Game/AI/AI/aiKorokTargetRailMove.h new file mode 100644 index 00000000..dfac0d49 --- /dev/null +++ b/src/Game/AI/AI/aiKorokTargetRailMove.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiKorokRailMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class KorokTargetRailMove : public KorokRailMove { + SEAD_RTTI_OVERRIDE(KorokTargetRailMove, KorokRailMove) +public: + explicit KorokTargetRailMove(const InitArg& arg); + ~KorokTargetRailMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc0 + const float* mRotSpd_s{}; + // map_unit_param at offset 0xc8 + const int* mKorokTargetAppearFrame_m{}; + // map_unit_param at offset 0xd0 + const int* mKorokTargetVanishFrame_m{}; + // map_unit_param at offset 0xd8 + const bool* mIsNoAppearEffect_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLOSFurthestHitPointFinder.cpp b/src/Game/AI/AI/aiLOSFurthestHitPointFinder.cpp new file mode 100644 index 00000000..b5c61bb7 --- /dev/null +++ b/src/Game/AI/AI/aiLOSFurthestHitPointFinder.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLOSFurthestHitPointFinder.h" + +namespace uking::ai { + +LOSFurthestHitPointFinder::LOSFurthestHitPointFinder(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LOSFurthestHitPointFinder::~LOSFurthestHitPointFinder() = default; + +bool LOSFurthestHitPointFinder::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LOSFurthestHitPointFinder::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LOSFurthestHitPointFinder::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LOSFurthestHitPointFinder::loadParams_() { + getStaticParam(&mMaxNumCheck_s, "MaxNumCheck"); + getStaticParam(&mCheckDistance_s, "CheckDistance"); + getStaticParam(&mOnlyCheckBehind_s, "OnlyCheckBehind"); + getStaticParam(&mUseActionB_s, "UseActionB"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLOSFurthestHitPointFinder.h b/src/Game/AI/AI/aiLOSFurthestHitPointFinder.h new file mode 100644 index 00000000..685bf4d1 --- /dev/null +++ b/src/Game/AI/AI/aiLOSFurthestHitPointFinder.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LOSFurthestHitPointFinder : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LOSFurthestHitPointFinder, ksys::act::ai::Ai) +public: + explicit LOSFurthestHitPointFinder(const InitArg& arg); + ~LOSFurthestHitPointFinder() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x10]; + // static_param at offset 0x48 + const int* mMaxNumCheck_s{}; + // static_param at offset 0x50 + const float* mCheckDistance_s{}; + // static_param at offset 0x58 + const bool* mOnlyCheckBehind_s{}; + // static_param at offset 0x60 + const bool* mUseActionB_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindBait.cpp b/src/Game/AI/AI/aiLandHumEnemyFindBait.cpp new file mode 100644 index 00000000..9c6c767c --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindBait.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLandHumEnemyFindBait.h" + +namespace uking::ai { + +LandHumEnemyFindBait::LandHumEnemyFindBait(const InitArg& arg) : UnarmedEnemySearch(arg) {} + +LandHumEnemyFindBait::~LandHumEnemyFindBait() = default; + +void LandHumEnemyFindBait::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearch::enter_(params); +} + +void LandHumEnemyFindBait::leave_() { + UnarmedEnemySearch::leave_(); +} + +void LandHumEnemyFindBait::loadParams_() { + UnarmedEnemySearch::loadParams_(); + getStaticParam(&mRepathTime_s, "RepathTime"); + getDynamicParam(&mTargetBait_d, "TargetBait"); + getDynamicParam(&mIsNotice_d, "IsNotice"); + getStaticParam(&mIsDropWeapon_s, "IsDropWeapon"); + getStaticParam(&mIsValidForceNeck_s, "IsValidForceNeck"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindBait.h b/src/Game/AI/AI/aiLandHumEnemyFindBait.h new file mode 100644 index 00000000..6d07d531 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindBait.h @@ -0,0 +1,31 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearch.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyFindBait : public UnarmedEnemySearch { + SEAD_RTTI_OVERRIDE(LandHumEnemyFindBait, UnarmedEnemySearch) +public: + explicit LandHumEnemyFindBait(const InitArg& arg); + ~LandHumEnemyFindBait() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mRepathTime_s{}; + // dynamic_param at offset 0x70 + ksys::act::BaseProcLink* mTargetBait_d{}; + // static_param at offset 0x78 + const bool* mIsDropWeapon_s{}; + // static_param at offset 0x80 + const bool* mIsValidForceNeck_s{}; + // dynamic_param at offset 0x88 + bool* mIsNotice_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.cpp b/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.cpp new file mode 100644 index 00000000..0d983ce4 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h" + +namespace uking::ai { + +LandHumEnemyFindBaitWeapon::LandHumEnemyFindBaitWeapon(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +LandHumEnemyFindBaitWeapon::~LandHumEnemyFindBaitWeapon() = default; + +void LandHumEnemyFindBaitWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LandHumEnemyFindBaitWeapon::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LandHumEnemyFindBaitWeapon::loadParams_() { + getDynamicParam(&mTargetWeapon_d, "TargetWeapon"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h b/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h new file mode 100644 index 00000000..f1a6b9b0 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyFindBaitWeapon : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LandHumEnemyFindBaitWeapon, ksys::act::ai::Ai) +public: + explicit LandHumEnemyFindBaitWeapon(const InitArg& arg); + ~LandHumEnemyFindBaitWeapon() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetWeapon_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindPlayer.cpp b/src/Game/AI/AI/aiLandHumEnemyFindPlayer.cpp new file mode 100644 index 00000000..94021c13 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindPlayer.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" + +namespace uking::ai { + +LandHumEnemyFindPlayer::LandHumEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +LandHumEnemyFindPlayer::~LandHumEnemyFindPlayer() = default; + +void LandHumEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void LandHumEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void LandHumEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); + getStaticParam(&mExplosivesAvoidDist_s, "ExplosivesAvoidDist"); + getStaticParam(&mExplosivesAvoidSpeed_s, "ExplosivesAvoidSpeed"); + getStaticParam(&mExplosivesAvoidAng_s, "ExplosivesAvoidAng"); + getStaticParam(&mChemicalSearchDist_s, "ChemicalSearchDist"); + getStaticParam(&mNoSearchDist_s, "NoSearchDist"); + getStaticParam(&mVoltage_s, "Voltage"); + getStaticParam(&mChemicalActionDist_s, "ChemicalActionDist"); + getStaticParam(&mThrowWeaponPer_s, "ThrowWeaponPer"); + getStaticParam(&mThrowWeaponDist_s, "ThrowWeaponDist"); + getStaticParam(&mNoChemSearchWpIdx_s, "NoChemSearchWpIdx"); + getStaticParam(&mNoBurnWaterDepth_s, "NoBurnWaterDepth"); + getStaticParam(&mNearScaffoldDist_s, "NearScaffoldDist"); + getStaticParam(&mClimbVmin_s, "ClimbVmin"); + getStaticParam(&mClimbVmax_s, "ClimbVmax"); + getStaticParam(&mClimbHmax_s, "ClimbHmax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyFindPlayer.h b/src/Game/AI/AI/aiLandHumEnemyFindPlayer.h new file mode 100644 index 00000000..c3d35c80 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyFindPlayer.h @@ -0,0 +1,51 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(LandHumEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit LandHumEnemyFindPlayer(const InitArg& arg); + ~LandHumEnemyFindPlayer() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const int* mThrowWeaponPer_s{}; + // static_param at offset 0x148 + const int* mNoChemSearchWpIdx_s{}; + // static_param at offset 0x150 + const float* mExplosivesAvoidDist_s{}; + // static_param at offset 0x158 + const float* mExplosivesAvoidSpeed_s{}; + // static_param at offset 0x160 + const float* mExplosivesAvoidAng_s{}; + // static_param at offset 0x168 + const float* mChemicalSearchDist_s{}; + // static_param at offset 0x170 + const float* mNoSearchDist_s{}; + // static_param at offset 0x178 + const float* mVoltage_s{}; + // static_param at offset 0x180 + const float* mChemicalActionDist_s{}; + // static_param at offset 0x188 + const float* mThrowWeaponDist_s{}; + // static_param at offset 0x190 + const float* mNoBurnWaterDepth_s{}; + // static_param at offset 0x198 + const float* mNearScaffoldDist_s{}; + // static_param at offset 0x1a0 + const float* mClimbVmin_s{}; + // static_param at offset 0x1a8 + const float* mClimbVmax_s{}; + // static_param at offset 0x1b0 + const float* mClimbHmax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyNormal.cpp b/src/Game/AI/AI/aiLandHumEnemyNormal.cpp new file mode 100644 index 00000000..b347037c --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyNormal.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLandHumEnemyNormal.h" + +namespace uking::ai { + +LandHumEnemyNormal::LandHumEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +LandHumEnemyNormal::~LandHumEnemyNormal() = default; + +bool LandHumEnemyNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void LandHumEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void LandHumEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void LandHumEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mTerrorIgnoreDist_s, "TerrorIgnoreDist"); + getStaticParam(&mExplosivesSearchDist_s, "ExplosivesSearchDist"); + getStaticParam(&mExplosivesSearchSpeed_s, "ExplosivesSearchSpeed"); + getStaticParam(&mExplosivesSearchAng_s, "ExplosivesSearchAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyNormal.h b/src/Game/AI/AI/aiLandHumEnemyNormal.h new file mode 100644 index 00000000..6ca2aec6 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyNormal.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(LandHumEnemyNormal, EnemyNormal) +public: + explicit LandHumEnemyNormal(const InitArg& arg); + ~LandHumEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mTerrorIgnoreDist_s{}; + // static_param at offset 0x3d8 + const float* mExplosivesSearchDist_s{}; + // static_param at offset 0x3e0 + const float* mExplosivesSearchSpeed_s{}; + // static_param at offset 0x3e8 + const float* mExplosivesSearchAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.cpp b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.cpp new file mode 100644 index 00000000..5395c576 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiLandHumEnemyThrowWeapon.h" + +namespace uking::ai { + +LandHumEnemyThrowWeapon::LandHumEnemyThrowWeapon(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LandHumEnemyThrowWeapon::~LandHumEnemyThrowWeapon() = default; + +void LandHumEnemyThrowWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LandHumEnemyThrowWeapon::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LandHumEnemyThrowWeapon::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mThrowWeaponNearDist_s, "ThrowWeaponNearDist"); + getStaticParam(&mWaitTimeMax_s, "WaitTimeMax"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h new file mode 100644 index 00000000..da70cf17 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyThrowWeapon.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyThrowWeapon : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LandHumEnemyThrowWeapon, ksys::act::ai::Ai) +public: + explicit LandHumEnemyThrowWeapon(const InitArg& arg); + ~LandHumEnemyThrowWeapon() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mThrowWeaponNearDist_s{}; + // static_param at offset 0x48 + const int* mWaitTimeMax_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.cpp b/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.cpp new file mode 100644 index 00000000..d006b356 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiLandHumEnemyUnarmedBattle.h" + +namespace uking::ai { + +LandHumEnemyUnarmedBattle::LandHumEnemyUnarmedBattle(const InitArg& arg) + : UnarmedEnemySearch(arg) {} + +LandHumEnemyUnarmedBattle::~LandHumEnemyUnarmedBattle() = default; + +void LandHumEnemyUnarmedBattle::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearch::enter_(params); +} + +void LandHumEnemyUnarmedBattle::leave_() { + UnarmedEnemySearch::leave_(); +} + +void LandHumEnemyUnarmedBattle::loadParams_() { + UnarmedEnemySearch::loadParams_(); + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mEquipItemSearchIdx_s, "EquipItemSearchIdx"); + getStaticParam(&mSearchWeaponDist_s, "SearchWeaponDist"); + getStaticParam(&mSearchBaseWeaponDist_s, "SearchBaseWeaponDist"); + getStaticParam(&mSearchWeaponTargetDist_s, "SearchWeaponTargetDist"); + getStaticParam(&mSearchBowTargetDist_s, "SearchBowTargetDist"); + getStaticParam(&mGrabCheckRadius_s, "GrabCheckRadius"); + getStaticParam(&mSearchObjectDist_s, "SearchObjectDist"); + getStaticParam(&mItemChaseableSpd_s, "ItemChaseableSpd"); + getStaticParam(&mAttOffset_s, "AttOffset"); + getStaticParam(&mCanGrabHeavy_s, "CanGrabHeavy"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mExplosivesAvoidDist_s, "ExplosivesAvoidDist"); + getStaticParam(&mExplosivesAvoidSpeed_s, "ExplosivesAvoidSpeed"); + getStaticParam(&mExplosivesAvoidAng_s, "ExplosivesAvoidAng"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mLostRange_s, "LostRange"); + getStaticParam(&mOnCoHitAllowGrabAngle_s, "OnCoHitAllowGrabAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.h b/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.h new file mode 100644 index 00000000..57424bca --- /dev/null +++ b/src/Game/AI/AI/aiLandHumEnemyUnarmedBattle.h @@ -0,0 +1,61 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearch.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumEnemyUnarmedBattle : public UnarmedEnemySearch { + SEAD_RTTI_OVERRIDE(LandHumEnemyUnarmedBattle, UnarmedEnemySearch) +public: + explicit LandHumEnemyUnarmedBattle(const InitArg& arg); + ~LandHumEnemyUnarmedBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mEquipItemSearchIdx_s{}; + // static_param at offset 0x70 + const int* mLostTimer_s{}; + // static_param at offset 0x78 + const float* mSearchWeaponDist_s{}; + // static_param at offset 0x80 + const float* mSearchBaseWeaponDist_s{}; + // static_param at offset 0x88 + const float* mSearchObjectDist_s{}; + // static_param at offset 0x90 + const float* mSearchWeaponTargetDist_s{}; + // static_param at offset 0x98 + const float* mSearchBowTargetDist_s{}; + // static_param at offset 0xa0 + const float* mGrabCheckRadius_s{}; + // static_param at offset 0xa8 + const float* mItemChaseableSpd_s{}; + // static_param at offset 0xb0 + const sead::Vector3f* mAttOffset_s{}; + // static_param at offset 0xb8 + const bool* mCanGrabHeavy_s{}; + // static_param at offset 0xc0 + const int* mRepathTime_s{}; + // static_param at offset 0xc8 + const float* mExplosivesAvoidDist_s{}; + // static_param at offset 0xd0 + const float* mExplosivesAvoidSpeed_s{}; + // static_param at offset 0xd8 + const float* mExplosivesAvoidAng_s{}; + // static_param at offset 0xe0 + const float* mLostVMin_s{}; + // static_param at offset 0xe8 + const float* mLostVMax_s{}; + // static_param at offset 0xf0 + const float* mLostRange_s{}; + // static_param at offset 0xf8 + const float* mOnCoHitAllowGrabAngle_s{}; + // dynamic_param at offset 0x100 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.cpp b/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.cpp new file mode 100644 index 00000000..2f93924f --- /dev/null +++ b/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiLandHumGourmandEnemyNormal.h" + +namespace uking::ai { + +LandHumGourmandEnemyNormal::LandHumGourmandEnemyNormal(const InitArg& arg) + : LandHumEnemyNormal(arg) {} + +LandHumGourmandEnemyNormal::~LandHumGourmandEnemyNormal() = default; + +bool LandHumGourmandEnemyNormal::init_(sead::Heap* heap) { + return LandHumEnemyNormal::init_(heap); +} + +void LandHumGourmandEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyNormal::enter_(params); +} + +void LandHumGourmandEnemyNormal::leave_() { + LandHumEnemyNormal::leave_(); +} + +void LandHumGourmandEnemyNormal::loadParams_() { + LandHumEnemyNormal::loadParams_(); + getStaticParam(&mRefindBaitTime_s, "RefindBaitTime"); + getStaticParam(&mEatArea_s, "EatArea"); + getStaticParam(&mEatNavType_s, "EatNavType"); + getAITreeVariable(&mTargetBaitActorLink_a, "TargetBaitActorLink"); + getAITreeVariable(&mIsTrgChangeUnderWaterState_a, "IsTrgChangeUnderWaterState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.h b/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.h new file mode 100644 index 00000000..653e1cd3 --- /dev/null +++ b/src/Game/AI/AI/aiLandHumGourmandEnemyNormal.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandHumGourmandEnemyNormal : public LandHumEnemyNormal { + SEAD_RTTI_OVERRIDE(LandHumGourmandEnemyNormal, LandHumEnemyNormal) +public: + explicit LandHumGourmandEnemyNormal(const InitArg& arg); + ~LandHumGourmandEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x400 + const int* mRefindBaitTime_s{}; + // static_param at offset 0x408 + const int* mEatArea_s{}; + // static_param at offset 0x410 + const int* mEatNavType_s{}; + // aitree_variable at offset 0x430 + void* mTargetBaitActorLink_a{}; + // aitree_variable at offset 0x438 + bool* mIsTrgChangeUnderWaterState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandingChemicalBall.cpp b/src/Game/AI/AI/aiLandingChemicalBall.cpp new file mode 100644 index 00000000..c67dea91 --- /dev/null +++ b/src/Game/AI/AI/aiLandingChemicalBall.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiLandingChemicalBall.h" + +namespace uking::ai { + +LandingChemicalBall::LandingChemicalBall(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LandingChemicalBall::~LandingChemicalBall() = default; + +bool LandingChemicalBall::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LandingChemicalBall::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LandingChemicalBall::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LandingChemicalBall::loadParams_() { + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAttackIntensity_s, "AttackIntensity"); + getStaticParam(&mAttackType_s, "AttackType"); + getStaticParam(&mCutGrassType_s, "CutGrassType"); + getStaticParam(&mScale_s, "Scale"); + getStaticParam(&mIsUseAtCollision_s, "IsUseAtCollision"); + getStaticParam(&mCheckColConInfo_s, "CheckColConInfo"); + getStaticParam(&mExpandActorName_s, "ExpandActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLandingChemicalBall.h b/src/Game/AI/AI/aiLandingChemicalBall.h new file mode 100644 index 00000000..910f134e --- /dev/null +++ b/src/Game/AI/AI/aiLandingChemicalBall.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LandingChemicalBall : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LandingChemicalBall, ksys::act::ai::Ai) +public: + explicit LandingChemicalBall(const InitArg& arg); + ~LandingChemicalBall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackPower_s{}; + // static_param at offset 0x40 + const int* mAttackIntensity_s{}; + // static_param at offset 0x48 + const int* mAttackType_s{}; + // static_param at offset 0x50 + const int* mCutGrassType_s{}; + // static_param at offset 0x58 + const float* mScale_s{}; + // static_param at offset 0x60 + const bool* mIsUseAtCollision_s{}; + // static_param at offset 0x68 + const bool* mCheckColConInfo_s{}; + // static_param at offset 0x70 + sead::SafeString mExpandActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLargeCannonAttackRoot.cpp b/src/Game/AI/AI/aiLargeCannonAttackRoot.cpp new file mode 100644 index 00000000..4329a026 --- /dev/null +++ b/src/Game/AI/AI/aiLargeCannonAttackRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLargeCannonAttackRoot.h" + +namespace uking::ai { + +LargeCannonAttackRoot::LargeCannonAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LargeCannonAttackRoot::~LargeCannonAttackRoot() = default; + +bool LargeCannonAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LargeCannonAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LargeCannonAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LargeCannonAttackRoot::loadParams_() { + getStaticParam(&mAttackWaitTime_s, "AttackWaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLargeCannonAttackRoot.h b/src/Game/AI/AI/aiLargeCannonAttackRoot.h new file mode 100644 index 00000000..f3def749 --- /dev/null +++ b/src/Game/AI/AI/aiLargeCannonAttackRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LargeCannonAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LargeCannonAttackRoot, ksys::act::ai::Ai) +public: + explicit LargeCannonAttackRoot(const InitArg& arg); + ~LargeCannonAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAttackWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLargeEnemyFindPlayer.cpp b/src/Game/AI/AI/aiLargeEnemyFindPlayer.cpp new file mode 100644 index 00000000..1d6d1618 --- /dev/null +++ b/src/Game/AI/AI/aiLargeEnemyFindPlayer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLargeEnemyFindPlayer.h" + +namespace uking::ai { + +LargeEnemyFindPlayer::LargeEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +LargeEnemyFindPlayer::~LargeEnemyFindPlayer() = default; + +bool LargeEnemyFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void LargeEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void LargeEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void LargeEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLargeEnemyFindPlayer.h b/src/Game/AI/AI/aiLargeEnemyFindPlayer.h new file mode 100644 index 00000000..a1c69264 --- /dev/null +++ b/src/Game/AI/AI/aiLargeEnemyFindPlayer.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LargeEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(LargeEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit LargeEnemyFindPlayer(const InitArg& arg); + ~LargeEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastAttackerSelect.cpp b/src/Game/AI/AI/aiLastAttackerSelect.cpp new file mode 100644 index 00000000..476e42c9 --- /dev/null +++ b/src/Game/AI/AI/aiLastAttackerSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiLastAttackerSelect.h" + +namespace uking::ai { + +LastAttackerSelect::LastAttackerSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastAttackerSelect::~LastAttackerSelect() = default; + +bool LastAttackerSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastAttackerSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastAttackerSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastAttackerSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastAttackerSelect.h b/src/Game/AI/AI/aiLastAttackerSelect.h new file mode 100644 index 00000000..8f6be9f0 --- /dev/null +++ b/src/Game/AI/AI/aiLastAttackerSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastAttackerSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastAttackerSelect, ksys::act::ai::Ai) +public: + explicit LastAttackerSelect(const InitArg& arg); + ~LastAttackerSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.cpp b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.cpp new file mode 100644 index 00000000..f86f5252 --- /dev/null +++ b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLastAttackerSpecialActionSelect.h" + +namespace uking::ai { + +LastAttackerSpecialActionSelect::LastAttackerSpecialActionSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +LastAttackerSpecialActionSelect::~LastAttackerSpecialActionSelect() = default; + +bool LastAttackerSpecialActionSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastAttackerSpecialActionSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastAttackerSpecialActionSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastAttackerSpecialActionSelect::loadParams_() { + getStaticParam(&mIsAngerActorSpecial_s, "IsAngerActorSpecial"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h new file mode 100644 index 00000000..d85ff375 --- /dev/null +++ b/src/Game/AI/AI/aiLastAttackerSpecialActionSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastAttackerSpecialActionSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastAttackerSpecialActionSelect, ksys::act::ai::Ai) +public: + explicit LastAttackerSpecialActionSelect(const InitArg& arg); + ~LastAttackerSpecialActionSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsAngerActorSpecial_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossBeamAttackRoot.cpp b/src/Game/AI/AI/aiLastBossBeamAttackRoot.cpp new file mode 100644 index 00000000..5d23e3f0 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossBeamAttackRoot.cpp @@ -0,0 +1,41 @@ +#include "Game/AI/AI/aiLastBossBeamAttackRoot.h" + +namespace uking::ai { + +LastBossBeamAttackRoot::LastBossBeamAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossBeamAttackRoot::~LastBossBeamAttackRoot() = default; + +bool LastBossBeamAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossBeamAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossBeamAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossBeamAttackRoot::loadParams_() { + getStaticParam(&mAttackPowerForPlayer_s, "AttackPowerForPlayer"); + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mAddAttackPower_s, "AddAttackPower"); + getStaticParam(&mWaitTime_s, "WaitTime"); + getStaticParam(&mKeepDistance_s, "KeepDistance"); + getStaticParam(&mMoveSpeed_s, "MoveSpeed"); + getStaticParam(&mInitSpeed_s, "InitSpeed"); + getStaticParam(&mAccel_s, "Accel"); + getStaticParam(&mKeepDistanceRand_s, "KeepDistanceRand"); + getStaticParam(&mRandKeepFrame_s, "RandKeepFrame"); + getStaticParam(&mBrakeStartFrame_s, "BrakeStartFrame"); + getStaticParam(&mMoveYSpeed_s, "MoveYSpeed"); + getStaticParam(&mIsMove_s, "IsMove"); + getStaticParam(&mIsChangeable_s, "IsChangeable"); + getStaticParam(&mIsCreateGuardEffect_s, "IsCreateGuardEffect"); + getStaticParam(&mReflectOffset_s, "ReflectOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossBeamAttackRoot.h b/src/Game/AI/AI/aiLastBossBeamAttackRoot.h new file mode 100644 index 00000000..f71af02c --- /dev/null +++ b/src/Game/AI/AI/aiLastBossBeamAttackRoot.h @@ -0,0 +1,55 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossBeamAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossBeamAttackRoot, ksys::act::ai::Ai) +public: + explicit LastBossBeamAttackRoot(const InitArg& arg); + ~LastBossBeamAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackPowerForPlayer_s{}; + // static_param at offset 0x40 + const int* mAttackPower_s{}; + // static_param at offset 0x48 + const int* mAtMinDamage_s{}; + // static_param at offset 0x50 + const int* mAddAttackPower_s{}; + // static_param at offset 0x58 + const float* mWaitTime_s{}; + // static_param at offset 0x60 + const float* mKeepDistance_s{}; + // static_param at offset 0x68 + const float* mMoveSpeed_s{}; + // static_param at offset 0x70 + const float* mInitSpeed_s{}; + // static_param at offset 0x78 + const float* mAccel_s{}; + // static_param at offset 0x80 + const float* mKeepDistanceRand_s{}; + // static_param at offset 0x88 + const float* mRandKeepFrame_s{}; + // static_param at offset 0x90 + const float* mBrakeStartFrame_s{}; + // static_param at offset 0x98 + const float* mMoveYSpeed_s{}; + // static_param at offset 0xa0 + const bool* mIsMove_s{}; + // static_param at offset 0xa8 + const bool* mIsChangeable_s{}; + // static_param at offset 0xb0 + const bool* mIsCreateGuardEffect_s{}; + // static_param at offset 0xb8 + const sead::Vector3f* mReflectOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossDemoWarpMove.cpp b/src/Game/AI/AI/aiLastBossDemoWarpMove.cpp new file mode 100644 index 00000000..e7dd99ea --- /dev/null +++ b/src/Game/AI/AI/aiLastBossDemoWarpMove.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiLastBossDemoWarpMove.h" + +namespace uking::ai { + +LastBossDemoWarpMove::LastBossDemoWarpMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossDemoWarpMove::~LastBossDemoWarpMove() = default; + +bool LastBossDemoWarpMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossDemoWarpMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossDemoWarpMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossDemoWarpMove::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossDemoWarpMove.h b/src/Game/AI/AI/aiLastBossDemoWarpMove.h new file mode 100644 index 00000000..e544be43 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossDemoWarpMove.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossDemoWarpMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossDemoWarpMove, ksys::act::ai::Ai) +public: + explicit LastBossDemoWarpMove(const InitArg& arg); + ~LastBossDemoWarpMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossDemoWarpRoot.cpp b/src/Game/AI/AI/aiLastBossDemoWarpRoot.cpp new file mode 100644 index 00000000..c213c4ab --- /dev/null +++ b/src/Game/AI/AI/aiLastBossDemoWarpRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLastBossDemoWarpRoot.h" + +namespace uking::ai { + +LastBossDemoWarpRoot::LastBossDemoWarpRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossDemoWarpRoot::~LastBossDemoWarpRoot() = default; + +bool LastBossDemoWarpRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossDemoWarpRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossDemoWarpRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossDemoWarpRoot::loadParams_() { + getStaticParam(&mIsPartsActorTgOn_s, "IsPartsActorTgOn"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossDemoWarpRoot.h b/src/Game/AI/AI/aiLastBossDemoWarpRoot.h new file mode 100644 index 00000000..61f96fdf --- /dev/null +++ b/src/Game/AI/AI/aiLastBossDemoWarpRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossDemoWarpRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossDemoWarpRoot, ksys::act::ai::Ai) +public: + explicit LastBossDemoWarpRoot(const InitArg& arg); + ~LastBossDemoWarpRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsPartsActorTgOn_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossNormalWarpRoot.cpp b/src/Game/AI/AI/aiLastBossNormalWarpRoot.cpp new file mode 100644 index 00000000..412be7ac --- /dev/null +++ b/src/Game/AI/AI/aiLastBossNormalWarpRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiLastBossNormalWarpRoot.h" + +namespace uking::ai { + +LastBossNormalWarpRoot::LastBossNormalWarpRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossNormalWarpRoot::~LastBossNormalWarpRoot() = default; + +bool LastBossNormalWarpRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossNormalWarpRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossNormalWarpRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossNormalWarpRoot::loadParams_() { + getStaticParam(&mIsKeepDisableDraw_s, "IsKeepDisableDraw"); + getStaticParam(&mSleepPartsActorName_s, "SleepPartsActorName"); + getDynamicParam(&mIsReturnHome_d, "IsReturnHome"); + getDynamicParam(&mIsForceWarp_d, "IsForceWarp"); + getDynamicParam(&mIsPartsActorTgOn_d, "IsPartsActorTgOn"); + getDynamicParam(&mIsPartsWarpEffectSync_d, "IsPartsWarpEffectSync"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossNormalWarpRoot.h b/src/Game/AI/AI/aiLastBossNormalWarpRoot.h new file mode 100644 index 00000000..062f704f --- /dev/null +++ b/src/Game/AI/AI/aiLastBossNormalWarpRoot.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossNormalWarpRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossNormalWarpRoot, ksys::act::ai::Ai) +public: + explicit LastBossNormalWarpRoot(const InitArg& arg); + ~LastBossNormalWarpRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsKeepDisableDraw_s{}; + // static_param at offset 0x40 + sead::SafeString mSleepPartsActorName_s{}; + // dynamic_param at offset 0x50 + bool* mIsReturnHome_d{}; + // dynamic_param at offset 0x58 + bool* mIsForceWarp_d{}; + // dynamic_param at offset 0x60 + bool* mIsPartsActorTgOn_d{}; + // dynamic_param at offset 0x68 + bool* mIsPartsWarpEffectSync_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossRailWarpRoot.cpp b/src/Game/AI/AI/aiLastBossRailWarpRoot.cpp new file mode 100644 index 00000000..7adb1af7 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossRailWarpRoot.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiLastBossRailWarpRoot.h" + +namespace uking::ai { + +LastBossRailWarpRoot::LastBossRailWarpRoot(const InitArg& arg) : LastBossNormalWarpRoot(arg) {} + +LastBossRailWarpRoot::~LastBossRailWarpRoot() = default; + +void LastBossRailWarpRoot::loadParams_() { + LastBossNormalWarpRoot::loadParams_(); + getDynamicParam(&mRailIndex_d, "RailIndex"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossRailWarpRoot.h b/src/Game/AI/AI/aiLastBossRailWarpRoot.h new file mode 100644 index 00000000..8c7d0504 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossRailWarpRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiLastBossNormalWarpRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossRailWarpRoot : public LastBossNormalWarpRoot { + SEAD_RTTI_OVERRIDE(LastBossRailWarpRoot, LastBossNormalWarpRoot) +public: + explicit LastBossRailWarpRoot(const InitArg& arg); + ~LastBossRailWarpRoot() override; + + void loadParams_() override; + +protected: + // dynamic_param at offset 0x80 + int* mRailIndex_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossRoot.cpp b/src/Game/AI/AI/aiLastBossRoot.cpp new file mode 100644 index 00000000..df41defb --- /dev/null +++ b/src/Game/AI/AI/aiLastBossRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiLastBossRoot.h" + +namespace uking::ai { + +LastBossRoot::LastBossRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossRoot::~LastBossRoot() = default; + +bool LastBossRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossRoot::loadParams_() { + getStaticParam(&mForceRecoverHitMax_s, "ForceRecoverHitMax"); + getStaticParam(&mForceRecoverDamageMax_s, "ForceRecoverDamageMax"); + getStaticParam(&mAddForceRecoverHitNum_s, "AddForceRecoverHitNum"); + getStaticParam(&mAddForceRecoverDamage_s, "AddForceRecoverDamage"); + getStaticParam(&mAuraHPRate_s, "AuraHPRate"); + getStaticParam(&mAuraDemoName_s, "AuraDemoName"); + getStaticParam(&mAuraEntryName_s, "AuraEntryName"); + getStaticParam(&mAuraWallEntry_s, "AuraWallEntry"); + getStaticParam(&mAuraDemoDownEntry_s, "AuraDemoDownEntry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossRoot.h b/src/Game/AI/AI/aiLastBossRoot.h new file mode 100644 index 00000000..56add8e9 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossRoot.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossRoot, ksys::act::ai::Ai) +public: + explicit LastBossRoot(const InitArg& arg); + ~LastBossRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mForceRecoverHitMax_s{}; + // static_param at offset 0x40 + const int* mForceRecoverDamageMax_s{}; + // static_param at offset 0x48 + const int* mAddForceRecoverHitNum_s{}; + // static_param at offset 0x50 + const int* mAddForceRecoverDamage_s{}; + // static_param at offset 0x58 + const float* mAuraHPRate_s{}; + // static_param at offset 0x60 + sead::SafeString mAuraDemoName_s{}; + // static_param at offset 0x70 + sead::SafeString mAuraEntryName_s{}; + // static_param at offset 0x80 + sead::SafeString mAuraWallEntry_s{}; + // static_param at offset 0x90 + sead::SafeString mAuraDemoDownEntry_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShieldBash.cpp b/src/Game/AI/AI/aiLastBossShieldBash.cpp new file mode 100644 index 00000000..63055752 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShieldBash.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLastBossShieldBash.h" + +namespace uking::ai { + +LastBossShieldBash::LastBossShieldBash(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossShieldBash::~LastBossShieldBash() = default; + +bool LastBossShieldBash::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossShieldBash::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossShieldBash::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossShieldBash::loadParams_() { + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShieldBash.h b/src/Game/AI/AI/aiLastBossShieldBash.h new file mode 100644 index 00000000..0a03f4d9 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShieldBash.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossShieldBash : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossShieldBash, ksys::act::ai::Ai) +public: + explicit LastBossShieldBash(const InitArg& arg); + ~LastBossShieldBash() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsAttackPatternFixed_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.cpp b/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.cpp new file mode 100644 index 00000000..21922c50 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLastBossShootGaleArrowRoot.h" + +namespace uking::ai { + +LastBossShootGaleArrowRoot::LastBossShootGaleArrowRoot(const InitArg& arg) + : LastBossShootNormalArrowRoot(arg) {} + +LastBossShootGaleArrowRoot::~LastBossShootGaleArrowRoot() = default; + +bool LastBossShootGaleArrowRoot::init_(sead::Heap* heap) { + return LastBossShootNormalArrowRoot::init_(heap); +} + +void LastBossShootGaleArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + LastBossShootNormalArrowRoot::enter_(params); +} + +void LastBossShootGaleArrowRoot::leave_() { + LastBossShootNormalArrowRoot::leave_(); +} + +void LastBossShootGaleArrowRoot::loadParams_() { + LastBossShootNormalArrowRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.h b/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.h new file mode 100644 index 00000000..79e562e0 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShootGaleArrowRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLastBossShootNormalArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossShootGaleArrowRoot : public LastBossShootNormalArrowRoot { + SEAD_RTTI_OVERRIDE(LastBossShootGaleArrowRoot, LastBossShootNormalArrowRoot) +public: + explicit LastBossShootGaleArrowRoot(const InitArg& arg); + ~LastBossShootGaleArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.cpp b/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.cpp new file mode 100644 index 00000000..026236f3 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiLastBossShootNormalArrowRoot.h" + +namespace uking::ai { + +LastBossShootNormalArrowRoot::LastBossShootNormalArrowRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +LastBossShootNormalArrowRoot::~LastBossShootNormalArrowRoot() = default; + +bool LastBossShootNormalArrowRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossShootNormalArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossShootNormalArrowRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossShootNormalArrowRoot::loadParams_() { + getStaticParam(&mArrowNum_s, "ArrowNum"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAttackPowerForPlayer_s, "AttackPowerForPlayer"); + getStaticParam(&mBattleNodeOffsetLR_s, "BattleNodeOffsetLR"); + getStaticParam(&mBattleNodeOffsetUD_s, "BattleNodeOffsetUD"); + getStaticParam(&mIsPrepreNextArrow_s, "IsPrepreNextArrow"); + getStaticParam(&mArrowName_s, "ArrowName"); + getStaticParam(&mPartsName_s, "PartsName"); + getStaticParam(&mReflectOffset_s, "ReflectOffset"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.h b/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.h new file mode 100644 index 00000000..9af314a1 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossShootNormalArrowRoot.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossShootNormalArrowRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossShootNormalArrowRoot, ksys::act::ai::Ai) +public: + explicit LastBossShootNormalArrowRoot(const InitArg& arg); + ~LastBossShootNormalArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mArrowNum_s{}; + // static_param at offset 0x40 + const int* mAtMinDamage_s{}; + // static_param at offset 0x48 + const int* mAttackPower_s{}; + // static_param at offset 0x50 + const int* mAttackPowerForPlayer_s{}; + // static_param at offset 0x58 + const float* mBattleNodeOffsetLR_s{}; + // static_param at offset 0x60 + const float* mBattleNodeOffsetUD_s{}; + // static_param at offset 0x68 + const bool* mIsPrepreNextArrow_s{}; + // static_param at offset 0x70 + sead::SafeString mArrowName_s{}; + // static_param at offset 0x80 + sead::SafeString mPartsName_s{}; + // static_param at offset 0x90 + const sead::Vector3f* mReflectOffset_s{}; + // dynamic_param at offset 0x98 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossSwordWhirlSlash.cpp b/src/Game/AI/AI/aiLastBossSwordWhirlSlash.cpp new file mode 100644 index 00000000..d84d79ce --- /dev/null +++ b/src/Game/AI/AI/aiLastBossSwordWhirlSlash.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLastBossSwordWhirlSlash.h" + +namespace uking::ai { + +LastBossSwordWhirlSlash::LastBossSwordWhirlSlash(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossSwordWhirlSlash::~LastBossSwordWhirlSlash() = default; + +bool LastBossSwordWhirlSlash::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossSwordWhirlSlash::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossSwordWhirlSlash::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossSwordWhirlSlash::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mIsNoCharge_d, "IsNoCharge"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossSwordWhirlSlash.h b/src/Game/AI/AI/aiLastBossSwordWhirlSlash.h new file mode 100644 index 00000000..a96e7c37 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossSwordWhirlSlash.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossSwordWhirlSlash : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossSwordWhirlSlash, ksys::act::ai::Ai) +public: + explicit LastBossSwordWhirlSlash(const InitArg& arg); + ~LastBossSwordWhirlSlash() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + bool* mIsNoCharge_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossThunderRoot.cpp b/src/Game/AI/AI/aiLastBossThunderRoot.cpp new file mode 100644 index 00000000..8b3c1f59 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossThunderRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiLastBossThunderRoot.h" + +namespace uking::ai { + +LastBossThunderRoot::LastBossThunderRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossThunderRoot::~LastBossThunderRoot() = default; + +bool LastBossThunderRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossThunderRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossThunderRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossThunderRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossThunderRoot.h b/src/Game/AI/AI/aiLastBossThunderRoot.h new file mode 100644 index 00000000..e21f80bd --- /dev/null +++ b/src/Game/AI/AI/aiLastBossThunderRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossThunderRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossThunderRoot, ksys::act::ai::Ai) +public: + explicit LastBossThunderRoot(const InitArg& arg); + ~LastBossThunderRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossWeaponAttackRoot.cpp b/src/Game/AI/AI/aiLastBossWeaponAttackRoot.cpp new file mode 100644 index 00000000..1d885050 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossWeaponAttackRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiLastBossWeaponAttackRoot.h" + +namespace uking::ai { + +LastBossWeaponAttackRoot::LastBossWeaponAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LastBossWeaponAttackRoot::~LastBossWeaponAttackRoot() = default; + +bool LastBossWeaponAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LastBossWeaponAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LastBossWeaponAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LastBossWeaponAttackRoot::loadParams_() { + getStaticParam(&mEnemyType_s, "EnemyType"); + getStaticParam(&mIsStartBossBgm_s, "IsStartBossBgm"); + getStaticParam(&mChaseDist_s, "ChaseDist"); + getStaticParam(&mChaseDistOffset_s, "ChaseDistOffset"); + getStaticParam(&mReappearanceDist_s, "ReappearanceDist"); + getStaticParam(&mReappearanceDistOffset_s, "ReappearanceDistOffset"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLastBossWeaponAttackRoot.h b/src/Game/AI/AI/aiLastBossWeaponAttackRoot.h new file mode 100644 index 00000000..906d0295 --- /dev/null +++ b/src/Game/AI/AI/aiLastBossWeaponAttackRoot.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LastBossWeaponAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LastBossWeaponAttackRoot, ksys::act::ai::Ai) +public: + explicit LastBossWeaponAttackRoot(const InitArg& arg); + ~LastBossWeaponAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mEnemyType_s{}; + // static_param at offset 0x40 + const bool* mIsStartBossBgm_s{}; + // static_param at offset 0x48 + const sead::Vector3f* mChaseDist_s{}; + // static_param at offset 0x50 + const sead::Vector3f* mChaseDistOffset_s{}; + // static_param at offset 0x58 + const sead::Vector3f* mReappearanceDist_s{}; + // static_param at offset 0x60 + const sead::Vector3f* mReappearanceDistOffset_s{}; + // dynamic_param at offset 0x68 + bool* mIsAttackPatternFixed_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeadToTarget.cpp b/src/Game/AI/AI/aiLeadToTarget.cpp new file mode 100644 index 00000000..acdc9197 --- /dev/null +++ b/src/Game/AI/AI/aiLeadToTarget.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiLeadToTarget.h" + +namespace uking::ai { + +LeadToTarget::LeadToTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LeadToTarget::~LeadToTarget() = default; + +bool LeadToTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LeadToTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LeadToTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LeadToTarget::loadParams_() { + getStaticParam(&mSuccessRadius_s, "SuccessRadius"); + getStaticParam(&mWaitDistance_s, "WaitDistance"); + getStaticParam(&mResumeLeadDistance_s, "ResumeLeadDistance"); + getStaticParam(&mOkPathFailRange_s, "OkPathFailRange"); + getStaticParam(&mDontWaitIfLeaderIsAhead_s, "DontWaitIfLeaderIsAhead"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mLeaderActor_d, "LeaderActor"); + getStaticParam(&mWaitFramesAfterArrive_s, "WaitFramesAfterArrive"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeadToTarget.h b/src/Game/AI/AI/aiLeadToTarget.h new file mode 100644 index 00000000..4e93020f --- /dev/null +++ b/src/Game/AI/AI/aiLeadToTarget.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LeadToTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LeadToTarget, ksys::act::ai::Ai) +public: + explicit LeadToTarget(const InitArg& arg); + ~LeadToTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSuccessRadius_s{}; + // static_param at offset 0x40 + const float* mWaitDistance_s{}; + // static_param at offset 0x48 + const float* mResumeLeadDistance_s{}; + // static_param at offset 0x50 + const float* mOkPathFailRange_s{}; + // static_param at offset 0x58 + const float* mWaitFramesAfterArrive_s{}; + // static_param at offset 0x60 + const bool* mDontWaitIfLeaderIsAhead_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x70 + ksys::act::BaseProcLink* mLeaderActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeaderDistanceSelector.cpp b/src/Game/AI/AI/aiLeaderDistanceSelector.cpp new file mode 100644 index 00000000..a3087bd7 --- /dev/null +++ b/src/Game/AI/AI/aiLeaderDistanceSelector.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiLeaderDistanceSelector.h" + +namespace uking::ai { + +LeaderDistanceSelector::LeaderDistanceSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LeaderDistanceSelector::~LeaderDistanceSelector() = default; + +bool LeaderDistanceSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LeaderDistanceSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LeaderDistanceSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LeaderDistanceSelector::loadParams_() { + getStaticParam(&mBoundaryDistance_s, "BoundaryDistance"); + getStaticParam(&mOverlapDistance_s, "OverlapDistance"); + getDynamicParam(&mLeaderActor_d, "LeaderActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeaderDistanceSelector.h b/src/Game/AI/AI/aiLeaderDistanceSelector.h new file mode 100644 index 00000000..0756469f --- /dev/null +++ b/src/Game/AI/AI/aiLeaderDistanceSelector.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LeaderDistanceSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LeaderDistanceSelector, ksys::act::ai::Ai) +public: + explicit LeaderDistanceSelector(const InitArg& arg); + ~LeaderDistanceSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBoundaryDistance_s{}; + // static_param at offset 0x40 + const float* mOverlapDistance_s{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mLeaderActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeaveFromTarget.cpp b/src/Game/AI/AI/aiLeaveFromTarget.cpp new file mode 100644 index 00000000..73408a06 --- /dev/null +++ b/src/Game/AI/AI/aiLeaveFromTarget.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiLeaveFromTarget.h" + +namespace uking::ai { + +LeaveFromTarget::LeaveFromTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LeaveFromTarget::~LeaveFromTarget() = default; + +void LeaveFromTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LeaveFromTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LeaveFromTarget::loadParams_() { + getStaticParam(&mLeaveDist_s, "LeaveDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLeaveFromTarget.h b/src/Game/AI/AI/aiLeaveFromTarget.h new file mode 100644 index 00000000..aff1d17f --- /dev/null +++ b/src/Game/AI/AI/aiLeaveFromTarget.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LeaveFromTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LeaveFromTarget, ksys::act::ai::Ai) +public: + explicit LeaveFromTarget(const InitArg& arg); + ~LeaveFromTarget() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLeaveDist_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLifeChangeDemoCaller.cpp b/src/Game/AI/AI/aiLifeChangeDemoCaller.cpp new file mode 100644 index 00000000..1128161b --- /dev/null +++ b/src/Game/AI/AI/aiLifeChangeDemoCaller.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLifeChangeDemoCaller.h" + +namespace uking::ai { + +LifeChangeDemoCaller::LifeChangeDemoCaller(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LifeChangeDemoCaller::~LifeChangeDemoCaller() = default; + +bool LifeChangeDemoCaller::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LifeChangeDemoCaller::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LifeChangeDemoCaller::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LifeChangeDemoCaller::loadParams_() { + getStaticParam(&mLifeRatio_s, "LifeRatio"); + getStaticParam(&mOnlyOnce_s, "OnlyOnce"); + getStaticParam(&mIsIgnorePlayerLand_s, "IsIgnorePlayerLand"); + getStaticParam(&mDemoName_s, "DemoName"); + getStaticParam(&mDemoEntryPoint_s, "DemoEntryPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLifeChangeDemoCaller.h b/src/Game/AI/AI/aiLifeChangeDemoCaller.h new file mode 100644 index 00000000..e3763691 --- /dev/null +++ b/src/Game/AI/AI/aiLifeChangeDemoCaller.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LifeChangeDemoCaller : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LifeChangeDemoCaller, ksys::act::ai::Ai) +public: + explicit LifeChangeDemoCaller(const InitArg& arg); + ~LifeChangeDemoCaller() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLifeRatio_s{}; + // static_param at offset 0x40 + const bool* mOnlyOnce_s{}; + // static_param at offset 0x48 + const bool* mIsIgnorePlayerLand_s{}; + // static_param at offset 0x50 + sead::SafeString mDemoName_s{}; + // static_param at offset 0x60 + sead::SafeString mDemoEntryPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLifted.cpp b/src/Game/AI/AI/aiLifted.cpp new file mode 100644 index 00000000..d6517108 --- /dev/null +++ b/src/Game/AI/AI/aiLifted.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiLifted.h" + +namespace uking::ai { + +Lifted::Lifted(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +Lifted::~Lifted() = default; + +void Lifted::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void Lifted::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void Lifted::loadParams_() { + getStaticParam(&mIsGetItem_s, "IsGetItem"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLifted.h b/src/Game/AI/AI/aiLifted.h new file mode 100644 index 00000000..c8c39d06 --- /dev/null +++ b/src/Game/AI/AI/aiLifted.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Lifted : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Lifted, ksys::act::ai::Ai) +public: + explicit Lifted(const InitArg& arg); + ~Lifted() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsGetItem_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLimitedTimeredActorCreator.cpp b/src/Game/AI/AI/aiLimitedTimeredActorCreator.cpp new file mode 100644 index 00000000..c97370c5 --- /dev/null +++ b/src/Game/AI/AI/aiLimitedTimeredActorCreator.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiLimitedTimeredActorCreator.h" + +namespace uking::ai { + +LimitedTimeredActorCreator::LimitedTimeredActorCreator(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +LimitedTimeredActorCreator::~LimitedTimeredActorCreator() = default; + +bool LimitedTimeredActorCreator::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LimitedTimeredActorCreator::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LimitedTimeredActorCreator::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LimitedTimeredActorCreator::loadParams_() { + getStaticParam(&mCreateTimer_s, "CreateTimer"); + getStaticParam(&mCreateTimerRand_s, "CreateTimerRand"); + getStaticParam(&mCreateActorName_s, "CreateActorName"); + getMapUnitParam(&mCreateLimit_m, "CreateLimit"); + getMapUnitParam(&mActorName_m, "ActorName"); + getAITreeVariable(&mGeneratedActorLink_a, "GeneratedActorLink"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLimitedTimeredActorCreator.h b/src/Game/AI/AI/aiLimitedTimeredActorCreator.h new file mode 100644 index 00000000..ee88d772 --- /dev/null +++ b/src/Game/AI/AI/aiLimitedTimeredActorCreator.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LimitedTimeredActorCreator : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LimitedTimeredActorCreator, ksys::act::ai::Ai) +public: + explicit LimitedTimeredActorCreator(const InitArg& arg); + ~LimitedTimeredActorCreator() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCreateTimer_s{}; + // static_param at offset 0x40 + const float* mCreateTimerRand_s{}; + // static_param at offset 0x48 + sead::SafeString mCreateActorName_s{}; + // map_unit_param at offset 0x58 + const int* mCreateLimit_m{}; + // map_unit_param at offset 0x60 + sead::SafeString mActorName_m{}; + // aitree_variable at offset 0x70 + void* mGeneratedActorLink_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLineCheckTag.cpp b/src/Game/AI/AI/aiLineCheckTag.cpp new file mode 100644 index 00000000..24321fec --- /dev/null +++ b/src/Game/AI/AI/aiLineCheckTag.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLineCheckTag.h" + +namespace uking::ai { + +LineCheckTag::LineCheckTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LineCheckTag::~LineCheckTag() = default; + +bool LineCheckTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LineCheckTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LineCheckTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LineCheckTag::loadParams_() { + getMapUnitParam(&mLineCheckType_m, "LineCheckType"); + getMapUnitParam(&mLineCheckVec_m, "LineCheckVec"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLineCheckTag.h b/src/Game/AI/AI/aiLineCheckTag.h new file mode 100644 index 00000000..e9207b92 --- /dev/null +++ b/src/Game/AI/AI/aiLineCheckTag.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LineCheckTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LineCheckTag, ksys::act::ai::Ai) +public: + explicit LineCheckTag(const InitArg& arg); + ~LineCheckTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // map_unit_param at offset 0x40 + const int* mLineCheckType_m{}; + // map_unit_param at offset 0x48 + const sead::Vector3f* mLineCheckVec_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLinkTagCheck.cpp b/src/Game/AI/AI/aiLinkTagCheck.cpp new file mode 100644 index 00000000..3e67799c --- /dev/null +++ b/src/Game/AI/AI/aiLinkTagCheck.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLinkTagCheck.h" + +namespace uking::ai { + +LinkTagCheck::LinkTagCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool LinkTagCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LinkTagCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LinkTagCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LinkTagCheck::loadParams_() { + getStaticParam(&mSignalType_s, "SignalType"); + getStaticParam(&mSetEnableJobTimerTiming_s, "SetEnableJobTimerTiming"); + getStaticParam(&mIsNotConnectOn_s, "IsNotConnectOn"); + getStaticParam(&mIsCheckChildEnd_s, "IsCheckChildEnd"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLinkTagCheck.h b/src/Game/AI/AI/aiLinkTagCheck.h new file mode 100644 index 00000000..f14363f1 --- /dev/null +++ b/src/Game/AI/AI/aiLinkTagCheck.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LinkTagCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LinkTagCheck, ksys::act::ai::Ai) +public: + explicit LinkTagCheck(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSignalType_s{}; + // static_param at offset 0x40 + const int* mSetEnableJobTimerTiming_s{}; + // static_param at offset 0x48 + const bool* mIsNotConnectOn_s{}; + // static_param at offset 0x50 + const bool* mIsCheckChildEnd_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLinkageEnemyNormal.cpp b/src/Game/AI/AI/aiLinkageEnemyNormal.cpp new file mode 100644 index 00000000..4042c824 --- /dev/null +++ b/src/Game/AI/AI/aiLinkageEnemyNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLinkageEnemyNormal.h" + +namespace uking::ai { + +LinkageEnemyNormal::LinkageEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +LinkageEnemyNormal::~LinkageEnemyNormal() = default; + +bool LinkageEnemyNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void LinkageEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void LinkageEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void LinkageEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLinkageEnemyNormal.h b/src/Game/AI/AI/aiLinkageEnemyNormal.h new file mode 100644 index 00000000..0d185039 --- /dev/null +++ b/src/Game/AI/AI/aiLinkageEnemyNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LinkageEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(LinkageEnemyNormal, EnemyNormal) +public: + explicit LinkageEnemyNormal(const InitArg& arg); + ~LinkageEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLizalfosBreathAttack.cpp b/src/Game/AI/AI/aiLizalfosBreathAttack.cpp new file mode 100644 index 00000000..f54a1fdf --- /dev/null +++ b/src/Game/AI/AI/aiLizalfosBreathAttack.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiLizalfosBreathAttack.h" + +namespace uking::ai { + +LizalfosBreathAttack::LizalfosBreathAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LizalfosBreathAttack::~LizalfosBreathAttack() = default; + +void LizalfosBreathAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LizalfosBreathAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LizalfosBreathAttack::loadParams_() { + getStaticParam(&mMinAttackTimeForTired_s, "MinAttackTimeForTired"); + getStaticParam(&mMinTiredTime_s, "MinTiredTime"); + getStaticParam(&mTiredTimeRate_s, "TiredTimeRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLizalfosBreathAttack.h b/src/Game/AI/AI/aiLizalfosBreathAttack.h new file mode 100644 index 00000000..32538242 --- /dev/null +++ b/src/Game/AI/AI/aiLizalfosBreathAttack.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LizalfosBreathAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LizalfosBreathAttack, ksys::act::ai::Ai) +public: + explicit LizalfosBreathAttack(const InitArg& arg); + ~LizalfosBreathAttack() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMinAttackTimeForTired_s{}; + // static_param at offset 0x40 + const int* mMinTiredTime_s{}; + // static_param at offset 0x48 + const float* mTiredTimeRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLumberjackFallenTree.cpp b/src/Game/AI/AI/aiLumberjackFallenTree.cpp new file mode 100644 index 00000000..d740cac2 --- /dev/null +++ b/src/Game/AI/AI/aiLumberjackFallenTree.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiLumberjackFallenTree.h" + +namespace uking::ai { + +LumberjackFallenTree::LumberjackFallenTree(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LumberjackFallenTree::~LumberjackFallenTree() = default; + +bool LumberjackFallenTree::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LumberjackFallenTree::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LumberjackFallenTree::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LumberjackFallenTree::loadParams_() { + getStaticParam(&mToLogAngVel_s, "ToLogAngVel"); + getStaticParam(&mMaxCheckAng_s, "MaxCheckAng"); + getStaticParam(&mCheckDis_s, "CheckDis"); + getStaticParam(&mCheckHeightRate_s, "CheckHeightRate"); + getStaticParam(&mTerrorRegistAng_s, "TerrorRegistAng"); + getStaticParam(&mTerrorUnregistTimelimit_s, "TerrorUnregistTimelimit"); + getStaticParam(&mNoiseLevel_s, "NoiseLevel"); + getStaticParam(&mIsCheckHeight_s, "IsCheckHeight"); + getStaticParam(&mTerrorOffsetPos4Falling_s, "TerrorOffsetPos4Falling"); + getAITreeVariable(&mLumberjackType_a, "LumberjackType"); + getAITreeVariable(&mForceSetDropPos_a, "ForceSetDropPos"); + getAITreeVariable(&mMoveDirection_a, "MoveDirection"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLumberjackFallenTree.h b/src/Game/AI/AI/aiLumberjackFallenTree.h new file mode 100644 index 00000000..fd030413 --- /dev/null +++ b/src/Game/AI/AI/aiLumberjackFallenTree.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LumberjackFallenTree : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LumberjackFallenTree, ksys::act::ai::Ai) +public: + explicit LumberjackFallenTree(const InitArg& arg); + ~LumberjackFallenTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x60]; + // static_param at offset 0x98 + const float* mToLogAngVel_s{}; + // static_param at offset 0xa0 + const float* mMaxCheckAng_s{}; + // static_param at offset 0xa8 + const float* mCheckDis_s{}; + // static_param at offset 0xb0 + const float* mCheckHeightRate_s{}; + // static_param at offset 0xb8 + const float* mTerrorRegistAng_s{}; + // static_param at offset 0xc0 + const float* mTerrorUnregistTimelimit_s{}; + // static_param at offset 0xc8 + const float* mNoiseLevel_s{}; + // static_param at offset 0xd0 + const bool* mIsCheckHeight_s{}; + // static_param at offset 0xd8 + const sead::Vector3f* mTerrorOffsetPos4Falling_s{}; + // aitree_variable at offset 0xe0 + int* mLumberjackType_a{}; + // aitree_variable at offset 0xe8 + sead::Vector3f* mForceSetDropPos_a{}; + // aitree_variable at offset 0xf0 + sead::Vector3f* mMoveDirection_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLumberjackTree.cpp b/src/Game/AI/AI/aiLumberjackTree.cpp new file mode 100644 index 00000000..ba0127ec --- /dev/null +++ b/src/Game/AI/AI/aiLumberjackTree.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiLumberjackTree.h" + +namespace uking::ai { + +LumberjackTree::LumberjackTree(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LumberjackTree::~LumberjackTree() = default; + +bool LumberjackTree::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LumberjackTree::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LumberjackTree::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LumberjackTree::loadParams_() { + getStaticParam(&mFallInterval_s, "FallInterval"); + getStaticParam(&mFellImpRate_s, "FellImpRate"); + getStaticParam(&mFellRotRate_s, "FellRotRate"); + getStaticParam(&mCutOffsetLower_s, "CutOffsetLower"); + getStaticParam(&mCutOffsetUpper_s, "CutOffsetUpper"); + getStaticParam(&mAlphaLower_s, "AlphaLower"); + getStaticParam(&mAlphaSpeed_s, "AlphaSpeed"); + getMapUnitParam(&mCutRate_m, "CutRate"); + getMapUnitParam(&mAngleY_m, "AngleY"); + getMapUnitParam(&mDropTable_m, "DropTable"); + getAITreeVariable(&mLumberjackType_a, "LumberjackType"); + getAITreeVariable(&mForceSetDropPos_a, "ForceSetDropPos"); + getAITreeVariable(&mMoveDirection_a, "MoveDirection"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLumberjackTree.h b/src/Game/AI/AI/aiLumberjackTree.h new file mode 100644 index 00000000..f2812b04 --- /dev/null +++ b/src/Game/AI/AI/aiLumberjackTree.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LumberjackTree : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LumberjackTree, ksys::act::ai::Ai) +public: + explicit LumberjackTree(const InitArg& arg); + ~LumberjackTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x218]; + // static_param at offset 0x250 + const float* mFallInterval_s{}; + // static_param at offset 0x258 + const float* mFellImpRate_s{}; + // static_param at offset 0x260 + const float* mFellRotRate_s{}; + // static_param at offset 0x268 + const float* mCutOffsetLower_s{}; + // static_param at offset 0x270 + const float* mCutOffsetUpper_s{}; + // static_param at offset 0x278 + const float* mAlphaLower_s{}; + // static_param at offset 0x280 + const float* mAlphaSpeed_s{}; + // map_unit_param at offset 0x288 + const float* mCutRate_m{}; + // map_unit_param at offset 0x290 + const float* mAngleY_m{}; + // map_unit_param at offset 0x298 + sead::SafeString mDropTable_m{}; + // aitree_variable at offset 0x2a8 + int* mLumberjackType_a{}; + // aitree_variable at offset 0x2b0 + sead::Vector3f* mForceSetDropPos_a{}; + // aitree_variable at offset 0x2b8 + sead::Vector3f* mMoveDirection_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelect.cpp b/src/Game/AI/AI/aiLynelArrowAttackSelect.cpp new file mode 100644 index 00000000..b9a90246 --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelArrowAttackSelect.h" + +namespace uking::ai { + +LynelArrowAttackSelect::LynelArrowAttackSelect(const InitArg& arg) + : LynelArrowAttackSelectBase(arg) {} + +LynelArrowAttackSelect::~LynelArrowAttackSelect() = default; + +bool LynelArrowAttackSelect::init_(sead::Heap* heap) { + return LynelArrowAttackSelectBase::init_(heap); +} + +void LynelArrowAttackSelect::enter_(ksys::act::ai::InlineParamPack* params) { + LynelArrowAttackSelectBase::enter_(params); +} + +void LynelArrowAttackSelect::leave_() { + LynelArrowAttackSelectBase::leave_(); +} + +void LynelArrowAttackSelect::loadParams_() { + LynelArrowAttackSelectBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelect.h b/src/Game/AI/AI/aiLynelArrowAttackSelect.h new file mode 100644 index 00000000..44e407aa --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLynelArrowAttackSelectBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelArrowAttackSelect : public LynelArrowAttackSelectBase { + SEAD_RTTI_OVERRIDE(LynelArrowAttackSelect, LynelArrowAttackSelectBase) +public: + explicit LynelArrowAttackSelect(const InitArg& arg); + ~LynelArrowAttackSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelectBase.cpp b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.cpp new file mode 100644 index 00000000..bf790a09 --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelArrowAttackSelectBase.h" + +namespace uking::ai { + +LynelArrowAttackSelectBase::LynelArrowAttackSelectBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +LynelArrowAttackSelectBase::~LynelArrowAttackSelectBase() = default; + +bool LynelArrowAttackSelectBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelArrowAttackSelectBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelArrowAttackSelectBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelArrowAttackSelectBase::loadParams_() { + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h new file mode 100644 index 00000000..8eca70fc --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelectBase.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelArrowAttackSelectBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelArrowAttackSelectBase, ksys::act::ai::Ai) +public: + explicit LynelArrowAttackSelectBase(const InitArg& arg); + ~LynelArrowAttackSelectBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mLynelAIFlags_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.cpp b/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.cpp new file mode 100644 index 00000000..012462e2 --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelArrowAttackSelectOnce.h" + +namespace uking::ai { + +LynelArrowAttackSelectOnce::LynelArrowAttackSelectOnce(const InitArg& arg) + : LynelArrowAttackSelectBase(arg) {} + +LynelArrowAttackSelectOnce::~LynelArrowAttackSelectOnce() = default; + +bool LynelArrowAttackSelectOnce::init_(sead::Heap* heap) { + return LynelArrowAttackSelectBase::init_(heap); +} + +void LynelArrowAttackSelectOnce::enter_(ksys::act::ai::InlineParamPack* params) { + LynelArrowAttackSelectBase::enter_(params); +} + +void LynelArrowAttackSelectOnce::leave_() { + LynelArrowAttackSelectBase::leave_(); +} + +void LynelArrowAttackSelectOnce::loadParams_() { + LynelArrowAttackSelectBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.h b/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.h new file mode 100644 index 00000000..45fd2e23 --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowAttackSelectOnce.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLynelArrowAttackSelectBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelArrowAttackSelectOnce : public LynelArrowAttackSelectBase { + SEAD_RTTI_OVERRIDE(LynelArrowAttackSelectOnce, LynelArrowAttackSelectBase) +public: + explicit LynelArrowAttackSelectOnce(const InitArg& arg); + ~LynelArrowAttackSelectOnce() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowBattle.cpp b/src/Game/AI/AI/aiLynelArrowBattle.cpp new file mode 100644 index 00000000..1bc90af6 --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelArrowBattle.h" + +namespace uking::ai { + +LynelArrowBattle::LynelArrowBattle(const InitArg& arg) : EnemyBattle(arg) {} + +LynelArrowBattle::~LynelArrowBattle() = default; + +bool LynelArrowBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void LynelArrowBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void LynelArrowBattle::leave_() { + EnemyBattle::leave_(); +} + +void LynelArrowBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mAttackCount_s, "AttackCount"); + getStaticParam(&mFrontCheckBoneName_s, "FrontCheckBoneName"); + getStaticParam(&mFrontDirFromBone_s, "FrontDirFromBone"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelArrowBattle.h b/src/Game/AI/AI/aiLynelArrowBattle.h new file mode 100644 index 00000000..6ce6bcfc --- /dev/null +++ b/src/Game/AI/AI/aiLynelArrowBattle.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelArrowBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(LynelArrowBattle, EnemyBattle) +public: + explicit LynelArrowBattle(const InitArg& arg); + ~LynelArrowBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mWeaponIdx_s{}; + // static_param at offset 0x98 + const int* mAttackCount_s{}; + // static_param at offset 0xa0 + sead::SafeString mFrontCheckBoneName_s{}; + // static_param at offset 0xb0 + const sead::Vector3f* mFrontDirFromBone_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelAttackThroughMove.cpp b/src/Game/AI/AI/aiLynelAttackThroughMove.cpp new file mode 100644 index 00000000..034fd876 --- /dev/null +++ b/src/Game/AI/AI/aiLynelAttackThroughMove.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiLynelAttackThroughMove.h" + +namespace uking::ai { + +LynelAttackThroughMove::LynelAttackThroughMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelAttackThroughMove::~LynelAttackThroughMove() = default; + +bool LynelAttackThroughMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelAttackThroughMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelAttackThroughMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelAttackThroughMove::loadParams_() { + getStaticParam(&mSideOffsetDirType_s, "SideOffsetDirType"); + getStaticParam(&mCliffFailTime_s, "CliffFailTime"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mSideOffset_s, "SideOffset"); + getStaticParam(&mThroughDist_s, "ThroughDist"); + getStaticParam(&mAcceptableRadius_s, "AcceptableRadius"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelAttackThroughMove.h b/src/Game/AI/AI/aiLynelAttackThroughMove.h new file mode 100644 index 00000000..62735646 --- /dev/null +++ b/src/Game/AI/AI/aiLynelAttackThroughMove.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelAttackThroughMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelAttackThroughMove, ksys::act::ai::Ai) +public: + explicit LynelAttackThroughMove(const InitArg& arg); + ~LynelAttackThroughMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSideOffsetDirType_s{}; + // static_param at offset 0x40 + const int* mCliffFailTime_s{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const float* mSideOffset_s{}; + // static_param at offset 0x58 + const float* mThroughDist_s{}; + // static_param at offset 0x60 + const float* mAcceptableRadius_s{}; + // static_param at offset 0x68 + const float* mFrontAngle_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelBackStepFromTarget.cpp b/src/Game/AI/AI/aiLynelBackStepFromTarget.cpp new file mode 100644 index 00000000..f9277163 --- /dev/null +++ b/src/Game/AI/AI/aiLynelBackStepFromTarget.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLynelBackStepFromTarget.h" + +namespace uking::ai { + +LynelBackStepFromTarget::LynelBackStepFromTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelBackStepFromTarget::~LynelBackStepFromTarget() = default; + +bool LynelBackStepFromTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelBackStepFromTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelBackStepFromTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelBackStepFromTarget::loadParams_() { + getStaticParam(&mMoveDistMin_s, "MoveDistMin"); + getStaticParam(&mMoveDist_s, "MoveDist"); + getStaticParam(&mAddCheckAngle_s, "AddCheckAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelBackStepFromTarget.h b/src/Game/AI/AI/aiLynelBackStepFromTarget.h new file mode 100644 index 00000000..a405a5de --- /dev/null +++ b/src/Game/AI/AI/aiLynelBackStepFromTarget.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelBackStepFromTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelBackStepFromTarget, ksys::act::ai::Ai) +public: + explicit LynelBackStepFromTarget(const InitArg& arg); + ~LynelBackStepFromTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mMoveDistMin_s{}; + // static_param at offset 0x40 + const float* mMoveDist_s{}; + // static_param at offset 0x48 + const float* mAddCheckAngle_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelBattle.cpp b/src/Game/AI/AI/aiLynelBattle.cpp new file mode 100644 index 00000000..6429fd1d --- /dev/null +++ b/src/Game/AI/AI/aiLynelBattle.cpp @@ -0,0 +1,40 @@ +#include "Game/AI/AI/aiLynelBattle.h" + +namespace uking::ai { + +LynelBattle::LynelBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelBattle::~LynelBattle() = default; + +bool LynelBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelBattle::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mCloseBattleRepeatMax_s, "CloseBattleRepeatMax"); + getStaticParam(&mThroughAttackRepeatNum_s, "ThroughAttackRepeatNum"); + getStaticParam(&mCloseBattleStartDist_s, "CloseBattleStartDist"); + getStaticParam(&mCloseBattleStartAngle_s, "CloseBattleStartAngle"); + getStaticParam(&mHornAttackRate_s, "HornAttackRate"); + getStaticParam(&mRoarRate_s, "RoarRate"); + getStaticParam(&mBreathStartLifeRate_s, "BreathStartLifeRate"); + getStaticParam(&mRoarStartLifeRate_s, "RoarStartLifeRate"); + getStaticParam(&mBattleEndDist_s, "BattleEndDist"); + getStaticParam(&mSkipBreathRoarRate_s, "SkipBreathRoarRate"); + getStaticParam(&mRoarFlamePartsKey_s, "RoarFlamePartsKey"); + getStaticParam(&mBreathPartsKey0_s, "BreathPartsKey0"); + getStaticParam(&mBreathPartsKey1_s, "BreathPartsKey1"); + getStaticParam(&mBreathPartsKey2_s, "BreathPartsKey2"); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelBattle.h b/src/Game/AI/AI/aiLynelBattle.h new file mode 100644 index 00000000..95758d08 --- /dev/null +++ b/src/Game/AI/AI/aiLynelBattle.h @@ -0,0 +1,53 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelBattle, ksys::act::ai::Ai) +public: + explicit LynelBattle(const InitArg& arg); + ~LynelBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mCloseBattleRepeatMax_s{}; + // static_param at offset 0x48 + const int* mThroughAttackRepeatNum_s{}; + // static_param at offset 0x50 + const float* mCloseBattleStartDist_s{}; + // static_param at offset 0x58 + const float* mCloseBattleStartAngle_s{}; + // static_param at offset 0x60 + const float* mHornAttackRate_s{}; + // static_param at offset 0x68 + const float* mRoarRate_s{}; + // static_param at offset 0x70 + const float* mBreathStartLifeRate_s{}; + // static_param at offset 0x78 + const float* mRoarStartLifeRate_s{}; + // static_param at offset 0x80 + const float* mBattleEndDist_s{}; + // static_param at offset 0x88 + const float* mSkipBreathRoarRate_s{}; + // static_param at offset 0x90 + sead::SafeString mRoarFlamePartsKey_s{}; + // static_param at offset 0xa0 + sead::SafeString mBreathPartsKey0_s{}; + // static_param at offset 0xb0 + sead::SafeString mBreathPartsKey1_s{}; + // static_param at offset 0xc0 + sead::SafeString mBreathPartsKey2_s{}; + // aitree_variable at offset 0xd0 + int* mLynelAIFlags_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelChaseBattleMove.cpp b/src/Game/AI/AI/aiLynelChaseBattleMove.cpp new file mode 100644 index 00000000..f0e864d8 --- /dev/null +++ b/src/Game/AI/AI/aiLynelChaseBattleMove.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelChaseBattleMove.h" + +namespace uking::ai { + +LynelChaseBattleMove::LynelChaseBattleMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelChaseBattleMove::~LynelChaseBattleMove() = default; + +bool LynelChaseBattleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelChaseBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelChaseBattleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelChaseBattleMove::loadParams_() { + getStaticParam(&mSlowDownDist_s, "SlowDownDist"); + getStaticParam(&mSpeedUpDist_s, "SpeedUpDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mCloseStartDist_s, "CloseStartDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelChaseBattleMove.h b/src/Game/AI/AI/aiLynelChaseBattleMove.h new file mode 100644 index 00000000..6ae6aad4 --- /dev/null +++ b/src/Game/AI/AI/aiLynelChaseBattleMove.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelChaseBattleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelChaseBattleMove, ksys::act::ai::Ai) +public: + explicit LynelChaseBattleMove(const InitArg& arg); + ~LynelChaseBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSlowDownDist_s{}; + // static_param at offset 0x40 + const float* mSpeedUpDist_s{}; + // static_param at offset 0x48 + const float* mBaseDist_s{}; + // static_param at offset 0x50 + const float* mOutDist_s{}; + // static_param at offset 0x58 + const float* mCloseStartDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelCloseBattle.cpp b/src/Game/AI/AI/aiLynelCloseBattle.cpp new file mode 100644 index 00000000..a2728d0a --- /dev/null +++ b/src/Game/AI/AI/aiLynelCloseBattle.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLynelCloseBattle.h" + +namespace uking::ai { + +LynelCloseBattle::LynelCloseBattle(const InitArg& arg) : EnemyBattle(arg) {} + +LynelCloseBattle::~LynelCloseBattle() = default; + +bool LynelCloseBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void LynelCloseBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void LynelCloseBattle::leave_() { + EnemyBattle::leave_(); +} + +void LynelCloseBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mBackAngleAction_s, "BackAngleAction"); + getStaticParam(&mBackAngle_s, "BackAngle"); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelCloseBattle.h b/src/Game/AI/AI/aiLynelCloseBattle.h new file mode 100644 index 00000000..19965178 --- /dev/null +++ b/src/Game/AI/AI/aiLynelCloseBattle.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelCloseBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(LynelCloseBattle, EnemyBattle) +public: + explicit LynelCloseBattle(const InitArg& arg); + ~LynelCloseBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mBackAngleAction_s{}; + // static_param at offset 0x98 + const float* mBackAngle_s{}; + // aitree_variable at offset 0xa0 + int* mLynelAIFlags_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelDirSelect.cpp b/src/Game/AI/AI/aiLynelDirSelect.cpp new file mode 100644 index 00000000..9bbd1e66 --- /dev/null +++ b/src/Game/AI/AI/aiLynelDirSelect.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiLynelDirSelect.h" + +namespace uking::ai { + +LynelDirSelect::LynelDirSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelDirSelect::~LynelDirSelect() = default; + +bool LynelDirSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelDirSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelDirSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelDirSelect::loadParams_() { + getStaticParam(&mBasePosOffsetFront_s, "BasePosOffsetFront"); + getStaticParam(&mBasePosOffsetBack_s, "BasePosOffsetBack"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getStaticParam(&mBackAngle_s, "BackAngle"); + getStaticParam(&mIsCheckOnlyXZ_s, "IsCheckOnlyXZ"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelDirSelect.h b/src/Game/AI/AI/aiLynelDirSelect.h new file mode 100644 index 00000000..a18e9d90 --- /dev/null +++ b/src/Game/AI/AI/aiLynelDirSelect.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelDirSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelDirSelect, ksys::act::ai::Ai) +public: + explicit LynelDirSelect(const InitArg& arg); + ~LynelDirSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBasePosOffsetFront_s{}; + // static_param at offset 0x40 + const float* mBasePosOffsetBack_s{}; + // static_param at offset 0x48 + const float* mFrontAngle_s{}; + // static_param at offset 0x50 + const float* mBackAngle_s{}; + // static_param at offset 0x58 + const bool* mIsCheckOnlyXZ_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelDistanceLostCheck.cpp b/src/Game/AI/AI/aiLynelDistanceLostCheck.cpp new file mode 100644 index 00000000..2b84ff53 --- /dev/null +++ b/src/Game/AI/AI/aiLynelDistanceLostCheck.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelDistanceLostCheck.h" + +namespace uking::ai { + +LynelDistanceLostCheck::LynelDistanceLostCheck(const InitArg& arg) : DistanceLostCheck(arg) {} + +LynelDistanceLostCheck::~LynelDistanceLostCheck() = default; + +bool LynelDistanceLostCheck::init_(sead::Heap* heap) { + return DistanceLostCheck::init_(heap); +} + +void LynelDistanceLostCheck::enter_(ksys::act::ai::InlineParamPack* params) { + DistanceLostCheck::enter_(params); +} + +void LynelDistanceLostCheck::leave_() { + DistanceLostCheck::leave_(); +} + +void LynelDistanceLostCheck::loadParams_() { + DistanceLostCheck::loadParams_(); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelDistanceLostCheck.h b/src/Game/AI/AI/aiLynelDistanceLostCheck.h new file mode 100644 index 00000000..094109db --- /dev/null +++ b/src/Game/AI/AI/aiLynelDistanceLostCheck.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiDistanceLostCheck.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelDistanceLostCheck : public DistanceLostCheck { + SEAD_RTTI_OVERRIDE(LynelDistanceLostCheck, DistanceLostCheck) +public: + explicit LynelDistanceLostCheck(const InitArg& arg); + ~LynelDistanceLostCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x68 + int* mLynelAIFlags_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelEscapeFromTarget.cpp b/src/Game/AI/AI/aiLynelEscapeFromTarget.cpp new file mode 100644 index 00000000..38677e2b --- /dev/null +++ b/src/Game/AI/AI/aiLynelEscapeFromTarget.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelEscapeFromTarget.h" + +namespace uking::ai { + +LynelEscapeFromTarget::LynelEscapeFromTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelEscapeFromTarget::~LynelEscapeFromTarget() = default; + +bool LynelEscapeFromTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelEscapeFromTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelEscapeFromTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelEscapeFromTarget::loadParams_() { + getStaticParam(&mKeepTime_s, "KeepTime"); + getStaticParam(&mSpaceDistMin_s, "SpaceDistMin"); + getStaticParam(&mSpaceDist_s, "SpaceDist"); + getStaticParam(&mMoveDistMin_s, "MoveDistMin"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelEscapeFromTarget.h b/src/Game/AI/AI/aiLynelEscapeFromTarget.h new file mode 100644 index 00000000..3bdfd033 --- /dev/null +++ b/src/Game/AI/AI/aiLynelEscapeFromTarget.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelEscapeFromTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelEscapeFromTarget, ksys::act::ai::Ai) +public: + explicit LynelEscapeFromTarget(const InitArg& arg); + ~LynelEscapeFromTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mKeepTime_s{}; + // static_param at offset 0x40 + const float* mSpaceDistMin_s{}; + // static_param at offset 0x48 + const float* mSpaceDist_s{}; + // static_param at offset 0x50 + const float* mMoveDistMin_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelFindPlayer.cpp b/src/Game/AI/AI/aiLynelFindPlayer.cpp new file mode 100644 index 00000000..2420d291 --- /dev/null +++ b/src/Game/AI/AI/aiLynelFindPlayer.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelFindPlayer.h" + +namespace uking::ai { + +LynelFindPlayer::LynelFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +LynelFindPlayer::~LynelFindPlayer() = default; + +bool LynelFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void LynelFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void LynelFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void LynelFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelFindPlayer.h b/src/Game/AI/AI/aiLynelFindPlayer.h new file mode 100644 index 00000000..0fc357fa --- /dev/null +++ b/src/Game/AI/AI/aiLynelFindPlayer.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(LynelFindPlayer, EnemyBaseFindPlayer) +public: + explicit LynelFindPlayer(const InitArg& arg); + ~LynelFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x140 + int* mLynelAIFlags_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelLineMoveAttack.cpp b/src/Game/AI/AI/aiLynelLineMoveAttack.cpp new file mode 100644 index 00000000..d3e261d5 --- /dev/null +++ b/src/Game/AI/AI/aiLynelLineMoveAttack.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelLineMoveAttack.h" + +namespace uking::ai { + +LynelLineMoveAttack::LynelLineMoveAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelLineMoveAttack::~LynelLineMoveAttack() = default; + +bool LynelLineMoveAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelLineMoveAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelLineMoveAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelLineMoveAttack::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mGoalRadius_s, "GoalRadius"); + getDynamicParam(&mIsSkipPrepare_d, "IsSkipPrepare"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelLineMoveAttack.h b/src/Game/AI/AI/aiLynelLineMoveAttack.h new file mode 100644 index 00000000..313bd1f5 --- /dev/null +++ b/src/Game/AI/AI/aiLynelLineMoveAttack.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelLineMoveAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelLineMoveAttack, ksys::act::ai::Ai) +public: + explicit LynelLineMoveAttack(const InitArg& arg); + ~LynelLineMoveAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mGoalRadius_s{}; + // dynamic_param at offset 0x48 + bool* mIsSkipPrepare_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetVel_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNavMoveNoStop.cpp b/src/Game/AI/AI/aiLynelNavMoveNoStop.cpp new file mode 100644 index 00000000..47b44b70 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNavMoveNoStop.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelNavMoveNoStop.h" + +namespace uking::ai { + +LynelNavMoveNoStop::LynelNavMoveNoStop(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelNavMoveNoStop::~LynelNavMoveNoStop() = default; + +bool LynelNavMoveNoStop::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelNavMoveNoStop::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelNavMoveNoStop::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelNavMoveNoStop::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mReachTargetArea_s, "ReachTargetArea"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mTooFarDist_s, "TooFarDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNavMoveNoStop.h b/src/Game/AI/AI/aiLynelNavMoveNoStop.h new file mode 100644 index 00000000..59a6c783 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNavMoveNoStop.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelNavMoveNoStop : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelNavMoveNoStop, ksys::act::ai::Ai) +public: + explicit LynelNavMoveNoStop(const InitArg& arg); + ~LynelNavMoveNoStop() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mReachTargetArea_s{}; + // static_param at offset 0x48 + const float* mRepathTime_s{}; + // static_param at offset 0x50 + const float* mTooFarDist_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNavMoveTarget.cpp b/src/Game/AI/AI/aiLynelNavMoveTarget.cpp new file mode 100644 index 00000000..9eea3e70 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNavMoveTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiLynelNavMoveTarget.h" + +namespace uking::ai { + +LynelNavMoveTarget::LynelNavMoveTarget(const InitArg& arg) : LynelNavMoveNoStop(arg) {} + +LynelNavMoveTarget::~LynelNavMoveTarget() = default; + +bool LynelNavMoveTarget::init_(sead::Heap* heap) { + return LynelNavMoveNoStop::init_(heap); +} + +void LynelNavMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + LynelNavMoveNoStop::enter_(params); +} + +void LynelNavMoveTarget::leave_() { + LynelNavMoveNoStop::leave_(); +} + +void LynelNavMoveTarget::loadParams_() { + LynelNavMoveNoStop::loadParams_(); + getStaticParam(&mStopGear_s, "StopGear"); + getStaticParam(&mCliffCheckDist_s, "CliffCheckDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNavMoveTarget.h b/src/Game/AI/AI/aiLynelNavMoveTarget.h new file mode 100644 index 00000000..7d7513b1 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNavMoveTarget.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiLynelNavMoveNoStop.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelNavMoveTarget : public LynelNavMoveNoStop { + SEAD_RTTI_OVERRIDE(LynelNavMoveTarget, LynelNavMoveNoStop) +public: + explicit LynelNavMoveTarget(const InitArg& arg); + ~LynelNavMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + const int* mStopGear_s{}; + // static_param at offset 0x78 + const float* mCliffCheckDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNormal.cpp b/src/Game/AI/AI/aiLynelNormal.cpp new file mode 100644 index 00000000..ed1a4da5 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNormal.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLynelNormal.h" + +namespace uking::ai { + +LynelNormal::LynelNormal(const InitArg& arg) : LandHumEnemyNormal(arg) {} + +LynelNormal::~LynelNormal() = default; + +bool LynelNormal::init_(sead::Heap* heap) { + return LandHumEnemyNormal::init_(heap); +} + +void LynelNormal::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyNormal::enter_(params); +} + +void LynelNormal::leave_() { + LandHumEnemyNormal::leave_(); +} + +void LynelNormal::loadParams_() { + LandHumEnemyNormal::loadParams_(); + getAITreeVariable(&mLynelAreaAlarmPoint_a, "LynelAreaAlarmPoint"); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); + getAITreeVariable(&mLynelNoticeAttackRepeatNum_a, "LynelNoticeAttackRepeatNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNormal.h b/src/Game/AI/AI/aiLynelNormal.h new file mode 100644 index 00000000..c359d60e --- /dev/null +++ b/src/Game/AI/AI/aiLynelNormal.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelNormal : public LandHumEnemyNormal { + SEAD_RTTI_OVERRIDE(LynelNormal, LandHumEnemyNormal) +public: + explicit LynelNormal(const InitArg& arg); + ~LynelNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x400 + int* mLynelAreaAlarmPoint_a{}; + // aitree_variable at offset 0x408 + int* mLynelAIFlags_a{}; + // aitree_variable at offset 0x410 + int* mLynelNoticeAttackRepeatNum_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNoticeAttacked.cpp b/src/Game/AI/AI/aiLynelNoticeAttacked.cpp new file mode 100644 index 00000000..62c7a103 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNoticeAttacked.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelNoticeAttacked.h" + +namespace uking::ai { + +LynelNoticeAttacked::LynelNoticeAttacked(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelNoticeAttacked::~LynelNoticeAttacked() = default; + +bool LynelNoticeAttacked::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelNoticeAttacked::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelNoticeAttacked::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelNoticeAttacked::loadParams_() { + getStaticParam(&mRepeatMax_s, "RepeatMax"); + getStaticParam(&mRepeatResetTime_s, "RepeatResetTime"); + getStaticParam(&mForceReturnDistFromHomePos_s, "ForceReturnDistFromHomePos"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mLynelNoticeAttackRepeatNum_a, "LynelNoticeAttackRepeatNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNoticeAttacked.h b/src/Game/AI/AI/aiLynelNoticeAttacked.h new file mode 100644 index 00000000..67254ac5 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNoticeAttacked.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelNoticeAttacked : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelNoticeAttacked, ksys::act::ai::Ai) +public: + explicit LynelNoticeAttacked(const InitArg& arg); + ~LynelNoticeAttacked() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRepeatMax_s{}; + // static_param at offset 0x40 + const int* mRepeatResetTime_s{}; + // static_param at offset 0x48 + const float* mForceReturnDistFromHomePos_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; + // aitree_variable at offset 0x58 + int* mLynelNoticeAttackRepeatNum_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNoticeTerror.cpp b/src/Game/AI/AI/aiLynelNoticeTerror.cpp new file mode 100644 index 00000000..06e0aa51 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNoticeTerror.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLynelNoticeTerror.h" + +namespace uking::ai { + +LynelNoticeTerror::LynelNoticeTerror(const InitArg& arg) : EnemyNoticeTerror(arg) {} + +LynelNoticeTerror::~LynelNoticeTerror() = default; + +bool LynelNoticeTerror::init_(sead::Heap* heap) { + return EnemyNoticeTerror::init_(heap); +} + +void LynelNoticeTerror::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNoticeTerror::enter_(params); +} + +void LynelNoticeTerror::leave_() { + EnemyNoticeTerror::leave_(); +} + +void LynelNoticeTerror::loadParams_() { + EnemyNoticeTerror::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelNoticeTerror.h b/src/Game/AI/AI/aiLynelNoticeTerror.h new file mode 100644 index 00000000..9442eb32 --- /dev/null +++ b/src/Game/AI/AI/aiLynelNoticeTerror.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNoticeTerror.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelNoticeTerror : public EnemyNoticeTerror { + SEAD_RTTI_OVERRIDE(LynelNoticeTerror, EnemyNoticeTerror) +public: + explicit LynelNoticeTerror(const InitArg& arg); + ~LynelNoticeTerror() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelOnNoNavMeshPos.cpp b/src/Game/AI/AI/aiLynelOnNoNavMeshPos.cpp new file mode 100644 index 00000000..8b25e8ee --- /dev/null +++ b/src/Game/AI/AI/aiLynelOnNoNavMeshPos.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiLynelOnNoNavMeshPos.h" + +namespace uking::ai { + +LynelOnNoNavMeshPos::LynelOnNoNavMeshPos(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelOnNoNavMeshPos::~LynelOnNoNavMeshPos() = default; + +bool LynelOnNoNavMeshPos::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelOnNoNavMeshPos::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelOnNoNavMeshPos::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelOnNoNavMeshPos::loadParams_() { + getStaticParam(&mJumpTimer_s, "JumpTimer"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mHeavySlopeAngle_s, "HeavySlopeAngle"); + getStaticParam(&mNoJumpDist_s, "NoJumpDist"); + getStaticParam(&mHyperJumpDist_s, "HyperJumpDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelOnNoNavMeshPos.h b/src/Game/AI/AI/aiLynelOnNoNavMeshPos.h new file mode 100644 index 00000000..77ad6a31 --- /dev/null +++ b/src/Game/AI/AI/aiLynelOnNoNavMeshPos.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelOnNoNavMeshPos : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelOnNoNavMeshPos, ksys::act::ai::Ai) +public: + explicit LynelOnNoNavMeshPos(const InitArg& arg); + ~LynelOnNoNavMeshPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mJumpTimer_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const float* mHeavySlopeAngle_s{}; + // static_param at offset 0x50 + const float* mNoJumpDist_s{}; + // static_param at offset 0x58 + const float* mHyperJumpDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRecognizeTarget.cpp b/src/Game/AI/AI/aiLynelRecognizeTarget.cpp new file mode 100644 index 00000000..6b0c626c --- /dev/null +++ b/src/Game/AI/AI/aiLynelRecognizeTarget.cpp @@ -0,0 +1,47 @@ +#include "Game/AI/AI/aiLynelRecognizeTarget.h" + +namespace uking::ai { + +LynelRecognizeTarget::LynelRecognizeTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelRecognizeTarget::~LynelRecognizeTarget() = default; + +bool LynelRecognizeTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelRecognizeTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelRecognizeTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelRecognizeTarget::loadParams_() { + getStaticParam(&mAttensionStartPoint_s, "AttensionStartPoint"); + getStaticParam(&mObserveEndPoint_s, "ObserveEndPoint"); + getStaticParam(&mDrawnWeaponPoint_s, "DrawnWeaponPoint"); + getStaticParam(&mWeaponAimPoint_s, "WeaponAimPoint"); + getStaticParam(&mAttackPoint_s, "AttackPoint"); + getStaticParam(&mDashPoint_s, "DashPoint"); + getStaticParam(&mAppPoint_s, "AppPoint"); + getStaticParam(&mHorseRidePoint_s, "HorseRidePoint"); + getStaticParam(&mDamagePoint_s, "DamagePoint"); + getStaticParam(&mTrickedMaskPoint_s, "TrickedMaskPoint"); + getStaticParam(&mBombPoint_s, "BombPoint"); + getStaticParam(&mAimPoint_s, "AimPoint"); + getStaticParam(&mNearDistPoint_s, "NearDistPoint"); + getStaticParam(&mMiddleDistPoint_s, "MiddleDistPoint"); + getStaticParam(&mTiredTime_s, "TiredTime"); + getStaticParam(&mTiredPoint_s, "TiredPoint"); + getStaticParam(&mForceBattleStartTime_s, "ForceBattleStartTime"); + getStaticParam(&mNearDistance_s, "NearDistance"); + getStaticParam(&mFarDistance_s, "FarDistance"); + getStaticParam(&mAimAngle_s, "AimAngle"); + getMapUnitParam(&mIsNearCreate_m, "IsNearCreate"); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); + getAITreeVariable(&mLynelAreaAlarmPoint_a, "LynelAreaAlarmPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRecognizeTarget.h b/src/Game/AI/AI/aiLynelRecognizeTarget.h new file mode 100644 index 00000000..d34569f7 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRecognizeTarget.h @@ -0,0 +1,67 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelRecognizeTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelRecognizeTarget, ksys::act::ai::Ai) +public: + explicit LynelRecognizeTarget(const InitArg& arg); + ~LynelRecognizeTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttensionStartPoint_s{}; + // static_param at offset 0x40 + const int* mObserveEndPoint_s{}; + // static_param at offset 0x48 + const int* mDrawnWeaponPoint_s{}; + // static_param at offset 0x50 + const int* mWeaponAimPoint_s{}; + // static_param at offset 0x58 + const int* mAttackPoint_s{}; + // static_param at offset 0x60 + const int* mDashPoint_s{}; + // static_param at offset 0x68 + const int* mAppPoint_s{}; + // static_param at offset 0x70 + const int* mHorseRidePoint_s{}; + // static_param at offset 0x78 + const int* mDamagePoint_s{}; + // static_param at offset 0x80 + const int* mTrickedMaskPoint_s{}; + // static_param at offset 0x88 + const int* mBombPoint_s{}; + // static_param at offset 0x90 + const int* mAimPoint_s{}; + // static_param at offset 0x98 + const int* mNearDistPoint_s{}; + // static_param at offset 0xa0 + const int* mMiddleDistPoint_s{}; + // static_param at offset 0xa8 + const int* mTiredTime_s{}; + // static_param at offset 0xb0 + const int* mTiredPoint_s{}; + // static_param at offset 0xb8 + const int* mForceBattleStartTime_s{}; + // static_param at offset 0xc0 + const float* mNearDistance_s{}; + // static_param at offset 0xc8 + const float* mFarDistance_s{}; + // static_param at offset 0xd0 + const float* mAimAngle_s{}; + // map_unit_param at offset 0xd8 + const bool* mIsNearCreate_m{}; + // aitree_variable at offset 0xe0 + int* mLynelAIFlags_a{}; + // aitree_variable at offset 0xe8 + int* mLynelAreaAlarmPoint_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRepeatAttack.cpp b/src/Game/AI/AI/aiLynelRepeatAttack.cpp new file mode 100644 index 00000000..fde228be --- /dev/null +++ b/src/Game/AI/AI/aiLynelRepeatAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiLynelRepeatAttack.h" + +namespace uking::ai { + +LynelRepeatAttack::LynelRepeatAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelRepeatAttack::~LynelRepeatAttack() = default; + +bool LynelRepeatAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelRepeatAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelRepeatAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelRepeatAttack::loadParams_() { + getStaticParam(&mAttackNum_s, "AttackNum"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRepeatAttack.h b/src/Game/AI/AI/aiLynelRepeatAttack.h new file mode 100644 index 00000000..5daee180 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRepeatAttack.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelRepeatAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelRepeatAttack, ksys::act::ai::Ai) +public: + explicit LynelRepeatAttack(const InitArg& arg); + ~LynelRepeatAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackNum_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRoam.cpp b/src/Game/AI/AI/aiLynelRoam.cpp new file mode 100644 index 00000000..6f93bae2 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRoam.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiLynelRoam.h" + +namespace uking::ai { + +LynelRoam::LynelRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelRoam::~LynelRoam() = default; + +bool LynelRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelRoam::loadParams_() { + getStaticParam(&mFreeIntervalMin_s, "FreeIntervalMin"); + getStaticParam(&mFreeIntervalMax_s, "FreeIntervalMax"); + getStaticParam(&mFreePer_s, "FreePer"); + getStaticParam(&mMoveIntervalMin_s, "MoveIntervalMin"); + getStaticParam(&mMoveIntervalMax_s, "MoveIntervalMax"); + getStaticParam(&mNoMoveTime_s, "NoMoveTime"); + getStaticParam(&mNoSpAttackMoveTime_s, "NoSpAttackMoveTime"); + getStaticParam(&mSpAttackServiceTime_s, "SpAttackServiceTime"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mTerritory_s, "Territory"); + getStaticParam(&mTargetDistMin_s, "TargetDistMin"); + getStaticParam(&mTargetDistMax_s, "TargetDistMax"); + getStaticParam(&mSpAttackServiceDist_s, "SpAttackServiceDist"); + getStaticParam(&mSpAttackServiceAngle_s, "SpAttackServiceAngle"); + getDynamicParam(&mCentralPos_d, "CentralPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRoam.h b/src/Game/AI/AI/aiLynelRoam.h new file mode 100644 index 00000000..e500d0af --- /dev/null +++ b/src/Game/AI/AI/aiLynelRoam.h @@ -0,0 +1,51 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelRoam, ksys::act::ai::Ai) +public: + explicit LynelRoam(const InitArg& arg); + ~LynelRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFreeIntervalMin_s{}; + // static_param at offset 0x40 + const int* mFreeIntervalMax_s{}; + // static_param at offset 0x48 + const int* mFreePer_s{}; + // static_param at offset 0x50 + const int* mMoveIntervalMin_s{}; + // static_param at offset 0x58 + const int* mMoveIntervalMax_s{}; + // static_param at offset 0x60 + const int* mNoMoveTime_s{}; + // static_param at offset 0x68 + const int* mNoSpAttackMoveTime_s{}; + // static_param at offset 0x70 + const int* mSpAttackServiceTime_s{}; + // static_param at offset 0x78 + const int* mRepathTime_s{}; + // static_param at offset 0x80 + const float* mTerritory_s{}; + // static_param at offset 0x88 + const float* mTargetDistMin_s{}; + // static_param at offset 0x90 + const float* mTargetDistMax_s{}; + // static_param at offset 0x98 + const float* mSpAttackServiceDist_s{}; + // static_param at offset 0xa0 + const float* mSpAttackServiceAngle_s{}; + // dynamic_param at offset 0xa8 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRodeo.cpp b/src/Game/AI/AI/aiLynelRodeo.cpp new file mode 100644 index 00000000..6ab0bbd4 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRodeo.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiLynelRodeo.h" + +namespace uking::ai { + +LynelRodeo::LynelRodeo(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelRodeo::~LynelRodeo() = default; + +bool LynelRodeo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelRodeo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelRodeo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelRodeo::loadParams_() { + getAITreeVariable(&mLynelRodeoAttackHitNum_a, "LynelRodeoAttackHitNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRodeo.h b/src/Game/AI/AI/aiLynelRodeo.h new file mode 100644 index 00000000..fae30b2c --- /dev/null +++ b/src/Game/AI/AI/aiLynelRodeo.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelRodeo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelRodeo, ksys::act::ai::Ai) +public: + explicit LynelRodeo(const InitArg& arg); + ~LynelRodeo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mLynelRodeoAttackHitNum_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRoot.cpp b/src/Game/AI/AI/aiLynelRoot.cpp new file mode 100644 index 00000000..86e6ac93 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRoot.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiLynelRoot.h" + +namespace uking::ai { + +LynelRoot::LynelRoot(const InitArg& arg) : EnemyRoot(arg) {} + +LynelRoot::~LynelRoot() = default; + +bool LynelRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void LynelRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void LynelRoot::leave_() { + EnemyRoot::leave_(); +} + +void LynelRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mBowIdx_s, "BowIdx"); + getStaticParam(&mBoneStandAddRatio_s, "BoneStandAddRatio"); + getStaticParam(&mRoarFlameActorName_s, "RoarFlameActorName"); + getStaticParam(&mRoarFlamePartsKey_s, "RoarFlamePartsKey"); + getStaticParam(&mBreathActorName_s, "BreathActorName"); + getStaticParam(&mBreathPartsKey0_s, "BreathPartsKey0"); + getStaticParam(&mBreathPartsKey1_s, "BreathPartsKey1"); + getStaticParam(&mBreathPartsKey2_s, "BreathPartsKey2"); + getStaticParam(&mStandBoneName_s, "StandBoneName"); + getAITreeVariable(&mLynelAIFlags_a, "LynelAIFlags"); + getAITreeVariable(&mLynelAreaAlarmPoint_a, "LynelAreaAlarmPoint"); + getAITreeVariable(&mLynelBodyControlUnit_a, "LynelBodyControlUnit"); + getAITreeVariable(&mLynelMoveParam_a, "LynelMoveParam"); + // FIXME: CALL sub_710070F83C @ 0x710070f83c +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelRoot.h b/src/Game/AI/AI/aiLynelRoot.h new file mode 100644 index 00000000..bf9eff54 --- /dev/null +++ b/src/Game/AI/AI/aiLynelRoot.h @@ -0,0 +1,48 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(LynelRoot, EnemyRoot) +public: + explicit LynelRoot(const InitArg& arg); + ~LynelRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mBowIdx_s{}; + // static_param at offset 0x1e0 + const float* mBoneStandAddRatio_s{}; + // static_param at offset 0x1e8 + sead::SafeString mRoarFlameActorName_s{}; + // static_param at offset 0x1f8 + sead::SafeString mRoarFlamePartsKey_s{}; + // static_param at offset 0x208 + sead::SafeString mBreathActorName_s{}; + // static_param at offset 0x218 + sead::SafeString mBreathPartsKey0_s{}; + // static_param at offset 0x228 + sead::SafeString mBreathPartsKey1_s{}; + // static_param at offset 0x238 + sead::SafeString mBreathPartsKey2_s{}; + // static_param at offset 0x248 + sead::SafeString mStandBoneName_s{}; + // aitree_variable at offset 0x258 + int* mLynelAIFlags_a{}; + // aitree_variable at offset 0x260 + int* mLynelAreaAlarmPoint_a{}; + // aitree_variable at offset 0x268 + void* mLynelBodyControlUnit_a{}; + // aitree_variable at offset 0x270 + void* mLynelMoveParam_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelTackleMove.cpp b/src/Game/AI/AI/aiLynelTackleMove.cpp new file mode 100644 index 00000000..367e83eb --- /dev/null +++ b/src/Game/AI/AI/aiLynelTackleMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLynelTackleMove.h" + +namespace uking::ai { + +LynelTackleMove::LynelTackleMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelTackleMove::~LynelTackleMove() = default; + +bool LynelTackleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelTackleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelTackleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelTackleMove::loadParams_() { + getStaticParam(&mThroughDist_s, "ThroughDist"); + getStaticParam(&mCloseEndAngle_s, "CloseEndAngle"); + getStaticParam(&mCloseEndDist_s, "CloseEndDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelTackleMove.h b/src/Game/AI/AI/aiLynelTackleMove.h new file mode 100644 index 00000000..81ef6343 --- /dev/null +++ b/src/Game/AI/AI/aiLynelTackleMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelTackleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelTackleMove, ksys::act::ai::Ai) +public: + explicit LynelTackleMove(const InitArg& arg); + ~LynelTackleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mThroughDist_s{}; + // static_param at offset 0x40 + const float* mCloseEndAngle_s{}; + // static_param at offset 0x48 + const float* mCloseEndDist_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelThreeBreathAttack.cpp b/src/Game/AI/AI/aiLynelThreeBreathAttack.cpp new file mode 100644 index 00000000..26c184da --- /dev/null +++ b/src/Game/AI/AI/aiLynelThreeBreathAttack.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiLynelThreeBreathAttack.h" + +namespace uking::ai { + +LynelThreeBreathAttack::LynelThreeBreathAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelThreeBreathAttack::~LynelThreeBreathAttack() = default; + +bool LynelThreeBreathAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelThreeBreathAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelThreeBreathAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelThreeBreathAttack::loadParams_() { + getStaticParam(&mNearRange_s, "NearRange"); + getStaticParam(&mFarRange_s, "FarRange"); + getStaticParam(&mIsCheckXZ_s, "IsCheckXZ"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelThreeBreathAttack.h b/src/Game/AI/AI/aiLynelThreeBreathAttack.h new file mode 100644 index 00000000..f04475ad --- /dev/null +++ b/src/Game/AI/AI/aiLynelThreeBreathAttack.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelThreeBreathAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelThreeBreathAttack, ksys::act::ai::Ai) +public: + explicit LynelThreeBreathAttack(const InitArg& arg); + ~LynelThreeBreathAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNearRange_s{}; + // static_param at offset 0x40 + const float* mFarRange_s{}; + // static_param at offset 0x48 + const bool* mIsCheckXZ_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelWarp.cpp b/src/Game/AI/AI/aiLynelWarp.cpp new file mode 100644 index 00000000..42034000 --- /dev/null +++ b/src/Game/AI/AI/aiLynelWarp.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiLynelWarp.h" + +namespace uking::ai { + +LynelWarp::LynelWarp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +LynelWarp::~LynelWarp() = default; + +bool LynelWarp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void LynelWarp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void LynelWarp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void LynelWarp::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiLynelWarp.h b/src/Game/AI/AI/aiLynelWarp.h new file mode 100644 index 00000000..2f2d9228 --- /dev/null +++ b/src/Game/AI/AI/aiLynelWarp.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class LynelWarp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(LynelWarp, ksys::act::ai::Ai) +public: + explicit LynelWarp(const InitArg& arg); + ~LynelWarp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGearRoot.cpp b/src/Game/AI/AI/aiMagneGearRoot.cpp new file mode 100644 index 00000000..2f6c1b39 --- /dev/null +++ b/src/Game/AI/AI/aiMagneGearRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMagneGearRoot.h" + +namespace uking::ai { + +MagneGearRoot::MagneGearRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MagneGearRoot::~MagneGearRoot() = default; + +bool MagneGearRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MagneGearRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MagneGearRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MagneGearRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGearRoot.h b/src/Game/AI/AI/aiMagneGearRoot.h new file mode 100644 index 00000000..74c5e06d --- /dev/null +++ b/src/Game/AI/AI/aiMagneGearRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneGearRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MagneGearRoot, ksys::act::ai::Ai) +public: + explicit MagneGearRoot(const InitArg& arg); + ~MagneGearRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGrabSelect.cpp b/src/Game/AI/AI/aiMagneGrabSelect.cpp new file mode 100644 index 00000000..758cfbab --- /dev/null +++ b/src/Game/AI/AI/aiMagneGrabSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMagneGrabSelect.h" + +namespace uking::ai { + +MagneGrabSelect::MagneGrabSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MagneGrabSelect::~MagneGrabSelect() = default; + +bool MagneGrabSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MagneGrabSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MagneGrabSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MagneGrabSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGrabSelect.h b/src/Game/AI/AI/aiMagneGrabSelect.h new file mode 100644 index 00000000..178d2b96 --- /dev/null +++ b/src/Game/AI/AI/aiMagneGrabSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneGrabSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MagneGrabSelect, ksys::act::ai::Ai) +public: + explicit MagneGrabSelect(const InitArg& arg); + ~MagneGrabSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.cpp b/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.cpp new file mode 100644 index 00000000..c6ea32c0 --- /dev/null +++ b/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h" + +namespace uking::ai { + +MagneGrabbedPartsRangeSelector::MagneGrabbedPartsRangeSelector(const InitArg& arg) + : RangeSelect(arg) {} + +MagneGrabbedPartsRangeSelector::~MagneGrabbedPartsRangeSelector() = default; + +bool MagneGrabbedPartsRangeSelector::init_(sead::Heap* heap) { + return RangeSelect::init_(heap); +} + +void MagneGrabbedPartsRangeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelect::enter_(params); +} + +void MagneGrabbedPartsRangeSelector::leave_() { + RangeSelect::leave_(); +} + +void MagneGrabbedPartsRangeSelector::loadParams_() { + RangeSelect::loadParams_(); + getStaticParam(&mPartsName_s, "PartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h b/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h new file mode 100644 index 00000000..e0629368 --- /dev/null +++ b/src/Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneGrabbedPartsRangeSelector : public RangeSelect { + SEAD_RTTI_OVERRIDE(MagneGrabbedPartsRangeSelector, RangeSelect) +public: + explicit MagneGrabbedPartsRangeSelector(const InitArg& arg); + ~MagneGrabbedPartsRangeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneShaftRoot.cpp b/src/Game/AI/AI/aiMagneShaftRoot.cpp new file mode 100644 index 00000000..d593e870 --- /dev/null +++ b/src/Game/AI/AI/aiMagneShaftRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMagneShaftRoot.h" + +namespace uking::ai { + +MagneShaftRoot::MagneShaftRoot(const InitArg& arg) : MagneShaftRootBase(arg) {} + +MagneShaftRoot::~MagneShaftRoot() = default; + +bool MagneShaftRoot::init_(sead::Heap* heap) { + return MagneShaftRootBase::init_(heap); +} + +void MagneShaftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + MagneShaftRootBase::enter_(params); +} + +void MagneShaftRoot::leave_() { + MagneShaftRootBase::leave_(); +} + +void MagneShaftRoot::loadParams_() { + MagneShaftRootBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneShaftRoot.h b/src/Game/AI/AI/aiMagneShaftRoot.h new file mode 100644 index 00000000..2b718879 --- /dev/null +++ b/src/Game/AI/AI/aiMagneShaftRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiMagneShaftRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneShaftRoot : public MagneShaftRootBase { + SEAD_RTTI_OVERRIDE(MagneShaftRoot, MagneShaftRootBase) +public: + explicit MagneShaftRoot(const InitArg& arg); + ~MagneShaftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneShaftRootBase.cpp b/src/Game/AI/AI/aiMagneShaftRootBase.cpp new file mode 100644 index 00000000..ff931ec0 --- /dev/null +++ b/src/Game/AI/AI/aiMagneShaftRootBase.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMagneShaftRootBase.h" + +namespace uking::ai { + +MagneShaftRootBase::MagneShaftRootBase(const InitArg& arg) : MagneStickRoot(arg) {} + +MagneShaftRootBase::~MagneShaftRootBase() = default; + +bool MagneShaftRootBase::init_(sead::Heap* heap) { + return MagneStickRoot::init_(heap); +} + +void MagneShaftRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + MagneStickRoot::enter_(params); +} + +void MagneShaftRootBase::leave_() { + MagneStickRoot::leave_(); +} + +void MagneShaftRootBase::loadParams_() { + MagneStickRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneShaftRootBase.h b/src/Game/AI/AI/aiMagneShaftRootBase.h new file mode 100644 index 00000000..37547f07 --- /dev/null +++ b/src/Game/AI/AI/aiMagneShaftRootBase.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiMagneStickRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneShaftRootBase : public MagneStickRoot { + SEAD_RTTI_OVERRIDE(MagneShaftRootBase, MagneStickRoot) +public: + explicit MagneShaftRootBase(const InitArg& arg); + ~MagneShaftRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneSliderBlockRootThunder.cpp b/src/Game/AI/AI/aiMagneSliderBlockRootThunder.cpp new file mode 100644 index 00000000..22bced93 --- /dev/null +++ b/src/Game/AI/AI/aiMagneSliderBlockRootThunder.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMagneSliderBlockRootThunder.h" + +namespace uking::ai { + +MagneSliderBlockRootThunder::MagneSliderBlockRootThunder(const InitArg& arg) + : MagneShaftRootBase(arg) {} + +MagneSliderBlockRootThunder::~MagneSliderBlockRootThunder() = default; + +bool MagneSliderBlockRootThunder::init_(sead::Heap* heap) { + return MagneShaftRootBase::init_(heap); +} + +void MagneSliderBlockRootThunder::enter_(ksys::act::ai::InlineParamPack* params) { + MagneShaftRootBase::enter_(params); +} + +void MagneSliderBlockRootThunder::leave_() { + MagneShaftRootBase::leave_(); +} + +void MagneSliderBlockRootThunder::loadParams_() { + MagneShaftRootBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneSliderBlockRootThunder.h b/src/Game/AI/AI/aiMagneSliderBlockRootThunder.h new file mode 100644 index 00000000..2beef8dc --- /dev/null +++ b/src/Game/AI/AI/aiMagneSliderBlockRootThunder.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiMagneShaftRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneSliderBlockRootThunder : public MagneShaftRootBase { + SEAD_RTTI_OVERRIDE(MagneSliderBlockRootThunder, MagneShaftRootBase) +public: + explicit MagneSliderBlockRootThunder(const InitArg& arg); + ~MagneSliderBlockRootThunder() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneStickRoot.cpp b/src/Game/AI/AI/aiMagneStickRoot.cpp new file mode 100644 index 00000000..4776bb78 --- /dev/null +++ b/src/Game/AI/AI/aiMagneStickRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiMagneStickRoot.h" + +namespace uking::ai { + +MagneStickRoot::MagneStickRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MagneStickRoot::~MagneStickRoot() = default; + +bool MagneStickRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MagneStickRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MagneStickRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MagneStickRoot::loadParams_() { + getStaticParam(&mDefaultConnectionDistance_s, "DefaultConnectionDistance"); + getStaticParam(&mCollideRadiusFactor_s, "CollideRadiusFactor"); + getMapUnitParam(&mCollideRadius_m, "CollideRadius"); + getMapUnitParam(&mJoinSystemGroup_m, "JoinSystemGroup"); + getMapUnitParam(&mRegistFromBeginning_m, "RegistFromBeginning"); + getMapUnitParam(&mIgnoreObstacle_m, "IgnoreObstacle"); + getAITreeVariable(&mIsTargetFixedAcceptor_a, "IsTargetFixedAcceptor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagneStickRoot.h b/src/Game/AI/AI/aiMagneStickRoot.h new file mode 100644 index 00000000..8e77dca7 --- /dev/null +++ b/src/Game/AI/AI/aiMagneStickRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MagneStickRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MagneStickRoot, ksys::act::ai::Ai) +public: + explicit MagneStickRoot(const InitArg& arg); + ~MagneStickRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // static_param at offset 0x40 + const float* mDefaultConnectionDistance_s{}; + // static_param at offset 0x48 + const float* mCollideRadiusFactor_s{}; + // map_unit_param at offset 0x50 + const float* mCollideRadius_m{}; + // map_unit_param at offset 0x58 + const bool* mJoinSystemGroup_m{}; + // map_unit_param at offset 0x60 + const bool* mRegistFromBeginning_m{}; + // map_unit_param at offset 0x68 + const bool* mIgnoreObstacle_m{}; + // aitree_variable at offset 0x70 + bool* mIsTargetFixedAcceptor_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagnetglove.cpp b/src/Game/AI/AI/aiMagnetglove.cpp new file mode 100644 index 00000000..68c1e129 --- /dev/null +++ b/src/Game/AI/AI/aiMagnetglove.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMagnetglove.h" + +namespace uking::ai { + +Magnetglove::Magnetglove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +Magnetglove::~Magnetglove() = default; + +bool Magnetglove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void Magnetglove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void Magnetglove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void Magnetglove::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMagnetglove.h b/src/Game/AI/AI/aiMagnetglove.h new file mode 100644 index 00000000..b0e3e3c1 --- /dev/null +++ b/src/Game/AI/AI/aiMagnetglove.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Magnetglove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Magnetglove, ksys::act::ai::Ai) +public: + explicit Magnetglove(const InitArg& arg); + ~Magnetglove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMainFieldDungeonSelect.cpp b/src/Game/AI/AI/aiMainFieldDungeonSelect.cpp new file mode 100644 index 00000000..d4a6c4e8 --- /dev/null +++ b/src/Game/AI/AI/aiMainFieldDungeonSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMainFieldDungeonSelect.h" + +namespace uking::ai { + +MainFieldDungeonSelect::MainFieldDungeonSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MainFieldDungeonSelect::~MainFieldDungeonSelect() = default; + +bool MainFieldDungeonSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MainFieldDungeonSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MainFieldDungeonSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MainFieldDungeonSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMainFieldDungeonSelect.h b/src/Game/AI/AI/aiMainFieldDungeonSelect.h new file mode 100644 index 00000000..a5ca1fa6 --- /dev/null +++ b/src/Game/AI/AI/aiMainFieldDungeonSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MainFieldDungeonSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MainFieldDungeonSelect, ksys::act::ai::Ai) +public: + explicit MainFieldDungeonSelect(const InitArg& arg); + ~MainFieldDungeonSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasquaradeSubTargetSelect.cpp b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.cpp new file mode 100644 index 00000000..86c735ce --- /dev/null +++ b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMasquaradeSubTargetSelect.h" + +namespace uking::ai { + +MasquaradeSubTargetSelect::MasquaradeSubTargetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MasquaradeSubTargetSelect::~MasquaradeSubTargetSelect() = default; + +bool MasquaradeSubTargetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MasquaradeSubTargetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MasquaradeSubTargetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MasquaradeSubTargetSelect::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h new file mode 100644 index 00000000..9e1b54f5 --- /dev/null +++ b/src/Game/AI/AI/aiMasquaradeSubTargetSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MasquaradeSubTargetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MasquaradeSubTargetSelect, ksys::act::ai::Ai) +public: + explicit MasquaradeSubTargetSelect(const InitArg& arg); + ~MasquaradeSubTargetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.cpp b/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.cpp new file mode 100644 index 00000000..e7155c96 --- /dev/null +++ b/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMasterSwordBase100EnemyRoot.h" + +namespace uking::ai { + +MasterSwordBase100EnemyRoot::MasterSwordBase100EnemyRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +MasterSwordBase100EnemyRoot::~MasterSwordBase100EnemyRoot() = default; + +bool MasterSwordBase100EnemyRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MasterSwordBase100EnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MasterSwordBase100EnemyRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MasterSwordBase100EnemyRoot::loadParams_() { + getStaticParam(&mKillAttentionWaitFrame_s, "KillAttentionWaitFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.h b/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.h new file mode 100644 index 00000000..4cec7af5 --- /dev/null +++ b/src/Game/AI/AI/aiMasterSwordBase100EnemyRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MasterSwordBase100EnemyRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MasterSwordBase100EnemyRoot, ksys::act::ai::Ai) +public: + explicit MasterSwordBase100EnemyRoot(const InitArg& arg); + ~MasterSwordBase100EnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mKillAttentionWaitFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasterSwordRoot.cpp b/src/Game/AI/AI/aiMasterSwordRoot.cpp new file mode 100644 index 00000000..de9430cf --- /dev/null +++ b/src/Game/AI/AI/aiMasterSwordRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMasterSwordRoot.h" + +namespace uking::ai { + +MasterSwordRoot::MasterSwordRoot(const InitArg& arg) : WeaponRootAI(arg) {} + +MasterSwordRoot::~MasterSwordRoot() = default; + +bool MasterSwordRoot::init_(sead::Heap* heap) { + return WeaponRootAI::init_(heap); +} + +void MasterSwordRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeaponRootAI::enter_(params); +} + +void MasterSwordRoot::leave_() { + WeaponRootAI::leave_(); +} + +void MasterSwordRoot::loadParams_() { + WeaponRootAI::loadParams_(); + getAITreeVariable(&mMagicCreateUnit_a, "MagicCreateUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMasterSwordRoot.h b/src/Game/AI/AI/aiMasterSwordRoot.h new file mode 100644 index 00000000..a6a87be1 --- /dev/null +++ b/src/Game/AI/AI/aiMasterSwordRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MasterSwordRoot : public WeaponRootAI { + SEAD_RTTI_OVERRIDE(MasterSwordRoot, WeaponRootAI) +public: + explicit MasterSwordRoot(const InitArg& arg); + ~MasterSwordRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0xf0 + void* mMagicCreateUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMergedDungeonPartsRoot.cpp b/src/Game/AI/AI/aiMergedDungeonPartsRoot.cpp new file mode 100644 index 00000000..5bb45dc2 --- /dev/null +++ b/src/Game/AI/AI/aiMergedDungeonPartsRoot.cpp @@ -0,0 +1,56 @@ +#include "Game/AI/AI/aiMergedDungeonPartsRoot.h" + +namespace uking::ai { + +MergedDungeonPartsRoot::MergedDungeonPartsRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MergedDungeonPartsRoot::~MergedDungeonPartsRoot() = default; + +bool MergedDungeonPartsRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MergedDungeonPartsRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MergedDungeonPartsRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MergedDungeonPartsRoot::loadParams_() { + getMapUnitParam(&mTransFieldBodyGroup00_m, "TransFieldBodyGroup00"); + getMapUnitParam(&mRotateFieldBodyGroup00_m, "RotateFieldBodyGroup00"); + getMapUnitParam(&mTransFieldBodyGroup01_m, "TransFieldBodyGroup01"); + getMapUnitParam(&mRotateFieldBodyGroup01_m, "RotateFieldBodyGroup01"); + getMapUnitParam(&mTransFieldBodyGroup02_m, "TransFieldBodyGroup02"); + getMapUnitParam(&mRotateFieldBodyGroup02_m, "RotateFieldBodyGroup02"); + getMapUnitParam(&mTransFieldBodyGroup03_m, "TransFieldBodyGroup03"); + getMapUnitParam(&mRotateFieldBodyGroup03_m, "RotateFieldBodyGroup03"); + getMapUnitParam(&mTransFieldBodyGroup04_m, "TransFieldBodyGroup04"); + getMapUnitParam(&mRotateFieldBodyGroup04_m, "RotateFieldBodyGroup04"); + getMapUnitParam(&mTransFieldBodyGroup05_m, "TransFieldBodyGroup05"); + getMapUnitParam(&mRotateFieldBodyGroup05_m, "RotateFieldBodyGroup05"); + getMapUnitParam(&mTransFieldBodyGroup06_m, "TransFieldBodyGroup06"); + getMapUnitParam(&mRotateFieldBodyGroup06_m, "RotateFieldBodyGroup06"); + getMapUnitParam(&mTransFieldBodyGroup07_m, "TransFieldBodyGroup07"); + getMapUnitParam(&mRotateFieldBodyGroup07_m, "RotateFieldBodyGroup07"); + getMapUnitParam(&mTransFieldBodyGroup08_m, "TransFieldBodyGroup08"); + getMapUnitParam(&mRotateFieldBodyGroup08_m, "RotateFieldBodyGroup08"); + getMapUnitParam(&mTransFieldBodyGroup09_m, "TransFieldBodyGroup09"); + getMapUnitParam(&mRotateFieldBodyGroup09_m, "RotateFieldBodyGroup09"); + getMapUnitParam(&mTransFieldBodyGroup10_m, "TransFieldBodyGroup10"); + getMapUnitParam(&mRotateFieldBodyGroup10_m, "RotateFieldBodyGroup10"); + getMapUnitParam(&mTransFieldBodyGroup11_m, "TransFieldBodyGroup11"); + getMapUnitParam(&mRotateFieldBodyGroup11_m, "RotateFieldBodyGroup11"); + getMapUnitParam(&mTransFieldBodyGroup12_m, "TransFieldBodyGroup12"); + getMapUnitParam(&mRotateFieldBodyGroup12_m, "RotateFieldBodyGroup12"); + getMapUnitParam(&mTransFieldBodyGroup13_m, "TransFieldBodyGroup13"); + getMapUnitParam(&mRotateFieldBodyGroup13_m, "RotateFieldBodyGroup13"); + getMapUnitParam(&mTransFieldBodyGroup14_m, "TransFieldBodyGroup14"); + getMapUnitParam(&mRotateFieldBodyGroup14_m, "RotateFieldBodyGroup14"); + getMapUnitParam(&mTransFieldBodyGroup15_m, "TransFieldBodyGroup15"); + getMapUnitParam(&mRotateFieldBodyGroup15_m, "RotateFieldBodyGroup15"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMergedDungeonPartsRoot.h b/src/Game/AI/AI/aiMergedDungeonPartsRoot.h new file mode 100644 index 00000000..a7a1581c --- /dev/null +++ b/src/Game/AI/AI/aiMergedDungeonPartsRoot.h @@ -0,0 +1,85 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MergedDungeonPartsRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MergedDungeonPartsRoot, ksys::act::ai::Ai) +public: + explicit MergedDungeonPartsRoot(const InitArg& arg); + ~MergedDungeonPartsRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const sead::Vector3f* mTransFieldBodyGroup00_m{}; + // map_unit_param at offset 0x40 + const sead::Vector3f* mRotateFieldBodyGroup00_m{}; + // map_unit_param at offset 0x48 + const sead::Vector3f* mTransFieldBodyGroup01_m{}; + // map_unit_param at offset 0x50 + const sead::Vector3f* mRotateFieldBodyGroup01_m{}; + // map_unit_param at offset 0x58 + const sead::Vector3f* mTransFieldBodyGroup02_m{}; + // map_unit_param at offset 0x60 + const sead::Vector3f* mRotateFieldBodyGroup02_m{}; + // map_unit_param at offset 0x68 + const sead::Vector3f* mTransFieldBodyGroup03_m{}; + // map_unit_param at offset 0x70 + const sead::Vector3f* mRotateFieldBodyGroup03_m{}; + // map_unit_param at offset 0x78 + const sead::Vector3f* mTransFieldBodyGroup04_m{}; + // map_unit_param at offset 0x80 + const sead::Vector3f* mRotateFieldBodyGroup04_m{}; + // map_unit_param at offset 0x88 + const sead::Vector3f* mTransFieldBodyGroup05_m{}; + // map_unit_param at offset 0x90 + const sead::Vector3f* mRotateFieldBodyGroup05_m{}; + // map_unit_param at offset 0x98 + const sead::Vector3f* mTransFieldBodyGroup06_m{}; + // map_unit_param at offset 0xa0 + const sead::Vector3f* mRotateFieldBodyGroup06_m{}; + // map_unit_param at offset 0xa8 + const sead::Vector3f* mTransFieldBodyGroup07_m{}; + // map_unit_param at offset 0xb0 + const sead::Vector3f* mRotateFieldBodyGroup07_m{}; + // map_unit_param at offset 0xb8 + const sead::Vector3f* mTransFieldBodyGroup08_m{}; + // map_unit_param at offset 0xc0 + const sead::Vector3f* mRotateFieldBodyGroup08_m{}; + // map_unit_param at offset 0xc8 + const sead::Vector3f* mTransFieldBodyGroup09_m{}; + // map_unit_param at offset 0xd0 + const sead::Vector3f* mRotateFieldBodyGroup09_m{}; + // map_unit_param at offset 0xd8 + const sead::Vector3f* mTransFieldBodyGroup10_m{}; + // map_unit_param at offset 0xe0 + const sead::Vector3f* mRotateFieldBodyGroup10_m{}; + // map_unit_param at offset 0xe8 + const sead::Vector3f* mTransFieldBodyGroup11_m{}; + // map_unit_param at offset 0xf0 + const sead::Vector3f* mRotateFieldBodyGroup11_m{}; + // map_unit_param at offset 0xf8 + const sead::Vector3f* mTransFieldBodyGroup12_m{}; + // map_unit_param at offset 0x100 + const sead::Vector3f* mRotateFieldBodyGroup12_m{}; + // map_unit_param at offset 0x108 + const sead::Vector3f* mTransFieldBodyGroup13_m{}; + // map_unit_param at offset 0x110 + const sead::Vector3f* mRotateFieldBodyGroup13_m{}; + // map_unit_param at offset 0x118 + const sead::Vector3f* mTransFieldBodyGroup14_m{}; + // map_unit_param at offset 0x120 + const sead::Vector3f* mRotateFieldBodyGroup14_m{}; + // map_unit_param at offset 0x128 + const sead::Vector3f* mTransFieldBodyGroup15_m{}; + // map_unit_param at offset 0x130 + const sead::Vector3f* mRotateFieldBodyGroup15_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheck.cpp b/src/Game/AI/AI/aiMessageReceiveCheck.cpp new file mode 100644 index 00000000..28357667 --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheck.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMessageReceiveCheck.h" + +namespace uking::ai { + +MessageReceiveCheck::MessageReceiveCheck(const InitArg& arg) : MessageReceiveCheckBasic(arg) {} + +MessageReceiveCheck::~MessageReceiveCheck() = default; + +bool MessageReceiveCheck::init_(sead::Heap* heap) { + return MessageReceiveCheckBasic::init_(heap); +} + +void MessageReceiveCheck::enter_(ksys::act::ai::InlineParamPack* params) { + MessageReceiveCheckBasic::enter_(params); +} + +void MessageReceiveCheck::leave_() { + MessageReceiveCheckBasic::leave_(); +} + +void MessageReceiveCheck::loadParams_() { + MessageReceiveCheckBasic::loadParams_(); + getStaticParam(&mMsgType_s, "MsgType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheck.h b/src/Game/AI/AI/aiMessageReceiveCheck.h new file mode 100644 index 00000000..5a7f298a --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheck.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiMessageReceiveCheckBasic.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MessageReceiveCheck : public MessageReceiveCheckBasic { + SEAD_RTTI_OVERRIDE(MessageReceiveCheck, MessageReceiveCheckBasic) +public: + explicit MessageReceiveCheck(const InitArg& arg); + ~MessageReceiveCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mMsgType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheckBasic.cpp b/src/Game/AI/AI/aiMessageReceiveCheckBasic.cpp new file mode 100644 index 00000000..4c2192c2 --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheckBasic.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMessageReceiveCheckBasic.h" + +namespace uking::ai { + +MessageReceiveCheckBasic::MessageReceiveCheckBasic(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MessageReceiveCheckBasic::~MessageReceiveCheckBasic() = default; + +bool MessageReceiveCheckBasic::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MessageReceiveCheckBasic::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MessageReceiveCheckBasic::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MessageReceiveCheckBasic::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheckBasic.h b/src/Game/AI/AI/aiMessageReceiveCheckBasic.h new file mode 100644 index 00000000..10558ae0 --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheckBasic.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MessageReceiveCheckBasic : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MessageReceiveCheckBasic, ksys::act::ai::Ai) +public: + explicit MessageReceiveCheckBasic(const InitArg& arg); + ~MessageReceiveCheckBasic() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.cpp b/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.cpp new file mode 100644 index 00000000..711e9516 --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMessageReceiveCheckEveryFrame.h" + +namespace uking::ai { + +MessageReceiveCheckEveryFrame::MessageReceiveCheckEveryFrame(const InitArg& arg) + : MessageReceiveCheckBasic(arg) {} + +MessageReceiveCheckEveryFrame::~MessageReceiveCheckEveryFrame() = default; + +bool MessageReceiveCheckEveryFrame::init_(sead::Heap* heap) { + return MessageReceiveCheckBasic::init_(heap); +} + +void MessageReceiveCheckEveryFrame::enter_(ksys::act::ai::InlineParamPack* params) { + MessageReceiveCheckBasic::enter_(params); +} + +void MessageReceiveCheckEveryFrame::leave_() { + MessageReceiveCheckBasic::leave_(); +} + +void MessageReceiveCheckEveryFrame::loadParams_() { + MessageReceiveCheckBasic::loadParams_(); + getStaticParam(&mMsgType_s, "MsgType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.h b/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.h new file mode 100644 index 00000000..36808317 --- /dev/null +++ b/src/Game/AI/AI/aiMessageReceiveCheckEveryFrame.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiMessageReceiveCheckBasic.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MessageReceiveCheckEveryFrame : public MessageReceiveCheckBasic { + SEAD_RTTI_OVERRIDE(MessageReceiveCheckEveryFrame, MessageReceiveCheckBasic) +public: + explicit MessageReceiveCheckEveryFrame(const InitArg& arg); + ~MessageReceiveCheckEveryFrame() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mMsgType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMetalObjectBuried.cpp b/src/Game/AI/AI/aiMetalObjectBuried.cpp new file mode 100644 index 00000000..075fbe0d --- /dev/null +++ b/src/Game/AI/AI/aiMetalObjectBuried.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiMetalObjectBuried.h" + +namespace uking::ai { + +MetalObjectBuried::MetalObjectBuried(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MetalObjectBuried::~MetalObjectBuried() = default; + +bool MetalObjectBuried::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MetalObjectBuried::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MetalObjectBuried::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MetalObjectBuried::loadParams_() { + getStaticParam(&mPullOutSpeed_s, "PullOutSpeed"); + getStaticParam(&mCheckGroundRadiusScale_s, "CheckGroundRadiusScale"); + getStaticParam(&mIsIgnoreResistanceArea_s, "IsIgnoreResistanceArea"); + getStaticParam(&mIsCheckGrabYPosFix_s, "IsCheckGrabYPosFix"); + getStaticParam(&mIsCheckSelfY_s, "IsCheckSelfY"); + getMapUnitParam(&mIsInGround_m, "IsInGround"); + getMapUnitParam(&mEnableRevival_m, "EnableRevival"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMetalObjectBuried.h b/src/Game/AI/AI/aiMetalObjectBuried.h new file mode 100644 index 00000000..627cf79a --- /dev/null +++ b/src/Game/AI/AI/aiMetalObjectBuried.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MetalObjectBuried : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MetalObjectBuried, ksys::act::ai::Ai) +public: + explicit MetalObjectBuried(const InitArg& arg); + ~MetalObjectBuried() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPullOutSpeed_s{}; + // static_param at offset 0x40 + const float* mCheckGroundRadiusScale_s{}; + // static_param at offset 0x48 + const bool* mIsIgnoreResistanceArea_s{}; + // static_param at offset 0x50 + const bool* mIsCheckGrabYPosFix_s{}; + // static_param at offset 0x58 + const bool* mIsCheckSelfY_s{}; + // map_unit_param at offset 0x60 + const bool* mIsInGround_m{}; + // map_unit_param at offset 0x68 + const bool* mEnableRevival_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMetalObjectFixed.cpp b/src/Game/AI/AI/aiMetalObjectFixed.cpp new file mode 100644 index 00000000..b76b7d70 --- /dev/null +++ b/src/Game/AI/AI/aiMetalObjectFixed.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMetalObjectFixed.h" + +namespace uking::ai { + +MetalObjectFixed::MetalObjectFixed(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MetalObjectFixed::~MetalObjectFixed() = default; + +bool MetalObjectFixed::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MetalObjectFixed::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MetalObjectFixed::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MetalObjectFixed::loadParams_() { + getMapUnitParam(&mIsFixedPlace_m, "IsFixedPlace"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMetalObjectFixed.h b/src/Game/AI/AI/aiMetalObjectFixed.h new file mode 100644 index 00000000..300f71d9 --- /dev/null +++ b/src/Game/AI/AI/aiMetalObjectFixed.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MetalObjectFixed : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MetalObjectFixed, ksys::act::ai::Ai) +public: + explicit MetalObjectFixed(const InitArg& arg); + ~MetalObjectFixed() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsFixedPlace_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.cpp b/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.cpp new file mode 100644 index 00000000..7eadf3b0 --- /dev/null +++ b/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMimicCliffStopEnemyNormal.h" + +namespace uking::ai { + +MimicCliffStopEnemyNormal::MimicCliffStopEnemyNormal(const InitArg& arg) + : MimicCliffStopEnemyNormalBase(arg) {} + +MimicCliffStopEnemyNormal::~MimicCliffStopEnemyNormal() = default; + +bool MimicCliffStopEnemyNormal::init_(sead::Heap* heap) { + return MimicCliffStopEnemyNormalBase::init_(heap); +} + +void MimicCliffStopEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + MimicCliffStopEnemyNormalBase::enter_(params); +} + +void MimicCliffStopEnemyNormal::leave_() { + MimicCliffStopEnemyNormalBase::leave_(); +} + +void MimicCliffStopEnemyNormal::loadParams_() { + MimicCliffStopEnemyNormalBase::loadParams_(); + getStaticParam(&mJumpDistXZ_s, "JumpDistXZ"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.h b/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.h new file mode 100644 index 00000000..e04f9787 --- /dev/null +++ b/src/Game/AI/AI/aiMimicCliffStopEnemyNormal.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicCliffStopEnemyNormal : public MimicCliffStopEnemyNormalBase { + SEAD_RTTI_OVERRIDE(MimicCliffStopEnemyNormal, MimicCliffStopEnemyNormalBase) +public: + explicit MimicCliffStopEnemyNormal(const InitArg& arg); + ~MimicCliffStopEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1e0 + const float* mJumpDistXZ_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.cpp b/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.cpp new file mode 100644 index 00000000..f4d1300a --- /dev/null +++ b/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h" + +namespace uking::ai { + +MimicCliffStopEnemyNormalBase::MimicCliffStopEnemyNormalBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +MimicCliffStopEnemyNormalBase::~MimicCliffStopEnemyNormalBase() = default; + +bool MimicCliffStopEnemyNormalBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MimicCliffStopEnemyNormalBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MimicCliffStopEnemyNormalBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MimicCliffStopEnemyNormalBase::loadParams_() { + getStaticParam(&mNoticeSoundTime_s, "NoticeSoundTime"); + getStaticParam(&mOffsetHand_s, "OffsetHand"); + getStaticParam(&mOffsetTail_s, "OffsetTail"); + getStaticParam(&mOffsetHandRotBase_s, "OffsetHandRotBase"); + getAITreeVariable(&mMimicryMaterial_a, "MimicryMaterial"); + getAITreeVariable(&mIsStartResetMimicry_a, "IsStartResetMimicry"); + getAITreeVariable(&mIsCliffFreeze_a, "IsCliffFreeze"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h b/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h new file mode 100644 index 00000000..dcd9d516 --- /dev/null +++ b/src/Game/AI/AI/aiMimicCliffStopEnemyNormalBase.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicCliffStopEnemyNormalBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MimicCliffStopEnemyNormalBase, ksys::act::ai::Ai) +public: + explicit MimicCliffStopEnemyNormalBase(const InitArg& arg); + ~MimicCliffStopEnemyNormalBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNoticeSoundTime_s{}; + // static_param at offset 0x40 + const float* mOffsetHand_s{}; + // static_param at offset 0x48 + const float* mOffsetTail_s{}; + // static_param at offset 0x50 + const float* mOffsetHandRotBase_s{}; + // aitree_variable at offset 0x58 + int* mMimicryMaterial_a{}; + // aitree_variable at offset 0x60 + bool* mIsStartResetMimicry_a{}; + // aitree_variable at offset 0x68 + bool* mIsCliffFreeze_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicEnemyFindPlayer.cpp b/src/Game/AI/AI/aiMimicEnemyFindPlayer.cpp new file mode 100644 index 00000000..d5383328 --- /dev/null +++ b/src/Game/AI/AI/aiMimicEnemyFindPlayer.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiMimicEnemyFindPlayer.h" + +namespace uking::ai { + +MimicEnemyFindPlayer::MimicEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +MimicEnemyFindPlayer::~MimicEnemyFindPlayer() = default; + +void MimicEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void MimicEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void MimicEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); + getStaticParam(&mPlayerForceFindDist_s, "PlayerForceFindDist"); + getAITreeVariable(&mMimicryMaterial_a, "MimicryMaterial"); + getAITreeVariable(&mIsStartResetMimicry_a, "IsStartResetMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicEnemyFindPlayer.h b/src/Game/AI/AI/aiMimicEnemyFindPlayer.h new file mode 100644 index 00000000..cf7cc820 --- /dev/null +++ b/src/Game/AI/AI/aiMimicEnemyFindPlayer.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(MimicEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit MimicEnemyFindPlayer(const InitArg& arg); + ~MimicEnemyFindPlayer() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const float* mPlayerForceFindDist_s{}; + // aitree_variable at offset 0x148 + int* mMimicryMaterial_a{}; + // aitree_variable at offset 0x150 + bool* mIsStartResetMimicry_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicEnemyNormal.cpp b/src/Game/AI/AI/aiMimicEnemyNormal.cpp new file mode 100644 index 00000000..beb43eed --- /dev/null +++ b/src/Game/AI/AI/aiMimicEnemyNormal.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiMimicEnemyNormal.h" + +namespace uking::ai { + +MimicEnemyNormal::MimicEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +MimicEnemyNormal::~MimicEnemyNormal() = default; + +void MimicEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void MimicEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void MimicEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mPlayerForceFindDist_s, "PlayerForceFindDist"); + getStaticParam(&mRideHorseMaskPlayerFindDist_s, "RideHorseMaskPlayerFindDist"); + getAITreeVariable(&mIsStartResetMimicry_a, "IsStartResetMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicEnemyNormal.h b/src/Game/AI/AI/aiMimicEnemyNormal.h new file mode 100644 index 00000000..ec12cc6e --- /dev/null +++ b/src/Game/AI/AI/aiMimicEnemyNormal.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(MimicEnemyNormal, EnemyNormal) +public: + explicit MimicEnemyNormal(const InitArg& arg); + ~MimicEnemyNormal() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const float* mPlayerForceFindDist_s{}; + // static_param at offset 0x3d8 + const float* mRideHorseMaskPlayerFindDist_s{}; + // aitree_variable at offset 0x3e0 + bool* mIsStartResetMimicry_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicFlagSelect.cpp b/src/Game/AI/AI/aiMimicFlagSelect.cpp new file mode 100644 index 00000000..1d614567 --- /dev/null +++ b/src/Game/AI/AI/aiMimicFlagSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMimicFlagSelect.h" + +namespace uking::ai { + +MimicFlagSelect::MimicFlagSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MimicFlagSelect::~MimicFlagSelect() = default; + +bool MimicFlagSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MimicFlagSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MimicFlagSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MimicFlagSelect::loadParams_() { + getMapUnitParam(&mIsMimicry_m, "IsMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicFlagSelect.h b/src/Game/AI/AI/aiMimicFlagSelect.h new file mode 100644 index 00000000..c58ac318 --- /dev/null +++ b/src/Game/AI/AI/aiMimicFlagSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicFlagSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MimicFlagSelect, ksys::act::ai::Ai) +public: + explicit MimicFlagSelect(const InitArg& arg); + ~MimicFlagSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsMimicry_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicryResetCheck.cpp b/src/Game/AI/AI/aiMimicryResetCheck.cpp new file mode 100644 index 00000000..d9b09376 --- /dev/null +++ b/src/Game/AI/AI/aiMimicryResetCheck.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMimicryResetCheck.h" + +namespace uking::ai { + +MimicryResetCheck::MimicryResetCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MimicryResetCheck::~MimicryResetCheck() = default; + +void MimicryResetCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MimicryResetCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MimicryResetCheck::loadParams_() { + getStaticParam(&mResetRate_s, "ResetRate"); + getAITreeVariable(&mMimicryMaterial_a, "MimicryMaterial"); + getAITreeVariable(&mIsStartResetMimicry_a, "IsStartResetMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMimicryResetCheck.h b/src/Game/AI/AI/aiMimicryResetCheck.h new file mode 100644 index 00000000..dce3ffe3 --- /dev/null +++ b/src/Game/AI/AI/aiMimicryResetCheck.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MimicryResetCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MimicryResetCheck, ksys::act::ai::Ai) +public: + explicit MimicryResetCheck(const InitArg& arg); + ~MimicryResetCheck() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mResetRate_s{}; + // aitree_variable at offset 0x40 + int* mMimicryMaterial_a{}; + // aitree_variable at offset 0x48 + bool* mIsStartResetMimicry_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniBeamAttack.cpp b/src/Game/AI/AI/aiMiniBeamAttack.cpp new file mode 100644 index 00000000..14b1a091 --- /dev/null +++ b/src/Game/AI/AI/aiMiniBeamAttack.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiMiniBeamAttack.h" + +namespace uking::ai { + +MiniBeamAttack::MiniBeamAttack(const InitArg& arg) : BreathAttackEnemyBattle(arg) {} + +MiniBeamAttack::~MiniBeamAttack() = default; + +bool MiniBeamAttack::init_(sead::Heap* heap) { + return BreathAttackEnemyBattle::init_(heap); +} + +void MiniBeamAttack::enter_(ksys::act::ai::InlineParamPack* params) { + BreathAttackEnemyBattle::enter_(params); +} + +void MiniBeamAttack::leave_() { + BreathAttackEnemyBattle::leave_(); +} + +void MiniBeamAttack::loadParams_() { + BreathAttackEnemyBattle::loadParams_(); + getStaticParam(&mFluctuationRange_s, "FluctuationRange"); + getStaticParam(&mFluctuationSpan_s, "FluctuationSpan"); + getStaticParam(&mTargetOffsetY_s, "TargetOffsetY"); + getStaticParam(&mNodeName_s, "NodeName"); + getStaticParam(&mIsValidGuide_s, "IsValidGuide"); + getStaticParam(&mIsIgnoreSmallHit_s, "IsIgnoreSmallHit"); + getStaticParam(&mIsChangeable_s, "IsChangeable"); + getStaticParam(&mAimEffectName_s, "AimEffectName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniBeamAttack.h b/src/Game/AI/AI/aiMiniBeamAttack.h new file mode 100644 index 00000000..a3e721bd --- /dev/null +++ b/src/Game/AI/AI/aiMiniBeamAttack.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiBreathAttackEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MiniBeamAttack : public BreathAttackEnemyBattle { + SEAD_RTTI_OVERRIDE(MiniBeamAttack, BreathAttackEnemyBattle) +public: + explicit MiniBeamAttack(const InitArg& arg); + ~MiniBeamAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb0 + const float* mFluctuationRange_s{}; + // static_param at offset 0xb8 + const float* mFluctuationSpan_s{}; + // static_param at offset 0xc0 + const float* mTargetOffsetY_s{}; + // static_param at offset 0xc8 + sead::SafeString mNodeName_s{}; + // static_param at offset 0xd8 + const bool* mIsValidGuide_s{}; + // static_param at offset 0xe0 + const bool* mIsIgnoreSmallHit_s{}; + // static_param at offset 0xe8 + const bool* mIsChangeable_s{}; + // static_param at offset 0xf0 + sead::SafeString mAimEffectName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemLifted.cpp b/src/Game/AI/AI/aiMiniGolemLifted.cpp new file mode 100644 index 00000000..1701b332 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemLifted.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMiniGolemLifted.h" + +namespace uking::ai { + +MiniGolemLifted::MiniGolemLifted(const InitArg& arg) : EnemyLifted(arg) {} + +MiniGolemLifted::~MiniGolemLifted() = default; + +bool MiniGolemLifted::init_(sead::Heap* heap) { + return EnemyLifted::init_(heap); +} + +void MiniGolemLifted::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyLifted::enter_(params); +} + +void MiniGolemLifted::leave_() { + EnemyLifted::leave_(); +} + +void MiniGolemLifted::loadParams_() { + EnemyLifted::loadParams_(); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemLifted.h b/src/Game/AI/AI/aiMiniGolemLifted.h new file mode 100644 index 00000000..064929ed --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemLifted.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyLifted.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MiniGolemLifted : public EnemyLifted { + SEAD_RTTI_OVERRIDE(MiniGolemLifted, EnemyLifted) +public: + explicit MiniGolemLifted(const InitArg& arg); + ~MiniGolemLifted() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x70 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemReaction.cpp b/src/Game/AI/AI/aiMiniGolemReaction.cpp new file mode 100644 index 00000000..8f3b6041 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMiniGolemReaction.h" + +namespace uking::ai { + +MiniGolemReaction::MiniGolemReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +MiniGolemReaction::~MiniGolemReaction() = default; + +bool MiniGolemReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void MiniGolemReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void MiniGolemReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void MiniGolemReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemReaction.h b/src/Game/AI/AI/aiMiniGolemReaction.h new file mode 100644 index 00000000..30476785 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemReaction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MiniGolemReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(MiniGolemReaction, EnemyDefaultReaction) +public: + explicit MiniGolemReaction(const InitArg& arg); + ~MiniGolemReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x68 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemRoot.cpp b/src/Game/AI/AI/aiMiniGolemRoot.cpp new file mode 100644 index 00000000..0b24de15 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMiniGolemRoot.h" + +namespace uking::ai { + +MiniGolemRoot::MiniGolemRoot(const InitArg& arg) : GolemRootBase(arg) {} + +MiniGolemRoot::~MiniGolemRoot() = default; + +bool MiniGolemRoot::init_(sead::Heap* heap) { + return GolemRootBase::init_(heap); +} + +void MiniGolemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + GolemRootBase::enter_(params); +} + +void MiniGolemRoot::leave_() { + GolemRootBase::leave_(); +} + +void MiniGolemRoot::loadParams_() { + GolemRootBase::loadParams_(); + getStaticParam(&mLiftDeadTime_s, "LiftDeadTime"); + getAITreeVariable(&mIsAllowReactionLift_a, "IsAllowReactionLift"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemRoot.h b/src/Game/AI/AI/aiMiniGolemRoot.h new file mode 100644 index 00000000..fec6a7c9 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiGolemRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MiniGolemRoot : public GolemRootBase { + SEAD_RTTI_OVERRIDE(MiniGolemRoot, GolemRootBase) +public: + explicit MiniGolemRoot(const InitArg& arg); + ~MiniGolemRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x310 + bool* mIsAllowReactionLift_a{}; + // static_param at offset 0x318 + const int* mLiftDeadTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemSleep.cpp b/src/Game/AI/AI/aiMiniGolemSleep.cpp new file mode 100644 index 00000000..d8346f3d --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemSleep.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiMiniGolemSleep.h" + +namespace uking::ai { + +MiniGolemSleep::MiniGolemSleep(const InitArg& arg) : SpecialEnemySleep(arg) {} + +MiniGolemSleep::~MiniGolemSleep() = default; + +bool MiniGolemSleep::init_(sead::Heap* heap) { + return SpecialEnemySleep::init_(heap); +} + +void MiniGolemSleep::enter_(ksys::act::ai::InlineParamPack* params) { + SpecialEnemySleep::enter_(params); +} + +void MiniGolemSleep::leave_() { + SpecialEnemySleep::leave_(); +} + +void MiniGolemSleep::loadParams_() { + SpecialEnemySleep::loadParams_(); + getAITreeVariable(&mGolemChemicalController_a, "GolemChemicalController"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMiniGolemSleep.h b/src/Game/AI/AI/aiMiniGolemSleep.h new file mode 100644 index 00000000..6d7ad098 --- /dev/null +++ b/src/Game/AI/AI/aiMiniGolemSleep.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSpecialEnemySleep.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MiniGolemSleep : public SpecialEnemySleep { + SEAD_RTTI_OVERRIDE(MiniGolemSleep, SpecialEnemySleep) +public: + explicit MiniGolemSleep(const InitArg& arg); + ~MiniGolemSleep() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x60 + void* mGolemChemicalController_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoonAI.cpp b/src/Game/AI/AI/aiMoonAI.cpp new file mode 100644 index 00000000..305aec1e --- /dev/null +++ b/src/Game/AI/AI/aiMoonAI.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiMoonAI.h" + +namespace uking::ai { + +MoonAI::MoonAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool MoonAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoonAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoonAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoonAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoonAI.h b/src/Game/AI/AI/aiMoonAI.h new file mode 100644 index 00000000..607069ba --- /dev/null +++ b/src/Game/AI/AI/aiMoonAI.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoonAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoonAI, ksys::act::ai::Ai) +public: + explicit MoonAI(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoonNameTag.cpp b/src/Game/AI/AI/aiMoonNameTag.cpp new file mode 100644 index 00000000..eaf62e24 --- /dev/null +++ b/src/Game/AI/AI/aiMoonNameTag.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiMoonNameTag.h" + +namespace uking::ai { + +MoonNameTag::MoonNameTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoonNameTag::~MoonNameTag() = default; + +bool MoonNameTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoonNameTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoonNameTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoonNameTag::loadParams_() { + getMapUnitParam(&mMoonNameType_m, "MoonNameType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoonNameTag.h b/src/Game/AI/AI/aiMoonNameTag.h new file mode 100644 index 00000000..a12d20d6 --- /dev/null +++ b/src/Game/AI/AI/aiMoonNameTag.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoonNameTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoonNameTag, ksys::act::ai::Ai) +public: + explicit MoonNameTag(const InitArg& arg); + ~MoonNameTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mMoonNameType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinSpearBattle.cpp b/src/Game/AI/AI/aiMoriblinSpearBattle.cpp new file mode 100644 index 00000000..181d0092 --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinSpearBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiMoriblinSpearBattle.h" + +namespace uking::ai { + +MoriblinSpearBattle::MoriblinSpearBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoriblinSpearBattle::~MoriblinSpearBattle() = default; + +void MoriblinSpearBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoriblinSpearBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoriblinSpearBattle::loadParams_() { + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); + getStaticParam(&mAttackStartRotate_s, "AttackStartRotate"); + getStaticParam(&mForceAttackDist_s, "ForceAttackDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinSpearBattle.h b/src/Game/AI/AI/aiMoriblinSpearBattle.h new file mode 100644 index 00000000..432cf48f --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinSpearBattle.h @@ -0,0 +1,38 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoriblinSpearBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoriblinSpearBattle, ksys::act::ai::Ai) +public: + explicit MoriblinSpearBattle(const InitArg& arg); + ~MoriblinSpearBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFarDist_s{}; + // static_param at offset 0x40 + const float* mOutDist_s{}; + // static_param at offset 0x48 + const float* mNearDist_s{}; + // static_param at offset 0x50 + const float* mBaseDist_s{}; + // static_param at offset 0x58 + const int* mWeaponIdx_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x68 + const float* mAttackStartRotate_s{}; + // static_param at offset 0x70 + const float* mForceAttackDist_s{}; + // static_param at offset 0x78 + const float* mAttackIntervalIntensity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinSpearNearBattle.cpp b/src/Game/AI/AI/aiMoriblinSpearNearBattle.cpp new file mode 100644 index 00000000..39b60268 --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinSpearNearBattle.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMoriblinSpearNearBattle.h" + +namespace uking::ai { + +MoriblinSpearNearBattle::MoriblinSpearNearBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void MoriblinSpearNearBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoriblinSpearNearBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoriblinSpearNearBattle::loadParams_() { + getStaticParam(&mBackWalkPer_s, "BackWalkPer"); + getStaticParam(&mBackStepPer_s, "BackStepPer"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinSpearNearBattle.h b/src/Game/AI/AI/aiMoriblinSpearNearBattle.h new file mode 100644 index 00000000..748bea44 --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinSpearNearBattle.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoriblinSpearNearBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoriblinSpearNearBattle, ksys::act::ai::Ai) +public: + explicit MoriblinSpearNearBattle(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mBackWalkPer_s{}; + // static_param at offset 0x40 + const int* mBackStepPer_s{}; + // static_param at offset 0x48 + const float* mNearDist_s{}; + // static_param at offset 0x50 + const int* mWeaponIdx_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinUnarmedBattle.cpp b/src/Game/AI/AI/aiMoriblinUnarmedBattle.cpp new file mode 100644 index 00000000..6c9c30f2 --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinUnarmedBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiMoriblinUnarmedBattle.h" + +namespace uking::ai { + +MoriblinUnarmedBattle::MoriblinUnarmedBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoriblinUnarmedBattle::~MoriblinUnarmedBattle() = default; + +void MoriblinUnarmedBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoriblinUnarmedBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoriblinUnarmedBattle::loadParams_() { + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); + getStaticParam(&mAttackStartRotate_s, "AttackStartRotate"); + getStaticParam(&mPursuingAttackInterval_s, "PursuingAttackInterval"); + getStaticParam(&mPursuingAttackStartAng_s, "PursuingAttackStartAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoriblinUnarmedBattle.h b/src/Game/AI/AI/aiMoriblinUnarmedBattle.h new file mode 100644 index 00000000..4b09f087 --- /dev/null +++ b/src/Game/AI/AI/aiMoriblinUnarmedBattle.h @@ -0,0 +1,38 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoriblinUnarmedBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoriblinUnarmedBattle, ksys::act::ai::Ai) +public: + explicit MoriblinUnarmedBattle(const InitArg& arg); + ~MoriblinUnarmedBattle() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFarDist_s{}; + // static_param at offset 0x40 + const float* mOutDist_s{}; + // static_param at offset 0x48 + const float* mBaseDist_s{}; + // static_param at offset 0x50 + const int* mWeaponIdx_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x60 + const float* mAttackStartRotate_s{}; + // static_param at offset 0x68 + const float* mAttackIntervalIntensity_s{}; + // static_param at offset 0x70 + const int* mPursuingAttackInterval_s{}; + // static_param at offset 0x78 + const float* mPursuingAttackStartAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMotorcycleRoot.cpp b/src/Game/AI/AI/aiMotorcycleRoot.cpp new file mode 100644 index 00000000..d8967a7a --- /dev/null +++ b/src/Game/AI/AI/aiMotorcycleRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiMotorcycleRoot.h" + +namespace uking::ai { + +MotorcycleRoot::MotorcycleRoot(const InitArg& arg) : MotorcycleRootBase(arg) {} + +MotorcycleRoot::~MotorcycleRoot() = default; + +bool MotorcycleRoot::init_(sead::Heap* heap) { + return MotorcycleRootBase::init_(heap); +} + +void MotorcycleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + MotorcycleRootBase::enter_(params); +} + +void MotorcycleRoot::leave_() { + MotorcycleRootBase::leave_(); +} + +void MotorcycleRoot::loadParams_() { + MotorcycleRootBase::loadParams_(); + getStaticParam(&mInWaterRateForDisappear_s, "InWaterRateForDisappear"); + getStaticParam(&mDistanceToPlayerForDisappear_s, "DistanceToPlayerForDisappear"); + getStaticParam(&mNoiseEnergyEmpty_s, "NoiseEnergyEmpty"); + getStaticParam(&mNoiseNotRidden_s, "NoiseNotRidden"); + getStaticParam(&mNoiseThrottleClose_s, "NoiseThrottleClose"); + getStaticParam(&mNoiseThrottleOpen_s, "NoiseThrottleOpen"); + getStaticParam(&mForestFogRatioForDisappear_s, "ForestFogRatioForDisappear"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMotorcycleRoot.h b/src/Game/AI/AI/aiMotorcycleRoot.h new file mode 100644 index 00000000..6ab67194 --- /dev/null +++ b/src/Game/AI/AI/aiMotorcycleRoot.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiMotorcycleRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MotorcycleRoot : public MotorcycleRootBase { + SEAD_RTTI_OVERRIDE(MotorcycleRoot, MotorcycleRootBase) +public: + explicit MotorcycleRoot(const InitArg& arg); + ~MotorcycleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mInWaterRateForDisappear_s{}; + // static_param at offset 0x40 + const float* mDistanceToPlayerForDisappear_s{}; + // static_param at offset 0x48 + const float* mNoiseEnergyEmpty_s{}; + // static_param at offset 0x50 + const float* mNoiseNotRidden_s{}; + // static_param at offset 0x58 + const float* mNoiseThrottleClose_s{}; + // static_param at offset 0x60 + const float* mNoiseThrottleOpen_s{}; + // static_param at offset 0x68 + const float* mForestFogRatioForDisappear_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMotorcycleRootBase.cpp b/src/Game/AI/AI/aiMotorcycleRootBase.cpp new file mode 100644 index 00000000..69984f7c --- /dev/null +++ b/src/Game/AI/AI/aiMotorcycleRootBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiMotorcycleRootBase.h" + +namespace uking::ai { + +MotorcycleRootBase::MotorcycleRootBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MotorcycleRootBase::~MotorcycleRootBase() = default; + +bool MotorcycleRootBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MotorcycleRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MotorcycleRootBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MotorcycleRootBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMotorcycleRootBase.h b/src/Game/AI/AI/aiMotorcycleRootBase.h new file mode 100644 index 00000000..df034e61 --- /dev/null +++ b/src/Game/AI/AI/aiMotorcycleRootBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MotorcycleRootBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MotorcycleRootBase, ksys::act::ai::Ai) +public: + explicit MotorcycleRootBase(const InitArg& arg); + ~MotorcycleRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveAndFreeFallGondola.cpp b/src/Game/AI/AI/aiMoveAndFreeFallGondola.cpp new file mode 100644 index 00000000..6ad92998 --- /dev/null +++ b/src/Game/AI/AI/aiMoveAndFreeFallGondola.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMoveAndFreeFallGondola.h" + +namespace uking::ai { + +MoveAndFreeFallGondola::MoveAndFreeFallGondola(const InitArg& arg) : RailMove(arg) {} + +MoveAndFreeFallGondola::~MoveAndFreeFallGondola() = default; + +bool MoveAndFreeFallGondola::init_(sead::Heap* heap) { + return RailMove::init_(heap); +} + +void MoveAndFreeFallGondola::enter_(ksys::act::ai::InlineParamPack* params) { + RailMove::enter_(params); +} + +void MoveAndFreeFallGondola::leave_() { + RailMove::leave_(); +} + +void MoveAndFreeFallGondola::loadParams_() { + RailMove::loadParams_(); + getMapUnitParam(&mRailMoveSpeed_m, "RailMoveSpeed"); + getMapUnitParam(&mGondolaRailOffsetTime_m, "GondolaRailOffsetTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveAndFreeFallGondola.h b/src/Game/AI/AI/aiMoveAndFreeFallGondola.h new file mode 100644 index 00000000..4a5b1c85 --- /dev/null +++ b/src/Game/AI/AI/aiMoveAndFreeFallGondola.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiRailMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveAndFreeFallGondola : public RailMove { + SEAD_RTTI_OVERRIDE(MoveAndFreeFallGondola, RailMove) +public: + explicit MoveAndFreeFallGondola(const InitArg& arg); + ~MoveAndFreeFallGondola() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0xa0 + const float* mRailMoveSpeed_m{}; + // map_unit_param at offset 0xa8 + const float* mGondolaRailOffsetTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveAroundTarget.cpp b/src/Game/AI/AI/aiMoveAroundTarget.cpp new file mode 100644 index 00000000..85c50a87 --- /dev/null +++ b/src/Game/AI/AI/aiMoveAroundTarget.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiMoveAroundTarget.h" + +namespace uking::ai { + +MoveAroundTarget::MoveAroundTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoveAroundTarget::~MoveAroundTarget() = default; + +bool MoveAroundTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoveAroundTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoveAroundTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoveAroundTarget::loadParams_() { + getStaticParam(&mTurnTimeBase_s, "TurnTimeBase"); + getStaticParam(&mTurnTimeRand_s, "TurnTimeRand"); + getStaticParam(&mStartRange_s, "StartRange"); + getStaticParam(&mEndRange_s, "EndRange"); + getStaticParam(&mChangeRangeRate_s, "ChangeRangeRate"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveAroundTarget.h b/src/Game/AI/AI/aiMoveAroundTarget.h new file mode 100644 index 00000000..2b161f5a --- /dev/null +++ b/src/Game/AI/AI/aiMoveAroundTarget.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveAroundTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoveAroundTarget, ksys::act::ai::Ai) +public: + explicit MoveAroundTarget(const InitArg& arg); + ~MoveAroundTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTurnTimeBase_s{}; + // static_param at offset 0x40 + const int* mTurnTimeRand_s{}; + // static_param at offset 0x48 + const float* mStartRange_s{}; + // static_param at offset 0x50 + const float* mEndRange_s{}; + // static_param at offset 0x58 + const float* mChangeRangeRate_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveLOSFeedback.cpp b/src/Game/AI/AI/aiMoveLOSFeedback.cpp new file mode 100644 index 00000000..584dfd9d --- /dev/null +++ b/src/Game/AI/AI/aiMoveLOSFeedback.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiMoveLOSFeedback.h" + +namespace uking::ai { + +MoveLOSFeedback::MoveLOSFeedback(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoveLOSFeedback::~MoveLOSFeedback() = default; + +bool MoveLOSFeedback::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoveLOSFeedback::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoveLOSFeedback::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoveLOSFeedback::loadParams_() { + getStaticParam(&mFramesCooldownFeedback_s, "FramesCooldownFeedback"); + getStaticParam(&mLOSCheckLength_s, "LOSCheckLength"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveLOSFeedback.h b/src/Game/AI/AI/aiMoveLOSFeedback.h new file mode 100644 index 00000000..30e14a5a --- /dev/null +++ b/src/Game/AI/AI/aiMoveLOSFeedback.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveLOSFeedback : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoveLOSFeedback, ksys::act::ai::Ai) +public: + explicit MoveLOSFeedback(const InitArg& arg); + ~MoveLOSFeedback() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFramesCooldownFeedback_s{}; + // static_param at offset 0x40 + const float* mLOSCheckLength_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveRemainsElectric.cpp b/src/Game/AI/AI/aiMoveRemainsElectric.cpp new file mode 100644 index 00000000..b9873221 --- /dev/null +++ b/src/Game/AI/AI/aiMoveRemainsElectric.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiMoveRemainsElectric.h" + +namespace uking::ai { + +MoveRemainsElectric::MoveRemainsElectric(const InitArg& arg) : RailMoveRemains(arg) {} + +MoveRemainsElectric::~MoveRemainsElectric() = default; + +bool MoveRemainsElectric::init_(sead::Heap* heap) { + return RailMoveRemains::init_(heap); +} + +void MoveRemainsElectric::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveRemains::enter_(params); +} + +void MoveRemainsElectric::leave_() { + RailMoveRemains::leave_(); +} + +void MoveRemainsElectric::loadParams_() { + RailMoveRemains::loadParams_(); + getStaticParam(&mReactiveRange_s, "ReactiveRange"); + getStaticParam(&mDemoCallWaitTime_s, "DemoCallWaitTime"); + getStaticParam(&mCannonOffset_s, "CannonOffset"); + getStaticParam(&mWeakPointOffset_s, "WeakPointOffset"); + getMapUnitParam(&mIsJoinRemainsBattle_m, "IsJoinRemainsBattle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveRemainsElectric.h b/src/Game/AI/AI/aiMoveRemainsElectric.h new file mode 100644 index 00000000..9cf071cb --- /dev/null +++ b/src/Game/AI/AI/aiMoveRemainsElectric.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveRemains.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveRemainsElectric : public RailMoveRemains { + SEAD_RTTI_OVERRIDE(MoveRemainsElectric, RailMoveRemains) +public: + explicit MoveRemainsElectric(const InitArg& arg); + ~MoveRemainsElectric() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mReactiveRange_s{}; + // static_param at offset 0x88 + const float* mDemoCallWaitTime_s{}; + // static_param at offset 0x90 + const sead::Vector3f* mCannonOffset_s{}; + // static_param at offset 0x98 + const sead::Vector3f* mWeakPointOffset_s{}; + // map_unit_param at offset 0xa0 + const bool* mIsJoinRemainsBattle_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveToCameraFrontXZ.cpp b/src/Game/AI/AI/aiMoveToCameraFrontXZ.cpp new file mode 100644 index 00000000..48a66d2a --- /dev/null +++ b/src/Game/AI/AI/aiMoveToCameraFrontXZ.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiMoveToCameraFrontXZ.h" + +namespace uking::ai { + +MoveToCameraFrontXZ::MoveToCameraFrontXZ(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +MoveToCameraFrontXZ::~MoveToCameraFrontXZ() = default; + +bool MoveToCameraFrontXZ::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoveToCameraFrontXZ::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoveToCameraFrontXZ::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoveToCameraFrontXZ::loadParams_() { + getStaticParam(&mReverseTimer_s, "ReverseTimer"); + getStaticParam(&mReverseCount_s, "ReverseCount"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mDistFromPlayer_s, "DistFromPlayer"); + getStaticParam(&mMinDistFromPlayer_s, "MinDistFromPlayer"); + getStaticParam(&mAvoidPlayerDist_s, "AvoidPlayerDist"); + getStaticParam(&mAddLineCheckNavRadius_s, "AddLineCheckNavRadius"); + getStaticParam(&mReachableRadius_s, "ReachableRadius"); + getStaticParam(&mIsSuccessByLineReachable_s, "IsSuccessByLineReachable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveToCameraFrontXZ.h b/src/Game/AI/AI/aiMoveToCameraFrontXZ.h new file mode 100644 index 00000000..eadc9348 --- /dev/null +++ b/src/Game/AI/AI/aiMoveToCameraFrontXZ.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveToCameraFrontXZ : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoveToCameraFrontXZ, ksys::act::ai::Ai) +public: + explicit MoveToCameraFrontXZ(const InitArg& arg); + ~MoveToCameraFrontXZ() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mReverseTimer_s{}; + // static_param at offset 0x40 + const int* mReverseCount_s{}; + // static_param at offset 0x48 + const int* mWeaponIdx_s{}; + // static_param at offset 0x50 + const float* mDistFromPlayer_s{}; + // static_param at offset 0x58 + const float* mMinDistFromPlayer_s{}; + // static_param at offset 0x60 + const float* mAvoidPlayerDist_s{}; + // static_param at offset 0x68 + const float* mAddLineCheckNavRadius_s{}; + // static_param at offset 0x70 + const float* mReachableRadius_s{}; + // static_param at offset 0x78 + const bool* mIsSuccessByLineReachable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.cpp b/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.cpp new file mode 100644 index 00000000..aaefaeae --- /dev/null +++ b/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiMoveToTargetCollisionFeedback.h" + +namespace uking::ai { + +MoveToTargetCollisionFeedback::MoveToTargetCollisionFeedback(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +MoveToTargetCollisionFeedback::~MoveToTargetCollisionFeedback() = default; + +bool MoveToTargetCollisionFeedback::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void MoveToTargetCollisionFeedback::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void MoveToTargetCollisionFeedback::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void MoveToTargetCollisionFeedback::loadParams_() { + getStaticParam(&mCooldownFramesTargetAdjust_s, "CooldownFramesTargetAdjust"); + getStaticParam(&mFramesUntilRetryOriginalPos_s, "FramesUntilRetryOriginalPos"); + getStaticParam(&mIdealDepthMin_s, "IdealDepthMin"); + getStaticParam(&mIdealDepthMax_s, "IdealDepthMax"); + getStaticParam(&mIgnoreYComponentThreshold_s, "IgnoreYComponentThreshold"); + getStaticParam(&mUseMoveAwayFromPos_s, "UseMoveAwayFromPos"); + getStaticParam(&mRetryOriginalPos_s, "RetryOriginalPos"); + getStaticParam(&mIsAdjustDepthOnCollision_s, "IsAdjustDepthOnCollision"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mMoveAwayFromPos_d, "MoveAwayFromPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.h b/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.h new file mode 100644 index 00000000..e03bfb47 --- /dev/null +++ b/src/Game/AI/AI/aiMoveToTargetCollisionFeedback.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class MoveToTargetCollisionFeedback : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(MoveToTargetCollisionFeedback, ksys::act::ai::Ai) +public: + explicit MoveToTargetCollisionFeedback(const InitArg& arg); + ~MoveToTargetCollisionFeedback() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCooldownFramesTargetAdjust_s{}; + // static_param at offset 0x40 + const float* mFramesUntilRetryOriginalPos_s{}; + // static_param at offset 0x48 + const float* mIdealDepthMin_s{}; + // static_param at offset 0x50 + const float* mIdealDepthMax_s{}; + // static_param at offset 0x58 + const float* mIgnoreYComponentThreshold_s{}; + // static_param at offset 0x60 + const bool* mUseMoveAwayFromPos_s{}; + // static_param at offset 0x68 + const bool* mRetryOriginalPos_s{}; + // static_param at offset 0x70 + const bool* mIsAdjustDepthOnCollision_s{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x80 + sead::Vector3f* mMoveAwayFromPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAlert.cpp b/src/Game/AI/AI/aiNPCAlert.cpp new file mode 100644 index 00000000..b8435d5f --- /dev/null +++ b/src/Game/AI/AI/aiNPCAlert.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNPCAlert.h" + +namespace uking::ai { + +NPCAlert::NPCAlert(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCAlert::~NPCAlert() = default; + +bool NPCAlert::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCAlert::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCAlert::loadParams_() { + getStaticParam(&mMinReactionTime_s, "MinReactionTime"); + getStaticParam(&mReleaseDist_s, "ReleaseDist"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mIsTimeOver_d, "IsTimeOver"); + getDynamicParam(&mIsSitting_d, "IsSitting"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTerrorEmitter_d, "TerrorEmitter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAlert.h b/src/Game/AI/AI/aiNPCAlert.h new file mode 100644 index 00000000..6de84fc9 --- /dev/null +++ b/src/Game/AI/AI/aiNPCAlert.h @@ -0,0 +1,34 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCAlert : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCAlert, ksys::act::ai::Ai) +public: + explicit NPCAlert(const InitArg& arg); + ~NPCAlert() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMinReactionTime_s{}; + // static_param at offset 0x40 + const float* mReleaseDist_s{}; + // dynamic_param at offset 0x48 + int* mTerrorLevel_d{}; + // dynamic_param at offset 0x50 + bool* mIsTimeOver_d{}; + // dynamic_param at offset 0x58 + bool* mIsSitting_d{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x68 + ksys::act::BaseProcLink* mTerrorEmitter_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCArtistRoot.cpp b/src/Game/AI/AI/aiNPCArtistRoot.cpp new file mode 100644 index 00000000..ac28ff86 --- /dev/null +++ b/src/Game/AI/AI/aiNPCArtistRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNPCArtistRoot.h" + +namespace uking::ai { + +NPCArtistRoot::NPCArtistRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCArtistRoot::~NPCArtistRoot() = default; + +bool NPCArtistRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCArtistRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCArtistRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCArtistRoot::loadParams_() { + NPCRoot::loadParams_(); + getMapUnitParam(&mActorName_m, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCArtistRoot.h b/src/Game/AI/AI/aiNPCArtistRoot.h new file mode 100644 index 00000000..1cc80844 --- /dev/null +++ b/src/Game/AI/AI/aiNPCArtistRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCArtistRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCArtistRoot, NPCRoot) +public: + explicit NPCArtistRoot(const InitArg& arg); + ~NPCArtistRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x238 + sead::SafeString mActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAttack.cpp b/src/Game/AI/AI/aiNPCAttack.cpp new file mode 100644 index 00000000..d29fddc1 --- /dev/null +++ b/src/Game/AI/AI/aiNPCAttack.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiNPCAttack.h" + +namespace uking::ai { + +NPCAttack::NPCAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCAttack::~NPCAttack() = default; + +bool NPCAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCAttack::loadParams_() { + getStaticParam(&mActionBaseTime_s, "ActionBaseTime"); + getStaticParam(&mActionTimePlay_s, "ActionTimePlay"); + getStaticParam(&mActionRate_s, "ActionRate"); + getStaticParam(&mAttackRate_s, "AttackRate"); + getStaticParam(&mAttackModeTime_s, "AttackModeTime"); + getStaticParam(&mGuardModeTime_s, "GuardModeTime"); + getStaticParam(&mEnemyChanceTime_s, "EnemyChanceTime"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mIsBattleStart_d, "IsBattleStart"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mEnemyLink_d, "EnemyLink"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAttack.h b/src/Game/AI/AI/aiNPCAttack.h new file mode 100644 index 00000000..9941efaf --- /dev/null +++ b/src/Game/AI/AI/aiNPCAttack.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCAttack, ksys::act::ai::Ai) +public: + explicit NPCAttack(const InitArg& arg); + ~NPCAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mActionBaseTime_s{}; + // static_param at offset 0x40 + const int* mActionTimePlay_s{}; + // static_param at offset 0x48 + const int* mActionRate_s{}; + // static_param at offset 0x50 + const int* mAttackRate_s{}; + // static_param at offset 0x58 + const int* mAttackModeTime_s{}; + // static_param at offset 0x60 + const int* mGuardModeTime_s{}; + // static_param at offset 0x68 + const int* mEnemyChanceTime_s{}; + // dynamic_param at offset 0x70 + float* mTerrorLevel_d{}; + // dynamic_param at offset 0x78 + bool* mIsBattleStart_d{}; + // dynamic_param at offset 0x80 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x88 + ksys::act::BaseProcLink* mEnemyLink_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAttentionAI.cpp b/src/Game/AI/AI/aiNPCAttentionAI.cpp new file mode 100644 index 00000000..7a24aebb --- /dev/null +++ b/src/Game/AI/AI/aiNPCAttentionAI.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiNPCAttentionAI.h" + +namespace uking::ai { + +NPCAttentionAI::NPCAttentionAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCAttentionAI::~NPCAttentionAI() = default; + +bool NPCAttentionAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCAttentionAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCAttentionAI::loadParams_() { + getStaticParam(&mDurationTime_s, "DurationTime"); + getStaticParam(&mTurnAngleDiff_s, "TurnAngleDiff"); + getStaticParam(&mIsUseSight_s, "IsUseSight"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAttentionAI.h b/src/Game/AI/AI/aiNPCAttentionAI.h new file mode 100644 index 00000000..f849c3b2 --- /dev/null +++ b/src/Game/AI/AI/aiNPCAttentionAI.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCAttentionAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCAttentionAI, ksys::act::ai::Ai) +public: + explicit NPCAttentionAI(const InitArg& arg); + ~NPCAttentionAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDurationTime_s{}; + // static_param at offset 0x48 + const float* mTurnAngleDiff_s{}; + // static_param at offset 0x50 + const bool* mIsUseSight_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAvoid.cpp b/src/Game/AI/AI/aiNPCAvoid.cpp new file mode 100644 index 00000000..9f87a93c --- /dev/null +++ b/src/Game/AI/AI/aiNPCAvoid.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiNPCAvoid.h" + +namespace uking::ai { + +NPCAvoid::NPCAvoid(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCAvoid::~NPCAvoid() = default; + +void NPCAvoid::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCAvoid::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCAvoid::loadParams_() { + getStaticParam(&mTargetTerrorLevel_s, "TargetTerrorLevel"); + getStaticParam(&mReleaseCrouchTime_s, "ReleaseCrouchTime"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mTerrorLayer_d, "TerrorLayer"); + getDynamicParam(&mIsReturnFromDemo_d, "IsReturnFromDemo"); + getDynamicParam(&mIsNeedUnEquipWeapon_d, "IsNeedUnEquipWeapon"); + getDynamicParam(&mIsSitting_d, "IsSitting"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); + getDynamicParam(&mTerrorEmitter_d, "TerrorEmitter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCAvoid.h b/src/Game/AI/AI/aiNPCAvoid.h new file mode 100644 index 00000000..5d99ba0e --- /dev/null +++ b/src/Game/AI/AI/aiNPCAvoid.h @@ -0,0 +1,40 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCAvoid : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCAvoid, ksys::act::ai::Ai) +public: + explicit NPCAvoid(const InitArg& arg); + ~NPCAvoid() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTargetTerrorLevel_s{}; + // static_param at offset 0x40 + const int* mReleaseCrouchTime_s{}; + // dynamic_param at offset 0x48 + int* mTerrorLevel_d{}; + // dynamic_param at offset 0x50 + int* mTerrorLayer_d{}; + // dynamic_param at offset 0x58 + bool* mIsReturnFromDemo_d{}; + // dynamic_param at offset 0x60 + bool* mIsNeedUnEquipWeapon_d{}; + // dynamic_param at offset 0x68 + bool* mIsSitting_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mTargetVel_d{}; + // dynamic_param at offset 0x80 + ksys::act::BaseProcLink* mTerrorEmitter_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCChasePlayerBlueFire.cpp b/src/Game/AI/AI/aiNPCChasePlayerBlueFire.cpp new file mode 100644 index 00000000..a6aa3ce6 --- /dev/null +++ b/src/Game/AI/AI/aiNPCChasePlayerBlueFire.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiNPCChasePlayerBlueFire.h" + +namespace uking::ai { + +NPCChasePlayerBlueFire::NPCChasePlayerBlueFire(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCChasePlayerBlueFire::~NPCChasePlayerBlueFire() = default; + +bool NPCChasePlayerBlueFire::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCChasePlayerBlueFire::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCChasePlayerBlueFire::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCChasePlayerBlueFire::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mLeaveDist_s, "LeaveDist"); + getStaticParam(&mLostDist_s, "LostDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCChasePlayerBlueFire.h b/src/Game/AI/AI/aiNPCChasePlayerBlueFire.h new file mode 100644 index 00000000..7b2993db --- /dev/null +++ b/src/Game/AI/AI/aiNPCChasePlayerBlueFire.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCChasePlayerBlueFire : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCChasePlayerBlueFire, ksys::act::ai::Ai) +public: + explicit NPCChasePlayerBlueFire(const InitArg& arg); + ~NPCChasePlayerBlueFire() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const float* mNearDist_s{}; + // static_param at offset 0x48 + const float* mLeaveDist_s{}; + // static_param at offset 0x50 + const float* mLostDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCClerkRoot.cpp b/src/Game/AI/AI/aiNPCClerkRoot.cpp new file mode 100644 index 00000000..ca0b6472 --- /dev/null +++ b/src/Game/AI/AI/aiNPCClerkRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNPCClerkRoot.h" + +namespace uking::ai { + +NPCClerkRoot::NPCClerkRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCClerkRoot::~NPCClerkRoot() = default; + +bool NPCClerkRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCClerkRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCClerkRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCClerkRoot::loadParams_() { + NPCRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCClerkRoot.h b/src/Game/AI/AI/aiNPCClerkRoot.h new file mode 100644 index 00000000..e73133ec --- /dev/null +++ b/src/Game/AI/AI/aiNPCClerkRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCClerkRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCClerkRoot, NPCRoot) +public: + explicit NPCClerkRoot(const InitArg& arg); + ~NPCClerkRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCConfront.cpp b/src/Game/AI/AI/aiNPCConfront.cpp new file mode 100644 index 00000000..f0b9c79e --- /dev/null +++ b/src/Game/AI/AI/aiNPCConfront.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiNPCConfront.h" + +namespace uking::ai { + +NPCConfront::NPCConfront(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCConfront::~NPCConfront() = default; + +bool NPCConfront::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCConfront::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCConfront::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCConfront::loadParams_() { + getStaticParam(&mCounterGuardCount_s, "CounterGuardCount"); + getStaticParam(&mReleaseDistance_s, "ReleaseDistance"); + getStaticParam(&mReleaseTime_s, "ReleaseTime"); + getStaticParam(&mCounterRate_s, "CounterRate"); + getStaticParam(&mDirectTurnAngle_s, "DirectTurnAngle"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mIsTimeOver_d, "IsTimeOver"); + getDynamicParam(&mIsSitting_d, "IsSitting"); + getDynamicParam(&mIsNeedUnEquipWeapon_d, "IsNeedUnEquipWeapon"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTerrorEmitter_d, "TerrorEmitter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCConfront.h b/src/Game/AI/AI/aiNPCConfront.h new file mode 100644 index 00000000..12a4ebbb --- /dev/null +++ b/src/Game/AI/AI/aiNPCConfront.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCConfront : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCConfront, ksys::act::ai::Ai) +public: + explicit NPCConfront(const InitArg& arg); + ~NPCConfront() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCounterGuardCount_s{}; + // static_param at offset 0x40 + const float* mReleaseDistance_s{}; + // static_param at offset 0x48 + const float* mReleaseTime_s{}; + // static_param at offset 0x50 + const float* mCounterRate_s{}; + // static_param at offset 0x58 + const float* mDirectTurnAngle_s{}; + // dynamic_param at offset 0x60 + int* mTerrorLevel_d{}; + // dynamic_param at offset 0x68 + bool* mIsTimeOver_d{}; + // dynamic_param at offset 0x70 + bool* mIsSitting_d{}; + // dynamic_param at offset 0x78 + bool* mIsNeedUnEquipWeapon_d{}; + // dynamic_param at offset 0x80 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x88 + ksys::act::BaseProcLink* mTerrorEmitter_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCConfrontEnemy.cpp b/src/Game/AI/AI/aiNPCConfrontEnemy.cpp new file mode 100644 index 00000000..0fa74a78 --- /dev/null +++ b/src/Game/AI/AI/aiNPCConfrontEnemy.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiNPCConfrontEnemy.h" + +namespace uking::ai { + +NPCConfrontEnemy::NPCConfrontEnemy(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCConfrontEnemy::~NPCConfrontEnemy() = default; + +bool NPCConfrontEnemy::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCConfrontEnemy::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCConfrontEnemy::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCConfrontEnemy::loadParams_() { + getStaticParam(&mReleaseDistance_s, "ReleaseDistance"); + getStaticParam(&mReleaseTime_s, "ReleaseTime"); + getStaticParam(&mRewardDistance_s, "RewardDistance"); + getStaticParam(&mTerrorDistAfterPlayerRescue_s, "TerrorDistAfterPlayerRescue"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mTerrorLayer_d, "TerrorLayer"); + getDynamicParam(&mIsReturnFromDemo_d, "IsReturnFromDemo"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); + getMapUnitParam(&mTerritoryArea_m, "TerritoryArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCConfrontEnemy.h b/src/Game/AI/AI/aiNPCConfrontEnemy.h new file mode 100644 index 00000000..a3898191 --- /dev/null +++ b/src/Game/AI/AI/aiNPCConfrontEnemy.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCConfrontEnemy : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCConfrontEnemy, ksys::act::ai::Ai) +public: + explicit NPCConfrontEnemy(const InitArg& arg); + ~NPCConfrontEnemy() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mReleaseDistance_s{}; + // static_param at offset 0x40 + const float* mReleaseTime_s{}; + // static_param at offset 0x48 + const float* mRewardDistance_s{}; + // static_param at offset 0x50 + const float* mTerrorDistAfterPlayerRescue_s{}; + // dynamic_param at offset 0x58 + int* mTerrorLevel_d{}; + // dynamic_param at offset 0x60 + int* mTerrorLayer_d{}; + // dynamic_param at offset 0x68 + bool* mIsReturnFromDemo_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mTargetVel_d{}; + // map_unit_param at offset 0x80 + const float* mTerritoryArea_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCGerudoQueenRoot.cpp b/src/Game/AI/AI/aiNPCGerudoQueenRoot.cpp new file mode 100644 index 00000000..2494818a --- /dev/null +++ b/src/Game/AI/AI/aiNPCGerudoQueenRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNPCGerudoQueenRoot.h" + +namespace uking::ai { + +NPCGerudoQueenRoot::NPCGerudoQueenRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCGerudoQueenRoot::~NPCGerudoQueenRoot() = default; + +bool NPCGerudoQueenRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCGerudoQueenRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCGerudoQueenRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCGerudoQueenRoot::loadParams_() { + NPCRoot::loadParams_(); + getMapUnitParam(&mIsOnHelmet_m, "IsOnHelmet"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCGerudoQueenRoot.h b/src/Game/AI/AI/aiNPCGerudoQueenRoot.h new file mode 100644 index 00000000..b9072b9b --- /dev/null +++ b/src/Game/AI/AI/aiNPCGerudoQueenRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCGerudoQueenRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCGerudoQueenRoot, NPCRoot) +public: + explicit NPCGerudoQueenRoot(const InitArg& arg); + ~NPCGerudoQueenRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x238 + const bool* mIsOnHelmet_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHeartsRoot.cpp b/src/Game/AI/AI/aiNPCHeartsRoot.cpp new file mode 100644 index 00000000..872f4d59 --- /dev/null +++ b/src/Game/AI/AI/aiNPCHeartsRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNPCHeartsRoot.h" + +namespace uking::ai { + +NPCHeartsRoot::NPCHeartsRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCHeartsRoot::~NPCHeartsRoot() = default; + +bool NPCHeartsRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCHeartsRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCHeartsRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCHeartsRoot::loadParams_() { + NPCRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHeartsRoot.h b/src/Game/AI/AI/aiNPCHeartsRoot.h new file mode 100644 index 00000000..85e90b3e --- /dev/null +++ b/src/Game/AI/AI/aiNPCHeartsRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCHeartsRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCHeartsRoot, NPCRoot) +public: + explicit NPCHeartsRoot(const InitArg& arg); + ~NPCHeartsRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHorseRide.cpp b/src/Game/AI/AI/aiNPCHorseRide.cpp new file mode 100644 index 00000000..f19f5a9a --- /dev/null +++ b/src/Game/AI/AI/aiNPCHorseRide.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiNPCHorseRide.h" + +namespace uking::ai { + +NPCHorseRide::NPCHorseRide(const InitArg& arg) : NonPlayerHorseRide(arg) {} + +NPCHorseRide::~NPCHorseRide() = default; + +bool NPCHorseRide::init_(sead::Heap* heap) { + return NonPlayerHorseRide::init_(heap); +} + +void NPCHorseRide::enter_(ksys::act::ai::InlineParamPack* params) { + NonPlayerHorseRide::enter_(params); +} + +void NPCHorseRide::leave_() { + NonPlayerHorseRide::leave_(); +} + +void NPCHorseRide::loadParams_() { + getStaticParam(&mGearLevel_s, "GearLevel"); + getStaticParam(&mGearResetPathNum_s, "GearResetPathNum"); + getStaticParam(&mPlayerNearDistance_s, "PlayerNearDistance"); + getAITreeVariable(&mEventBindUnit_a, "EventBindUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHorseRide.h b/src/Game/AI/AI/aiNPCHorseRide.h new file mode 100644 index 00000000..af236b97 --- /dev/null +++ b/src/Game/AI/AI/aiNPCHorseRide.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiNonPlayerHorseRide.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCHorseRide : public NonPlayerHorseRide { + SEAD_RTTI_OVERRIDE(NPCHorseRide, NonPlayerHorseRide) +public: + explicit NPCHorseRide(const InitArg& arg); + ~NPCHorseRide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const int* mGearLevel_s{}; + // static_param at offset 0xe8 + const int* mGearResetPathNum_s{}; + // static_param at offset 0xf0 + const float* mPlayerNearDistance_s{}; + // aitree_variable at offset 0x268 + void* mEventBindUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHorseRideWait.cpp b/src/Game/AI/AI/aiNPCHorseRideWait.cpp new file mode 100644 index 00000000..1e7256c5 --- /dev/null +++ b/src/Game/AI/AI/aiNPCHorseRideWait.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNPCHorseRideWait.h" + +namespace uking::ai { + +NPCHorseRideWait::NPCHorseRideWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCHorseRideWait::~NPCHorseRideWait() = default; + +bool NPCHorseRideWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCHorseRideWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCHorseRideWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCHorseRideWait::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCHorseRideWait.h b/src/Game/AI/AI/aiNPCHorseRideWait.h new file mode 100644 index 00000000..5d4f2658 --- /dev/null +++ b/src/Game/AI/AI/aiNPCHorseRideWait.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCHorseRideWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCHorseRideWait, ksys::act::ai::Ai) +public: + explicit NPCHorseRideWait(const InitArg& arg); + ~NPCHorseRideWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMamonoShopRoot.cpp b/src/Game/AI/AI/aiNPCMamonoShopRoot.cpp new file mode 100644 index 00000000..460a6aaa --- /dev/null +++ b/src/Game/AI/AI/aiNPCMamonoShopRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNPCMamonoShopRoot.h" + +namespace uking::ai { + +NPCMamonoShopRoot::NPCMamonoShopRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCMamonoShopRoot::~NPCMamonoShopRoot() = default; + +bool NPCMamonoShopRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCMamonoShopRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCMamonoShopRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCMamonoShopRoot::loadParams_() { + NPCRoot::loadParams_(); + getMapUnitParam(&mMamonoShopPlacement_m, "MamonoShopPlacement"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMamonoShopRoot.h b/src/Game/AI/AI/aiNPCMamonoShopRoot.h new file mode 100644 index 00000000..debe2591 --- /dev/null +++ b/src/Game/AI/AI/aiNPCMamonoShopRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCMamonoShopRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCMamonoShopRoot, NPCRoot) +public: + explicit NPCMamonoShopRoot(const InitArg& arg); + ~NPCMamonoShopRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x238 + sead::SafeString mMamonoShopPlacement_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMove.cpp b/src/Game/AI/AI/aiNPCMove.cpp new file mode 100644 index 00000000..abe62a44 --- /dev/null +++ b/src/Game/AI/AI/aiNPCMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNPCMove.h" + +namespace uking::ai { + +NPCMove::NPCMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCMove::~NPCMove() = default; + +bool NPCMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCMove::loadParams_() { + getStaticParam(&mTerritoryRange_s, "TerritoryRange"); + getStaticParam(&mDestination_s, "Destination"); + getStaticParam(&mMoveEndASName_s, "MoveEndASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMove.h b/src/Game/AI/AI/aiNPCMove.h new file mode 100644 index 00000000..b0f27304 --- /dev/null +++ b/src/Game/AI/AI/aiNPCMove.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCMove, ksys::act::ai::Ai) +public: + explicit NPCMove(const InitArg& arg); + ~NPCMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTerritoryRange_s{}; + // static_param at offset 0x40 + sead::SafeString mDestination_s{}; + // static_param at offset 0x50 + sead::SafeString mMoveEndASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMoveToRailPoint.cpp b/src/Game/AI/AI/aiNPCMoveToRailPoint.cpp new file mode 100644 index 00000000..e58a6f9d --- /dev/null +++ b/src/Game/AI/AI/aiNPCMoveToRailPoint.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNPCMoveToRailPoint.h" + +namespace uking::ai { + +NPCMoveToRailPoint::NPCMoveToRailPoint(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCMoveToRailPoint::~NPCMoveToRailPoint() = default; + +bool NPCMoveToRailPoint::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCMoveToRailPoint::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCMoveToRailPoint::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCMoveToRailPoint::loadParams_() { + getDynamicParam(&mRailPointIndex_d, "RailPointIndex"); + getDynamicParam(&mIsTurnToRailPointDir_d, "IsTurnToRailPointDir"); + getDynamicParam(&mIsAlignmentAnchor_d, "IsAlignmentAnchor"); + getDynamicParam(&mRailUniqueName_d, "RailUniqueName"); + getDynamicParam(&mASName_d, "ASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCMoveToRailPoint.h b/src/Game/AI/AI/aiNPCMoveToRailPoint.h new file mode 100644 index 00000000..c024d9a1 --- /dev/null +++ b/src/Game/AI/AI/aiNPCMoveToRailPoint.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCMoveToRailPoint : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCMoveToRailPoint, ksys::act::ai::Ai) +public: + explicit NPCMoveToRailPoint(const InitArg& arg); + ~NPCMoveToRailPoint() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + int* mRailPointIndex_d{}; + // dynamic_param at offset 0x40 + bool* mIsTurnToRailPointDir_d{}; + // dynamic_param at offset 0x48 + bool* mIsAlignmentAnchor_d{}; + // dynamic_param at offset 0x50 + sead::SafeString* mRailUniqueName_d{}; + // dynamic_param at offset 0x60 + sead::SafeString* mASName_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReaction.cpp b/src/Game/AI/AI/aiNPCReaction.cpp new file mode 100644 index 00000000..b9fdb5ec --- /dev/null +++ b/src/Game/AI/AI/aiNPCReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNPCReaction.h" + +namespace uking::ai { + +NPCReaction::NPCReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCReaction::~NPCReaction() = default; + +void NPCReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCReaction::loadParams_() { + getDynamicParam(&mReactionId_d, "ReactionId"); + getDynamicParam(&mIsReceiveInterest2_d, "IsReceiveInterest2"); + getDynamicParam(&mMessageId_d, "MessageId"); + getDynamicParam(&mGazeASName_d, "GazeASName"); + getDynamicParam(&mStaggerDir_d, "StaggerDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReaction.h b/src/Game/AI/AI/aiNPCReaction.h new file mode 100644 index 00000000..33addfb7 --- /dev/null +++ b/src/Game/AI/AI/aiNPCReaction.h @@ -0,0 +1,30 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCReaction, ksys::act::ai::Ai) +public: + explicit NPCReaction(const InitArg& arg); + ~NPCReaction() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + int* mReactionId_d{}; + // dynamic_param at offset 0x40 + bool* mIsReceiveInterest2_d{}; + // dynamic_param at offset 0x48 + sead::SafeString* mMessageId_d{}; + // dynamic_param at offset 0x58 + sead::SafeString* mGazeASName_d{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mStaggerDir_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReturnAnchor.cpp b/src/Game/AI/AI/aiNPCReturnAnchor.cpp new file mode 100644 index 00000000..43930170 --- /dev/null +++ b/src/Game/AI/AI/aiNPCReturnAnchor.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNPCReturnAnchor.h" + +namespace uking::ai { + +NPCReturnAnchor::NPCReturnAnchor(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCReturnAnchor::~NPCReturnAnchor() = default; + +bool NPCReturnAnchor::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCReturnAnchor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCReturnAnchor::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCReturnAnchor::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReturnAnchor.h b/src/Game/AI/AI/aiNPCReturnAnchor.h new file mode 100644 index 00000000..a9185d25 --- /dev/null +++ b/src/Game/AI/AI/aiNPCReturnAnchor.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCReturnAnchor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCReturnAnchor, ksys::act::ai::Ai) +public: + explicit NPCReturnAnchor(const InitArg& arg); + ~NPCReturnAnchor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReturnRestPosRoot.cpp b/src/Game/AI/AI/aiNPCReturnRestPosRoot.cpp new file mode 100644 index 00000000..c0cd5a48 --- /dev/null +++ b/src/Game/AI/AI/aiNPCReturnRestPosRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNPCReturnRestPosRoot.h" + +namespace uking::ai { + +NPCReturnRestPosRoot::NPCReturnRestPosRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCReturnRestPosRoot::~NPCReturnRestPosRoot() = default; + +bool NPCReturnRestPosRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCReturnRestPosRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCReturnRestPosRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCReturnRestPosRoot::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCReturnRestPosRoot.h b/src/Game/AI/AI/aiNPCReturnRestPosRoot.h new file mode 100644 index 00000000..4355d16a --- /dev/null +++ b/src/Game/AI/AI/aiNPCReturnRestPosRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCReturnRestPosRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCReturnRestPosRoot, ksys::act::ai::Ai) +public: + explicit NPCReturnRestPosRoot(const InitArg& arg); + ~NPCReturnRestPosRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRoam.cpp b/src/Game/AI/AI/aiNPCRoam.cpp new file mode 100644 index 00000000..3522da65 --- /dev/null +++ b/src/Game/AI/AI/aiNPCRoam.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiNPCRoam.h" + +namespace uking::ai { + +NPCRoam::NPCRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCRoam::~NPCRoam() = default; + +bool NPCRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCRoam::loadParams_() { + getStaticParam(&mWaitFrame_s, "WaitFrame"); + getStaticParam(&mWaitFrameRand_s, "WaitFrameRand"); + getStaticParam(&mRadius_s, "Radius"); + getStaticParam(&mWalkDistMin_s, "WalkDistMin"); + getStaticParam(&mWalkDistMax_s, "WalkDistMax"); + getDynamicParam(&mWaitASName_d, "WaitASName"); + getDynamicParam(&mBasisPos_d, "BasisPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRoam.h b/src/Game/AI/AI/aiNPCRoam.h new file mode 100644 index 00000000..f48cfb2c --- /dev/null +++ b/src/Game/AI/AI/aiNPCRoam.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCRoam, ksys::act::ai::Ai) +public: + explicit NPCRoam(const InitArg& arg); + ~NPCRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWaitFrame_s{}; + // static_param at offset 0x40 + const int* mWaitFrameRand_s{}; + // static_param at offset 0x48 + const float* mRadius_s{}; + // static_param at offset 0x50 + const float* mWalkDistMin_s{}; + // static_param at offset 0x58 + const float* mWalkDistMax_s{}; + // dynamic_param at offset 0x60 + sead::SafeString* mWaitASName_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mBasisPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRoot.cpp b/src/Game/AI/AI/aiNPCRoot.cpp new file mode 100644 index 00000000..faa0c316 --- /dev/null +++ b/src/Game/AI/AI/aiNPCRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiNPCRoot.h" + +namespace uking::ai { + +NPCRoot::NPCRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCRoot::~NPCRoot() = default; + +bool NPCRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCRoot::loadParams_() { + getStaticParam(&mReleaseInterest2Time_s, "ReleaseInterest2Time"); + getStaticParam(&mPlayerHitVelocity_s, "PlayerHitVelocity"); + getStaticParam(&mStaggerUpperASName_s, "StaggerUpperASName"); + getStaticParam(&mStaggerUpperRunASName_s, "StaggerUpperRunASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRoot.h b/src/Game/AI/AI/aiNPCRoot.h new file mode 100644 index 00000000..5f8bcff2 --- /dev/null +++ b/src/Game/AI/AI/aiNPCRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCRoot, ksys::act::ai::Ai) +public: + explicit NPCRoot(const InitArg& arg); + ~NPCRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mReleaseInterest2Time_s{}; + // static_param at offset 0x40 + const float* mPlayerHitVelocity_s{}; + // static_param at offset 0x48 + sead::SafeString mStaggerUpperASName_s{}; + // static_param at offset 0x58 + sead::SafeString mStaggerUpperRunASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRunaway.cpp b/src/Game/AI/AI/aiNPCRunaway.cpp new file mode 100644 index 00000000..98ae3150 --- /dev/null +++ b/src/Game/AI/AI/aiNPCRunaway.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiNPCRunaway.h" + +namespace uking::ai { + +NPCRunaway::NPCRunaway(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCRunaway::~NPCRunaway() = default; + +bool NPCRunaway::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCRunaway::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCRunaway::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCRunaway::loadParams_() { + getStaticParam(&mReleaseDistance_s, "ReleaseDistance"); + getStaticParam(&mCorneredDistance_s, "CorneredDistance"); + getStaticParam(&mStandRateTime_s, "StandRateTime"); + getStaticParam(&mStandingTime_s, "StandingTime"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mTerrorLayer_d, "TerrorLayer"); + getDynamicParam(&mIsReturnFromDemo_d, "IsReturnFromDemo"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCRunaway.h b/src/Game/AI/AI/aiNPCRunaway.h new file mode 100644 index 00000000..91e3a9a2 --- /dev/null +++ b/src/Game/AI/AI/aiNPCRunaway.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCRunaway : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCRunaway, ksys::act::ai::Ai) +public: + explicit NPCRunaway(const InitArg& arg); + ~NPCRunaway() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mReleaseDistance_s{}; + // static_param at offset 0x40 + const float* mCorneredDistance_s{}; + // static_param at offset 0x48 + const float* mStandRateTime_s{}; + // static_param at offset 0x50 + const float* mStandingTime_s{}; + // dynamic_param at offset 0x58 + int* mTerrorLevel_d{}; + // dynamic_param at offset 0x60 + int* mTerrorLayer_d{}; + // dynamic_param at offset 0x68 + bool* mIsReturnFromDemo_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mTargetVel_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSearch.cpp b/src/Game/AI/AI/aiNPCSearch.cpp new file mode 100644 index 00000000..399fe105 --- /dev/null +++ b/src/Game/AI/AI/aiNPCSearch.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNPCSearch.h" + +namespace uking::ai { + +NPCSearch::NPCSearch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCSearch::~NPCSearch() = default; + +bool NPCSearch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCSearch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCSearch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCSearch::loadParams_() { + getDynamicParam(&mIsHearing_d, "IsHearing"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTarget_d, "Target"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSearch.h b/src/Game/AI/AI/aiNPCSearch.h new file mode 100644 index 00000000..06a13799 --- /dev/null +++ b/src/Game/AI/AI/aiNPCSearch.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCSearch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCSearch, ksys::act::ai::Ai) +public: + explicit NPCSearch(const InitArg& arg); + ~NPCSearch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsHearing_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTarget_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSurprised.cpp b/src/Game/AI/AI/aiNPCSurprised.cpp new file mode 100644 index 00000000..bb360675 --- /dev/null +++ b/src/Game/AI/AI/aiNPCSurprised.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNPCSurprised.h" + +namespace uking::ai { + +NPCSurprised::NPCSurprised(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCSurprised::~NPCSurprised() = default; + +bool NPCSurprised::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCSurprised::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCSurprised::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCSurprised::loadParams_() { + getDynamicParam(&mTerrorLayer_d, "TerrorLayer"); + getDynamicParam(&mIsNeedUnEquipWeapon_d, "IsNeedUnEquipWeapon"); + getDynamicParam(&mTerrorEmitter_d, "TerrorEmitter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSurprised.h b/src/Game/AI/AI/aiNPCSurprised.h new file mode 100644 index 00000000..e606a963 --- /dev/null +++ b/src/Game/AI/AI/aiNPCSurprised.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCSurprised : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCSurprised, ksys::act::ai::Ai) +public: + explicit NPCSurprised(const InitArg& arg); + ~NPCSurprised() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + int* mTerrorLayer_d{}; + // dynamic_param at offset 0x40 + bool* mIsNeedUnEquipWeapon_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTerrorEmitter_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSuspend.cpp b/src/Game/AI/AI/aiNPCSuspend.cpp new file mode 100644 index 00000000..ec96be00 --- /dev/null +++ b/src/Game/AI/AI/aiNPCSuspend.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNPCSuspend.h" + +namespace uking::ai { + +NPCSuspend::NPCSuspend(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCSuspend::~NPCSuspend() = default; + +bool NPCSuspend::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCSuspend::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCSuspend::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCSuspend::loadParams_() { + getStaticParam(&mWaitTime_s, "WaitTime"); + getStaticParam(&mEndMoveTime_s, "EndMoveTime"); + getStaticParam(&mRetryCount_s, "RetryCount"); + getStaticParam(&mSearchRadius_s, "SearchRadius"); + getDynamicParam(&mASName_d, "ASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCSuspend.h b/src/Game/AI/AI/aiNPCSuspend.h new file mode 100644 index 00000000..248e328e --- /dev/null +++ b/src/Game/AI/AI/aiNPCSuspend.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCSuspend : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCSuspend, ksys::act::ai::Ai) +public: + explicit NPCSuspend(const InitArg& arg); + ~NPCSuspend() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWaitTime_s{}; + // static_param at offset 0x40 + const int* mEndMoveTime_s{}; + // static_param at offset 0x48 + const int* mRetryCount_s{}; + // static_param at offset 0x50 + const float* mSearchRadius_s{}; + // dynamic_param at offset 0x58 + sead::SafeString* mASName_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTalkBalloon.cpp b/src/Game/AI/AI/aiNPCTalkBalloon.cpp new file mode 100644 index 00000000..fa336be3 --- /dev/null +++ b/src/Game/AI/AI/aiNPCTalkBalloon.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiNPCTalkBalloon.h" + +namespace uking::ai { + +NPCTalkBalloon::NPCTalkBalloon(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCTalkBalloon::~NPCTalkBalloon() = default; + +void NPCTalkBalloon::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCTalkBalloon::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCTalkBalloon::loadParams_() { + getStaticParam(&mDurationTime_s, "DurationTime"); + getStaticParam(&mDelayFrame_s, "DelayFrame"); + getDynamicParam(&mMessageId_d, "MessageId"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTalkBalloon.h b/src/Game/AI/AI/aiNPCTalkBalloon.h new file mode 100644 index 00000000..cc5ad48f --- /dev/null +++ b/src/Game/AI/AI/aiNPCTalkBalloon.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTalkBalloon : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCTalkBalloon, ksys::act::ai::Ai) +public: + explicit NPCTalkBalloon(const InitArg& arg); + ~NPCTalkBalloon() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDurationTime_s{}; + // static_param at offset 0x40 + const int* mDelayFrame_s{}; + // dynamic_param at offset 0x48 + sead::SafeString* mMessageId_d{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTerrorAI.cpp b/src/Game/AI/AI/aiNPCTerrorAI.cpp new file mode 100644 index 00000000..2e7ce75f --- /dev/null +++ b/src/Game/AI/AI/aiNPCTerrorAI.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNPCTerrorAI.h" + +namespace uking::ai { + +NPCTerrorAI::NPCTerrorAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCTerrorAI::~NPCTerrorAI() = default; + +void NPCTerrorAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCTerrorAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCTerrorAI::loadParams_() { + getStaticParam(&mTerrorEndTime_s, "TerrorEndTime"); + getDynamicParam(&mTerrorLayer_d, "TerrorLayer"); + getDynamicParam(&mTerrorLevel_d, "TerrorLevel"); + getDynamicParam(&mIsReturnFromDemo_d, "IsReturnFromDemo"); + getDynamicParam(&mIsTimeOver_d, "IsTimeOver"); + getDynamicParam(&mIsNeedUnEquipWeapon_d, "IsNeedUnEquipWeapon"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); + getDynamicParam(&mTerrorEmitter_d, "TerrorEmitter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTerrorAI.h b/src/Game/AI/AI/aiNPCTerrorAI.h new file mode 100644 index 00000000..ff27df7e --- /dev/null +++ b/src/Game/AI/AI/aiNPCTerrorAI.h @@ -0,0 +1,38 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTerrorAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCTerrorAI, ksys::act::ai::Ai) +public: + explicit NPCTerrorAI(const InitArg& arg); + ~NPCTerrorAI() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTerrorEndTime_s{}; + // dynamic_param at offset 0x40 + int* mTerrorLayer_d{}; + // dynamic_param at offset 0x48 + float* mTerrorLevel_d{}; + // dynamic_param at offset 0x50 + bool* mIsReturnFromDemo_d{}; + // dynamic_param at offset 0x58 + bool* mIsTimeOver_d{}; + // dynamic_param at offset 0x60 + bool* mIsNeedUnEquipWeapon_d{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetVel_d{}; + // dynamic_param at offset 0x78 + ksys::act::BaseProcLink* mTerrorEmitter_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTimeline.cpp b/src/Game/AI/AI/aiNPCTimeline.cpp new file mode 100644 index 00000000..a11242cc --- /dev/null +++ b/src/Game/AI/AI/aiNPCTimeline.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNPCTimeline.h" + +namespace uking::ai { + +NPCTimeline::NPCTimeline(const InitArg& arg) : TimelineAI(arg) {} + +NPCTimeline::~NPCTimeline() = default; + +bool NPCTimeline::init_(sead::Heap* heap) { + return TimelineAI::init_(heap); +} + +void NPCTimeline::enter_(ksys::act::ai::InlineParamPack* params) { + TimelineAI::enter_(params); +} + +void NPCTimeline::leave_() { + TimelineAI::leave_(); +} + +void NPCTimeline::loadParams_() { + TimelineAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTimeline.h b/src/Game/AI/AI/aiNPCTimeline.h new file mode 100644 index 00000000..f18a391b --- /dev/null +++ b/src/Game/AI/AI/aiNPCTimeline.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTimelineAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTimeline : public TimelineAI { + SEAD_RTTI_OVERRIDE(NPCTimeline, TimelineAI) +public: + explicit NPCTimeline(const InitArg& arg); + ~NPCTimeline() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravel.cpp b/src/Game/AI/AI/aiNPCTravel.cpp new file mode 100644 index 00000000..b5de1c85 --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravel.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNPCTravel.h" + +namespace uking::ai { + +NPCTravel::NPCTravel(const InitArg& arg) : NPCTravelBase(arg) {} + +NPCTravel::~NPCTravel() = default; + +bool NPCTravel::init_(sead::Heap* heap) { + return NPCTravelBase::init_(heap); +} + +void NPCTravel::enter_(ksys::act::ai::InlineParamPack* params) { + NPCTravelBase::enter_(params); +} + +void NPCTravel::leave_() { + NPCTravelBase::leave_(); +} + +void NPCTravel::loadParams_() { + NPCTravelBase::loadParams_(); + getStaticParam(&mWaitHorseReturnDist_s, "WaitHorseReturnDist"); + getStaticParam(&mGiveUpWaitHorseTime_s, "GiveUpWaitHorseTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravel.h b/src/Game/AI/AI/aiNPCTravel.h new file mode 100644 index 00000000..063ac5d9 --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravel.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiNPCTravelBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTravel : public NPCTravelBase { + SEAD_RTTI_OVERRIDE(NPCTravel, NPCTravelBase) +public: + explicit NPCTravel(const InitArg& arg); + ~NPCTravel() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x78 + const float* mWaitHorseReturnDist_s{}; + // static_param at offset 0x80 + const float* mGiveUpWaitHorseTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravelBase.cpp b/src/Game/AI/AI/aiNPCTravelBase.cpp new file mode 100644 index 00000000..708ccb7e --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravelBase.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNPCTravelBase.h" + +namespace uking::ai { + +NPCTravelBase::NPCTravelBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NPCTravelBase::~NPCTravelBase() = default; + +bool NPCTravelBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NPCTravelBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NPCTravelBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NPCTravelBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravelBase.h b/src/Game/AI/AI/aiNPCTravelBase.h new file mode 100644 index 00000000..3c123cfb --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravelBase.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTravelBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NPCTravelBase, ksys::act::ai::Ai) +public: + explicit NPCTravelBase(const InitArg& arg); + ~NPCTravelBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravelerRoot.cpp b/src/Game/AI/AI/aiNPCTravelerRoot.cpp new file mode 100644 index 00000000..536d94ec --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravelerRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNPCTravelerRoot.h" + +namespace uking::ai { + +NPCTravelerRoot::NPCTravelerRoot(const InitArg& arg) : NPCRoot(arg) {} + +NPCTravelerRoot::~NPCTravelerRoot() = default; + +bool NPCTravelerRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NPCTravelerRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NPCTravelerRoot::leave_() { + NPCRoot::leave_(); +} + +void NPCTravelerRoot::loadParams_() { + NPCRoot::loadParams_(); + getStaticParam(&mIsRiderChangableAction_s, "IsRiderChangableAction"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCTravelerRoot.h b/src/Game/AI/AI/aiNPCTravelerRoot.h new file mode 100644 index 00000000..9a567fc5 --- /dev/null +++ b/src/Game/AI/AI/aiNPCTravelerRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCTravelerRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NPCTravelerRoot, NPCRoot) +public: + explicit NPCTravelerRoot(const InitArg& arg); + ~NPCTravelerRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x238 + const bool* mIsRiderChangableAction_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCWander.cpp b/src/Game/AI/AI/aiNPCWander.cpp new file mode 100644 index 00000000..edd81f98 --- /dev/null +++ b/src/Game/AI/AI/aiNPCWander.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiNPCWander.h" + +namespace uking::ai { + +NPCWander::NPCWander(const InitArg& arg) : NPCTravelBase(arg) {} + +NPCWander::~NPCWander() = default; + +bool NPCWander::init_(sead::Heap* heap) { + return NPCTravelBase::init_(heap); +} + +void NPCWander::enter_(ksys::act::ai::InlineParamPack* params) { + NPCTravelBase::enter_(params); +} + +void NPCWander::leave_() { + NPCTravelBase::leave_(); +} + +void NPCWander::loadParams_() { + NPCTravelBase::loadParams_(); + getStaticParam(&mRainWaitTime_s, "RainWaitTime"); + getStaticParam(&mGoalDistance_s, "GoalDistance"); + getStaticParam(&mRailUpdateDistRate_s, "RailUpdateDistRate"); + getStaticParam(&mRainDestination_s, "RainDestination"); + getStaticParam(&mNormalASKeyName_s, "NormalASKeyName"); + getStaticParam(&mRainASKeyName_s, "RainASKeyName"); + getStaticParam(&mRailUniqueName_s, "RailUniqueName"); + getDynamicParam(&mIsPathRest_d, "IsPathRest"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNPCWander.h b/src/Game/AI/AI/aiNPCWander.h new file mode 100644 index 00000000..88caa647 --- /dev/null +++ b/src/Game/AI/AI/aiNPCWander.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiNPCTravelBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NPCWander : public NPCTravelBase { + SEAD_RTTI_OVERRIDE(NPCWander, NPCTravelBase) +public: + explicit NPCWander(const InitArg& arg); + ~NPCWander() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x78 + const float* mRainWaitTime_s{}; + // static_param at offset 0x80 + const float* mGoalDistance_s{}; + // static_param at offset 0x88 + const float* mRailUpdateDistRate_s{}; + // static_param at offset 0x90 + sead::SafeString mRainDestination_s{}; + // static_param at offset 0xa0 + sead::SafeString mNormalASKeyName_s{}; + // static_param at offset 0xb0 + sead::SafeString mRainASKeyName_s{}; + // static_param at offset 0xc0 + sead::SafeString mRailUniqueName_s{}; + // dynamic_param at offset 0xd0 + bool* mIsPathRest_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.cpp b/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.cpp new file mode 100644 index 00000000..4dac14d9 --- /dev/null +++ b/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h" + +namespace uking::ai { + +NavMeshTurnAwayFromHitPos::NavMeshTurnAwayFromHitPos(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NavMeshTurnAwayFromHitPos::~NavMeshTurnAwayFromHitPos() = default; + +bool NavMeshTurnAwayFromHitPos::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NavMeshTurnAwayFromHitPos::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NavMeshTurnAwayFromHitPos::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NavMeshTurnAwayFromHitPos::loadParams_() { + getStaticParam(&mNumLOSCheckMax_s, "NumLOSCheckMax"); + getStaticParam(&mLOSCheckLength_s, "LOSCheckLength"); + getStaticParam(&mMoveToSafePosAfterTurn_s, "MoveToSafePosAfterTurn"); + getDynamicParam(&mHitPos_d, "HitPos"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h b/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h new file mode 100644 index 00000000..fce504f1 --- /dev/null +++ b/src/Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavMeshTurnAwayFromHitPos : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NavMeshTurnAwayFromHitPos, ksys::act::ai::Ai) +public: + explicit NavMeshTurnAwayFromHitPos(const InitArg& arg); + ~NavMeshTurnAwayFromHitPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNumLOSCheckMax_s{}; + // static_param at offset 0x40 + const float* mLOSCheckLength_s{}; + // static_param at offset 0x48 + const bool* mMoveToSafePosAfterTurn_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mHitPos_d{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveNearTarget.cpp b/src/Game/AI/AI/aiNavMoveNearTarget.cpp new file mode 100644 index 00000000..1b8f5299 --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveNearTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNavMoveNearTarget.h" + +namespace uking::ai { + +NavMoveNearTarget::NavMoveNearTarget(const InitArg& arg) : NavMoveTarget(arg) {} + +NavMoveNearTarget::~NavMoveNearTarget() = default; + +bool NavMoveNearTarget::init_(sead::Heap* heap) { + return NavMoveTarget::init_(heap); +} + +void NavMoveNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + NavMoveTarget::enter_(params); +} + +void NavMoveNearTarget::leave_() { + NavMoveTarget::leave_(); +} + +void NavMoveNearTarget::loadParams_() { + NavMoveTarget::loadParams_(); + getStaticParam(&mTargetVMax_s, "TargetVMax"); + getStaticParam(&mTargetVMin_s, "TargetVMin"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveNearTarget.h b/src/Game/AI/AI/aiNavMoveNearTarget.h new file mode 100644 index 00000000..eb6d0171 --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveNearTarget.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiNavMoveTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavMoveNearTarget : public NavMoveTarget { + SEAD_RTTI_OVERRIDE(NavMoveNearTarget, NavMoveTarget) +public: + explicit NavMoveNearTarget(const InitArg& arg); + ~NavMoveNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x380 + const float* mTargetVMax_s{}; + // static_param at offset 0x388 + const float* mTargetVMin_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTarget.cpp b/src/Game/AI/AI/aiNavMoveTarget.cpp new file mode 100644 index 00000000..906d782f --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTarget.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiNavMoveTarget.h" + +namespace uking::ai { + +NavMoveTarget::NavMoveTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NavMoveTarget::~NavMoveTarget() = default; + +bool NavMoveTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NavMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NavMoveTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NavMoveTarget::loadParams_() { + getStaticParam(&mVibrateCheckTime_s, "VibrateCheckTime"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mReachTargetArea_s, "ReachTargetArea"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mTooFarDist_s, "TooFarDist"); + getStaticParam(&mUseCharacterRadius_s, "UseCharacterRadius"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mRefPosVibrateCheckerForAI_a, "RefPosVibrateCheckerForAI"); + getAITreeVariable(&mRefVelRotVibrateCheckerforAI_a, "RefVelRotVibrateCheckerforAI"); + getStaticParam(&mIsLastLineReachCheck_s, "IsLastLineReachCheck"); + getStaticParam(&mRotVibrateCheckTime_s, "RotVibrateCheckTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTarget.h b/src/Game/AI/AI/aiNavMoveTarget.h new file mode 100644 index 00000000..38919764 --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTarget.h @@ -0,0 +1,45 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavMoveTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NavMoveTarget, ksys::act::ai::Ai) +public: + explicit NavMoveTarget(const InitArg& arg); + ~NavMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // aitree_variable at offset 0x40 + void* mRefPosVibrateCheckerForAI_a{}; + // aitree_variable at offset 0x48 + void* mRefVelRotVibrateCheckerforAI_a{}; + // static_param at offset 0x320 + const int* mWeaponIdx_s{}; + // static_param at offset 0x328 + const float* mReachTargetArea_s{}; + // static_param at offset 0x330 + const float* mRepathTime_s{}; + // static_param at offset 0x338 + const float* mTooFarDist_s{}; + // static_param at offset 0x340 + const bool* mUseCharacterRadius_s{}; + // static_param at offset 0x348 + const int* mVibrateCheckTime_s{}; + // static_param at offset 0x350 + const int* mRotVibrateCheckTime_s{}; + // static_param at offset 0x358 + const bool* mIsLastLineReachCheck_s{}; + // dynamic_param at offset 0x360 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTargetClosestPoint.cpp b/src/Game/AI/AI/aiNavMoveTargetClosestPoint.cpp new file mode 100644 index 00000000..d04a7800 --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTargetClosestPoint.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiNavMoveTargetClosestPoint.h" + +namespace uking::ai { + +NavMoveTargetClosestPoint::NavMoveTargetClosestPoint(const InitArg& arg) : NavMoveNearTarget(arg) {} + +NavMoveTargetClosestPoint::~NavMoveTargetClosestPoint() = default; + +void NavMoveTargetClosestPoint::loadParams_() { + NavMoveNearTarget::loadParams_(); + getStaticParam(&mSearchRadius_s, "SearchRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTargetClosestPoint.h b/src/Game/AI/AI/aiNavMoveTargetClosestPoint.h new file mode 100644 index 00000000..ffd6b30d --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTargetClosestPoint.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiNavMoveNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavMoveTargetClosestPoint : public NavMoveNearTarget { + SEAD_RTTI_OVERRIDE(NavMoveTargetClosestPoint, NavMoveNearTarget) +public: + explicit NavMoveTargetClosestPoint(const InitArg& arg); + ~NavMoveTargetClosestPoint() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x3a0 + const float* mSearchRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.cpp b/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.cpp new file mode 100644 index 00000000..4d487760 --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNavMoveTargetWithJumpWater.h" + +namespace uking::ai { + +NavMoveTargetWithJumpWater::NavMoveTargetWithJumpWater(const InitArg& arg) : NavMoveTarget(arg) {} + +NavMoveTargetWithJumpWater::~NavMoveTargetWithJumpWater() = default; + +bool NavMoveTargetWithJumpWater::init_(sead::Heap* heap) { + return NavMoveTarget::init_(heap); +} + +void NavMoveTargetWithJumpWater::enter_(ksys::act::ai::InlineParamPack* params) { + NavMoveTarget::enter_(params); +} + +void NavMoveTargetWithJumpWater::leave_() { + NavMoveTarget::leave_(); +} + +void NavMoveTargetWithJumpWater::loadParams_() { + NavMoveTarget::loadParams_(); + getStaticParam(&mJumpDist_s, "JumpDist"); + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mWaterCheckDist_s, "WaterCheckDist"); + getStaticParam(&mIsCheckDamage_s, "IsCheckDamage"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.h b/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.h new file mode 100644 index 00000000..0af7a88d --- /dev/null +++ b/src/Game/AI/AI/aiNavMoveTargetWithJumpWater.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiNavMoveTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavMoveTargetWithJumpWater : public NavMoveTarget { + SEAD_RTTI_OVERRIDE(NavMoveTargetWithJumpWater, NavMoveTarget) +public: + explicit NavMoveTargetWithJumpWater(const InitArg& arg); + ~NavMoveTargetWithJumpWater() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x380 + const float* mJumpDist_s{}; + // static_param at offset 0x388 + const float* mInWaterDepth_s{}; + // static_param at offset 0x390 + const float* mWaterCheckDist_s{}; + // static_param at offset 0x398 + const bool* mIsCheckDamage_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavViewMove.cpp b/src/Game/AI/AI/aiNavViewMove.cpp new file mode 100644 index 00000000..59c8de4d --- /dev/null +++ b/src/Game/AI/AI/aiNavViewMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNavViewMove.h" + +namespace uking::ai { + +NavViewMove::NavViewMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NavViewMove::~NavViewMove() = default; + +bool NavViewMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NavViewMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NavViewMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NavViewMove::loadParams_() { + getStaticParam(&mSubsAngle_s, "SubsAngle"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNavViewMove.h b/src/Game/AI/AI/aiNavViewMove.h new file mode 100644 index 00000000..150a6afd --- /dev/null +++ b/src/Game/AI/AI/aiNavViewMove.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NavViewMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NavViewMove, ksys::act::ai::Ai) +public: + explicit NavViewMove(const InitArg& arg); + ~NavViewMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSubsAngle_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNearCreateAppearTypeSelect.cpp b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.cpp new file mode 100644 index 00000000..4b503711 --- /dev/null +++ b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNearCreateAppearTypeSelect.h" + +namespace uking::ai { + +NearCreateAppearTypeSelect::NearCreateAppearTypeSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +NearCreateAppearTypeSelect::~NearCreateAppearTypeSelect() = default; + +bool NearCreateAppearTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NearCreateAppearTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NearCreateAppearTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NearCreateAppearTypeSelect::loadParams_() { + getMapUnitParam(&mNearCreateAppearType_m, "NearCreateAppearType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h new file mode 100644 index 00000000..0d53b69d --- /dev/null +++ b/src/Game/AI/AI/aiNearCreateAppearTypeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NearCreateAppearTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NearCreateAppearTypeSelect, ksys::act::ai::Ai) +public: + explicit NearCreateAppearTypeSelect(const InitArg& arg); + ~NearCreateAppearTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mNearCreateAppearType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNearCreateSelect.cpp b/src/Game/AI/AI/aiNearCreateSelect.cpp new file mode 100644 index 00000000..f62de649 --- /dev/null +++ b/src/Game/AI/AI/aiNearCreateSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNearCreateSelect.h" + +namespace uking::ai { + +NearCreateSelect::NearCreateSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NearCreateSelect::~NearCreateSelect() = default; + +bool NearCreateSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NearCreateSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NearCreateSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NearCreateSelect::loadParams_() { + getMapUnitParam(&mIsNearCreate_m, "IsNearCreate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNearCreateSelect.h b/src/Game/AI/AI/aiNearCreateSelect.h new file mode 100644 index 00000000..f27431d4 --- /dev/null +++ b/src/Game/AI/AI/aiNearCreateSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NearCreateSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NearCreateSelect, ksys::act::ai::Ai) +public: + explicit NearCreateSelect(const InitArg& arg); + ~NearCreateSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsNearCreate_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNewMannequinRoot.cpp b/src/Game/AI/AI/aiNewMannequinRoot.cpp new file mode 100644 index 00000000..19317110 --- /dev/null +++ b/src/Game/AI/AI/aiNewMannequinRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNewMannequinRoot.h" + +namespace uking::ai { + +NewMannequinRoot::NewMannequinRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NewMannequinRoot::~NewMannequinRoot() = default; + +bool NewMannequinRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NewMannequinRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NewMannequinRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NewMannequinRoot::loadParams_() { + getMapUnitParam(&mArmorDyeColor_m, "ArmorDyeColor"); + getMapUnitParam(&mShopSellType_m, "ShopSellType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNewMannequinRoot.h b/src/Game/AI/AI/aiNewMannequinRoot.h new file mode 100644 index 00000000..d6747f36 --- /dev/null +++ b/src/Game/AI/AI/aiNewMannequinRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NewMannequinRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NewMannequinRoot, ksys::act::ai::Ai) +public: + explicit NewMannequinRoot(const InitArg& arg); + ~NewMannequinRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mArmorDyeColor_m{}; + // map_unit_param at offset 0x40 + const int* mShopSellType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNonPlayerHorseRide.cpp b/src/Game/AI/AI/aiNonPlayerHorseRide.cpp new file mode 100644 index 00000000..774dae17 --- /dev/null +++ b/src/Game/AI/AI/aiNonPlayerHorseRide.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNonPlayerHorseRide.h" + +namespace uking::ai { + +NonPlayerHorseRide::NonPlayerHorseRide(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NonPlayerHorseRide::~NonPlayerHorseRide() = default; + +bool NonPlayerHorseRide::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NonPlayerHorseRide::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NonPlayerHorseRide::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NonPlayerHorseRide::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNonPlayerHorseRide.h b/src/Game/AI/AI/aiNonPlayerHorseRide.h new file mode 100644 index 00000000..aad74d2f --- /dev/null +++ b/src/Game/AI/AI/aiNonPlayerHorseRide.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NonPlayerHorseRide : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NonPlayerHorseRide, ksys::act::ai::Ai) +public: + explicit NonPlayerHorseRide(const InitArg& arg); + ~NonPlayerHorseRide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNormalHumanEquipableShield.cpp b/src/Game/AI/AI/aiNormalHumanEquipableShield.cpp new file mode 100644 index 00000000..6071d910 --- /dev/null +++ b/src/Game/AI/AI/aiNormalHumanEquipableShield.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNormalHumanEquipableShield.h" + +namespace uking::ai { + +NormalHumanEquipableShield::NormalHumanEquipableShield(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +NormalHumanEquipableShield::~NormalHumanEquipableShield() = default; + +bool NormalHumanEquipableShield::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NormalHumanEquipableShield::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NormalHumanEquipableShield::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NormalHumanEquipableShield::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNormalHumanEquipableShield.h b/src/Game/AI/AI/aiNormalHumanEquipableShield.h new file mode 100644 index 00000000..9ed7f43d --- /dev/null +++ b/src/Game/AI/AI/aiNormalHumanEquipableShield.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NormalHumanEquipableShield : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NormalHumanEquipableShield, ksys::act::ai::Ai) +public: + explicit NormalHumanEquipableShield(const InitArg& arg); + ~NormalHumanEquipableShield() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNoticePartsRangeSelector.cpp b/src/Game/AI/AI/aiNoticePartsRangeSelector.cpp new file mode 100644 index 00000000..68f85f93 --- /dev/null +++ b/src/Game/AI/AI/aiNoticePartsRangeSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiNoticePartsRangeSelector.h" + +namespace uking::ai { + +NoticePartsRangeSelector::NoticePartsRangeSelector(const InitArg& arg) : RangeSelect(arg) {} + +NoticePartsRangeSelector::~NoticePartsRangeSelector() = default; + +bool NoticePartsRangeSelector::init_(sead::Heap* heap) { + return RangeSelect::init_(heap); +} + +void NoticePartsRangeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelect::enter_(params); +} + +void NoticePartsRangeSelector::leave_() { + RangeSelect::leave_(); +} + +void NoticePartsRangeSelector::loadParams_() { + RangeSelect::loadParams_(); + getStaticParam(&mPartsName_s, "PartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNoticePartsRangeSelector.h b/src/Game/AI/AI/aiNoticePartsRangeSelector.h new file mode 100644 index 00000000..8e6be209 --- /dev/null +++ b/src/Game/AI/AI/aiNoticePartsRangeSelector.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NoticePartsRangeSelector : public RangeSelect { + SEAD_RTTI_OVERRIDE(NoticePartsRangeSelector, RangeSelect) +public: + explicit NoticePartsRangeSelector(const InitArg& arg); + ~NoticePartsRangeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcDemoRoot.cpp b/src/Game/AI/AI/aiNpcDemoRoot.cpp new file mode 100644 index 00000000..41188fec --- /dev/null +++ b/src/Game/AI/AI/aiNpcDemoRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNpcDemoRoot.h" + +namespace uking::ai { + +NpcDemoRoot::NpcDemoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NpcDemoRoot::~NpcDemoRoot() = default; + +bool NpcDemoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NpcDemoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NpcDemoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NpcDemoRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcDemoRoot.h b/src/Game/AI/AI/aiNpcDemoRoot.h new file mode 100644 index 00000000..67aa2c61 --- /dev/null +++ b/src/Game/AI/AI/aiNpcDemoRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NpcDemoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NpcDemoRoot, ksys::act::ai::Ai) +public: + explicit NpcDemoRoot(const InitArg& arg); + ~NpcDemoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcMoveToAnchor.cpp b/src/Game/AI/AI/aiNpcMoveToAnchor.cpp new file mode 100644 index 00000000..a4e3ae09 --- /dev/null +++ b/src/Game/AI/AI/aiNpcMoveToAnchor.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiNpcMoveToAnchor.h" + +namespace uking::ai { + +NpcMoveToAnchor::NpcMoveToAnchor(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NpcMoveToAnchor::~NpcMoveToAnchor() = default; + +bool NpcMoveToAnchor::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NpcMoveToAnchor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NpcMoveToAnchor::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NpcMoveToAnchor::loadParams_() { + getDynamicParam(&mIsTurnToAnchorDir_d, "IsTurnToAnchorDir"); + getDynamicParam(&mIsAlignmentAnchor_d, "IsAlignmentAnchor"); + getDynamicParam(&mAnchorName_d, "AnchorName"); + getDynamicParam(&mAnchorUniqueName_d, "AnchorUniqueName"); + getDynamicParam(&mASKeyName_d, "ASKeyName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcMoveToAnchor.h b/src/Game/AI/AI/aiNpcMoveToAnchor.h new file mode 100644 index 00000000..0ecac642 --- /dev/null +++ b/src/Game/AI/AI/aiNpcMoveToAnchor.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NpcMoveToAnchor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NpcMoveToAnchor, ksys::act::ai::Ai) +public: + explicit NpcMoveToAnchor(const InitArg& arg); + ~NpcMoveToAnchor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsTurnToAnchorDir_d{}; + // dynamic_param at offset 0x40 + bool* mIsAlignmentAnchor_d{}; + // dynamic_param at offset 0x48 + sead::SafeString* mAnchorName_d{}; + // dynamic_param at offset 0x58 + sead::SafeString* mAnchorUniqueName_d{}; + // dynamic_param at offset 0x68 + sead::SafeString* mASKeyName_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcTebaRoot.cpp b/src/Game/AI/AI/aiNpcTebaRoot.cpp new file mode 100644 index 00000000..0431ff14 --- /dev/null +++ b/src/Game/AI/AI/aiNpcTebaRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiNpcTebaRoot.h" + +namespace uking::ai { + +NpcTebaRoot::NpcTebaRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NpcTebaRoot::~NpcTebaRoot() = default; + +bool NpcTebaRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NpcTebaRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NpcTebaRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NpcTebaRoot::loadParams_() { + getStaticParam(&mShowMessageLockonMinInterval_s, "ShowMessageLockonMinInterval"); + getStaticParam(&mApproachPlayerHeight_s, "ApproachPlayerHeight"); + getStaticParam(&mShowMessageDoDist_s, "ShowMessageDoDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcTebaRoot.h b/src/Game/AI/AI/aiNpcTebaRoot.h new file mode 100644 index 00000000..2fd05989 --- /dev/null +++ b/src/Game/AI/AI/aiNpcTebaRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NpcTebaRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NpcTebaRoot, ksys::act::ai::Ai) +public: + explicit NpcTebaRoot(const InitArg& arg); + ~NpcTebaRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mShowMessageLockonMinInterval_s{}; + // static_param at offset 0x40 + const float* mApproachPlayerHeight_s{}; + // static_param at offset 0x48 + const float* mShowMessageDoDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcTebaTrainingRoot.cpp b/src/Game/AI/AI/aiNpcTebaTrainingRoot.cpp new file mode 100644 index 00000000..9ed0f649 --- /dev/null +++ b/src/Game/AI/AI/aiNpcTebaTrainingRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNpcTebaTrainingRoot.h" + +namespace uking::ai { + +NpcTebaTrainingRoot::NpcTebaTrainingRoot(const InitArg& arg) : NPCRoot(arg) {} + +NpcTebaTrainingRoot::~NpcTebaTrainingRoot() = default; + +bool NpcTebaTrainingRoot::init_(sead::Heap* heap) { + return NPCRoot::init_(heap); +} + +void NpcTebaTrainingRoot::enter_(ksys::act::ai::InlineParamPack* params) { + NPCRoot::enter_(params); +} + +void NpcTebaTrainingRoot::leave_() { + NPCRoot::leave_(); +} + +void NpcTebaTrainingRoot::loadParams_() { + NPCRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNpcTebaTrainingRoot.h b/src/Game/AI/AI/aiNpcTebaTrainingRoot.h new file mode 100644 index 00000000..fc941c4f --- /dev/null +++ b/src/Game/AI/AI/aiNpcTebaTrainingRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiNPCRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NpcTebaTrainingRoot : public NPCRoot { + SEAD_RTTI_OVERRIDE(NpcTebaTrainingRoot, NPCRoot) +public: + explicit NpcTebaTrainingRoot(const InitArg& arg); + ~NpcTebaTrainingRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNushiEscapeSelector.cpp b/src/Game/AI/AI/aiNushiEscapeSelector.cpp new file mode 100644 index 00000000..74e159fc --- /dev/null +++ b/src/Game/AI/AI/aiNushiEscapeSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiNushiEscapeSelector.h" + +namespace uking::ai { + +NushiEscapeSelector::NushiEscapeSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NushiEscapeSelector::~NushiEscapeSelector() = default; + +bool NushiEscapeSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NushiEscapeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NushiEscapeSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NushiEscapeSelector::loadParams_() { + getStaticParam(&mNumOfAllowedEscapes_s, "NumOfAllowedEscapes"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNushiEscapeSelector.h b/src/Game/AI/AI/aiNushiEscapeSelector.h new file mode 100644 index 00000000..8e8dc717 --- /dev/null +++ b/src/Game/AI/AI/aiNushiEscapeSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NushiEscapeSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NushiEscapeSelector, ksys::act::ai::Ai) +public: + explicit NushiEscapeSelector(const InitArg& arg); + ~NushiEscapeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNumOfAllowedEscapes_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNushiWarp.cpp b/src/Game/AI/AI/aiNushiWarp.cpp new file mode 100644 index 00000000..6af8c04a --- /dev/null +++ b/src/Game/AI/AI/aiNushiWarp.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiNushiWarp.h" + +namespace uking::ai { + +NushiWarp::NushiWarp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +NushiWarp::~NushiWarp() = default; + +bool NushiWarp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void NushiWarp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void NushiWarp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void NushiWarp::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiNushiWarp.h b/src/Game/AI/AI/aiNushiWarp.h new file mode 100644 index 00000000..51e36eb2 --- /dev/null +++ b/src/Game/AI/AI/aiNushiWarp.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class NushiWarp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(NushiWarp, ksys::act::ai::Ai) +public: + explicit NushiWarp(const InitArg& arg); + ~NushiWarp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockBattle.cpp b/src/Game/AI/AI/aiOctarockBattle.cpp new file mode 100644 index 00000000..1b17dff4 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockBattle.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiOctarockBattle.h" + +namespace uking::ai { + +OctarockBattle::OctarockBattle(const InitArg& arg) : ShootingEnemyBattle(arg) {} + +OctarockBattle::~OctarockBattle() = default; + +bool OctarockBattle::init_(sead::Heap* heap) { + return ShootingEnemyBattle::init_(heap); +} + +void OctarockBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ShootingEnemyBattle::enter_(params); +} + +void OctarockBattle::leave_() { + ShootingEnemyBattle::leave_(); +} + +void OctarockBattle::loadParams_() { + ShootingEnemyBattle::loadParams_(); + getStaticParam(&mActorDisplayRadius_s, "ActorDisplayRadius"); + getStaticParam(&mAttackDistMin_s, "AttackDistMin"); + getStaticParam(&mIsAttackOnlyOutScreen_s, "IsAttackOnlyOutScreen"); + getStaticParam(&mIsHideMode_s, "IsHideMode"); + getStaticParam(&mIsFirstAttackIntervalZero_s, "IsFirstAttackIntervalZero"); + getStaticParam(&mIsLostAttack_s, "IsLostAttack"); + getStaticParam(&mShootActorKey_s, "ShootActorKey"); + getStaticParam(&mVacuumPartsKey_s, "VacuumPartsKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockBattle.h b/src/Game/AI/AI/aiOctarockBattle.h new file mode 100644 index 00000000..f1880209 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockBattle.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiShootingEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockBattle : public ShootingEnemyBattle { + SEAD_RTTI_OVERRIDE(OctarockBattle, ShootingEnemyBattle) +public: + explicit OctarockBattle(const InitArg& arg); + ~OctarockBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const float* mActorDisplayRadius_s{}; + // static_param at offset 0xd0 + const float* mAttackDistMin_s{}; + // static_param at offset 0xd8 + const bool* mIsAttackOnlyOutScreen_s{}; + // static_param at offset 0xe0 + const bool* mIsHideMode_s{}; + // static_param at offset 0xe8 + const bool* mIsFirstAttackIntervalZero_s{}; + // static_param at offset 0xf0 + const bool* mIsLostAttack_s{}; + // static_param at offset 0xf8 + sead::SafeString mShootActorKey_s{}; + // static_param at offset 0x108 + sead::SafeString mVacuumPartsKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockEscape.cpp b/src/Game/AI/AI/aiOctarockEscape.cpp new file mode 100644 index 00000000..ce228f4b --- /dev/null +++ b/src/Game/AI/AI/aiOctarockEscape.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiOctarockEscape.h" + +namespace uking::ai { + +OctarockEscape::OctarockEscape(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OctarockEscape::~OctarockEscape() = default; + +bool OctarockEscape::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OctarockEscape::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OctarockEscape::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OctarockEscape::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockEscape.h b/src/Game/AI/AI/aiOctarockEscape.h new file mode 100644 index 00000000..97d076a7 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockEscape.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockEscape : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OctarockEscape, ksys::act::ai::Ai) +public: + explicit OctarockEscape(const InitArg& arg); + ~OctarockEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockHideEscape.cpp b/src/Game/AI/AI/aiOctarockHideEscape.cpp new file mode 100644 index 00000000..f58439de --- /dev/null +++ b/src/Game/AI/AI/aiOctarockHideEscape.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiOctarockHideEscape.h" + +namespace uking::ai { + +OctarockHideEscape::OctarockHideEscape(const InitArg& arg) : OctarockEscape(arg) {} + +OctarockHideEscape::~OctarockHideEscape() = default; + +bool OctarockHideEscape::init_(sead::Heap* heap) { + return OctarockEscape::init_(heap); +} + +void OctarockHideEscape::enter_(ksys::act::ai::InlineParamPack* params) { + OctarockEscape::enter_(params); +} + +void OctarockHideEscape::leave_() { + OctarockEscape::leave_(); +} + +void OctarockHideEscape::loadParams_() { + OctarockEscape::loadParams_(); + getStaticParam(&mEscapeDist_s, "EscapeDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockHideEscape.h b/src/Game/AI/AI/aiOctarockHideEscape.h new file mode 100644 index 00000000..82b2661d --- /dev/null +++ b/src/Game/AI/AI/aiOctarockHideEscape.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiOctarockEscape.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockHideEscape : public OctarockEscape { + SEAD_RTTI_OVERRIDE(OctarockHideEscape, OctarockEscape) +public: + explicit OctarockHideEscape(const InitArg& arg); + ~OctarockHideEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mEscapeDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockOptionRoot.cpp b/src/Game/AI/AI/aiOctarockOptionRoot.cpp new file mode 100644 index 00000000..e5244bf7 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockOptionRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiOctarockOptionRoot.h" + +namespace uking::ai { + +OctarockOptionRoot::OctarockOptionRoot(const InitArg& arg) : SimpleLiftable(arg) {} + +OctarockOptionRoot::~OctarockOptionRoot() = default; + +bool OctarockOptionRoot::init_(sead::Heap* heap) { + return SimpleLiftable::init_(heap); +} + +void OctarockOptionRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleLiftable::enter_(params); +} + +void OctarockOptionRoot::leave_() { + SimpleLiftable::leave_(); +} + +void OctarockOptionRoot::loadParams_() { + getStaticParam(&mIsBreakable_s, "IsBreakable"); + getStaticParam(&mIsMimicry_s, "IsMimicry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockOptionRoot.h b/src/Game/AI/AI/aiOctarockOptionRoot.h new file mode 100644 index 00000000..2e79f206 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockOptionRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockOptionRoot : public SimpleLiftable { + SEAD_RTTI_OVERRIDE(OctarockOptionRoot, SimpleLiftable) +public: + explicit OctarockOptionRoot(const InitArg& arg); + ~OctarockOptionRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const bool* mIsBreakable_s{}; + // static_param at offset 0xd0 + const bool* mIsMimicry_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockReaction.cpp b/src/Game/AI/AI/aiOctarockReaction.cpp new file mode 100644 index 00000000..0a286d77 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockReaction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiOctarockReaction.h" + +namespace uking::ai { + +OctarockReaction::OctarockReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +OctarockReaction::~OctarockReaction() = default; + +bool OctarockReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void OctarockReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void OctarockReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void OctarockReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getStaticParam(&mIsWigBreackByGust_s, "IsWigBreackByGust"); + getAITreeVariable(&mOctarockFormChangeUnit_a, "OctarockFormChangeUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockReaction.h b/src/Game/AI/AI/aiOctarockReaction.h new file mode 100644 index 00000000..c956c204 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockReaction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(OctarockReaction, EnemyDefaultReaction) +public: + explicit OctarockReaction(const InitArg& arg); + ~OctarockReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const bool* mIsWigBreackByGust_s{}; + // aitree_variable at offset 0x70 + void* mOctarockFormChangeUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockRoot.cpp b/src/Game/AI/AI/aiOctarockRoot.cpp new file mode 100644 index 00000000..9815adae --- /dev/null +++ b/src/Game/AI/AI/aiOctarockRoot.cpp @@ -0,0 +1,51 @@ +#include "Game/AI/AI/aiOctarockRoot.h" + +namespace uking::ai { + +OctarockRoot::OctarockRoot(const InitArg& arg) : OctarockRootBase(arg) {} + +OctarockRoot::~OctarockRoot() = default; + +bool OctarockRoot::init_(sead::Heap* heap) { + return OctarockRootBase::init_(heap); +} + +void OctarockRoot::enter_(ksys::act::ai::InlineParamPack* params) { + OctarockRootBase::enter_(params); +} + +void OctarockRoot::leave_() { + OctarockRootBase::leave_(); +} + +void OctarockRoot::loadParams_() { + OctarockRootBase::loadParams_(); + getStaticParam(&mIsWigBreakable_s, "IsWigBreakable"); + getStaticParam(&mItemName_s, "ItemName"); + getStaticParam(&mConnectRigidBodyName_s, "ConnectRigidBodyName"); + getStaticParam(&mConnectTgtBodyName_s, "ConnectTgtBodyName"); + getStaticParam(&mShootActorName_s, "ShootActorName"); + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE @ 0x7100b0c320 + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE @ 0x7100b0c320 + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZN4sead20StringPrintFormatterC2EPNS_22BufferedSafeStringBaseIcEE @ 0x7100b0c320 + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + getStaticParam(&mExtraShootActorName_s, "ExtraShootActorName"); + getStaticParam(&mExtraShootActorKey_s, "ExtraShootActorKey"); + getMapUnitParam(&mCarryActorName_m, "CarryActorName"); + getAITreeVariable(&mVacuumedExplodingBomb_a, "VacuumedExplodingBomb"); + getAITreeVariable(&mOctarockFormChangeUnit_a, "OctarockFormChangeUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockRoot.h b/src/Game/AI/AI/aiOctarockRoot.h new file mode 100644 index 00000000..4c541b51 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockRoot.h @@ -0,0 +1,42 @@ +#pragma once + +#include "Game/AI/AI/aiOctarockRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockRoot : public OctarockRootBase { + SEAD_RTTI_OVERRIDE(OctarockRoot, OctarockRootBase) +public: + explicit OctarockRoot(const InitArg& arg); + ~OctarockRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const bool* mIsWigBreakable_s{}; + // static_param at offset 0x1e0 + sead::SafeString mItemName_s{}; + // static_param at offset 0x1f0 + sead::SafeString mConnectRigidBodyName_s{}; + // static_param at offset 0x200 + sead::SafeString mConnectTgtBodyName_s{}; + // static_param at offset 0x210 + sead::SafeString mShootActorName_s{}; + // static_param at offset 0x250 + sead::SafeString mExtraShootActorName_s{}; + // static_param at offset 0x260 + sead::SafeString mExtraShootActorKey_s{}; + // map_unit_param at offset 0x270 + sead::SafeString mCarryActorName_m{}; + // aitree_variable at offset 0x280 + void* mVacuumedExplodingBomb_a{}; + // aitree_variable at offset 0x288 + void* mOctarockFormChangeUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockRootBase.cpp b/src/Game/AI/AI/aiOctarockRootBase.cpp new file mode 100644 index 00000000..e46a0b47 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockRootBase.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiOctarockRootBase.h" + +namespace uking::ai { + +OctarockRootBase::OctarockRootBase(const InitArg& arg) : EnemyRoot(arg) {} + +OctarockRootBase::~OctarockRootBase() = default; + +bool OctarockRootBase::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void OctarockRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void OctarockRootBase::leave_() { + EnemyRoot::leave_(); +} + +void OctarockRootBase::loadParams_() { + EnemyRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockRootBase.h b/src/Game/AI/AI/aiOctarockRootBase.h new file mode 100644 index 00000000..0586f1e2 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockRootBase.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockRootBase : public EnemyRoot { + SEAD_RTTI_OVERRIDE(OctarockRootBase, EnemyRoot) +public: + explicit OctarockRootBase(const InitArg& arg); + ~OctarockRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockServiceHideWait.cpp b/src/Game/AI/AI/aiOctarockServiceHideWait.cpp new file mode 100644 index 00000000..e270d0c5 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockServiceHideWait.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiOctarockServiceHideWait.h" + +namespace uking::ai { + +OctarockServiceHideWait::OctarockServiceHideWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OctarockServiceHideWait::~OctarockServiceHideWait() = default; + +bool OctarockServiceHideWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OctarockServiceHideWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OctarockServiceHideWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OctarockServiceHideWait::loadParams_() { + getStaticParam(&mSafeAreaDist_s, "SafeAreaDist"); + getStaticParam(&mSafeAreaDistRange_s, "SafeAreaDistRange"); + getStaticParam(&mMinWaitTime_s, "MinWaitTime"); + getStaticParam(&mMinWaitTimeRand_s, "MinWaitTimeRand"); + getStaticParam(&mNoticeTerrorLevel_s, "NoticeTerrorLevel"); + getStaticParam(&mNoticeWorryRange_s, "NoticeWorryRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockServiceHideWait.h b/src/Game/AI/AI/aiOctarockServiceHideWait.h new file mode 100644 index 00000000..15fcf516 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockServiceHideWait.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockServiceHideWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OctarockServiceHideWait, ksys::act::ai::Ai) +public: + explicit OctarockServiceHideWait(const InitArg& arg); + ~OctarockServiceHideWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSafeAreaDist_s{}; + // static_param at offset 0x40 + const float* mSafeAreaDistRange_s{}; + // static_param at offset 0x48 + const float* mMinWaitTime_s{}; + // static_param at offset 0x50 + const float* mMinWaitTimeRand_s{}; + // static_param at offset 0x58 + const float* mNoticeTerrorLevel_s{}; + // static_param at offset 0x60 + const float* mNoticeWorryRange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockWaterWait.cpp b/src/Game/AI/AI/aiOctarockWaterWait.cpp new file mode 100644 index 00000000..366f98ce --- /dev/null +++ b/src/Game/AI/AI/aiOctarockWaterWait.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiOctarockWaterWait.h" + +namespace uking::ai { + +OctarockWaterWait::OctarockWaterWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OctarockWaterWait::~OctarockWaterWait() = default; + +bool OctarockWaterWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OctarockWaterWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OctarockWaterWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OctarockWaterWait::loadParams_() { + getStaticParam(&mNoRiseTime_s, "NoRiseTime"); + getStaticParam(&mRiseDelayTimeMin_s, "RiseDelayTimeMin"); + getStaticParam(&mRiseDelayTimeMax_s, "RiseDelayTimeMax"); + getStaticParam(&mFinishFloatDelayTimeMin_s, "FinishFloatDelayTimeMin"); + getStaticParam(&mFinishFloatDelayTimeMax_s, "FinishFloatDelayTimeMax"); + getStaticParam(&mMinHeightFromWater_s, "MinHeightFromWater"); + getAITreeVariable(&mOctarockFormChangeUnit_a, "OctarockFormChangeUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOctarockWaterWait.h b/src/Game/AI/AI/aiOctarockWaterWait.h new file mode 100644 index 00000000..3ed1e116 --- /dev/null +++ b/src/Game/AI/AI/aiOctarockWaterWait.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OctarockWaterWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OctarockWaterWait, ksys::act::ai::Ai) +public: + explicit OctarockWaterWait(const InitArg& arg); + ~OctarockWaterWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNoRiseTime_s{}; + // static_param at offset 0x40 + const int* mRiseDelayTimeMin_s{}; + // static_param at offset 0x48 + const int* mRiseDelayTimeMax_s{}; + // static_param at offset 0x50 + const int* mFinishFloatDelayTimeMin_s{}; + // static_param at offset 0x58 + const int* mFinishFloatDelayTimeMax_s{}; + // static_param at offset 0x60 + const float* mMinHeightFromWater_s{}; + // aitree_variable at offset 0x68 + void* mOctarockFormChangeUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffEnemyBattle.cpp b/src/Game/AI/AI/aiOnCliffEnemyBattle.cpp new file mode 100644 index 00000000..9fa6ba4d --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffEnemyBattle.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiOnCliffEnemyBattle.h" + +namespace uking::ai { + +OnCliffEnemyBattle::OnCliffEnemyBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OnCliffEnemyBattle::~OnCliffEnemyBattle() = default; + +bool OnCliffEnemyBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OnCliffEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OnCliffEnemyBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OnCliffEnemyBattle::loadParams_() { + getStaticParam(&mLostCounter_s, "LostCounter"); + getStaticParam(&mAttackDist_s, "AttackDist"); + getStaticParam(&mAttackAngleH_s, "AttackAngleH"); + getStaticParam(&mAttackAngleVMax_s, "AttackAngleVMax"); + getStaticParam(&mAttackAngleVMin_s, "AttackAngleVMin"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffEnemyBattle.h b/src/Game/AI/AI/aiOnCliffEnemyBattle.h new file mode 100644 index 00000000..670de81d --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffEnemyBattle.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnCliffEnemyBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OnCliffEnemyBattle, ksys::act::ai::Ai) +public: + explicit OnCliffEnemyBattle(const InitArg& arg); + ~OnCliffEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostCounter_s{}; + // static_param at offset 0x40 + const float* mAttackDist_s{}; + // static_param at offset 0x48 + const float* mAttackAngleH_s{}; + // static_param at offset 0x50 + const float* mAttackAngleVMax_s{}; + // static_param at offset 0x58 + const float* mAttackAngleVMin_s{}; + // static_param at offset 0x60 + const float* mAttackIntervalIntensity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffSurfaceSelect.cpp b/src/Game/AI/AI/aiOnCliffSurfaceSelect.cpp new file mode 100644 index 00000000..594e7eef --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffSurfaceSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiOnCliffSurfaceSelect.h" + +namespace uking::ai { + +OnCliffSurfaceSelect::OnCliffSurfaceSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OnCliffSurfaceSelect::~OnCliffSurfaceSelect() = default; + +bool OnCliffSurfaceSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OnCliffSurfaceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OnCliffSurfaceSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OnCliffSurfaceSelect::loadParams_() { + getMapUnitParam(&mOnCliff_m, "OnCliff"); + getAITreeVariable(&mIsCliffFreeze_a, "IsCliffFreeze"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffSurfaceSelect.h b/src/Game/AI/AI/aiOnCliffSurfaceSelect.h new file mode 100644 index 00000000..015ece5c --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffSurfaceSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnCliffSurfaceSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OnCliffSurfaceSelect, ksys::act::ai::Ai) +public: + explicit OnCliffSurfaceSelect(const InitArg& arg); + ~OnCliffSurfaceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mOnCliff_m{}; + // aitree_variable at offset 0x40 + bool* mIsCliffFreeze_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffViewWait.cpp b/src/Game/AI/AI/aiOnCliffViewWait.cpp new file mode 100644 index 00000000..56adb719 --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffViewWait.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiOnCliffViewWait.h" + +namespace uking::ai { + +OnCliffViewWait::OnCliffViewWait(const InitArg& arg) : ViewWait(arg) {} + +OnCliffViewWait::~OnCliffViewWait() = default; + +bool OnCliffViewWait::init_(sead::Heap* heap) { + return ViewWait::init_(heap); +} + +void OnCliffViewWait::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void OnCliffViewWait::leave_() { + ViewWait::leave_(); +} + +void OnCliffViewWait::loadParams_() { + ViewWait::loadParams_(); + getMapUnitParam(&mOnCliffTurn_m, "OnCliffTurn"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnCliffViewWait.h b/src/Game/AI/AI/aiOnCliffViewWait.h new file mode 100644 index 00000000..9d833d6f --- /dev/null +++ b/src/Game/AI/AI/aiOnCliffViewWait.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnCliffViewWait : public ViewWait { + SEAD_RTTI_OVERRIDE(OnCliffViewWait, ViewWait) +public: + explicit OnCliffViewWait(const InitArg& arg); + ~OnCliffViewWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x60 + const bool* mOnCliffTurn_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnEnterEventModeSelect.cpp b/src/Game/AI/AI/aiOnEnterEventModeSelect.cpp new file mode 100644 index 00000000..96b26009 --- /dev/null +++ b/src/Game/AI/AI/aiOnEnterEventModeSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiOnEnterEventModeSelect.h" + +namespace uking::ai { + +OnEnterEventModeSelect::OnEnterEventModeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OnEnterEventModeSelect::~OnEnterEventModeSelect() = default; + +bool OnEnterEventModeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OnEnterEventModeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OnEnterEventModeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OnEnterEventModeSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnEnterEventModeSelect.h b/src/Game/AI/AI/aiOnEnterEventModeSelect.h new file mode 100644 index 00000000..bbbfef0a --- /dev/null +++ b/src/Game/AI/AI/aiOnEnterEventModeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnEnterEventModeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OnEnterEventModeSelect, ksys::act::ai::Ai) +public: + explicit OnEnterEventModeSelect(const InitArg& arg); + ~OnEnterEventModeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnNavFaceSelect.cpp b/src/Game/AI/AI/aiOnNavFaceSelect.cpp new file mode 100644 index 00000000..11e54ce6 --- /dev/null +++ b/src/Game/AI/AI/aiOnNavFaceSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiOnNavFaceSelect.h" + +namespace uking::ai { + +OnNavFaceSelect::OnNavFaceSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OnNavFaceSelect::~OnNavFaceSelect() = default; + +bool OnNavFaceSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OnNavFaceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OnNavFaceSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OnNavFaceSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnNavFaceSelect.h b/src/Game/AI/AI/aiOnNavFaceSelect.h new file mode 100644 index 00000000..b3da7438 --- /dev/null +++ b/src/Game/AI/AI/aiOnNavFaceSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnNavFaceSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OnNavFaceSelect, ksys::act::ai::Ai) +public: + explicit OnNavFaceSelect(const InitArg& arg); + ~OnNavFaceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnRagdollSelect.cpp b/src/Game/AI/AI/aiOnRagdollSelect.cpp new file mode 100644 index 00000000..6ad18172 --- /dev/null +++ b/src/Game/AI/AI/aiOnRagdollSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiOnRagdollSelect.h" + +namespace uking::ai { + +OnRagdollSelect::OnRagdollSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OnRagdollSelect::~OnRagdollSelect() = default; + +bool OnRagdollSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OnRagdollSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OnRagdollSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OnRagdollSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOnRagdollSelect.h b/src/Game/AI/AI/aiOnRagdollSelect.h new file mode 100644 index 00000000..082c146a --- /dev/null +++ b/src/Game/AI/AI/aiOnRagdollSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OnRagdollSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OnRagdollSelect, ksys::act::ai::Ai) +public: + explicit OnRagdollSelect(const InitArg& arg); + ~OnRagdollSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOneMemoryMagicBattle.cpp b/src/Game/AI/AI/aiOneMemoryMagicBattle.cpp new file mode 100644 index 00000000..3d4debe8 --- /dev/null +++ b/src/Game/AI/AI/aiOneMemoryMagicBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiOneMemoryMagicBattle.h" + +namespace uking::ai { + +OneMemoryMagicBattle::OneMemoryMagicBattle(const InitArg& arg) : OneMemoryMagicBattleBase(arg) {} + +OneMemoryMagicBattle::~OneMemoryMagicBattle() = default; + +bool OneMemoryMagicBattle::init_(sead::Heap* heap) { + return OneMemoryMagicBattleBase::init_(heap); +} + +void OneMemoryMagicBattle::enter_(ksys::act::ai::InlineParamPack* params) { + OneMemoryMagicBattleBase::enter_(params); +} + +void OneMemoryMagicBattle::leave_() { + OneMemoryMagicBattleBase::leave_(); +} + +void OneMemoryMagicBattle::loadParams_() { + OneMemoryMagicBattleBase::loadParams_(); + getStaticParam(&mMemoryPartsName_s, "MemoryPartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOneMemoryMagicBattle.h b/src/Game/AI/AI/aiOneMemoryMagicBattle.h new file mode 100644 index 00000000..2a7deed6 --- /dev/null +++ b/src/Game/AI/AI/aiOneMemoryMagicBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiOneMemoryMagicBattleBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OneMemoryMagicBattle : public OneMemoryMagicBattleBase { + SEAD_RTTI_OVERRIDE(OneMemoryMagicBattle, OneMemoryMagicBattleBase) +public: + explicit OneMemoryMagicBattle(const InitArg& arg); + ~OneMemoryMagicBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + sead::SafeString mMemoryPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOneMemoryMagicBattleBase.cpp b/src/Game/AI/AI/aiOneMemoryMagicBattleBase.cpp new file mode 100644 index 00000000..986e6f50 --- /dev/null +++ b/src/Game/AI/AI/aiOneMemoryMagicBattleBase.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiOneMemoryMagicBattleBase.h" + +namespace uking::ai { + +OneMemoryMagicBattleBase::OneMemoryMagicBattleBase(const InitArg& arg) : EnemyBattle(arg) {} + +OneMemoryMagicBattleBase::~OneMemoryMagicBattleBase() = default; + +bool OneMemoryMagicBattleBase::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void OneMemoryMagicBattleBase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void OneMemoryMagicBattleBase::leave_() { + EnemyBattle::leave_(); +} + +void OneMemoryMagicBattleBase::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mEnlargeTime_s, "EnlargeTime"); + getStaticParam(&mAttackRatio_s, "AttackRatio"); + getStaticParam(&mBreathSize_s, "BreathSize"); + getStaticParam(&mMagicName_s, "MagicName"); + getStaticParam(&mMagicPer_s, "MagicPer"); + getStaticParam(&mAttackPowDirect_s, "AttackPowDirect"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOneMemoryMagicBattleBase.h b/src/Game/AI/AI/aiOneMemoryMagicBattleBase.h new file mode 100644 index 00000000..4ab7e11a --- /dev/null +++ b/src/Game/AI/AI/aiOneMemoryMagicBattleBase.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OneMemoryMagicBattleBase : public EnemyBattle { + SEAD_RTTI_OVERRIDE(OneMemoryMagicBattleBase, EnemyBattle) +public: + explicit OneMemoryMagicBattleBase(const InitArg& arg); + ~OneMemoryMagicBattleBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mEnlargeTime_s{}; + // static_param at offset 0x98 + const int* mMagicPer_s{}; + // static_param at offset 0xa0 + const int* mAttackPowDirect_s{}; + // static_param at offset 0xa8 + const float* mAttackRatio_s{}; + // static_param at offset 0xb0 + const float* mBreathSize_s{}; + // static_param at offset 0xb8 + sead::SafeString mMagicName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOptionalWeaponAI.cpp b/src/Game/AI/AI/aiOptionalWeaponAI.cpp new file mode 100644 index 00000000..b3694c3f --- /dev/null +++ b/src/Game/AI/AI/aiOptionalWeaponAI.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiOptionalWeaponAI.h" + +namespace uking::ai { + +OptionalWeaponAI::OptionalWeaponAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void OptionalWeaponAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OptionalWeaponAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOptionalWeaponAI.h b/src/Game/AI/AI/aiOptionalWeaponAI.h new file mode 100644 index 00000000..1387f12b --- /dev/null +++ b/src/Game/AI/AI/aiOptionalWeaponAI.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OptionalWeaponAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OptionalWeaponAI, ksys::act::ai::Ai) +public: + explicit OptionalWeaponAI(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOutOfScreen.cpp b/src/Game/AI/AI/aiOutOfScreen.cpp new file mode 100644 index 00000000..f6faf516 --- /dev/null +++ b/src/Game/AI/AI/aiOutOfScreen.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiOutOfScreen.h" + +namespace uking::ai { + +OutOfScreen::OutOfScreen(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +OutOfScreen::~OutOfScreen() = default; + +bool OutOfScreen::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void OutOfScreen::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void OutOfScreen::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void OutOfScreen::loadParams_() { + getStaticParam(&mUpdateInterval_s, "UpdateInterval"); + getStaticParam(&mTagetDistance_s, "TagetDistance"); + getStaticParam(&mDeleteDistance_s, "DeleteDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiOutOfScreen.h b/src/Game/AI/AI/aiOutOfScreen.h new file mode 100644 index 00000000..362431c2 --- /dev/null +++ b/src/Game/AI/AI/aiOutOfScreen.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class OutOfScreen : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(OutOfScreen, ksys::act::ai::Ai) +public: + explicit OutOfScreen(const InitArg& arg); + ~OutOfScreen() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpdateInterval_s{}; + // static_param at offset 0x40 + const float* mTagetDistance_s{}; + // static_param at offset 0x48 + const float* mDeleteDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartHaveSelect.cpp b/src/Game/AI/AI/aiPartHaveSelect.cpp new file mode 100644 index 00000000..62514196 --- /dev/null +++ b/src/Game/AI/AI/aiPartHaveSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPartHaveSelect.h" + +namespace uking::ai { + +PartHaveSelect::PartHaveSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PartHaveSelect::~PartHaveSelect() = default; + +bool PartHaveSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PartHaveSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PartHaveSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PartHaveSelect::loadParams_() { + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); + getStaticParam(&mPartsKey_s, "PartsKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartHaveSelect.h b/src/Game/AI/AI/aiPartHaveSelect.h new file mode 100644 index 00000000..8218c7b2 --- /dev/null +++ b/src/Game/AI/AI/aiPartHaveSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PartHaveSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PartHaveSelect, ksys::act::ai::Ai) +public: + explicit PartHaveSelect(const InitArg& arg); + ~PartHaveSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckEveryFrame_s{}; + // static_param at offset 0x40 + sead::SafeString mPartsKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartsNoticeSelect.cpp b/src/Game/AI/AI/aiPartsNoticeSelect.cpp new file mode 100644 index 00000000..906f31ba --- /dev/null +++ b/src/Game/AI/AI/aiPartsNoticeSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPartsNoticeSelect.h" + +namespace uking::ai { + +PartsNoticeSelect::PartsNoticeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PartsNoticeSelect::~PartsNoticeSelect() = default; + +bool PartsNoticeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PartsNoticeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PartsNoticeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PartsNoticeSelect::loadParams_() { + getStaticParam(&mPartsName_s, "PartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartsNoticeSelect.h b/src/Game/AI/AI/aiPartsNoticeSelect.h new file mode 100644 index 00000000..35a3b4fd --- /dev/null +++ b/src/Game/AI/AI/aiPartsNoticeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PartsNoticeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PartsNoticeSelect, ksys::act::ai::Ai) +public: + explicit PartsNoticeSelect(const InitArg& arg); + ~PartsNoticeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartsSleepSelect.cpp b/src/Game/AI/AI/aiPartsSleepSelect.cpp new file mode 100644 index 00000000..42a10ee7 --- /dev/null +++ b/src/Game/AI/AI/aiPartsSleepSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPartsSleepSelect.h" + +namespace uking::ai { + +PartsSleepSelect::PartsSleepSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PartsSleepSelect::~PartsSleepSelect() = default; + +bool PartsSleepSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PartsSleepSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PartsSleepSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PartsSleepSelect::loadParams_() { + getStaticParam(&mPartsName_s, "PartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPartsSleepSelect.h b/src/Game/AI/AI/aiPartsSleepSelect.h new file mode 100644 index 00000000..639a885d --- /dev/null +++ b/src/Game/AI/AI/aiPartsSleepSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PartsSleepSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PartsSleepSelect, ksys::act::ai::Ai) +public: + explicit PartsSleepSelect(const InitArg& arg); + ~PartsSleepSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPauseMenuPlayerRoot.cpp b/src/Game/AI/AI/aiPauseMenuPlayerRoot.cpp new file mode 100644 index 00000000..6bb7a7b8 --- /dev/null +++ b/src/Game/AI/AI/aiPauseMenuPlayerRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPauseMenuPlayerRoot.h" + +namespace uking::ai { + +PauseMenuPlayerRoot::PauseMenuPlayerRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PauseMenuPlayerRoot::~PauseMenuPlayerRoot() = default; + +bool PauseMenuPlayerRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PauseMenuPlayerRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PauseMenuPlayerRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PauseMenuPlayerRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPauseMenuPlayerRoot.h b/src/Game/AI/AI/aiPauseMenuPlayerRoot.h new file mode 100644 index 00000000..8959e3d5 --- /dev/null +++ b/src/Game/AI/AI/aiPauseMenuPlayerRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PauseMenuPlayerRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PauseMenuPlayerRoot, ksys::act::ai::Ai) +public: + explicit PauseMenuPlayerRoot(const InitArg& arg); + ~PauseMenuPlayerRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPickShootItemRoot.cpp b/src/Game/AI/AI/aiPickShootItemRoot.cpp new file mode 100644 index 00000000..820639f4 --- /dev/null +++ b/src/Game/AI/AI/aiPickShootItemRoot.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiPickShootItemRoot.h" + +namespace uking::ai { + +PickShootItemRoot::PickShootItemRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PickShootItemRoot::~PickShootItemRoot() = default; + +void PickShootItemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PickShootItemRoot::loadParams_() { + getStaticParam(&mRemainTime_s, "RemainTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPickShootItemRoot.h b/src/Game/AI/AI/aiPickShootItemRoot.h new file mode 100644 index 00000000..e3bc809a --- /dev/null +++ b/src/Game/AI/AI/aiPickShootItemRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PickShootItemRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PickShootItemRoot, ksys::act::ai::Ai) +public: + explicit PickShootItemRoot(const InitArg& arg); + ~PickShootItemRoot() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRemainTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPillarCrack.cpp b/src/Game/AI/AI/aiPillarCrack.cpp new file mode 100644 index 00000000..68eb7105 --- /dev/null +++ b/src/Game/AI/AI/aiPillarCrack.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPillarCrack.h" + +namespace uking::ai { + +PillarCrack::PillarCrack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PillarCrack::~PillarCrack() = default; + +bool PillarCrack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PillarCrack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PillarCrack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PillarCrack::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPillarCrack.h b/src/Game/AI/AI/aiPillarCrack.h new file mode 100644 index 00000000..69d572a9 --- /dev/null +++ b/src/Game/AI/AI/aiPillarCrack.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PillarCrack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PillarCrack, ksys::act::ai::Ai) +public: + explicit PillarCrack(const InitArg& arg); + ~PillarCrack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPipeDrawing.cpp b/src/Game/AI/AI/aiPipeDrawing.cpp new file mode 100644 index 00000000..8fc6684a --- /dev/null +++ b/src/Game/AI/AI/aiPipeDrawing.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPipeDrawing.h" + +namespace uking::ai { + +PipeDrawing::PipeDrawing(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PipeDrawing::~PipeDrawing() = default; + +bool PipeDrawing::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PipeDrawing::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PipeDrawing::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PipeDrawing::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPipeDrawing.h b/src/Game/AI/AI/aiPipeDrawing.h new file mode 100644 index 00000000..27842178 --- /dev/null +++ b/src/Game/AI/AI/aiPipeDrawing.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PipeDrawing : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PipeDrawing, ksys::act::ai::Ai) +public: + explicit PipeDrawing(const InitArg& arg); + ~PipeDrawing() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerAttack.cpp b/src/Game/AI/AI/aiPlayerAttack.cpp new file mode 100644 index 00000000..f690c0da --- /dev/null +++ b/src/Game/AI/AI/aiPlayerAttack.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiPlayerAttack.h" + +namespace uking::ai { + +PlayerAttack::PlayerAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerAttack::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerAttack.h b/src/Game/AI/AI/aiPlayerAttack.h new file mode 100644 index 00000000..5103a4d8 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerAttack.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerAttack, ksys::act::ai::Ai) +public: + explicit PlayerAttack(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerBarrierBlow.cpp b/src/Game/AI/AI/aiPlayerBarrierBlow.cpp new file mode 100644 index 00000000..af59eb10 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerBarrierBlow.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPlayerBarrierBlow.h" + +namespace uking::ai { + +PlayerBarrierBlow::PlayerBarrierBlow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerBarrierBlow::~PlayerBarrierBlow() = default; + +bool PlayerBarrierBlow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerBarrierBlow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerBarrierBlow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerBarrierBlow::loadParams_() { + getStaticParam(&mBlowRagdollTime_s, "BlowRagdollTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerBarrierBlow.h b/src/Game/AI/AI/aiPlayerBarrierBlow.h new file mode 100644 index 00000000..873c467a --- /dev/null +++ b/src/Game/AI/AI/aiPlayerBarrierBlow.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerBarrierBlow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerBarrierBlow, ksys::act::ai::Ai) +public: + explicit PlayerBarrierBlow(const InitArg& arg); + ~PlayerBarrierBlow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBlowRagdollTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerBeetle.cpp b/src/Game/AI/AI/aiPlayerBeetle.cpp new file mode 100644 index 00000000..479825f1 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerBeetle.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiPlayerBeetle.h" + +namespace uking::ai { + +PlayerBeetle::PlayerBeetle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerBeetle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerBeetle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerBeetle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerBeetle.h b/src/Game/AI/AI/aiPlayerBeetle.h new file mode 100644 index 00000000..639ce3cd --- /dev/null +++ b/src/Game/AI/AI/aiPlayerBeetle.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerBeetle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerBeetle, ksys::act::ai::Ai) +public: + explicit PlayerBeetle(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCamera.cpp b/src/Game/AI/AI/aiPlayerCamera.cpp new file mode 100644 index 00000000..1df0d495 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCamera.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiPlayerCamera.h" + +namespace uking::ai { + +PlayerCamera::PlayerCamera(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerCamera::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerCamera::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerCamera::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCamera.h b/src/Game/AI/AI/aiPlayerCamera.h new file mode 100644 index 00000000..08348d1b --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCamera.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerCamera : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerCamera, ksys::act::ai::Ai) +public: + explicit PlayerCamera(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCaught.cpp b/src/Game/AI/AI/aiPlayerCaught.cpp new file mode 100644 index 00000000..2ac19280 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCaught.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiPlayerCaught.h" + +namespace uking::ai { + +PlayerCaught::PlayerCaught(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerCaught::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerCaught::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerCaught::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCaught.h b/src/Game/AI/AI/aiPlayerCaught.h new file mode 100644 index 00000000..9b353e7b --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCaught.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerCaught : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerCaught, ksys::act::ai::Ai) +public: + explicit PlayerCaught(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerClimb.cpp b/src/Game/AI/AI/aiPlayerClimb.cpp new file mode 100644 index 00000000..6848efb0 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerClimb.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPlayerClimb.h" + +namespace uking::ai { + +PlayerClimb::PlayerClimb(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerClimb::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerClimb::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerClimb::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerClimb::loadParams_() { + getStaticParam(&mNoClimbTime_s, "NoClimbTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerClimb.h b/src/Game/AI/AI/aiPlayerClimb.h new file mode 100644 index 00000000..a0122de7 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerClimb.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerClimb : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerClimb, ksys::act::ai::Ai) +public: + explicit PlayerClimb(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNoClimbTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCutJump.cpp b/src/Game/AI/AI/aiPlayerCutJump.cpp new file mode 100644 index 00000000..00271e0d --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCutJump.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiPlayerCutJump.h" + +namespace uking::ai { + +PlayerCutJump::PlayerCutJump(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerCutJump::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerCutJump::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerCutJump::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerCutJump.h b/src/Game/AI/AI/aiPlayerCutJump.h new file mode 100644 index 00000000..6cf703ed --- /dev/null +++ b/src/Game/AI/AI/aiPlayerCutJump.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerCutJump : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerCutJump, ksys::act::ai::Ai) +public: + explicit PlayerCutJump(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerDead.cpp b/src/Game/AI/AI/aiPlayerDead.cpp new file mode 100644 index 00000000..f49d35d9 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerDead.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiPlayerDead.h" + +namespace uking::ai { + +PlayerDead::PlayerDead(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerDead::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerDead::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerDead::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerDead::loadParams_() { + getStaticParam(&mRumbleType_s, "RumbleType"); + getStaticParam(&mRumblePower_s, "RumblePower"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerDead.h b/src/Game/AI/AI/aiPlayerDead.h new file mode 100644 index 00000000..db6aff48 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerDead.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerDead : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerDead, ksys::act::ai::Ai) +public: + explicit PlayerDead(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRumbleType_s{}; + // static_param at offset 0x40 + const float* mRumblePower_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerDemoRoot.cpp b/src/Game/AI/AI/aiPlayerDemoRoot.cpp new file mode 100644 index 00000000..b18f633c --- /dev/null +++ b/src/Game/AI/AI/aiPlayerDemoRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPlayerDemoRoot.h" + +namespace uking::ai { + +PlayerDemoRoot::PlayerDemoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerDemoRoot::~PlayerDemoRoot() = default; + +bool PlayerDemoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerDemoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerDemoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerDemoRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerDemoRoot.h b/src/Game/AI/AI/aiPlayerDemoRoot.h new file mode 100644 index 00000000..ad45bda0 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerDemoRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerDemoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerDemoRoot, ksys::act::ai::Ai) +public: + explicit PlayerDemoRoot(const InitArg& arg); + ~PlayerDemoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerGrab.cpp b/src/Game/AI/AI/aiPlayerGrab.cpp new file mode 100644 index 00000000..28fec86a --- /dev/null +++ b/src/Game/AI/AI/aiPlayerGrab.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiPlayerGrab.h" + +namespace uking::ai { + +PlayerGrab::PlayerGrab(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerGrab::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerGrab::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerGrab::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerGrab::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerGrab.h b/src/Game/AI/AI/aiPlayerGrab.h new file mode 100644 index 00000000..8bed373d --- /dev/null +++ b/src/Game/AI/AI/aiPlayerGrab.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerGrab : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerGrab, ksys::act::ai::Ai) +public: + explicit PlayerGrab(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerItem.cpp b/src/Game/AI/AI/aiPlayerItem.cpp new file mode 100644 index 00000000..33bdb9a3 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerItem.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiPlayerItem.h" + +namespace uking::ai { + +PlayerItem::PlayerItem(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerItem::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerItem::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerItem::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerItem.h b/src/Game/AI/AI/aiPlayerItem.h new file mode 100644 index 00000000..c4d3e752 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerItem.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerItem : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerItem, ksys::act::ai::Ai) +public: + explicit PlayerItem(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerLadder.cpp b/src/Game/AI/AI/aiPlayerLadder.cpp new file mode 100644 index 00000000..76325a78 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerLadder.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPlayerLadder.h" + +namespace uking::ai { + +PlayerLadder::PlayerLadder(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerLadder::~PlayerLadder() = default; + +bool PlayerLadder::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerLadder::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerLadder::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerLadder::loadParams_() { + getStaticParam(&mLadderToClimbTime_s, "LadderToClimbTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerLadder.h b/src/Game/AI/AI/aiPlayerLadder.h new file mode 100644 index 00000000..df9fdddf --- /dev/null +++ b/src/Game/AI/AI/aiPlayerLadder.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerLadder : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerLadder, ksys::act::ai::Ai) +public: + explicit PlayerLadder(const InitArg& arg); + ~PlayerLadder() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x18]; + // static_param at offset 0x50 + const float* mLadderToClimbTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerNavDestinationMove.cpp b/src/Game/AI/AI/aiPlayerNavDestinationMove.cpp new file mode 100644 index 00000000..f391fd78 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerNavDestinationMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPlayerNavDestinationMove.h" + +namespace uking::ai { + +PlayerNavDestinationMove::PlayerNavDestinationMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerNavDestinationMove::~PlayerNavDestinationMove() = default; + +bool PlayerNavDestinationMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerNavDestinationMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerNavDestinationMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerNavDestinationMove::loadParams_() { + getDynamicParam(&mDestPosX_d, "DestPosX"); + getDynamicParam(&mDestPosY_d, "DestPosY"); + getDynamicParam(&mDestPosZ_d, "DestPosZ"); + getDynamicParam(&mStickValue_d, "StickValue"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerNavDestinationMove.h b/src/Game/AI/AI/aiPlayerNavDestinationMove.h new file mode 100644 index 00000000..da4749e8 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerNavDestinationMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerNavDestinationMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerNavDestinationMove, ksys::act::ai::Ai) +public: + explicit PlayerNavDestinationMove(const InitArg& arg); + ~PlayerNavDestinationMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + float* mDestPosX_d{}; + // dynamic_param at offset 0x40 + float* mDestPosY_d{}; + // dynamic_param at offset 0x48 + float* mDestPosZ_d{}; + // dynamic_param at offset 0x50 + float* mStickValue_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerNormal.cpp b/src/Game/AI/AI/aiPlayerNormal.cpp new file mode 100644 index 00000000..2508dc08 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerNormal.cpp @@ -0,0 +1,45 @@ +#include "Game/AI/AI/aiPlayerNormal.h" + +namespace uking::ai { + +PlayerNormal::PlayerNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerNormal::~PlayerNormal() = default; + +bool PlayerNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerNormal::loadParams_() { + getStaticParam(&mEquipNoiseValue_s, "EquipNoiseValue"); + getStaticParam(&mAttackNoiseValue_s, "AttackNoiseValue"); + getStaticParam(&mArrowReadyNoiseValue_s, "ArrowReadyNoiseValue"); + getStaticParam(&mParashawlInvalidHeight_s, "ParashawlInvalidHeight"); + getStaticParam(&mParashawlInvalidHeightSurfing_s, "ParashawlInvalidHeightSurfing"); + getStaticParam(&mForceSlipSpeed_s, "ForceSlipSpeed"); + getStaticParam(&mDoForbidTime_s, "DoForbidTime"); + getStaticParam(&mNoRideJumpDiffY_s, "NoRideJumpDiffY"); + getStaticParam(&mDashUpEnableSpeed_s, "DashUpEnableSpeed"); + getStaticParam(&mEnergyPerChargeLv_s, "EnergyPerChargeLv"); + getStaticParam(&mEnergyChargeStart_s, "EnergyChargeStart"); + getStaticParam(&mWallSlipEnableSpeed_s, "WallSlipEnableSpeed"); + getStaticParam(&mCutAddSpeedRate_s, "CutAddSpeedRate"); + getStaticParam(&mCutAddSpeedMax_s, "CutAddSpeedMax"); + getStaticParam(&mCutAddSpeedDec_s, "CutAddSpeedDec"); + getStaticParam(&mHorseCallTime_s, "HorseCallTime"); + getStaticParam(&mSwordSearchAngle_s, "SwordSearchAngle"); + getStaticParam(&mDoClimbForbidTime_s, "DoClimbForbidTime"); + getStaticParam(&mDoClimbForbidAngVel_s, "DoClimbForbidAngVel"); + getStaticParam(&mInWaterTimeForRagdoll_s, "InWaterTimeForRagdoll"); + getStaticParam(&mToFallHeightForJustRush_s, "ToFallHeightForJustRush"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerNormal.h b/src/Game/AI/AI/aiPlayerNormal.h new file mode 100644 index 00000000..707d94cb --- /dev/null +++ b/src/Game/AI/AI/aiPlayerNormal.h @@ -0,0 +1,65 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerNormal, ksys::act::ai::Ai) +public: + explicit PlayerNormal(const InitArg& arg); + ~PlayerNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x30]; + // static_param at offset 0x68 + const float* mEquipNoiseValue_s{}; + // static_param at offset 0x70 + const float* mAttackNoiseValue_s{}; + // static_param at offset 0x78 + const float* mArrowReadyNoiseValue_s{}; + // static_param at offset 0x80 + const float* mParashawlInvalidHeight_s{}; + // static_param at offset 0x88 + const float* mParashawlInvalidHeightSurfing_s{}; + // static_param at offset 0x90 + const float* mForceSlipSpeed_s{}; + // static_param at offset 0x98 + const float* mDoForbidTime_s{}; + // static_param at offset 0xa0 + const float* mNoRideJumpDiffY_s{}; + // static_param at offset 0xa8 + const float* mDashUpEnableSpeed_s{}; + // static_param at offset 0xb0 + const float* mEnergyPerChargeLv_s{}; + // static_param at offset 0xb8 + const float* mEnergyChargeStart_s{}; + // static_param at offset 0xc0 + const float* mWallSlipEnableSpeed_s{}; + // static_param at offset 0xc8 + const float* mCutAddSpeedRate_s{}; + // static_param at offset 0xd0 + const float* mCutAddSpeedMax_s{}; + // static_param at offset 0xd8 + const float* mCutAddSpeedDec_s{}; + // static_param at offset 0xe0 + const float* mHorseCallTime_s{}; + // static_param at offset 0xe8 + const float* mSwordSearchAngle_s{}; + // static_param at offset 0xf0 + const float* mDoClimbForbidTime_s{}; + // static_param at offset 0xf8 + const float* mDoClimbForbidAngVel_s{}; + // static_param at offset 0x100 + const float* mInWaterTimeForRagdoll_s{}; + // static_param at offset 0x108 + const float* mToFallHeightForJustRush_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerRideHorse.cpp b/src/Game/AI/AI/aiPlayerRideHorse.cpp new file mode 100644 index 00000000..659cad42 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerRideHorse.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiPlayerRideHorse.h" + +namespace uking::ai { + +PlayerRideHorse::PlayerRideHorse(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerRideHorse::~PlayerRideHorse() = default; + +bool PlayerRideHorse::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerRideHorse::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerRideHorse::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerRideHorse::loadParams_() { + getStaticParam(&mDoForbidTime_s, "DoForbidTime"); + getStaticParam(&mThrowPowerY_s, "ThrowPowerY"); + getStaticParam(&mThrowPowerF_s, "ThrowPowerF"); + getStaticParam(&mBackDismountSpeed_s, "BackDismountSpeed"); + getStaticParam(&mWaistAngleApplyRateFoward_s, "WaistAngleApplyRateFoward"); + getStaticParam(&mWaistAngleApplyRateBack_s, "WaistAngleApplyRateBack"); + getStaticParam(&mMoveNoise_s, "MoveNoise"); + getStaticParam(&mSwordAttackNoise_s, "SwordAttackNoise"); + getStaticParam(&mAimAngleAddApplyAngle_s, "AimAngleAddApplyAngle"); + getStaticParam(&mAimAngleAdd_s, "AimAngleAdd"); + getStaticParam(&mAimAngleAddApplySpeed_s, "AimAngleAddApplySpeed"); + getStaticParam(&mLowerAngleWaitTime_s, "LowerAngleWaitTime"); + getDynamicParam(&mHasToPlayRidingOnAS_d, "HasToPlayRidingOnAS"); + getStaticParam(&mLynelRodeoCutNum_s, "LynelRodeoCutNum"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerRideHorse.h b/src/Game/AI/AI/aiPlayerRideHorse.h new file mode 100644 index 00000000..60440944 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerRideHorse.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerRideHorse : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerRideHorse, ksys::act::ai::Ai) +public: + explicit PlayerRideHorse(const InitArg& arg); + ~PlayerRideHorse() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLynelRodeoCutNum_s{}; + // static_param at offset 0x40 + const float* mDoForbidTime_s{}; + // static_param at offset 0x48 + const float* mThrowPowerY_s{}; + // static_param at offset 0x50 + const float* mThrowPowerF_s{}; + // static_param at offset 0x58 + const float* mBackDismountSpeed_s{}; + // static_param at offset 0x60 + const float* mWaistAngleApplyRateFoward_s{}; + // static_param at offset 0x68 + const float* mWaistAngleApplyRateBack_s{}; + // static_param at offset 0x70 + const float* mMoveNoise_s{}; + // static_param at offset 0x78 + const float* mSwordAttackNoise_s{}; + // static_param at offset 0x80 + const float* mAimAngleAddApplyAngle_s{}; + // static_param at offset 0x88 + const float* mAimAngleAdd_s{}; + // static_param at offset 0x90 + const float* mAimAngleAddApplySpeed_s{}; + // static_param at offset 0x98 + const float* mLowerAngleWaitTime_s{}; + // dynamic_param at offset 0xa0 + bool* mHasToPlayRidingOnAS_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerRoot.cpp b/src/Game/AI/AI/aiPlayerRoot.cpp new file mode 100644 index 00000000..b32955ee --- /dev/null +++ b/src/Game/AI/AI/aiPlayerRoot.cpp @@ -0,0 +1,11 @@ +#include "Game/AI/AI/aiPlayerRoot.h" + +namespace uking::ai { + +PlayerRoot::PlayerRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void PlayerRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerRoot.h b/src/Game/AI/AI/aiPlayerRoot.h new file mode 100644 index 00000000..c2343061 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerRoot.h @@ -0,0 +1,17 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerRoot, ksys::act::ai::Ai) +public: + explicit PlayerRoot(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSetTarget.cpp b/src/Game/AI/AI/aiPlayerSetTarget.cpp new file mode 100644 index 00000000..164d69c0 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSetTarget.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPlayerSetTarget.h" + +namespace uking::ai { + +PlayerSetTarget::PlayerSetTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerSetTarget::~PlayerSetTarget() = default; + +bool PlayerSetTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerSetTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerSetTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerSetTarget::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSetTarget.h b/src/Game/AI/AI/aiPlayerSetTarget.h new file mode 100644 index 00000000..49f769d3 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSetTarget.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerSetTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerSetTarget, ksys::act::ai::Ai) +public: + explicit PlayerSetTarget(const InitArg& arg); + ~PlayerSetTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSit.cpp b/src/Game/AI/AI/aiPlayerSit.cpp new file mode 100644 index 00000000..39869176 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSit.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiPlayerSit.h" + +namespace uking::ai { + +PlayerSit::PlayerSit(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerSit::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerSit::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerSit::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSit.h b/src/Game/AI/AI/aiPlayerSit.h new file mode 100644 index 00000000..94fe9e0e --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSit.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerSit : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerSit, ksys::act::ai::Ai) +public: + explicit PlayerSit(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSwim.cpp b/src/Game/AI/AI/aiPlayerSwim.cpp new file mode 100644 index 00000000..c18c8dce --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSwim.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPlayerSwim.h" + +namespace uking::ai { + +PlayerSwim::PlayerSwim(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool PlayerSwim::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerSwim::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerSwim::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerSwim::loadParams_() { + getStaticParam(&mCatchHeightL_s, "CatchHeightL"); + getStaticParam(&mCatchHeightH_s, "CatchHeightH"); + getStaticParam(&mEnableHeight_s, "EnableHeight"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerSwim.h b/src/Game/AI/AI/aiPlayerSwim.h new file mode 100644 index 00000000..85c72608 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerSwim.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerSwim : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerSwim, ksys::act::ai::Ai) +public: + explicit PlayerSwim(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCatchHeightL_s{}; + // static_param at offset 0x40 + const float* mCatchHeightH_s{}; + // static_param at offset 0x48 + const float* mEnableHeight_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerWaterFall.cpp b/src/Game/AI/AI/aiPlayerWaterFall.cpp new file mode 100644 index 00000000..af8d4c41 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerWaterFall.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPlayerWaterFall.h" + +namespace uking::ai { + +PlayerWaterFall::PlayerWaterFall(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerWaterFall::~PlayerWaterFall() = default; + +bool PlayerWaterFall::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerWaterFall::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerWaterFall::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerWaterFall::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerWaterFall.h b/src/Game/AI/AI/aiPlayerWaterFall.h new file mode 100644 index 00000000..6eb07636 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerWaterFall.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerWaterFall : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerWaterFall, ksys::act::ai::Ai) +public: + explicit PlayerWaterFall(const InitArg& arg); + ~PlayerWaterFall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerZoraRide.cpp b/src/Game/AI/AI/aiPlayerZoraRide.cpp new file mode 100644 index 00000000..6efb5650 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerZoraRide.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPlayerZoraRide.h" + +namespace uking::ai { + +PlayerZoraRide::PlayerZoraRide(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PlayerZoraRide::~PlayerZoraRide() = default; + +bool PlayerZoraRide::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PlayerZoraRide::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PlayerZoraRide::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PlayerZoraRide::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPlayerZoraRide.h b/src/Game/AI/AI/aiPlayerZoraRide.h new file mode 100644 index 00000000..b2269e05 --- /dev/null +++ b/src/Game/AI/AI/aiPlayerZoraRide.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PlayerZoraRide : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PlayerZoraRide, ksys::act::ai::Ai) +public: + explicit PlayerZoraRide(const InitArg& arg); + ~PlayerZoraRide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPointWindTagRoot.cpp b/src/Game/AI/AI/aiPointWindTagRoot.cpp new file mode 100644 index 00000000..3e244e9f --- /dev/null +++ b/src/Game/AI/AI/aiPointWindTagRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPointWindTagRoot.h" + +namespace uking::ai { + +PointWindTagRoot::PointWindTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PointWindTagRoot::~PointWindTagRoot() = default; + +bool PointWindTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PointWindTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PointWindTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PointWindTagRoot::loadParams_() { + getMapUnitParam(&mDirection_m, "Direction"); + getMapUnitParam(&mWindSpeed_m, "WindSpeed"); + getMapUnitParam(&mShape_m, "Shape"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPointWindTagRoot.h b/src/Game/AI/AI/aiPointWindTagRoot.h new file mode 100644 index 00000000..76ec6e43 --- /dev/null +++ b/src/Game/AI/AI/aiPointWindTagRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PointWindTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PointWindTagRoot, ksys::act::ai::Ai) +public: + explicit PointWindTagRoot(const InitArg& arg); + ~PointWindTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mDirection_m{}; + // map_unit_param at offset 0x40 + const float* mWindSpeed_m{}; + // map_unit_param at offset 0x48 + sead::SafeString mShape_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPracticeGuardianMiniNormal.cpp b/src/Game/AI/AI/aiPracticeGuardianMiniNormal.cpp new file mode 100644 index 00000000..e3b12aa1 --- /dev/null +++ b/src/Game/AI/AI/aiPracticeGuardianMiniNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPracticeGuardianMiniNormal.h" + +namespace uking::ai { + +PracticeGuardianMiniNormal::PracticeGuardianMiniNormal(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PracticeGuardianMiniNormal::~PracticeGuardianMiniNormal() = default; + +bool PracticeGuardianMiniNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PracticeGuardianMiniNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PracticeGuardianMiniNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PracticeGuardianMiniNormal::loadParams_() { + getAITreeVariable(&mGuardianMiniPracticeState_a, "GuardianMiniPracticeState"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPracticeGuardianMiniNormal.h b/src/Game/AI/AI/aiPracticeGuardianMiniNormal.h new file mode 100644 index 00000000..22edc5f8 --- /dev/null +++ b/src/Game/AI/AI/aiPracticeGuardianMiniNormal.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PracticeGuardianMiniNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PracticeGuardianMiniNormal, ksys::act::ai::Ai) +public: + explicit PracticeGuardianMiniNormal(const InitArg& arg); + ~PracticeGuardianMiniNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mGuardianMiniPracticeState_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreSleepCheck.cpp b/src/Game/AI/AI/aiPreSleepCheck.cpp new file mode 100644 index 00000000..d88cc633 --- /dev/null +++ b/src/Game/AI/AI/aiPreSleepCheck.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPreSleepCheck.h" + +namespace uking::ai { + +PreSleepCheck::PreSleepCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreSleepCheck::~PreSleepCheck() = default; + +bool PreSleepCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreSleepCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreSleepCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreSleepCheck::loadParams_() { + getStaticParam(&mCheckDist_s, "CheckDist"); + getStaticParam(&mCheckRadius_s, "CheckRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreSleepCheck.h b/src/Game/AI/AI/aiPreSleepCheck.h new file mode 100644 index 00000000..51c8aa4d --- /dev/null +++ b/src/Game/AI/AI/aiPreSleepCheck.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreSleepCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreSleepCheck, ksys::act::ai::Ai) +public: + explicit PreSleepCheck(const InitArg& arg); + ~PreSleepCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckDist_s{}; + // static_param at offset 0x40 + const float* mCheckRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASEndSeq.cpp b/src/Game/AI/AI/aiPrevASEndSeq.cpp new file mode 100644 index 00000000..046b8e42 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASEndSeq.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPrevASEndSeq.h" + +namespace uking::ai { + +PrevASEndSeq::PrevASEndSeq(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PrevASEndSeq::~PrevASEndSeq() = default; + +bool PrevASEndSeq::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PrevASEndSeq::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PrevASEndSeq::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PrevASEndSeq::loadParams_() { + getStaticParam(&mPrevASName_s, "PrevASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASEndSeq.h b/src/Game/AI/AI/aiPrevASEndSeq.h new file mode 100644 index 00000000..d4c1a551 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASEndSeq.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PrevASEndSeq : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PrevASEndSeq, ksys::act::ai::Ai) +public: + explicit PrevASEndSeq(const InitArg& arg); + ~PrevASEndSeq() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mPrevASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASOR2SelectTwo.cpp b/src/Game/AI/AI/aiPrevASOR2SelectTwo.cpp new file mode 100644 index 00000000..113f253e --- /dev/null +++ b/src/Game/AI/AI/aiPrevASOR2SelectTwo.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPrevASOR2SelectTwo.h" + +namespace uking::ai { + +PrevASOR2SelectTwo::PrevASOR2SelectTwo(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PrevASOR2SelectTwo::~PrevASOR2SelectTwo() = default; + +bool PrevASOR2SelectTwo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PrevASOR2SelectTwo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PrevASOR2SelectTwo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PrevASOR2SelectTwo::loadParams_() { + getStaticParam(&mAS1_s, "AS1"); + getStaticParam(&mAS2_s, "AS2"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASOR2SelectTwo.h b/src/Game/AI/AI/aiPrevASOR2SelectTwo.h new file mode 100644 index 00000000..63d527a8 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASOR2SelectTwo.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PrevASOR2SelectTwo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PrevASOR2SelectTwo, ksys::act::ai::Ai) +public: + explicit PrevASOR2SelectTwo(const InitArg& arg); + ~PrevASOR2SelectTwo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mAS1_s{}; + // static_param at offset 0x48 + sead::SafeString mAS2_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASSelect.cpp b/src/Game/AI/AI/aiPrevASSelect.cpp new file mode 100644 index 00000000..5ae0b5d6 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPrevASSelect.h" + +namespace uking::ai { + +PrevASSelect::PrevASSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PrevASSelect::~PrevASSelect() = default; + +bool PrevASSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PrevASSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PrevASSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PrevASSelect::loadParams_() { + getStaticParam(&mASName_s, "ASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASSelect.h b/src/Game/AI/AI/aiPrevASSelect.h new file mode 100644 index 00000000..bb1d47d2 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PrevASSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PrevASSelect, ksys::act::ai::Ai) +public: + explicit PrevASSelect(const InitArg& arg); + ~PrevASSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASSkipSeq.cpp b/src/Game/AI/AI/aiPrevASSkipSeq.cpp new file mode 100644 index 00000000..a8d5c2b2 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASSkipSeq.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPrevASSkipSeq.h" + +namespace uking::ai { + +PrevASSkipSeq::PrevASSkipSeq(const InitArg& arg) : SeqTwoAction(arg) {} + +PrevASSkipSeq::~PrevASSkipSeq() = default; + +bool PrevASSkipSeq::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void PrevASSkipSeq::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void PrevASSkipSeq::leave_() { + SeqTwoAction::leave_(); +} + +void PrevASSkipSeq::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mPrevASName_s, "PrevASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevASSkipSeq.h b/src/Game/AI/AI/aiPrevASSkipSeq.h new file mode 100644 index 00000000..bf946fa9 --- /dev/null +++ b/src/Game/AI/AI/aiPrevASSkipSeq.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PrevASSkipSeq : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(PrevASSkipSeq, SeqTwoAction) +public: + explicit PrevASSkipSeq(const InitArg& arg); + ~PrevASSkipSeq() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + sead::SafeString mPrevASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevSomeASSelect.cpp b/src/Game/AI/AI/aiPrevSomeASSelect.cpp new file mode 100644 index 00000000..247e54ae --- /dev/null +++ b/src/Game/AI/AI/aiPrevSomeASSelect.cpp @@ -0,0 +1,57 @@ +#include "Game/AI/AI/aiPrevSomeASSelect.h" + +namespace uking::ai { + +PrevSomeASSelect::PrevSomeASSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PrevSomeASSelect::~PrevSomeASSelect() = default; + +bool PrevSomeASSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PrevSomeASSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PrevSomeASSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PrevSomeASSelect::loadParams_() { + getStaticParam(&mSeqBank_s, "SeqBank"); + getStaticParam(&mTargetBone_s, "TargetBone"); + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPrevSomeASSelect.h b/src/Game/AI/AI/aiPrevSomeASSelect.h new file mode 100644 index 00000000..925754cb --- /dev/null +++ b/src/Game/AI/AI/aiPrevSomeASSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PrevSomeASSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PrevSomeASSelect, ksys::act::ai::Ai) +public: + explicit PrevSomeASSelect(const InitArg& arg); + ~PrevSomeASSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSeqBank_s{}; + // static_param at offset 0x40 + const int* mTargetBone_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyChemicalDeadReaction.cpp b/src/Game/AI/AI/aiPreyChemicalDeadReaction.cpp new file mode 100644 index 00000000..b51a8b50 --- /dev/null +++ b/src/Game/AI/AI/aiPreyChemicalDeadReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPreyChemicalDeadReaction.h" + +namespace uking::ai { + +PreyChemicalDeadReaction::PreyChemicalDeadReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyChemicalDeadReaction::~PreyChemicalDeadReaction() = default; + +bool PreyChemicalDeadReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyChemicalDeadReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyChemicalDeadReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyChemicalDeadReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyChemicalDeadReaction.h b/src/Game/AI/AI/aiPreyChemicalDeadReaction.h new file mode 100644 index 00000000..b69bacc8 --- /dev/null +++ b/src/Game/AI/AI/aiPreyChemicalDeadReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyChemicalDeadReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyChemicalDeadReaction, ksys::act::ai::Ai) +public: + explicit PreyChemicalDeadReaction(const InitArg& arg); + ~PreyChemicalDeadReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDead.cpp b/src/Game/AI/AI/aiPreyDead.cpp new file mode 100644 index 00000000..3bc25843 --- /dev/null +++ b/src/Game/AI/AI/aiPreyDead.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPreyDead.h" + +namespace uking::ai { + +PreyDead::PreyDead(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyDead::~PreyDead() = default; + +bool PreyDead::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyDead::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyDead::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyDead::loadParams_() { + getStaticParam(&mSendRadius_s, "SendRadius"); + getStaticParam(&mIsEmitForceEscapeSignal_s, "IsEmitForceEscapeSignal"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDead.h b/src/Game/AI/AI/aiPreyDead.h new file mode 100644 index 00000000..6ed39d1f --- /dev/null +++ b/src/Game/AI/AI/aiPreyDead.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyDead : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyDead, ksys::act::ai::Ai) +public: + explicit PreyDead(const InitArg& arg); + ~PreyDead() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSendRadius_s{}; + // static_param at offset 0x40 + const bool* mIsEmitForceEscapeSignal_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDeadCauseSelector.cpp b/src/Game/AI/AI/aiPreyDeadCauseSelector.cpp new file mode 100644 index 00000000..add1b70b --- /dev/null +++ b/src/Game/AI/AI/aiPreyDeadCauseSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPreyDeadCauseSelector.h" + +namespace uking::ai { + +PreyDeadCauseSelector::PreyDeadCauseSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyDeadCauseSelector::~PreyDeadCauseSelector() = default; + +bool PreyDeadCauseSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyDeadCauseSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyDeadCauseSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyDeadCauseSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDeadCauseSelector.h b/src/Game/AI/AI/aiPreyDeadCauseSelector.h new file mode 100644 index 00000000..5f39342e --- /dev/null +++ b/src/Game/AI/AI/aiPreyDeadCauseSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyDeadCauseSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyDeadCauseSelector, ksys::act::ai::Ai) +public: + explicit PreyDeadCauseSelector(const InitArg& arg); + ~PreyDeadCauseSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDefWanderAI.cpp b/src/Game/AI/AI/aiPreyDefWanderAI.cpp new file mode 100644 index 00000000..7d060bfa --- /dev/null +++ b/src/Game/AI/AI/aiPreyDefWanderAI.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiPreyDefWanderAI.h" + +namespace uking::ai { + +PreyDefWanderAI::PreyDefWanderAI(const InitArg& arg) : DefWanderAI(arg) {} + +PreyDefWanderAI::~PreyDefWanderAI() = default; + +bool PreyDefWanderAI::init_(sead::Heap* heap) { + return DefWanderAI::init_(heap); +} + +void PreyDefWanderAI::enter_(ksys::act::ai::InlineParamPack* params) { + DefWanderAI::enter_(params); +} + +void PreyDefWanderAI::leave_() { + DefWanderAI::leave_(); +} + +void PreyDefWanderAI::loadParams_() { + DefWanderAI::loadParams_(); + getStaticParam(&mTimesStuckLimit_s, "TimesStuckLimit"); + getStaticParam(&mFramesStuckLimit_s, "FramesStuckLimit"); + getAITreeVariable(&mFramesStuckOnTerrain_a, "FramesStuckOnTerrain"); + getAITreeVariable(&mIsStuckOnTerrain_a, "IsStuckOnTerrain"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDefWanderAI.h b/src/Game/AI/AI/aiPreyDefWanderAI.h new file mode 100644 index 00000000..df637156 --- /dev/null +++ b/src/Game/AI/AI/aiPreyDefWanderAI.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiDefWanderAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyDefWanderAI : public DefWanderAI { + SEAD_RTTI_OVERRIDE(PreyDefWanderAI, DefWanderAI) +public: + explicit PreyDefWanderAI(const InitArg& arg); + ~PreyDefWanderAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mTimesStuckLimit_s{}; + // static_param at offset 0x88 + const float* mFramesStuckLimit_s{}; + // aitree_variable at offset 0x90 + float* mFramesStuckOnTerrain_a{}; + // aitree_variable at offset 0x98 + bool* mIsStuckOnTerrain_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDropItemRoot.cpp b/src/Game/AI/AI/aiPreyDropItemRoot.cpp new file mode 100644 index 00000000..955ee31c --- /dev/null +++ b/src/Game/AI/AI/aiPreyDropItemRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPreyDropItemRoot.h" + +namespace uking::ai { + +PreyDropItemRoot::PreyDropItemRoot(const InitArg& arg) : PreyRoot(arg) {} + +PreyDropItemRoot::~PreyDropItemRoot() = default; + +bool PreyDropItemRoot::init_(sead::Heap* heap) { + return PreyRoot::init_(heap); +} + +void PreyDropItemRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PreyRoot::enter_(params); +} + +void PreyDropItemRoot::leave_() { + PreyRoot::leave_(); +} + +void PreyDropItemRoot::loadParams_() { + PreyRoot::loadParams_(); + getStaticParam(&mMaxDropCount_s, "MaxDropCount"); + getStaticParam(&mForceDeleteInterval_s, "ForceDeleteInterval"); + getStaticParam(&mInitialVelocity_s, "InitialVelocity"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyDropItemRoot.h b/src/Game/AI/AI/aiPreyDropItemRoot.h new file mode 100644 index 00000000..1e93422f --- /dev/null +++ b/src/Game/AI/AI/aiPreyDropItemRoot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPreyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyDropItemRoot : public PreyRoot { + SEAD_RTTI_OVERRIDE(PreyDropItemRoot, PreyRoot) +public: + explicit PreyDropItemRoot(const InitArg& arg); + ~PreyDropItemRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x208 + const int* mMaxDropCount_s{}; + // static_param at offset 0x210 + const float* mForceDeleteInterval_s{}; + // static_param at offset 0x218 + const sead::Vector3f* mInitialVelocity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyLookAtTarget.cpp b/src/Game/AI/AI/aiPreyLookAtTarget.cpp new file mode 100644 index 00000000..e5f21779 --- /dev/null +++ b/src/Game/AI/AI/aiPreyLookAtTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPreyLookAtTarget.h" + +namespace uking::ai { + +PreyLookAtTarget::PreyLookAtTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyLookAtTarget::~PreyLookAtTarget() = default; + +bool PreyLookAtTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyLookAtTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyLookAtTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyLookAtTarget::loadParams_() { + getStaticParam(&mLimitAngle_s, "LimitAngle"); + getStaticParam(&mIsUpdateViewPos_s, "IsUpdateViewPos"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyLookAtTarget.h b/src/Game/AI/AI/aiPreyLookAtTarget.h new file mode 100644 index 00000000..6105fef7 --- /dev/null +++ b/src/Game/AI/AI/aiPreyLookAtTarget.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyLookAtTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyLookAtTarget, ksys::act::ai::Ai) +public: + explicit PreyLookAtTarget(const InitArg& arg); + ~PreyLookAtTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLimitAngle_s{}; + // static_param at offset 0x40 + const bool* mIsUpdateViewPos_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyNormal.cpp b/src/Game/AI/AI/aiPreyNormal.cpp new file mode 100644 index 00000000..40e04896 --- /dev/null +++ b/src/Game/AI/AI/aiPreyNormal.cpp @@ -0,0 +1,43 @@ +#include "Game/AI/AI/aiPreyNormal.h" + +namespace uking::ai { + +PreyNormal::PreyNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyNormal::~PreyNormal() = default; + +bool PreyNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyNormal::loadParams_() { + getStaticParam(&mChangeBattleStateRadius_s, "ChangeBattleStateRadius"); + getStaticParam(&mCounterAttackRadius_s, "CounterAttackRadius"); + getStaticParam(&mCounterAttackRate_s, "CounterAttackRate"); + getStaticParam(&mAddCautionLevelVal_s, "AddCautionLevelVal"); + getStaticParam(&mAutoReduceCautionLevelVal_s, "AutoReduceCautionLevelVal"); + getStaticParam(&mLimitOverReduceCautionLevelVal_s, "LimitOverReduceCautionLevelVal"); + getStaticParam(&mAwnRangeScaleWhenAttention_s, "AwnRangeScaleWhenAttention"); + getStaticParam(&mTargetLostTime_s, "TargetLostTime"); + getStaticParam(&mAllowRoarRadius_s, "AllowRoarRadius"); + getStaticParam(&mEscapeWaterFlowLimit_s, "EscapeWaterFlowLimit"); + getStaticParam(&mNewFoodAddTime_s, "NewFoodAddTime"); + getStaticParam(&mIsUseEscapeState_s, "IsUseEscapeState"); + getStaticParam(&mIsPositiveAttacker_s, "IsPositiveAttacker"); + getStaticParam(&mIsSearchTarget_s, "IsSearchTarget"); + getStaticParam(&mIsEmitForceEscapeSignal_s, "IsEmitForceEscapeSignal"); + getStaticParam(&mIsReceivedForceEscapeSignal_s, "IsReceivedForceEscapeSignal"); + getStaticParam(&mIsCheckSandStorm_s, "IsCheckSandStorm"); + getMapUnitParam(&mIsLocatorCreate_m, "IsLocatorCreate"); + getMapUnitParam(&mEnableNoEntryAreaCheck_m, "EnableNoEntryAreaCheck"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyNormal.h b/src/Game/AI/AI/aiPreyNormal.h new file mode 100644 index 00000000..7b7f991a --- /dev/null +++ b/src/Game/AI/AI/aiPreyNormal.h @@ -0,0 +1,59 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyNormal, ksys::act::ai::Ai) +public: + explicit PreyNormal(const InitArg& arg); + ~PreyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mChangeBattleStateRadius_s{}; + // static_param at offset 0x40 + const float* mCounterAttackRadius_s{}; + // static_param at offset 0x48 + const float* mCounterAttackRate_s{}; + // static_param at offset 0x50 + const float* mAddCautionLevelVal_s{}; + // static_param at offset 0x58 + const float* mAutoReduceCautionLevelVal_s{}; + // static_param at offset 0x60 + const float* mLimitOverReduceCautionLevelVal_s{}; + // static_param at offset 0x68 + const float* mAwnRangeScaleWhenAttention_s{}; + // static_param at offset 0x70 + const float* mTargetLostTime_s{}; + // static_param at offset 0x78 + const float* mAllowRoarRadius_s{}; + // static_param at offset 0x80 + const float* mEscapeWaterFlowLimit_s{}; + // static_param at offset 0x88 + const float* mNewFoodAddTime_s{}; + // static_param at offset 0x90 + const bool* mIsUseEscapeState_s{}; + // static_param at offset 0x98 + const bool* mIsPositiveAttacker_s{}; + // static_param at offset 0xa0 + const bool* mIsSearchTarget_s{}; + // static_param at offset 0xa8 + const bool* mIsEmitForceEscapeSignal_s{}; + // static_param at offset 0xb0 + const bool* mIsReceivedForceEscapeSignal_s{}; + // static_param at offset 0xb8 + const bool* mIsCheckSandStorm_s{}; + // map_unit_param at offset 0xc0 + const bool* mIsLocatorCreate_m{}; + // map_unit_param at offset 0xc8 + const bool* mEnableNoEntryAreaCheck_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyReaction.cpp b/src/Game/AI/AI/aiPreyReaction.cpp new file mode 100644 index 00000000..bfb4c55b --- /dev/null +++ b/src/Game/AI/AI/aiPreyReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPreyReaction.h" + +namespace uking::ai { + +PreyReaction::PreyReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyReaction::~PreyReaction() = default; + +bool PreyReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyReaction.h b/src/Game/AI/AI/aiPreyReaction.h new file mode 100644 index 00000000..8e27e9e4 --- /dev/null +++ b/src/Game/AI/AI/aiPreyReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyReaction, ksys::act::ai::Ai) +public: + explicit PreyReaction(const InitArg& arg); + ~PreyReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyRoot.cpp b/src/Game/AI/AI/aiPreyRoot.cpp new file mode 100644 index 00000000..684ca24e --- /dev/null +++ b/src/Game/AI/AI/aiPreyRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiPreyRoot.h" + +namespace uking::ai { + +PreyRoot::PreyRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyRoot::~PreyRoot() = default; + +bool PreyRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyRoot::loadParams_() { + getStaticParam(&mAfterEscapeForceEndState_s, "AfterEscapeForceEndState"); + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mEscapeForceEndTime_s, "EscapeForceEndTime"); + getStaticParam(&mIsCheckFreeFall_s, "IsCheckFreeFall"); + getStaticParam(&mIsCheckStuckConsiderY_s, "IsCheckStuckConsiderY"); + getStaticParam(&mIsUseWeakForcePushOutside_s, "IsUseWeakForcePushOutside"); + getStaticParam(&mIsEnableEscapeForceEndCheck_s, "IsEnableEscapeForceEndCheck"); + getAITreeVariable(&mCreateDeadConditionType_a, "CreateDeadConditionType"); + getAITreeVariable(&mFramesStuckOnTerrain_a, "FramesStuckOnTerrain"); + getAITreeVariable(&mIsStuckOnTerrain_a, "IsStuckOnTerrain"); + getAITreeVariable(&mIsChangeableStateFreeFall_a, "IsChangeableStateFreeFall"); + getAITreeVariable(&mIsUseTerritory_a, "IsUseTerritory"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyRoot.h b/src/Game/AI/AI/aiPreyRoot.h new file mode 100644 index 00000000..c07e5e86 --- /dev/null +++ b/src/Game/AI/AI/aiPreyRoot.h @@ -0,0 +1,45 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyRoot, ksys::act::ai::Ai) +public: + explicit PreyRoot(const InitArg& arg); + ~PreyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAfterEscapeForceEndState_s{}; + // static_param at offset 0x40 + const float* mInWaterDepth_s{}; + // static_param at offset 0x48 + const float* mEscapeForceEndTime_s{}; + // static_param at offset 0x50 + const bool* mIsCheckFreeFall_s{}; + // static_param at offset 0x58 + const bool* mIsCheckStuckConsiderY_s{}; + // static_param at offset 0x60 + const bool* mIsUseWeakForcePushOutside_s{}; + // static_param at offset 0x68 + const bool* mIsEnableEscapeForceEndCheck_s{}; + // aitree_variable at offset 0x70 + int* mCreateDeadConditionType_a{}; + // aitree_variable at offset 0x78 + float* mFramesStuckOnTerrain_a{}; + // aitree_variable at offset 0x80 + bool* mIsStuckOnTerrain_a{}; + // aitree_variable at offset 0x88 + bool* mIsChangeableStateFreeFall_a{}; + // aitree_variable at offset 0x90 + bool* mIsUseTerritory_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyStun.cpp b/src/Game/AI/AI/aiPreyStun.cpp new file mode 100644 index 00000000..5cffe06c --- /dev/null +++ b/src/Game/AI/AI/aiPreyStun.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPreyStun.h" + +namespace uking::ai { + +PreyStun::PreyStun(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PreyStun::~PreyStun() = default; + +bool PreyStun::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PreyStun::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PreyStun::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PreyStun::loadParams_() { + getStaticParam(&mStunTime_s, "StunTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPreyStun.h b/src/Game/AI/AI/aiPreyStun.h new file mode 100644 index 00000000..dc5f537c --- /dev/null +++ b/src/Game/AI/AI/aiPreyStun.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PreyStun : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PreyStun, ksys::act::ai::Ai) +public: + explicit PreyStun(const InitArg& arg); + ~PreyStun() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mStunTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorCloneRoot.cpp b/src/Game/AI/AI/aiPriestBossActorCloneRoot.cpp new file mode 100644 index 00000000..4915876f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorCloneRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossActorCloneRoot.h" + +namespace uking::ai { + +PriestBossActorCloneRoot::PriestBossActorCloneRoot(const InitArg& arg) + : PriestBossActorNormalRoot(arg) {} + +PriestBossActorCloneRoot::~PriestBossActorCloneRoot() = default; + +bool PriestBossActorCloneRoot::init_(sead::Heap* heap) { + return PriestBossActorNormalRoot::init_(heap); +} + +void PriestBossActorCloneRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorNormalRoot::enter_(params); +} + +void PriestBossActorCloneRoot::leave_() { + PriestBossActorNormalRoot::leave_(); +} + +void PriestBossActorCloneRoot::loadParams_() { + PriestBossActorNormalRoot::loadParams_(); + getStaticParam(&mDisappearXLinkEventKey_s, "DisappearXLinkEventKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorCloneRoot.h b/src/Game/AI/AI/aiPriestBossActorCloneRoot.h new file mode 100644 index 00000000..c7e71928 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorCloneRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorNormalRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorCloneRoot : public PriestBossActorNormalRoot { + SEAD_RTTI_OVERRIDE(PriestBossActorCloneRoot, PriestBossActorNormalRoot) +public: + explicit PriestBossActorCloneRoot(const InitArg& arg); + ~PriestBossActorCloneRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x88 + sead::SafeString mDisappearXLinkEventKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorEnemyRoot.cpp b/src/Game/AI/AI/aiPriestBossActorEnemyRoot.cpp new file mode 100644 index 00000000..044e0ac9 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorEnemyRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossActorEnemyRoot.h" + +namespace uking::ai { + +PriestBossActorEnemyRoot::PriestBossActorEnemyRoot(const InitArg& arg) : EnemyRoot(arg) {} + +PriestBossActorEnemyRoot::~PriestBossActorEnemyRoot() = default; + +bool PriestBossActorEnemyRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void PriestBossActorEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void PriestBossActorEnemyRoot::leave_() { + EnemyRoot::leave_(); +} + +void PriestBossActorEnemyRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mIsReactionOnDead_s, "IsReactionOnDead"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorEnemyRoot.h b/src/Game/AI/AI/aiPriestBossActorEnemyRoot.h new file mode 100644 index 00000000..27781131 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorEnemyRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorEnemyRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(PriestBossActorEnemyRoot, EnemyRoot) +public: + explicit PriestBossActorEnemyRoot(const InitArg& arg); + ~PriestBossActorEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const bool* mIsReactionOnDead_s{}; + // aitree_variable at offset 0x1e0 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.cpp b/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.cpp new file mode 100644 index 00000000..dfdd888c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiPriestBossActorGiantFouthRoot.h" + +namespace uking::ai { + +PriestBossActorGiantFouthRoot::PriestBossActorGiantFouthRoot(const InitArg& arg) + : PriestBossActorGiantRoot(arg) {} + +PriestBossActorGiantFouthRoot::~PriestBossActorGiantFouthRoot() = default; + +bool PriestBossActorGiantFouthRoot::init_(sead::Heap* heap) { + return PriestBossActorGiantRoot::init_(heap); +} + +void PriestBossActorGiantFouthRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorGiantRoot::enter_(params); +} + +void PriestBossActorGiantFouthRoot::leave_() { + PriestBossActorGiantRoot::leave_(); +} + +void PriestBossActorGiantFouthRoot::loadParams_() { + PriestBossActorGiantRoot::loadParams_(); + getStaticParam(&mStompDistance_s, "StompDistance"); + getStaticParam(&mStompInAreaTimer_s, "StompInAreaTimer"); + getStaticParam(&mStompAction_s, "StompAction"); + getStaticParam(&mStompAlwaysChange_s, "StompAlwaysChange"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.h b/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.h new file mode 100644 index 00000000..a7d822ee --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorGiantFouthRoot.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorGiantRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorGiantFouthRoot : public PriestBossActorGiantRoot { + SEAD_RTTI_OVERRIDE(PriestBossActorGiantFouthRoot, PriestBossActorGiantRoot) +public: + explicit PriestBossActorGiantFouthRoot(const InitArg& arg); + ~PriestBossActorGiantFouthRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const float* mStompDistance_s{}; + // static_param at offset 0x100 + const float* mStompInAreaTimer_s{}; + // static_param at offset 0x108 + const bool* mStompAction_s{}; + // static_param at offset 0x110 + const bool* mStompAlwaysChange_s{}; + // aitree_variable at offset 0x118 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorGiantRoot.cpp b/src/Game/AI/AI/aiPriestBossActorGiantRoot.cpp new file mode 100644 index 00000000..6c47e22a --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorGiantRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiPriestBossActorGiantRoot.h" + +namespace uking::ai { + +PriestBossActorGiantRoot::PriestBossActorGiantRoot(const InitArg& arg) : PriestBossActorRoot(arg) {} + +PriestBossActorGiantRoot::~PriestBossActorGiantRoot() = default; + +bool PriestBossActorGiantRoot::init_(sead::Heap* heap) { + return PriestBossActorRoot::init_(heap); +} + +void PriestBossActorGiantRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorRoot::enter_(params); +} + +void PriestBossActorGiantRoot::leave_() { + PriestBossActorRoot::leave_(); +} + +void PriestBossActorGiantRoot::loadParams_() { + PriestBossActorRoot::loadParams_(); + getStaticParam(&mFreqIronBallAttack_s, "FreqIronBallAttack"); + getStaticParam(&mFreqBigEarthReleaseAttack_s, "FreqBigEarthReleaseAttack"); + getStaticParam(&mFreqEyeBeamAttack_s, "FreqEyeBeamAttack"); + getStaticParam(&mFreqStageRotation_s, "FreqStageRotation"); + getStaticParam(&mFloatDistFromPlayer_s, "FloatDistFromPlayer"); + getStaticParam(&mIsFreeMoving_s, "IsFreeMoving"); + getAITreeVariable(&mKeepDistFromGround_a, "KeepDistFromGround"); + getAITreeVariable(&mIsActive_a, "IsActive"); + getAITreeVariable(&mIsArrivedAtDestination_a, "IsArrivedAtDestination"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); + getAITreeVariable(&mFacePos_a, "FacePos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorGiantRoot.h b/src/Game/AI/AI/aiPriestBossActorGiantRoot.h new file mode 100644 index 00000000..02d2b26f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorGiantRoot.h @@ -0,0 +1,44 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorGiantRoot : public PriestBossActorRoot { + SEAD_RTTI_OVERRIDE(PriestBossActorGiantRoot, PriestBossActorRoot) +public: + explicit PriestBossActorGiantRoot(const InitArg& arg); + ~PriestBossActorGiantRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mFreqIronBallAttack_s{}; + // static_param at offset 0x48 + const float* mFreqBigEarthReleaseAttack_s{}; + // static_param at offset 0x50 + const float* mFreqEyeBeamAttack_s{}; + // static_param at offset 0x58 + const float* mFreqStageRotation_s{}; + // static_param at offset 0x60 + const float* mFloatDistFromPlayer_s{}; + // static_param at offset 0x68 + const bool* mIsFreeMoving_s{}; + // aitree_variable at offset 0x70 + float* mKeepDistFromGround_a{}; + // aitree_variable at offset 0x78 + bool* mIsActive_a{}; + // aitree_variable at offset 0x80 + bool* mIsArrivedAtDestination_a{}; + // aitree_variable at offset 0x88 + sead::Vector3f* mDestinationPos_a{}; + // aitree_variable at offset 0x90 + sead::Vector3f* mFacePos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorNormalMode.cpp b/src/Game/AI/AI/aiPriestBossActorNormalMode.cpp new file mode 100644 index 00000000..ba973ed0 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorNormalMode.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiPriestBossActorNormalMode.h" + +namespace uking::ai { + +PriestBossActorNormalMode::PriestBossActorNormalMode(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossActorNormalMode::~PriestBossActorNormalMode() = default; + +bool PriestBossActorNormalMode::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossActorNormalMode::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossActorNormalMode::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossActorNormalMode::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mApproachWarpRate_s, "ApproachWarpRate"); + getStaticParam(&mApproachStartDistance_s, "ApproachStartDistance"); + getStaticParam(&mLeaveStartDistance_s, "LeaveStartDistance"); + getStaticParam(&mLeaveStartTime_s, "LeaveStartTime"); + getStaticParam(&mWaitMinTime_s, "WaitMinTime"); + getStaticParam(&mWaitMaxTime_s, "WaitMaxTime"); + getStaticParam(&mSecondHalfLifePercent_s, "SecondHalfLifePercent"); + getStaticParam(&mFramesRestrictEarthRelease_s, "FramesRestrictEarthRelease"); + getStaticParam(&mWarpPosDistFromPlayer_s, "WarpPosDistFromPlayer"); + getStaticParam(&mStageMarginRateForEarthRelease_s, "StageMarginRateForEarthRelease"); + getStaticParam(&mIsManagedBtlMgr_s, "IsManagedBtlMgr"); + getDynamicParam(&mFromSyncMode_d, "FromSyncMode"); + getAITreeVariable(&mEquipWeaponBufIndex_a, "EquipWeaponBufIndex"); + getAITreeVariable(&mReturnFromBananaMode_a, "ReturnFromBananaMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorNormalMode.h b/src/Game/AI/AI/aiPriestBossActorNormalMode.h new file mode 100644 index 00000000..39d812b1 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorNormalMode.h @@ -0,0 +1,50 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorNormalMode : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossActorNormalMode, PriestBossMode) +public: + explicit PriestBossActorNormalMode(const InitArg& arg); + ~PriestBossActorNormalMode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mApproachWarpRate_s{}; + // static_param at offset 0x48 + const float* mApproachStartDistance_s{}; + // static_param at offset 0x50 + const float* mLeaveStartDistance_s{}; + // static_param at offset 0x58 + const float* mLeaveStartTime_s{}; + // static_param at offset 0x60 + const float* mWaitMinTime_s{}; + // static_param at offset 0x68 + const float* mWaitMaxTime_s{}; + // static_param at offset 0x70 + const float* mSecondHalfLifePercent_s{}; + // static_param at offset 0x78 + const float* mFramesRestrictEarthRelease_s{}; + // static_param at offset 0x80 + const float* mWarpPosDistFromPlayer_s{}; + // static_param at offset 0x88 + const float* mStageMarginRateForEarthRelease_s{}; + // static_param at offset 0x90 + const bool* mIsManagedBtlMgr_s{}; + // dynamic_param at offset 0x98 + bool* mFromSyncMode_d{}; + // aitree_variable at offset 0xa0 + int* mEquipWeaponBufIndex_a{}; + // aitree_variable at offset 0xa8 + bool* mReturnFromBananaMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorNormalRoot.cpp b/src/Game/AI/AI/aiPriestBossActorNormalRoot.cpp new file mode 100644 index 00000000..cd10d024 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorNormalRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossActorNormalRoot.h" + +namespace uking::ai { + +PriestBossActorNormalRoot::PriestBossActorNormalRoot(const InitArg& arg) + : PriestBossActorRoot(arg) {} + +PriestBossActorNormalRoot::~PriestBossActorNormalRoot() = default; + +bool PriestBossActorNormalRoot::init_(sead::Heap* heap) { + return PriestBossActorRoot::init_(heap); +} + +void PriestBossActorNormalRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorRoot::enter_(params); +} + +void PriestBossActorNormalRoot::leave_() { + PriestBossActorRoot::leave_(); +} + +void PriestBossActorNormalRoot::loadParams_() { + PriestBossActorRoot::loadParams_(); + getAITreeVariable(&mEquipWeaponBufIndex_a, "EquipWeaponBufIndex"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorNormalRoot.h b/src/Game/AI/AI/aiPriestBossActorNormalRoot.h new file mode 100644 index 00000000..e0333675 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorNormalRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorNormalRoot : public PriestBossActorRoot { + SEAD_RTTI_OVERRIDE(PriestBossActorNormalRoot, PriestBossActorRoot) +public: + explicit PriestBossActorNormalRoot(const InitArg& arg); + ~PriestBossActorNormalRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x40 + int* mEquipWeaponBufIndex_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.cpp b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.cpp new file mode 100644 index 00000000..038e09fb --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossActorPhaseSecondStart.h" + +namespace uking::ai { + +PriestBossActorPhaseSecondStart::PriestBossActorPhaseSecondStart(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossActorPhaseSecondStart::~PriestBossActorPhaseSecondStart() = default; + +bool PriestBossActorPhaseSecondStart::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossActorPhaseSecondStart::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossActorPhaseSecondStart::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossActorPhaseSecondStart::loadParams_() { + getAITreeVariable(&mEquipWeaponBufIndex_a, "EquipWeaponBufIndex"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h new file mode 100644 index 00000000..993d036f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorPhaseSecondStart.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorPhaseSecondStart : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossActorPhaseSecondStart, ksys::act::ai::Ai) +public: + explicit PriestBossActorPhaseSecondStart(const InitArg& arg); + ~PriestBossActorPhaseSecondStart() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mEquipWeaponBufIndex_a{}; + // aitree_variable at offset 0x40 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorRoot.cpp b/src/Game/AI/AI/aiPriestBossActorRoot.cpp new file mode 100644 index 00000000..507b9aee --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossActorRoot.h" + +namespace uking::ai { + +PriestBossActorRoot::PriestBossActorRoot(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossActorRoot::~PriestBossActorRoot() = default; + +bool PriestBossActorRoot::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossActorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossActorRoot::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossActorRoot::loadParams_() { + PriestBossMode::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossActorRoot.h b/src/Game/AI/AI/aiPriestBossActorRoot.h new file mode 100644 index 00000000..8cc23ba6 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossActorRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossActorRoot : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossActorRoot, PriestBossMode) +public: + explicit PriestBossActorRoot(const InitArg& arg); + ~PriestBossActorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossAfterImageRoot.cpp b/src/Game/AI/AI/aiPriestBossAfterImageRoot.cpp new file mode 100644 index 00000000..c4b1f035 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossAfterImageRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPriestBossAfterImageRoot.h" + +namespace uking::ai { + +PriestBossAfterImageRoot::PriestBossAfterImageRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossAfterImageRoot::~PriestBossAfterImageRoot() = default; + +bool PriestBossAfterImageRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossAfterImageRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossAfterImageRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossAfterImageRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossAfterImageRoot.h b/src/Game/AI/AI/aiPriestBossAfterImageRoot.h new file mode 100644 index 00000000..f5522f23 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossAfterImageRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossAfterImageRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossAfterImageRoot, ksys::act::ai::Ai) +public: + explicit PriestBossAfterImageRoot(const InitArg& arg); + ~PriestBossAfterImageRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossAttackGrave.cpp b/src/Game/AI/AI/aiPriestBossAttackGrave.cpp new file mode 100644 index 00000000..dbc35288 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossAttackGrave.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossAttackGrave.h" + +namespace uking::ai { + +PriestBossAttackGrave::PriestBossAttackGrave(const InitArg& arg) : AttackGrave(arg) {} + +PriestBossAttackGrave::~PriestBossAttackGrave() = default; + +bool PriestBossAttackGrave::init_(sead::Heap* heap) { + return AttackGrave::init_(heap); +} + +void PriestBossAttackGrave::enter_(ksys::act::ai::InlineParamPack* params) { + AttackGrave::enter_(params); +} + +void PriestBossAttackGrave::leave_() { + AttackGrave::leave_(); +} + +void PriestBossAttackGrave::loadParams_() { + AttackGrave::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossAttackGrave.h b/src/Game/AI/AI/aiPriestBossAttackGrave.h new file mode 100644 index 00000000..17f11703 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossAttackGrave.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiAttackGrave.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossAttackGrave : public AttackGrave { + SEAD_RTTI_OVERRIDE(PriestBossAttackGrave, AttackGrave) +public: + explicit PriestBossAttackGrave(const InitArg& arg); + ~PriestBossAttackGrave() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBananaMode.cpp b/src/Game/AI/AI/aiPriestBossBananaMode.cpp new file mode 100644 index 00000000..1bd3438d --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBananaMode.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossBananaMode.h" + +namespace uking::ai { + +PriestBossBananaMode::PriestBossBananaMode(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossBananaMode::~PriestBossBananaMode() = default; + +bool PriestBossBananaMode::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossBananaMode::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossBananaMode::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossBananaMode::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mHealAmount_s, "HealAmount"); + getStaticParam(&mTimeUpFrames_s, "TimeUpFrames"); + getAITreeVariable(&mReturnFromBananaMode_a, "ReturnFromBananaMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBananaMode.h b/src/Game/AI/AI/aiPriestBossBananaMode.h new file mode 100644 index 00000000..3638c346 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBananaMode.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossBananaMode : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossBananaMode, PriestBossMode) +public: + explicit PriestBossBananaMode(const InitArg& arg); + ~PriestBossBananaMode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mHealAmount_s{}; + // static_param at offset 0x88 + const float* mTimeUpFrames_s{}; + // aitree_variable at offset 0x90 + bool* mReturnFromBananaMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBeamExplode.cpp b/src/Game/AI/AI/aiPriestBossBeamExplode.cpp new file mode 100644 index 00000000..d4ae4744 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBeamExplode.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossBeamExplode.h" + +namespace uking::ai { + +PriestBossBeamExplode::PriestBossBeamExplode(const InitArg& arg) : BeamExplodeEitherHit(arg) {} + +PriestBossBeamExplode::~PriestBossBeamExplode() = default; + +bool PriestBossBeamExplode::init_(sead::Heap* heap) { + return BeamExplodeEitherHit::init_(heap); +} + +void PriestBossBeamExplode::enter_(ksys::act::ai::InlineParamPack* params) { + BeamExplodeEitherHit::enter_(params); +} + +void PriestBossBeamExplode::leave_() { + BeamExplodeEitherHit::leave_(); +} + +void PriestBossBeamExplode::loadParams_() { + BeamExplodeEitherHit::loadParams_(); + getStaticParam(&mMaxDistance_s, "MaxDistance"); + getStaticParam(&mMaxDistanceChangeableBorder_s, "MaxDistanceChangeableBorder"); + getStaticParam(&mMaxDistanceChangeableRevise_s, "MaxDistanceChangeableRevise"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBeamExplode.h b/src/Game/AI/AI/aiPriestBossBeamExplode.h new file mode 100644 index 00000000..fd993c4f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBeamExplode.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiBeamExplodeEitherHit.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossBeamExplode : public BeamExplodeEitherHit { + SEAD_RTTI_OVERRIDE(PriestBossBeamExplode, BeamExplodeEitherHit) +public: + explicit PriestBossBeamExplode(const InitArg& arg); + ~PriestBossBeamExplode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mMaxDistance_s{}; + // static_param at offset 0x68 + const int* mMaxDistanceChangeableBorder_s{}; + // static_param at offset 0x70 + const int* mMaxDistanceChangeableRevise_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.cpp b/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.cpp new file mode 100644 index 00000000..391bcd53 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiPriestBossBlowoffDamageSelect.h" + +namespace uking::ai { + +PriestBossBlowoffDamageSelect::PriestBossBlowoffDamageSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossBlowoffDamageSelect::~PriestBossBlowoffDamageSelect() = default; + +bool PriestBossBlowoffDamageSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossBlowoffDamageSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossBlowoffDamageSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossBlowoffDamageSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.h b/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.h new file mode 100644 index 00000000..92564f6c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBlowoffDamageSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossBlowoffDamageSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossBlowoffDamageSelect, ksys::act::ai::Ai) +public: + explicit PriestBossBlowoffDamageSelect(const InitArg& arg); + ~PriestBossBlowoffDamageSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.cpp b/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.cpp new file mode 100644 index 00000000..686a280b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossBlowoffReadyReaction.h" + +namespace uking::ai { + +PriestBossBlowoffReadyReaction::PriestBossBlowoffReadyReaction(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossBlowoffReadyReaction::~PriestBossBlowoffReadyReaction() = default; + +bool PriestBossBlowoffReadyReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossBlowoffReadyReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossBlowoffReadyReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossBlowoffReadyReaction::loadParams_() { + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.h b/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.h new file mode 100644 index 00000000..51357171 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBlowoffReadyReaction.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossBlowoffReadyReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossBlowoffReadyReaction, ksys::act::ai::Ai) +public: + explicit PriestBossBlowoffReadyReaction(const InitArg& arg); + ~PriestBossBlowoffReadyReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBowEquiped.cpp b/src/Game/AI/AI/aiPriestBossBowEquiped.cpp new file mode 100644 index 00000000..d6c684f5 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBowEquiped.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiPriestBossBowEquiped.h" + +namespace uking::ai { + +PriestBossBowEquiped::PriestBossBowEquiped(const InitArg& arg) : BowEquiped(arg) {} + +PriestBossBowEquiped::~PriestBossBowEquiped() = default; + +bool PriestBossBowEquiped::init_(sead::Heap* heap) { + return BowEquiped::init_(heap); +} + +void PriestBossBowEquiped::enter_(ksys::act::ai::InlineParamPack* params) { + BowEquiped::enter_(params); +} + +void PriestBossBowEquiped::leave_() { + BowEquiped::leave_(); +} + +void PriestBossBowEquiped::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossBowEquiped.h b/src/Game/AI/AI/aiPriestBossBowEquiped.h new file mode 100644 index 00000000..0250fc7c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossBowEquiped.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiBowEquiped.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossBowEquiped : public BowEquiped { + SEAD_RTTI_OVERRIDE(PriestBossBowEquiped, BowEquiped) +public: + explicit PriestBossBowEquiped(const InitArg& arg); + ~PriestBossBowEquiped() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCircleFormationRush.cpp b/src/Game/AI/AI/aiPriestBossCircleFormationRush.cpp new file mode 100644 index 00000000..60710fc6 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCircleFormationRush.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossCircleFormationRush.h" + +namespace uking::ai { + +PriestBossCircleFormationRush::PriestBossCircleFormationRush(const InitArg& arg) + : PriestBossFormation(arg) {} + +PriestBossCircleFormationRush::~PriestBossCircleFormationRush() = default; + +bool PriestBossCircleFormationRush::init_(sead::Heap* heap) { + return PriestBossFormation::init_(heap); +} + +void PriestBossCircleFormationRush::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossFormation::enter_(params); +} + +void PriestBossCircleFormationRush::leave_() { + PriestBossFormation::leave_(); +} + +void PriestBossCircleFormationRush::loadParams_() { + PriestBossFormation::loadParams_(); + getStaticParam(&mHomingAttackTime_s, "HomingAttackTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCircleFormationRush.h b/src/Game/AI/AI/aiPriestBossCircleFormationRush.h new file mode 100644 index 00000000..8de9c724 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCircleFormationRush.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossFormation.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossCircleFormationRush : public PriestBossFormation { + SEAD_RTTI_OVERRIDE(PriestBossCircleFormationRush, PriestBossFormation) +public: + explicit PriestBossCircleFormationRush(const InitArg& arg); + ~PriestBossCircleFormationRush() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mHomingAttackTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCircleFormationShoot.cpp b/src/Game/AI/AI/aiPriestBossCircleFormationShoot.cpp new file mode 100644 index 00000000..9a4e1a7b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCircleFormationShoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossCircleFormationShoot.h" + +namespace uking::ai { + +PriestBossCircleFormationShoot::PriestBossCircleFormationShoot(const InitArg& arg) + : PriestBossFormation(arg) {} + +PriestBossCircleFormationShoot::~PriestBossCircleFormationShoot() = default; + +bool PriestBossCircleFormationShoot::init_(sead::Heap* heap) { + return PriestBossFormation::init_(heap); +} + +void PriestBossCircleFormationShoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossFormation::enter_(params); +} + +void PriestBossCircleFormationShoot::leave_() { + PriestBossFormation::leave_(); +} + +void PriestBossCircleFormationShoot::loadParams_() { + PriestBossFormation::loadParams_(); + getStaticParam(&mHomingAttackTime_s, "HomingAttackTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCircleFormationShoot.h b/src/Game/AI/AI/aiPriestBossCircleFormationShoot.h new file mode 100644 index 00000000..67074304 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCircleFormationShoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossFormation.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossCircleFormationShoot : public PriestBossFormation { + SEAD_RTTI_OVERRIDE(PriestBossCircleFormationShoot, PriestBossFormation) +public: + explicit PriestBossCircleFormationShoot(const InitArg& arg); + ~PriestBossCircleFormationShoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mHomingAttackTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCloneBananaMode.cpp b/src/Game/AI/AI/aiPriestBossCloneBananaMode.cpp new file mode 100644 index 00000000..9f90a305 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCloneBananaMode.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossCloneBananaMode.h" + +namespace uking::ai { + +PriestBossCloneBananaMode::PriestBossCloneBananaMode(const InitArg& arg) + : PriestBossBananaMode(arg) {} + +PriestBossCloneBananaMode::~PriestBossCloneBananaMode() = default; + +bool PriestBossCloneBananaMode::init_(sead::Heap* heap) { + return PriestBossBananaMode::init_(heap); +} + +void PriestBossCloneBananaMode::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossBananaMode::enter_(params); +} + +void PriestBossCloneBananaMode::leave_() { + PriestBossBananaMode::leave_(); +} + +void PriestBossCloneBananaMode::loadParams_() { + PriestBossBananaMode::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCloneBananaMode.h b/src/Game/AI/AI/aiPriestBossCloneBananaMode.h new file mode 100644 index 00000000..32803f81 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCloneBananaMode.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossBananaMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossCloneBananaMode : public PriestBossBananaMode { + SEAD_RTTI_OVERRIDE(PriestBossCloneBananaMode, PriestBossBananaMode) +public: + explicit PriestBossCloneBananaMode(const InitArg& arg); + ~PriestBossCloneBananaMode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCloneBulletRoot.cpp b/src/Game/AI/AI/aiPriestBossCloneBulletRoot.cpp new file mode 100644 index 00000000..afde08ac --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCloneBulletRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossCloneBulletRoot.h" + +namespace uking::ai { + +PriestBossCloneBulletRoot::PriestBossCloneBulletRoot(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossCloneBulletRoot::~PriestBossCloneBulletRoot() = default; + +bool PriestBossCloneBulletRoot::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossCloneBulletRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossCloneBulletRoot::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossCloneBulletRoot::loadParams_() { + PriestBossMode::loadParams_(); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossCloneBulletRoot.h b/src/Game/AI/AI/aiPriestBossCloneBulletRoot.h new file mode 100644 index 00000000..4165780f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossCloneBulletRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossCloneBulletRoot : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossCloneBulletRoot, PriestBossMode) +public: + explicit PriestBossCloneBulletRoot(const InitArg& arg); + ~PriestBossCloneBulletRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x40 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossDamageTypeSelect.cpp b/src/Game/AI/AI/aiPriestBossDamageTypeSelect.cpp new file mode 100644 index 00000000..fb68a424 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossDamageTypeSelect.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiPriestBossDamageTypeSelect.h" + +namespace uking::ai { + +PriestBossDamageTypeSelect::PriestBossDamageTypeSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossDamageTypeSelect::~PriestBossDamageTypeSelect() = default; + +bool PriestBossDamageTypeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossDamageTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossDamageTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossDamageTypeSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossDamageTypeSelect.h b/src/Game/AI/AI/aiPriestBossDamageTypeSelect.h new file mode 100644 index 00000000..f7a2a7e3 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossDamageTypeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossDamageTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossDamageTypeSelect, ksys::act::ai::Ai) +public: + explicit PriestBossDamageTypeSelect(const InitArg& arg); + ~PriestBossDamageTypeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeam.cpp b/src/Game/AI/AI/aiPriestBossEyeBeam.cpp new file mode 100644 index 00000000..d309fb9b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeam.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiPriestBossEyeBeam.h" + +namespace uking::ai { + +PriestBossEyeBeam::PriestBossEyeBeam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossEyeBeam::~PriestBossEyeBeam() = default; + +bool PriestBossEyeBeam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossEyeBeam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossEyeBeam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossEyeBeam::loadParams_() { + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAttackPowerForPlayer_s, "AttackPowerForPlayer"); + getStaticParam(&mShotReviseAngleXU_s, "ShotReviseAngleXU"); + getStaticParam(&mShotReviseAngleXD_s, "ShotReviseAngleXD"); + getStaticParam(&mShotReviseAngleY_s, "ShotReviseAngleY"); + getStaticParam(&mIsCreateGuardEffect_s, "IsCreateGuardEffect"); + getStaticParam(&mIsChangeable_s, "IsChangeable"); + getStaticParam(&mReflectOffset_s, "ReflectOffset"); + getStaticParam(&mShotOffset_s, "ShotOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeam.h b/src/Game/AI/AI/aiPriestBossEyeBeam.h new file mode 100644 index 00000000..ae9fbb52 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeam.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossEyeBeam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossEyeBeam, ksys::act::ai::Ai) +public: + explicit PriestBossEyeBeam(const InitArg& arg); + ~PriestBossEyeBeam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAtMinDamage_s{}; + // static_param at offset 0x40 + const int* mAttackPower_s{}; + // static_param at offset 0x48 + const int* mAttackPowerForPlayer_s{}; + // static_param at offset 0x50 + const int* mShotReviseAngleXU_s{}; + // static_param at offset 0x58 + const int* mShotReviseAngleXD_s{}; + // static_param at offset 0x60 + const int* mShotReviseAngleY_s{}; + // static_param at offset 0x68 + const bool* mIsCreateGuardEffect_s{}; + // static_param at offset 0x70 + const bool* mIsChangeable_s{}; + // static_param at offset 0x78 + const sead::Vector3f* mReflectOffset_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mShotOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamFourth.cpp b/src/Game/AI/AI/aiPriestBossEyeBeamFourth.cpp new file mode 100644 index 00000000..241bc5c0 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamFourth.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiPriestBossEyeBeamFourth.h" + +namespace uking::ai { + +PriestBossEyeBeamFourth::PriestBossEyeBeamFourth(const InitArg& arg) : PriestBossEyeBeam(arg) {} + +PriestBossEyeBeamFourth::~PriestBossEyeBeamFourth() = default; + +bool PriestBossEyeBeamFourth::init_(sead::Heap* heap) { + return PriestBossEyeBeam::init_(heap); +} + +void PriestBossEyeBeamFourth::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossEyeBeam::enter_(params); +} + +void PriestBossEyeBeamFourth::leave_() { + PriestBossEyeBeam::leave_(); +} + +void PriestBossEyeBeamFourth::loadParams_() { + PriestBossEyeBeam::loadParams_(); + getStaticParam(&mAtDirType_s, "AtDirType"); + getStaticParam(&mAtAttr_s, "AtAttr"); + getStaticParam(&mAtType_s, "AtType"); + getStaticParam(&mAtShieldBreakPower_s, "AtShieldBreakPower"); + getStaticParam(&mAtImpact_s, "AtImpact"); + getStaticParam(&mAtPowerReduce_s, "AtPowerReduce"); + getStaticParam(&mAtPower_s, "AtPower"); + getStaticParam(&mAtDamage_s, "AtDamage"); + getStaticParam(&mSearchEndAngle_s, "SearchEndAngle"); + getAITreeVariable(&mIsArrivedAtDestination_a, "IsArrivedAtDestination"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); + getAITreeVariable(&mFacePos_a, "FacePos"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamFourth.h b/src/Game/AI/AI/aiPriestBossEyeBeamFourth.h new file mode 100644 index 00000000..024eb9c4 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamFourth.h @@ -0,0 +1,48 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossEyeBeam.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossEyeBeamFourth : public PriestBossEyeBeam { + SEAD_RTTI_OVERRIDE(PriestBossEyeBeamFourth, PriestBossEyeBeam) +public: + explicit PriestBossEyeBeamFourth(const InitArg& arg); + ~PriestBossEyeBeamFourth() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb8 + const int* mAtDirType_s{}; + // static_param at offset 0xc0 + const int* mAtAttr_s{}; + // static_param at offset 0xc8 + const int* mAtType_s{}; + // static_param at offset 0xd0 + const int* mAtShieldBreakPower_s{}; + // static_param at offset 0xd8 + const int* mAtImpact_s{}; + // static_param at offset 0xe0 + const int* mAtPowerReduce_s{}; + // static_param at offset 0xe8 + const int* mAtPower_s{}; + // static_param at offset 0xf0 + const int* mAtDamage_s{}; + // static_param at offset 0xf8 + const int* mSearchEndAngle_s{}; + // aitree_variable at offset 0x100 + bool* mIsArrivedAtDestination_a{}; + // aitree_variable at offset 0x108 + sead::Vector3f* mDestinationPos_a{}; + // aitree_variable at offset 0x110 + sead::Vector3f* mFacePos_a{}; + // aitree_variable at offset 0x118 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.cpp b/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.cpp new file mode 100644 index 00000000..6e6b38ce --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossEyeBeamStandAim.h" + +namespace uking::ai { + +PriestBossEyeBeamStandAim::PriestBossEyeBeamStandAim(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossEyeBeamStandAim::~PriestBossEyeBeamStandAim() = default; + +bool PriestBossEyeBeamStandAim::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossEyeBeamStandAim::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossEyeBeamStandAim::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossEyeBeamStandAim::loadParams_() { + getStaticParam(&mBorderDist_s, "BorderDist"); + getStaticParam(&mBorderHeight_s, "BorderHeight"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mAimTargetPos_d, "AimTargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.h b/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.h new file mode 100644 index 00000000..c3c558e7 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamStandAim.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossEyeBeamStandAim : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossEyeBeamStandAim, ksys::act::ai::Ai) +public: + explicit PriestBossEyeBeamStandAim(const InitArg& arg); + ~PriestBossEyeBeamStandAim() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBorderDist_s{}; + // static_param at offset 0x40 + const float* mBorderHeight_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mAimTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamThird.cpp b/src/Game/AI/AI/aiPriestBossEyeBeamThird.cpp new file mode 100644 index 00000000..ba2da569 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamThird.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossEyeBeamThird.h" + +namespace uking::ai { + +PriestBossEyeBeamThird::PriestBossEyeBeamThird(const InitArg& arg) : PriestBossEyeBeam(arg) {} + +PriestBossEyeBeamThird::~PriestBossEyeBeamThird() = default; + +bool PriestBossEyeBeamThird::init_(sead::Heap* heap) { + return PriestBossEyeBeam::init_(heap); +} + +void PriestBossEyeBeamThird::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossEyeBeam::enter_(params); +} + +void PriestBossEyeBeamThird::leave_() { + PriestBossEyeBeam::leave_(); +} + +void PriestBossEyeBeamThird::loadParams_() { + PriestBossEyeBeam::loadParams_(); + getAITreeVariable(&mIsArrivedAtDestination_a, "IsArrivedAtDestination"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); + getAITreeVariable(&mFacePos_a, "FacePos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossEyeBeamThird.h b/src/Game/AI/AI/aiPriestBossEyeBeamThird.h new file mode 100644 index 00000000..19c91969 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossEyeBeamThird.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossEyeBeam.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossEyeBeamThird : public PriestBossEyeBeam { + SEAD_RTTI_OVERRIDE(PriestBossEyeBeamThird, PriestBossEyeBeam) +public: + explicit PriestBossEyeBeamThird(const InitArg& arg); + ~PriestBossEyeBeamThird() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0xb8 + bool* mIsArrivedAtDestination_a{}; + // aitree_variable at offset 0xc0 + sead::Vector3f* mDestinationPos_a{}; + // aitree_variable at offset 0xc8 + sead::Vector3f* mFacePos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossFastWarpAttack.cpp b/src/Game/AI/AI/aiPriestBossFastWarpAttack.cpp new file mode 100644 index 00000000..2bd79231 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossFastWarpAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossFastWarpAttack.h" + +namespace uking::ai { + +PriestBossFastWarpAttack::PriestBossFastWarpAttack(const InitArg& arg) + : SiteBossSwordApproachRoot(arg) {} + +PriestBossFastWarpAttack::~PriestBossFastWarpAttack() = default; + +bool PriestBossFastWarpAttack::init_(sead::Heap* heap) { + return SiteBossSwordApproachRoot::init_(heap); +} + +void PriestBossFastWarpAttack::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossSwordApproachRoot::enter_(params); +} + +void PriestBossFastWarpAttack::leave_() { + SiteBossSwordApproachRoot::leave_(); +} + +void PriestBossFastWarpAttack::loadParams_() { + SiteBossSwordApproachRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossFastWarpAttack.h b/src/Game/AI/AI/aiPriestBossFastWarpAttack.h new file mode 100644 index 00000000..eb902afd --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossFastWarpAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossSwordApproachRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossFastWarpAttack : public SiteBossSwordApproachRoot { + SEAD_RTTI_OVERRIDE(PriestBossFastWarpAttack, SiteBossSwordApproachRoot) +public: + explicit PriestBossFastWarpAttack(const InitArg& arg); + ~PriestBossFastWarpAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossFormation.cpp b/src/Game/AI/AI/aiPriestBossFormation.cpp new file mode 100644 index 00000000..5ff84da1 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossFormation.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossFormation.h" + +namespace uking::ai { + +PriestBossFormation::PriestBossFormation(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossFormation::~PriestBossFormation() = default; + +bool PriestBossFormation::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossFormation::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossFormation::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossFormation::loadParams_() { + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossFormation.h b/src/Game/AI/AI/aiPriestBossFormation.h new file mode 100644 index 00000000..f6f62ffb --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossFormation.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossFormation : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossFormation, ksys::act::ai::Ai) +public: + explicit PriestBossFormation(const InitArg& arg); + ~PriestBossFormation() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantDeadSelector.cpp b/src/Game/AI/AI/aiPriestBossGiantDeadSelector.cpp new file mode 100644 index 00000000..66a72f2d --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantDeadSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossGiantDeadSelector.h" + +namespace uking::ai { + +PriestBossGiantDeadSelector::PriestBossGiantDeadSelector(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossGiantDeadSelector::~PriestBossGiantDeadSelector() = default; + +bool PriestBossGiantDeadSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossGiantDeadSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossGiantDeadSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossGiantDeadSelector::loadParams_() { + getAITreeVariable(&mPriestBossDownSideASPlaying_a, "PriestBossDownSideASPlaying"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantDeadSelector.h b/src/Game/AI/AI/aiPriestBossGiantDeadSelector.h new file mode 100644 index 00000000..bb681895 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantDeadSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantDeadSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossGiantDeadSelector, ksys::act::ai::Ai) +public: + explicit PriestBossGiantDeadSelector(const InitArg& arg); + ~PriestBossGiantDeadSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mPriestBossDownSideASPlaying_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantDownSeq.cpp b/src/Game/AI/AI/aiPriestBossGiantDownSeq.cpp new file mode 100644 index 00000000..11f2606a --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantDownSeq.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiPriestBossGiantDownSeq.h" + +namespace uking::ai { + +PriestBossGiantDownSeq::PriestBossGiantDownSeq(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossGiantDownSeq::~PriestBossGiantDownSeq() = default; + +bool PriestBossGiantDownSeq::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossGiantDownSeq::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossGiantDownSeq::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossGiantDownSeq::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mRecoverIfAlreadyDown_s, "RecoverIfAlreadyDown"); + getStaticParam(&mIsUseRecover_s, "IsUseRecover"); + getStaticParam(&mHitGroundASName_s, "HitGroundASName"); + getAITreeVariable(&mKeepDistFromGround_a, "KeepDistFromGround"); + getAITreeVariable(&mIsActive_a, "IsActive"); + getAITreeVariable(&mIsArrivedAtDestination_a, "IsArrivedAtDestination"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantDownSeq.h b/src/Game/AI/AI/aiPriestBossGiantDownSeq.h new file mode 100644 index 00000000..1db23701 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantDownSeq.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantDownSeq : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossGiantDownSeq, PriestBossMode) +public: + explicit PriestBossGiantDownSeq(const InitArg& arg); + ~PriestBossGiantDownSeq() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const bool* mRecoverIfAlreadyDown_s{}; + // static_param at offset 0x48 + const bool* mIsUseRecover_s{}; + // static_param at offset 0x50 + sead::SafeString mHitGroundASName_s{}; + // aitree_variable at offset 0x60 + float* mKeepDistFromGround_a{}; + // aitree_variable at offset 0x68 + bool* mIsActive_a{}; + // aitree_variable at offset 0x70 + bool* mIsArrivedAtDestination_a{}; + // aitree_variable at offset 0x78 + sead::Vector3f* mDestinationPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.cpp b/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.cpp new file mode 100644 index 00000000..6cbf0ec1 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiPriestBossGiantEnemyRoot.h" + +namespace uking::ai { + +PriestBossGiantEnemyRoot::PriestBossGiantEnemyRoot(const InitArg& arg) + : PriestBossActorEnemyRoot(arg) {} + +PriestBossGiantEnemyRoot::~PriestBossGiantEnemyRoot() = default; + +bool PriestBossGiantEnemyRoot::init_(sead::Heap* heap) { + return PriestBossActorEnemyRoot::init_(heap); +} + +void PriestBossGiantEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorEnemyRoot::enter_(params); +} + +void PriestBossGiantEnemyRoot::leave_() { + PriestBossActorEnemyRoot::leave_(); +} + +void PriestBossGiantEnemyRoot::loadParams_() { + PriestBossActorEnemyRoot::loadParams_(); + getStaticParam(&mInvalidateIronBallDamageFrame_s, "InvalidateIronBallDamageFrame"); + getAITreeVariable(&mPriestBossDownSideASPlaying_a, "PriestBossDownSideASPlaying"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.h b/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.h new file mode 100644 index 00000000..1abd7649 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantEnemyRoot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantEnemyRoot : public PriestBossActorEnemyRoot { + SEAD_RTTI_OVERRIDE(PriestBossGiantEnemyRoot, PriestBossActorEnemyRoot) +public: + explicit PriestBossGiantEnemyRoot(const InitArg& arg); + ~PriestBossGiantEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x230 + const int* mInvalidateIronBallDamageFrame_s{}; + // aitree_variable at offset 0x238 + bool* mPriestBossDownSideASPlaying_a{}; + // aitree_variable at offset 0x240 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantReaction.cpp b/src/Game/AI/AI/aiPriestBossGiantReaction.cpp new file mode 100644 index 00000000..27db2603 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossGiantReaction.h" + +namespace uking::ai { + +PriestBossGiantReaction::PriestBossGiantReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +PriestBossGiantReaction::~PriestBossGiantReaction() = default; + +bool PriestBossGiantReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void PriestBossGiantReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void PriestBossGiantReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void PriestBossGiantReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getAITreeVariable(&mPriestBossUrbosasFuryEShock_a, "PriestBossUrbosasFuryEShock"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantReaction.h b/src/Game/AI/AI/aiPriestBossGiantReaction.h new file mode 100644 index 00000000..80974518 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantReaction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(PriestBossGiantReaction, EnemyDefaultReaction) +public: + explicit PriestBossGiantReaction(const InitArg& arg); + ~PriestBossGiantReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x68 + bool* mPriestBossUrbosasFuryEShock_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.cpp b/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.cpp new file mode 100644 index 00000000..b177ff10 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiPriestBossGiantStageRotRoot.h" + +namespace uking::ai { + +PriestBossGiantStageRotRoot::PriestBossGiantStageRotRoot(const InitArg& arg) + : PriestBossMode(arg) {} + +PriestBossGiantStageRotRoot::~PriestBossGiantStageRotRoot() = default; + +bool PriestBossGiantStageRotRoot::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossGiantStageRotRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossGiantStageRotRoot::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossGiantStageRotRoot::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mCentralAngle_s, "CentralAngle"); + getStaticParam(&mPercentRadiusHeight_s, "PercentRadiusHeight"); + getStaticParam(&mIronBallHeightOffset_s, "IronBallHeightOffset"); + getStaticParam(&mArcPercent_s, "ArcPercent"); + getStaticParam(&mZOffset_s, "ZOffset"); + getStaticParam(&mZOffsetIndex_s, "ZOffsetIndex"); + getStaticParam(&mHoldBallsCounterLength_s, "HoldBallsCounterLength"); + getStaticParam(&mBallsReleaseIntervalFrames_s, "BallsReleaseIntervalFrames"); + getAITreeVariable(&mKeepDistFromGround_a, "KeepDistFromGround"); + getAITreeVariable(&mIsActive_a, "IsActive"); + getAITreeVariable(&mFacePos_a, "FacePos"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.h b/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.h new file mode 100644 index 00000000..c86d43a7 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantStageRotRoot.h @@ -0,0 +1,48 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantStageRotRoot : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossGiantStageRotRoot, PriestBossMode) +public: + explicit PriestBossGiantStageRotRoot(const InitArg& arg); + ~PriestBossGiantStageRotRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mCentralAngle_s{}; + // static_param at offset 0x48 + const float* mPercentRadiusHeight_s{}; + // static_param at offset 0x50 + const float* mIronBallHeightOffset_s{}; + // static_param at offset 0x58 + const float* mArcPercent_s{}; + // static_param at offset 0x60 + const float* mZOffset_s{}; + // static_param at offset 0x68 + const float* mZOffsetIndex_s{}; + // static_param at offset 0x70 + const float* mHoldBallsCounterLength_s{}; + // static_param at offset 0x78 + const float* mBallsReleaseIntervalFrames_s{}; + // aitree_variable at offset 0x80 + float* mKeepDistFromGround_a{}; + // aitree_variable at offset 0x88 + bool* mIsActive_a{}; + // aitree_variable at offset 0x90 + sead::Vector3f* mFacePos_a{}; + // aitree_variable at offset 0x98 + sead::Vector3f* mDestinationPos_a{}; + // aitree_variable at offset 0xa0 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantStageRotate.cpp b/src/Game/AI/AI/aiPriestBossGiantStageRotate.cpp new file mode 100644 index 00000000..39b82e7b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantStageRotate.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossGiantStageRotate.h" + +namespace uking::ai { + +PriestBossGiantStageRotate::PriestBossGiantStageRotate(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossGiantStageRotate::~PriestBossGiantStageRotate() = default; + +bool PriestBossGiantStageRotate::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossGiantStageRotate::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossGiantStageRotate::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossGiantStageRotate::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mSendCommand_s, "SendCommand"); + getStaticParam(&mSendOnThrowASEvent_s, "SendOnThrowASEvent"); + getStaticParam(&mIsUseStartAction_s, "IsUseStartAction"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossGiantStageRotate.h b/src/Game/AI/AI/aiPriestBossGiantStageRotate.h new file mode 100644 index 00000000..623f63d9 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossGiantStageRotate.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossGiantStageRotate : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossGiantStageRotate, PriestBossMode) +public: + explicit PriestBossGiantStageRotate(const InitArg& arg); + ~PriestBossGiantStageRotate() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mSendCommand_s{}; + // static_param at offset 0x48 + const bool* mSendOnThrowASEvent_s{}; + // static_param at offset 0x50 + const bool* mIsUseStartAction_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIAIAttack.cpp b/src/Game/AI/AI/aiPriestBossIAIAttack.cpp new file mode 100644 index 00000000..7fc19f15 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIAIAttack.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossIAIAttack.h" + +namespace uking::ai { + +PriestBossIAIAttack::PriestBossIAIAttack(const InitArg& arg) : IAIAttack(arg) {} + +PriestBossIAIAttack::~PriestBossIAIAttack() = default; + +bool PriestBossIAIAttack::init_(sead::Heap* heap) { + return IAIAttack::init_(heap); +} + +void PriestBossIAIAttack::enter_(ksys::act::ai::InlineParamPack* params) { + IAIAttack::enter_(params); +} + +void PriestBossIAIAttack::leave_() { + IAIAttack::leave_(); +} + +void PriestBossIAIAttack::loadParams_() { + IAIAttack::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIAIAttack.h b/src/Game/AI/AI/aiPriestBossIAIAttack.h new file mode 100644 index 00000000..0be2deed --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIAIAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiIAIAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossIAIAttack : public IAIAttack { + SEAD_RTTI_OVERRIDE(PriestBossIAIAttack, IAIAttack) +public: + explicit PriestBossIAIAttack(const InitArg& arg); + ~PriestBossIAIAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBall.cpp b/src/Game/AI/AI/aiPriestBossIronBall.cpp new file mode 100644 index 00000000..388ed69e --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBall.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiPriestBossIronBall.h" + +namespace uking::ai { + +PriestBossIronBall::PriestBossIronBall(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossIronBall::~PriestBossIronBall() = default; + +bool PriestBossIronBall::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossIronBall::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossIronBall::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossIronBall::loadParams_() { + getStaticParam(&mIronBallWaitThunderTime_s, "IronBallWaitThunderTime"); + getStaticParam(&mChangeEndAnime_s, "ChangeEndAnime"); + getStaticParam(&mIronBallOffsetY_s, "IronBallOffsetY"); + getStaticParam(&mIronBallRadius_s, "IronBallRadius"); + getStaticParam(&mIronBallAngle_s, "IronBallAngle"); + getStaticParam(&mIronSummonLeftBoneName_s, "IronSummonLeftBoneName"); + getStaticParam(&mIronSummonRightBoneName_s, "IronSummonRightBoneName"); + getStaticParam(&mIronBallAngleOffset_s, "IronBallAngleOffset"); + getStaticParam(&mIsAfterAttack_s, "IsAfterAttack"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBall.h b/src/Game/AI/AI/aiPriestBossIronBall.h new file mode 100644 index 00000000..a87b1c7b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBall.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossIronBall : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossIronBall, ksys::act::ai::Ai) +public: + explicit PriestBossIronBall(const InitArg& arg); + ~PriestBossIronBall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIronBallWaitThunderTime_s{}; + // static_param at offset 0x40 + const int* mChangeEndAnime_s{}; + // static_param at offset 0x48 + const float* mIronBallOffsetY_s{}; + // static_param at offset 0x50 + const float* mIronBallRadius_s{}; + // static_param at offset 0x58 + const float* mIronBallAngle_s{}; + // static_param at offset 0x60 + const float* mIronBallAngleOffset_s{}; + // static_param at offset 0x68 + const bool* mIsAfterAttack_s{}; + // static_param at offset 0x70 + sead::SafeString mIronSummonLeftBoneName_s{}; + // static_param at offset 0x80 + sead::SafeString mIronSummonRightBoneName_s{}; + // aitree_variable at offset 0x90 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBallRoot.cpp b/src/Game/AI/AI/aiPriestBossIronBallRoot.cpp new file mode 100644 index 00000000..982be782 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBallRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiPriestBossIronBallRoot.h" + +namespace uking::ai { + +PriestBossIronBallRoot::PriestBossIronBallRoot(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossIronBallRoot::~PriestBossIronBallRoot() = default; + +bool PriestBossIronBallRoot::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossIronBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossIronBallRoot::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossIronBallRoot::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAttackPowerForPlayer_s, "AttackPowerForPlayer"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mMagneLightningTime_s, "MagneLightningTime"); + getMapUnitParam(&mActorName_m, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBallRoot.h b/src/Game/AI/AI/aiPriestBossIronBallRoot.h new file mode 100644 index 00000000..749a28e8 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBallRoot.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossIronBallRoot : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossIronBallRoot, PriestBossMode) +public: + explicit PriestBossIronBallRoot(const InitArg& arg); + ~PriestBossIronBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mAttackPower_s{}; + // static_param at offset 0x48 + const int* mAttackPowerForPlayer_s{}; + // static_param at offset 0x50 + const int* mAtMinDamage_s{}; + // static_param at offset 0x58 + const int* mMagneLightningTime_s{}; + // map_unit_param at offset 0x60 + sead::SafeString mActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBallStageRotate.cpp b/src/Game/AI/AI/aiPriestBossIronBallStageRotate.cpp new file mode 100644 index 00000000..c7083b74 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBallStageRotate.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiPriestBossIronBallStageRotate.h" + +namespace uking::ai { + +PriestBossIronBallStageRotate::PriestBossIronBallStageRotate(const InitArg& arg) + : PriestBossIronBall(arg) {} + +PriestBossIronBallStageRotate::~PriestBossIronBallStageRotate() = default; + +bool PriestBossIronBallStageRotate::init_(sead::Heap* heap) { + return PriestBossIronBall::init_(heap); +} + +void PriestBossIronBallStageRotate::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossIronBall::enter_(params); +} + +void PriestBossIronBallStageRotate::leave_() { + PriestBossIronBall::leave_(); +} + +void PriestBossIronBallStageRotate::loadParams_() { + PriestBossIronBall::loadParams_(); + getStaticParam(&mIronBallSummonRadius_s, "IronBallSummonRadius"); + getStaticParam(&mIronBallSummonArchAngle_s, "IronBallSummonArchAngle"); + getStaticParam(&mIronBallSummonOffsetY_s, "IronBallSummonOffsetY"); + getAITreeVariable(&mIsActive_a, "IsActive"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossIronBallStageRotate.h b/src/Game/AI/AI/aiPriestBossIronBallStageRotate.h new file mode 100644 index 00000000..2135c412 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossIronBallStageRotate.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossIronBall.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossIronBallStageRotate : public PriestBossIronBall { + SEAD_RTTI_OVERRIDE(PriestBossIronBallStageRotate, PriestBossIronBall) +public: + explicit PriestBossIronBallStageRotate(const InitArg& arg); + ~PriestBossIronBallStageRotate() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x6c0 + const float* mIronBallSummonRadius_s{}; + // static_param at offset 0x6c8 + const float* mIronBallSummonArchAngle_s{}; + // static_param at offset 0x6d0 + const float* mIronBallSummonOffsetY_s{}; + // aitree_variable at offset 0x6d8 + bool* mIsActive_a{}; + // aitree_variable at offset 0x6e0 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationAppear.cpp b/src/Game/AI/AI/aiPriestBossLineFormationAppear.cpp new file mode 100644 index 00000000..9a68c470 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationAppear.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossLineFormationAppear.h" + +namespace uking::ai { + +PriestBossLineFormationAppear::PriestBossLineFormationAppear(const InitArg& arg) + : SeqTwoAction(arg) {} + +PriestBossLineFormationAppear::~PriestBossLineFormationAppear() = default; + +bool PriestBossLineFormationAppear::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void PriestBossLineFormationAppear::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void PriestBossLineFormationAppear::leave_() { + SeqTwoAction::leave_(); +} + +void PriestBossLineFormationAppear::loadParams_() { + SeqTwoAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationAppear.h b/src/Game/AI/AI/aiPriestBossLineFormationAppear.h new file mode 100644 index 00000000..76f54350 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationAppear.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossLineFormationAppear : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(PriestBossLineFormationAppear, SeqTwoAction) +public: + explicit PriestBossLineFormationAppear(const InitArg& arg); + ~PriestBossLineFormationAppear() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationFall.cpp b/src/Game/AI/AI/aiPriestBossLineFormationFall.cpp new file mode 100644 index 00000000..52d3634c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationFall.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossLineFormationFall.h" + +namespace uking::ai { + +PriestBossLineFormationFall::PriestBossLineFormationFall(const InitArg& arg) + : PriestBossFormation(arg) {} + +PriestBossLineFormationFall::~PriestBossLineFormationFall() = default; + +bool PriestBossLineFormationFall::init_(sead::Heap* heap) { + return PriestBossFormation::init_(heap); +} + +void PriestBossLineFormationFall::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossFormation::enter_(params); +} + +void PriestBossLineFormationFall::leave_() { + PriestBossFormation::leave_(); +} + +void PriestBossLineFormationFall::loadParams_() { + PriestBossFormation::loadParams_(); + getStaticParam(&mWarpHightOffset_s, "WarpHightOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationFall.h b/src/Game/AI/AI/aiPriestBossLineFormationFall.h new file mode 100644 index 00000000..bd7cf2ad --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationFall.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossFormation.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossLineFormationFall : public PriestBossFormation { + SEAD_RTTI_OVERRIDE(PriestBossLineFormationFall, PriestBossFormation) +public: + explicit PriestBossLineFormationFall(const InitArg& arg); + ~PriestBossLineFormationFall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mWarpHightOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationRush.cpp b/src/Game/AI/AI/aiPriestBossLineFormationRush.cpp new file mode 100644 index 00000000..f11aee06 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationRush.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossLineFormationRush.h" + +namespace uking::ai { + +PriestBossLineFormationRush::PriestBossLineFormationRush(const InitArg& arg) + : PriestBossFormation(arg) {} + +PriestBossLineFormationRush::~PriestBossLineFormationRush() = default; + +bool PriestBossLineFormationRush::init_(sead::Heap* heap) { + return PriestBossFormation::init_(heap); +} + +void PriestBossLineFormationRush::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossFormation::enter_(params); +} + +void PriestBossLineFormationRush::leave_() { + PriestBossFormation::leave_(); +} + +void PriestBossLineFormationRush::loadParams_() { + PriestBossFormation::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossLineFormationRush.h b/src/Game/AI/AI/aiPriestBossLineFormationRush.h new file mode 100644 index 00000000..7b5ffd10 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossLineFormationRush.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossFormation.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossLineFormationRush : public PriestBossFormation { + SEAD_RTTI_OVERRIDE(PriestBossLineFormationRush, PriestBossFormation) +public: + explicit PriestBossLineFormationRush(const InitArg& arg); + ~PriestBossLineFormationRush() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMakeClone.cpp b/src/Game/AI/AI/aiPriestBossMakeClone.cpp new file mode 100644 index 00000000..49cb395a --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMakeClone.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossMakeClone.h" + +namespace uking::ai { + +PriestBossMakeClone::PriestBossMakeClone(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossMakeClone::~PriestBossMakeClone() = default; + +bool PriestBossMakeClone::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossMakeClone::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossMakeClone::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossMakeClone::loadParams_() { + getStaticParam(&mRespawnFrame_s, "RespawnFrame"); + getStaticParam(&mBackStepDistance_s, "BackStepDistance"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMakeClone.h b/src/Game/AI/AI/aiPriestBossMakeClone.h new file mode 100644 index 00000000..3598cd19 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMakeClone.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossMakeClone : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossMakeClone, ksys::act::ai::Ai) +public: + explicit PriestBossMakeClone(const InitArg& arg); + ~PriestBossMakeClone() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRespawnFrame_s{}; + // static_param at offset 0x40 + const float* mBackStepDistance_s{}; + // aitree_variable at offset 0x48 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMeta.cpp b/src/Game/AI/AI/aiPriestBossMeta.cpp new file mode 100644 index 00000000..ec825f9f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMeta.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossMeta.h" + +namespace uking::ai { + +PriestBossMeta::PriestBossMeta(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossMeta::~PriestBossMeta() = default; + +bool PriestBossMeta::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossMeta::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossMeta::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossMeta::loadParams_() { + getAITreeVariable(&mMetaAILife_a, "MetaAILife"); + getAITreeVariable(&mMetaAIMaxLife_a, "MetaAIMaxLife"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMeta.h b/src/Game/AI/AI/aiPriestBossMeta.h new file mode 100644 index 00000000..99517769 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMeta.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossMeta : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossMeta, ksys::act::ai::Ai) +public: + explicit PriestBossMeta(const InitArg& arg); + ~PriestBossMeta() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + int* mMetaAILife_a{}; + // aitree_variable at offset 0x40 + int* mMetaAIMaxLife_a{}; + // aitree_variable at offset 0x48 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMetaAIRoot.cpp b/src/Game/AI/AI/aiPriestBossMetaAIRoot.cpp new file mode 100644 index 00000000..da217a16 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMetaAIRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiPriestBossMetaAIRoot.h" + +namespace uking::ai { + +PriestBossMetaAIRoot::PriestBossMetaAIRoot(const InitArg& arg) : PriestBossMeta(arg) {} + +PriestBossMetaAIRoot::~PriestBossMetaAIRoot() = default; + +bool PriestBossMetaAIRoot::init_(sead::Heap* heap) { + return PriestBossMeta::init_(heap); +} + +void PriestBossMetaAIRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMeta::enter_(params); +} + +void PriestBossMetaAIRoot::leave_() { + PriestBossMeta::leave_(); +} + +void PriestBossMetaAIRoot::loadParams_() { + PriestBossMeta::loadParams_(); + getStaticParam(&mLife_s, "Life"); + getStaticParam(&mPlayerRecoverFromFallFrames_s, "PlayerRecoverFromFallFrames"); + getStaticParam(&mBowActorName_s, "BowActorName"); + getStaticParam(&mArrowActorName_s, "ArrowActorName"); + getStaticParam(&mWeaponActorName_s, "WeaponActorName"); + getStaticParam(&mThunderActorName_s, "ThunderActorName"); + getMapUnitParam(&mPriestBossStartPhase_m, "PriestBossStartPhase"); + getMapUnitParam(&mUniqueNameMessageLabel_m, "UniqueNameMessageLabel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMetaAIRoot.h b/src/Game/AI/AI/aiPriestBossMetaAIRoot.h new file mode 100644 index 00000000..5b5e9ba6 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMetaAIRoot.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMeta.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossMetaAIRoot : public PriestBossMeta { + SEAD_RTTI_OVERRIDE(PriestBossMetaAIRoot, PriestBossMeta) +public: + explicit PriestBossMetaAIRoot(const InitArg& arg); + ~PriestBossMetaAIRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mLife_s{}; + // static_param at offset 0x58 + const float* mPlayerRecoverFromFallFrames_s{}; + // static_param at offset 0x60 + sead::SafeString mBowActorName_s{}; + // static_param at offset 0x70 + sead::SafeString mArrowActorName_s{}; + // static_param at offset 0x80 + sead::SafeString mWeaponActorName_s{}; + // static_param at offset 0x90 + sead::SafeString mThunderActorName_s{}; + // map_unit_param at offset 0xa0 + const int* mPriestBossStartPhase_m{}; + // map_unit_param at offset 0xa8 + sead::SafeString mUniqueNameMessageLabel_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMode.cpp b/src/Game/AI/AI/aiPriestBossMode.cpp new file mode 100644 index 00000000..d5c914e5 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMode.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossMode.h" + +namespace uking::ai { + +PriestBossMode::PriestBossMode(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossMode::~PriestBossMode() = default; + +bool PriestBossMode::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossMode::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossMode::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossMode::loadParams_() { + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossMode.h b/src/Game/AI/AI/aiPriestBossMode.h new file mode 100644 index 00000000..ec4c89a8 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossMode.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossMode : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossMode, ksys::act::ai::Ai) +public: + explicit PriestBossMode(const InitArg& arg); + ~PriestBossMode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalMoveSelector.cpp b/src/Game/AI/AI/aiPriestBossNormalMoveSelector.cpp new file mode 100644 index 00000000..9e5c6826 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalMoveSelector.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossNormalMoveSelector.h" + +namespace uking::ai { + +PriestBossNormalMoveSelector::PriestBossNormalMoveSelector(const InitArg& arg) + : PriestBossMode(arg) {} + +PriestBossNormalMoveSelector::~PriestBossNormalMoveSelector() = default; + +bool PriestBossNormalMoveSelector::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossNormalMoveSelector::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossNormalMoveSelector::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossNormalMoveSelector::loadParams_() { + PriestBossMode::loadParams_(); + getDynamicParam(&mMoveTargetPos_d, "MoveTargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalMoveSelector.h b/src/Game/AI/AI/aiPriestBossNormalMoveSelector.h new file mode 100644 index 00000000..35f186b1 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalMoveSelector.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossNormalMoveSelector : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossNormalMoveSelector, PriestBossMode) +public: + explicit PriestBossNormalMoveSelector(const InitArg& arg); + ~PriestBossNormalMoveSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x40 + sead::Vector3f* mMoveTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalQuickRecover.cpp b/src/Game/AI/AI/aiPriestBossNormalQuickRecover.cpp new file mode 100644 index 00000000..ec94684c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalQuickRecover.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossNormalQuickRecover.h" + +namespace uking::ai { + +PriestBossNormalQuickRecover::PriestBossNormalQuickRecover(const InitArg& arg) + : PriestBossMode(arg) {} + +PriestBossNormalQuickRecover::~PriestBossNormalQuickRecover() = default; + +bool PriestBossNormalQuickRecover::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossNormalQuickRecover::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossNormalQuickRecover::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossNormalQuickRecover::loadParams_() { + PriestBossMode::loadParams_(); + getDynamicParam(&mIsFromRagdoll_d, "IsFromRagdoll"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalQuickRecover.h b/src/Game/AI/AI/aiPriestBossNormalQuickRecover.h new file mode 100644 index 00000000..c80d74d5 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalQuickRecover.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossNormalQuickRecover : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossNormalQuickRecover, PriestBossMode) +public: + explicit PriestBossNormalQuickRecover(const InitArg& arg); + ~PriestBossNormalQuickRecover() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x40 + bool* mIsFromRagdoll_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalReaction.cpp b/src/Game/AI/AI/aiPriestBossNormalReaction.cpp new file mode 100644 index 00000000..b0290bec --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalReaction.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiPriestBossNormalReaction.h" + +namespace uking::ai { + +PriestBossNormalReaction::PriestBossNormalReaction(const InitArg& arg) + : EnemyDefaultReaction(arg) {} + +PriestBossNormalReaction::~PriestBossNormalReaction() = default; + +bool PriestBossNormalReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void PriestBossNormalReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void PriestBossNormalReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void PriestBossNormalReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getStaticParam(&mIsUseQuickRecover_s, "IsUseQuickRecover"); + getAITreeVariable(&mPriestBossUrbosasFuryEShock_a, "PriestBossUrbosasFuryEShock"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossNormalReaction.h b/src/Game/AI/AI/aiPriestBossNormalReaction.h new file mode 100644 index 00000000..0ac42d69 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossNormalReaction.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossNormalReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(PriestBossNormalReaction, EnemyDefaultReaction) +public: + explicit PriestBossNormalReaction(const InitArg& arg); + ~PriestBossNormalReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const bool* mIsUseQuickRecover_s{}; + // aitree_variable at offset 0x70 + bool* mPriestBossUrbosasFuryEShock_a{}; + // aitree_variable at offset 0x78 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhase.cpp b/src/Game/AI/AI/aiPriestBossPhase.cpp new file mode 100644 index 00000000..821867b4 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhase.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossPhase.h" + +namespace uking::ai { + +PriestBossPhase::PriestBossPhase(const InitArg& arg) : PriestBossMeta(arg) {} + +PriestBossPhase::~PriestBossPhase() = default; + +bool PriestBossPhase::init_(sead::Heap* heap) { + return PriestBossMeta::init_(heap); +} + +void PriestBossPhase::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMeta::enter_(params); +} + +void PriestBossPhase::leave_() { + PriestBossMeta::leave_(); +} + +void PriestBossPhase::loadParams_() { + PriestBossMeta::loadParams_(); + getStaticParam(&mPercentLifeTransition_s, "PercentLifeTransition"); + getStaticParam(&mPercentLifePrevious_s, "PercentLifePrevious"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhase.h b/src/Game/AI/AI/aiPriestBossPhase.h new file mode 100644 index 00000000..c074703b --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhase.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMeta.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhase : public PriestBossMeta { + SEAD_RTTI_OVERRIDE(PriestBossPhase, PriestBossMeta) +public: + explicit PriestBossPhase(const InitArg& arg); + ~PriestBossPhase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const float* mPercentLifeTransition_s{}; + // static_param at offset 0x58 + const float* mPercentLifePrevious_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFinish.cpp b/src/Game/AI/AI/aiPriestBossPhaseFinish.cpp new file mode 100644 index 00000000..ad25aace --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFinish.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossPhaseFinish.h" + +namespace uking::ai { + +PriestBossPhaseFinish::PriestBossPhaseFinish(const InitArg& arg) : PriestBossPhase(arg) {} + +PriestBossPhaseFinish::~PriestBossPhaseFinish() = default; + +bool PriestBossPhaseFinish::init_(sead::Heap* heap) { + return PriestBossPhase::init_(heap); +} + +void PriestBossPhaseFinish::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossPhase::enter_(params); +} + +void PriestBossPhaseFinish::leave_() { + PriestBossPhase::leave_(); +} + +void PriestBossPhaseFinish::loadParams_() { + PriestBossPhase::loadParams_(); + getStaticParam(&mStartDemoDelayFrames_s, "StartDemoDelayFrames"); + getMapUnitParam(&mPriestBossStartPhase_m, "PriestBossStartPhase"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFinish.h b/src/Game/AI/AI/aiPriestBossPhaseFinish.h new file mode 100644 index 00000000..dad951f1 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFinish.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossPhase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseFinish : public PriestBossPhase { + SEAD_RTTI_OVERRIDE(PriestBossPhaseFinish, PriestBossPhase) +public: + explicit PriestBossPhaseFinish(const InitArg& arg); + ~PriestBossPhaseFinish() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const float* mStartDemoDelayFrames_s{}; + // map_unit_param at offset 0x88 + const int* mPriestBossStartPhase_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFirst.cpp b/src/Game/AI/AI/aiPriestBossPhaseFirst.cpp new file mode 100644 index 00000000..feff3122 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFirst.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiPriestBossPhaseFirst.h" + +namespace uking::ai { + +PriestBossPhaseFirst::PriestBossPhaseFirst(const InitArg& arg) : PriestBossPhase(arg) {} + +PriestBossPhaseFirst::~PriestBossPhaseFirst() = default; + +bool PriestBossPhaseFirst::init_(sead::Heap* heap) { + return PriestBossPhase::init_(heap); +} + +void PriestBossPhaseFirst::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossPhase::enter_(params); +} + +void PriestBossPhaseFirst::leave_() { + PriestBossPhase::leave_(); +} + +void PriestBossPhaseFirst::loadParams_() { + PriestBossPhase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFirst.h b/src/Game/AI/AI/aiPriestBossPhaseFirst.h new file mode 100644 index 00000000..4080e88f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFirst.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossPhase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseFirst : public PriestBossPhase { + SEAD_RTTI_OVERRIDE(PriestBossPhaseFirst, PriestBossPhase) +public: + explicit PriestBossPhaseFirst(const InitArg& arg); + ~PriestBossPhaseFirst() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFourth.cpp b/src/Game/AI/AI/aiPriestBossPhaseFourth.cpp new file mode 100644 index 00000000..d6a33db4 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFourth.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiPriestBossPhaseFourth.h" + +namespace uking::ai { + +PriestBossPhaseFourth::PriestBossPhaseFourth(const InitArg& arg) : PriestBossPhase(arg) {} + +PriestBossPhaseFourth::~PriestBossPhaseFourth() = default; + +bool PriestBossPhaseFourth::init_(sead::Heap* heap) { + return PriestBossPhase::init_(heap); +} + +void PriestBossPhaseFourth::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossPhase::enter_(params); +} + +void PriestBossPhaseFourth::leave_() { + PriestBossPhase::leave_(); +} + +void PriestBossPhaseFourth::loadParams_() { + PriestBossPhase::loadParams_(); + getStaticParam(&mSimAtkMax_s, "SimAtkMax"); + getStaticParam(&mBowEquipMax_s, "BowEquipMax"); + getStaticParam(&mRespawnSpan_s, "RespawnSpan"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseFourth.h b/src/Game/AI/AI/aiPriestBossPhaseFourth.h new file mode 100644 index 00000000..0830b07e --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseFourth.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossPhase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseFourth : public PriestBossPhase { + SEAD_RTTI_OVERRIDE(PriestBossPhaseFourth, PriestBossPhase) +public: + explicit PriestBossPhaseFourth(const InitArg& arg); + ~PriestBossPhaseFourth() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mSimAtkMax_s{}; + // static_param at offset 0x88 + const int* mBowEquipMax_s{}; + // static_param at offset 0x90 + const float* mRespawnSpan_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseSecond.cpp b/src/Game/AI/AI/aiPriestBossPhaseSecond.cpp new file mode 100644 index 00000000..a03c2999 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseSecond.cpp @@ -0,0 +1,46 @@ +#include "Game/AI/AI/aiPriestBossPhaseSecond.h" + +namespace uking::ai { + +PriestBossPhaseSecond::PriestBossPhaseSecond(const InitArg& arg) : PriestBossPhase(arg) {} + +PriestBossPhaseSecond::~PriestBossPhaseSecond() = default; + +bool PriestBossPhaseSecond::init_(sead::Heap* heap) { + return PriestBossPhase::init_(heap); +} + +void PriestBossPhaseSecond::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossPhase::enter_(params); +} + +void PriestBossPhaseSecond::leave_() { + PriestBossPhase::leave_(); +} + +void PriestBossPhaseSecond::loadParams_() { + PriestBossPhase::loadParams_(); + getStaticParam(&mModeChangeLife_s, "ModeChangeLife"); + getStaticParam(&mSimAtkMax_s, "SimAtkMax"); + getStaticParam(&mBowEquipMax_s, "BowEquipMax"); + getStaticParam(&mSyncAtkMax_s, "SyncAtkMax"); + getStaticParam(&mModeChangeBlockTime_s, "ModeChangeBlockTime"); + getStaticParam(&mRespawnSpan_s, "RespawnSpan"); + getStaticParam(&mRespawnBaseSpace_s, "RespawnBaseSpace"); + getStaticParam(&mRespawnBaseMoveTime_s, "RespawnBaseMoveTime"); + getStaticParam(&mRespawnBaseInterval_s, "RespawnBaseInterval"); + getStaticParam(&mCircleFormRange_s, "CircleFormRange"); + getStaticParam(&mCircleFormRushWait_s, "CircleFormRushWait"); + getStaticParam(&mCircleFormRushInterval_s, "CircleFormRushInterval"); + getStaticParam(&mCircleFormShootWait_s, "CircleFormShootWait"); + getStaticParam(&mCircleFormShootInterval_s, "CircleFormShootInterval"); + getStaticParam(&mLineFormDistFromPlayer_s, "LineFormDistFromPlayer"); + getStaticParam(&mLineFormSpace_s, "LineFormSpace"); + getStaticParam(&mLineFormRushWait_s, "LineFormRushWait"); + getStaticParam(&mLineFormRushInterval_s, "LineFormRushInterval"); + getStaticParam(&mLineFormFallWait_s, "LineFormFallWait"); + getStaticParam(&mLineFormFallInterval_s, "LineFormFallInterval"); + getMapUnitParam(&mPriestBossStartPhase_m, "PriestBossStartPhase"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseSecond.h b/src/Game/AI/AI/aiPriestBossPhaseSecond.h new file mode 100644 index 00000000..8292dc98 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseSecond.h @@ -0,0 +1,64 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossPhase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseSecond : public PriestBossPhase { + SEAD_RTTI_OVERRIDE(PriestBossPhaseSecond, PriestBossPhase) +public: + explicit PriestBossPhaseSecond(const InitArg& arg); + ~PriestBossPhaseSecond() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mModeChangeLife_s{}; + // static_param at offset 0x88 + const int* mSimAtkMax_s{}; + // static_param at offset 0x90 + const int* mBowEquipMax_s{}; + // static_param at offset 0x98 + const int* mSyncAtkMax_s{}; + // static_param at offset 0xa0 + const float* mModeChangeBlockTime_s{}; + // static_param at offset 0xa8 + const float* mRespawnSpan_s{}; + // static_param at offset 0xb0 + const float* mRespawnBaseSpace_s{}; + // static_param at offset 0xb8 + const float* mRespawnBaseMoveTime_s{}; + // static_param at offset 0xc0 + const float* mRespawnBaseInterval_s{}; + // static_param at offset 0xc8 + const float* mCircleFormRange_s{}; + // static_param at offset 0xd0 + const float* mCircleFormRushWait_s{}; + // static_param at offset 0xd8 + const float* mCircleFormRushInterval_s{}; + // static_param at offset 0xe0 + const float* mCircleFormShootWait_s{}; + // static_param at offset 0xe8 + const float* mCircleFormShootInterval_s{}; + // static_param at offset 0xf0 + const float* mLineFormDistFromPlayer_s{}; + // static_param at offset 0xf8 + const float* mLineFormSpace_s{}; + // static_param at offset 0x100 + const float* mLineFormRushWait_s{}; + // static_param at offset 0x108 + const float* mLineFormRushInterval_s{}; + // static_param at offset 0x110 + const float* mLineFormFallWait_s{}; + // static_param at offset 0x118 + const float* mLineFormFallInterval_s{}; + // map_unit_param at offset 0x120 + const int* mPriestBossStartPhase_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseSelector.cpp b/src/Game/AI/AI/aiPriestBossPhaseSelector.cpp new file mode 100644 index 00000000..249e1e0c --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossPhaseSelector.h" + +namespace uking::ai { + +PriestBossPhaseSelector::PriestBossPhaseSelector(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossPhaseSelector::~PriestBossPhaseSelector() = default; + +bool PriestBossPhaseSelector::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossPhaseSelector::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossPhaseSelector::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossPhaseSelector::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mIsSelectOnlyOnce_s, "IsSelectOnlyOnce"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseSelector.h b/src/Game/AI/AI/aiPriestBossPhaseSelector.h new file mode 100644 index 00000000..39b0a7ef --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseSelector.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseSelector : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossPhaseSelector, PriestBossMode) +public: + explicit PriestBossPhaseSelector(const InitArg& arg); + ~PriestBossPhaseSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const bool* mIsSelectOnlyOnce_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseThird.cpp b/src/Game/AI/AI/aiPriestBossPhaseThird.cpp new file mode 100644 index 00000000..bcada77f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseThird.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossPhaseThird.h" + +namespace uking::ai { + +PriestBossPhaseThird::PriestBossPhaseThird(const InitArg& arg) : PriestBossPhase(arg) {} + +PriestBossPhaseThird::~PriestBossPhaseThird() = default; + +bool PriestBossPhaseThird::init_(sead::Heap* heap) { + return PriestBossPhase::init_(heap); +} + +void PriestBossPhaseThird::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossPhase::enter_(params); +} + +void PriestBossPhaseThird::leave_() { + PriestBossPhase::leave_(); +} + +void PriestBossPhaseThird::loadParams_() { + PriestBossPhase::loadParams_(); + getStaticParam(&mBreakIronBallCount_s, "BreakIronBallCount"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossPhaseThird.h b/src/Game/AI/AI/aiPriestBossPhaseThird.h new file mode 100644 index 00000000..c6d82e85 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossPhaseThird.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossPhase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossPhaseThird : public PriestBossPhase { + SEAD_RTTI_OVERRIDE(PriestBossPhaseThird, PriestBossPhase) +public: + explicit PriestBossPhaseThird(const InitArg& arg); + ~PriestBossPhaseThird() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const int* mBreakIronBallCount_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.cpp b/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.cpp new file mode 100644 index 00000000..eb28c69f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h" + +namespace uking::ai { + +PriestBossShadowCloneEnemyRoot::PriestBossShadowCloneEnemyRoot(const InitArg& arg) + : PriestBossActorEnemyRoot(arg) {} + +PriestBossShadowCloneEnemyRoot::~PriestBossShadowCloneEnemyRoot() = default; + +bool PriestBossShadowCloneEnemyRoot::init_(sead::Heap* heap) { + return PriestBossActorEnemyRoot::init_(heap); +} + +void PriestBossShadowCloneEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossActorEnemyRoot::enter_(params); +} + +void PriestBossShadowCloneEnemyRoot::leave_() { + PriestBossActorEnemyRoot::leave_(); +} + +void PriestBossShadowCloneEnemyRoot::loadParams_() { + PriestBossActorEnemyRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h b/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h new file mode 100644 index 00000000..9425bd8f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossActorEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossShadowCloneEnemyRoot : public PriestBossActorEnemyRoot { + SEAD_RTTI_OVERRIDE(PriestBossShadowCloneEnemyRoot, PriestBossActorEnemyRoot) +public: + explicit PriestBossShadowCloneEnemyRoot(const InitArg& arg); + ~PriestBossShadowCloneEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowCloneThrow.cpp b/src/Game/AI/AI/aiPriestBossShadowCloneThrow.cpp new file mode 100644 index 00000000..3b387ffe --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowCloneThrow.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiPriestBossShadowCloneThrow.h" + +namespace uking::ai { + +PriestBossShadowCloneThrow::PriestBossShadowCloneThrow(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +PriestBossShadowCloneThrow::~PriestBossShadowCloneThrow() = default; + +bool PriestBossShadowCloneThrow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossShadowCloneThrow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossShadowCloneThrow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossShadowCloneThrow::loadParams_() { + getStaticParam(&mShadowCloneOffsetY_s, "ShadowCloneOffsetY"); + getStaticParam(&mShadowCloneRadius_s, "ShadowCloneRadius"); + getStaticParam(&mShadowCloneAngleOffset_s, "ShadowCloneAngleOffset"); + getStaticParam(&mPrepareTimer_s, "PrepareTimer"); + getStaticParam(&mShadowCloneLefeBoneName_s, "ShadowCloneLefeBoneName"); + getStaticParam(&mShadowCloneRightBoneName_s, "ShadowCloneRightBoneName"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowCloneThrow.h b/src/Game/AI/AI/aiPriestBossShadowCloneThrow.h new file mode 100644 index 00000000..eb80f137 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowCloneThrow.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossShadowCloneThrow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossShadowCloneThrow, ksys::act::ai::Ai) +public: + explicit PriestBossShadowCloneThrow(const InitArg& arg); + ~PriestBossShadowCloneThrow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mShadowCloneOffsetY_s{}; + // static_param at offset 0x40 + const float* mShadowCloneRadius_s{}; + // static_param at offset 0x48 + const float* mShadowCloneAngleOffset_s{}; + // static_param at offset 0x50 + const float* mPrepareTimer_s{}; + // static_param at offset 0x58 + sead::SafeString mShadowCloneLefeBoneName_s{}; + // static_param at offset 0x68 + sead::SafeString mShadowCloneRightBoneName_s{}; + // aitree_variable at offset 0x78 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowClonesReaction.cpp b/src/Game/AI/AI/aiPriestBossShadowClonesReaction.cpp new file mode 100644 index 00000000..ba57ec00 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowClonesReaction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossShadowClonesReaction.h" + +namespace uking::ai { + +PriestBossShadowClonesReaction::PriestBossShadowClonesReaction(const InitArg& arg) + : EnemyDefaultReaction(arg) {} + +PriestBossShadowClonesReaction::~PriestBossShadowClonesReaction() = default; + +bool PriestBossShadowClonesReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void PriestBossShadowClonesReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void PriestBossShadowClonesReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void PriestBossShadowClonesReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossShadowClonesReaction.h b/src/Game/AI/AI/aiPriestBossShadowClonesReaction.h new file mode 100644 index 00000000..5ca63510 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossShadowClonesReaction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossShadowClonesReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(PriestBossShadowClonesReaction, EnemyDefaultReaction) +public: + explicit PriestBossShadowClonesReaction(const InitArg& arg); + ~PriestBossShadowClonesReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x68 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossSlowWarpMove.cpp b/src/Game/AI/AI/aiPriestBossSlowWarpMove.cpp new file mode 100644 index 00000000..c5c510c5 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossSlowWarpMove.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiPriestBossSlowWarpMove.h" + +namespace uking::ai { + +PriestBossSlowWarpMove::PriestBossSlowWarpMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossSlowWarpMove::~PriestBossSlowWarpMove() = default; + +bool PriestBossSlowWarpMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossSlowWarpMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossSlowWarpMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossSlowWarpMove::loadParams_() { + getStaticParam(&mAfterImage0AppearFrame_s, "AfterImage0AppearFrame"); + getStaticParam(&mAfterImage1AppearFrame_s, "AfterImage1AppearFrame"); + getStaticParam(&mAppearFrame_s, "AppearFrame"); + getStaticParam(&mTurnFirst_s, "TurnFirst"); + getDynamicParam(&mCurrentFrame_d, "CurrentFrame"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mMoveDstPos_d, "MoveDstPos"); + getDynamicParam(&mAfterImage0Pos_d, "AfterImage0Pos"); + getDynamicParam(&mAfterImage1Pos_d, "AfterImage1Pos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossSlowWarpMove.h b/src/Game/AI/AI/aiPriestBossSlowWarpMove.h new file mode 100644 index 00000000..7f029210 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossSlowWarpMove.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossSlowWarpMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossSlowWarpMove, ksys::act::ai::Ai) +public: + explicit PriestBossSlowWarpMove(const InitArg& arg); + ~PriestBossSlowWarpMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAfterImage0AppearFrame_s{}; + // static_param at offset 0x40 + const float* mAfterImage1AppearFrame_s{}; + // static_param at offset 0x48 + const float* mAppearFrame_s{}; + // static_param at offset 0x50 + const bool* mTurnFirst_s{}; + // dynamic_param at offset 0x58 + float* mCurrentFrame_d{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mMoveDstPos_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mAfterImage0Pos_d{}; + // dynamic_param at offset 0x78 + sead::Vector3f* mAfterImage1Pos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossStageRotationSelector.cpp b/src/Game/AI/AI/aiPriestBossStageRotationSelector.cpp new file mode 100644 index 00000000..6a5f0a48 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossStageRotationSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPriestBossStageRotationSelector.h" + +namespace uking::ai { + +PriestBossStageRotationSelector::PriestBossStageRotationSelector(const InitArg& arg) + : PriestBossMode(arg) {} + +PriestBossStageRotationSelector::~PriestBossStageRotationSelector() = default; + +bool PriestBossStageRotationSelector::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossStageRotationSelector::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossStageRotationSelector::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossStageRotationSelector::loadParams_() { + PriestBossMode::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossStageRotationSelector.h b/src/Game/AI/AI/aiPriestBossStageRotationSelector.h new file mode 100644 index 00000000..2ee7ce2d --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossStageRotationSelector.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossStageRotationSelector : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossStageRotationSelector, PriestBossMode) +public: + explicit PriestBossStageRotationSelector(const InitArg& arg); + ~PriestBossStageRotationSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossSynchroMode.cpp b/src/Game/AI/AI/aiPriestBossSynchroMode.cpp new file mode 100644 index 00000000..b3193478 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossSynchroMode.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiPriestBossSynchroMode.h" + +namespace uking::ai { + +PriestBossSynchroMode::PriestBossSynchroMode(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossSynchroMode::~PriestBossSynchroMode() = default; + +bool PriestBossSynchroMode::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossSynchroMode::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossSynchroMode::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossSynchroMode::loadParams_() { + PriestBossMode::loadParams_(); + getAITreeVariable(&mEquipWeaponBufIndex_a, "EquipWeaponBufIndex"); + getAITreeVariable(&mReturnFromBananaMode_a, "ReturnFromBananaMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossSynchroMode.h b/src/Game/AI/AI/aiPriestBossSynchroMode.h new file mode 100644 index 00000000..18c4990a --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossSynchroMode.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossSynchroMode : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossSynchroMode, PriestBossMode) +public: + explicit PriestBossSynchroMode(const InitArg& arg); + ~PriestBossSynchroMode() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x40 + int* mEquipWeaponBufIndex_a{}; + // aitree_variable at offset 0x48 + bool* mReturnFromBananaMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossWalkAttack.cpp b/src/Game/AI/AI/aiPriestBossWalkAttack.cpp new file mode 100644 index 00000000..0500399f --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossWalkAttack.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiPriestBossWalkAttack.h" + +namespace uking::ai { + +PriestBossWalkAttack::PriestBossWalkAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestBossWalkAttack::~PriestBossWalkAttack() = default; + +bool PriestBossWalkAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestBossWalkAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestBossWalkAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestBossWalkAttack::loadParams_() { + getStaticParam(&mAtDirType_s, "AtDirType"); + getStaticParam(&mAtAttr_s, "AtAttr"); + getStaticParam(&mAtType_s, "AtType"); + getStaticParam(&mAtShieldBreakPower_s, "AtShieldBreakPower"); + getStaticParam(&mAtImpact_s, "AtImpact"); + getStaticParam(&mAtPowerReduce_s, "AtPowerReduce"); + getStaticParam(&mAtPower_s, "AtPower"); + getStaticParam(&mAtDamage_s, "AtDamage"); + getStaticParam(&mGoalDistanceTolerance_s, "GoalDistanceTolerance"); + getStaticParam(&mAngleNeedTurn_s, "AngleNeedTurn"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mPriestBossMetaAIUnit_a, "PriestBossMetaAIUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossWalkAttack.h b/src/Game/AI/AI/aiPriestBossWalkAttack.h new file mode 100644 index 00000000..47d44f94 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossWalkAttack.h @@ -0,0 +1,45 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossWalkAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestBossWalkAttack, ksys::act::ai::Ai) +public: + explicit PriestBossWalkAttack(const InitArg& arg); + ~PriestBossWalkAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAtDirType_s{}; + // static_param at offset 0x40 + const int* mAtAttr_s{}; + // static_param at offset 0x48 + const int* mAtType_s{}; + // static_param at offset 0x50 + const int* mAtShieldBreakPower_s{}; + // static_param at offset 0x58 + const int* mAtImpact_s{}; + // static_param at offset 0x60 + const int* mAtPowerReduce_s{}; + // static_param at offset 0x68 + const int* mAtPower_s{}; + // static_param at offset 0x70 + const int* mAtDamage_s{}; + // static_param at offset 0x78 + const float* mGoalDistanceTolerance_s{}; + // static_param at offset 0x80 + const float* mAngleNeedTurn_s{}; + // dynamic_param at offset 0x88 + sead::Vector3f* mTargetPos_d{}; + // aitree_variable at offset 0x90 + void* mPriestBossMetaAIUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossWarpToSafePos.cpp b/src/Game/AI/AI/aiPriestBossWarpToSafePos.cpp new file mode 100644 index 00000000..27f5e196 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossWarpToSafePos.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiPriestBossWarpToSafePos.h" + +namespace uking::ai { + +PriestBossWarpToSafePos::PriestBossWarpToSafePos(const InitArg& arg) : PriestBossMode(arg) {} + +PriestBossWarpToSafePos::~PriestBossWarpToSafePos() = default; + +bool PriestBossWarpToSafePos::init_(sead::Heap* heap) { + return PriestBossMode::init_(heap); +} + +void PriestBossWarpToSafePos::enter_(ksys::act::ai::InlineParamPack* params) { + PriestBossMode::enter_(params); +} + +void PriestBossWarpToSafePos::leave_() { + PriestBossMode::leave_(); +} + +void PriestBossWarpToSafePos::loadParams_() { + PriestBossMode::loadParams_(); + getStaticParam(&mOffsetY_s, "OffsetY"); + getStaticParam(&mOffsetZ_s, "OffsetZ"); + getAITreeVariable(&mIsActive_a, "IsActive"); + getAITreeVariable(&mDestinationPos_a, "DestinationPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestBossWarpToSafePos.h b/src/Game/AI/AI/aiPriestBossWarpToSafePos.h new file mode 100644 index 00000000..7ccb8088 --- /dev/null +++ b/src/Game/AI/AI/aiPriestBossWarpToSafePos.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiPriestBossMode.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestBossWarpToSafePos : public PriestBossMode { + SEAD_RTTI_OVERRIDE(PriestBossWarpToSafePos, PriestBossMode) +public: + explicit PriestBossWarpToSafePos(const InitArg& arg); + ~PriestBossWarpToSafePos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mOffsetY_s{}; + // static_param at offset 0x48 + const float* mOffsetZ_s{}; + // aitree_variable at offset 0x50 + bool* mIsActive_a{}; + // aitree_variable at offset 0x58 + sead::Vector3f* mDestinationPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestIronBallAttack.cpp b/src/Game/AI/AI/aiPriestIronBallAttack.cpp new file mode 100644 index 00000000..f4c23bd4 --- /dev/null +++ b/src/Game/AI/AI/aiPriestIronBallAttack.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiPriestIronBallAttack.h" + +namespace uking::ai { + +PriestIronBallAttack::PriestIronBallAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PriestIronBallAttack::~PriestIronBallAttack() = default; + +bool PriestIronBallAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PriestIronBallAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PriestIronBallAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PriestIronBallAttack::loadParams_() { + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mShootPitchMin_s, "ShootPitchMin"); + getStaticParam(&mShootPitchMax_s, "ShootPitchMax"); + getStaticParam(&mNoise_s, "Noise"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPriestIronBallAttack.h b/src/Game/AI/AI/aiPriestIronBallAttack.h new file mode 100644 index 00000000..2b726dc9 --- /dev/null +++ b/src/Game/AI/AI/aiPriestIronBallAttack.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PriestIronBallAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PriestIronBallAttack, ksys::act::ai::Ai) +public: + explicit PriestIronBallAttack(const InitArg& arg); + ~PriestIronBallAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSpeed_s{}; + // static_param at offset 0x40 + const float* mShootPitchMin_s{}; + // static_param at offset 0x48 + const float* mShootPitchMax_s{}; + // static_param at offset 0x50 + const float* mNoise_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPullOutTree.cpp b/src/Game/AI/AI/aiPullOutTree.cpp new file mode 100644 index 00000000..0d8dc8b1 --- /dev/null +++ b/src/Game/AI/AI/aiPullOutTree.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiPullOutTree.h" + +namespace uking::ai { + +PullOutTree::PullOutTree(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +PullOutTree::~PullOutTree() = default; + +bool PullOutTree::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void PullOutTree::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void PullOutTree::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void PullOutTree::loadParams_() { + getStaticParam(&mTurnAng_s, "TurnAng"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiPullOutTree.h b/src/Game/AI/AI/aiPullOutTree.h new file mode 100644 index 00000000..5012a912 --- /dev/null +++ b/src/Game/AI/AI/aiPullOutTree.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class PullOutTree : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(PullOutTree, ksys::act::ai::Ai) +public: + explicit PullOutTree(const InitArg& arg); + ~PullOutTree() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnAng_s{}; + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMove.cpp b/src/Game/AI/AI/aiRailMove.cpp new file mode 100644 index 00000000..f4288720 --- /dev/null +++ b/src/Game/AI/AI/aiRailMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiRailMove.h" + +namespace uking::ai { + +RailMove::RailMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RailMove::~RailMove() = default; + +bool RailMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RailMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RailMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RailMove::loadParams_() { + getStaticParam(&mIsIgnoreNoWaitStopPoint_s, "IsIgnoreNoWaitStopPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMove.h b/src/Game/AI/AI/aiRailMove.h new file mode 100644 index 00000000..a6bc4978 --- /dev/null +++ b/src/Game/AI/AI/aiRailMove.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RailMove, ksys::act::ai::Ai) +public: + explicit RailMove(const InitArg& arg); + ~RailMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsIgnoreNoWaitStopPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveObject.cpp b/src/Game/AI/AI/aiRailMoveObject.cpp new file mode 100644 index 00000000..7b36552a --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveObject.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRailMoveObject.h" + +namespace uking::ai { + +RailMoveObject::RailMoveObject(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RailMoveObject::~RailMoveObject() = default; + +bool RailMoveObject::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RailMoveObject::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RailMoveObject::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RailMoveObject::loadParams_() { + getStaticParam(&mASKeyName_On_s, "ASKeyName_On"); + getStaticParam(&mASKeyName_Off_s, "ASKeyName_Off"); + getMapUnitParam(&mRailMoveSpeed_m, "RailMoveSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveObject.h b/src/Game/AI/AI/aiRailMoveObject.h new file mode 100644 index 00000000..d46b118e --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveObject.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveObject : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RailMoveObject, ksys::act::ai::Ai) +public: + explicit RailMoveObject(const InitArg& arg); + ~RailMoveObject() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mASKeyName_On_s{}; + // static_param at offset 0x48 + sead::SafeString mASKeyName_Off_s{}; + // map_unit_param at offset 0x58 + const float* mRailMoveSpeed_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveObjectOneWay.cpp b/src/Game/AI/AI/aiRailMoveObjectOneWay.cpp new file mode 100644 index 00000000..51176755 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveObjectOneWay.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRailMoveObjectOneWay.h" + +namespace uking::ai { + +RailMoveObjectOneWay::RailMoveObjectOneWay(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RailMoveObjectOneWay::~RailMoveObjectOneWay() = default; + +bool RailMoveObjectOneWay::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RailMoveObjectOneWay::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RailMoveObjectOneWay::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RailMoveObjectOneWay::loadParams_() { + getStaticParam(&mASKeyName_On_s, "ASKeyName_On"); + getStaticParam(&mASKeyName_Off_s, "ASKeyName_Off"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveObjectOneWay.h b/src/Game/AI/AI/aiRailMoveObjectOneWay.h new file mode 100644 index 00000000..387ceb80 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveObjectOneWay.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveObjectOneWay : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RailMoveObjectOneWay, ksys::act::ai::Ai) +public: + explicit RailMoveObjectOneWay(const InitArg& arg); + ~RailMoveObjectOneWay() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mASKeyName_On_s{}; + // static_param at offset 0x48 + sead::SafeString mASKeyName_Off_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.cpp b/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.cpp new file mode 100644 index 00000000..4d40d9b5 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRailMoveRandomIgnoreStop.h" + +namespace uking::ai { + +RailMoveRandomIgnoreStop::RailMoveRandomIgnoreStop(const InitArg& arg) : RailMoveWithClose(arg) {} + +RailMoveRandomIgnoreStop::~RailMoveRandomIgnoreStop() = default; + +bool RailMoveRandomIgnoreStop::init_(sead::Heap* heap) { + return RailMoveWithClose::init_(heap); +} + +void RailMoveRandomIgnoreStop::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveWithClose::enter_(params); +} + +void RailMoveRandomIgnoreStop::leave_() { + RailMoveWithClose::leave_(); +} + +void RailMoveRandomIgnoreStop::loadParams_() { + RailMoveWithClose::loadParams_(); + getStaticParam(&mStopRate_s, "StopRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.h b/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.h new file mode 100644 index 00000000..eaca3b6b --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRandomIgnoreStop.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveWithClose.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveRandomIgnoreStop : public RailMoveWithClose { + SEAD_RTTI_OVERRIDE(RailMoveRandomIgnoreStop, RailMoveWithClose) +public: + explicit RailMoveRandomIgnoreStop(const InitArg& arg); + ~RailMoveRandomIgnoreStop() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb8 + const int* mStopRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRemains.cpp b/src/Game/AI/AI/aiRailMoveRemains.cpp new file mode 100644 index 00000000..81897a25 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRemains.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiRailMoveRemains.h" + +namespace uking::ai { + +RailMoveRemains::RailMoveRemains(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RailMoveRemains::~RailMoveRemains() = default; + +bool RailMoveRemains::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RailMoveRemains::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RailMoveRemains::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RailMoveRemains::loadParams_() { + getStaticParam(&mReactivateTime_s, "ReactivateTime"); + getStaticParam(&mFrontCheckMinDist_s, "FrontCheckMinDist"); + getStaticParam(&mFrontDirUpdateInterval_s, "FrontDirUpdateInterval"); + getStaticParam(&mSpeedScale_s, "SpeedScale"); + getStaticParam(&mInitPosByRailRatio_s, "InitPosByRailRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRemains.h b/src/Game/AI/AI/aiRailMoveRemains.h new file mode 100644 index 00000000..b32781a0 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRemains.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveRemains : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RailMoveRemains, ksys::act::ai::Ai) +public: + explicit RailMoveRemains(const InitArg& arg); + ~RailMoveRemains() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mReactivateTime_s{}; + // static_param at offset 0x40 + const float* mFrontCheckMinDist_s{}; + // static_param at offset 0x48 + const float* mFrontDirUpdateInterval_s{}; + // static_param at offset 0x50 + const float* mSpeedScale_s{}; + // static_param at offset 0x58 + const float* mInitPosByRailRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRemainsBGCamera.cpp b/src/Game/AI/AI/aiRailMoveRemainsBGCamera.cpp new file mode 100644 index 00000000..f91d15b9 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRemainsBGCamera.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRailMoveRemainsBGCamera.h" + +namespace uking::ai { + +RailMoveRemainsBGCamera::RailMoveRemainsBGCamera(const InitArg& arg) : RailMoveRemains(arg) {} + +RailMoveRemainsBGCamera::~RailMoveRemainsBGCamera() = default; + +bool RailMoveRemainsBGCamera::init_(sead::Heap* heap) { + return RailMoveRemains::init_(heap); +} + +void RailMoveRemainsBGCamera::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveRemains::enter_(params); +} + +void RailMoveRemainsBGCamera::leave_() { + RailMoveRemains::leave_(); +} + +void RailMoveRemainsBGCamera::loadParams_() { + RailMoveRemains::loadParams_(); + getStaticParam(&mIsAllowRotAxisX_s, "IsAllowRotAxisX"); + getStaticParam(&mDungeonName_s, "DungeonName"); + getStaticParam(&mRailName_s, "RailName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRemainsBGCamera.h b/src/Game/AI/AI/aiRailMoveRemainsBGCamera.h new file mode 100644 index 00000000..fd04ab92 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRemainsBGCamera.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveRemains.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveRemainsBGCamera : public RailMoveRemains { + SEAD_RTTI_OVERRIDE(RailMoveRemainsBGCamera, RailMoveRemains) +public: + explicit RailMoveRemainsBGCamera(const InitArg& arg); + ~RailMoveRemainsBGCamera() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x80 + const bool* mIsAllowRotAxisX_s{}; + // static_param at offset 0x88 + sead::SafeString mDungeonName_s{}; + // static_param at offset 0x98 + sead::SafeString mRailName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.cpp b/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.cpp new file mode 100644 index 00000000..f8860f8c --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h" + +namespace uking::ai { + +RailMoveRndIgnrStopPlayAS::RailMoveRndIgnrStopPlayAS(const InitArg& arg) + : RailMoveRandomIgnoreStop(arg) {} + +RailMoveRndIgnrStopPlayAS::~RailMoveRndIgnrStopPlayAS() = default; + +bool RailMoveRndIgnrStopPlayAS::init_(sead::Heap* heap) { + return RailMoveRandomIgnoreStop::init_(heap); +} + +void RailMoveRndIgnrStopPlayAS::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveRandomIgnoreStop::enter_(params); +} + +void RailMoveRndIgnrStopPlayAS::leave_() { + RailMoveRandomIgnoreStop::leave_(); +} + +void RailMoveRndIgnrStopPlayAS::loadParams_() { + RailMoveRandomIgnoreStop::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h b/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h new file mode 100644 index 00000000..70255fc6 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveRandomIgnoreStop.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveRndIgnrStopPlayAS : public RailMoveRandomIgnoreStop { + SEAD_RTTI_OVERRIDE(RailMoveRndIgnrStopPlayAS, RailMoveRandomIgnoreStop) +public: + explicit RailMoveRndIgnrStopPlayAS(const InitArg& arg); + ~RailMoveRndIgnrStopPlayAS() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveWithClose.cpp b/src/Game/AI/AI/aiRailMoveWithClose.cpp new file mode 100644 index 00000000..e19afd43 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveWithClose.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRailMoveWithClose.h" + +namespace uking::ai { + +RailMoveWithClose::RailMoveWithClose(const InitArg& arg) : RailMove(arg) {} + +RailMoveWithClose::~RailMoveWithClose() = default; + +bool RailMoveWithClose::init_(sead::Heap* heap) { + return RailMove::init_(heap); +} + +void RailMoveWithClose::enter_(ksys::act::ai::InlineParamPack* params) { + RailMove::enter_(params); +} + +void RailMoveWithClose::leave_() { + RailMove::leave_(); +} + +void RailMoveWithClose::loadParams_() { + RailMove::loadParams_(); + getStaticParam(&mOnRailDistance_s, "OnRailDistance"); + getStaticParam(&mFarDistance_s, "FarDistance"); + getStaticParam(&mSpeed_s, "Speed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRailMoveWithClose.h b/src/Game/AI/AI/aiRailMoveWithClose.h new file mode 100644 index 00000000..25d82464 --- /dev/null +++ b/src/Game/AI/AI/aiRailMoveWithClose.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiRailMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RailMoveWithClose : public RailMove { + SEAD_RTTI_OVERRIDE(RailMoveWithClose, RailMove) +public: + explicit RailMoveWithClose(const InitArg& arg); + ~RailMoveWithClose() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa0 + const float* mOnRailDistance_s{}; + // static_param at offset 0xa8 + const float* mFarDistance_s{}; + // static_param at offset 0xb0 + const float* mSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectThreeAction.cpp b/src/Game/AI/AI/aiRandomSelectThreeAction.cpp new file mode 100644 index 00000000..0c583967 --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectThreeAction.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiRandomSelectThreeAction.h" + +namespace uking::ai { + +RandomSelectThreeAction::RandomSelectThreeAction(const InitArg& arg) + : RandomSelectThreeActionBase(arg) {} + +RandomSelectThreeAction::~RandomSelectThreeAction() = default; + +bool RandomSelectThreeAction::init_(sead::Heap* heap) { + return RandomSelectThreeActionBase::init_(heap); +} + +void RandomSelectThreeAction::enter_(ksys::act::ai::InlineParamPack* params) { + RandomSelectThreeActionBase::enter_(params); +} + +void RandomSelectThreeAction::leave_() { + RandomSelectThreeActionBase::leave_(); +} + +void RandomSelectThreeAction::loadParams_() { + RandomSelectThreeActionBase::loadParams_(); + getStaticParam(&mRateActionA_s, "RateActionA"); + getStaticParam(&mRateActionB_s, "RateActionB"); + getStaticParam(&mRateActionC_s, "RateActionC"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectThreeAction.h b/src/Game/AI/AI/aiRandomSelectThreeAction.h new file mode 100644 index 00000000..2a7b321e --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectThreeAction.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiRandomSelectThreeActionBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RandomSelectThreeAction : public RandomSelectThreeActionBase { + SEAD_RTTI_OVERRIDE(RandomSelectThreeAction, RandomSelectThreeActionBase) +public: + explicit RandomSelectThreeAction(const InitArg& arg); + ~RandomSelectThreeAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mRateActionA_s{}; + // static_param at offset 0x68 + const float* mRateActionB_s{}; + // static_param at offset 0x70 + const float* mRateActionC_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectThreeActionBase.cpp b/src/Game/AI/AI/aiRandomSelectThreeActionBase.cpp new file mode 100644 index 00000000..d50d39a4 --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectThreeActionBase.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRandomSelectThreeActionBase.h" + +namespace uking::ai { + +RandomSelectThreeActionBase::RandomSelectThreeActionBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RandomSelectThreeActionBase::~RandomSelectThreeActionBase() = default; + +bool RandomSelectThreeActionBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RandomSelectThreeActionBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RandomSelectThreeActionBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RandomSelectThreeActionBase::loadParams_() { + getStaticParam(&mCorrectRatioA_s, "CorrectRatioA"); + getStaticParam(&mCorrectRatioB_s, "CorrectRatioB"); + getStaticParam(&mCorrectRatioC_s, "CorrectRatioC"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectThreeActionBase.h b/src/Game/AI/AI/aiRandomSelectThreeActionBase.h new file mode 100644 index 00000000..cccb341c --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectThreeActionBase.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RandomSelectThreeActionBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RandomSelectThreeActionBase, ksys::act::ai::Ai) +public: + explicit RandomSelectThreeActionBase(const InitArg& arg); + ~RandomSelectThreeActionBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCorrectRatioA_s{}; + // static_param at offset 0x40 + const float* mCorrectRatioB_s{}; + // static_param at offset 0x48 + const float* mCorrectRatioC_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectTwoAction.cpp b/src/Game/AI/AI/aiRandomSelectTwoAction.cpp new file mode 100644 index 00000000..d824eca8 --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectTwoAction.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiRandomSelectTwoAction.h" + +namespace uking::ai { + +RandomSelectTwoAction::RandomSelectTwoAction(const InitArg& arg) : RandomSelectTwoActionBase(arg) {} + +RandomSelectTwoAction::~RandomSelectTwoAction() = default; + +void RandomSelectTwoAction::loadParams_() { + RandomSelectTwoActionBase::loadParams_(); + getStaticParam(&mTransitionRateToA_s, "TransitionRateToA"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectTwoAction.h b/src/Game/AI/AI/aiRandomSelectTwoAction.h new file mode 100644 index 00000000..794178f9 --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectTwoAction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiRandomSelectTwoActionBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RandomSelectTwoAction : public RandomSelectTwoActionBase { + SEAD_RTTI_OVERRIDE(RandomSelectTwoAction, RandomSelectTwoActionBase) +public: + explicit RandomSelectTwoAction(const InitArg& arg); + ~RandomSelectTwoAction() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mTransitionRateToA_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectTwoActionBase.cpp b/src/Game/AI/AI/aiRandomSelectTwoActionBase.cpp new file mode 100644 index 00000000..90d52256 --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectTwoActionBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRandomSelectTwoActionBase.h" + +namespace uking::ai { + +RandomSelectTwoActionBase::RandomSelectTwoActionBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RandomSelectTwoActionBase::~RandomSelectTwoActionBase() = default; + +bool RandomSelectTwoActionBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RandomSelectTwoActionBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RandomSelectTwoActionBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RandomSelectTwoActionBase::loadParams_() { + getStaticParam(&mCorrectRateToA_s, "CorrectRateToA"); + getStaticParam(&mCorrectRateToB_s, "CorrectRateToB"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRandomSelectTwoActionBase.h b/src/Game/AI/AI/aiRandomSelectTwoActionBase.h new file mode 100644 index 00000000..cd06171c --- /dev/null +++ b/src/Game/AI/AI/aiRandomSelectTwoActionBase.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RandomSelectTwoActionBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RandomSelectTwoActionBase, ksys::act::ai::Ai) +public: + explicit RandomSelectTwoActionBase(const InitArg& arg); + ~RandomSelectTwoActionBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCorrectRateToA_s{}; + // static_param at offset 0x40 + const int* mCorrectRateToB_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeAttackSelect.cpp b/src/Game/AI/AI/aiRangeAttackSelect.cpp new file mode 100644 index 00000000..5ddd21e3 --- /dev/null +++ b/src/Game/AI/AI/aiRangeAttackSelect.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiRangeAttackSelect.h" + +namespace uking::ai { + +RangeAttackSelect::RangeAttackSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RangeAttackSelect::~RangeAttackSelect() = default; + +void RangeAttackSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RangeAttackSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RangeAttackSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mRangeDist_s, "RangeDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mIsIgnoreSmallHit_s, "IsIgnoreSmallHit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeAttackSelect.h b/src/Game/AI/AI/aiRangeAttackSelect.h new file mode 100644 index 00000000..e4048998 --- /dev/null +++ b/src/Game/AI/AI/aiRangeAttackSelect.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeAttackSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RangeAttackSelect, ksys::act::ai::Ai) +public: + explicit RangeAttackSelect(const InitArg& arg); + ~RangeAttackSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mRangeDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; + // static_param at offset 0x50 + const bool* mIsIgnoreSmallHit_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeCheckSeqTwoAction.cpp b/src/Game/AI/AI/aiRangeCheckSeqTwoAction.cpp new file mode 100644 index 00000000..44ed8eef --- /dev/null +++ b/src/Game/AI/AI/aiRangeCheckSeqTwoAction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRangeCheckSeqTwoAction.h" + +namespace uking::ai { + +RangeCheckSeqTwoAction::RangeCheckSeqTwoAction(const InitArg& arg) : SeqTargetTwoAction(arg) {} + +RangeCheckSeqTwoAction::~RangeCheckSeqTwoAction() = default; + +bool RangeCheckSeqTwoAction::init_(sead::Heap* heap) { + return SeqTargetTwoAction::init_(heap); +} + +void RangeCheckSeqTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTargetTwoAction::enter_(params); +} + +void RangeCheckSeqTwoAction::leave_() { + SeqTargetTwoAction::leave_(); +} + +void RangeCheckSeqTwoAction::loadParams_() { + SeqTargetTwoAction::loadParams_(); + getStaticParam(&mRange_s, "Range"); + getStaticParam(&mCheckFar_s, "CheckFar"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeCheckSeqTwoAction.h b/src/Game/AI/AI/aiRangeCheckSeqTwoAction.h new file mode 100644 index 00000000..7f5640bb --- /dev/null +++ b/src/Game/AI/AI/aiRangeCheckSeqTwoAction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTargetTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeCheckSeqTwoAction : public SeqTargetTwoAction { + SEAD_RTTI_OVERRIDE(RangeCheckSeqTwoAction, SeqTargetTwoAction) +public: + explicit RangeCheckSeqTwoAction(const InitArg& arg); + ~RangeCheckSeqTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x48 + const float* mRange_s{}; + // static_param at offset 0x50 + const bool* mCheckFar_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeHeightSelectTwoAction.cpp b/src/Game/AI/AI/aiRangeHeightSelectTwoAction.cpp new file mode 100644 index 00000000..7397bb3e --- /dev/null +++ b/src/Game/AI/AI/aiRangeHeightSelectTwoAction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRangeHeightSelectTwoAction.h" + +namespace uking::ai { + +RangeHeightSelectTwoAction::RangeHeightSelectTwoAction(const InitArg& arg) + : RangeSelectTwoAction(arg) {} + +RangeHeightSelectTwoAction::~RangeHeightSelectTwoAction() = default; + +bool RangeHeightSelectTwoAction::init_(sead::Heap* heap) { + return RangeSelectTwoAction::init_(heap); +} + +void RangeHeightSelectTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelectTwoAction::enter_(params); +} + +void RangeHeightSelectTwoAction::leave_() { + RangeSelectTwoAction::leave_(); +} + +void RangeHeightSelectTwoAction::loadParams_() { + RangeSelectTwoAction::loadParams_(); + getStaticParam(&mMaxY_s, "MaxY"); + getStaticParam(&mMinY_s, "MinY"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeHeightSelectTwoAction.h b/src/Game/AI/AI/aiRangeHeightSelectTwoAction.h new file mode 100644 index 00000000..a55bee70 --- /dev/null +++ b/src/Game/AI/AI/aiRangeHeightSelectTwoAction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelectTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeHeightSelectTwoAction : public RangeSelectTwoAction { + SEAD_RTTI_OVERRIDE(RangeHeightSelectTwoAction, RangeSelectTwoAction) +public: + explicit RangeHeightSelectTwoAction(const InitArg& arg); + ~RangeHeightSelectTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + const float* mMaxY_s{}; + // static_param at offset 0x78 + const float* mMinY_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.cpp b/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.cpp new file mode 100644 index 00000000..25c9e06f --- /dev/null +++ b/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRangeLineReachSelectTwoAction.h" + +namespace uking::ai { + +RangeLineReachSelectTwoAction::RangeLineReachSelectTwoAction(const InitArg& arg) + : RangeSelectTwoAction(arg) {} + +RangeLineReachSelectTwoAction::~RangeLineReachSelectTwoAction() = default; + +bool RangeLineReachSelectTwoAction::init_(sead::Heap* heap) { + return RangeSelectTwoAction::init_(heap); +} + +void RangeLineReachSelectTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelectTwoAction::enter_(params); +} + +void RangeLineReachSelectTwoAction::leave_() { + RangeSelectTwoAction::leave_(); +} + +void RangeLineReachSelectTwoAction::loadParams_() { + RangeSelectTwoAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.h b/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.h new file mode 100644 index 00000000..e212aae2 --- /dev/null +++ b/src/Game/AI/AI/aiRangeLineReachSelectTwoAction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelectTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeLineReachSelectTwoAction : public RangeSelectTwoAction { + SEAD_RTTI_OVERRIDE(RangeLineReachSelectTwoAction, RangeSelectTwoAction) +public: + explicit RangeLineReachSelectTwoAction(const InitArg& arg); + ~RangeLineReachSelectTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeObstacleCheck.cpp b/src/Game/AI/AI/aiRangeObstacleCheck.cpp new file mode 100644 index 00000000..8243d8b6 --- /dev/null +++ b/src/Game/AI/AI/aiRangeObstacleCheck.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiRangeObstacleCheck.h" + +namespace uking::ai { + +RangeObstacleCheck::RangeObstacleCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RangeObstacleCheck::~RangeObstacleCheck() = default; + +bool RangeObstacleCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RangeObstacleCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RangeObstacleCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RangeObstacleCheck::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mRangeDist_s, "RangeDist"); + getStaticParam(&mHeightMin_s, "HeightMin"); + getStaticParam(&mHeightMax_s, "HeightMax"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeObstacleCheck.h b/src/Game/AI/AI/aiRangeObstacleCheck.h new file mode 100644 index 00000000..edc19041 --- /dev/null +++ b/src/Game/AI/AI/aiRangeObstacleCheck.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeObstacleCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RangeObstacleCheck, ksys::act::ai::Ai) +public: + explicit RangeObstacleCheck(const InitArg& arg); + ~RangeObstacleCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mRangeDist_s{}; + // static_param at offset 0x48 + const float* mHeightMin_s{}; + // static_param at offset 0x50 + const float* mHeightMax_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelect.cpp b/src/Game/AI/AI/aiRangeSelect.cpp new file mode 100644 index 00000000..3d82a7fa --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRangeSelect.h" + +namespace uking::ai { + +RangeSelect::RangeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RangeSelect::~RangeSelect() = default; + +bool RangeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RangeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RangeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RangeSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mIsSelectEveryFrame_s, "IsSelectEveryFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelect.h b/src/Game/AI/AI/aiRangeSelect.h new file mode 100644 index 00000000..c041013e --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RangeSelect, ksys::act::ai::Ai) +public: + explicit RangeSelect(const InitArg& arg); + ~RangeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mFarDist_s{}; + // static_param at offset 0x48 + const bool* mIsSelectEveryFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectAction.cpp b/src/Game/AI/AI/aiRangeSelectAction.cpp new file mode 100644 index 00000000..95003c5b --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectAction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRangeSelectAction.h" + +namespace uking::ai { + +RangeSelectAction::RangeSelectAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RangeSelectAction::~RangeSelectAction() = default; + +bool RangeSelectAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RangeSelectAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RangeSelectAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RangeSelectAction::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mIsSelectEveryFrame_s, "IsSelectEveryFrame"); + getStaticParam(&mIsRangeXZ_s, "IsRangeXZ"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectAction.h b/src/Game/AI/AI/aiRangeSelectAction.h new file mode 100644 index 00000000..32b6e2da --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectAction.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeSelectAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RangeSelectAction, ksys::act::ai::Ai) +public: + explicit RangeSelectAction(const InitArg& arg); + ~RangeSelectAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const bool* mIsSelectEveryFrame_s{}; + // static_param at offset 0x48 + const bool* mIsRangeXZ_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectThreeAction.cpp b/src/Game/AI/AI/aiRangeSelectThreeAction.cpp new file mode 100644 index 00000000..a7c6626a --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectThreeAction.cpp @@ -0,0 +1,16 @@ +#include "Game/AI/AI/aiRangeSelectThreeAction.h" + +namespace uking::ai { + +RangeSelectThreeAction::RangeSelectThreeAction(const InitArg& arg) : RangeSelectAction(arg) {} + +RangeSelectThreeAction::~RangeSelectThreeAction() = default; + +void RangeSelectThreeAction::loadParams_() { + RangeSelectAction::loadParams_(); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectThreeAction.h b/src/Game/AI/AI/aiRangeSelectThreeAction.h new file mode 100644 index 00000000..063ff0ab --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectThreeAction.h @@ -0,0 +1,25 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelectAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeSelectThreeAction : public RangeSelectAction { + SEAD_RTTI_OVERRIDE(RangeSelectThreeAction, RangeSelectAction) +public: + explicit RangeSelectThreeAction(const InitArg& arg); + ~RangeSelectThreeAction() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x58 + const float* mNearDist_s{}; + // static_param at offset 0x60 + const float* mFarDist_s{}; + // static_param at offset 0x68 + const float* mBaseDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectTwoAction.cpp b/src/Game/AI/AI/aiRangeSelectTwoAction.cpp new file mode 100644 index 00000000..3ba98289 --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectTwoAction.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiRangeSelectTwoAction.h" + +namespace uking::ai { + +RangeSelectTwoAction::RangeSelectTwoAction(const InitArg& arg) : RangeSelectAction(arg) {} + +RangeSelectTwoAction::~RangeSelectTwoAction() = default; + +void RangeSelectTwoAction::loadParams_() { + RangeSelectAction::loadParams_(); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mBaseDist_s, "BaseDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRangeSelectTwoAction.h b/src/Game/AI/AI/aiRangeSelectTwoAction.h new file mode 100644 index 00000000..a2ce7e20 --- /dev/null +++ b/src/Game/AI/AI/aiRangeSelectTwoAction.h @@ -0,0 +1,23 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelectAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RangeSelectTwoAction : public RangeSelectAction { + SEAD_RTTI_OVERRIDE(RangeSelectTwoAction, RangeSelectAction) +public: + explicit RangeSelectTwoAction(const InitArg& arg); + ~RangeSelectTwoAction() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x58 + const float* mFarDist_s{}; + // static_param at offset 0x60 + const float* mBaseDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRapidAttackAllowSelect.cpp b/src/Game/AI/AI/aiRapidAttackAllowSelect.cpp new file mode 100644 index 00000000..dfa3428e --- /dev/null +++ b/src/Game/AI/AI/aiRapidAttackAllowSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRapidAttackAllowSelect.h" + +namespace uking::ai { + +RapidAttackAllowSelect::RapidAttackAllowSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RapidAttackAllowSelect::~RapidAttackAllowSelect() = default; + +bool RapidAttackAllowSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RapidAttackAllowSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RapidAttackAllowSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RapidAttackAllowSelect::loadParams_() { + getStaticParam(&mAttackNum_s, "AttackNum"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRapidAttackAllowSelect.h b/src/Game/AI/AI/aiRapidAttackAllowSelect.h new file mode 100644 index 00000000..05e8795a --- /dev/null +++ b/src/Game/AI/AI/aiRapidAttackAllowSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RapidAttackAllowSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RapidAttackAllowSelect, ksys::act::ai::Ai) +public: + explicit RapidAttackAllowSelect(const InitArg& arg); + ~RapidAttackAllowSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackNum_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReduceDistanceToTargetPos.cpp b/src/Game/AI/AI/aiReduceDistanceToTargetPos.cpp new file mode 100644 index 00000000..a090bfb3 --- /dev/null +++ b/src/Game/AI/AI/aiReduceDistanceToTargetPos.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiReduceDistanceToTargetPos.h" + +namespace uking::ai { + +ReduceDistanceToTargetPos::ReduceDistanceToTargetPos(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReduceDistanceToTargetPos::~ReduceDistanceToTargetPos() = default; + +bool ReduceDistanceToTargetPos::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReduceDistanceToTargetPos::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReduceDistanceToTargetPos::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReduceDistanceToTargetPos::loadParams_() { + getStaticParam(&mDistanceScale_s, "DistanceScale"); + getStaticParam(&mMinReduceDist_s, "MinReduceDist"); + getStaticParam(&mMaxReduceDist_s, "MaxReduceDist"); + getStaticParam(&mMinDist_s, "MinDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReduceDistanceToTargetPos.h b/src/Game/AI/AI/aiReduceDistanceToTargetPos.h new file mode 100644 index 00000000..63f1a1e6 --- /dev/null +++ b/src/Game/AI/AI/aiReduceDistanceToTargetPos.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReduceDistanceToTargetPos : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReduceDistanceToTargetPos, ksys::act::ai::Ai) +public: + explicit ReduceDistanceToTargetPos(const InitArg& arg); + ~ReduceDistanceToTargetPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistanceScale_s{}; + // static_param at offset 0x40 + const float* mMinReduceDist_s{}; + // static_param at offset 0x48 + const float* mMaxReduceDist_s{}; + // static_param at offset 0x50 + const float* mMinDist_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.cpp b/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.cpp new file mode 100644 index 00000000..86ef12c6 --- /dev/null +++ b/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiReferenceNPCViewWithDynAS.h" + +namespace uking::ai { + +ReferenceNPCViewWithDynAS::ReferenceNPCViewWithDynAS(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReferenceNPCViewWithDynAS::~ReferenceNPCViewWithDynAS() = default; + +bool ReferenceNPCViewWithDynAS::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReferenceNPCViewWithDynAS::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReferenceNPCViewWithDynAS::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReferenceNPCViewWithDynAS::loadParams_() { + getDynamicParam(&mDynASKey_d, "DynASKey"); + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); + getDynamicParam(&mDynASKey_d, "DynASKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.h b/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.h new file mode 100644 index 00000000..b2f260d4 --- /dev/null +++ b/src/Game/AI/AI/aiReferenceNPCViewWithDynAS.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReferenceNPCViewWithDynAS : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReferenceNPCViewWithDynAS, ksys::act::ai::Ai) +public: + explicit ReferenceNPCViewWithDynAS(const InitArg& arg); + ~ReferenceNPCViewWithDynAS() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnStartAngle_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; + // dynamic_param at offset 0x48 + sead::SafeString* mDynASKey_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableBulletThrown.cpp b/src/Game/AI/AI/aiReflectableBulletThrown.cpp new file mode 100644 index 00000000..d17414e0 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableBulletThrown.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiReflectableBulletThrown.h" + +namespace uking::ai { + +ReflectableBulletThrown::ReflectableBulletThrown(const InitArg& arg) : ReflectableThrown(arg) {} + +ReflectableBulletThrown::~ReflectableBulletThrown() = default; + +bool ReflectableBulletThrown::init_(sead::Heap* heap) { + return ReflectableThrown::init_(heap); +} + +void ReflectableBulletThrown::enter_(ksys::act::ai::InlineParamPack* params) { + ReflectableThrown::enter_(params); +} + +void ReflectableBulletThrown::leave_() { + ReflectableThrown::leave_(); +} + +void ReflectableBulletThrown::loadParams_() { + ReflectableThrown::loadParams_(); + getDynamicParam(&mPower_d, "Power"); + getDynamicParam(&mIsShootByPlayer_d, "IsShootByPlayer"); + getDynamicParam(&mTargetDir_d, "TargetDir"); + getStaticParam(&mReclectSpd_s, "ReclectSpd"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableBulletThrown.h b/src/Game/AI/AI/aiReflectableBulletThrown.h new file mode 100644 index 00000000..2722aab7 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableBulletThrown.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiReflectableThrown.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReflectableBulletThrown : public ReflectableThrown { + SEAD_RTTI_OVERRIDE(ReflectableBulletThrown, ReflectableThrown) +public: + explicit ReflectableBulletThrown(const InitArg& arg); + ~ReflectableBulletThrown() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xa8 + float* mPower_d{}; + // dynamic_param at offset 0xb0 + bool* mIsShootByPlayer_d{}; + // dynamic_param at offset 0xb8 + sead::Vector3f* mTargetDir_d{}; + // static_param at offset 0xc0 + const float* mReclectSpd_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableEscape.cpp b/src/Game/AI/AI/aiReflectableEscape.cpp new file mode 100644 index 00000000..772f8468 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableEscape.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiReflectableEscape.h" + +namespace uking::ai { + +ReflectableEscape::ReflectableEscape(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReflectableEscape::~ReflectableEscape() = default; + +bool ReflectableEscape::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReflectableEscape::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReflectableEscape::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReflectableEscape::loadParams_() { + getStaticParam(&mEscapeDist_s, "EscapeDist"); + getStaticParam(&mNearDist_s, "NearDist"); + getStaticParam(&mEscapeTimer_s, "EscapeTimer"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableEscape.h b/src/Game/AI/AI/aiReflectableEscape.h new file mode 100644 index 00000000..64485e04 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableEscape.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReflectableEscape : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReflectableEscape, ksys::act::ai::Ai) +public: + explicit ReflectableEscape(const InitArg& arg); + ~ReflectableEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mEscapeDist_s{}; + // static_param at offset 0x40 + const float* mNearDist_s{}; + // static_param at offset 0x48 + const float* mEscapeTimer_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableIgnitedThrown.cpp b/src/Game/AI/AI/aiReflectableIgnitedThrown.cpp new file mode 100644 index 00000000..f2e5013a --- /dev/null +++ b/src/Game/AI/AI/aiReflectableIgnitedThrown.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiReflectableIgnitedThrown.h" + +namespace uking::ai { + +ReflectableIgnitedThrown::ReflectableIgnitedThrown(const InitArg& arg) : ReflectableThrown(arg) {} + +ReflectableIgnitedThrown::~ReflectableIgnitedThrown() = default; + +bool ReflectableIgnitedThrown::init_(sead::Heap* heap) { + return ReflectableThrown::init_(heap); +} + +void ReflectableIgnitedThrown::enter_(ksys::act::ai::InlineParamPack* params) { + ReflectableThrown::enter_(params); +} + +void ReflectableIgnitedThrown::leave_() { + ReflectableThrown::leave_(); +} + +void ReflectableIgnitedThrown::loadParams_() { + ReflectableThrown::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableIgnitedThrown.h b/src/Game/AI/AI/aiReflectableIgnitedThrown.h new file mode 100644 index 00000000..d513aa61 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableIgnitedThrown.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiReflectableThrown.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReflectableIgnitedThrown : public ReflectableThrown { + SEAD_RTTI_OVERRIDE(ReflectableIgnitedThrown, ReflectableThrown) +public: + explicit ReflectableIgnitedThrown(const InitArg& arg); + ~ReflectableIgnitedThrown() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableThrown.cpp b/src/Game/AI/AI/aiReflectableThrown.cpp new file mode 100644 index 00000000..2dbf13b5 --- /dev/null +++ b/src/Game/AI/AI/aiReflectableThrown.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiReflectableThrown.h" + +namespace uking::ai { + +ReflectableThrown::ReflectableThrown(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReflectableThrown::~ReflectableThrown() = default; + +bool ReflectableThrown::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReflectableThrown::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReflectableThrown::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReflectableThrown::loadParams_() { + getStaticParam(&mIsReflectByGuard_s, "IsReflectByGuard"); + getStaticParam(&mIsReflectByArrow_s, "IsReflectByArrow"); + getStaticParam(&mHitColName_s, "HitColName"); + getStaticParam(&mRefSpeedRatioByJustGuard_s, "RefSpeedRatioByJustGuard"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReflectableThrown.h b/src/Game/AI/AI/aiReflectableThrown.h new file mode 100644 index 00000000..222cb68e --- /dev/null +++ b/src/Game/AI/AI/aiReflectableThrown.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReflectableThrown : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReflectableThrown, ksys::act::ai::Ai) +public: + explicit ReflectableThrown(const InitArg& arg); + ~ReflectableThrown() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsReflectByGuard_s{}; + // static_param at offset 0x40 + const bool* mIsReflectByArrow_s{}; + // static_param at offset 0x48 + sead::SafeString mHitColName_s{}; + // static_param at offset 0x58 + const float* mRefSpeedRatioByJustGuard_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRegistedActorNumTwoSelect.cpp b/src/Game/AI/AI/aiRegistedActorNumTwoSelect.cpp new file mode 100644 index 00000000..fd9c2201 --- /dev/null +++ b/src/Game/AI/AI/aiRegistedActorNumTwoSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRegistedActorNumTwoSelect.h" + +namespace uking::ai { + +RegistedActorNumTwoSelect::RegistedActorNumTwoSelect(const InitArg& arg) + : RegistedActorNumTwoSelectBase(arg) {} + +RegistedActorNumTwoSelect::~RegistedActorNumTwoSelect() = default; + +bool RegistedActorNumTwoSelect::init_(sead::Heap* heap) { + return RegistedActorNumTwoSelectBase::init_(heap); +} + +void RegistedActorNumTwoSelect::enter_(ksys::act::ai::InlineParamPack* params) { + RegistedActorNumTwoSelectBase::enter_(params); +} + +void RegistedActorNumTwoSelect::leave_() { + RegistedActorNumTwoSelectBase::leave_(); +} + +void RegistedActorNumTwoSelect::loadParams_() { + RegistedActorNumTwoSelectBase::loadParams_(); + getStaticParam(&mNum_s, "Num"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRegistedActorNumTwoSelect.h b/src/Game/AI/AI/aiRegistedActorNumTwoSelect.h new file mode 100644 index 00000000..5ac207f9 --- /dev/null +++ b/src/Game/AI/AI/aiRegistedActorNumTwoSelect.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRegistedActorNumTwoSelectBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RegistedActorNumTwoSelect : public RegistedActorNumTwoSelectBase { + SEAD_RTTI_OVERRIDE(RegistedActorNumTwoSelect, RegistedActorNumTwoSelectBase) +public: + explicit RegistedActorNumTwoSelect(const InitArg& arg); + ~RegistedActorNumTwoSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mNum_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.cpp b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.cpp new file mode 100644 index 00000000..c0f817d0 --- /dev/null +++ b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRegistedActorNumTwoSelectBase.h" + +namespace uking::ai { + +RegistedActorNumTwoSelectBase::RegistedActorNumTwoSelectBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RegistedActorNumTwoSelectBase::~RegistedActorNumTwoSelectBase() = default; + +bool RegistedActorNumTwoSelectBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RegistedActorNumTwoSelectBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RegistedActorNumTwoSelectBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RegistedActorNumTwoSelectBase::loadParams_() { + getAITreeVariable(&mRegistedActorUnit_a, "RegistedActorUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h new file mode 100644 index 00000000..2ddaf121 --- /dev/null +++ b/src/Game/AI/AI/aiRegistedActorNumTwoSelectBase.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RegistedActorNumTwoSelectBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RegistedActorNumTwoSelectBase, ksys::act::ai::Ai) +public: + explicit RegistedActorNumTwoSelectBase(const InitArg& arg); + ~RegistedActorNumTwoSelectBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mRegistedActorUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.cpp b/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.cpp new file mode 100644 index 00000000..0839364b --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiRemainElectricCannonBeamAttack.h" + +namespace uking::ai { + +RemainElectricCannonBeamAttack::RemainElectricCannonBeamAttack(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RemainElectricCannonBeamAttack::~RemainElectricCannonBeamAttack() = default; + +bool RemainElectricCannonBeamAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainElectricCannonBeamAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainElectricCannonBeamAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainElectricCannonBeamAttack::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.h b/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.h new file mode 100644 index 00000000..62c358a4 --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonBeamAttack.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainElectricCannonBeamAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainElectricCannonBeamAttack, ksys::act::ai::Ai) +public: + explicit RemainElectricCannonBeamAttack(const InitArg& arg); + ~RemainElectricCannonBeamAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonRoot.cpp b/src/Game/AI/AI/aiRemainElectricCannonRoot.cpp new file mode 100644 index 00000000..6f31a66a --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRemainElectricCannonRoot.h" + +namespace uking::ai { + +RemainElectricCannonRoot::RemainElectricCannonRoot(const InitArg& arg) + : RemainElectricCannonRootBase(arg) {} + +RemainElectricCannonRoot::~RemainElectricCannonRoot() = default; + +bool RemainElectricCannonRoot::init_(sead::Heap* heap) { + return RemainElectricCannonRootBase::init_(heap); +} + +void RemainElectricCannonRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RemainElectricCannonRootBase::enter_(params); +} + +void RemainElectricCannonRoot::leave_() { + RemainElectricCannonRootBase::leave_(); +} + +void RemainElectricCannonRoot::loadParams_() { + RemainElectricCannonRootBase::loadParams_(); + getStaticParam(&mSearchMaxDistLoiter_s, "SearchMaxDistLoiter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonRoot.h b/src/Game/AI/AI/aiRemainElectricCannonRoot.h new file mode 100644 index 00000000..f47eee60 --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRemainElectricCannonRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainElectricCannonRoot : public RemainElectricCannonRootBase { + SEAD_RTTI_OVERRIDE(RemainElectricCannonRoot, RemainElectricCannonRootBase) +public: + explicit RemainElectricCannonRoot(const InitArg& arg); + ~RemainElectricCannonRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mSearchMaxDistLoiter_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonRootBase.cpp b/src/Game/AI/AI/aiRemainElectricCannonRootBase.cpp new file mode 100644 index 00000000..93e99def --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonRootBase.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRemainElectricCannonRootBase.h" + +namespace uking::ai { + +RemainElectricCannonRootBase::RemainElectricCannonRootBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +bool RemainElectricCannonRootBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainElectricCannonRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainElectricCannonRootBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainElectricCannonRootBase::loadParams_() { + getStaticParam(&mSearchMaxDist_s, "SearchMaxDist"); + getStaticParam(&mSearchMinDist_s, "SearchMinDist"); + getStaticParam(&mSearchDistMargin_s, "SearchDistMargin"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainElectricCannonRootBase.h b/src/Game/AI/AI/aiRemainElectricCannonRootBase.h new file mode 100644 index 00000000..ce37f48a --- /dev/null +++ b/src/Game/AI/AI/aiRemainElectricCannonRootBase.h @@ -0,0 +1,26 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainElectricCannonRootBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainElectricCannonRootBase, ksys::act::ai::Ai) +public: + explicit RemainElectricCannonRootBase(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSearchMaxDist_s{}; + // static_param at offset 0x40 + const float* mSearchMinDist_s{}; + // static_param at offset 0x48 + const float* mSearchDistMargin_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsElectricBGCamera.cpp b/src/Game/AI/AI/aiRemainsElectricBGCamera.cpp new file mode 100644 index 00000000..8cfc5de2 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsElectricBGCamera.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRemainsElectricBGCamera.h" + +namespace uking::ai { + +RemainsElectricBGCamera::RemainsElectricBGCamera(const InitArg& arg) + : RailMoveRemainsBGCamera(arg) {} + +RemainsElectricBGCamera::~RemainsElectricBGCamera() = default; + +bool RemainsElectricBGCamera::init_(sead::Heap* heap) { + return RailMoveRemainsBGCamera::init_(heap); +} + +void RemainsElectricBGCamera::enter_(ksys::act::ai::InlineParamPack* params) { + RailMoveRemainsBGCamera::enter_(params); +} + +void RemainsElectricBGCamera::leave_() { + RailMoveRemainsBGCamera::leave_(); +} + +void RemainsElectricBGCamera::loadParams_() { + RailMoveRemainsBGCamera::loadParams_(); + getStaticParam(&mParentActorName_s, "ParentActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsElectricBGCamera.h b/src/Game/AI/AI/aiRemainsElectricBGCamera.h new file mode 100644 index 00000000..e267845c --- /dev/null +++ b/src/Game/AI/AI/aiRemainsElectricBGCamera.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRailMoveRemainsBGCamera.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsElectricBGCamera : public RailMoveRemainsBGCamera { + SEAD_RTTI_OVERRIDE(RemainsElectricBGCamera, RailMoveRemainsBGCamera) +public: + explicit RemainsElectricBGCamera(const InitArg& arg); + ~RemainsElectricBGCamera() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x108 + sead::SafeString mParentActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsElectricRoot.cpp b/src/Game/AI/AI/aiRemainsElectricRoot.cpp new file mode 100644 index 00000000..b0291f26 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsElectricRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiRemainsElectricRoot.h" + +namespace uking::ai { + +RemainsElectricRoot::RemainsElectricRoot(const InitArg& arg) : RemainsRoot(arg) {} + +RemainsElectricRoot::~RemainsElectricRoot() = default; + +bool RemainsElectricRoot::init_(sead::Heap* heap) { + return RemainsRoot::init_(heap); +} + +void RemainsElectricRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RemainsRoot::enter_(params); +} + +void RemainsElectricRoot::leave_() { + RemainsRoot::leave_(); +} + +void RemainsElectricRoot::loadParams_() { + RemainsRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsElectricRoot.h b/src/Game/AI/AI/aiRemainsElectricRoot.h new file mode 100644 index 00000000..61d8cb11 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsElectricRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRemainsRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsElectricRoot : public RemainsRoot { + SEAD_RTTI_OVERRIDE(RemainsElectricRoot, RemainsRoot) +public: + explicit RemainsElectricRoot(const InitArg& arg); + ~RemainsElectricRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireBattleMove.cpp b/src/Game/AI/AI/aiRemainsFireBattleMove.cpp new file mode 100644 index 00000000..181c71fb --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireBattleMove.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiRemainsFireBattleMove.h" + +namespace uking::ai { + +RemainsFireBattleMove::RemainsFireBattleMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsFireBattleMove::~RemainsFireBattleMove() = default; + +bool RemainsFireBattleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsFireBattleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsFireBattleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsFireBattleMove::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireBattleMove.h b/src/Game/AI/AI/aiRemainsFireBattleMove.h new file mode 100644 index 00000000..2f52cd3c --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireBattleMove.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsFireBattleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsFireBattleMove, ksys::act::ai::Ai) +public: + explicit RemainsFireBattleMove(const InitArg& arg); + ~RemainsFireBattleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireBattleStepSelector.cpp b/src/Game/AI/AI/aiRemainsFireBattleStepSelector.cpp new file mode 100644 index 00000000..cf8255d2 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireBattleStepSelector.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiRemainsFireBattleStepSelector.h" + +namespace uking::ai { + +RemainsFireBattleStepSelector::RemainsFireBattleStepSelector(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RemainsFireBattleStepSelector::~RemainsFireBattleStepSelector() = default; + +bool RemainsFireBattleStepSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsFireBattleStepSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsFireBattleStepSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsFireBattleStepSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireBattleStepSelector.h b/src/Game/AI/AI/aiRemainsFireBattleStepSelector.h new file mode 100644 index 00000000..dbe3a821 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireBattleStepSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsFireBattleStepSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsFireBattleStepSelector, ksys::act::ai::Ai) +public: + explicit RemainsFireBattleStepSelector(const InitArg& arg); + ~RemainsFireBattleStepSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireDroneNormal.cpp b/src/Game/AI/AI/aiRemainsFireDroneNormal.cpp new file mode 100644 index 00000000..08588801 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireDroneNormal.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiRemainsFireDroneNormal.h" + +namespace uking::ai { + +RemainsFireDroneNormal::RemainsFireDroneNormal(const InitArg& arg) : RailMove(arg) {} + +RemainsFireDroneNormal::~RemainsFireDroneNormal() = default; + +bool RemainsFireDroneNormal::init_(sead::Heap* heap) { + return RailMove::init_(heap); +} + +void RemainsFireDroneNormal::enter_(ksys::act::ai::InlineParamPack* params) { + RailMove::enter_(params); +} + +void RemainsFireDroneNormal::leave_() { + RailMove::leave_(); +} + +void RemainsFireDroneNormal::loadParams_() { + RailMove::loadParams_(); + getStaticParam(&mLightLengthOffset_s, "LightLengthOffset"); + getStaticParam(&mAdjustRadius_s, "AdjustRadius"); + getMapUnitParam(&mSearchLightType_m, "SearchLightType"); + getMapUnitParam(&mLightRadius_m, "LightRadius"); + getMapUnitParam(&mLightLength_m, "LightLength"); + getAITreeVariable(&mTargetSpeed_a, "TargetSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireDroneNormal.h b/src/Game/AI/AI/aiRemainsFireDroneNormal.h new file mode 100644 index 00000000..8a6aea2f --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireDroneNormal.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiRailMove.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsFireDroneNormal : public RailMove { + SEAD_RTTI_OVERRIDE(RemainsFireDroneNormal, RailMove) +public: + explicit RemainsFireDroneNormal(const InitArg& arg); + ~RemainsFireDroneNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xa0 + const float* mLightLengthOffset_s{}; + // static_param at offset 0xa8 + const bool* mAdjustRadius_s{}; + // map_unit_param at offset 0xb0 + const int* mSearchLightType_m{}; + // map_unit_param at offset 0xb8 + const float* mLightLength_m{}; + // map_unit_param at offset 0xc0 + const float* mLightRadius_m{}; + // aitree_variable at offset 0xc8 + float* mTargetSpeed_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireRoot.cpp b/src/Game/AI/AI/aiRemainsFireRoot.cpp new file mode 100644 index 00000000..7bdf19ff --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRemainsFireRoot.h" + +namespace uking::ai { + +RemainsFireRoot::RemainsFireRoot(const InitArg& arg) : RemainsRoot(arg) {} + +RemainsFireRoot::~RemainsFireRoot() = default; + +bool RemainsFireRoot::init_(sead::Heap* heap) { + return RemainsRoot::init_(heap); +} + +void RemainsFireRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RemainsRoot::enter_(params); +} + +void RemainsFireRoot::leave_() { + RemainsRoot::leave_(); +} + +void RemainsFireRoot::loadParams_() { + RemainsRoot::loadParams_(); + getStaticParam(&mTargetBoneName_s, "TargetBoneName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsFireRoot.h b/src/Game/AI/AI/aiRemainsFireRoot.h new file mode 100644 index 00000000..6283edbb --- /dev/null +++ b/src/Game/AI/AI/aiRemainsFireRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRemainsRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsFireRoot : public RemainsRoot { + SEAD_RTTI_OVERRIDE(RemainsFireRoot, RemainsRoot) +public: + explicit RemainsFireRoot(const InitArg& arg); + ~RemainsFireRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + sead::SafeString mTargetBoneName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsLithograph.cpp b/src/Game/AI/AI/aiRemainsLithograph.cpp new file mode 100644 index 00000000..b3b43c94 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsLithograph.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiRemainsLithograph.h" + +namespace uking::ai { + +RemainsLithograph::RemainsLithograph(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsLithograph::~RemainsLithograph() = default; + +bool RemainsLithograph::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsLithograph::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsLithograph::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsLithograph::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsLithograph.h b/src/Game/AI/AI/aiRemainsLithograph.h new file mode 100644 index 00000000..09d838a7 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsLithograph.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsLithograph : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsLithograph, ksys::act::ai::Ai) +public: + explicit RemainsLithograph(const InitArg& arg); + ~RemainsLithograph() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsRoot.cpp b/src/Game/AI/AI/aiRemainsRoot.cpp new file mode 100644 index 00000000..a7b5dfda --- /dev/null +++ b/src/Game/AI/AI/aiRemainsRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRemainsRoot.h" + +namespace uking::ai { + +RemainsRoot::RemainsRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsRoot::~RemainsRoot() = default; + +bool RemainsRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsRoot::loadParams_() { + getStaticParam(&mRemainsTypeID_s, "RemainsTypeID"); + getStaticParam(&mIsAllowRotAxisX_s, "IsAllowRotAxisX"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsRoot.h b/src/Game/AI/AI/aiRemainsRoot.h new file mode 100644 index 00000000..d01754f1 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsRoot, ksys::act::ai::Ai) +public: + explicit RemainsRoot(const InitArg& arg); + ~RemainsRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRemainsTypeID_s{}; + // static_param at offset 0x40 + const bool* mIsAllowRotAxisX_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterBattleRoot.cpp b/src/Game/AI/AI/aiRemainsWaterBattleRoot.cpp new file mode 100644 index 00000000..a935a2ac --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterBattleRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiRemainsWaterBattleRoot.h" + +namespace uking::ai { + +RemainsWaterBattleRoot::RemainsWaterBattleRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsWaterBattleRoot::~RemainsWaterBattleRoot() = default; + +bool RemainsWaterBattleRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWaterBattleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWaterBattleRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWaterBattleRoot::loadParams_() { + getStaticParam(&mCallClearDemoTimer_s, "CallClearDemoTimer"); + getStaticParam(&mAfterDamageTimer_s, "AfterDamageTimer"); + getStaticParam(&mAfterPaooonTimer_s, "AfterPaooonTimer"); + getStaticParam(&mAfterHellTimer_s, "AfterHellTimer"); + getStaticParam(&mFirstBulletTimer_s, "FirstBulletTimer"); + getAITreeVariable(&mRemainsWaterBattleInfo_a, "RemainsWaterBattleInfo"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterBattleRoot.h b/src/Game/AI/AI/aiRemainsWaterBattleRoot.h new file mode 100644 index 00000000..05cad48e --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterBattleRoot.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterBattleRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWaterBattleRoot, ksys::act::ai::Ai) +public: + explicit RemainsWaterBattleRoot(const InitArg& arg); + ~RemainsWaterBattleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCallClearDemoTimer_s{}; + // static_param at offset 0x40 + const float* mAfterDamageTimer_s{}; + // static_param at offset 0x48 + const float* mAfterPaooonTimer_s{}; + // static_param at offset 0x50 + const float* mAfterHellTimer_s{}; + // static_param at offset 0x58 + const float* mFirstBulletTimer_s{}; + // aitree_variable at offset 0x60 + void* mRemainsWaterBattleInfo_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterBulletController.cpp b/src/Game/AI/AI/aiRemainsWaterBulletController.cpp new file mode 100644 index 00000000..9183a7ac --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterBulletController.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiRemainsWaterBulletController.h" + +namespace uking::ai { + +RemainsWaterBulletController::RemainsWaterBulletController(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RemainsWaterBulletController::~RemainsWaterBulletController() = default; + +bool RemainsWaterBulletController::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWaterBulletController::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWaterBulletController::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWaterBulletController::loadParams_() { + getStaticParam(&mInsideAreaRadius_s, "InsideAreaRadius"); + getStaticParam(&mFirstBulletTimer_s, "FirstBulletTimer"); + getStaticParam(&mSecondBulletTimer_s, "SecondBulletTimer"); + getStaticParam(&mNextBulletTimerSuccess_s, "NextBulletTimerSuccess"); + getStaticParam(&mNextBulletTimerFail_s, "NextBulletTimerFail"); + getStaticParam(&mChaseBulletNum_s, "ChaseBulletNum"); + getStaticParam(&mExplodeBulletNum_s, "ExplodeBulletNum"); + getStaticParam(&mChaseBulletActorName_s, "ChaseBulletActorName"); + getStaticParam(&mExplodeBulletActorName_s, "ExplodeBulletActorName"); + getStaticParam(&mInsideAreaCenter_s, "InsideAreaCenter"); + getStaticParam(&mInsideAreaWidth_s, "InsideAreaWidth"); + getAITreeVariable(&mRemainsWaterBattleInfo_a, "RemainsWaterBattleInfo"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterBulletController.h b/src/Game/AI/AI/aiRemainsWaterBulletController.h new file mode 100644 index 00000000..76ad601f --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterBulletController.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterBulletController : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWaterBulletController, ksys::act::ai::Ai) +public: + explicit RemainsWaterBulletController(const InitArg& arg); + ~RemainsWaterBulletController() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x18]; + // static_param at offset 0x50 + const float* mInsideAreaRadius_s{}; + // static_param at offset 0x58 + const float* mFirstBulletTimer_s{}; + // static_param at offset 0x60 + const float* mSecondBulletTimer_s{}; + // static_param at offset 0x68 + const float* mNextBulletTimerSuccess_s{}; + // static_param at offset 0x70 + const float* mNextBulletTimerFail_s{}; + // static_param at offset 0x78 + sead::SafeString mChaseBulletNum_s{}; + // static_param at offset 0x88 + sead::SafeString mExplodeBulletNum_s{}; + // static_param at offset 0x98 + sead::SafeString mChaseBulletActorName_s{}; + // static_param at offset 0xa8 + sead::SafeString mExplodeBulletActorName_s{}; + // static_param at offset 0xb8 + const sead::Vector3f* mInsideAreaCenter_s{}; + // static_param at offset 0xc0 + const sead::Vector3f* mInsideAreaWidth_s{}; + // aitree_variable at offset 0xc8 + void* mRemainsWaterBattleInfo_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.cpp b/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.cpp new file mode 100644 index 00000000..d1cc4b3d --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiRemainsWaterChaseBulletRoot.h" + +namespace uking::ai { + +RemainsWaterChaseBulletRoot::RemainsWaterChaseBulletRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +RemainsWaterChaseBulletRoot::~RemainsWaterChaseBulletRoot() = default; + +bool RemainsWaterChaseBulletRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWaterChaseBulletRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWaterChaseBulletRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWaterChaseBulletRoot::loadParams_() { + getStaticParam(&mAtkMinDamage_s, "AtkMinDamage"); + getStaticParam(&mCheckPower_s, "CheckPower"); + getStaticParam(&mHighDamageAddSpd_s, "HighDamageAddSpd"); + getStaticParam(&mLowDamageAddSpd_s, "LowDamageAddSpd"); + getStaticParam(&mShootAddSpd_s, "ShootAddSpd"); + getStaticParam(&mResetASName_s, "ResetASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.h b/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.h new file mode 100644 index 00000000..69579509 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterChaseBulletRoot.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterChaseBulletRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWaterChaseBulletRoot, ksys::act::ai::Ai) +public: + explicit RemainsWaterChaseBulletRoot(const InitArg& arg); + ~RemainsWaterChaseBulletRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x18]; + // static_param at offset 0x50 + const int* mAtkMinDamage_s{}; + // static_param at offset 0x58 + const float* mCheckPower_s{}; + // static_param at offset 0x60 + const float* mHighDamageAddSpd_s{}; + // static_param at offset 0x68 + const float* mLowDamageAddSpd_s{}; + // static_param at offset 0x70 + const float* mShootAddSpd_s{}; + // static_param at offset 0x78 + sead::SafeString mResetASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterNormal.cpp b/src/Game/AI/AI/aiRemainsWaterNormal.cpp new file mode 100644 index 00000000..17aa627b --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterNormal.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiRemainsWaterNormal.h" + +namespace uking::ai { + +RemainsWaterNormal::RemainsWaterNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsWaterNormal::~RemainsWaterNormal() = default; + +bool RemainsWaterNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWaterNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWaterNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWaterNormal::loadParams_() { + getStaticParam(&mInsideAreaWidth_s, "InsideAreaWidth"); + getStaticParam(&mInsideAreaCenter_s, "InsideAreaCenter"); + getStaticParam(&mInsideAreaWidth02_s, "InsideAreaWidth02"); + getStaticParam(&mInsideAreaCenter02_s, "InsideAreaCenter02"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterNormal.h b/src/Game/AI/AI/aiRemainsWaterNormal.h new file mode 100644 index 00000000..8b29bad2 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterNormal.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWaterNormal, ksys::act::ai::Ai) +public: + explicit RemainsWaterNormal(const InitArg& arg); + ~RemainsWaterNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const sead::Vector3f* mInsideAreaWidth_s{}; + // static_param at offset 0x40 + const sead::Vector3f* mInsideAreaCenter_s{}; + // static_param at offset 0x48 + const sead::Vector3f* mInsideAreaWidth02_s{}; + // static_param at offset 0x50 + const sead::Vector3f* mInsideAreaCenter02_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterRoot.cpp b/src/Game/AI/AI/aiRemainsWaterRoot.cpp new file mode 100644 index 00000000..9df0719a --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRemainsWaterRoot.h" + +namespace uking::ai { + +RemainsWaterRoot::RemainsWaterRoot(const InitArg& arg) : RemainsRoot(arg) {} + +RemainsWaterRoot::~RemainsWaterRoot() = default; + +bool RemainsWaterRoot::init_(sead::Heap* heap) { + return RemainsRoot::init_(heap); +} + +void RemainsWaterRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RemainsRoot::enter_(params); +} + +void RemainsWaterRoot::leave_() { + RemainsRoot::leave_(); +} + +void RemainsWaterRoot::loadParams_() { + RemainsRoot::loadParams_(); + getAITreeVariable(&mRemainsWaterBattleInfo_a, "RemainsWaterBattleInfo"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterRoot.h b/src/Game/AI/AI/aiRemainsWaterRoot.h new file mode 100644 index 00000000..35f745ed --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiRemainsRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterRoot : public RemainsRoot { + SEAD_RTTI_OVERRIDE(RemainsWaterRoot, RemainsRoot) +public: + explicit RemainsWaterRoot(const InitArg& arg); + ~RemainsWaterRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x50 + void* mRemainsWaterBattleInfo_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.cpp b/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.cpp new file mode 100644 index 00000000..4d6dda86 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiRemainsWaterWeakPointRoot.h" + +namespace uking::ai { + +RemainsWaterWeakPointRoot::RemainsWaterWeakPointRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsWaterWeakPointRoot::~RemainsWaterWeakPointRoot() = default; + +bool RemainsWaterWeakPointRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWaterWeakPointRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWaterWeakPointRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWaterWeakPointRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.h b/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.h new file mode 100644 index 00000000..350ca037 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWaterWeakPointRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWaterWeakPointRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWaterWeakPointRoot, ksys::act::ai::Ai) +public: + explicit RemainsWaterWeakPointRoot(const InitArg& arg); + ~RemainsWaterWeakPointRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindBatteryAttack.cpp b/src/Game/AI/AI/aiRemainsWindBatteryAttack.cpp new file mode 100644 index 00000000..c064839f --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindBatteryAttack.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRemainsWindBatteryAttack.h" + +namespace uking::ai { + +RemainsWindBatteryAttack::RemainsWindBatteryAttack(const InitArg& arg) + : GuardianBeamAttackBase(arg) {} + +RemainsWindBatteryAttack::~RemainsWindBatteryAttack() = default; + +bool RemainsWindBatteryAttack::init_(sead::Heap* heap) { + return GuardianBeamAttackBase::init_(heap); +} + +void RemainsWindBatteryAttack::enter_(ksys::act::ai::InlineParamPack* params) { + GuardianBeamAttackBase::enter_(params); +} + +void RemainsWindBatteryAttack::leave_() { + GuardianBeamAttackBase::leave_(); +} + +void RemainsWindBatteryAttack::loadParams_() { + GuardianBeamAttackBase::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindBatteryAttack.h b/src/Game/AI/AI/aiRemainsWindBatteryAttack.h new file mode 100644 index 00000000..c16b2f19 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindBatteryAttack.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiGuardianBeamAttackBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWindBatteryAttack : public GuardianBeamAttackBase { + SEAD_RTTI_OVERRIDE(RemainsWindBatteryAttack, GuardianBeamAttackBase) +public: + explicit RemainsWindBatteryAttack(const InitArg& arg); + ~RemainsWindBatteryAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xc0 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindBatteryRoot.cpp b/src/Game/AI/AI/aiRemainsWindBatteryRoot.cpp new file mode 100644 index 00000000..f90bba45 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindBatteryRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiRemainsWindBatteryRoot.h" + +namespace uking::ai { + +RemainsWindBatteryRoot::RemainsWindBatteryRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemainsWindBatteryRoot::~RemainsWindBatteryRoot() = default; + +bool RemainsWindBatteryRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemainsWindBatteryRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemainsWindBatteryRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemainsWindBatteryRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindBatteryRoot.h b/src/Game/AI/AI/aiRemainsWindBatteryRoot.h new file mode 100644 index 00000000..018f6441 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindBatteryRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWindBatteryRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemainsWindBatteryRoot, ksys::act::ai::Ai) +public: + explicit RemainsWindBatteryRoot(const InitArg& arg); + ~RemainsWindBatteryRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindRoot.cpp b/src/Game/AI/AI/aiRemainsWindRoot.cpp new file mode 100644 index 00000000..81cd53a6 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiRemainsWindRoot.h" + +namespace uking::ai { + +RemainsWindRoot::RemainsWindRoot(const InitArg& arg) : RemainsRoot(arg) {} + +RemainsWindRoot::~RemainsWindRoot() = default; + +bool RemainsWindRoot::init_(sead::Heap* heap) { + return RemainsRoot::init_(heap); +} + +void RemainsWindRoot::enter_(ksys::act::ai::InlineParamPack* params) { + RemainsRoot::enter_(params); +} + +void RemainsWindRoot::leave_() { + RemainsRoot::leave_(); +} + +void RemainsWindRoot::loadParams_() { + RemainsRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemainsWindRoot.h b/src/Game/AI/AI/aiRemainsWindRoot.h new file mode 100644 index 00000000..328463a5 --- /dev/null +++ b/src/Game/AI/AI/aiRemainsWindRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRemainsRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemainsWindRoot : public RemainsRoot { + SEAD_RTTI_OVERRIDE(RemainsWindRoot, RemainsRoot) +public: + explicit RemainsWindRoot(const InitArg& arg); + ~RemainsWindRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.cpp b/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.cpp new file mode 100644 index 00000000..cc321f17 --- /dev/null +++ b/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRememberMesOneActorEnemyRoot.h" + +namespace uking::ai { + +RememberMesOneActorEnemyRoot::RememberMesOneActorEnemyRoot(const InitArg& arg) : EnemyRoot(arg) {} + +RememberMesOneActorEnemyRoot::~RememberMesOneActorEnemyRoot() = default; + +bool RememberMesOneActorEnemyRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void RememberMesOneActorEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void RememberMesOneActorEnemyRoot::leave_() { + EnemyRoot::leave_(); +} + +void RememberMesOneActorEnemyRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mRememberKey_s, "RememberKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.h b/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.h new file mode 100644 index 00000000..da9c82c9 --- /dev/null +++ b/src/Game/AI/AI/aiRememberMesOneActorEnemyRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RememberMesOneActorEnemyRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(RememberMesOneActorEnemyRoot, EnemyRoot) +public: + explicit RememberMesOneActorEnemyRoot(const InitArg& arg); + ~RememberMesOneActorEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + sead::SafeString mRememberKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemoteBomb.cpp b/src/Game/AI/AI/aiRemoteBomb.cpp new file mode 100644 index 00000000..395053b5 --- /dev/null +++ b/src/Game/AI/AI/aiRemoteBomb.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRemoteBomb.h" + +namespace uking::ai { + +RemoteBomb::RemoteBomb(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RemoteBomb::~RemoteBomb() = default; + +bool RemoteBomb::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RemoteBomb::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RemoteBomb::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RemoteBomb::loadParams_() { + getStaticParam(&mWindRatio_s, "WindRatio"); + getStaticParam(&mXLinkKey_s, "XLinkKey"); + getAITreeVariable(&mIsIgniteCarriedBomb_a, "IsIgniteCarriedBomb"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRemoteBomb.h b/src/Game/AI/AI/aiRemoteBomb.h new file mode 100644 index 00000000..76a0a460 --- /dev/null +++ b/src/Game/AI/AI/aiRemoteBomb.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RemoteBomb : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RemoteBomb, ksys::act::ai::Ai) +public: + explicit RemoteBomb(const InitArg& arg); + ~RemoteBomb() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWindRatio_s{}; + // static_param at offset 0x40 + sead::SafeString mXLinkKey_s{}; + // aitree_variable at offset 0x50 + bool* mIsIgniteCarriedBomb_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRepeatByLargeDamage.cpp b/src/Game/AI/AI/aiRepeatByLargeDamage.cpp new file mode 100644 index 00000000..d13d07f7 --- /dev/null +++ b/src/Game/AI/AI/aiRepeatByLargeDamage.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiRepeatByLargeDamage.h" + +namespace uking::ai { + +RepeatByLargeDamage::RepeatByLargeDamage(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RepeatByLargeDamage::~RepeatByLargeDamage() = default; + +bool RepeatByLargeDamage::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RepeatByLargeDamage::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RepeatByLargeDamage::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RepeatByLargeDamage::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRepeatByLargeDamage.h b/src/Game/AI/AI/aiRepeatByLargeDamage.h new file mode 100644 index 00000000..2c785cd6 --- /dev/null +++ b/src/Game/AI/AI/aiRepeatByLargeDamage.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RepeatByLargeDamage : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RepeatByLargeDamage, ksys::act::ai::Ai) +public: + explicit RepeatByLargeDamage(const InitArg& arg); + ~RepeatByLargeDamage() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRestLifeSelect.cpp b/src/Game/AI/AI/aiRestLifeSelect.cpp new file mode 100644 index 00000000..a55b57ec --- /dev/null +++ b/src/Game/AI/AI/aiRestLifeSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRestLifeSelect.h" + +namespace uking::ai { + +RestLifeSelect::RestLifeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RestLifeSelect::~RestLifeSelect() = default; + +bool RestLifeSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RestLifeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RestLifeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RestLifeSelect::loadParams_() { + getStaticParam(&mLifeRatio_s, "LifeRatio"); + getStaticParam(&mIsTrgOnly_s, "IsTrgOnly"); + getStaticParam(&mIsEnter_s, "IsEnter"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRestLifeSelect.h b/src/Game/AI/AI/aiRestLifeSelect.h new file mode 100644 index 00000000..50145bda --- /dev/null +++ b/src/Game/AI/AI/aiRestLifeSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RestLifeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RestLifeSelect, ksys::act::ai::Ai) +public: + explicit RestLifeSelect(const InitArg& arg); + ~RestLifeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLifeRatio_s{}; + // static_param at offset 0x40 + const bool* mIsTrgOnly_s{}; + // static_param at offset 0x48 + const bool* mIsEnter_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRestreintTired.cpp b/src/Game/AI/AI/aiRestreintTired.cpp new file mode 100644 index 00000000..68566a71 --- /dev/null +++ b/src/Game/AI/AI/aiRestreintTired.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRestreintTired.h" + +namespace uking::ai { + +RestreintTired::RestreintTired(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RestreintTired::~RestreintTired() = default; + +bool RestreintTired::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RestreintTired::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RestreintTired::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RestreintTired::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mCentralPos_d, "CentralPos"); + getAITreeVariable(&mIsTryingReturnRestreint_a, "IsTryingReturnRestreint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRestreintTired.h b/src/Game/AI/AI/aiRestreintTired.h new file mode 100644 index 00000000..2315cb56 --- /dev/null +++ b/src/Game/AI/AI/aiRestreintTired.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RestreintTired : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RestreintTired, ksys::act::ai::Ai) +public: + explicit RestreintTired(const InitArg& arg); + ~RestreintTired() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mCentralPos_d{}; + // aitree_variable at offset 0x48 + bool* mIsTryingReturnRestreint_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReturnFromReactionSelect.cpp b/src/Game/AI/AI/aiReturnFromReactionSelect.cpp new file mode 100644 index 00000000..df5f4b06 --- /dev/null +++ b/src/Game/AI/AI/aiReturnFromReactionSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiReturnFromReactionSelect.h" + +namespace uking::ai { + +ReturnFromReactionSelect::ReturnFromReactionSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReturnFromReactionSelect::~ReturnFromReactionSelect() = default; + +bool ReturnFromReactionSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReturnFromReactionSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReturnFromReactionSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReturnFromReactionSelect::loadParams_() { + getStaticParam(&mIsChangeToNormalByFinish_s, "IsChangeToNormalByFinish"); + getStaticParam(&mIsEnableRetFromDamage_s, "IsEnableRetFromDamage"); + getStaticParam(&mIsEnableRetFromGuard_s, "IsEnableRetFromGuard"); + getStaticParam(&mIsEnableRetFromRebound_s, "IsEnableRetFromRebound"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReturnFromReactionSelect.h b/src/Game/AI/AI/aiReturnFromReactionSelect.h new file mode 100644 index 00000000..530b0a3b --- /dev/null +++ b/src/Game/AI/AI/aiReturnFromReactionSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReturnFromReactionSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReturnFromReactionSelect, ksys::act::ai::Ai) +public: + explicit ReturnFromReactionSelect(const InitArg& arg); + ~ReturnFromReactionSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsChangeToNormalByFinish_s{}; + // static_param at offset 0x40 + const bool* mIsEnableRetFromDamage_s{}; + // static_param at offset 0x48 + const bool* mIsEnableRetFromGuard_s{}; + // static_param at offset 0x50 + const bool* mIsEnableRetFromRebound_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReuseBulletPartsRoot.cpp b/src/Game/AI/AI/aiReuseBulletPartsRoot.cpp new file mode 100644 index 00000000..f7af4ba1 --- /dev/null +++ b/src/Game/AI/AI/aiReuseBulletPartsRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiReuseBulletPartsRoot.h" + +namespace uking::ai { + +ReuseBulletPartsRoot::ReuseBulletPartsRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ReuseBulletPartsRoot::~ReuseBulletPartsRoot() = default; + +bool ReuseBulletPartsRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ReuseBulletPartsRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ReuseBulletPartsRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ReuseBulletPartsRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiReuseBulletPartsRoot.h b/src/Game/AI/AI/aiReuseBulletPartsRoot.h new file mode 100644 index 00000000..a7b44496 --- /dev/null +++ b/src/Game/AI/AI/aiReuseBulletPartsRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ReuseBulletPartsRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ReuseBulletPartsRoot, ksys::act::ai::Ai) +public: + explicit ReuseBulletPartsRoot(const InitArg& arg); + ~ReuseBulletPartsRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRideHorseAI.cpp b/src/Game/AI/AI/aiRideHorseAI.cpp new file mode 100644 index 00000000..6f45b1b7 --- /dev/null +++ b/src/Game/AI/AI/aiRideHorseAI.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiRideHorseAI.h" + +namespace uking::ai { + +RideHorseAI::RideHorseAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RideHorseAI::~RideHorseAI() = default; + +bool RideHorseAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RideHorseAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RideHorseAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RideHorseAI::loadParams_() { + getDynamicParam2(&mHasToPlayRidingOnAS_d, "HasToPlayRidingOnAS"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRideHorseAI.h b/src/Game/AI/AI/aiRideHorseAI.h new file mode 100644 index 00000000..27f7fad4 --- /dev/null +++ b/src/Game/AI/AI/aiRideHorseAI.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RideHorseAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RideHorseAI, ksys::act::ai::Ai) +public: + explicit RideHorseAI(const InitArg& arg); + ~RideHorseAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic2_param at offset 0x38 + bool* mHasToPlayRidingOnAS_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.cpp b/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.cpp new file mode 100644 index 00000000..8e3dd055 --- /dev/null +++ b/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiRitoHeroSoulGiftRoot.h" + +namespace uking::ai { + +RitoHeroSoulGiftRoot::RitoHeroSoulGiftRoot(const InitArg& arg) : HeroSoulGiftRoot(arg) {} + +RitoHeroSoulGiftRoot::~RitoHeroSoulGiftRoot() = default; + +bool RitoHeroSoulGiftRoot::init_(sead::Heap* heap) { + return HeroSoulGiftRoot::init_(heap); +} + +void RitoHeroSoulGiftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + HeroSoulGiftRoot::enter_(params); +} + +void RitoHeroSoulGiftRoot::leave_() { + HeroSoulGiftRoot::leave_(); +} + +void RitoHeroSoulGiftRoot::loadParams_() { + HeroSoulGiftRoot::loadParams_(); + getStaticParam(&mActorName_s, "ActorName"); + getStaticParam(&mScale_s, "Scale"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.h b/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.h new file mode 100644 index 00000000..4f3676e3 --- /dev/null +++ b/src/Game/AI/AI/aiRitoHeroSoulGiftRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RitoHeroSoulGiftRoot : public HeroSoulGiftRoot { + SEAD_RTTI_OVERRIDE(RitoHeroSoulGiftRoot, HeroSoulGiftRoot) +public: + explicit RitoHeroSoulGiftRoot(const InitArg& arg); + ~RitoHeroSoulGiftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + sead::SafeString mActorName_s{}; + // static_param at offset 0xa0 + const sead::Vector3f* mScale_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRodEnemyFindPlayer.cpp b/src/Game/AI/AI/aiRodEnemyFindPlayer.cpp new file mode 100644 index 00000000..3aeaddc4 --- /dev/null +++ b/src/Game/AI/AI/aiRodEnemyFindPlayer.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiRodEnemyFindPlayer.h" + +namespace uking::ai { + +RodEnemyFindPlayer::RodEnemyFindPlayer(const InitArg& arg) : LandHumEnemyFindPlayer(arg) {} + +RodEnemyFindPlayer::~RodEnemyFindPlayer() = default; + +bool RodEnemyFindPlayer::init_(sead::Heap* heap) { + return LandHumEnemyFindPlayer::init_(heap); +} + +void RodEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + LandHumEnemyFindPlayer::enter_(params); +} + +void RodEnemyFindPlayer::leave_() { + LandHumEnemyFindPlayer::leave_(); +} + +void RodEnemyFindPlayer::loadParams_() { + LandHumEnemyFindPlayer::loadParams_(); + getStaticParam(&mMagicPer_s, "MagicPer"); + getStaticParam(&mMagicIntervalIntensity_s, "MagicIntervalIntensity"); + getStaticParam(&mMagicCheckInterval_s, "MagicCheckInterval"); + getStaticParam(&mRodWeaponIdx_s, "RodWeaponIdx"); + getStaticParam(&mMagicAttackDir_s, "MagicAttackDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRodEnemyFindPlayer.h b/src/Game/AI/AI/aiRodEnemyFindPlayer.h new file mode 100644 index 00000000..ea66c9f5 --- /dev/null +++ b/src/Game/AI/AI/aiRodEnemyFindPlayer.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RodEnemyFindPlayer : public LandHumEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(RodEnemyFindPlayer, LandHumEnemyFindPlayer) +public: + explicit RodEnemyFindPlayer(const InitArg& arg); + ~RodEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1e8 + const int* mMagicPer_s{}; + // static_param at offset 0x1f0 + const int* mMagicCheckInterval_s{}; + // static_param at offset 0x1f8 + const int* mRodWeaponIdx_s{}; + // static_param at offset 0x200 + const float* mMagicAttackDir_s{}; + // static_param at offset 0x208 + const float* mMagicIntervalIntensity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRodRoot.cpp b/src/Game/AI/AI/aiRodRoot.cpp new file mode 100644 index 00000000..dfb7400d --- /dev/null +++ b/src/Game/AI/AI/aiRodRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRodRoot.h" + +namespace uking::ai { + +RodRoot::RodRoot(const InitArg& arg) : WeaponRootAI(arg) {} + +RodRoot::~RodRoot() = default; + +bool RodRoot::init_(sead::Heap* heap) { + return WeaponRootAI::init_(heap); +} + +void RodRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WeaponRootAI::enter_(params); +} + +void RodRoot::leave_() { + WeaponRootAI::leave_(); +} + +void RodRoot::loadParams_() { + WeaponRootAI::loadParams_(); + getAITreeVariable(&mMagicCreateUnit_a, "MagicCreateUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRodRoot.h b/src/Game/AI/AI/aiRodRoot.h new file mode 100644 index 00000000..2c4729bb --- /dev/null +++ b/src/Game/AI/AI/aiRodRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RodRoot : public WeaponRootAI { + SEAD_RTTI_OVERRIDE(RodRoot, WeaponRootAI) +public: + explicit RodRoot(const InitArg& arg); + ~RodRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0xe8 + void* mMagicCreateUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRopeRoot.cpp b/src/Game/AI/AI/aiRopeRoot.cpp new file mode 100644 index 00000000..c26e5b25 --- /dev/null +++ b/src/Game/AI/AI/aiRopeRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRopeRoot.h" + +namespace uking::ai { + +RopeRoot::RopeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RopeRoot::~RopeRoot() = default; + +bool RopeRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RopeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RopeRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RopeRoot::loadParams_() { + getMapUnitParam(&mRopeFlag_m, "RopeFlag"); + getMapUnitParam(&mRopeAlwaysUpdateRigidParam_m, "RopeAlwaysUpdateRigidParam"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRopeRoot.h b/src/Game/AI/AI/aiRopeRoot.h new file mode 100644 index 00000000..8cca260f --- /dev/null +++ b/src/Game/AI/AI/aiRopeRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RopeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RopeRoot, ksys::act::ai::Ai) +public: + explicit RopeRoot(const InitArg& arg); + ~RopeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mRopeFlag_m{}; + // map_unit_param at offset 0x40 + const bool* mRopeAlwaysUpdateRigidParam_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRuinGuardianRoot.cpp b/src/Game/AI/AI/aiRuinGuardianRoot.cpp new file mode 100644 index 00000000..f43d0d81 --- /dev/null +++ b/src/Game/AI/AI/aiRuinGuardianRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRuinGuardianRoot.h" + +namespace uking::ai { + +RuinGuardianRoot::RuinGuardianRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +RuinGuardianRoot::~RuinGuardianRoot() = default; + +bool RuinGuardianRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void RuinGuardianRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void RuinGuardianRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void RuinGuardianRoot::loadParams_() { + getStaticParam(&mSweepFrame_s, "SweepFrame"); + getStaticParam(&mDropThreshold_s, "DropThreshold"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRuinGuardianRoot.h b/src/Game/AI/AI/aiRuinGuardianRoot.h new file mode 100644 index 00000000..62071a25 --- /dev/null +++ b/src/Game/AI/AI/aiRuinGuardianRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RuinGuardianRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(RuinGuardianRoot, ksys::act::ai::Ai) +public: + explicit RuinGuardianRoot(const InitArg& arg); + ~RuinGuardianRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSweepFrame_s{}; + // static_param at offset 0x40 + const float* mDropThreshold_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRupeeRabbitNormal.cpp b/src/Game/AI/AI/aiRupeeRabbitNormal.cpp new file mode 100644 index 00000000..c32793c9 --- /dev/null +++ b/src/Game/AI/AI/aiRupeeRabbitNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiRupeeRabbitNormal.h" + +namespace uking::ai { + +RupeeRabbitNormal::RupeeRabbitNormal(const InitArg& arg) : PreyNormal(arg) {} + +RupeeRabbitNormal::~RupeeRabbitNormal() = default; + +bool RupeeRabbitNormal::init_(sead::Heap* heap) { + return PreyNormal::init_(heap); +} + +void RupeeRabbitNormal::enter_(ksys::act::ai::InlineParamPack* params) { + PreyNormal::enter_(params); +} + +void RupeeRabbitNormal::leave_() { + PreyNormal::leave_(); +} + +void RupeeRabbitNormal::loadParams_() { + PreyNormal::loadParams_(); + getMapUnitParam(&mDeleteEndNushiTime_m, "DeleteEndNushiTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiRupeeRabbitNormal.h b/src/Game/AI/AI/aiRupeeRabbitNormal.h new file mode 100644 index 00000000..6a719926 --- /dev/null +++ b/src/Game/AI/AI/aiRupeeRabbitNormal.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiPreyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class RupeeRabbitNormal : public PreyNormal { + SEAD_RTTI_OVERRIDE(RupeeRabbitNormal, PreyNormal) +public: + explicit RupeeRabbitNormal(const InitArg& arg); + ~RupeeRabbitNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x340 + const bool* mDeleteEndNushiTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSafeMoveAroundTarget.cpp b/src/Game/AI/AI/aiSafeMoveAroundTarget.cpp new file mode 100644 index 00000000..c9565dec --- /dev/null +++ b/src/Game/AI/AI/aiSafeMoveAroundTarget.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiSafeMoveAroundTarget.h" + +namespace uking::ai { + +SafeMoveAroundTarget::SafeMoveAroundTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SafeMoveAroundTarget::~SafeMoveAroundTarget() = default; + +bool SafeMoveAroundTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SafeMoveAroundTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SafeMoveAroundTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SafeMoveAroundTarget::loadParams_() { + getStaticParam(&mForceTurnTimeBase_s, "ForceTurnTimeBase"); + getStaticParam(&mForceTurnTimeRand_s, "ForceTurnTimeRand"); + getStaticParam(&mForceTurnStopTimeBase_s, "ForceTurnStopTimeBase"); + getStaticParam(&mForceTurnStopTimeRand_s, "ForceTurnStopTimeRand"); + getStaticParam(&mUpdateTargetPosTime_s, "UpdateTargetPosTime"); + getStaticParam(&mUpdateNumCalc_s, "UpdateNumCalc"); + getStaticParam(&mStartRange_s, "StartRange"); + getStaticParam(&mEndRange_s, "EndRange"); + getStaticParam(&mChangeRangeRate_s, "ChangeRangeRate"); + getStaticParam(&mTargetOffsetDegree_s, "TargetOffsetDegree"); + getStaticParam(&mLOSFailOffsetDegree_s, "LOSFailOffsetDegree"); + getStaticParam(&mMinOffsetLength_s, "MinOffsetLength"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSafeMoveAroundTarget.h b/src/Game/AI/AI/aiSafeMoveAroundTarget.h new file mode 100644 index 00000000..3b7157e7 --- /dev/null +++ b/src/Game/AI/AI/aiSafeMoveAroundTarget.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SafeMoveAroundTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SafeMoveAroundTarget, ksys::act::ai::Ai) +public: + explicit SafeMoveAroundTarget(const InitArg& arg); + ~SafeMoveAroundTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mForceTurnTimeBase_s{}; + // static_param at offset 0x40 + const int* mForceTurnTimeRand_s{}; + // static_param at offset 0x48 + const int* mForceTurnStopTimeBase_s{}; + // static_param at offset 0x50 + const int* mForceTurnStopTimeRand_s{}; + // static_param at offset 0x58 + const int* mUpdateTargetPosTime_s{}; + // static_param at offset 0x60 + const int* mUpdateNumCalc_s{}; + // static_param at offset 0x68 + const float* mStartRange_s{}; + // static_param at offset 0x70 + const float* mEndRange_s{}; + // static_param at offset 0x78 + const float* mChangeRangeRate_s{}; + // static_param at offset 0x80 + const float* mTargetOffsetDegree_s{}; + // static_param at offset 0x88 + const float* mLOSFailOffsetDegree_s{}; + // static_param at offset 0x90 + const float* mMinOffsetLength_s{}; + // dynamic_param at offset 0x98 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandfallWithSound.cpp b/src/Game/AI/AI/aiSandfallWithSound.cpp new file mode 100644 index 00000000..264b759d --- /dev/null +++ b/src/Game/AI/AI/aiSandfallWithSound.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSandfallWithSound.h" + +namespace uking::ai { + +SandfallWithSound::SandfallWithSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandfallWithSound::~SandfallWithSound() = default; + +bool SandfallWithSound::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandfallWithSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandfallWithSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandfallWithSound::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandfallWithSound.h b/src/Game/AI/AI/aiSandfallWithSound.h new file mode 100644 index 00000000..799b4105 --- /dev/null +++ b/src/Game/AI/AI/aiSandfallWithSound.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandfallWithSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandfallWithSound, ksys::act::ai::Ai) +public: + explicit SandfallWithSound(const InitArg& arg); + ~SandfallWithSound() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormAttackMove.cpp b/src/Game/AI/AI/aiSandwormAttackMove.cpp new file mode 100644 index 00000000..27e22e0c --- /dev/null +++ b/src/Game/AI/AI/aiSandwormAttackMove.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSandwormAttackMove.h" + +namespace uking::ai { + +SandwormAttackMove::SandwormAttackMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormAttackMove::~SandwormAttackMove() = default; + +bool SandwormAttackMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormAttackMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormAttackMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormAttackMove::loadParams_() { + getStaticParam(&mSecessionDist_s, "SecessionDist"); + getStaticParam(&mAttackAngle_s, "AttackAngle"); + getStaticParam(&mDamageAngle_s, "DamageAngle"); + getStaticParam(&mLostDist_s, "LostDist"); + getStaticParam(&mDamageBaseNode_s, "DamageBaseNode"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormAttackMove.h b/src/Game/AI/AI/aiSandwormAttackMove.h new file mode 100644 index 00000000..b162ed49 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormAttackMove.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormAttackMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormAttackMove, ksys::act::ai::Ai) +public: + explicit SandwormAttackMove(const InitArg& arg); + ~SandwormAttackMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSecessionDist_s{}; + // static_param at offset 0x40 + const float* mAttackAngle_s{}; + // static_param at offset 0x48 + const float* mDamageAngle_s{}; + // static_param at offset 0x50 + const float* mLostDist_s{}; + // static_param at offset 0x58 + sead::SafeString mDamageBaseNode_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormBattle.cpp b/src/Game/AI/AI/aiSandwormBattle.cpp new file mode 100644 index 00000000..8aa1e662 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormBattle.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSandwormBattle.h" + +namespace uking::ai { + +SandwormBattle::SandwormBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormBattle::~SandwormBattle() = default; + +bool SandwormBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormBattle::loadParams_() { + getStaticParam(&mAttackAngle_s, "AttackAngle"); + getStaticParam(&mAttackInterval_s, "AttackInterval"); + getStaticParam(&mAttackIntervalRand_s, "AttackIntervalRand"); + getStaticParam(&mBattleFailTimer_s, "BattleFailTimer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormBattle.h b/src/Game/AI/AI/aiSandwormBattle.h new file mode 100644 index 00000000..9663d360 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormBattle.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormBattle, ksys::act::ai::Ai) +public: + explicit SandwormBattle(const InitArg& arg); + ~SandwormBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAttackAngle_s{}; + // static_param at offset 0x40 + const float* mAttackInterval_s{}; + // static_param at offset 0x48 + const float* mAttackIntervalRand_s{}; + // static_param at offset 0x50 + const float* mBattleFailTimer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormBlownOff.cpp b/src/Game/AI/AI/aiSandwormBlownOff.cpp new file mode 100644 index 00000000..a05b768b --- /dev/null +++ b/src/Game/AI/AI/aiSandwormBlownOff.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSandwormBlownOff.h" + +namespace uking::ai { + +SandwormBlownOff::SandwormBlownOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormBlownOff::~SandwormBlownOff() = default; + +bool SandwormBlownOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormBlownOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormBlownOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormBlownOff::loadParams_() { + getStaticParam(&mBlownOffTimer_s, "BlownOffTimer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormBlownOff.h b/src/Game/AI/AI/aiSandwormBlownOff.h new file mode 100644 index 00000000..35ac60fb --- /dev/null +++ b/src/Game/AI/AI/aiSandwormBlownOff.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormBlownOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormBlownOff, ksys::act::ai::Ai) +public: + explicit SandwormBlownOff(const InitArg& arg); + ~SandwormBlownOff() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBlownOffTimer_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormCircleMoveTarget.cpp b/src/Game/AI/AI/aiSandwormCircleMoveTarget.cpp new file mode 100644 index 00000000..296cc510 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormCircleMoveTarget.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSandwormCircleMoveTarget.h" + +namespace uking::ai { + +SandwormCircleMoveTarget::SandwormCircleMoveTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormCircleMoveTarget::~SandwormCircleMoveTarget() = default; + +bool SandwormCircleMoveTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormCircleMoveTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormCircleMoveTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormCircleMoveTarget::loadParams_() { + getStaticParam(&mDirection_s, "Direction"); + getStaticParam(&mRadius_s, "Radius"); + getStaticParam(&mRadiusMargin_s, "RadiusMargin"); + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mFrontCheckLength_s, "FrontCheckLength"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormCircleMoveTarget.h b/src/Game/AI/AI/aiSandwormCircleMoveTarget.h new file mode 100644 index 00000000..167e1854 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormCircleMoveTarget.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormCircleMoveTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormCircleMoveTarget, ksys::act::ai::Ai) +public: + explicit SandwormCircleMoveTarget(const InitArg& arg); + ~SandwormCircleMoveTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mDirection_s{}; + // static_param at offset 0x40 + const float* mRadius_s{}; + // static_param at offset 0x48 + const float* mRadiusMargin_s{}; + // static_param at offset 0x50 + const float* mSpeed_s{}; + // static_param at offset 0x58 + const float* mFrontCheckLength_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormFindTarget.cpp b/src/Game/AI/AI/aiSandwormFindTarget.cpp new file mode 100644 index 00000000..4d3060ae --- /dev/null +++ b/src/Game/AI/AI/aiSandwormFindTarget.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSandwormFindTarget.h" + +namespace uking::ai { + +SandwormFindTarget::SandwormFindTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormFindTarget::~SandwormFindTarget() = default; + +bool SandwormFindTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormFindTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormFindTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormFindTarget::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mLostRange_s, "LostRange"); + getStaticParam(&mAttackRange_s, "AttackRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormFindTarget.h b/src/Game/AI/AI/aiSandwormFindTarget.h new file mode 100644 index 00000000..6057bea5 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormFindTarget.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormFindTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormFindTarget, ksys::act::ai::Ai) +public: + explicit SandwormFindTarget(const InitArg& arg); + ~SandwormFindTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const float* mLostVMin_s{}; + // static_param at offset 0x48 + const float* mLostVMax_s{}; + // static_param at offset 0x50 + const float* mLostRange_s{}; + // static_param at offset 0x58 + const float* mAttackRange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormLost.cpp b/src/Game/AI/AI/aiSandwormLost.cpp new file mode 100644 index 00000000..12f7ffa8 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormLost.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSandwormLost.h" + +namespace uking::ai { + +SandwormLost::SandwormLost(const InitArg& arg) : EnemyLost(arg) {} + +SandwormLost::~SandwormLost() = default; + +bool SandwormLost::init_(sead::Heap* heap) { + return EnemyLost::init_(heap); +} + +void SandwormLost::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyLost::enter_(params); +} + +void SandwormLost::leave_() { + EnemyLost::leave_(); +} + +void SandwormLost::loadParams_() { + EnemyLost::loadParams_(); + getStaticParam(&mDiveSandOffset_s, "DiveSandOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormLost.h b/src/Game/AI/AI/aiSandwormLost.h new file mode 100644 index 00000000..f81eed82 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormLost.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyLost.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormLost : public EnemyLost { + SEAD_RTTI_OVERRIDE(SandwormLost, EnemyLost) +public: + explicit SandwormLost(const InitArg& arg); + ~SandwormLost() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const float* mDiveSandOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNavSearchWait.cpp b/src/Game/AI/AI/aiSandwormNavSearchWait.cpp new file mode 100644 index 00000000..6515083d --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNavSearchWait.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSandwormNavSearchWait.h" + +namespace uking::ai { + +SandwormNavSearchWait::SandwormNavSearchWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormNavSearchWait::~SandwormNavSearchWait() = default; + +bool SandwormNavSearchWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormNavSearchWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormNavSearchWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormNavSearchWait::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNavSearchWait.h b/src/Game/AI/AI/aiSandwormNavSearchWait.h new file mode 100644 index 00000000..3421ba52 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNavSearchWait.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormNavSearchWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormNavSearchWait, ksys::act::ai::Ai) +public: + explicit SandwormNavSearchWait(const InitArg& arg); + ~SandwormNavSearchWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNormal.cpp b/src/Game/AI/AI/aiSandwormNormal.cpp new file mode 100644 index 00000000..cdf4fa92 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSandwormNormal.h" + +namespace uking::ai { + +SandwormNormal::SandwormNormal(const InitArg& arg) : SandwormNormalBase(arg) {} + +SandwormNormal::~SandwormNormal() = default; + +bool SandwormNormal::init_(sead::Heap* heap) { + return SandwormNormalBase::init_(heap); +} + +void SandwormNormal::enter_(ksys::act::ai::InlineParamPack* params) { + SandwormNormalBase::enter_(params); +} + +void SandwormNormal::leave_() { + SandwormNormalBase::leave_(); +} + +void SandwormNormal::loadParams_() { + SandwormNormalBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNormal.h b/src/Game/AI/AI/aiSandwormNormal.h new file mode 100644 index 00000000..eeed890e --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSandwormNormalBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormNormal : public SandwormNormalBase { + SEAD_RTTI_OVERRIDE(SandwormNormal, SandwormNormalBase) +public: + explicit SandwormNormal(const InitArg& arg); + ~SandwormNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNormalBase.cpp b/src/Game/AI/AI/aiSandwormNormalBase.cpp new file mode 100644 index 00000000..d4c45758 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNormalBase.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSandwormNormalBase.h" + +namespace uking::ai { + +SandwormNormalBase::SandwormNormalBase(const InitArg& arg) : EnemyNormal(arg) {} + +SandwormNormalBase::~SandwormNormalBase() = default; + +bool SandwormNormalBase::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void SandwormNormalBase::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void SandwormNormalBase::leave_() { + EnemyNormal::leave_(); +} + +void SandwormNormalBase::loadParams_() { + EnemyNormal::loadParams_(); + getStaticParam(&mSealedSight_s, "SealedSight"); + getStaticParam(&mSealedHearing_s, "SealedHearing"); + getStaticParam(&mSealedTerror_s, "SealedTerror"); + getStaticParam(&mSealedWorry_s, "SealedWorry"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNormalBase.h b/src/Game/AI/AI/aiSandwormNormalBase.h new file mode 100644 index 00000000..cc972f44 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNormalBase.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormNormalBase : public EnemyNormal { + SEAD_RTTI_OVERRIDE(SandwormNormalBase, EnemyNormal) +public: + explicit SandwormNormalBase(const InitArg& arg); + ~SandwormNormalBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x3d0 + const bool* mSealedSight_s{}; + // static_param at offset 0x3d8 + const bool* mSealedHearing_s{}; + // static_param at offset 0x3e0 + const bool* mSealedTerror_s{}; + // static_param at offset 0x3e8 + const bool* mSealedWorry_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNoticeSound.cpp b/src/Game/AI/AI/aiSandwormNoticeSound.cpp new file mode 100644 index 00000000..3674383b --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNoticeSound.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSandwormNoticeSound.h" + +namespace uking::ai { + +SandwormNoticeSound::SandwormNoticeSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormNoticeSound::~SandwormNoticeSound() = default; + +bool SandwormNoticeSound::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormNoticeSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormNoticeSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormNoticeSound::loadParams_() { + getStaticParam(&mRetryDist_s, "RetryDist"); + getStaticParam(&mTargetActorLockOnDist_s, "TargetActorLockOnDist"); + getStaticParam(&mTargetPosLockOnDist_s, "TargetPosLockOnDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormNoticeSound.h b/src/Game/AI/AI/aiSandwormNoticeSound.h new file mode 100644 index 00000000..2083fb81 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormNoticeSound.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormNoticeSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormNoticeSound, ksys::act::ai::Ai) +public: + explicit SandwormNoticeSound(const InitArg& arg); + ~SandwormNoticeSound() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRetryDist_s{}; + // static_param at offset 0x40 + const float* mTargetActorLockOnDist_s{}; + // static_param at offset 0x48 + const float* mTargetPosLockOnDist_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRNormal.cpp b/src/Game/AI/AI/aiSandwormRNormal.cpp new file mode 100644 index 00000000..c5f38bb0 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSandwormRNormal.h" + +namespace uking::ai { + +SandwormRNormal::SandwormRNormal(const InitArg& arg) : SandwormNormal(arg) {} + +SandwormRNormal::~SandwormRNormal() = default; + +bool SandwormRNormal::init_(sead::Heap* heap) { + return SandwormNormal::init_(heap); +} + +void SandwormRNormal::enter_(ksys::act::ai::InlineParamPack* params) { + SandwormNormal::enter_(params); +} + +void SandwormRNormal::leave_() { + SandwormNormal::leave_(); +} + +void SandwormRNormal::loadParams_() { + SandwormNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRNormal.h b/src/Game/AI/AI/aiSandwormRNormal.h new file mode 100644 index 00000000..17687774 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSandwormNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormRNormal : public SandwormNormal { + SEAD_RTTI_OVERRIDE(SandwormRNormal, SandwormNormal) +public: + explicit SandwormRNormal(const InitArg& arg); + ~SandwormRNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRRoot.cpp b/src/Game/AI/AI/aiSandwormRRoot.cpp new file mode 100644 index 00000000..8694b8c7 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSandwormRRoot.h" + +namespace uking::ai { + +SandwormRRoot::SandwormRRoot(const InitArg& arg) : EnemyRoot(arg) {} + +SandwormRRoot::~SandwormRRoot() = default; + +bool SandwormRRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void SandwormRRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void SandwormRRoot::leave_() { + EnemyRoot::leave_(); +} + +void SandwormRRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mSandOffset_s, "SandOffset"); + getStaticParam(&mWeakPointDamageRate_s, "WeakPointDamageRate"); + getStaticParam(&mWeakChimicalDamageRate_s, "WeakChimicalDamageRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRRoot.h b/src/Game/AI/AI/aiSandwormRRoot.h new file mode 100644 index 00000000..da5b0324 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRRoot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormRRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(SandwormRRoot, EnemyRoot) +public: + explicit SandwormRRoot(const InitArg& arg); + ~SandwormRRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const float* mSandOffset_s{}; + // static_param at offset 0x1e0 + const float* mWeakPointDamageRate_s{}; + // static_param at offset 0x1e8 + const float* mWeakChimicalDamageRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormReaction.cpp b/src/Game/AI/AI/aiSandwormReaction.cpp new file mode 100644 index 00000000..8d4318e7 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSandwormReaction.h" + +namespace uking::ai { + +SandwormReaction::SandwormReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +SandwormReaction::~SandwormReaction() = default; + +bool SandwormReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void SandwormReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void SandwormReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void SandwormReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormReaction.h b/src/Game/AI/AI/aiSandwormReaction.h new file mode 100644 index 00000000..5f3035d7 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(SandwormReaction, EnemyDefaultReaction) +public: + explicit SandwormReaction(const InitArg& arg); + ~SandwormReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRoam.cpp b/src/Game/AI/AI/aiSandwormRoam.cpp new file mode 100644 index 00000000..22cd8c8d --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRoam.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSandwormRoam.h" + +namespace uking::ai { + +SandwormRoam::SandwormRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormRoam::~SandwormRoam() = default; + +bool SandwormRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormRoam::loadParams_() { + getStaticParam(&mJumpTimerBase_s, "JumpTimerBase"); + getStaticParam(&mJumpTimerRand_s, "JumpTimerRand"); + getStaticParam(&mJumpDistanceXZ_s, "JumpDistanceXZ"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRoam.h b/src/Game/AI/AI/aiSandwormRoam.h new file mode 100644 index 00000000..24516ff2 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRoam.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormRoam, ksys::act::ai::Ai) +public: + explicit SandwormRoam(const InitArg& arg); + ~SandwormRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mJumpTimerBase_s{}; + // static_param at offset 0x40 + const float* mJumpTimerRand_s{}; + // static_param at offset 0x48 + const float* mJumpDistanceXZ_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRoot.cpp b/src/Game/AI/AI/aiSandwormRoot.cpp new file mode 100644 index 00000000..0c0730d8 --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSandwormRoot.h" + +namespace uking::ai { + +SandwormRoot::SandwormRoot(const InitArg& arg) : EnemyRoot(arg) {} + +SandwormRoot::~SandwormRoot() = default; + +bool SandwormRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void SandwormRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void SandwormRoot::leave_() { + EnemyRoot::leave_(); +} + +void SandwormRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mSandOffset_s, "SandOffset"); + getStaticParam(&mWeakPointDamageRate_s, "WeakPointDamageRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormRoot.h b/src/Game/AI/AI/aiSandwormRoot.h new file mode 100644 index 00000000..261b5efa --- /dev/null +++ b/src/Game/AI/AI/aiSandwormRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(SandwormRoot, EnemyRoot) +public: + explicit SandwormRoot(const InitArg& arg); + ~SandwormRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const float* mSandOffset_s{}; + // static_param at offset 0x1e0 + const float* mWeakPointDamageRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormStun.cpp b/src/Game/AI/AI/aiSandwormStun.cpp new file mode 100644 index 00000000..2abc0dfe --- /dev/null +++ b/src/Game/AI/AI/aiSandwormStun.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSandwormStun.h" + +namespace uking::ai { + +SandwormStun::SandwormStun(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SandwormStun::~SandwormStun() = default; + +bool SandwormStun::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SandwormStun::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SandwormStun::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SandwormStun::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSandwormStun.h b/src/Game/AI/AI/aiSandwormStun.h new file mode 100644 index 00000000..b56a765a --- /dev/null +++ b/src/Game/AI/AI/aiSandwormStun.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SandwormStun : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SandwormStun, ksys::act::ai::Ai) +public: + explicit SandwormStun(const InitArg& arg); + ~SandwormStun() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSelfXRotSelector.cpp b/src/Game/AI/AI/aiSelfXRotSelector.cpp new file mode 100644 index 00000000..a8600954 --- /dev/null +++ b/src/Game/AI/AI/aiSelfXRotSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSelfXRotSelector.h" + +namespace uking::ai { + +SelfXRotSelector::SelfXRotSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SelfXRotSelector::~SelfXRotSelector() = default; + +bool SelfXRotSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SelfXRotSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SelfXRotSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SelfXRotSelector::loadParams_() { + getStaticParam(&mAngle_s, "Angle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSelfXRotSelector.h b/src/Game/AI/AI/aiSelfXRotSelector.h new file mode 100644 index 00000000..a3438656 --- /dev/null +++ b/src/Game/AI/AI/aiSelfXRotSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SelfXRotSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SelfXRotSelector, ksys::act::ai::Ai) +public: + explicit SelfXRotSelector(const InitArg& arg); + ~SelfXRotSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqAnimalAttack.cpp b/src/Game/AI/AI/aiSeqAnimalAttack.cpp new file mode 100644 index 00000000..e385e004 --- /dev/null +++ b/src/Game/AI/AI/aiSeqAnimalAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqAnimalAttack.h" + +namespace uking::ai { + +SeqAnimalAttack::SeqAnimalAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqAnimalAttack::~SeqAnimalAttack() = default; + +bool SeqAnimalAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqAnimalAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqAnimalAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqAnimalAttack::loadParams_() { + getStaticParam(&mIsUseAfterAttackState_s, "IsUseAfterAttackState"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqAnimalAttack.h b/src/Game/AI/AI/aiSeqAnimalAttack.h new file mode 100644 index 00000000..c29cd09b --- /dev/null +++ b/src/Game/AI/AI/aiSeqAnimalAttack.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqAnimalAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqAnimalAttack, ksys::act::ai::Ai) +public: + explicit SeqAnimalAttack(const InitArg& arg); + ~SeqAnimalAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsUseAfterAttackState_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqAtHitAction.cpp b/src/Game/AI/AI/aiSeqAtHitAction.cpp new file mode 100644 index 00000000..5837c732 --- /dev/null +++ b/src/Game/AI/AI/aiSeqAtHitAction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqAtHitAction.h" + +namespace uking::ai { + +SeqAtHitAction::SeqAtHitAction(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqAtHitAction::~SeqAtHitAction() = default; + +bool SeqAtHitAction::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void SeqAtHitAction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqAtHitAction::leave_() { + SeqTwoAction::leave_(); +} + +void SeqAtHitAction::loadParams_() { + SeqTwoAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqAtHitAction.h b/src/Game/AI/AI/aiSeqAtHitAction.h new file mode 100644 index 00000000..05468129 --- /dev/null +++ b/src/Game/AI/AI/aiSeqAtHitAction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqAtHitAction : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqAtHitAction, SeqTwoAction) +public: + explicit SeqAtHitAction(const InitArg& arg); + ~SeqAtHitAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqCloseDistTwoAction.cpp b/src/Game/AI/AI/aiSeqCloseDistTwoAction.cpp new file mode 100644 index 00000000..bab44ca4 --- /dev/null +++ b/src/Game/AI/AI/aiSeqCloseDistTwoAction.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiSeqCloseDistTwoAction.h" + +namespace uking::ai { + +SeqCloseDistTwoAction::SeqCloseDistTwoAction(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqCloseDistTwoAction::~SeqCloseDistTwoAction() = default; + +void SeqCloseDistTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqCloseDistTwoAction::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mCloseDist_s, "CloseDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqCloseDistTwoAction.h b/src/Game/AI/AI/aiSeqCloseDistTwoAction.h new file mode 100644 index 00000000..a51507fb --- /dev/null +++ b/src/Game/AI/AI/aiSeqCloseDistTwoAction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqCloseDistTwoAction : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqCloseDistTwoAction, SeqTwoAction) +public: + explicit SeqCloseDistTwoAction(const InitArg& arg); + ~SeqCloseDistTwoAction() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mWeaponIdx_s{}; + // static_param at offset 0x58 + const float* mCloseDist_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.cpp b/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.cpp new file mode 100644 index 00000000..70a0e5da --- /dev/null +++ b/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiSeqDynamicTimeredTwoAction.h" + +namespace uking::ai { + +SeqDynamicTimeredTwoAction::SeqDynamicTimeredTwoAction(const InitArg& arg) + : SeqTimeredTwoAction(arg) {} + +SeqDynamicTimeredTwoAction::~SeqDynamicTimeredTwoAction() = default; + +void SeqDynamicTimeredTwoAction::loadParams_() { + SeqTimeredTwoAction::loadParams_(); + getDynamicParam(&mDynFirstActionTime_d, "DynFirstActionTime"); + getDynamicParam(&mDynSecondActionTime_d, "DynSecondActionTime"); + getDynamicParam(&mDynAllActionTime_d, "DynAllActionTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.h b/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.h new file mode 100644 index 00000000..8a9587bf --- /dev/null +++ b/src/Game/AI/AI/aiSeqDynamicTimeredTwoAction.h @@ -0,0 +1,25 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTimeredTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqDynamicTimeredTwoAction : public SeqTimeredTwoAction { + SEAD_RTTI_OVERRIDE(SeqDynamicTimeredTwoAction, SeqTimeredTwoAction) +public: + explicit SeqDynamicTimeredTwoAction(const InitArg& arg); + ~SeqDynamicTimeredTwoAction() override; + + void loadParams_() override; + +protected: + // dynamic_param at offset 0x70 + int* mDynFirstActionTime_d{}; + // dynamic_param at offset 0x78 + int* mDynSecondActionTime_d{}; + // dynamic_param at offset 0x80 + int* mDynAllActionTime_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqFirstPointTwo.cpp b/src/Game/AI/AI/aiSeqFirstPointTwo.cpp new file mode 100644 index 00000000..4fedaa39 --- /dev/null +++ b/src/Game/AI/AI/aiSeqFirstPointTwo.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqFirstPointTwo.h" + +namespace uking::ai { + +SeqFirstPointTwo::SeqFirstPointTwo(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqFirstPointTwo::~SeqFirstPointTwo() = default; + +bool SeqFirstPointTwo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqFirstPointTwo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqFirstPointTwo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqFirstPointTwo::loadParams_() { + getStaticParam(&mIsFinishedByFailAction_s, "IsFinishedByFailAction"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqFirstPointTwo.h b/src/Game/AI/AI/aiSeqFirstPointTwo.h new file mode 100644 index 00000000..1b64590f --- /dev/null +++ b/src/Game/AI/AI/aiSeqFirstPointTwo.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqFirstPointTwo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqFirstPointTwo, ksys::act::ai::Ai) +public: + explicit SeqFirstPointTwo(const InitArg& arg); + ~SeqFirstPointTwo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsFinishedByFailAction_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqGroundHit.cpp b/src/Game/AI/AI/aiSeqGroundHit.cpp new file mode 100644 index 00000000..e78ca031 --- /dev/null +++ b/src/Game/AI/AI/aiSeqGroundHit.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqGroundHit.h" + +namespace uking::ai { + +SeqGroundHit::SeqGroundHit(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqGroundHit::~SeqGroundHit() = default; + +bool SeqGroundHit::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqGroundHit::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqGroundHit::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqGroundHit::loadParams_() { + getStaticParam(&mCheckType_s, "CheckType"); + getStaticParam(&mIsCheckChangeable_s, "IsCheckChangeable"); + getStaticParam(&mIsNoHitEnd_s, "IsNoHitEnd"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqGroundHit.h b/src/Game/AI/AI/aiSeqGroundHit.h new file mode 100644 index 00000000..c334ab23 --- /dev/null +++ b/src/Game/AI/AI/aiSeqGroundHit.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqGroundHit : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqGroundHit, ksys::act::ai::Ai) +public: + explicit SeqGroundHit(const InitArg& arg); + ~SeqGroundHit() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCheckType_s{}; + // static_param at offset 0x40 + const bool* mIsCheckChangeable_s{}; + // static_param at offset 0x48 + const bool* mIsNoHitEnd_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.cpp b/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.cpp new file mode 100644 index 00000000..84a65524 --- /dev/null +++ b/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqGroundHitAssassinBoss.h" + +namespace uking::ai { + +SeqGroundHitAssassinBoss::SeqGroundHitAssassinBoss(const InitArg& arg) : SeqGroundHit(arg) {} + +SeqGroundHitAssassinBoss::~SeqGroundHitAssassinBoss() = default; + +bool SeqGroundHitAssassinBoss::init_(sead::Heap* heap) { + return SeqGroundHit::init_(heap); +} + +void SeqGroundHitAssassinBoss::enter_(ksys::act::ai::InlineParamPack* params) { + SeqGroundHit::enter_(params); +} + +void SeqGroundHitAssassinBoss::leave_() { + SeqGroundHit::leave_(); +} + +void SeqGroundHitAssassinBoss::loadParams_() { + SeqGroundHit::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.h b/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.h new file mode 100644 index 00000000..ddcc666d --- /dev/null +++ b/src/Game/AI/AI/aiSeqGroundHitAssassinBoss.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqGroundHit.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqGroundHitAssassinBoss : public SeqGroundHit { + SEAD_RTTI_OVERRIDE(SeqGroundHitAssassinBoss, SeqGroundHit) +public: + explicit SeqGroundHitAssassinBoss(const InitArg& arg); + ~SeqGroundHitAssassinBoss() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqHiddenOctarockSearch.cpp b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.cpp new file mode 100644 index 00000000..7459f009 --- /dev/null +++ b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSeqHiddenOctarockSearch.h" + +namespace uking::ai { + +SeqHiddenOctarockSearch::SeqHiddenOctarockSearch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqHiddenOctarockSearch::~SeqHiddenOctarockSearch() = default; + +bool SeqHiddenOctarockSearch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqHiddenOctarockSearch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqHiddenOctarockSearch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqHiddenOctarockSearch::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h new file mode 100644 index 00000000..bbfd4d10 --- /dev/null +++ b/src/Game/AI/AI/aiSeqHiddenOctarockSearch.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqHiddenOctarockSearch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqHiddenOctarockSearch, ksys::act::ai::Ai) +public: + explicit SeqHiddenOctarockSearch(const InitArg& arg); + ~SeqHiddenOctarockSearch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqIfElseAction.cpp b/src/Game/AI/AI/aiSeqIfElseAction.cpp new file mode 100644 index 00000000..435e59a8 --- /dev/null +++ b/src/Game/AI/AI/aiSeqIfElseAction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqIfElseAction.h" + +namespace uking::ai { + +SeqIfElseAction::SeqIfElseAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqIfElseAction::~SeqIfElseAction() = default; + +bool SeqIfElseAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqIfElseAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqIfElseAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqIfElseAction::loadParams_() { + getStaticParam(&mFailType_s, "FailType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqIfElseAction.h b/src/Game/AI/AI/aiSeqIfElseAction.h new file mode 100644 index 00000000..7c2bdacc --- /dev/null +++ b/src/Game/AI/AI/aiSeqIfElseAction.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqIfElseAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqIfElseAction, ksys::act::ai::Ai) +public: + explicit SeqIfElseAction(const InitArg& arg); + ~SeqIfElseAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFailType_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqIfFailAction.cpp b/src/Game/AI/AI/aiSeqIfFailAction.cpp new file mode 100644 index 00000000..ea44de3d --- /dev/null +++ b/src/Game/AI/AI/aiSeqIfFailAction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqIfFailAction.h" + +namespace uking::ai { + +SeqIfFailAction::SeqIfFailAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqIfFailAction::~SeqIfFailAction() = default; + +bool SeqIfFailAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqIfFailAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqIfFailAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqIfFailAction::loadParams_() { + getStaticParam(&mIsEndChangeable_s, "IsEndChangeable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqIfFailAction.h b/src/Game/AI/AI/aiSeqIfFailAction.h new file mode 100644 index 00000000..45029d10 --- /dev/null +++ b/src/Game/AI/AI/aiSeqIfFailAction.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqIfFailAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqIfFailAction, ksys::act::ai::Ai) +public: + explicit SeqIfFailAction(const InitArg& arg); + ~SeqIfFailAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsEndChangeable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqNextMessage.cpp b/src/Game/AI/AI/aiSeqNextMessage.cpp new file mode 100644 index 00000000..6b47eacf --- /dev/null +++ b/src/Game/AI/AI/aiSeqNextMessage.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqNextMessage.h" + +namespace uking::ai { + +SeqNextMessage::SeqNextMessage(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqNextMessage::~SeqNextMessage() = default; + +bool SeqNextMessage::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void SeqNextMessage::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqNextMessage::leave_() { + SeqTwoAction::leave_(); +} + +void SeqNextMessage::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mDelayTimeMax_s, "DelayTimeMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqNextMessage.h b/src/Game/AI/AI/aiSeqNextMessage.h new file mode 100644 index 00000000..92262bd5 --- /dev/null +++ b/src/Game/AI/AI/aiSeqNextMessage.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqNextMessage : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqNextMessage, SeqTwoAction) +public: + explicit SeqNextMessage(const InitArg& arg); + ~SeqNextMessage() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mDelayTimeMax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqOctarockAttack.cpp b/src/Game/AI/AI/aiSeqOctarockAttack.cpp new file mode 100644 index 00000000..d40f00ae --- /dev/null +++ b/src/Game/AI/AI/aiSeqOctarockAttack.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqOctarockAttack.h" + +namespace uking::ai { + +SeqOctarockAttack::SeqOctarockAttack(const InitArg& arg) : SeqThreeAction(arg) {} + +SeqOctarockAttack::~SeqOctarockAttack() = default; + +bool SeqOctarockAttack::init_(sead::Heap* heap) { + return SeqThreeAction::init_(heap); +} + +void SeqOctarockAttack::enter_(ksys::act::ai::InlineParamPack* params) { + SeqThreeAction::enter_(params); +} + +void SeqOctarockAttack::leave_() { + SeqThreeAction::leave_(); +} + +void SeqOctarockAttack::loadParams_() { + SeqThreeAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqOctarockAttack.h b/src/Game/AI/AI/aiSeqOctarockAttack.h new file mode 100644 index 00000000..4c234efa --- /dev/null +++ b/src/Game/AI/AI/aiSeqOctarockAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqThreeAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqOctarockAttack : public SeqThreeAction { + SEAD_RTTI_OVERRIDE(SeqOctarockAttack, SeqThreeAction) +public: + explicit SeqOctarockAttack(const InitArg& arg); + ~SeqOctarockAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqOctarockWigReaction.cpp b/src/Game/AI/AI/aiSeqOctarockWigReaction.cpp new file mode 100644 index 00000000..7045fccb --- /dev/null +++ b/src/Game/AI/AI/aiSeqOctarockWigReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqOctarockWigReaction.h" + +namespace uking::ai { + +SeqOctarockWigReaction::SeqOctarockWigReaction(const InitArg& arg) : SeqThreeAction(arg) {} + +SeqOctarockWigReaction::~SeqOctarockWigReaction() = default; + +bool SeqOctarockWigReaction::init_(sead::Heap* heap) { + return SeqThreeAction::init_(heap); +} + +void SeqOctarockWigReaction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqThreeAction::enter_(params); +} + +void SeqOctarockWigReaction::leave_() { + SeqThreeAction::leave_(); +} + +void SeqOctarockWigReaction::loadParams_() { + SeqThreeAction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqOctarockWigReaction.h b/src/Game/AI/AI/aiSeqOctarockWigReaction.h new file mode 100644 index 00000000..72f27fff --- /dev/null +++ b/src/Game/AI/AI/aiSeqOctarockWigReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqThreeAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqOctarockWigReaction : public SeqThreeAction { + SEAD_RTTI_OVERRIDE(SeqOctarockWigReaction, SeqThreeAction) +public: + explicit SeqOctarockWigReaction(const InitArg& arg); + ~SeqOctarockWigReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqPredictOctarockAttack.cpp b/src/Game/AI/AI/aiSeqPredictOctarockAttack.cpp new file mode 100644 index 00000000..976c21df --- /dev/null +++ b/src/Game/AI/AI/aiSeqPredictOctarockAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqPredictOctarockAttack.h" + +namespace uking::ai { + +SeqPredictOctarockAttack::SeqPredictOctarockAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqPredictOctarockAttack::~SeqPredictOctarockAttack() = default; + +bool SeqPredictOctarockAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqPredictOctarockAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqPredictOctarockAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqPredictOctarockAttack::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetVel_d, "TargetVel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqPredictOctarockAttack.h b/src/Game/AI/AI/aiSeqPredictOctarockAttack.h new file mode 100644 index 00000000..46b65b0e --- /dev/null +++ b/src/Game/AI/AI/aiSeqPredictOctarockAttack.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqPredictOctarockAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqPredictOctarockAttack, ksys::act::ai::Ai) +public: + explicit SeqPredictOctarockAttack(const InitArg& arg); + ~SeqPredictOctarockAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetVel_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqPursuit.cpp b/src/Game/AI/AI/aiSeqPursuit.cpp new file mode 100644 index 00000000..3c8173de --- /dev/null +++ b/src/Game/AI/AI/aiSeqPursuit.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSeqPursuit.h" + +namespace uking::ai { + +SeqPursuit::SeqPursuit(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqPursuit::~SeqPursuit() = default; + +bool SeqPursuit::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void SeqPursuit::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqPursuit::leave_() { + SeqTwoAction::leave_(); +} + +void SeqPursuit::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mPursuitPer_s, "PursuitPer"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mPursuitDist_s, "PursuitDist"); + getStaticParam(&mIsEndPursuit_s, "IsEndPursuit"); + getStaticParam(&mIsGuardNoPursuit_s, "IsGuardNoPursuit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqPursuit.h b/src/Game/AI/AI/aiSeqPursuit.h new file mode 100644 index 00000000..1cc4eca1 --- /dev/null +++ b/src/Game/AI/AI/aiSeqPursuit.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqPursuit : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqPursuit, SeqTwoAction) +public: + explicit SeqPursuit(const InitArg& arg); + ~SeqPursuit() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mPursuitPer_s{}; + // static_param at offset 0x58 + const int* mWeaponIdx_s{}; + // static_param at offset 0x60 + const float* mPursuitDist_s{}; + // static_param at offset 0x68 + const bool* mIsEndPursuit_s{}; + // static_param at offset 0x70 + const bool* mIsGuardNoPursuit_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqRandomRepeat.cpp b/src/Game/AI/AI/aiSeqRandomRepeat.cpp new file mode 100644 index 00000000..3e89ffff --- /dev/null +++ b/src/Game/AI/AI/aiSeqRandomRepeat.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqRandomRepeat.h" + +namespace uking::ai { + +SeqRandomRepeat::SeqRandomRepeat(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqRandomRepeat::~SeqRandomRepeat() = default; + +bool SeqRandomRepeat::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqRandomRepeat::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqRandomRepeat::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqRandomRepeat::loadParams_() { + getStaticParam(&mMinActionNum_s, "MinActionNum"); + getStaticParam(&mMaxActionNum_s, "MaxActionNum"); + getStaticParam(&mIsEndChangeable_s, "IsEndChangeable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqRandomRepeat.h b/src/Game/AI/AI/aiSeqRandomRepeat.h new file mode 100644 index 00000000..614dba8a --- /dev/null +++ b/src/Game/AI/AI/aiSeqRandomRepeat.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqRandomRepeat : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqRandomRepeat, ksys::act::ai::Ai) +public: + explicit SeqRandomRepeat(const InitArg& arg); + ~SeqRandomRepeat() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMinActionNum_s{}; + // static_param at offset 0x40 + const int* mMaxActionNum_s{}; + // static_param at offset 0x48 + const bool* mIsEndChangeable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTargetTwoAction.cpp b/src/Game/AI/AI/aiSeqTargetTwoAction.cpp new file mode 100644 index 00000000..e2305f58 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTargetTwoAction.cpp @@ -0,0 +1,16 @@ +#include "Game/AI/AI/aiSeqTargetTwoAction.h" + +namespace uking::ai { + +SeqTargetTwoAction::SeqTargetTwoAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void SeqTargetTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqTargetTwoAction::loadParams_() { + getStaticParam(&mIsFinishedByFailAction_s, "IsFinishedByFailAction"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTargetTwoAction.h b/src/Game/AI/AI/aiSeqTargetTwoAction.h new file mode 100644 index 00000000..5849b726 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTargetTwoAction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTargetTwoAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqTargetTwoAction, ksys::act::ai::Ai) +public: + explicit SeqTargetTwoAction(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsFinishedByFailAction_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqThreeAction.cpp b/src/Game/AI/AI/aiSeqThreeAction.cpp new file mode 100644 index 00000000..20495735 --- /dev/null +++ b/src/Game/AI/AI/aiSeqThreeAction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqThreeAction.h" + +namespace uking::ai { + +SeqThreeAction::SeqThreeAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqThreeAction::~SeqThreeAction() = default; + +bool SeqThreeAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqThreeAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqThreeAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqThreeAction::loadParams_() { + getStaticParam(&mIsFinishedByFailAction_s, "IsFinishedByFailAction"); + getStaticParam(&mIsEndChangeable_s, "IsEndChangeable"); + getStaticParam(&mIsNoChangeable_s, "IsNoChangeable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqThreeAction.h b/src/Game/AI/AI/aiSeqThreeAction.h new file mode 100644 index 00000000..dd948213 --- /dev/null +++ b/src/Game/AI/AI/aiSeqThreeAction.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqThreeAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqThreeAction, ksys::act::ai::Ai) +public: + explicit SeqThreeAction(const InitArg& arg); + ~SeqThreeAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsFinishedByFailAction_s{}; + // static_param at offset 0x40 + const bool* mIsEndChangeable_s{}; + // static_param at offset 0x48 + const bool* mIsNoChangeable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredAction.cpp b/src/Game/AI/AI/aiSeqTimeredAction.cpp new file mode 100644 index 00000000..d1fd8eae --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredAction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSeqTimeredAction.h" + +namespace uking::ai { + +SeqTimeredAction::SeqTimeredAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqTimeredAction::~SeqTimeredAction() = default; + +bool SeqTimeredAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqTimeredAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqTimeredAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqTimeredAction::loadParams_() { + getStaticParam(&mActionTime_s, "ActionTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredAction.h b/src/Game/AI/AI/aiSeqTimeredAction.h new file mode 100644 index 00000000..42faa6ab --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredAction.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTimeredAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqTimeredAction, ksys::act::ai::Ai) +public: + explicit SeqTimeredAction(const InitArg& arg); + ~SeqTimeredAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mActionTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.cpp b/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.cpp new file mode 100644 index 00000000..3be6d4ea --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h" + +namespace uking::ai { + +SeqTimeredPlusRandomTwoAction::SeqTimeredPlusRandomTwoAction(const InitArg& arg) + : SeqTimeredTwoAction(arg) {} + +SeqTimeredPlusRandomTwoAction::~SeqTimeredPlusRandomTwoAction() = default; + +bool SeqTimeredPlusRandomTwoAction::init_(sead::Heap* heap) { + return SeqTimeredTwoAction::init_(heap); +} + +void SeqTimeredPlusRandomTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTimeredTwoAction::enter_(params); +} + +void SeqTimeredPlusRandomTwoAction::leave_() { + SeqTimeredTwoAction::leave_(); +} + +void SeqTimeredPlusRandomTwoAction::loadParams_() { + SeqTimeredTwoAction::loadParams_(); + getStaticParam(&mFirstActionRandMax_s, "FirstActionRandMax"); + getStaticParam(&mSecondActionRandMax_s, "SecondActionRandMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h b/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h new file mode 100644 index 00000000..189553c7 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTimeredTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTimeredPlusRandomTwoAction : public SeqTimeredTwoAction { + SEAD_RTTI_OVERRIDE(SeqTimeredPlusRandomTwoAction, SeqTimeredTwoAction) +public: + explicit SeqTimeredPlusRandomTwoAction(const InitArg& arg); + ~SeqTimeredPlusRandomTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + const int* mFirstActionRandMax_s{}; + // static_param at offset 0x78 + const int* mSecondActionRandMax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredTwoAction.cpp b/src/Game/AI/AI/aiSeqTimeredTwoAction.cpp new file mode 100644 index 00000000..5d7de2f8 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredTwoAction.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqTimeredTwoAction.h" + +namespace uking::ai { + +SeqTimeredTwoAction::SeqTimeredTwoAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SeqTimeredTwoAction::~SeqTimeredTwoAction() = default; + +bool SeqTimeredTwoAction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqTimeredTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqTimeredTwoAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqTimeredTwoAction::loadParams_() { + getStaticParam(&mFirstActionTime_s, "FirstActionTime"); + getStaticParam(&mSecondActionTime_s, "SecondActionTime"); + getStaticParam(&mAllActionTime_s, "AllActionTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTimeredTwoAction.h b/src/Game/AI/AI/aiSeqTimeredTwoAction.h new file mode 100644 index 00000000..eebfb362 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTimeredTwoAction.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTimeredTwoAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqTimeredTwoAction, ksys::act::ai::Ai) +public: + explicit SeqTimeredTwoAction(const InitArg& arg); + ~SeqTimeredTwoAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mFirstActionTime_s{}; + // static_param at offset 0x40 + const int* mSecondActionTime_s{}; + // static_param at offset 0x48 + const int* mAllActionTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTrgPartsNotice.cpp b/src/Game/AI/AI/aiSeqTrgPartsNotice.cpp new file mode 100644 index 00000000..56dc9657 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTrgPartsNotice.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqTrgPartsNotice.h" + +namespace uking::ai { + +SeqTrgPartsNotice::SeqTrgPartsNotice(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqTrgPartsNotice::~SeqTrgPartsNotice() = default; + +bool SeqTrgPartsNotice::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void SeqTrgPartsNotice::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqTrgPartsNotice::leave_() { + SeqTwoAction::leave_(); +} + +void SeqTrgPartsNotice::loadParams_() { + SeqTwoAction::loadParams_(); + getStaticParam(&mPartsName_s, "PartsName"); + getStaticParam(&mIsFinishByNoNoticeActionEnd_s, "IsFinishByNoNoticeActionEnd"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTrgPartsNotice.h b/src/Game/AI/AI/aiSeqTrgPartsNotice.h new file mode 100644 index 00000000..3d8fc76f --- /dev/null +++ b/src/Game/AI/AI/aiSeqTrgPartsNotice.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTrgPartsNotice : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqTrgPartsNotice, SeqTwoAction) +public: + explicit SeqTrgPartsNotice(const InitArg& arg); + ~SeqTrgPartsNotice() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const bool* mIsFinishByNoNoticeActionEnd_s{}; + // static_param at offset 0x58 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoAction.cpp b/src/Game/AI/AI/aiSeqTwoAction.cpp new file mode 100644 index 00000000..e192265d --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoAction.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiSeqTwoAction.h" + +namespace uking::ai { + +SeqTwoAction::SeqTwoAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void SeqTwoAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqTwoAction::loadParams_() { + getStaticParam(&mIsFinishedByFailAction_s, "IsFinishedByFailAction"); + getStaticParam(&mIsEndChangeable_s, "IsEndChangeable"); + getStaticParam(&mIsNoChangeable_s, "IsNoChangeable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoAction.h b/src/Game/AI/AI/aiSeqTwoAction.h new file mode 100644 index 00000000..0e6fba76 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoAction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTwoAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqTwoAction, ksys::act::ai::Ai) +public: + explicit SeqTwoAction(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsFinishedByFailAction_s{}; + // static_param at offset 0x40 + const bool* mIsEndChangeable_s{}; + // static_param at offset 0x48 + const bool* mIsNoChangeable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.cpp b/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.cpp new file mode 100644 index 00000000..b12d0458 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqTwoLineReachableTargetAction.h" + +namespace uking::ai { + +SeqTwoLineReachableTargetAction::SeqTwoLineReachableTargetAction(const InitArg& arg) + : SeqTwoLineReachableTargetActionBase(arg) {} + +SeqTwoLineReachableTargetAction::~SeqTwoLineReachableTargetAction() = default; + +bool SeqTwoLineReachableTargetAction::init_(sead::Heap* heap) { + return SeqTwoLineReachableTargetActionBase::init_(heap); +} + +void SeqTwoLineReachableTargetAction::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoLineReachableTargetActionBase::enter_(params); +} + +void SeqTwoLineReachableTargetAction::leave_() { + SeqTwoLineReachableTargetActionBase::leave_(); +} + +void SeqTwoLineReachableTargetAction::loadParams_() { + SeqTwoLineReachableTargetActionBase::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.h b/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.h new file mode 100644 index 00000000..503e60e0 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoLineReachableTargetAction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTwoLineReachableTargetAction : public SeqTwoLineReachableTargetActionBase { + SEAD_RTTI_OVERRIDE(SeqTwoLineReachableTargetAction, SeqTwoLineReachableTargetActionBase) +public: + explicit SeqTwoLineReachableTargetAction(const InitArg& arg); + ~SeqTwoLineReachableTargetAction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.cpp b/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.cpp new file mode 100644 index 00000000..94c5f2c6 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h" + +namespace uking::ai { + +SeqTwoLineReachableTargetActionBase::SeqTwoLineReachableTargetActionBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SeqTwoLineReachableTargetActionBase::~SeqTwoLineReachableTargetActionBase() = default; + +bool SeqTwoLineReachableTargetActionBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SeqTwoLineReachableTargetActionBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SeqTwoLineReachableTargetActionBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SeqTwoLineReachableTargetActionBase::loadParams_() { + getStaticParam(&mReachableCheckType1_s, "ReachableCheckType1"); + getStaticParam(&mReachableCheckType2_s, "ReachableCheckType2"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h b/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h new file mode 100644 index 00000000..eedbf552 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoLineReachableTargetActionBase.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTwoLineReachableTargetActionBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SeqTwoLineReachableTargetActionBase, ksys::act::ai::Ai) +public: + explicit SeqTwoLineReachableTargetActionBase(const InitArg& arg); + ~SeqTwoLineReachableTargetActionBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mReachableCheckType1_s{}; + // static_param at offset 0x40 + const int* mReachableCheckType2_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.cpp b/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.cpp new file mode 100644 index 00000000..387936f5 --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h" + +namespace uking::ai { + +SeqTwoWeakPointOnFirstDo::SeqTwoWeakPointOnFirstDo(const InitArg& arg) : SeqTwoAction(arg) {} + +SeqTwoWeakPointOnFirstDo::~SeqTwoWeakPointOnFirstDo() = default; + +bool SeqTwoWeakPointOnFirstDo::init_(sead::Heap* heap) { + return SeqTwoAction::init_(heap); +} + +void SeqTwoWeakPointOnFirstDo::enter_(ksys::act::ai::InlineParamPack* params) { + SeqTwoAction::enter_(params); +} + +void SeqTwoWeakPointOnFirstDo::leave_() { + SeqTwoAction::leave_(); +} + +void SeqTwoWeakPointOnFirstDo::loadParams_() { + SeqTwoAction::loadParams_(); + getAITreeVariable(&mIsWeakPointAppearMode_a, "IsWeakPointAppearMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h b/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h new file mode 100644 index 00000000..60325f9f --- /dev/null +++ b/src/Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SeqTwoWeakPointOnFirstDo : public SeqTwoAction { + SEAD_RTTI_OVERRIDE(SeqTwoWeakPointOnFirstDo, SeqTwoAction) +public: + explicit SeqTwoWeakPointOnFirstDo(const InitArg& arg); + ~SeqTwoWeakPointOnFirstDo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x50 + bool* mIsWeakPointAppearMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetPartBind.cpp b/src/Game/AI/AI/aiSetPartBind.cpp new file mode 100644 index 00000000..b3abad84 --- /dev/null +++ b/src/Game/AI/AI/aiSetPartBind.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiSetPartBind.h" + +namespace uking::ai { + +SetPartBind::SetPartBind(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SetPartBind::~SetPartBind() = default; + +void SetPartBind::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SetPartBind::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SetPartBind::loadParams_() { + getStaticParam(&mBaseNodeName_s, "BaseNodeName"); + getStaticParam(&mPartialNodeName_s, "PartialNodeName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetPartBind.h b/src/Game/AI/AI/aiSetPartBind.h new file mode 100644 index 00000000..f2604d21 --- /dev/null +++ b/src/Game/AI/AI/aiSetPartBind.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SetPartBind : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SetPartBind, ksys::act::ai::Ai) +public: + explicit SetPartBind(const InitArg& arg); + ~SetPartBind() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mBaseNodeName_s{}; + // static_param at offset 0x48 + sead::SafeString mPartialNodeName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosForAngryKokko.cpp b/src/Game/AI/AI/aiSetTargetPosForAngryKokko.cpp new file mode 100644 index 00000000..8690815d --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosForAngryKokko.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiSetTargetPosForAngryKokko.h" + +namespace uking::ai { + +SetTargetPosForAngryKokko::SetTargetPosForAngryKokko(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SetTargetPosForAngryKokko::~SetTargetPosForAngryKokko() = default; + +bool SetTargetPosForAngryKokko::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SetTargetPosForAngryKokko::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SetTargetPosForAngryKokko::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SetTargetPosForAngryKokko::loadParams_() { + getStaticParam(&mUpdateTargetInterval_s, "UpdateTargetInterval"); + getStaticParam(&mMaxUpdateNum_s, "MaxUpdateNum"); + getStaticParam(&mAddLength_s, "AddLength"); + getStaticParam(&mHeightOffset_s, "HeightOffset"); + getStaticParam(&mRandRange_s, "RandRange"); + getStaticParam(&mRandRate_s, "RandRate"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosForAngryKokko.h b/src/Game/AI/AI/aiSetTargetPosForAngryKokko.h new file mode 100644 index 00000000..1f6384a7 --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosForAngryKokko.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SetTargetPosForAngryKokko : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SetTargetPosForAngryKokko, ksys::act::ai::Ai) +public: + explicit SetTargetPosForAngryKokko(const InitArg& arg); + ~SetTargetPosForAngryKokko() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpdateTargetInterval_s{}; + // static_param at offset 0x40 + const int* mMaxUpdateNum_s{}; + // static_param at offset 0x48 + const float* mAddLength_s{}; + // static_param at offset 0x50 + const float* mHeightOffset_s{}; + // static_param at offset 0x58 + const float* mRandRange_s{}; + // static_param at offset 0x60 + const float* mRandRate_s{}; + // dynamic_param at offset 0x68 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.cpp b/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.cpp new file mode 100644 index 00000000..805ef5b6 --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSetTargetPosForFlyThroughMove.h" + +namespace uking::ai { + +SetTargetPosForFlyThroughMove::SetTargetPosForFlyThroughMove(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SetTargetPosForFlyThroughMove::~SetTargetPosForFlyThroughMove() = default; + +bool SetTargetPosForFlyThroughMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SetTargetPosForFlyThroughMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SetTargetPosForFlyThroughMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SetTargetPosForFlyThroughMove::loadParams_() { + getStaticParam(&mTargetPosFixDist_s, "TargetPosFixDist"); + getStaticParam(&mThroughDist_s, "ThroughDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.h b/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.h new file mode 100644 index 00000000..d1c2ca66 --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosForFlyThroughMove.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SetTargetPosForFlyThroughMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SetTargetPosForFlyThroughMove, ksys::act::ai::Ai) +public: + explicit SetTargetPosForFlyThroughMove(const InitArg& arg); + ~SetTargetPosForFlyThroughMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTargetPosFixDist_s{}; + // static_param at offset 0x40 + const float* mThroughDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosToPlayer.cpp b/src/Game/AI/AI/aiSetTargetPosToPlayer.cpp new file mode 100644 index 00000000..8e9612a5 --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosToPlayer.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSetTargetPosToPlayer.h" + +namespace uking::ai { + +SetTargetPosToPlayer::SetTargetPosToPlayer(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SetTargetPosToPlayer::~SetTargetPosToPlayer() = default; + +bool SetTargetPosToPlayer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SetTargetPosToPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SetTargetPosToPlayer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SetTargetPosToPlayer::loadParams_() { + getStaticParam(&mUpdateTargetInterval_s, "UpdateTargetInterval"); + getStaticParam(&mMaxUpdateNum_s, "MaxUpdateNum"); + getStaticParam(&mAddLength_s, "AddLength"); + getStaticParam(&mHeightOffset_s, "HeightOffset"); + getStaticParam(&mRandRange_s, "RandRange"); + getStaticParam(&mRandRate_s, "RandRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSetTargetPosToPlayer.h b/src/Game/AI/AI/aiSetTargetPosToPlayer.h new file mode 100644 index 00000000..f1f7667f --- /dev/null +++ b/src/Game/AI/AI/aiSetTargetPosToPlayer.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SetTargetPosToPlayer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SetTargetPosToPlayer, ksys::act::ai::Ai) +public: + explicit SetTargetPosToPlayer(const InitArg& arg); + ~SetTargetPosToPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mUpdateTargetInterval_s{}; + // static_param at offset 0x40 + const int* mMaxUpdateNum_s{}; + // static_param at offset 0x48 + const float* mAddLength_s{}; + // static_param at offset 0x50 + const float* mHeightOffset_s{}; + // static_param at offset 0x58 + const float* mRandRange_s{}; + // static_param at offset 0x60 + const float* mRandRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingEnemyBattle.cpp b/src/Game/AI/AI/aiShootingEnemyBattle.cpp new file mode 100644 index 00000000..a6d60f72 --- /dev/null +++ b/src/Game/AI/AI/aiShootingEnemyBattle.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiShootingEnemyBattle.h" + +namespace uking::ai { + +ShootingEnemyBattle::ShootingEnemyBattle(const InitArg& arg) : EnemyBattle(arg) {} + +ShootingEnemyBattle::~ShootingEnemyBattle() = default; + +bool ShootingEnemyBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void ShootingEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void ShootingEnemyBattle::leave_() { + EnemyBattle::leave_(); +} + +void ShootingEnemyBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mOutScreenAttackNum_s, "OutScreenAttackNum"); + getStaticParam(&mOutScreenDist_s, "OutScreenDist"); + getStaticParam(&mOutScrnAtkOffset_s, "OutScrnAtkOffset"); + getStaticParam(&mOutScrnAtkOffsetY_s, "OutScrnAtkOffsetY"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingEnemyBattle.h b/src/Game/AI/AI/aiShootingEnemyBattle.h new file mode 100644 index 00000000..17e9a937 --- /dev/null +++ b/src/Game/AI/AI/aiShootingEnemyBattle.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ShootingEnemyBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(ShootingEnemyBattle, EnemyBattle) +public: + explicit ShootingEnemyBattle(const InitArg& arg); + ~ShootingEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + const int* mOutScreenAttackNum_s{}; + // static_param at offset 0x98 + const float* mOutScreenDist_s{}; + // static_param at offset 0xa0 + const float* mOutScrnAtkOffset_s{}; + // static_param at offset 0xa8 + const float* mOutScrnAtkOffsetY_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingEnemyFindPlayer.cpp b/src/Game/AI/AI/aiShootingEnemyFindPlayer.cpp new file mode 100644 index 00000000..3a02bf44 --- /dev/null +++ b/src/Game/AI/AI/aiShootingEnemyFindPlayer.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiShootingEnemyFindPlayer.h" + +namespace uking::ai { + +ShootingEnemyFindPlayer::ShootingEnemyFindPlayer(const InitArg& arg) + : SimpleShootingEnemyFindPlayer(arg) {} + +ShootingEnemyFindPlayer::~ShootingEnemyFindPlayer() = default; + +bool ShootingEnemyFindPlayer::init_(sead::Heap* heap) { + return SimpleShootingEnemyFindPlayer::init_(heap); +} + +void ShootingEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + SimpleShootingEnemyFindPlayer::enter_(params); +} + +void ShootingEnemyFindPlayer::leave_() { + SimpleShootingEnemyFindPlayer::leave_(); +} + +void ShootingEnemyFindPlayer::loadParams_() { + SimpleShootingEnemyFindPlayer::loadParams_(); + getStaticParam(&mReHideTime_s, "ReHideTime"); + getStaticParam(&mExplosivesAvoidDist_s, "ExplosivesAvoidDist"); + getStaticParam(&mExplosivesAvoidSpeed_s, "ExplosivesAvoidSpeed"); + getStaticParam(&mExplosivesAvoidAng_s, "ExplosivesAvoidAng"); + getStaticParam(&mHideStartDistMin_s, "HideStartDistMin"); + getStaticParam(&mHideStartDistMax_s, "HideStartDistMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingEnemyFindPlayer.h b/src/Game/AI/AI/aiShootingEnemyFindPlayer.h new file mode 100644 index 00000000..a3115f86 --- /dev/null +++ b/src/Game/AI/AI/aiShootingEnemyFindPlayer.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ShootingEnemyFindPlayer : public SimpleShootingEnemyFindPlayer { + SEAD_RTTI_OVERRIDE(ShootingEnemyFindPlayer, SimpleShootingEnemyFindPlayer) +public: + explicit ShootingEnemyFindPlayer(const InitArg& arg); + ~ShootingEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x150 + const int* mReHideTime_s{}; + // static_param at offset 0x158 + const float* mExplosivesAvoidDist_s{}; + // static_param at offset 0x160 + const float* mExplosivesAvoidSpeed_s{}; + // static_param at offset 0x168 + const float* mExplosivesAvoidAng_s{}; + // static_param at offset 0x170 + const float* mHideStartDistMin_s{}; + // static_param at offset 0x178 + const float* mHideStartDistMax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingStarRoot.cpp b/src/Game/AI/AI/aiShootingStarRoot.cpp new file mode 100644 index 00000000..2f127246 --- /dev/null +++ b/src/Game/AI/AI/aiShootingStarRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiShootingStarRoot.h" + +namespace uking::ai { + +ShootingStarRoot::ShootingStarRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ShootingStarRoot::~ShootingStarRoot() = default; + +bool ShootingStarRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ShootingStarRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ShootingStarRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ShootingStarRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShootingStarRoot.h b/src/Game/AI/AI/aiShootingStarRoot.h new file mode 100644 index 00000000..5d4a51e7 --- /dev/null +++ b/src/Game/AI/AI/aiShootingStarRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ShootingStarRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ShootingStarRoot, ksys::act::ai::Ai) +public: + explicit ShootingStarRoot(const InitArg& arg); + ~ShootingStarRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShutterFence.cpp b/src/Game/AI/AI/aiShutterFence.cpp new file mode 100644 index 00000000..e066380b --- /dev/null +++ b/src/Game/AI/AI/aiShutterFence.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiShutterFence.h" + +namespace uking::ai { + +ShutterFence::ShutterFence(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ShutterFence::~ShutterFence() = default; + +bool ShutterFence::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ShutterFence::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ShutterFence::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ShutterFence::loadParams_() { + getStaticParam(&mASKeyName_On_s, "ASKeyName_On"); + getStaticParam(&mASKeyName_Off_s, "ASKeyName_Off"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiShutterFence.h b/src/Game/AI/AI/aiShutterFence.h new file mode 100644 index 00000000..3a6d2117 --- /dev/null +++ b/src/Game/AI/AI/aiShutterFence.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ShutterFence : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ShutterFence, ksys::act::ai::Ai) +public: + explicit ShutterFence(const InitArg& arg); + ~ShutterFence() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mASKeyName_On_s{}; + // static_param at offset 0x48 + sead::SafeString mASKeyName_Off_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignalFlowchartRootAI.cpp b/src/Game/AI/AI/aiSignalFlowchartRootAI.cpp new file mode 100644 index 00000000..35ed02db --- /dev/null +++ b/src/Game/AI/AI/aiSignalFlowchartRootAI.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSignalFlowchartRootAI.h" + +namespace uking::ai { + +SignalFlowchartRootAI::SignalFlowchartRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SignalFlowchartRootAI::~SignalFlowchartRootAI() = default; + +bool SignalFlowchartRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SignalFlowchartRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SignalFlowchartRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SignalFlowchartRootAI::loadParams_() { + getMapUnitParam(&mEventFlowName_m, "EventFlowName"); + getMapUnitParam(&mEventFlowEntryName_m, "EventFlowEntryName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignalFlowchartRootAI.h b/src/Game/AI/AI/aiSignalFlowchartRootAI.h new file mode 100644 index 00000000..1e0e83be --- /dev/null +++ b/src/Game/AI/AI/aiSignalFlowchartRootAI.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SignalFlowchartRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SignalFlowchartRootAI, ksys::act::ai::Ai) +public: + explicit SignalFlowchartRootAI(const InitArg& arg); + ~SignalFlowchartRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + sead::SafeString mEventFlowName_m{}; + // map_unit_param at offset 0x48 + sead::SafeString mEventFlowEntryName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.cpp b/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.cpp new file mode 100644 index 00000000..d079ceda --- /dev/null +++ b/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSignalSendingMagneStickAcceptor.h" + +namespace uking::ai { + +SignalSendingMagneStickAcceptor::SignalSendingMagneStickAcceptor(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SignalSendingMagneStickAcceptor::~SignalSendingMagneStickAcceptor() = default; + +bool SignalSendingMagneStickAcceptor::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SignalSendingMagneStickAcceptor::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SignalSendingMagneStickAcceptor::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SignalSendingMagneStickAcceptor::loadParams_() { + getMapUnitParam(&mMagneStickMaxSearchDistance_m, "MagneStickMaxSearchDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.h b/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.h new file mode 100644 index 00000000..3375a0cd --- /dev/null +++ b/src/Game/AI/AI/aiSignalSendingMagneStickAcceptor.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SignalSendingMagneStickAcceptor : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SignalSendingMagneStickAcceptor, ksys::act::ai::Ai) +public: + explicit SignalSendingMagneStickAcceptor(const InitArg& arg); + ~SignalSendingMagneStickAcceptor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mMagneStickMaxSearchDistance_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignaledSpotBgmTrigger.cpp b/src/Game/AI/AI/aiSignaledSpotBgmTrigger.cpp new file mode 100644 index 00000000..f0bb2eb3 --- /dev/null +++ b/src/Game/AI/AI/aiSignaledSpotBgmTrigger.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSignaledSpotBgmTrigger.h" + +namespace uking::ai { + +SignaledSpotBgmTrigger::SignaledSpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SignaledSpotBgmTrigger::~SignaledSpotBgmTrigger() = default; + +bool SignaledSpotBgmTrigger::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SignaledSpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SignaledSpotBgmTrigger::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SignaledSpotBgmTrigger::loadParams_() { + getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY"); + getMapUnitParam(&mSound_m, "Sound"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSignaledSpotBgmTrigger.h b/src/Game/AI/AI/aiSignaledSpotBgmTrigger.h new file mode 100644 index 00000000..fc628367 --- /dev/null +++ b/src/Game/AI/AI/aiSignaledSpotBgmTrigger.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SignaledSpotBgmTrigger : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SignaledSpotBgmTrigger, ksys::act::ai::Ai) +public: + explicit SignaledSpotBgmTrigger(const InitArg& arg); + ~SignaledSpotBgmTrigger() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsStopWithoutReductionY_m{}; + // map_unit_param at offset 0x40 + sead::SafeString mSound_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleASBridge.cpp b/src/Game/AI/AI/aiSimpleASBridge.cpp new file mode 100644 index 00000000..3dbdc6f7 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleASBridge.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSimpleASBridge.h" + +namespace uking::ai { + +SimpleASBridge::SimpleASBridge(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleASBridge::~SimpleASBridge() = default; + +bool SimpleASBridge::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleASBridge::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleASBridge::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleASBridge::loadParams_() { + getStaticParam(&mASName_s, "ASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleASBridge.h b/src/Game/AI/AI/aiSimpleASBridge.h new file mode 100644 index 00000000..db969c49 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleASBridge.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleASBridge : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleASBridge, ksys::act::ai::Ai) +public: + explicit SimpleASBridge(const InitArg& arg); + ~SimpleASBridge() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + sead::SafeString mASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleEnemyNormal.cpp b/src/Game/AI/AI/aiSimpleEnemyNormal.cpp new file mode 100644 index 00000000..727f3338 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleEnemyNormal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSimpleEnemyNormal.h" + +namespace uking::ai { + +SimpleEnemyNormal::SimpleEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +SimpleEnemyNormal::~SimpleEnemyNormal() = default; + +bool SimpleEnemyNormal::init_(sead::Heap* heap) { + return EnemyNormal::init_(heap); +} + +void SimpleEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void SimpleEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void SimpleEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleEnemyNormal.h b/src/Game/AI/AI/aiSimpleEnemyNormal.h new file mode 100644 index 00000000..6b08f5e9 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleEnemyNormal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(SimpleEnemyNormal, EnemyNormal) +public: + explicit SimpleEnemyNormal(const InitArg& arg); + ~SimpleEnemyNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleEscapeFromTarget.cpp b/src/Game/AI/AI/aiSimpleEscapeFromTarget.cpp new file mode 100644 index 00000000..a38deae5 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleEscapeFromTarget.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSimpleEscapeFromTarget.h" + +namespace uking::ai { + +SimpleEscapeFromTarget::SimpleEscapeFromTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleEscapeFromTarget::~SimpleEscapeFromTarget() = default; + +bool SimpleEscapeFromTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleEscapeFromTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleEscapeFromTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleEscapeFromTarget::loadParams_() { + getStaticParam(&mKeepTime_s, "KeepTime"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mSpaceDist_s, "SpaceDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleEscapeFromTarget.h b/src/Game/AI/AI/aiSimpleEscapeFromTarget.h new file mode 100644 index 00000000..fd281b2f --- /dev/null +++ b/src/Game/AI/AI/aiSimpleEscapeFromTarget.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleEscapeFromTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleEscapeFromTarget, ksys::act::ai::Ai) +public: + explicit SimpleEscapeFromTarget(const InitArg& arg); + ~SimpleEscapeFromTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mKeepTime_s{}; + // static_param at offset 0x40 + const int* mWeaponIdx_s{}; + // static_param at offset 0x48 + const float* mSpaceDist_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleKokkoRoot.cpp b/src/Game/AI/AI/aiSimpleKokkoRoot.cpp new file mode 100644 index 00000000..b5d109cb --- /dev/null +++ b/src/Game/AI/AI/aiSimpleKokkoRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSimpleKokkoRoot.h" + +namespace uking::ai { + +SimpleKokkoRoot::SimpleKokkoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleKokkoRoot::~SimpleKokkoRoot() = default; + +bool SimpleKokkoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleKokkoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleKokkoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleKokkoRoot::loadParams_() { + getStaticParam(&mAliveTime_s, "AliveTime"); + getAITreeVariable(&mAttackTargetActorLink_a, "AttackTargetActorLink"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleKokkoRoot.h b/src/Game/AI/AI/aiSimpleKokkoRoot.h new file mode 100644 index 00000000..29a65fd2 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleKokkoRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleKokkoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleKokkoRoot, ksys::act::ai::Ai) +public: + explicit SimpleKokkoRoot(const InitArg& arg); + ~SimpleKokkoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAliveTime_s{}; + // aitree_variable at offset 0x40 + void* mAttackTargetActorLink_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLiftable.cpp b/src/Game/AI/AI/aiSimpleLiftable.cpp new file mode 100644 index 00000000..0edb1fdd --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLiftable.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiSimpleLiftable.h" + +namespace uking::ai { + +SimpleLiftable::SimpleLiftable(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleLiftable::~SimpleLiftable() = default; + +void SimpleLiftable::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLiftable.h b/src/Game/AI/AI/aiSimpleLiftable.h new file mode 100644 index 00000000..51192e9f --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLiftable.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleLiftable : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleLiftable, ksys::act::ai::Ai) +public: + explicit SimpleLiftable(const InitArg& arg); + ~SimpleLiftable() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLiftableDLC.cpp b/src/Game/AI/AI/aiSimpleLiftableDLC.cpp new file mode 100644 index 00000000..ed201e67 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLiftableDLC.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSimpleLiftableDLC.h" + +namespace uking::ai { + +SimpleLiftableDLC::SimpleLiftableDLC(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleLiftableDLC::~SimpleLiftableDLC() = default; + +bool SimpleLiftableDLC::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleLiftableDLC::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleLiftableDLC::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleLiftableDLC::loadParams_() { + getStaticParam(&mScaleToLiftUp_s, "ScaleToLiftUp"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLiftableDLC.h b/src/Game/AI/AI/aiSimpleLiftableDLC.h new file mode 100644 index 00000000..b75e2342 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLiftableDLC.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleLiftableDLC : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleLiftableDLC, ksys::act::ai::Ai) +public: + explicit SimpleLiftableDLC(const InitArg& arg); + ~SimpleLiftableDLC() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mScaleToLiftUp_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLineBeam.cpp b/src/Game/AI/AI/aiSimpleLineBeam.cpp new file mode 100644 index 00000000..4f7e70c9 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLineBeam.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSimpleLineBeam.h" + +namespace uking::ai { + +SimpleLineBeam::SimpleLineBeam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleLineBeam::~SimpleLineBeam() = default; + +bool SimpleLineBeam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleLineBeam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleLineBeam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleLineBeam::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleLineBeam.h b/src/Game/AI/AI/aiSimpleLineBeam.h new file mode 100644 index 00000000..e0a37ec7 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleLineBeam.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleLineBeam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleLineBeam, ksys::act::ai::Ai) +public: + explicit SimpleLineBeam(const InitArg& arg); + ~SimpleLineBeam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.cpp b/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.cpp new file mode 100644 index 00000000..360d2c06 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h" + +namespace uking::ai { + +SimpleShootingEnemyFindPlayer::SimpleShootingEnemyFindPlayer(const InitArg& arg) + : EnemyBaseFindPlayer(arg) {} + +SimpleShootingEnemyFindPlayer::~SimpleShootingEnemyFindPlayer() = default; + +bool SimpleShootingEnemyFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void SimpleShootingEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void SimpleShootingEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void SimpleShootingEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); + getStaticParam(&mShootBaseDist_s, "ShootBaseDist"); + getStaticParam(&mShootDistRatio_s, "ShootDistRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h b/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h new file mode 100644 index 00000000..89fa1c45 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleShootingEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(SimpleShootingEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit SimpleShootingEnemyFindPlayer(const InitArg& arg); + ~SimpleShootingEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const float* mShootBaseDist_s{}; + // static_param at offset 0x148 + const float* mShootDistRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleWildlifeRoot.cpp b/src/Game/AI/AI/aiSimpleWildlifeRoot.cpp new file mode 100644 index 00000000..18862d67 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleWildlifeRoot.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiSimpleWildlifeRoot.h" + +namespace uking::ai { + +SimpleWildlifeRoot::SimpleWildlifeRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SimpleWildlifeRoot::~SimpleWildlifeRoot() = default; + +bool SimpleWildlifeRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SimpleWildlifeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SimpleWildlifeRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SimpleWildlifeRoot::loadParams_() { + getStaticParam(&mInvalidTgtTimerVal_s, "InvalidTgtTimerVal"); + getStaticParam(&mInvalidEscapeTimerVal_s, "InvalidEscapeTimerVal"); + getStaticParam(&mIsDeleteWhenDead_s, "IsDeleteWhenDead"); + getStaticParam(&mIsDeadWhenPut_s, "IsDeadWhenPut"); + getStaticParam(&mIsEscapeWhenPut_s, "IsEscapeWhenPut"); + getStaticParam(&mIsDeadWhenDrop_s, "IsDeadWhenDrop"); + getMapUnitParam(&mIsPlayerPut_m, "IsPlayerPut"); + getMapUnitParam(&mIsLocatorCreate_m, "IsLocatorCreate"); + getMapUnitParam(&mIsCreateDead_m, "IsCreateDead"); + // FIXME: CALL _ZNK4ksys3act2ai6RootAi18getAITreeVariable2EPPbRKN4sead14SafeStringBaseIcEE @ + // 0x7100d66968 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSimpleWildlifeRoot.h b/src/Game/AI/AI/aiSimpleWildlifeRoot.h new file mode 100644 index 00000000..7a74ae64 --- /dev/null +++ b/src/Game/AI/AI/aiSimpleWildlifeRoot.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SimpleWildlifeRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SimpleWildlifeRoot, ksys::act::ai::Ai) +public: + explicit SimpleWildlifeRoot(const InitArg& arg); + ~SimpleWildlifeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x30]; + // static_param at offset 0x68 + const int* mInvalidTgtTimerVal_s{}; + // static_param at offset 0x70 + const int* mInvalidEscapeTimerVal_s{}; + // static_param at offset 0x78 + const bool* mIsDeleteWhenDead_s{}; + // static_param at offset 0x80 + const bool* mIsDeadWhenPut_s{}; + // static_param at offset 0x88 + const bool* mIsEscapeWhenPut_s{}; + // static_param at offset 0x90 + const bool* mIsDeadWhenDrop_s{}; + // map_unit_param at offset 0x98 + const bool* mIsPlayerPut_m{}; + // map_unit_param at offset 0xa0 + const bool* mIsLocatorCreate_m{}; + // map_unit_param at offset 0xa8 + const bool* mIsCreateDead_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossApproachRoot.cpp b/src/Game/AI/AI/aiSiteBossApproachRoot.cpp new file mode 100644 index 00000000..f09f5752 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossApproachRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiSiteBossApproachRoot.h" + +namespace uking::ai { + +SiteBossApproachRoot::SiteBossApproachRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossApproachRoot::~SiteBossApproachRoot() = default; + +bool SiteBossApproachRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossApproachRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossApproachRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossApproachRoot::loadParams_() { + getStaticParam(&mCheckWallDist_s, "CheckWallDist"); + getStaticParam(&mApproachTime_s, "ApproachTime"); + getStaticParam(&mEndDist_s, "EndDist"); + getStaticParam(&mEndFarDist_s, "EndFarDist"); + getStaticParam(&mAttackStartDist_s, "AttackStartDist"); + getStaticParam(&mDoAttack_s, "DoAttack"); + getDynamicParam(&mIsMoveSide_d, "IsMoveSide"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossApproachRoot.h b/src/Game/AI/AI/aiSiteBossApproachRoot.h new file mode 100644 index 00000000..f4e1a0a2 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossApproachRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossApproachRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossApproachRoot, ksys::act::ai::Ai) +public: + explicit SiteBossApproachRoot(const InitArg& arg); + ~SiteBossApproachRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckWallDist_s{}; + // static_param at offset 0x40 + const float* mApproachTime_s{}; + // static_param at offset 0x48 + const float* mEndDist_s{}; + // static_param at offset 0x50 + const float* mEndFarDist_s{}; + // static_param at offset 0x58 + const float* mAttackStartDist_s{}; + // static_param at offset 0x60 + const bool* mDoAttack_s{}; + // dynamic_param at offset 0x68 + bool* mIsMoveSide_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossArrowRainAttack.cpp b/src/Game/AI/AI/aiSiteBossArrowRainAttack.cpp new file mode 100644 index 00000000..57f69d01 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossArrowRainAttack.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSiteBossArrowRainAttack.h" + +namespace uking::ai { + +SiteBossArrowRainAttack::SiteBossArrowRainAttack(const InitArg& arg) + : SiteBossReflectArrowRoot(arg) {} + +SiteBossArrowRainAttack::~SiteBossArrowRainAttack() = default; + +bool SiteBossArrowRainAttack::init_(sead::Heap* heap) { + return SiteBossReflectArrowRoot::init_(heap); +} + +void SiteBossArrowRainAttack::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossReflectArrowRoot::enter_(params); +} + +void SiteBossArrowRainAttack::leave_() { + SiteBossReflectArrowRoot::leave_(); +} + +void SiteBossArrowRainAttack::loadParams_() { + SiteBossReflectArrowRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossArrowRainAttack.h b/src/Game/AI/AI/aiSiteBossArrowRainAttack.h new file mode 100644 index 00000000..a6267558 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossArrowRainAttack.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossReflectArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossArrowRainAttack : public SiteBossReflectArrowRoot { + SEAD_RTTI_OVERRIDE(SiteBossArrowRainAttack, SiteBossReflectArrowRoot) +public: + explicit SiteBossArrowRainAttack(const InitArg& arg); + ~SiteBossArrowRainAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossAttackRoot.cpp b/src/Game/AI/AI/aiSiteBossAttackRoot.cpp new file mode 100644 index 00000000..1954a448 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossAttackRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSiteBossAttackRoot.h" + +namespace uking::ai { + +SiteBossAttackRoot::SiteBossAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossAttackRoot::~SiteBossAttackRoot() = default; + +bool SiteBossAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossAttackRoot::loadParams_() { + getStaticParam(&mEquipWeapon_s, "EquipWeapon"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossAttackRoot.h b/src/Game/AI/AI/aiSiteBossAttackRoot.h new file mode 100644 index 00000000..08aa44c0 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossAttackRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossAttackRoot, ksys::act::ai::Ai) +public: + explicit SiteBossAttackRoot(const InitArg& arg); + ~SiteBossAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mEquipWeapon_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBigFlameBall.cpp b/src/Game/AI/AI/aiSiteBossBigFlameBall.cpp new file mode 100644 index 00000000..c1b878c2 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBigFlameBall.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSiteBossBigFlameBall.h" + +namespace uking::ai { + +SiteBossBigFlameBall::SiteBossBigFlameBall(const InitArg& arg) : SiteBossFlameBall(arg) {} + +SiteBossBigFlameBall::~SiteBossBigFlameBall() = default; + +bool SiteBossBigFlameBall::init_(sead::Heap* heap) { + return SiteBossFlameBall::init_(heap); +} + +void SiteBossBigFlameBall::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossFlameBall::enter_(params); +} + +void SiteBossBigFlameBall::leave_() { + SiteBossFlameBall::leave_(); +} + +void SiteBossBigFlameBall::loadParams_() { + SiteBossFlameBall::loadParams_(); + getStaticParam(&mDestOffset_s, "DestOffset"); + getStaticParam(&mDestOffset1_s, "DestOffset1"); + getMapUnitParam(&mSpeed_m, "Speed"); + getMapUnitParam(&mRotOffset_m, "RotOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBigFlameBall.h b/src/Game/AI/AI/aiSiteBossBigFlameBall.h new file mode 100644 index 00000000..3aaeee0d --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBigFlameBall.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossFlameBall.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossBigFlameBall : public SiteBossFlameBall { + SEAD_RTTI_OVERRIDE(SiteBossBigFlameBall, SiteBossFlameBall) +public: + explicit SiteBossBigFlameBall(const InitArg& arg); + ~SiteBossBigFlameBall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d0 + const sead::Vector3f* mDestOffset_s{}; + // static_param at offset 0x1d8 + const sead::Vector3f* mDestOffset1_s{}; + // map_unit_param at offset 0x1e0 + const float* mSpeed_m{}; + // map_unit_param at offset 0x1e8 + const sead::Vector3f* mRotOffset_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBlowOff.cpp b/src/Game/AI/AI/aiSiteBossBlowOff.cpp new file mode 100644 index 00000000..1adab243 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBlowOff.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSiteBossBlowOff.h" + +namespace uking::ai { + +SiteBossBlowOff::SiteBossBlowOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossBlowOff::~SiteBossBlowOff() = default; + +bool SiteBossBlowOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossBlowOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossBlowOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossBlowOff::loadParams_() { + getDynamicParam(&mIsPlayDamageAnm_d, "IsPlayDamageAnm"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBlowOff.h b/src/Game/AI/AI/aiSiteBossBlowOff.h new file mode 100644 index 00000000..e3435a7b --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBlowOff.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossBlowOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossBlowOff, ksys::act::ai::Ai) +public: + explicit SiteBossBlowOff(const InitArg& arg); + ~SiteBossBlowOff() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsPlayDamageAnm_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.cpp b/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.cpp new file mode 100644 index 00000000..4599e16e --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSiteBossBowChildDeviceRoot.h" + +namespace uking::ai { + +SiteBossBowChildDeviceRoot::SiteBossBowChildDeviceRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SiteBossBowChildDeviceRoot::~SiteBossBowChildDeviceRoot() = default; + +bool SiteBossBowChildDeviceRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossBowChildDeviceRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossBowChildDeviceRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossBowChildDeviceRoot::loadParams_() { + getStaticParam(&mXRotateSpeed_s, "XRotateSpeed"); + getStaticParam(&mSlowRate_s, "SlowRate"); + getMapUnitParam(&mCount_m, "Count"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.h b/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.h new file mode 100644 index 00000000..bb6da332 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBowChildDeviceRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossBowChildDeviceRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossBowChildDeviceRoot, ksys::act::ai::Ai) +public: + explicit SiteBossBowChildDeviceRoot(const InitArg& arg); + ~SiteBossBowChildDeviceRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mXRotateSpeed_s{}; + // static_param at offset 0x40 + const float* mSlowRate_s{}; + // map_unit_param at offset 0x48 + const int* mCount_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBowRoot.cpp b/src/Game/AI/AI/aiSiteBossBowRoot.cpp new file mode 100644 index 00000000..97c5d67e --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBowRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSiteBossBowRoot.h" + +namespace uking::ai { + +SiteBossBowRoot::SiteBossBowRoot(const InitArg& arg) : SiteBossRoot(arg) {} + +SiteBossBowRoot::~SiteBossBowRoot() = default; + +bool SiteBossBowRoot::init_(sead::Heap* heap) { + return SiteBossRoot::init_(heap); +} + +void SiteBossBowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossRoot::enter_(params); +} + +void SiteBossBowRoot::leave_() { + SiteBossRoot::leave_(); +} + +void SiteBossBowRoot::loadParams_() { + SiteBossRoot::loadParams_(); + getStaticParam(&mArrowRainAttackPower_s, "ArrowRainAttackPower"); + getStaticParam(&mAtMinPower_s, "AtMinPower"); + getStaticParam(&mReflectArrowAttackPower_s, "ReflectArrowAttackPower"); + getStaticParam(&mDemoName_s, "DemoName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossBowRoot.h b/src/Game/AI/AI/aiSiteBossBowRoot.h new file mode 100644 index 00000000..8354309c --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossBowRoot.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossBowRoot : public SiteBossRoot { + SEAD_RTTI_OVERRIDE(SiteBossBowRoot, SiteBossRoot) +public: + explicit SiteBossBowRoot(const InitArg& arg); + ~SiteBossBowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const int* mArrowRainAttackPower_s{}; + // static_param at offset 0x100 + const int* mAtMinPower_s{}; + // static_param at offset 0x108 + const int* mReflectArrowAttackPower_s{}; + // static_param at offset 0x110 + sead::SafeString mDemoName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossChemicalProjectile.cpp b/src/Game/AI/AI/aiSiteBossChemicalProjectile.cpp new file mode 100644 index 00000000..1d180f8d --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossChemicalProjectile.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiSiteBossChemicalProjectile.h" + +namespace uking::ai { + +SiteBossChemicalProjectile::SiteBossChemicalProjectile(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SiteBossChemicalProjectile::~SiteBossChemicalProjectile() = default; + +bool SiteBossChemicalProjectile::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossChemicalProjectile::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossChemicalProjectile::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossChemicalProjectile::loadParams_() { + getStaticParam(&mExplosionTime_s, "ExplosionTime"); + getStaticParam(&mChaseAngleLimit_s, "ChaseAngleLimit"); + getStaticParam(&mReflectSpeedRate_s, "ReflectSpeedRate"); + getStaticParam(&mIsForceDelete_s, "IsForceDelete"); + getStaticParam(&mIsAdjustHeight_s, "IsAdjustHeight"); + getStaticParam(&mIsSetParentSystemGroupHandler_s, "IsSetParentSystemGroupHandler"); + getStaticParam(&mIsSetBindSpeed_s, "IsSetBindSpeed"); + getStaticParam(&mIsIgnoreObject_s, "IsIgnoreObject"); + getStaticParam(&mBindNodeName_s, "BindNodeName"); + getMapUnitParam(&mAttackPower_m, "AttackPower"); + getMapUnitParam(&mAtMinDamage_m, "AtMinDamage"); + getMapUnitParam(&mScaleTime_m, "ScaleTime"); + getMapUnitParam(&mRange_m, "Range"); + getMapUnitParam(&mAtkRadiusMax_m, "AtkRadiusMax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossChemicalProjectile.h b/src/Game/AI/AI/aiSiteBossChemicalProjectile.h new file mode 100644 index 00000000..1b2de341 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossChemicalProjectile.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossChemicalProjectile : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossChemicalProjectile, ksys::act::ai::Ai) +public: + explicit SiteBossChemicalProjectile(const InitArg& arg); + ~SiteBossChemicalProjectile() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mExplosionTime_s{}; + // static_param at offset 0x40 + const float* mChaseAngleLimit_s{}; + // static_param at offset 0x48 + const float* mReflectSpeedRate_s{}; + // static_param at offset 0x50 + const bool* mIsForceDelete_s{}; + // static_param at offset 0x58 + const bool* mIsAdjustHeight_s{}; + // static_param at offset 0x60 + const bool* mIsSetParentSystemGroupHandler_s{}; + // static_param at offset 0x68 + const bool* mIsSetBindSpeed_s{}; + // static_param at offset 0x70 + const bool* mIsIgnoreObject_s{}; + // static_param at offset 0x78 + sead::SafeString mBindNodeName_s{}; + // map_unit_param at offset 0x88 + const int* mAttackPower_m{}; + // map_unit_param at offset 0x90 + const int* mAtMinDamage_m{}; + // map_unit_param at offset 0x98 + const float* mScaleTime_m{}; + // map_unit_param at offset 0xa0 + const float* mRange_m{}; + // map_unit_param at offset 0xa8 + const float* mAtkRadiusMax_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossFlameBall.cpp b/src/Game/AI/AI/aiSiteBossFlameBall.cpp new file mode 100644 index 00000000..2ddfbaf3 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossFlameBall.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiSiteBossFlameBall.h" + +namespace uking::ai { + +SiteBossFlameBall::SiteBossFlameBall(const InitArg& arg) : SiteBossChemicalProjectile(arg) {} + +SiteBossFlameBall::~SiteBossFlameBall() = default; + +bool SiteBossFlameBall::init_(sead::Heap* heap) { + return SiteBossChemicalProjectile::init_(heap); +} + +void SiteBossFlameBall::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossChemicalProjectile::enter_(params); +} + +void SiteBossFlameBall::leave_() { + SiteBossChemicalProjectile::leave_(); +} + +void SiteBossFlameBall::loadParams_() { + SiteBossChemicalProjectile::loadParams_(); + getStaticParam(&mChemicalIndex_s, "ChemicalIndex"); + getStaticParam(&mAtAttr_s, "AtAttr"); + getStaticParam(&mMoveSpeed_s, "MoveSpeed"); + getStaticParam(&mMoveOffset_s, "MoveOffset"); + getStaticParam(&mCountOffset_s, "CountOffset"); + getStaticParam(&mIsInfluence_s, "IsInfluence"); + getMapUnitParam(&mCount_m, "Count"); + getMapUnitParam(&mPosOffset_m, "PosOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossFlameBall.h b/src/Game/AI/AI/aiSiteBossFlameBall.h new file mode 100644 index 00000000..3ea3ecfd --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossFlameBall.h @@ -0,0 +1,38 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossChemicalProjectile.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossFlameBall : public SiteBossChemicalProjectile { + SEAD_RTTI_OVERRIDE(SiteBossFlameBall, SiteBossChemicalProjectile) +public: + explicit SiteBossFlameBall(const InitArg& arg); + ~SiteBossFlameBall() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x180 + const int* mChemicalIndex_s{}; + // static_param at offset 0x188 + const int* mAtAttr_s{}; + // static_param at offset 0x190 + const float* mMoveSpeed_s{}; + // static_param at offset 0x198 + const float* mMoveOffset_s{}; + // static_param at offset 0x1a0 + const float* mCountOffset_s{}; + // static_param at offset 0x1a8 + const bool* mIsInfluence_s{}; + // map_unit_param at offset 0x1b0 + const int* mCount_m{}; + // map_unit_param at offset 0x1b8 + const sead::Vector3f* mPosOffset_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossGaleArrowRoot.cpp b/src/Game/AI/AI/aiSiteBossGaleArrowRoot.cpp new file mode 100644 index 00000000..e435ab64 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossGaleArrowRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSiteBossGaleArrowRoot.h" + +namespace uking::ai { + +SiteBossGaleArrowRoot::SiteBossGaleArrowRoot(const InitArg& arg) : WithoutWeaponArrow(arg) {} + +SiteBossGaleArrowRoot::~SiteBossGaleArrowRoot() = default; + +bool SiteBossGaleArrowRoot::init_(sead::Heap* heap) { + return WithoutWeaponArrow::init_(heap); +} + +void SiteBossGaleArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + WithoutWeaponArrow::enter_(params); +} + +void SiteBossGaleArrowRoot::leave_() { + WithoutWeaponArrow::leave_(); +} + +void SiteBossGaleArrowRoot::loadParams_() { + WithoutWeaponArrow::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossGaleArrowRoot.h b/src/Game/AI/AI/aiSiteBossGaleArrowRoot.h new file mode 100644 index 00000000..7dad48aa --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossGaleArrowRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWithoutWeaponArrow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossGaleArrowRoot : public WithoutWeaponArrow { + SEAD_RTTI_OVERRIDE(SiteBossGaleArrowRoot, WithoutWeaponArrow) +public: + explicit SiteBossGaleArrowRoot(const InitArg& arg); + ~SiteBossGaleArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossIceSplinterRoot.cpp b/src/Game/AI/AI/aiSiteBossIceSplinterRoot.cpp new file mode 100644 index 00000000..2c652aea --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossIceSplinterRoot.cpp @@ -0,0 +1,44 @@ +#include "Game/AI/AI/aiSiteBossIceSplinterRoot.h" + +namespace uking::ai { + +SiteBossIceSplinterRoot::SiteBossIceSplinterRoot(const InitArg& arg) + : SiteBossChemicalProjectile(arg) {} + +SiteBossIceSplinterRoot::~SiteBossIceSplinterRoot() = default; + +bool SiteBossIceSplinterRoot::init_(sead::Heap* heap) { + return SiteBossChemicalProjectile::init_(heap); +} + +void SiteBossIceSplinterRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossChemicalProjectile::enter_(params); +} + +void SiteBossIceSplinterRoot::leave_() { + SiteBossChemicalProjectile::leave_(); +} + +void SiteBossIceSplinterRoot::loadParams_() { + SiteBossChemicalProjectile::loadParams_(); + getStaticParam(&mReflectAtkPower_s, "ReflectAtkPower"); + getStaticParam(&mChaseAngleMin_s, "ChaseAngleMin"); + getStaticParam(&mRotateSpeed_s, "RotateSpeed"); + getStaticParam(&mBindNodeName0_s, "BindNodeName0"); + getStaticParam(&mBindNodeName1_s, "BindNodeName1"); + getStaticParam(&mChaseParentNode_s, "ChaseParentNode"); + getStaticParam(&mBindOffset0_s, "BindOffset0"); + getStaticParam(&mBindOffset1_s, "BindOffset1"); + getStaticParam(&mBindOffset2_s, "BindOffset2"); + getStaticParam(&mBindOffset3_s, "BindOffset3"); + getStaticParam(&mBindOffset4_s, "BindOffset4"); + getStaticParam(&mBindOffset5_s, "BindOffset5"); + getStaticParam(&mBindOffset6_s, "BindOffset6"); + getStaticParam(&mBindOffset7_s, "BindOffset7"); + getStaticParam(&mBindOffset8_s, "BindOffset8"); + getStaticParam(&mRotateSpeedAtHit_s, "RotateSpeedAtHit"); + getStaticParam(&mRotateSpeedAtFall_s, "RotateSpeedAtFall"); + getMapUnitParam(&mCount_m, "Count"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossIceSplinterRoot.h b/src/Game/AI/AI/aiSiteBossIceSplinterRoot.h new file mode 100644 index 00000000..bdbf6917 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossIceSplinterRoot.h @@ -0,0 +1,58 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossChemicalProjectile.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossIceSplinterRoot : public SiteBossChemicalProjectile { + SEAD_RTTI_OVERRIDE(SiteBossIceSplinterRoot, SiteBossChemicalProjectile) +public: + explicit SiteBossIceSplinterRoot(const InitArg& arg); + ~SiteBossIceSplinterRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x180 + const int* mReflectAtkPower_s{}; + // static_param at offset 0x188 + const float* mChaseAngleMin_s{}; + // static_param at offset 0x190 + const float* mRotateSpeed_s{}; + // static_param at offset 0x198 + sead::SafeString mBindNodeName0_s{}; + // static_param at offset 0x1a8 + sead::SafeString mBindNodeName1_s{}; + // static_param at offset 0x1b8 + sead::SafeString mChaseParentNode_s{}; + // static_param at offset 0x1c8 + const sead::Vector3f* mBindOffset0_s{}; + // static_param at offset 0x1d0 + const sead::Vector3f* mBindOffset1_s{}; + // static_param at offset 0x1d8 + const sead::Vector3f* mBindOffset2_s{}; + // static_param at offset 0x1e0 + const sead::Vector3f* mBindOffset3_s{}; + // static_param at offset 0x1e8 + const sead::Vector3f* mBindOffset4_s{}; + // static_param at offset 0x1f0 + const sead::Vector3f* mBindOffset5_s{}; + // static_param at offset 0x1f8 + const sead::Vector3f* mBindOffset6_s{}; + // static_param at offset 0x200 + const sead::Vector3f* mBindOffset7_s{}; + // static_param at offset 0x208 + const sead::Vector3f* mBindOffset8_s{}; + // static_param at offset 0x210 + const sead::Vector3f* mRotateSpeedAtHit_s{}; + // static_param at offset 0x218 + const sead::Vector3f* mRotateSpeedAtFall_s{}; + // map_unit_param at offset 0x220 + const int* mCount_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordAttackRoot.cpp b/src/Game/AI/AI/aiSiteBossLswordAttackRoot.cpp new file mode 100644 index 00000000..49f4b8a6 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordAttackRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiSiteBossLswordAttackRoot.h" + +namespace uking::ai { + +SiteBossLswordAttackRoot::SiteBossLswordAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossLswordAttackRoot::~SiteBossLswordAttackRoot() = default; + +bool SiteBossLswordAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossLswordAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossLswordAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossLswordAttackRoot::loadParams_() { + getStaticParam(&mHighSlashRate_s, "HighSlashRate"); + getStaticParam(&mWhirlSlashRate_s, "WhirlSlashRate"); + getStaticParam(&mFireBallRate_s, "FireBallRate"); + getStaticParam(&mCrossSlashRate_s, "CrossSlashRate"); + getStaticParam(&mTornadoAttackRate_s, "TornadoAttackRate"); + getStaticParam(&mChemicalPlusHPRate_s, "ChemicalPlusHPRate"); + getStaticParam(&mIsFarDist_s, "IsFarDist"); + getStaticParam(&mPatternShiftFirstLifeRate_s, "PatternShiftFirstLifeRate"); + getStaticParam(&mReturnWaitCount_s, "ReturnWaitCount"); + getStaticParam(&mForceApproachCount_s, "ForceApproachCount"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); + getDynamicParam(&mIsCancelAttack_d, "IsCancelAttack"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordAttackRoot.h b/src/Game/AI/AI/aiSiteBossLswordAttackRoot.h new file mode 100644 index 00000000..0cf8f667 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordAttackRoot.h @@ -0,0 +1,45 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossLswordAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossLswordAttackRoot, ksys::act::ai::Ai) +public: + explicit SiteBossLswordAttackRoot(const InitArg& arg); + ~SiteBossLswordAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mHighSlashRate_s{}; + // static_param at offset 0x40 + const int* mWhirlSlashRate_s{}; + // static_param at offset 0x48 + const int* mFireBallRate_s{}; + // static_param at offset 0x50 + const int* mCrossSlashRate_s{}; + // static_param at offset 0x58 + const int* mTornadoAttackRate_s{}; + // static_param at offset 0x60 + const float* mChemicalPlusHPRate_s{}; + // static_param at offset 0x68 + const float* mIsFarDist_s{}; + // static_param at offset 0x70 + const float* mPatternShiftFirstLifeRate_s{}; + // static_param at offset 0x78 + const float* mReturnWaitCount_s{}; + // static_param at offset 0x80 + const float* mForceApproachCount_s{}; + // dynamic_param at offset 0x88 + bool* mIsAttackPatternFixed_d{}; + // dynamic_param at offset 0x90 + bool* mIsCancelAttack_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.cpp b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.cpp new file mode 100644 index 00000000..fce18f52 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.cpp @@ -0,0 +1,36 @@ +#include "Game/AI/AI/aiSiteBossLswordFireBallRoot.h" + +namespace uking::ai { + +SiteBossLswordFireBallRoot::SiteBossLswordFireBallRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SiteBossLswordFireBallRoot::~SiteBossLswordFireBallRoot() = default; + +bool SiteBossLswordFireBallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossLswordFireBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossLswordFireBallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossLswordFireBallRoot::loadParams_() { + getStaticParam(&mPredictPosRate_s, "PredictPosRate"); + getStaticParam(&mPosReduceRatio_s, "PosReduceRatio"); + getStaticParam(&mKeepDistance_s, "KeepDistance"); + getStaticParam(&mMoveSpeed_s, "MoveSpeed"); + getStaticParam(&mYOffset_s, "YOffset"); + getStaticParam(&mIsThrowChildDevice_s, "IsThrowChildDevice"); + getStaticParam(&mIsNeedCreateChildDevice_s, "IsNeedCreateChildDevice"); + getStaticParam(&mBindPosOffset_s, "BindPosOffset"); + getDynamicParam(&mThrowActorName_d, "ThrowActorName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h new file mode 100644 index 00000000..9b662689 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordFireBallRoot.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossLswordFireBallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossLswordFireBallRoot, ksys::act::ai::Ai) +public: + explicit SiteBossLswordFireBallRoot(const InitArg& arg); + ~SiteBossLswordFireBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPredictPosRate_s{}; + // static_param at offset 0x40 + const float* mPosReduceRatio_s{}; + // static_param at offset 0x48 + const float* mKeepDistance_s{}; + // static_param at offset 0x50 + const float* mMoveSpeed_s{}; + // static_param at offset 0x58 + const float* mYOffset_s{}; + // static_param at offset 0x60 + const bool* mIsThrowChildDevice_s{}; + // static_param at offset 0x68 + const bool* mIsNeedCreateChildDevice_s{}; + // static_param at offset 0x70 + const sead::Vector3f* mBindPosOffset_s{}; + // dynamic_param at offset 0x78 + sead::SafeString* mThrowActorName_d{}; + // dynamic_param at offset 0x88 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x90 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordRoot.cpp b/src/Game/AI/AI/aiSiteBossLswordRoot.cpp new file mode 100644 index 00000000..d2477e69 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordRoot.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiSiteBossLswordRoot.h" + +namespace uking::ai { + +SiteBossLswordRoot::SiteBossLswordRoot(const InitArg& arg) : SiteBossRoot(arg) {} + +SiteBossLswordRoot::~SiteBossLswordRoot() = default; + +bool SiteBossLswordRoot::init_(sead::Heap* heap) { + return SiteBossRoot::init_(heap); +} + +void SiteBossLswordRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossRoot::enter_(params); +} + +void SiteBossLswordRoot::leave_() { + SiteBossRoot::leave_(); +} + +void SiteBossLswordRoot::loadParams_() { + SiteBossRoot::loadParams_(); + getStaticParam(&mFireBallAttackPower_s, "FireBallAttackPower"); + getStaticParam(&mFireBallMinDamage_s, "FireBallMinDamage"); + getStaticParam(&mBigFireBallAttackPower_s, "BigFireBallAttackPower"); + getStaticParam(&mBigFireBallMinDamage_s, "BigFireBallMinDamage"); + getStaticParam(&mWearFlameAttackPower_s, "WearFlameAttackPower"); + getStaticParam(&mWearFlameMinDamage_s, "WearFlameMinDamage"); + getStaticParam(&mBigFireBallScaleTime0_s, "BigFireBallScaleTime0"); + getStaticParam(&mBigFireBallScaleMax_s, "BigFireBallScaleMax"); + getStaticParam(&mBigFireBallScaleTime1_s, "BigFireBallScaleTime1"); + getStaticParam(&mBigFireBallMoveSpeed0_s, "BigFireBallMoveSpeed0"); + getStaticParam(&mBigFireBallMoveSpeed1_s, "BigFireBallMoveSpeed1"); + getStaticParam(&mBigFireBallPosOffset_s, "BigFireBallPosOffset"); + getStaticParam(&mBigFireBallRotOffset_s, "BigFireBallRotOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordRoot.h b/src/Game/AI/AI/aiSiteBossLswordRoot.h new file mode 100644 index 00000000..a092414e --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordRoot.h @@ -0,0 +1,48 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossLswordRoot : public SiteBossRoot { + SEAD_RTTI_OVERRIDE(SiteBossLswordRoot, SiteBossRoot) +public: + explicit SiteBossLswordRoot(const InitArg& arg); + ~SiteBossLswordRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const int* mFireBallAttackPower_s{}; + // static_param at offset 0x100 + const int* mFireBallMinDamage_s{}; + // static_param at offset 0x108 + const int* mBigFireBallAttackPower_s{}; + // static_param at offset 0x110 + const int* mBigFireBallMinDamage_s{}; + // static_param at offset 0x118 + const int* mWearFlameAttackPower_s{}; + // static_param at offset 0x120 + const int* mWearFlameMinDamage_s{}; + // static_param at offset 0x128 + const float* mBigFireBallScaleTime0_s{}; + // static_param at offset 0x130 + const float* mBigFireBallScaleMax_s{}; + // static_param at offset 0x138 + const float* mBigFireBallScaleTime1_s{}; + // static_param at offset 0x140 + const float* mBigFireBallMoveSpeed0_s{}; + // static_param at offset 0x148 + const float* mBigFireBallMoveSpeed1_s{}; + // static_param at offset 0x150 + const sead::Vector3f* mBigFireBallPosOffset_s{}; + // static_param at offset 0x158 + const sead::Vector3f* mBigFireBallRotOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.cpp b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.cpp new file mode 100644 index 00000000..05f37211 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSiteBossLswordTornadoRoot.h" + +namespace uking::ai { + +SiteBossLswordTornadoRoot::SiteBossLswordTornadoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossLswordTornadoRoot::~SiteBossLswordTornadoRoot() = default; + +bool SiteBossLswordTornadoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossLswordTornadoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossLswordTornadoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossLswordTornadoRoot::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mDestPos_d, "DestPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h new file mode 100644 index 00000000..a4a23393 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossLswordTornadoRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossLswordTornadoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossLswordTornadoRoot, ksys::act::ai::Ai) +public: + explicit SiteBossLswordTornadoRoot(const InitArg& arg); + ~SiteBossLswordTornadoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mDestPos_d{}; + // dynamic_param at offset 0x48 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossNormalRoot.cpp b/src/Game/AI/AI/aiSiteBossNormalRoot.cpp new file mode 100644 index 00000000..e99ffb5a --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossNormalRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSiteBossNormalRoot.h" + +namespace uking::ai { + +SiteBossNormalRoot::SiteBossNormalRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossNormalRoot::~SiteBossNormalRoot() = default; + +bool SiteBossNormalRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossNormalRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossNormalRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossNormalRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossNormalRoot.h b/src/Game/AI/AI/aiSiteBossNormalRoot.h new file mode 100644 index 00000000..c3cf7538 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossNormalRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossNormalRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossNormalRoot, ksys::act::ai::Ai) +public: + explicit SiteBossNormalRoot(const InitArg& arg); + ~SiteBossNormalRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossPierceBulletAttack.cpp b/src/Game/AI/AI/aiSiteBossPierceBulletAttack.cpp new file mode 100644 index 00000000..3f2c99b4 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossPierceBulletAttack.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiSiteBossPierceBulletAttack.h" + +namespace uking::ai { + +SiteBossPierceBulletAttack::SiteBossPierceBulletAttack(const InitArg& arg) + : SiteBossShootNormalArrowRoot(arg) {} + +SiteBossPierceBulletAttack::~SiteBossPierceBulletAttack() = default; + +bool SiteBossPierceBulletAttack::init_(sead::Heap* heap) { + return SiteBossShootNormalArrowRoot::init_(heap); +} + +void SiteBossPierceBulletAttack::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossShootNormalArrowRoot::enter_(params); +} + +void SiteBossPierceBulletAttack::leave_() { + SiteBossShootNormalArrowRoot::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossPierceBulletAttack.h b/src/Game/AI/AI/aiSiteBossPierceBulletAttack.h new file mode 100644 index 00000000..28147e78 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossPierceBulletAttack.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossShootNormalArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossPierceBulletAttack : public SiteBossShootNormalArrowRoot { + SEAD_RTTI_OVERRIDE(SiteBossPierceBulletAttack, SiteBossShootNormalArrowRoot) +public: + explicit SiteBossPierceBulletAttack(const InitArg& arg); + ~SiteBossPierceBulletAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossReaction.cpp b/src/Game/AI/AI/aiSiteBossReaction.cpp new file mode 100644 index 00000000..e9f7ba21 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSiteBossReaction.h" + +namespace uking::ai { + +SiteBossReaction::SiteBossReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +SiteBossReaction::~SiteBossReaction() = default; + +bool SiteBossReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void SiteBossReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void SiteBossReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void SiteBossReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); + getStaticParam(&mIsChangeEffectiveDamage_s, "IsChangeEffectiveDamage"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossReaction.h b/src/Game/AI/AI/aiSiteBossReaction.h new file mode 100644 index 00000000..82999a9f --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossReaction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(SiteBossReaction, EnemyDefaultReaction) +public: + explicit SiteBossReaction(const InitArg& arg); + ~SiteBossReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const bool* mIsChangeEffectiveDamage_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRecognizeRoot.cpp b/src/Game/AI/AI/aiSiteBossRecognizeRoot.cpp new file mode 100644 index 00000000..5f2a8ea9 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRecognizeRoot.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSiteBossRecognizeRoot.h" + +namespace uking::ai { + +SiteBossRecognizeRoot::SiteBossRecognizeRoot(const InitArg& arg) : SiteBossRecognizeRootBase(arg) {} + +SiteBossRecognizeRoot::~SiteBossRecognizeRoot() = default; + +bool SiteBossRecognizeRoot::init_(sead::Heap* heap) { + return SiteBossRecognizeRootBase::init_(heap); +} + +void SiteBossRecognizeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossRecognizeRootBase::enter_(params); +} + +void SiteBossRecognizeRoot::leave_() { + SiteBossRecognizeRootBase::leave_(); +} + +void SiteBossRecognizeRoot::loadParams_() { + SiteBossRecognizeRootBase::loadParams_(); + getStaticParam(&mIgnoreWaprDistMax_s, "IgnoreWaprDistMax"); + getStaticParam(&mIsCheckChildDevice_s, "IsCheckChildDevice"); + getStaticParam(&mIgnoreWarpDistRetFromDamage_s, "IgnoreWarpDistRetFromDamage"); + getStaticParam(&mChaseDist_s, "ChaseDist"); + getStaticParam(&mChaseDistOffset_s, "ChaseDistOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRecognizeRoot.h b/src/Game/AI/AI/aiSiteBossRecognizeRoot.h new file mode 100644 index 00000000..b1a3fa39 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRecognizeRoot.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossRecognizeRootBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossRecognizeRoot : public SiteBossRecognizeRootBase { + SEAD_RTTI_OVERRIDE(SiteBossRecognizeRoot, SiteBossRecognizeRootBase) +public: + explicit SiteBossRecognizeRoot(const InitArg& arg); + ~SiteBossRecognizeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mIgnoreWaprDistMax_s{}; + // static_param at offset 0x70 + const bool* mIsCheckChildDevice_s{}; + // static_param at offset 0x78 + const bool* mIgnoreWarpDistRetFromDamage_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mChaseDist_s{}; + // static_param at offset 0x88 + const sead::Vector3f* mChaseDistOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRecognizeRootBase.cpp b/src/Game/AI/AI/aiSiteBossRecognizeRootBase.cpp new file mode 100644 index 00000000..298cdc6e --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRecognizeRootBase.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSiteBossRecognizeRootBase.h" + +namespace uking::ai { + +SiteBossRecognizeRootBase::SiteBossRecognizeRootBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossRecognizeRootBase::~SiteBossRecognizeRootBase() = default; + +bool SiteBossRecognizeRootBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossRecognizeRootBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossRecognizeRootBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossRecognizeRootBase::loadParams_() { + getStaticParam(&mAttackNum_s, "AttackNum"); + getStaticParam(&mAttackRandNum_s, "AttackRandNum"); + getStaticParam(&mWarpStartDist_s, "WarpStartDist"); + getStaticParam(&mForceWarpRetryDist_s, "ForceWarpRetryDist"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRecognizeRootBase.h b/src/Game/AI/AI/aiSiteBossRecognizeRootBase.h new file mode 100644 index 00000000..e8885ba9 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRecognizeRootBase.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossRecognizeRootBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossRecognizeRootBase, ksys::act::ai::Ai) +public: + explicit SiteBossRecognizeRootBase(const InitArg& arg); + ~SiteBossRecognizeRootBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackNum_s{}; + // static_param at offset 0x40 + const int* mAttackRandNum_s{}; + // static_param at offset 0x48 + const float* mWarpStartDist_s{}; + // static_param at offset 0x50 + const float* mForceWarpRetryDist_s{}; + // dynamic_param at offset 0x58 + bool* mIsAttackPatternFixed_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossReflectArrowRoot.cpp b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.cpp new file mode 100644 index 00000000..bd1582c1 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSiteBossReflectArrowRoot.h" + +namespace uking::ai { + +SiteBossReflectArrowRoot::SiteBossReflectArrowRoot(const InitArg& arg) + : SiteBossShootNormalArrowRoot(arg) {} + +SiteBossReflectArrowRoot::~SiteBossReflectArrowRoot() = default; + +bool SiteBossReflectArrowRoot::init_(sead::Heap* heap) { + return SiteBossShootNormalArrowRoot::init_(heap); +} + +void SiteBossReflectArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossShootNormalArrowRoot::enter_(params); +} + +void SiteBossReflectArrowRoot::leave_() { + SiteBossShootNormalArrowRoot::leave_(); +} + +void SiteBossReflectArrowRoot::loadParams_() { + SiteBossShootNormalArrowRoot::loadParams_(); + getDynamicParam(&mIsReflectAmongChild_d, "IsReflectAmongChild"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h new file mode 100644 index 00000000..ac14d6e6 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossReflectArrowRoot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossShootNormalArrowRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossReflectArrowRoot : public SiteBossShootNormalArrowRoot { + SEAD_RTTI_OVERRIDE(SiteBossReflectArrowRoot, SiteBossShootNormalArrowRoot) +public: + explicit SiteBossReflectArrowRoot(const InitArg& arg); + ~SiteBossReflectArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x338 + bool* mIsReflectAmongChild_d{}; + // dynamic_param at offset 0x340 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRoot.cpp b/src/Game/AI/AI/aiSiteBossRoot.cpp new file mode 100644 index 00000000..9b9c7add --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRoot.cpp @@ -0,0 +1,39 @@ +#include "Game/AI/AI/aiSiteBossRoot.h" + +namespace uking::ai { + +SiteBossRoot::SiteBossRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossRoot::~SiteBossRoot() = default; + +bool SiteBossRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossRoot::loadParams_() { + getStaticParam(&mOffFlagIndexAtClipping_s, "OffFlagIndexAtClipping"); + getStaticParam(&mAddAttackPower_s, "AddAttackPower"); + getStaticParam(&mForceRecoverHitMax_s, "ForceRecoverHitMax"); + getStaticParam(&mForceRecoverDamageMax_s, "ForceRecoverDamageMax"); + getStaticParam(&mAddForceRecoverHitNum_s, "AddForceRecoverHitNum"); + getStaticParam(&mAddForceRecoverDamage_s, "AddForceRecoverDamage"); + getStaticParam(&mBlownOffAtWeakPointHitNum_s, "BlownOffAtWeakPointHitNum"); + getStaticParam(&mDemoPlayHPRate_s, "DemoPlayHPRate"); + getStaticParam(&mWeakPointDamageRate_s, "WeakPointDamageRate"); + getStaticParam(&mIsRemainBoss_s, "IsRemainBoss"); + getStaticParam(&mDemoName_s, "DemoName"); + getStaticParam(&mNormalEntryName_s, "NormalEntryName"); + getStaticParam(&mAtDownEntryName_s, "AtDownEntryName"); + getStaticParam(&mIsPlayed_DemoFlagName_s, "IsPlayed_DemoFlagName"); + getMapUnitParam(&mUniqueNameMessageLabel_m, "UniqueNameMessageLabel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossRoot.h b/src/Game/AI/AI/aiSiteBossRoot.h new file mode 100644 index 00000000..73adad74 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossRoot.h @@ -0,0 +1,51 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossRoot, ksys::act::ai::Ai) +public: + explicit SiteBossRoot(const InitArg& arg); + ~SiteBossRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mOffFlagIndexAtClipping_s{}; + // static_param at offset 0x40 + const int* mAddAttackPower_s{}; + // static_param at offset 0x48 + const int* mForceRecoverHitMax_s{}; + // static_param at offset 0x50 + const int* mForceRecoverDamageMax_s{}; + // static_param at offset 0x58 + const int* mAddForceRecoverHitNum_s{}; + // static_param at offset 0x60 + const int* mAddForceRecoverDamage_s{}; + // static_param at offset 0x68 + const int* mBlownOffAtWeakPointHitNum_s{}; + // static_param at offset 0x70 + const float* mDemoPlayHPRate_s{}; + // static_param at offset 0x78 + const float* mWeakPointDamageRate_s{}; + // static_param at offset 0x80 + const bool* mIsRemainBoss_s{}; + // static_param at offset 0x88 + sead::SafeString mDemoName_s{}; + // static_param at offset 0x98 + sead::SafeString mNormalEntryName_s{}; + // static_param at offset 0xa8 + sead::SafeString mAtDownEntryName_s{}; + // static_param at offset 0xb8 + sead::SafeString mIsPlayed_DemoFlagName_s{}; + // map_unit_param at offset 0xc8 + sead::SafeString mUniqueNameMessageLabel_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossShootArrowRoot.cpp b/src/Game/AI/AI/aiSiteBossShootArrowRoot.cpp new file mode 100644 index 00000000..a4c64181 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossShootArrowRoot.cpp @@ -0,0 +1,50 @@ +#include "Game/AI/AI/aiSiteBossShootArrowRoot.h" + +namespace uking::ai { + +SiteBossShootArrowRoot::SiteBossShootArrowRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossShootArrowRoot::~SiteBossShootArrowRoot() = default; + +bool SiteBossShootArrowRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossShootArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossShootArrowRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossShootArrowRoot::loadParams_() { + getStaticParam(&mChildDeviceMax_s, "ChildDeviceMax"); + getStaticParam(&mChildDeviceSupplyNum_s, "ChildDeviceSupplyNum"); + getStaticParam(&mChildDeviceSupplyInterval_s, "ChildDeviceSupplyInterval"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mArrowRainBaseDamage_s, "ArrowRainBaseDamage"); + getStaticParam(&mArrowRainAddDamage_s, "ArrowRainAddDamage"); + getStaticParam(&mAvoidCountMax_s, "AvoidCountMax"); + getStaticParam(&mSeqAvoidRate_s, "SeqAvoidRate"); + getStaticParam(&mUpDownAvoidRate_s, "UpDownAvoidRate"); + getStaticParam(&mPatternShiftFirstLifeRate_s, "PatternShiftFirstLifeRate"); + getStaticParam(&mPatternShiftSecondLifeRate_s, "PatternShiftSecondLifeRate"); + getStaticParam(&mPatternShiftThirdLifeRate_s, "PatternShiftThirdLifeRate"); + getStaticParam(&mCancelCreateTornadoHeight_s, "CancelCreateTornadoHeight"); + getStaticParam(&mAvoidAngle_s, "AvoidAngle"); + getStaticParam(&mAvoidLifeRate_s, "AvoidLifeRate"); + getStaticParam(&mAvoidDist_s, "AvoidDist"); + getStaticParam(&mAvoidDistRand_s, "AvoidDistRand"); + getStaticParam(&mAvoidWaitCount_s, "AvoidWaitCount"); + getStaticParam(&mAvoidWaitCountRand_s, "AvoidWaitCountRand"); + getStaticParam(&mTornadoCreateHeight_s, "TornadoCreateHeight"); + getStaticParam(&mNoWaitWarpAttackKey_s, "NoWaitWarpAttackKey"); + getStaticParam(&mChaseDist_s, "ChaseDist"); + getStaticParam(&mChaseDistOffset_s, "ChaseDistOffset"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); + getDynamicParam(&mIsCancelAttack_d, "IsCancelAttack"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossShootArrowRoot.h b/src/Game/AI/AI/aiSiteBossShootArrowRoot.h new file mode 100644 index 00000000..e0ee6813 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossShootArrowRoot.h @@ -0,0 +1,73 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossShootArrowRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossShootArrowRoot, ksys::act::ai::Ai) +public: + explicit SiteBossShootArrowRoot(const InitArg& arg); + ~SiteBossShootArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mChildDeviceMax_s{}; + // static_param at offset 0x40 + const int* mChildDeviceSupplyNum_s{}; + // static_param at offset 0x48 + const int* mChildDeviceSupplyInterval_s{}; + // static_param at offset 0x50 + const int* mAtMinDamage_s{}; + // static_param at offset 0x58 + const int* mArrowRainBaseDamage_s{}; + // static_param at offset 0x60 + const int* mArrowRainAddDamage_s{}; + // static_param at offset 0x68 + const int* mAvoidCountMax_s{}; + // static_param at offset 0x70 + const int* mSeqAvoidRate_s{}; + // static_param at offset 0x78 + const int* mUpDownAvoidRate_s{}; + // static_param at offset 0x80 + const float* mPatternShiftFirstLifeRate_s{}; + // static_param at offset 0x88 + const float* mPatternShiftSecondLifeRate_s{}; + // static_param at offset 0x90 + const float* mPatternShiftThirdLifeRate_s{}; + // static_param at offset 0x98 + const float* mCancelCreateTornadoHeight_s{}; + // static_param at offset 0xa0 + const float* mAvoidAngle_s{}; + // static_param at offset 0xa8 + const float* mAvoidLifeRate_s{}; + // static_param at offset 0xb0 + const float* mAvoidDist_s{}; + // static_param at offset 0xb8 + const float* mAvoidDistRand_s{}; + // static_param at offset 0xc0 + const float* mAvoidWaitCount_s{}; + // static_param at offset 0xc8 + const float* mAvoidWaitCountRand_s{}; + // static_param at offset 0xd0 + const float* mTornadoCreateHeight_s{}; + // static_param at offset 0xd8 + sead::SafeString mNoWaitWarpAttackKey_s{}; + // static_param at offset 0xe8 + const sead::Vector3f* mChaseDist_s{}; + // static_param at offset 0xf0 + const sead::Vector3f* mChaseDistOffset_s{}; + // dynamic_param at offset 0xf8 + bool* mIsAttackPatternFixed_d{}; + // dynamic_param at offset 0x100 + bool* mIsCancelAttack_d{}; + // dynamic_param at offset 0x108 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.cpp b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.cpp new file mode 100644 index 00000000..b1c79a1a --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.cpp @@ -0,0 +1,53 @@ +#include "Game/AI/AI/aiSiteBossShootNormalArrowRoot.h" + +namespace uking::ai { + +SiteBossShootNormalArrowRoot::SiteBossShootNormalArrowRoot(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +SiteBossShootNormalArrowRoot::~SiteBossShootNormalArrowRoot() = default; + +bool SiteBossShootNormalArrowRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossShootNormalArrowRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossShootNormalArrowRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossShootNormalArrowRoot::loadParams_() { + getStaticParam(&mArrowNum_s, "ArrowNum"); + getStaticParam(&mAtMinDamage_s, "AtMinDamage"); + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAddAttackPower_s, "AddAttackPower"); + getStaticParam(&mAvoidCountMax_s, "AvoidCountMax"); + getStaticParam(&mSeqAvoidRate_s, "SeqAvoidRate"); + getStaticParam(&mUpDownAvoidRate_s, "UpDownAvoidRate"); + getStaticParam(&mHoldTime_s, "HoldTime"); + getStaticParam(&mInitHoldTime_s, "InitHoldTime"); + getStaticParam(&mAvoidLifeRate_s, "AvoidLifeRate"); + getStaticParam(&mAvoidAngle_s, "AvoidAngle"); + getStaticParam(&mAvoidDist_s, "AvoidDist"); + getStaticParam(&mAvoidDistRand_s, "AvoidDistRand"); + getStaticParam(&mAvoidWaitCount_s, "AvoidWaitCount"); + getStaticParam(&mAvoidWaitCountRand_s, "AvoidWaitCountRand"); + getStaticParam(&mKeepDistance_s, "KeepDistance"); + getStaticParam(&mTrigEventAtHold_s, "TrigEventAtHold"); + getStaticParam(&mSpineControlOffsetAngleLR_s, "SpineControlOffsetAngleLR"); + getStaticParam(&mSpineControlOffsetAngleUD_s, "SpineControlOffsetAngleUD"); + getStaticParam(&mIsFinishAtNoDevice_s, "IsFinishAtNoDevice"); + getStaticParam(&mIsIgnoreCancelAttack_s, "IsIgnoreCancelAttack"); + getStaticParam(&mIsKeepDistance_s, "IsKeepDistance"); + getStaticParam(&mArrowName_s, "ArrowName"); + getStaticParam(&mChaseDist_s, "ChaseDist"); + getStaticParam(&mChaseDistOffset_s, "ChaseDistOffset"); + getStaticParam(&mReflectOffset_s, "ReflectOffset"); + getDynamicParam(&mIsCancelAttack_d, "IsCancelAttack"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h new file mode 100644 index 00000000..ac1f224b --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossShootNormalArrowRoot.h @@ -0,0 +1,77 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossShootNormalArrowRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossShootNormalArrowRoot, ksys::act::ai::Ai) +public: + explicit SiteBossShootNormalArrowRoot(const InitArg& arg); + ~SiteBossShootNormalArrowRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mArrowNum_s{}; + // static_param at offset 0x40 + const int* mAtMinDamage_s{}; + // static_param at offset 0x48 + const int* mAttackPower_s{}; + // static_param at offset 0x50 + const int* mAddAttackPower_s{}; + // static_param at offset 0x58 + const int* mAvoidCountMax_s{}; + // static_param at offset 0x60 + const int* mSeqAvoidRate_s{}; + // static_param at offset 0x68 + const int* mUpDownAvoidRate_s{}; + // static_param at offset 0x70 + const float* mHoldTime_s{}; + // static_param at offset 0x78 + const float* mInitHoldTime_s{}; + // static_param at offset 0x80 + const float* mAvoidLifeRate_s{}; + // static_param at offset 0x88 + const float* mAvoidAngle_s{}; + // static_param at offset 0x90 + const float* mAvoidDist_s{}; + // static_param at offset 0x98 + const float* mAvoidDistRand_s{}; + // static_param at offset 0xa0 + const float* mAvoidWaitCount_s{}; + // static_param at offset 0xa8 + const float* mAvoidWaitCountRand_s{}; + // static_param at offset 0xb0 + const float* mKeepDistance_s{}; + // static_param at offset 0xb8 + const float* mTrigEventAtHold_s{}; + // static_param at offset 0xc0 + const float* mSpineControlOffsetAngleLR_s{}; + // static_param at offset 0xc8 + const float* mSpineControlOffsetAngleUD_s{}; + // static_param at offset 0xd0 + const bool* mIsFinishAtNoDevice_s{}; + // static_param at offset 0xd8 + const bool* mIsIgnoreCancelAttack_s{}; + // static_param at offset 0xe0 + const bool* mIsKeepDistance_s{}; + // static_param at offset 0xe8 + sead::SafeString mArrowName_s{}; + // static_param at offset 0xf8 + const sead::Vector3f* mChaseDist_s{}; + // static_param at offset 0x100 + const sead::Vector3f* mChaseDistOffset_s{}; + // static_param at offset 0x108 + const sead::Vector3f* mReflectOffset_s{}; + // dynamic_param at offset 0x110 + bool* mIsCancelAttack_d{}; + // dynamic_param at offset 0x118 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSmallDamageRoot.cpp b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.cpp new file mode 100644 index 00000000..504e8e14 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSiteBossSmallDamageRoot.h" + +namespace uking::ai { + +SiteBossSmallDamageRoot::SiteBossSmallDamageRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSmallDamageRoot::~SiteBossSmallDamageRoot() = default; + +bool SiteBossSmallDamageRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSmallDamageRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSmallDamageRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSmallDamageRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h new file mode 100644 index 00000000..c2de5551 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSmallDamageRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSmallDamageRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSmallDamageRoot, ksys::act::ai::Ai) +public: + explicit SiteBossSmallDamageRoot(const InitArg& arg); + ~SiteBossSmallDamageRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearAttackRoot.cpp b/src/Game/AI/AI/aiSiteBossSpearAttackRoot.cpp new file mode 100644 index 00000000..d0c58137 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearAttackRoot.cpp @@ -0,0 +1,42 @@ +#include "Game/AI/AI/aiSiteBossSpearAttackRoot.h" + +namespace uking::ai { + +SiteBossSpearAttackRoot::SiteBossSpearAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSpearAttackRoot::~SiteBossSpearAttackRoot() = default; + +bool SiteBossSpearAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSpearAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSpearAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSpearAttackRoot::loadParams_() { + getStaticParam(&mThrowSpearRate_s, "ThrowSpearRate"); + getStaticParam(&mBeamRate_s, "BeamRate"); + getStaticParam(&mIceBulletRate_s, "IceBulletRate"); + getStaticParam(&mSweepRateAtFar_s, "SweepRateAtFar"); + getStaticParam(&mSweepRateAtNear_s, "SweepRateAtNear"); + getStaticParam(&mReturnWaitCount_s, "ReturnWaitCount"); + getStaticParam(&mBeamPatternChangeHP_s, "BeamPatternChangeHP"); + getStaticParam(&mFarDistanceAttackRange_s, "FarDistanceAttackRange"); + getStaticParam(&mNearDistanceAttackRange_s, "NearDistanceAttackRange"); + getStaticParam(&mVerticalAttackRange_s, "VerticalAttackRange"); + getStaticParam(&mOnIceBlockHeight_s, "OnIceBlockHeight"); + getStaticParam(&mIsBowAimedCounterOn_s, "IsBowAimedCounterOn"); + getStaticParam(&mIsIceBulletOn_s, "IsIceBulletOn"); + getStaticParam(&mWarpAnchorFirstSuffix_s, "WarpAnchorFirstSuffix"); + getStaticParam(&mWarpAnchorAfterSuffix_s, "WarpAnchorAfterSuffix"); + getStaticParam(&mChaseDist_s, "ChaseDist"); + getStaticParam(&mChaseDistOffset_s, "ChaseDistOffset"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearAttackRoot.h b/src/Game/AI/AI/aiSiteBossSpearAttackRoot.h new file mode 100644 index 00000000..d9a6ff4c --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearAttackRoot.h @@ -0,0 +1,57 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSpearAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSpearAttackRoot, ksys::act::ai::Ai) +public: + explicit SiteBossSpearAttackRoot(const InitArg& arg); + ~SiteBossSpearAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mThrowSpearRate_s{}; + // static_param at offset 0x40 + const int* mBeamRate_s{}; + // static_param at offset 0x48 + const int* mIceBulletRate_s{}; + // static_param at offset 0x50 + const int* mSweepRateAtFar_s{}; + // static_param at offset 0x58 + const int* mSweepRateAtNear_s{}; + // static_param at offset 0x60 + const float* mReturnWaitCount_s{}; + // static_param at offset 0x68 + const float* mBeamPatternChangeHP_s{}; + // static_param at offset 0x70 + const float* mFarDistanceAttackRange_s{}; + // static_param at offset 0x78 + const float* mNearDistanceAttackRange_s{}; + // static_param at offset 0x80 + const float* mVerticalAttackRange_s{}; + // static_param at offset 0x88 + const float* mOnIceBlockHeight_s{}; + // static_param at offset 0x90 + const bool* mIsBowAimedCounterOn_s{}; + // static_param at offset 0x98 + const bool* mIsIceBulletOn_s{}; + // static_param at offset 0xa0 + sead::SafeString mWarpAnchorFirstSuffix_s{}; + // static_param at offset 0xb0 + sead::SafeString mWarpAnchorAfterSuffix_s{}; + // static_param at offset 0xc0 + const sead::Vector3f* mChaseDist_s{}; + // static_param at offset 0xc8 + const sead::Vector3f* mChaseDistOffset_s{}; + // dynamic_param at offset 0xd0 + bool* mIsAttackPatternFixed_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearLifeSelector.cpp b/src/Game/AI/AI/aiSiteBossSpearLifeSelector.cpp new file mode 100644 index 00000000..7a96340d --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearLifeSelector.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSiteBossSpearLifeSelector.h" + +namespace uking::ai { + +SiteBossSpearLifeSelector::SiteBossSpearLifeSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSpearLifeSelector::~SiteBossSpearLifeSelector() = default; + +bool SiteBossSpearLifeSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSpearLifeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSpearLifeSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSpearLifeSelector::loadParams_() { + getStaticParam(&mPatternChangeLife2_s, "PatternChangeLife2"); + getStaticParam(&mPatternChangeLife3_s, "PatternChangeLife3"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearLifeSelector.h b/src/Game/AI/AI/aiSiteBossSpearLifeSelector.h new file mode 100644 index 00000000..c6e9a59c --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearLifeSelector.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSpearLifeSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSpearLifeSelector, ksys::act::ai::Ai) +public: + explicit SiteBossSpearLifeSelector(const InitArg& arg); + ~SiteBossSpearLifeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPatternChangeLife2_s{}; + // static_param at offset 0x40 + const float* mPatternChangeLife3_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearRoot.cpp b/src/Game/AI/AI/aiSiteBossSpearRoot.cpp new file mode 100644 index 00000000..13973490 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSiteBossSpearRoot.h" + +namespace uking::ai { + +SiteBossSpearRoot::SiteBossSpearRoot(const InitArg& arg) : SiteBossRoot(arg) {} + +SiteBossSpearRoot::~SiteBossSpearRoot() = default; + +bool SiteBossSpearRoot::init_(sead::Heap* heap) { + return SiteBossRoot::init_(heap); +} + +void SiteBossSpearRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossRoot::enter_(params); +} + +void SiteBossSpearRoot::leave_() { + SiteBossRoot::leave_(); +} + +void SiteBossSpearRoot::loadParams_() { + SiteBossRoot::loadParams_(); + getStaticParam(&mThrowSpearAttackPower_s, "ThrowSpearAttackPower"); + getStaticParam(&mThrowSpearMinDmage_s, "ThrowSpearMinDmage"); + getStaticParam(&mIceSplinterAttackPower_s, "IceSplinterAttackPower"); + getStaticParam(&mIceSplinterMinDamage_s, "IceSplinterMinDamage"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearRoot.h b/src/Game/AI/AI/aiSiteBossSpearRoot.h new file mode 100644 index 00000000..afe337eb --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearRoot.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSpearRoot : public SiteBossRoot { + SEAD_RTTI_OVERRIDE(SiteBossSpearRoot, SiteBossRoot) +public: + explicit SiteBossSpearRoot(const InitArg& arg); + ~SiteBossSpearRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xf8 + const int* mThrowSpearAttackPower_s{}; + // static_param at offset 0x100 + const int* mThrowSpearMinDmage_s{}; + // static_param at offset 0x108 + const int* mIceSplinterAttackPower_s{}; + // static_param at offset 0x110 + const int* mIceSplinterMinDamage_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearThrow.cpp b/src/Game/AI/AI/aiSiteBossSpearThrow.cpp new file mode 100644 index 00000000..7c41d848 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearThrow.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiSiteBossSpearThrow.h" + +namespace uking::ai { + +SiteBossSpearThrow::SiteBossSpearThrow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSpearThrow::~SiteBossSpearThrow() = default; + +bool SiteBossSpearThrow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSpearThrow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSpearThrow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSpearThrow::loadParams_() { + getStaticParam(&mAttackPower_s, "AttackPower"); + getStaticParam(&mAtMnDamage_s, "AtMnDamage"); + getStaticParam(&mAddAttackPower_s, "AddAttackPower"); + getStaticParam(&mThrowActorName_s, "ThrowActorName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSpearThrow.h b/src/Game/AI/AI/aiSiteBossSpearThrow.h new file mode 100644 index 00000000..6d94393f --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSpearThrow.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSpearThrow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSpearThrow, ksys::act::ai::Ai) +public: + explicit SiteBossSpearThrow(const InitArg& arg); + ~SiteBossSpearThrow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAttackPower_s{}; + // static_param at offset 0x40 + const int* mAtMnDamage_s{}; + // static_param at offset 0x48 + const int* mAddAttackPower_s{}; + // static_param at offset 0x50 + sead::SafeString mThrowActorName_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordApproachRoot.cpp b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.cpp new file mode 100644 index 00000000..440d18c2 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiSiteBossSwordApproachRoot.h" + +namespace uking::ai { + +SiteBossSwordApproachRoot::SiteBossSwordApproachRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSwordApproachRoot::~SiteBossSwordApproachRoot() = default; + +bool SiteBossSwordApproachRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSwordApproachRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSwordApproachRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSwordApproachRoot::loadParams_() { + getStaticParam(&mKeepDistance_s, "KeepDistance"); + getStaticParam(&mMoveWidth_s, "MoveWidth"); + getStaticParam(&mBaseOffsetY_s, "BaseOffsetY"); + getStaticParam(&mPredictMoveFrame_s, "PredictMoveFrame"); + getStaticParam(&mIsCloseMove_s, "IsCloseMove"); + getStaticParam(&mIsPlayRunStartAS_s, "IsPlayRunStartAS"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mOldTargetPos_d, "OldTargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h new file mode 100644 index 00000000..dd6787d9 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordApproachRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordApproachRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSwordApproachRoot, ksys::act::ai::Ai) +public: + explicit SiteBossSwordApproachRoot(const InitArg& arg); + ~SiteBossSwordApproachRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mKeepDistance_s{}; + // static_param at offset 0x40 + const float* mMoveWidth_s{}; + // static_param at offset 0x48 + const float* mBaseOffsetY_s{}; + // static_param at offset 0x50 + const float* mPredictMoveFrame_s{}; + // static_param at offset 0x58 + const bool* mIsCloseMove_s{}; + // static_param at offset 0x60 + const bool* mIsPlayRunStartAS_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mOldTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordAttackRoot.cpp b/src/Game/AI/AI/aiSiteBossSwordAttackRoot.cpp new file mode 100644 index 00000000..4e0a9b22 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordAttackRoot.cpp @@ -0,0 +1,45 @@ +#include "Game/AI/AI/aiSiteBossSwordAttackRoot.h" + +namespace uking::ai { + +SiteBossSwordAttackRoot::SiteBossSwordAttackRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSwordAttackRoot::~SiteBossSwordAttackRoot() = default; + +bool SiteBossSwordAttackRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSwordAttackRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSwordAttackRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSwordAttackRoot::loadParams_() { + getStaticParam(&mCloseAttackRate_s, "CloseAttackRate"); + getStaticParam(&mChemicalPlusRate_s, "ChemicalPlusRate"); + getStaticParam(&mThrowAttackPower_s, "ThrowAttackPower"); + getStaticParam(&mAddAttackPower_s, "AddAttackPower"); + getStaticParam(&mThrowMinDamage_s, "ThrowMinDamage"); + getStaticParam(&mThrowRate_s, "ThrowRate"); + getStaticParam(&mPillarMax_s, "PillarMax"); + getStaticParam(&mElectricCounterMax_s, "ElectricCounterMax"); + getStaticParam(&mChemicalPlusHPRate_s, "ChemicalPlusHPRate"); + getStaticParam(&mShieldRepairTime_s, "ShieldRepairTime"); + getStaticParam(&mFirstAttackHPRate_s, "FirstAttackHPRate"); + getStaticParam(&mSecondAttackHPRate_s, "SecondAttackHPRate"); + getStaticParam(&mBeamAttackHPRate_s, "BeamAttackHPRate"); + getStaticParam(&mElectricBallScaleTime_s, "ElectricBallScaleTime"); + getStaticParam(&mElectricBallScale_s, "ElectricBallScale"); + getStaticParam(&mElectricBallRange_s, "ElectricBallRange"); + getStaticParam(&mThrowDist_s, "ThrowDist"); + getStaticParam(&mDemoName_s, "DemoName"); + getStaticParam(&mEntryPointName_s, "EntryPointName"); + getStaticParam(&mThrowActorName_s, "ThrowActorName"); + getDynamicParam(&mIsCancelAttack_d, "IsCancelAttack"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordAttackRoot.h b/src/Game/AI/AI/aiSiteBossSwordAttackRoot.h new file mode 100644 index 00000000..cbe126b3 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordAttackRoot.h @@ -0,0 +1,63 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordAttackRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSwordAttackRoot, ksys::act::ai::Ai) +public: + explicit SiteBossSwordAttackRoot(const InitArg& arg); + ~SiteBossSwordAttackRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mCloseAttackRate_s{}; + // static_param at offset 0x40 + const int* mChemicalPlusRate_s{}; + // static_param at offset 0x48 + const int* mThrowAttackPower_s{}; + // static_param at offset 0x50 + const int* mAddAttackPower_s{}; + // static_param at offset 0x58 + const int* mThrowMinDamage_s{}; + // static_param at offset 0x60 + const int* mThrowRate_s{}; + // static_param at offset 0x68 + const int* mPillarMax_s{}; + // static_param at offset 0x70 + const int* mElectricCounterMax_s{}; + // static_param at offset 0x78 + const float* mChemicalPlusHPRate_s{}; + // static_param at offset 0x80 + const float* mShieldRepairTime_s{}; + // static_param at offset 0x88 + const float* mFirstAttackHPRate_s{}; + // static_param at offset 0x90 + const float* mSecondAttackHPRate_s{}; + // static_param at offset 0x98 + const float* mBeamAttackHPRate_s{}; + // static_param at offset 0xa0 + const float* mElectricBallScaleTime_s{}; + // static_param at offset 0xa8 + const float* mElectricBallScale_s{}; + // static_param at offset 0xb0 + const float* mElectricBallRange_s{}; + // static_param at offset 0xb8 + const float* mThrowDist_s{}; + // static_param at offset 0xc0 + sead::SafeString mDemoName_s{}; + // static_param at offset 0xd0 + sead::SafeString mEntryPointName_s{}; + // static_param at offset 0xe0 + sead::SafeString mThrowActorName_s{}; + // dynamic_param at offset 0xf0 + bool* mIsCancelAttack_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.cpp b/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.cpp new file mode 100644 index 00000000..73a88cef --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiSiteBossSwordIronPileRoot.h" + +namespace uking::ai { + +SiteBossSwordIronPileRoot::SiteBossSwordIronPileRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSwordIronPileRoot::~SiteBossSwordIronPileRoot() = default; + +bool SiteBossSwordIronPileRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSwordIronPileRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSwordIronPileRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSwordIronPileRoot::loadParams_() { + getStaticParam(&mFallWaitCount_s, "FallWaitCount"); + getStaticParam(&mFallSpeed_s, "FallSpeed"); + getStaticParam(&mSlopeRate_s, "SlopeRate"); + getMapUnitParam(&mAddAtkPower_m, "AddAtkPower"); + getMapUnitParam(&mAttackPower_m, "AttackPower"); + getMapUnitParam(&mAttackPowerForPlayer_m, "AttackPowerForPlayer"); + getMapUnitParam(&mAtMinDamage_m, "AtMinDamage"); + getMapUnitParam(&mActorName_m, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.h b/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.h new file mode 100644 index 00000000..c58c1bbc --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordIronPileRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordIronPileRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSwordIronPileRoot, ksys::act::ai::Ai) +public: + explicit SiteBossSwordIronPileRoot(const InitArg& arg); + ~SiteBossSwordIronPileRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFallWaitCount_s{}; + // static_param at offset 0x40 + const float* mFallSpeed_s{}; + // static_param at offset 0x48 + const float* mSlopeRate_s{}; + // map_unit_param at offset 0x50 + const int* mAddAtkPower_m{}; + // map_unit_param at offset 0x58 + const int* mAttackPower_m{}; + // map_unit_param at offset 0x60 + const int* mAttackPowerForPlayer_m{}; + // map_unit_param at offset 0x68 + const int* mAtMinDamage_m{}; + // map_unit_param at offset 0x70 + sead::SafeString mActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordRailApproach.cpp b/src/Game/AI/AI/aiSiteBossSwordRailApproach.cpp new file mode 100644 index 00000000..f0f50858 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordRailApproach.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSiteBossSwordRailApproach.h" + +namespace uking::ai { + +SiteBossSwordRailApproach::SiteBossSwordRailApproach(const InitArg& arg) + : SiteBossSwordApproachRoot(arg) {} + +SiteBossSwordRailApproach::~SiteBossSwordRailApproach() = default; + +bool SiteBossSwordRailApproach::init_(sead::Heap* heap) { + return SiteBossSwordApproachRoot::init_(heap); +} + +void SiteBossSwordRailApproach::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossSwordApproachRoot::enter_(params); +} + +void SiteBossSwordRailApproach::leave_() { + SiteBossSwordApproachRoot::leave_(); +} + +void SiteBossSwordRailApproach::loadParams_() { + SiteBossSwordApproachRoot::loadParams_(); + getDynamicParam(&mIsResetOldMoveIdx_d, "IsResetOldMoveIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordRailApproach.h b/src/Game/AI/AI/aiSiteBossSwordRailApproach.h new file mode 100644 index 00000000..2d9cc129 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordRailApproach.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossSwordApproachRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordRailApproach : public SiteBossSwordApproachRoot { + SEAD_RTTI_OVERRIDE(SiteBossSwordRailApproach, SiteBossSwordApproachRoot) +public: + explicit SiteBossSwordRailApproach(const InitArg& arg); + ~SiteBossSwordRailApproach() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xc0 + bool* mIsResetOldMoveIdx_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordRoot.cpp b/src/Game/AI/AI/aiSiteBossSwordRoot.cpp new file mode 100644 index 00000000..bfddb5c1 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSiteBossSwordRoot.h" + +namespace uking::ai { + +SiteBossSwordRoot::SiteBossSwordRoot(const InitArg& arg) : SiteBossRoot(arg) {} + +SiteBossSwordRoot::~SiteBossSwordRoot() = default; + +bool SiteBossSwordRoot::init_(sead::Heap* heap) { + return SiteBossRoot::init_(heap); +} + +void SiteBossSwordRoot::enter_(ksys::act::ai::InlineParamPack* params) { + SiteBossRoot::enter_(params); +} + +void SiteBossSwordRoot::leave_() { + SiteBossRoot::leave_(); +} + +void SiteBossSwordRoot::loadParams_() { + SiteBossRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordRoot.h b/src/Game/AI/AI/aiSiteBossSwordRoot.h new file mode 100644 index 00000000..6920e02e --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiSiteBossRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordRoot : public SiteBossRoot { + SEAD_RTTI_OVERRIDE(SiteBossSwordRoot, SiteBossRoot) +public: + explicit SiteBossSwordRoot(const InitArg& arg); + ~SiteBossSwordRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.cpp b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.cpp new file mode 100644 index 00000000..c2f7414f --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiSiteBossSwordSeqThreeAI.h" + +namespace uking::ai { + +SiteBossSwordSeqThreeAI::SiteBossSwordSeqThreeAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossSwordSeqThreeAI::~SiteBossSwordSeqThreeAI() = default; + +bool SiteBossSwordSeqThreeAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossSwordSeqThreeAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossSwordSeqThreeAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossSwordSeqThreeAI::loadParams_() { + getStaticParam(&mIsSkipLastAction_s, "IsSkipLastAction"); + getDynamicParam(&mIsResetEndTime_d, "IsResetEndTime"); + getDynamicParam(&mIsAttackPatternFixed_d, "IsAttackPatternFixed"); + getDynamicParam(&mIsNoCharge_d, "IsNoCharge"); + getDynamicParam(&mIsRestart_d, "IsRestart"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mOldTargetPos_d, "OldTargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h new file mode 100644 index 00000000..0a5ee3f9 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordSeqThreeAI.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordSeqThreeAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossSwordSeqThreeAI, ksys::act::ai::Ai) +public: + explicit SiteBossSwordSeqThreeAI(const InitArg& arg); + ~SiteBossSwordSeqThreeAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsSkipLastAction_s{}; + // dynamic_param at offset 0x40 + bool* mIsResetEndTime_d{}; + // dynamic_param at offset 0x48 + bool* mIsAttackPatternFixed_d{}; + // dynamic_param at offset 0x50 + bool* mIsNoCharge_d{}; + // dynamic_param at offset 0x58 + bool* mIsRestart_d{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mOldTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordWeapon.cpp b/src/Game/AI/AI/aiSiteBossSwordWeapon.cpp new file mode 100644 index 00000000..e4137139 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordWeapon.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSiteBossSwordWeapon.h" + +namespace uking::ai { + +SiteBossSwordWeapon::SiteBossSwordWeapon(const InitArg& arg) : ChemicalWeaponRoot(arg) {} + +SiteBossSwordWeapon::~SiteBossSwordWeapon() = default; + +bool SiteBossSwordWeapon::init_(sead::Heap* heap) { + return ChemicalWeaponRoot::init_(heap); +} + +void SiteBossSwordWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + ChemicalWeaponRoot::enter_(params); +} + +void SiteBossSwordWeapon::leave_() { + ChemicalWeaponRoot::leave_(); +} + +void SiteBossSwordWeapon::loadParams_() { + WeaponRootAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossSwordWeapon.h b/src/Game/AI/AI/aiSiteBossSwordWeapon.h new file mode 100644 index 00000000..b6795045 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossSwordWeapon.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiChemicalWeaponRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossSwordWeapon : public ChemicalWeaponRoot { + SEAD_RTTI_OVERRIDE(SiteBossSwordWeapon, ChemicalWeaponRoot) +public: + explicit SiteBossSwordWeapon(const InitArg& arg); + ~SiteBossSwordWeapon() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossThrowIceRoot.cpp b/src/Game/AI/AI/aiSiteBossThrowIceRoot.cpp new file mode 100644 index 00000000..a5906410 --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossThrowIceRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSiteBossThrowIceRoot.h" + +namespace uking::ai { + +SiteBossThrowIceRoot::SiteBossThrowIceRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SiteBossThrowIceRoot::~SiteBossThrowIceRoot() = default; + +bool SiteBossThrowIceRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SiteBossThrowIceRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SiteBossThrowIceRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SiteBossThrowIceRoot::loadParams_() { + getStaticParam(&mIgnitionNum_s, "IgnitionNum"); + getStaticParam(&mThrowActorName_s, "ThrowActorName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSiteBossThrowIceRoot.h b/src/Game/AI/AI/aiSiteBossThrowIceRoot.h new file mode 100644 index 00000000..61b260df --- /dev/null +++ b/src/Game/AI/AI/aiSiteBossThrowIceRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SiteBossThrowIceRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SiteBossThrowIceRoot, ksys::act::ai::Ai) +public: + explicit SiteBossThrowIceRoot(const InitArg& arg); + ~SiteBossThrowIceRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIgnitionNum_s{}; + // static_param at offset 0x40 + sead::SafeString mThrowActorName_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x58 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSleepBedRoot.cpp b/src/Game/AI/AI/aiSleepBedRoot.cpp new file mode 100644 index 00000000..5b0ace0b --- /dev/null +++ b/src/Game/AI/AI/aiSleepBedRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSleepBedRoot.h" + +namespace uking::ai { + +SleepBedRoot::SleepBedRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SleepBedRoot::~SleepBedRoot() = default; + +bool SleepBedRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SleepBedRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SleepBedRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SleepBedRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSleepBedRoot.h b/src/Game/AI/AI/aiSleepBedRoot.h new file mode 100644 index 00000000..c46eb365 --- /dev/null +++ b/src/Game/AI/AI/aiSleepBedRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SleepBedRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SleepBedRoot, ksys::act::ai::Ai) +public: + explicit SleepBedRoot(const InitArg& arg); + ~SleepBedRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSleepSelect.cpp b/src/Game/AI/AI/aiSleepSelect.cpp new file mode 100644 index 00000000..41d8b858 --- /dev/null +++ b/src/Game/AI/AI/aiSleepSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSleepSelect.h" + +namespace uking::ai { + +SleepSelect::SleepSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SleepSelect::~SleepSelect() = default; + +bool SleepSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SleepSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SleepSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SleepSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSleepSelect.h b/src/Game/AI/AI/aiSleepSelect.h new file mode 100644 index 00000000..4aa23419 --- /dev/null +++ b/src/Game/AI/AI/aiSleepSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SleepSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SleepSelect, ksys::act::ai::Ai) +public: + explicit SleepSelect(const InitArg& arg); + ~SleepSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSnowBallNormal.cpp b/src/Game/AI/AI/aiSnowBallNormal.cpp new file mode 100644 index 00000000..d2635300 --- /dev/null +++ b/src/Game/AI/AI/aiSnowBallNormal.cpp @@ -0,0 +1,38 @@ +#include "Game/AI/AI/aiSnowBallNormal.h" + +namespace uking::ai { + +SnowBallNormal::SnowBallNormal(const InitArg& arg) : FixableLiftable(arg) {} + +SnowBallNormal::~SnowBallNormal() = default; + +bool SnowBallNormal::init_(sead::Heap* heap) { + return FixableLiftable::init_(heap); +} + +void SnowBallNormal::enter_(ksys::act::ai::InlineParamPack* params) { + FixableLiftable::enter_(params); +} + +void SnowBallNormal::leave_() { + FixableLiftable::leave_(); +} + +void SnowBallNormal::loadParams_() { + FixableLiftable::loadParams_(); + getStaticParam(&mScaleRate_s, "ScaleRate"); + getStaticParam(&mScaleMax_s, "ScaleMax"); + getStaticParam(&mCarryScaleLimit_s, "CarryScaleLimit"); + getStaticParam(&mSendSignalLinearVelTh_s, "SendSignalLinearVelTh"); + getStaticParam(&mSendSignalScaleTh_s, "SendSignalScaleTh"); + getStaticParam(&mScaleMin_s, "ScaleMin"); + getStaticParam(&mDeleteUnderWaterDepth_s, "DeleteUnderWaterDepth"); + getStaticParam(&mMaxImpulseMassRate_s, "MaxImpulseMassRate"); + getStaticParam(&mAttReturnOnOffset_s, "AttReturnOnOffset"); + getStaticParam(&mScaleIncreaseDistance_s, "ScaleIncreaseDistance"); + getStaticParam(&mItemDropSetScaleOffset_s, "ItemDropSetScaleOffset"); + getStaticParam(&mItemDropDeleteScaleOffset_s, "ItemDropDeleteScaleOffset"); + getStaticParam(&mMinImpulseRatio_s, "MinImpulseRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSnowBallNormal.h b/src/Game/AI/AI/aiSnowBallNormal.h new file mode 100644 index 00000000..ab1a9a9e --- /dev/null +++ b/src/Game/AI/AI/aiSnowBallNormal.h @@ -0,0 +1,48 @@ +#pragma once + +#include "Game/AI/AI/aiFixableLiftable.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SnowBallNormal : public FixableLiftable { + SEAD_RTTI_OVERRIDE(SnowBallNormal, FixableLiftable) +public: + explicit SnowBallNormal(const InitArg& arg); + ~SnowBallNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const float* mScaleRate_s{}; + // static_param at offset 0xe8 + const float* mScaleMax_s{}; + // static_param at offset 0xf0 + const float* mCarryScaleLimit_s{}; + // static_param at offset 0xf8 + const float* mSendSignalLinearVelTh_s{}; + // static_param at offset 0x100 + const float* mSendSignalScaleTh_s{}; + // static_param at offset 0x108 + const float* mScaleMin_s{}; + // static_param at offset 0x110 + const float* mDeleteUnderWaterDepth_s{}; + // static_param at offset 0x118 + const float* mMaxImpulseMassRate_s{}; + // static_param at offset 0x120 + const float* mAttReturnOnOffset_s{}; + // static_param at offset 0x128 + const float* mScaleIncreaseDistance_s{}; + // static_param at offset 0x130 + const float* mItemDropSetScaleOffset_s{}; + // static_param at offset 0x138 + const float* mItemDropDeleteScaleOffset_s{}; + // static_param at offset 0x140 + const float* mMinImpulseRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSnowOctarockBattle.cpp b/src/Game/AI/AI/aiSnowOctarockBattle.cpp new file mode 100644 index 00000000..482295d8 --- /dev/null +++ b/src/Game/AI/AI/aiSnowOctarockBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSnowOctarockBattle.h" + +namespace uking::ai { + +SnowOctarockBattle::SnowOctarockBattle(const InitArg& arg) : EnemyBattle(arg) {} + +SnowOctarockBattle::~SnowOctarockBattle() = default; + +bool SnowOctarockBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void SnowOctarockBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void SnowOctarockBattle::leave_() { + EnemyBattle::leave_(); +} + +void SnowOctarockBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mVacuumPartsKey_s, "VacuumPartsKey"); + getStaticParam(&mShootActorKey_s, "ShootActorKey"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSnowOctarockBattle.h b/src/Game/AI/AI/aiSnowOctarockBattle.h new file mode 100644 index 00000000..09919411 --- /dev/null +++ b/src/Game/AI/AI/aiSnowOctarockBattle.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SnowOctarockBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(SnowOctarockBattle, EnemyBattle) +public: + explicit SnowOctarockBattle(const InitArg& arg); + ~SnowOctarockBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + sead::SafeString mVacuumPartsKey_s{}; + // static_param at offset 0xa0 + sead::SafeString mShootActorKey_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSoundTriggerTag.cpp b/src/Game/AI/AI/aiSoundTriggerTag.cpp new file mode 100644 index 00000000..68bcc92c --- /dev/null +++ b/src/Game/AI/AI/aiSoundTriggerTag.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSoundTriggerTag.h" + +namespace uking::ai { + +SoundTriggerTag::SoundTriggerTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SoundTriggerTag::~SoundTriggerTag() = default; + +bool SoundTriggerTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SoundTriggerTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SoundTriggerTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SoundTriggerTag::loadParams_() { + getMapUnitParam(&mSoundDelay_m, "SoundDelay"); + getMapUnitParam(&mSound_m, "Sound"); + getMapUnitParam(&mSLinkInst_m, "SLinkInst"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSoundTriggerTag.h b/src/Game/AI/AI/aiSoundTriggerTag.h new file mode 100644 index 00000000..b27cd267 --- /dev/null +++ b/src/Game/AI/AI/aiSoundTriggerTag.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SoundTriggerTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SoundTriggerTag, ksys::act::ai::Ai) +public: + explicit SoundTriggerTag(const InitArg& arg); + ~SoundTriggerTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mSoundDelay_m{}; + // map_unit_param at offset 0x40 + sead::SafeString mSound_m{}; + // map_unit_param at offset 0x50 + sead::SafeString mSLinkInst_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpearWeaponSelect.cpp b/src/Game/AI/AI/aiSpearWeaponSelect.cpp new file mode 100644 index 00000000..8e9bcc84 --- /dev/null +++ b/src/Game/AI/AI/aiSpearWeaponSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSpearWeaponSelect.h" + +namespace uking::ai { + +SpearWeaponSelect::SpearWeaponSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SpearWeaponSelect::~SpearWeaponSelect() = default; + +bool SpearWeaponSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SpearWeaponSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SpearWeaponSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SpearWeaponSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpearWeaponSelect.h b/src/Game/AI/AI/aiSpearWeaponSelect.h new file mode 100644 index 00000000..1bc65910 --- /dev/null +++ b/src/Game/AI/AI/aiSpearWeaponSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SpearWeaponSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SpearWeaponSelect, ksys::act::ai::Ai) +public: + explicit SpearWeaponSelect(const InitArg& arg); + ~SpearWeaponSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpecialEnemySleep.cpp b/src/Game/AI/AI/aiSpecialEnemySleep.cpp new file mode 100644 index 00000000..faee08a0 --- /dev/null +++ b/src/Game/AI/AI/aiSpecialEnemySleep.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSpecialEnemySleep.h" + +namespace uking::ai { + +SpecialEnemySleep::SpecialEnemySleep(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SpecialEnemySleep::~SpecialEnemySleep() = default; + +bool SpecialEnemySleep::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SpecialEnemySleep::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SpecialEnemySleep::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SpecialEnemySleep::loadParams_() { + getStaticParam(&mAwakeDelayTime_s, "AwakeDelayTime"); + getStaticParam(&mIsAwakenByHearing_s, "IsAwakenByHearing"); + getStaticParam(&mIsWaitAfterAwaken_s, "IsWaitAfterAwaken"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpecialEnemySleep.h b/src/Game/AI/AI/aiSpecialEnemySleep.h new file mode 100644 index 00000000..af7c7c55 --- /dev/null +++ b/src/Game/AI/AI/aiSpecialEnemySleep.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SpecialEnemySleep : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SpecialEnemySleep, ksys::act::ai::Ai) +public: + explicit SpecialEnemySleep(const InitArg& arg); + ~SpecialEnemySleep() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAwakeDelayTime_s{}; + // static_param at offset 0x40 + const bool* mIsAwakenByHearing_s{}; + // static_param at offset 0x48 + const bool* mIsWaitAfterAwaken_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpotBgmTrigger.cpp b/src/Game/AI/AI/aiSpotBgmTrigger.cpp new file mode 100644 index 00000000..8c5ba78d --- /dev/null +++ b/src/Game/AI/AI/aiSpotBgmTrigger.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSpotBgmTrigger.h" + +namespace uking::ai { + +SpotBgmTrigger::SpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SpotBgmTrigger::~SpotBgmTrigger() = default; + +bool SpotBgmTrigger::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SpotBgmTrigger::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SpotBgmTrigger::loadParams_() { + getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY"); + getMapUnitParam(&mSound_m, "Sound"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSpotBgmTrigger.h b/src/Game/AI/AI/aiSpotBgmTrigger.h new file mode 100644 index 00000000..6e4f6301 --- /dev/null +++ b/src/Game/AI/AI/aiSpotBgmTrigger.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SpotBgmTrigger : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SpotBgmTrigger, ksys::act::ai::Ai) +public: + explicit SpotBgmTrigger(const InitArg& arg); + ~SpotBgmTrigger() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const bool* mIsStopWithoutReductionY_m{}; + // map_unit_param at offset 0x40 + sead::SafeString mSound_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyBlownOff.cpp b/src/Game/AI/AI/aiStalEnemyBlownOff.cpp new file mode 100644 index 00000000..cbde0634 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyBlownOff.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalEnemyBlownOff.h" + +namespace uking::ai { + +StalEnemyBlownOff::StalEnemyBlownOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalEnemyBlownOff::~StalEnemyBlownOff() = default; + +bool StalEnemyBlownOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyBlownOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyBlownOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyBlownOff::loadParams_() { + getStaticParam(&mDrownDepth_s, "DrownDepth"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyBlownOff.h b/src/Game/AI/AI/aiStalEnemyBlownOff.h new file mode 100644 index 00000000..33c878f0 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyBlownOff.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyBlownOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyBlownOff, ksys::act::ai::Ai) +public: + explicit StalEnemyBlownOff(const InitArg& arg); + ~StalEnemyBlownOff() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDrownDepth_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyChasePart.cpp b/src/Game/AI/AI/aiStalEnemyChasePart.cpp new file mode 100644 index 00000000..5801b7bc --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyChasePart.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStalEnemyChasePart.h" + +namespace uking::ai { + +StalEnemyChasePart::StalEnemyChasePart(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalEnemyChasePart::~StalEnemyChasePart() = default; + +bool StalEnemyChasePart::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyChasePart::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyChasePart::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyChasePart::loadParams_() { + getDynamicParam(&mIsCarried_d, "IsCarried"); + getDynamicParam(&mIsCarriedByPlayer_d, "IsCarriedByPlayer"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyChasePart.h b/src/Game/AI/AI/aiStalEnemyChasePart.h new file mode 100644 index 00000000..b239a31b --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyChasePart.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyChasePart : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyChasePart, ksys::act::ai::Ai) +public: + explicit StalEnemyChasePart(const InitArg& arg); + ~StalEnemyChasePart() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + bool* mIsCarried_d{}; + // dynamic_param at offset 0x40 + bool* mIsCarriedByPlayer_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.cpp b/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.cpp new file mode 100644 index 00000000..6cda236e --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiStalEnemyDoShootPartSelect.h" + +namespace uking::ai { + +StalEnemyDoShootPartSelect::StalEnemyDoShootPartSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +StalEnemyDoShootPartSelect::~StalEnemyDoShootPartSelect() = default; + +bool StalEnemyDoShootPartSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyDoShootPartSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyDoShootPartSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyDoShootPartSelect::loadParams_() { + getStaticParam(&mShootRate_s, "ShootRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.h b/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.h new file mode 100644 index 00000000..32144704 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyDoShootPartSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyDoShootPartSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyDoShootPartSelect, ksys::act::ai::Ai) +public: + explicit StalEnemyDoShootPartSelect(const InitArg& arg); + ~StalEnemyDoShootPartSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mShootRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.cpp b/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.cpp new file mode 100644 index 00000000..36c6275a --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalEnemyGrabShootOwnPart.h" + +namespace uking::ai { + +StalEnemyGrabShootOwnPart::StalEnemyGrabShootOwnPart(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalEnemyGrabShootOwnPart::~StalEnemyGrabShootOwnPart() = default; + +bool StalEnemyGrabShootOwnPart::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyGrabShootOwnPart::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyGrabShootOwnPart::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyGrabShootOwnPart::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.h b/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.h new file mode 100644 index 00000000..28c57018 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyGrabShootOwnPart.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyGrabShootOwnPart : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyGrabShootOwnPart, ksys::act::ai::Ai) +public: + explicit StalEnemyGrabShootOwnPart(const InitArg& arg); + ~StalEnemyGrabShootOwnPart() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyNoHeadWait.cpp b/src/Game/AI/AI/aiStalEnemyNoHeadWait.cpp new file mode 100644 index 00000000..5a8d8158 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyNoHeadWait.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiStalEnemyNoHeadWait.h" + +namespace uking::ai { + +StalEnemyNoHeadWait::StalEnemyNoHeadWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalEnemyNoHeadWait::~StalEnemyNoHeadWait() = default; + +bool StalEnemyNoHeadWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyNoHeadWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyNoHeadWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyNoHeadWait::loadParams_() { + getStaticParam(&mRebootDistance_s, "RebootDistance"); + getStaticParam(&mRebootTimer_s, "RebootTimer"); + getDynamicParam(&mIsExistLivingHead_d, "IsExistLivingHead"); + getDynamicParam(&mIsExistActiveActor_d, "IsExistActiveActor"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyNoHeadWait.h b/src/Game/AI/AI/aiStalEnemyNoHeadWait.h new file mode 100644 index 00000000..eca1c1dc --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyNoHeadWait.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyNoHeadWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyNoHeadWait, ksys::act::ai::Ai) +public: + explicit StalEnemyNoHeadWait(const InitArg& arg); + ~StalEnemyNoHeadWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRebootDistance_s{}; + // static_param at offset 0x40 + const float* mRebootTimer_s{}; + // dynamic_param at offset 0x48 + bool* mIsExistLivingHead_d{}; + // dynamic_param at offset 0x50 + bool* mIsExistActiveActor_d{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyReaction.cpp b/src/Game/AI/AI/aiStalEnemyReaction.cpp new file mode 100644 index 00000000..ea2c69d6 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalEnemyReaction.h" + +namespace uking::ai { + +StalEnemyReaction::StalEnemyReaction(const InitArg& arg) : EnemyDefaultReaction(arg) {} + +StalEnemyReaction::~StalEnemyReaction() = default; + +bool StalEnemyReaction::init_(sead::Heap* heap) { + return EnemyDefaultReaction::init_(heap); +} + +void StalEnemyReaction::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyDefaultReaction::enter_(params); +} + +void StalEnemyReaction::leave_() { + EnemyDefaultReaction::leave_(); +} + +void StalEnemyReaction::loadParams_() { + EnemyDefaultReaction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyReaction.h b/src/Game/AI/AI/aiStalEnemyReaction.h new file mode 100644 index 00000000..825ecb8e --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyReaction : public EnemyDefaultReaction { + SEAD_RTTI_OVERRIDE(StalEnemyReaction, EnemyDefaultReaction) +public: + explicit StalEnemyReaction(const InitArg& arg); + ~StalEnemyReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyRoot.cpp b/src/Game/AI/AI/aiStalEnemyRoot.cpp new file mode 100644 index 00000000..42ff035d --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyRoot.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiStalEnemyRoot.h" + +namespace uking::ai { + +StalEnemyRoot::StalEnemyRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalEnemyRoot::~StalEnemyRoot() = default; + +bool StalEnemyRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalEnemyRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalEnemyRoot::loadParams_() { + getStaticParam(&mDeadCount_s, "DeadCount"); + getStaticParam(&mSearchFrame_s, "SearchFrame"); + getStaticParam(&mInWaterDepth_s, "InWaterDepth"); + getStaticParam(&mOutOfWaterOffset_s, "OutOfWaterOffset"); + getStaticParam(&mDeadCheckFrame_s, "DeadCheckFrame"); + getStaticParam(&mSpreadDist_s, "SpreadDist"); + getStaticParam(&mSmallSpreadDist_s, "SmallSpreadDist"); + getStaticParam(&mSearchDistXZ_s, "SearchDistXZ"); + getStaticParam(&mSearchDistY_s, "SearchDistY"); + getStaticParam(&mFallHeight_s, "FallHeight"); + getMapUnitParam(&mIsCreateStalPart_m, "IsCreateStalPart"); + getAITreeVariable(&mIsStopFallCheck_a, "IsStopFallCheck"); + getAITreeVariable(&mStalEnemyUnit_a, "StalEnemyUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemyRoot.h b/src/Game/AI/AI/aiStalEnemyRoot.h new file mode 100644 index 00000000..a469039d --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemyRoot.h @@ -0,0 +1,49 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemyRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalEnemyRoot, ksys::act::ai::Ai) +public: + explicit StalEnemyRoot(const InitArg& arg); + ~StalEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x30]; + // static_param at offset 0x68 + const int* mDeadCount_s{}; + // static_param at offset 0x70 + const float* mSearchFrame_s{}; + // static_param at offset 0x78 + const float* mInWaterDepth_s{}; + // static_param at offset 0x80 + const float* mOutOfWaterOffset_s{}; + // static_param at offset 0x88 + const float* mDeadCheckFrame_s{}; + // static_param at offset 0x90 + const float* mSpreadDist_s{}; + // static_param at offset 0x98 + const float* mSmallSpreadDist_s{}; + // static_param at offset 0xa0 + const float* mSearchDistXZ_s{}; + // static_param at offset 0xa8 + const float* mSearchDistY_s{}; + // static_param at offset 0xb0 + const float* mFallHeight_s{}; + // map_unit_param at offset 0xb8 + const bool* mIsCreateStalPart_m{}; + // aitree_variable at offset 0xc0 + bool* mIsStopFallCheck_a{}; + // aitree_variable at offset 0xc8 + void* mStalEnemyUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemySleep.cpp b/src/Game/AI/AI/aiStalEnemySleep.cpp new file mode 100644 index 00000000..bf9d3988 --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemySleep.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStalEnemySleep.h" + +namespace uking::ai { + +StalEnemySleep::StalEnemySleep(const InitArg& arg) : SpecialEnemySleep(arg) {} + +StalEnemySleep::~StalEnemySleep() = default; + +bool StalEnemySleep::init_(sead::Heap* heap) { + return SpecialEnemySleep::init_(heap); +} + +void StalEnemySleep::enter_(ksys::act::ai::InlineParamPack* params) { + SpecialEnemySleep::enter_(params); +} + +void StalEnemySleep::leave_() { + SpecialEnemySleep::leave_(); +} + +void StalEnemySleep::loadParams_() { + SpecialEnemySleep::loadParams_(); + getStaticParam(&mUseAwarenessWakeUp_s, "UseAwarenessWakeUp"); + getStaticParam(&mUseNoticeActiveWakeUp_s, "UseNoticeActiveWakeUp"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalEnemySleep.h b/src/Game/AI/AI/aiStalEnemySleep.h new file mode 100644 index 00000000..8c66bead --- /dev/null +++ b/src/Game/AI/AI/aiStalEnemySleep.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSpecialEnemySleep.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalEnemySleep : public SpecialEnemySleep { + SEAD_RTTI_OVERRIDE(StalEnemySleep, SpecialEnemySleep) +public: + explicit StalEnemySleep(const InitArg& arg); + ~StalEnemySleep() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const bool* mUseAwarenessWakeUp_s{}; + // static_param at offset 0x68 + const bool* mUseNoticeActiveWakeUp_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantEnemyReaction.cpp b/src/Game/AI/AI/aiStalGiantEnemyReaction.cpp new file mode 100644 index 00000000..d9ce9b49 --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantEnemyReaction.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalGiantEnemyReaction.h" + +namespace uking::ai { + +StalGiantEnemyReaction::StalGiantEnemyReaction(const InitArg& arg) : ForestGiantReaction(arg) {} + +StalGiantEnemyReaction::~StalGiantEnemyReaction() = default; + +bool StalGiantEnemyReaction::init_(sead::Heap* heap) { + return ForestGiantReaction::init_(heap); +} + +void StalGiantEnemyReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ForestGiantReaction::enter_(params); +} + +void StalGiantEnemyReaction::leave_() { + ForestGiantReaction::leave_(); +} + +void StalGiantEnemyReaction::loadParams_() { + ForestGiantReaction::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantEnemyReaction.h b/src/Game/AI/AI/aiStalGiantEnemyReaction.h new file mode 100644 index 00000000..e648fb0b --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantEnemyReaction.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiForestGiantReaction.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalGiantEnemyReaction : public ForestGiantReaction { + SEAD_RTTI_OVERRIDE(StalGiantEnemyReaction, ForestGiantReaction) +public: + explicit StalGiantEnemyReaction(const InitArg& arg); + ~StalGiantEnemyReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantEnemyRoot.cpp b/src/Game/AI/AI/aiStalGiantEnemyRoot.cpp new file mode 100644 index 00000000..febd3abf --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantEnemyRoot.cpp @@ -0,0 +1,83 @@ +#include "Game/AI/AI/aiStalGiantEnemyRoot.h" + +namespace uking::ai { + +StalGiantEnemyRoot::StalGiantEnemyRoot(const InitArg& arg) : StalEnemyRoot(arg) {} + +StalGiantEnemyRoot::~StalGiantEnemyRoot() = default; + +bool StalGiantEnemyRoot::init_(sead::Heap* heap) { + return StalEnemyRoot::init_(heap); +} + +void StalGiantEnemyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + StalEnemyRoot::enter_(params); +} + +void StalGiantEnemyRoot::leave_() { + StalEnemyRoot::leave_(); +} + +void StalGiantEnemyRoot::loadParams_() { + StalEnemyRoot::loadParams_(); + getStaticParam(&mActorNameChin_s, "ActorNameChin"); + getStaticParam(&mActorNameRib1_s, "ActorNameRib1"); + getStaticParam(&mActorNameRib2_s, "ActorNameRib2"); + getStaticParam(&mActorNameRib3_s, "ActorNameRib3"); + getStaticParam(&mActorNameRib4_s, "ActorNameRib4"); + getStaticParam(&mIsDamageToEnemy_s, "IsDamageToEnemy"); + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL _ZNK4sead22BufferedSafeStringBaseIcE22assureTerminationImpl_Ev @ 0x7100b0ce00 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 + // FIXME: CALL sub_7100B0C35C @ 0x7100b0c35c + // FIXME: CALL _ZN4sead14PrintFormatterlsEPKc @ 0x7100b0bfd8 + // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 + // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 + // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantEnemyRoot.h b/src/Game/AI/AI/aiStalGiantEnemyRoot.h new file mode 100644 index 00000000..4061bf7c --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantEnemyRoot.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiStalEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalGiantEnemyRoot : public StalEnemyRoot { + SEAD_RTTI_OVERRIDE(StalGiantEnemyRoot, StalEnemyRoot) +public: + explicit StalGiantEnemyRoot(const InitArg& arg); + ~StalGiantEnemyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x7c0 + sead::SafeString mActorNameChin_s{}; + // static_param at offset 0x7d0 + sead::SafeString mActorNameRib1_s{}; + // static_param at offset 0x7e0 + sead::SafeString mActorNameRib2_s{}; + // static_param at offset 0x7f0 + sead::SafeString mActorNameRib3_s{}; + // static_param at offset 0x800 + sead::SafeString mActorNameRib4_s{}; + // static_param at offset 0x810 + const bool* mIsDamageToEnemy_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantSleepNormal.cpp b/src/Game/AI/AI/aiStalGiantSleepNormal.cpp new file mode 100644 index 00000000..1c5ff28e --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantSleepNormal.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStalGiantSleepNormal.h" + +namespace uking::ai { + +StalGiantSleepNormal::StalGiantSleepNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalGiantSleepNormal::~StalGiantSleepNormal() = default; + +bool StalGiantSleepNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalGiantSleepNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalGiantSleepNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalGiantSleepNormal::loadParams_() { + getStaticParam(&mAwakeDelayTime_s, "AwakeDelayTime"); + getStaticParam(&mIsAwakenByHearing_s, "IsAwakenByHearing"); + getStaticParam(&mIsWaitAfterAwaken_s, "IsWaitAfterAwaken"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalGiantSleepNormal.h b/src/Game/AI/AI/aiStalGiantSleepNormal.h new file mode 100644 index 00000000..2f295fb1 --- /dev/null +++ b/src/Game/AI/AI/aiStalGiantSleepNormal.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalGiantSleepNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalGiantSleepNormal, ksys::act::ai::Ai) +public: + explicit StalGiantSleepNormal(const InitArg& arg); + ~StalGiantSleepNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAwakeDelayTime_s{}; + // static_param at offset 0x40 + const bool* mIsAwakenByHearing_s{}; + // static_param at offset 0x48 + const bool* mIsWaitAfterAwaken_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalHeadLifted.cpp b/src/Game/AI/AI/aiStalHeadLifted.cpp new file mode 100644 index 00000000..9e36d915 --- /dev/null +++ b/src/Game/AI/AI/aiStalHeadLifted.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStalHeadLifted.h" + +namespace uking::ai { + +StalHeadLifted::StalHeadLifted(const InitArg& arg) : Lifted(arg) {} + +StalHeadLifted::~StalHeadLifted() = default; + +bool StalHeadLifted::init_(sead::Heap* heap) { + return Lifted::init_(heap); +} + +void StalHeadLifted::enter_(ksys::act::ai::InlineParamPack* params) { + Lifted::enter_(params); +} + +void StalHeadLifted::leave_() { + Lifted::leave_(); +} + +void StalHeadLifted::loadParams_() { + Lifted::loadParams_(); + getStaticParam(&mEscapeSpeed_s, "EscapeSpeed"); + getStaticParam(&mEscapeDir_s, "EscapeDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalHeadLifted.h b/src/Game/AI/AI/aiStalHeadLifted.h new file mode 100644 index 00000000..154065aa --- /dev/null +++ b/src/Game/AI/AI/aiStalHeadLifted.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiLifted.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalHeadLifted : public Lifted { + SEAD_RTTI_OVERRIDE(StalHeadLifted, Lifted) +public: + explicit StalHeadLifted(const InitArg& arg); + ~StalHeadLifted() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x98 + const float* mEscapeSpeed_s{}; + // static_param at offset 0xa0 + const sead::Vector3f* mEscapeDir_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalHeadPartRoot.cpp b/src/Game/AI/AI/aiStalHeadPartRoot.cpp new file mode 100644 index 00000000..d86bb2b2 --- /dev/null +++ b/src/Game/AI/AI/aiStalHeadPartRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalHeadPartRoot.h" + +namespace uking::ai { + +StalHeadPartRoot::StalHeadPartRoot(const InitArg& arg) : EnemyRoot(arg) {} + +StalHeadPartRoot::~StalHeadPartRoot() = default; + +bool StalHeadPartRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void StalHeadPartRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void StalHeadPartRoot::leave_() { + EnemyRoot::leave_(); +} + +void StalHeadPartRoot::loadParams_() { + EnemyRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalHeadPartRoot.h b/src/Game/AI/AI/aiStalHeadPartRoot.h new file mode 100644 index 00000000..055afded --- /dev/null +++ b/src/Game/AI/AI/aiStalHeadPartRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalHeadPartRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(StalHeadPartRoot, EnemyRoot) +public: + explicit StalHeadPartRoot(const InitArg& arg); + ~StalHeadPartRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartCatch.cpp b/src/Game/AI/AI/aiStalPartCatch.cpp new file mode 100644 index 00000000..5ef93408 --- /dev/null +++ b/src/Game/AI/AI/aiStalPartCatch.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiStalPartCatch.h" + +namespace uking::ai { + +StalPartCatch::StalPartCatch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalPartCatch::~StalPartCatch() = default; + +bool StalPartCatch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalPartCatch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalPartCatch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalPartCatch::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartCatch.h b/src/Game/AI/AI/aiStalPartCatch.h new file mode 100644 index 00000000..53014c2c --- /dev/null +++ b/src/Game/AI/AI/aiStalPartCatch.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalPartCatch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalPartCatch, ksys::act::ai::Ai) +public: + explicit StalPartCatch(const InitArg& arg); + ~StalPartCatch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartNormal.cpp b/src/Game/AI/AI/aiStalPartNormal.cpp new file mode 100644 index 00000000..ef627d56 --- /dev/null +++ b/src/Game/AI/AI/aiStalPartNormal.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiStalPartNormal.h" + +namespace uking::ai { + +StalPartNormal::StalPartNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalPartNormal::~StalPartNormal() = default; + +bool StalPartNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalPartNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalPartNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalPartNormal::loadParams_() { + getStaticParam(&mTerritoryArea_s, "TerritoryArea"); + getStaticParam(&mCatchArea_s, "CatchArea"); + getStaticParam(&mWaitTimer_s, "WaitTimer"); + getStaticParam(&mTgtOffset_s, "TgtOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartNormal.h b/src/Game/AI/AI/aiStalPartNormal.h new file mode 100644 index 00000000..bb4e7476 --- /dev/null +++ b/src/Game/AI/AI/aiStalPartNormal.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalPartNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalPartNormal, ksys::act::ai::Ai) +public: + explicit StalPartNormal(const InitArg& arg); + ~StalPartNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTerritoryArea_s{}; + // static_param at offset 0x40 + const float* mCatchArea_s{}; + // static_param at offset 0x48 + const float* mWaitTimer_s{}; + // static_param at offset 0x50 + const sead::Vector3f* mTgtOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartRoot.cpp b/src/Game/AI/AI/aiStalPartRoot.cpp new file mode 100644 index 00000000..76aa1f3c --- /dev/null +++ b/src/Game/AI/AI/aiStalPartRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalPartRoot.h" + +namespace uking::ai { + +StalPartRoot::StalPartRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalPartRoot::~StalPartRoot() = default; + +bool StalPartRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalPartRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalPartRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalPartRoot::loadParams_() { + getStaticParam(&mInvincibleTime_s, "InvincibleTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartRoot.h b/src/Game/AI/AI/aiStalPartRoot.h new file mode 100644 index 00000000..4487f9e9 --- /dev/null +++ b/src/Game/AI/AI/aiStalPartRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalPartRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalPartRoot, ksys::act::ai::Ai) +public: + explicit StalPartRoot(const InitArg& arg); + ~StalPartRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x50]; + // static_param at offset 0x88 + const float* mInvincibleTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartsHasSelect.cpp b/src/Game/AI/AI/aiStalPartsHasSelect.cpp new file mode 100644 index 00000000..6d8778f1 --- /dev/null +++ b/src/Game/AI/AI/aiStalPartsHasSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStalPartsHasSelect.h" + +namespace uking::ai { + +StalPartsHasSelect::StalPartsHasSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StalPartsHasSelect::~StalPartsHasSelect() = default; + +bool StalPartsHasSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StalPartsHasSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StalPartsHasSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StalPartsHasSelect::loadParams_() { + getStaticParam(&mPartsID_s, "PartsID"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStalPartsHasSelect.h b/src/Game/AI/AI/aiStalPartsHasSelect.h new file mode 100644 index 00000000..bb869f3d --- /dev/null +++ b/src/Game/AI/AI/aiStalPartsHasSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StalPartsHasSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StalPartsHasSelect, ksys::act::ai::Ai) +public: + explicit StalPartsHasSelect(const InitArg& arg); + ~StalPartsHasSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mPartsID_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStole.cpp b/src/Game/AI/AI/aiStole.cpp new file mode 100644 index 00000000..72baee67 --- /dev/null +++ b/src/Game/AI/AI/aiStole.cpp @@ -0,0 +1,11 @@ +#include "Game/AI/AI/aiStole.h" + +namespace uking::ai { + +Stole::Stole(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +void Stole::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStole.h b/src/Game/AI/AI/aiStole.h new file mode 100644 index 00000000..50531d24 --- /dev/null +++ b/src/Game/AI/AI/aiStole.h @@ -0,0 +1,17 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Stole : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Stole, ksys::act::ai::Ai) +public: + explicit Stole(const InitArg& arg); + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneBall_BRoot.cpp b/src/Game/AI/AI/aiStoneBall_BRoot.cpp new file mode 100644 index 00000000..7f68d5f8 --- /dev/null +++ b/src/Game/AI/AI/aiStoneBall_BRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStoneBall_BRoot.h" + +namespace uking::ai { + +StoneBall_BRoot::StoneBall_BRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StoneBall_BRoot::~StoneBall_BRoot() = default; + +bool StoneBall_BRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StoneBall_BRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StoneBall_BRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StoneBall_BRoot::loadParams_() { + getStaticParam(&mWeaponImpulseAmplifyPower_s, "WeaponImpulseAmplifyPower"); + getStaticParam(&mBombImpulseAmplifyPower_s, "BombImpulseAmplifyPower"); + getStaticParam(&mDoubleBombImpulseAmplifyPower_s, "DoubleBombImpulseAmplifyPower"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneBall_BRoot.h b/src/Game/AI/AI/aiStoneBall_BRoot.h new file mode 100644 index 00000000..bbe5322f --- /dev/null +++ b/src/Game/AI/AI/aiStoneBall_BRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneBall_BRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StoneBall_BRoot, ksys::act::ai::Ai) +public: + explicit StoneBall_BRoot(const InitArg& arg); + ~StoneBall_BRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWeaponImpulseAmplifyPower_s{}; + // static_param at offset 0x40 + const float* mBombImpulseAmplifyPower_s{}; + // static_param at offset 0x48 + const float* mDoubleBombImpulseAmplifyPower_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockBattle.cpp b/src/Game/AI/AI/aiStoneOctarockBattle.cpp new file mode 100644 index 00000000..461d600f --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockBattle.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStoneOctarockBattle.h" + +namespace uking::ai { + +StoneOctarockBattle::StoneOctarockBattle(const InitArg& arg) : ShootingEnemyBattle(arg) {} + +StoneOctarockBattle::~StoneOctarockBattle() = default; + +bool StoneOctarockBattle::init_(sead::Heap* heap) { + return ShootingEnemyBattle::init_(heap); +} + +void StoneOctarockBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ShootingEnemyBattle::enter_(params); +} + +void StoneOctarockBattle::leave_() { + ShootingEnemyBattle::leave_(); +} + +void StoneOctarockBattle::loadParams_() { + ShootingEnemyBattle::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockBattle.h b/src/Game/AI/AI/aiStoneOctarockBattle.h new file mode 100644 index 00000000..a6ae27e6 --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockBattle.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiShootingEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneOctarockBattle : public ShootingEnemyBattle { + SEAD_RTTI_OVERRIDE(StoneOctarockBattle, ShootingEnemyBattle) +public: + explicit StoneOctarockBattle(const InitArg& arg); + ~StoneOctarockBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.cpp b/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.cpp new file mode 100644 index 00000000..32dd942b --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiStoneOctarockGuardNearTarget.h" + +namespace uking::ai { + +StoneOctarockGuardNearTarget::StoneOctarockGuardNearTarget(const InitArg& arg) + : TimedGuardNearTarget(arg) {} + +StoneOctarockGuardNearTarget::~StoneOctarockGuardNearTarget() = default; + +bool StoneOctarockGuardNearTarget::init_(sead::Heap* heap) { + return TimedGuardNearTarget::init_(heap); +} + +void StoneOctarockGuardNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + TimedGuardNearTarget::enter_(params); +} + +void StoneOctarockGuardNearTarget::leave_() { + TimedGuardNearTarget::leave_(); +} + +void StoneOctarockGuardNearTarget::loadParams_() { + TimedGuardNearTarget::loadParams_(); + getStaticParam(&mNoticeTerrorLevel_s, "NoticeTerrorLevel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.h b/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.h new file mode 100644 index 00000000..83658577 --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockGuardNearTarget.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTimedGuardNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneOctarockGuardNearTarget : public TimedGuardNearTarget { + SEAD_RTTI_OVERRIDE(StoneOctarockGuardNearTarget, TimedGuardNearTarget) +public: + explicit StoneOctarockGuardNearTarget(const InitArg& arg); + ~StoneOctarockGuardNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xb0 + const int* mNoticeTerrorLevel_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockWait.cpp b/src/Game/AI/AI/aiStoneOctarockWait.cpp new file mode 100644 index 00000000..c9bd51ea --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockWait.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiStoneOctarockWait.h" + +namespace uking::ai { + +StoneOctarockWait::StoneOctarockWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StoneOctarockWait::~StoneOctarockWait() = default; + +bool StoneOctarockWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StoneOctarockWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StoneOctarockWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StoneOctarockWait::loadParams_() { + getStaticParam(&mGuardEndTime_s, "GuardEndTime"); + getStaticParam(&mNoticeTerrorLevel_s, "NoticeTerrorLevel"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneOctarockWait.h b/src/Game/AI/AI/aiStoneOctarockWait.h new file mode 100644 index 00000000..6b7b671c --- /dev/null +++ b/src/Game/AI/AI/aiStoneOctarockWait.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneOctarockWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StoneOctarockWait, ksys::act::ai::Ai) +public: + explicit StoneOctarockWait(const InitArg& arg); + ~StoneOctarockWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mGuardEndTime_s{}; + // static_param at offset 0x40 + const int* mNoticeTerrorLevel_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneShootEnemyBattle.cpp b/src/Game/AI/AI/aiStoneShootEnemyBattle.cpp new file mode 100644 index 00000000..1789d94a --- /dev/null +++ b/src/Game/AI/AI/aiStoneShootEnemyBattle.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiStoneShootEnemyBattle.h" + +namespace uking::ai { + +StoneShootEnemyBattle::StoneShootEnemyBattle(const InitArg& arg) : EnemyBattle(arg) {} + +StoneShootEnemyBattle::~StoneShootEnemyBattle() = default; + +bool StoneShootEnemyBattle::init_(sead::Heap* heap) { + return EnemyBattle::init_(heap); +} + +void StoneShootEnemyBattle::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBattle::enter_(params); +} + +void StoneShootEnemyBattle::leave_() { + EnemyBattle::leave_(); +} + +void StoneShootEnemyBattle::loadParams_() { + EnemyBattle::loadParams_(); + getStaticParam(&mShootItemName_s, "ShootItemName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneShootEnemyBattle.h b/src/Game/AI/AI/aiStoneShootEnemyBattle.h new file mode 100644 index 00000000..ecab2fdb --- /dev/null +++ b/src/Game/AI/AI/aiStoneShootEnemyBattle.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBattle.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneShootEnemyBattle : public EnemyBattle { + SEAD_RTTI_OVERRIDE(StoneShootEnemyBattle, EnemyBattle) +public: + explicit StoneShootEnemyBattle(const InitArg& arg); + ~StoneShootEnemyBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x90 + sead::SafeString mShootItemName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneStickRoot.cpp b/src/Game/AI/AI/aiStoneStickRoot.cpp new file mode 100644 index 00000000..c6b4618f --- /dev/null +++ b/src/Game/AI/AI/aiStoneStickRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiStoneStickRoot.h" + +namespace uking::ai { + +StoneStickRoot::StoneStickRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StoneStickRoot::~StoneStickRoot() = default; + +bool StoneStickRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StoneStickRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StoneStickRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StoneStickRoot::loadParams_() { + getStaticParam(&mFixPoint_s, "FixPoint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStoneStickRoot.h b/src/Game/AI/AI/aiStoneStickRoot.h new file mode 100644 index 00000000..d65f57b0 --- /dev/null +++ b/src/Game/AI/AI/aiStoneStickRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StoneStickRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StoneStickRoot, ksys::act::ai::Ai) +public: + explicit StoneStickRoot(const InitArg& arg); + ~StoneStickRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const sead::Vector3f* mFixPoint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStopTimerObserver.cpp b/src/Game/AI/AI/aiStopTimerObserver.cpp new file mode 100644 index 00000000..b7142a32 --- /dev/null +++ b/src/Game/AI/AI/aiStopTimerObserver.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiStopTimerObserver.h" + +namespace uking::ai { + +StopTimerObserver::StopTimerObserver(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StopTimerObserver::~StopTimerObserver() = default; + +bool StopTimerObserver::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StopTimerObserver::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StopTimerObserver::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StopTimerObserver::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStopTimerObserver.h b/src/Game/AI/AI/aiStopTimerObserver.h new file mode 100644 index 00000000..272e543d --- /dev/null +++ b/src/Game/AI/AI/aiStopTimerObserver.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StopTimerObserver : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StopTimerObserver, ksys::act::ai::Ai) +public: + explicit StopTimerObserver(const InitArg& arg); + ~StopTimerObserver() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStraightMove.cpp b/src/Game/AI/AI/aiStraightMove.cpp new file mode 100644 index 00000000..b2ed70ef --- /dev/null +++ b/src/Game/AI/AI/aiStraightMove.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiStraightMove.h" + +namespace uking::ai { + +StraightMove::StraightMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StraightMove::~StraightMove() = default; + +bool StraightMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StraightMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StraightMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StraightMove::loadParams_() { + getStaticParam(&mAngleLimit_s, "AngleLimit"); + getStaticParam(&mDistanceMax_s, "DistanceMax"); + getStaticParam(&mDistanceMin_s, "DistanceMin"); + getStaticParam(&mRetryAngleMax_s, "RetryAngleMax"); + getStaticParam(&mRetryAngleMin_s, "RetryAngleMin"); + getStaticParam(&mIsRetryMove_s, "IsRetryMove"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStraightMove.h b/src/Game/AI/AI/aiStraightMove.h new file mode 100644 index 00000000..1dde6d45 --- /dev/null +++ b/src/Game/AI/AI/aiStraightMove.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StraightMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StraightMove, ksys::act::ai::Ai) +public: + explicit StraightMove(const InitArg& arg); + ~StraightMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAngleLimit_s{}; + // static_param at offset 0x40 + const float* mDistanceMax_s{}; + // static_param at offset 0x48 + const float* mDistanceMin_s{}; + // static_param at offset 0x50 + const float* mRetryAngleMax_s{}; + // static_param at offset 0x58 + const float* mRetryAngleMin_s{}; + // static_param at offset 0x60 + const bool* mIsRetryMove_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStunBossReaction.cpp b/src/Game/AI/AI/aiStunBossReaction.cpp new file mode 100644 index 00000000..b5dce679 --- /dev/null +++ b/src/Game/AI/AI/aiStunBossReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiStunBossReaction.h" + +namespace uking::ai { + +StunBossReaction::StunBossReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StunBossReaction::~StunBossReaction() = default; + +bool StunBossReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StunBossReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StunBossReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StunBossReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStunBossReaction.h b/src/Game/AI/AI/aiStunBossReaction.h new file mode 100644 index 00000000..f4d4a0fa --- /dev/null +++ b/src/Game/AI/AI/aiStunBossReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StunBossReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StunBossReaction, ksys::act::ai::Ai) +public: + explicit StunBossReaction(const InitArg& arg); + ~StunBossReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStunWithDamageReaction.cpp b/src/Game/AI/AI/aiStunWithDamageReaction.cpp new file mode 100644 index 00000000..991d2888 --- /dev/null +++ b/src/Game/AI/AI/aiStunWithDamageReaction.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiStunWithDamageReaction.h" + +namespace uking::ai { + +StunWithDamageReaction::StunWithDamageReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +StunWithDamageReaction::~StunWithDamageReaction() = default; + +bool StunWithDamageReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void StunWithDamageReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void StunWithDamageReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void StunWithDamageReaction::loadParams_() { + getStaticParam(&mTimer_s, "Timer"); + getStaticParam(&mForceEndLifeRatio_s, "ForceEndLifeRatio"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiStunWithDamageReaction.h b/src/Game/AI/AI/aiStunWithDamageReaction.h new file mode 100644 index 00000000..0a63c1a4 --- /dev/null +++ b/src/Game/AI/AI/aiStunWithDamageReaction.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class StunWithDamageReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(StunWithDamageReaction, ksys::act::ai::Ai) +public: + explicit StunWithDamageReaction(const InitArg& arg); + ~StunWithDamageReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTimer_s{}; + // static_param at offset 0x40 + const float* mForceEndLifeRatio_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSubsAngleSelect.cpp b/src/Game/AI/AI/aiSubsAngleSelect.cpp new file mode 100644 index 00000000..87569648 --- /dev/null +++ b/src/Game/AI/AI/aiSubsAngleSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSubsAngleSelect.h" + +namespace uking::ai { + +SubsAngleSelect::SubsAngleSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SubsAngleSelect::~SubsAngleSelect() = default; + +bool SubsAngleSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SubsAngleSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SubsAngleSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SubsAngleSelect::loadParams_() { + getStaticParam(&mSubsAngle_s, "SubsAngle"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mYRotOnly_s, "YRotOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSubsAngleSelect.h b/src/Game/AI/AI/aiSubsAngleSelect.h new file mode 100644 index 00000000..835608af --- /dev/null +++ b/src/Game/AI/AI/aiSubsAngleSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SubsAngleSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SubsAngleSelect, ksys::act::ai::Ai) +public: + explicit SubsAngleSelect(const InitArg& arg); + ~SubsAngleSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSubsAngle_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; + // static_param at offset 0x48 + const bool* mYRotOnly_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunAI.cpp b/src/Game/AI/AI/aiSunAI.cpp new file mode 100644 index 00000000..05d2bdc0 --- /dev/null +++ b/src/Game/AI/AI/aiSunAI.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiSunAI.h" + +namespace uking::ai { + +SunAI::SunAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool SunAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SunAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SunAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SunAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunAI.h b/src/Game/AI/AI/aiSunAI.h new file mode 100644 index 00000000..390e4867 --- /dev/null +++ b/src/Game/AI/AI/aiSunAI.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SunAI, ksys::act::ai::Ai) +public: + explicit SunAI(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiEscapeMove.cpp b/src/Game/AI/AI/aiSunazarashiEscapeMove.cpp new file mode 100644 index 00000000..2cb3f709 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiEscapeMove.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSunazarashiEscapeMove.h" + +namespace uking::ai { + +SunazarashiEscapeMove::SunazarashiEscapeMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SunazarashiEscapeMove::~SunazarashiEscapeMove() = default; + +bool SunazarashiEscapeMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SunazarashiEscapeMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SunazarashiEscapeMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SunazarashiEscapeMove::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiEscapeMove.h b/src/Game/AI/AI/aiSunazarashiEscapeMove.h new file mode 100644 index 00000000..0a705a86 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiEscapeMove.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunazarashiEscapeMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SunazarashiEscapeMove, ksys::act::ai::Ai) +public: + explicit SunazarashiEscapeMove(const InitArg& arg); + ~SunazarashiEscapeMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiNormal.cpp b/src/Game/AI/AI/aiSunazarashiNormal.cpp new file mode 100644 index 00000000..fcb1d993 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiNormal.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiSunazarashiNormal.h" + +namespace uking::ai { + +SunazarashiNormal::SunazarashiNormal(const InitArg& arg) : PreyNormal(arg) {} + +SunazarashiNormal::~SunazarashiNormal() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiNormal.h b/src/Game/AI/AI/aiSunazarashiNormal.h new file mode 100644 index 00000000..8a148138 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiNormal.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiPreyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunazarashiNormal : public PreyNormal { + SEAD_RTTI_OVERRIDE(SunazarashiNormal, PreyNormal) +public: + explicit SunazarashiNormal(const InitArg& arg); + ~SunazarashiNormal() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiReturn.cpp b/src/Game/AI/AI/aiSunazarashiReturn.cpp new file mode 100644 index 00000000..3d5c1512 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiReturn.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSunazarashiReturn.h" + +namespace uking::ai { + +SunazarashiReturn::SunazarashiReturn(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SunazarashiReturn::~SunazarashiReturn() = default; + +bool SunazarashiReturn::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SunazarashiReturn::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SunazarashiReturn::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SunazarashiReturn::loadParams_() { + getStaticParam(&mIsForceReturnHome_s, "IsForceReturnHome"); + getAITreeVariable(&mSunazarashiReturnPos_a, "SunazarashiReturnPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiReturn.h b/src/Game/AI/AI/aiSunazarashiReturn.h new file mode 100644 index 00000000..ef31f513 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiReturn.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunazarashiReturn : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SunazarashiReturn, ksys::act::ai::Ai) +public: + explicit SunazarashiReturn(const InitArg& arg); + ~SunazarashiReturn() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsForceReturnHome_s{}; + // aitree_variable at offset 0x40 + sead::Vector3f* mSunazarashiReturnPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiRoot.cpp b/src/Game/AI/AI/aiSunazarashiRoot.cpp new file mode 100644 index 00000000..8b61495d --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiSunazarashiRoot.h" + +namespace uking::ai { + +SunazarashiRoot::SunazarashiRoot(const InitArg& arg) : PreyRoot(arg) {} + +SunazarashiRoot::~SunazarashiRoot() = default; + +bool SunazarashiRoot::init_(sead::Heap* heap) { + return PreyRoot::init_(heap); +} + +void SunazarashiRoot::enter_(ksys::act::ai::InlineParamPack* params) { + PreyRoot::enter_(params); +} + +void SunazarashiRoot::leave_() { + PreyRoot::leave_(); +} + +void SunazarashiRoot::loadParams_() { + PreyRoot::loadParams_(); + getStaticParam(&mStunNoiseLevel_s, "StunNoiseLevel"); + getStaticParam(&mClashSpeed_s, "ClashSpeed"); + getStaticParam(&mClashAngle_s, "ClashAngle"); + getStaticParam(&mEnableHangAlways_s, "EnableHangAlways"); + getMapUnitParam(&mForbidSystemDeleteDistance_m, "ForbidSystemDeleteDistance"); + getAITreeVariable(&mSunazarashiReturnPos_a, "SunazarashiReturnPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiRoot.h b/src/Game/AI/AI/aiSunazarashiRoot.h new file mode 100644 index 00000000..8de34956 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiRoot.h @@ -0,0 +1,34 @@ +#pragma once + +#include "Game/AI/AI/aiPreyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunazarashiRoot : public PreyRoot { + SEAD_RTTI_OVERRIDE(SunazarashiRoot, PreyRoot) +public: + explicit SunazarashiRoot(const InitArg& arg); + ~SunazarashiRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x208 + const float* mStunNoiseLevel_s{}; + // static_param at offset 0x210 + const float* mClashSpeed_s{}; + // static_param at offset 0x218 + const float* mClashAngle_s{}; + // static_param at offset 0x220 + const bool* mEnableHangAlways_s{}; + // map_unit_param at offset 0x228 + const bool* mForbidSystemDeleteDistance_m{}; + // aitree_variable at offset 0x230 + sead::Vector3f* mSunazarashiReturnPos_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiTowing.cpp b/src/Game/AI/AI/aiSunazarashiTowing.cpp new file mode 100644 index 00000000..4d0ef5c2 --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiTowing.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSunazarashiTowing.h" + +namespace uking::ai { + +SunazarashiTowing::SunazarashiTowing(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SunazarashiTowing::~SunazarashiTowing() = default; + +bool SunazarashiTowing::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SunazarashiTowing::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SunazarashiTowing::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SunazarashiTowing::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSunazarashiTowing.h b/src/Game/AI/AI/aiSunazarashiTowing.h new file mode 100644 index 00000000..be65f11f --- /dev/null +++ b/src/Game/AI/AI/aiSunazarashiTowing.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SunazarashiTowing : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SunazarashiTowing, ksys::act::ai::Ai) +public: + explicit SunazarashiTowing(const InitArg& arg); + ~SunazarashiTowing() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmBattle.cpp b/src/Game/AI/AI/aiSwarmBattle.cpp new file mode 100644 index 00000000..98a65364 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmBattle.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSwarmBattle.h" + +namespace uking::ai { + +SwarmBattle::SwarmBattle(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwarmBattle::~SwarmBattle() = default; + +bool SwarmBattle::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwarmBattle::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwarmBattle::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwarmBattle::loadParams_() { + getStaticParam(&mFailedRiseHeight_s, "FailedRiseHeight"); + getStaticParam(&mRiseFailedMoveDist_s, "RiseFailedMoveDist"); + getStaticParam(&mAttackIntervalIntensity_s, "AttackIntervalIntensity"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmBattle.h b/src/Game/AI/AI/aiSwarmBattle.h new file mode 100644 index 00000000..a412ad96 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmBattle.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmBattle : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwarmBattle, ksys::act::ai::Ai) +public: + explicit SwarmBattle(const InitArg& arg); + ~SwarmBattle() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mFailedRiseHeight_s{}; + // static_param at offset 0x40 + const float* mRiseFailedMoveDist_s{}; + // static_param at offset 0x48 + const float* mAttackIntervalIntensity_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmEscapeDie.cpp b/src/Game/AI/AI/aiSwarmEscapeDie.cpp new file mode 100644 index 00000000..5a0b56cd --- /dev/null +++ b/src/Game/AI/AI/aiSwarmEscapeDie.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSwarmEscapeDie.h" + +namespace uking::ai { + +SwarmEscapeDie::SwarmEscapeDie(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwarmEscapeDie::~SwarmEscapeDie() = default; + +bool SwarmEscapeDie::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwarmEscapeDie::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwarmEscapeDie::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwarmEscapeDie::loadParams_() { + getStaticParam(&mTime_s, "Time"); + getStaticParam(&mRiseHeight_s, "RiseHeight"); + getStaticParam(&mRiseDist_s, "RiseDist"); + getStaticParam(&mEndDist_s, "EndDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmEscapeDie.h b/src/Game/AI/AI/aiSwarmEscapeDie.h new file mode 100644 index 00000000..5b962033 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmEscapeDie.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmEscapeDie : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwarmEscapeDie, ksys::act::ai::Ai) +public: + explicit SwarmEscapeDie(const InitArg& arg); + ~SwarmEscapeDie() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mTime_s{}; + // static_param at offset 0x40 + const float* mRiseHeight_s{}; + // static_param at offset 0x48 + const float* mRiseDist_s{}; + // static_param at offset 0x50 + const float* mEndDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.cpp b/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.cpp new file mode 100644 index 00000000..eee1de5f --- /dev/null +++ b/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSwarmRangeKeepCircleMove.h" + +namespace uking::ai { + +SwarmRangeKeepCircleMove::SwarmRangeKeepCircleMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwarmRangeKeepCircleMove::~SwarmRangeKeepCircleMove() = default; + +bool SwarmRangeKeepCircleMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwarmRangeKeepCircleMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwarmRangeKeepCircleMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwarmRangeKeepCircleMove::loadParams_() { + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mSpeed_s, "Speed"); + getStaticParam(&mUpdateCircleMoveDistance_s, "UpdateCircleMoveDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.h b/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.h new file mode 100644 index 00000000..1fdbfc24 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmRangeKeepCircleMove.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmRangeKeepCircleMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwarmRangeKeepCircleMove, ksys::act::ai::Ai) +public: + explicit SwarmRangeKeepCircleMove(const InitArg& arg); + ~SwarmRangeKeepCircleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBaseDist_s{}; + // static_param at offset 0x40 + const float* mOutDist_s{}; + // static_param at offset 0x48 + const float* mSpeed_s{}; + // static_param at offset 0x50 + const float* mUpdateCircleMoveDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmReaction.cpp b/src/Game/AI/AI/aiSwarmReaction.cpp new file mode 100644 index 00000000..cfb0e117 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSwarmReaction.h" + +namespace uking::ai { + +SwarmReaction::SwarmReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwarmReaction::~SwarmReaction() = default; + +bool SwarmReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwarmReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwarmReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwarmReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmReaction.h b/src/Game/AI/AI/aiSwarmReaction.h new file mode 100644 index 00000000..5f02bc71 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwarmReaction, ksys::act::ai::Ai) +public: + explicit SwarmReaction(const InitArg& arg); + ~SwarmReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmRoot.cpp b/src/Game/AI/AI/aiSwarmRoot.cpp new file mode 100644 index 00000000..d8a4c6b6 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSwarmRoot.h" + +namespace uking::ai { + +SwarmRoot::SwarmRoot(const InitArg& arg) : EnemyRoot(arg) {} + +SwarmRoot::~SwarmRoot() = default; + +bool SwarmRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void SwarmRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void SwarmRoot::leave_() { + EnemyRoot::leave_(); +} + +void SwarmRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mASName_s, "ASName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmRoot.h b/src/Game/AI/AI/aiSwarmRoot.h new file mode 100644 index 00000000..a7965c4a --- /dev/null +++ b/src/Game/AI/AI/aiSwarmRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(SwarmRoot, EnemyRoot) +public: + explicit SwarmRoot(const InitArg& arg); + ~SwarmRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + sead::SafeString mASName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmStopTimerEscape.cpp b/src/Game/AI/AI/aiSwarmStopTimerEscape.cpp new file mode 100644 index 00000000..62dd0da6 --- /dev/null +++ b/src/Game/AI/AI/aiSwarmStopTimerEscape.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSwarmStopTimerEscape.h" + +namespace uking::ai { + +SwarmStopTimerEscape::SwarmStopTimerEscape(const InitArg& arg) : SwarmEscapeDie(arg) {} + +SwarmStopTimerEscape::~SwarmStopTimerEscape() = default; + +bool SwarmStopTimerEscape::init_(sead::Heap* heap) { + return SwarmEscapeDie::init_(heap); +} + +void SwarmStopTimerEscape::enter_(ksys::act::ai::InlineParamPack* params) { + SwarmEscapeDie::enter_(params); +} + +void SwarmStopTimerEscape::leave_() { + SwarmEscapeDie::leave_(); +} + +void SwarmStopTimerEscape::loadParams_() { + SwarmEscapeDie::loadParams_(); + getStaticParam(&mStopActorName_s, "StopActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwarmStopTimerEscape.h b/src/Game/AI/AI/aiSwarmStopTimerEscape.h new file mode 100644 index 00000000..9f996c4b --- /dev/null +++ b/src/Game/AI/AI/aiSwarmStopTimerEscape.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSwarmEscapeDie.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwarmStopTimerEscape : public SwarmEscapeDie { + SEAD_RTTI_OVERRIDE(SwarmStopTimerEscape, SwarmEscapeDie) +public: + explicit SwarmStopTimerEscape(const InitArg& arg); + ~SwarmStopTimerEscape() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x70 + sead::SafeString mStopActorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyFindPlayer.cpp b/src/Game/AI/AI/aiSwimEnemyFindPlayer.cpp new file mode 100644 index 00000000..0904a1ba --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyFindPlayer.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSwimEnemyFindPlayer.h" + +namespace uking::ai { + +SwimEnemyFindPlayer::SwimEnemyFindPlayer(const InitArg& arg) : EnemyBaseFindPlayer(arg) {} + +SwimEnemyFindPlayer::~SwimEnemyFindPlayer() = default; + +bool SwimEnemyFindPlayer::init_(sead::Heap* heap) { + return EnemyBaseFindPlayer::init_(heap); +} + +void SwimEnemyFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseFindPlayer::enter_(params); +} + +void SwimEnemyFindPlayer::leave_() { + EnemyBaseFindPlayer::leave_(); +} + +void SwimEnemyFindPlayer::loadParams_() { + EnemyBaseFindPlayer::loadParams_(); + getStaticParam(&mIsAbleToLand_s, "IsAbleToLand"); + getStaticParam(&mNearScaffoldDist_s, "NearScaffoldDist"); + getStaticParam(&mClimbVmin_s, "ClimbVmin"); + getStaticParam(&mClimbVmax_s, "ClimbVmax"); + getStaticParam(&mClimbHmax_s, "ClimbHmax"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyFindPlayer.h b/src/Game/AI/AI/aiSwimEnemyFindPlayer.h new file mode 100644 index 00000000..5877eee5 --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyFindPlayer.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwimEnemyFindPlayer : public EnemyBaseFindPlayer { + SEAD_RTTI_OVERRIDE(SwimEnemyFindPlayer, EnemyBaseFindPlayer) +public: + explicit SwimEnemyFindPlayer(const InitArg& arg); + ~SwimEnemyFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x140 + const bool* mIsAbleToLand_s{}; + // static_param at offset 0x150 + const float* mNearScaffoldDist_s{}; + // static_param at offset 0x158 + const float* mClimbVmin_s{}; + // static_param at offset 0x160 + const float* mClimbVmax_s{}; + // static_param at offset 0x168 + const float* mClimbHmax_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyNormal.cpp b/src/Game/AI/AI/aiSwimEnemyNormal.cpp new file mode 100644 index 00000000..488457d3 --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyNormal.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiSwimEnemyNormal.h" + +namespace uking::ai { + +SwimEnemyNormal::SwimEnemyNormal(const InitArg& arg) : EnemyNormal(arg) {} + +SwimEnemyNormal::~SwimEnemyNormal() = default; + +void SwimEnemyNormal::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyNormal::enter_(params); +} + +void SwimEnemyNormal::leave_() { + EnemyNormal::leave_(); +} + +void SwimEnemyNormal::loadParams_() { + EnemyNormal::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyNormal.h b/src/Game/AI/AI/aiSwimEnemyNormal.h new file mode 100644 index 00000000..b159125c --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyNormal.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyNormal.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwimEnemyNormal : public EnemyNormal { + SEAD_RTTI_OVERRIDE(SwimEnemyNormal, EnemyNormal) +public: + explicit SwimEnemyNormal(const InitArg& arg); + ~SwimEnemyNormal() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyRoam.cpp b/src/Game/AI/AI/aiSwimEnemyRoam.cpp new file mode 100644 index 00000000..4f7747b7 --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyRoam.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiSwimEnemyRoam.h" + +namespace uking::ai { + +SwimEnemyRoam::SwimEnemyRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwimEnemyRoam::~SwimEnemyRoam() = default; + +void SwimEnemyRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwimEnemyRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwimEnemyRoam::loadParams_() { + getStaticParam(&mRoamRadius_s, "RoamRadius"); + getStaticParam(&mRoamRatio_s, "RoamRatio"); + getStaticParam(&mRoamXRadius_s, "RoamXRadius"); + getStaticParam(&mRoamZRadius_s, "RoamZRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwimEnemyRoam.h b/src/Game/AI/AI/aiSwimEnemyRoam.h new file mode 100644 index 00000000..c8cd6841 --- /dev/null +++ b/src/Game/AI/AI/aiSwimEnemyRoam.h @@ -0,0 +1,28 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwimEnemyRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwimEnemyRoam, ksys::act::ai::Ai) +public: + explicit SwimEnemyRoam(const InitArg& arg); + ~SwimEnemyRoam() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRoamRadius_s{}; + // static_param at offset 0x40 + const float* mRoamRatio_s{}; + // static_param at offset 0x48 + const float* mRoamXRadius_s{}; + // static_param at offset 0x50 + const float* mRoamZRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchAI.cpp b/src/Game/AI/AI/aiSwitchAI.cpp new file mode 100644 index 00000000..a00c8281 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiSwitchAI.h" + +namespace uking::ai { + +SwitchAI::SwitchAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchAI::~SwitchAI() = default; + +bool SwitchAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchAI::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchAI.h b/src/Game/AI/AI/aiSwitchAI.h new file mode 100644 index 00000000..6359997d --- /dev/null +++ b/src/Game/AI/AI/aiSwitchAI.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchAI, ksys::act::ai::Ai) +public: + explicit SwitchAI(const InitArg& arg); + ~SwitchAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchDistance.cpp b/src/Game/AI/AI/aiSwitchDistance.cpp new file mode 100644 index 00000000..4e4dc19b --- /dev/null +++ b/src/Game/AI/AI/aiSwitchDistance.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiSwitchDistance.h" + +namespace uking::ai { + +SwitchDistance::SwitchDistance(const InitArg& arg) : SwitchAI(arg) {} + +SwitchDistance::~SwitchDistance() = default; + +bool SwitchDistance::init_(sead::Heap* heap) { + return SwitchAI::init_(heap); +} + +void SwitchDistance::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchAI::enter_(params); +} + +void SwitchDistance::leave_() { + SwitchAI::leave_(); +} + +void SwitchDistance::loadParams_() { + SwitchAI::loadParams_(); + getStaticParam(&mOnDis_s, "OnDis"); + getStaticParam(&mOffsetDis_s, "OffsetDis"); + getStaticParam(&mChangeSeq_s, "ChangeSeq"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchDistance.h b/src/Game/AI/AI/aiSwitchDistance.h new file mode 100644 index 00000000..373b97a3 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchDistance.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchDistance : public SwitchAI { + SEAD_RTTI_OVERRIDE(SwitchDistance, SwitchAI) +public: + explicit SwitchDistance(const InitArg& arg); + ~SwitchDistance() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mOnDis_s{}; + // static_param at offset 0x40 + const float* mOffsetDis_s{}; + // static_param at offset 0x48 + const bool* mChangeSeq_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchElectric.cpp b/src/Game/AI/AI/aiSwitchElectric.cpp new file mode 100644 index 00000000..7c6b482b --- /dev/null +++ b/src/Game/AI/AI/aiSwitchElectric.cpp @@ -0,0 +1,24 @@ +#include "Game/AI/AI/aiSwitchElectric.h" + +namespace uking::ai { + +SwitchElectric::SwitchElectric(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool SwitchElectric::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchElectric::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchElectric::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchElectric::loadParams_() { + getStaticParam(&mElecReq_s, "ElecReq"); + getStaticParam(&mVolReq_s, "VolReq"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchElectric.h b/src/Game/AI/AI/aiSwitchElectric.h new file mode 100644 index 00000000..39e4d045 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchElectric.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchElectric : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchElectric, ksys::act::ai::Ai) +public: + explicit SwitchElectric(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mElecReq_s{}; + // static_param at offset 0x40 + const float* mVolReq_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchHit.cpp b/src/Game/AI/AI/aiSwitchHit.cpp new file mode 100644 index 00000000..d0af8a29 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchHit.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSwitchHit.h" + +namespace uking::ai { + +SwitchHit::SwitchHit(const InitArg& arg) : SwitchAI(arg) {} + +SwitchHit::~SwitchHit() = default; + +bool SwitchHit::init_(sead::Heap* heap) { + return SwitchAI::init_(heap); +} + +void SwitchHit::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchAI::enter_(params); +} + +void SwitchHit::leave_() { + SwitchAI::leave_(); +} + +void SwitchHit::loadParams_() { + SwitchAI::loadParams_(); + getStaticParam(&mWaitTime_s, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchHit.h b/src/Game/AI/AI/aiSwitchHit.h new file mode 100644 index 00000000..b050e09b --- /dev/null +++ b/src/Game/AI/AI/aiSwitchHit.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchHit : public SwitchAI { + SEAD_RTTI_OVERRIDE(SwitchHit, SwitchAI) +public: + explicit SwitchHit(const InitArg& arg); + ~SwitchHit() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchHitOnce.cpp b/src/Game/AI/AI/aiSwitchHitOnce.cpp new file mode 100644 index 00000000..433e6255 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchHitOnce.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiSwitchHitOnce.h" + +namespace uking::ai { + +SwitchHitOnce::SwitchHitOnce(const InitArg& arg) : SwitchHit(arg) {} + +bool SwitchHitOnce::init_(sead::Heap* heap) { + return SwitchHit::init_(heap); +} + +void SwitchHitOnce::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchHit::enter_(params); +} + +void SwitchHitOnce::leave_() { + SwitchHit::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchHitOnce.h b/src/Game/AI/AI/aiSwitchHitOnce.h new file mode 100644 index 00000000..32c04876 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchHitOnce.h @@ -0,0 +1,20 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchHit.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchHitOnce : public SwitchHit { + SEAD_RTTI_OVERRIDE(SwitchHitOnce, SwitchHit) +public: + explicit SwitchHitOnce(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchLinkTagCheck.cpp b/src/Game/AI/AI/aiSwitchLinkTagCheck.cpp new file mode 100644 index 00000000..8e35bbd7 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchLinkTagCheck.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiSwitchLinkTagCheck.h" + +namespace uking::ai { + +SwitchLinkTagCheck::SwitchLinkTagCheck(const InitArg& arg) : SwitchAI(arg) {} + +SwitchLinkTagCheck::~SwitchLinkTagCheck() = default; + +bool SwitchLinkTagCheck::init_(sead::Heap* heap) { + return SwitchAI::init_(heap); +} + +void SwitchLinkTagCheck::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchAI::enter_(params); +} + +void SwitchLinkTagCheck::leave_() { + SwitchAI::leave_(); +} + +void SwitchLinkTagCheck::loadParams_() { + SwitchAI::loadParams_(); + getStaticParam(&mSignalType_s, "SignalType"); + getStaticParam(&mSetEnableJobTimerTiming_s, "SetEnableJobTimerTiming"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchLinkTagCheck.h b/src/Game/AI/AI/aiSwitchLinkTagCheck.h new file mode 100644 index 00000000..39a82ec0 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchLinkTagCheck.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchLinkTagCheck : public SwitchAI { + SEAD_RTTI_OVERRIDE(SwitchLinkTagCheck, SwitchAI) +public: + explicit SwitchLinkTagCheck(const InitArg& arg); + ~SwitchLinkTagCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mSignalType_s{}; + // static_param at offset 0x40 + const int* mSetEnableJobTimerTiming_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchRightAndWrong.cpp b/src/Game/AI/AI/aiSwitchRightAndWrong.cpp new file mode 100644 index 00000000..1716d0fa --- /dev/null +++ b/src/Game/AI/AI/aiSwitchRightAndWrong.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSwitchRightAndWrong.h" + +namespace uking::ai { + +SwitchRightAndWrong::SwitchRightAndWrong(const InitArg& arg) : SwitchAI(arg) {} + +SwitchRightAndWrong::~SwitchRightAndWrong() = default; + +bool SwitchRightAndWrong::init_(sead::Heap* heap) { + return SwitchAI::init_(heap); +} + +void SwitchRightAndWrong::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchAI::enter_(params); +} + +void SwitchRightAndWrong::leave_() { + SwitchAI::leave_(); +} + +void SwitchRightAndWrong::loadParams_() { + SwitchAI::loadParams_(); + getStaticParam(&mWaitTime_s, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchRightAndWrong.h b/src/Game/AI/AI/aiSwitchRightAndWrong.h new file mode 100644 index 00000000..c3bf2b32 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchRightAndWrong.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchRightAndWrong : public SwitchAI { + SEAD_RTTI_OVERRIDE(SwitchRightAndWrong, SwitchAI) +public: + explicit SwitchRightAndWrong(const InitArg& arg); + ~SwitchRightAndWrong() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimeLag.cpp b/src/Game/AI/AI/aiSwitchTimeLag.cpp new file mode 100644 index 00000000..e29c00f4 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimeLag.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSwitchTimeLag.h" + +namespace uking::ai { + +SwitchTimeLag::SwitchTimeLag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchTimeLag::~SwitchTimeLag() = default; + +bool SwitchTimeLag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchTimeLag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchTimeLag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchTimeLag::loadParams_() { + getMapUnitParam(&mWaitTime_m, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimeLag.h b/src/Game/AI/AI/aiSwitchTimeLag.h new file mode 100644 index 00000000..d70b3e35 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimeLag.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchTimeLag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchTimeLag, ksys::act::ai::Ai) +public: + explicit SwitchTimeLag(const InitArg& arg); + ~SwitchTimeLag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mWaitTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimeLimited.cpp b/src/Game/AI/AI/aiSwitchTimeLimited.cpp new file mode 100644 index 00000000..972babb6 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimeLimited.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSwitchTimeLimited.h" + +namespace uking::ai { + +SwitchTimeLimited::SwitchTimeLimited(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchTimeLimited::~SwitchTimeLimited() = default; + +bool SwitchTimeLimited::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchTimeLimited::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchTimeLimited::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchTimeLimited::loadParams_() { + getMapUnitParam(&mWaitTime_m, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimeLimited.h b/src/Game/AI/AI/aiSwitchTimeLimited.h new file mode 100644 index 00000000..16ef4cc6 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimeLimited.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchTimeLimited : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchTimeLimited, ksys::act::ai::Ai) +public: + explicit SwitchTimeLimited(const InitArg& arg); + ~SwitchTimeLimited() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mWaitTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimer.cpp b/src/Game/AI/AI/aiSwitchTimer.cpp new file mode 100644 index 00000000..82113665 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimer.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSwitchTimer.h" + +namespace uking::ai { + +SwitchTimer::SwitchTimer(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchTimer::~SwitchTimer() = default; + +bool SwitchTimer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchTimer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchTimer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchTimer::loadParams_() { + getMapUnitParam(&mWaitTime_m, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTimer.h b/src/Game/AI/AI/aiSwitchTimer.h new file mode 100644 index 00000000..f4af81aa --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTimer.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchTimer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchTimer, ksys::act::ai::Ai) +public: + explicit SwitchTimer(const InitArg& arg); + ~SwitchTimer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mWaitTime_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTorch.cpp b/src/Game/AI/AI/aiSwitchTorch.cpp new file mode 100644 index 00000000..c283cce4 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTorch.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiSwitchTorch.h" + +namespace uking::ai { + +SwitchTorch::SwitchTorch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchTorch::~SwitchTorch() = default; + +bool SwitchTorch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchTorch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchTorch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchTorch::loadParams_() { + getMapUnitParam(&mSwitchTorchSpType_m, "SwitchTorchSpType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchTorch.h b/src/Game/AI/AI/aiSwitchTorch.h new file mode 100644 index 00000000..e7441ccc --- /dev/null +++ b/src/Game/AI/AI/aiSwitchTorch.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchTorch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchTorch, ksys::act::ai::Ai) +public: + explicit SwitchTorch(const InitArg& arg); + ~SwitchTorch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mSwitchTorchSpType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchWheel.cpp b/src/Game/AI/AI/aiSwitchWheel.cpp new file mode 100644 index 00000000..c1887c78 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchWheel.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiSwitchWheel.h" + +namespace uking::ai { + +SwitchWheel::SwitchWheel(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +SwitchWheel::~SwitchWheel() = default; + +bool SwitchWheel::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void SwitchWheel::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void SwitchWheel::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void SwitchWheel::loadParams_() { + getStaticParam(&mRotateStartRad_s, "RotateStartRad"); + getStaticParam(&mRotateEndRad_s, "RotateEndRad"); + getStaticParam(&mReverseEndRad_s, "ReverseEndRad"); + getStaticParam(&mReverseStartRad_s, "ReverseStartRad"); + getStaticParam(&mIsAbleToReverse_s, "IsAbleToReverse"); + getMapUnitParam(&mRotAxis_m, "RotAxis"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchWheel.h b/src/Game/AI/AI/aiSwitchWheel.h new file mode 100644 index 00000000..8233a13a --- /dev/null +++ b/src/Game/AI/AI/aiSwitchWheel.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchWheel : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(SwitchWheel, ksys::act::ai::Ai) +public: + explicit SwitchWheel(const InitArg& arg); + ~SwitchWheel() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRotateStartRad_s{}; + // static_param at offset 0x40 + const float* mRotateEndRad_s{}; + // static_param at offset 0x48 + const float* mReverseEndRad_s{}; + // static_param at offset 0x50 + const float* mReverseStartRad_s{}; + // static_param at offset 0x58 + const bool* mIsAbleToReverse_s{}; + // map_unit_param at offset 0x60 + const int* mRotAxis_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchWindHit.cpp b/src/Game/AI/AI/aiSwitchWindHit.cpp new file mode 100644 index 00000000..6d10d568 --- /dev/null +++ b/src/Game/AI/AI/aiSwitchWindHit.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiSwitchWindHit.h" + +namespace uking::ai { + +SwitchWindHit::SwitchWindHit(const InitArg& arg) : SwitchAI(arg) {} + +SwitchWindHit::~SwitchWindHit() = default; + +bool SwitchWindHit::init_(sead::Heap* heap) { + return SwitchAI::init_(heap); +} + +void SwitchWindHit::enter_(ksys::act::ai::InlineParamPack* params) { + SwitchAI::enter_(params); +} + +void SwitchWindHit::leave_() { + SwitchAI::leave_(); +} + +void SwitchWindHit::loadParams_() { + SwitchAI::loadParams_(); + getStaticParam(&mWaitTime_s, "WaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiSwitchWindHit.h b/src/Game/AI/AI/aiSwitchWindHit.h new file mode 100644 index 00000000..b848c81c --- /dev/null +++ b/src/Game/AI/AI/aiSwitchWindHit.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiSwitchAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class SwitchWindHit : public SwitchAI { + SEAD_RTTI_OVERRIDE(SwitchWindHit, SwitchAI) +public: + explicit SwitchWindHit(const InitArg& arg); + ~SwitchWindHit() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAbsolutePos.cpp b/src/Game/AI/AI/aiTargetAbsolutePos.cpp new file mode 100644 index 00000000..a5e14ebd --- /dev/null +++ b/src/Game/AI/AI/aiTargetAbsolutePos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetAbsolutePos.h" + +namespace uking::ai { + +TargetAbsolutePos::TargetAbsolutePos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetAbsolutePos::~TargetAbsolutePos() = default; + +bool TargetAbsolutePos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetAbsolutePos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetAbsolutePos::leave_() { + TargetPosAI::leave_(); +} + +void TargetAbsolutePos::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mTargetPos_s, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAbsolutePos.h b/src/Game/AI/AI/aiTargetAbsolutePos.h new file mode 100644 index 00000000..c9c7ef74 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAbsolutePos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetAbsolutePos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetAbsolutePos, TargetPosAI) +public: + explicit TargetAbsolutePos(const InitArg& arg); + ~TargetAbsolutePos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const sead::Vector3f* mTargetPos_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetActorDistanceSelect.cpp b/src/Game/AI/AI/aiTargetActorDistanceSelect.cpp new file mode 100644 index 00000000..d458dab0 --- /dev/null +++ b/src/Game/AI/AI/aiTargetActorDistanceSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetActorDistanceSelect.h" + +namespace uking::ai { + +TargetActorDistanceSelect::TargetActorDistanceSelect(const InitArg& arg) + : TargetDistanceSelect(arg) {} + +TargetActorDistanceSelect::~TargetActorDistanceSelect() = default; + +bool TargetActorDistanceSelect::init_(sead::Heap* heap) { + return TargetDistanceSelect::init_(heap); +} + +void TargetActorDistanceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + TargetDistanceSelect::enter_(params); +} + +void TargetActorDistanceSelect::leave_() { + TargetDistanceSelect::leave_(); +} + +void TargetActorDistanceSelect::loadParams_() { + TargetDistanceSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetActorDistanceSelect.h b/src/Game/AI/AI/aiTargetActorDistanceSelect.h new file mode 100644 index 00000000..ed1e8450 --- /dev/null +++ b/src/Game/AI/AI/aiTargetActorDistanceSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetDistanceSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetActorDistanceSelect : public TargetDistanceSelect { + SEAD_RTTI_OVERRIDE(TargetActorDistanceSelect, TargetDistanceSelect) +public: + explicit TargetActorDistanceSelect(const InitArg& arg); + ~TargetActorDistanceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetActorGrabAdapter.cpp b/src/Game/AI/AI/aiTargetActorGrabAdapter.cpp new file mode 100644 index 00000000..b69456ae --- /dev/null +++ b/src/Game/AI/AI/aiTargetActorGrabAdapter.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetActorGrabAdapter.h" + +namespace uking::ai { + +TargetActorGrabAdapter::TargetActorGrabAdapter(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetActorGrabAdapter::~TargetActorGrabAdapter() = default; + +bool TargetActorGrabAdapter::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetActorGrabAdapter::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetActorGrabAdapter::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetActorGrabAdapter::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetActorGrabAdapter.h b/src/Game/AI/AI/aiTargetActorGrabAdapter.h new file mode 100644 index 00000000..f97537cc --- /dev/null +++ b/src/Game/AI/AI/aiTargetActorGrabAdapter.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetActorGrabAdapter : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetActorGrabAdapter, ksys::act::ai::Ai) +public: + explicit TargetActorGrabAdapter(const InitArg& arg); + ~TargetActorGrabAdapter() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAngerSelect.cpp b/src/Game/AI/AI/aiTargetAngerSelect.cpp new file mode 100644 index 00000000..2635dea8 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAngerSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetAngerSelect.h" + +namespace uking::ai { + +TargetAngerSelect::TargetAngerSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetAngerSelect::~TargetAngerSelect() = default; + +bool TargetAngerSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetAngerSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetAngerSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetAngerSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAngerSelect.h b/src/Game/AI/AI/aiTargetAngerSelect.h new file mode 100644 index 00000000..6d6c7f54 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAngerSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetAngerSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetAngerSelect, ksys::act::ai::Ai) +public: + explicit TargetAngerSelect(const InitArg& arg); + ~TargetAngerSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.cpp b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.cpp new file mode 100644 index 00000000..43500913 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.cpp @@ -0,0 +1,15 @@ +#include "Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h" + +namespace uking::ai { + +TargetAttackAttitudeTgtSelect::TargetAttackAttitudeTgtSelect(const InitArg& arg) + : TargetAttackAttitudeTgtSelectBase(arg) {} + +TargetAttackAttitudeTgtSelect::~TargetAttackAttitudeTgtSelect() = default; + +void TargetAttackAttitudeTgtSelect::loadParams_() { + TargetAttackAttitudeTgtSelectBase::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h new file mode 100644 index 00000000..77d73d01 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetAttackAttitudeTgtSelect : public TargetAttackAttitudeTgtSelectBase { + SEAD_RTTI_OVERRIDE(TargetAttackAttitudeTgtSelect, TargetAttackAttitudeTgtSelectBase) +public: + explicit TargetAttackAttitudeTgtSelect(const InitArg& arg); + ~TargetAttackAttitudeTgtSelect() override; + + void loadParams_() override; + +protected: + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.cpp b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.cpp new file mode 100644 index 00000000..98c3c316 --- /dev/null +++ b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.cpp @@ -0,0 +1,20 @@ +#include "Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h" + +namespace uking::ai { + +TargetAttackAttitudeTgtSelectBase::TargetAttackAttitudeTgtSelectBase(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +TargetAttackAttitudeTgtSelectBase::~TargetAttackAttitudeTgtSelectBase() = default; + +void TargetAttackAttitudeTgtSelectBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetAttackAttitudeTgtSelectBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetAttackAttitudeTgtSelectBase::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h new file mode 100644 index 00000000..4881cbeb --- /dev/null +++ b/src/Game/AI/AI/aiTargetAttackAttitudeTgtSelectBase.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetAttackAttitudeTgtSelectBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetAttackAttitudeTgtSelectBase, ksys::act::ai::Ai) +public: + explicit TargetAttackAttitudeTgtSelectBase(const InitArg& arg); + ~TargetAttackAttitudeTgtSelectBase() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBaitTypeSelect.cpp b/src/Game/AI/AI/aiTargetBaitTypeSelect.cpp new file mode 100644 index 00000000..ad16f337 --- /dev/null +++ b/src/Game/AI/AI/aiTargetBaitTypeSelect.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiTargetBaitTypeSelect.h" + +namespace uking::ai { + +TargetBaitTypeSelect::TargetBaitTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetBaitTypeSelect::~TargetBaitTypeSelect() = default; + +void TargetBaitTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetBaitTypeSelect::loadParams_() { + getAITreeVariable(&mTargetBaitActorLink_a, "TargetBaitActorLink"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBaitTypeSelect.h b/src/Game/AI/AI/aiTargetBaitTypeSelect.h new file mode 100644 index 00000000..2d095058 --- /dev/null +++ b/src/Game/AI/AI/aiTargetBaitTypeSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetBaitTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetBaitTypeSelect, ksys::act::ai::Ai) +public: + explicit TargetBaitTypeSelect(const InitArg& arg); + ~TargetBaitTypeSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x8]; + // aitree_variable at offset 0x40 + void* mTargetBaitActorLink_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBeatCheck.cpp b/src/Game/AI/AI/aiTargetBeatCheck.cpp new file mode 100644 index 00000000..ed11c530 --- /dev/null +++ b/src/Game/AI/AI/aiTargetBeatCheck.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetBeatCheck.h" + +namespace uking::ai { + +TargetBeatCheck::TargetBeatCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetBeatCheck::~TargetBeatCheck() = default; + +bool TargetBeatCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetBeatCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetBeatCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetBeatCheck::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBeatCheck.h b/src/Game/AI/AI/aiTargetBeatCheck.h new file mode 100644 index 00000000..a4e7f447 --- /dev/null +++ b/src/Game/AI/AI/aiTargetBeatCheck.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetBeatCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetBeatCheck, ksys::act::ai::Ai) +public: + explicit TargetBeatCheck(const InitArg& arg); + ~TargetBeatCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBeatGetDrop.cpp b/src/Game/AI/AI/aiTargetBeatGetDrop.cpp new file mode 100644 index 00000000..f1aa3805 --- /dev/null +++ b/src/Game/AI/AI/aiTargetBeatGetDrop.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetBeatGetDrop.h" + +namespace uking::ai { + +TargetBeatGetDrop::TargetBeatGetDrop(const InitArg& arg) : TargetBeatCheck(arg) {} + +TargetBeatGetDrop::~TargetBeatGetDrop() = default; + +bool TargetBeatGetDrop::init_(sead::Heap* heap) { + return TargetBeatCheck::init_(heap); +} + +void TargetBeatGetDrop::enter_(ksys::act::ai::InlineParamPack* params) { + TargetBeatCheck::enter_(params); +} + +void TargetBeatGetDrop::leave_() { + TargetBeatCheck::leave_(); +} + +void TargetBeatGetDrop::loadParams_() { + TargetBeatCheck::loadParams_(); + getStaticParam(&mSearchDist_s, "SearchDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetBeatGetDrop.h b/src/Game/AI/AI/aiTargetBeatGetDrop.h new file mode 100644 index 00000000..b90bb85f --- /dev/null +++ b/src/Game/AI/AI/aiTargetBeatGetDrop.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetBeatCheck.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetBeatGetDrop : public TargetBeatCheck { + SEAD_RTTI_OVERRIDE(TargetBeatGetDrop, TargetBeatCheck) +public: + explicit TargetBeatGetDrop(const InitArg& arg); + ~TargetBeatGetDrop() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSearchDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetClimbSelect.cpp b/src/Game/AI/AI/aiTargetClimbSelect.cpp new file mode 100644 index 00000000..bbb17a9c --- /dev/null +++ b/src/Game/AI/AI/aiTargetClimbSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetClimbSelect.h" + +namespace uking::ai { + +TargetClimbSelect::TargetClimbSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetClimbSelect::~TargetClimbSelect() = default; + +bool TargetClimbSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetClimbSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetClimbSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetClimbSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetClimbSelect.h b/src/Game/AI/AI/aiTargetClimbSelect.h new file mode 100644 index 00000000..6429dc7a --- /dev/null +++ b/src/Game/AI/AI/aiTargetClimbSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetClimbSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetClimbSelect, ksys::act::ai::Ai) +public: + explicit TargetClimbSelect(const InitArg& arg); + ~TargetClimbSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDirLRInHideSelect.cpp b/src/Game/AI/AI/aiTargetDirLRInHideSelect.cpp new file mode 100644 index 00000000..6c0394e8 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDirLRInHideSelect.cpp @@ -0,0 +1,9 @@ +#include "Game/AI/AI/aiTargetDirLRInHideSelect.h" + +namespace uking::ai { + +TargetDirLRInHideSelect::TargetDirLRInHideSelect(const InitArg& arg) : TargetDirLRSelect(arg) {} + +TargetDirLRInHideSelect::~TargetDirLRInHideSelect() = default; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDirLRInHideSelect.h b/src/Game/AI/AI/aiTargetDirLRInHideSelect.h new file mode 100644 index 00000000..3fa81b57 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDirLRInHideSelect.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Game/AI/AI/aiTargetDirLRSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetDirLRInHideSelect : public TargetDirLRSelect { + SEAD_RTTI_OVERRIDE(TargetDirLRInHideSelect, TargetDirLRSelect) +public: + explicit TargetDirLRInHideSelect(const InitArg& arg); + ~TargetDirLRInHideSelect() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDirLRSelect.cpp b/src/Game/AI/AI/aiTargetDirLRSelect.cpp new file mode 100644 index 00000000..c24fb90c --- /dev/null +++ b/src/Game/AI/AI/aiTargetDirLRSelect.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiTargetDirLRSelect.h" + +namespace uking::ai { + +TargetDirLRSelect::TargetDirLRSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetDirLRSelect::~TargetDirLRSelect() = default; + +void TargetDirLRSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDirLRSelect.h b/src/Game/AI/AI/aiTargetDirLRSelect.h new file mode 100644 index 00000000..3e912d58 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDirLRSelect.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetDirLRSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetDirLRSelect, ksys::act::ai::Ai) +public: + explicit TargetDirLRSelect(const InitArg& arg); + ~TargetDirLRSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDistanceSelect.cpp b/src/Game/AI/AI/aiTargetDistanceSelect.cpp new file mode 100644 index 00000000..e0b334d2 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDistanceSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiTargetDistanceSelect.h" + +namespace uking::ai { + +TargetDistanceSelect::TargetDistanceSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetDistanceSelect::~TargetDistanceSelect() = default; + +bool TargetDistanceSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetDistanceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetDistanceSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetDistanceSelect::loadParams_() { + getStaticParam(&mBoundaryDistance_s, "BoundaryDistance"); + getStaticParam(&mOverlapDistance_s, "OverlapDistance"); + getStaticParam(&mIsUpdateTarget_s, "IsUpdateTarget"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDistanceSelect.h b/src/Game/AI/AI/aiTargetDistanceSelect.h new file mode 100644 index 00000000..998544e0 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDistanceSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetDistanceSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetDistanceSelect, ksys::act::ai::Ai) +public: + explicit TargetDistanceSelect(const InitArg& arg); + ~TargetDistanceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mBoundaryDistance_s{}; + // static_param at offset 0x40 + const float* mOverlapDistance_s{}; + // static_param at offset 0x48 + const bool* mIsUpdateTarget_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDynamicActorPos.cpp b/src/Game/AI/AI/aiTargetDynamicActorPos.cpp new file mode 100644 index 00000000..d2683211 --- /dev/null +++ b/src/Game/AI/AI/aiTargetDynamicActorPos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetDynamicActorPos.h" + +namespace uking::ai { + +TargetDynamicActorPos::TargetDynamicActorPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetDynamicActorPos::~TargetDynamicActorPos() = default; + +bool TargetDynamicActorPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetDynamicActorPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetDynamicActorPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetDynamicActorPos::loadParams_() { + TargetPosAI::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetDynamicActorPos.h b/src/Game/AI/AI/aiTargetDynamicActorPos.h new file mode 100644 index 00000000..ab77c08b --- /dev/null +++ b/src/Game/AI/AI/aiTargetDynamicActorPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetDynamicActorPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetDynamicActorPos, TargetPosAI) +public: + explicit TargetDynamicActorPos(const InitArg& arg); + ~TargetDynamicActorPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetElevationGapSelect.cpp b/src/Game/AI/AI/aiTargetElevationGapSelect.cpp new file mode 100644 index 00000000..2e516fe5 --- /dev/null +++ b/src/Game/AI/AI/aiTargetElevationGapSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetElevationGapSelect.h" + +namespace uking::ai { + +TargetElevationGapSelect::TargetElevationGapSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetElevationGapSelect::~TargetElevationGapSelect() = default; + +bool TargetElevationGapSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetElevationGapSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetElevationGapSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetElevationGapSelect::loadParams_() { + getStaticParam(&mElvGap_s, "ElvGap"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetElevationGapSelect.h b/src/Game/AI/AI/aiTargetElevationGapSelect.h new file mode 100644 index 00000000..8b8a1550 --- /dev/null +++ b/src/Game/AI/AI/aiTargetElevationGapSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetElevationGapSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetElevationGapSelect, ksys::act::ai::Ai) +public: + explicit TargetElevationGapSelect(const InitArg& arg); + ~TargetElevationGapSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mElvGap_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetExistSelect.cpp b/src/Game/AI/AI/aiTargetExistSelect.cpp new file mode 100644 index 00000000..ee3aa93c --- /dev/null +++ b/src/Game/AI/AI/aiTargetExistSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetExistSelect.h" + +namespace uking::ai { + +TargetExistSelect::TargetExistSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetExistSelect::~TargetExistSelect() = default; + +bool TargetExistSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetExistSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetExistSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetExistSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetExistSelect.h b/src/Game/AI/AI/aiTargetExistSelect.h new file mode 100644 index 00000000..bd025b47 --- /dev/null +++ b/src/Game/AI/AI/aiTargetExistSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetExistSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetExistSelect, ksys::act::ai::Ai) +public: + explicit TargetExistSelect(const InitArg& arg); + ~TargetExistSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomeDir.cpp b/src/Game/AI/AI/aiTargetHomeDir.cpp new file mode 100644 index 00000000..209d8ca0 --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomeDir.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetHomeDir.h" + +namespace uking::ai { + +TargetHomeDir::TargetHomeDir(const InitArg& arg) : TargetPosAI(arg) {} + +TargetHomeDir::~TargetHomeDir() = default; + +bool TargetHomeDir::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetHomeDir::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetHomeDir::leave_() { + TargetPosAI::leave_(); +} + +void TargetHomeDir::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomeDir.h b/src/Game/AI/AI/aiTargetHomeDir.h new file mode 100644 index 00000000..3eb2c477 --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomeDir.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetHomeDir : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetHomeDir, TargetPosAI) +public: + explicit TargetHomeDir(const InitArg& arg); + ~TargetHomeDir() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomePos.cpp b/src/Game/AI/AI/aiTargetHomePos.cpp new file mode 100644 index 00000000..c541481c --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomePos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetHomePos.h" + +namespace uking::ai { + +TargetHomePos::TargetHomePos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetHomePos::~TargetHomePos() = default; + +bool TargetHomePos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetHomePos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetHomePos::leave_() { + TargetPosAI::leave_(); +} + +void TargetHomePos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomePos.h b/src/Game/AI/AI/aiTargetHomePos.h new file mode 100644 index 00000000..8a27a702 --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomePos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetHomePos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetHomePos, TargetPosAI) +public: + explicit TargetHomePos(const InitArg& arg); + ~TargetHomePos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomeRangeSelect.cpp b/src/Game/AI/AI/aiTargetHomeRangeSelect.cpp new file mode 100644 index 00000000..de7c0862 --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomeRangeSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetHomeRangeSelect.h" + +namespace uking::ai { + +TargetHomeRangeSelect::TargetHomeRangeSelect(const InitArg& arg) : RangeSelect(arg) {} + +TargetHomeRangeSelect::~TargetHomeRangeSelect() = default; + +bool TargetHomeRangeSelect::init_(sead::Heap* heap) { + return RangeSelect::init_(heap); +} + +void TargetHomeRangeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + RangeSelect::enter_(params); +} + +void TargetHomeRangeSelect::leave_() { + RangeSelect::leave_(); +} + +void TargetHomeRangeSelect::loadParams_() { + RangeSelect::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetHomeRangeSelect.h b/src/Game/AI/AI/aiTargetHomeRangeSelect.h new file mode 100644 index 00000000..e161da49 --- /dev/null +++ b/src/Game/AI/AI/aiTargetHomeRangeSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetHomeRangeSelect : public RangeSelect { + SEAD_RTTI_OVERRIDE(TargetHomeRangeSelect, RangeSelect) +public: + explicit TargetHomeRangeSelect(const InitArg& arg); + ~TargetHomeRangeSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetInAreaSelect.cpp b/src/Game/AI/AI/aiTargetInAreaSelect.cpp new file mode 100644 index 00000000..e3cc911e --- /dev/null +++ b/src/Game/AI/AI/aiTargetInAreaSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetInAreaSelect.h" + +namespace uking::ai { + +TargetInAreaSelect::TargetInAreaSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetInAreaSelect::~TargetInAreaSelect() = default; + +bool TargetInAreaSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetInAreaSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetInAreaSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetInAreaSelect::loadParams_() { + getStaticParam(&mOption_s, "Option"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetInAreaSelect.h b/src/Game/AI/AI/aiTargetInAreaSelect.h new file mode 100644 index 00000000..c61188f9 --- /dev/null +++ b/src/Game/AI/AI/aiTargetInAreaSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetInAreaSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetInAreaSelect, ksys::act::ai::Ai) +public: + explicit TargetInAreaSelect(const InitArg& arg); + ~TargetInAreaSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mOption_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetInFanAreaSelect.cpp b/src/Game/AI/AI/aiTargetInFanAreaSelect.cpp new file mode 100644 index 00000000..35de5faa --- /dev/null +++ b/src/Game/AI/AI/aiTargetInFanAreaSelect.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiTargetInFanAreaSelect.h" + +namespace uking::ai { + +TargetInFanAreaSelect::TargetInFanAreaSelect(const InitArg& arg) : TargetInAreaSelect(arg) {} + +TargetInFanAreaSelect::~TargetInFanAreaSelect() = default; + +bool TargetInFanAreaSelect::init_(sead::Heap* heap) { + return TargetInAreaSelect::init_(heap); +} + +void TargetInFanAreaSelect::enter_(ksys::act::ai::InlineParamPack* params) { + TargetInAreaSelect::enter_(params); +} + +void TargetInFanAreaSelect::leave_() { + TargetInAreaSelect::leave_(); +} + +void TargetInFanAreaSelect::loadParams_() { + TargetInAreaSelect::loadParams_(); + getStaticParam(&mNearYMax_s, "NearYMax"); + getStaticParam(&mNearYMin_s, "NearYMin"); + getStaticParam(&mFarYMax_s, "FarYMax"); + getStaticParam(&mFarYMin_s, "FarYMin"); + getStaticParam(&mXZRange_s, "XZRange"); + getStaticParam(&mAngle_s, "Angle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetInFanAreaSelect.h b/src/Game/AI/AI/aiTargetInFanAreaSelect.h new file mode 100644 index 00000000..5dba9aa9 --- /dev/null +++ b/src/Game/AI/AI/aiTargetInFanAreaSelect.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Game/AI/AI/aiTargetInAreaSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetInFanAreaSelect : public TargetInAreaSelect { + SEAD_RTTI_OVERRIDE(TargetInFanAreaSelect, TargetInAreaSelect) +public: + explicit TargetInFanAreaSelect(const InitArg& arg); + ~TargetInFanAreaSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mNearYMax_s{}; + // static_param at offset 0x48 + const float* mNearYMin_s{}; + // static_param at offset 0x50 + const float* mFarYMax_s{}; + // static_param at offset 0x58 + const float* mFarYMin_s{}; + // static_param at offset 0x60 + const float* mXZRange_s{}; + // static_param at offset 0x68 + const float* mAngle_s{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetIsEquipItemSelector.cpp b/src/Game/AI/AI/aiTargetIsEquipItemSelector.cpp new file mode 100644 index 00000000..f6ccf5e1 --- /dev/null +++ b/src/Game/AI/AI/aiTargetIsEquipItemSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetIsEquipItemSelector.h" + +namespace uking::ai { + +TargetIsEquipItemSelector::TargetIsEquipItemSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetIsEquipItemSelector::~TargetIsEquipItemSelector() = default; + +bool TargetIsEquipItemSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetIsEquipItemSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetIsEquipItemSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetIsEquipItemSelector::loadParams_() { + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetIsEquipItemSelector.h b/src/Game/AI/AI/aiTargetIsEquipItemSelector.h new file mode 100644 index 00000000..eb99d8f9 --- /dev/null +++ b/src/Game/AI/AI/aiTargetIsEquipItemSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetIsEquipItemSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetIsEquipItemSelector, ksys::act::ai::Ai) +public: + explicit TargetIsEquipItemSelector(const InitArg& arg); + ~TargetIsEquipItemSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetKnockBackBasePos.cpp b/src/Game/AI/AI/aiTargetKnockBackBasePos.cpp new file mode 100644 index 00000000..d885a03a --- /dev/null +++ b/src/Game/AI/AI/aiTargetKnockBackBasePos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetKnockBackBasePos.h" + +namespace uking::ai { + +TargetKnockBackBasePos::TargetKnockBackBasePos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetKnockBackBasePos::~TargetKnockBackBasePos() = default; + +bool TargetKnockBackBasePos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetKnockBackBasePos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetKnockBackBasePos::leave_() { + TargetPosAI::leave_(); +} + +void TargetKnockBackBasePos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetKnockBackBasePos.h b/src/Game/AI/AI/aiTargetKnockBackBasePos.h new file mode 100644 index 00000000..56ceda49 --- /dev/null +++ b/src/Game/AI/AI/aiTargetKnockBackBasePos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetKnockBackBasePos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetKnockBackBasePos, TargetPosAI) +public: + explicit TargetKnockBackBasePos(const InitArg& arg); + ~TargetKnockBackBasePos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttackedPos.cpp b/src/Game/AI/AI/aiTargetLastAttackedPos.cpp new file mode 100644 index 00000000..188808de --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttackedPos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetLastAttackedPos.h" + +namespace uking::ai { + +TargetLastAttackedPos::TargetLastAttackedPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetLastAttackedPos::~TargetLastAttackedPos() = default; + +bool TargetLastAttackedPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetLastAttackedPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetLastAttackedPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetLastAttackedPos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttackedPos.h b/src/Game/AI/AI/aiTargetLastAttackedPos.h new file mode 100644 index 00000000..be8645cd --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttackedPos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetLastAttackedPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetLastAttackedPos, TargetPosAI) +public: + explicit TargetLastAttackedPos(const InitArg& arg); + ~TargetLastAttackedPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttacker.cpp b/src/Game/AI/AI/aiTargetLastAttacker.cpp new file mode 100644 index 00000000..4fac1d3a --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttacker.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetLastAttacker.h" + +namespace uking::ai { + +TargetLastAttacker::TargetLastAttacker(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetLastAttacker::~TargetLastAttacker() = default; + +bool TargetLastAttacker::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetLastAttacker::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetLastAttacker::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetLastAttacker::loadParams_() { + getStaticParam(&mOnEnterOnly_s, "OnEnterOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttacker.h b/src/Game/AI/AI/aiTargetLastAttacker.h new file mode 100644 index 00000000..9315faaa --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttacker.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetLastAttacker : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetLastAttacker, ksys::act::ai::Ai) +public: + explicit TargetLastAttacker(const InitArg& arg); + ~TargetLastAttacker() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mOnEnterOnly_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttackerPos.cpp b/src/Game/AI/AI/aiTargetLastAttackerPos.cpp new file mode 100644 index 00000000..98d1a163 --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttackerPos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetLastAttackerPos.h" + +namespace uking::ai { + +TargetLastAttackerPos::TargetLastAttackerPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetLastAttackerPos::~TargetLastAttackerPos() = default; + +bool TargetLastAttackerPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetLastAttackerPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetLastAttackerPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetLastAttackerPos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastAttackerPos.h b/src/Game/AI/AI/aiTargetLastAttackerPos.h new file mode 100644 index 00000000..1552e70c --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastAttackerPos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetLastAttackerPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetLastAttackerPos, TargetPosAI) +public: + explicit TargetLastAttackerPos(const InitArg& arg); + ~TargetLastAttackerPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastDamagedPos.cpp b/src/Game/AI/AI/aiTargetLastDamagedPos.cpp new file mode 100644 index 00000000..c58d01b1 --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastDamagedPos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetLastDamagedPos.h" + +namespace uking::ai { + +TargetLastDamagedPos::TargetLastDamagedPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetLastDamagedPos::~TargetLastDamagedPos() = default; + +bool TargetLastDamagedPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetLastDamagedPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetLastDamagedPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetLastDamagedPos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLastDamagedPos.h b/src/Game/AI/AI/aiTargetLastDamagedPos.h new file mode 100644 index 00000000..e39bab9e --- /dev/null +++ b/src/Game/AI/AI/aiTargetLastDamagedPos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetLastDamagedPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetLastDamagedPos, TargetPosAI) +public: + explicit TargetLastDamagedPos(const InitArg& arg); + ~TargetLastDamagedPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLostCheck.cpp b/src/Game/AI/AI/aiTargetLostCheck.cpp new file mode 100644 index 00000000..32930427 --- /dev/null +++ b/src/Game/AI/AI/aiTargetLostCheck.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetLostCheck.h" + +namespace uking::ai { + +TargetLostCheck::TargetLostCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetLostCheck::~TargetLostCheck() = default; + +bool TargetLostCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetLostCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetLostCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetLostCheck::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mIsLostByScaffold_s, "IsLostByScaffold"); + getStaticParam(&mIsLostByTeached_s, "IsLostByTeached"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetLostCheck.h b/src/Game/AI/AI/aiTargetLostCheck.h new file mode 100644 index 00000000..326d2feb --- /dev/null +++ b/src/Game/AI/AI/aiTargetLostCheck.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetLostCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetLostCheck, ksys::act::ai::Ai) +public: + explicit TargetLostCheck(const InitArg& arg); + ~TargetLostCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const bool* mIsLostByScaffold_s{}; + // static_param at offset 0x48 + const bool* mIsLostByTeached_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetMyUp.cpp b/src/Game/AI/AI/aiTargetMyUp.cpp new file mode 100644 index 00000000..edc2e0de --- /dev/null +++ b/src/Game/AI/AI/aiTargetMyUp.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetMyUp.h" + +namespace uking::ai { + +TargetMyUp::TargetMyUp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetMyUp::~TargetMyUp() = default; + +bool TargetMyUp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetMyUp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetMyUp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetMyUp::loadParams_() { + getStaticParam(&mEndHeight_s, "EndHeight"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetMyUp.h b/src/Game/AI/AI/aiTargetMyUp.h new file mode 100644 index 00000000..7d329d4f --- /dev/null +++ b/src/Game/AI/AI/aiTargetMyUp.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetMyUp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetMyUp, ksys::act::ai::Ai) +public: + explicit TargetMyUp(const InitArg& arg); + ~TargetMyUp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mEndHeight_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetNPCTypeSelector.cpp b/src/Game/AI/AI/aiTargetNPCTypeSelector.cpp new file mode 100644 index 00000000..89fc9ea7 --- /dev/null +++ b/src/Game/AI/AI/aiTargetNPCTypeSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetNPCTypeSelector.h" + +namespace uking::ai { + +TargetNPCTypeSelector::TargetNPCTypeSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetNPCTypeSelector::~TargetNPCTypeSelector() = default; + +bool TargetNPCTypeSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetNPCTypeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetNPCTypeSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetNPCTypeSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetNPCTypeSelector.h b/src/Game/AI/AI/aiTargetNPCTypeSelector.h new file mode 100644 index 00000000..2307b4af --- /dev/null +++ b/src/Game/AI/AI/aiTargetNPCTypeSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetNPCTypeSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetNPCTypeSelector, ksys::act::ai::Ai) +public: + explicit TargetNPCTypeSelector(const InitArg& arg); + ~TargetNPCTypeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.cpp b/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.cpp new file mode 100644 index 00000000..4c38396e --- /dev/null +++ b/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetOnMovableNavmeshSelect.h" + +namespace uking::ai { + +TargetOnMovableNavmeshSelect::TargetOnMovableNavmeshSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +TargetOnMovableNavmeshSelect::~TargetOnMovableNavmeshSelect() = default; + +bool TargetOnMovableNavmeshSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetOnMovableNavmeshSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetOnMovableNavmeshSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetOnMovableNavmeshSelect::loadParams_() { + getStaticParam(&mCheckDist_s, "CheckDist"); + getStaticParam(&mOnStopCheckDist_s, "OnStopCheckDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.h b/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.h new file mode 100644 index 00000000..453c4ced --- /dev/null +++ b/src/Game/AI/AI/aiTargetOnMovableNavmeshSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetOnMovableNavmeshSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetOnMovableNavmeshSelect, ksys::act::ai::Ai) +public: + explicit TargetOnMovableNavmeshSelect(const InitArg& arg); + ~TargetOnMovableNavmeshSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mCheckDist_s{}; + // static_param at offset 0x40 + const float* mOnStopCheckDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPartsPos.cpp b/src/Game/AI/AI/aiTargetPartsPos.cpp new file mode 100644 index 00000000..bb9657d4 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPartsPos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPartsPos.h" + +namespace uking::ai { + +TargetPartsPos::TargetPartsPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPartsPos::~TargetPartsPos() = default; + +bool TargetPartsPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPartsPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPartsPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetPartsPos::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mPartsName_s, "PartsName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPartsPos.h b/src/Game/AI/AI/aiTargetPartsPos.h new file mode 100644 index 00000000..d836106f --- /dev/null +++ b/src/Game/AI/AI/aiTargetPartsPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPartsPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPartsPos, TargetPosAI) +public: + explicit TargetPartsPos(const InitArg& arg); + ~TargetPartsPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + sead::SafeString mPartsName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPickedItem.cpp b/src/Game/AI/AI/aiTargetPickedItem.cpp new file mode 100644 index 00000000..dcbfdc4f --- /dev/null +++ b/src/Game/AI/AI/aiTargetPickedItem.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPickedItem.h" + +namespace uking::ai { + +TargetPickedItem::TargetPickedItem(const InitArg& arg) : CommonPickedItem(arg) {} + +TargetPickedItem::~TargetPickedItem() = default; + +bool TargetPickedItem::init_(sead::Heap* heap) { + return CommonPickedItem::init_(heap); +} + +void TargetPickedItem::enter_(ksys::act::ai::InlineParamPack* params) { + CommonPickedItem::enter_(params); +} + +void TargetPickedItem::leave_() { + CommonPickedItem::leave_(); +} + +void TargetPickedItem::loadParams_() { + CommonPickedItem::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPickedItem.h b/src/Game/AI/AI/aiTargetPickedItem.h new file mode 100644 index 00000000..6e365807 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPickedItem.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCommonPickedItem.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPickedItem : public CommonPickedItem { + SEAD_RTTI_OVERRIDE(TargetPickedItem, CommonPickedItem) +public: + explicit TargetPickedItem(const InitArg& arg); + ~TargetPickedItem() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0xe8 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPlayerPos.cpp b/src/Game/AI/AI/aiTargetPlayerPos.cpp new file mode 100644 index 00000000..f114c03e --- /dev/null +++ b/src/Game/AI/AI/aiTargetPlayerPos.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetPlayerPos.h" + +namespace uking::ai { + +TargetPlayerPos::TargetPlayerPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPlayerPos::~TargetPlayerPos() = default; + +bool TargetPlayerPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPlayerPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPlayerPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetPlayerPos::loadParams_() { + TargetPosAI::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPlayerPos.h b/src/Game/AI/AI/aiTargetPlayerPos.h new file mode 100644 index 00000000..67ee486e --- /dev/null +++ b/src/Game/AI/AI/aiTargetPlayerPos.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPlayerPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPlayerPos, TargetPosAI) +public: + explicit TargetPlayerPos(const InitArg& arg); + ~TargetPlayerPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAI.cpp b/src/Game/AI/AI/aiTargetPosAI.cpp new file mode 100644 index 00000000..73bff886 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAI.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetPosAI.h" + +namespace uking::ai { + +TargetPosAI::TargetPosAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetPosAI::~TargetPosAI() = default; + +bool TargetPosAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetPosAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetPosAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetPosAI::loadParams_() { + getStaticParam(&mOnEnterOnly_s, "OnEnterOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAI.h b/src/Game/AI/AI/aiTargetPosAI.h new file mode 100644 index 00000000..9d7045b9 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAI.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetPosAI, ksys::act::ai::Ai) +public: + explicit TargetPosAI(const InitArg& arg); + ~TargetPosAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mOnEnterOnly_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.cpp b/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.cpp new file mode 100644 index 00000000..4d0b7153 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetPosAnchorOffsetSelf.h" + +namespace uking::ai { + +TargetPosAnchorOffsetSelf::TargetPosAnchorOffsetSelf(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPosAnchorOffsetSelf::~TargetPosAnchorOffsetSelf() = default; + +bool TargetPosAnchorOffsetSelf::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPosAnchorOffsetSelf::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPosAnchorOffsetSelf::leave_() { + TargetPosAI::leave_(); +} + +void TargetPosAnchorOffsetSelf::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mDist_s, "Dist"); + getStaticParam(&mAnchorName_s, "AnchorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.h b/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.h new file mode 100644 index 00000000..2f3b61c8 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAnchorOffsetSelf.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosAnchorOffsetSelf : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPosAnchorOffsetSelf, TargetPosAI) +public: + explicit TargetPosAnchorOffsetSelf(const InitArg& arg); + ~TargetPosAnchorOffsetSelf() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mDist_s{}; + // static_param at offset 0x48 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.cpp b/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.cpp new file mode 100644 index 00000000..bc90b32a --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetPosAnchorOffsetTarget.h" + +namespace uking::ai { + +TargetPosAnchorOffsetTarget::TargetPosAnchorOffsetTarget(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPosAnchorOffsetTarget::~TargetPosAnchorOffsetTarget() = default; + +bool TargetPosAnchorOffsetTarget::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPosAnchorOffsetTarget::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPosAnchorOffsetTarget::leave_() { + TargetPosAI::leave_(); +} + +void TargetPosAnchorOffsetTarget::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mDist_s, "Dist"); + getStaticParam(&mAnchorName_s, "AnchorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.h b/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.h new file mode 100644 index 00000000..b75a171d --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosAnchorOffsetTarget.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosAnchorOffsetTarget : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPosAnchorOffsetTarget, TargetPosAI) +public: + explicit TargetPosAnchorOffsetTarget(const InitArg& arg); + ~TargetPosAnchorOffsetTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mDist_s{}; + // static_param at offset 0x48 + sead::SafeString mAnchorName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDirLRSelect.cpp b/src/Game/AI/AI/aiTargetPosDirLRSelect.cpp new file mode 100644 index 00000000..8feec0cb --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDirLRSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPosDirLRSelect.h" + +namespace uking::ai { + +TargetPosDirLRSelect::TargetPosDirLRSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetPosDirLRSelect::~TargetPosDirLRSelect() = default; + +bool TargetPosDirLRSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetPosDirLRSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetPosDirLRSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetPosDirLRSelect::loadParams_() { + getStaticParam(&mIsCheckEveryFrame_s, "IsCheckEveryFrame"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDirLRSelect.h b/src/Game/AI/AI/aiTargetPosDirLRSelect.h new file mode 100644 index 00000000..429c8318 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDirLRSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosDirLRSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetPosDirLRSelect, ksys::act::ai::Ai) +public: + explicit TargetPosDirLRSelect(const InitArg& arg); + ~TargetPosDirLRSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsCheckEveryFrame_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDynParamRot.cpp b/src/Game/AI/AI/aiTargetPosDynParamRot.cpp new file mode 100644 index 00000000..ad496413 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDynParamRot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiTargetPosDynParamRot.h" + +namespace uking::ai { + +TargetPosDynParamRot::TargetPosDynParamRot(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPosDynParamRot::~TargetPosDynParamRot() = default; + +bool TargetPosDynParamRot::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPosDynParamRot::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPosDynParamRot::leave_() { + TargetPosAI::leave_(); +} + +void TargetPosDynParamRot::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mMinDist_s, "MinDist"); + getDynamicParam(&mAngle_d, "Angle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDynParamRot.h b/src/Game/AI/AI/aiTargetPosDynParamRot.h new file mode 100644 index 00000000..c6046254 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDynParamRot.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosDynParamRot : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPosDynParamRot, TargetPosAI) +public: + explicit TargetPosDynParamRot(const InitArg& arg); + ~TargetPosDynParamRot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mMinDist_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mAngle_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.cpp b/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.cpp new file mode 100644 index 00000000..9862a23a --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h" + +namespace uking::ai { + +TargetPosDynParamRotFromCtrPos::TargetPosDynParamRotFromCtrPos(const InitArg& arg) + : TargetPosDynParamRot(arg) {} + +TargetPosDynParamRotFromCtrPos::~TargetPosDynParamRotFromCtrPos() = default; + +bool TargetPosDynParamRotFromCtrPos::init_(sead::Heap* heap) { + return TargetPosDynParamRot::init_(heap); +} + +void TargetPosDynParamRotFromCtrPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosDynParamRot::enter_(params); +} + +void TargetPosDynParamRotFromCtrPos::leave_() { + TargetPosDynParamRot::leave_(); +} + +void TargetPosDynParamRotFromCtrPos::loadParams_() { + TargetPosDynParamRot::loadParams_(); + getDynamicParam(&mCenterPos_d, "CenterPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h b/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h new file mode 100644 index 00000000..93b2565a --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosDynParamRot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosDynParamRotFromCtrPos : public TargetPosDynParamRot { + SEAD_RTTI_OVERRIDE(TargetPosDynParamRotFromCtrPos, TargetPosDynParamRot) +public: + explicit TargetPosDynParamRotFromCtrPos(const InitArg& arg); + ~TargetPosDynParamRotFromCtrPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x58 + sead::Vector3f* mCenterPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosLostCheck.cpp b/src/Game/AI/AI/aiTargetPosLostCheck.cpp new file mode 100644 index 00000000..19ab7ea2 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosLostCheck.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiTargetPosLostCheck.h" + +namespace uking::ai { + +TargetPosLostCheck::TargetPosLostCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetPosLostCheck::~TargetPosLostCheck() = default; + +bool TargetPosLostCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetPosLostCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetPosLostCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetPosLostCheck::loadParams_() { + getStaticParam(&mLostTimer_s, "LostTimer"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mLostRange_s, "LostRange"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosLostCheck.h b/src/Game/AI/AI/aiTargetPosLostCheck.h new file mode 100644 index 00000000..98a1d650 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosLostCheck.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosLostCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetPosLostCheck, ksys::act::ai::Ai) +public: + explicit TargetPosLostCheck(const InitArg& arg); + ~TargetPosLostCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mLostTimer_s{}; + // static_param at offset 0x40 + const float* mLostVMin_s{}; + // static_param at offset 0x48 + const float* mLostVMax_s{}; + // static_param at offset 0x50 + const float* mLostRange_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOffset.cpp b/src/Game/AI/AI/aiTargetPosOffset.cpp new file mode 100644 index 00000000..8647bc87 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOffset.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiTargetPosOffset.h" + +namespace uking::ai { + +TargetPosOffset::TargetPosOffset(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPosOffset::~TargetPosOffset() = default; + +bool TargetPosOffset::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPosOffset::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPosOffset::leave_() { + TargetPosAI::leave_(); +} + +void TargetPosOffset::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mDir_s, "Dir"); + getStaticParam(&mOffset_s, "Offset"); + getStaticParam(&mMinDist_s, "MinDist"); + getStaticParam(&mSideDist_s, "SideDist"); + getStaticParam(&mIsRandSide_s, "IsRandSide"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOffset.h b/src/Game/AI/AI/aiTargetPosOffset.h new file mode 100644 index 00000000..b71a0e95 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOffset.h @@ -0,0 +1,32 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosOffset : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPosOffset, TargetPosAI) +public: + explicit TargetPosOffset(const InitArg& arg); + ~TargetPosOffset() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const int* mDir_s{}; + // static_param at offset 0x48 + const float* mOffset_s{}; + // static_param at offset 0x50 + const float* mMinDist_s{}; + // static_param at offset 0x58 + const float* mSideDist_s{}; + // static_param at offset 0x60 + const bool* mIsRandSide_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.cpp b/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.cpp new file mode 100644 index 00000000..83cfa386 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPosOffsetFromMyPos.h" + +namespace uking::ai { + +TargetPosOffsetFromMyPos::TargetPosOffsetFromMyPos(const InitArg& arg) : TargetPosOffset(arg) {} + +TargetPosOffsetFromMyPos::~TargetPosOffsetFromMyPos() = default; + +bool TargetPosOffsetFromMyPos::init_(sead::Heap* heap) { + return TargetPosOffset::init_(heap); +} + +void TargetPosOffsetFromMyPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosOffset::enter_(params); +} + +void TargetPosOffsetFromMyPos::leave_() { + TargetPosOffset::leave_(); +} + +void TargetPosOffsetFromMyPos::loadParams_() { + TargetPosOffset::loadParams_(); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.h b/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.h new file mode 100644 index 00000000..6361d23b --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOffsetFromMyPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosOffset.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosOffsetFromMyPos : public TargetPosOffset { + SEAD_RTTI_OVERRIDE(TargetPosOffsetFromMyPos, TargetPosOffset) +public: + explicit TargetPosOffsetFromMyPos(const InitArg& arg); + ~TargetPosOffsetFromMyPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.cpp b/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.cpp new file mode 100644 index 00000000..f5354377 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPosOnNavFaceSelect.h" + +namespace uking::ai { + +TargetPosOnNavFaceSelect::TargetPosOnNavFaceSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetPosOnNavFaceSelect::~TargetPosOnNavFaceSelect() = default; + +bool TargetPosOnNavFaceSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetPosOnNavFaceSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetPosOnNavFaceSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetPosOnNavFaceSelect::loadParams_() { + getStaticParam(&mSearchRadius_s, "SearchRadius"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.h b/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.h new file mode 100644 index 00000000..47a17c3f --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosOnNavFaceSelect.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosOnNavFaceSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetPosOnNavFaceSelect, ksys::act::ai::Ai) +public: + explicit TargetPosOnNavFaceSelect(const InitArg& arg); + ~TargetPosOnNavFaceSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mSearchRadius_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosRotFromMyPos.cpp b/src/Game/AI/AI/aiTargetPosRotFromMyPos.cpp new file mode 100644 index 00000000..ebeffa27 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosRotFromMyPos.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiTargetPosRotFromMyPos.h" + +namespace uking::ai { + +TargetPosRotFromMyPos::TargetPosRotFromMyPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPosRotFromMyPos::~TargetPosRotFromMyPos() = default; + +bool TargetPosRotFromMyPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPosRotFromMyPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPosRotFromMyPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetPosRotFromMyPos::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mIsRandSign_s, "IsRandSign"); + getStaticParam(&mAngle_s, "Angle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mMinDist_s, "MinDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosRotFromMyPos.h b/src/Game/AI/AI/aiTargetPosRotFromMyPos.h new file mode 100644 index 00000000..6e3b9471 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosRotFromMyPos.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosRotFromMyPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPosRotFromMyPos, TargetPosAI) +public: + explicit TargetPosRotFromMyPos(const InitArg& arg); + ~TargetPosRotFromMyPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mMinDist_s{}; + // static_param at offset 0x48 + const bool* mIsRandSign_s{}; + // static_param at offset 0x50 + const sead::Vector3f* mAngle_s{}; + // dynamic_param at offset 0x58 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosTracking.cpp b/src/Game/AI/AI/aiTargetPosTracking.cpp new file mode 100644 index 00000000..8ddb24b3 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosTracking.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTargetPosTracking.h" + +namespace uking::ai { + +TargetPosTracking::TargetPosTracking(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetPosTracking::~TargetPosTracking() = default; + +bool TargetPosTracking::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetPosTracking::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetPosTracking::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetPosTracking::loadParams_() { + getStaticParam(&mTrackSpeed_s, "TrackSpeed"); + getStaticParam(&mIsStoppedByJustAvoid_s, "IsStoppedByJustAvoid"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPosTracking.h b/src/Game/AI/AI/aiTargetPosTracking.h new file mode 100644 index 00000000..6cf87b0b --- /dev/null +++ b/src/Game/AI/AI/aiTargetPosTracking.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPosTracking : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetPosTracking, ksys::act::ai::Ai) +public: + explicit TargetPosTracking(const InitArg& arg); + ~TargetPosTracking() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTrackSpeed_s{}; + // static_param at offset 0x40 + const bool* mIsStoppedByJustAvoid_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.cpp b/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.cpp new file mode 100644 index 00000000..d13f00d6 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetPredictRotSpdTargetPos.h" + +namespace uking::ai { + +TargetPredictRotSpdTargetPos::TargetPredictRotSpdTargetPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetPredictRotSpdTargetPos::~TargetPredictRotSpdTargetPos() = default; + +bool TargetPredictRotSpdTargetPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetPredictRotSpdTargetPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetPredictRotSpdTargetPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetPredictRotSpdTargetPos::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mAddSpeed_s, "AddSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.h b/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.h new file mode 100644 index 00000000..15f7efa0 --- /dev/null +++ b/src/Game/AI/AI/aiTargetPredictRotSpdTargetPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetPredictRotSpdTargetPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetPredictRotSpdTargetPos, TargetPosAI) +public: + explicit TargetPredictRotSpdTargetPos(const InitArg& arg); + ~TargetPredictRotSpdTargetPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mAddSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetRangeSelect.cpp b/src/Game/AI/AI/aiTargetRangeSelect.cpp new file mode 100644 index 00000000..eb476401 --- /dev/null +++ b/src/Game/AI/AI/aiTargetRangeSelect.cpp @@ -0,0 +1,14 @@ +#include "Game/AI/AI/aiTargetRangeSelect.h" + +namespace uking::ai { + +TargetRangeSelect::TargetRangeSelect(const InitArg& arg) : RangeSelect(arg) {} + +TargetRangeSelect::~TargetRangeSelect() = default; + +void TargetRangeSelect::loadParams_() { + RangeSelect::loadParams_(); + getStaticParam(&mIsXZOnly_s, "IsXZOnly"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetRangeSelect.h b/src/Game/AI/AI/aiTargetRangeSelect.h new file mode 100644 index 00000000..794de112 --- /dev/null +++ b/src/Game/AI/AI/aiTargetRangeSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Game/AI/AI/aiRangeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetRangeSelect : public RangeSelect { + SEAD_RTTI_OVERRIDE(TargetRangeSelect, RangeSelect) +public: + explicit TargetRangeSelect(const InitArg& arg); + ~TargetRangeSelect() override; + + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const bool* mIsXZOnly_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetRepeat.cpp b/src/Game/AI/AI/aiTargetRepeat.cpp new file mode 100644 index 00000000..7223bb15 --- /dev/null +++ b/src/Game/AI/AI/aiTargetRepeat.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetRepeat.h" + +namespace uking::ai { + +TargetRepeat::TargetRepeat(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetRepeat::~TargetRepeat() = default; + +bool TargetRepeat::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetRepeat::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetRepeat::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetRepeat::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetRepeat.h b/src/Game/AI/AI/aiTargetRepeat.h new file mode 100644 index 00000000..4e2569e3 --- /dev/null +++ b/src/Game/AI/AI/aiTargetRepeat.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetRepeat : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetRepeat, ksys::act::ai::Ai) +public: + explicit TargetRepeat(const InitArg& arg); + ~TargetRepeat() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetStateSelect.cpp b/src/Game/AI/AI/aiTargetStateSelect.cpp new file mode 100644 index 00000000..9bd6836b --- /dev/null +++ b/src/Game/AI/AI/aiTargetStateSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTargetStateSelect.h" + +namespace uking::ai { + +TargetStateSelect::TargetStateSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetStateSelect::~TargetStateSelect() = default; + +bool TargetStateSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetStateSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetStateSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetStateSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetStateSelect.h b/src/Game/AI/AI/aiTargetStateSelect.h new file mode 100644 index 00000000..42ea9474 --- /dev/null +++ b/src/Game/AI/AI/aiTargetStateSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetStateSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetStateSelect, ksys::act::ai::Ai) +public: + explicit TargetStateSelect(const InitArg& arg); + ~TargetStateSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetTargetPos.cpp b/src/Game/AI/AI/aiTargetTargetPos.cpp new file mode 100644 index 00000000..db7410ed --- /dev/null +++ b/src/Game/AI/AI/aiTargetTargetPos.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTargetTargetPos.h" + +namespace uking::ai { + +TargetTargetPos::TargetTargetPos(const InitArg& arg) : TargetPosAI(arg) {} + +TargetTargetPos::~TargetTargetPos() = default; + +bool TargetTargetPos::init_(sead::Heap* heap) { + return TargetPosAI::init_(heap); +} + +void TargetTargetPos::enter_(ksys::act::ai::InlineParamPack* params) { + TargetPosAI::enter_(params); +} + +void TargetTargetPos::leave_() { + TargetPosAI::leave_(); +} + +void TargetTargetPos::loadParams_() { + TargetPosAI::loadParams_(); + getStaticParam(&mAddSpeed_s, "AddSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetTargetPos.h b/src/Game/AI/AI/aiTargetTargetPos.h new file mode 100644 index 00000000..93298fff --- /dev/null +++ b/src/Game/AI/AI/aiTargetTargetPos.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetPosAI.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetTargetPos : public TargetPosAI { + SEAD_RTTI_OVERRIDE(TargetTargetPos, TargetPosAI) +public: + explicit TargetTargetPos(const InitArg& arg); + ~TargetTargetPos() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x40 + const float* mAddSpeed_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetTypeSelector.cpp b/src/Game/AI/AI/aiTargetTypeSelector.cpp new file mode 100644 index 00000000..af0a5096 --- /dev/null +++ b/src/Game/AI/AI/aiTargetTypeSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTargetTypeSelector.h" + +namespace uking::ai { + +TargetTypeSelector::TargetTypeSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TargetTypeSelector::~TargetTypeSelector() = default; + +bool TargetTypeSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TargetTypeSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TargetTypeSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TargetTypeSelector::loadParams_() { + getAITreeVariable(&mIsTrgTargetChangeToPlayer_a, "IsTrgTargetChangeToPlayer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTargetTypeSelector.h b/src/Game/AI/AI/aiTargetTypeSelector.h new file mode 100644 index 00000000..12b80d40 --- /dev/null +++ b/src/Game/AI/AI/aiTargetTypeSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TargetTypeSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TargetTypeSelector, ksys::act::ai::Ai) +public: + explicit TargetTypeSelector(const InitArg& arg); + ~TargetTypeSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsTrgTargetChangeToPlayer_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTemperatureRandSelect.cpp b/src/Game/AI/AI/aiTemperatureRandSelect.cpp new file mode 100644 index 00000000..dbeabaf8 --- /dev/null +++ b/src/Game/AI/AI/aiTemperatureRandSelect.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiTemperatureRandSelect.h" + +namespace uking::ai { + +TemperatureRandSelect::TemperatureRandSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TemperatureRandSelect::~TemperatureRandSelect() = default; + +bool TemperatureRandSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TemperatureRandSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TemperatureRandSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TemperatureRandSelect::loadParams_() { + getStaticParam(&mBaseChangeRatio_s, "BaseChangeRatio"); + getStaticParam(&museBaseRatioTiming_s, "useBaseRatioTiming"); + getStaticParam(&mTemperatureChangeRatio_s, "TemperatureChangeRatio"); + getStaticParam(&mBaseTemperature_s, "BaseTemperature"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTemperatureRandSelect.h b/src/Game/AI/AI/aiTemperatureRandSelect.h new file mode 100644 index 00000000..651317d9 --- /dev/null +++ b/src/Game/AI/AI/aiTemperatureRandSelect.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TemperatureRandSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TemperatureRandSelect, ksys::act::ai::Ai) +public: + explicit TemperatureRandSelect(const InitArg& arg); + ~TemperatureRandSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mBaseChangeRatio_s{}; + // static_param at offset 0x40 + const int* museBaseRatioTiming_s{}; + // static_param at offset 0x48 + const float* mTemperatureChangeRatio_s{}; + // static_param at offset 0x50 + const float* mBaseTemperature_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.cpp b/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.cpp new file mode 100644 index 00000000..138fbfd7 --- /dev/null +++ b/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTerminalEnduranceWarpRoot.h" + +namespace uking::ai { + +TerminalEnduranceWarpRoot::TerminalEnduranceWarpRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TerminalEnduranceWarpRoot::~TerminalEnduranceWarpRoot() = default; + +bool TerminalEnduranceWarpRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TerminalEnduranceWarpRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TerminalEnduranceWarpRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TerminalEnduranceWarpRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.h b/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.h new file mode 100644 index 00000000..2576668a --- /dev/null +++ b/src/Game/AI/AI/aiTerminalEnduranceWarpRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TerminalEnduranceWarpRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TerminalEnduranceWarpRoot, ksys::act::ai::Ai) +public: + explicit TerminalEnduranceWarpRoot(const InitArg& arg); + ~TerminalEnduranceWarpRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimeControlTagRoot.cpp b/src/Game/AI/AI/aiTimeControlTagRoot.cpp new file mode 100644 index 00000000..c683a090 --- /dev/null +++ b/src/Game/AI/AI/aiTimeControlTagRoot.cpp @@ -0,0 +1,37 @@ +#include "Game/AI/AI/aiTimeControlTagRoot.h" + +namespace uking::ai { + +TimeControlTagRoot::TimeControlTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TimeControlTagRoot::~TimeControlTagRoot() = default; + +bool TimeControlTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TimeControlTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TimeControlTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TimeControlTagRoot::loadParams_() { + getMapUnitParam(&mStartTime_m, "StartTime"); + getMapUnitParam(&mEndTime_m, "EndTime"); + getMapUnitParam(&mStartTimeMinute_m, "StartTimeMinute"); + getMapUnitParam(&mEndTimeMinute_m, "EndTimeMinute"); + getMapUnitParam(&mIsDirectTime_m, "IsDirectTime"); + getMapUnitParam(&mIsMorningA_m, "IsMorningA"); + getMapUnitParam(&mIsMorningB_m, "IsMorningB"); + getMapUnitParam(&mIsNoonA_m, "IsNoonA"); + getMapUnitParam(&mIsNoonB_m, "IsNoonB"); + getMapUnitParam(&mIsEveningA_m, "IsEveningA"); + getMapUnitParam(&mIsEveningB_m, "IsEveningB"); + getMapUnitParam(&mIsNightA_m, "IsNightA"); + getMapUnitParam(&mIsNightB_m, "IsNightB"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimeControlTagRoot.h b/src/Game/AI/AI/aiTimeControlTagRoot.h new file mode 100644 index 00000000..9536e2d9 --- /dev/null +++ b/src/Game/AI/AI/aiTimeControlTagRoot.h @@ -0,0 +1,47 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TimeControlTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TimeControlTagRoot, ksys::act::ai::Ai) +public: + explicit TimeControlTagRoot(const InitArg& arg); + ~TimeControlTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mStartTime_m{}; + // map_unit_param at offset 0x40 + const int* mEndTime_m{}; + // map_unit_param at offset 0x48 + const int* mStartTimeMinute_m{}; + // map_unit_param at offset 0x50 + const int* mEndTimeMinute_m{}; + // map_unit_param at offset 0x58 + const bool* mIsDirectTime_m{}; + // map_unit_param at offset 0x60 + const bool* mIsMorningA_m{}; + // map_unit_param at offset 0x68 + const bool* mIsMorningB_m{}; + // map_unit_param at offset 0x70 + const bool* mIsNoonA_m{}; + // map_unit_param at offset 0x78 + const bool* mIsNoonB_m{}; + // map_unit_param at offset 0x80 + const bool* mIsEveningA_m{}; + // map_unit_param at offset 0x88 + const bool* mIsEveningB_m{}; + // map_unit_param at offset 0x90 + const bool* mIsNightA_m{}; + // map_unit_param at offset 0x98 + const bool* mIsNightB_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimedGuardNearTarget.cpp b/src/Game/AI/AI/aiTimedGuardNearTarget.cpp new file mode 100644 index 00000000..ab45b1f9 --- /dev/null +++ b/src/Game/AI/AI/aiTimedGuardNearTarget.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiTimedGuardNearTarget.h" + +namespace uking::ai { + +TimedGuardNearTarget::TimedGuardNearTarget(const InitArg& arg) : GuardNearTarget(arg) {} + +TimedGuardNearTarget::~TimedGuardNearTarget() = default; + +bool TimedGuardNearTarget::init_(sead::Heap* heap) { + return GuardNearTarget::init_(heap); +} + +void TimedGuardNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + GuardNearTarget::enter_(params); +} + +void TimedGuardNearTarget::leave_() { + GuardNearTarget::leave_(); +} + +void TimedGuardNearTarget::loadParams_() { + GuardNearTarget::loadParams_(); + getStaticParam(&mGuardEndTime_s, "GuardEndTime"); + getStaticParam(&mGuardStartAngle_s, "GuardStartAngle"); + getStaticParam(&mGuardEndAngle_s, "GuardEndAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimedGuardNearTarget.h b/src/Game/AI/AI/aiTimedGuardNearTarget.h new file mode 100644 index 00000000..38720dad --- /dev/null +++ b/src/Game/AI/AI/aiTimedGuardNearTarget.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiGuardNearTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TimedGuardNearTarget : public GuardNearTarget { + SEAD_RTTI_OVERRIDE(TimedGuardNearTarget, GuardNearTarget) +public: + explicit TimedGuardNearTarget(const InitArg& arg); + ~TimedGuardNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x88 + const int* mGuardEndTime_s{}; + // static_param at offset 0x90 + const float* mGuardStartAngle_s{}; + // static_param at offset 0x98 + const float* mGuardEndAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimelineAI.cpp b/src/Game/AI/AI/aiTimelineAI.cpp new file mode 100644 index 00000000..262dcd29 --- /dev/null +++ b/src/Game/AI/AI/aiTimelineAI.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiTimelineAI.h" + +namespace uking::ai { + +TimelineAI::TimelineAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool TimelineAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TimelineAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TimelineAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TimelineAI::loadParams_() { + getStaticParam(&mIntervalToCheckSchedule_s, "IntervalToCheckSchedule"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimelineAI.h b/src/Game/AI/AI/aiTimelineAI.h new file mode 100644 index 00000000..ed0facbd --- /dev/null +++ b/src/Game/AI/AI/aiTimelineAI.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TimelineAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TimelineAI, ksys::act::ai::Ai) +public: + explicit TimelineAI(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mIntervalToCheckSchedule_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimeredViewWait.cpp b/src/Game/AI/AI/aiTimeredViewWait.cpp new file mode 100644 index 00000000..21252c46 --- /dev/null +++ b/src/Game/AI/AI/aiTimeredViewWait.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTimeredViewWait.h" + +namespace uking::ai { + +TimeredViewWait::TimeredViewWait(const InitArg& arg) : ViewWait(arg) {} + +TimeredViewWait::~TimeredViewWait() = default; + +bool TimeredViewWait::init_(sead::Heap* heap) { + return ViewWait::init_(heap); +} + +void TimeredViewWait::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void TimeredViewWait::leave_() { + ViewWait::leave_(); +} + +void TimeredViewWait::loadParams_() { + ViewWait::loadParams_(); + getStaticParam(&mTime_s, "Time"); + getStaticParam(&mTimeRand_s, "TimeRand"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimeredViewWait.h b/src/Game/AI/AI/aiTimeredViewWait.h new file mode 100644 index 00000000..64c1a238 --- /dev/null +++ b/src/Game/AI/AI/aiTimeredViewWait.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TimeredViewWait : public ViewWait { + SEAD_RTTI_OVERRIDE(TimeredViewWait, ViewWait) +public: + explicit TimeredViewWait(const InitArg& arg); + ~TimeredViewWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const int* mTime_s{}; + // static_param at offset 0x68 + const int* mTimeRand_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimidityEnemyDrawback.cpp b/src/Game/AI/AI/aiTimidityEnemyDrawback.cpp new file mode 100644 index 00000000..a6f0daa4 --- /dev/null +++ b/src/Game/AI/AI/aiTimidityEnemyDrawback.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiTimidityEnemyDrawback.h" + +namespace uking::ai { + +TimidityEnemyDrawback::TimidityEnemyDrawback(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TimidityEnemyDrawback::~TimidityEnemyDrawback() = default; + +bool TimidityEnemyDrawback::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TimidityEnemyDrawback::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TimidityEnemyDrawback::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TimidityEnemyDrawback::loadParams_() { + getStaticParam(&mEscapeDist_s, "EscapeDist"); + getStaticParam(&mEscapeDistFromHome_s, "EscapeDistFromHome"); + getStaticParam(&mLostRange_s, "LostRange"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTimidityEnemyDrawback.h b/src/Game/AI/AI/aiTimidityEnemyDrawback.h new file mode 100644 index 00000000..72495ca5 --- /dev/null +++ b/src/Game/AI/AI/aiTimidityEnemyDrawback.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TimidityEnemyDrawback : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TimidityEnemyDrawback, ksys::act::ai::Ai) +public: + explicit TimidityEnemyDrawback(const InitArg& arg); + ~TimidityEnemyDrawback() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mEscapeDist_s{}; + // static_param at offset 0x40 + const float* mEscapeDistFromHome_s{}; + // static_param at offset 0x48 + const float* mLostRange_s{}; + // static_param at offset 0x50 + const float* mLostVMin_s{}; + // static_param at offset 0x58 + const float* mLostVMax_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTiredDistSelect.cpp b/src/Game/AI/AI/aiTiredDistSelect.cpp new file mode 100644 index 00000000..88e917c2 --- /dev/null +++ b/src/Game/AI/AI/aiTiredDistSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTiredDistSelect.h" + +namespace uking::ai { + +TiredDistSelect::TiredDistSelect(const InitArg& arg) : TargetHomeRangeSelect(arg) {} + +TiredDistSelect::~TiredDistSelect() = default; + +bool TiredDistSelect::init_(sead::Heap* heap) { + return TargetHomeRangeSelect::init_(heap); +} + +void TiredDistSelect::enter_(ksys::act::ai::InlineParamPack* params) { + TargetHomeRangeSelect::enter_(params); +} + +void TiredDistSelect::leave_() { + TargetHomeRangeSelect::leave_(); +} + +void TiredDistSelect::loadParams_() { + TargetHomeRangeSelect::loadParams_(); + getMapUnitParam(&mTerritoryArea_m, "TerritoryArea"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTiredDistSelect.h b/src/Game/AI/AI/aiTiredDistSelect.h new file mode 100644 index 00000000..225f1cd4 --- /dev/null +++ b/src/Game/AI/AI/aiTiredDistSelect.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiTargetHomeRangeSelect.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TiredDistSelect : public TargetHomeRangeSelect { + SEAD_RTTI_OVERRIDE(TiredDistSelect, TargetHomeRangeSelect) +public: + explicit TiredDistSelect(const InitArg& arg); + ~TiredDistSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x50 + const float* mTerritoryArea_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTornadoRoot.cpp b/src/Game/AI/AI/aiTornadoRoot.cpp new file mode 100644 index 00000000..9d887018 --- /dev/null +++ b/src/Game/AI/AI/aiTornadoRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTornadoRoot.h" + +namespace uking::ai { + +TornadoRoot::TornadoRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TornadoRoot::~TornadoRoot() = default; + +bool TornadoRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TornadoRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TornadoRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TornadoRoot::loadParams_() { + getStaticParam(&mIsHitOnlyPlayer_s, "IsHitOnlyPlayer"); + getMapUnitParam(&mAtMinDamage_m, "AtMinDamage"); + getMapUnitParam(&mAttackPower_m, "AttackPower"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTornadoRoot.h b/src/Game/AI/AI/aiTornadoRoot.h new file mode 100644 index 00000000..e4677a54 --- /dev/null +++ b/src/Game/AI/AI/aiTornadoRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TornadoRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TornadoRoot, ksys::act::ai::Ai) +public: + explicit TornadoRoot(const InitArg& arg); + ~TornadoRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsHitOnlyPlayer_s{}; + // map_unit_param at offset 0x40 + const int* mAtMinDamage_m{}; + // map_unit_param at offset 0x48 + const int* mAttackPower_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTowing.cpp b/src/Game/AI/AI/aiTowing.cpp new file mode 100644 index 00000000..87f09a2e --- /dev/null +++ b/src/Game/AI/AI/aiTowing.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiTowing.h" + +namespace uking::ai { + +Towing::Towing(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +Towing::~Towing() = default; + +bool Towing::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void Towing::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void Towing::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void Towing::loadParams_() { + getStaticParam(&mKeepMaxTime_s, "KeepMaxTime"); + getStaticParam(&mStopTowingDef_s, "StopTowingDef"); + getStaticParam(&mMaxSpeed_s, "MaxSpeed"); + getStaticParam(&mInitSpeed_s, "InitSpeed"); + getStaticParam(&mAddSpeed_s, "AddSpeed"); + getStaticParam(&mStandardSpeed_s, "StandardSpeed"); + getStaticParam(&mBrakeDecSpeed_s, "BrakeDecSpeed"); + getStaticParam(&mAttFrontRate_s, "AttFrontRate"); + getStaticParam(&mSandCheckLength_s, "SandCheckLength"); + getStaticParam(&mSandCheckAngle_s, "SandCheckAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTowing.h b/src/Game/AI/AI/aiTowing.h new file mode 100644 index 00000000..f014d920 --- /dev/null +++ b/src/Game/AI/AI/aiTowing.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class Towing : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(Towing, ksys::act::ai::Ai) +public: + explicit Towing(const InitArg& arg); + ~Towing() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x40]; + // static_param at offset 0x78 + const int* mKeepMaxTime_s{}; + // static_param at offset 0x80 + const int* mStopTowingDef_s{}; + // static_param at offset 0x88 + const float* mMaxSpeed_s{}; + // static_param at offset 0x90 + const float* mInitSpeed_s{}; + // static_param at offset 0x98 + const float* mAddSpeed_s{}; + // static_param at offset 0xa0 + const float* mStandardSpeed_s{}; + // static_param at offset 0xa8 + const float* mBrakeDecSpeed_s{}; + // static_param at offset 0xb0 + const float* mAttFrontRate_s{}; + // static_param at offset 0xb8 + const float* mSandCheckLength_s{}; + // static_param at offset 0xc0 + const float* mSandCheckAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTowingPlayer.cpp b/src/Game/AI/AI/aiTowingPlayer.cpp new file mode 100644 index 00000000..2cb9c1ad --- /dev/null +++ b/src/Game/AI/AI/aiTowingPlayer.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTowingPlayer.h" + +namespace uking::ai { + +TowingPlayer::TowingPlayer(const InitArg& arg) : Towing(arg) {} + +TowingPlayer::~TowingPlayer() = default; + +bool TowingPlayer::init_(sead::Heap* heap) { + return Towing::init_(heap); +} + +void TowingPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + Towing::enter_(params); +} + +void TowingPlayer::leave_() { + Towing::leave_(); +} + +void TowingPlayer::loadParams_() { + Towing::loadParams_(); + getStaticParam(&mInterruptDef_s, "InterruptDef"); + getStaticParam(&mCheckPlayerStateDef_s, "CheckPlayerStateDef"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTowingPlayer.h b/src/Game/AI/AI/aiTowingPlayer.h new file mode 100644 index 00000000..278a4ccb --- /dev/null +++ b/src/Game/AI/AI/aiTowingPlayer.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiTowing.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TowingPlayer : public Towing { + SEAD_RTTI_OVERRIDE(TowingPlayer, Towing) +public: + explicit TowingPlayer(const InitArg& arg); + ~TowingPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xc8 + const float* mInterruptDef_s{}; + // static_param at offset 0xd0 + const float* mCheckPlayerStateDef_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureBox.cpp b/src/Game/AI/AI/aiTreasureBox.cpp new file mode 100644 index 00000000..ec7e8644 --- /dev/null +++ b/src/Game/AI/AI/aiTreasureBox.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiTreasureBox.h" + +namespace uking::ai { + +TreasureBox::TreasureBox(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TreasureBox::~TreasureBox() = default; + +bool TreasureBox::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TreasureBox::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TreasureBox::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TreasureBox::loadParams_() { + getMapUnitParam(&mSharpWeaponJudgeType_m, "SharpWeaponJudgeType"); + getMapUnitParam(&mDropActor_m, "DropActor"); + getMapUnitParam(&mDropTable_m, "DropTable"); + getAITreeVariable(&mIsOpenTreasureBox_a, "IsOpenTreasureBox"); + getAITreeVariable(&mIsSetupDropActor_a, "IsSetupDropActor"); + getAITreeVariable(&mDropActorName_a, "DropActorName"); + getAITreeVariable(&mSharpWeaponAddParam_a, "SharpWeaponAddParam"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureBox.h b/src/Game/AI/AI/aiTreasureBox.h new file mode 100644 index 00000000..e0a47ce5 --- /dev/null +++ b/src/Game/AI/AI/aiTreasureBox.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TreasureBox : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TreasureBox, ksys::act::ai::Ai) +public: + explicit TreasureBox(const InitArg& arg); + ~TreasureBox() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mSharpWeaponJudgeType_m{}; + // map_unit_param at offset 0x40 + sead::SafeString mDropActor_m{}; + // map_unit_param at offset 0x50 + sead::SafeString mDropTable_m{}; + // aitree_variable at offset 0x60 + bool* mIsOpenTreasureBox_a{}; + // aitree_variable at offset 0x68 + bool* mIsSetupDropActor_a{}; + // aitree_variable at offset 0x70 + sead::SafeString* mDropActorName_a{}; + // aitree_variable at offset 0x78 + void* mSharpWeaponAddParam_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureBoxRoot.cpp b/src/Game/AI/AI/aiTreasureBoxRoot.cpp new file mode 100644 index 00000000..78bea5bf --- /dev/null +++ b/src/Game/AI/AI/aiTreasureBoxRoot.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiTreasureBoxRoot.h" + +namespace uking::ai { + +TreasureBoxRoot::TreasureBoxRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TreasureBoxRoot::~TreasureBoxRoot() = default; + +bool TreasureBoxRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TreasureBoxRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TreasureBoxRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TreasureBoxRoot::loadParams_() { + getStaticParam(&mInGroundOffsetY_s, "InGroundOffsetY"); + getStaticParam(&mInGroundScale_s, "InGroundScale"); + getStaticParam(&mOnGroundOffsetY_s, "OnGroundOffsetY"); + getStaticParam(&mOnGroundScale_s, "OnGroundScale"); + getStaticParam(&mJumpPower_s, "JumpPower"); + getStaticParam(&mDebugDraw_s, "DebugDraw"); + getMapUnitParam(&mIsInGround_m, "IsInGround"); + getMapUnitParam(&mEnableRevival_m, "EnableRevival"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureBoxRoot.h b/src/Game/AI/AI/aiTreasureBoxRoot.h new file mode 100644 index 00000000..f3e859b8 --- /dev/null +++ b/src/Game/AI/AI/aiTreasureBoxRoot.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TreasureBoxRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TreasureBoxRoot, ksys::act::ai::Ai) +public: + explicit TreasureBoxRoot(const InitArg& arg); + ~TreasureBoxRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mInGroundOffsetY_s{}; + // static_param at offset 0x40 + const float* mInGroundScale_s{}; + // static_param at offset 0x48 + const float* mOnGroundOffsetY_s{}; + // static_param at offset 0x50 + const float* mOnGroundScale_s{}; + // static_param at offset 0x58 + const float* mJumpPower_s{}; + // static_param at offset 0x60 + const bool* mDebugDraw_s{}; + // map_unit_param at offset 0x68 + const bool* mIsInGround_m{}; + // map_unit_param at offset 0x70 + const bool* mEnableRevival_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureSpot.cpp b/src/Game/AI/AI/aiTreasureSpot.cpp new file mode 100644 index 00000000..6fd3d2c5 --- /dev/null +++ b/src/Game/AI/AI/aiTreasureSpot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTreasureSpot.h" + +namespace uking::ai { + +TreasureSpot::TreasureSpot(const InitArg& arg) : CommonPickedItem(arg) {} + +TreasureSpot::~TreasureSpot() = default; + +bool TreasureSpot::init_(sead::Heap* heap) { + return CommonPickedItem::init_(heap); +} + +void TreasureSpot::enter_(ksys::act::ai::InlineParamPack* params) { + CommonPickedItem::enter_(params); +} + +void TreasureSpot::leave_() { + CommonPickedItem::leave_(); +} + +void TreasureSpot::loadParams_() { + CommonPickedItem::loadParams_(); + getStaticParam(&mGetAttKeyForGuardian_s, "GetAttKeyForGuardian"); + getMapUnitParam(&mTresasureSpotType_m, "TresasureSpotType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTreasureSpot.h b/src/Game/AI/AI/aiTreasureSpot.h new file mode 100644 index 00000000..2880e231 --- /dev/null +++ b/src/Game/AI/AI/aiTreasureSpot.h @@ -0,0 +1,26 @@ +#pragma once + +#include "Game/AI/AI/aiCommonPickedItem.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TreasureSpot : public CommonPickedItem { + SEAD_RTTI_OVERRIDE(TreasureSpot, CommonPickedItem) +public: + explicit TreasureSpot(const InitArg& arg); + ~TreasureSpot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe8 + sead::SafeString mGetAttKeyForGuardian_s{}; + // map_unit_param at offset 0xf8 + const int* mTresasureSpotType_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.cpp b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.cpp new file mode 100644 index 00000000..63f2a1bc --- /dev/null +++ b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h" + +namespace uking::ai { + +TrgTargetChangeToPlayerSelect::TrgTargetChangeToPlayerSelect(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +TrgTargetChangeToPlayerSelect::~TrgTargetChangeToPlayerSelect() = default; + +bool TrgTargetChangeToPlayerSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TrgTargetChangeToPlayerSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TrgTargetChangeToPlayerSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TrgTargetChangeToPlayerSelect::loadParams_() { + getAITreeVariable(&mIsTrgTargetChangeToPlayer_a, "IsTrgTargetChangeToPlayer"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h new file mode 100644 index 00000000..4e68d818 --- /dev/null +++ b/src/Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TrgTargetChangeToPlayerSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TrgTargetChangeToPlayerSelect, ksys::act::ai::Ai) +public: + explicit TrgTargetChangeToPlayerSelect(const InitArg& arg); + ~TrgTargetChangeToPlayerSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + bool* mIsTrgTargetChangeToPlayer_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.cpp b/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.cpp new file mode 100644 index 00000000..d7621eff --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTrolleyGrabbedByMagnet.h" + +namespace uking::ai { + +TrolleyGrabbedByMagnet::TrolleyGrabbedByMagnet(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TrolleyGrabbedByMagnet::~TrolleyGrabbedByMagnet() = default; + +bool TrolleyGrabbedByMagnet::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TrolleyGrabbedByMagnet::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TrolleyGrabbedByMagnet::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TrolleyGrabbedByMagnet::loadParams_() { + getDynamicParam(&mRailDist_d, "RailDist"); + getDynamicParam(&mRailPos_d, "RailPos"); + getDynamicParam(&mRailDir_d, "RailDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.h b/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.h new file mode 100644 index 00000000..b4ecce6b --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyGrabbedByMagnet.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TrolleyGrabbedByMagnet : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TrolleyGrabbedByMagnet, ksys::act::ai::Ai) +public: + explicit TrolleyGrabbedByMagnet(const InitArg& arg); + ~TrolleyGrabbedByMagnet() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + float* mRailDist_d{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mRailPos_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mRailDir_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyOnRail.cpp b/src/Game/AI/AI/aiTrolleyOnRail.cpp new file mode 100644 index 00000000..deb8bde0 --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyOnRail.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiTrolleyOnRail.h" + +namespace uking::ai { + +TrolleyOnRail::TrolleyOnRail(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TrolleyOnRail::~TrolleyOnRail() = default; + +bool TrolleyOnRail::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TrolleyOnRail::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TrolleyOnRail::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TrolleyOnRail::loadParams_() { + getDynamicParam(&mRailDist_d, "RailDist"); + getDynamicParam(&mVelocityReduce_d, "VelocityReduce"); + getDynamicParam(&mRailPos_d, "RailPos"); + getDynamicParam(&mRailDir_d, "RailDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyOnRail.h b/src/Game/AI/AI/aiTrolleyOnRail.h new file mode 100644 index 00000000..011a8e06 --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyOnRail.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TrolleyOnRail : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TrolleyOnRail, ksys::act::ai::Ai) +public: + explicit TrolleyOnRail(const InitArg& arg); + ~TrolleyOnRail() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + float* mRailDist_d{}; + // dynamic_param at offset 0x40 + float* mVelocityReduce_d{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mRailPos_d{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mRailDir_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyRoot.cpp b/src/Game/AI/AI/aiTrolleyRoot.cpp new file mode 100644 index 00000000..b23f0bcf --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyRoot.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiTrolleyRoot.h" + +namespace uking::ai { + +TrolleyRoot::TrolleyRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TrolleyRoot::~TrolleyRoot() = default; + +bool TrolleyRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TrolleyRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TrolleyRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TrolleyRoot::loadParams_() { + getStaticParam(&mNearGoalDist_s, "NearGoalDist"); + getStaticParam(&mNearGoalLimitSpd_s, "NearGoalLimitSpd"); + getStaticParam(&mNearGoalReduceRate_s, "NearGoalReduceRate"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTrolleyRoot.h b/src/Game/AI/AI/aiTrolleyRoot.h new file mode 100644 index 00000000..6408138f --- /dev/null +++ b/src/Game/AI/AI/aiTrolleyRoot.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TrolleyRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TrolleyRoot, ksys::act::ai::Ai) +public: + explicit TrolleyRoot(const InitArg& arg); + ~TrolleyRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mNearGoalDist_s{}; + // static_param at offset 0x40 + const float* mNearGoalLimitSpd_s{}; + // static_param at offset 0x48 + const float* mNearGoalReduceRate_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTurnForLookingAround.cpp b/src/Game/AI/AI/aiTurnForLookingAround.cpp new file mode 100644 index 00000000..88dafcfc --- /dev/null +++ b/src/Game/AI/AI/aiTurnForLookingAround.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiTurnForLookingAround.h" + +namespace uking::ai { + +TurnForLookingAround::TurnForLookingAround(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TurnForLookingAround::~TurnForLookingAround() = default; + +bool TurnForLookingAround::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TurnForLookingAround::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TurnForLookingAround::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TurnForLookingAround::loadParams_() { + getStaticParam(&mAngle_s, "Angle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTurnForLookingAround.h b/src/Game/AI/AI/aiTurnForLookingAround.h new file mode 100644 index 00000000..fe8af36e --- /dev/null +++ b/src/Game/AI/AI/aiTurnForLookingAround.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TurnForLookingAround : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TurnForLookingAround, ksys::act::ai::Ai) +public: + explicit TurnForLookingAround(const InitArg& arg); + ~TurnForLookingAround() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAngle_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTurnPreAction.cpp b/src/Game/AI/AI/aiTurnPreAction.cpp new file mode 100644 index 00000000..41bb35e6 --- /dev/null +++ b/src/Game/AI/AI/aiTurnPreAction.cpp @@ -0,0 +1,22 @@ +#include "Game/AI/AI/aiTurnPreAction.h" + +namespace uking::ai { + +TurnPreAction::TurnPreAction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +TurnPreAction::~TurnPreAction() = default; + +void TurnPreAction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TurnPreAction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TurnPreAction::loadParams_() { + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTurnPreAction.h b/src/Game/AI/AI/aiTurnPreAction.h new file mode 100644 index 00000000..b3828b54 --- /dev/null +++ b/src/Game/AI/AI/aiTurnPreAction.h @@ -0,0 +1,24 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TurnPreAction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TurnPreAction, ksys::act::ai::Ai) +public: + explicit TurnPreAction(const InitArg& arg); + ~TurnPreAction() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnStartAngle_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.cpp b/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.cpp new file mode 100644 index 00000000..3ec7574d --- /dev/null +++ b/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h" + +namespace uking::ai { + +TwnObjDlcFlightTrainingTarget::TwnObjDlcFlightTrainingTarget(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +TwnObjDlcFlightTrainingTarget::~TwnObjDlcFlightTrainingTarget() = default; + +bool TwnObjDlcFlightTrainingTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void TwnObjDlcFlightTrainingTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void TwnObjDlcFlightTrainingTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void TwnObjDlcFlightTrainingTarget::loadParams_() { + getStaticParam(&mLimitTime_s, "LimitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h b/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h new file mode 100644 index 00000000..13c5390e --- /dev/null +++ b/src/Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class TwnObjDlcFlightTrainingTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(TwnObjDlcFlightTrainingTarget, ksys::act::ai::Ai) +public: + explicit TwnObjDlcFlightTrainingTarget(const InitArg& arg); + ~TwnObjDlcFlightTrainingTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mLimitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.cpp b/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.cpp new file mode 100644 index 00000000..98fc32a2 --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiUnarmedEnemyNoiseTarget.h" + +namespace uking::ai { + +UnarmedEnemyNoiseTarget::UnarmedEnemyNoiseTarget(const InitArg& arg) : UnarmedEnemySearch(arg) {} + +UnarmedEnemyNoiseTarget::~UnarmedEnemyNoiseTarget() = default; + +void UnarmedEnemyNoiseTarget::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearch::enter_(params); +} + +void UnarmedEnemyNoiseTarget::leave_() { + UnarmedEnemySearch::leave_(); +} + +void UnarmedEnemyNoiseTarget::loadParams_() { + UnarmedEnemySearch::loadParams_(); + getStaticParam(&mLostTime_s, "LostTime"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mLostRange_s, "LostRange"); + getStaticParam(&mLostVMin_s, "LostVMin"); + getStaticParam(&mLostVMax_s, "LostVMax"); + getStaticParam(&mSearchWeaponDist_s, "SearchWeaponDist"); + getStaticParam(&mSearchBaseWeaponDist_s, "SearchBaseWeaponDist"); + getStaticParam(&mAbsorpDist_s, "AbsorpDist"); + getStaticParam(&mFarDist_s, "FarDist"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mSearchWeaponTargetDist_s, "SearchWeaponTargetDist"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.h b/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.h new file mode 100644 index 00000000..cf035f74 --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemyNoiseTarget.h @@ -0,0 +1,45 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearch.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UnarmedEnemyNoiseTarget : public UnarmedEnemySearch { + SEAD_RTTI_OVERRIDE(UnarmedEnemyNoiseTarget, UnarmedEnemySearch) +public: + explicit UnarmedEnemyNoiseTarget(const InitArg& arg); + ~UnarmedEnemyNoiseTarget() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const int* mLostTime_s{}; + // static_param at offset 0x70 + const int* mWeaponIdx_s{}; + // static_param at offset 0x78 + const float* mLostRange_s{}; + // static_param at offset 0x80 + const float* mLostVMin_s{}; + // static_param at offset 0x88 + const float* mLostVMax_s{}; + // static_param at offset 0x90 + const float* mSearchWeaponDist_s{}; + // static_param at offset 0x98 + const float* mSearchBaseWeaponDist_s{}; + // static_param at offset 0xa0 + const float* mAbsorpDist_s{}; + // static_param at offset 0xa8 + const float* mFarDist_s{}; + // static_param at offset 0xb0 + const int* mRepathTime_s{}; + // static_param at offset 0xb8 + const float* mSearchWeaponTargetDist_s{}; + // dynamic_param at offset 0xc0 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemySearch.cpp b/src/Game/AI/AI/aiUnarmedEnemySearch.cpp new file mode 100644 index 00000000..bfe1909e --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemySearch.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiUnarmedEnemySearch.h" + +namespace uking::ai { + +UnarmedEnemySearch::UnarmedEnemySearch(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +UnarmedEnemySearch::~UnarmedEnemySearch() = default; + +bool UnarmedEnemySearch::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void UnarmedEnemySearch::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void UnarmedEnemySearch::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void UnarmedEnemySearch::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mReachTargetArea_s, "ReachTargetArea"); + getStaticParam(&mTurnStartAng_s, "TurnStartAng"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemySearch.h b/src/Game/AI/AI/aiUnarmedEnemySearch.h new file mode 100644 index 00000000..e849552a --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemySearch.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UnarmedEnemySearch : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(UnarmedEnemySearch, ksys::act::ai::Ai) +public: + explicit UnarmedEnemySearch(const InitArg& arg); + ~UnarmedEnemySearch() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mReachTargetArea_s{}; + // static_param at offset 0x48 + const float* mTurnStartAng_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.cpp b/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.cpp new file mode 100644 index 00000000..aa9c3de0 --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiUnarmedEnemySearchWeapon.h" + +namespace uking::ai { + +UnarmedEnemySearchWeapon::UnarmedEnemySearchWeapon(const InitArg& arg) : UnarmedEnemySearch(arg) {} + +UnarmedEnemySearchWeapon::~UnarmedEnemySearchWeapon() = default; + +void UnarmedEnemySearchWeapon::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearch::enter_(params); +} + +void UnarmedEnemySearchWeapon::leave_() { + UnarmedEnemySearch::leave_(); +} + +void UnarmedEnemySearchWeapon::loadParams_() { + UnarmedEnemySearch::loadParams_(); + getStaticParam(&mEquipItemSearchIdx_s, "EquipItemSearchIdx"); + getStaticParam(&mRepathTime_s, "RepathTime"); + getStaticParam(&mSearchDist_s, "SearchDist"); + getStaticParam(&mSearchAng_s, "SearchAng"); + getStaticParam(&mIsUseSight_s, "IsUseSight"); + getStaticParam(&mLineReachableWeaponDist_s, "LineReachableWeaponDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.h b/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.h new file mode 100644 index 00000000..af34a95d --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedEnemySearchWeapon.h @@ -0,0 +1,33 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearch.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UnarmedEnemySearchWeapon : public UnarmedEnemySearch { + SEAD_RTTI_OVERRIDE(UnarmedEnemySearchWeapon, UnarmedEnemySearch) +public: + explicit UnarmedEnemySearchWeapon(const InitArg& arg); + ~UnarmedEnemySearchWeapon() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x6b8 + const int* mEquipItemSearchIdx_s{}; + // static_param at offset 0x6c0 + const int* mRepathTime_s{}; + // static_param at offset 0x6c8 + const float* mSearchDist_s{}; + // static_param at offset 0x6d0 + const float* mSearchAng_s{}; + // static_param at offset 0x6d8 + const bool* mIsUseSight_s{}; + // static_param at offset 0x6e0 + const float* mLineReachableWeaponDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.cpp b/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.cpp new file mode 100644 index 00000000..497e1f36 --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h" + +namespace uking::ai { + +UnarmedWeaponEquipableEnemyAct::UnarmedWeaponEquipableEnemyAct(const InitArg& arg) + : UnarmedEnemySearchWeapon(arg) {} + +UnarmedWeaponEquipableEnemyAct::~UnarmedWeaponEquipableEnemyAct() = default; + +bool UnarmedWeaponEquipableEnemyAct::init_(sead::Heap* heap) { + return UnarmedEnemySearchWeapon::init_(heap); +} + +void UnarmedWeaponEquipableEnemyAct::enter_(ksys::act::ai::InlineParamPack* params) { + UnarmedEnemySearchWeapon::enter_(params); +} + +void UnarmedWeaponEquipableEnemyAct::leave_() { + UnarmedEnemySearchWeapon::leave_(); +} + +void UnarmedWeaponEquipableEnemyAct::loadParams_() { + UnarmedEnemySearchWeapon::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h b/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h new file mode 100644 index 00000000..a289c3ad --- /dev/null +++ b/src/Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiUnarmedEnemySearchWeapon.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UnarmedWeaponEquipableEnemyAct : public UnarmedEnemySearchWeapon { + SEAD_RTTI_OVERRIDE(UnarmedWeaponEquipableEnemyAct, UnarmedEnemySearchWeapon) +public: + explicit UnarmedWeaponEquipableEnemyAct(const InitArg& arg); + ~UnarmedWeaponEquipableEnemyAct() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnderWaterDepthSelect.cpp b/src/Game/AI/AI/aiUnderWaterDepthSelect.cpp new file mode 100644 index 00000000..fdc6d738 --- /dev/null +++ b/src/Game/AI/AI/aiUnderWaterDepthSelect.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiUnderWaterDepthSelect.h" + +namespace uking::ai { + +UnderWaterDepthSelect::UnderWaterDepthSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +UnderWaterDepthSelect::~UnderWaterDepthSelect() = default; + +bool UnderWaterDepthSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void UnderWaterDepthSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void UnderWaterDepthSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void UnderWaterDepthSelect::loadParams_() { + getStaticParam(&mDeepDepth_s, "DeepDepth"); + getStaticParam(&mOnEnterOnly_s, "OnEnterOnly"); + getStaticParam(&mForceDeepChange_s, "ForceDeepChange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUnderWaterDepthSelect.h b/src/Game/AI/AI/aiUnderWaterDepthSelect.h new file mode 100644 index 00000000..a78629bb --- /dev/null +++ b/src/Game/AI/AI/aiUnderWaterDepthSelect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UnderWaterDepthSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(UnderWaterDepthSelect, ksys::act::ai::Ai) +public: + explicit UnderWaterDepthSelect(const InitArg& arg); + ~UnderWaterDepthSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDeepDepth_s{}; + // static_param at offset 0x40 + const bool* mOnEnterOnly_s{}; + // static_param at offset 0x48 + const bool* mForceDeepChange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUrbosasFuryDamageSelector.cpp b/src/Game/AI/AI/aiUrbosasFuryDamageSelector.cpp new file mode 100644 index 00000000..4f5557b6 --- /dev/null +++ b/src/Game/AI/AI/aiUrbosasFuryDamageSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiUrbosasFuryDamageSelector.h" + +namespace uking::ai { + +UrbosasFuryDamageSelector::UrbosasFuryDamageSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +UrbosasFuryDamageSelector::~UrbosasFuryDamageSelector() = default; + +bool UrbosasFuryDamageSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void UrbosasFuryDamageSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void UrbosasFuryDamageSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void UrbosasFuryDamageSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiUrbosasFuryDamageSelector.h b/src/Game/AI/AI/aiUrbosasFuryDamageSelector.h new file mode 100644 index 00000000..a1d79437 --- /dev/null +++ b/src/Game/AI/AI/aiUrbosasFuryDamageSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class UrbosasFuryDamageSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(UrbosasFuryDamageSelector, ksys::act::ai::Ai) +public: + explicit UrbosasFuryDamageSelector(const InitArg& arg); + ~UrbosasFuryDamageSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiVacuumedBombDamageSelect.cpp b/src/Game/AI/AI/aiVacuumedBombDamageSelect.cpp new file mode 100644 index 00000000..313290f6 --- /dev/null +++ b/src/Game/AI/AI/aiVacuumedBombDamageSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiVacuumedBombDamageSelect.h" + +namespace uking::ai { + +VacuumedBombDamageSelect::VacuumedBombDamageSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +VacuumedBombDamageSelect::~VacuumedBombDamageSelect() = default; + +bool VacuumedBombDamageSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void VacuumedBombDamageSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void VacuumedBombDamageSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void VacuumedBombDamageSelect::loadParams_() { + getAITreeVariable(&mVacuumedExplodingBomb_a, "VacuumedExplodingBomb"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiVacuumedBombDamageSelect.h b/src/Game/AI/AI/aiVacuumedBombDamageSelect.h new file mode 100644 index 00000000..63528b46 --- /dev/null +++ b/src/Game/AI/AI/aiVacuumedBombDamageSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class VacuumedBombDamageSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(VacuumedBombDamageSelect, ksys::act::ai::Ai) +public: + explicit VacuumedBombDamageSelect(const InitArg& arg); + ~VacuumedBombDamageSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mVacuumedExplodingBomb_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiVehicleSelector.cpp b/src/Game/AI/AI/aiVehicleSelector.cpp new file mode 100644 index 00000000..0d0b0f70 --- /dev/null +++ b/src/Game/AI/AI/aiVehicleSelector.cpp @@ -0,0 +1,13 @@ +#include "Game/AI/AI/aiVehicleSelector.h" + +namespace uking::ai { + +VehicleSelector::VehicleSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +VehicleSelector::~VehicleSelector() = default; + +void VehicleSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiVehicleSelector.h b/src/Game/AI/AI/aiVehicleSelector.h new file mode 100644 index 00000000..2a4ab61f --- /dev/null +++ b/src/Game/AI/AI/aiVehicleSelector.h @@ -0,0 +1,18 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class VehicleSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(VehicleSelector, ksys::act::ai::Ai) +public: + explicit VehicleSelector(const InitArg& arg); + ~VehicleSelector() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewChaseSound.cpp b/src/Game/AI/AI/aiViewChaseSound.cpp new file mode 100644 index 00000000..a3567566 --- /dev/null +++ b/src/Game/AI/AI/aiViewChaseSound.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiViewChaseSound.h" + +namespace uking::ai { + +ViewChaseSound::ViewChaseSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ViewChaseSound::~ViewChaseSound() = default; + +bool ViewChaseSound::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ViewChaseSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ViewChaseSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ViewChaseSound::loadParams_() { + getStaticParam(&mTurnDir_s, "TurnDir"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewChaseSound.h b/src/Game/AI/AI/aiViewChaseSound.h new file mode 100644 index 00000000..de4aaac2 --- /dev/null +++ b/src/Game/AI/AI/aiViewChaseSound.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewChaseSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ViewChaseSound, ksys::act::ai::Ai) +public: + explicit ViewChaseSound(const InitArg& arg); + ~ViewChaseSound() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnDir_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewMove.cpp b/src/Game/AI/AI/aiViewMove.cpp new file mode 100644 index 00000000..47e69bdc --- /dev/null +++ b/src/Game/AI/AI/aiViewMove.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiViewMove.h" + +namespace uking::ai { + +ViewMove::ViewMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ViewMove::~ViewMove() = default; + +bool ViewMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ViewMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ViewMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ViewMove::loadParams_() { + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewMove.h b/src/Game/AI/AI/aiViewMove.h new file mode 100644 index 00000000..b3163057 --- /dev/null +++ b/src/Game/AI/AI/aiViewMove.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ViewMove, ksys::act::ai::Ai) +public: + explicit ViewMove(const InitArg& arg); + ~ViewMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnStartAngle_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWait.cpp b/src/Game/AI/AI/aiViewWait.cpp new file mode 100644 index 00000000..3f8562f0 --- /dev/null +++ b/src/Game/AI/AI/aiViewWait.cpp @@ -0,0 +1,19 @@ +#include "Game/AI/AI/aiViewWait.h" + +namespace uking::ai { + +ViewWait::ViewWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ViewWait::~ViewWait() = default; + +void ViewWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ViewWait::loadParams_() { + getStaticParam(&mTurnStartAngle_s, "TurnStartAngle"); + getStaticParam(&mCheckOnce_s, "CheckOnce"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWait.h b/src/Game/AI/AI/aiViewWait.h new file mode 100644 index 00000000..77d377b1 --- /dev/null +++ b/src/Game/AI/AI/aiViewWait.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ViewWait, ksys::act::ai::Ai) +public: + explicit ViewWait(const InitArg& arg); + ~ViewWait() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnStartAngle_s{}; + // static_param at offset 0x40 + const bool* mCheckOnce_s{}; + // dynamic_param at offset 0x48 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitEndWhenAimed.cpp b/src/Game/AI/AI/aiViewWaitEndWhenAimed.cpp new file mode 100644 index 00000000..2d45648b --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitEndWhenAimed.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiViewWaitEndWhenAimed.h" + +namespace uking::ai { + +ViewWaitEndWhenAimed::ViewWaitEndWhenAimed(const InitArg& arg) : TimeredViewWait(arg) {} + +ViewWaitEndWhenAimed::~ViewWaitEndWhenAimed() = default; + +bool ViewWaitEndWhenAimed::init_(sead::Heap* heap) { + return TimeredViewWait::init_(heap); +} + +void ViewWaitEndWhenAimed::enter_(ksys::act::ai::InlineParamPack* params) { + TimeredViewWait::enter_(params); +} + +void ViewWaitEndWhenAimed::leave_() { + TimeredViewWait::leave_(); +} + +void ViewWaitEndWhenAimed::loadParams_() { + TimeredViewWait::loadParams_(); + getStaticParam(&mEndTime_s, "EndTime"); + getStaticParam(&mAimedAngle_s, "AimedAngle"); + getStaticParam(&mBowRange_s, "BowRange"); + getStaticParam(&mBoneName_s, "BoneName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitEndWhenAimed.h b/src/Game/AI/AI/aiViewWaitEndWhenAimed.h new file mode 100644 index 00000000..29dfa2a6 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitEndWhenAimed.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiTimeredViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewWaitEndWhenAimed : public TimeredViewWait { + SEAD_RTTI_OVERRIDE(ViewWaitEndWhenAimed, TimeredViewWait) +public: + explicit ViewWaitEndWhenAimed(const InitArg& arg); + ~ViewWaitEndWhenAimed() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x78 + const int* mEndTime_s{}; + // static_param at offset 0x80 + const float* mAimedAngle_s{}; + // static_param at offset 0x88 + const float* mBowRange_s{}; + // static_param at offset 0x90 + sead::SafeString mBoneName_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitRiskAvoid.cpp b/src/Game/AI/AI/aiViewWaitRiskAvoid.cpp new file mode 100644 index 00000000..0a83382d --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitRiskAvoid.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiViewWaitRiskAvoid.h" + +namespace uking::ai { + +ViewWaitRiskAvoid::ViewWaitRiskAvoid(const InitArg& arg) : ViewWait(arg) {} + +ViewWaitRiskAvoid::~ViewWaitRiskAvoid() = default; + +bool ViewWaitRiskAvoid::init_(sead::Heap* heap) { + return ViewWait::init_(heap); +} + +void ViewWaitRiskAvoid::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void ViewWaitRiskAvoid::leave_() { + ViewWait::leave_(); +} + +void ViewWaitRiskAvoid::loadParams_() { + ViewWait::loadParams_(); + getStaticParam(&mAvoidFrame_s, "AvoidFrame"); + getStaticParam(&mFrontAngle_s, "FrontAngle"); + getStaticParam(&mSpaceAngle_s, "SpaceAngle"); + getStaticParam(&mSpaceDist_s, "SpaceDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitRiskAvoid.h b/src/Game/AI/AI/aiViewWaitRiskAvoid.h new file mode 100644 index 00000000..bb7c20f2 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitRiskAvoid.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewWaitRiskAvoid : public ViewWait { + SEAD_RTTI_OVERRIDE(ViewWaitRiskAvoid, ViewWait) +public: + explicit ViewWaitRiskAvoid(const InitArg& arg); + ~ViewWaitRiskAvoid() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const int* mAvoidFrame_s{}; + // static_param at offset 0x68 + const float* mFrontAngle_s{}; + // static_param at offset 0x70 + const float* mSpaceAngle_s{}; + // static_param at offset 0x78 + const float* mSpaceDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitWithFaceView.cpp b/src/Game/AI/AI/aiViewWaitWithFaceView.cpp new file mode 100644 index 00000000..4f100117 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitWithFaceView.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiViewWaitWithFaceView.h" + +namespace uking::ai { + +ViewWaitWithFaceView::ViewWaitWithFaceView(const InitArg& arg) : ViewWait(arg) {} + +ViewWaitWithFaceView::~ViewWaitWithFaceView() = default; + +bool ViewWaitWithFaceView::init_(sead::Heap* heap) { + return ViewWait::init_(heap); +} + +void ViewWaitWithFaceView::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void ViewWaitWithFaceView::leave_() { + ViewWait::leave_(); +} + +void ViewWaitWithFaceView::loadParams_() { + ViewWait::loadParams_(); + getStaticParam(&mUseSimpleOffset_s, "UseSimpleOffset"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitWithFaceView.h b/src/Game/AI/AI/aiViewWaitWithFaceView.h new file mode 100644 index 00000000..5811b483 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitWithFaceView.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewWaitWithFaceView : public ViewWait { + SEAD_RTTI_OVERRIDE(ViewWaitWithFaceView, ViewWait) +public: + explicit ViewWaitWithFaceView(const InitArg& arg); + ~ViewWaitWithFaceView() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x60 + const bool* mUseSimpleOffset_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitWithInstDynActor.cpp b/src/Game/AI/AI/aiViewWaitWithInstDynActor.cpp new file mode 100644 index 00000000..2d79a985 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitWithInstDynActor.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiViewWaitWithInstDynActor.h" + +namespace uking::ai { + +ViewWaitWithInstDynActor::ViewWaitWithInstDynActor(const InitArg& arg) : ViewWait(arg) {} + +ViewWaitWithInstDynActor::~ViewWaitWithInstDynActor() = default; + +bool ViewWaitWithInstDynActor::init_(sead::Heap* heap) { + return ViewWait::init_(heap); +} + +void ViewWaitWithInstDynActor::enter_(ksys::act::ai::InlineParamPack* params) { + ViewWait::enter_(params); +} + +void ViewWaitWithInstDynActor::leave_() { + ViewWait::leave_(); +} + +void ViewWaitWithInstDynActor::loadParams_() { + ViewWait::loadParams_(); + getDynamicParam(&mTargetActor_d, "TargetActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewWaitWithInstDynActor.h b/src/Game/AI/AI/aiViewWaitWithInstDynActor.h new file mode 100644 index 00000000..025fb780 --- /dev/null +++ b/src/Game/AI/AI/aiViewWaitWithInstDynActor.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiViewWait.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewWaitWithInstDynActor : public ViewWait { + SEAD_RTTI_OVERRIDE(ViewWaitWithInstDynActor, ViewWait) +public: + explicit ViewWaitWithInstDynActor(const InitArg& arg); + ~ViewWaitWithInstDynActor() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x60 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewfrustumCheckTagRoot.cpp b/src/Game/AI/AI/aiViewfrustumCheckTagRoot.cpp new file mode 100644 index 00000000..b0570cdb --- /dev/null +++ b/src/Game/AI/AI/aiViewfrustumCheckTagRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiViewfrustumCheckTagRoot.h" + +namespace uking::ai { + +ViewfrustumCheckTagRoot::ViewfrustumCheckTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ViewfrustumCheckTagRoot::~ViewfrustumCheckTagRoot() = default; + +bool ViewfrustumCheckTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ViewfrustumCheckTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ViewfrustumCheckTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ViewfrustumCheckTagRoot::loadParams_() { + getMapUnitParam(&mAllwaysOnDisFromPlayer_m, "AllwaysOnDisFromPlayer"); + getMapUnitParam(&mAllwaysOnCamDir_m, "AllwaysOnCamDir"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiViewfrustumCheckTagRoot.h b/src/Game/AI/AI/aiViewfrustumCheckTagRoot.h new file mode 100644 index 00000000..7a7a7d8b --- /dev/null +++ b/src/Game/AI/AI/aiViewfrustumCheckTagRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ViewfrustumCheckTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ViewfrustumCheckTagRoot, ksys::act::ai::Ai) +public: + explicit ViewfrustumCheckTagRoot(const InitArg& arg); + ~ViewfrustumCheckTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mAllwaysOnDisFromPlayer_m{}; + // map_unit_param at offset 0x40 + const float* mAllwaysOnCamDir_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.cpp b/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.cpp new file mode 100644 index 00000000..1d623d10 --- /dev/null +++ b/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiWaistRotEnemyArrowAttack.h" + +namespace uking::ai { + +WaistRotEnemyArrowAttack::WaistRotEnemyArrowAttack(const InitArg& arg) + : EnemyBaseArrowAttack(arg) {} + +WaistRotEnemyArrowAttack::~WaistRotEnemyArrowAttack() = default; + +bool WaistRotEnemyArrowAttack::init_(sead::Heap* heap) { + return EnemyBaseArrowAttack::init_(heap); +} + +void WaistRotEnemyArrowAttack::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyBaseArrowAttack::enter_(params); +} + +void WaistRotEnemyArrowAttack::leave_() { + EnemyBaseArrowAttack::leave_(); +} + +void WaistRotEnemyArrowAttack::loadParams_() { + EnemyBaseArrowAttack::loadParams_(); + getStaticParam(&mRandomPredictFrame_s, "RandomPredictFrame"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.h b/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.h new file mode 100644 index 00000000..2a3b715b --- /dev/null +++ b/src/Game/AI/AI/aiWaistRotEnemyArrowAttack.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyBaseArrowAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaistRotEnemyArrowAttack : public EnemyBaseArrowAttack { + SEAD_RTTI_OVERRIDE(WaistRotEnemyArrowAttack, EnemyBaseArrowAttack) +public: + explicit WaistRotEnemyArrowAttack(const InitArg& arg); + ~WaistRotEnemyArrowAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x50 + const int* mRandomPredictFrame_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitAndFaceLeader.cpp b/src/Game/AI/AI/aiWaitAndFaceLeader.cpp new file mode 100644 index 00000000..54d63f63 --- /dev/null +++ b/src/Game/AI/AI/aiWaitAndFaceLeader.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWaitAndFaceLeader.h" + +namespace uking::ai { + +WaitAndFaceLeader::WaitAndFaceLeader(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaitAndFaceLeader::~WaitAndFaceLeader() = default; + +bool WaitAndFaceLeader::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaitAndFaceLeader::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaitAndFaceLeader::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaitAndFaceLeader::loadParams_() { + getStaticParam(&mTurnThreshold_s, "TurnThreshold"); + getDynamicParam(&mLeaderActor_d, "LeaderActor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitAndFaceLeader.h b/src/Game/AI/AI/aiWaitAndFaceLeader.h new file mode 100644 index 00000000..10927bde --- /dev/null +++ b/src/Game/AI/AI/aiWaitAndFaceLeader.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitAndFaceLeader : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaitAndFaceLeader, ksys::act::ai::Ai) +public: + explicit WaitAndFaceLeader(const InitArg& arg); + ~WaitAndFaceLeader() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnThreshold_s{}; + // dynamic_param at offset 0x40 + ksys::act::BaseProcLink* mLeaderActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitForCloseOrWaterSide.cpp b/src/Game/AI/AI/aiWaitForCloseOrWaterSide.cpp new file mode 100644 index 00000000..c8e8cb6c --- /dev/null +++ b/src/Game/AI/AI/aiWaitForCloseOrWaterSide.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWaitForCloseOrWaterSide.h" + +namespace uking::ai { + +WaitForCloseOrWaterSide::WaitForCloseOrWaterSide(const InitArg& arg) : WaitForTargetClose(arg) {} + +WaitForCloseOrWaterSide::~WaitForCloseOrWaterSide() = default; + +bool WaitForCloseOrWaterSide::init_(sead::Heap* heap) { + return WaitForTargetClose::init_(heap); +} + +void WaitForCloseOrWaterSide::enter_(ksys::act::ai::InlineParamPack* params) { + WaitForTargetClose::enter_(params); +} + +void WaitForCloseOrWaterSide::leave_() { + WaitForTargetClose::leave_(); +} + +void WaitForCloseOrWaterSide::loadParams_() { + WaitForTargetClose::loadParams_(); + getStaticParam(&mDistFromWater_s, "DistFromWater"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitForCloseOrWaterSide.h b/src/Game/AI/AI/aiWaitForCloseOrWaterSide.h new file mode 100644 index 00000000..b7d84190 --- /dev/null +++ b/src/Game/AI/AI/aiWaitForCloseOrWaterSide.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiWaitForTargetClose.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitForCloseOrWaterSide : public WaitForTargetClose { + SEAD_RTTI_OVERRIDE(WaitForCloseOrWaterSide, WaitForTargetClose) +public: + explicit WaitForCloseOrWaterSide(const InitArg& arg); + ~WaitForCloseOrWaterSide() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x58 + const float* mDistFromWater_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitForTargetClose.cpp b/src/Game/AI/AI/aiWaitForTargetClose.cpp new file mode 100644 index 00000000..556746b0 --- /dev/null +++ b/src/Game/AI/AI/aiWaitForTargetClose.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWaitForTargetClose.h" + +namespace uking::ai { + +WaitForTargetClose::WaitForTargetClose(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaitForTargetClose::~WaitForTargetClose() = default; + +bool WaitForTargetClose::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaitForTargetClose::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaitForTargetClose::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaitForTargetClose::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mRange_s, "Range"); + getStaticParam(&mFailRange_s, "FailRange"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitForTargetClose.h b/src/Game/AI/AI/aiWaitForTargetClose.h new file mode 100644 index 00000000..9d6b3d83 --- /dev/null +++ b/src/Game/AI/AI/aiWaitForTargetClose.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitForTargetClose : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaitForTargetClose, ksys::act::ai::Ai) +public: + explicit WaitForTargetClose(const InitArg& arg); + ~WaitForTargetClose() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mRange_s{}; + // static_param at offset 0x48 + const float* mFailRange_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitNearTarget.cpp b/src/Game/AI/AI/aiWaitNearTarget.cpp new file mode 100644 index 00000000..996f02d9 --- /dev/null +++ b/src/Game/AI/AI/aiWaitNearTarget.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiWaitNearTarget.h" + +namespace uking::ai { + +WaitNearTarget::WaitNearTarget(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaitNearTarget::~WaitNearTarget() = default; + +bool WaitNearTarget::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaitNearTarget::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaitNearTarget::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaitNearTarget::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mBaseDist_s, "BaseDist"); + getStaticParam(&mStartCloseDistOffset_s, "StartCloseDistOffset"); + getStaticParam(&mOutDistOffset_s, "OutDistOffset"); + getStaticParam(&mIsCheckLineReachableForClose_s, "IsCheckLineReachableForClose"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitNearTarget.h b/src/Game/AI/AI/aiWaitNearTarget.h new file mode 100644 index 00000000..24340f01 --- /dev/null +++ b/src/Game/AI/AI/aiWaitNearTarget.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitNearTarget : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaitNearTarget, ksys::act::ai::Ai) +public: + explicit WaitNearTarget(const InitArg& arg); + ~WaitNearTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const float* mBaseDist_s{}; + // static_param at offset 0x48 + const float* mStartCloseDistOffset_s{}; + // static_param at offset 0x50 + const float* mOutDistOffset_s{}; + // static_param at offset 0x58 + const bool* mIsCheckLineReachableForClose_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.cpp b/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.cpp new file mode 100644 index 00000000..34cb462c --- /dev/null +++ b/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiWaitNearTargetAwarenessRange.h" + +namespace uking::ai { + +WaitNearTargetAwarenessRange::WaitNearTargetAwarenessRange(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +WaitNearTargetAwarenessRange::~WaitNearTargetAwarenessRange() = default; + +bool WaitNearTargetAwarenessRange::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaitNearTargetAwarenessRange::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaitNearTargetAwarenessRange::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaitNearTargetAwarenessRange::loadParams_() { + getStaticParam(&mAddAwarenessRangeType_s, "AddAwarenessRangeType"); + getStaticParam(&mStartCloseDist_s, "StartCloseDist"); + getStaticParam(&mOutDist_s, "OutDist"); + getStaticParam(&mEndCloseDist_s, "EndCloseDist"); + getStaticParam(&mUseNavMeshRequest_s, "UseNavMeshRequest"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.h b/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.h new file mode 100644 index 00000000..91f609ce --- /dev/null +++ b/src/Game/AI/AI/aiWaitNearTargetAwarenessRange.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitNearTargetAwarenessRange : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaitNearTargetAwarenessRange, ksys::act::ai::Ai) +public: + explicit WaitNearTargetAwarenessRange(const InitArg& arg); + ~WaitNearTargetAwarenessRange() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAddAwarenessRangeType_s{}; + // static_param at offset 0x40 + const float* mStartCloseDist_s{}; + // static_param at offset 0x48 + const float* mOutDist_s{}; + // static_param at offset 0x50 + const float* mEndCloseDist_s{}; + // static_param at offset 0x58 + const bool* mUseNavMeshRequest_s{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitPartsSleep.cpp b/src/Game/AI/AI/aiWaitPartsSleep.cpp new file mode 100644 index 00000000..a8211d9f --- /dev/null +++ b/src/Game/AI/AI/aiWaitPartsSleep.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWaitPartsSleep.h" + +namespace uking::ai { + +WaitPartsSleep::WaitPartsSleep(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaitPartsSleep::~WaitPartsSleep() = default; + +bool WaitPartsSleep::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaitPartsSleep::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaitPartsSleep::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaitPartsSleep::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaitPartsSleep.h b/src/Game/AI/AI/aiWaitPartsSleep.h new file mode 100644 index 00000000..32a18d21 --- /dev/null +++ b/src/Game/AI/AI/aiWaitPartsSleep.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaitPartsSleep : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaitPartsSleep, ksys::act::ai::Ai) +public: + explicit WaitPartsSleep(const InitArg& arg); + ~WaitPartsSleep() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpActivateTerminal.cpp b/src/Game/AI/AI/aiWarpActivateTerminal.cpp new file mode 100644 index 00000000..bc7dd5f3 --- /dev/null +++ b/src/Game/AI/AI/aiWarpActivateTerminal.cpp @@ -0,0 +1,30 @@ +#include "Game/AI/AI/aiWarpActivateTerminal.h" + +namespace uking::ai { + +WarpActivateTerminal::WarpActivateTerminal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WarpActivateTerminal::~WarpActivateTerminal() = default; + +bool WarpActivateTerminal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WarpActivateTerminal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WarpActivateTerminal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WarpActivateTerminal::loadParams_() { + getStaticParam(&mDoLimitAngle_s, "DoLimitAngle"); + getStaticParam(&mIsAbleToReboot_s, "IsAbleToReboot"); + getStaticParam(&mIsCheckLimit_s, "IsCheckLimit"); + getStaticParam(&mIsRejectMsgForRemains_s, "IsRejectMsgForRemains"); + getMapUnitParam(&mRemainsTerminalType_m, "RemainsTerminalType"); + getMapUnitParam(&mRemainsTerminalIndex_m, "RemainsTerminalIndex"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpActivateTerminal.h b/src/Game/AI/AI/aiWarpActivateTerminal.h new file mode 100644 index 00000000..ee7fad0c --- /dev/null +++ b/src/Game/AI/AI/aiWarpActivateTerminal.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WarpActivateTerminal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WarpActivateTerminal, ksys::act::ai::Ai) +public: + explicit WarpActivateTerminal(const InitArg& arg); + ~WarpActivateTerminal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDoLimitAngle_s{}; + // static_param at offset 0x40 + const bool* mIsAbleToReboot_s{}; + // static_param at offset 0x48 + const bool* mIsCheckLimit_s{}; + // static_param at offset 0x50 + const bool* mIsRejectMsgForRemains_s{}; + // map_unit_param at offset 0x58 + const int* mRemainsTerminalType_m{}; + // map_unit_param at offset 0x60 + const int* mRemainsTerminalIndex_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpSafeTagRoot.cpp b/src/Game/AI/AI/aiWarpSafeTagRoot.cpp new file mode 100644 index 00000000..d7fc83c3 --- /dev/null +++ b/src/Game/AI/AI/aiWarpSafeTagRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWarpSafeTagRoot.h" + +namespace uking::ai { + +WarpSafeTagRoot::WarpSafeTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WarpSafeTagRoot::~WarpSafeTagRoot() = default; + +bool WarpSafeTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WarpSafeTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WarpSafeTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WarpSafeTagRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpSafeTagRoot.h b/src/Game/AI/AI/aiWarpSafeTagRoot.h new file mode 100644 index 00000000..5c736de6 --- /dev/null +++ b/src/Game/AI/AI/aiWarpSafeTagRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WarpSafeTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WarpSafeTagRoot, ksys::act::ai::Ai) +public: + explicit WarpSafeTagRoot(const InitArg& arg); + ~WarpSafeTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpTagRoot.cpp b/src/Game/AI/AI/aiWarpTagRoot.cpp new file mode 100644 index 00000000..beac0200 --- /dev/null +++ b/src/Game/AI/AI/aiWarpTagRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWarpTagRoot.h" + +namespace uking::ai { + +WarpTagRoot::WarpTagRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WarpTagRoot::~WarpTagRoot() = default; + +bool WarpTagRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WarpTagRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WarpTagRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WarpTagRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWarpTagRoot.h b/src/Game/AI/AI/aiWarpTagRoot.h new file mode 100644 index 00000000..2dccc9a3 --- /dev/null +++ b/src/Game/AI/AI/aiWarpTagRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WarpTagRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WarpTagRoot, ksys::act::ai::Ai) +public: + explicit WarpTagRoot(const InitArg& arg); + ~WarpTagRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterFallWithSound.cpp b/src/Game/AI/AI/aiWaterFallWithSound.cpp new file mode 100644 index 00000000..d869bf3e --- /dev/null +++ b/src/Game/AI/AI/aiWaterFallWithSound.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWaterFallWithSound.h" + +namespace uking::ai { + +WaterFallWithSound::WaterFallWithSound(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaterFallWithSound::~WaterFallWithSound() = default; + +bool WaterFallWithSound::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaterFallWithSound::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaterFallWithSound::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaterFallWithSound::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterFallWithSound.h b/src/Game/AI/AI/aiWaterFallWithSound.h new file mode 100644 index 00000000..099bb4ec --- /dev/null +++ b/src/Game/AI/AI/aiWaterFallWithSound.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaterFallWithSound : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaterFallWithSound, ksys::act::ai::Ai) +public: + explicit WaterFallWithSound(const InitArg& arg); + ~WaterFallWithSound() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurface.cpp b/src/Game/AI/AI/aiWaterSurface.cpp new file mode 100644 index 00000000..597dba11 --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurface.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWaterSurface.h" + +namespace uking::ai { + +WaterSurface::WaterSurface(const InitArg& arg) : WaterSurfaceBase(arg) {} + +WaterSurface::~WaterSurface() = default; + +bool WaterSurface::init_(sead::Heap* heap) { + return WaterSurfaceBase::init_(heap); +} + +void WaterSurface::enter_(ksys::act::ai::InlineParamPack* params) { + WaterSurfaceBase::enter_(params); +} + +void WaterSurface::leave_() { + WaterSurfaceBase::leave_(); +} + +void WaterSurface::loadParams_() { + WaterSurfaceBase::loadParams_(); + getStaticParam(&mLinkTagType_s, "LinkTagType"); + getMapUnitParam(&mRiseLength_m, "RiseLength"); + getMapUnitParam(&mRiseSpeed_m, "RiseSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurface.h b/src/Game/AI/AI/aiWaterSurface.h new file mode 100644 index 00000000..8d09c643 --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurface.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiWaterSurfaceBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaterSurface : public WaterSurfaceBase { + SEAD_RTTI_OVERRIDE(WaterSurface, WaterSurfaceBase) +public: + explicit WaterSurface(const InitArg& arg); + ~WaterSurface() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x78 + const int* mLinkTagType_s{}; + // map_unit_param at offset 0x80 + const float* mRiseLength_m{}; + // map_unit_param at offset 0x88 + const float* mRiseSpeed_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurface4RemainsLava.cpp b/src/Game/AI/AI/aiWaterSurface4RemainsLava.cpp new file mode 100644 index 00000000..74a9fae4 --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurface4RemainsLava.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWaterSurface4RemainsLava.h" + +namespace uking::ai { + +WaterSurface4RemainsLava::WaterSurface4RemainsLava(const InitArg& arg) : WaterSurface(arg) {} + +WaterSurface4RemainsLava::~WaterSurface4RemainsLava() = default; + +bool WaterSurface4RemainsLava::init_(sead::Heap* heap) { + return WaterSurface::init_(heap); +} + +void WaterSurface4RemainsLava::enter_(ksys::act::ai::InlineParamPack* params) { + WaterSurface::enter_(params); +} + +void WaterSurface4RemainsLava::leave_() { + WaterSurface::leave_(); +} + +void WaterSurface4RemainsLava::loadParams_() { + WaterSurface::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurface4RemainsLava.h b/src/Game/AI/AI/aiWaterSurface4RemainsLava.h new file mode 100644 index 00000000..51bfafac --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurface4RemainsLava.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWaterSurface.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaterSurface4RemainsLava : public WaterSurface { + SEAD_RTTI_OVERRIDE(WaterSurface4RemainsLava, WaterSurface) +public: + explicit WaterSurface4RemainsLava(const InitArg& arg); + ~WaterSurface4RemainsLava() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurfaceBase.cpp b/src/Game/AI/AI/aiWaterSurfaceBase.cpp new file mode 100644 index 00000000..05f1903c --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurfaceBase.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWaterSurfaceBase.h" + +namespace uking::ai { + +WaterSurfaceBase::WaterSurfaceBase(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WaterSurfaceBase::~WaterSurfaceBase() = default; + +bool WaterSurfaceBase::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WaterSurfaceBase::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WaterSurfaceBase::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WaterSurfaceBase::loadParams_() { + getMapUnitParam(&mFlowSpeedFactor_m, "FlowSpeedFactor"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWaterSurfaceBase.h b/src/Game/AI/AI/aiWaterSurfaceBase.h new file mode 100644 index 00000000..7c804b1d --- /dev/null +++ b/src/Game/AI/AI/aiWaterSurfaceBase.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WaterSurfaceBase : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WaterSurfaceBase, ksys::act::ai::Ai) +public: + explicit WaterSurfaceBase(const InitArg& arg); + ~WaterSurfaceBase() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mFlowSpeedFactor_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeakPointRoot.cpp b/src/Game/AI/AI/aiWeakPointRoot.cpp new file mode 100644 index 00000000..c305ef12 --- /dev/null +++ b/src/Game/AI/AI/aiWeakPointRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWeakPointRoot.h" + +namespace uking::ai { + +WeakPointRoot::WeakPointRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeakPointRoot::~WeakPointRoot() = default; + +bool WeakPointRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeakPointRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeakPointRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeakPointRoot::loadParams_() { + getStaticParam(&mOwnerDamage_s, "OwnerDamage"); + getStaticParam(&mIsBreakable_s, "IsBreakable"); + getStaticParam(&mIsSyncDamage_s, "IsSyncDamage"); + getStaticParam(&mIsShowCriticalEffect_s, "IsShowCriticalEffect"); + getStaticParam(&mIsNoReaction_s, "IsNoReaction"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeakPointRoot.h b/src/Game/AI/AI/aiWeakPointRoot.h new file mode 100644 index 00000000..cafb9b70 --- /dev/null +++ b/src/Game/AI/AI/aiWeakPointRoot.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeakPointRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeakPointRoot, ksys::act::ai::Ai) +public: + explicit WeakPointRoot(const InitArg& arg); + ~WeakPointRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mOwnerDamage_s{}; + // static_param at offset 0x40 + const bool* mIsBreakable_s{}; + // static_param at offset 0x48 + const bool* mIsSyncDamage_s{}; + // static_param at offset 0x50 + const bool* mIsShowCriticalEffect_s{}; + // static_param at offset 0x58 + const bool* mIsNoReaction_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeakStateSelecter.cpp b/src/Game/AI/AI/aiWeakStateSelecter.cpp new file mode 100644 index 00000000..10a103b6 --- /dev/null +++ b/src/Game/AI/AI/aiWeakStateSelecter.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWeakStateSelecter.h" + +namespace uking::ai { + +WeakStateSelecter::WeakStateSelecter(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeakStateSelecter::~WeakStateSelecter() = default; + +bool WeakStateSelecter::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeakStateSelecter::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeakStateSelecter::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeakStateSelecter::loadParams_() { + getStaticParam(&mIsAlwaysUpdate_s, "IsAlwaysUpdate"); + getAITreeVariable(&mIsWeakPointAppearMode_a, "IsWeakPointAppearMode"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeakStateSelecter.h b/src/Game/AI/AI/aiWeakStateSelecter.h new file mode 100644 index 00000000..c6930171 --- /dev/null +++ b/src/Game/AI/AI/aiWeakStateSelecter.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeakStateSelecter : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeakStateSelecter, ksys::act::ai::Ai) +public: + explicit WeakStateSelecter(const InitArg& arg); + ~WeakStateSelecter() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const bool* mIsAlwaysUpdate_s{}; + // aitree_variable at offset 0x40 + bool* mIsWeakPointAppearMode_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.cpp b/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.cpp new file mode 100644 index 00000000..c13fee5d --- /dev/null +++ b/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiWeaponEquipEnemyWakeUp.h" + +namespace uking::ai { + +WeaponEquipEnemyWakeUp::WeaponEquipEnemyWakeUp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponEquipEnemyWakeUp::~WeaponEquipEnemyWakeUp() = default; + +bool WeaponEquipEnemyWakeUp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponEquipEnemyWakeUp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponEquipEnemyWakeUp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponEquipEnemyWakeUp::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); + getStaticParam(&mShieldIdx_s, "ShieldIdx"); + getStaticParam(&mWeaponGetRange_s, "WeaponGetRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.h b/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.h new file mode 100644 index 00000000..5e63f3a0 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponEquipEnemyWakeUp.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponEquipEnemyWakeUp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponEquipEnemyWakeUp, ksys::act::ai::Ai) +public: + explicit WeaponEquipEnemyWakeUp(const InitArg& arg); + ~WeaponEquipEnemyWakeUp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // static_param at offset 0x40 + const int* mShieldIdx_s{}; + // static_param at offset 0x48 + const float* mWeaponGetRange_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponEquipedAI.cpp b/src/Game/AI/AI/aiWeaponEquipedAI.cpp new file mode 100644 index 00000000..b34f15bc --- /dev/null +++ b/src/Game/AI/AI/aiWeaponEquipedAI.cpp @@ -0,0 +1,17 @@ +#include "Game/AI/AI/aiWeaponEquipedAI.h" + +namespace uking::ai { + +WeaponEquipedAI::WeaponEquipedAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponEquipedAI::~WeaponEquipedAI() = default; + +void WeaponEquipedAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponEquipedAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponEquipedAI.h b/src/Game/AI/AI/aiWeaponEquipedAI.h new file mode 100644 index 00000000..df0660c2 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponEquipedAI.h @@ -0,0 +1,19 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponEquipedAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponEquipedAI, ksys::act::ai::Ai) +public: + explicit WeaponEquipedAI(const InitArg& arg); + ~WeaponEquipedAI() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponHoldSelector.cpp b/src/Game/AI/AI/aiWeaponHoldSelector.cpp new file mode 100644 index 00000000..1a06229f --- /dev/null +++ b/src/Game/AI/AI/aiWeaponHoldSelector.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWeaponHoldSelector.h" + +namespace uking::ai { + +WeaponHoldSelector::WeaponHoldSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponHoldSelector::~WeaponHoldSelector() = default; + +bool WeaponHoldSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponHoldSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponHoldSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponHoldSelector::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponHoldSelector.h b/src/Game/AI/AI/aiWeaponHoldSelector.h new file mode 100644 index 00000000..5ab50093 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponHoldSelector.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponHoldSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponHoldSelector, ksys::act::ai::Ai) +public: + explicit WeaponHoldSelector(const InitArg& arg); + ~WeaponHoldSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponOnetimeUse.cpp b/src/Game/AI/AI/aiWeaponOnetimeUse.cpp new file mode 100644 index 00000000..1a5e9c12 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponOnetimeUse.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWeaponOnetimeUse.h" + +namespace uking::ai { + +WeaponOnetimeUse::WeaponOnetimeUse(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponOnetimeUse::~WeaponOnetimeUse() = default; + +bool WeaponOnetimeUse::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponOnetimeUse::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponOnetimeUse::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponOnetimeUse::loadParams_() { + getDynamicParam(&mTargetPos_d, "TargetPos"); + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponOnetimeUse.h b/src/Game/AI/AI/aiWeaponOnetimeUse.h new file mode 100644 index 00000000..a1c73dcb --- /dev/null +++ b/src/Game/AI/AI/aiWeaponOnetimeUse.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponOnetimeUse : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponOnetimeUse, ksys::act::ai::Ai) +public: + explicit WeaponOnetimeUse(const InitArg& arg); + ~WeaponOnetimeUse() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponPrepareSelect.cpp b/src/Game/AI/AI/aiWeaponPrepareSelect.cpp new file mode 100644 index 00000000..7f704bbf --- /dev/null +++ b/src/Game/AI/AI/aiWeaponPrepareSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWeaponPrepareSelect.h" + +namespace uking::ai { + +WeaponPrepareSelect::WeaponPrepareSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponPrepareSelect::~WeaponPrepareSelect() = default; + +bool WeaponPrepareSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponPrepareSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponPrepareSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponPrepareSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponPrepareSelect.h b/src/Game/AI/AI/aiWeaponPrepareSelect.h new file mode 100644 index 00000000..ff15e327 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponPrepareSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponPrepareSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponPrepareSelect, ksys::act::ai::Ai) +public: + explicit WeaponPrepareSelect(const InitArg& arg); + ~WeaponPrepareSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponRangeKindSelect.cpp b/src/Game/AI/AI/aiWeaponRangeKindSelect.cpp new file mode 100644 index 00000000..731c7c97 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponRangeKindSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWeaponRangeKindSelect.h" + +namespace uking::ai { + +WeaponRangeKindSelect::WeaponRangeKindSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool WeaponRangeKindSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponRangeKindSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponRangeKindSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponRangeKindSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponRangeKindSelect.h b/src/Game/AI/AI/aiWeaponRangeKindSelect.h new file mode 100644 index 00000000..9f87f69a --- /dev/null +++ b/src/Game/AI/AI/aiWeaponRangeKindSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponRangeKindSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponRangeKindSelect, ksys::act::ai::Ai) +public: + explicit WeaponRangeKindSelect(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponRootAI.cpp b/src/Game/AI/AI/aiWeaponRootAI.cpp new file mode 100644 index 00000000..17a9d618 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponRootAI.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWeaponRootAI.h" + +namespace uking::ai { + +WeaponRootAI::WeaponRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponRootAI::~WeaponRootAI() = default; + +bool WeaponRootAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponRootAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponRootAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponRootAI::loadParams_() { + getStaticParam(&mBlinkFrame_s, "BlinkFrame"); + getStaticParam(&mFallOutSpeed_s, "FallOutSpeed"); + getStaticParam(&mLandNoiseLevel_s, "LandNoiseLevel"); + getMapUnitParam(&mIsFixedPlace_m, "IsFixedPlace"); + getMapUnitParam(&mIsEmitLandNoise_m, "IsEmitLandNoise"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponRootAI.h b/src/Game/AI/AI/aiWeaponRootAI.h new file mode 100644 index 00000000..4b5073a1 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponRootAI.h @@ -0,0 +1,33 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponRootAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponRootAI, ksys::act::ai::Ai) +public: + explicit WeaponRootAI(const InitArg& arg); + ~WeaponRootAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x48]; + // static_param at offset 0x80 + const float* mBlinkFrame_s{}; + // static_param at offset 0x88 + const float* mFallOutSpeed_s{}; + // static_param at offset 0x90 + const float* mLandNoiseLevel_s{}; + // map_unit_param at offset 0x98 + const bool* mIsFixedPlace_m{}; + // map_unit_param at offset 0xa0 + const bool* mIsEmitLandNoise_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponSelector.cpp b/src/Game/AI/AI/aiWeaponSelector.cpp new file mode 100644 index 00000000..12fa4f85 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponSelector.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiWeaponSelector.h" + +namespace uking::ai { + +WeaponSelector::WeaponSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool WeaponSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponSelector.h b/src/Game/AI/AI/aiWeaponSelector.h new file mode 100644 index 00000000..3f030e88 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponSelector.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponSelector, ksys::act::ai::Ai) +public: + explicit WeaponSelector(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponSubTypeSelect.cpp b/src/Game/AI/AI/aiWeaponSubTypeSelect.cpp new file mode 100644 index 00000000..40cb063e --- /dev/null +++ b/src/Game/AI/AI/aiWeaponSubTypeSelect.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiWeaponSubTypeSelect.h" + +namespace uking::ai { + +WeaponSubTypeSelect::WeaponSubTypeSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponSubTypeSelect::~WeaponSubTypeSelect() = default; + +void WeaponSubTypeSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponSubTypeSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponSubTypeSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponSubTypeSelect.h b/src/Game/AI/AI/aiWeaponSubTypeSelect.h new file mode 100644 index 00000000..7b4daedb --- /dev/null +++ b/src/Game/AI/AI/aiWeaponSubTypeSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponSubTypeSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponSubTypeSelect, ksys::act::ai::Ai) +public: + explicit WeaponSubTypeSelect(const InitArg& arg); + ~WeaponSubTypeSelect() override; + + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponThrowerSelector.cpp b/src/Game/AI/AI/aiWeaponThrowerSelector.cpp new file mode 100644 index 00000000..60fb223a --- /dev/null +++ b/src/Game/AI/AI/aiWeaponThrowerSelector.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWeaponThrowerSelector.h" + +namespace uking::ai { + +WeaponThrowerSelector::WeaponThrowerSelector(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponThrowerSelector::~WeaponThrowerSelector() = default; + +bool WeaponThrowerSelector::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponThrowerSelector::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponThrowerSelector::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponThrowerSelector::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponThrowerSelector.h b/src/Game/AI/AI/aiWeaponThrowerSelector.h new file mode 100644 index 00000000..50e0cdd0 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponThrowerSelector.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponThrowerSelector : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponThrowerSelector, ksys::act::ai::Ai) +public: + explicit WeaponThrowerSelector(const InitArg& arg); + ~WeaponThrowerSelector() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponTrueFormSelect.cpp b/src/Game/AI/AI/aiWeaponTrueFormSelect.cpp new file mode 100644 index 00000000..ae5a22b8 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponTrueFormSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWeaponTrueFormSelect.h" + +namespace uking::ai { + +WeaponTrueFormSelect::WeaponTrueFormSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeaponTrueFormSelect::~WeaponTrueFormSelect() = default; + +bool WeaponTrueFormSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponTrueFormSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponTrueFormSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponTrueFormSelect::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponTrueFormSelect.h b/src/Game/AI/AI/aiWeaponTrueFormSelect.h new file mode 100644 index 00000000..df9ad68f --- /dev/null +++ b/src/Game/AI/AI/aiWeaponTrueFormSelect.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponTrueFormSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponTrueFormSelect, ksys::act::ai::Ai) +public: + explicit WeaponTrueFormSelect(const InitArg& arg); + ~WeaponTrueFormSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponUsageSelect.cpp b/src/Game/AI/AI/aiWeaponUsageSelect.cpp new file mode 100644 index 00000000..cfee1eed --- /dev/null +++ b/src/Game/AI/AI/aiWeaponUsageSelect.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWeaponUsageSelect.h" + +namespace uking::ai { + +WeaponUsageSelect::WeaponUsageSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool WeaponUsageSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeaponUsageSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeaponUsageSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeaponUsageSelect::loadParams_() { + getStaticParam(&mWeaponIdx_s, "WeaponIdx"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeaponUsageSelect.h b/src/Game/AI/AI/aiWeaponUsageSelect.h new file mode 100644 index 00000000..58502119 --- /dev/null +++ b/src/Game/AI/AI/aiWeaponUsageSelect.h @@ -0,0 +1,22 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeaponUsageSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeaponUsageSelect, ksys::act::ai::Ai) +public: + explicit WeaponUsageSelect(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeaponIdx_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeatherReactionCheck.cpp b/src/Game/AI/AI/aiWeatherReactionCheck.cpp new file mode 100644 index 00000000..4270e160 --- /dev/null +++ b/src/Game/AI/AI/aiWeatherReactionCheck.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWeatherReactionCheck.h" + +namespace uking::ai { + +WeatherReactionCheck::WeatherReactionCheck(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WeatherReactionCheck::~WeatherReactionCheck() = default; + +bool WeatherReactionCheck::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WeatherReactionCheck::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WeatherReactionCheck::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WeatherReactionCheck::loadParams_() { + getStaticParam(&mRandTime_s, "RandTime"); + getStaticParam(&mIsReactionRain_s, "IsReactionRain"); + getStaticParam(&mIsReactionSnow_s, "IsReactionSnow"); + getStaticParam(&mIsReturnNormal_s, "IsReturnNormal"); + getStaticParam(&mIsForceChangeable_s, "IsForceChangeable"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWeatherReactionCheck.h b/src/Game/AI/AI/aiWeatherReactionCheck.h new file mode 100644 index 00000000..95e3b866 --- /dev/null +++ b/src/Game/AI/AI/aiWeatherReactionCheck.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WeatherReactionCheck : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WeatherReactionCheck, ksys::act::ai::Ai) +public: + explicit WeatherReactionCheck(const InitArg& arg); + ~WeatherReactionCheck() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mRandTime_s{}; + // static_param at offset 0x40 + const bool* mIsReactionRain_s{}; + // static_param at offset 0x48 + const bool* mIsReactionSnow_s{}; + // static_param at offset 0x50 + const bool* mIsReturnNormal_s{}; + // static_param at offset 0x58 + const bool* mIsForceChangeable_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWetSelect.cpp b/src/Game/AI/AI/aiWetSelect.cpp new file mode 100644 index 00000000..0d11baab --- /dev/null +++ b/src/Game/AI/AI/aiWetSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWetSelect.h" + +namespace uking::ai { + +WetSelect::WetSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WetSelect::~WetSelect() = default; + +bool WetSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WetSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WetSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WetSelect::loadParams_() { + getStaticParam(&mWetRateThreashold_s, "WetRateThreashold"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWetSelect.h b/src/Game/AI/AI/aiWetSelect.h new file mode 100644 index 00000000..95e78afc --- /dev/null +++ b/src/Game/AI/AI/aiWetSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WetSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WetSelect, ksys::act::ai::Ai) +public: + explicit WetSelect(const InitArg& arg); + ~WetSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWetRateThreashold_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWholeDungeonRotateTag.cpp b/src/Game/AI/AI/aiWholeDungeonRotateTag.cpp new file mode 100644 index 00000000..13cbab74 --- /dev/null +++ b/src/Game/AI/AI/aiWholeDungeonRotateTag.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWholeDungeonRotateTag.h" + +namespace uking::ai { + +WholeDungeonRotateTag::WholeDungeonRotateTag(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WholeDungeonRotateTag::~WholeDungeonRotateTag() = default; + +bool WholeDungeonRotateTag::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WholeDungeonRotateTag::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WholeDungeonRotateTag::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WholeDungeonRotateTag::loadParams_() { + getMapUnitParam(&mTiltAngle_m, "TiltAngle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWholeDungeonRotateTag.h b/src/Game/AI/AI/aiWholeDungeonRotateTag.h new file mode 100644 index 00000000..e50850b3 --- /dev/null +++ b/src/Game/AI/AI/aiWholeDungeonRotateTag.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WholeDungeonRotateTag : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WholeDungeonRotateTag, ksys::act::ai::Ai) +public: + explicit WholeDungeonRotateTag(const InitArg& arg); + ~WholeDungeonRotateTag() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const float* mTiltAngle_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWildHorseDefWanderAI.cpp b/src/Game/AI/AI/aiWildHorseDefWanderAI.cpp new file mode 100644 index 00000000..19eee508 --- /dev/null +++ b/src/Game/AI/AI/aiWildHorseDefWanderAI.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiWildHorseDefWanderAI.h" + +namespace uking::ai { + +WildHorseDefWanderAI::WildHorseDefWanderAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WildHorseDefWanderAI::~WildHorseDefWanderAI() = default; + +bool WildHorseDefWanderAI::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WildHorseDefWanderAI::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WildHorseDefWanderAI::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WildHorseDefWanderAI::loadParams_() { + getStaticParam(&mChangeWaitRate_s, "ChangeWaitRate"); + getStaticParam(&mMaxWaitTime_s, "MaxWaitTime"); + getStaticParam(&mMinWaitTime_s, "MinWaitTime"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWildHorseDefWanderAI.h b/src/Game/AI/AI/aiWildHorseDefWanderAI.h new file mode 100644 index 00000000..66c138f1 --- /dev/null +++ b/src/Game/AI/AI/aiWildHorseDefWanderAI.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WildHorseDefWanderAI : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WildHorseDefWanderAI, ksys::act::ai::Ai) +public: + explicit WildHorseDefWanderAI(const InitArg& arg); + ~WildHorseDefWanderAI() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mChangeWaitRate_s{}; + // static_param at offset 0x40 + const float* mMaxWaitTime_s{}; + // static_param at offset 0x48 + const float* mMinWaitTime_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallAttackLevelSelect.cpp b/src/Game/AI/AI/aiWillBallAttackLevelSelect.cpp new file mode 100644 index 00000000..3a0bd327 --- /dev/null +++ b/src/Game/AI/AI/aiWillBallAttackLevelSelect.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWillBallAttackLevelSelect.h" + +namespace uking::ai { + +WillBallAttackLevelSelect::WillBallAttackLevelSelect(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WillBallAttackLevelSelect::~WillBallAttackLevelSelect() = default; + +bool WillBallAttackLevelSelect::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WillBallAttackLevelSelect::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WillBallAttackLevelSelect::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WillBallAttackLevelSelect::loadParams_() { + getDynamicParam(&mLevel_d, "Level"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallAttackLevelSelect.h b/src/Game/AI/AI/aiWillBallAttackLevelSelect.h new file mode 100644 index 00000000..4aed47f1 --- /dev/null +++ b/src/Game/AI/AI/aiWillBallAttackLevelSelect.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WillBallAttackLevelSelect : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WillBallAttackLevelSelect, ksys::act::ai::Ai) +public: + explicit WillBallAttackLevelSelect(const InitArg& arg); + ~WillBallAttackLevelSelect() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x38 + int* mLevel_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallFollowAttack.cpp b/src/Game/AI/AI/aiWillBallFollowAttack.cpp new file mode 100644 index 00000000..9f16119b --- /dev/null +++ b/src/Game/AI/AI/aiWillBallFollowAttack.cpp @@ -0,0 +1,32 @@ +#include "Game/AI/AI/aiWillBallFollowAttack.h" + +namespace uking::ai { + +WillBallFollowAttack::WillBallFollowAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WillBallFollowAttack::~WillBallFollowAttack() = default; + +bool WillBallFollowAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WillBallFollowAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WillBallFollowAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WillBallFollowAttack::loadParams_() { + getStaticParam(&mImmidiateLightningTime_s, "ImmidiateLightningTime"); + getStaticParam(&mCycleY_s, "CycleY"); + getStaticParam(&mDelayTimer_s, "DelayTimer"); + getStaticParam(&mImmidiateLightningXZ_s, "ImmidiateLightningXZ"); + getStaticParam(&mImmidiateLightningY_s, "ImmidiateLightningY"); + getStaticParam(&mAmplitudeY_s, "AmplitudeY"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mCenterPos_d, "CenterPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallFollowAttack.h b/src/Game/AI/AI/aiWillBallFollowAttack.h new file mode 100644 index 00000000..96823d4f --- /dev/null +++ b/src/Game/AI/AI/aiWillBallFollowAttack.h @@ -0,0 +1,37 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WillBallFollowAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WillBallFollowAttack, ksys::act::ai::Ai) +public: + explicit WillBallFollowAttack(const InitArg& arg); + ~WillBallFollowAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mImmidiateLightningTime_s{}; + // static_param at offset 0x40 + const int* mCycleY_s{}; + // static_param at offset 0x48 + const int* mDelayTimer_s{}; + // static_param at offset 0x50 + const float* mImmidiateLightningXZ_s{}; + // static_param at offset 0x58 + const float* mImmidiateLightningY_s{}; + // static_param at offset 0x60 + const float* mAmplitudeY_s{}; + // dynamic_param at offset 0x68 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x70 + sead::Vector3f* mCenterPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.cpp b/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.cpp new file mode 100644 index 00000000..bd442805 --- /dev/null +++ b/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiWillBallFollowAttackWithDynAng.h" + +namespace uking::ai { + +WillBallFollowAttackWithDynAng::WillBallFollowAttackWithDynAng(const InitArg& arg) + : WillBallFollowAttack(arg) {} + +WillBallFollowAttackWithDynAng::~WillBallFollowAttackWithDynAng() = default; + +bool WillBallFollowAttackWithDynAng::init_(sead::Heap* heap) { + return WillBallFollowAttack::init_(heap); +} + +void WillBallFollowAttackWithDynAng::enter_(ksys::act::ai::InlineParamPack* params) { + WillBallFollowAttack::enter_(params); +} + +void WillBallFollowAttackWithDynAng::leave_() { + WillBallFollowAttack::leave_(); +} + +void WillBallFollowAttackWithDynAng::loadParams_() { + WillBallFollowAttack::loadParams_(); + getDynamicParam(&mAngle_d, "Angle"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.h b/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.h new file mode 100644 index 00000000..7b7bd81a --- /dev/null +++ b/src/Game/AI/AI/aiWillBallFollowAttackWithDynAng.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiWillBallFollowAttack.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WillBallFollowAttackWithDynAng : public WillBallFollowAttack { + SEAD_RTTI_OVERRIDE(WillBallFollowAttackWithDynAng, WillBallFollowAttack) +public: + explicit WillBallFollowAttackWithDynAng(const InitArg& arg); + ~WillBallFollowAttackWithDynAng() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // dynamic_param at offset 0x90 + sead::Vector3f* mAngle_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallOperated.cpp b/src/Game/AI/AI/aiWillBallOperated.cpp new file mode 100644 index 00000000..fb8c107e --- /dev/null +++ b/src/Game/AI/AI/aiWillBallOperated.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiWillBallOperated.h" + +namespace uking::ai { + +WillBallOperated::WillBallOperated(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WillBallOperated::~WillBallOperated() = default; + +bool WillBallOperated::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WillBallOperated::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WillBallOperated::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WillBallOperated::loadParams_() { + getDynamicParam(&mWaitTime_d, "WaitTime"); + getDynamicParam(&mCommand_d, "Command"); + getDynamicParam(&mBasePos_d, "BasePos"); + getDynamicParam(&mTargetActor_d, "TargetActor"); + getStaticParam(&mWarpDist_s, "WarpDist"); + getStaticParam(&mAttakedChangeDist_s, "AttakedChangeDist"); + getStaticParam(&mIsAttackedTimeAffect_s, "IsAttackedTimeAffect"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallOperated.h b/src/Game/AI/AI/aiWillBallOperated.h new file mode 100644 index 00000000..fd05b9e4 --- /dev/null +++ b/src/Game/AI/AI/aiWillBallOperated.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WillBallOperated : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WillBallOperated, ksys::act::ai::Ai) +public: + explicit WillBallOperated(const InitArg& arg); + ~WillBallOperated() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mWarpDist_s{}; + // static_param at offset 0x40 + const float* mAttakedChangeDist_s{}; + // static_param at offset 0x48 + const bool* mIsAttackedTimeAffect_s{}; + // dynamic_param at offset 0x50 + int* mWaitTime_d{}; + // dynamic_param at offset 0x58 + int* mCommand_d{}; + // dynamic_param at offset 0x60 + sead::Vector3f* mBasePos_d{}; + // dynamic_param at offset 0x68 + ksys::act::BaseProcLink* mTargetActor_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallRoot.cpp b/src/Game/AI/AI/aiWillBallRoot.cpp new file mode 100644 index 00000000..b6c5c0ff --- /dev/null +++ b/src/Game/AI/AI/aiWillBallRoot.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiWillBallRoot.h" + +namespace uking::ai { + +WillBallRoot::WillBallRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WillBallRoot::~WillBallRoot() = default; + +bool WillBallRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WillBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WillBallRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WillBallRoot::loadParams_() { + getStaticParam(&mMagneLightningTime_s, "MagneLightningTime"); + getStaticParam(&mMinimizedTime_s, "MinimizedTime"); + getStaticParam(&mImmidiateLightningXZ_s, "ImmidiateLightningXZ"); + getStaticParam(&mImmidiateLightningY_s, "ImmidiateLightningY"); + getStaticParam(&mImmidiateLightningXZTarget_s, "ImmidiateLightningXZTarget"); + getStaticParam(&mImmidiateLightningYTarget_s, "ImmidiateLightningYTarget"); + getStaticParam(&mLightningTimeMinimizeDist_s, "LightningTimeMinimizeDist"); + getStaticParam(&mIsExplode_s, "IsExplode"); + getMapUnitParam(&mCount_m, "Count"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWillBallRoot.h b/src/Game/AI/AI/aiWillBallRoot.h new file mode 100644 index 00000000..cd6cc80c --- /dev/null +++ b/src/Game/AI/AI/aiWillBallRoot.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WillBallRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WillBallRoot, ksys::act::ai::Ai) +public: + explicit WillBallRoot(const InitArg& arg); + ~WillBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMagneLightningTime_s{}; + // static_param at offset 0x40 + const int* mMinimizedTime_s{}; + // static_param at offset 0x48 + const float* mImmidiateLightningXZ_s{}; + // static_param at offset 0x50 + const float* mImmidiateLightningY_s{}; + // static_param at offset 0x58 + const float* mImmidiateLightningXZTarget_s{}; + // static_param at offset 0x60 + const float* mImmidiateLightningYTarget_s{}; + // static_param at offset 0x68 + const float* mLightningTimeMinimizeDist_s{}; + // static_param at offset 0x70 + const bool* mIsExplode_s{}; + // map_unit_param at offset 0x78 + const int* mCount_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindBoxPlace.cpp b/src/Game/AI/AI/aiWindBoxPlace.cpp new file mode 100644 index 00000000..1a1fad58 --- /dev/null +++ b/src/Game/AI/AI/aiWindBoxPlace.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWindBoxPlace.h" + +namespace uking::ai { + +WindBoxPlace::WindBoxPlace(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WindBoxPlace::~WindBoxPlace() = default; + +bool WindBoxPlace::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WindBoxPlace::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WindBoxPlace::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WindBoxPlace::loadParams_() { + getStaticParam(&mRadius_s, "Radius"); + getStaticParam(&mMaxSpeed_s, "MaxSpeed"); + getMapUnitParam(&mDirection_m, "Direction"); + getMapUnitParam(&mWindSpeed_m, "WindSpeed"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindBoxPlace.h b/src/Game/AI/AI/aiWindBoxPlace.h new file mode 100644 index 00000000..1c83301f --- /dev/null +++ b/src/Game/AI/AI/aiWindBoxPlace.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WindBoxPlace : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WindBoxPlace, ksys::act::ai::Ai) +public: + explicit WindBoxPlace(const InitArg& arg); + ~WindBoxPlace() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mRadius_s{}; + // static_param at offset 0x40 + const float* mMaxSpeed_s{}; + // map_unit_param at offset 0x48 + const int* mDirection_m{}; + // map_unit_param at offset 0x50 + const float* mWindSpeed_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindGenerator.cpp b/src/Game/AI/AI/aiWindGenerator.cpp new file mode 100644 index 00000000..82f6542e --- /dev/null +++ b/src/Game/AI/AI/aiWindGenerator.cpp @@ -0,0 +1,21 @@ +#include "Game/AI/AI/aiWindGenerator.h" + +namespace uking::ai { + +WindGenerator::WindGenerator(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +bool WindGenerator::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WindGenerator::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WindGenerator::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WindGenerator::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindGenerator.h b/src/Game/AI/AI/aiWindGenerator.h new file mode 100644 index 00000000..8c5dd859 --- /dev/null +++ b/src/Game/AI/AI/aiWindGenerator.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WindGenerator : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WindGenerator, ksys::act::ai::Ai) +public: + explicit WindGenerator(const InitArg& arg); + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindGeneratorSignal.cpp b/src/Game/AI/AI/aiWindGeneratorSignal.cpp new file mode 100644 index 00000000..558b0782 --- /dev/null +++ b/src/Game/AI/AI/aiWindGeneratorSignal.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWindGeneratorSignal.h" + +namespace uking::ai { + +WindGeneratorSignal::WindGeneratorSignal(const InitArg& arg) : WindGenerator(arg) {} + +WindGeneratorSignal::~WindGeneratorSignal() = default; + +bool WindGeneratorSignal::init_(sead::Heap* heap) { + return WindGenerator::init_(heap); +} + +void WindGeneratorSignal::enter_(ksys::act::ai::InlineParamPack* params) { + WindGenerator::enter_(params); +} + +void WindGeneratorSignal::leave_() { + WindGenerator::leave_(); +} + +void WindGeneratorSignal::loadParams_() { + WindGenerator::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWindGeneratorSignal.h b/src/Game/AI/AI/aiWindGeneratorSignal.h new file mode 100644 index 00000000..faa9ceb5 --- /dev/null +++ b/src/Game/AI/AI/aiWindGeneratorSignal.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiWindGenerator.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WindGeneratorSignal : public WindGenerator { + SEAD_RTTI_OVERRIDE(WindGeneratorSignal, WindGenerator) +public: + explicit WindGeneratorSignal(const InitArg& arg); + ~WindGeneratorSignal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWithoutWeaponArrow.cpp b/src/Game/AI/AI/aiWithoutWeaponArrow.cpp new file mode 100644 index 00000000..69a4850f --- /dev/null +++ b/src/Game/AI/AI/aiWithoutWeaponArrow.cpp @@ -0,0 +1,48 @@ +#include "Game/AI/AI/aiWithoutWeaponArrow.h" + +namespace uking::ai { + +WithoutWeaponArrow::WithoutWeaponArrow(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WithoutWeaponArrow::~WithoutWeaponArrow() = default; + +bool WithoutWeaponArrow::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WithoutWeaponArrow::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WithoutWeaponArrow::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WithoutWeaponArrow::loadParams_() { + getStaticParam(&mAtAttr_s, "AtAttr"); + getStaticParam(&mStickTime_s, "StickTime"); + getStaticParam(&mAccel_s, "Accel"); + getStaticParam(&mAimSpeed_s, "AimSpeed"); + getStaticParam(&mFallAccel_s, "FallAccel"); + getStaticParam(&mFallAimSpeed_s, "FallAimSpeed"); + getStaticParam(&mGravity_s, "Gravity"); + getStaticParam(&mAtRange_s, "AtRange"); + getStaticParam(&mAtImpulse_s, "AtImpulse"); + getStaticParam(&mAtImpact_s, "AtImpact"); + getStaticParam(&mReflectDamageRate_s, "ReflectDamageRate"); + getStaticParam(&mCanReflect_s, "CanReflect"); + getStaticParam(&mIsReflectToParent_s, "IsReflectToParent"); + getStaticParam(&mIsDelete_s, "IsDelete"); + getStaticParam(&mIsBreakIceBlock_s, "IsBreakIceBlock"); + getStaticParam(&mIsAtHitPlayerIgnore_s, "IsAtHitPlayerIgnore"); + getStaticParam(&mIsDeleteAtHit_s, "IsDeleteAtHit"); + getStaticParam(&mBindNodeName_s, "BindNodeName"); + getStaticParam(&mCallHitSEKey_s, "CallHitSEKey"); + getStaticParam(&mReflectOffset_s, "ReflectOffset"); + getStaticParam(&mRotOffset_s, "RotOffset"); + getStaticParam(&mTransOffset_s, "TransOffset"); + getMapUnitParam(&mAtMinDamage_m, "AtMinDamage"); + getMapUnitParam(&mAttackPower_m, "AttackPower"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWithoutWeaponArrow.h b/src/Game/AI/AI/aiWithoutWeaponArrow.h new file mode 100644 index 00000000..87b41a1f --- /dev/null +++ b/src/Game/AI/AI/aiWithoutWeaponArrow.h @@ -0,0 +1,69 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WithoutWeaponArrow : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WithoutWeaponArrow, ksys::act::ai::Ai) +public: + explicit WithoutWeaponArrow(const InitArg& arg); + ~WithoutWeaponArrow() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAtAttr_s{}; + // static_param at offset 0x40 + const int* mStickTime_s{}; + // static_param at offset 0x48 + const float* mAccel_s{}; + // static_param at offset 0x50 + const float* mAimSpeed_s{}; + // static_param at offset 0x58 + const float* mFallAccel_s{}; + // static_param at offset 0x60 + const float* mFallAimSpeed_s{}; + // static_param at offset 0x68 + const float* mGravity_s{}; + // static_param at offset 0x70 + const float* mAtRange_s{}; + // static_param at offset 0x78 + const float* mAtImpulse_s{}; + // static_param at offset 0x80 + const float* mAtImpact_s{}; + // static_param at offset 0x88 + const float* mReflectDamageRate_s{}; + // static_param at offset 0x90 + const bool* mCanReflect_s{}; + // static_param at offset 0x98 + const bool* mIsReflectToParent_s{}; + // static_param at offset 0xa0 + const bool* mIsDelete_s{}; + // static_param at offset 0xa8 + const bool* mIsBreakIceBlock_s{}; + // static_param at offset 0xb0 + const bool* mIsAtHitPlayerIgnore_s{}; + // static_param at offset 0xb8 + const bool* mIsDeleteAtHit_s{}; + // static_param at offset 0xc0 + sead::SafeString mBindNodeName_s{}; + // static_param at offset 0xd0 + sead::SafeString mCallHitSEKey_s{}; + // static_param at offset 0xe0 + const sead::Vector3f* mReflectOffset_s{}; + // static_param at offset 0xe8 + const sead::Vector3f* mRotOffset_s{}; + // static_param at offset 0xf0 + const sead::Vector3f* mTransOffset_s{}; + // map_unit_param at offset 0xf8 + const int* mAtMinDamage_m{}; + // map_unit_param at offset 0x100 + const int* mAttackPower_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeBlownOff.cpp b/src/Game/AI/AI/aiWizzrobeBlownOff.cpp new file mode 100644 index 00000000..09c6f472 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeBlownOff.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWizzrobeBlownOff.h" + +namespace uking::ai { + +WizzrobeBlownOff::WizzrobeBlownOff(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeBlownOff::~WizzrobeBlownOff() = default; + +bool WizzrobeBlownOff::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeBlownOff::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeBlownOff::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeBlownOff::loadParams_() { + getStaticParam(&mDrownDepth_s, "DrownDepth"); + getStaticParam(&mIsForceGetUp_s, "IsForceGetUp"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeBlownOff.h b/src/Game/AI/AI/aiWizzrobeBlownOff.h new file mode 100644 index 00000000..238f6eba --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeBlownOff.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeBlownOff : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeBlownOff, ksys::act::ai::Ai) +public: + explicit WizzrobeBlownOff(const InitArg& arg); + ~WizzrobeBlownOff() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDrownDepth_s{}; + // static_param at offset 0x40 + const bool* mIsForceGetUp_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCircleMove.cpp b/src/Game/AI/AI/aiWizzrobeCircleMove.cpp new file mode 100644 index 00000000..aaa62a3b --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCircleMove.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWizzrobeCircleMove.h" + +namespace uking::ai { + +WizzrobeCircleMove::WizzrobeCircleMove(const InitArg& arg) : CircleMoveTarget(arg) {} + +WizzrobeCircleMove::~WizzrobeCircleMove() = default; + +bool WizzrobeCircleMove::init_(sead::Heap* heap) { + return CircleMoveTarget::init_(heap); +} + +void WizzrobeCircleMove::enter_(ksys::act::ai::InlineParamPack* params) { + CircleMoveTarget::enter_(params); +} + +void WizzrobeCircleMove::leave_() { + CircleMoveTarget::leave_(); +} + +void WizzrobeCircleMove::loadParams_() { + CircleMoveTarget::loadParams_(); + getStaticParam(&mFinRadius_s, "FinRadius"); + getStaticParam(&mRadiusTimer_s, "RadiusTimer"); + getStaticParam(&mEndTimer_s, "EndTimer"); + getStaticParam(&mIsAttCentral_s, "IsAttCentral"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCircleMove.h b/src/Game/AI/AI/aiWizzrobeCircleMove.h new file mode 100644 index 00000000..49b4de9f --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCircleMove.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiCircleMoveTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeCircleMove : public CircleMoveTarget { + SEAD_RTTI_OVERRIDE(WizzrobeCircleMove, CircleMoveTarget) +public: + explicit WizzrobeCircleMove(const InitArg& arg); + ~WizzrobeCircleMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x68 + const float* mFinRadius_s{}; + // static_param at offset 0x70 + const float* mRadiusTimer_s{}; + // static_param at offset 0x78 + const float* mEndTimer_s{}; + // static_param at offset 0x80 + const bool* mIsAttCentral_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCombat.cpp b/src/Game/AI/AI/aiWizzrobeCombat.cpp new file mode 100644 index 00000000..c1c91797 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCombat.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiWizzrobeCombat.h" + +namespace uking::ai { + +WizzrobeCombat::WizzrobeCombat(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeCombat::~WizzrobeCombat() = default; + +bool WizzrobeCombat::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeCombat::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeCombat::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeCombat::loadParams_() { + getStaticParam(&mWeatherMagicRate_s, "WeatherMagicRate"); + getStaticParam(&mSummonRate_s, "SummonRate"); + getStaticParam(&mSummonBufferSize_s, "SummonBufferSize"); + getStaticParam(&mMaxHeightLevel_s, "MaxHeightLevel"); + getStaticParam(&mSummonCount_s, "SummonCount"); + getStaticParam(&mAttackLength_s, "AttackLength"); + getStaticParam(&mHeightOffset_s, "HeightOffset"); + getStaticParam(&mSummonBufferKey_s, "SummonBufferKey"); + getStaticParam(&mTargetOffset_s, "TargetOffset"); + getAITreeVariable(&mSummonCount_a, "SummonCount"); + getAITreeVariable(&mIsWizzrobeInBattleAreaFlag_a, "IsWizzrobeInBattleAreaFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCombat.h b/src/Game/AI/AI/aiWizzrobeCombat.h new file mode 100644 index 00000000..918242b6 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCombat.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeCombat : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeCombat, ksys::act::ai::Ai) +public: + explicit WizzrobeCombat(const InitArg& arg); + ~WizzrobeCombat() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mWeatherMagicRate_s{}; + // static_param at offset 0x40 + const int* mSummonRate_s{}; + // static_param at offset 0x48 + const int* mSummonBufferSize_s{}; + // static_param at offset 0x50 + const int* mMaxHeightLevel_s{}; + // static_param at offset 0x58 + const int* mSummonCount_s{}; + // static_param at offset 0x60 + const float* mAttackLength_s{}; + // static_param at offset 0x68 + const float* mHeightOffset_s{}; + // static_param at offset 0x70 + sead::SafeString mSummonBufferKey_s{}; + // static_param at offset 0x80 + const sead::Vector3f* mTargetOffset_s{}; + // aitree_variable at offset 0x88 + int* mSummonCount_a{}; + // aitree_variable at offset 0x90 + bool* mIsWizzrobeInBattleAreaFlag_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCombatMove.cpp b/src/Game/AI/AI/aiWizzrobeCombatMove.cpp new file mode 100644 index 00000000..1cef8573 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCombatMove.cpp @@ -0,0 +1,35 @@ +#include "Game/AI/AI/aiWizzrobeCombatMove.h" + +namespace uking::ai { + +WizzrobeCombatMove::WizzrobeCombatMove(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeCombatMove::~WizzrobeCombatMove() = default; + +bool WizzrobeCombatMove::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeCombatMove::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeCombatMove::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeCombatMove::loadParams_() { + getStaticParam(&mMoveCountMin_s, "MoveCountMin"); + getStaticParam(&mMoveCountMax_s, "MoveCountMax"); + getStaticParam(&mDistY_s, "DistY"); + getStaticParam(&mRetryLength_s, "RetryLength"); + getStaticParam(&mMaxDistXZ_s, "MaxDistXZ"); + getStaticParam(&mMinDistXZ_s, "MinDistXZ"); + getStaticParam(&mEscapeLength_s, "EscapeLength"); + getStaticParam(&mIgnoreHideActionASName_s, "IgnoreHideActionASName"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getDynamicParam(&mAttPos_d, "AttPos"); + getAITreeVariable(&mIsWizzrobeInBattleAreaFlag_a, "IsWizzrobeInBattleAreaFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeCombatMove.h b/src/Game/AI/AI/aiWizzrobeCombatMove.h new file mode 100644 index 00000000..3db9078c --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeCombatMove.h @@ -0,0 +1,43 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeCombatMove : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeCombatMove, ksys::act::ai::Ai) +public: + explicit WizzrobeCombatMove(const InitArg& arg); + ~WizzrobeCombatMove() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mMoveCountMin_s{}; + // static_param at offset 0x40 + const int* mMoveCountMax_s{}; + // static_param at offset 0x48 + const float* mDistY_s{}; + // static_param at offset 0x50 + const float* mRetryLength_s{}; + // static_param at offset 0x58 + const float* mMaxDistXZ_s{}; + // static_param at offset 0x60 + const float* mMinDistXZ_s{}; + // static_param at offset 0x68 + const float* mEscapeLength_s{}; + // static_param at offset 0x70 + sead::SafeString mIgnoreHideActionASName_s{}; + // dynamic_param at offset 0x80 + sead::Vector3f* mTargetPos_d{}; + // dynamic_param at offset 0x88 + sead::Vector3f* mAttPos_d{}; + // aitree_variable at offset 0x90 + bool* mIsWizzrobeInBattleAreaFlag_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeFindPlayer.cpp b/src/Game/AI/AI/aiWizzrobeFindPlayer.cpp new file mode 100644 index 00000000..a29efd45 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeFindPlayer.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWizzrobeFindPlayer.h" + +namespace uking::ai { + +WizzrobeFindPlayer::WizzrobeFindPlayer(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeFindPlayer::~WizzrobeFindPlayer() = default; + +bool WizzrobeFindPlayer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeFindPlayer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeFindPlayer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeFindPlayer::loadParams_() { + getStaticParam(&mHomeTerritoryWidth_s, "HomeTerritoryWidth"); + getStaticParam(&mHomeTerritoryHeight_s, "HomeTerritoryHeight"); + getStaticParam(&mBattleTerritoryWidth_s, "BattleTerritoryWidth"); + getAITreeVariable(&mIsWizzrobeInBattleAreaFlag_a, "IsWizzrobeInBattleAreaFlag"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeFindPlayer.h b/src/Game/AI/AI/aiWizzrobeFindPlayer.h new file mode 100644 index 00000000..7ee17814 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeFindPlayer.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeFindPlayer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeFindPlayer, ksys::act::ai::Ai) +public: + explicit WizzrobeFindPlayer(const InitArg& arg); + ~WizzrobeFindPlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mHomeTerritoryWidth_s{}; + // static_param at offset 0x40 + const float* mHomeTerritoryHeight_s{}; + // static_param at offset 0x48 + const float* mBattleTerritoryWidth_s{}; + // aitree_variable at offset 0x50 + bool* mIsWizzrobeInBattleAreaFlag_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeRoam.cpp b/src/Game/AI/AI/aiWizzrobeRoam.cpp new file mode 100644 index 00000000..d5e2bd56 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeRoam.cpp @@ -0,0 +1,34 @@ +#include "Game/AI/AI/aiWizzrobeRoam.h" + +namespace uking::ai { + +WizzrobeRoam::WizzrobeRoam(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeRoam::~WizzrobeRoam() = default; + +bool WizzrobeRoam::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeRoam::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeRoam::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeRoam::loadParams_() { + getStaticParam(&mMoveCountMin_s, "MoveCountMin"); + getStaticParam(&mMoveCountMax_s, "MoveCountMax"); + getStaticParam(&mChangeHeightPer_s, "ChangeHeightPer"); + getStaticParam(&mMexHeightLevel_s, "MexHeightLevel"); + getStaticParam(&mTerritoryRadius_s, "TerritoryRadius"); + getStaticParam(&mTerritoryRadiusRnd_s, "TerritoryRadiusRnd"); + getStaticParam(&mRetryLength_s, "RetryLength"); + getStaticParam(&mHeightOffset_s, "HeightOffset"); + getDynamicParam(&mCentralPos_d, "CentralPos"); + getAITreeVariable(&mWizzrobeMagicWeatherUnit_a, "WizzrobeMagicWeatherUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeRoam.h b/src/Game/AI/AI/aiWizzrobeRoam.h new file mode 100644 index 00000000..141cdba0 --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeRoam.h @@ -0,0 +1,41 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeRoam : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeRoam, ksys::act::ai::Ai) +public: + explicit WizzrobeRoam(const InitArg& arg); + ~WizzrobeRoam() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mWizzrobeMagicWeatherUnit_a{}; + // static_param at offset 0x40 + const int* mMoveCountMin_s{}; + // static_param at offset 0x48 + const int* mMoveCountMax_s{}; + // static_param at offset 0x50 + const int* mChangeHeightPer_s{}; + // static_param at offset 0x58 + const int* mMexHeightLevel_s{}; + // static_param at offset 0x60 + const float* mTerritoryRadius_s{}; + // static_param at offset 0x68 + const float* mTerritoryRadiusRnd_s{}; + // static_param at offset 0x70 + const float* mRetryLength_s{}; + // static_param at offset 0x78 + const float* mHeightOffset_s{}; + // dynamic_param at offset 0x80 + sead::Vector3f* mCentralPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeRoot.cpp b/src/Game/AI/AI/aiWizzrobeRoot.cpp new file mode 100644 index 00000000..3430ed1b --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWizzrobeRoot.h" + +namespace uking::ai { + +WizzrobeRoot::WizzrobeRoot(const InitArg& arg) : EnemyRoot(arg) {} + +WizzrobeRoot::~WizzrobeRoot() = default; + +bool WizzrobeRoot::init_(sead::Heap* heap) { + return EnemyRoot::init_(heap); +} + +void WizzrobeRoot::enter_(ksys::act::ai::InlineParamPack* params) { + EnemyRoot::enter_(params); +} + +void WizzrobeRoot::leave_() { + EnemyRoot::leave_(); +} + +void WizzrobeRoot::loadParams_() { + EnemyRoot::loadParams_(); + getStaticParam(&mMagicTargetIdx_s, "MagicTargetIdx"); + getStaticParam(&mStartASName_s, "StartASName"); + getStaticParam(&mStopASName_s, "StopASName"); + getAITreeVariable(&mWizzrobeMagicWeatherUnit_a, "WizzrobeMagicWeatherUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeRoot.h b/src/Game/AI/AI/aiWizzrobeRoot.h new file mode 100644 index 00000000..c0721cff --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeRoot.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiEnemyRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeRoot : public EnemyRoot { + SEAD_RTTI_OVERRIDE(WizzrobeRoot, EnemyRoot) +public: + explicit WizzrobeRoot(const InitArg& arg); + ~WizzrobeRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x1d8 + const int* mMagicTargetIdx_s{}; + // static_param at offset 0x1e0 + sead::SafeString mStartASName_s{}; + // static_param at offset 0x1f0 + sead::SafeString mStopASName_s{}; + // aitree_variable at offset 0x200 + void* mWizzrobeMagicWeatherUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeWeatherMagic.cpp b/src/Game/AI/AI/aiWizzrobeWeatherMagic.cpp new file mode 100644 index 00000000..73535dfd --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeWeatherMagic.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWizzrobeWeatherMagic.h" + +namespace uking::ai { + +WizzrobeWeatherMagic::WizzrobeWeatherMagic(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WizzrobeWeatherMagic::~WizzrobeWeatherMagic() = default; + +bool WizzrobeWeatherMagic::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WizzrobeWeatherMagic::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WizzrobeWeatherMagic::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WizzrobeWeatherMagic::loadParams_() { + getStaticParam(&mRiseLength_s, "RiseLength"); + getStaticParam(&mTimer_s, "Timer"); + getDynamicParam(&mTargetPos_d, "TargetPos"); + getAITreeVariable(&mWizzrobeMagicWeatherUnit_a, "WizzrobeMagicWeatherUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWizzrobeWeatherMagic.h b/src/Game/AI/AI/aiWizzrobeWeatherMagic.h new file mode 100644 index 00000000..9b45c56e --- /dev/null +++ b/src/Game/AI/AI/aiWizzrobeWeatherMagic.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WizzrobeWeatherMagic : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WizzrobeWeatherMagic, ksys::act::ai::Ai) +public: + explicit WizzrobeWeatherMagic(const InitArg& arg); + ~WizzrobeWeatherMagic() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mWizzrobeMagicWeatherUnit_a{}; + // static_param at offset 0x40 + const float* mRiseLength_s{}; + // static_param at offset 0x48 + const float* mTimer_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkAmiibo.cpp b/src/Game/AI/AI/aiWolfLinkAmiibo.cpp new file mode 100644 index 00000000..efa0fc30 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkAmiibo.cpp @@ -0,0 +1,27 @@ +#include "Game/AI/AI/aiWolfLinkAmiibo.h" + +namespace uking::ai { + +WolfLinkAmiibo::WolfLinkAmiibo(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkAmiibo::~WolfLinkAmiibo() = default; + +bool WolfLinkAmiibo::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkAmiibo::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkAmiibo::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkAmiibo::loadParams_() { + getStaticParam(&mAreaSearchCharacterRadius_s, "AreaSearchCharacterRadius"); + getStaticParam(&mAreaThreshold_s, "AreaThreshold"); + getStaticParam(&mAreaSearchRadius_s, "AreaSearchRadius"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkAmiibo.h b/src/Game/AI/AI/aiWolfLinkAmiibo.h new file mode 100644 index 00000000..82b5b4f1 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkAmiibo.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkAmiibo : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkAmiibo, ksys::act::ai::Ai) +public: + explicit WolfLinkAmiibo(const InitArg& arg); + ~WolfLinkAmiibo() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mAreaSearchCharacterRadius_s{}; + // static_param at offset 0x40 + const float* mAreaThreshold_s{}; + // static_param at offset 0x48 + const float* mAreaSearchRadius_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkBattleRoot.cpp b/src/Game/AI/AI/aiWolfLinkBattleRoot.cpp new file mode 100644 index 00000000..1df7b571 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkBattleRoot.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWolfLinkBattleRoot.h" + +namespace uking::ai { + +WolfLinkBattleRoot::WolfLinkBattleRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkBattleRoot::~WolfLinkBattleRoot() = default; + +bool WolfLinkBattleRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkBattleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkBattleRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkBattleRoot::loadParams_() { + getStaticParam(&mAttackIntiationRange_s, "AttackIntiationRange"); + getStaticParam(&mChanceToBarkOnAttackFail_s, "ChanceToBarkOnAttackFail"); + getStaticParam(&mUseChainAttack_s, "UseChainAttack"); + getDynamicParam(&mKeepTargetRange_d, "KeepTargetRange"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkBattleRoot.h b/src/Game/AI/AI/aiWolfLinkBattleRoot.h new file mode 100644 index 00000000..825de735 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkBattleRoot.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkBattleRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkBattleRoot, ksys::act::ai::Ai) +public: + explicit WolfLinkBattleRoot(const InitArg& arg); + ~WolfLinkBattleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAttackIntiationRange_s{}; + // static_param at offset 0x40 + const float* mChanceToBarkOnAttackFail_s{}; + // static_param at offset 0x48 + const bool* mUseChainAttack_s{}; + // dynamic_param at offset 0x50 + float* mKeepTargetRange_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkChainAttack.cpp b/src/Game/AI/AI/aiWolfLinkChainAttack.cpp new file mode 100644 index 00000000..4a5e4cbc --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkChainAttack.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiWolfLinkChainAttack.h" + +namespace uking::ai { + +WolfLinkChainAttack::WolfLinkChainAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkChainAttack::~WolfLinkChainAttack() = default; + +bool WolfLinkChainAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkChainAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkChainAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkChainAttack::loadParams_() { + getStaticParam(&mNumAttacks_s, "NumAttacks"); + getStaticParam(&mAnimalUnitRate_s, "AnimalUnitRate"); + getStaticParam(&mBeginEndAnimASPlayRate_s, "BeginEndAnimASPlayRate"); + getStaticParam(&mTurnAnimPlayRate_s, "TurnAnimPlayRate"); + getStaticParam(&mAttackAnimPlayRate_s, "AttackAnimPlayRate"); + getStaticParam(&mAttackAnimMinDistance_s, "AttackAnimMinDistance"); + getStaticParam(&mAttackDistanceOffset_s, "AttackDistanceOffset"); + getStaticParam(&mIsInvincible_s, "IsInvincible"); + getStaticParam(&mIsIncrementHitOnMiss_s, "IsIncrementHitOnMiss"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkChainAttack.h b/src/Game/AI/AI/aiWolfLinkChainAttack.h new file mode 100644 index 00000000..86a32326 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkChainAttack.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkChainAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkChainAttack, ksys::act::ai::Ai) +public: + explicit WolfLinkChainAttack(const InitArg& arg); + ~WolfLinkChainAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNumAttacks_s{}; + // static_param at offset 0x40 + const float* mAnimalUnitRate_s{}; + // static_param at offset 0x48 + const float* mBeginEndAnimASPlayRate_s{}; + // static_param at offset 0x50 + const float* mTurnAnimPlayRate_s{}; + // static_param at offset 0x58 + const float* mAttackAnimPlayRate_s{}; + // static_param at offset 0x60 + const float* mAttackAnimMinDistance_s{}; + // static_param at offset 0x68 + const float* mAttackDistanceOffset_s{}; + // static_param at offset 0x70 + const bool* mIsInvincible_s{}; + // static_param at offset 0x78 + const bool* mIsIncrementHitOnMiss_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.cpp b/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.cpp new file mode 100644 index 00000000..eb729689 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWolfLinkFollowPlayerRoot.h" + +namespace uking::ai { + +WolfLinkFollowPlayerRoot::WolfLinkFollowPlayerRoot(const InitArg& arg) : HorseFollow(arg) {} + +WolfLinkFollowPlayerRoot::~WolfLinkFollowPlayerRoot() = default; + +bool WolfLinkFollowPlayerRoot::init_(sead::Heap* heap) { + return HorseFollow::init_(heap); +} + +void WolfLinkFollowPlayerRoot::enter_(ksys::act::ai::InlineParamPack* params) { + HorseFollow::enter_(params); +} + +void WolfLinkFollowPlayerRoot::leave_() { + HorseFollow::leave_(); +} + +void WolfLinkFollowPlayerRoot::loadParams_() { + HorseFollow::loadParams_(); + getStaticParam(&mLateralDistance_s, "LateralDistance"); + getStaticParam(&mAnteriorDistanceStop_s, "AnteriorDistanceStop"); + getStaticParam(&mAnteriorDistanceRun_s, "AnteriorDistanceRun"); + getStaticParam(&mAnteriorDistanceSprint_s, "AnteriorDistanceSprint"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.h b/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.h new file mode 100644 index 00000000..ca09b4c1 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkFollowPlayerRoot.h @@ -0,0 +1,30 @@ +#pragma once + +#include "Game/AI/AI/aiHorseFollow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkFollowPlayerRoot : public HorseFollow { + SEAD_RTTI_OVERRIDE(WolfLinkFollowPlayerRoot, HorseFollow) +public: + explicit WolfLinkFollowPlayerRoot(const InitArg& arg); + ~WolfLinkFollowPlayerRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0xe0 + const float* mLateralDistance_s{}; + // static_param at offset 0xe8 + const float* mAnteriorDistanceStop_s{}; + // static_param at offset 0xf0 + const float* mAnteriorDistanceRun_s{}; + // static_param at offset 0xf8 + const float* mAnteriorDistanceSprint_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkFollowWait.cpp b/src/Game/AI/AI/aiWolfLinkFollowWait.cpp new file mode 100644 index 00000000..555b17ce --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkFollowWait.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWolfLinkFollowWait.h" + +namespace uking::ai { + +WolfLinkFollowWait::WolfLinkFollowWait(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkFollowWait::~WolfLinkFollowWait() = default; + +bool WolfLinkFollowWait::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkFollowWait::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkFollowWait::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkFollowWait::loadParams_() { + getStaticParam(&mTurnThreshold_s, "TurnThreshold"); + getStaticParam(&mLockonTurnThreshold_s, "LockonTurnThreshold"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkFollowWait.h b/src/Game/AI/AI/aiWolfLinkFollowWait.h new file mode 100644 index 00000000..21ec617d --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkFollowWait.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkFollowWait : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkFollowWait, ksys::act::ai::Ai) +public: + explicit WolfLinkFollowWait(const InitArg& arg); + ~WolfLinkFollowWait() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mTurnThreshold_s{}; + // static_param at offset 0x40 + const float* mLockonTurnThreshold_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkGoToTarget.cpp b/src/Game/AI/AI/aiWolfLinkGoToTarget.cpp new file mode 100644 index 00000000..a7926c3d --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkGoToTarget.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWolfLinkGoToTarget.h" + +namespace uking::ai { + +WolfLinkGoToTarget::WolfLinkGoToTarget(const InitArg& arg) : HorseFollow(arg) {} + +WolfLinkGoToTarget::~WolfLinkGoToTarget() = default; + +bool WolfLinkGoToTarget::init_(sead::Heap* heap) { + return HorseFollow::init_(heap); +} + +void WolfLinkGoToTarget::enter_(ksys::act::ai::InlineParamPack* params) { + HorseFollow::enter_(params); +} + +void WolfLinkGoToTarget::leave_() { + HorseFollow::leave_(); +} + +void WolfLinkGoToTarget::loadParams_() { + HorseFollow::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkGoToTarget.h b/src/Game/AI/AI/aiWolfLinkGoToTarget.h new file mode 100644 index 00000000..fc42f27c --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkGoToTarget.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHorseFollow.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkGoToTarget : public HorseFollow { + SEAD_RTTI_OVERRIDE(WolfLinkGoToTarget, HorseFollow) +public: + explicit WolfLinkGoToTarget(const InitArg& arg); + ~WolfLinkGoToTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkLeadToTarget.cpp b/src/Game/AI/AI/aiWolfLinkLeadToTarget.cpp new file mode 100644 index 00000000..89ad6ce5 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkLeadToTarget.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiWolfLinkLeadToTarget.h" + +namespace uking::ai { + +WolfLinkLeadToTarget::WolfLinkLeadToTarget(const InitArg& arg) : LeadToTarget(arg) {} + +WolfLinkLeadToTarget::~WolfLinkLeadToTarget() = default; + +bool WolfLinkLeadToTarget::init_(sead::Heap* heap) { + return LeadToTarget::init_(heap); +} + +void WolfLinkLeadToTarget::enter_(ksys::act::ai::InlineParamPack* params) { + LeadToTarget::enter_(params); +} + +void WolfLinkLeadToTarget::leave_() { + LeadToTarget::leave_(); +} + +void WolfLinkLeadToTarget::loadParams_() { + LeadToTarget::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkLeadToTarget.h b/src/Game/AI/AI/aiWolfLinkLeadToTarget.h new file mode 100644 index 00000000..e1ff38c1 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkLeadToTarget.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiLeadToTarget.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkLeadToTarget : public LeadToTarget { + SEAD_RTTI_OVERRIDE(WolfLinkLeadToTarget, LeadToTarget) +public: + explicit WolfLinkLeadToTarget(const InitArg& arg); + ~WolfLinkLeadToTarget() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkNormalRoot.cpp b/src/Game/AI/AI/aiWolfLinkNormalRoot.cpp new file mode 100644 index 00000000..84612d55 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkNormalRoot.cpp @@ -0,0 +1,31 @@ +#include "Game/AI/AI/aiWolfLinkNormalRoot.h" + +namespace uking::ai { + +WolfLinkNormalRoot::WolfLinkNormalRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkNormalRoot::~WolfLinkNormalRoot() = default; + +bool WolfLinkNormalRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkNormalRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkNormalRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkNormalRoot::loadParams_() { + getStaticParam(&mShiekSensorLeadDistance_s, "ShiekSensorLeadDistance"); + getStaticParam(&mShiekSensorGoalTolerance_s, "ShiekSensorGoalTolerance"); + getStaticParam(&mShiekSensorTargetFowardOffset_s, "ShiekSensorTargetFowardOffset"); + getStaticParam(&mBattleAggressionRange_s, "BattleAggressionRange"); + getStaticParam(&mHowlAtEnemyRange_s, "HowlAtEnemyRange"); + getStaticParam(&mUtilityWantsToHunt_s, "UtilityWantsToHunt"); + getStaticParam(&mWarpToPlayerDistance_s, "WarpToPlayerDistance"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkNormalRoot.h b/src/Game/AI/AI/aiWolfLinkNormalRoot.h new file mode 100644 index 00000000..de032d5f --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkNormalRoot.h @@ -0,0 +1,35 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkNormalRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkNormalRoot, ksys::act::ai::Ai) +public: + explicit WolfLinkNormalRoot(const InitArg& arg); + ~WolfLinkNormalRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mShiekSensorLeadDistance_s{}; + // static_param at offset 0x40 + const float* mShiekSensorGoalTolerance_s{}; + // static_param at offset 0x48 + const float* mShiekSensorTargetFowardOffset_s{}; + // static_param at offset 0x50 + const float* mBattleAggressionRange_s{}; + // static_param at offset 0x58 + const float* mHowlAtEnemyRange_s{}; + // static_param at offset 0x60 + const float* mUtilityWantsToHunt_s{}; + // static_param at offset 0x68 + const float* mWarpToPlayerDistance_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkReaction.cpp b/src/Game/AI/AI/aiWolfLinkReaction.cpp new file mode 100644 index 00000000..9dff7b1f --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkReaction.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWolfLinkReaction.h" + +namespace uking::ai { + +WolfLinkReaction::WolfLinkReaction(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkReaction::~WolfLinkReaction() = default; + +bool WolfLinkReaction::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkReaction::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkReaction::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkReaction::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkReaction.h b/src/Game/AI/AI/aiWolfLinkReaction.h new file mode 100644 index 00000000..2d7f1391 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkReaction.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkReaction : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkReaction, ksys::act::ai::Ai) +public: + explicit WolfLinkReaction(const InitArg& arg); + ~WolfLinkReaction() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkRoot.cpp b/src/Game/AI/AI/aiWolfLinkRoot.cpp new file mode 100644 index 00000000..c00ddfc7 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkRoot.cpp @@ -0,0 +1,23 @@ +#include "Game/AI/AI/aiWolfLinkRoot.h" + +namespace uking::ai { + +WolfLinkRoot::WolfLinkRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkRoot::~WolfLinkRoot() = default; + +bool WolfLinkRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkRoot::loadParams_() {} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkRoot.h b/src/Game/AI/AI/aiWolfLinkRoot.h new file mode 100644 index 00000000..3d380bd6 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkRoot.h @@ -0,0 +1,21 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkRoot, ksys::act::ai::Ai) +public: + explicit WolfLinkRoot(const InitArg& arg); + ~WolfLinkRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkRushAttack.cpp b/src/Game/AI/AI/aiWolfLinkRushAttack.cpp new file mode 100644 index 00000000..6182f636 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkRushAttack.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiWolfLinkRushAttack.h" + +namespace uking::ai { + +WolfLinkRushAttack::WolfLinkRushAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkRushAttack::~WolfLinkRushAttack() = default; + +bool WolfLinkRushAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkRushAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkRushAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkRushAttack::loadParams_() { + getStaticParam(&mAttackPosOffsetLength_s, "AttackPosOffsetLength"); + getStaticParam(&mAllowUpdateTimerLength_s, "AllowUpdateTimerLength"); + getStaticParam(&mCheckSafeGround_s, "CheckSafeGround"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkRushAttack.h b/src/Game/AI/AI/aiWolfLinkRushAttack.h new file mode 100644 index 00000000..a7aff836 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkRushAttack.h @@ -0,0 +1,29 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkRushAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkRushAttack, ksys::act::ai::Ai) +public: + explicit WolfLinkRushAttack(const InitArg& arg); + ~WolfLinkRushAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mAttackPosOffsetLength_s{}; + // static_param at offset 0x40 + const float* mAllowUpdateTimerLength_s{}; + // static_param at offset 0x48 + const bool* mCheckSafeGround_s{}; + // dynamic_param at offset 0x50 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkSeqAttack.cpp b/src/Game/AI/AI/aiWolfLinkSeqAttack.cpp new file mode 100644 index 00000000..a5b4f7c1 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkSeqAttack.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiWolfLinkSeqAttack.h" + +namespace uking::ai { + +WolfLinkSeqAttack::WolfLinkSeqAttack(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkSeqAttack::~WolfLinkSeqAttack() = default; + +bool WolfLinkSeqAttack::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkSeqAttack::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkSeqAttack::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkSeqAttack::loadParams_() { + getStaticParam(&mDistBeginAttackAnimation_s, "DistBeginAttackAnimation"); + getStaticParam(&mAngleReqBeginAttackAnimationMin_s, "AngleReqBeginAttackAnimationMin"); + getStaticParam(&mAngleReqBeginAttackAnimationMax_s, "AngleReqBeginAttackAnimationMax"); + getStaticParam(&mPlayOnMissAI_s, "PlayOnMissAI"); + getStaticParam(&mChargeChainAttackOnHit_s, "ChargeChainAttackOnHit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkSeqAttack.h b/src/Game/AI/AI/aiWolfLinkSeqAttack.h new file mode 100644 index 00000000..6d7b6dd5 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkSeqAttack.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkSeqAttack : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkSeqAttack, ksys::act::ai::Ai) +public: + explicit WolfLinkSeqAttack(const InitArg& arg); + ~WolfLinkSeqAttack() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistBeginAttackAnimation_s{}; + // static_param at offset 0x40 + const float* mAngleReqBeginAttackAnimationMin_s{}; + // static_param at offset 0x48 + const float* mAngleReqBeginAttackAnimationMax_s{}; + // static_param at offset 0x50 + const bool* mPlayOnMissAI_s{}; + // static_param at offset 0x58 + const bool* mChargeChainAttackOnHit_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.cpp b/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.cpp new file mode 100644 index 00000000..1cf3c61d --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiWolfLinkShiekSensorRoot.h" + +namespace uking::ai { + +WolfLinkShiekSensorRoot::WolfLinkShiekSensorRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkShiekSensorRoot::~WolfLinkShiekSensorRoot() = default; + +bool WolfLinkShiekSensorRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkShiekSensorRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkShiekSensorRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkShiekSensorRoot::loadParams_() { + getStaticParam(&mDistanceUntilUpdateTarget_s, "DistanceUntilUpdateTarget"); + getDynamicParam(&mUpdateTarget_d, "UpdateTarget"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.h b/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.h new file mode 100644 index 00000000..b33a2b15 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkShiekSensorRoot.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkShiekSensorRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkShiekSensorRoot, ksys::act::ai::Ai) +public: + explicit WolfLinkShiekSensorRoot(const InitArg& arg); + ~WolfLinkShiekSensorRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDistanceUntilUpdateTarget_s{}; + // dynamic_param at offset 0x40 + bool* mUpdateTarget_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkWarp.cpp b/src/Game/AI/AI/aiWolfLinkWarp.cpp new file mode 100644 index 00000000..6acde45c --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkWarp.cpp @@ -0,0 +1,33 @@ +#include "Game/AI/AI/aiWolfLinkWarp.h" + +namespace uking::ai { + +WolfLinkWarp::WolfLinkWarp(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +WolfLinkWarp::~WolfLinkWarp() = default; + +bool WolfLinkWarp::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void WolfLinkWarp::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void WolfLinkWarp::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void WolfLinkWarp::loadParams_() { + getStaticParam(&mNumCalcPerFrame_s, "NumCalcPerFrame"); + getStaticParam(&mFramesUntilFail_s, "FramesUntilFail"); + getStaticParam(&mTransitFrames_s, "TransitFrames"); + getStaticParam(&mWarpFromPlayerOffset_s, "WarpFromPlayerOffset"); + getStaticParam(&mInitialAngle_s, "InitialAngle"); + getStaticParam(&mAreaSearchRadius_s, "AreaSearchRadius"); + getStaticParam(&mAreaSearchCharacterRadius_s, "AreaSearchCharacterRadius"); + getStaticParam(&mAreaThreshold_s, "AreaThreshold"); + getDynamicParam(&mWarpType_d, "WarpType"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiWolfLinkWarp.h b/src/Game/AI/AI/aiWolfLinkWarp.h new file mode 100644 index 00000000..d3a18b34 --- /dev/null +++ b/src/Game/AI/AI/aiWolfLinkWarp.h @@ -0,0 +1,39 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class WolfLinkWarp : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(WolfLinkWarp, ksys::act::ai::Ai) +public: + explicit WolfLinkWarp(const InitArg& arg); + ~WolfLinkWarp() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const int* mNumCalcPerFrame_s{}; + // static_param at offset 0x40 + const int* mFramesUntilFail_s{}; + // static_param at offset 0x48 + const float* mTransitFrames_s{}; + // static_param at offset 0x50 + const float* mWarpFromPlayerOffset_s{}; + // static_param at offset 0x58 + const float* mInitialAngle_s{}; + // static_param at offset 0x60 + const float* mAreaSearchRadius_s{}; + // static_param at offset 0x68 + const float* mAreaSearchCharacterRadius_s{}; + // static_param at offset 0x70 + const float* mAreaThreshold_s{}; + // dynamic_param at offset 0x78 + int* mWarpType_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiYunBoCannon.cpp b/src/Game/AI/AI/aiYunBoCannon.cpp new file mode 100644 index 00000000..de9aa932 --- /dev/null +++ b/src/Game/AI/AI/aiYunBoCannon.cpp @@ -0,0 +1,28 @@ +#include "Game/AI/AI/aiYunBoCannon.h" + +namespace uking::ai { + +YunBoCannon::YunBoCannon(const InitArg& arg) : GoronCannonBase(arg) {} + +YunBoCannon::~YunBoCannon() = default; + +bool YunBoCannon::init_(sead::Heap* heap) { + return GoronCannonBase::init_(heap); +} + +void YunBoCannon::enter_(ksys::act::ai::InlineParamPack* params) { + GoronCannonBase::enter_(params); +} + +void YunBoCannon::leave_() { + GoronCannonBase::leave_(); +} + +void YunBoCannon::loadParams_() { + GoronCannonBase::loadParams_(); + getStaticParam(&mReturnAnchorName_s, "ReturnAnchorName"); + getMapUnitParam(&mCannonSpot_m, "CannonSpot"); + getMapUnitParam(&mActorName_m, "ActorName"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiYunBoCannon.h b/src/Game/AI/AI/aiYunBoCannon.h new file mode 100644 index 00000000..c1a1eb88 --- /dev/null +++ b/src/Game/AI/AI/aiYunBoCannon.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Game/AI/AI/aiGoronCannonBase.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class YunBoCannon : public GoronCannonBase { + SEAD_RTTI_OVERRIDE(YunBoCannon, GoronCannonBase) +public: + explicit YunBoCannon(const InitArg& arg); + ~YunBoCannon() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x130 + sead::SafeString mReturnAnchorName_s{}; + // map_unit_param at offset 0x140 + const int* mCannonSpot_m{}; + // map_unit_param at offset 0x148 + sead::SafeString mActorName_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiYunBoCannonBallRoot.cpp b/src/Game/AI/AI/aiYunBoCannonBallRoot.cpp new file mode 100644 index 00000000..4a1ffd07 --- /dev/null +++ b/src/Game/AI/AI/aiYunBoCannonBallRoot.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiYunBoCannonBallRoot.h" + +namespace uking::ai { + +YunBoCannonBallRoot::YunBoCannonBallRoot(const InitArg& arg) : CannonBallRoot(arg) {} + +YunBoCannonBallRoot::~YunBoCannonBallRoot() = default; + +bool YunBoCannonBallRoot::init_(sead::Heap* heap) { + return CannonBallRoot::init_(heap); +} + +void YunBoCannonBallRoot::enter_(ksys::act::ai::InlineParamPack* params) { + CannonBallRoot::enter_(params); +} + +void YunBoCannonBallRoot::leave_() { + CannonBallRoot::leave_(); +} + +void YunBoCannonBallRoot::loadParams_() { + CannonBallRoot::loadParams_(); + getMapUnitParam(&mCannonSpot_m, "CannonSpot"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiYunBoCannonBallRoot.h b/src/Game/AI/AI/aiYunBoCannonBallRoot.h new file mode 100644 index 00000000..e9416191 --- /dev/null +++ b/src/Game/AI/AI/aiYunBoCannonBallRoot.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Game/AI/AI/aiCannonBallRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class YunBoCannonBallRoot : public CannonBallRoot { + SEAD_RTTI_OVERRIDE(YunBoCannonBallRoot, CannonBallRoot) +public: + explicit YunBoCannonBallRoot(const InitArg& arg); + ~YunBoCannonBallRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // map_unit_param at offset 0x38 + const int* mCannonSpot_m{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZokuchoSunazarashi.cpp b/src/Game/AI/AI/aiZokuchoSunazarashi.cpp new file mode 100644 index 00000000..c346b1b3 --- /dev/null +++ b/src/Game/AI/AI/aiZokuchoSunazarashi.cpp @@ -0,0 +1,29 @@ +#include "Game/AI/AI/aiZokuchoSunazarashi.h" + +namespace uking::ai { + +ZokuchoSunazarashi::ZokuchoSunazarashi(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ZokuchoSunazarashi::~ZokuchoSunazarashi() = default; + +bool ZokuchoSunazarashi::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ZokuchoSunazarashi::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ZokuchoSunazarashi::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ZokuchoSunazarashi::loadParams_() { + getStaticParam(&mPlayerLostDis_s, "PlayerLostDis"); + getStaticParam(&mLeadPlayerAngle_s, "LeadPlayerAngle"); + getStaticParam(&mMoveTargetDist_s, "MoveTargetDist"); + getStaticParam(&mStopMoveDist_s, "StopMoveDist"); + getStaticParam(&mStayAwayDist_s, "StayAwayDist"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZokuchoSunazarashi.h b/src/Game/AI/AI/aiZokuchoSunazarashi.h new file mode 100644 index 00000000..2e4208f2 --- /dev/null +++ b/src/Game/AI/AI/aiZokuchoSunazarashi.h @@ -0,0 +1,31 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZokuchoSunazarashi : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ZokuchoSunazarashi, ksys::act::ai::Ai) +public: + explicit ZokuchoSunazarashi(const InitArg& arg); + ~ZokuchoSunazarashi() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mPlayerLostDis_s{}; + // static_param at offset 0x40 + const float* mLeadPlayerAngle_s{}; + // static_param at offset 0x48 + const float* mMoveTargetDist_s{}; + // static_param at offset 0x50 + const float* mStopMoveDist_s{}; + // static_param at offset 0x58 + const float* mStayAwayDist_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.cpp b/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.cpp new file mode 100644 index 00000000..e28e5f2b --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiZoraHeroRelicBattleNormal.h" + +namespace uking::ai { + +ZoraHeroRelicBattleNormal::ZoraHeroRelicBattleNormal(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ZoraHeroRelicBattleNormal::~ZoraHeroRelicBattleNormal() = default; + +bool ZoraHeroRelicBattleNormal::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ZoraHeroRelicBattleNormal::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ZoraHeroRelicBattleNormal::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ZoraHeroRelicBattleNormal::loadParams_() { + getStaticParam(&mWarpDistanceXZ_s, "WarpDistanceXZ"); + getStaticParam(&mNearPlayerDistanceXZ_s, "NearPlayerDistanceXZ"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.h b/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.h new file mode 100644 index 00000000..2ec621c2 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleNormal.h @@ -0,0 +1,27 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZoraHeroRelicBattleNormal : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ZoraHeroRelicBattleNormal, ksys::act::ai::Ai) +public: + explicit ZoraHeroRelicBattleNormal(const InitArg& arg); + ~ZoraHeroRelicBattleNormal() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // FIXME: remove this + u8 pad_0x38[0x50]; + // static_param at offset 0x88 + const float* mWarpDistanceXZ_s{}; + // static_param at offset 0x90 + const float* mNearPlayerDistanceXZ_s{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.cpp b/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.cpp new file mode 100644 index 00000000..edd3ba05 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h" + +namespace uking::ai { + +ZoraHeroRelicBattleRidePlayer::ZoraHeroRelicBattleRidePlayer(const InitArg& arg) + : ksys::act::ai::Ai(arg) {} + +ZoraHeroRelicBattleRidePlayer::~ZoraHeroRelicBattleRidePlayer() = default; + +bool ZoraHeroRelicBattleRidePlayer::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ZoraHeroRelicBattleRidePlayer::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ZoraHeroRelicBattleRidePlayer::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ZoraHeroRelicBattleRidePlayer::loadParams_() { + getAITreeVariable(&mZoraHeroShowMsgUnit_a, "ZoraHeroShowMsgUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h b/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h new file mode 100644 index 00000000..25c7596d --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZoraHeroRelicBattleRidePlayer : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ZoraHeroRelicBattleRidePlayer, ksys::act::ai::Ai) +public: + explicit ZoraHeroRelicBattleRidePlayer(const InitArg& arg); + ~ZoraHeroRelicBattleRidePlayer() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mZoraHeroShowMsgUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.cpp b/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.cpp new file mode 100644 index 00000000..5c441d14 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiZoraHeroRelicBattleRoot.h" + +namespace uking::ai { + +ZoraHeroRelicBattleRoot::ZoraHeroRelicBattleRoot(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ZoraHeroRelicBattleRoot::~ZoraHeroRelicBattleRoot() = default; + +bool ZoraHeroRelicBattleRoot::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ZoraHeroRelicBattleRoot::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ZoraHeroRelicBattleRoot::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ZoraHeroRelicBattleRoot::loadParams_() { + getAITreeVariable(&mZoraHeroShowMsgUnit_a, "ZoraHeroShowMsgUnit"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.h b/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.h new file mode 100644 index 00000000..4e7ba9e2 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroRelicBattleRoot.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZoraHeroRelicBattleRoot : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ZoraHeroRelicBattleRoot, ksys::act::ai::Ai) +public: + explicit ZoraHeroRelicBattleRoot(const InitArg& arg); + ~ZoraHeroRelicBattleRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // aitree_variable at offset 0x38 + void* mZoraHeroShowMsgUnit_a{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.cpp b/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.cpp new file mode 100644 index 00000000..59e5b2f6 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.cpp @@ -0,0 +1,25 @@ +#include "Game/AI/AI/aiZoraHeroSoulGiftRoot.h" + +namespace uking::ai { + +ZoraHeroSoulGiftRoot::ZoraHeroSoulGiftRoot(const InitArg& arg) : HeroSoulGiftRoot(arg) {} + +ZoraHeroSoulGiftRoot::~ZoraHeroSoulGiftRoot() = default; + +bool ZoraHeroSoulGiftRoot::init_(sead::Heap* heap) { + return HeroSoulGiftRoot::init_(heap); +} + +void ZoraHeroSoulGiftRoot::enter_(ksys::act::ai::InlineParamPack* params) { + HeroSoulGiftRoot::enter_(params); +} + +void ZoraHeroSoulGiftRoot::leave_() { + HeroSoulGiftRoot::leave_(); +} + +void ZoraHeroSoulGiftRoot::loadParams_() { + HeroSoulGiftRoot::loadParams_(); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.h b/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.h new file mode 100644 index 00000000..e9bdf78b --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroSoulGiftRoot.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZoraHeroSoulGiftRoot : public HeroSoulGiftRoot { + SEAD_RTTI_OVERRIDE(ZoraHeroSoulGiftRoot, HeroSoulGiftRoot) +public: + explicit ZoraHeroSoulGiftRoot(const InitArg& arg); + ~ZoraHeroSoulGiftRoot() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: +}; + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroWarp2Player.cpp b/src/Game/AI/AI/aiZoraHeroWarp2Player.cpp new file mode 100644 index 00000000..8e8ce36e --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroWarp2Player.cpp @@ -0,0 +1,26 @@ +#include "Game/AI/AI/aiZoraHeroWarp2Player.h" + +namespace uking::ai { + +ZoraHeroWarp2Player::ZoraHeroWarp2Player(const InitArg& arg) : ksys::act::ai::Ai(arg) {} + +ZoraHeroWarp2Player::~ZoraHeroWarp2Player() = default; + +bool ZoraHeroWarp2Player::init_(sead::Heap* heap) { + return ksys::act::ai::Ai::init_(heap); +} + +void ZoraHeroWarp2Player::enter_(ksys::act::ai::InlineParamPack* params) { + ksys::act::ai::Ai::enter_(params); +} + +void ZoraHeroWarp2Player::leave_() { + ksys::act::ai::Ai::leave_(); +} + +void ZoraHeroWarp2Player::loadParams_() { + getStaticParam(&mDepthOffset_s, "DepthOffset"); + getDynamicParam(&mTargetPos_d, "TargetPos"); +} + +} // namespace uking::ai diff --git a/src/Game/AI/AI/aiZoraHeroWarp2Player.h b/src/Game/AI/AI/aiZoraHeroWarp2Player.h new file mode 100644 index 00000000..0d1b9944 --- /dev/null +++ b/src/Game/AI/AI/aiZoraHeroWarp2Player.h @@ -0,0 +1,25 @@ +#pragma once + +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking::ai { + +class ZoraHeroWarp2Player : public ksys::act::ai::Ai { + SEAD_RTTI_OVERRIDE(ZoraHeroWarp2Player, ksys::act::ai::Ai) +public: + explicit ZoraHeroWarp2Player(const InitArg& arg); + ~ZoraHeroWarp2Player() override; + + bool init_(sead::Heap* heap) override; + void enter_(ksys::act::ai::InlineParamPack* params) override; + void leave_() override; + void loadParams_() override; + +protected: + // static_param at offset 0x38 + const float* mDepthOffset_s{}; + // dynamic_param at offset 0x40 + sead::Vector3f* mTargetPos_d{}; +}; + +} // namespace uking::ai diff --git a/src/Game/AI/CMakeLists.txt b/src/Game/AI/CMakeLists.txt index 58e8a3a1..b3c334e5 100644 --- a/src/Game/AI/CMakeLists.txt +++ b/src/Game/AI/CMakeLists.txt @@ -1,9 +1,12 @@ add_subdirectory(Action) +add_subdirectory(AI) add_subdirectory(Query) target_sources(uking PRIVATE aiActionFactories.cpp aiActionFactories.h + aiAiFactories.cpp + aiAiFactories.h aiQueryFactories.cpp aiQueryFactories.h ) diff --git a/src/Game/AI/aiAiFactories.cpp b/src/Game/AI/aiAiFactories.cpp new file mode 100644 index 00000000..f756ec6d --- /dev/null +++ b/src/Game/AI/aiAiFactories.cpp @@ -0,0 +1,2364 @@ +// DO NOT MAKE MAJOR EDITS. This file is automatically generated. +// For major edits, please edit the generator script (ai_generate_ais.py) instead. +// If edits are made to this file, make sure they are not lost when the generator is re-run. + +#include "Game/AI/aiAiFactories.h" +#include +#include "Game/AI/AI/aiASWeaponRoot.h" +#include "Game/AI/AI/aiActorWaterDepthSelect.h" +#include "Game/AI/AI/aiAddBasicLinkOn.h" +#include "Game/AI/AI/aiAddCarried.h" +#include "Game/AI/AI/aiAddDemoCall.h" +#include "Game/AI/AI/aiAddNodeNodeCarried.h" +#include "Game/AI/AI/aiAddNoiseToTargetPos.h" +#include "Game/AI/AI/aiAddPlayerLargeAttackJustGuard.h" +#include "Game/AI/AI/aiAddSwarmMove.h" +#include "Game/AI/AI/aiAddViewTargetPos.h" +#include "Game/AI/AI/aiAirOctaBoardBurn.h" +#include "Game/AI/AI/aiAirOctaBurnReaction.h" +#include "Game/AI/AI/aiAirOctaFlyUp.h" +#include "Game/AI/AI/aiAirOctaReaction.h" +#include "Game/AI/AI/aiAirOctaRoot.h" +#include "Game/AI/AI/aiAirOctaState.h" +#include "Game/AI/AI/aiAirOctaWait.h" +#include "Game/AI/AI/aiAlertCreationNestOnTree.h" +#include "Game/AI/AI/aiAmbushableWeaponShoot.h" +#include "Game/AI/AI/aiAnchorRangeSelectTwoAction.h" +#include "Game/AI/AI/aiAncientNecklaceBall.h" +#include "Game/AI/AI/aiAnimalAttackOtherTarget.h" +#include "Game/AI/AI/aiAnimalBattleAggressive.h" +#include "Game/AI/AI/aiAnimalBattleMoveLeave.h" +#include "Game/AI/AI/aiAnimalEscapeAI.h" +#include "Game/AI/AI/aiAnimalEscapeAfterDamage.h" +#include "Game/AI/AI/aiAnimalFollowTarget.h" +#include "Game/AI/AI/aiAnimalLineOfSightSelector.h" +#include "Game/AI/AI/aiAnimalPreAttack.h" +#include "Game/AI/AI/aiAnimalRangeKeepMove.h" +#include "Game/AI/AI/aiAnimalRangeKeepMoveWithLOS.h" +#include "Game/AI/AI/aiAnimalRoam.h" +#include "Game/AI/AI/aiAnimalRoamCheckWater.h" +#include "Game/AI/AI/aiAnimalRushAttack.h" +#include "Game/AI/AI/aiAnimalTimelineAI.h" +#include "Game/AI/AI/aiAppearFromTargetFrontAfterChase.h" +#include "Game/AI/AI/aiAppearFromTargetFrontGround.h" +#include "Game/AI/AI/aiAppearNearTargetOutOfScrnGnd.h" +#include "Game/AI/AI/aiArmorSearchKorokRoot.h" +#include "Game/AI/AI/aiAroundEnemyCheckSelect.h" +#include "Game/AI/AI/aiArrow.h" +#include "Game/AI/AI/aiArrowChargeAndShoot.h" +#include "Game/AI/AI/aiArrowDelete.h" +#include "Game/AI/AI/aiArrowStickAndPick.h" +#include "Game/AI/AI/aiAssassinBattle.h" +#include "Game/AI/AI/aiAssassinBattleMove.h" +#include "Game/AI/AI/aiAssassinBattleRange.h" +#include "Game/AI/AI/aiAssassinBossAttackSeq.h" +#include "Game/AI/AI/aiAssassinBossBattle.h" +#include "Game/AI/AI/aiAssassinBossEscapeFromTarget.h" +#include "Game/AI/AI/aiAssassinBossFirstBattle.h" +#include "Game/AI/AI/aiAssassinBossFirstBattleMove.h" +#include "Game/AI/AI/aiAssassinBossFirstRangeKeepMove.h" +#include "Game/AI/AI/aiAssassinBossFirstRoot.h" +#include "Game/AI/AI/aiAssassinBossIronBallAttack.h" +#include "Game/AI/AI/aiAssassinBossLastAttack.h" +#include "Game/AI/AI/aiAssassinBossRoot.h" +#include "Game/AI/AI/aiAssassinCallSelect.h" +#include "Game/AI/AI/aiAssassinFieldShooterBattle.h" +#include "Game/AI/AI/aiAssassinMiddleAzitoDlcRoot.h" +#include "Game/AI/AI/aiAssassinMiddleAzitoNoMemberDemo.h" +#include "Game/AI/AI/aiAssassinMiddleAzitoRoot.h" +#include "Game/AI/AI/aiAssassinMiddleAzitoRootAccept.h" +#include "Game/AI/AI/aiAssassinMiddleDlcGrabAdapter.h" +#include "Game/AI/AI/aiAssassinMiddleMagicAfter.h" +#include "Game/AI/AI/aiAssassinMiddleRoot.h" +#include "Game/AI/AI/aiAssassinRoot.h" +#include "Game/AI/AI/aiAssassinShooterJuniorAzitoRoot.h" +#include "Game/AI/AI/aiAttackGrave.h" +#include "Game/AI/AI/aiAttackGraveChase.h" +#include "Game/AI/AI/aiAttackGraveChaseWithSensor.h" +#include "Game/AI/AI/aiAttackHitCheck.h" +#include "Game/AI/AI/aiAwarenessScale.h" +#include "Game/AI/AI/aiBackAttackEnemyBattle.h" +#include "Game/AI/AI/aiBackStepAndAttack.h" +#include "Game/AI/AI/aiBalloonPlantNormal.h" +#include "Game/AI/AI/aiBarrelBomb.h" +#include "Game/AI/AI/aiBasicStatusRoot.h" +#include "Game/AI/AI/aiBattleBgmRequestFinishTag.h" +#include "Game/AI/AI/aiBeamExplode.h" +#include "Game/AI/AI/aiBeamExplodeEitherHit.h" +#include "Game/AI/AI/aiBeamosCarried.h" +#include "Game/AI/AI/aiBeeBattle.h" +#include "Game/AI/AI/aiBeeSwarmFindPlayer.h" +#include "Game/AI/AI/aiBeeSwarmNormal.h" +#include "Game/AI/AI/aiBeeSwarmReaction.h" +#include "Game/AI/AI/aiBeeSwarmRoot.h" +#include "Game/AI/AI/aiBirdDead.h" +#include "Game/AI/AI/aiBirdEscape.h" +#include "Game/AI/AI/aiBlownOff.h" +#include "Game/AI/AI/aiBocoblinBackStepAttack.h" +#include "Game/AI/AI/aiBokoblinArrowAttack.h" +#include "Game/AI/AI/aiBokoblinArrowBattle.h" +#include "Game/AI/AI/aiBokoblinHoldArrow.h" +#include "Game/AI/AI/aiBokoblinNoise.h" +#include "Game/AI/AI/aiBokoblinRestraint.h" +#include "Game/AI/AI/aiBokoblinRoam.h" +#include "Game/AI/AI/aiBossBattleRoomRoot.h" +#include "Game/AI/AI/aiBowEquiped.h" +#include "Game/AI/AI/aiBowShoot.h" +#include "Game/AI/AI/aiBowlPin.h" +#include "Game/AI/AI/aiBoxWaterRoot.h" +#include "Game/AI/AI/aiBreathAttackEnemyBattle.h" +#include "Game/AI/AI/aiBreathEnemyRangeKeepMove.h" +#include "Game/AI/AI/aiCalledEnemyMove.h" +#include "Game/AI/AI/aiCameraBow.h" +#include "Game/AI/AI/aiCameraEditRoot.h" +#include "Game/AI/AI/aiCameraEventReturnSavePoint.h" +#include "Game/AI/AI/aiCameraEventTalkAI.h" +#include "Game/AI/AI/aiCameraEventTalkAIRet.h" +#include "Game/AI/AI/aiCameraGameRoot.h" +#include "Game/AI/AI/aiCameraRoot.h" +#include "Game/AI/AI/aiCameraTool.h" +#include "Game/AI/AI/aiCannonBallRoot.h" +#include "Game/AI/AI/aiCapturedActDeadSelector.h" +#include "Game/AI/AI/aiCapturedActorReaction.h" +#include "Game/AI/AI/aiCapturedActorReactionChemical.h" +#include "Game/AI/AI/aiCarryBox.h" +#include "Game/AI/AI/aiCastleLynelBattle.h" +#include "Game/AI/AI/aiChangeWeatherTagRoot.h" +#include "Game/AI/AI/aiChangeWindTagRoot.h" +#include "Game/AI/AI/aiChaseSound.h" +#include "Game/AI/AI/aiChemicalEnemyFindPlayer.h" +#include "Game/AI/AI/aiChemicalEnemyRoot.h" +#include "Game/AI/AI/aiChemicalExplode.h" +#include "Game/AI/AI/aiChemicalGiantArmorRoot.h" +#include "Game/AI/AI/aiChemicalStayObjectRoot.h" +#include "Game/AI/AI/aiChemicalWeaponRoot.h" +#include "Game/AI/AI/aiChildDeviceReflectArrow.h" +#include "Game/AI/AI/aiChildFavoriteSelector.h" +#include "Game/AI/AI/aiChildHaveSelect.h" +#include "Game/AI/AI/aiChmCheck.h" +#include "Game/AI/AI/aiChmVolRateCheck.h" +#include "Game/AI/AI/aiChmVolRateCheckBlankOk.h" +#include "Game/AI/AI/aiChuchuDieSelect.h" +#include "Game/AI/AI/aiChuchuJellyRoot.h" +#include "Game/AI/AI/aiChuchuNavMoveTarget.h" +#include "Game/AI/AI/aiChuchuRoot.h" +#include "Game/AI/AI/aiChuchuTypeSelect.h" +#include "Game/AI/AI/aiCircleMoveFlying.h" +#include "Game/AI/AI/aiCircleMoveInWater.h" +#include "Game/AI/AI/aiCircleMovePos.h" +#include "Game/AI/AI/aiCircleMoveTarget.h" +#include "Game/AI/AI/aiCliffCheckSelect.h" +#include "Game/AI/AI/aiCliffCheckTargetDirSelect.h" +#include "Game/AI/AI/aiCliffCheckToTargetPosDirSelect.h" +#include "Game/AI/AI/aiCliffDistanceSelectThreeAction.h" +#include "Game/AI/AI/aiCloseSmallAttack.h" +#include "Game/AI/AI/aiClusterRenderCheckTag.h" +#include "Game/AI/AI/aiColGroundHitSelect.h" +#include "Game/AI/AI/aiCollaborationShootingStarRoot.h" +#include "Game/AI/AI/aiCommonPickedItem.h" +#include "Game/AI/AI/aiConditionMoveActionSelect.h" +#include "Game/AI/AI/aiCookPotRoot.h" +#include "Game/AI/AI/aiCountSelect.h" +#include "Game/AI/AI/aiCreateCarryActor.h" +#include "Game/AI/AI/aiCreateOnFaceSelect.h" +#include "Game/AI/AI/aiDamageAttrSelect.h" +#include "Game/AI/AI/aiDamageTypeSelect.h" +#include "Game/AI/AI/aiDangerAvoidFlagSelect.h" +#include "Game/AI/AI/aiDashAndAttack.h" +#include "Game/AI/AI/aiDeadOrOtherState.h" +#include "Game/AI/AI/aiDeadlyBlowWeaponRoot.h" +#include "Game/AI/AI/aiDefWanderAI.h" +#include "Game/AI/AI/aiDemoRailMoveRemains.h" +#include "Game/AI/AI/aiDemoRootAI.h" +#include "Game/AI/AI/aiDgnObj_DLC_CWRotDirSwitch.h" +#include "Game/AI/AI/aiDgnObj_DLC_CW_WithEntityBody00.h" +#include "Game/AI/AI/aiDgnObj_DLC_CogWheel2.h" +#include "Game/AI/AI/aiDgnObj_DLC_CogWheel_Physics_Ctr.h" +#include "Game/AI/AI/aiDgnObj_DLC_DungeonRotateTag.h" +#include "Game/AI/AI/aiDgnObj_DLC_Faucet.h" +#include "Game/AI/AI/aiDgnObj_DLC_SliderBlock.h" +#include "Game/AI/AI/aiDieSelect.h" +#include "Game/AI/AI/aiDieSelectBombPlus.h" +#include "Game/AI/AI/aiDieSelectChemShockPlus.h" +#include "Game/AI/AI/aiDieSelectChemicalPlus.h" +#include "Game/AI/AI/aiDisplaySelect.h" +#include "Game/AI/AI/aiDistanceKeepMove.h" +#include "Game/AI/AI/aiDistanceLostCheck.h" +#include "Game/AI/AI/aiDoChangeOneTime.h" +#include "Game/AI/AI/aiDogNormal.h" +#include "Game/AI/AI/aiDomesticNormal.h" +#include "Game/AI/AI/aiDominoRoot.h" +#include "Game/AI/AI/aiDoorRoot.h" +#include "Game/AI/AI/aiDoubtItemSubTargetSelect.h" +#include "Game/AI/AI/aiDragonDropItemTargetRootAI.h" +#include "Game/AI/AI/aiDragonElecRoot.h" +#include "Game/AI/AI/aiDragonFireRoot.h" +#include "Game/AI/AI/aiDragonIceRoot.h" +#include "Game/AI/AI/aiDragonIceWaitRunel.h" +#include "Game/AI/AI/aiDragonItemRoot.h" +#include "Game/AI/AI/aiDragonReturn.h" +#include "Game/AI/AI/aiDragonTurn.h" +#include "Game/AI/AI/aiDrawnSwordBowSelect.h" +#include "Game/AI/AI/aiDrawnWeaponSelector.h" +#include "Game/AI/AI/aiDuckRoot.h" +#include "Game/AI/AI/aiDungeonCannonBallAutoDelete.h" +#include "Game/AI/AI/aiDungeonEntranceRoot.h" +#include "Game/AI/AI/aiDungeonMoveTag.h" +#include "Game/AI/AI/aiDungeonMoveTagCont.h" +#include "Game/AI/AI/aiDungeonRemainsFire.h" +#include "Game/AI/AI/aiDungeonResetPosTag.h" +#include "Game/AI/AI/aiDungeonRotateTag.h" +#include "Game/AI/AI/aiDungeonRotateTag3D.h" +#include "Game/AI/AI/aiDungeonRotateTag4ElecApp.h" +#include "Game/AI/AI/aiDungeonRotateTag4FireApp.h" +#include "Game/AI/AI/aiDungeonRotateTag4WaterApp.h" +#include "Game/AI/AI/aiDungeonRotateTag4WindApp.h" +#include "Game/AI/AI/aiDungeonRotateTagCont.h" +#include "Game/AI/AI/aiDungeonRotateTagInOrder.h" +#include "Game/AI/AI/aiDungeonRotateTagShuttle.h" +#include "Game/AI/AI/aiDungeonRotateTagWaterChemical.h" +#include "Game/AI/AI/aiDynTargetStoneShootEnemyBattle.h" +#include "Game/AI/AI/aiDynTgBreathAttackEnemyBattle.h" +#include "Game/AI/AI/aiEarthReleaseAttack.h" +#include "Game/AI/AI/aiElectricBall.h" +#include "Game/AI/AI/aiElectricCable.h" +#include "Game/AI/AI/aiEnemyAngry.h" +#include "Game/AI/AI/aiEnemyAttackAndAway.h" +#include "Game/AI/AI/aiEnemyBaseArrowAttack.h" +#include "Game/AI/AI/aiEnemyBaseFindPlayer.h" +#include "Game/AI/AI/aiEnemyBattle.h" +#include "Game/AI/AI/aiEnemyBattleWithAreaCheck.h" +#include "Game/AI/AI/aiEnemyCalledAppear.h" +#include "Game/AI/AI/aiEnemyChaseShield.h" +#include "Game/AI/AI/aiEnemyChaseTargetAndAction.h" +#include "Game/AI/AI/aiEnemyChemTargetAction.h" +#include "Game/AI/AI/aiEnemyChemicalPowerSelect.h" +#include "Game/AI/AI/aiEnemyChemicalSelect.h" +#include "Game/AI/AI/aiEnemyConfuse.h" +#include "Game/AI/AI/aiEnemyCutRope.h" +#include "Game/AI/AI/aiEnemyDefaultReaction.h" +#include "Game/AI/AI/aiEnemyDemoSumonRecgTgt.h" +#include "Game/AI/AI/aiEnemyEscape.h" +#include "Game/AI/AI/aiEnemyEscapeMove.h" +#include "Game/AI/AI/aiEnemyEscapeRoot.h" +#include "Game/AI/AI/aiEnemyFeintBattle.h" +#include "Game/AI/AI/aiEnemyFindBadStatusFriend.h" +#include "Game/AI/AI/aiEnemyFindHorseRideTarget.h" +#include "Game/AI/AI/aiEnemyFindShootable.h" +#include "Game/AI/AI/aiEnemyFortressChat.h" +#include "Game/AI/AI/aiEnemyFortressMgrTag.h" +#include "Game/AI/AI/aiEnemyFortressWait.h" +#include "Game/AI/AI/aiEnemyFortressWatchKeepingWait.h" +#include "Game/AI/AI/aiEnemyHide.h" +#include "Game/AI/AI/aiEnemyHideGrass.h" +#include "Game/AI/AI/aiEnemyHideShootingBattle.h" +#include "Game/AI/AI/aiEnemyHorseRide.h" +#include "Game/AI/AI/aiEnemyLifeSelect.h" +#include "Game/AI/AI/aiEnemyLiftShootItem.h" +#include "Game/AI/AI/aiEnemyLifted.h" +#include "Game/AI/AI/aiEnemyLost.h" +#include "Game/AI/AI/aiEnemyMimicrySelect.h" +#include "Game/AI/AI/aiEnemyMoveBattle.h" +#include "Game/AI/AI/aiEnemyMoveToGround.h" +#include "Game/AI/AI/aiEnemyNoiseTarget.h" +#include "Game/AI/AI/aiEnemyNotice.h" +#include "Game/AI/AI/aiEnemyNoticeActiveEnemy.h" +#include "Game/AI/AI/aiEnemyNoticeFearfulLastAttacker.h" +#include "Game/AI/AI/aiEnemyNoticeFearfulTarget.h" +#include "Game/AI/AI/aiEnemyNoticeLimit.h" +#include "Game/AI/AI/aiEnemyNoticeSound.h" +#include "Game/AI/AI/aiEnemyNoticeSoundSensitiveTimer.h" +#include "Game/AI/AI/aiEnemyNoticeSoundWithUI.h" +#include "Game/AI/AI/aiEnemyNoticeTerror.h" +#include "Game/AI/AI/aiEnemyPermitAttackSelect.h" +#include "Game/AI/AI/aiEnemyPursuingArrowBattle.h" +#include "Game/AI/AI/aiEnemyPursuingAttackCheck.h" +#include "Game/AI/AI/aiEnemyPursuingBattle.h" +#include "Game/AI/AI/aiEnemyRandomRepeatSideStep.h" +#include "Game/AI/AI/aiEnemyRangeKeepMove.h" +#include "Game/AI/AI/aiEnemyRangeKeepSwimMove.h" +#include "Game/AI/AI/aiEnemyRecognizeTarget.h" +#include "Game/AI/AI/aiEnemyRestraintCheckBattle.h" +#include "Game/AI/AI/aiEnemyReturnSelect.h" +#include "Game/AI/AI/aiEnemyRoam.h" +#include "Game/AI/AI/aiEnemyRoamSelect.h" +#include "Game/AI/AI/aiEnemyRoamViewItem.h" +#include "Game/AI/AI/aiEnemyRoot.h" +#include "Game/AI/AI/aiEnemySearchHorse.h" +#include "Game/AI/AI/aiEnemySearchShieldItemFindPlayer.h" +#include "Game/AI/AI/aiEnemyShieldSearchOrBattle.h" +#include "Game/AI/AI/aiEnemyShootAttackExplosives.h" +#include "Game/AI/AI/aiEnemySittingTogether.h" +#include "Game/AI/AI/aiEnemySkyArrowAttack.h" +#include "Game/AI/AI/aiEnemySomeIgniteBattle.h" +#include "Game/AI/AI/aiEnemySyncAttack.h" +#include "Game/AI/AI/aiEnemyTargetGearSelect.h" +#include "Game/AI/AI/aiEnemyTargetInAreaSelect.h" +#include "Game/AI/AI/aiEnemyTargetInSightSelect.h" +#include "Game/AI/AI/aiEnemyTimelineAI.h" +#include "Game/AI/AI/aiEnemyTired.h" +#include "Game/AI/AI/aiEnemyTreeWeaponSearchOrBattle.h" +#include "Game/AI/AI/aiEnemyVacuumBombSelect.h" +#include "Game/AI/AI/aiEnemyVacuumChangeItemSelect.h" +#include "Game/AI/AI/aiEnemyVacuumWeaponTypeSelect.h" +#include "Game/AI/AI/aiEnemyWaitViewItem.h" +#include "Game/AI/AI/aiEnemyWarnNoticeEndChase.h" +#include "Game/AI/AI/aiEnemyWarnNoticeSelect.h" +#include "Game/AI/AI/aiEnemyWatchKeepingWait.h" +#include "Game/AI/AI/aiEnterFromResetSelect.h" +#include "Game/AI/AI/aiEnvSeEmitPointRootAI.h" +#include "Game/AI/AI/aiEquipConditionSelect.h" +#include "Game/AI/AI/aiEquipHaveSelector.h" +#include "Game/AI/AI/aiEquipShieldEnemySearchWeapon.h" +#include "Game/AI/AI/aiEquipStand.h" +#include "Game/AI/AI/aiEscapeFromTargetFrontRandomDir.h" +#include "Game/AI/AI/aiEscapeOppositeToTargetInWater.h" +#include "Game/AI/AI/aiEscapeOrWaitSelect.h" +#include "Game/AI/AI/aiEternalPlayerTarget.h" +#include "Game/AI/AI/aiEventTagRootAI.h" +#include "Game/AI/AI/aiEventTimeRoot.h" +#include "Game/AI/AI/aiExceededImpulseCheck.h" +#include "Game/AI/AI/aiExplodeCheck.h" +#include "Game/AI/AI/aiFirstSelect.h" +#include "Game/AI/AI/aiFishGoToAndNibble.h" +#include "Game/AI/AI/aiFishRoot.h" +#include "Game/AI/AI/aiFishSafeReturn.h" +#include "Game/AI/AI/aiFixableLiftable.h" +#include "Game/AI/AI/aiFldObjDlcHeroMapRelief.h" +#include "Game/AI/AI/aiFldObjIvyBurnRoot.h" +#include "Game/AI/AI/aiFlyInsectRoam.h" +#include "Game/AI/AI/aiFlyMoveToTarget.h" +#include "Game/AI/AI/aiFlyingEnemyBackKeepMove.h" +#include "Game/AI/AI/aiFlyingEnemyDiagonallyKeepMove.h" +#include "Game/AI/AI/aiFlyingEnemyFindPlayer.h" +#include "Game/AI/AI/aiFlyingEnemyFrontKeepMove.h" +#include "Game/AI/AI/aiForSaleOrNot.h" +#include "Game/AI/AI/aiForbidDoubleNoticeSelect.h" +#include "Game/AI/AI/aiForestGiantBattle.h" +#include "Game/AI/AI/aiForestGiantBattleMove.h" +#include "Game/AI/AI/aiForestGiantChanceWait.h" +#include "Game/AI/AI/aiForestGiantClosestAttackSelect.h" +#include "Game/AI/AI/aiForestGiantFindPlayer.h" +#include "Game/AI/AI/aiForestGiantNormal.h" +#include "Game/AI/AI/aiForestGiantNoticeSound.h" +#include "Game/AI/AI/aiForestGiantReaction.h" +#include "Game/AI/AI/aiForestGiantRecognizeTarget.h" +#include "Game/AI/AI/aiForestGiantRoam.h" +#include "Game/AI/AI/aiForestGiantRoot.h" +#include "Game/AI/AI/aiForestGiantStoneShootBattle.h" +#include "Game/AI/AI/aiFork2AI.h" +#include "Game/AI/AI/aiFork2AIUpperLowerBody.h" +#include "Game/AI/AI/aiFork3AI.h" +#include "Game/AI/AI/aiFork4AI.h" +#include "Game/AI/AI/aiFork5AI.h" +#include "Game/AI/AI/aiFork6AI.h" +#include "Game/AI/AI/aiForkActionAndJoin.h" +#include "Game/AI/AI/aiForkBeastGanonRoot.h" +#include "Game/AI/AI/aiFreezeInWaterSelect.h" +#include "Game/AI/AI/aiFriendCallAction.h" +#include "Game/AI/AI/aiFromPopPoolDamageSelect.h" +#include "Game/AI/AI/aiGambleTreasureBoxRoot.h" +#include "Game/AI/AI/aiGameDataFlagSelector.h" +#include "Game/AI/AI/aiGanonApproachOnFloorRoot.h" +#include "Game/AI/AI/aiGanonApproachOnWallRoot.h" +#include "Game/AI/AI/aiGanonBattleOnFloorRoot.h" +#include "Game/AI/AI/aiGanonBattleOnWallRoot.h" +#include "Game/AI/AI/aiGanonBattleRoot.h" +#include "Game/AI/AI/aiGanonBeamOnFloor.h" +#include "Game/AI/AI/aiGanonBeamOnWall.h" +#include "Game/AI/AI/aiGanonBeastDying.h" +#include "Game/AI/AI/aiGanonBeastMoveSelect.h" +#include "Game/AI/AI/aiGanonBeastReaction.h" +#include "Game/AI/AI/aiGanonBeastRoot.h" +#include "Game/AI/AI/aiGanonBeastStairState.h" +#include "Game/AI/AI/aiGanonBeastSufferChanger.h" +#include "Game/AI/AI/aiGanonBeastWait.h" +#include "Game/AI/AI/aiGanonDemoMoveSeqTwoAction.h" +#include "Game/AI/AI/aiGanonFarAttackRootOnWall.h" +#include "Game/AI/AI/aiGanonGrudgeNormal.h" +#include "Game/AI/AI/aiGanonNearAttackOnFloorRoot.h" +#include "Game/AI/AI/aiGanonNormalRoot.h" +#include "Game/AI/AI/aiGanonReaction.h" +#include "Game/AI/AI/aiGanonRecognizeRoot.h" +#include "Game/AI/AI/aiGanonShockRoot.h" +#include "Game/AI/AI/aiGanonStateChangeRoot.h" +#include "Game/AI/AI/aiGanonThrowActorRoot.h" +#include "Game/AI/AI/aiGanonThrowMultiActorRoot.h" +#include "Game/AI/AI/aiGanonWeaponAttackOnFloor.h" +#include "Game/AI/AI/aiGearRangeSelect.h" +#include "Game/AI/AI/aiGelEnemyReaction.h" +#include "Game/AI/AI/aiGerudoHeroSoulGiftRoot.h" +#include "Game/AI/AI/aiGerudoQueenBattle.h" +#include "Game/AI/AI/aiGetItemBrightBow.h" +#include "Game/AI/AI/aiGetItemNormal.h" +#include "Game/AI/AI/aiGiantArmorAsWeakPoint.h" +#include "Game/AI/AI/aiGiantEarthReleaseAttack.h" +#include "Game/AI/AI/aiGiantEscapeFromDamageWater.h" +#include "Game/AI/AI/aiGiantNavMoveTarget.h" +#include "Game/AI/AI/aiGiantNavMoveWithFirstAction.h" +#include "Game/AI/AI/aiGiantRoamSelect.h" +#include "Game/AI/AI/aiGiantSleepNormal.h" +#include "Game/AI/AI/aiGiantSleepReaction.h" +#include "Game/AI/AI/aiGiantStoneShootAngrySelect.h" +#include "Game/AI/AI/aiGolemChemicalResetSelect.h" +#include "Game/AI/AI/aiGolemChemicalVanishedSelect.h" +#include "Game/AI/AI/aiGolemClimbedSelect.h" +#include "Game/AI/AI/aiGolemClimbedTimeSelect.h" +#include "Game/AI/AI/aiGolemFindPlayer.h" +#include "Game/AI/AI/aiGolemFireREnemyBattle.h" +#include "Game/AI/AI/aiGolemNormal.h" +#include "Game/AI/AI/aiGolemNoticeWorry.h" +#include "Game/AI/AI/aiGolemPartRoot.h" +#include "Game/AI/AI/aiGolemPartsSelect.h" +#include "Game/AI/AI/aiGolemRWeakPointRoot.h" +#include "Game/AI/AI/aiGolemReaction.h" +#include "Game/AI/AI/aiGolemRoot.h" +#include "Game/AI/AI/aiGolemSleepNormal.h" +#include "Game/AI/AI/aiGolemSleepTypeSelect.h" +#include "Game/AI/AI/aiGolemWeakPointRoot.h" +#include "Game/AI/AI/aiGolfBallRoot.h" +#include "Game/AI/AI/aiGoronCannon.h" +#include "Game/AI/AI/aiGoronHeroDescendentRoot.h" +#include "Game/AI/AI/aiGoronHeroSoulGiftRoot.h" +#include "Game/AI/AI/aiGroundAngleSelect.h" +#include "Game/AI/AI/aiGroundHitSelect.h" +#include "Game/AI/AI/aiGrudgeEyeball.h" +#include "Game/AI/AI/aiGuardAndRevenge.h" +#include "Game/AI/AI/aiGuardFlagSelect.h" +#include "Game/AI/AI/aiGuardFrequencySelect.h" +#include "Game/AI/AI/aiGuardianBattleBeamAttack.h" +#include "Game/AI/AI/aiGuardianBeam.h" +#include "Game/AI/AI/aiGuardianBeamAttack.h" +#include "Game/AI/AI/aiGuardianBezierRailMove.h" +#include "Game/AI/AI/aiGuardianChase.h" +#include "Game/AI/AI/aiGuardianCloseBattle.h" +#include "Game/AI/AI/aiGuardianDown.h" +#include "Game/AI/AI/aiGuardianMini2ndBattle.h" +#include "Game/AI/AI/aiGuardianMini2ndBattleAttack.h" +#include "Game/AI/AI/aiGuardianMiniBattle.h" +#include "Game/AI/AI/aiGuardianMiniBattleStateSelect.h" +#include "Game/AI/AI/aiGuardianMiniBeam.h" +#include "Game/AI/AI/aiGuardianMiniBeamAttack.h" +#include "Game/AI/AI/aiGuardianMiniBeamAttackMove.h" +#include "Game/AI/AI/aiGuardianMiniBeamAttackNoWait.h" +#include "Game/AI/AI/aiGuardianMiniBeamToExplosives.h" +#include "Game/AI/AI/aiGuardianMiniBlownOff.h" +#include "Game/AI/AI/aiGuardianMiniChangeWeapon.h" +#include "Game/AI/AI/aiGuardianMiniFinalBattle.h" +#include "Game/AI/AI/aiGuardianMiniFindPlayer.h" +#include "Game/AI/AI/aiGuardianMiniGroggy.h" +#include "Game/AI/AI/aiGuardianMiniGuardSelect.h" +#include "Game/AI/AI/aiGuardianMiniNoWeaponSelect.h" +#include "Game/AI/AI/aiGuardianMiniOnNoNavMesh.h" +#include "Game/AI/AI/aiGuardianMiniRangeKeepMove.h" +#include "Game/AI/AI/aiGuardianMiniReaction.h" +#include "Game/AI/AI/aiGuardianMiniRecognizeTarget.h" +#include "Game/AI/AI/aiGuardianMiniRollingAttackMove.h" +#include "Game/AI/AI/aiGuardianMiniRoot.h" +#include "Game/AI/AI/aiGuardianMiniTargetOnScalffold.h" +#include "Game/AI/AI/aiGuardianMiniTransformSelect.h" +#include "Game/AI/AI/aiGuardianMiniViewWait.h" +#include "Game/AI/AI/aiGuardianRoam.h" +#include "Game/AI/AI/aiGuardianRoot.h" +#include "Game/AI/AI/aiGuardianTargetLost.h" +#include "Game/AI/AI/aiGuardianWait.h" +#include "Game/AI/AI/aiGyroActivateTerminal.h" +#include "Game/AI/AI/aiHangedLamp.h" +#include "Game/AI/AI/aiHasPreActorSelect.h" +#include "Game/AI/AI/aiHaveNoWeaponSelector.h" +#include "Game/AI/AI/aiHeightSelectTwoAction.h" +#include "Game/AI/AI/aiHeroSoulGiftRoot.h" +#include "Game/AI/AI/aiHiddenKorokRoot.h" +#include "Game/AI/AI/aiHiddenOctarockFindPlayer.h" +#include "Game/AI/AI/aiHiddenOctarockNormal.h" +#include "Game/AI/AI/aiHiddenOctarockSearchTarget.h" +#include "Game/AI/AI/aiHomePosDistanceSelector.h" +#include "Game/AI/AI/aiHorse.h" +#include "Game/AI/AI/aiHorseCheckLineOfSightSelector.h" +#include "Game/AI/AI/aiHorseDamageTypeSelect.h" +#include "Game/AI/AI/aiHorseEscapeRouteRailAI.h" +#include "Game/AI/AI/aiHorseFollow.h" +#include "Game/AI/AI/aiHorseGoToEatAI.h" +#include "Game/AI/AI/aiHorseLoopTargetAndWaitAI.h" +#include "Game/AI/AI/aiHorseMoveToPlayer.h" +#include "Game/AI/AI/aiHorseNatureSelectAI.h" +#include "Game/AI/AI/aiHorseNotRidden.h" +#include "Game/AI/AI/aiHorsePrevRiddenStatusSelector.h" +#include "Game/AI/AI/aiHorseReins.h" +#include "Game/AI/AI/aiHorseRiddenAI.h" +#include "Game/AI/AI/aiHorseRiddenByEnemyAI.h" +#include "Game/AI/AI/aiHorseRiddenByNPC.h" +#include "Game/AI/AI/aiHorseRideChargeAttack.h" +#include "Game/AI/AI/aiHorseRideChaseBattleAttackMove.h" +#include "Game/AI/AI/aiHorseRideChaseBattleMove.h" +#include "Game/AI/AI/aiHorseRideDamagedSelector.h" +#include "Game/AI/AI/aiHorseRideEnemyBattle.h" +#include "Game/AI/AI/aiHorseRideEnemyFindPlayer.h" +#include "Game/AI/AI/aiHorseRideEnemyNormal.h" +#include "Game/AI/AI/aiHorseRideMoveTo.h" +#include "Game/AI/AI/aiHorseRideRangeKeepMove.h" +#include "Game/AI/AI/aiHorseRideShooterFindPlayer.h" +#include "Game/AI/AI/aiHorseRideShootingEnemyBattle.h" +#include "Game/AI/AI/aiHorseRideTurn.h" +#include "Game/AI/AI/aiHorseWanderAI.h" +#include "Game/AI/AI/aiIAIAttack.h" +#include "Game/AI/AI/aiIbutsuWaterFallRoot.h" +#include "Game/AI/AI/aiIceEnemyFeintBattle.h" +#include "Game/AI/AI/aiIceMakerBlock.h" +#include "Game/AI/AI/aiInDemoSelect.h" +#include "Game/AI/AI/aiInForceEnemyLostAreaSelect.h" +#include "Game/AI/AI/aiInTerritorySelector.h" +#include "Game/AI/AI/aiInWaterKeepSelect.h" +#include "Game/AI/AI/aiInWaterSelect.h" +#include "Game/AI/AI/aiIncredibleAction.h" +#include "Game/AI/AI/aiInitFromInCarryBoxSelect.h" +#include "Game/AI/AI/aiInsectEscape.h" +#include "Game/AI/AI/aiInsectFairyRoot.h" +#include "Game/AI/AI/aiInsectRoam.h" +#include "Game/AI/AI/aiInsectRoot.h" +#include "Game/AI/AI/aiInvincibleHiddenOctarock.h" +#include "Game/AI/AI/aiInvisibleKorokRailMove.h" +#include "Game/AI/AI/aiIsPlacementAreaEnemy.h" +#include "Game/AI/AI/aiItemAmiiboRoot.h" +#include "Game/AI/AI/aiItemConductor.h" +#include "Game/AI/AI/aiItemOnTree.h" +#include "Game/AI/AI/aiItemRoot.h" +#include "Game/AI/AI/aiJumpAttack.h" +#include "Game/AI/AI/aiJustAvoidFinishWait.h" +#include "Game/AI/AI/aiKakarikoKokkoTimeline.h" +#include "Game/AI/AI/aiKeepBackSelect.h" +#include "Game/AI/AI/aiKeeseDieSelect.h" +#include "Game/AI/AI/aiKeeseHangOnCeil.h" +#include "Game/AI/AI/aiKeeseNormal.h" +#include "Game/AI/AI/aiKeeseRoam.h" +#include "Game/AI/AI/aiKeeseSwarmNormal.h" +#include "Game/AI/AI/aiKeeseSwarmRoam.h" +#include "Game/AI/AI/aiKeyLockedShutter.h" +#include "Game/AI/AI/aiKokkoAngry.h" +#include "Game/AI/AI/aiKokkoAngryTargetSelect.h" +#include "Game/AI/AI/aiKokkoEscapeAI.h" +#include "Game/AI/AI/aiKokkoRoot.h" +#include "Game/AI/AI/aiKorokAnswerResponceRoot.h" +#include "Game/AI/AI/aiKorokFlowerColorRoot.h" +#include "Game/AI/AI/aiKorokFlowerRoot.h" +#include "Game/AI/AI/aiKorokGoalTimerRootAI.h" +#include "Game/AI/AI/aiKorokPinWheelRoot.h" +#include "Game/AI/AI/aiKorokPotRootAI.h" +#include "Game/AI/AI/aiKorokStartStandRoot.h" +#include "Game/AI/AI/aiKorokStoneLift.h" +#include "Game/AI/AI/aiKorokTargetRailMove.h" +#include "Game/AI/AI/aiLOSFurthestHitPointFinder.h" +#include "Game/AI/AI/aiLandHumEnemyFindBait.h" +#include "Game/AI/AI/aiLandHumEnemyFindBaitWeapon.h" +#include "Game/AI/AI/aiLandHumEnemyFindPlayer.h" +#include "Game/AI/AI/aiLandHumEnemyNormal.h" +#include "Game/AI/AI/aiLandHumEnemyThrowWeapon.h" +#include "Game/AI/AI/aiLandHumEnemyUnarmedBattle.h" +#include "Game/AI/AI/aiLandHumGourmandEnemyNormal.h" +#include "Game/AI/AI/aiLandingChemicalBall.h" +#include "Game/AI/AI/aiLargeCannonAttackRoot.h" +#include "Game/AI/AI/aiLastAttackerSelect.h" +#include "Game/AI/AI/aiLastAttackerSpecialActionSelect.h" +#include "Game/AI/AI/aiLastBossBeamAttackRoot.h" +#include "Game/AI/AI/aiLastBossDemoWarpMove.h" +#include "Game/AI/AI/aiLastBossDemoWarpRoot.h" +#include "Game/AI/AI/aiLastBossNormalWarpRoot.h" +#include "Game/AI/AI/aiLastBossRailWarpRoot.h" +#include "Game/AI/AI/aiLastBossRoot.h" +#include "Game/AI/AI/aiLastBossShieldBash.h" +#include "Game/AI/AI/aiLastBossShootGaleArrowRoot.h" +#include "Game/AI/AI/aiLastBossShootNormalArrowRoot.h" +#include "Game/AI/AI/aiLastBossSwordWhirlSlash.h" +#include "Game/AI/AI/aiLastBossThunderRoot.h" +#include "Game/AI/AI/aiLastBossWeaponAttackRoot.h" +#include "Game/AI/AI/aiLeadToTarget.h" +#include "Game/AI/AI/aiLeaderDistanceSelector.h" +#include "Game/AI/AI/aiLeaveFromTarget.h" +#include "Game/AI/AI/aiLifeChangeDemoCaller.h" +#include "Game/AI/AI/aiLifted.h" +#include "Game/AI/AI/aiLimitedTimeredActorCreator.h" +#include "Game/AI/AI/aiLineCheckTag.h" +#include "Game/AI/AI/aiLinkTagCheck.h" +#include "Game/AI/AI/aiLinkageEnemyNormal.h" +#include "Game/AI/AI/aiLizalfosBreathAttack.h" +#include "Game/AI/AI/aiLumberjackFallenTree.h" +#include "Game/AI/AI/aiLumberjackTree.h" +#include "Game/AI/AI/aiLynelArrowAttackSelect.h" +#include "Game/AI/AI/aiLynelArrowAttackSelectOnce.h" +#include "Game/AI/AI/aiLynelArrowBattle.h" +#include "Game/AI/AI/aiLynelAttackThroughMove.h" +#include "Game/AI/AI/aiLynelBackStepFromTarget.h" +#include "Game/AI/AI/aiLynelBattle.h" +#include "Game/AI/AI/aiLynelChaseBattleMove.h" +#include "Game/AI/AI/aiLynelCloseBattle.h" +#include "Game/AI/AI/aiLynelDirSelect.h" +#include "Game/AI/AI/aiLynelDistanceLostCheck.h" +#include "Game/AI/AI/aiLynelEscapeFromTarget.h" +#include "Game/AI/AI/aiLynelFindPlayer.h" +#include "Game/AI/AI/aiLynelLineMoveAttack.h" +#include "Game/AI/AI/aiLynelNavMoveNoStop.h" +#include "Game/AI/AI/aiLynelNavMoveTarget.h" +#include "Game/AI/AI/aiLynelNormal.h" +#include "Game/AI/AI/aiLynelNoticeAttacked.h" +#include "Game/AI/AI/aiLynelNoticeTerror.h" +#include "Game/AI/AI/aiLynelOnNoNavMeshPos.h" +#include "Game/AI/AI/aiLynelRecognizeTarget.h" +#include "Game/AI/AI/aiLynelRepeatAttack.h" +#include "Game/AI/AI/aiLynelRoam.h" +#include "Game/AI/AI/aiLynelRodeo.h" +#include "Game/AI/AI/aiLynelRoot.h" +#include "Game/AI/AI/aiLynelTackleMove.h" +#include "Game/AI/AI/aiLynelThreeBreathAttack.h" +#include "Game/AI/AI/aiLynelWarp.h" +#include "Game/AI/AI/aiMagneGearRoot.h" +#include "Game/AI/AI/aiMagneGrabSelect.h" +#include "Game/AI/AI/aiMagneGrabbedPartsRangeSelector.h" +#include "Game/AI/AI/aiMagneShaftRoot.h" +#include "Game/AI/AI/aiMagneSliderBlockRootThunder.h" +#include "Game/AI/AI/aiMagneStickRoot.h" +#include "Game/AI/AI/aiMagnetglove.h" +#include "Game/AI/AI/aiMainFieldDungeonSelect.h" +#include "Game/AI/AI/aiMasquaradeSubTargetSelect.h" +#include "Game/AI/AI/aiMasterSwordBase100EnemyRoot.h" +#include "Game/AI/AI/aiMasterSwordRoot.h" +#include "Game/AI/AI/aiMergedDungeonPartsRoot.h" +#include "Game/AI/AI/aiMessageReceiveCheck.h" +#include "Game/AI/AI/aiMessageReceiveCheckBasic.h" +#include "Game/AI/AI/aiMessageReceiveCheckEveryFrame.h" +#include "Game/AI/AI/aiMetalObjectBuried.h" +#include "Game/AI/AI/aiMetalObjectFixed.h" +#include "Game/AI/AI/aiMimicCliffStopEnemyNormal.h" +#include "Game/AI/AI/aiMimicEnemyFindPlayer.h" +#include "Game/AI/AI/aiMimicEnemyNormal.h" +#include "Game/AI/AI/aiMimicFlagSelect.h" +#include "Game/AI/AI/aiMimicryResetCheck.h" +#include "Game/AI/AI/aiMiniGolemLifted.h" +#include "Game/AI/AI/aiMiniGolemReaction.h" +#include "Game/AI/AI/aiMiniGolemRoot.h" +#include "Game/AI/AI/aiMiniGolemSleep.h" +#include "Game/AI/AI/aiMoonAI.h" +#include "Game/AI/AI/aiMoonNameTag.h" +#include "Game/AI/AI/aiMoriblinSpearBattle.h" +#include "Game/AI/AI/aiMoriblinSpearNearBattle.h" +#include "Game/AI/AI/aiMoriblinUnarmedBattle.h" +#include "Game/AI/AI/aiMotorcycleRoot.h" +#include "Game/AI/AI/aiMoveAndFreeFallGondola.h" +#include "Game/AI/AI/aiMoveAroundTarget.h" +#include "Game/AI/AI/aiMoveLOSFeedback.h" +#include "Game/AI/AI/aiMoveRemainsElectric.h" +#include "Game/AI/AI/aiMoveToCameraFrontXZ.h" +#include "Game/AI/AI/aiMoveToTargetCollisionFeedback.h" +#include "Game/AI/AI/aiNPCAlert.h" +#include "Game/AI/AI/aiNPCArtistRoot.h" +#include "Game/AI/AI/aiNPCAttack.h" +#include "Game/AI/AI/aiNPCAttentionAI.h" +#include "Game/AI/AI/aiNPCAvoid.h" +#include "Game/AI/AI/aiNPCChasePlayerBlueFire.h" +#include "Game/AI/AI/aiNPCClerkRoot.h" +#include "Game/AI/AI/aiNPCConfront.h" +#include "Game/AI/AI/aiNPCConfrontEnemy.h" +#include "Game/AI/AI/aiNPCGerudoQueenRoot.h" +#include "Game/AI/AI/aiNPCHeartsRoot.h" +#include "Game/AI/AI/aiNPCHorseRide.h" +#include "Game/AI/AI/aiNPCHorseRideWait.h" +#include "Game/AI/AI/aiNPCMamonoShopRoot.h" +#include "Game/AI/AI/aiNPCMove.h" +#include "Game/AI/AI/aiNPCMoveToRailPoint.h" +#include "Game/AI/AI/aiNPCReaction.h" +#include "Game/AI/AI/aiNPCReturnAnchor.h" +#include "Game/AI/AI/aiNPCReturnRestPosRoot.h" +#include "Game/AI/AI/aiNPCRoam.h" +#include "Game/AI/AI/aiNPCRoot.h" +#include "Game/AI/AI/aiNPCRunaway.h" +#include "Game/AI/AI/aiNPCSearch.h" +#include "Game/AI/AI/aiNPCSurprised.h" +#include "Game/AI/AI/aiNPCSuspend.h" +#include "Game/AI/AI/aiNPCTalkBalloon.h" +#include "Game/AI/AI/aiNPCTerrorAI.h" +#include "Game/AI/AI/aiNPCTimeline.h" +#include "Game/AI/AI/aiNPCTravel.h" +#include "Game/AI/AI/aiNPCTravelerRoot.h" +#include "Game/AI/AI/aiNPCWander.h" +#include "Game/AI/AI/aiNavMeshTurnAwayFromHitPos.h" +#include "Game/AI/AI/aiNavMoveNearTarget.h" +#include "Game/AI/AI/aiNavMoveTarget.h" +#include "Game/AI/AI/aiNavMoveTargetClosestPoint.h" +#include "Game/AI/AI/aiNavMoveTargetWithJumpWater.h" +#include "Game/AI/AI/aiNavViewMove.h" +#include "Game/AI/AI/aiNearCreateAppearTypeSelect.h" +#include "Game/AI/AI/aiNearCreateSelect.h" +#include "Game/AI/AI/aiNewMannequinRoot.h" +#include "Game/AI/AI/aiNormalHumanEquipableShield.h" +#include "Game/AI/AI/aiNoticePartsRangeSelector.h" +#include "Game/AI/AI/aiNpcDemoRoot.h" +#include "Game/AI/AI/aiNpcMoveToAnchor.h" +#include "Game/AI/AI/aiNpcTebaRoot.h" +#include "Game/AI/AI/aiNpcTebaTrainingRoot.h" +#include "Game/AI/AI/aiNushiEscapeSelector.h" +#include "Game/AI/AI/aiNushiWarp.h" +#include "Game/AI/AI/aiOctarockBattle.h" +#include "Game/AI/AI/aiOctarockHideEscape.h" +#include "Game/AI/AI/aiOctarockOptionRoot.h" +#include "Game/AI/AI/aiOctarockReaction.h" +#include "Game/AI/AI/aiOctarockRoot.h" +#include "Game/AI/AI/aiOctarockServiceHideWait.h" +#include "Game/AI/AI/aiOctarockWaterWait.h" +#include "Game/AI/AI/aiOnCliffEnemyBattle.h" +#include "Game/AI/AI/aiOnCliffSurfaceSelect.h" +#include "Game/AI/AI/aiOnCliffViewWait.h" +#include "Game/AI/AI/aiOnEnterEventModeSelect.h" +#include "Game/AI/AI/aiOnNavFaceSelect.h" +#include "Game/AI/AI/aiOnRagdollSelect.h" +#include "Game/AI/AI/aiOneMemoryMagicBattle.h" +#include "Game/AI/AI/aiOptionalWeaponAI.h" +#include "Game/AI/AI/aiOutOfScreen.h" +#include "Game/AI/AI/aiPartHaveSelect.h" +#include "Game/AI/AI/aiPartsNoticeSelect.h" +#include "Game/AI/AI/aiPartsSleepSelect.h" +#include "Game/AI/AI/aiPauseMenuPlayerRoot.h" +#include "Game/AI/AI/aiPickShootItemRoot.h" +#include "Game/AI/AI/aiPillarCrack.h" +#include "Game/AI/AI/aiPipeDrawing.h" +#include "Game/AI/AI/aiPlayerAttack.h" +#include "Game/AI/AI/aiPlayerBarrierBlow.h" +#include "Game/AI/AI/aiPlayerBeetle.h" +#include "Game/AI/AI/aiPlayerCamera.h" +#include "Game/AI/AI/aiPlayerCaught.h" +#include "Game/AI/AI/aiPlayerClimb.h" +#include "Game/AI/AI/aiPlayerCutJump.h" +#include "Game/AI/AI/aiPlayerDead.h" +#include "Game/AI/AI/aiPlayerDemoRoot.h" +#include "Game/AI/AI/aiPlayerGrab.h" +#include "Game/AI/AI/aiPlayerItem.h" +#include "Game/AI/AI/aiPlayerLadder.h" +#include "Game/AI/AI/aiPlayerNavDestinationMove.h" +#include "Game/AI/AI/aiPlayerNormal.h" +#include "Game/AI/AI/aiPlayerRideHorse.h" +#include "Game/AI/AI/aiPlayerRoot.h" +#include "Game/AI/AI/aiPlayerSetTarget.h" +#include "Game/AI/AI/aiPlayerSit.h" +#include "Game/AI/AI/aiPlayerSwim.h" +#include "Game/AI/AI/aiPlayerWaterFall.h" +#include "Game/AI/AI/aiPlayerZoraRide.h" +#include "Game/AI/AI/aiPointWindTagRoot.h" +#include "Game/AI/AI/aiPracticeGuardianMiniNormal.h" +#include "Game/AI/AI/aiPreSleepCheck.h" +#include "Game/AI/AI/aiPrevASEndSeq.h" +#include "Game/AI/AI/aiPrevASOR2SelectTwo.h" +#include "Game/AI/AI/aiPrevASSelect.h" +#include "Game/AI/AI/aiPrevASSkipSeq.h" +#include "Game/AI/AI/aiPrevSomeASSelect.h" +#include "Game/AI/AI/aiPreyChemicalDeadReaction.h" +#include "Game/AI/AI/aiPreyDead.h" +#include "Game/AI/AI/aiPreyDeadCauseSelector.h" +#include "Game/AI/AI/aiPreyDefWanderAI.h" +#include "Game/AI/AI/aiPreyDropItemRoot.h" +#include "Game/AI/AI/aiPreyLookAtTarget.h" +#include "Game/AI/AI/aiPreyNormal.h" +#include "Game/AI/AI/aiPreyReaction.h" +#include "Game/AI/AI/aiPreyRoot.h" +#include "Game/AI/AI/aiPreyStun.h" +#include "Game/AI/AI/aiPriestBossActorCloneRoot.h" +#include "Game/AI/AI/aiPriestBossActorEnemyRoot.h" +#include "Game/AI/AI/aiPriestBossActorGiantFouthRoot.h" +#include "Game/AI/AI/aiPriestBossActorGiantRoot.h" +#include "Game/AI/AI/aiPriestBossActorNormalMode.h" +#include "Game/AI/AI/aiPriestBossActorNormalRoot.h" +#include "Game/AI/AI/aiPriestBossActorPhaseSecondStart.h" +#include "Game/AI/AI/aiPriestBossAfterImageRoot.h" +#include "Game/AI/AI/aiPriestBossAttackGrave.h" +#include "Game/AI/AI/aiPriestBossBananaMode.h" +#include "Game/AI/AI/aiPriestBossBeamExplode.h" +#include "Game/AI/AI/aiPriestBossBlowoffDamageSelect.h" +#include "Game/AI/AI/aiPriestBossBlowoffReadyReaction.h" +#include "Game/AI/AI/aiPriestBossBowEquiped.h" +#include "Game/AI/AI/aiPriestBossCircleFormationRush.h" +#include "Game/AI/AI/aiPriestBossCircleFormationShoot.h" +#include "Game/AI/AI/aiPriestBossCloneBananaMode.h" +#include "Game/AI/AI/aiPriestBossCloneBulletRoot.h" +#include "Game/AI/AI/aiPriestBossDamageTypeSelect.h" +#include "Game/AI/AI/aiPriestBossEyeBeamFourth.h" +#include "Game/AI/AI/aiPriestBossEyeBeamStandAim.h" +#include "Game/AI/AI/aiPriestBossEyeBeamThird.h" +#include "Game/AI/AI/aiPriestBossFastWarpAttack.h" +#include "Game/AI/AI/aiPriestBossGiantDeadSelector.h" +#include "Game/AI/AI/aiPriestBossGiantDownSeq.h" +#include "Game/AI/AI/aiPriestBossGiantEnemyRoot.h" +#include "Game/AI/AI/aiPriestBossGiantReaction.h" +#include "Game/AI/AI/aiPriestBossGiantStageRotRoot.h" +#include "Game/AI/AI/aiPriestBossGiantStageRotate.h" +#include "Game/AI/AI/aiPriestBossIAIAttack.h" +#include "Game/AI/AI/aiPriestBossIronBall.h" +#include "Game/AI/AI/aiPriestBossIronBallRoot.h" +#include "Game/AI/AI/aiPriestBossIronBallStageRotate.h" +#include "Game/AI/AI/aiPriestBossLineFormationAppear.h" +#include "Game/AI/AI/aiPriestBossLineFormationFall.h" +#include "Game/AI/AI/aiPriestBossLineFormationRush.h" +#include "Game/AI/AI/aiPriestBossMakeClone.h" +#include "Game/AI/AI/aiPriestBossMetaAIRoot.h" +#include "Game/AI/AI/aiPriestBossNormalMoveSelector.h" +#include "Game/AI/AI/aiPriestBossNormalQuickRecover.h" +#include "Game/AI/AI/aiPriestBossNormalReaction.h" +#include "Game/AI/AI/aiPriestBossPhaseFinish.h" +#include "Game/AI/AI/aiPriestBossPhaseFirst.h" +#include "Game/AI/AI/aiPriestBossPhaseFourth.h" +#include "Game/AI/AI/aiPriestBossPhaseSecond.h" +#include "Game/AI/AI/aiPriestBossPhaseSelector.h" +#include "Game/AI/AI/aiPriestBossPhaseThird.h" +#include "Game/AI/AI/aiPriestBossShadowCloneEnemyRoot.h" +#include "Game/AI/AI/aiPriestBossShadowCloneThrow.h" +#include "Game/AI/AI/aiPriestBossShadowClonesReaction.h" +#include "Game/AI/AI/aiPriestBossSlowWarpMove.h" +#include "Game/AI/AI/aiPriestBossStageRotationSelector.h" +#include "Game/AI/AI/aiPriestBossSynchroMode.h" +#include "Game/AI/AI/aiPriestBossWalkAttack.h" +#include "Game/AI/AI/aiPriestBossWarpToSafePos.h" +#include "Game/AI/AI/aiPriestIronBallAttack.h" +#include "Game/AI/AI/aiPullOutTree.h" +#include "Game/AI/AI/aiRailMoveObject.h" +#include "Game/AI/AI/aiRailMoveObjectOneWay.h" +#include "Game/AI/AI/aiRailMoveRandomIgnoreStop.h" +#include "Game/AI/AI/aiRailMoveRemains.h" +#include "Game/AI/AI/aiRailMoveRemainsBGCamera.h" +#include "Game/AI/AI/aiRailMoveRndIgnrStopPlayAS.h" +#include "Game/AI/AI/aiRailMoveWithClose.h" +#include "Game/AI/AI/aiRandomSelectThreeAction.h" +#include "Game/AI/AI/aiRandomSelectTwoAction.h" +#include "Game/AI/AI/aiRangeAttackSelect.h" +#include "Game/AI/AI/aiRangeCheckSeqTwoAction.h" +#include "Game/AI/AI/aiRangeHeightSelectTwoAction.h" +#include "Game/AI/AI/aiRangeLineReachSelectTwoAction.h" +#include "Game/AI/AI/aiRangeObstacleCheck.h" +#include "Game/AI/AI/aiRangeSelectThreeAction.h" +#include "Game/AI/AI/aiRangeSelectTwoAction.h" +#include "Game/AI/AI/aiRapidAttackAllowSelect.h" +#include "Game/AI/AI/aiReduceDistanceToTargetPos.h" +#include "Game/AI/AI/aiReferenceNPCViewWithDynAS.h" +#include "Game/AI/AI/aiReflectableBulletThrown.h" +#include "Game/AI/AI/aiReflectableEscape.h" +#include "Game/AI/AI/aiReflectableIgnitedThrown.h" +#include "Game/AI/AI/aiRegistedActorNumTwoSelect.h" +#include "Game/AI/AI/aiRemainElectricCannonBeamAttack.h" +#include "Game/AI/AI/aiRemainElectricCannonRoot.h" +#include "Game/AI/AI/aiRemainsElectricBGCamera.h" +#include "Game/AI/AI/aiRemainsElectricRoot.h" +#include "Game/AI/AI/aiRemainsFireBattleMove.h" +#include "Game/AI/AI/aiRemainsFireBattleStepSelector.h" +#include "Game/AI/AI/aiRemainsFireDroneNormal.h" +#include "Game/AI/AI/aiRemainsFireRoot.h" +#include "Game/AI/AI/aiRemainsLithograph.h" +#include "Game/AI/AI/aiRemainsWaterBattleRoot.h" +#include "Game/AI/AI/aiRemainsWaterBulletController.h" +#include "Game/AI/AI/aiRemainsWaterChaseBulletRoot.h" +#include "Game/AI/AI/aiRemainsWaterNormal.h" +#include "Game/AI/AI/aiRemainsWaterRoot.h" +#include "Game/AI/AI/aiRemainsWaterWeakPointRoot.h" +#include "Game/AI/AI/aiRemainsWindBatteryAttack.h" +#include "Game/AI/AI/aiRemainsWindBatteryRoot.h" +#include "Game/AI/AI/aiRemainsWindRoot.h" +#include "Game/AI/AI/aiRememberMesOneActorEnemyRoot.h" +#include "Game/AI/AI/aiRemoteBomb.h" +#include "Game/AI/AI/aiRepeatByLargeDamage.h" +#include "Game/AI/AI/aiRestLifeSelect.h" +#include "Game/AI/AI/aiRestreintTired.h" +#include "Game/AI/AI/aiReturnFromReactionSelect.h" +#include "Game/AI/AI/aiReuseBulletPartsRoot.h" +#include "Game/AI/AI/aiRideHorseAI.h" +#include "Game/AI/AI/aiRitoHeroSoulGiftRoot.h" +#include "Game/AI/AI/aiRodEnemyFindPlayer.h" +#include "Game/AI/AI/aiRodRoot.h" +#include "Game/AI/AI/aiRopeRoot.h" +#include "Game/AI/AI/aiRuinGuardianRoot.h" +#include "Game/AI/AI/aiRupeeRabbitNormal.h" +#include "Game/AI/AI/aiSafeMoveAroundTarget.h" +#include "Game/AI/AI/aiSandfallWithSound.h" +#include "Game/AI/AI/aiSandwormAttackMove.h" +#include "Game/AI/AI/aiSandwormBattle.h" +#include "Game/AI/AI/aiSandwormBlownOff.h" +#include "Game/AI/AI/aiSandwormCircleMoveTarget.h" +#include "Game/AI/AI/aiSandwormFindTarget.h" +#include "Game/AI/AI/aiSandwormLost.h" +#include "Game/AI/AI/aiSandwormNavSearchWait.h" +#include "Game/AI/AI/aiSandwormNormal.h" +#include "Game/AI/AI/aiSandwormNoticeSound.h" +#include "Game/AI/AI/aiSandwormRNormal.h" +#include "Game/AI/AI/aiSandwormRRoot.h" +#include "Game/AI/AI/aiSandwormReaction.h" +#include "Game/AI/AI/aiSandwormRoam.h" +#include "Game/AI/AI/aiSandwormRoot.h" +#include "Game/AI/AI/aiSandwormStun.h" +#include "Game/AI/AI/aiSelfXRotSelector.h" +#include "Game/AI/AI/aiSeqAnimalAttack.h" +#include "Game/AI/AI/aiSeqAtHitAction.h" +#include "Game/AI/AI/aiSeqCloseDistTwoAction.h" +#include "Game/AI/AI/aiSeqDynamicTimeredTwoAction.h" +#include "Game/AI/AI/aiSeqFirstPointTwo.h" +#include "Game/AI/AI/aiSeqGroundHit.h" +#include "Game/AI/AI/aiSeqGroundHitAssassinBoss.h" +#include "Game/AI/AI/aiSeqHiddenOctarockSearch.h" +#include "Game/AI/AI/aiSeqIfElseAction.h" +#include "Game/AI/AI/aiSeqIfFailAction.h" +#include "Game/AI/AI/aiSeqNextMessage.h" +#include "Game/AI/AI/aiSeqOctarockAttack.h" +#include "Game/AI/AI/aiSeqOctarockWigReaction.h" +#include "Game/AI/AI/aiSeqPredictOctarockAttack.h" +#include "Game/AI/AI/aiSeqPursuit.h" +#include "Game/AI/AI/aiSeqRandomRepeat.h" +#include "Game/AI/AI/aiSeqTargetTwoAction.h" +#include "Game/AI/AI/aiSeqThreeAction.h" +#include "Game/AI/AI/aiSeqTimeredAction.h" +#include "Game/AI/AI/aiSeqTimeredPlusRandomTwoAction.h" +#include "Game/AI/AI/aiSeqTimeredTwoAction.h" +#include "Game/AI/AI/aiSeqTrgPartsNotice.h" +#include "Game/AI/AI/aiSeqTwoAction.h" +#include "Game/AI/AI/aiSeqTwoLineReachableTargetAction.h" +#include "Game/AI/AI/aiSeqTwoWeakPointOnFirstDo.h" +#include "Game/AI/AI/aiSetPartBind.h" +#include "Game/AI/AI/aiSetTargetPosForAngryKokko.h" +#include "Game/AI/AI/aiSetTargetPosForFlyThroughMove.h" +#include "Game/AI/AI/aiSetTargetPosToPlayer.h" +#include "Game/AI/AI/aiShootingEnemyBattle.h" +#include "Game/AI/AI/aiShootingEnemyFindPlayer.h" +#include "Game/AI/AI/aiShootingStarRoot.h" +#include "Game/AI/AI/aiShutterFence.h" +#include "Game/AI/AI/aiSignalFlowchartRootAI.h" +#include "Game/AI/AI/aiSignalSendingMagneStickAcceptor.h" +#include "Game/AI/AI/aiSignaledSpotBgmTrigger.h" +#include "Game/AI/AI/aiSimpleASBridge.h" +#include "Game/AI/AI/aiSimpleEnemyNormal.h" +#include "Game/AI/AI/aiSimpleEscapeFromTarget.h" +#include "Game/AI/AI/aiSimpleKokkoRoot.h" +#include "Game/AI/AI/aiSimpleLiftable.h" +#include "Game/AI/AI/aiSimpleLiftableDLC.h" +#include "Game/AI/AI/aiSimpleLineBeam.h" +#include "Game/AI/AI/aiSimpleShootingEnemyFindPlayer.h" +#include "Game/AI/AI/aiSiteBossApproachRoot.h" +#include "Game/AI/AI/aiSiteBossArrowRainAttack.h" +#include "Game/AI/AI/aiSiteBossAttackRoot.h" +#include "Game/AI/AI/aiSiteBossBigFlameBall.h" +#include "Game/AI/AI/aiSiteBossBlowOff.h" +#include "Game/AI/AI/aiSiteBossBowChildDeviceRoot.h" +#include "Game/AI/AI/aiSiteBossBowRoot.h" +#include "Game/AI/AI/aiSiteBossFlameBall.h" +#include "Game/AI/AI/aiSiteBossGaleArrowRoot.h" +#include "Game/AI/AI/aiSiteBossIceSplinterRoot.h" +#include "Game/AI/AI/aiSiteBossLswordAttackRoot.h" +#include "Game/AI/AI/aiSiteBossLswordFireBallRoot.h" +#include "Game/AI/AI/aiSiteBossLswordRoot.h" +#include "Game/AI/AI/aiSiteBossLswordTornadoRoot.h" +#include "Game/AI/AI/aiSiteBossNormalRoot.h" +#include "Game/AI/AI/aiSiteBossPierceBulletAttack.h" +#include "Game/AI/AI/aiSiteBossReaction.h" +#include "Game/AI/AI/aiSiteBossRecognizeRoot.h" +#include "Game/AI/AI/aiSiteBossReflectArrowRoot.h" +#include "Game/AI/AI/aiSiteBossShootArrowRoot.h" +#include "Game/AI/AI/aiSiteBossShootNormalArrowRoot.h" +#include "Game/AI/AI/aiSiteBossSmallDamageRoot.h" +#include "Game/AI/AI/aiSiteBossSpearAttackRoot.h" +#include "Game/AI/AI/aiSiteBossSpearLifeSelector.h" +#include "Game/AI/AI/aiSiteBossSpearRoot.h" +#include "Game/AI/AI/aiSiteBossSpearThrow.h" +#include "Game/AI/AI/aiSiteBossSwordApproachRoot.h" +#include "Game/AI/AI/aiSiteBossSwordAttackRoot.h" +#include "Game/AI/AI/aiSiteBossSwordIronPileRoot.h" +#include "Game/AI/AI/aiSiteBossSwordRailApproach.h" +#include "Game/AI/AI/aiSiteBossSwordRoot.h" +#include "Game/AI/AI/aiSiteBossSwordSeqThreeAI.h" +#include "Game/AI/AI/aiSiteBossSwordWeapon.h" +#include "Game/AI/AI/aiSiteBossThrowIceRoot.h" +#include "Game/AI/AI/aiSleepBedRoot.h" +#include "Game/AI/AI/aiSleepSelect.h" +#include "Game/AI/AI/aiSnowBallNormal.h" +#include "Game/AI/AI/aiSnowOctarockBattle.h" +#include "Game/AI/AI/aiSoundTriggerTag.h" +#include "Game/AI/AI/aiSpearWeaponSelect.h" +#include "Game/AI/AI/aiSpotBgmTrigger.h" +#include "Game/AI/AI/aiStalEnemyBlownOff.h" +#include "Game/AI/AI/aiStalEnemyChasePart.h" +#include "Game/AI/AI/aiStalEnemyDoShootPartSelect.h" +#include "Game/AI/AI/aiStalEnemyGrabShootOwnPart.h" +#include "Game/AI/AI/aiStalEnemyNoHeadWait.h" +#include "Game/AI/AI/aiStalEnemyReaction.h" +#include "Game/AI/AI/aiStalEnemyRoot.h" +#include "Game/AI/AI/aiStalEnemySleep.h" +#include "Game/AI/AI/aiStalGiantEnemyReaction.h" +#include "Game/AI/AI/aiStalGiantEnemyRoot.h" +#include "Game/AI/AI/aiStalGiantSleepNormal.h" +#include "Game/AI/AI/aiStalHeadLifted.h" +#include "Game/AI/AI/aiStalHeadPartRoot.h" +#include "Game/AI/AI/aiStalPartCatch.h" +#include "Game/AI/AI/aiStalPartNormal.h" +#include "Game/AI/AI/aiStalPartRoot.h" +#include "Game/AI/AI/aiStalPartsHasSelect.h" +#include "Game/AI/AI/aiStole.h" +#include "Game/AI/AI/aiStoneBall_BRoot.h" +#include "Game/AI/AI/aiStoneOctarockBattle.h" +#include "Game/AI/AI/aiStoneOctarockGuardNearTarget.h" +#include "Game/AI/AI/aiStoneOctarockWait.h" +#include "Game/AI/AI/aiStoneShootEnemyBattle.h" +#include "Game/AI/AI/aiStoneStickRoot.h" +#include "Game/AI/AI/aiStopTimerObserver.h" +#include "Game/AI/AI/aiStraightMove.h" +#include "Game/AI/AI/aiStunBossReaction.h" +#include "Game/AI/AI/aiStunWithDamageReaction.h" +#include "Game/AI/AI/aiSubsAngleSelect.h" +#include "Game/AI/AI/aiSunAI.h" +#include "Game/AI/AI/aiSunazarashiEscapeMove.h" +#include "Game/AI/AI/aiSunazarashiNormal.h" +#include "Game/AI/AI/aiSunazarashiReturn.h" +#include "Game/AI/AI/aiSunazarashiRoot.h" +#include "Game/AI/AI/aiSunazarashiTowing.h" +#include "Game/AI/AI/aiSwarmBattle.h" +#include "Game/AI/AI/aiSwarmEscapeDie.h" +#include "Game/AI/AI/aiSwarmRangeKeepCircleMove.h" +#include "Game/AI/AI/aiSwarmReaction.h" +#include "Game/AI/AI/aiSwarmRoot.h" +#include "Game/AI/AI/aiSwarmStopTimerEscape.h" +#include "Game/AI/AI/aiSwimEnemyFindPlayer.h" +#include "Game/AI/AI/aiSwimEnemyNormal.h" +#include "Game/AI/AI/aiSwimEnemyRoam.h" +#include "Game/AI/AI/aiSwitchDistance.h" +#include "Game/AI/AI/aiSwitchElectric.h" +#include "Game/AI/AI/aiSwitchHit.h" +#include "Game/AI/AI/aiSwitchHitOnce.h" +#include "Game/AI/AI/aiSwitchLinkTagCheck.h" +#include "Game/AI/AI/aiSwitchRightAndWrong.h" +#include "Game/AI/AI/aiSwitchTimeLag.h" +#include "Game/AI/AI/aiSwitchTimeLimited.h" +#include "Game/AI/AI/aiSwitchTimer.h" +#include "Game/AI/AI/aiSwitchTorch.h" +#include "Game/AI/AI/aiSwitchWheel.h" +#include "Game/AI/AI/aiSwitchWindHit.h" +#include "Game/AI/AI/aiTargetAbsolutePos.h" +#include "Game/AI/AI/aiTargetActorDistanceSelect.h" +#include "Game/AI/AI/aiTargetActorGrabAdapter.h" +#include "Game/AI/AI/aiTargetAngerSelect.h" +#include "Game/AI/AI/aiTargetAttackAttitudeTgtSelect.h" +#include "Game/AI/AI/aiTargetBaitTypeSelect.h" +#include "Game/AI/AI/aiTargetBeatCheck.h" +#include "Game/AI/AI/aiTargetBeatGetDrop.h" +#include "Game/AI/AI/aiTargetClimbSelect.h" +#include "Game/AI/AI/aiTargetDirLRInHideSelect.h" +#include "Game/AI/AI/aiTargetDirLRSelect.h" +#include "Game/AI/AI/aiTargetDistanceSelect.h" +#include "Game/AI/AI/aiTargetDynamicActorPos.h" +#include "Game/AI/AI/aiTargetElevationGapSelect.h" +#include "Game/AI/AI/aiTargetExistSelect.h" +#include "Game/AI/AI/aiTargetHomeDir.h" +#include "Game/AI/AI/aiTargetHomePos.h" +#include "Game/AI/AI/aiTargetHomeRangeSelect.h" +#include "Game/AI/AI/aiTargetInFanAreaSelect.h" +#include "Game/AI/AI/aiTargetIsEquipItemSelector.h" +#include "Game/AI/AI/aiTargetKnockBackBasePos.h" +#include "Game/AI/AI/aiTargetLastAttackedPos.h" +#include "Game/AI/AI/aiTargetLastAttacker.h" +#include "Game/AI/AI/aiTargetLastAttackerPos.h" +#include "Game/AI/AI/aiTargetLastDamagedPos.h" +#include "Game/AI/AI/aiTargetLostCheck.h" +#include "Game/AI/AI/aiTargetMyUp.h" +#include "Game/AI/AI/aiTargetNPCTypeSelector.h" +#include "Game/AI/AI/aiTargetOnMovableNavmeshSelect.h" +#include "Game/AI/AI/aiTargetPartsPos.h" +#include "Game/AI/AI/aiTargetPickedItem.h" +#include "Game/AI/AI/aiTargetPlayerPos.h" +#include "Game/AI/AI/aiTargetPosAnchorOffsetSelf.h" +#include "Game/AI/AI/aiTargetPosAnchorOffsetTarget.h" +#include "Game/AI/AI/aiTargetPosDirLRSelect.h" +#include "Game/AI/AI/aiTargetPosDynParamRotFromCtrPos.h" +#include "Game/AI/AI/aiTargetPosLostCheck.h" +#include "Game/AI/AI/aiTargetPosOffsetFromMyPos.h" +#include "Game/AI/AI/aiTargetPosOnNavFaceSelect.h" +#include "Game/AI/AI/aiTargetPosRotFromMyPos.h" +#include "Game/AI/AI/aiTargetPosTracking.h" +#include "Game/AI/AI/aiTargetPredictRotSpdTargetPos.h" +#include "Game/AI/AI/aiTargetRangeSelect.h" +#include "Game/AI/AI/aiTargetRepeat.h" +#include "Game/AI/AI/aiTargetStateSelect.h" +#include "Game/AI/AI/aiTargetTargetPos.h" +#include "Game/AI/AI/aiTargetTypeSelector.h" +#include "Game/AI/AI/aiTemperatureRandSelect.h" +#include "Game/AI/AI/aiTerminalEnduranceWarpRoot.h" +#include "Game/AI/AI/aiTimeControlTagRoot.h" +#include "Game/AI/AI/aiTimeredViewWait.h" +#include "Game/AI/AI/aiTimidityEnemyDrawback.h" +#include "Game/AI/AI/aiTiredDistSelect.h" +#include "Game/AI/AI/aiTornadoRoot.h" +#include "Game/AI/AI/aiTowingPlayer.h" +#include "Game/AI/AI/aiTreasureBox.h" +#include "Game/AI/AI/aiTreasureBoxRoot.h" +#include "Game/AI/AI/aiTreasureSpot.h" +#include "Game/AI/AI/aiTrgTargetChangeToPlayerSelect.h" +#include "Game/AI/AI/aiTrolleyGrabbedByMagnet.h" +#include "Game/AI/AI/aiTrolleyOnRail.h" +#include "Game/AI/AI/aiTrolleyRoot.h" +#include "Game/AI/AI/aiTurnForLookingAround.h" +#include "Game/AI/AI/aiTurnPreAction.h" +#include "Game/AI/AI/aiTwnObjDlcFlightTrainingTarget.h" +#include "Game/AI/AI/aiUnarmedEnemyNoiseTarget.h" +#include "Game/AI/AI/aiUnarmedWeaponEquipableEnemyAct.h" +#include "Game/AI/AI/aiUnderWaterDepthSelect.h" +#include "Game/AI/AI/aiUrbosasFuryDamageSelector.h" +#include "Game/AI/AI/aiVacuumedBombDamageSelect.h" +#include "Game/AI/AI/aiVehicleSelector.h" +#include "Game/AI/AI/aiViewChaseSound.h" +#include "Game/AI/AI/aiViewMove.h" +#include "Game/AI/AI/aiViewWait.h" +#include "Game/AI/AI/aiViewWaitEndWhenAimed.h" +#include "Game/AI/AI/aiViewWaitRiskAvoid.h" +#include "Game/AI/AI/aiViewWaitWithFaceView.h" +#include "Game/AI/AI/aiViewWaitWithInstDynActor.h" +#include "Game/AI/AI/aiViewfrustumCheckTagRoot.h" +#include "Game/AI/AI/aiWaistRotEnemyArrowAttack.h" +#include "Game/AI/AI/aiWaitAndFaceLeader.h" +#include "Game/AI/AI/aiWaitForCloseOrWaterSide.h" +#include "Game/AI/AI/aiWaitForTargetClose.h" +#include "Game/AI/AI/aiWaitNearTarget.h" +#include "Game/AI/AI/aiWaitNearTargetAwarenessRange.h" +#include "Game/AI/AI/aiWaitPartsSleep.h" +#include "Game/AI/AI/aiWarpActivateTerminal.h" +#include "Game/AI/AI/aiWarpSafeTagRoot.h" +#include "Game/AI/AI/aiWarpTagRoot.h" +#include "Game/AI/AI/aiWaterFallWithSound.h" +#include "Game/AI/AI/aiWaterSurface.h" +#include "Game/AI/AI/aiWaterSurface4RemainsLava.h" +#include "Game/AI/AI/aiWeakPointRoot.h" +#include "Game/AI/AI/aiWeakStateSelecter.h" +#include "Game/AI/AI/aiWeaponEquipEnemyWakeUp.h" +#include "Game/AI/AI/aiWeaponEquipedAI.h" +#include "Game/AI/AI/aiWeaponHoldSelector.h" +#include "Game/AI/AI/aiWeaponOnetimeUse.h" +#include "Game/AI/AI/aiWeaponPrepareSelect.h" +#include "Game/AI/AI/aiWeaponRangeKindSelect.h" +#include "Game/AI/AI/aiWeaponRootAI.h" +#include "Game/AI/AI/aiWeaponSelector.h" +#include "Game/AI/AI/aiWeaponSubTypeSelect.h" +#include "Game/AI/AI/aiWeaponThrowerSelector.h" +#include "Game/AI/AI/aiWeaponTrueFormSelect.h" +#include "Game/AI/AI/aiWeaponUsageSelect.h" +#include "Game/AI/AI/aiWeatherReactionCheck.h" +#include "Game/AI/AI/aiWetSelect.h" +#include "Game/AI/AI/aiWildHorseDefWanderAI.h" +#include "Game/AI/AI/aiWillBallAttackLevelSelect.h" +#include "Game/AI/AI/aiWillBallFollowAttackWithDynAng.h" +#include "Game/AI/AI/aiWillBallOperated.h" +#include "Game/AI/AI/aiWillBallRoot.h" +#include "Game/AI/AI/aiWindBoxPlace.h" +#include "Game/AI/AI/aiWindGenerator.h" +#include "Game/AI/AI/aiWindGeneratorSignal.h" +#include "Game/AI/AI/aiWithoutWeaponArrow.h" +#include "Game/AI/AI/aiWizzrobeBlownOff.h" +#include "Game/AI/AI/aiWizzrobeCircleMove.h" +#include "Game/AI/AI/aiWizzrobeCombat.h" +#include "Game/AI/AI/aiWizzrobeCombatMove.h" +#include "Game/AI/AI/aiWizzrobeFindPlayer.h" +#include "Game/AI/AI/aiWizzrobeRoam.h" +#include "Game/AI/AI/aiWizzrobeRoot.h" +#include "Game/AI/AI/aiWizzrobeWeatherMagic.h" +#include "Game/AI/AI/aiWolfLinkAmiibo.h" +#include "Game/AI/AI/aiWolfLinkBattleRoot.h" +#include "Game/AI/AI/aiWolfLinkChainAttack.h" +#include "Game/AI/AI/aiWolfLinkFollowPlayerRoot.h" +#include "Game/AI/AI/aiWolfLinkFollowWait.h" +#include "Game/AI/AI/aiWolfLinkGoToTarget.h" +#include "Game/AI/AI/aiWolfLinkLeadToTarget.h" +#include "Game/AI/AI/aiWolfLinkNormalRoot.h" +#include "Game/AI/AI/aiWolfLinkReaction.h" +#include "Game/AI/AI/aiWolfLinkRoot.h" +#include "Game/AI/AI/aiWolfLinkRushAttack.h" +#include "Game/AI/AI/aiWolfLinkSeqAttack.h" +#include "Game/AI/AI/aiWolfLinkShiekSensorRoot.h" +#include "Game/AI/AI/aiWolfLinkWarp.h" +#include "Game/AI/AI/aiYunBoCannon.h" +#include "Game/AI/AI/aiYunBoCannonBallRoot.h" +#include "Game/AI/AI/aiZokuchoSunazarashi.h" +#include "Game/AI/AI/aiZoraHeroRelicBattleNormal.h" +#include "Game/AI/AI/aiZoraHeroRelicBattleRidePlayer.h" +#include "Game/AI/AI/aiZoraHeroRelicBattleRoot.h" +#include "Game/AI/AI/aiZoraHeroSoulGiftRoot.h" +#include "Game/AI/AI/aiZoraHeroWarp2Player.h" +#include "KingSystem/ActorSystem/actAiAi.h" + +namespace uking { + +using Factory = ksys::act::ai::AiFactory; + +static Factory sAiFactories[] = { + {0x0000798f, Factory::make}, + {0x004e55dc, Factory::make}, + {0x00731078, Factory::make}, + {0x011364e4, Factory::make}, + {0x0116d874, Factory::make}, + {0x0134779b, Factory::make}, + {0x018170ea, Factory::make}, + {0x018ddcd7, Factory::make}, + {0x01a08e41, Factory::make}, + {0x01cb87f3, Factory::make}, + {0x02105c57, Factory::make}, + {0x023643c2, Factory::make}, + {0x0275e7f6, Factory::make}, + {0x0282d744, Factory::make}, + {0x02b20c4a, Factory::make}, + {0x0345e088, Factory::make}, + {0x036b6716, Factory::make}, + {0x0396a3df, Factory::make}, + {0x040268c6, Factory::make}, + {0x041ae394, Factory::make}, + {0x0420cd99, Factory::make}, + {0x046ad1ca, Factory::make}, + {0x053eefb0, Factory::make}, + {0x058151c0, Factory::make}, + {0x062e15ad, Factory::make}, + {0x063257b0, Factory::make}, + {0x065f22e7, Factory::make}, + {0x06b2c429, Factory::make}, + {0x07167def, Factory::make}, + {0x072fe219, Factory::make}, + {0x076dfdb9, Factory::make}, + {0x077957ef, Factory::make}, + {0x08017708, Factory::make}, + {0x08176875, Factory::make}, + {0x086d8ca2, Factory::make}, + {0x087a22d5, Factory::make}, + {0x08a65f52, Factory::make}, + {0x08daa8b3, Factory::make}, + {0x08ed49a2, Factory::make}, + {0x08f3b7ea, Factory::make}, + {0x092eec93, Factory::make}, + {0x0964c4fd, Factory::make}, + {0x0a3ca96a, Factory::make}, + {0x0a5b6fa2, Factory::make}, + {0x0a7cc20d, Factory::make}, + {0x0a973559, Factory::make}, + {0x0aef2327, Factory::make}, + {0x0af24b3b, Factory::make}, + {0x0b0f2091, Factory::make}, + {0x0b418c0a, Factory::make}, + {0x0b5221f0, Factory::make}, + {0x0b9ef141, Factory::make}, + {0x0ba4a61e, Factory::make}, + {0x0c069e6b, Factory::make}, + {0x0c06f3db, Factory::make}, + {0x0c2faec8, Factory::make}, + {0x0c422bde, Factory::make}, + {0x0c679cfe, Factory::make}, + {0x0cc0aa7e, Factory::make}, + {0x0d07724d, Factory::make}, + {0x0d0ba81f, Factory::make}, + {0x0d4f06b7, Factory::make}, + {0x0d7cd7fe, Factory::make}, + {0x0d9bba71, Factory::make}, + {0x0da48bb2, Factory::make}, + {0x0dbd6800, Factory::make}, + {0x0e3a423f, Factory::make}, + {0x0ea498fc, Factory::make}, + {0x0ea63ec1, Factory::make}, + {0x0f067dfb, Factory::make}, + {0x0f202ea5, Factory::make}, + {0x0f3ee9fb, Factory::make}, + {0x0f4c71fa, Factory::make}, + {0x0f77209f, Factory::make}, + {0x0fb1a504, Factory::make}, + {0x0fba9e7c, Factory::make}, + {0x0fe79a0a, Factory::make}, + {0x1000016a, Factory::make}, + {0x1072408e, Factory::make}, + {0x10c2bf16, Factory::make}, + {0x11119ee0, Factory::make}, + {0x11238d7c, Factory::make}, + {0x1134d0f8, Factory::make}, + {0x113adaaa, Factory::make}, + {0x11697298, Factory::make}, + {0x11beddfb, Factory::make}, + {0x11cba711, Factory::make}, + {0x121fe6b0, Factory::make}, + {0x1272b56c, Factory::make}, + {0x127966ed, Factory::make}, + {0x12dc63bc, Factory::make}, + {0x12e43f2b, Factory::make}, + {0x135114ef, Factory::make}, + {0x135b71c8, Factory::make}, + {0x137f0a06, Factory::make}, + {0x139ecafb, Factory::make}, + {0x13b08490, Factory::make}, + {0x1413ab4a, Factory::make}, + {0x14149a97, Factory::make}, + {0x1417cd10, Factory::make}, + {0x14457fe8, Factory::make}, + {0x145f05ca, Factory::make}, + {0x14bb5523, Factory::make}, + {0x14e11e91, Factory::make}, + {0x14ffcc27, Factory::make}, + {0x157416eb, Factory::make}, + {0x15a649a2, Factory::make}, + {0x15aaf30e, Factory::make}, + {0x15d54257, Factory::make}, + {0x15dd59de, Factory::make}, + {0x16003cd9, Factory::make}, + {0x161357cb, Factory::make}, + {0x17191207, Factory::make}, + {0x1729188e, Factory::make}, + {0x17465108, Factory::make}, + {0x17d05305, Factory::make}, + {0x17d32134, Factory::make}, + {0x17ffd3d1, Factory::make}, + {0x181eccac, Factory::make}, + {0x186d1046, Factory::make}, + {0x187e0de7, Factory::make}, + {0x18fd12bf, Factory::make}, + {0x191fac1c, Factory::make}, + {0x199d055c, Factory::make}, + {0x19d80769, Factory::make}, + {0x19f695fb, Factory::make}, + {0x19f6c13a, Factory::make}, + {0x1a0474da, Factory::make}, + {0x1a08877d, Factory::make}, + {0x1a29973e, Factory::make}, + {0x1a484b2c, Factory::make}, + {0x1ab60334, Factory::make}, + {0x1b5aa5fc, Factory::make}, + {0x1b66d7d9, Factory::make}, + {0x1b92436d, Factory::make}, + {0x1ba193b8, Factory::make}, + {0x1baf1e6b, Factory::make}, + {0x1bd93e39, Factory::make}, + {0x1be11a20, Factory::make}, + {0x1c34546b, Factory::make}, + {0x1c6c1fec, Factory::make}, + {0x1c87c34c, Factory::make}, + {0x1ca6c2a8, Factory::make}, + {0x1cdf3a4a, Factory::make}, + {0x1cdfaa4d, Factory::make}, + {0x1cf0e26d, Factory::make}, + {0x1d526917, Factory::make}, + {0x1d6af531, Factory::make}, + {0x1d6df7f7, Factory::make}, + {0x1d763d79, Factory::make}, + {0x1dafb520, Factory::make}, + {0x1e477182, Factory::make}, + {0x1fa8b19c, Factory::make}, + {0x200a5b70, Factory::make}, + {0x2025b6e2, Factory::make}, + {0x2027be9b, Factory::make}, + {0x207b2715, Factory::make}, + {0x20d6f6d7, Factory::make}, + {0x20fbd298, Factory::make}, + {0x2132d9b7, Factory::make}, + {0x2154f09b, Factory::make}, + {0x219cc849, Factory::make}, + {0x2218a9ab, Factory::make}, + {0x22579a5e, Factory::make}, + {0x22ad02d1, Factory::make}, + {0x22c89206, Factory::make}, + {0x22ea4498, Factory::make}, + {0x23103496, Factory::make}, + {0x233e801f, Factory::make}, + {0x23833033, Factory::make}, + {0x23b32a22, Factory::make}, + {0x23da165a, Factory::make}, + {0x246bc81a, Factory::make}, + {0x246e8290, Factory::make}, + {0x24b293cc, Factory::make}, + {0x2540d462, Factory::make}, + {0x254ca97e, Factory::make}, + {0x254d4822, Factory::make}, + {0x258d36a4, Factory::make}, + {0x25c5a07a, Factory::make}, + {0x25daab01, Factory::make}, + {0x26126008, Factory::make}, + {0x266d9d73, Factory::make}, + {0x26b39cdc, Factory::make}, + {0x26e0d8ae, Factory::make}, + {0x270a1f46, Factory::make}, + {0x27125f27, Factory::make}, + {0x2752ab95, Factory::make}, + {0x2788d7af, Factory::make}, + {0x27b43e0c, Factory::make}, + {0x27c56a97, Factory::make}, + {0x27cedad9, Factory::make}, + {0x2880766f, Factory::make}, + {0x28e57434, Factory::make}, + {0x29868943, Factory::make}, + {0x298f2ee7, Factory::make}, + {0x299246f6, Factory::make}, + {0x2999dc51, Factory::make}, + {0x29ad0899, Factory::make}, + {0x29b4d797, Factory::make}, + {0x29df5785, Factory::make}, + {0x29e48666, Factory::make}, + {0x29eb499d, Factory::make}, + {0x2a2ac00e, Factory::make}, + {0x2a8ba5a5, Factory::make}, + {0x2ab9731d, Factory::make}, + {0x2ade008e, Factory::make}, + {0x2ae5843b, Factory::make}, + {0x2b07e828, Factory::make}, + {0x2b6b3cc4, Factory::make}, + {0x2bb4c29b, Factory::make}, + {0x2bd26ed8, Factory::make}, + {0x2bdc5bd3, Factory::make}, + {0x2bf9275a, Factory::make}, + {0x2c179c6a, Factory::make}, + {0x2c303b83, Factory::make}, + {0x2c335828, Factory::make}, + {0x2c38923b, Factory::make}, + {0x2c71b1f7, Factory::make}, + {0x2c868a4d, Factory::make}, + {0x2cb06cde, Factory::make}, + {0x2cc039ad, Factory::make}, + {0x2cc22097, Factory::make}, + {0x2ce7f301, Factory::make}, + {0x2d2a1a2d, Factory::make}, + {0x2d7052c9, Factory::make}, + {0x2dc321a4, Factory::make}, + {0x2e5366fe, Factory::make}, + {0x2e797142, Factory::make}, + {0x2ec491eb, Factory::make}, + {0x2ed78cdf, Factory::make}, + {0x2eedc7ff, Factory::make}, + {0x2eedf653, Factory::make}, + {0x2effc39e, Factory::make}, + {0x2fe2cc4a, Factory::make}, + {0x303b0f5f, Factory::make}, + {0x303cc299, Factory::make}, + {0x30645827, Factory::make}, + {0x30cd61c8, Factory::make}, + {0x3150416c, Factory::make}, + {0x3160c84c, Factory::make}, + {0x31b8e65a, Factory::make}, + {0x31c039aa, Factory::make}, + {0x3200bd13, Factory::make}, + {0x32660e03, Factory::make}, + {0x328854fa, Factory::make}, + {0x32a9e4a6, Factory::make}, + {0x3305568b, Factory::make}, + {0x336b0f30, Factory::make}, + {0x337b7286, Factory::make}, + {0x339737a1, Factory::make}, + {0x33bb0be0, Factory::make}, + {0x34a04a7f, Factory::make}, + {0x34df8c12, Factory::make}, + {0x3504472e, Factory::make}, + {0x3506a23c, Factory::make}, + {0x358ce33a, Factory::make}, + {0x35b7be7c, Factory::make}, + {0x35d057f4, Factory::make}, + {0x35e16e1e, Factory::make}, + {0x361f6935, Factory::make}, + {0x36e89dbe, Factory::make}, + {0x373b9c60, Factory::make}, + {0x374c8abf, Factory::make}, + {0x3768a560, Factory::make}, + {0x3787a418, Factory::make}, + {0x37bf6f21, Factory::make}, + {0x3800dcb7, Factory::make}, + {0x39010974, Factory::make}, + {0x390feb44, Factory::make}, + {0x391947bb, Factory::make}, + {0x39567937, Factory::make}, + {0x398df43b, Factory::make}, + {0x39d0dd44, Factory::make}, + {0x39f48d18, Factory::make}, + {0x3a0578c8, Factory::make}, + {0x3a140b51, Factory::make}, + {0x3a1a3aa7, Factory::make}, + {0x3a1ebf4e, Factory::make}, + {0x3a207809, Factory::make}, + {0x3a45ec54, Factory::make}, + {0x3a7c5448, Factory::make}, + {0x3b520cd9, Factory::make}, + {0x3b9ab986, Factory::make}, + {0x3ba6d632, Factory::make}, + {0x3c076497, Factory::make}, + {0x3c537995, Factory::make}, + {0x3cba3da9, Factory::make}, + {0x3cf7e771, Factory::make}, + {0x3d313944, Factory::make}, + {0x3dc55a82, Factory::make}, + {0x3dd81175, Factory::make}, + {0x3df4787e, Factory::make}, + {0x3dff57c9, Factory::make}, + {0x3e3c4f65, Factory::make}, + {0x3e492d6e, Factory::make}, + {0x3f3a7459, Factory::make}, + {0x3f913028, Factory::make}, + {0x3fa81757, Factory::make}, + {0x4049b43e, Factory::make}, + {0x40904306, Factory::make}, + {0x40ce48c4, Factory::make}, + {0x412f5e26, Factory::make}, + {0x414e57b5, Factory::make}, + {0x415b73f2, Factory::make}, + {0x41c23a32, Factory::make}, + {0x41d1e158, Factory::make}, + {0x420c0b8a, Factory::make}, + {0x429a2c78, Factory::make}, + {0x42a7c944, Factory::make}, + {0x42c7d7bc, Factory::make}, + {0x431a855c, Factory::make}, + {0x43211120, Factory::make}, + {0x436463f4, Factory::make}, + {0x444ef793, Factory::make}, + {0x4480eec2, Factory::make}, + {0x44a3f9c1, Factory::make}, + {0x44b09267, Factory::make}, + {0x44d1f8c4, Factory::make}, + {0x44f529d0, Factory::make}, + {0x4510af35, Factory::make}, + {0x45550fd1, Factory::make}, + {0x4581bb9a, Factory::make}, + {0x46115254, Factory::make}, + {0x46347619, Factory::make}, + {0x463bcdf7, Factory::make}, + {0x4651d117, Factory::make}, + {0x466bb53b, Factory::make}, + {0x467e1b0d, Factory::make}, + {0x469936d8, Factory::make}, + {0x46cddb1d, Factory::make}, + {0x46f582a0, Factory::make}, + {0x46f6e4df, Factory::make}, + {0x481daedc, Factory::make}, + {0x48338455, Factory::make}, + {0x48a17706, Factory::make}, + {0x48bf5ad1, Factory::make}, + {0x48faab03, Factory::make}, + {0x49483e4d, Factory::make}, + {0x49f0d284, Factory::make}, + {0x49f5ecd1, Factory::make}, + {0x4a45cf8c, Factory::make}, + {0x4ae3ef21, Factory::make}, + {0x4aea33f8, Factory::make}, + {0x4aee3128, Factory::make}, + {0x4b3df829, Factory::make}, + {0x4bd39b1e, Factory::make}, + {0x4bdf337c, Factory::make}, + {0x4bf99f42, Factory::make}, + {0x4c1a9bcb, Factory::make}, + {0x4cb48cfb, Factory::make}, + {0x4cba267b, Factory::make}, + {0x4cea4c9f, Factory::make}, + {0x4d0c36d6, Factory::make}, + {0x4d6d12a2, Factory::make}, + {0x4e0ef00a, Factory::make}, + {0x4e272c2d, Factory::make}, + {0x4e31ab6a, Factory::make}, + {0x4e76160b, Factory::make}, + {0x4ea4d49e, Factory::make}, + {0x4ec49435, Factory::make}, + {0x4f70b2f2, Factory::make}, + {0x4ffc5024, Factory::make}, + {0x5001599e, Factory::make}, + {0x508f9a0b, Factory::make}, + {0x5127b072, Factory::make}, + {0x5132da85, Factory::make}, + {0x515a37bd, Factory::make}, + {0x51699787, Factory::make}, + {0x516bcd99, Factory::make}, + {0x5174146b, Factory::make}, + {0x51809f58, Factory::make}, + {0x51886972, Factory::make}, + {0x5206f18e, Factory::make}, + {0x5282e274, Factory::make}, + {0x52dbac3b, Factory::make}, + {0x535e7bfc, Factory::make}, + {0x538d41bc, Factory::make}, + {0x53c242d6, Factory::make}, + {0x53d937fa, Factory::make}, + {0x54a6e1cc, Factory::make}, + {0x54c7c4de, Factory::make}, + {0x54e3f436, Factory::make}, + {0x5503288e, Factory::make}, + {0x553d3da0, Factory::make}, + {0x555b3616, Factory::make}, + {0x55a0b117, Factory::make}, + {0x55a8f031, Factory::make}, + {0x55e612f7, Factory::make}, + {0x565e88f3, Factory::make}, + {0x569a6525, Factory::make}, + {0x56bf578e, Factory::make}, + {0x56c43349, Factory::make}, + {0x57599f40, Factory::make}, + {0x576721ec, Factory::make}, + {0x578ab244, Factory::make}, + {0x57e35a95, Factory::make}, + {0x57fe32fa, Factory::make}, + {0x582cf1aa, Factory::make}, + {0x5832be17, Factory::make}, + {0x5839a82b, Factory::make}, + {0x583ceaf7, Factory::make}, + {0x5847ac74, Factory::make}, + {0x58c2f54f, Factory::make}, + {0x58e096dd, Factory::make}, + {0x5908ae20, Factory::make}, + {0x5941dfc6, Factory::make}, + {0x597a9499, Factory::make}, + {0x59a8bb5b, Factory::make}, + {0x59bb64ee, Factory::make}, + {0x5a0e36ad, Factory::make}, + {0x5a12123f, Factory::make}, + {0x5a5e027a, Factory::make}, + {0x5b08c8a1, Factory::make}, + {0x5b3c4a3a, Factory::make}, + {0x5b8f7233, Factory::make}, + {0x5bff1e4e, Factory::make}, + {0x5c357127, Factory::make}, + {0x5c5be316, Factory::make}, + {0x5c71ea08, Factory::make}, + {0x5cafac4c, Factory::make}, + {0x5d4438ec, Factory::make}, + {0x5d4b21af, Factory::make}, + {0x5e27a3c0, Factory::make}, + {0x5e5381a4, Factory::make}, + {0x5eab9747, Factory::make}, + {0x5ed04c64, Factory::make}, + {0x5f017d36, Factory::make}, + {0x5f64a537, Factory::make}, + {0x5f6551fb, Factory::make}, + {0x5fa68de2, Factory::make}, + {0x5fc4ad50, Factory::make}, + {0x5fd7efa2, Factory::make}, + {0x5ffd3935, Factory::make}, + {0x603a50f8, Factory::make}, + {0x60c17b9a, Factory::make}, + {0x60e87830, Factory::make}, + {0x60e97ed7, Factory::make}, + {0x60ff9b24, Factory::make}, + {0x61185490, Factory::make}, + {0x6179384c, Factory::make}, + {0x61998647, Factory::make}, + {0x61a6c0df, Factory::make}, + {0x61afc1d1, Factory::make}, + {0x61b031ff, Factory::make}, + {0x61b98ab7, Factory::make}, + {0x61d0608f, Factory::make}, + {0x6226b55f, Factory::make}, + {0x625d53e3, Factory::make}, + {0x626f2e63, Factory::make}, + {0x626f550d, Factory::make}, + {0x6287b001, Factory::make}, + {0x6386163b, Factory::make}, + {0x64353f4d, Factory::make}, + {0x64e8c24f, Factory::make}, + {0x65651024, Factory::make}, + {0x6573d401, Factory::make}, + {0x6580e9c8, Factory::make}, + {0x659a9764, Factory::make}, + {0x65e79908, Factory::make}, + {0x661c6e29, Factory::make}, + {0x66579330, Factory::make}, + {0x6662e90d, Factory::make}, + {0x6666ad40, Factory::make}, + {0x666cd6d5, Factory::make}, + {0x667730fb, Factory::make}, + {0x66b9d588, Factory::make}, + {0x671b78fe, Factory::make}, + {0x67c51c1d, Factory::make}, + {0x68244ca3, Factory::make}, + {0x683d9d2a, Factory::make}, + {0x688cd961, Factory::make}, + {0x689c33f0, Factory::make}, + {0x69017df4, Factory::make}, + {0x6924f4c1, Factory::make}, + {0x69a3ac81, Factory::make}, + {0x69c22cb8, Factory::make}, + {0x69c6ebf6, Factory::make}, + {0x6a087db6, Factory::make}, + {0x6a38c198, Factory::make}, + {0x6a81c517, Factory::make}, + {0x6a85a5c2, Factory::make}, + {0x6a9a0040, Factory::make}, + {0x6ade8a9f, Factory::make}, + {0x6b0c2536, Factory::make}, + {0x6b1841d6, Factory::make}, + {0x6b330480, Factory::make}, + {0x6c8c2cb0, Factory::make}, + {0x6cd41378, Factory::make}, + {0x6d0d0007, Factory::make}, + {0x6d17642f, Factory::make}, + {0x6d3674e6, Factory::make}, + {0x6d455514, Factory::make}, + {0x6d5a1650, Factory::make}, + {0x6d7fde8d, Factory::make}, + {0x6dd4ce34, Factory::make}, + {0x6dd51e24, Factory::make}, + {0x6de335f8, Factory::make}, + {0x6e3f0d2b, Factory::make}, + {0x6e4f0862, Factory::make}, + {0x6e5028a6, Factory::make}, + {0x6e621103, Factory::make}, + {0x6e6da2fc, Factory::make}, + {0x6ed10359, Factory::make}, + {0x6ed2954e, Factory::make}, + {0x6f6e63d2, Factory::make}, + {0x706a83ed, Factory::make}, + {0x7080ff33, Factory::make}, + {0x708a7883, Factory::make}, + {0x70b43511, Factory::make}, + {0x70b5327d, Factory::make}, + {0x70d14d67, Factory::make}, + {0x70d25880, Factory::make}, + {0x711275ee, Factory::make}, + {0x713456a0, Factory::make}, + {0x7144ee48, Factory::make}, + {0x7164e360, Factory::make}, + {0x716d3b76, Factory::make}, + {0x71e183e3, Factory::make}, + {0x720ec30e, Factory::make}, + {0x72477daf, Factory::make}, + {0x72678cac, Factory::make}, + {0x72703b8a, Factory::make}, + {0x727c44da, Factory::make}, + {0x73ff59ea, Factory::make}, + {0x743726d2, Factory::make}, + {0x74485374, Factory::make}, + {0x74b509a6, Factory::make}, + {0x74d746eb, Factory::make}, + {0x74f98637, Factory::make}, + {0x74ff1eae, Factory::make}, + {0x7534cbe6, Factory::make}, + {0x7537d2d9, Factory::make}, + {0x755ee1f1, Factory::make}, + {0x757655c3, Factory::make}, + {0x764671f1, Factory::make}, + {0x768866da, Factory::make}, + {0x76b2af4f, Factory::make}, + {0x76fa826a, Factory::make}, + {0x77aa9f85, Factory::make}, + {0x77ab4431, Factory::make}, + {0x784b6b8d, Factory::make}, + {0x78553b59, Factory::make}, + {0x78b26442, Factory::make}, + {0x792b2615, Factory::make}, + {0x792d139c, Factory::make}, + {0x796b0e98, Factory::make}, + {0x79b9b49c, Factory::make}, + {0x7a228138, Factory::make}, + {0x7a298ea7, Factory::make}, + {0x7a2d60f4, Factory::make}, + {0x7a560fc8, Factory::make}, + {0x7aaf0d23, Factory::make}, + {0x7abdf0ef, Factory::make}, + {0x7ac1e089, Factory::make}, + {0x7adbaae1, Factory::make}, + {0x7ae2dfba, Factory::make}, + {0x7b3840f6, Factory::make}, + {0x7b882b6b, Factory::make}, + {0x7baf7f6d, Factory::make}, + {0x7c1c3570, Factory::make}, + {0x7c20af30, Factory::make}, + {0x7c6a69db, Factory::make}, + {0x7cf19a33, Factory::make}, + {0x7d29828d, Factory::make}, + {0x7d3500ea, Factory::make}, + {0x7d3d3dbd, Factory::make}, + {0x7d880c85, Factory::make}, + {0x7d9720d7, Factory::make}, + {0x7da793f8, Factory::make}, + {0x7e2906b1, Factory::make}, + {0x7e4af7ac, Factory::make}, + {0x7e5e909f, Factory::make}, + {0x7ea24052, Factory::make}, + {0x7ed9e0fd, Factory::make}, + {0x7eed9aac, Factory::make}, + {0x7ef5e808, Factory::make}, + {0x7f80a01d, Factory::make}, + {0x7f85d747, Factory::make}, + {0x7fbaf0ca, Factory::make}, + {0x8049fac6, Factory::make}, + {0x8091e07c, Factory::make}, + {0x81039985, Factory::make}, + {0x8116730a, Factory::make}, + {0x8126c64b, Factory::make}, + {0x81591a9e, Factory::make}, + {0x819a7fd9, Factory::make}, + {0x81a55e23, Factory::make}, + {0x825624f6, Factory::make}, + {0x82851707, Factory::make}, + {0x828a8f6b, Factory::make}, + {0x82ab675a, Factory::make}, + {0x83400967, Factory::make}, + {0x834db1e5, Factory::make}, + {0x8350306c, Factory::make}, + {0x83954035, Factory::make}, + {0x840ecf9b, Factory::make}, + {0x8420d2cd, Factory::make}, + {0x85015e28, Factory::make}, + {0x851d52c6, Factory::make}, + {0x852fec32, Factory::make}, + {0x85a5c9c2, Factory::make}, + {0x8600ce73, Factory::make}, + {0x860e956a, Factory::make}, + {0x8614cd6e, Factory::make}, + {0x8628e777, Factory::make}, + {0x86610e58, Factory::make}, + {0x867bdbae, Factory::make}, + {0x86ee1b85, Factory::make}, + {0x8715024c, Factory::make}, + {0x877731c9, Factory::make}, + {0x87811f3b, Factory::make}, + {0x88b759b2, Factory::make}, + {0x890a164f, Factory::make}, + {0x89318047, Factory::make}, + {0x896589a9, Factory::make}, + {0x8968af97, Factory::make}, + {0x897c36a0, Factory::make}, + {0x89a07a3e, Factory::make}, + {0x89c25ec7, Factory::make}, + {0x89d601fe, Factory::make}, + {0x8a101800, Factory::make}, + {0x8a2d133d, Factory::make}, + {0x8a9a5487, Factory::make}, + {0x8ae9dc52, Factory::make}, + {0x8af1ab9a, Factory::make}, + {0x8b0e40b2, Factory::make}, + {0x8b0f6214, Factory::make}, + {0x8b3dc3d1, Factory::make}, + {0x8b5bc8fc, Factory::make}, + {0x8b757903, Factory::make}, + {0x8b878597, Factory::make}, + {0x8b896a46, Factory::make}, + {0x8c1a0287, Factory::make}, + {0x8c27e0ac, Factory::make}, + {0x8c3b453b, Factory::make}, + {0x8caef4bf, Factory::make}, + {0x8ceecc1f, Factory::make}, + {0x8d302c6a, Factory::make}, + {0x8d47cbc8, Factory::make}, + {0x8d7cea87, Factory::make}, + {0x8d84e3b9, Factory::make}, + {0x8d8a2ca3, Factory::make}, + {0x8db94031, Factory::make}, + {0x8ded162a, Factory::make}, + {0x8e457d4f, Factory::make}, + {0x8e79d829, Factory::make}, + {0x8e9053cc, Factory::make}, + {0x8e95b8ed, Factory::make}, + {0x8e9fda32, Factory::make}, + {0x8ec1d022, Factory::make}, + {0x8f2e31c6, Factory::make}, + {0x8f48157c, Factory::make}, + {0x8f6602a2, Factory::make}, + {0x8f86e80e, Factory::make}, + {0x8fcd1026, Factory::make}, + {0x8fed9679, Factory::make}, + {0x9004ad28, Factory::make}, + {0x902da005, Factory::make}, + {0x9091311b, Factory::make}, + {0x909cd425, Factory::make}, + {0x91040487, Factory::make}, + {0x91206bb4, Factory::make}, + {0x9129bfbd, Factory::make}, + {0x915c72f6, Factory::make}, + {0x91ba0462, Factory::make}, + {0x92330577, Factory::make}, + {0x923991b5, Factory::make}, + {0x92645c2f, Factory::make}, + {0x92bbeb76, Factory::make}, + {0x92e01b76, Factory::make}, + {0x9330bda2, Factory::make}, + {0x9481babb, Factory::make}, + {0x9494f207, Factory::make}, + {0x94e12848, Factory::make}, + {0x94e99d1d, Factory::make}, + {0x94fad7a7, Factory::make}, + {0x95026ce5, Factory::make}, + {0x950a50d6, Factory::make}, + {0x95c3caee, Factory::make}, + {0x95c6c972, Factory::make}, + {0x961f2726, Factory::make}, + {0x9620e72c, Factory::make}, + {0x9648208a, Factory::make}, + {0x9670fc0a, Factory::make}, + {0x9671f514, Factory::make}, + {0x9685b871, Factory::make}, + {0x96989b38, Factory::make}, + {0x96bb08ee, Factory::make}, + {0x96dddfd7, Factory::make}, + {0x9709726e, Factory::make}, + {0x972ec5eb, Factory::make}, + {0x9762fdce, Factory::make}, + {0x97b99cca, Factory::make}, + {0x97c7d7dd, Factory::make}, + {0x97e28dea, Factory::make}, + {0x982c4ff5, Factory::make}, + {0x987dc98f, Factory::make}, + {0x98a038c0, Factory::make}, + {0x98fb2913, Factory::make}, + {0x99294563, Factory::make}, + {0x9929e5de, Factory::make}, + {0x99398a70, Factory::make}, + {0x997a1127, Factory::make}, + {0x99aa5ebc, Factory::make}, + {0x99c30dc8, Factory::make}, + {0x99d43b60, Factory::make}, + {0x9a293653, Factory::make}, + {0x9a3b4584, Factory::make}, + {0x9a5b599c, Factory::make}, + {0x9a6654ac, Factory::make}, + {0x9a763c5d, Factory::make}, + {0x9ad53cc2, Factory::make}, + {0x9b2c15ca, Factory::make}, + {0x9b6fdc46, Factory::make}, + {0x9bff1deb, Factory::make}, + {0x9c18a6bf, Factory::make}, + {0x9c8382b4, Factory::make}, + {0x9cd5da26, Factory::make}, + {0x9d236b1a, Factory::make}, + {0x9d3c6d6f, Factory::make}, + {0x9dc91bb3, Factory::make}, + {0x9dd9577d, Factory::make}, + {0x9e2f1f81, Factory::make}, + {0x9e945232, Factory::make}, + {0x9eba9a45, Factory::make}, + {0x9efd22de, Factory::make}, + {0x9f2c6716, Factory::make}, + {0x9f8f8098, Factory::make}, + {0x9fa4c807, Factory::make}, + {0xa00aec68, Factory::make}, + {0xa04e83ec, Factory::make}, + {0xa09a0adb, Factory::make}, + {0xa0c26003, Factory::make}, + {0xa0c48566, Factory::make}, + {0xa0ef91df, Factory::make}, + {0xa10582cb, Factory::make}, + {0xa10a880d, Factory::make}, + {0xa10b2633, Factory::make}, + {0xa1b4c100, Factory::make}, + {0xa1c088c2, Factory::make}, + {0xa1f4dc67, Factory::make}, + {0xa1f65260, Factory::make}, + {0xa239ed21, Factory::make}, + {0xa2435c38, Factory::make}, + {0xa26b302a, Factory::make}, + {0xa2b87a35, Factory::make}, + {0xa2c1400f, Factory::make}, + {0xa2dd7073, Factory::make}, + {0xa2f485dc, Factory::make}, + {0xa300f69f, Factory::make}, + {0xa305634e, Factory::make}, + {0xa3197232, Factory::make}, + {0xa35b001c, Factory::make}, + {0xa3abd519, Factory::make}, + {0xa3de57ec, Factory::make}, + {0xa44d42e3, Factory::make}, + {0xa46c83da, Factory::make}, + {0xa487f655, Factory::make}, + {0xa4963fda, Factory::make}, + {0xa50b637d, Factory::make}, + {0xa50be321, Factory::make}, + {0xa5817c6c, Factory::make}, + {0xa593ceca, Factory::make}, + {0xa594b5a4, Factory::make}, + {0xa5c9902a, Factory::make}, + {0xa5e30599, Factory::make}, + {0xa6008b1e, Factory::make}, + {0xa60c4e9c, Factory::make}, + {0xa621ba04, Factory::make}, + {0xa671e5d5, Factory::make}, + {0xa688a7f4, Factory::make}, + {0xa6a5bb2c, Factory::make}, + {0xa6b08d22, Factory::make}, + {0xa6b5b577, Factory::make}, + {0xa71bf726, Factory::make}, + {0xa746b273, Factory::make}, + {0xa752783c, Factory::make}, + {0xa755a30d, Factory::make}, + {0xa75be41d, Factory::make}, + {0xa7c5aeae, Factory::make}, + {0xa7ec867b, Factory::make}, + {0xa7f5877b, Factory::make}, + {0xa83cebc4, Factory::make}, + {0xa8606ae4, Factory::make}, + {0xa87bd057, Factory::make}, + {0xa9b8c767, Factory::make}, + {0xa9f39687, Factory::make}, + {0xaa484221, Factory::make}, + {0xaa7c7a95, Factory::make}, + {0xaab7764d, Factory::make}, + {0xab283ac1, Factory::make}, + {0xab5ce06c, Factory::make}, + {0xab6748c7, Factory::make}, + {0xabaad83c, Factory::make}, + {0xac2c6763, Factory::make}, + {0xac2f53c9, Factory::make}, + {0xac698cd1, Factory::make}, + {0xad379bf4, Factory::make}, + {0xad3ba945, Factory::make}, + {0xad5a5bf7, Factory::make}, + {0xad6e545a, Factory::make}, + {0xadbfe767, Factory::make}, + {0xae627961, Factory::make}, + {0xaec04f32, Factory::make}, + {0xaefa678f, Factory::make}, + {0xaf5033ab, Factory::make}, + {0xaf68c91b, Factory::make}, + {0xaf7d90bf, Factory::make}, + {0xafc5abdb, Factory::make}, + {0xb01ab89b, Factory::make}, + {0xb0207938, Factory::make}, + {0xb0440a54, Factory::make}, + {0xb0bbaff1, Factory::make}, + {0xb0d1f99d, Factory::make}, + {0xb175e321, Factory::make}, + {0xb1d00a0e, Factory::make}, + {0xb1d70915, Factory::make}, + {0xb1f81e13, Factory::make}, + {0xb21433ea, Factory::make}, + {0xb254eb3b, Factory::make}, + {0xb2a75482, Factory::make}, + {0xb2ad7723, Factory::make}, + {0xb2c3a06e, Factory::make}, + {0xb326ba98, Factory::make}, + {0xb3b8619b, Factory::make}, + {0xb3bee971, Factory::make}, + {0xb49b204c, Factory::make}, + {0xb4b15ff3, Factory::make}, + {0xb4d7a10d, Factory::make}, + {0xb4dac0e0, Factory::make}, + {0xb5041992, Factory::make}, + {0xb50ba464, Factory::make}, + {0xb51d2515, Factory::make}, + {0xb5464aa8, Factory::make}, + {0xb554d4b1, Factory::make}, + {0xb5a45128, Factory::make}, + {0xb5caec53, Factory::make}, + {0xb5ce5692, Factory::make}, + {0xb6190e77, Factory::make}, + {0xb6516412, Factory::make}, + {0xb6764c6e, Factory::make}, + {0xb73e4a8a, Factory::make}, + {0xb74eb776, Factory::make}, + {0xb77ffef4, Factory::make}, + {0xb7bfee35, Factory::make}, + {0xb7c5fd94, Factory::make}, + {0xb803bc10, Factory::make}, + {0xb8189696, Factory::make}, + {0xb864d5d0, Factory::make}, + {0xb88474af, Factory::make}, + {0xb88be272, Factory::make}, + {0xb8aad9d6, Factory::make}, + {0xb9657f90, Factory::make}, + {0xb96cb997, Factory::make}, + {0xb97ad492, Factory::make}, + {0xb9c9946e, Factory::make}, + {0xba28751f, Factory::make}, + {0xba44a06b, Factory::make}, + {0xba4b9bbb, Factory::make}, + {0xba85f100, Factory::make}, + {0xba8ed57b, Factory::make}, + {0xbaa91a0d, Factory::make}, + {0xbada3f2e, Factory::make}, + {0xbae41244, Factory::make}, + {0xbb126825, Factory::make}, + {0xbb225386, Factory::make}, + {0xbb730a73, Factory::make}, + {0xbb8b7066, Factory::make}, + {0xbc24ae6c, Factory::make}, + {0xbd56a8e6, Factory::make}, + {0xbd73a87f, Factory::make}, + {0xbdaeae7f, Factory::make}, + {0xbdd1e8c1, Factory::make}, + {0xbdf2fb79, Factory::make}, + {0xbe5bc264, Factory::make}, + {0xbe7594e6, Factory::make}, + {0xbe97cd51, Factory::make}, + {0xbea3f9d6, Factory::make}, + {0xbea5fae4, Factory::make}, + {0xbf07153e, Factory::make}, + {0xbf3ed4c4, Factory::make}, + {0xbf5a8008, Factory::make}, + {0xbf760b2e, Factory::make}, + {0xbfb881c7, Factory::make}, + {0xc0307707, Factory::make}, + {0xc03ed129, Factory::make}, + {0xc067ea39, Factory::make}, + {0xc0863501, Factory::make}, + {0xc08c3303, Factory::make}, + {0xc09707ed, Factory::make}, + {0xc0fd6815, Factory::make}, + {0xc1054127, Factory::make}, + {0xc14805a5, Factory::make}, + {0xc1812e6a, Factory::make}, + {0xc20303ca, Factory::make}, + {0xc293cd88, Factory::make}, + {0xc2ad6b5b, Factory::make}, + {0xc2cbfcd3, Factory::make}, + {0xc31bbfd7, Factory::make}, + {0xc32cf8e8, Factory::make}, + {0xc33612f9, Factory::make}, + {0xc358c722, Factory::make}, + {0xc37bf50c, Factory::make}, + {0xc41b4630, Factory::make}, + {0xc42f2a63, Factory::make}, + {0xc47852db, Factory::make}, + {0xc4bf095f, Factory::make}, + {0xc512691b, Factory::make}, + {0xc5afb825, Factory::make}, + {0xc5e29ef2, Factory::make}, + {0xc5eb8997, Factory::make}, + {0xc6d672ee, Factory::make}, + {0xc7091e78, Factory::make}, + {0xc74834c3, Factory::make}, + {0xc74b1031, Factory::make}, + {0xc75443a6, Factory::make}, + {0xc7907455, Factory::make}, + {0xc795ffb9, Factory::make}, + {0xc811bd0d, Factory::make}, + {0xc880f33a, Factory::make}, + {0xc91551ff, Factory::make}, + {0xc9760bc6, Factory::make}, + {0xc97e9520, Factory::make}, + {0xc9b18237, Factory::make}, + {0xc9caa316, Factory::make}, + {0xc9d10d6c, Factory::make}, + {0xc9e97160, Factory::make}, + {0xc9f23397, Factory::make}, + {0xca0ccdfd, Factory::make}, + {0xca2005b7, Factory::make}, + {0xca69a1e3, Factory::make}, + {0xcb2f68c6, Factory::make}, + {0xcbe12a1e, Factory::make}, + {0xcbf9aa3c, Factory::make}, + {0xcc1d73a5, Factory::make}, + {0xcc5a1268, Factory::make}, + {0xccaeb65f, Factory::make}, + {0xcccdcfc2, Factory::make}, + {0xccd7663c, Factory::make}, + {0xcd054fb7, Factory::make}, + {0xcd29c611, Factory::make}, + {0xcd477ae5, Factory::make}, + {0xcd59459d, Factory::make}, + {0xcd6ea311, Factory::make}, + {0xcda1655e, Factory::make}, + {0xcdd84100, Factory::make}, + {0xcde06938, Factory::make}, + {0xce31bfbe, Factory::make}, + {0xce62a832, Factory::make}, + {0xce8081fc, Factory::make}, + {0xce87f311, Factory::make}, + {0xce8c7213, Factory::make}, + {0xcea34508, Factory::make}, + {0xcecd1a84, Factory::make}, + {0xcfbffa45, Factory::make}, + {0xcfea8e66, Factory::make}, + {0xcfef2b99, Factory::make}, + {0xd04953f2, Factory::make}, + {0xd04aaa9b, Factory::make}, + {0xd061cacb, Factory::make}, + {0xd0b8bd50, Factory::make}, + {0xd0bf023d, Factory::make}, + {0xd19682ef, Factory::make}, + {0xd1a330cf, Factory::make}, + {0xd1d46de8, Factory::make}, + {0xd1d4d5b5, Factory::make}, + {0xd2022f2b, Factory::make}, + {0xd22fecae, Factory::make}, + {0xd2712bce, Factory::make}, + {0xd2d7a603, Factory::make}, + {0xd2e1ba30, Factory::make}, + {0xd2ebe759, Factory::make}, + {0xd319c6ae, Factory::make}, + {0xd33422ab, Factory::make}, + {0xd36a4d0d, Factory::make}, + {0xd36e1dd8, Factory::make}, + {0xd4045920, Factory::make}, + {0xd4393414, Factory::make}, + {0xd45a8b54, Factory::make}, + {0xd460fc81, Factory::make}, + {0xd467b500, Factory::make}, + {0xd47476b4, Factory::make}, + {0xd47a7418, Factory::make}, + {0xd4db128f, Factory::make}, + {0xd54f1a1e, Factory::make}, + {0xd59b6465, Factory::make}, + {0xd59e9047, Factory::make}, + {0xd5ffc934, Factory::make}, + {0xd60efe69, Factory::make}, + {0xd7193cba, Factory::make}, + {0xd74c963a, Factory::make}, + {0xd7533956, Factory::make}, + {0xd794ffe6, Factory::make}, + {0xd7a8bd6f, Factory::make}, + {0xd800da13, Factory::make}, + {0xd855d755, Factory::make}, + {0xd87ab5ee, Factory::make}, + {0xd8c46be8, Factory::make}, + {0xd8eee460, Factory::make}, + {0xd908c25c, Factory::make}, + {0xd93f35ac, Factory::make}, + {0xd9634752, Factory::make}, + {0xd9790fbe, Factory::make}, + {0xd9a15361, Factory::make}, + {0xd9c75a9d, Factory::make}, + {0xd9cb33f7, Factory::make}, + {0xdafb1d2d, Factory::make}, + {0xdb19d863, Factory::make}, + {0xdb1c7989, Factory::make}, + {0xdb3cdf0e, Factory::make}, + {0xdb73fe9a, Factory::make}, + {0xdba1f7ed, Factory::make}, + {0xdbc09299, Factory::make}, + {0xdc068458, Factory::make}, + {0xdca2c9d1, Factory::make}, + {0xdcbee83c, Factory::make}, + {0xdd2f1eb1, Factory::make}, + {0xdd940c56, Factory::make}, + {0xddd74c31, Factory::make}, + {0xddf09e37, Factory::make}, + {0xde08de82, Factory::make}, + {0xde0b1a7d, Factory::make}, + {0xde64a80c, Factory::make}, + {0xde805fb9, Factory::make}, + {0xdf627648, Factory::make}, + {0xdfa8512c, Factory::make}, + {0xdfc3940f, Factory::make}, + {0xe001a15f, Factory::make}, + {0xe09c3a02, Factory::make}, + {0xe09d131f, Factory::make}, + {0xe0e50270, Factory::make}, + {0xe1295f5c, Factory::make}, + {0xe13b3a4a, Factory::make}, + {0xe1c9c200, Factory::make}, + {0xe1d544ea, Factory::make}, + {0xe1eaf99f, Factory::make}, + {0xe2422fb8, Factory::make}, + {0xe243b3e6, Factory::make}, + {0xe2905b00, Factory::make}, + {0xe2a2261e, Factory::make}, + {0xe2e1ecfb, Factory::make}, + {0xe3219e29, Factory::make}, + {0xe332001b, Factory::make}, + {0xe399f3ba, Factory::make}, + {0xe3c0909e, Factory::make}, + {0xe3c8aa65, Factory::make}, + {0xe4a9f33a, Factory::make}, + {0xe4c718e7, Factory::make}, + {0xe4d0fee9, Factory::make}, + {0xe567fca2, Factory::make}, + {0xe5bf8a07, Factory::make}, + {0xe5cba766, Factory::make}, + {0xe5cbd7f1, Factory::make}, + {0xe5ce56fb, Factory::make}, + {0xe6186723, Factory::make}, + {0xe63a2601, Factory::make}, + {0xe6467eac, Factory::make}, + {0xe64b7b7b, Factory::make}, + {0xe689f298, Factory::make}, + {0xe698a93b, Factory::make}, + {0xe757fa36, Factory::make}, + {0xe75ced01, Factory::make}, + {0xe874b318, Factory::make}, + {0xe87547e4, Factory::make}, + {0xe887a5b2, Factory::make}, + {0xe8e24114, Factory::make}, + {0xe8f2addd, Factory::make}, + {0xe9202b23, Factory::make}, + {0xe953a698, Factory::make}, + {0xe96d0d7d, Factory::make}, + {0xe97748df, Factory::make}, + {0xe9a5817d, Factory::make}, + {0xea0994f6, Factory::make}, + {0xea1c70ed, Factory::make}, + {0xea7c8a41, Factory::make}, + {0xeaa4ff4d, Factory::make}, + {0xeaafb8eb, Factory::make}, + {0xeacf2879, Factory::make}, + {0xead748ac, Factory::make}, + {0xeadf0c54, Factory::make}, + {0xeb2ffd36, Factory::make}, + {0xeb589b1f, Factory::make}, + {0xeb75f35c, Factory::make}, + {0xebbdce9c, Factory::make}, + {0xebc9ee5d, Factory::make}, + {0xebcedf46, Factory::make}, + {0xebfb21c4, Factory::make}, + {0xec6f3da6, Factory::make}, + {0xec77049c, Factory::make}, + {0xecbc5f90, Factory::make}, + {0xed9f7612, Factory::make}, + {0xedad5791, Factory::make}, + {0xedbf519f, Factory::make}, + {0xedd27f4e, Factory::make}, + {0xeddbc467, Factory::make}, + {0xedee4c82, Factory::make}, + {0xedfc1443, Factory::make}, + {0xee011de1, Factory::make}, + {0xee2728a8, Factory::make}, + {0xeea20b2e, Factory::make}, + {0xef78e99f, Factory::make}, + {0xefa82682, Factory::make}, + {0xf03b47c2, Factory::make}, + {0xf09dd115, Factory::make}, + {0xf0a9d7c2, Factory::make}, + {0xf0bd581b, Factory::make}, + {0xf0d05590, Factory::make}, + {0xf0f82503, Factory::make}, + {0xf123e13f, Factory::make}, + {0xf12963bd, Factory::make}, + {0xf15c36a2, Factory::make}, + {0xf18a2b03, Factory::make}, + {0xf211f32b, Factory::make}, + {0xf21f4113, Factory::make}, + {0xf2d12aad, Factory::make}, + {0xf2d6269d, Factory::make}, + {0xf2dbf23b, Factory::make}, + {0xf31a1f15, Factory::make}, + {0xf36169d0, Factory::make}, + {0xf39b7a8d, Factory::make}, + {0xf4006e75, Factory::make}, + {0xf421ae74, Factory::make}, + {0xf43537ba, Factory::make}, + {0xf46806b0, Factory::make}, + {0xf47b30e7, Factory::make}, + {0xf4cdbc6e, Factory::make}, + {0xf54510e5, Factory::make}, + {0xf56e706b, Factory::make}, + {0xf578f0be, Factory::make}, + {0xf583d47a, Factory::make}, + {0xf5f118f4, Factory::make}, + {0xf63c60ba, Factory::make}, + {0xf643f4a6, Factory::make}, + {0xf68b844d, Factory::make}, + {0xf6c8d67d, Factory::make}, + {0xf7450486, Factory::make}, + {0xf74f30b2, Factory::make}, + {0xf7666861, Factory::make}, + {0xf7d245eb, Factory::make}, + {0xf7d6cb5e, Factory::make}, + {0xf7eff703, Factory::make}, + {0xf8050b10, Factory::make}, + {0xf8202473, Factory::make}, + {0xf831ea60, Factory::make}, + {0xf8acd1e6, Factory::make}, + {0xf926c451, Factory::make}, + {0xf9e37e14, Factory::make}, + {0xfa4e986f, Factory::make}, + {0xfa68ef22, Factory::make}, + {0xfa793a7e, Factory::make}, + {0xfa7b0164, Factory::make}, + {0xfaa805cf, Factory::make}, + {0xfab77b91, Factory::make}, + {0xfac60f24, Factory::make}, + {0xfb13ee03, Factory::make}, + {0xfb18cc12, Factory::make}, + {0xfb2b6a7b, Factory::make}, + {0xfb5c00f2, Factory::make}, + {0xfb655999, Factory::make}, + {0xfb76b4bc, Factory::make}, + {0xfb7f6868, Factory::make}, + {0xfc11944e, Factory::make}, + {0xfcd04d95, Factory::make}, + {0xfcfdd427, Factory::make}, + {0xfd627cea, Factory::make}, + {0xfdeb2e45, Factory::make}, + {0xfe0b397b, Factory::make}, + {0xfe825484, Factory::make}, + {0xff46de07, Factory::make}, + {0xff6fff54, Factory::make}, + {0xffd1c0c4, Factory::make}, +}; + +void initAiFactories() { + ksys::act::ai::Ais::setFactories(std::size(sAiFactories), sAiFactories); +} + +} // namespace uking diff --git a/src/Game/AI/aiAiFactories.h b/src/Game/AI/aiAiFactories.h new file mode 100644 index 00000000..21e437c3 --- /dev/null +++ b/src/Game/AI/aiAiFactories.h @@ -0,0 +1,7 @@ +#pragma once + +namespace uking { + +void initAiFactories(); + +} // namespace uking diff --git a/src/KingSystem/ActorSystem/actAiAi.h b/src/KingSystem/ActorSystem/actAiAi.h index aca4fb09..11d93b30 100644 --- a/src/KingSystem/ActorSystem/actAiAi.h +++ b/src/KingSystem/ActorSystem/actAiAi.h @@ -64,6 +64,11 @@ struct AiFactory { using CreateFn = Ai* (*)(const Ai::InitArg& arg, sead::Heap* heap); u32 hash; CreateFn create_fn; + + template + static Ai* make(const Ai::InitArg& arg, sead::Heap* heap) { + return new (heap) T(arg); + } }; class Ais { diff --git a/tools/ai_generate_actions.py b/tools/ai_generate_actions.py index 58c069ca..626c6202 100755 --- a/tools/ai_generate_actions.py +++ b/tools/ai_generate_actions.py @@ -231,7 +231,7 @@ def main() -> None: class_dir = src_root / "src" / "Game" / "AI" / "Action" class_dir.mkdir(exist_ok=True) - action_vtables: Dict[str, List[int]] = ai_common.get_ai_vtables()["Action"] + action_vtables: Dict[str, List[int]] = ai_common.get_vtables()["Action"] action_params = ai_common.get_action_params() vtable_names = ai_common.get_action_vtable_names() diff --git a/tools/ai_generate_ais.py b/tools/ai_generate_ais.py new file mode 100755 index 00000000..853da9f4 --- /dev/null +++ b/tools/ai_generate_ais.py @@ -0,0 +1,272 @@ +#!/usr/bin/env python3 +import enum + +import cxxfilt +import zlib +from typing import List, Dict, Iterable, Optional, Set + +from pathlib import Path +import textwrap +from util import ai_common, elf + + +def get_member_name(entry) -> str: + type_ = entry["type"] + if type_ == "dynamic_param": + return f'm{entry["param_name"]}_d' + elif type_ == "dynamic2_param": + return f'm{entry["param_name"]}_d' + elif type_ == "static_param": + return f'm{entry["param_name"]}_s' + elif type_ == "map_unit_param": + return f'm{entry["param_name"]}_m' + elif type_ == "aitree_variable": + return f'm{entry["param_name"]}_a' + else: + assert False + + +def generate_ai_loadparam_body(info: list) -> str: + out = [] + for entry in info: + type_ = entry["type"] + if type_ == "dynamic_param": + if entry["param_name"]: + out.append(f'getDynamicParam(&{get_member_name(entry)}, "{entry["param_name"]}");') + elif type_ == "dynamic2_param": + if entry["param_name"]: + out.append(f'getDynamicParam2(&{get_member_name(entry)}, "{entry["param_name"]}");') + elif type_ == "static_param": + if entry["param_name"]: + out.append(f'getStaticParam(&{get_member_name(entry)}, "{entry["param_name"]}");') + elif type_ == "map_unit_param": + if entry["param_name"]: + out.append(f'getMapUnitParam(&{get_member_name(entry)}, "{entry["param_name"]}");') + elif type_ == "aitree_variable": + if entry["param_name"]: + out.append(f'getAITreeVariable(&{get_member_name(entry)}, "{entry["param_name"]}");') + elif type_ == "call": + fn_name: str = entry["fn"] + if fn_name.startswith("_ZN") and fn_name.endswith("11loadParams_Ev"): + parent_class_name = cxxfilt.demangle(fn_name).split("::")[-2] + out.append(f"{parent_class_name}::loadParams_();") + else: + out.append(f"// FIXME: CALL {fn_name} @ {entry['addr']:#x}") + else: + raise AssertionError(f"unknown type: {type_}") + + return "\n".join(out) + + +def generate_ai_param_member_vars(parent: str, info: list) -> str: + out = [] + + # Ignore duplicate calls to getXXXXXParam + params_dict = dict() + for entry in info: + offset: Optional[int] = entry.get("param_offset") + if offset is not None: + params_dict[offset] = entry + params = list(params_dict.values()) + params.sort(key=lambda entry: entry["param_offset"]) + + if not parent and params: + first_offset: int = params[0]["param_offset"] + sizeof_ai = 0x38 + diff = first_offset - sizeof_ai + assert diff >= 0 + if diff > 0: + out.append(f"// FIXME: remove this") + out.append(f"u8 pad_0x38[{diff:#x}];") + + for entry in params: + if not entry["param_name"]: + continue + out.append(f"// {entry['type']} at offset {entry['param_offset']:#x}") + out.append(f"{entry['param_type']} {get_member_name(entry)}{{}};") + return "\n".join(out) + + +@enum.unique +class CommonVIndex(enum.IntEnum): + Dtor = 2 + OneShot = 10 + Init = 11 + Enter = 12 + Leave = 14 + LoadParams = 15 + Calc = 32 + + +def generate_ai(class_dir: Path, name: str, info: list, parent: str, seen_virtual_functions: Set[int], + vtable: int) -> None: + name = name[0].upper() + name[1:] + if parent: + parent = parent[0].upper() + parent[1:] + + cpp_class_name = f"{name}" + header_file_name = f"ai{name}.h" + + parent_class_name = parent if parent else 'ksys::act::ai::Ai' + + own_virtual_functions: Set[int] = set() + for i, fn in enumerate(elf.get_vtable_fns_from_base_elf(vtable, 32)): + if i not in CommonVIndex.__members__.values() or fn in seen_virtual_functions: + continue + own_virtual_functions.add(i) + seen_virtual_functions.add(fn) + + # Header + out = [] + out.append("#pragma once") + out.append("") + if parent: + out.append(f'#include "Game/AI/AI/ai{parent}.h"') + out.append('#include "KingSystem/ActorSystem/actAiAi.h"') + out.append("") + out.append("namespace uking::ai {") + out.append("") + out.append(f"class {cpp_class_name} : public {parent_class_name} {{") + out.append(f" SEAD_RTTI_OVERRIDE({cpp_class_name}, {parent_class_name})") + out.append("public:") + out.append(f" explicit {cpp_class_name}(const InitArg& arg);") + if CommonVIndex.Dtor in own_virtual_functions: + out.append(f" ~{cpp_class_name}() override;") + out.append("") + if CommonVIndex.Init in own_virtual_functions: + out.append(" bool init_(sead::Heap* heap) override;") + if CommonVIndex.Enter in own_virtual_functions: + out.append(" void enter_(ksys::act::ai::InlineParamPack* params) override;") + if CommonVIndex.Leave in own_virtual_functions: + out.append(" void leave_() override;") + if CommonVIndex.LoadParams in own_virtual_functions: + out.append(" void loadParams_() override;") + out.append("") + out.append("protected:") + if CommonVIndex.Calc in own_virtual_functions: + out.append(" void calc_() override;") + out.append("") + out.append(textwrap.indent(generate_ai_param_member_vars(parent, info), " " * 4)) + out.append("};") # =================================== end of class + out.append("") + out.append("} // namespace uking::ai") + out.append("") + (class_dir / header_file_name).write_text("\n".join(out)) + + # .cpp + out = [] + out.append(f'#include "Game/AI/AI/{header_file_name}"') + out.append("") + out.append("namespace uking::ai {") + out.append("") + out.append(f"{cpp_class_name}::{cpp_class_name}(const InitArg& arg) : {parent_class_name}(arg) {{}}") + out.append("") + if CommonVIndex.Dtor in own_virtual_functions: + out.append(f"{cpp_class_name}::~{cpp_class_name}() = default;") + out.append("") + if CommonVIndex.Init in own_virtual_functions: + out.append(f"bool {cpp_class_name}::init_(sead::Heap* heap) {{") + out.append(f" return {parent_class_name}::init_(heap);") + out.append(f"}}") + out.append("") + if CommonVIndex.Enter in own_virtual_functions: + out.append(f"void {cpp_class_name}::enter_(ksys::act::ai::InlineParamPack* params) {{") + out.append(f" {parent_class_name}::enter_(params);") + out.append(f"}}") + out.append("") + if CommonVIndex.Leave in own_virtual_functions: + out.append(f"void {cpp_class_name}::leave_() {{") + out.append(f" {parent_class_name}::leave_();") + out.append(f"}}") + out.append("") + if CommonVIndex.LoadParams in own_virtual_functions: + out.append(f"void {cpp_class_name}::loadParams_() {{") + out.append(textwrap.indent(generate_ai_loadparam_body(info), " " * 4)) + out.append(f"}}") + out.append("") + if CommonVIndex.Calc in own_virtual_functions: + out.append(f"void {cpp_class_name}::calc_() {{") + out.append(f" {parent_class_name}::calc_();") + out.append(f"}}") + out.append("") + out.append("} // namespace uking::ai") + out.append("") + (class_dir / f"ai{name}.cpp").write_text("\n".join(out)) + + +def generate_ai_factories(class_dir: Path, ais: Iterable[str]) -> None: + out = [] + out.append("""\ +// DO NOT MAKE MAJOR EDITS. This file is automatically generated. +// For major edits, please edit the generator script (ai_generate_ais.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/aiAiFactories.h"') + out.append('#include ') + for name in ais: + name = name[0].upper() + name[1:] + out.append(f'#include "Game/AI/AI/ai{name}.h"') + out.append('#include "KingSystem/ActorSystem/actAiAi.h"') + out.append('') + out.append('namespace uking {') + out.append('') + out.append('using Factory = ksys::act::ai::AiFactory;') + out.append('') + out.append('static Factory sAiFactories[] = {') + for name in sorted(ais, key=lambda name: zlib.crc32(name.encode())): + class_name = "ai::" + name[0].upper() + name[1:] + out.append(f' {{0x{zlib.crc32(name.encode()):08x}, Factory::make<{class_name}>}},') + out.append('};') + out.append('') + out.append('void initAiFactories() {') + out.append(' ksys::act::ai::Ais::setFactories(std::size(sAiFactories), sAiFactories);') + out.append('}') + out.append('') + out.append('} // namespace uking') + (class_dir.parent / f"aiAiFactories.cpp").write_text("\n".join(out)) + + +def main() -> None: + src_root = Path(__file__).parent.parent + class_dir = src_root / "src" / "Game" / "AI" / "AI" + class_dir.mkdir(exist_ok=True) + + ai_vtables: Dict[str, List[int]] = ai_common.get_vtables()["AI"] + ai_params = ai_common.get_ai_params() + vtable_names = ai_common.get_ai_vtable_names() + + seen_virtual_functions = set() + # ai::ActionBase + seen_virtual_functions.update(elf.get_vtable_fns_from_base_elf(0x24d8d68, 31)) + # ai::Ai + seen_virtual_functions.update(elf.get_vtable_fns_from_base_elf(0x2513278, 34)) + + generated = set() + for vtables in ai_vtables.values(): + vtables = list(dict.fromkeys(vtables)) + for i in range(len(vtables)): + # This skips the first base class. + if i == 0: + continue + + vtable_parent = vtables[i - 1] + vtable = vtables[i] + + # This skips any other base class. + if vtable in ai_common.BaseClasses: + continue + + ai_name = vtable_names[vtable] + parent_name = vtable_names[vtable_parent] + if vtable_parent in ai_common.BaseClasses: + parent_name = "" + + if vtable not in generated: + generated.add(vtable) + generate_ai(class_dir, ai_name, ai_params[ai_name], parent_name, seen_virtual_functions, vtable) + + generate_ai_factories(class_dir, ai_vtables.keys()) + + +if __name__ == '__main__': + main() diff --git a/tools/ai_show_nontrivial_hierarchies.py b/tools/ai_show_nontrivial_hierarchies.py index 32ce620c..45bf60d5 100755 --- a/tools/ai_show_nontrivial_hierarchies.py +++ b/tools/ai_show_nontrivial_hierarchies.py @@ -69,7 +69,7 @@ def main() -> None: parser.add_argument("--out-names", help="Path to which a vtable -> name map will be written", required=True) args = parser.parse_args() - all_vtables = ai_common.get_ai_vtables() + all_vtables = ai_common.get_vtables() graph = Graph() reverse_graph = Graph() diff --git a/tools/ida_ai_rename_action_vfns.py b/tools/ida_ai_rename_action_vfns.py index 4ad0bcdd..5925b804 100644 --- a/tools/ida_ai_rename_action_vfns.py +++ b/tools/ida_ai_rename_action_vfns.py @@ -60,7 +60,7 @@ _ida_base = 0x7100000000 def main() -> None: - all_vtables = ai_common.get_ai_vtables() + all_vtables = ai_common.get_vtables() names = ai_common.get_action_vtable_names() not_decompiled = {func.addr for func in utils.get_functions() if func.status == utils.FunctionStatus.NotDecompiled} diff --git a/tools/ida_ai_rename_ai_vfns.py b/tools/ida_ai_rename_ai_vfns.py index d8a03ac0..3c9b696b 100644 --- a/tools/ida_ai_rename_ai_vfns.py +++ b/tools/ida_ai_rename_ai_vfns.py @@ -62,7 +62,7 @@ _ida_base = 0x7100000000 def main() -> None: - all_vtables = ai_common.get_ai_vtables() + all_vtables = ai_common.get_vtables() names = ai_common.get_ai_vtable_names() not_decompiled = {func.addr for func in utils.get_functions() if func.status == utils.FunctionStatus.NotDecompiled} diff --git a/tools/util/ai_common.py b/tools/util/ai_common.py index f3a3b4a8..9bf116f3 100644 --- a/tools/util/ai_common.py +++ b/tools/util/ai_common.py @@ -22,7 +22,7 @@ def check_vtable_name_dict(names: Dict[int, str]): seen.add(v) -def get_ai_vtables() -> Dict[str, Dict[str, List[int]]]: +def get_vtables() -> Dict[str, Dict[str, List[int]]]: with (utils.get_repo_root() / "data" / "aidef_vtables.yml").open(encoding="utf-8") as f: return yaml.load(f, Loader=yaml.CSafeLoader) @@ -40,6 +40,11 @@ def get_action_vtable_names() -> Dict[int, str]: return names +def get_ai_params() -> Dict[str, List[dict]]: + with (utils.get_repo_root() / "data" / "aidef_ai_params.yml").open(encoding="utf-8") as f: + return yaml.load(f, Loader=yaml.CSafeLoader) + + def get_ai_vtable_names() -> Dict[int, str]: with (utils.get_repo_root() / "data" / "aidef_ai_vtables.yml").open(encoding="utf-8") as f: names = yaml.load(f, Loader=yaml.CSafeLoader)