summaryrefslogtreecommitdiff
path: root/include/enemy/gyorg.h
blob: a7ea53f640f03b4f289c6dfaa49da1b41f22498f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#ifndef ENEMY_GYORG_H
#define ENEMY_GYORG_H

#include "enemy.h"

typedef struct {
    Entity base;
    u8 unk_68[0x8];
    u16 childrenSpawnTimer;
    u8 unk_72[0x6];
    u8 eyesVulnerable; /**< bitset of eyes currently vulnerable */
    u8 unk_79;
    u16 eyeTimer;
    u8 eyesHitFrame; /**< bitset of eyes hit this frame */
    u8 eyesHit;      /**< bitset buffer of eyes hit */
    u8 unk_7e[1];
    u8 unk_7f;
    u8 unk_80;
    u8 unk_81[1];
    u8 damageTakenCycle; /**< damage taken this cycle */
    u8 unk_83[5];
} GyorgFemaleEntity;

typedef struct {
    Entity base;
    u8 unk_68[0x20];
} GyorgFemaleEyeEntity;

typedef struct {
    Entity base;
    u8 filler[0x20];
} GyorgFemaleMouthEntity;

typedef struct {
    Entity base;
    u8 unk_68[0x8];
    u16 unk_70;
    u16 unk_72;
    u16 unk_74;
    u16 unk_76;
    u16 unk_78;
    u16 unk_7a;
    u8 unk_7c;
    u8 unk_7d;
    u16 unk_7e;
    u16 unk_80;
    u16 unk_82;
    u16 unk_84;
    u16 unk_86;
} GyorgMaleEntity;

typedef struct {
    Entity base;
    u8 unk_68[0xC];
    s16 attackOffsetX;
    s16 attackOffsetY;
    s16 attackSpeed;
    u8 attackDirection;
    u8 unk_7b;
    u8 unk_7c[0xC];
} GyorgChildEntity;

typedef struct {
    Entity base;
    u8 unk_68[4];
    u16 unk_6c;
    u16 timer;
    u16 unk_70;
    u16 unk_72;
    u8 unk_74;
    u8 unk_75;
    u16 unk_76;
    u16 unk_78;
    u8 unk_7a;
    u8 unk_7b;
    u16 unk_7c;
    u8 unk_7e[0xa];
} GyorgBossObjectEntity;

typedef struct {
    GyorgBossObjectEntity* boss;
    GyorgFemaleEntity* female;
    GyorgMaleEntity* male1;
    GyorgMaleEntity* male2;
    GyorgFemaleMouthEntity* mouth;
    GenericEntity* tail;
    void* unk_18[0x8];
    Coords reflectFxPos;
    u8 unk_3c;
} GyorgHeap;

extern void GyorgBossObject_SpawnChildren(u32 unk0, bool32 fromBlue, u32 animationState);

#endif