summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2021-12-02 11:08:46 -0800
committerGitHub <noreply@github.com>2021-12-02 11:08:46 -0800
commit02252b52ce8d883ee7f418be1ba34367575a2fda (patch)
tree7060189dcbbd2f9d96f6b6579b3ea920689a42e3 /src
parent9a7760356048e3c7a9b39a5c19f8718fa42c33a2 (diff)
parent3a7c596558266045345717e04cddd103d4c517fc (diff)
Merge pull request #203 from Henny022p/treeItem
Diffstat (limited to 'src')
-rw-r--r--src/enemy/treeItem.c54
1 files changed, 34 insertions, 20 deletions
diff --git a/src/enemy/treeItem.c b/src/enemy/treeItem.c
index acacb7a3..290cac38 100644
--- a/src/enemy/treeItem.c
+++ b/src/enemy/treeItem.c
@@ -9,22 +9,36 @@ static bool32 ShouldSpawnTreeItem(Entity*);
extern u32 sub_080028F4(const u8*);
extern void sub_08049CF4(Entity*);
-extern const u8 gUnk_080D29E0[][16];
-extern const u8 gUnk_080D2AB0[];
+const u8 gTreeItemDropTables[][16] = {
+ { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+};
+const u8 gTreeItemDrops[] = { 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x00, 0x00, 0x00, 0x00 };
+
+#define FAIRY_INDEX 8
void TreeItem(Entity* this) {
Entity* itemEntity;
- int var0;
if (this->action == 0) {
this->action++;
- this->field_0x68.HALF.LO = sub_080028F4(gUnk_080D29E0[this->type]);
- if (this->field_0x68.HALF.LO > 8) {
+ this->field_0x68.HALF.LO = sub_080028F4(gTreeItemDropTables[this->type]);
+ if (this->field_0x68.HALF.LO > FAIRY_INDEX) {
DeleteThisEntity();
}
-
- if (this->field_0x68.HALF.LO < 8 && GetInventoryValue(0x67) == 0) {
- this->field_0x68.HALF.LO = 8;
+ if (this->field_0x68.HALF.LO < FAIRY_INDEX && GetInventoryValue(0x67 /*KinstoneBag*/) == 0) {
+ this->field_0x68.HALF.LO = FAIRY_INDEX;
}
}
@@ -32,24 +46,24 @@ void TreeItem(Entity* this) {
return;
}
- var0 = this->field_0x68.HALF.LO;
- if (var0 >= 0) {
- if (var0 > 7) {
- if (var0 == 8) {
- itemEntity = CreateObject(FAIRY, 0x60, 0);
- if (itemEntity) {
- itemEntity->actionDelay = 0;
- CopyPosition(this, itemEntity);
- }
+ switch (this->field_0x68.HALF.LO) {
+ case FAIRY_INDEX:
+ itemEntity = CreateObject(FAIRY, 0x60, 0);
+ if (itemEntity) {
+ itemEntity->actionDelay = 0;
+ CopyPosition(this, itemEntity);
}
- } else {
- itemEntity = CreateObject(OBJECT_96, 0x7, gUnk_080D2AB0[var0]);
+ break;
+ case 0 ...(FAIRY_INDEX - 1):
+ itemEntity = CreateObject(OBJECT_96, 0x7, gTreeItemDrops[this->field_0x68.HALF.LO]);
if (itemEntity) {
CopyPosition(this, itemEntity);
itemEntity->y.HALF.HI += 16;
itemEntity->z.HALF.HI = -32;
}
- }
+ break;
+ default:
+ break;
}
sub_08049CF4(this);