diff --git a/src/game/core.c b/src/game/core.c index 021060026..9c832ae5c 100644 --- a/src/game/core.c +++ b/src/game/core.c @@ -276,7 +276,7 @@ void coreLoadStage(s32 stagenum) g_Vars.restartlevel = false; g_Vars.unk000478 = 0; - g_Vars.unk000488 = 0; + g_Vars.totalkills = 0; g_Vars.antiheadnum = -1; g_Vars.antibodynum = -1; g_Vars.dontplaynrg = false; diff --git a/src/game/game_190260.c b/src/game/game_190260.c index 8228571c7..185fb34e0 100644 --- a/src/game/game_190260.c +++ b/src/game/game_190260.c @@ -2798,18 +2798,18 @@ bool func0f192dc0(struct chrdata *botchr, struct chrdata *chr) struct aibot *aibot = botchr->aibot; bool result = true; s32 otherweaponnum; - s32 sp40; - s32 sp3c; - s32 sp38; - s32 sp34; + s32 myscore1; + s32 myscore2; + s32 theirscore1; + s32 theirscore2; if (aibot->simulant->base.simtype == SIMTYPE_COWARD) { otherweaponnum = mpchrGetWeaponNum(chr); - func0f198338(botchr, aibot->weaponnum, 0, 1, 0, &sp40, &sp3c, 0, 0); - func0f198338(botchr, otherweaponnum, 0, 1, 0, &sp38, &sp34, 0, 0); + aibotScoreWeapon(botchr, aibot->weaponnum, FUNC_PRIMARY, 1, false, &myscore1, &myscore2, false, false); + aibotScoreWeapon(botchr, otherweaponnum, FUNC_PRIMARY, 1, false, &theirscore1, &theirscore2, false, false); - if (sp40 - 30 <= sp38) { + if (theirscore1 >= myscore1 - 30) { result = false; } } @@ -3322,8 +3322,8 @@ glabel func0f19369c /* f1936a0: afbf0014 */ sw $ra,0x14($sp) /* f1936a4: afa5002c */ sw $a1,0x2c($sp) /* f1936a8: 8c8602d4 */ lw $a2,0x2d4($a0) -/* f1936ac: 3c028008 */ lui $v0,%hi(var80087eb0) -/* f1936b0: 24427eb0 */ addiu $v0,$v0,%lo(var80087eb0) +/* f1936ac: 3c028008 */ lui $v0,%hi(g_AibotWeaponPreferences) +/* f1936b0: 24427eb0 */ addiu $v0,$v0,%lo(g_AibotWeaponPreferences) /* f1936b4: 8ccf0020 */ lw $t7,0x20($a2) /* f1936b8: 00054040 */ sll $t0,$a1,0x1 /* f1936bc: 00c86021 */ addu $t4,$a2,$t0 @@ -3746,11 +3746,11 @@ glabel var7f1b8f50 /* f193c8c: 26730004 */ addiu $s3,$s3,0x4 .L0f193c90: /* f193c90: 8e6c0000 */ lw $t4,0x0($s3) -/* f193c94: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f193c94: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f193c98: 03b61021 */ addu $v0,$sp,$s6 /* f193c9c: 000c6900 */ sll $t5,$t4,0x4 /* f193ca0: 006d1821 */ addu $v1,$v1,$t5 -/* f193ca4: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f193ca4: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) /* f193ca8: 8fb900a0 */ lw $t9,0xa0($sp) /* f193cac: 000373c2 */ srl $t6,$v1,0xf /* f193cb0: 15c00003 */ bnez $t6,.L0f193cc0 @@ -4034,10 +4034,10 @@ glabel var7f1b8f50 /* f1940a8: 8fb400d8 */ lw $s4,0xd8($sp) /* f1940ac: 8f1800dc */ lw $t8,0xdc($t8) /* f1940b0: 00057100 */ sll $t6,$a1,0x4 -/* f1940b4: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f1940b4: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f1940b8: 130000e4 */ beqz $t8,.L0f19444c /* f1940bc: 006e1821 */ addu $v1,$v1,$t6 -/* f1940c0: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f1940c0: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) /* f1940c4: 03b65021 */ addu $t2,$sp,$s6 /* f1940c8: 8fab00a0 */ lw $t3,0xa0($sp) /* f1940cc: 0003cbc2 */ srl $t9,$v1,0xf @@ -4076,8 +4076,8 @@ glabel var7f1b8f50 /* f194140: 11c0002a */ beqz $t6,.L0f1941ec /* f194144: 24010002 */ addiu $at,$zero,0x2 /* f194148: 8e650000 */ lw $a1,0x0($s3) -/* f19414c: 3c088008 */ lui $t0,%hi(var80087eb0) -/* f194150: 25087eb0 */ addiu $t0,$t0,%lo(var80087eb0) +/* f19414c: 3c088008 */ lui $t0,%hi(g_AibotWeaponPreferences) +/* f194150: 25087eb0 */ addiu $t0,$t0,%lo(g_AibotWeaponPreferences) /* f194154: 0005c900 */ sll $t9,$a1,0x4 /* f194158: 03281021 */ addu $v0,$t9,$t0 /* f19415c: 9457000a */ lhu $s7,0xa($v0) @@ -4103,10 +4103,10 @@ glabel var7f1b8f50 /* f1941a4: 5020000f */ beqzl $at,.L0f1941e4 /* f1941a8: 240c0001 */ addiu $t4,$zero,0x1 /* f1941ac: 8e650000 */ lw $a1,0x0($s3) -/* f1941b0: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f1941b0: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f1941b4: 00054900 */ sll $t1,$a1,0x4 /* f1941b8: 00691821 */ addu $v1,$v1,$t1 -/* f1941bc: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f1941bc: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) /* f1941c0: 00035c40 */ sll $t3,$v1,0x11 .L0f1941c4: /* f1941c4: 05610080 */ bgez $t3,.L0f1943c8 @@ -4135,11 +4135,11 @@ glabel var7f1b8f50 /* f194218: 0fc2a63d */ jal ammotypeGetMaxCapacity /* f19421c: 00402025 */ or $a0,$v0,$zero /* f194220: 8e650000 */ lw $a1,0x0($s3) -/* f194224: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f194224: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f194228: 0040a825 */ or $s5,$v0,$zero /* f19422c: 00057900 */ sll $t7,$a1,0x4 /* f194230: 006f1821 */ addu $v1,$v1,$t7 -/* f194234: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f194234: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) /* f194238: 8fa40274 */ lw $a0,0x274($sp) /* f19423c: 00003025 */ or $a2,$zero,$zero /* f194240: 0003c3c2 */ srl $t8,$v1,0xf @@ -4151,10 +4151,10 @@ glabel var7f1b8f50 /* f194258: 14200012 */ bnez $at,.L0f1942a4 /* f19425c: 00000000 */ nop /* f194260: 8e650000 */ lw $a1,0x0($s3) -/* f194264: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f194264: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f194268: 00057100 */ sll $t6,$a1,0x4 /* f19426c: 006e1821 */ addu $v1,$v1,$t6 -/* f194270: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f194270: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) /* f194274: 00034440 */ sll $t0,$v1,0x11 .L0f194278: /* f194278: 05010007 */ bgez $t0,.L0f194298 @@ -4176,8 +4176,8 @@ glabel var7f1b8f50 /* f1942ac: 15200022 */ bnez $t1,.L0f194338 /* f1942b0: 8fb9027c */ lw $t9,0x27c($sp) /* f1942b4: 8e650000 */ lw $a1,0x0($s3) -/* f1942b8: 3c0b8008 */ lui $t3,%hi(var80087eb0) -/* f1942bc: 256b7eb0 */ addiu $t3,$t3,%lo(var80087eb0) +/* f1942b8: 3c0b8008 */ lui $t3,%hi(g_AibotWeaponPreferences) +/* f1942bc: 256b7eb0 */ addiu $t3,$t3,%lo(g_AibotWeaponPreferences) /* f1942c0: 00055100 */ sll $t2,$a1,0x4 /* f1942c4: 014b1021 */ addu $v0,$t2,$t3 /* f1942c8: 94430004 */ lhu $v1,0x4($v0) @@ -4193,10 +4193,10 @@ glabel var7f1b8f50 /* f1942f0: 5020000f */ beqzl $at,.L0f194330 /* f1942f4: 240e0001 */ addiu $t6,$zero,0x1 /* f1942f8: 8e650000 */ lw $a1,0x0($s3) -/* f1942fc: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f1942fc: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f194300: 00056900 */ sll $t5,$a1,0x4 /* f194304: 006d1821 */ addu $v1,$v1,$t5 -/* f194308: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f194308: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) .L0f19430c: /* f19430c: 0003c440 */ sll $t8,$v1,0x11 /* f194310: 0701002d */ bgez $t8,.L0f1943c8 @@ -4215,8 +4215,8 @@ glabel var7f1b8f50 /* f19433c: 57210023 */ bnel $t9,$at,.L0f1943cc /* f194340: 00008025 */ or $s0,$zero,$zero /* f194344: 8e650000 */ lw $a1,0x0($s3) -/* f194348: 3c098008 */ lui $t1,%hi(var80087eb0) -/* f19434c: 25297eb0 */ addiu $t1,$t1,%lo(var80087eb0) +/* f194348: 3c098008 */ lui $t1,%hi(g_AibotWeaponPreferences) +/* f19434c: 25297eb0 */ addiu $t1,$t1,%lo(g_AibotWeaponPreferences) /* f194350: 00054100 */ sll $t0,$a1,0x4 /* f194354: 01091021 */ addu $v0,$t0,$t1 /* f194358: 94430004 */ lhu $v1,0x4($v0) @@ -4232,10 +4232,10 @@ glabel var7f1b8f50 /* f194380: 5020000f */ beqzl $at,.L0f1943c0 /* f194384: 240f0001 */ addiu $t7,$zero,0x1 /* f194388: 8e650000 */ lw $a1,0x0($s3) -/* f19438c: 3c038008 */ lui $v1,%hi(var80087eb4) +/* f19438c: 3c038008 */ lui $v1,%hi(g_AibotWeaponPreferences+0x4) /* f194390: 00055900 */ sll $t3,$a1,0x4 /* f194394: 006b1821 */ addu $v1,$v1,$t3 -/* f194398: 94637eb4 */ lhu $v1,%lo(var80087eb4)($v1) +/* f194398: 94637eb4 */ lhu $v1,%lo(g_AibotWeaponPreferences+0x4)($v1) .L0f19439c: /* f19439c: 00036c40 */ sll $t5,$v1,0x11 /* f1943a0: 05a10009 */ bgez $t5,.L0f1943c8 diff --git a/src/game/game_197600.c b/src/game/game_197600.c index c56ae9445..6ee5b5642 100644 --- a/src/game/game_197600.c +++ b/src/game/game_197600.c @@ -28,382 +28,102 @@ f32 var80087e50[][3] = { { 450, 700, 4500 }, }; -u32 var80087eb0 = 0x00000000; -u32 var80087eb4 = 0x08800000; -u32 var80087eb8 = 0x00000000; -u32 var80087ebc = 0x00000000; -u32 var80087ec0 = 0x0d0d0d0d; -u32 var80087ec4 = 0xc0000000; -u32 var80087ec8 = 0x00000000; -u32 var80087ecc = 0x00000000; -u32 var80087ed0 = 0x383c5458; -u32 var80087ed4 = 0xc400001e; -u32 var80087ed8 = 0x0000000a; -u32 var80087edc = 0x00002000; -u32 var80087ee0 = 0x343c5058; -u32 var80087ee4 = 0xc400001e; -u32 var80087ee8 = 0x0000000a; -u32 var80087eec = 0x00002000; -u32 var80087ef0 = 0x3c3c5858; -u32 var80087ef4 = 0xc400001e; -u32 var80087ef8 = 0x0000000a; -u32 var80087efc = 0x00002000; -u32 var80087f00 = 0x4c586878; -u32 var80087f04 = 0xc480001e; -u32 var80087f08 = 0x001e000a; -u32 var80087f0c = 0x000a2000; -u32 var80087f10 = 0x40585c78; -u32 var80087f14 = 0xc480001e; -u32 var80087f18 = 0x001e000a; -u32 var80087f1c = 0x000a2000; -u32 var80087f20 = 0x484c6478; -u32 var80087f24 = 0xc480001e; -u32 var80087f28 = 0x001e000a; -u32 var80087f2c = 0x000a4000; -u32 var80087f30 = 0x444c6078; -u32 var80087f34 = 0xc400001e; -u32 var80087f38 = 0x00000008; -u32 var80087f3c = 0x00006000; -u32 var80087f40 = 0xb4bcb8bc; -u32 var80087f44 = 0xc4000014; -u32 var80087f48 = 0x00000006; -u32 var80087f4c = 0x00006000; -u32 var80087f50 = 0x74808898; -u32 var80087f54 = 0xc8800064; -u32 var80087f58 = 0x0064001e; -u32 var80087f5c = 0x001e4000; -u32 var80087f60 = 0x7880848c; -u32 var80087f64 = 0xc8800096; -u32 var80087f68 = 0x00960032; -u32 var80087f6c = 0x00324000; -u32 var80087f70 = 0x98b00000; -u32 var80087f74 = 0xc8800064; -u32 var80087f78 = 0x00460019; -u32 var80087f7c = 0x000f4000; -u32 var80087f80 = 0xacbc0000; -u32 var80087f84 = 0x8880012c; -u32 var80087f88 = 0x00000028; -u32 var80087f8c = 0x00004000; -u32 var80087f90 = 0x808c0000; -u32 var80087f94 = 0xc8800064; -u32 var80087f98 = 0x0000001e; -u32 var80087f9c = 0x00006000; -u32 var80087fa0 = 0x7c940000; -u32 var80087fa4 = 0xc880005a; -u32 var80087fa8 = 0x0000001e; -u32 var80087fac = 0x00002000; -u32 var80087fb0 = 0x9cb40000; -u32 var80087fb4 = 0x88800096; -u32 var80087fb8 = 0x00000028; -u32 var80087fbc = 0x00004000; -u32 var80087fc0 = 0x94b00000; -u32 var80087fc4 = 0x88800078; -u32 var80087fc8 = 0x00000028; -u32 var80087fcc = 0x00004000; -u32 var80087fd0 = 0xa4bc0000; -u32 var80087fd4 = 0xc8c00078; -u32 var80087fd8 = 0x0014001e; -u32 var80087fdc = 0x00062000; -u32 var80087fe0 = 0x8c9c0000; -u32 var80087fe4 = 0xc4400012; -u32 var80087fe8 = 0x00120008; -u32 var80087fec = 0x0008d000; -u32 var80087ff0 = 0x90b00000; -u32 var80087ff4 = 0xc8000190; -u32 var80087ff8 = 0x00000050; -u32 var80087ffc = 0x00006000; -u32 var80088000 = 0x1c280000; -u32 var80088004 = 0x8880001e; -u32 var80088008 = 0x001e000a; -u32 var8008800c = 0x000a4000; -u32 var80088010 = 0xbcbc0000; -u32 var80088014 = 0x8d400010; -u32 var80088018 = 0x00000004; -u32 var8008801c = 0x00004000; -u32 var80088020 = 0xb0bc0000; -u32 var80088024 = 0xccc00014; -u32 var80088028 = 0x00140004; -u32 var8008802c = 0x00044000; -u32 var80088030 = 0xa0bc0000; -u32 var80088034 = 0xccc00002; -u32 var80088038 = 0x00020001; -u32 var8008803c = 0x00014000; -u32 var80088040 = 0xa8bc0000; -u32 var80088044 = 0xccc00002; -u32 var80088048 = 0x00020001; -u32 var8008804c = 0x00016000; -u32 var80088050 = 0x14281828; -u32 var80088054 = 0xc0800000; -u32 var80088058 = 0x00050000; -u32 var8008805c = 0x00012000; -u32 var80088060 = 0x6cb00000; -u32 var80088064 = 0xc880000f; -u32 var80088068 = 0x000f0005; -u32 var8008806c = 0x00059000; -u32 var80088070 = 0x30bc0000; -u32 var80088074 = 0xc8000014; -u32 var80088078 = 0x00180006; -u32 var8008807c = 0x00082000; -u32 var80088080 = 0x70700000; -u32 var80088084 = 0xc8000000; -u32 var80088088 = 0x00000000; -u32 var8008808c = 0x00002000; -u32 var80088090 = 0x24ac0000; -u32 var80088094 = 0xddc00006; -u32 var80088098 = 0x00060002; -u32 var8008809c = 0x00022000; -u32 var800880a0 = 0x20bc0000; -u32 var800880a4 = 0xddc00003; -u32 var800880a8 = 0x00030001; -u32 var800880ac = 0x00012000; -u32 var800880b0 = 0x0c0c0000; -u32 var800880b4 = 0x1c800005; -u32 var800880b8 = 0x00050001; -u32 var800880bc = 0x00012000; -u32 var800880c0 = 0x28b00000; -u32 var800880c4 = 0x1c800005; -u32 var800880c8 = 0x00050001; -u32 var800880cc = 0x00012000; -u32 var800880d0 = 0x2c9c0000; -u32 var800880d4 = 0x88800005; -u32 var800880d8 = 0x00050002; -u32 var800880dc = 0x00022000; -u32 var800880e0 = 0x08080000; -u32 var800880e4 = 0x08800000; -u32 var800880e8 = 0x00000000; -u32 var800880ec = 0x00002000; -u32 var800880f0 = 0x00000000; -u32 var800880f4 = 0x08800000; -u32 var800880f8 = 0x00000000; -u32 var800880fc = 0x00002000; -u32 var80088100 = 0x00000000; -u32 var80088104 = 0x08800000; -u32 var80088108 = 0x00000000; -u32 var8008810c = 0x00002000; -u32 var80088110 = 0x00000000; -u32 var80088114 = 0x08800000; -u32 var80088118 = 0x00000000; -u32 var8008811c = 0x00002000; -u32 var80088120 = 0x00000000; -u32 var80088124 = 0x08800000; -u32 var80088128 = 0x00000000; -u32 var8008812c = 0x00002000; -u32 var80088130 = 0x00000000; -u32 var80088134 = 0x08800000; -u32 var80088138 = 0x00000000; -u32 var8008813c = 0x00002000; -u32 var80088140 = 0x00000000; -u32 var80088144 = 0x08800000; -u32 var80088148 = 0x00000000; -u32 var8008814c = 0x00002000; -u32 var80088150 = 0x00000000; -u32 var80088154 = 0x08800000; -u32 var80088158 = 0x00000000; -u32 var8008815c = 0x00002000; -u32 var80088160 = 0x00000000; -u32 var80088164 = 0x08800000; -u32 var80088168 = 0x00000000; -u32 var8008816c = 0x00002000; -u32 var80088170 = 0x00000000; -u32 var80088174 = 0x08800000; -u32 var80088178 = 0x00000000; -u32 var8008817c = 0x00002000; -u32 var80088180 = 0x00000000; -u32 var80088184 = 0x08800000; -u32 var80088188 = 0x00000000; -u32 var8008818c = 0x00002000; -u32 var80088190 = 0x00000000; -u32 var80088194 = 0x08800000; -u32 var80088198 = 0x00000000; -u32 var8008819c = 0x00002000; -u32 var800881a0 = 0x04040000; -u32 var800881a4 = 0x08800000; -u32 var800881a8 = 0x00000000; -u32 var800881ac = 0x00002000; -u32 var800881b0 = 0x00000000; -u32 var800881b4 = 0x08800000; -u32 var800881b8 = 0x00000000; -u32 var800881bc = 0x00002000; -u32 var800881c0 = 0xdada0000; -u32 var800881c4 = 0x088004b0; -u32 var800881c8 = 0x00000000; -u32 var800881cc = 0x00002000; -u32 var800881d0 = 0x00000000; -u32 var800881d4 = 0x08800000; -u32 var800881d8 = 0x00000000; -u32 var800881dc = 0x00002000; -u32 var800881e0 = 0x00000000; -u32 var800881e4 = 0x08800000; -u32 var800881e8 = 0x00000000; -u32 var800881ec = 0x00002000; -u32 var800881f0 = 0x00000000; -u32 var800881f4 = 0x08800000; -u32 var800881f8 = 0x00000000; -u32 var800881fc = 0x00002000; -u32 var80088200 = 0x00000000; -u32 var80088204 = 0x08800000; -u32 var80088208 = 0x00000000; -u32 var8008820c = 0x00002000; -u32 var80088210 = 0x00000000; -u32 var80088214 = 0x08800000; -u32 var80088218 = 0x00000000; -u32 var8008821c = 0x00002000; -u32 var80088220 = 0x00000000; -u32 var80088224 = 0x08800000; -u32 var80088228 = 0x00000000; -u32 var8008822c = 0x00002000; -u32 var80088230 = 0x00000000; -u32 var80088234 = 0x08800000; -u32 var80088238 = 0x00000000; -u32 var8008823c = 0x00002000; -u32 var80088240 = 0x00000000; -u32 var80088244 = 0x08800000; -u32 var80088248 = 0x00000000; -u32 var8008824c = 0x00002000; -u32 var80088250 = 0x00000000; -u32 var80088254 = 0x08800000; -u32 var80088258 = 0x00000000; -u32 var8008825c = 0x00002000; -u32 var80088260 = 0x00000000; -u32 var80088264 = 0x08800000; -u32 var80088268 = 0x00000000; -u32 var8008826c = 0x00002000; -u32 var80088270 = 0x00000000; -u32 var80088274 = 0x08800000; -u32 var80088278 = 0x00000000; -u32 var8008827c = 0x00002000; -u32 var80088280 = 0x00000000; -u32 var80088284 = 0x08800000; -u32 var80088288 = 0x00000000; -u32 var8008828c = 0x00002000; -u32 var80088290 = 0x00000000; -u32 var80088294 = 0x08800000; -u32 var80088298 = 0x00000000; -u32 var8008829c = 0x00002000; -u32 var800882a0 = 0x00000000; -u32 var800882a4 = 0x08800000; -u32 var800882a8 = 0x00000000; -u32 var800882ac = 0x00002000; -u32 var800882b0 = 0x00000000; -u32 var800882b4 = 0x08800000; -u32 var800882b8 = 0x00000000; -u32 var800882bc = 0x00002000; -u32 var800882c0 = 0x00000000; -u32 var800882c4 = 0x08800000; -u32 var800882c8 = 0x00000000; -u32 var800882cc = 0x00002000; -u32 var800882d0 = 0x00000000; -u32 var800882d4 = 0x08800000; -u32 var800882d8 = 0x00000000; -u32 var800882dc = 0x00002000; -u32 var800882e0 = 0x00000000; -u32 var800882e4 = 0x08800000; -u32 var800882e8 = 0x00000000; -u32 var800882ec = 0x00002000; -u32 var800882f0 = 0x00000000; -u32 var800882f4 = 0x08800000; -u32 var800882f8 = 0x00000000; -u32 var800882fc = 0x00002000; -u32 var80088300 = 0x00000000; -u32 var80088304 = 0x08800000; -u32 var80088308 = 0x00000000; -u32 var8008830c = 0x00002000; -u32 var80088310 = 0x00000000; -u32 var80088314 = 0x08800000; -u32 var80088318 = 0x00000000; -u32 var8008831c = 0x00002000; -u32 var80088320 = 0x00000000; -u32 var80088324 = 0x08800000; -u32 var80088328 = 0x00000000; -u32 var8008832c = 0x00002000; -u32 var80088330 = 0x00000000; -u32 var80088334 = 0x08800000; -u32 var80088338 = 0x00000000; -u32 var8008833c = 0x00002000; -u32 var80088340 = 0x00000000; -u32 var80088344 = 0x08800000; -u32 var80088348 = 0x00000000; -u32 var8008834c = 0x00002000; -u32 var80088350 = 0x00000000; -u32 var80088354 = 0x08800000; -u32 var80088358 = 0x00000000; -u32 var8008835c = 0x00002000; -u32 var80088360 = 0x00000000; -u32 var80088364 = 0x08800000; -u32 var80088368 = 0x00000000; -u32 var8008836c = 0x00002000; -u32 var80088370 = 0x00000000; -u32 var80088374 = 0x08800000; -u32 var80088378 = 0x00000000; -u32 var8008837c = 0x00002000; -u32 var80088380 = 0x00000000; -u32 var80088384 = 0x08800000; -u32 var80088388 = 0x00000000; -u32 var8008838c = 0x00002000; -u32 var80088390 = 0x00000000; -u32 var80088394 = 0x08800000; -u32 var80088398 = 0x00000000; -u32 var8008839c = 0x00002000; -u32 var800883a0 = 0x00000000; -u32 var800883a4 = 0x08800000; -u32 var800883a8 = 0x00000000; -u32 var800883ac = 0x00002000; -u32 var800883b0 = 0x00000000; -u32 var800883b4 = 0x08800000; -u32 var800883b8 = 0x00000000; -u32 var800883bc = 0x00002000; -u32 var800883c0 = 0x00000000; -u32 var800883c4 = 0x08800000; -u32 var800883c8 = 0x00000000; -u32 var800883cc = 0x00002000; -u32 var800883d0 = 0x00000000; -u32 var800883d4 = 0x08800000; -u32 var800883d8 = 0x00000000; -u32 var800883dc = 0x00002000; -u32 var800883e0 = 0x00000000; -u32 var800883e4 = 0x08800000; -u32 var800883e8 = 0x00000000; -u32 var800883ec = 0x00002000; -u32 var800883f0 = 0x00000000; -u32 var800883f4 = 0x08800000; -u32 var800883f8 = 0x00000000; -u32 var800883fc = 0x00002000; -u32 var80088400 = 0x00000000; -u32 var80088404 = 0x08800000; -u32 var80088408 = 0x00000000; -u32 var8008840c = 0x00002000; -u32 var80088410 = 0x00000000; -u32 var80088414 = 0x08800000; -u32 var80088418 = 0x00000000; -u32 var8008841c = 0x00002000; -u32 var80088420 = 0x00000000; -u32 var80088424 = 0x08800000; -u32 var80088428 = 0x00000000; -u32 var8008842c = 0x00002000; -u32 var80088430 = 0x00000000; -u32 var80088434 = 0x08800000; -u32 var80088438 = 0x00000000; -u32 var8008843c = 0x00002000; -u32 var80088440 = 0x00000000; -u32 var80088444 = 0x08800000; -u32 var80088448 = 0x00000000; -u32 var8008844c = 0x00002000; -u32 var80088450 = 0x00000000; -u32 var80088454 = 0x08800000; -u32 var80088458 = 0x00000000; -u32 var8008845c = 0x00002000; -u32 var80088460 = 0xdcdc0000; -u32 var80088464 = 0x08800000; -u32 var80088468 = 0x00000000; -u32 var8008846c = 0x00002000; -u32 var80088470 = 0x00000000; -u32 var80088474 = 0x08800000; -u32 var80088478 = 0x00000000; -u32 var8008847c = 0x00002000; -u32 var80088480 = 0x00000000; -u32 var80088484 = 0x08800000; -u32 var80088488 = 0x00000000; -u32 var8008848c = 0x00002000; +struct aibotweaponpreference g_AibotWeaponPreferences[] = { + /*0x00*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0 }, // WEAPON_NONE + /*0x01*/ { 13, 13, 13, 13, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, // WEAPON_UNARMED + /*0x02*/ { 56, 60, 84, 88, 1, 1, 0, 4, 0, 30, 0, 10, 0, 0x2000 }, // WEAPON_FALCON2 + /*0x03*/ { 52, 60, 80, 88, 1, 1, 0, 4, 0, 30, 0, 10, 0, 0x2000 }, // WEAPON_FALCON2_SILENCER + /*0x04*/ { 60, 60, 88, 88, 1, 1, 0, 4, 0, 30, 0, 10, 0, 0x2000 }, // WEAPON_FALCON2_SCOPE + /*0x05*/ { 76, 88, 104, 120, 1, 1, 0, 4, 8, 30, 30, 10, 10, 0x2000 }, // WEAPON_MAGSEC4 + /*0x06*/ { 64, 88, 92, 120, 1, 1, 0, 4, 8, 30, 30, 10, 10, 0x2000 }, // WEAPON_MAULER + /*0x07*/ { 72, 76, 100, 120, 1, 1, 0, 4, 8, 30, 30, 10, 10, 0x4000 }, // WEAPON_PHOENIX + /*0x08*/ { 68, 76, 96, 120, 1, 1, 0, 4, 0, 30, 0, 8, 0, 0x6000 }, // WEAPON_DY357MAGNUM + /*0x09*/ { 180, 188, 184, 188, 1, 1, 0, 4, 0, 20, 0, 6, 0, 0x6000 }, // WEAPON_DY357LX + /*0x0a*/ { 116, 128, 136, 152, 1, 1, 0, 8, 8, 100, 100, 30, 30, 0x4000 }, // WEAPON_CMP150 + /*0x0b*/ { 120, 128, 132, 140, 1, 1, 0, 8, 8, 150, 150, 50, 50, 0x4000 }, // WEAPON_CYCLONE + /*0x0c*/ { 152, 176, 0, 0, 1, 1, 0, 8, 8, 100, 70, 25, 15, 0x4000 }, // WEAPON_CALLISTONTG + /*0x0d*/ { 172, 188, 0, 0, 1, 0, 0, 8, 8, 300, 0, 40, 0, 0x4000 }, // WEAPON_RCP120 + /*0x0e*/ { 128, 140, 0, 0, 1, 1, 0, 8, 8, 100, 0, 30, 0, 0x6000 }, // WEAPON_LAPTOPGUN + /*0x0f*/ { 124, 148, 0, 0, 1, 1, 0, 8, 8, 90, 0, 30, 0, 0x2000 }, // WEAPON_DRAGON + /*0x10*/ { 156, 180, 0, 0, 1, 0, 0, 8, 8, 150, 0, 40, 0, 0x4000 }, // WEAPON_K7AVENGER + /*0x11*/ { 148, 176, 0, 0, 1, 0, 0, 8, 8, 120, 0, 40, 0, 0x4000 }, // WEAPON_AR34 + /*0x12*/ { 164, 188, 0, 0, 1, 1, 0, 8, 12, 120, 20, 30, 6, 0x2000 }, // WEAPON_SUPERDRAGON + /*0x13*/ { 140, 156, 0, 0, 1, 1, 0, 4, 4, 18, 18, 8, 8, 0xd000 }, // WEAPON_SHOTGUN + /*0x14*/ { 144, 176, 0, 0, 1, 1, 0, 8, 0, 400, 0, 80, 0, 0x6000 }, // WEAPON_REAPER + /*0x15*/ { 28, 40, 0, 0, 1, 0, 0, 8, 8, 30, 30, 10, 10, 0x4000 }, // WEAPON_SNIPERRIFLE + /*0x16*/ { 188, 188, 0, 0, 1, 0, 0, 13, 4, 16, 0, 4, 0, 0x4000 }, // WEAPON_FARSIGHTXR20 + /*0x17*/ { 176, 188, 0, 0, 1, 1, 0, 12, 12, 20, 20, 4, 4, 0x4000 }, // WEAPON_DEVASTATOR + /*0x18*/ { 160, 188, 0, 0, 1, 1, 0, 12, 12, 2, 2, 1, 1, 0x4000 }, // WEAPON_ROCKETLAUNCHER + /*0x19*/ { 168, 188, 0, 0, 1, 1, 0, 12, 12, 2, 2, 1, 1, 0x6000 }, // WEAPON_SLAYER + /*0x1a*/ { 20, 40, 24, 40, 1, 1, 0, 0, 8, 0, 5, 0, 1, 0x2000 }, // WEAPON_COMBATKNIFE + /*0x1b*/ { 108, 176, 0, 0, 1, 1, 0, 8, 8, 15, 15, 5, 5, 0x9000 }, // WEAPON_CROSSBOW + /*0x1c*/ { 48, 188, 0, 0, 1, 1, 0, 8, 0, 20, 24, 6, 8, 0x2000 }, // WEAPON_TRANQUILIZER + /*0x1d*/ { 112, 112, 0, 0, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0x2000 }, // WEAPON_LASER + /*0x1e*/ { 36, 172, 0, 0, 1, 1, 1, 13, 12, 6, 6, 2, 2, 0x2000 }, // WEAPON_GRENADE + /*0x1f*/ { 32, 188, 0, 0, 1, 1, 1, 13, 12, 3, 3, 1, 1, 0x2000 }, // WEAPON_NBOMB + /*0x20*/ { 12, 12, 0, 0, 0, 0, 1, 12, 8, 5, 5, 1, 1, 0x2000 }, // WEAPON_TIMEDMINE + /*0x21*/ { 40, 176, 0, 0, 0, 0, 1, 12, 8, 5, 5, 1, 1, 0x2000 }, // WEAPON_PROXIMITYMINE + /*0x22*/ { 44, 156, 0, 0, 1, 0, 0, 8, 8, 5, 5, 2, 2, 0x2000 }, // WEAPON_REMOTEMINE + /*0x23*/ { 8, 8, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_COMBATBOOST + /*0x24*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_PP9I + /*0x25*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_CC13 + /*0x26*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KL01313 + /*0x27*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KF7SPECIAL + /*0x28*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_ZZT + /*0x29*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DMC + /*0x2a*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_AR53 + /*0x2b*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_RCP45 + /*0x2c*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_PSYCHOSISGUN + /*0x2d*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_NIGHTVISION + /*0x2e*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_EYESPY + /*0x2f*/ { 4, 4, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_XRAYSCANNER + /*0x30*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_IRSCANNER + /*0x31*/ { 218, 218, 0, 0, 0, 0, 0, 8, 8, 1200, 0, 0, 0, 0x2000 }, // WEAPON_CLOAKINGDEVICE + /*0x32*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_HORIZONSCANNER + /*0x33*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_TESTER + /*0x34*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_ROCKETLAUNCHER_34 + /*0x35*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_ECMMINE + /*0x36*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DATAUPLINK + /*0x37*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_RTRACKER + /*0x38*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_PRESIDENTSCANNER + /*0x39*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DOORDECODER + /*0x3a*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_AUTOSURGEON + /*0x3b*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_EXPLOSIVES + /*0x3c*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_SKEDARBOMB + /*0x3d*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_COMMSRIDER + /*0x3e*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_TRACERBUG + /*0x3f*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_TARGETAMPLIFIER + /*0x40*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DISGUISE40 + /*0x41*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DISGUISE41 + /*0x42*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_FLIGHTPLANS + /*0x43*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_RESEARCHTAPE + /*0x44*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_BACKUPDISK + /*0x45*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD45 + /*0x46*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD46 + /*0x47*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD47 + /*0x48*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD48 + /*0x49*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD49 + /*0x4a*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD4A + /*0x4b*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD4B + /*0x4c*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_KEYCARD4C + /*0x4d*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_SUITCASE + /*0x4e*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_BRIEFCASE + /*0x4f*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_SHIELD + /*0x50*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_NECKLACE + /*0x51*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_HAMMER + /*0x52*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_52 + /*0x53*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_ROCKET + /*0x54*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_HOMINGROCKET + /*0x55*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_GRENADEROUND + /*0x56*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_BOLT + /*0x57*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_BRIEFCASE2 + /*0x58*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_ROCKET2 + /*0x59*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_59 + /*0x5a*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_5A + /*0x5b*/ { 220, 220, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_MPSHIELD + /*0x5c*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_DISABLED + /*0x5d*/ { 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0x2000 }, // WEAPON_SUICIDEPILL +}; void func0f197600(struct chrdata *chr) { @@ -929,795 +649,357 @@ s32 mpGetWeaponIndexByWeaponNum(s32 weaponnum) return result; } -GLOBAL_ASM( -glabel func0f198338 -.late_rodata -glabel var7f1b9010 -.word func0f198338+0x1d0 # f198508 -glabel var7f1b9014 -.word func0f198338+0x238 # f198570 -glabel var7f1b9018 -.word func0f198338+0x250 # f198588 -glabel var7f1b901c -.word func0f198338+0x268 # f1985a0 -glabel var7f1b9020 -.word func0f198338+0x280 # f1985b8 -glabel var7f1b9024 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9028 -.word func0f198338+0x2a4 # f1985dc -glabel var7f1b902c -.word func0f198338+0x30c # f198644 -glabel var7f1b9030 -.word func0f198338+0x324 # f19865c -glabel var7f1b9034 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9038 -.word func0f198338+0x33c # f198674 -glabel var7f1b903c -.word func0f198338+0x360 # f198698 -glabel var7f1b9040 -.word func0f198338+0x384 # f1986bc -glabel var7f1b9044 -.word func0f198338+0x3f8 # f198730 -glabel var7f1b9048 -.word func0f198338+0x410 # f198748 -glabel var7f1b904c -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9050 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9054 -.word func0f198338+0x428 # f198760 -glabel var7f1b9058 -.word func0f198338+0x45c # f198794 -glabel var7f1b905c -.word func0f198338+0x480 # f1987b8 -glabel var7f1b9060 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9064 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9068 -.word func0f198338+0x498 # f1987d0 -glabel var7f1b906c -.word func0f198338+0x4b0 # f1987e8 -glabel var7f1b9070 -.word func0f198338+0x4d4 # f19880c -glabel var7f1b9074 -.word func0f198338+0x628 # f198960 -glabel var7f1b9078 -.word func0f198338+0x640 # f198978 -glabel var7f1b907c -.word func0f198338+0x6cc # f198a04 -glabel var7f1b9080 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9084 -.word func0f198338+0x8a0 # f198bd8 -glabel var7f1b9088 -.word func0f198338+0x868 # f198ba0 -glabel var7f1b908c -.word 0x3991a2b4 -.text -/* f198338: 27bdffb0 */ addiu $sp,$sp,-80 -/* f19833c: afbf0014 */ sw $ra,0x14($sp) -/* f198340: afa40050 */ sw $a0,0x50($sp) -/* f198344: afa50054 */ sw $a1,0x54($sp) -/* f198348: afa60058 */ sw $a2,0x58($sp) -/* f19834c: 00004025 */ or $t0,$zero,$zero -/* f198350: 00005025 */ or $t2,$zero,$zero -/* f198354: 04e00014 */ bltz $a3,.L0f1983a8 -/* f198358: 00004825 */ or $t1,$zero,$zero -/* f19835c: 14c00007 */ bnez $a2,.L0f19837c -/* f198360: 0005c100 */ sll $t8,$a1,0x4 -/* f198364: 3c198008 */ lui $t9,%hi(var80087eb4) -/* f198368: 0338c821 */ addu $t9,$t9,$t8 -/* f19836c: 97397eb4 */ lhu $t9,%lo(var80087eb4)($t9) -/* f198370: 00195bc2 */ srl $t3,$t9,0xf -/* f198374: 50eb000d */ beql $a3,$t3,.L0f1983ac -/* f198378: 8fab0054 */ lw $t3,0x54($sp) -.L0f19837c: -/* f19837c: 8fac0058 */ lw $t4,0x58($sp) -/* f198380: 8fad0054 */ lw $t5,0x54($sp) -/* f198384: 3c0f8008 */ lui $t7,%hi(var80087eb4) -/* f198388: 11800053 */ beqz $t4,.L0f1984d8 -/* f19838c: 000d7100 */ sll $t6,$t5,0x4 -/* f198390: 01ee7821 */ addu $t7,$t7,$t6 -/* f198394: 95ef7eb4 */ lhu $t7,%lo(var80087eb4)($t7) -/* f198398: 000fc440 */ sll $t8,$t7,0x11 -/* f19839c: 0018cfc2 */ srl $t9,$t8,0x1f -/* f1983a0: 54f9004e */ bnel $a3,$t9,.L0f1984dc -/* f1983a4: 8fb90054 */ lw $t9,0x54($sp) -.L0f1983a8: -/* f1983a8: 8fab0054 */ lw $t3,0x54($sp) -.L0f1983ac: -/* f1983ac: 8fa60060 */ lw $a2,0x60($sp) -/* f1983b0: 3c0d8008 */ lui $t5,%hi(var80087eb0) -/* f1983b4: 25ad7eb0 */ addiu $t5,$t5,%lo(var80087eb0) -/* f1983b8: 000b6100 */ sll $t4,$t3,0x4 -/* f1983bc: 10c00004 */ beqz $a2,.L0f1983d0 -/* f1983c0: 018d1021 */ addu $v0,$t4,$t5 -/* f1983c4: 90480002 */ lbu $t0,0x2($v0) -/* f1983c8: 10000003 */ b .L0f1983d8 -/* f1983cc: 904a0003 */ lbu $t2,0x3($v0) -.L0f1983d0: -/* f1983d0: 90480000 */ lbu $t0,0x0($v0) -/* f1983d4: 904a0001 */ lbu $t2,0x1($v0) -.L0f1983d8: -/* f1983d8: 8fae0050 */ lw $t6,0x50($sp) -/* f1983dc: 51c0003f */ beqzl $t6,.L0f1984dc -/* f1983e0: 8fb90054 */ lw $t9,0x54($sp) -/* f1983e4: 8dc402d4 */ lw $a0,0x2d4($t6) -/* f1983e8: 5080003c */ beqzl $a0,.L0f1984dc -/* f1983ec: 8fb90054 */ lw $t9,0x54($sp) -/* f1983f0: 8c820004 */ lw $v0,0x4($a0) -/* f1983f4: 24010001 */ addiu $at,$zero,0x1 -/* f1983f8: 8faf0054 */ lw $t7,0x54($sp) -/* f1983fc: 90430048 */ lbu $v1,0x48($v0) -/* f198400: 14600003 */ bnez $v1,.L0f198410 -/* f198404: 00000000 */ nop -/* f198408: 10000004 */ b .L0f19841c -/* f19840c: 24090064 */ addiu $t1,$zero,0x64 -.L0f198410: -/* f198410: 54610003 */ bnel $v1,$at,.L0f198420 -/* f198414: 90430047 */ lbu $v1,0x47($v0) -/* f198418: 24090032 */ addiu $t1,$zero,0x32 -.L0f19841c: -/* f19841c: 90430047 */ lbu $v1,0x47($v0) -.L0f198420: -/* f198420: 24050003 */ addiu $a1,$zero,0x3 -/* f198424: 24010002 */ addiu $at,$zero,0x2 -/* f198428: 14a30025 */ bne $a1,$v1,.L0f1984c0 -/* f19842c: 00000000 */ nop -/* f198430: 24010018 */ addiu $at,$zero,0x18 -/* f198434: 15e10003 */ bne $t7,$at,.L0f198444 -/* f198438: 8fb80054 */ lw $t8,0x54($sp) -/* f19843c: 10000026 */ b .L0f1984d8 -/* f198440: 2528012c */ addiu $t0,$t1,0x12c -.L0f198444: -/* f198444: 24010019 */ addiu $at,$zero,0x19 -/* f198448: 17010003 */ bne $t8,$at,.L0f198458 -/* f19844c: 8fb90054 */ lw $t9,0x54($sp) -/* f198450: 10000021 */ b .L0f1984d8 -/* f198454: 2528012b */ addiu $t0,$t1,0x12b -.L0f198458: -/* f198458: 24010017 */ addiu $at,$zero,0x17 -/* f19845c: 17210003 */ bne $t9,$at,.L0f19846c -/* f198460: 8fab0054 */ lw $t3,0x54($sp) -/* f198464: 1000001c */ b .L0f1984d8 -/* f198468: 25280118 */ addiu $t0,$t1,0x118 -.L0f19846c: -/* f19846c: 24010012 */ addiu $at,$zero,0x12 -/* f198470: 15610005 */ bne $t3,$at,.L0f198488 -/* f198474: 8fac0058 */ lw $t4,0x58($sp) -/* f198478: 51800004 */ beqzl $t4,.L0f19848c -/* f19847c: 8fad0054 */ lw $t5,0x54($sp) -/* f198480: 10000015 */ b .L0f1984d8 -/* f198484: 25280117 */ addiu $t0,$t1,0x117 -.L0f198488: -/* f198488: 8fad0054 */ lw $t5,0x54($sp) -.L0f19848c: -/* f19848c: 24010007 */ addiu $at,$zero,0x7 -/* f198490: 8fae0058 */ lw $t6,0x58($sp) -/* f198494: 15a10005 */ bne $t5,$at,.L0f1984ac -/* f198498: 8faf0054 */ lw $t7,0x54($sp) -/* f19849c: 51c00004 */ beqzl $t6,.L0f1984b0 -/* f1984a0: 2401001e */ addiu $at,$zero,0x1e -/* f1984a4: 1000000c */ b .L0f1984d8 -/* f1984a8: 25280104 */ addiu $t0,$t1,0x104 -.L0f1984ac: -/* f1984ac: 2401001e */ addiu $at,$zero,0x1e -.L0f1984b0: -/* f1984b0: 55e1000a */ bnel $t7,$at,.L0f1984dc -/* f1984b4: 8fb90054 */ lw $t9,0x54($sp) -/* f1984b8: 10000007 */ b .L0f1984d8 -/* f1984bc: 252800f0 */ addiu $t0,$t1,0xf0 -.L0f1984c0: -/* f1984c0: 14610005 */ bne $v1,$at,.L0f1984d8 -/* f1984c4: 8fb80054 */ lw $t8,0x54($sp) -/* f1984c8: 2401005b */ addiu $at,$zero,0x5b -/* f1984cc: 57010003 */ bnel $t8,$at,.L0f1984dc -/* f1984d0: 8fb90054 */ lw $t9,0x54($sp) -/* f1984d4: 2528012c */ addiu $t0,$t1,0x12c -.L0f1984d8: -/* f1984d8: 8fb90054 */ lw $t9,0x54($sp) -.L0f1984dc: -/* f1984dc: 24050003 */ addiu $a1,$zero,0x3 -/* f1984e0: 8fa60060 */ lw $a2,0x60($sp) -/* f1984e4: 272bffff */ addiu $t3,$t9,-1 -/* f1984e8: 2d61001f */ sltiu $at,$t3,0x1f -/* f1984ec: 102001ba */ beqz $at,.L0f198bd8 -/* f1984f0: 000b5880 */ sll $t3,$t3,0x2 -/* f1984f4: 3c017f1c */ lui $at,%hi(var7f1b9010) -/* f1984f8: 002b0821 */ addu $at,$at,$t3 -/* f1984fc: 8c2b9010 */ lw $t3,%lo(var7f1b9010)($at) -/* f198500: 01600008 */ jr $t3 -/* f198504: 00000000 */ nop -/* f198508: 8fac006c */ lw $t4,0x6c($sp) -/* f19850c: 8fad0058 */ lw $t5,0x58($sp) -/* f198510: 518001b2 */ beqzl $t4,.L0f198bdc -/* f198514: 8fac0070 */ lw $t4,0x70($sp) -/* f198518: 11a001af */ beqz $t5,.L0f198bd8 -/* f19851c: 8fae0050 */ lw $t6,0x50($sp) -/* f198520: 85cf017e */ lh $t7,0x17e($t6) -/* f198524: 2401ffff */ addiu $at,$zero,-1 -/* f198528: 51e1000f */ beql $t7,$at,.L0f198568 -/* f19852c: 00004025 */ or $t0,$zero,$zero -/* f198530: 0fc64580 */ jal mpchrGetTargetsWeaponNum -/* f198534: 01c02025 */ or $a0,$t6,$zero -/* f198538: 28410002 */ slti $at,$v0,0x2 -/* f19853c: 14200009 */ bnez $at,.L0f198564 -/* f198540: 8fb80050 */ lw $t8,0x50($sp) -/* f198544: 8f1902d4 */ lw $t9,0x2d4($t8) -/* f198548: 2408001a */ addiu $t0,$zero,0x1a -/* f19854c: 8f2b0004 */ lw $t3,0x4($t9) -/* f198550: 916c0048 */ lbu $t4,0x48($t3) -/* f198554: 59800004 */ blezl $t4,.L0f198568 -/* f198558: 00004025 */ or $t0,$zero,$zero -/* f19855c: 1000019e */ b .L0f198bd8 -/* f198560: 240a001a */ addiu $t2,$zero,0x1a -.L0f198564: -/* f198564: 00004025 */ or $t0,$zero,$zero -.L0f198568: -/* f198568: 1000019b */ b .L0f198bd8 -/* f19856c: 00005025 */ or $t2,$zero,$zero -/* f198570: 8fad0058 */ lw $t5,0x58($sp) -/* f198574: 51a00199 */ beqzl $t5,.L0f198bdc -/* f198578: 8fac0070 */ lw $t4,0x70($sp) -/* f19857c: 2408000f */ addiu $t0,$zero,0xf -/* f198580: 10000195 */ b .L0f198bd8 -/* f198584: 240a000f */ addiu $t2,$zero,0xf -/* f198588: 8faf0058 */ lw $t7,0x58($sp) -/* f19858c: 51e00193 */ beqzl $t7,.L0f198bdc -/* f198590: 8fac0070 */ lw $t4,0x70($sp) -/* f198594: 2408000e */ addiu $t0,$zero,0xe -/* f198598: 1000018f */ b .L0f198bd8 -/* f19859c: 240a000e */ addiu $t2,$zero,0xe -/* f1985a0: 8fae0058 */ lw $t6,0x58($sp) -/* f1985a4: 51c0018d */ beqzl $t6,.L0f198bdc -/* f1985a8: 8fac0070 */ lw $t4,0x70($sp) -/* f1985ac: 24080010 */ addiu $t0,$zero,0x10 -/* f1985b0: 10000189 */ b .L0f198bd8 -/* f1985b4: 240a0010 */ addiu $t2,$zero,0x10 -/* f1985b8: 8fb80058 */ lw $t8,0x58($sp) -/* f1985bc: 57000187 */ bnezl $t8,.L0f198bdc -/* f1985c0: 8fac0070 */ lw $t4,0x70($sp) -/* f1985c4: 10c00003 */ beqz $a2,.L0f1985d4 -/* f1985c8: 00000000 */ nop -/* f1985cc: 10000182 */ b .L0f198bd8 -/* f1985d0: 2408005b */ addiu $t0,$zero,0x5b -.L0f1985d4: -/* f1985d4: 10000180 */ b .L0f198bd8 -/* f1985d8: 2408003f */ addiu $t0,$zero,0x3f -/* f1985dc: 8fb90050 */ lw $t9,0x50($sp) -/* f1985e0: 8fad0058 */ lw $t5,0x58($sp) -/* f1985e4: 8f2b02d4 */ lw $t3,0x2d4($t9) -/* f1985e8: 8d620004 */ lw $v0,0x4($t3) -/* f1985ec: 904c0047 */ lbu $t4,0x47($v0) -/* f1985f0: 50ac017a */ beql $a1,$t4,.L0f198bdc -/* f1985f4: 8fac0070 */ lw $t4,0x70($sp) -/* f1985f8: 11a0000c */ beqz $t5,.L0f19862c -/* f1985fc: 3c0f800b */ lui $t7,%hi(g_MpSetup+0xc) -/* f198600: 8defcb94 */ lw $t7,%lo(g_MpSetup+0xc)($t7) -/* f198604: 31ee0001 */ andi $t6,$t7,0x1 -/* f198608: 51c00174 */ beqzl $t6,.L0f198bdc -/* f19860c: 8fac0070 */ lw $t4,0x70($sp) -/* f198610: 90580048 */ lbu $t8,0x48($v0) -/* f198614: 2b010002 */ slti $at,$t8,0x2 -/* f198618: 54200170 */ bnezl $at,.L0f198bdc -/* f19861c: 8fac0070 */ lw $t4,0x70($sp) -/* f198620: 2408006e */ addiu $t0,$zero,0x6e -/* f198624: 1000016c */ b .L0f198bd8 -/* f198628: 240a0096 */ addiu $t2,$zero,0x96 -.L0f19862c: -/* f19862c: 10c00003 */ beqz $a2,.L0f19863c -/* f198630: 00000000 */ nop -/* f198634: 10000168 */ b .L0f198bd8 -/* f198638: 2408005a */ addiu $t0,$zero,0x5a -.L0f19863c: -/* f19863c: 10000166 */ b .L0f198bd8 -/* f198640: 2408003e */ addiu $t0,$zero,0x3e -/* f198644: 8fb90058 */ lw $t9,0x58($sp) -/* f198648: 53200164 */ beqzl $t9,.L0f198bdc -/* f19864c: 8fac0070 */ lw $t4,0x70($sp) -/* f198650: 24080011 */ addiu $t0,$zero,0x11 -/* f198654: 10000160 */ b .L0f198bd8 -/* f198658: 240a0011 */ addiu $t2,$zero,0x11 -/* f19865c: 8fab0058 */ lw $t3,0x58($sp) -/* f198660: 5160015e */ beqzl $t3,.L0f198bdc -/* f198664: 8fac0070 */ lw $t4,0x70($sp) -/* f198668: 24080012 */ addiu $t0,$zero,0x12 -/* f19866c: 1000015a */ b .L0f198bd8 -/* f198670: 240a0012 */ addiu $t2,$zero,0x12 -/* f198674: 8fad0050 */ lw $t5,0x50($sp) -/* f198678: 8fac0058 */ lw $t4,0x58($sp) -/* f19867c: 8daf02d4 */ lw $t7,0x2d4($t5) -/* f198680: 8dee0210 */ lw $t6,0x210($t7) -/* f198684: 31d80001 */ andi $t8,$t6,0x1 -/* f198688: 55980154 */ bnel $t4,$t8,.L0f198bdc -/* f19868c: 8fac0070 */ lw $t4,0x70($sp) -/* f198690: 10000151 */ b .L0f198bd8 -/* f198694: 2508ffff */ addiu $t0,$t0,-1 -/* f198698: 8fab0050 */ lw $t3,0x50($sp) -/* f19869c: 8fb90058 */ lw $t9,0x58($sp) -/* f1986a0: 8d6d02d4 */ lw $t5,0x2d4($t3) -/* f1986a4: 8daf0210 */ lw $t7,0x210($t5) -/* f1986a8: 31ee0001 */ andi $t6,$t7,0x1 -/* f1986ac: 572e014b */ bnel $t9,$t6,.L0f198bdc -/* f1986b0: 8fac0070 */ lw $t4,0x70($sp) -/* f1986b4: 10000148 */ b .L0f198bd8 -/* f1986b8: 2508ffff */ addiu $t0,$t0,-1 -/* f1986bc: 8fac0050 */ lw $t4,0x50($sp) -/* f1986c0: 2405000d */ addiu $a1,$zero,0xd -/* f1986c4: 00003025 */ or $a2,$zero,$zero -/* f1986c8: 8d8402d4 */ lw $a0,0x2d4($t4) -/* f1986cc: 24070001 */ addiu $a3,$zero,0x1 -/* f1986d0: 8c98004c */ lw $t8,0x4c($a0) -/* f1986d4: 00186980 */ sll $t5,$t8,0x6 -/* f1986d8: 05a20140 */ bltzl $t5,.L0f198bdc -/* f1986dc: 8fac0070 */ lw $t4,0x70($sp) -/* f1986e0: afa8004c */ sw $t0,0x4c($sp) -/* f1986e4: 0fc666f9 */ jal func0f199be4 -/* f1986e8: afaa0048 */ sw $t2,0x48($sp) -/* f1986ec: 284101f5 */ slti $at,$v0,0x1f5 -/* f1986f0: 8fa8004c */ lw $t0,0x4c($sp) -/* f1986f4: 14200138 */ bnez $at,.L0f198bd8 -/* f1986f8: 8faa0048 */ lw $t2,0x48($sp) -/* f1986fc: 8faf0050 */ lw $t7,0x50($sp) -/* f198700: 8de402d4 */ lw $a0,0x2d4($t7) -/* f198704: 8c990004 */ lw $t9,0x4($a0) -/* f198708: 932e0048 */ lbu $t6,0x48($t9) -/* f19870c: 59c00133 */ blezl $t6,.L0f198bdc -/* f198710: 8fac0070 */ lw $t4,0x70($sp) -/* f198714: 8c820210 */ lw $v0,0x210($a0) -/* f198718: 2401000a */ addiu $at,$zero,0xa -/* f19871c: 0041001b */ divu $zero,$v0,$at -/* f198720: 00006010 */ mfhi $t4 -/* f198724: 010c4021 */ addu $t0,$t0,$t4 -/* f198728: 1000012b */ b .L0f198bd8 -/* f19872c: 014c5021 */ addu $t2,$t2,$t4 -/* f198730: 8fb80058 */ lw $t8,0x58($sp) -/* f198734: 53000129 */ beqzl $t8,.L0f198bdc -/* f198738: 8fac0070 */ lw $t4,0x70($sp) -/* f19873c: 00004025 */ or $t0,$zero,$zero -/* f198740: 10000125 */ b .L0f198bd8 -/* f198744: 00005025 */ or $t2,$zero,$zero -/* f198748: 8fab0058 */ lw $t3,0x58($sp) -/* f19874c: 51600123 */ beqzl $t3,.L0f198bdc -/* f198750: 8fac0070 */ lw $t4,0x70($sp) -/* f198754: 00004025 */ or $t0,$zero,$zero -/* f198758: 1000011f */ b .L0f198bd8 -/* f19875c: 00005025 */ or $t2,$zero,$zero -/* f198760: 8fad0050 */ lw $t5,0x50($sp) -/* f198764: 8da402d4 */ lw $a0,0x2d4($t5) -/* f198768: 8c8f0004 */ lw $t7,0x4($a0) -/* f19876c: 91f90047 */ lbu $t9,0x47($t7) -/* f198770: 50b9011a */ beql $a1,$t9,.L0f198bdc -/* f198774: 8fac0070 */ lw $t4,0x70($sp) -/* f198778: 8c8c0210 */ lw $t4,0x210($a0) -/* f19877c: 8fae0058 */ lw $t6,0x58($sp) -/* f198780: 31980001 */ andi $t8,$t4,0x1 -/* f198784: 55d80115 */ bnel $t6,$t8,.L0f198bdc -/* f198788: 8fac0070 */ lw $t4,0x70($sp) -/* f19878c: 10000112 */ b .L0f198bd8 -/* f198790: 2508fff1 */ addiu $t0,$t0,-15 -/* f198794: 8fad0050 */ lw $t5,0x50($sp) -/* f198798: 8fab0058 */ lw $t3,0x58($sp) -/* f19879c: 8daf02d4 */ lw $t7,0x2d4($t5) -/* f1987a0: 8df90210 */ lw $t9,0x210($t7) -/* f1987a4: 332c0001 */ andi $t4,$t9,0x1 -/* f1987a8: 556c010c */ bnel $t3,$t4,.L0f198bdc -/* f1987ac: 8fac0070 */ lw $t4,0x70($sp) -/* f1987b0: 10000109 */ b .L0f198bd8 -/* f1987b4: 2508ffff */ addiu $t0,$t0,-1 -/* f1987b8: 8fae0058 */ lw $t6,0x58($sp) -/* f1987bc: 51c00107 */ beqzl $t6,.L0f198bdc -/* f1987c0: 8fac0070 */ lw $t4,0x70($sp) -/* f1987c4: 24080013 */ addiu $t0,$zero,0x13 -/* f1987c8: 10000103 */ b .L0f198bd8 -/* f1987cc: 240a0050 */ addiu $t2,$zero,0x50 -/* f1987d0: 8fb80058 */ lw $t8,0x58($sp) -/* f1987d4: 53000101 */ beqzl $t8,.L0f198bdc -/* f1987d8: 8fac0070 */ lw $t4,0x70($sp) -/* f1987dc: 00004025 */ or $t0,$zero,$zero -/* f1987e0: 100000fd */ b .L0f198bd8 -/* f1987e4: 00005025 */ or $t2,$zero,$zero -/* f1987e8: 8faf0050 */ lw $t7,0x50($sp) -/* f1987ec: 8fad0058 */ lw $t5,0x58($sp) -/* f1987f0: 8df902d4 */ lw $t9,0x2d4($t7) -/* f1987f4: 8f2b0210 */ lw $t3,0x210($t9) -/* f1987f8: 316c0001 */ andi $t4,$t3,0x1 -/* f1987fc: 55ac00f7 */ bnel $t5,$t4,.L0f198bdc -/* f198800: 8fac0070 */ lw $t4,0x70($sp) -/* f198804: 100000f4 */ b .L0f198bd8 -/* f198808: 2508ffff */ addiu $t0,$t0,-1 -/* f19880c: 8fae0050 */ lw $t6,0x50($sp) -/* f198810: 8fb90058 */ lw $t9,0x58($sp) -/* f198814: 8fac0058 */ lw $t4,0x58($sp) -/* f198818: 8dd802d4 */ lw $t8,0x2d4($t6) -/* f19881c: 8f020004 */ lw $v0,0x4($t8) -/* f198820: 904f0047 */ lbu $t7,0x47($v0) -/* f198824: 14af0026 */ bne $a1,$t7,.L0f1988c0 -/* f198828: 00000000 */ nop -/* f19882c: 532000eb */ beqzl $t9,.L0f198bdc -/* f198830: 8fac0070 */ lw $t4,0x70($sp) -/* f198834: 904b0048 */ lbu $t3,0x48($v0) -/* f198838: 8fad006c */ lw $t5,0x6c($sp) -/* f19883c: 5960001e */ blezl $t3,.L0f1988b8 -/* f198840: 00004025 */ or $t0,$zero,$zero -/* f198844: 51a000e5 */ beqzl $t5,.L0f198bdc -/* f198848: 8fac0070 */ lw $t4,0x70($sp) -/* f19884c: 85cc017e */ lh $t4,0x17e($t6) -/* f198850: 2401ffff */ addiu $at,$zero,-1 -/* f198854: 01c02025 */ or $a0,$t6,$zero -/* f198858: 11810014 */ beq $t4,$at,.L0f1988ac -/* f19885c: 00000000 */ nop -/* f198860: afa8004c */ sw $t0,0x4c($sp) -/* f198864: 0fc0a221 */ jal chrGetTargetProp -/* f198868: afaa0048 */ sw $t2,0x48($sp) -/* f19886c: 0fc633fe */ jal mpPlayerGetIndex -/* f198870: 8c440004 */ lw $a0,0x4($v0) -/* f198874: 8fb80050 */ lw $t8,0x50($sp) -/* f198878: 8fa8004c */ lw $t0,0x4c($sp) -/* f19887c: 8faa0048 */ lw $t2,0x48($sp) -/* f198880: 8f0402d4 */ lw $a0,0x2d4($t8) -/* f198884: 00827821 */ addu $t7,$a0,$v0 -/* f198888: 91f9016c */ lbu $t9,0x16c($t7) -/* f19888c: 17200007 */ bnez $t9,.L0f1988ac -/* f198890: 00000000 */ nop -/* f198894: 8c8b0210 */ lw $t3,0x210($a0) -/* f198898: 316d0001 */ andi $t5,$t3,0x1 -/* f19889c: 15a00003 */ bnez $t5,.L0f1988ac -/* f1988a0: 00000000 */ nop -/* f1988a4: 100000cc */ b .L0f198bd8 -/* f1988a8: 2508000a */ addiu $t0,$t0,0xa -.L0f1988ac: -/* f1988ac: 100000ca */ b .L0f198bd8 -/* f1988b0: 2508fff6 */ addiu $t0,$t0,-10 -/* f1988b4: 00004025 */ or $t0,$zero,$zero -.L0f1988b8: -/* f1988b8: 100000c7 */ b .L0f198bd8 -/* f1988bc: 00005025 */ or $t2,$zero,$zero -.L0f1988c0: -/* f1988c0: 518000c6 */ beqzl $t4,.L0f198bdc -/* f1988c4: 8fac0070 */ lw $t4,0x70($sp) -/* f1988c8: 904e0048 */ lbu $t6,0x48($v0) -/* f1988cc: 8fb8006c */ lw $t8,0x6c($sp) -/* f1988d0: 29c10002 */ slti $at,$t6,0x2 -/* f1988d4: 54200020 */ bnezl $at,.L0f198958 -/* f1988d8: 00004025 */ or $t0,$zero,$zero -/* f1988dc: 130000be */ beqz $t8,.L0f198bd8 -/* f1988e0: 8faf0050 */ lw $t7,0x50($sp) -/* f1988e4: 85f9017e */ lh $t9,0x17e($t7) -/* f1988e8: 2401ffff */ addiu $at,$zero,-1 -/* f1988ec: 01e02025 */ or $a0,$t7,$zero -/* f1988f0: 53210016 */ beql $t9,$at,.L0f19894c -/* f1988f4: 2508fff1 */ addiu $t0,$t0,-15 -/* f1988f8: afa8004c */ sw $t0,0x4c($sp) -/* f1988fc: 0fc0a221 */ jal chrGetTargetProp -/* f198900: afaa0048 */ sw $t2,0x48($sp) -/* f198904: 0fc633fe */ jal mpPlayerGetIndex -/* f198908: 8c440004 */ lw $a0,0x4($v0) -/* f19890c: 8fab0050 */ lw $t3,0x50($sp) -/* f198910: 8fa8004c */ lw $t0,0x4c($sp) -/* f198914: 8faa0048 */ lw $t2,0x48($sp) -/* f198918: 8d6402d4 */ lw $a0,0x2d4($t3) -/* f19891c: 00826821 */ addu $t5,$a0,$v0 -/* f198920: 91ac016c */ lbu $t4,0x16c($t5) -/* f198924: 55800009 */ bnezl $t4,.L0f19894c -/* f198928: 2508fff1 */ addiu $t0,$t0,-15 -/* f19892c: 8c8e0210 */ lw $t6,0x210($a0) -/* f198930: 31d80001 */ andi $t8,$t6,0x1 -/* f198934: 57000005 */ bnezl $t8,.L0f19894c -/* f198938: 2508fff1 */ addiu $t0,$t0,-15 -/* f19893c: 240800b2 */ addiu $t0,$zero,0xb2 -/* f198940: 100000a5 */ b .L0f198bd8 -/* f198944: 240a00bc */ addiu $t2,$zero,0xbc -/* f198948: 2508fff1 */ addiu $t0,$t0,-15 -.L0f19894c: -/* f19894c: 100000a2 */ b .L0f198bd8 -/* f198950: 254afff1 */ addiu $t2,$t2,-15 -/* f198954: 00004025 */ or $t0,$zero,$zero -.L0f198958: -/* f198958: 1000009f */ b .L0f198bd8 -/* f19895c: 00005025 */ or $t2,$zero,$zero -/* f198960: 8fb90058 */ lw $t9,0x58($sp) -/* f198964: 5320009d */ beqzl $t9,.L0f198bdc -/* f198968: 8fac0070 */ lw $t4,0x70($sp) -/* f19896c: 00004025 */ or $t0,$zero,$zero -/* f198970: 10000099 */ b .L0f198bd8 -/* f198974: 00005025 */ or $t2,$zero,$zero -/* f198978: 8faf0058 */ lw $t7,0x58($sp) -/* f19897c: 8fab0050 */ lw $t3,0x50($sp) -/* f198980: 8fb8006c */ lw $t8,0x6c($sp) -/* f198984: 11e0000c */ beqz $t7,.L0f1989b8 -/* f198988: 00000000 */ nop -/* f19898c: 8d6d02d4 */ lw $t5,0x2d4($t3) -/* f198990: 240a00b0 */ addiu $t2,$zero,0xb0 -/* f198994: 00004025 */ or $t0,$zero,$zero -/* f198998: 8dac0004 */ lw $t4,0x4($t5) -/* f19899c: 918e0048 */ lbu $t6,0x48($t4) -/* f1989a0: 19c00003 */ blez $t6,.L0f1989b0 -/* f1989a4: 00000000 */ nop -/* f1989a8: 1000008b */ b .L0f198bd8 -/* f1989ac: 2408009e */ addiu $t0,$zero,0x9e -.L0f1989b0: -/* f1989b0: 10000089 */ b .L0f198bd8 -/* f1989b4: 00005025 */ or $t2,$zero,$zero -.L0f1989b8: -/* f1989b8: 1300000f */ beqz $t8,.L0f1989f8 -/* f1989bc: 8fb90050 */ lw $t9,0x50($sp) -/* f1989c0: 872f017e */ lh $t7,0x17e($t9) -/* f1989c4: 2401ffff */ addiu $at,$zero,-1 -/* f1989c8: 51e1000c */ beql $t7,$at,.L0f1989fc -/* f1989cc: 24080031 */ addiu $t0,$zero,0x31 -/* f1989d0: 0fc0a221 */ jal chrGetTargetProp -/* f1989d4: 03202025 */ or $a0,$t9,$zero -/* f1989d8: 8c4b0004 */ lw $t3,0x4($v0) -/* f1989dc: 00004025 */ or $t0,$zero,$zero -/* f1989e0: 856d02d8 */ lh $t5,0x2d8($t3) -/* f1989e4: 29a10dad */ slti $at,$t5,0xdad -/* f1989e8: 54200004 */ bnezl $at,.L0f1989fc -/* f1989ec: 24080031 */ addiu $t0,$zero,0x31 -/* f1989f0: 10000079 */ b .L0f198bd8 -/* f1989f4: 00005025 */ or $t2,$zero,$zero -.L0f1989f8: -/* f1989f8: 24080031 */ addiu $t0,$zero,0x31 -.L0f1989fc: -/* f1989fc: 10000076 */ b .L0f198bd8 -/* f198a00: 240a00bc */ addiu $t2,$zero,0xbc -/* f198a04: 8fac006c */ lw $t4,0x6c($sp) -/* f198a08: 8fae0050 */ lw $t6,0x50($sp) -/* f198a0c: 51800073 */ beqzl $t4,.L0f198bdc -/* f198a10: 8fac0070 */ lw $t4,0x70($sp) -/* f198a14: 85d8017e */ lh $t8,0x17e($t6) -/* f198a18: 2401ffff */ addiu $at,$zero,-1 -/* f198a1c: 00002825 */ or $a1,$zero,$zero -/* f198a20: 13010008 */ beq $t8,$at,.L0f198a44 -/* f198a24: 01c02025 */ or $a0,$t6,$zero -/* f198a28: afa8004c */ sw $t0,0x4c($sp) -/* f198a2c: 0fc0a221 */ jal chrGetTargetProp -/* f198a30: afaa0048 */ sw $t2,0x48($sp) -/* f198a34: 8c4f0004 */ lw $t7,0x4($v0) -/* f198a38: 8fa8004c */ lw $t0,0x4c($sp) -/* f198a3c: 8faa0048 */ lw $t2,0x48($sp) -/* f198a40: 85e502d8 */ lh $a1,0x2d8($t7) -.L0f198a44: -/* f198a44: 8fb90058 */ lw $t9,0x58($sp) -/* f198a48: 8fab0050 */ lw $t3,0x50($sp) -/* f198a4c: 28a11388 */ slti $at,$a1,0x1388 -/* f198a50: 13200025 */ beqz $t9,.L0f198ae8 -/* f198a54: 00000000 */ nop -/* f198a58: 8d6402d4 */ lw $a0,0x2d4($t3) -/* f198a5c: 00004025 */ or $t0,$zero,$zero -/* f198a60: 28a10dad */ slti $at,$a1,0xdad -/* f198a64: 8c8d0004 */ lw $t5,0x4($a0) -/* f198a68: 91ac0048 */ lbu $t4,0x48($t5) -/* f198a6c: 1d800003 */ bgtz $t4,.L0f198a7c -/* f198a70: 00000000 */ nop -/* f198a74: 10000058 */ b .L0f198bd8 -/* f198a78: 00005025 */ or $t2,$zero,$zero -.L0f198a7c: -/* f198a7c: 5420000c */ bnezl $at,.L0f198ab0 -/* f198a80: 8c830210 */ lw $v1,0x210($a0) -/* f198a84: 8c830210 */ lw $v1,0x210($a0) -/* f198a88: 2401008c */ addiu $at,$zero,0x8c -/* f198a8c: 30780001 */ andi $t8,$v1,0x1 -/* f198a90: 57000007 */ bnezl $t8,.L0f198ab0 -/* f198a94: 8c830210 */ lw $v1,0x210($a0) -/* f198a98: 0061001b */ divu $zero,$v1,$at -/* f198a9c: 00004010 */ mfhi $t0 -/* f198aa0: 25080030 */ addiu $t0,$t0,0x30 -/* f198aa4: 1000004c */ b .L0f198bd8 -/* f198aa8: 240a00bc */ addiu $t2,$zero,0xbc -/* f198aac: 8c830210 */ lw $v1,0x210($a0) -.L0f198ab0: -/* f198ab0: 2401000a */ addiu $at,$zero,0xa -/* f198ab4: 00004025 */ or $t0,$zero,$zero -/* f198ab8: 0061001b */ divu $zero,$v1,$at -/* f198abc: 00007010 */ mfhi $t6 -/* f198ac0: 2401008c */ addiu $at,$zero,0x8c -/* f198ac4: 15c00006 */ bnez $t6,.L0f198ae0 -/* f198ac8: 00000000 */ nop -/* f198acc: 0061001b */ divu $zero,$v1,$at -/* f198ad0: 00004010 */ mfhi $t0 -/* f198ad4: 25080030 */ addiu $t0,$t0,0x30 -/* f198ad8: 1000003f */ b .L0f198bd8 -/* f198adc: 240a00bc */ addiu $t2,$zero,0xbc -.L0f198ae0: -/* f198ae0: 1000003d */ b .L0f198bd8 -/* f198ae4: 00005025 */ or $t2,$zero,$zero -.L0f198ae8: -/* f198ae8: 1420000a */ bnez $at,.L0f198b14 -/* f198aec: 8faf0050 */ lw $t7,0x50($sp) -/* f198af0: 8df902d4 */ lw $t9,0x2d4($t7) -/* f198af4: 240a0030 */ addiu $t2,$zero,0x30 -/* f198af8: 8f2b0210 */ lw $t3,0x210($t9) -/* f198afc: 316d0001 */ andi $t5,$t3,0x1 -/* f198b00: 51a00036 */ beqzl $t5,.L0f198bdc -/* f198b04: 8fac0070 */ lw $t4,0x70($sp) -/* f198b08: 00004025 */ or $t0,$zero,$zero -/* f198b0c: 10000032 */ b .L0f198bd8 -/* f198b10: 00005025 */ or $t2,$zero,$zero -.L0f198b14: -/* f198b14: 28a10dad */ slti $at,$a1,0xdad -/* f198b18: 1420002f */ bnez $at,.L0f198bd8 -/* f198b1c: 00051823 */ negu $v1,$a1 -/* f198b20: 3c010001 */ lui $at,0x1 -/* f198b24: 34213880 */ ori $at,$at,0x3880 -/* f198b28: 00036100 */ sll $t4,$v1,0x4 -/* f198b2c: 01811821 */ addu $v1,$t4,$at -/* f198b30: 240105dc */ addiu $at,$zero,0x5dc -/* f198b34: 0061001a */ div $zero,$v1,$at -/* f198b38: 8fae0050 */ lw $t6,0x50($sp) -/* f198b3c: 00001012 */ mflo $v0 -/* f198b40: 2c410010 */ sltiu $at,$v0,0x10 -/* f198b44: 14200002 */ bnez $at,.L0f198b50 -/* f198b48: 8dc402d4 */ lw $a0,0x2d4($t6) -/* f198b4c: 2402000f */ addiu $v0,$zero,0xf -.L0f198b50: -/* f198b50: 00420019 */ multu $v0,$v0 -/* f198b54: 8c830210 */ lw $v1,0x210($a0) -/* f198b58: 306f0001 */ andi $t7,$v1,0x1 -/* f198b5c: 00001012 */ mflo $v0 -/* f198b60: 00000000 */ nop -/* f198b64: 00000000 */ nop -/* f198b68: 00420019 */ multu $v0,$v0 -/* f198b6c: 00001012 */ mflo $v0 -/* f198b70: 00000000 */ nop -/* f198b74: 00000000 */ nop -/* f198b78: 00420019 */ multu $v0,$v0 -/* f198b7c: 00001012 */ mflo $v0 -/* f198b80: 0043082b */ sltu $at,$v0,$v1 -/* f198b84: 50200015 */ beqzl $at,.L0f198bdc -/* f198b88: 8fac0070 */ lw $t4,0x70($sp) -/* f198b8c: 11e00012 */ beqz $t7,.L0f198bd8 -/* f198b90: 240a0030 */ addiu $t2,$zero,0x30 -/* f198b94: 00004025 */ or $t0,$zero,$zero -/* f198b98: 1000000f */ b .L0f198bd8 -/* f198b9c: 00005025 */ or $t2,$zero,$zero -/* f198ba0: 8fb9006c */ lw $t9,0x6c($sp) -/* f198ba4: 8fab0050 */ lw $t3,0x50($sp) -/* f198ba8: 5320000c */ beqzl $t9,.L0f198bdc -/* f198bac: 8fac0070 */ lw $t4,0x70($sp) -/* f198bb0: 856d017e */ lh $t5,0x17e($t3) -/* f198bb4: 2401ffff */ addiu $at,$zero,-1 -/* f198bb8: 01602025 */ or $a0,$t3,$zero -/* f198bbc: 51a10007 */ beql $t5,$at,.L0f198bdc -/* f198bc0: 8fac0070 */ lw $t4,0x70($sp) -/* f198bc4: afa8004c */ sw $t0,0x4c($sp) -/* f198bc8: 0fc64580 */ jal mpchrGetTargetsWeaponNum -/* f198bcc: afaa0048 */ sw $t2,0x48($sp) -/* f198bd0: 8fa8004c */ lw $t0,0x4c($sp) -/* f198bd4: 8faa0048 */ lw $t2,0x48($sp) -.L0f198bd8: -/* f198bd8: 8fac0070 */ lw $t4,0x70($sp) -.L0f198bdc: -/* f198bdc: 3c04800a */ lui $a0,%hi(g_Vars) -/* f198be0: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars) -/* f198be4: 1180006b */ beqz $t4,.L0f198d94 -/* f198be8: 3c013f80 */ lui $at,0x3f80 -/* f198bec: 8c820008 */ lw $v0,0x8($a0) -/* f198bf0: 44810000 */ mtc1 $at,$f0 -/* f198bf4: 00001825 */ or $v1,$zero,$zero -/* f198bf8: 18400013 */ blez $v0,.L0f198c48 -/* f198bfc: 46000386 */ mov.s $f14,$f0 -/* f198c00: 3c0e800b */ lui $t6,%hi(g_MpNumPlayers) -/* f198c04: 8dcec530 */ lw $t6,%lo(g_MpNumPlayers)($t6) -/* f198c08: 8c980488 */ lw $t8,0x488($a0) -/* f198c0c: 3c014561 */ lui $at,0x4561 -/* f198c10: 004e0019 */ multu $v0,$t6 -/* f198c14: 44982000 */ mtc1 $t8,$f4 -/* f198c18: 44814000 */ mtc1 $at,$f8 -/* f198c1c: 468021a0 */ cvt.s.w $f6,$f4 -/* f198c20: 00007812 */ mflo $t7 -/* f198c24: 448f8000 */ mtc1 $t7,$f16 -/* f198c28: 46083282 */ mul.s $f10,$f6,$f8 -/* f198c2c: 468084a0 */ cvt.s.w $f18,$f16 -/* f198c30: 46125383 */ div.s $f14,$f10,$f18 -/* f198c34: 4600703c */ c.lt.s $f14,$f0 -/* f198c38: 00000000 */ nop -/* f198c3c: 45020003 */ bc1fl .L0f198c4c -/* f198c40: 8fa40054 */ lw $a0,0x54($sp) -/* f198c44: 46000386 */ mov.s $f14,$f0 -.L0f198c48: -/* f198c48: 8fa40054 */ lw $a0,0x54($sp) -.L0f198c4c: -/* f198c4c: afa30034 */ sw $v1,0x34($sp) -/* f198c50: afa8004c */ sw $t0,0x4c($sp) -/* f198c54: afaa0048 */ sw $t2,0x48($sp) -/* f198c58: 0fc660b5 */ jal mpGetWeaponIndexByWeaponNum -/* f198c5c: e7ae002c */ swc1 $f14,0x2c($sp) -/* f198c60: 8fa30034 */ lw $v1,0x34($sp) -/* f198c64: 8fa8004c */ lw $t0,0x4c($sp) -/* f198c68: 8faa0048 */ lw $t2,0x48($sp) -/* f198c6c: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f198c70: 04400048 */ bltz $v0,.L0f198d94 -/* f198c74: 00402825 */ or $a1,$v0,$zero -/* f198c78: 8fad0050 */ lw $t5,0x50($sp) -/* f198c7c: 8fa20058 */ lw $v0,0x58($sp) -/* f198c80: 000560c0 */ sll $t4,$a1,0x3 -/* f198c84: 8dab02d4 */ lw $t3,0x2d4($t5) -/* f198c88: 0002c880 */ sll $t9,$v0,0x2 -/* f198c8c: 3c017f1c */ lui $at,%hi(var7f1b908c) -/* f198c90: 016cc021 */ addu $t8,$t3,$t4 -/* f198c94: 03197021 */ addu $t6,$t8,$t9 -/* f198c98: 8dcf0274 */ lw $t7,0x274($t6) -/* f198c9c: c428908c */ lwc1 $f8,%lo(var7f1b908c)($at) -/* f198ca0: e7ae002c */ swc1 $f14,0x2c($sp) -/* f198ca4: 448f2000 */ mtc1 $t7,$f4 -/* f198ca8: afaa0048 */ sw $t2,0x48($sp) -/* f198cac: afa8004c */ sw $t0,0x4c($sp) -/* f198cb0: 468021a0 */ cvt.s.w $f6,$f4 -/* f198cb4: afa50038 */ sw $a1,0x38($sp) -/* f198cb8: afa30034 */ sw $v1,0x34($sp) -/* f198cbc: afb9001c */ sw $t9,0x1c($sp) -/* f198cc0: 03201025 */ or $v0,$t9,$zero -/* f198cc4: 46083302 */ mul.s $f12,$f6,$f8 -/* f198cc8: 0fc25e5c */ jal ceilf -/* f198ccc: 00000000 */ nop -/* f198cd0: 44808000 */ mtc1 $zero,$f16 -/* f198cd4: 8fa2001c */ lw $v0,0x1c($sp) -/* f198cd8: 8fa30034 */ lw $v1,0x34($sp) -/* f198cdc: 4600803c */ c.lt.s $f16,$f0 -/* f198ce0: 8fa50038 */ lw $a1,0x38($sp) -/* f198ce4: 8fa8004c */ lw $t0,0x4c($sp) -/* f198ce8: 8faa0048 */ lw $t2,0x48($sp) -/* f198cec: 45000019 */ bc1f .L0f198d54 -/* f198cf0: c7ae002c */ lwc1 $f14,0x2c($sp) -/* f198cf4: 8fb90050 */ lw $t9,0x50($sp) -/* f198cf8: 000568c0 */ sll $t5,$a1,0x3 -/* f198cfc: 8f2402d4 */ lw $a0,0x2d4($t9) -/* f198d00: 8c8c0004 */ lw $t4,0x4($a0) -/* f198d04: 008d5821 */ addu $t3,$a0,$t5 -/* f198d08: 01621821 */ addu $v1,$t3,$v0 -/* f198d0c: 91980048 */ lbu $t8,0x48($t4) -/* f198d10: c4620214 */ lwc1 $f2,0x214($v1) -/* f198d14: 2b010002 */ slti $at,$t8,0x2 -/* f198d18: 14200005 */ bnez $at,.L0f198d30 -/* f198d1c: 3c014040 */ lui $at,0x4040 -/* f198d20: 44815000 */ mtc1 $at,$f10 -/* f198d24: c4720244 */ lwc1 $f18,0x244($v1) -/* f198d28: 46125102 */ mul.s $f4,$f10,$f18 -/* f198d2c: 46041081 */ sub.s $f2,$f2,$f4 -.L0f198d30: -/* f198d30: 46001083 */ div.s $f2,$f2,$f0 -/* f198d34: 3c014120 */ lui $at,0x4120 -/* f198d38: 44813000 */ mtc1 $at,$f6 -/* f198d3c: 00000000 */ nop -/* f198d40: 46061202 */ mul.s $f8,$f2,$f6 -/* f198d44: 460e4403 */ div.s $f16,$f8,$f14 -/* f198d48: 4600828d */ trunc.w.s $f10,$f16 -/* f198d4c: 44035000 */ mfc1 $v1,$f10 -/* f198d50: 00000000 */ nop -.L0f198d54: -/* f198d54: 8faf0050 */ lw $t7,0x50($sp) -/* f198d58: 2861001f */ slti $at,$v1,0x1f -/* f198d5c: 14200002 */ bnez $at,.L0f198d68 -/* f198d60: 8de402d4 */ lw $a0,0x2d4($t7) -/* f198d64: 2403001e */ addiu $v1,$zero,0x1e -.L0f198d68: -/* f198d68: 0005c880 */ sll $t9,$a1,0x2 -/* f198d6c: 00996821 */ addu $t5,$a0,$t9 -/* f198d70: 8dab02a8 */ lw $t3,0x2a8($t5) -/* f198d74: 006b1821 */ addu $v1,$v1,$t3 -/* f198d78: 01034021 */ addu $t0,$t0,$v1 -/* f198d7c: 05010002 */ bgez $t0,.L0f198d88 -/* f198d80: 01435021 */ addu $t2,$t2,$v1 -/* f198d84: 00004025 */ or $t0,$zero,$zero -.L0f198d88: -/* f198d88: 05430003 */ bgezl $t2,.L0f198d98 -/* f198d8c: 8fac0064 */ lw $t4,0x64($sp) -/* f198d90: 00005025 */ or $t2,$zero,$zero -.L0f198d94: -/* f198d94: 8fac0064 */ lw $t4,0x64($sp) -.L0f198d98: -/* f198d98: ad880000 */ sw $t0,0x0($t4) -/* f198d9c: 8fb80068 */ lw $t8,0x68($sp) -/* f198da0: af0a0000 */ sw $t2,0x0($t8) -/* f198da4: 8fbf0014 */ lw $ra,0x14($sp) -/* f198da8: 27bd0050 */ addiu $sp,$sp,0x50 -/* f198dac: 03e00008 */ jr $ra -/* f198db0: 00000000 */ nop -); +void aibotScoreWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2, bool arg7, bool arg8) +{ + s32 score1 = 0; + s32 score2 = 0; + s32 extra = 0; + + // @dangerous: Array overflow can occur if more weapons are added to the + // game without extending the preferences table + if (arg3 < 0 + || (!funcnum && arg3 == g_AibotWeaponPreferences[weaponnum].unk04_00) + || (funcnum && arg3 == g_AibotWeaponPreferences[weaponnum].unk04_01)) { + if (arg4) { + score1 = g_AibotWeaponPreferences[weaponnum].unk02; + score2 = g_AibotWeaponPreferences[weaponnum].unk03; + } else { + score1 = g_AibotWeaponPreferences[weaponnum].unk00; + score2 = g_AibotWeaponPreferences[weaponnum].unk01; + } + + if (chr && chr->aibot) { + // Add weighting for explosive weapons for rocket sims + // and weighting for shields for shield sims, with extra + // weighting if the sim is meat or easy. + if (chr->aibot->simulant->difficulty == SIMDIFF_MEAT) { + extra = 100; + } else if (chr->aibot->simulant->difficulty == SIMDIFF_EASY) { + extra = 50; + } + + if (chr->aibot->simulant->base.simtype == SIMTYPE_ROCKET) { + if (weaponnum == WEAPON_ROCKETLAUNCHER) { + score1 = extra + 300; + } else if (weaponnum == WEAPON_SLAYER) { + score1 = extra + 299; + } else if (weaponnum == WEAPON_DEVASTATOR) { + score1 = extra + 280; + } else if (weaponnum == WEAPON_SUPERDRAGON && funcnum != FUNC_PRIMARY) { + score1 = extra + 279; + } else if (weaponnum == WEAPON_PHOENIX && funcnum != FUNC_PRIMARY) { + score1 = extra + 260; + } else if (weaponnum == WEAPON_GRENADE) { + score1 = extra + 240; + } + } else if (chr->aibot->simulant->base.simtype == SIMTYPE_SHIELD) { + if (weaponnum == WEAPON_MPSHIELD) { + score1 = extra + 300; + } + } + } + } + + // Missing from this list: + // Mauler, K7 Avenger, AR34, sniper rifle, Farsight, laser, grenade + switch (weaponnum) { + case WEAPON_UNARMED: + if (arg7 && funcnum != FUNC_PRIMARY) { + if (chr->target != -1 + && mpchrGetTargetsWeaponNum(chr) > WEAPON_UNARMED + && chr->aibot->simulant->difficulty > SIMDIFF_MEAT) { + score1 = 26; + score2 = 26; + } else { + score1 = 0; + score2 = 0; + } + } + break; + case WEAPON_FALCON2: + if (funcnum != FUNC_PRIMARY) { + score1 = 15; + score2 = 15; + } + break; + case WEAPON_FALCON2_SILENCER: + if (funcnum != FUNC_PRIMARY) { + score1 = 14; + score2 = 14; + } + break; + case WEAPON_FALCON2_SCOPE: + if (funcnum != FUNC_PRIMARY) { + score1 = 16; + score2 = 16; + } + break; + case WEAPON_MAGSEC4: + if (funcnum == FUNC_PRIMARY) { + score1 = arg4 ? 91 : 63; + } + break; + case WEAPON_PHOENIX: + if (chr->aibot->simulant->base.simtype != SIMDIFF_HARD) { + if (funcnum != FUNC_PRIMARY) { + if ((g_MpSetup.options & MPOPTION_ONEHITKILLS) + && chr->aibot->simulant->difficulty >= SIMDIFF_NORMAL) { + score1 = 110; + score2 = 150; + } + } else { + score1 = arg4 ? 90 : 62; + } + } + break; + case WEAPON_DY357MAGNUM: + if (funcnum != FUNC_PRIMARY) { + score1 = 17; + score2 = 17; + } + break; + case WEAPON_DY357LX: + if (funcnum != FUNC_PRIMARY) { + score1 = 18; + score2 = 18; + } + break; + case WEAPON_CYCLONE: + if (funcnum == (chr->aibot->unk210 & 1)) { + score1--; + } + break; + case WEAPON_CALLISTONTG: + if (funcnum == (chr->aibot->unk210 & 1)) { + score1--; + } + break; + case WEAPON_RCP120: + if (chr->aibot->cloakdeviceenabled == false + && func0f199be4(chr->aibot, WEAPON_RCP120, FUNC_PRIMARY, true) > 500 + && chr->aibot->simulant->difficulty > SIMDIFF_MEAT) { + score1 += chr->aibot->unk210 % 10; + score2 += chr->aibot->unk210 % 10; + } + break; + case WEAPON_LAPTOPGUN: + if (funcnum != FUNC_PRIMARY) { + score1 = 0; + score2 = 0; + } + break; + case WEAPON_DRAGON: + if (funcnum != FUNC_PRIMARY) { + score1 = 0; + score2 = 0; + } + break; + case WEAPON_SUPERDRAGON: + if (chr->aibot->simulant->base.simtype != SIMDIFF_HARD + && (chr->aibot->unk210 & 1) == funcnum) { + score1 -= 15; + } + break; + case WEAPON_SHOTGUN: + if (funcnum == (chr->aibot->unk210 & 1)) { + score1--; + } + break; + case WEAPON_REAPER: + if (funcnum != FUNC_PRIMARY) { + score1 = 19; + score2 = 80; + } + break; + case WEAPON_DEVASTATOR: + if (funcnum != FUNC_PRIMARY) { + score1 = 0; + score2 = 0; + } + break; + case WEAPON_ROCKETLAUNCHER: + if (funcnum == (chr->aibot->unk210 & 1)) { + score1--; + } + break; + case WEAPON_SLAYER: + if (chr->aibot->simulant->base.simtype == SIMDIFF_HARD) { + if (funcnum != FUNC_PRIMARY) { + if (chr->aibot->simulant->difficulty > SIMDIFF_MEAT) { + if (arg7) { + if (chr->target != -1 + && chr->aibot->unk16c[mpPlayerGetIndex(chrGetTargetProp(chr)->chr)] == 0 + && (chr->aibot->unk210 & 1) == 0) { + score1 += 10; + } else { + score1 -= 10; + } + } + } else { + score1 = 0; + score2 = 0; + } + } + } else { + if (funcnum != FUNC_PRIMARY) { + if (chr->aibot->simulant->difficulty >= SIMDIFF_NORMAL) { + if (arg7) { + if (chr->target != -1 + && chr->aibot->unk16c[mpPlayerGetIndex(chrGetTargetProp(chr)->chr)] == 0 + && (chr->aibot->unk210 & 1) == 0) { + score1 = 178; + score2 = 188; + } else { + score1 -= 15; + score2 -= 15; + } + } + } else { + score1 = 0; + score2 = 0; + } + } + } + break; + case WEAPON_COMBATKNIFE: + if (funcnum != FUNC_PRIMARY) { + score1 = 0; + score2 = 0; + } + break; + case WEAPON_CROSSBOW: + if (funcnum != FUNC_PRIMARY) { + if (chr->aibot->simulant->difficulty > SIMDIFF_MEAT) { + score1 = 158; + score2 = 176; + } else { + score1 = 0; + score2 = 0; + } + } else { + if (arg7 && chr->target != -1 && chrGetTargetProp(chr)->chr->blurdrugamount > 3500) { + score1 = 0; + score2 = 0; + } else { + score1 = 49; + score2 = 188; + } + } + break; + case WEAPON_TRANQUILIZER: + if (arg7) { + s32 bluramount = 0; + + if (chr->target != -1) { + bluramount = chrGetTargetProp(chr)->chr->blurdrugamount; + } + + if (funcnum != FUNC_PRIMARY) { + if (chr->aibot->simulant->difficulty <= SIMDIFF_MEAT) { + score1 = 0; + score2 = 0; + } else if (bluramount > 3500 && (chr->aibot->unk210 & 1) == 0) { + score1 = chr->aibot->unk210 % 140 + 48; + score2 = 188; + } else if (chr->aibot->unk210 % 10 == 0) { + score1 = chr->aibot->unk210 % 140 + 48; + score2 = 188; + } else { + score1 = 0; + score2 = 0; + } + } else { + if (bluramount >= 5000) { + score2 = 48; + + if (chr->aibot->unk210 & 1) { + score1 = 0; + score2 = 0; + } + } else if (bluramount > 3500) { + u32 value = (-bluramount * 16 + 80000) / 1500; + + if (value > 15) { + value = 15; + } + + value *= value; + value *= value; + value *= value; + + if (value < chr->aibot->unk210) { + score2 = 48; + + if (chr->aibot->unk210 & 1) { + score1 = 0; + score2 = 0; + } + } + } + } + } + break; + case WEAPON_NBOMB: + if (arg7 && chr->target != -1) { + mpchrGetTargetsWeaponNum(chr); + } + break; + } + + if (arg8) { + s32 weaponindex; + s32 extra = 0; + f32 float1; + f32 killrate = 1; + f32 float2; + + if (g_Vars.lvframe60 > 0) { + killrate = g_Vars.totalkills * 3600.0f / (f32)(g_Vars.lvframe60 * g_MpNumPlayers); + + if (killrate < 1) { + killrate = 1; + } + } + + weaponindex = mpGetWeaponIndexByWeaponNum(weaponnum); + + if (weaponindex >= 0) { + float2 = ceilf(chr->aibot->unk274[weaponindex][funcnum] * (1.0f / 3600.0f)); + + if (float2 > 0) { + float1 = chr->aibot->killsbygunfunc[weaponindex][funcnum]; + + if (chr->aibot->simulant->difficulty >= SIMDIFF_NORMAL) { + float1 -= 3.0f * chr->aibot->suicidesbygunfunc[weaponindex][funcnum]; + } + + float1 = float1 / float2; + + extra = float1 * 10.0f / killrate; + } + + if (extra > 30) { + extra = 30; + } + + extra += chr->aibot->unk2a8[weaponindex]; + + score1 += extra; + score2 += extra; + + if (score1 < 0) { + score1 = 0; + } + + if (score2 < 0) { + score2 = 0; + } + } + } + + *dst1 = score1; + *dst2 = score2; +} GLOBAL_ASM( glabel func0f198db4 @@ -1732,7 +1014,7 @@ glabel func0f198db4 /* f198dd4: afb9001c */ sw $t9,0x1c($sp) /* f198dd8: afae0010 */ sw $t6,0x10($sp) /* f198ddc: afaf0014 */ sw $t7,0x14($sp) -/* f198de0: 0fc660ce */ jal func0f198338 +/* f198de0: 0fc660ce */ jal aibotScoreWeapon /* f198de4: afb80018 */ sw $t8,0x18($sp) /* f198de8: 8fbf002c */ lw $ra,0x2c($sp) /* f198dec: 27bd0030 */ addiu $sp,$sp,0x30 @@ -1752,7 +1034,7 @@ glabel func0f198df8 /* f198e14: afa0001c */ sw $zero,0x1c($sp) /* f198e18: afae0010 */ sw $t6,0x10($sp) /* f198e1c: afaf0014 */ sw $t7,0x14($sp) -/* f198e20: 0fc660ce */ jal func0f198338 +/* f198e20: 0fc660ce */ jal aibotScoreWeapon /* f198e24: afb80018 */ sw $t8,0x18($sp) /* f198e28: 8fbf002c */ lw $ra,0x2c($sp) /* f198e2c: 27bd0030 */ addiu $sp,$sp,0x30 @@ -1765,16 +1047,16 @@ glabel func0f198e38 /* f198e38: 10a00008 */ beqz $a1,.L0f198e5c /* f198e3c: 0004c900 */ sll $t9,$a0,0x4 /* f198e40: 00047100 */ sll $t6,$a0,0x4 -/* f198e44: 3c028008 */ lui $v0,%hi(var80087eb4) +/* f198e44: 3c028008 */ lui $v0,%hi(g_AibotWeaponPreferences+0x4) /* f198e48: 004e1021 */ addu $v0,$v0,$t6 -/* f198e4c: 94427eb4 */ lhu $v0,%lo(var80087eb4)($v0) +/* f198e4c: 94427eb4 */ lhu $v0,%lo(g_AibotWeaponPreferences+0x4)($v0) /* f198e50: 00027d80 */ sll $t7,$v0,0x16 /* f198e54: 03e00008 */ jr $ra /* f198e58: 000f1702 */ srl $v0,$t7,0x1c .L0f198e5c: -/* f198e5c: 3c028008 */ lui $v0,%hi(var80087eb4) +/* f198e5c: 3c028008 */ lui $v0,%hi(g_AibotWeaponPreferences+0x4) /* f198e60: 00591021 */ addu $v0,$v0,$t9 -/* f198e64: 94427eb4 */ lhu $v0,%lo(var80087eb4)($v0) +/* f198e64: 94427eb4 */ lhu $v0,%lo(g_AibotWeaponPreferences+0x4)($v0) /* f198e68: 00024480 */ sll $t0,$v0,0x12 /* f198e6c: 00081702 */ srl $v0,$t0,0x1c /* f198e70: 03e00008 */ jr $ra @@ -1793,9 +1075,9 @@ glabel func0f198e78 /* f198e94: 10c0000b */ beqz $a2,.L0f198ec4 /* f198e98: 00055900 */ sll $t3,$a1,0x4 /* f198e9c: 0005c900 */ sll $t9,$a1,0x4 -/* f198ea0: 3c088008 */ lui $t0,%hi(var80087eb4) +/* f198ea0: 3c088008 */ lui $t0,%hi(g_AibotWeaponPreferences+0x4) /* f198ea4: 01194021 */ addu $t0,$t0,$t9 -/* f198ea8: 95087eb4 */ lhu $t0,%lo(var80087eb4)($t0) +/* f198ea8: 95087eb4 */ lhu $t0,%lo(g_AibotWeaponPreferences+0x4)($t0) /* f198eac: 00084d80 */ sll $t1,$t0,0x16 /* f198eb0: 00095702 */ srl $t2,$t1,0x1c /* f198eb4: 1140000b */ beqz $t2,.L0f198ee4 @@ -1803,9 +1085,9 @@ glabel func0f198e78 /* f198ebc: 03e00008 */ jr $ra /* f198ec0: 00001025 */ or $v0,$zero,$zero .L0f198ec4: -/* f198ec4: 3c0c8008 */ lui $t4,%hi(var80087eb4) +/* f198ec4: 3c0c8008 */ lui $t4,%hi(g_AibotWeaponPreferences+0x4) /* f198ec8: 018b6021 */ addu $t4,$t4,$t3 -/* f198ecc: 958c7eb4 */ lhu $t4,%lo(var80087eb4)($t4) +/* f198ecc: 958c7eb4 */ lhu $t4,%lo(g_AibotWeaponPreferences+0x4)($t4) /* f198ed0: 000c6c80 */ sll $t5,$t4,0x12 /* f198ed4: 000d7702 */ srl $t6,$t5,0x1c /* f198ed8: 11c00002 */ beqz $t6,.L0f198ee4 @@ -2064,8 +1346,8 @@ glabel var7f1b9094 .L0f19925c: /* f19925c: 06200036 */ bltz $s1,.L0f199338 /* f199260: 24100001 */ addiu $s0,$zero,0x1 -/* f199264: 3c198008 */ lui $t9,%hi(var80087eb0) -/* f199268: 27397eb0 */ addiu $t9,$t9,%lo(var80087eb0) +/* f199264: 3c198008 */ lui $t9,%hi(g_AibotWeaponPreferences) +/* f199268: 27397eb0 */ addiu $t9,$t9,%lo(g_AibotWeaponPreferences) /* f19926c: 00117900 */ sll $t7,$s1,0x4 /* f199270: 01f9a021 */ addu $s4,$t7,$t9 .L0f199274: diff --git a/src/game/mpstats.c b/src/game/mpstats.c index 2f574ecae..fc327ba05 100644 --- a/src/game/mpstats.c +++ b/src/game/mpstats.c @@ -342,5 +342,5 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum) } } - g_Vars.unk000488++; + g_Vars.totalkills++; } diff --git a/src/include/data.h b/src/include/data.h index 2c49bfbfb..74b9a2f32 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -528,7 +528,7 @@ extern struct mppreset g_MpPresets[NUM_MPPRESETS]; extern u32 g_TeamColours[]; extern u16 var80087ce4[]; extern u8 g_NumMpSimulantChrs; -extern u32 var80087eb0; +extern struct aibotweaponpreference g_AibotWeaponPreferences[]; extern u32 var80087eb4; extern struct challenge g_MpChallenges[NUM_CHALLENGES]; extern u8 g_FrIsValidWeapon; diff --git a/src/include/game/game_197600.h b/src/include/game/game_197600.h index dd8f524aa..8d93a5275 100644 --- a/src/include/game/game_197600.h +++ b/src/include/game/game_197600.h @@ -18,7 +18,7 @@ bool aibotGiveProp(struct chrdata *chr, struct prop *prop); u32 func0f198068(void); bool mpHasShield(void); s32 mpGetWeaponIndexByWeaponNum(s32 weaponnum); -void func0f198338(struct chrdata *chr, s32 weaponnum, s32 arg2, s32 arg3, s32 arg4, s32 *arg5, s32 *arg6, s32 arg7, s32 arg8); +void aibotScoreWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2, bool arg7, bool arg8); u32 func0f198db4(void); u32 func0f198df8(void); s32 func0f198e38(s32 weaponnum, s32 funcnum); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index c36bb8609..a8e3766c0 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -129,7 +129,7 @@ struct g_vars { /*000480*/ u16 unk000480; /*000482*/ u16 unk000482; /*000484*/ s32 mphilltime; - /*000488*/ u32 unk000488; + /*000488*/ s32 totalkills; /*00048c*/ u32 unk00048c; // 1 when entering game setup diff --git a/src/include/types.h b/src/include/types.h index 479281afb..5b06ae4c4 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -503,7 +503,7 @@ struct aibot { /*0x210*/ u32 unk210; /*0x214*/ f32 killsbygunfunc[6][2]; /*0x244*/ f32 suicidesbygunfunc[6][2]; - /*0x274*/ u32 unk274[6][2]; + /*0x274*/ s32 unk274[6][2]; /*0x2a4*/ u32 unk2a4; /*0x2a8*/ u32 unk2a8[6]; /*0x2c0*/ u32 unk2c0; @@ -6957,4 +6957,21 @@ struct portalvertices { struct coord vertices[1]; }; +struct aibotweaponpreference { + u8 unk00; + u8 unk01; + u8 unk02; + u8 unk03; + u16 unk04_00 : 1; + u16 unk04_01 : 1; + u16 unk04_02 : 2; + u16 unk04_04 : 4; + u16 unk04_08 : 4; + u16 unk06; + u16 unk08; + u16 unk0a; + u16 unk0c; + u16 unk0e; +}; + #endif