Files
perfect_dark/src/game/game_1999b0.c
T

929 lines
31 KiB
C

#include <ultra64.h>
#include "constants.h"
#include "game/chr/chraction.h"
#include "game/data/data_000000.h"
#include "game/data/data_0083d0.h"
#include "game/data/data_00e460.h"
#include "game/data/data_0160b0.h"
#include "game/data/data_01a3a0.h"
#include "game/data/data_020df0.h"
#include "game/data/data_02da90.h"
#include "game/debug.h"
#include "game/chr/chr.h"
#include "game/game_092610.h"
#include "game/game_097ba0.h"
#include "game/game_0b0420.h"
#include "game/game_127910.h"
#include "game/game_1999b0.h"
#include "game/pad.h"
#include "game/padhalllv.h"
#include "game/propobj.h"
#include "gvars/gvars.h"
#include "lib/lib_12dc0.h"
#include "lib/lib_159b0.h"
#include "lib/lib_16110.h"
#include "lib/lib_233c0.h"
#include "types.h"
s32 weaponGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum)
{
if (weaponnum >= WEAPON_FALCON2 && weaponnum <= WEAPON_SUICIDEPILL) {
struct inventory_ammo *ammo = weaponGetAmmoByFunction(weaponnum, funcnum);
if (ammo) {
return ammo->type;
}
}
return 0;
}
s32 weaponGetClipSizeByFunction(s32 weaponnum, u32 funcnum)
{
if (weaponnum >= WEAPON_FALCON2 && weaponnum <= WEAPON_SUICIDEPILL) {
struct inventory_ammo *ammo = weaponGetAmmoByFunction(weaponnum, funcnum);
if (ammo) {
return ammo->clipsize;
}
}
return 0;
}
void func0f199a40(struct chrdata *chr, u32 index, bool arg2)
{
struct aibot *aibot = chr->aibot;
aibot->unk02c[index] = 0;
aibot->unk0e4[index] = 0;
if (chr->weapons_held[index]
&& func0f19a29c(aibot->weaponnum, aibot->gunfunc) == 0) {
s32 clipsize = weaponGetClipSizeByFunction(aibot->weaponnum, aibot->gunfunc);
if (clipsize > 0) {
s32 a = clipsize - aibot->unk024[index];
s32 b = func0f199d70(aibot, aibot->weaponnum, aibot->gunfunc, a);
if (b > 0) {
aibot->unk024[index] += b;
if (arg2) {
if (aibot->weaponnum == WEAPON_FARSIGHTXR20) {
func0f0939f8(NULL, chr->prop, 0x433, -1,
-1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
} else {
func0f0939f8(NULL, chr->prop, 0x804f, -1,
-1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
}
}
}
}
}
}
s32 func0f199be4(struct aibot *aibot, s32 weaponnum, s32 funcnum, bool include_equipped)
{
s32 qty = 0;
s32 ammotype;
s32 equippedammotype;
if (aibot) {
if (aibot->unk064 & 1) {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
qty = ammotypeGetMaxCapacity(ammotype);
} else {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
qty = aibot->ammoheld[ammotype];
}
if (include_equipped) {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
equippedammotype = weaponGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc);
if (equippedammotype == ammotype) {
qty += aibot->unk024[1] + aibot->unk024[0];
}
}
}
return qty;
}
s32 aibotGetAmmoQty(struct aibot *aibot, s32 ammotype, bool include_equipped)
{
s32 qty = 0;
if (aibot) {
if (aibot->unk064 & 1) {
qty = ammotypeGetMaxCapacity(ammotype);
} else {
qty = aibot->ammoheld[ammotype];
}
if (include_equipped
&& weaponGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc) == ammotype) {
qty += aibot->unk024[1] + aibot->unk024[0];
}
}
return qty;
}
s32 func0f199d70(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty)
{
s32 result;
s32 *ammoheld = &aibot->ammoheld[weaponGetAmmoTypeByFunction(weaponnum, funcnum)];
if (!aibot || *ammoheld <= 0 || qty <= 0) {
return 0;
}
if (aibot->unk064 & 1) {
return qty;
}
dprint();
*ammoheld -= qty;
if (*ammoheld < 0) {
result = qty + *ammoheld;
*ammoheld = 0;
if (dprint()) {
return result;
}
} else {
result = qty;
dprint();
}
return result;
}
GLOBAL_ASM(
glabel aibotGiveAmmoByWeapon
/* f199e3c: 27bdffe0 */ addiu $sp,$sp,-32
/* f199e40: afa40020 */ sw $a0,0x20($sp)
/* f199e44: afbf0014 */ sw $ra,0x14($sp)
/* f199e48: afa50024 */ sw $a1,0x24($sp)
/* f199e4c: 00a02025 */ or $a0,$a1,$zero
/* f199e50: afa60028 */ sw $a2,0x28($sp)
/* f199e54: afa7002c */ sw $a3,0x2c($sp)
/* f199e58: 0fc6666c */ jal weaponGetAmmoTypeByFunction
/* f199e5c: 00c02825 */ or $a1,$a2,$zero
/* f199e60: 8fa40020 */ lw $a0,0x20($sp)
/* f199e64: 00027080 */ sll $t6,$v0,0x2
/* f199e68: 8c8f001c */ lw $t7,0x1c($a0)
/* f199e6c: 1080001d */ beqz $a0,.L0f199ee4
/* f199e70: 01cf1821 */ addu $v1,$t6,$t7
/* f199e74: 94980064 */ lhu $t8,0x64($a0)
/* f199e78: 8fa8002c */ lw $t0,0x2c($sp)
/* f199e7c: 33190001 */ andi $t9,$t8,0x1
/* f199e80: 57200019 */ bnezl $t9,.L0f199ee8
/* f199e84: 8fbf0014 */ lw $ra,0x14($sp)
/* f199e88: 59000017 */ blezl $t0,.L0f199ee8
/* f199e8c: 8fbf0014 */ lw $ra,0x14($sp)
/* f199e90: 0fc47bba */ jal dprint
/* f199e94: afa30018 */ sw $v1,0x18($sp)
/* f199e98: 8fa30018 */ lw $v1,0x18($sp)
/* f199e9c: 8faa002c */ lw $t2,0x2c($sp)
/* f199ea0: 8c690000 */ lw $t1,0x0($v1)
/* f199ea4: 012a5821 */ addu $t3,$t1,$t2
/* f199ea8: ac6b0000 */ sw $t3,0x0($v1)
/* f199eac: 8fa50028 */ lw $a1,0x28($sp)
/* f199eb0: 8fa40024 */ lw $a0,0x24($sp)
/* f199eb4: 0fc6666c */ jal weaponGetAmmoTypeByFunction
/* f199eb8: afa30018 */ sw $v1,0x18($sp)
/* f199ebc: 0fc2a63d */ jal ammotypeGetMaxCapacity
/* f199ec0: 00402025 */ or $a0,$v0,$zero
/* f199ec4: 8fa30018 */ lw $v1,0x18($sp)
/* f199ec8: 8c6c0000 */ lw $t4,0x0($v1)
/* f199ecc: 004c082a */ slt $at,$v0,$t4
/* f199ed0: 10200002 */ beqz $at,.L0f199edc
/* f199ed4: 00000000 */ sll $zero,$zero,0x0
/* f199ed8: ac620000 */ sw $v0,0x0($v1)
.L0f199edc:
/* f199edc: 0fc47bba */ jal dprint
/* f199ee0: 00000000 */ sll $zero,$zero,0x0
.L0f199ee4:
/* f199ee4: 8fbf0014 */ lw $ra,0x14($sp)
.L0f199ee8:
/* f199ee8: 27bd0020 */ addiu $sp,$sp,0x20
/* f199eec: 03e00008 */ jr $ra
/* f199ef0: 00000000 */ sll $zero,$zero,0x0
);
// Mismatches because the target saves the heldquantity pointer to the stack
// before calling to ammotypeGetMaxCapacity, despite it already being saved.
//void aibotGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty)
//{
// s32 max;
// s32 *heldquantity = &aibot->ammotypes->quantities[weaponGetAmmoTypeByFunction(weaponnum, funcnum)];
//
// if (aibot && (aibot->unk064 & 1) == 0 && qty > 0) {
// dprint();
// *heldquantity += qty;
// max = ammotypeGetMaxCapacity(weaponGetAmmoTypeByFunction(weaponnum, funcnum));
//
// if (*heldquantity > max) {
// *heldquantity = max;
// }
//
// dprint();
// }
//}
GLOBAL_ASM(
glabel aibotGiveAmmoByType
/* f199ef4: 27bdffe0 */ addiu $sp,$sp,-32
/* f199ef8: afbf0014 */ sw $ra,0x14($sp)
/* f199efc: 8c8e001c */ lw $t6,0x1c($a0)
/* f199f00: 00057880 */ sll $t7,$a1,0x2
/* f199f04: 1080001b */ beqz $a0,.L0f199f74
/* f199f08: 01cf1821 */ addu $v1,$t6,$t7
/* f199f0c: 94980064 */ lhu $t8,0x64($a0)
/* f199f10: 33190001 */ andi $t9,$t8,0x1
/* f199f14: 57200018 */ bnezl $t9,.L0f199f78
/* f199f18: 8fbf0014 */ lw $ra,0x14($sp)
/* f199f1c: 58c00016 */ blezl $a2,.L0f199f78
/* f199f20: 8fbf0014 */ lw $ra,0x14($sp)
/* f199f24: afa30018 */ sw $v1,0x18($sp)
/* f199f28: afa50024 */ sw $a1,0x24($sp)
/* f199f2c: 0fc47bba */ jal dprint
/* f199f30: afa60028 */ sw $a2,0x28($sp)
/* f199f34: 8fa30018 */ lw $v1,0x18($sp)
/* f199f38: 8fa60028 */ lw $a2,0x28($sp)
/* f199f3c: 8fa40024 */ lw $a0,0x24($sp)
/* f199f40: 8c680000 */ lw $t0,0x0($v1)
/* f199f44: 01064821 */ addu $t1,$t0,$a2
/* f199f48: ac690000 */ sw $t1,0x0($v1)
/* f199f4c: 0fc2a63d */ jal ammotypeGetMaxCapacity
/* f199f50: afa30018 */ sw $v1,0x18($sp)
/* f199f54: 8fa30018 */ lw $v1,0x18($sp)
/* f199f58: 8c6a0000 */ lw $t2,0x0($v1)
/* f199f5c: 004a082a */ slt $at,$v0,$t2
/* f199f60: 10200002 */ beqz $at,.L0f199f6c
/* f199f64: 00000000 */ sll $zero,$zero,0x0
/* f199f68: ac620000 */ sw $v0,0x0($v1)
.L0f199f6c:
/* f199f6c: 0fc47bba */ jal dprint
/* f199f70: 00000000 */ sll $zero,$zero,0x0
.L0f199f74:
/* f199f74: 8fbf0014 */ lw $ra,0x14($sp)
.L0f199f78:
/* f199f78: 27bd0020 */ addiu $sp,$sp,0x20
/* f199f7c: 03e00008 */ jr $ra
/* f199f80: 00000000 */ sll $zero,$zero,0x0
);
// Mismatches because the target saves the heldquantity pointer to the stack
// before calling to ammotypeGetMaxCapacity, despite it already being saved.
//void aibotGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity)
//{
// s32 max;
// s32 *heldquantity = &aibot->ammotypes->quantities[ammotype];
//
// if (!aibot || (aibot->unk064 & 1) || quantity <= 0) {
// return;
// }
//
// dprint();
//
// *heldquantity += quantity;
// max = ammotypeGetMaxCapacity(ammotype);
//
// if (*heldquantity > max) {
// *heldquantity = max;
// }
//
// dprint();
//}
GLOBAL_ASM(
glabel func0f199f84
.late_rodata
glabel var7f1b90a0
.word 0x3d4ccccd
.text
/* f199f84: 27bdff38 */ addiu $sp,$sp,-200
/* f199f88: afb7006c */ sw $s7,0x6c($sp)
/* f199f8c: afb3005c */ sw $s3,0x5c($sp)
/* f199f90: 00c09825 */ or $s3,$a2,$zero
/* f199f94: 0080b825 */ or $s7,$a0,$zero
/* f199f98: afbf0074 */ sw $ra,0x74($sp)
/* f199f9c: afbe0070 */ sw $s8,0x70($sp)
/* f199fa0: afb60068 */ sw $s6,0x68($sp)
/* f199fa4: afb50064 */ sw $s5,0x64($sp)
/* f199fa8: afb40060 */ sw $s4,0x60($sp)
/* f199fac: afb20058 */ sw $s2,0x58($sp)
/* f199fb0: afb10054 */ sw $s1,0x54($sp)
/* f199fb4: afb00050 */ sw $s0,0x50($sp)
/* f199fb8: f7b80048 */ sdc1 $f24,0x48($sp)
/* f199fbc: f7b60040 */ sdc1 $f22,0x40($sp)
/* f199fc0: f7b40038 */ sdc1 $f20,0x38($sp)
/* f199fc4: afa500cc */ sw $a1,0xcc($sp)
/* f199fc8: 10800004 */ beqz $a0,.L0f199fdc
/* f199fcc: afa700d4 */ sw $a3,0xd4($sp)
/* f199fd0: 8c8302d4 */ lw $v1,0x2d4($a0)
/* f199fd4: 54600004 */ bnezl $v1,.L0f199fe8
/* f199fd8: 8c6e0020 */ lw $t6,0x20($v1)
.L0f199fdc:
/* f199fdc: 10000098 */ beqz $zero,.L0f19a240
/* f199fe0: 00001025 */ or $v0,$zero,$zero
/* f199fe4: 8c6e0020 */ lw $t6,0x20($v1)
.L0f199fe8:
/* f199fe8: 24010016 */ addiu $at,$zero,0x16
/* f199fec: 24020001 */ addiu $v0,$zero,0x1
/* f199ff0: 15c10093 */ bne $t6,$at,.L0f19a240
/* f199ff4: 00000000 */ sll $zero,$zero,0x0
/* f199ff8: 0c004b70 */ jal random
/* f199ffc: 00000000 */ sll $zero,$zero,0x0
/* f19a000: 24010064 */ addiu $at,$zero,0x64
/* f19a004: 0041001b */ divu $zero,$v0,$at
/* f19a008: 00001810 */ mfhi $v1
/* f19a00c: 2861001e */ slti $at,$v1,0x1e
/* f19a010: 10200089 */ beqz $at,.L0f19a238
/* f19a014: afa300b4 */ sw $v1,0xb4($sp)
/* f19a018: 240fffff */ addiu $t7,$zero,-1
/* f19a01c: 241800c8 */ addiu $t8,$zero,0xc8
/* f19a020: 3c198009 */ lui $t9,%hi(var80088490)
/* f19a024: afa000ac */ sw $zero,0xac($sp)
/* f19a028: afa000a8 */ sw $zero,0xa8($sp)
/* f19a02c: afaf00a4 */ sw $t7,0xa4($sp)
/* f19a030: afb800a0 */ sw $t8,0xa0($sp)
/* f19a034: 27398490 */ addiu $t9,$t9,%lo(var80088490)
/* f19a038: 8f210000 */ lw $at,0x0($t9)
/* f19a03c: 27be009c */ addiu $s8,$sp,0x9c
/* f19a040: 03c02025 */ or $a0,$s8,$zero
/* f19a044: 0fc2c74a */ jal func0f0b1d28
/* f19a048: afc10000 */ sw $at,0x0($s8)
/* f19a04c: 3c0b800b */ lui $t3,%hi(g_MpNumPlayers)
/* f19a050: 8d6bc530 */ lw $t3,%lo(g_MpNumPlayers)($t3)
/* f19a054: 46000606 */ mov.s $f24,$f0
/* f19a058: 2414001e */ addiu $s4,$zero,0x1e
/* f19a05c: 19600074 */ blez $t3,.L0f19a230
/* f19a060: 0000a825 */ or $s5,$zero,$zero
/* f19a064: 3c16800b */ lui $s6,%hi(g_MpPlayerChrs)
/* f19a068: 3c017f1c */ lui $at,%hi(var7f1b90a0)
/* f19a06c: 4480a000 */ mtc1 $zero,$f20
/* f19a070: c43690a0 */ lwc1 $f22,%lo(var7f1b90a0)($at)
/* f19a074: 26d6c4d0 */ addiu $s6,$s6,%lo(g_MpPlayerChrs)
/* f19a078: 8ed00000 */ lw $s0,0x0($s6)
.L0f19a07c:
/* f19a07c: 24010006 */ addiu $at,$zero,0x6
/* f19a080: 8e12001c */ lw $s2,0x1c($s0)
/* f19a084: 924c0000 */ lbu $t4,0x0($s2)
/* f19a088: 5581001b */ bnel $t4,$at,.L0f19a0f8
/* f19a08c: 82180007 */ lb $t8,0x7($s0)
/* f19a090: 0fc4a25f */ jal propGetPlayerNum
/* f19a094: 02402025 */ or $a0,$s2,$zero
/* f19a098: 00026880 */ sll $t5,$v0,0x2
/* f19a09c: 3c03800a */ lui $v1,%hi(g_Vars+0x64)
/* f19a0a0: 006d1821 */ addu $v1,$v1,$t5
/* f19a0a4: 8c63a024 */ lw $v1,%lo(g_Vars+0x64)($v1)
/* f19a0a8: 240e001e */ addiu $t6,$zero,0x1e
/* f19a0ac: c4600170 */ lwc1 $f0,0x170($v1)
/* f19a0b0: c4620168 */ lwc1 $f2,0x168($v1)
/* f19a0b4: 46000102 */ mul.s $f4,$f0,$f0
/* f19a0b8: 00000000 */ sll $zero,$zero,0x0
/* f19a0bc: 46021182 */ mul.s $f6,$f2,$f2
/* f19a0c0: 46062300 */ add.s $f12,$f4,$f6
/* f19a0c4: 460ca03c */ c.lt.s $f20,$f12
/* f19a0c8: 00000000 */ sll $zero,$zero,0x0
/* f19a0cc: 45000015 */ bc1f .L0f19a124
/* f19a0d0: 00000000 */ sll $zero,$zero,0x0
/* f19a0d4: 448e4000 */ mtc1 $t6,$f8
/* f19a0d8: 00000000 */ sll $zero,$zero,0x0
/* f19a0dc: 468042a0 */ cvt.s.w $f10,$f8
/* f19a0e0: 46165402 */ mul.s $f16,$f10,$f22
/* f19a0e4: 4600848d */ trunc.w.s $f18,$f16
/* f19a0e8: 44149000 */ mfc1 $s4,$f18
/* f19a0ec: 1000000d */ beqz $zero,.L0f19a124
/* f19a0f0: 00000000 */ sll $zero,$zero,0x0
/* f19a0f4: 82180007 */ lb $t8,0x7($s0)
.L0f19a0f8:
/* f19a0f8: 24010001 */ addiu $at,$zero,0x1
/* f19a0fc: 2409001e */ addiu $t1,$zero,0x1e
/* f19a100: 13010008 */ beq $t8,$at,.L0f19a124
/* f19a104: 00000000 */ sll $zero,$zero,0x0
/* f19a108: 44892000 */ mtc1 $t1,$f4
/* f19a10c: 00000000 */ sll $zero,$zero,0x0
/* f19a110: 468021a0 */ cvt.s.w $f6,$f4
/* f19a114: 46163202 */ mul.s $f8,$f6,$f22
/* f19a118: 4600428d */ trunc.w.s $f10,$f8
/* f19a11c: 44145000 */ mfc1 $s4,$f10
/* f19a120: 00000000 */ sll $zero,$zero,0x0
.L0f19a124:
/* f19a124: 1217003b */ beq $s0,$s7,.L0f19a214
/* f19a128: 8fb900b4 */ lw $t9,0xb4($sp)
/* f19a12c: 0334082a */ slt $at,$t9,$s4
/* f19a130: 10200038 */ beqz $at,.L0f19a214
/* f19a134: 00000000 */ sll $zero,$zero,0x0
/* f19a138: 0fc09e29 */ jal func0f0278a4
/* f19a13c: 02002025 */ or $a0,$s0,$zero
/* f19a140: 26510008 */ addiu $s1,$s2,0x8
/* f19a144: 44070000 */ mfc1 $a3,$f0
/* f19a148: 02203025 */ or $a2,$s1,$zero
/* f19a14c: 8fa400d4 */ lw $a0,0xd4($sp)
/* f19a150: 0fc1ace7 */ jal func0f06b39c
/* f19a154: 02602825 */ or $a1,$s3,$zero
/* f19a158: 1040002e */ beqz $v0,.L0f19a214
/* f19a15c: 03c02025 */ or $a0,$s8,$zero
/* f19a160: 02402825 */ or $a1,$s2,$zero
/* f19a164: 0fc29f66 */ jal func0f0a7d98
/* f19a168: 2406ffff */ addiu $a2,$zero,-1
/* f19a16c: 8e0a0020 */ lw $t2,0x20($s0)
/* f19a170: 51400011 */ beqzl $t2,.L0f19a1b8
/* f19a174: 02002025 */ or $a0,$s0,$zero
/* f19a178: 0fc0cfe8 */ jal chrGetShield
/* f19a17c: 02002025 */ or $a0,$s0,$zero
/* f19a180: 4600a03c */ c.lt.s $f20,$f0
/* f19a184: 02002025 */ or $a0,$s0,$zero
/* f19a188: 02202825 */ or $a1,$s1,$zero
/* f19a18c: 02603025 */ or $a2,$s3,$zero
/* f19a190: 45000008 */ bc1f .L0f19a1b4
/* f19a194: 27a700ac */ addiu $a3,$sp,0xac
/* f19a198: 27ab00a0 */ addiu $t3,$sp,0xa0
/* f19a19c: 27ac00a8 */ addiu $t4,$sp,0xa8
/* f19a1a0: 27ad00a4 */ addiu $t5,$sp,0xa4
/* f19a1a4: afad0018 */ sw $t5,0x18($sp)
/* f19a1a8: afac0014 */ sw $t4,0x14($sp)
/* f19a1ac: 0fc0ffcb */ jal func0f03ff2c
/* f19a1b0: afab0010 */ sw $t3,0x10($sp)
.L0f19a1b4:
/* f19a1b4: 02002025 */ or $a0,$s0,$zero
.L0f19a1b8:
/* f19a1b8: 02402825 */ or $a1,$s2,$zero
/* f19a1bc: 8fa600a0 */ lw $a2,0xa0($sp)
/* f19a1c0: 02203825 */ or $a3,$s1,$zero
/* f19a1c4: afb30010 */ sw $s3,0x10($sp)
/* f19a1c8: 0fc097a9 */ jal func0f025ea4
/* f19a1cc: afb70014 */ sw $s7,0x14($sp)
/* f19a1d0: 8eee001c */ lw $t6,0x1c($s7)
/* f19a1d4: 8fb800ac */ lw $t8,0xac($sp)
/* f19a1d8: 8fa900a8 */ lw $t1,0xa8($sp)
/* f19a1dc: 8fa800a4 */ lw $t0,0xa4($sp)
/* f19a1e0: 4405c000 */ mfc1 $a1,$f24
/* f19a1e4: 240f00c8 */ addiu $t7,$zero,0xc8
/* f19a1e8: afaf0014 */ sw $t7,0x14($sp)
/* f19a1ec: afa00028 */ sw $zero,0x28($sp)
/* f19a1f0: afb20018 */ sw $s2,0x18($sp)
/* f19a1f4: 02002025 */ or $a0,$s0,$zero
/* f19a1f8: 02603025 */ or $a2,$s3,$zero
/* f19a1fc: 03c03825 */ or $a3,$s8,$zero
/* f19a200: afae0010 */ sw $t6,0x10($sp)
/* f19a204: afb8001c */ sw $t8,0x1c($sp)
/* f19a208: afa90020 */ sw $t1,0x20($sp)
/* f19a20c: 0fc0d077 */ jal func0f0341dc
/* f19a210: afa80024 */ sw $t0,0x24($sp)
.L0f19a214:
/* f19a214: 3c19800b */ lui $t9,%hi(g_MpNumPlayers)
/* f19a218: 8f39c530 */ lw $t9,%lo(g_MpNumPlayers)($t9)
/* f19a21c: 26b50001 */ addiu $s5,$s5,0x1
/* f19a220: 26d60004 */ addiu $s6,$s6,0x4
/* f19a224: 02b9082a */ slt $at,$s5,$t9
/* f19a228: 5420ff94 */ bnezl $at,.L0f19a07c
/* f19a22c: 8ed00000 */ lw $s0,0x0($s6)
.L0f19a230:
/* f19a230: 10000003 */ beqz $zero,.L0f19a240
/* f19a234: 24020001 */ addiu $v0,$zero,0x1
.L0f19a238:
/* f19a238: 10000001 */ beqz $zero,.L0f19a240
/* f19a23c: 00001025 */ or $v0,$zero,$zero
.L0f19a240:
/* f19a240: 8fbf0074 */ lw $ra,0x74($sp)
/* f19a244: d7b40038 */ ldc1 $f20,0x38($sp)
/* f19a248: d7b60040 */ ldc1 $f22,0x40($sp)
/* f19a24c: d7b80048 */ ldc1 $f24,0x48($sp)
/* f19a250: 8fb00050 */ lw $s0,0x50($sp)
/* f19a254: 8fb10054 */ lw $s1,0x54($sp)
/* f19a258: 8fb20058 */ lw $s2,0x58($sp)
/* f19a25c: 8fb3005c */ lw $s3,0x5c($sp)
/* f19a260: 8fb40060 */ lw $s4,0x60($sp)
/* f19a264: 8fb50064 */ lw $s5,0x64($sp)
/* f19a268: 8fb60068 */ lw $s6,0x68($sp)
/* f19a26c: 8fb7006c */ lw $s7,0x6c($sp)
/* f19a270: 8fbe0070 */ lw $s8,0x70($sp)
/* f19a274: 03e00008 */ jr $ra
/* f19a278: 27bd00c8 */ addiu $sp,$sp,0xc8
/* f19a27c: 27bdffe8 */ addiu $sp,$sp,-24
/* f19a280: afbf0014 */ sw $ra,0x14($sp)
/* f19a284: 0fc4a2bd */ jal weaponGetModel
/* f19a288: 00000000 */ sll $zero,$zero,0x0
/* f19a28c: 8fbf0014 */ lw $ra,0x14($sp)
/* f19a290: 27bd0018 */ addiu $sp,$sp,0x18
/* f19a294: 03e00008 */ jr $ra
/* f19a298: 00000000 */ sll $zero,$zero,0x0
);
bool func0f19a29c(u32 weaponnum, bool is_secondary)
{
switch (weaponnum) {
case WEAPON_LAPTOPGUN:
case WEAPON_DRAGON:
case WEAPON_COMBATKNIFE:
return is_secondary;
case WEAPON_GRENADE:
case WEAPON_NBOMB:
case WEAPON_TIMEDMINE:
case WEAPON_PROXIMITYMINE:
case WEAPON_REMOTEMINE:
return true;
}
return false;
}
u32 func0f19a2dc(u32 value)
{
switch (value) {
case 26:
return 120;
case 30:
case 31:
return 90;
case 27:
case 28:
case 29:
case 32:
case 33:
case 34:
default:
return 60;
}
}
u32 ammotypeGetWeapon(u32 ammotype)
{
switch (ammotype) {
case AMMOTYPE_NBOMB: return WEAPON_NBOMB;
case AMMOTYPE_GRENADE: return WEAPON_GRENADE;
case AMMOTYPE_KNIFE: return WEAPON_COMBATKNIFE;
case AMMOTYPE_REMOTE_MINE: return WEAPON_REMOTEMINE;
case AMMOTYPE_PROXY_MINE: return WEAPON_PROXIMITYMINE;
case AMMOTYPE_TIMED_MINE: return WEAPON_TIMEDMINE;
}
return 0;
}
u32 var800884a0 = 0x00000000;
GLOBAL_ASM(
glabel func0f19a37c
.late_rodata
glabel var7f1b914c
.word 0x41855555
glabel var7f1b9150
.word 0x3eb2b17a
glabel var7f1b9154
.word 0x3eb2b17a
glabel var7f1b9158
.word 0x3eb2b17a
glabel var7f1b915c
.word 0x41855555
glabel var7f1b9160
.word 0x4096c5bf
glabel var7f1b9164
.word 0x404907a9
glabel var7f1b9168
.word 0x3eb2b17a
.text
/* f19a37c: 27bdff10 */ addiu $sp,$sp,-240
/* f19a380: 3c0f8009 */ lui $t7,%hi(var80088494)
/* f19a384: afbf0024 */ sw $ra,0x24($sp)
/* f19a388: afb00020 */ sw $s0,0x20($sp)
/* f19a38c: 25ef8494 */ addiu $t7,$t7,%lo(var80088494)
/* f19a390: 8de10000 */ lw $at,0x0($t7)
/* f19a394: 27ae00e4 */ addiu $t6,$sp,0xe4
/* f19a398: 8de80004 */ lw $t0,0x4($t7)
/* f19a39c: adc10000 */ sw $at,0x0($t6)
/* f19a3a0: 8de10008 */ lw $at,0x8($t7)
/* f19a3a4: adc80004 */ sw $t0,0x4($t6)
/* f19a3a8: 00808025 */ or $s0,$a0,$zero
/* f19a3ac: adc10008 */ sw $at,0x8($t6)
/* f19a3b0: 8c89001c */ lw $t1,0x1c($a0)
/* f19a3b4: 0fc0f97c */ jal func0f03e5f0
/* f19a3b8: afa90094 */ sw $t1,0x94($sp)
/* f19a3bc: 3c0a8009 */ lui $t2,%hi(var800884a0)
/* f19a3c0: 8d4a84a0 */ lw $t2,%lo(var800884a0)($t2)
/* f19a3c4: e7a00050 */ swc1 $f0,0x50($sp)
/* f19a3c8: 02002025 */ or $a0,$s0,$zero
/* f19a3cc: 0fc0a221 */ jal chrGetTargetProp
/* f19a3d0: afaa0048 */ sw $t2,0x48($sp)
/* f19a3d4: 8e0b02d4 */ lw $t3,0x2d4($s0)
/* f19a3d8: 02002025 */ or $a0,$s0,$zero
/* f19a3dc: 2405001e */ addiu $a1,$zero,0x1e
/* f19a3e0: 8d6c0020 */ lw $t4,0x20($t3)
/* f19a3e4: 00003025 */ or $a2,$zero,$zero
/* f19a3e8: a3ac0048 */ sb $t4,0x48($sp)
/* f19a3ec: 8e0d02d4 */ lw $t5,0x2d4($s0)
/* f19a3f0: 8db9004c */ lw $t9,0x4c($t5)
/* f19a3f4: afa20044 */ sw $v0,0x44($sp)
/* f19a3f8: 0019c080 */ sll $t8,$t9,0x2
/* f19a3fc: 001877c2 */ srl $t6,$t8,0x1f
/* f19a400: 0fc1241a */ jal func0f049068
/* f19a404: a3ae004b */ sb $t6,0x4b($sp)
/* f19a408: 10400026 */ beqz $v0,.L0f19a4a4
/* f19a40c: 8fa30044 */ lw $v1,0x44($sp)
/* f19a410: c4640008 */ lwc1 $f4,0x8($v1)
/* f19a414: 2401001e */ addiu $at,$zero,0x1e
/* f19a418: 3c054185 */ lui $a1,0x4185
/* f19a41c: e7a40038 */ swc1 $f4,0x38($sp)
/* f19a420: c4660010 */ lwc1 $f6,0x10($v1)
/* f19a424: 34a55555 */ ori $a1,$a1,0x5555
/* f19a428: e7a60040 */ swc1 $f6,0x40($sp)
/* f19a42c: 8e0f02d4 */ lw $t7,0x2d4($s0)
/* f19a430: 8de20020 */ lw $v0,0x20($t7)
/* f19a434: 10410003 */ beq $v0,$at,.L0f19a444
/* f19a438: 2401001f */ addiu $at,$zero,0x1f
/* f19a43c: 54410006 */ bnel $v0,$at,.L0f19a458
/* f19a440: c46a000c */ lwc1 $f10,0xc($v1)
.L0f19a444:
/* f19a444: 8c680004 */ lw $t0,0x4($v1)
/* f19a448: c50800b4 */ lwc1 $f8,0xb4($t0)
/* f19a44c: 1000000c */ beqz $zero,.L0f19a480
/* f19a450: e7a8003c */ swc1 $f8,0x3c($sp)
/* f19a454: c46a000c */ lwc1 $f10,0xc($v1)
.L0f19a458:
/* f19a458: 24010006 */ addiu $at,$zero,0x6
/* f19a45c: e7aa003c */ swc1 $f10,0x3c($sp)
/* f19a460: 90690000 */ lbu $t1,0x0($v1)
/* f19a464: c7b0003c */ lwc1 $f16,0x3c($sp)
/* f19a468: 15210005 */ bne $t1,$at,.L0f19a480
/* f19a46c: 3c0141c8 */ lui $at,0x41c8
/* f19a470: 44819000 */ mtc1 $at,$f18
/* f19a474: 00000000 */ sll $zero,$zero,0x0
/* f19a478: 46128101 */ sub.s $f4,$f16,$f18
/* f19a47c: e7a4003c */ swc1 $f4,0x3c($sp)
.L0f19a480:
/* f19a480: 8fa40094 */ lw $a0,0x94($sp)
/* f19a484: 27a60038 */ addiu $a2,$sp,0x38
/* f19a488: 27a70098 */ addiu $a3,$sp,0x98
/* f19a48c: 24840008 */ addiu $a0,$a0,0x8
/* f19a490: 0fc100c7 */ jal func0f04031c
/* f19a494: afa4002c */ sw $a0,0x2c($sp)
/* f19a498: 3c017f1c */ lui $at,%hi(var7f1b914c)
/* f19a49c: 1000001c */ beqz $zero,.L0f19a510
/* f19a4a0: c420914c */ lwc1 $f0,%lo(var7f1b914c)($at)
.L0f19a4a4:
/* f19a4a4: 3c017f1c */ lui $at,%hi(var7f1b9150)
/* f19a4a8: 0c0068f4 */ jal cosf
/* f19a4ac: c42c9150 */ lwc1 $f12,%lo(var7f1b9150)($at)
/* f19a4b0: e7a00030 */ swc1 $f0,0x30($sp)
/* f19a4b4: 0c0068f7 */ jal sinf
/* f19a4b8: c7ac0050 */ lwc1 $f12,0x50($sp)
/* f19a4bc: c7a60030 */ lwc1 $f6,0x30($sp)
/* f19a4c0: 3c017f1c */ lui $at,%hi(var7f1b9154)
/* f19a4c4: c42c9154 */ lwc1 $f12,%lo(var7f1b9154)($at)
/* f19a4c8: 46060202 */ mul.s $f8,$f0,$f6
/* f19a4cc: 0c0068f7 */ jal sinf
/* f19a4d0: e7a80098 */ swc1 $f8,0x98($sp)
/* f19a4d4: 3c017f1c */ lui $at,%hi(var7f1b9158)
/* f19a4d8: e7a0009c */ swc1 $f0,0x9c($sp)
/* f19a4dc: 0c0068f4 */ jal cosf
/* f19a4e0: c42c9158 */ lwc1 $f12,%lo(var7f1b9158)($at)
/* f19a4e4: e7a00030 */ swc1 $f0,0x30($sp)
/* f19a4e8: 0c0068f4 */ jal cosf
/* f19a4ec: c7ac0050 */ lwc1 $f12,0x50($sp)
/* f19a4f0: c7aa0030 */ lwc1 $f10,0x30($sp)
/* f19a4f4: 8faa0094 */ lw $t2,0x94($sp)
/* f19a4f8: 3c017f1c */ lui $at,%hi(var7f1b915c)
/* f19a4fc: 460a0402 */ mul.s $f16,$f0,$f10
/* f19a500: 254b0008 */ addiu $t3,$t2,0x8
/* f19a504: afab002c */ sw $t3,0x2c($sp)
/* f19a508: c420915c */ lwc1 $f0,%lo(var7f1b915c)($at)
/* f19a50c: e7b000a0 */ swc1 $f16,0xa0($sp)
.L0f19a510:
/* f19a510: c7b20098 */ lwc1 $f18,0x98($sp)
/* f19a514: c7a6009c */ lwc1 $f6,0x9c($sp)
/* f19a518: c7aa00a0 */ lwc1 $f10,0xa0($sp)
/* f19a51c: 46009102 */ mul.s $f4,$f18,$f0
/* f19a520: 27a400a4 */ addiu $a0,$sp,0xa4
/* f19a524: 46003202 */ mul.s $f8,$f6,$f0
/* f19a528: 00000000 */ sll $zero,$zero,0x0
/* f19a52c: 46005402 */ mul.s $f16,$f10,$f0
/* f19a530: e7a400e4 */ swc1 $f4,0xe4($sp)
/* f19a534: e7a800e8 */ swc1 $f8,0xe8($sp)
/* f19a538: 0c00566c */ jal func000159b0
/* f19a53c: e7b000ec */ swc1 $f16,0xec($sp)
/* f19a540: 8e0c02d4 */ lw $t4,0x2d4($s0)
/* f19a544: 2401001a */ addiu $at,$zero,0x1a
/* f19a548: 27a500a4 */ addiu $a1,$sp,0xa4
/* f19a54c: 8d8d0020 */ lw $t5,0x20($t4)
/* f19a550: 15a1000a */ bne $t5,$at,.L0f19a57c
/* f19a554: 3c017f1c */ lui $at,%hi(var7f1b9160)
/* f19a558: 0c005900 */ jal func00016400
/* f19a55c: c42c9160 */ lwc1 $f12,%lo(var7f1b9160)($at)
/* f19a560: 3c017f1c */ lui $at,%hi(var7f1b9164)
/* f19a564: c42c9164 */ lwc1 $f12,%lo(var7f1b9164)($at)
/* f19a568: 0c0058ba */ jal func000162e8
/* f19a56c: 27a50054 */ addiu $a1,$sp,0x54
/* f19a570: 27a40054 */ addiu $a0,$sp,0x54
/* f19a574: 0c00567f */ jal func000159fc
/* f19a578: 27a500a4 */ addiu $a1,$sp,0xa4
.L0f19a57c:
/* f19a57c: 3c017f1c */ lui $at,%hi(var7f1b9168)
/* f19a580: c42c9168 */ lwc1 $f12,%lo(var7f1b9168)($at)
/* f19a584: 0c0058ba */ jal func000162e8
/* f19a588: 27a50054 */ addiu $a1,$sp,0x54
/* f19a58c: 27a40054 */ addiu $a0,$sp,0x54
/* f19a590: 0c0056f8 */ jal func00015be0
/* f19a594: 27a500a4 */ addiu $a1,$sp,0xa4
/* f19a598: c7ac0050 */ lwc1 $f12,0x50($sp)
/* f19a59c: 0c0058dd */ jal func00016374
/* f19a5a0: 27a50054 */ addiu $a1,$sp,0x54
/* f19a5a4: 27a40054 */ addiu $a0,$sp,0x54
/* f19a5a8: 0c0056f8 */ jal func00015be0
/* f19a5ac: 27a500a4 */ addiu $a1,$sp,0xa4
/* f19a5b0: 8fa70094 */ lw $a3,0x94($sp)
/* f19a5b4: 27b900a4 */ addiu $t9,$sp,0xa4
/* f19a5b8: 27b800e4 */ addiu $t8,$sp,0xe4
/* f19a5bc: afb80014 */ sw $t8,0x14($sp)
/* f19a5c0: afb90010 */ sw $t9,0x10($sp)
/* f19a5c4: 02002025 */ or $a0,$s0,$zero
/* f19a5c8: 27a50048 */ addiu $a1,$sp,0x48
/* f19a5cc: 8fa6002c */ lw $a2,0x2c($sp)
/* f19a5d0: 0fc27b86 */ jal func0f09ee18
/* f19a5d4: 24e70028 */ addiu $a3,$a3,0x28
/* f19a5d8: 93ae0048 */ lbu $t6,0x48($sp)
/* f19a5dc: 24010022 */ addiu $at,$zero,0x22
/* f19a5e0: 55c10006 */ bnel $t6,$at,.L0f19a5fc
/* f19a5e4: 8fbf0024 */ lw $ra,0x24($sp)
/* f19a5e8: 8e0202d4 */ lw $v0,0x2d4($s0)
/* f19a5ec: 944f0064 */ lhu $t7,0x64($v0)
/* f19a5f0: 35e81000 */ ori $t0,$t7,0x1000
/* f19a5f4: a4480064 */ sh $t0,0x64($v0)
/* f19a5f8: 8fbf0024 */ lw $ra,0x24($sp)
.L0f19a5fc:
/* f19a5fc: 8fb00020 */ lw $s0,0x20($sp)
/* f19a600: 27bd00f0 */ addiu $sp,$sp,0xf0
/* f19a604: 03e00008 */ jr $ra
/* f19a608: 00000000 */ sll $zero,$zero,0x0
);
s32 func0f19a60c(s32 weaponnum, s32 funcnum)
{
s32 stack[2];
s32 iVar4 = 1;
struct weapon *weapon = weaponFindById(weaponnum);
if (weapon) {
struct weaponfunc *func = weapon->functions[funcnum];
if (func) {
if (func->type == INVENTORYFUNCTYPE_SHOOT_SINGLE) {
struct weaponfunc_shootsingle *func2 = (struct weaponfunc_shootsingle *)func;
iVar4 = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_SHOOT_AUTOMATIC) {
struct weaponfunc_shootauto *func2 = (struct weaponfunc_shootauto *)func;
iVar4 = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_SHOOT_PROJECTILE) {
struct weaponfunc_shootprojectile *func2 = (struct weaponfunc_shootprojectile *)func;
iVar4 = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_CLOSE && weaponnum != WEAPON_REAPER) {
iVar4 = 60;
}
}
}
return iVar4;
}
GLOBAL_ASM(
glabel func0f19a6d0
/* f19a6d0: 27bdffb0 */ addiu $sp,$sp,-80
/* f19a6d4: afa40050 */ sw $a0,0x50($sp)
/* f19a6d8: afbf0014 */ sw $ra,0x14($sp)
/* f19a6dc: afa50054 */ sw $a1,0x54($sp)
/* f19a6e0: 00a02025 */ or $a0,$a1,$zero
/* f19a6e4: afa60058 */ sw $a2,0x58($sp)
/* f19a6e8: 0fc45095 */ jal waypointFindClosestToPos
/* f19a6ec: 00e02825 */ or $a1,$a3,$zero
/* f19a6f0: afa2004c */ sw $v0,0x4c($sp)
/* f19a6f4: 8fa40058 */ lw $a0,0x58($sp)
/* f19a6f8: 0fc45095 */ jal waypointFindClosestToPos
/* f19a6fc: 8fa50060 */ lw $a1,0x60($sp)
/* f19a700: 8fae004c */ lw $t6,0x4c($sp)
/* f19a704: afa20048 */ sw $v0,0x48($sp)
/* f19a708: 51c0002d */ beqzl $t6,.L0f19a7c0
/* f19a70c: 00001025 */ or $v0,$zero,$zero
/* f19a710: 1040002a */ beqz $v0,.L0f19a7bc
/* f19a714: 3c0f800a */ lui $t7,%hi(g_Vars+0x8)
/* f19a718: 8fa80050 */ lw $t0,0x50($sp)
/* f19a71c: 8def9fc8 */ lw $t7,%lo(g_Vars+0x8)($t7)
/* f19a720: 85090000 */ lh $t1,0x0($t0)
/* f19a724: 000fc243 */ sra $t8,$t7,0x9
/* f19a728: 0018c9c0 */ sll $t9,$t8,0x7
/* f19a72c: 000950c0 */ sll $t2,$t1,0x3
/* f19a730: 032a2021 */ addu $a0,$t9,$t2
/* f19a734: 0fc45090 */ jal waypointSetHashThing
/* f19a738: 00802825 */ or $a1,$a0,$zero
/* f19a73c: 8fa4004c */ lw $a0,0x4c($sp)
/* f19a740: 8fa50048 */ lw $a1,0x48($sp)
/* f19a744: 27a60030 */ addiu $a2,$sp,0x30
/* f19a748: 0fc4547b */ jal waypointFindRoute
/* f19a74c: 24070006 */ addiu $a3,$zero,0x6
/* f19a750: afa2002c */ sw $v0,0x2c($sp)
/* f19a754: 00002025 */ or $a0,$zero,$zero
/* f19a758: 0fc45090 */ jal waypointSetHashThing
/* f19a75c: 00002825 */ or $a1,$zero,$zero
/* f19a760: 8fab002c */ lw $t3,0x2c($sp)
/* f19a764: 8fac0030 */ lw $t4,0x30($sp)
/* f19a768: 29610002 */ slti $at,$t3,0x2
/* f19a76c: 54200014 */ bnezl $at,.L0f19a7c0
/* f19a770: 00001025 */ or $v0,$zero,$zero
/* f19a774: 1180000c */ beqz $t4,.L0f19a7a8
/* f19a778: 00002825 */ or $a1,$zero,$zero
/* f19a77c: 27a30030 */ addiu $v1,$sp,0x30
/* f19a780: 8c640000 */ lw $a0,0x0($v1)
/* f19a784: 8fa20064 */ lw $v0,0x64($sp)
/* f19a788: 8c8e0000 */ lw $t6,0x0($a0)
.L0f19a78c:
/* f19a78c: 24a50001 */ addiu $a1,$a1,0x1
/* f19a790: 24420002 */ addiu $v0,$v0,0x2
/* f19a794: a44e00f6 */ sh $t6,0xf6($v0)
/* f19a798: 8c640004 */ lw $a0,0x4($v1)
/* f19a79c: 24630004 */ addiu $v1,$v1,0x4
/* f19a7a0: 5480fffa */ bnezl $a0,.L0f19a78c
/* f19a7a4: 8c8e0000 */ lw $t6,0x0($a0)
.L0f19a7a8:
/* f19a7a8: 8fa60064 */ lw $a2,0x64($sp)
/* f19a7ac: 24020001 */ addiu $v0,$zero,0x1
/* f19a7b0: a0c00105 */ sb $zero,0x105($a2)
/* f19a7b4: 10000002 */ beqz $zero,.L0f19a7c0
/* f19a7b8: a0c50104 */ sb $a1,0x104($a2)
.L0f19a7bc:
/* f19a7bc: 00001025 */ or $v0,$zero,$zero
.L0f19a7c0:
/* f19a7c0: 8fbf0014 */ lw $ra,0x14($sp)
/* f19a7c4: 27bd0050 */ addiu $sp,$sp,0x50
/* f19a7c8: 03e00008 */ jr $ra
/* f19a7cc: 00000000 */ sll $zero,$zero,0x0
);
void func0f19a7d0(u16 padnum, struct coord *pos)
{
struct pad pad;
s16 rooms[2];
padUnpack(padnum, PADFIELD_ROOM | PADFIELD_POS, &pad);
rooms[0] = pad.room;
rooms[1] = -1;
pos->x = pad.pos.x;
pos->y = func0002a36c(&pad.pos, rooms, 0, 0) + 150;
pos->z = pad.pos.z;
}
void aibotCreateSlayerRocket(struct chrdata *chr)
{
struct weaponobj *rocket = func0f08b880(MODEL_CHRSKROCKETMIS, WEAPON_ROCKET2, chr);
if (rocket) {
f32 sp260[16];
f32 sp196[16];
f32 sp132[16];
struct coord sp120 = {0, 0, 0};
f32 a;
f32 b;
f32 sp100[3];
a = func0f03e5f0(chr);
b = func0f03e754(chr);
sp100[0] = cosf(b) * sinf(a);
sp100[1] = sinf(b);
sp100[2] = cosf(b) * cosf(a); // @bug? Should one of these be sinf?
func000162e8(b, sp196);
func00016374(a, sp132);
func00015be0(sp132, sp196);
func000159b0(sp260);
func0f09ebcc(&rocket->base, &chr->prop->pos, chr->prop->rooms, sp196, sp100, sp260, chr->prop, &chr->prop->pos);
if (rocket->base.hidden & OBJHFLAG_00000080) {
struct prop *target = chrGetTargetProp(chr);
rocket->unk62 = -1;
rocket->base.unk48->unk10 = 7.5;
rocket->base.unk48->unk14 = b;
rocket->base.unk48->unk18 = a;
rocket->base.unk48->unkf4 = 0;
rocket->base.unk48->unkb4 = 0x20000000;
func0f0939f8(NULL, rocket->base.prop, 0x8053, -1,
-1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
if (!func0f19a6d0(chr, &chr->prop->pos, &target->pos, chr->prop->rooms, target->rooms, rocket->base.unk48)) {
rocket->unk62 = 0;
} else {
func0f19a7d0(rocket->base.unk48->padnum, &rocket->base.unk48->pos);
chr->aibot->unk044 = rocket->base.prop;
}
}
}
}