diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index a1c091ba7..2755b0c5b 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -3408,10 +3408,11 @@ glabel ai006b bool aiOpenDoor(void) { u8 *cmd = g_Vars.ailist + g_Vars.aioffset; - struct defaultobj *door = objFindByTagId(cmd[2]); + struct defaultobj *obj = objFindByTagId(cmd[2]); - if (door && door->prop && door->prop->type == PROPTYPE_DOOR) { - if (!func0f066310(door->prop, 0)) { + if (obj && obj->prop && obj->prop->type == PROPTYPE_DOOR) { + if (!func0f066310(obj->prop, 0)) { + struct doorobj *door = (struct doorobj *) obj; doorActivate(door, DOORSTATE_OPEN); } } @@ -3427,9 +3428,10 @@ bool aiOpenDoor(void) bool aiCloseDoor(void) { u8 *cmd = g_Vars.ailist + g_Vars.aioffset; - struct defaultobj *door = objFindByTagId(cmd[2]); + struct defaultobj *obj = objFindByTagId(cmd[2]); - if (door && door->prop && door->prop->type == PROPTYPE_DOOR) { + if (obj && obj->prop && obj->prop->type == PROPTYPE_DOOR) { + struct doorobj *door = (struct doorobj *) obj; doorActivate(door, DOORSTATE_CLOSED); } @@ -7490,7 +7492,7 @@ bool aiSetDoorOpen(void) door->lastopen60 = g_Vars.lvframe60; door->mode = 0; func0f08c54c(door); - func0f08d4e8(door); + doorActivatePortal(door); func0f0926bc(door->base.prop, 1, 0xffff); } diff --git a/src/game/game_066310.c b/src/game/game_066310.c index f84ac0faf..196aaba35 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -6876,7 +6876,7 @@ glabel setupParseObject .L0f06af3c: /* f06af3c: 5602000e */ bnel $s0,$v0,.L0f06af78 /* f06af40: 8e2c0014 */ lw $t4,0x14($s1) -/* f06af44: 0fc2353a */ jal func0f08d4e8 +/* f06af44: 0fc2353a */ jal doorActivatePortal /* f06af48: 02202025 */ or $a0,$s1,$zero /* f06af4c: 862300c4 */ lh $v1,0xc4($s1) /* f06af50: 3c08800a */ lui $t0,0x800a @@ -20588,7 +20588,7 @@ glabel func0f07731c /* f077424: 10000004 */ beqz $zero,.L0f077438 /* f077428: 8fbf001c */ lw $ra,0x1c($sp) .L0f07742c: -/* f07742c: 0fc2353a */ jal func0f08d4e8 +/* f07742c: 0fc2353a */ jal doorActivatePortal /* f077430: 02002025 */ or $a0,$s0,$zero /* f077434: 8fbf001c */ lw $ra,0x1c($sp) .L0f077438: @@ -45373,21 +45373,12 @@ glabel func0f08d460 /* f08d4e4: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f08d4e8 -/* f08d4e8: 27bdffe8 */ addiu $sp,$sp,-24 -/* f08d4ec: afbf0014 */ sw $ra,0x14($sp) -/* f08d4f0: 848600c4 */ lh $a2,0xc4($a0) -/* f08d4f4: 04c00003 */ bltz $a2,.L0f08d504 -/* f08d4f8: 00c02025 */ or $a0,$a2,$zero -/* f08d4fc: 0fc59392 */ jal portalSetEnabled -/* f08d500: 24050001 */ addiu $a1,$zero,0x1 -.L0f08d504: -/* f08d504: 8fbf0014 */ lw $ra,0x14($sp) -/* f08d508: 27bd0018 */ addiu $sp,$sp,0x18 -/* f08d50c: 03e00008 */ jr $ra -/* f08d510: 00000000 */ sll $zero,$zero,0x0 -); +void doorActivatePortal(struct doorobj *door) +{ + if (door->portal >= 0) { + portalSetEnabled(door->portal, true); + } +} void doorDeactivatePortal(struct doorobj *door) { @@ -46193,7 +46184,7 @@ void func0f08e0c4(struct doorobj *door) door->base.hidden |= OBJHIDDENFLAG_00000200; func0f08d784(door->soundtype, door->base.prop); - func0f08d4e8(door); + doorActivatePortal(door); if (door->doortype == DOORTYPE_8) { struct obj44 *obj44 = door->base.unk44; diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index e2d844ab8..b93d315f1 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -294,7 +294,7 @@ u32 func0f08c54c(struct doorobj *door); u32 func0f08cb20(void); u32 func0f08d3dc(void); u32 func0f08d460(void); -void func0f08d4e8(struct doorobj *door); +void doorActivatePortal(struct doorobj *door); void doorDeactivatePortal(struct doorobj *door); u32 func0f08d540(void); u32 func0f08d784(s8 soundtype, struct prop *prop);