diff options
| author | theo3 <arisstephenson2@gmail.com> | 2020-08-16 15:39:30 -0700 |
|---|---|---|
| committer | theo3 <arisstephenson2@gmail.com> | 2020-08-16 15:39:30 -0700 |
| commit | f2aeda134dbfce82ced4d91d86f7db0b62e4af28 (patch) | |
| tree | cfd8034c832a8a9f175692af6c39b7636629e7c0 /src | |
| parent | 3dc1506bcb8b7a3ca041dfd9ffd67f38644ff9ed (diff) | |
tektiteGolden.c OK
Diffstat (limited to 'src')
| -rw-r--r-- | src/enemy/tektiteGolden.c | 216 |
1 files changed, 138 insertions, 78 deletions
diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c index 90483b71..221732eb 100644 --- a/src/enemy/tektiteGolden.c +++ b/src/enemy/tektiteGolden.c @@ -9,100 +9,160 @@ extern void sub_08038168(Entity*); extern void (*const gUnk_080CF4A0)(Entity*); extern void (*const gUnk_080CF4B8[])(Entity*); -void TektiteGolden(Entity *this) -{ - EnemyFunctionHandler(this, &gUnk_080CF4A0); - SetChildOffset(this, 0, 1, -0x10); +void TektiteGolden(Entity* this) { + EnemyFunctionHandler(this, &gUnk_080CF4A0); + SetChildOffset(this, 0, 1, -0x10); } -void sub_08037EE8(Entity* this) -{ - gUnk_080CF4B8[this->action](this); +void sub_08037EE8(Entity* this) { + gUnk_080CF4B8[this->action](this); } -void sub_08037F00(Entity *this) -{ - u32 uVar1; - - if (this->field_0x43 != 0) { - sub_0804A9FC(this,0x1c); - } - sub_0804AA30(this, &gUnk_080CF4A0); - if (this->bitfield == 0x94) { - this->action = 1; - this->previousActionFlag = 0; - this->actionDelay = 0x14; - this->field_0xf = 0; - this->field_0x80.HALF.LO = 0; - uVar1 = this->height.HALF.HI; - if (uVar1 != 0) { - this->field_0x20 >>= 2; +void sub_08037F00(Entity* this) { + u32 uVar1; + + if (this->field_0x43 != 0) { + sub_0804A9FC(this, 0x1c); } - else { - this->field_0x20 = uVar1; + sub_0804AA30(this, &gUnk_080CF4A0); + if (this->bitfield == 0x94) { + this->action = 1; + this->previousActionFlag = 0; + this->actionDelay = 0x14; + this->field_0xf = 0; + this->field_0x80.HALF.LO = 0; + uVar1 = this->height.HALF.HI; + if (uVar1 != 0) { + this->field_0x20 >>= 2; + } else { + this->field_0x20 = uVar1; + } + + InitializeAnimation(this, 0); } +} - InitializeAnimation(this,0); - } +void sub_08037F58(Entity* this) { + u32 uVar1; + + if ((this->field_0x3a & 2) == 0) { + SetGlobalFlag(this->entityType.parameter); + } + if ((this->entityType).form != 0) { + uVar1 = 0x59; + } else { + uVar1 = 0x58; + } + CreateDeathFx(this, 0xff, uVar1); } -void sub_08037F58(Entity *this) -{ - u32 uVar1; - - if ((this->field_0x3a & 2) == 0) { - SetGlobalFlag(this->entityType.parameter); - } - if ((this->entityType).form != 0) { - uVar1 = 0x59; - } - else { - uVar1 = 0x58; - } - CreateDeathFx(this, 0xff, uVar1); +void sub_08037F84(Entity* this) { + sub_08001242(); + if (this->height.HALF.HI != 0) { + sub_08003FC4(this, 0x3000); + } } -void sub_08037F84(Entity *this) -{ - sub_08001242(); - if (this->height.HALF.HI != 0) { - sub_08003FC4(this, 0x3000); - } +void sub_08037FA0(Entity* this) { + + if (CheckGlobalFlag(this->entityType.parameter)) { + DeleteThisEntity(); + } + sub_0804A720(this); + this->action = 1; + this->previousActionFlag = 0; + this->actionDelay = (Random() & 0x1f) + 0x20; + this->field_0xf = 0; + this->field_0x80.HALF.LO = 0; + InitializeAnimation(this, 0); } -void sub_08037FA0(Entity *this) -{ - - if (CheckGlobalFlag(this->entityType.parameter)) { - DeleteThisEntity(); - } - sub_0804A720(this); - this->action = 1; - this->previousActionFlag = 0; - this->actionDelay = (Random() & 0x1f) + 0x20; - this->field_0xf = 0; - this->field_0x80.HALF.LO = 0; - InitializeAnimation(this,0); +void sub_08037Fe0(Entity* this) { + UpdateAnimationVariableFrames(this, 2); + if (this->actionDelay != 0) { + this->actionDelay--; + } else if (this->field_0xf != 0) { + if ((this->frames.b.f3) != 0) { + this->action = 2; + this->actionDelay = 6; + this->field_0xf = 0; + this->field_0x20 = 0x38000; + sub_08038168(this); + InitializeAnimation(this, 2); + } + } else if ((this->frames.b.f3) != 0) { + this->field_0xf = 0x40; + InitializeAnimation(this, 1); + } } -void sub_08037Fe0(Entity *this) -{ - UpdateAnimationVariableFrames(this, 2); - if (this->actionDelay != 0) { - this->actionDelay--; - } - else if (this->field_0xf != 0) { - if ((this->frames.b.f3) != 0) { - this->action = 2; - this->actionDelay = 6; - this->field_0xf = 0; - this->field_0x20 = 0x38000; +void sub_08038048(Entity* this) { + s32 temp; + u32 rand; + + UpdateAnimationVariableFrames(this, 2); + sub_080AEF88(this); + temp = this->height.HALF.HI; + rand = Random() & 0xf; + + if (sub_080044EC(this, 0x3000) == 1) { + this->action = 3; + this->previousActionFlag = 0; + this->actionDelay = 0x14; + InitializeAnimation(this, 3); + return; + } else if (this->collisions != 0) { + sub_0800417E(this, this->collisions); + } else if ((sub_080002B8(this) & 0xf0) == 0x50) { + this->direction = (this->direction + 0x10) & 0x1f; + } + + if (--this->actionDelay == 0) { + this->actionDelay = rand + 0x10; sub_08038168(this); - InitializeAnimation(this, 2); - } } - else if ((this->frames.b.f3) != 0) { - this->field_0xf = 0x40; - InitializeAnimation(this, 1); + + if ((this->previousActionFlag == 0) && (temp < this->height.HALF.HI)) { + InitializeAnimation(this, 4); + this->previousActionFlag = 1; + } + + if (temp < -0xc) { + this->spriteRendering.b3 = 1; + this->spriteOrientation.flipY = 1; + } else { + this->spriteRendering.b3 = 2; + this->spriteOrientation.flipY = 2; + } +} + +void sub_08038110(Entity* this) { + UpdateAnimationVariableFrames(this, 2); + if ((this->frames.b.f3) != 0) { + if (this->field_0x80.HALF.LO < 5) { + this->action = 2; + this->actionDelay = 8; + this->field_0x20 = 0x38000; + sub_08038168(this); + InitializeAnimation(this, 2); + } else { + this->action = 1; + this->field_0x80.HALF.LO = 0; + this->actionDelay = 0xc0; + InitializeAnimation(this, 0); + } + } +} + +void sub_08038168(Entity* this) { + u32 temp; + + if (sub_08049FA0(this) == 0) { + this->direction = sub_08049EE4(this); + } else if (sub_08049FDC(this, 1) != 0) { + this->direction = sub_08049F84(this, 1); + } else { + temp = (Random() & 0xf) + 0x18; + this->direction = (temp + this->direction) & 0x1f; } }
\ No newline at end of file |
