mirror of https://github.com/zeldaret/tmc.git
Merge pull request #203 from Henny022p/treeItem
This commit is contained in:
commit
02252b52ce
|
@ -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
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
itemEntity = CreateObject(FAIRY, 0x60, 0);
|
||||||
if (var0 == 8) {
|
if (itemEntity) {
|
||||||
itemEntity = CreateObject(FAIRY, 0x60, 0);
|
itemEntity->actionDelay = 0;
|
||||||
if (itemEntity) {
|
CopyPosition(this, itemEntity);
|
||||||
itemEntity->actionDelay = 0;
|
|
||||||
CopyPosition(this, itemEntity);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
break;
|
||||||
itemEntity = CreateObject(OBJECT_96, 0x7, gUnk_080D2AB0[var0]);
|
case 0 ...(FAIRY_INDEX - 1):
|
||||||
|
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);
|
||||||
|
|
Loading…
Reference in New Issue