diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 855238299..3863da6e5 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -7974,7 +7974,7 @@ glabel func0f023098 ); GLOBAL_ASM( -glabel func0f024524 +glabel chrDropItems /* f024524: 27bdffe0 */ addiu $sp,$sp,-32 /* f024528: afbf001c */ sw $ra,0x1c($sp) /* f02452c: afb10018 */ sw $s1,0x18($sp) @@ -20544,7 +20544,7 @@ glabel func0f02f704 /* f02f7f8: 0c00777b */ jal func0001ddec /* f02f7fc: 3c064180 */ lui $a2,0x4180 .L0f02f800: -/* f02f800: 0fc09149 */ jal func0f024524 +/* f02f800: 0fc09149 */ jal chrDropItems /* f02f804: 02002025 */ or $a0,$s0,$zero /* f02f808: 8fbf0024 */ lw $ra,0x24($sp) /* f02f80c: 8fb00020 */ lw $s0,0x20($sp) @@ -24139,7 +24139,7 @@ glabel func0f0319a8 /* f032aa0: 35f80001 */ ori $t8,$t7,0x1 /* f032aa4: ae180014 */ sw $t8,0x14($s0) .L0f032aa8: -/* f032aa8: 0fc09149 */ jal func0f024524 +/* f032aa8: 0fc09149 */ jal chrDropItems /* f032aac: 02002025 */ or $a0,$s0,$zero .L0f032ab0: /* f032ab0: 8fbf002c */ lw $ra,0x2c($sp) @@ -27901,7 +27901,7 @@ glabel func0f034524 .L0f036044: /* f036044: 14400004 */ bnez $v0,.L0f036058 /* f036048: 00000000 */ sll $zero,$zero,0x0 -/* f03604c: 0fc09149 */ jal func0f024524 +/* f03604c: 0fc09149 */ jal chrDropItems /* f036050: 02002025 */ or $a0,$s0,$zero /* f036054: 8e0202d4 */ lw $v0,0x2d4($s0) .L0f036058: @@ -36707,7 +36707,7 @@ glabel func0f03d7ec /* f03da44: 358d0001 */ ori $t5,$t4,0x1 /* f03da48: afcd0014 */ sw $t5,0x14($s8) .L0f03da4c: -/* f03da4c: 0fc09149 */ jal func0f024524 +/* f03da4c: 0fc09149 */ jal chrDropItems /* f03da50: 03c02025 */ or $a0,$s8,$zero /* f03da54: 8fbf005c */ lw $ra,0x5c($sp) .L0f03da58: diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index c3c3ad322..3e3a04b55 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -3397,39 +3397,19 @@ glabel ai0067 /** * @cmd 0068 */ -GLOBAL_ASM( -glabel ai0068 -/* f051d44: 3c03800a */ lui $v1,%hi(g_Vars) -/* f051d48: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f051d4c: 8c6e0434 */ lw $t6,0x434($v1) -/* f051d50: 8c6f0438 */ lw $t7,0x438($v1) -/* f051d54: 27bdffe8 */ addiu $sp,$sp,-24 -/* f051d58: afbf0014 */ sw $ra,0x14($sp) -/* f051d5c: 01cf1021 */ addu $v0,$t6,$t7 -/* f051d60: 90450002 */ lbu $a1,0x2($v0) -/* f051d64: 0fc126d1 */ jal chrFindById -/* f051d68: 8c640424 */ lw $a0,0x424($v1) -/* f051d6c: 3c03800a */ lui $v1,%hi(g_Vars) -/* f051d70: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -/* f051d74: 10400008 */ beqz $v0,.L0f051d98 -/* f051d78: 00402025 */ or $a0,$v0,$zero -/* f051d7c: 8c58001c */ lw $t8,0x1c($v0) -/* f051d80: 53000006 */ beqzl $t8,.L0f051d9c -/* f051d84: 8c790438 */ lw $t9,0x438($v1) -/* f051d88: 0fc09149 */ jal func0f024524 -/* f051d8c: 00000000 */ sll $zero,$zero,0x0 -/* f051d90: 3c03800a */ lui $v1,%hi(g_Vars) -/* f051d94: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars) -.L0f051d98: -/* f051d98: 8c790438 */ lw $t9,0x438($v1) -.L0f051d9c: -/* f051d9c: 8fbf0014 */ lw $ra,0x14($sp) -/* f051da0: 27bd0018 */ addiu $sp,$sp,0x18 -/* f051da4: 27280003 */ addiu $t0,$t9,0x3 -/* f051da8: ac680438 */ sw $t0,0x438($v1) -/* f051dac: 03e00008 */ jr $ra -/* f051db0: 00001025 */ or $v0,$zero,$zero -); +bool aiChrDropItems(void) +{ + u8 *cmd = g_Vars.ailist + g_Vars.aioffset; + struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[2]); + + if (chr && chr->pos) { + chrDropItems(chr); + } + + g_Vars.aioffset += 3; + + return false; +} /** * @cmd 0069 diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 4f0307366..f2348c199 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -510,7 +510,7 @@ u32 func0f022cc8(void); u32 func0f022d60(void); u32 func0f022fe0(void); u32 func0f023098(void); -u32 func0f024524(void); +void chrDropItems(struct chrdata *chr); u32 func0f0245c8(struct chrdata *chr, u32 arg1); u32 func0f024668(void); u32 func0f0246e4(void); diff --git a/src/include/game/chr/chraicommands.h b/src/include/game/chr/chraicommands.h index 8d1a98a42..9d2edebdb 100644 --- a/src/include/game/chr/chraicommands.h +++ b/src/include/game/chr/chraicommands.h @@ -106,7 +106,7 @@ /*0x0065*/ bool ai0065(void); /*0x0066*/ bool aiDestroyObject(void); /*0x0067*/ bool ai0067(void); -/*0x0068*/ bool ai0068(void); +/*0x0068*/ bool aiChrDropItems(void); /*0x0069*/ bool ai0069(void); /*0x006a*/ bool ai006a(void); /*0x006b*/ bool ai006b(void); diff --git a/src/setup/setup_000000.c b/src/setup/setup_000000.c index 4943380a7..262ad98b4 100644 --- a/src/setup/setup_000000.c +++ b/src/setup/setup_000000.c @@ -14236,7 +14236,7 @@ bool (*g_CommandPointers[])(void) = { /*0x0065*/ ai0065, /*0x0066*/ aiDestroyObject, /*0x0067*/ ai0067, - /*0x0068*/ ai0068, + /*0x0068*/ aiChrDropItems, /*0x0069*/ ai0069, /*0x006a*/ ai006a, /*0x006b*/ ai006b,