Merge pull request #203 from Henny022p/treeItem

This commit is contained in:
notyourav 2021-12-02 11:08:46 -08:00 committed by GitHub
commit 02252b52ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 44 deletions

View File

@ -1,23 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_080D29E0:: @ 080D29E0
.byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
gUnk_080D2AB0:: @ 080D2AB0
.byte 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x00, 0x00, 0x00, 0x00

View File

@ -1174,7 +1174,7 @@ SECTIONS {
data/const/enemy/gyorgFemaleMouth.o(.rodata); data/const/enemy/gyorgFemaleMouth.o(.rodata);
data/animations/enemy/gyorgFemaleMouth.o(.rodata); data/animations/enemy/gyorgFemaleMouth.o(.rodata);
data/const/enemy/enemy64.o(.rodata); data/const/enemy/enemy64.o(.rodata);
data/const/enemy/treeItem.o(.rodata); src/enemy/treeItem.o(.rodata);
data/const/enemy/enemy66.o(.rodata); data/const/enemy/enemy66.o(.rodata);
src/enemy.o(.rodata); src/enemy.o(.rodata);
data/data_080D3D94.o(.rodata); data/data_080D3D94.o(.rodata);

View File

@ -9,22 +9,36 @@ static bool32 ShouldSpawnTreeItem(Entity*);
extern u32 sub_080028F4(const u8*); extern u32 sub_080028F4(const u8*);
extern void sub_08049CF4(Entity*); extern void sub_08049CF4(Entity*);
extern const u8 gUnk_080D29E0[][16]; const u8 gTreeItemDropTables[][16] = {
extern const u8 gUnk_080D2AB0[]; { 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) { void TreeItem(Entity* this) {
Entity* itemEntity; Entity* itemEntity;
int var0;
if (this->action == 0) { if (this->action == 0) {
this->action++; this->action++;
this->field_0x68.HALF.LO = sub_080028F4(gUnk_080D29E0[this->type]); this->field_0x68.HALF.LO = sub_080028F4(gTreeItemDropTables[this->type]);
if (this->field_0x68.HALF.LO > 8) { if (this->field_0x68.HALF.LO > FAIRY_INDEX) {
DeleteThisEntity(); DeleteThisEntity();
} }
if (this->field_0x68.HALF.LO < FAIRY_INDEX && GetInventoryValue(0x67 /*KinstoneBag*/) == 0) {
if (this->field_0x68.HALF.LO < 8 && GetInventoryValue(0x67) == 0) { this->field_0x68.HALF.LO = FAIRY_INDEX;
this->field_0x68.HALF.LO = 8;
} }
} }
@ -32,24 +46,24 @@ void TreeItem(Entity* this) {
return; return;
} }
var0 = this->field_0x68.HALF.LO; switch (this->field_0x68.HALF.LO) {
if (var0 >= 0) { case FAIRY_INDEX:
if (var0 > 7) {
if (var0 == 8) {
itemEntity = CreateObject(FAIRY, 0x60, 0); itemEntity = CreateObject(FAIRY, 0x60, 0);
if (itemEntity) { if (itemEntity) {
itemEntity->actionDelay = 0; itemEntity->actionDelay = 0;
CopyPosition(this, itemEntity); CopyPosition(this, itemEntity);
} }
} break;
} else { case 0 ...(FAIRY_INDEX - 1):
itemEntity = CreateObject(OBJECT_96, 0x7, gUnk_080D2AB0[var0]); itemEntity = CreateObject(OBJECT_96, 0x7, gTreeItemDrops[this->field_0x68.HALF.LO]);
if (itemEntity) { if (itemEntity) {
CopyPosition(this, itemEntity); CopyPosition(this, itemEntity);
itemEntity->y.HALF.HI += 16; itemEntity->y.HALF.HI += 16;
itemEntity->z.HALF.HI = -32; itemEntity->z.HALF.HI = -32;
} }
} break;
default:
break;
} }
sub_08049CF4(this); sub_08049CF4(this);