diff --git a/src/files/setup/setupame.c b/src/files/setup/setupame.c index fec7d567e..1b3b92329 100644 --- a/src/files/setup/setupame.c +++ b/src/files/setup/setupame.c @@ -205,8 +205,8 @@ u32 props[] = { door(0x0100, MODEL_DD_LIFTDOOR, 0x0229, OBJFLAG_ILLUMINATED | OBJFLAG_04000000, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0x00000001, 0x00000800) door(0x0100, MODEL_DD_LIFTDOOR, 0x022a, OBJFLAG_ILLUMINATED | OBJFLAG_04000000, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0xffffffff, 0x00000000) tag(0x33, 1) - door(0x0100, MODEL_DD_SECRETDOOR, 0x0228, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000020, 0x00000384, 0x00000000, 0x00000000, 0x00000800) - door(0x0100, MODEL_DD_SECRETDOOR, 0x00bc, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x0228, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000020, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x00bc, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a0, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a1, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a2, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000800) diff --git a/src/files/setup/setupark.c b/src/files/setup/setupark.c index ef886b559..a54336c51 100644 --- a/src/files/setup/setupark.c +++ b/src/files/setup/setupark.c @@ -138,8 +138,8 @@ u32 props[] = { door(0x0100, MODEL_DD_DECODOOR, 0x021f, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_LIFTDOOR, 0x0221, OBJFLAG_ILLUMINATED | OBJFLAG_04000000, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0x00000001, 0x00000800) door(0x0100, MODEL_DD_LIFTDOOR, 0x0222, OBJFLAG_ILLUMINATED | OBJFLAG_04000000, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0xffffffff, 0x00000000) - door(0x0100, MODEL_DD_SECRETDOOR, 0x0220, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) - door(0x0100, MODEL_DD_SECRETDOOR, 0x00ae, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x0220, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x00ae, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x0092, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x0093, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x0094, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000002, 0x00000384, 0x00000000, 0x00000001, 0x00000800) diff --git a/src/files/setup/setupwax.c b/src/files/setup/setupwax.c index 288f32082..7b32f6125 100644 --- a/src/files/setup/setupwax.c +++ b/src/files/setup/setupwax.c @@ -101,8 +101,8 @@ u32 props[] = { door(0x0100, MODEL_DD_LIFTDOOR, 0x022a, OBJFLAG_ILLUMINATED | OBJFLAG_04000000, OBJFLAG2_AICANNOTUSE, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, 0, DOORTYPE_SLIDING, 0x00000040, 0x00000384, 0x00000000, 0xffffffff, 0x00000000) tag(0x62, -1) tag(0x33, 1) - door(0x0100, MODEL_DD_SECRETDOOR, 0x0228, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) - door(0x0100, MODEL_DD_SECRETDOOR, 0x00bc, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_0200, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x0228, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) + door(0x0100, MODEL_DD_SECRETDOOR, 0x00bc, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004 | DOORFLAG_AUTOMATIC | DOORFLAG_LONGRANGE, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a0, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a1, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, OBJFLAG2_LOCKEDFRONT, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000004, 0x00000384, 0x00000000, 0x00000000, 0x00000800) door(0x0100, MODEL_DD_OFFICEDOOR, 0x00a2, OBJFLAG_ILLUMINATED | OBJFLAG_DEACTIVATED, 0, 0, 1000, 0x0000f333, 0x00010000, 0x00007fff, 0x00014000, 0x00000666, DOORFLAG_0004, DOORTYPE_SLIDING, 0x00000000, 0x00000384, 0x00000000, 0x00000001, 0x00000800) diff --git a/src/game/propobj.c b/src/game/propobj.c index ef88d8888..b69f78aa1 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -69532,58 +69532,30 @@ bool doorIsUnlocked(struct prop *playerprop, struct prop *doorprop) return canopen; } -GLOBAL_ASM( -glabel func0f08bdd4 -/* f08bdd4: 27bdffd8 */ addiu $sp,$sp,-40 -/* f08bdd8: afbf0014 */ sw $ra,0x14($sp) -/* f08bddc: afa40028 */ sw $a0,0x28($sp) -/* f08bde0: afa5002c */ sw $a1,0x2c($sp) -/* f08bde4: 948f0070 */ lhu $t7,0x70($a0) -/* f08bde8: 44866000 */ mtc1 $a2,$f12 -/* f08bdec: 44800000 */ mtc1 $zero,$f0 -/* f08bdf0: 31f80200 */ andi $t8,$t7,0x200 -/* f08bdf4: 17000003 */ bnez $t8,.L0f08be04 -/* f08bdf8: 3c0143c8 */ lui $at,0x43c8 -/* f08bdfc: 50e00005 */ beqzl $a3,.L0f08be14 -/* f08be00: 3c014348 */ lui $at,0x4348 -.L0f08be04: -/* f08be04: 44812000 */ mtc1 $at,$f4 -/* f08be08: 10000005 */ b .L0f08be20 -/* f08be0c: 46046300 */ add.s $f12,$f12,$f4 -/* f08be10: 3c014348 */ lui $at,0x4348 -.L0f08be14: -/* f08be14: 44813000 */ mtc1 $at,$f6 -/* f08be18: 00000000 */ nop -/* f08be1c: 46066300 */ add.s $f12,$f12,$f6 -.L0f08be20: -/* f08be20: 8fb90028 */ lw $t9,0x28($sp) -/* f08be24: e7ac001c */ swc1 $f12,0x1c($sp) -/* f08be28: e7a00020 */ swc1 $f0,0x20($sp) -/* f08be2c: e7a00024 */ swc1 $f0,0x24($sp) -/* f08be30: 97220072 */ lhu $v0,0x72($t9) -/* f08be34: 24010004 */ addiu $at,$zero,0x4 -/* f08be38: 8fa4002c */ lw $a0,0x2c($sp) -/* f08be3c: 10410004 */ beq $v0,$at,.L0f08be50 -/* f08be40: 8fa80028 */ lw $t0,0x28($sp) -/* f08be44: 10400002 */ beqz $v0,.L0f08be50 -/* f08be48: 24010005 */ addiu $at,$zero,0x5 -/* f08be4c: 14410007 */ bne $v0,$at,.L0f08be6c -.L0f08be50: -/* f08be50: 27a5001c */ addiu $a1,$sp,0x1c -/* f08be54: 0fc19e3e */ jal func0f0678f8 -/* f08be58: 85060006 */ lh $a2,0x6($t0) -/* f08be5c: 50400004 */ beqzl $v0,.L0f08be70 -/* f08be60: 00001025 */ or $v0,$zero,$zero -/* f08be64: 10000002 */ b .L0f08be70 -/* f08be68: 24020001 */ addiu $v0,$zero,0x1 -.L0f08be6c: -/* f08be6c: 00001025 */ or $v0,$zero,$zero -.L0f08be70: -/* f08be70: 8fbf0014 */ lw $ra,0x14($sp) -/* f08be74: 27bd0028 */ addiu $sp,$sp,0x28 -/* f08be78: 03e00008 */ jr $ra -/* f08be7c: 00000000 */ nop -); +bool func0f08bdd4(struct doorobj *door, struct coord *pos, f32 distance, bool isbike) +{ + f32 range[3]; + + if ((door->doorflags & DOORFLAG_LONGRANGE) || isbike) { + distance += 400; + } else { + distance += 200; + } + + range[0] = distance; + range[1] = 0; + range[2] = 0; + + if (door->doortype == DOORTYPE_VERTICAL + || door->doortype == DOORTYPE_SLIDING + || door->doortype == DOORTYPE_SWINGING) { + if (func0f0678f8(pos, range, door->base.pad)) { + return true; + } + } + + return false; +} GLOBAL_ASM( glabel func0f08be80 diff --git a/src/include/constants.h b/src/include/constants.h index ae11d823b..d9b3a7787 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -711,7 +711,7 @@ #define DOORFLAG_0040 0x0040 #define DOORFLAG_0080 0x0080 #define DOORFLAG_0100 0x0100 -#define DOORFLAG_0200 0x0200 // dataDyne secret door near lobby elevator +#define DOORFLAG_LONGRANGE 0x0200 #define DOORFLAG_DAMAGEONCONTACT 0x0400 // Lasers #define DOORFLAG_0800 0x0800 // Non-CI lasers, and floor grates #define DOORFLAG_4000 0x4000 // Two Investigation vertical doors after lasers