Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* MettaurAI.s */
- void MettaurAI(void)
- {
- T1BattleObject *objT1;
- switch(objT1.obj.CurState);
- case 0:
- MettaurAIIntiialize();
- case 4:
- MettaurAIUpdate();
- case 8:
- MettaurAIDestroy();
- return;
- }
- void MettaurAIIntiialize(void)
- {
- byte bVar1;
- byte *AIValues;
- undefined4 *puVar2;
- byte extraout_r1;
- T1BattleObject *objT1;
- sprite_load(1,virusBattleSprite,Mettaur/BeastMan/);
- sprite_loadAnimationData();
- sprite_hasShadow();
- sprite_setPalette(objT1.obj.Param1);
- objT1.obj.CurAnim = 0;
- objT1.obj.CurAnimCopy = 0;
- sprite_setAnimation();
- sprite_loadAnimationData();
- VariousAIIntiialize_08014620();
- bVar1 = VariousAIIntiialize_08014530(old_sub_800E24C)(); /* outputs to bVar1 and extraout_r1 */
- objT1.obj.PanelX = bVar1;
- objT1.obj.PanelY = extraout_r1;
- AIValues = (byte *)CalculateAIConstantsAddress((undefined *)MettaurAISettings,3,(uint)objT1.obj.Param1);
- objT1.obj.Damage = (ushort)*AIValues; /* shockwave damage */
- puVar2 = VariousAIIntiialize_080aee74();
- if (puVar2 == NULL) {
- object_freeMemory();
- return;
- }
- VariousAIIntiialize_MovementAI?((undefined *)puVar2,0x58,0x59,3);
- *(undefined4 *)&objT1.obj.CurState = 4;
- objT1.obj.IsPhaseInitialized = 0x20;
- MettaurAIUpdate();
- return;
- }
- void MettaurAIUpdate(void)
- {
- VariousAIUpdate_080aca6e();
- /* r7,[.MettaurAIUpdateTable] */
- VariousAIUpdate_TablePosition_080ad710();
- VariousAIUpdate_080aef94();
- VariousAIUpdate_08000ef6();
- return;
- }
- /*
- MettaurAIUpdateTable
- 080b5adc addr[12]
- 080b5adc VariousAIUpdate_MetUpdateStart?_080add82+1 [0x0]
- 080b5ae0 VariousAIUpdate_Paralysis+1 [0x1]
- 080b5ae4 VariousAIUpdate_Confusion?_080ade5c+1 [0x2]
- 080b5ae8 VariousAIUpdate_IceSlide+1 [0x3]
- 080b5aec VariousAIUpdate_TimeFreezePause+1 [0x4]
- 080b5af0 VariousAIUpdate_Shoved+1 [0x5]
- 080b5af4 VariousAIUpdate_Explode+1 [0x6]
- 080b5af8 VariousAIUpdate_EndExplosion+1 [0x7]
- 080b5afc MettaurAIIdle+1 [0x8]
- 080b5b00 MettaurAIDefend+1 [0x9]
- 080b5b04 MettaurAIAttack+1 [0xa]
- 080b5b08 MettaurAIAlignAttack+1 [0xb]
- */
- void MettaurAIIdle(void)
- {
- T1BattleObject *objT1;
- switch(objT1.obj.CurPhase);
- case 0:
- MettaurAIIdleP0();
- case 4:
- MettaurAIIdleP1();
- return;
- }
- void MettaurAIIdleP0(void)
- {
- byte bVar1;
- T1BattleObject *objT1;
- bVar1 = objT1.LeveledObjectParamListPtr[2];
- objT1.obj.Timer = (ushort)objT1.LeveledObjectParamListPtr[1];
- objT1.obj.Timer2 = (ushort)bVar1;
- *(undefined2 *)&objT1.obj.CurPhase = 4;
- return;
- }
- void MettaurAIIdleP1(void)
- {
- uint uVar1;
- int iVar2;
- T1BattleObject *objT1;
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x80) != 0) {
- iVar2 = VariousAIUpdate_08014608();
- if (iVar2 == 0) {
- if (objT1.obj.Param1 != 0) {
- objT1.obj.CurAction = 0x24; /* MettaurAIDefend */
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- }
- }
- else {
- iVar2 = GetPlayer_PanelY_CompareEnemy();
- if (iVar2 == 0) {
- iVar2 = objT1.obj.Timer2 - 1;
- objT1.obj.Timer2 = (word)iVar2;
- if (iVar2 == 0) {
- objT1.obj.CurAction = 0x28; /* MettaurAIAttack */
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- return;
- }
- }
- else {
- iVar2 = objT1.obj.Timer - 1;
- objT1.obj.Timer = (word)iVar2;
- if (iVar2 == 0) {
- objT1.obj.CurAction = 0x2c; /* MettaurAIAlignAttack */
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- return;
- }
- }
- }
- }
- return;
- }
- void MettaurAIDefend(void)
- {
- byte bVar1;
- int iVar2;
- T1BattleObject *objT1;
- BattleObjectMain *objRel2;
- switch(objT1.obj.CurPhase);
- case 0:
- MettaurAIDefendP0();
- case 4:
- MettaurAIDefendP1();
- case 8:
- MettaurAIDefendP2();
- case 12:
- MettaurAIDefendP3();
- case 16:
- MettaurAIDefendP4();
- case 20:
- MettaurAIDefendP5();
- iVar2 = VariousAIUpdate_08014608();
- if (iVar2 != 0) {
- objRel2 = objT1.obj.RelatedObject2Ptr;
- bVar1 = objRel2.Param2;
- if ((bVar1 & 4) != 0) {
- objRel2.Param2 = bVar1 & 0xfb;
- objT1.obj.CurAnim = 4;
- }
- objT1.obj.CurAction = 0x20;
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- }
- return;
- }
- void MettaurAIDefendP0(void)
- {
- T1BattleObject *objT1;
- objT1.obj.CurAnim = 2;
- objT1.obj.CurAnimCopy = 0xff;
- *(undefined2 *)&objT1.obj.CurPhase = 4;
- return;
- }
- void MettaurAIDefendP1(void)
- {
- uint uVar1;
- T1BattleObject *objT1;
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x81) != 0) {
- VariousAIUpdate_080af0a0(objT1.obj.RelatedObject2Ptr,4);
- *(undefined2 *)&objT1.obj.CurPhase = 8;
- }
- return;
- }
- void MettaurAIDefendP2(void)
- {
- uint uVar1;
- T1BattleObject *objT1;
- VariousAIUpdate_080af0a0(objT1.obj.RelatedObject2Ptr,4);
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x80) != 0) {
- objT1.obj.CurAnim = 3;
- objT1.obj.CurAnimCopy = 0xff;
- objT1.obj.Timer = 0x78;
- *(undefined2 *)&objT1.obj.CurPhase = 0xc;
- }
- return;
- }
- void MettaurAIDefendP3(void)
- {
- int iVar1;
- T1BattleObject *objT1;
- VariousAIUpdate_080af0a0(objT1.obj.RelatedObject2Ptr,4);
- iVar1 = objT1.obj.Timer - 1;
- objT1.obj.Timer = (word)iVar1;
- if (iVar1 == 0) {
- VariousAIUpdate_080af0a8(objT1.obj.RelatedObject2Ptr,4);
- objT1.obj.CurAnim = 4;
- objT1.obj.CurAnimCopy = 0xff;
- *(undefined2 *)&objT1.obj.CurPhase = 0x10;
- }
- return;
- }
- void MettaurAIDefendP4(void)
- {
- uint uVar1;
- T1BattleObject *objT1;
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x80) != 0) {
- objT1.obj.Timer = 0x3c;
- *(undefined2 *)&objT1.obj.CurPhase = 0x14;
- }
- return;
- }
- void MettaurAIDefendP5(void)
- {
- int iVar1;
- T1BattleObject *objT1;
- iVar1 = objT1.obj.Timer - 1;
- objT1.obj.Timer = (word)iVar1;
- if (iVar1 == 0) {
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- }
- return;
- }
- void MettaurAIAttack(void)
- {
- T1BattleObject *objT1;
- switch(objT1.obj.CurPhase);
- case 0:
- MettaurAIAttackP0();
- case 4:
- MettaurAIAttackP1();
- case 8:
- MettaurAIAttackP2();
- return;
- }
- void MettaurAIAttackP0(void)
- {
- T1BattleObject *objT1;
- objT1.obj.CurAnim = 1;
- objT1.obj.CurAnimCopy = 0xff;
- *(undefined2 *)&objT1.obj.CurPhase = 4;
- return;
- }
- void MettaurAIAttackP1(void)
- {
- uint uVar1;
- int PanelX;
- int iVar2;
- T1BattleObject *objT1;
- byte PanelY;
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 4) != 0) {
- objT1.obj.field_0x30 = 0x14;
- }
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x81) != 0) {
- PanelX = InvertValueAtR5-0x16();
- PanelX += (uint)objT1.obj.PanelX;
- PanelY = objT1.obj.PanelY;
- iVar2 = GetPanelTeam(PanelX,PanelY,0x10,0);
- if (iVar2 != 0) {
- SpawnShockwave(iVar2,PanelX,PanelY,0);
- }
- *(undefined2 *)&objT1.obj.CurPhase = 8;
- }
- return;
- }
- void MettaurAIAttackP2(void)
- {
- uint uVar1;
- T1BattleObject *objT1;
- uVar1 = sprite_getFrameParameters();
- if ((uVar1 & 0x80) != 0) {
- VariousAIDestroy_0801464a();
- VariousAIIntiialize_08014620();
- objT1.obj.CurAction = 0x20;
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- }
- return;
- }
- void MettaurAIAlignAttack(void)
- {
- T1BattleObject *objT1;
- switch(objT1.obj.CurPhase);
- case 0:
- MettaurAIAlignAttackP0();
- case 4:
- MettaurAIAlignAttackP1();
- case 8:
- MettaurAIAlignAttackP2();
- return;
- }
- uint MettaurAIAlignAttackP0(void)
- {
- byte bVar1;
- uint uVar2;
- int iVar3;
- int iVar4;
- byte bVar5;
- T1BattleObject *objT1;
- undefined in_CY;
- uVar2 = CheckIf-2E-BitmaskHasAny-20A-BitsSet();
- if (uVar2 != 0) {
- uVar2 = GetPlayer_PanelY_CompareEnemy();
- iVar4 = 1;
- bVar5 = 2;
- if (uVar2 != 0) {
- if (!(bool)in_CY || uVar2 == 0) {
- iVar4 = -1;
- bVar5 = 4;
- }
- iVar4 += (uint)objT1.obj.PanelY;
- bVar1 = objT1.obj.PanelX;
- uVar2 = (uint)bVar1;
- objT1.obj.FuturePanelX = bVar1;
- objT1.obj.FuturePanelY = (byte)iVar4;
- iVar3 = GetPanelTeam(uVar2,iVar4,0x30,0x3e080080);
- if (iVar3 != 0) {
- objT1.obj.field_0x1c = bVar5;
- VariousAI-MarkAreaOffLimitsInOpenSearch1?(uVar2,iVar4);
- objT1.obj.CurAnim = 0;
- objT1.obj.CurAnimCopy = 0xff;
- objT1.obj.Timer = 3;
- SpawnT4BattleObjectWithId0(3,objT1.obj.X,objT1.obj.Y,objT1.obj.Z + 0x60000);
- objT1.obj.Header.Flags = objT1.obj.Header.Flags & 0xfd;
- objT1.obj.StaminaDamageCounterDisabler = objT1.obj.StaminaDamageCounterDisabler | 0x20
- ;
- *(undefined2 *)&objT1.obj.CurPhase = 4;
- return 4;
- }
- }
- }
- objT1.obj.CurAction = 0x28;
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- return uVar2;
- }
- void MettaurAI_080b5db6(void)
- {
- T1BattleObject *objT1;
- objT1.obj.CurAction = 0x20;
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- return;
- }
- void MettaurAIAlignAttackP1(void)
- {
- byte bVar1;
- byte bVar2;
- int iVar3;
- T1BattleObject *objT1;
- BattleObjectMain *objChild;
- dword adVar4 [2];
- iVar3 = objT1.obj.Timer - 1;
- objT1.obj.Timer = (word)iVar3;
- if (iVar3 == 0) {
- bVar1 = objT1.obj.FuturePanelX;
- bVar2 = objT1.obj.FuturePanelY;
- objT1.obj.PanelX = bVar1;
- objT1.obj.PanelY = bVar2;
- objChild = objT1.obj.RelatedObject2Ptr;
- objChild.CurState = bVar1;
- objChild.CurAction = bVar2;
- VariousAI-MarkAreaOffLimitsInOpenSearch2?();
- adVar4 = object_setCoordinatesFromPanels();
- SpawnT4BattleObjectWithId0
- ((int)((ulonglong)adVar4 >> 0x20),objT1.obj.X,objT1.obj.Y,
- objT1.obj.Z + 0x60000);
- objT1.obj.Timer = 3;
- *(undefined2 *)&objT1.obj.CurPhase = 8;
- }
- return;
- }
- void MettaurAIAlignAttackP2(void)
- {
- int iVar1;
- T1BattleObject *objT1;
- iVar1 = objT1.obj.Timer - 1;
- objT1.obj.Timer = (word)iVar1;
- if (iVar1 == 0) {
- objT1.obj.Header.Flags = objT1.obj.Header.Flags | 2;
- objT1.obj.StaminaDamageCounterDisabler = objT1.obj.StaminaDamageCounterDisabler & 0xffdf;
- objT1.obj.StaminaDamageCounterDisabler = objT1.obj.StaminaDamageCounterDisabler | 0x40;
- objT1.obj.CurAction = 0x20;
- *(undefined2 *)&objT1.obj.CurPhase = 0;
- }
- return;
- }
- void MettaurAIDestroy(void)
- {
- VariousAIDestroy_0801464a();
- VariousAIDestroy_080aeeb0();
- VariousAIDestroy_080147de();
- object_freeMemory();
- return;
- }
Add Comment
Please, Sign In to add comment