Rename bot files and functions

This commit is contained in:
Ryan Dwyer
2021-12-26 15:12:58 +10:00
parent 42922df7d2
commit 50b60dc92a
59 changed files with 3732 additions and 3570 deletions
+2 -2
View File
@@ -42,7 +42,7 @@ The decomp project wraps all decompiled piracy checks in `#if PIRACYCHECKS` stat
**Payload:** Rewrites the start of `func0f08f968` so it immediately returns false. This makes it impossible to open doors.
### propobjHandlePickupByAibot
### botPickupProp
**When Called:** When a simulant in multiplayer picks up an item.
@@ -54,7 +54,7 @@ The decomp project wraps all decompiled piracy checks in `#if PIRACYCHECKS` stat
**When Called:** When a guard uncloaks.
**What It Checks:** Checksums `propobjHandlePickupByAibot` to make sure it hasn't been modified.
**What It Checks:** Checksums `botPickupProp` to make sure it hasn't been modified.
**Payload:** Disables the ability for the player and other characters to go up or down slopes. This is done by nopping the `jr ra` instruction in `cdFindGroundY`, which causes it to flow into the following function, which unconditionally returns false and only exists for this purpose.
+6 -5
View File
@@ -47,7 +47,8 @@
build/ROMID/game/game_013ee0.o (section); \
build/ROMID/game/game_0147a0.o (section); \
build/ROMID/game/game_0147d0.o (section); \
build/ROMID/game/game_014e90.o (section); \
build/ROMID/game/botmgr.o (section); \
build/ROMID/game/botinvinit.o (section); \
build/ROMID/game/game_014f10.o (section); \
build/ROMID/game/game_015010.o (section); \
build/ROMID/game/game_0150a0.o (section); \
@@ -203,10 +204,10 @@
build/ROMID/game/mplayer/scenarios.o (section); \
build/ROMID/game/mplayer/mplayer.o (section); \
build/ROMID/game/radar.o (section); \
build/ROMID/game/game_190260.o (section); \
build/ROMID/game/game_197600.o (section); \
build/ROMID/game/game_197c00.o (section); \
build/ROMID/game/game_1999b0.o (section); \
build/ROMID/game/bot.o (section); \
build/ROMID/game/botcmd.o (section); \
build/ROMID/game/botinv.o (section); \
build/ROMID/game/botact.o (section); \
build/ROMID/game/mplayer/mpaicommands.o (section); \
build/ROMID/game/vmstats.o (section); \
build/ROMID/game/game_19aa80.o (section); \
+6 -5
View File
@@ -47,7 +47,8 @@
build/ROMID/game/game_013ee0.o (section); \
build/ROMID/game/game_0147a0.o (section); \
build/ROMID/game/game_0147d0.o (section); \
build/ROMID/game/game_014e90.o (section); \
build/ROMID/game/botmgr.o (section); \
build/ROMID/game/botinvinit.o (section); \
build/ROMID/game/game_014f10.o (section); \
build/ROMID/game/game_015010.o (section); \
build/ROMID/game/game_0150a0.o (section); \
@@ -202,10 +203,10 @@
build/ROMID/game/mplayer/scenarios.o (section); \
build/ROMID/game/mplayer/mplayer.o (section); \
build/ROMID/game/radar.o (section); \
build/ROMID/game/game_190260.o (section); \
build/ROMID/game/game_197600.o (section); \
build/ROMID/game/game_197c00.o (section); \
build/ROMID/game/game_1999b0.o (section); \
build/ROMID/game/bot.o (section); \
build/ROMID/game/botcmd.o (section); \
build/ROMID/game/botinv.o (section); \
build/ROMID/game/botact.o (section); \
build/ROMID/game/mplayer/mpaicommands.o (section); \
build/ROMID/game/vmstats.o (section); \
build/ROMID/game/game_19aa80.o (section); \
+6 -5
View File
@@ -47,7 +47,8 @@
build/ROMID/game/game_013ee0.o (section); \
build/ROMID/game/game_0147a0.o (section); \
build/ROMID/game/game_0147d0.o (section); \
build/ROMID/game/game_014e90.o (section); \
build/ROMID/game/botmgr.o (section); \
build/ROMID/game/botinvinit.o (section); \
build/ROMID/game/game_014f10.o (section); \
build/ROMID/game/game_015010.o (section); \
build/ROMID/game/game_0150a0.o (section); \
@@ -202,10 +203,10 @@
build/ROMID/game/mplayer/scenarios.o (section); \
build/ROMID/game/mplayer/mplayer.o (section); \
build/ROMID/game/radar.o (section); \
build/ROMID/game/game_190260.o (section); \
build/ROMID/game/game_197600.o (section); \
build/ROMID/game/game_197c00.o (section); \
build/ROMID/game/game_1999b0.o (section); \
build/ROMID/game/bot.o (section); \
build/ROMID/game/botcmd.o (section); \
build/ROMID/game/botinv.o (section); \
build/ROMID/game/botact.o (section); \
build/ROMID/game/mplayer/mpaicommands.o (section); \
build/ROMID/game/vmstats.o (section); \
build/ROMID/game/game_19aa80.o (section); \
+31 -31
View File
@@ -10,8 +10,8 @@
#include "game/inventory/inventory.h"
#include "game/game_1531a0.h"
#include "game/file.h"
#include "game/game_190260.h"
#include "game/game_197600.h"
#include "game/bot.h"
#include "game/botcmd.h"
#include "game/gfxmemory.h"
#include "game/training/training.h"
#include "game/lang.h"
@@ -149,9 +149,9 @@ glabel var7f1b2cd8
/* f0fd740: 0338c821 */ addu $t9,$t9,$t8
/* f0fd744: 93392103 */ lbu $t9,%lo(g_AmMenus+0x33)($t9)
/* f0fd748: 256b9fc0 */ addiu $t3,$t3,%lo(g_Vars)
/* f0fd74c: 3c06800b */ lui $a2,%hi(g_MpNumPlayers)
/* f0fd74c: 3c06800b */ lui $a2,%hi(g_MpNumChrs)
/* f0fd750: 1320004b */ beqz $t9,.L0f0fd880
/* f0fd754: 3c0e800b */ lui $t6,%hi(g_MpNumPlayers)
/* f0fd754: 3c0e800b */ lui $t6,%hi(g_MpNumChrs)
/* f0fd758: 8d6e0284 */ lw $t6,0x284($t3)
/* f0fd75c: 8d6c006c */ lw $t4,0x6c($t3)
/* f0fd760: 00002825 */ or $a1,$zero,$zero
@@ -185,15 +185,15 @@ glabel var7f1b2cd8
/* f0fd7c4: 10000001 */ b .L0f0fd7cc
/* f0fd7c8: 24030001 */ addiu $v1,$zero,0x1
.L0f0fd7cc:
/* f0fd7cc: 8cc6c530 */ lw $a2,%lo(g_MpNumPlayers)($a2)
/* f0fd7cc: 8cc6c530 */ lw $a2,%lo(g_MpNumChrs)($a2)
/* f0fd7d0: 0064c821 */ addu $t9,$v1,$a0
/* f0fd7d4: 03277021 */ addu $t6,$t9,$a3
/* f0fd7d8: 01c91021 */ addu $v0,$t6,$t1
/* f0fd7dc: 0046082a */ slt $at,$v0,$a2
/* f0fd7e0: 10200010 */ beqz $at,.L0f0fd824
/* f0fd7e4: 0002c080 */ sll $t8,$v0,0x2
/* f0fd7e8: 3c19800b */ lui $t9,%hi(g_MpPlayerChrs)
/* f0fd7ec: 2739c4d0 */ addiu $t9,$t9,%lo(g_MpPlayerChrs)
/* f0fd7e8: 3c19800b */ lui $t9,%hi(g_MpAllChrPtrs)
/* f0fd7ec: 2739c4d0 */ addiu $t9,$t9,%lo(g_MpAllChrPtrs)
/* f0fd7f0: 00067080 */ sll $t6,$a2,0x2
/* f0fd7f4: 01d92021 */ addu $a0,$t6,$t9
/* f0fd7f8: 03191021 */ addu $v0,$t8,$t9
@@ -239,7 +239,7 @@ glabel var7f1b2cd8
/* f0fd878: 100000f9 */ b .L0f0fdc60
/* f0fd87c: af050000 */ sw $a1,0x0($t8)
.L0f0fd880:
/* f0fd880: 8dcec530 */ lw $t6,%lo(g_MpNumPlayers)($t6)
/* f0fd880: 8dcec530 */ lw $t6,%lo(g_MpNumChrs)($t6)
/* f0fd884: 8faf00c0 */ lw $t7,0xc0($sp)
/* f0fd888: 25d9ffff */ addiu $t9,$t6,-1
/* f0fd88c: 100000f4 */ b .L0f0fdc60
@@ -258,8 +258,8 @@ glabel var7f1b2cd8
/* f0fd8c0: 8f020000 */ lw $v0,0x0($t8)
/* f0fd8c4: 81580000 */ lb $t8,0x0($t2)
/* f0fd8c8: 8d670284 */ lw $a3,0x284($t3)
/* f0fd8cc: 3c09800b */ lui $t1,%hi(g_MpPlayerChrs)
/* f0fd8d0: 2529c4d0 */ addiu $t1,$t1,%lo(g_MpPlayerChrs)
/* f0fd8cc: 3c09800b */ lui $t1,%hi(g_MpAllChrPtrs)
/* f0fd8d0: 2529c4d0 */ addiu $t1,$t1,%lo(g_MpAllChrPtrs)
/* f0fd8d4: 00f87021 */ addu $t6,$a3,$t8
/* f0fd8d8: 91d91be5 */ lbu $t9,0x1be5($t6)
/* f0fd8dc: 3c06800b */ lui $a2,%hi(var800ac4cc)
@@ -303,14 +303,14 @@ glabel var7f1b2cd8
.L0f0fd964:
/* f0fd964: 91f81be7 */ lbu $t8,0x1be7($t7)
/* f0fd968: 8ccf0000 */ lw $t7,0x0($a2)
/* f0fd96c: 3c09800b */ lui $t1,%hi(g_MpPlayerChrs)
/* f0fd970: 2529c4d0 */ addiu $t1,$t1,%lo(g_MpPlayerChrs)
/* f0fd96c: 3c09800b */ lui $t1,%hi(g_MpAllChrPtrs)
/* f0fd970: 2529c4d0 */ addiu $t1,$t1,%lo(g_MpAllChrPtrs)
/* f0fd974: 00187080 */ sll $t6,$t8,0x2
/* f0fd978: 012ec821 */ addu $t9,$t1,$t6
/* f0fd97c: 8f240000 */ lw $a0,0x0($t9)
/* f0fd980: 8de5001c */ lw $a1,0x1c($t7)
/* f0fd984: afa6004c */ sw $a2,0x4c($sp)
/* f0fd988: 0fc6490e */ jal mpAibotApplyAttack
/* f0fd988: 0fc6490e */ jal botApplyAttack
/* f0fd98c: afa20098 */ sw $v0,0x98($sp)
/* f0fd990: 3c0b800a */ lui $t3,%hi(g_Vars)
/* f0fd994: 256b9fc0 */ addiu $t3,$t3,%lo(g_Vars)
@@ -325,7 +325,7 @@ glabel var7f1b2cd8
/* f0fd9b8: 10000003 */ b .L0f0fd9c8
/* f0fd9bc: 00000000 */ nop
.L0f0fd9c0:
/* f0fd9c0: 0fc6490e */ jal mpAibotApplyAttack
/* f0fd9c0: 0fc6490e */ jal botApplyAttack
/* f0fd9c4: 8c65001c */ lw $a1,0x1c($v1)
.L0f0fd9c8:
/* f0fd9c8: 0fc3cdb7 */ jal menuPopDialog
@@ -354,7 +354,7 @@ glabel var7f1b2cd8
/* f0fda24: 8de30004 */ lw $v1,0x4($t7)
/* f0fda28: 814f0000 */ lb $t7,0x0($t2)
/* f0fda2c: 8d670284 */ lw $a3,0x284($t3)
/* f0fda30: 3c09800b */ lui $t1,%hi(g_MpPlayerChrs)
/* f0fda30: 3c09800b */ lui $t1,%hi(g_MpAllChrPtrs)
/* f0fda34: 3c04800b */ lui $a0,%hi(var800ac4cc)
/* f0fda38: 00ef7021 */ addu $t6,$a3,$t7
/* f0fda3c: 91d91be5 */ lbu $t9,0x1be5($t6)
@@ -362,7 +362,7 @@ glabel var7f1b2cd8
/* f0fda44: 2484c4cc */ addiu $a0,$a0,%lo(var800ac4cc)
/* f0fda48: 0019c080 */ sll $t8,$t9,0x2
/* f0fda4c: 01384821 */ addu $t1,$t1,$t8
/* f0fda50: 8d29c4d0 */ lw $t1,%lo(g_MpPlayerChrs)($t1)
/* f0fda50: 8d29c4d0 */ lw $t1,%lo(g_MpAllChrPtrs)($t1)
/* f0fda54: 91480033 */ lbu $t0,0x33($t2)
/* f0fda58: 2405fffc */ addiu $a1,$zero,-4
/* f0fda5c: 8de60004 */ lw $a2,0x4($t7)
@@ -388,8 +388,8 @@ glabel var7f1b2cd8
.L0f0fdaa0:
/* f0fdaa0: 0463fff0 */ bgezl $v1,.L0f0fda64
/* f0fdaa4: 24a50004 */ addiu $a1,$a1,0x4
/* f0fdaa8: 3c0f800b */ lui $t7,%hi(var800ac500)
/* f0fdaac: 25efc500 */ addiu $t7,$t7,%lo(var800ac500)
/* f0fdaa8: 3c0f800b */ lui $t7,%hi(g_MpAllChrConfigPtrs)
/* f0fdaac: 25efc500 */ addiu $t7,$t7,%lo(g_MpAllChrConfigPtrs)
/* f0fdab0: 00af7021 */ addu $t6,$a1,$t7
/* f0fdab4: afae0058 */ sw $t6,0x58($sp)
/* f0fdab8: 8dd80000 */ lw $t8,0x0($t6)
@@ -680,7 +680,7 @@ void amApply(s32 slot)
case 1: // Function
if (g_Vars.currentplayer->gunctrl.weaponnum >= WEAPON_UNARMED
&& g_Vars.currentplayer->gunctrl.weaponnum <= WEAPON_COMBATBOOST
&& g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7))) {
&& g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7))) {
if (slot == 1) {
g_AmMenus[g_AmIndex].togglefunc = true;
}
@@ -706,10 +706,10 @@ void amApply(s32 slot)
} else if (g_Vars.normmplayerisrunning) {
if (g_AmMenus[g_AmIndex].allbots) {
for (i = 0; i < g_Vars.currentplayer->numaibuddies; i++) {
mpAibotApplyCommand(g_MpPlayerChrs[g_Vars.currentplayer->aibuddynums[i]], g_AmBotCommands[slot]);
botcmdApply(g_MpAllChrPtrs[g_Vars.currentplayer->aibuddynums[i]], g_AmBotCommands[slot]);
}
} else {
mpAibotApplyCommand(g_MpPlayerChrs[g_Vars.currentplayer->aibuddynums[g_AmMenus[g_AmIndex].screenindex - 2]], g_AmBotCommands[slot]);
botcmdApply(g_MpAllChrPtrs[g_Vars.currentplayer->aibuddynums[g_AmMenus[g_AmIndex].screenindex - 2]], g_AmBotCommands[slot]);
}
}
}
@@ -778,7 +778,7 @@ void amGetSlotDetails(s32 slot, u32 *flags, char *label)
if (!secfunc
|| g_Vars.currentplayer->gunctrl.weaponnum < WEAPON_UNARMED
|| g_Vars.currentplayer->gunctrl.weaponnum > WEAPON_COMBATBOOST
|| (g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7))) == 0) {
|| (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7))) == 0) {
*flags |= AMSLOTFLAG_CURRENT;
}
@@ -789,7 +789,7 @@ void amGetSlotDetails(s32 slot, u32 *flags, char *label)
if (!prifunc || (
g_Vars.currentplayer->gunctrl.weaponnum >= WEAPON_UNARMED
&& g_Vars.currentplayer->gunctrl.weaponnum <= WEAPON_COMBATBOOST
&& g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7)))) {
&& g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7)))) {
*flags |= AMSLOTFLAG_CURRENT;
}
@@ -818,7 +818,7 @@ void amGetSlotDetails(s32 slot, u32 *flags, char *label)
if (slot == 4) {
strcpy(label, langGet(L_MISC_172)); // "Orders"
} else {
strcpy(label, mpGetBotCommandName(g_AmBotCommands[slot]));
strcpy(label, botGetCommandName(g_AmBotCommands[slot]));
}
}
break;
@@ -1459,10 +1459,10 @@ Gfx *amRenderAibotInfo(Gfx *gdl, s32 buddynum)
if (!g_AmMenus[g_AmIndex].allbots) {
buddynum = g_Vars.currentplayer->aibuddynums[buddynum];
aibotname = var800ac500[buddynum]->name;
aibotname = g_MpAllChrConfigPtrs[buddynum]->name;
if (g_MpPlayerChrs[buddynum]->aibot) {
weaponnum = g_MpPlayerChrs[buddynum]->aibot->weaponnum;
if (g_MpAllChrPtrs[buddynum]->aibot) {
weaponnum = g_MpAllChrPtrs[buddynum]->aibot->weaponnum;
} else {
weaponnum = 0;
}
@@ -1508,7 +1508,7 @@ Gfx *amRenderAibotInfo(Gfx *gdl, s32 buddynum)
gdl = textRender(gdl, &x, &y, weaponname, g_AmFont1, g_AmFont2, -1,
0x000000ff, 320, 240, 0, 0);
g_Vars.currentplayer->commandingaibot = g_MpPlayerChrs[buddynum];
g_Vars.currentplayer->commandingaibot = g_MpAllChrPtrs[buddynum];
} else {
char *title = langGet(L_MISC_215); // "All Simulants"
@@ -4268,10 +4268,10 @@ glabel amRender
/* f101198: 1420000e */ bnez $at,.L0f1011d4
/* f10119c: 8fae01c4 */ lw $t6,0x1c4($sp)
/* f1011a0: 93190000 */ lbu $t9,0x0($t8)
/* f1011a4: 3c18800b */ lui $t8,%hi(g_MpPlayerChrs)
/* f1011a4: 3c18800b */ lui $t8,%hi(g_MpAllChrPtrs)
/* f1011a8: 000e7880 */ sll $t7,$t6,0x2
/* f1011ac: 030fc021 */ addu $t8,$t8,$t7
/* f1011b0: 8f18c4d0 */ lw $t8,%lo(g_MpPlayerChrs)($t8)
/* f1011b0: 8f18c4d0 */ lw $t8,%lo(g_MpAllChrPtrs)($t8)
/* f1011b4: 3c02800b */ lui $v0,%hi(g_AmBotCommands)
/* f1011b8: 00591021 */ addu $v0,$v0,$t9
/* f1011bc: 8f1902d4 */ lw $t9,0x2d4($t8)
@@ -6988,7 +6988,7 @@ glabel amRender
// && mode == AMSLOTMODE_DEFAULT
// && g_AmMenus[g_AmIndex].screenindex >= 2) {
// s32 a = g_AmBotCommands[var800719a0[row][column]];
// s32 b = g_MpPlayerChrs[mpchrnum]->aibot->command;
// s32 b = g_MpAllChrPtrs[mpchrnum]->aibot->command;
//
// if (a == b) {
// mode = AMSLOTMODE_CURRENT;
+34 -34
View File
@@ -2922,14 +2922,14 @@ glabel bgunTickIncIdle
/* f099404: 2483ffff */ addiu $v1,$a0,-1
/* f099408: 000370c3 */ sra $t6,$v1,0x3
/* f09940c: 8d6c0070 */ lw $t4,0x70($t3)
/* f099410: 3c18800b */ lui $t8,%hi(g_MpPlayers+0x97)
/* f099410: 3c18800b */ lui $t8,%hi(g_PlayerConfigsArray+0x97)
/* f099414: 30790007 */ andi $t9,$v1,0x7
/* f099418: 000c6880 */ sll $t5,$t4,0x2
/* f09941c: 01ac6821 */ addu $t5,$t5,$t4
/* f099420: 000d6940 */ sll $t5,$t5,0x5
/* f099424: 01ae7821 */ addu $t7,$t5,$t6
/* f099428: 030fc021 */ addu $t8,$t8,$t7
/* f09942c: 9318c84f */ lbu $t8,%lo(g_MpPlayers+0x97)($t8)
/* f09942c: 9318c84f */ lbu $t8,%lo(g_PlayerConfigsArray+0x97)($t8)
/* f099430: 24090001 */ addiu $t1,$zero,0x1
/* f099434: 03295004 */ sllv $t2,$t1,$t9
/* f099438: 030a1024 */ and $v0,$t8,$t2
@@ -3243,7 +3243,7 @@ glabel bgunTickIncIdle
// // Consider switching to other gun function
// usesec = g_Vars.currentplayer->gunctrl.weaponnum >= WEAPON_UNARMED
// && g_Vars.currentplayer->gunctrl.weaponnum <= WEAPON_COMBATBOOST
// && (g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7)));
// && (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->gunctrl.weaponnum - 1) >> 3] & (1 << (g_Vars.currentplayer->gunctrl.weaponnum - 1 & 7)));
//
// if (usesec == gunfunc) {
// sp30 = bgun0f098ca0(1 - hand->gset.weaponfunc, info, hand);
@@ -27835,14 +27835,14 @@ glabel var7f1acb14
/* f0a8a9c: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8aa0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8aa4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_MpPlayers+0x97)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_PlayerConfigsArray+0x97)
/* f0a8aac: 304a0007 */ andi $t2,$v0,0x7
/* f0a8ab0: 000e7880 */ sll $t7,$t6,0x2
/* f0a8ab4: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8ab8: 000f7940 */ sll $t7,$t7,0x5
/* f0a8abc: 01f8c821 */ addu $t9,$t7,$t8
/* f0a8ac0: 01394821 */ addu $t1,$t1,$t9
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_MpPlayers+0x97)($t1)
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_PlayerConfigsArray+0x97)($t1)
/* f0a8ac8: 240b0001 */ addiu $t3,$zero,0x1
/* f0a8acc: 014b6004 */ sllv $t4,$t3,$t2
/* f0a8ad0: 012c2024 */ and $a0,$t1,$t4
@@ -27854,8 +27854,8 @@ glabel var7f1acb14
/* f0a8ae4: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ae8: 0002c8c3 */ sra $t9,$v0,0x3
/* f0a8aec: 8dcf0070 */ lw $t7,0x70($t6)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_MpPlayers)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_MpPlayers)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_PlayerConfigsArray)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_PlayerConfigsArray)
/* f0a8af8: 000fc080 */ sll $t8,$t7,0x2
/* f0a8afc: 030fc021 */ addu $t8,$t8,$t7
/* f0a8b00: 0018c140 */ sll $t8,$t8,0x5
@@ -27906,9 +27906,9 @@ glabel var7f1acb14
/* f0a8ba0: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ba4: 8d0d0288 */ lw $t5,0x288($t0)
/* f0a8ba8: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bb0: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8bb8: 304a0007 */ andi $t2,$v0,0x7
/* f0a8bbc: 000e7880 */ sll $t7,$t6,0x2
/* f0a8bc0: 01ee7821 */ addu $t7,$t7,$t6
@@ -27927,8 +27927,8 @@ glabel var7f1acb14
/* f0a8bec: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8bf0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bf4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8c00: 000e7880 */ sll $t7,$t6,0x2
/* f0a8c04: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8c08: 000f7940 */ sll $t7,$t7,0x5
@@ -28103,14 +28103,14 @@ glabel var7f1acb14
/* f0a8a9c: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8aa0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8aa4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_MpPlayers+0x97)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_PlayerConfigsArray+0x97)
/* f0a8aac: 304a0007 */ andi $t2,$v0,0x7
/* f0a8ab0: 000e7880 */ sll $t7,$t6,0x2
/* f0a8ab4: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8ab8: 000f7940 */ sll $t7,$t7,0x5
/* f0a8abc: 01f8c821 */ addu $t9,$t7,$t8
/* f0a8ac0: 01394821 */ addu $t1,$t1,$t9
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_MpPlayers+0x97)($t1)
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_PlayerConfigsArray+0x97)($t1)
/* f0a8ac8: 240b0001 */ addiu $t3,$zero,0x1
/* f0a8acc: 014b6004 */ sllv $t4,$t3,$t2
/* f0a8ad0: 012c2024 */ and $a0,$t1,$t4
@@ -28122,8 +28122,8 @@ glabel var7f1acb14
/* f0a8ae4: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ae8: 0002c8c3 */ sra $t9,$v0,0x3
/* f0a8aec: 8dcf0070 */ lw $t7,0x70($t6)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_MpPlayers)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_MpPlayers)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_PlayerConfigsArray)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_PlayerConfigsArray)
/* f0a8af8: 000fc080 */ sll $t8,$t7,0x2
/* f0a8afc: 030fc021 */ addu $t8,$t8,$t7
/* f0a8b00: 0018c140 */ sll $t8,$t8,0x5
@@ -28174,9 +28174,9 @@ glabel var7f1acb14
/* f0a8ba0: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ba4: 8d0d0288 */ lw $t5,0x288($t0)
/* f0a8ba8: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bb0: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8bb8: 304a0007 */ andi $t2,$v0,0x7
/* f0a8bbc: 000e7880 */ sll $t7,$t6,0x2
/* f0a8bc0: 01ee7821 */ addu $t7,$t7,$t6
@@ -28195,8 +28195,8 @@ glabel var7f1acb14
/* f0a8bec: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8bf0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bf4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8c00: 000e7880 */ sll $t7,$t6,0x2
/* f0a8c04: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8c08: 000f7940 */ sll $t7,$t7,0x5
@@ -28371,14 +28371,14 @@ glabel var7f1a7044nb
/* f0a8a9c: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8aa0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8aa4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_MpPlayers+0x97)
/* f0a8aa8: 3c09800b */ lui $t1,%hi(g_PlayerConfigsArray+0x97)
/* f0a8aac: 304a0007 */ andi $t2,$v0,0x7
/* f0a8ab0: 000e7880 */ sll $t7,$t6,0x2
/* f0a8ab4: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8ab8: 000f7940 */ sll $t7,$t7,0x5
/* f0a8abc: 01f8c821 */ addu $t9,$t7,$t8
/* f0a8ac0: 01394821 */ addu $t1,$t1,$t9
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_MpPlayers+0x97)($t1)
/* f0a8ac4: 9129c84f */ lbu $t1,%lo(g_PlayerConfigsArray+0x97)($t1)
/* f0a8ac8: 240b0001 */ addiu $t3,$zero,0x1
/* f0a8acc: 014b6004 */ sllv $t4,$t3,$t2
/* f0a8ad0: 012c2024 */ and $a0,$t1,$t4
@@ -28390,8 +28390,8 @@ glabel var7f1a7044nb
/* f0a8ae4: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ae8: 0002c8c3 */ sra $t9,$v0,0x3
/* f0a8aec: 8dcf0070 */ lw $t7,0x70($t6)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_MpPlayers)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_MpPlayers)
/* f0a8af0: 3c0a800b */ lui $t2,%hi(g_PlayerConfigsArray)
/* f0a8af4: 254ac7b8 */ addiu $t2,$t2,%lo(g_PlayerConfigsArray)
/* f0a8af8: 000fc080 */ sll $t8,$t7,0x2
/* f0a8afc: 030fc021 */ addu $t8,$t8,$t7
/* f0a8b00: 0018c140 */ sll $t8,$t8,0x5
@@ -28442,9 +28442,9 @@ glabel var7f1a7044nb
/* f0a8ba0: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8ba4: 8d0d0288 */ lw $t5,0x288($t0)
/* f0a8ba8: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bac: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bb0: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bb4: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8bb8: 304a0007 */ andi $t2,$v0,0x7
/* f0a8bbc: 000e7880 */ sll $t7,$t6,0x2
/* f0a8bc0: 01ee7821 */ addu $t7,$t7,$t6
@@ -28463,8 +28463,8 @@ glabel var7f1a7044nb
/* f0a8bec: 24e2ffff */ addiu $v0,$a3,-1
/* f0a8bf0: 0002c0c3 */ sra $t8,$v0,0x3
/* f0a8bf4: 8dae0070 */ lw $t6,0x70($t5)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f0a8bf8: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f0a8bfc: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f0a8c00: 000e7880 */ sll $t7,$t6,0x2
/* f0a8c04: 01ee7821 */ addu $t7,$t7,$t6
/* f0a8c08: 000f7940 */ sll $t7,$t7,0x5
@@ -28546,12 +28546,12 @@ glabel var7f1a7044nb
// // A macro is probably used here, hence the duplicate checks
// if ((g_Vars.currentplayer->weaponnum >= WEAPON_UNARMED
// && g_Vars.currentplayer->weaponnum <= WEAPON_COMBATBOOST
// && (g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] & (1 << ((g_Vars.currentplayer->weaponnum - 1) & 7)))) != 1) {
// && (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] & (1 << ((g_Vars.currentplayer->weaponnum - 1) & 7)))) != 1) {
// // b24
// g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] |= 1 << ((g_Vars.currentplayer->weaponnum - 1) & 7);
// g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] |= 1 << ((g_Vars.currentplayer->weaponnum - 1) & 7);
// } else {
// // b34
// g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] &= ~(1 << ((g_Vars.currentplayer->weaponnum - 1) & 7));
// g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] &= ~(1 << ((g_Vars.currentplayer->weaponnum - 1) & 7));
// }
// }
//
@@ -28568,10 +28568,10 @@ glabel var7f1a7044nb
// && g_Vars.currentplayer->weaponnum <= WEAPON_COMBATBOOST) {
// if (!(g_Vars.currentplayer->weaponnum >= WEAPON_UNARMED
// && g_Vars.currentplayer->weaponnum <= WEAPON_COMBATBOOST
// && (g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] & (1 << ((g_Vars.currentplayer->weaponnum - 1) & 7))))) {
// g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] |= 1 << ((g_Vars.currentplayer->weaponnum - 1) & 7);
// && (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] & (1 << ((g_Vars.currentplayer->weaponnum - 1) & 7))))) {
// g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] |= 1 << ((g_Vars.currentplayer->weaponnum - 1) & 7);
// } else {
// g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] &= ~(1 << ((g_Vars.currentplayer->weaponnum - 1) & 7));
// g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[(g_Vars.currentplayer->weaponnum - 1) >> 3] &= ~(1 << ((g_Vars.currentplayer->weaponnum - 1) & 7));
// }
// }
// }
@@ -28596,7 +28596,7 @@ bool bgunIsUsingSecondaryFunction(void)
s32 index = (weaponnum - 1) >> 3;
s32 value = 1 << ((weaponnum - 1) & 7);
if (g_MpPlayers[g_Vars.currentplayerstats->mpindex].gunfuncs[index] & value) {
if (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].gunfuncs[index] & value) {
if (player->gunctrl.invertgunfunc == true) {
return false;
}
+2 -2
View File
@@ -2189,7 +2189,7 @@ void bwalk0f0c4d98(void)
void bwalkUpdateSpeedSideways(f32 targetspeed, f32 accelspeed, s32 mult)
{
if (g_Vars.normmplayerisrunning) {
targetspeed = (g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.unk1c + 25.0f) / 100 * targetspeed;
targetspeed = (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.unk1c + 25.0f) / 100 * targetspeed;
}
if (g_Vars.currentplayer->speedstrafe > targetspeed) {
@@ -2212,7 +2212,7 @@ void bwalkUpdateSpeedSideways(f32 targetspeed, f32 accelspeed, s32 mult)
void bwalkUpdateSpeedForwards(f32 targetspeed, f32 accelspeed)
{
if (g_Vars.normmplayerisrunning) {
targetspeed = (g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.unk1c + 25.0f) / 100 * targetspeed;
targetspeed = (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.unk1c + 25.0f) / 100 * targetspeed;
}
if (g_Vars.currentplayer->speedgo < targetspeed) {
File diff suppressed because it is too large Load Diff
+63 -49
View File
@@ -7,7 +7,7 @@
#include "game/bondgun.h"
#include "game/game_0b0fd0.h"
#include "game/game_127910.h"
#include "game/game_1999b0.h"
#include "game/botact.h"
#include "game/pad.h"
#include "game/padhalllv.h"
#include "game/propobj.h"
@@ -19,7 +19,7 @@
#include "data.h"
#include "types.h"
s32 weaponGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum)
s32 botactGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum)
{
if (weaponnum >= WEAPON_FALCON2 && weaponnum <= WEAPON_SUICIDEPILL) {
struct inventory_ammo *ammo = weaponGetAmmoByFunction(weaponnum, funcnum);
@@ -32,7 +32,7 @@ s32 weaponGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum)
return 0;
}
s32 weaponGetClipCapacityByFunction(s32 weaponnum, u32 funcnum)
s32 botactGetClipCapacityByFunction(s32 weaponnum, u32 funcnum)
{
if (weaponnum >= WEAPON_FALCON2 && weaponnum <= WEAPON_SUICIDEPILL) {
struct inventory_ammo *ammo = weaponGetAmmoByFunction(weaponnum, funcnum);
@@ -45,30 +45,27 @@ s32 weaponGetClipCapacityByFunction(s32 weaponnum, u32 funcnum)
return 0;
}
void aibotReloadWeapon(struct chrdata *chr, s32 handnum, bool withsound)
void botactReload(struct chrdata *chr, s32 handnum, bool withsound)
{
struct aibot *aibot = chr->aibot;
aibot->unk02c[handnum] = 0;
aibot->maulercharge[handnum] = 0;
if (chr->weapons_held[handnum]
&& func0f19a29c(aibot->weaponnum, aibot->gunfunc) == 0) {
s32 capacity = weaponGetClipCapacityByFunction(aibot->weaponnum, aibot->gunfunc);
if (chr->weapons_held[handnum] && !botactIsWeaponThrowable(aibot->weaponnum, aibot->gunfunc)) {
s32 capacity = botactGetClipCapacityByFunction(aibot->weaponnum, aibot->gunfunc);
if (capacity > 0) {
s32 tryamount = capacity - aibot->loadedammo[handnum];
s32 actualamount = aibotTryRemoveAmmoFromReserve(aibot, aibot->weaponnum, aibot->gunfunc, tryamount);
s32 actualamount = botactTryRemoveAmmoFromReserve(aibot, aibot->weaponnum, aibot->gunfunc, tryamount);
if (actualamount > 0) {
aibot->loadedammo[handnum] += actualamount;
if (withsound) {
if (aibot->weaponnum == WEAPON_FARSIGHT) {
// FarSight reload sound
func0f0939f8(NULL, chr->prop, SFX_RELOAD_FARSIGHT, -1,
-1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
} else {
// Normal reload sound
func0f0939f8(NULL, chr->prop, SFX_RELOAD_DEFAULT, -1,
-1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
}
@@ -78,7 +75,7 @@ void aibotReloadWeapon(struct chrdata *chr, s32 handnum, bool withsound)
}
}
s32 aibotGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, bool include_equipped)
s32 botactGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, bool include_equipped)
{
s32 qty = 0;
s32 ammotype;
@@ -86,16 +83,16 @@ s32 aibotGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum
if (aibot) {
if (aibot->unk064 & 1) {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
ammotype = botactGetAmmoTypeByFunction(weaponnum, funcnum);
qty = bgunGetCapacityByAmmotype(ammotype);
} else {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
ammotype = botactGetAmmoTypeByFunction(weaponnum, funcnum);
qty = aibot->ammoheld[ammotype];
}
if (include_equipped) {
ammotype = weaponGetAmmoTypeByFunction(weaponnum, funcnum);
equippedammotype = weaponGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc);
ammotype = botactGetAmmoTypeByFunction(weaponnum, funcnum);
equippedammotype = botactGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc);
if (equippedammotype == ammotype) {
qty += aibot->loadedammo[HAND_LEFT] + aibot->loadedammo[HAND_RIGHT];
@@ -106,7 +103,7 @@ s32 aibotGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum
return qty;
}
s32 aibotGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_equipped)
s32 botactGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_equipped)
{
s32 qty = 0;
@@ -118,7 +115,7 @@ s32 aibotGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_e
}
if (include_equipped
&& weaponGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc) == ammotype) {
&& botactGetAmmoTypeByFunction(aibot->weaponnum, aibot->gunfunc) == ammotype) {
qty += aibot->loadedammo[HAND_LEFT] + aibot->loadedammo[HAND_RIGHT];
}
}
@@ -133,10 +130,10 @@ s32 aibotGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_e
* The amount removed will be less than the attempted amount if the aibot
* doesn't have enough ammo in reserve.
*/
s32 aibotTryRemoveAmmoFromReserve(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 tryqty)
s32 botactTryRemoveAmmoFromReserve(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 tryqty)
{
s32 result;
s32 *ammoheld = &aibot->ammoheld[weaponGetAmmoTypeByFunction(weaponnum, funcnum)];
s32 amountremoved;
s32 *ammoheld = &aibot->ammoheld[botactGetAmmoTypeByFunction(weaponnum, funcnum)];
if (!aibot || *ammoheld <= 0 || tryqty <= 0) {
return 0;
@@ -150,24 +147,24 @@ s32 aibotTryRemoveAmmoFromReserve(struct aibot *aibot, s32 weaponnum, s32 funcnu
*ammoheld -= tryqty;
if (*ammoheld < 0) {
result = tryqty + *ammoheld;
amountremoved = tryqty + *ammoheld;
*ammoheld = 0;
if (dprint()) {
return result;
return amountremoved;
}
} else {
result = tryqty;
amountremoved = tryqty;
dprint();
}
return result;
return amountremoved;
}
void aibotGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty)
void botactGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty)
{
s32 max;
s32 *heldquantity = &aibot->ammoheld[weaponGetAmmoTypeByFunction(weaponnum, funcnum)];
s32 *heldquantity = &aibot->ammoheld[botactGetAmmoTypeByFunction(weaponnum, funcnum)];
if (aibot && (aibot->unk064 & 1) == 0 && qty > 0) {
dprint();
@@ -175,7 +172,7 @@ void aibotGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32
if (heldquantity);
max = bgunGetCapacityByAmmotype(weaponGetAmmoTypeByFunction(weaponnum, funcnum));
max = bgunGetCapacityByAmmotype(botactGetAmmoTypeByFunction(weaponnum, funcnum));
if (*heldquantity > max) {
*heldquantity = max;
@@ -185,7 +182,7 @@ void aibotGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32
}
}
void aibotGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity)
void botactGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity)
{
s32 max;
s32 *heldquantity = &aibot->ammoheld[ammotype];
@@ -209,7 +206,7 @@ void aibotGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity)
dprint();
}
bool aibotShootFarsightThroughWalls(struct chrdata *chr, s32 arg1, struct coord *vector, struct coord *arg3)
bool botactShootFarsight(struct chrdata *chr, s32 arg1, struct coord *vector, struct coord *arg3)
{
struct aibot *aibot;
struct chrdata *oppchr;
@@ -238,9 +235,9 @@ bool aibotShootFarsightThroughWalls(struct chrdata *chr, s32 arg1, struct coord
s32 fallback = 30;
s32 value = fallback;
for (i = 0; i < g_MpNumPlayers; i++) {
oppchr = g_MpPlayerChrs[i];
oppprop = g_MpPlayerChrs[i]->prop;
for (i = 0; i < g_MpNumChrs; i++) {
oppchr = g_MpAllChrPtrs[i];
oppprop = g_MpAllChrPtrs[i]->prop;
if (oppprop->type == PROPTYPE_PLAYER) {
struct player *player = g_Vars.players[propGetPlayerNum(oppprop)];
@@ -282,12 +279,12 @@ bool aibotShootFarsightThroughWalls(struct chrdata *chr, s32 arg1, struct coord
return true;
}
s32 func0f19a27c(s32 weapon)
s32 botactGetWeaponModel(s32 weapon)
{
return weaponGetModel(weapon);
}
bool func0f19a29c(u32 weaponnum, bool is_secondary)
bool botactIsWeaponThrowable(u32 weaponnum, bool is_secondary)
{
switch (weaponnum) {
case WEAPON_LAPTOPGUN:
@@ -305,7 +302,7 @@ bool func0f19a29c(u32 weaponnum, bool is_secondary)
return false;
}
u32 aibotGetProjectileThrowInterval(u32 weapon)
u32 botactGetProjectileThrowInterval(u32 weapon)
{
switch (weapon) {
case WEAPON_COMBATKNIFE:
@@ -324,7 +321,7 @@ u32 aibotGetProjectileThrowInterval(u32 weapon)
}
}
u32 ammotypeGetWeapon(u32 ammotype)
u32 botactGetWeaponByAmmoType(u32 ammotype)
{
switch (ammotype) {
case AMMOTYPE_NBOMB: return WEAPON_NBOMB;
@@ -338,7 +335,7 @@ u32 ammotypeGetWeapon(u32 ammotype)
return 0;
}
void func0f19a37c(struct chrdata *chr)
void botact0f19a37c(struct chrdata *chr)
{
struct coord sp228 = {0, 0, 0};
Mtxf sp164;
@@ -405,10 +402,13 @@ void func0f19a37c(struct chrdata *chr)
}
}
s32 func0f19a60c(s32 weaponnum, s32 funcnum)
/**
* Get the fire rate of the given weapon?
*/
s32 botact0f19a60c(s32 weaponnum, s32 funcnum)
{
s32 stack[2];
s32 iVar4 = 1;
s32 result = 1;
struct weapon *weapon = weaponFindById(weaponnum);
if (weapon) {
@@ -417,23 +417,29 @@ s32 func0f19a60c(s32 weaponnum, s32 funcnum)
if (func) {
if (func->type == INVENTORYFUNCTYPE_SHOOT_SINGLE) {
struct weaponfunc_shoot *func2 = (struct weaponfunc_shoot *)func;
iVar4 = func2->unk24 + func2->unk25;
result = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_SHOOT_AUTOMATIC) {
struct weaponfunc_shoot *func2 = (struct weaponfunc_shoot *)func;
iVar4 = func2->unk24 + func2->unk25;
result = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_SHOOT_PROJECTILE) {
struct weaponfunc_shoot *func2 = (struct weaponfunc_shoot *)func;
iVar4 = func2->unk24 + func2->unk25;
result = func2->unk24 + func2->unk25;
} else if (func->type == INVENTORYFUNCTYPE_CLOSE && weaponnum != WEAPON_REAPER) {
iVar4 = 60;
result = 60;
}
}
}
return iVar4;
return result;
}
bool func0f19a6d0(struct chrdata *chr, struct coord *frompos, struct coord *topos, s16 *fromrooms, s16 *torooms, struct projectile *projectile)
/**
* Do pathfinding for a bot's Slayer rocket in fly-by-wire mode and populate
* the projectil's waypads.
*
* Return true if a route was found, false if not.
*/
bool botactFindRocketRoute(struct chrdata *chr, struct coord *frompos, struct coord *topos, s16 *fromrooms, s16 *torooms, struct projectile *projectile)
{
struct waypoint *from = waypointFindClosestToPos(frompos, fromrooms);
struct waypoint *to = waypointFindClosestToPos(topos, torooms);
@@ -465,7 +471,12 @@ bool func0f19a6d0(struct chrdata *chr, struct coord *frompos, struct coord *topo
return false;
}
void func0f19a7d0(u16 padnum, struct coord *pos)
/**
* Determine where to spawn a Slayer rocket in fly-by-wire mode.
*
* It's the ground position of the pad plus 1.5 metres.
*/
void botactGetRocketSpawnPos(u16 padnum, struct coord *pos)
{
struct pad pad;
s16 rooms[2];
@@ -480,7 +491,10 @@ void func0f19a7d0(u16 padnum, struct coord *pos)
pos->z = pad.pos.z;
}
void aibotCreateSlayerRocket(struct chrdata *chr)
/**
* Create a Slayer rocket in fly-by-wire mode (ie. remote controlled).
*/
void botactCreateSlayerRocket(struct chrdata *chr)
{
struct weaponobj *rocket = func0f08b880(MODEL_CHRSKROCKETMIS, WEAPON_SKROCKET, chr);
@@ -520,10 +534,10 @@ void aibotCreateSlayerRocket(struct chrdata *chr)
func0f0939f8(NULL, rocket->base.prop, SFX_LAUNCH_ROCKET_8053, -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.projectile)) {
if (!botactFindRocketRoute(chr, &chr->prop->pos, &target->pos, chr->prop->rooms, target->rooms, rocket->base.projectile)) {
rocket->timer240 = 0; // blow up rocket
} else {
func0f19a7d0(rocket->base.projectile->waypads[0], &rocket->base.projectile->pos);
botactGetRocketSpawnPos(rocket->base.projectile->waypads[0], &rocket->base.projectile->pos);
chr->aibot->skrocket = rocket->base.prop;
}
}
+94 -82
View File
@@ -7,9 +7,9 @@
#include "game/game_0b0fd0.h"
#include "game/game_127910.h"
#include "game/mplayer/setup.h"
#include "game/game_190260.h"
#include "game/game_197600.h"
#include "game/game_1999b0.h"
#include "game/bot.h"
#include "game/botcmd.h"
#include "game/botact.h"
#include "game/mplayer/mplayer.h"
#include "game/propobj.h"
#include "bss.h"
@@ -17,121 +17,132 @@
#include "data.h"
#include "types.h"
f32 var80087e50[][3] = {
{ 0, 120, 10000 },
{ 300, 450, 4500 },
{ 300, 600, 4500 },
{ 600, 1200, 4500 },
{ 150, 250, 4500 },
{ 1000, 2000, 3000 },
{ 0, 250, 10000 },
{ 450, 700, 4500 },
/**
* This table defines the ideal distance ranges for attacking.
*
* The first value is the minimum attack distance.
* The second value is the maximum attack distance.
* The third value doesn't appear to have any purpose.
*/
f32 g_BotDistConfigs[][3] = {
{ 0, 120, 10000 }, // BOTDISTCFG_CLOSE
{ 300, 450, 4500 }, // BOTDISTCFG_PISTOL
{ 300, 600, 4500 }, // BOTDISTCFG_DEFAULT
{ 600, 1200, 4500 }, // BOTDISTCFG_SHOOTEXPLOSIVE
{ 150, 250, 4500 }, // BOTDISTCFG_KAZE
{ 1000, 2000, 3000 }, // BOTDISTCFG_FARSIGHT
{ 0, 250, 10000 }, // BOTDISTCFG_FOLLOW
{ 450, 700, 4500 }, // BOTDISTCFG_THROWEXPLOSIVE
};
#if VERSION >= VERSION_NTSC_1_0
void func0f197600(struct chrdata *chr)
void botcmdTickDistMode(struct chrdata *chr)
{
s32 index;
s32 confignum;
f32 *limits;
f32 distance;
u8 new074;
u8 newmode;
struct aibot *aibot = chr->aibot;
s32 prev074 = aibot->unk074;
struct prop *prop = NULL;
s32 prevmode = aibot->distmode;
struct prop *targetprop = NULL;
s32 somevalue = 0;
f32 limit1;
f32 limit2;
f32 minattackdistance;
f32 maxattackdistance;
f32 limit3;
u32 stack;
if (aibot->simulant->base.simtype == SIMTYPE_KAZE) {
index = 4;
if (aibot->config->type == BOTTYPE_KAZE) {
confignum = BOTDISTCFG_KAZE;
} else {
index = func0f198e38(aibot->weaponnum, aibot->gunfunc);
confignum = botinvGetDistConfig(aibot->weaponnum, aibot->gunfunc);
}
if (chr->myaction == MA_AIBOTFOLLOW && aibot->followingplayernum >= 0) {
limits = var80087e50[6];
prop = g_MpPlayerChrs[aibot->followingplayernum]->prop;
limits = g_BotDistConfigs[BOTDISTCFG_FOLLOW];
targetprop = g_MpAllChrPtrs[aibot->followingplayernum]->prop;
somevalue = aibot->unk16c[aibot->followingplayernum];
if (chr->target != -1 && (index == 0 || index == 4)) {
if (chr->target != -1 && (confignum == BOTDISTCFG_CLOSE || confignum == BOTDISTCFG_KAZE)) {
struct prop *target = chrGetTargetProp(chr);
f32 xdiff = prop->pos.x - target->pos.x;
f32 ydiff = prop->pos.y - target->pos.y;
f32 zdiff = prop->pos.z - target->pos.z;
f32 xdiff = targetprop->pos.x - target->pos.x;
f32 ydiff = targetprop->pos.y - target->pos.y;
f32 zdiff = targetprop->pos.z - target->pos.z;
if (xdiff * xdiff + ydiff * ydiff + zdiff * zdiff < 500 * 500) {
limits = var80087e50[index];
prop = target;
limits = g_BotDistConfigs[confignum];
targetprop = target;
somevalue = aibot->unk128;
}
}
} else {
limits = var80087e50[index];
limits = g_BotDistConfigs[confignum];
if (chr->myaction == MA_AIBOTATTACK && aibot->attackingplayernum >= 0) {
prop = g_MpPlayerChrs[aibot->attackingplayernum]->prop;
targetprop = g_MpAllChrPtrs[aibot->attackingplayernum]->prop;
somevalue = aibot->unk16c[aibot->attackingplayernum];
} else if (chr->target != -1) {
prop = chrGetTargetProp(chr);
targetprop = chrGetTargetProp(chr);
somevalue = aibot->unk128;
}
}
if (prop == NULL) {
if (targetprop == NULL) {
return;
}
if (!chrHasGround(prop->chr)) {
if (!botHasGround(targetprop->chr)) {
return;
}
distance = chrGetDistanceToCoord(chr, &prop->pos);
limit1 = limits[0];
limit2 = limits[1];
distance = chrGetDistanceToCoord(chr, &targetprop->pos);
minattackdistance = limits[0];
maxattackdistance = limits[1];
limit3 = limits[2];
if (chr->aibot->simulant->difficulty == SIMDIFF_MEAT) {
limit1 *= 0.35f;
} else if (chr->aibot->simulant->difficulty == SIMDIFF_EASY) {
limit1 *= 0.5f;
if (chr->aibot->config->difficulty == BOTDIFF_MEAT) {
minattackdistance *= 0.35f;
} else if (chr->aibot->config->difficulty == BOTDIFF_EASY) {
minattackdistance *= 0.5f;
}
if (aibot->unk074 == 1) {
limit1 += 25.0f;
} else if (aibot->unk074 == 3 || aibot->unk074 == 4) {
limit2 -= 25.0f;
if (aibot->distmode == BOTDISTMODE_BACKUP) {
minattackdistance += 25.0f;
} else if (aibot->distmode == BOTDISTMODE_ADVANCE || aibot->distmode == BOTDISTMODE_GOTO) {
maxattackdistance -= 25.0f;
}
if (distance < limit1) {
new074 = 1;
} else if (distance >= limit1 && distance < limit2) {
new074 = 2;
} else if (distance >= limit2 && distance < limit3) {
new074 = 3;
if (distance < minattackdistance) {
// Bot is too close to target - move back a bit
newmode = BOTDISTMODE_BACKUP;
} else if (distance >= minattackdistance && distance < maxattackdistance) {
// Bot is a good distance from target for attacking
newmode = BOTDISTMODE_OK;
} else if (distance >= maxattackdistance && distance < limit3) {
// Bot needs to come closer to target
newmode = BOTDISTMODE_ADVANCE;
} else {
new074 = 4;
// Bot needs to come a lot closer to target
newmode = BOTDISTMODE_GOTO;
}
if (new074 != 1 || somevalue == 0 || aibot->unk050 != prop) {
if (newmode != BOTDISTMODE_BACKUP || somevalue == 0 || aibot->unk050 != targetprop) {
aibot->unk050 = NULL;
aibot->unk09d = 0;
}
if (new074 == 2) {
if (newmode == BOTDISTMODE_OK) {
if (somevalue == 0) {
new074 = 3;
newmode = BOTDISTMODE_ADVANCE;
}
} else if (new074 == 1) {
} else if (newmode == BOTDISTMODE_BACKUP) {
if (somevalue == 0) {
new074 = 3;
aibot->unk050 = prop;
newmode = BOTDISTMODE_ADVANCE;
aibot->unk050 = targetprop;
aibot->unk09d = PALDOWN(20) + (random() % PALDOWN(120));
} else if (aibot->unk050) {
if (aibot->unk09d > g_Vars.lvupdate240_60) {
aibot->unk09d -= g_Vars.lvupdate240_60;
new074 = 2;
newmode = BOTDISTMODE_OK;
} else {
aibot->unk050 = NULL;
aibot->unk09d = 0;
@@ -139,34 +150,35 @@ void func0f197600(struct chrdata *chr)
}
}
aibot->unk074 = new074;
aibot->distmode = newmode;
if (aibot->unk0d0 >= 0) {
aibot->unk0d0 -= g_Vars.lvupdate240_60;
if (aibot->distmodettl60 >= 0) {
aibot->distmodettl60 -= g_Vars.lvupdate240_60;
}
if (new074 != prev074 || (new074 != 2 && (chr->actiontype == ACT_STAND || aibot->unk0d0 <= 0))) {
switch (new074) {
case 1:
chrRunFromPos(chr, SPEED_RUN, 10000, &prop->pos);
if (newmode != prevmode
|| (newmode != BOTDISTMODE_OK && (chr->actiontype == ACT_STAND || aibot->distmodettl60 <= 0))) {
switch (newmode) {
case BOTDISTMODE_BACKUP:
chrRunFromPos(chr, SPEED_RUN, 10000, &targetprop->pos);
break;
case 2:
case BOTDISTMODE_OK:
chrTryStop(chr);
break;
case 3:
chrGoToProp(chr, prop, SPEED_RUN);
case BOTDISTMODE_ADVANCE:
chrGoToProp(chr, targetprop, SPEED_RUN);
break;
case 4:
chrGoToProp(chr, prop, SPEED_RUN);
case BOTDISTMODE_GOTO:
chrGoToProp(chr, targetprop, SPEED_RUN);
break;
}
aibot->unk0d0 = PALDOWN(60);
aibot->distmodettl60 = PALDOWN(60);
}
}
#else
GLOBAL_ASM(
glabel func0f197600
glabel botcmdTickDistMode
.late_rodata
glabel var7f1b35b0
.word 0x48742400
@@ -195,7 +207,7 @@ glabel var7f1b35b4
/* f1916c8: 00055080 */ sll $t2,$a1,0x2
/* f1916cc: 000a2fc2 */ srl $a1,$t2,0x1f
/* f1916d0: afa80054 */ sw $t0,0x54($sp)
/* f1916d4: 0fc64b86 */ jal func0f198e38
/* f1916d4: 0fc64b86 */ jal botinvGetDistConfig
/* f1916d8: afa7004c */ sw $a3,0x4c($sp)
/* f1916dc: 8fa7004c */ lw $a3,0x4c($sp)
/* f1916e0: 8fa80054 */ lw $t0,0x54($sp)
@@ -306,7 +318,7 @@ glabel var7f1b35b4
/* f191870: afa90048 */ sw $t1,0x48($sp)
/* f191874: afa80054 */ sw $t0,0x54($sp)
/* f191878: afa7004c */ sw $a3,0x4c($sp)
/* f19187c: 0fc632b2 */ jal chrHasGround
/* f19187c: 0fc632b2 */ jal botHasGround
/* f191880: afa60060 */ sw $a2,0x60($sp)
/* f191884: 8fa60060 */ lw $a2,0x60($sp)
/* f191888: 8fa7004c */ lw $a3,0x4c($sp)
@@ -477,7 +489,7 @@ glabel var7f1b35b4
);
#endif
void mpAibotApplyCommand(struct chrdata *chr, u32 command)
void botcmdApply(struct chrdata *chr, u32 command)
{
f32 value;
@@ -486,21 +498,21 @@ void mpAibotApplyCommand(struct chrdata *chr, u32 command)
amOpenPickTarget();
break;
case AIBOTCMD_FOLLOW:
mpAibotApplyFollow(chr, g_Vars.currentplayer->prop);
botApplyFollow(chr, g_Vars.currentplayer->prop);
break;
case AIBOTCMD_PROTECT:
mpAibotApplyProtect(chr, g_Vars.currentplayer->prop);
botApplyProtect(chr, g_Vars.currentplayer->prop);
break;
case AIBOTCMD_DEFEND:
value = chrGetInverseTheta(g_Vars.currentplayer->prop->chr);
mpAibotApplyDefend(chr, &g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms, value);
botApplyDefend(chr, &g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms, value);
break;
case AIBOTCMD_HOLD:
value = chrGetInverseTheta(g_Vars.currentplayer->prop->chr);
mpAibotApplyHold(chr, &g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms, value);
botApplyHold(chr, &g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms, value);
break;
default:
mpAibotApplyScenarioCommand(chr, command);
botApplyScenarioCommand(chr, command);
break;
}
}
+1167
View File
File diff suppressed because it is too large Load Diff
@@ -1,20 +1,12 @@
#include <ultra64.h>
#include "constants.h"
#include "game/game_0147d0.h"
#include "game/chr/chr.h"
#include "game/game_02cde0.h"
#include "game/prop.h"
#include "game/game_197600.h"
#include "game/mplayer/mplayer.h"
#include "bss.h"
#include "lib/memp.h"
#include "lib/model.h"
#include "lib/rng.h"
#include "lib/mtx.h"
#include "constants.h"
#include "data.h"
#include "game/botinv.h"
#include "lib/memp.h"
#include "types.h"
void aibotAllocateInventory(struct chrdata *chr, s32 maxitems)
void botinvInit(struct chrdata *chr, s32 maxitems)
{
if (chr && chr->aibot && maxitems > 0) {
if (maxitems > 255) {
@@ -24,6 +16,6 @@ void aibotAllocateInventory(struct chrdata *chr, s32 maxitems)
chr->aibot->maxitems = maxitems;
chr->aibot->items = mempAlloc(ALIGN16(maxitems * sizeof(struct invitem)), MEMPOOL_STAGE);
aibotClearInventory(chr);
botinvClear(chr);
}
}
+278
View File
@@ -0,0 +1,278 @@
#include <ultra64.h>
#include "constants.h"
#include "game/game_0147d0.h"
#include "game/chr/chr.h"
#include "game/game_02cde0.h"
#include "game/prop.h"
#include "game/botcmd.h"
#include "game/mplayer/mplayer.h"
#include "bss.h"
#include "lib/memp.h"
#include "lib/model.h"
#include "lib/rng.h"
#include "lib/ailist.h"
#include "data.h"
#include "types.h"
void botmgrRemoveAll(void)
{
s32 i;
for (i = 0; i < 8; i++) {
g_MpBotChrPtrs[i] = NULL;
}
g_BotCount = 0;
}
void botmgrAllocateBot(s32 chrnum, s32 aibotnum)
{
s16 rooms[1];
struct prop *prop;
struct chrdata *chr;
struct aibot *aibot;
struct model *model;
s32 i;
s32 bodynum;
s32 headnum;
rooms[0] = -1;
headnum = mpGetHeadId(g_BotConfigsArray[aibotnum].base.mpheadnum);
bodynum = mpGetBodyId(g_BotConfigsArray[aibotnum].base.mpbodynum);
if (IS4MB()) {
headnum = HEAD_DDSHOCK;
bodynum = BODY_DDSHOCK;
}
model = modelAllocateChr(bodynum, headnum, 0);
if (model != NULL) {
struct coord pos = {0.0f, 0.0f, 0.0f};
u32 stack;
prop = chrAllocate(model, &pos, rooms, 0.0f, ailistFindById(GAILIST_AIBOT_INIT));
if (prop != NULL) {
propActivate(prop);
propEnable(prop);
chr = prop->chr;
chrSetChrnum(chr, chrnum);
chr->chrnum = chrnum;
chr->padpreset1 = -1;
chr->chrpreset1 = -1;
chr->hearingscale = 1;
chr->visionrange = 80;
chr->headnum = headnum;
chr->bodynum = bodynum;
chr->race = bodyGetRace(chr->bodynum);
chr->flags = CHRFLAG0_CAN_EXAMINE_BODY; // reused flag?
chr->flags2 = 0;
chr->team = 1 << g_BotConfigsArray[aibotnum].base.team;
chr->squadron = 0;
if (g_BotCount < 8) {
g_MpBotChrPtrs[g_BotCount] = chr;
g_BotCount++;
aibot = mempAlloc(sizeof(struct aibot), MEMPOOL_STAGE);
chr->aibot = aibot;
if (aibot != NULL) {
chr->tude = 0;
chr->voicebox = random() % 3;
if (g_HeadsAndBodies[chr->bodynum].ismale == false) {
chr->voicebox = VOICEBOX_FEMALE;
}
chr->target = -1;
chr->naturalanim = 0;
chr->myspecial = -1;
chr->yvisang = 0;
chr->teamscandist = 0;
chr->convtalk = 0;
chr->myaction = MA_AIBOTMAINLOOP;
g_MpAllChrPtrs[g_MpNumChrs] = chr;
g_MpAllChrConfigPtrs[g_MpNumChrs] = &g_BotConfigsArray[aibotnum].base;
g_MpNumChrs++;
aibot->ammoheld = mempAlloc(36 * sizeof(s32), MEMPOOL_STAGE);
for (i = 0; i < 33; i++) {
aibot->ammoheld[i] = 0;
}
aibot->config = &g_BotConfigsArray[aibotnum];
switch (g_BotConfigsArray[aibotnum].difficulty) {
case BOTDIFF_MEAT:
aibot->unk000 = 0;
break;
case BOTDIFF_EASY:
aibot->unk000 = 10;
break;
default:
case BOTDIFF_NORMAL:
aibot->unk000 = 20;
break;
case BOTDIFF_HARD:
aibot->unk000 = 40;
break;
case BOTDIFF_PERFECT:
aibot->unk000 = 60;
break;
case BOTDIFF_DARK:
aibot->unk000 = 0;
break;
}
aibot->aibotnum = aibotnum;
aibot->unk064 = 0;
aibot->fetchprop = NULL;
aibot->unk02c[0] = 0;
aibot->unk02c[1] = 0;
aibot->unk034 = 0;
aibot->unk040 = 0.0f;
aibot->loadedammo[0] = 0;
aibot->loadedammo[1] = 0;
aibot->unk058 = 0;
aibot->unk059 = 0;
aibot->unk05c = 0;
aibot->unk060 = 0;
#if !PAL
aibot->unk030 = 301;
#endif
aibot->unk038 = 0;
aibot->unk03e = -1;
aibot->unk03c = 0;
aibot->attackingplayernum = -1;
aibot->followingplayernum = -1;
aibot->dangerouspropnum = -1;
aibot->unk068 = 0;
aibot->unk06c = 0.0f;
aibot->unk070 = 0.0f;
aibot->distmode = -1;
aibot->lastkilledbyplayernum = -1;
aibot->unk114 = -1;
aibot->command = AIBOTCMD_NORMAL;
aibot->unk098 = 0.0f;
aibot->defendholdpos.x = pos.x;
aibot->defendholdpos.y = pos.y;
aibot->defendholdpos.z = pos.z;
aibot->weaponnum = WEAPON_UNARMED;
aibot->unk04d[0] = 0;
aibot->unk04d[1] = 0;
aibot->skrocket = NULL;
aibot->unk0a0 = 0;
aibot->gunfunc = 0;
aibot->iscloserangeweapon = true;
aibot->teamisonlyai = 0;
aibot->unk09c_00 = 0;
aibot->unk09c_01 = 0;
aibot->cloakdeviceenabled = false;
aibot->rcp120cloakenabled = false;
aibot->unk04c_04 = 0;
aibot->unk04c_03 = 0;
aibot->unk04c_05 = 0;
aibot->unk04c_00 = 0;
aibot->unk048 = -1;
aibot->unk04a = -1;
aibot->unk0bc = -1;
aibot->unk0c4[HAND_LEFT] = 0;
aibot->unk0c4[HAND_RIGHT] = 0;
aibot->unk0cc = 0;
aibot->distmodettl60 = 0;
aibot->unk0d8 = 0;
aibot->unk0dc = 0;
aibot->unk0e0[HAND_LEFT] = 0;
aibot->unk0e0[HAND_RIGHT] = 0;
aibot->maulercharge[HAND_LEFT] = 0.0f;
aibot->maulercharge[HAND_RIGHT] = 0.0f;
aibot->unk0a4 = model0001ae44(chr->model);
aibot->angleoffset = 0.0f;
aibot->speedtheta = 0.0f;
aibot->unk0b0 = model0001ae44(chr->model);
aibot->unk0b4 = 0.0f;
aibot->unk0b8 = 0.0f;
aibot->shotspeed.x = 0.0f;
aibot->shotspeed.y = 0.0f;
aibot->shotspeed.z = 0.0f;
aibot->unk118 = 0;
aibot->unk11c = 0;
aibot->unk120 = -1;
aibot->unk124 = -1;
aibot->unk128 = 0;
aibot->unk12c = 0;
for (i = 0; i < 12; i++) {
aibot->unk130[i] = -1;
aibot->playerdistances[i] = U32_MAX;
aibot->unk16c[i] = 0;
aibot->unk178[i] = -1;
aibot->unk1a8[i] = -1;
}
aibot->unk1c0 = 0.0f;
aibot->unk1c4 = 0.0f;
aibot->unk1c8 = 0.0f;
aibot->unk1cc = -1;
aibot->unk1d0 = 0;
aibot->unk1d4 = 0.0f;
aibot->unk1e4 = -1;
aibot->unk1e8 = 0;
aibot->unk208 = 0;
aibot->rand = random();
aibot->randttl60 = 0;
for (i = 0; i < 6; i++) {
aibot->killsbygunfunc[i][0] = 0.0f;
aibot->killsbygunfunc[i][1] = 0.0f;
aibot->suicidesbygunfunc[i][0] = 0.0f;
aibot->suicidesbygunfunc[i][1] = 0.0f;
aibot->equipdurations60[i][0] = 0;
aibot->equipdurations60[i][1] = 0;
aibot->unk2a8[i] = 0;
}
aibot->unk2a4 = 0;
aibot->dampensuicidesttl60 = 0;
aibot->unk2c4 = 0.0f;
aibot->unk2c8 = 0;
aibot->unk09c_03 = 0;
aibot->unk2cc = 0;
aibot->unk2d0 = random();
aibot->unk2d4 = random() * (1.0f / U32_MAX);
aibot->cheap = false;
#if VERSION >= VERSION_NTSC_1_0
aibot->unk078 = 0;
aibot->unk050 = 0;
aibot->unk09d = 0;
#endif
} else {
g_MpBotChrPtrs[--g_BotCount] = NULL;
return;
}
botinvInit(chr, 10);
}
}
}
}
+9 -9
View File
@@ -29,8 +29,8 @@
#include "game/game_165670.h"
#include "game/file.h"
#include "game/mplayer/setup.h"
#include "game/game_190260.h"
#include "game/game_1999b0.h"
#include "game/bot.h"
#include "game/botact.h"
#include "game/mplayer/mplayer.h"
#include "game/pad.h"
#include "game/propobj.h"
@@ -791,7 +791,7 @@ glabel var7f1a992cpf
.PF0f01f6f0:
/* f01f6f0: 8fa700dc */ lw $a3,0xdc($sp)
.PF0f01f6f4:
/* f01f6f4: 0fc64cac */ jal func0f1921f8
/* f01f6f4: 0fc64cac */ jal bot0f1921f8
/* f01f6f8: e7ac00e0 */ swc1 $f12,0xe0($sp)
/* f01f6fc: 3c08800a */ lui $t0,0x800a
/* f01f700: 44808000 */ mtc1 $zero,$f16
@@ -2059,7 +2059,7 @@ glabel var7f1a8720
.L0f01f5c0:
/* f01f5c0: 8fa700dc */ lw $a3,0xdc($sp)
.L0f01f5c4:
/* f01f5c4: 0fc6487e */ jal func0f1921f8
/* f01f5c4: 0fc6487e */ jal bot0f1921f8
/* f01f5c8: e7ac00e0 */ swc1 $f12,0xe0($sp)
/* f01f5cc: 3c08800a */ lui $t0,%hi(g_Vars)
/* f01f5d0: 44809000 */ mtc1 $zero,$f18
@@ -3286,7 +3286,7 @@ glabel var7f1a8720
/* f01f2e4: 8d2b0004 */ lw $t3,0x4($t1)
/* f01f2e8: 1b200005 */ blez $t9,.NB0f01f300
/* f01f2ec: acab0004 */ sw $t3,0x4($a1)
/* f01f2f0: 0fc630b7 */ jal func0f1921f8
/* f01f2f0: 0fc630b7 */ jal bot0f1921f8
/* f01f2f4: 02002025 */ or $a0,$s0,$zero
/* f01f2f8: 44809000 */ mtc1 $zero,$f18
/* f01f2fc: 00000000 */ sll $zero,$zero,0x0
@@ -6716,8 +6716,8 @@ void chrUncloak(struct chrdata *chr, bool value)
#if PIRACYCHECKS
{
u32 checksum = 0;
u32 *i = (u32 *)&propobjHandlePickupByAibot;
u32 *end = (u32 *)&func0f190be4;
u32 *i = (u32 *)&botPickupProp;
u32 *end = (u32 *)&botTestPropForPickup;
while (i < end) {
checksum += ~*i;
@@ -6776,7 +6776,7 @@ void chrUpdateCloak(struct chrdata *chr)
} else if (chr->aibot->rcp120cloakenabled) {
if (chr->aibot->weaponnum == WEAPON_RCP120
&& !chrIsDead(chr)
&& aibotGetAmmoQuantityByWeapon(chr->aibot, WEAPON_RCP120, 0, 1) > 0) {
&& botactGetAmmoQuantityByWeapon(chr->aibot, WEAPON_RCP120, 0, 1) > 0) {
if (chr->hidden & CHRHFLAG_CLOAKED) {
chr->aibot->unk2c4 += (PAL ? g_Vars.lvupdate240freal : g_Vars.lvupdate240f) * 0.4f;
@@ -6791,7 +6791,7 @@ void chrUpdateCloak(struct chrdata *chr)
chr->aibot->loadedammo[0] = 0;
}
} else {
ammotype = weaponGetAmmoTypeByFunction(WEAPON_RCP120, 0);
ammotype = botactGetAmmoTypeByFunction(WEAPON_RCP120, 0);
if (chr->aibot->ammoheld[ammotype] > 0) {
chr->aibot->ammoheld[ammotype] -= qty;
+24 -23
View File
@@ -30,9 +30,10 @@
#include "game/game_165670.h"
#include "game/game_1657c0.h"
#include "game/lv.h"
#include "game/game_190260.h"
#include "game/game_197600.h"
#include "game/game_1999b0.h"
#include "game/bot.h"
#include "game/botact.h"
#include "game/botcmd.h"
#include "game/botinv.h"
#include "game/mplayer/mplayer.h"
#include "game/pad.h"
#include "game/padhalllv.h"
@@ -4526,7 +4527,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
if (damageshield) {
shield = chrGetShield(chr);
if (chr->aibot && chr->aibot->simulant->base.simtype == SIMTYPE_TURTLE) {
if (chr->aibot && chr->aibot->config->type == BOTTYPE_TURTLE) {
armourscale = 4;
}
@@ -4534,9 +4535,9 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
if (g_Vars.normmplayerisrunning) {
#if VERSION >= VERSION_PAL_FINAL
// Fixing a @bug?
damage = damage * mpHandicapToDamageScale(g_MpPlayers[g_Vars.currentplayerstats->mpindex].handicap);
damage = damage * mpHandicapToDamageScale(g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].handicap);
#else
damage /= mpHandicapToDamageScale(g_MpPlayers[g_Vars.currentplayerstats->mpindex].handicap);
damage /= mpHandicapToDamageScale(g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].handicap);
#endif
}
@@ -4741,7 +4742,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
setCurrentPlayerNum(propGetPlayerNum(vprop));
if (g_Vars.normmplayerisrunning) {
damage /= mpHandicapToDamageScale(g_MpPlayers[g_Vars.currentplayerstats->mpindex].handicap);
damage /= mpHandicapToDamageScale(g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].handicap);
}
if (g_Vars.currentplayer->isdead == false && !g_PlayerInvincible) {
@@ -4854,7 +4855,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse
if (gsetHasFunctionFlags(gset, FUNCFLAG_DROPWEAPON)
&& ((chr->flags & CHRFLAG0_CANLOSEGUN) || chr->aibot)) {
if (chr->aibot) {
aibotLoseGun(chr, aprop);
botLoseGun(chr, aprop);
} else {
weapon = chrGetHeldProp(chr, HAND_RIGHT);
@@ -5102,7 +5103,7 @@ void chrDie(struct chrdata *chr, s32 aplayernum)
chr->aioffset = 0;
mpstatsRecordDeath(aplayernum, mpPlayerGetIndex(chr));
func0f199964(chr, chr->aibot->weaponnum);
botinvDropAll(chr, chr->aibot->weaponnum);
#if VERSION >= VERSION_NTSC_1_0
chr->aibot->unk09c_00 = 0;
@@ -5417,7 +5418,7 @@ f32 func0f0370a8(struct chrdata *chr)
f32 result;
if (chr->aibot) {
result = aibotCalculateMaxSpeed(chr);
result = botCalculateMaxSpeed(chr);
} else {
s16 animnum = modelGetAnimNum(chr->model);
result = func0f02dff0(animnum) * (chr->model->scale * 9.999999f);
@@ -5485,7 +5486,7 @@ void chrGoPosConsiderRestart(struct chrdata *chr)
chr->act_gopos.restartttl = value;
} else if (chr->act_gopos.restartttl <= (u16)g_Vars.lvupdate240_60) {
if (chr->aibot) {
func0f197544(chr);
botCheckFetch(chr);
} else {
chrGoToPos(chr, &chr->act_gopos.endpos, chr->act_gopos.endrooms, chr->act_gopos.flags);
}
@@ -6728,7 +6729,7 @@ bool chrCanSeeChr(struct chrdata *chr, struct chrdata *target, s16 *room)
u32 stack;
s16 sp88[] = {-1, 0, 0, 0, 0, 0, 0, 0};
if (func0f19294c(chr, target) == 0) {
if (bot0f19294c(chr, target) == 0) {
struct prop *prop = chr->prop;
struct coord pos;
s16 rooms[8];
@@ -8433,7 +8434,7 @@ void chrTickDead(struct chrdata *chr)
chr->fadealpha = 0;
if (aibot) {
mpInitSimulant(chr, true);
botSpawn(chr, true);
} else {
chr->hidden |= CHRHFLAG_REAPED;
}
@@ -11230,7 +11231,7 @@ glabel var7f1a9184
/* f040b38: 46060282 */ mul.s $f10,$f0,$f6
/* f040b3c: 11800019 */ beqz $t4,.PF0f040ba4
/* f040b40: e7aa01e8 */ swc1 $f10,0x1e8($sp)
/* f040b44: 0fc6492c */ jal chrGuessCrouchPos
/* f040b44: 0fc6492c */ jal botGuessCrouchPos
/* f040b48: 8fa40278 */ lw $a0,0x278($sp)
/* f040b4c: 8fb90278 */ lw $t9,0x278($sp)
/* f040b50: 00404825 */ move $t1,$v0
@@ -11272,7 +11273,7 @@ glabel var7f1a9184
/* f040bd4: 00002825 */ move $a1,$zero
/* f040bd8: afae0250 */ sw $t6,0x250($sp)
/* f040bdc: 27a601e0 */ addiu $a2,$sp,0x1e0
/* f040be0: 0fc66c21 */ jal aibotShootFarsightThroughWalls
/* f040be0: 0fc66c21 */ jal botactShootFarsight
/* f040be4: 27a70244 */ addiu $a3,$sp,0x244
/* f040be8: 24010002 */ li $at,0x2
/* f040bec: 5441000a */ bnel $v0,$at,.PF0f040c18
@@ -12828,7 +12829,7 @@ glabel var7f1a9184
/* f0409b4: 46060282 */ mul.s $f10,$f0,$f6
/* f0409b8: 11800019 */ beqz $t4,.L0f040a20
/* f0409bc: e7aa01e8 */ swc1 $f10,0x1e8($sp)
/* f0409c0: 0fc644fe */ jal chrGuessCrouchPos
/* f0409c0: 0fc644fe */ jal botGuessCrouchPos
/* f0409c4: 8fa40278 */ lw $a0,0x278($sp)
/* f0409c8: 8fb90278 */ lw $t9,0x278($sp)
/* f0409cc: 00404825 */ or $t1,$v0,$zero
@@ -12870,7 +12871,7 @@ glabel var7f1a9184
/* f040a50: 00002825 */ or $a1,$zero,$zero
/* f040a54: afae0250 */ sw $t6,0x250($sp)
/* f040a58: 27a601e0 */ addiu $a2,$sp,0x1e0
/* f040a5c: 0fc667e1 */ jal aibotShootFarsightThroughWalls
/* f040a5c: 0fc667e1 */ jal botactShootFarsight
/* f040a60: 27a70244 */ addiu $a3,$sp,0x244
/* f040a64: 24010002 */ addiu $at,$zero,0x2
/* f040a68: 5441000a */ bnel $v0,$at,.L0f040a94
@@ -14418,7 +14419,7 @@ glabel var7f1a9184
/* f040194: 46060282 */ mul.s $f10,$f0,$f6
/* f040198: 11800019 */ beqz $t4,.NB0f040200
/* f04019c: e7aa01e8 */ swc1 $f10,0x1e8($sp)
/* f0401a0: 0fc62d37 */ jal chrGuessCrouchPos
/* f0401a0: 0fc62d37 */ jal botGuessCrouchPos
/* f0401a4: 8fa40278 */ lw $a0,0x278($sp)
/* f0401a8: 8fb90278 */ lw $t9,0x278($sp)
/* f0401ac: 00404825 */ or $t1,$v0,$zero
@@ -14460,7 +14461,7 @@ glabel var7f1a9184
/* f040230: 00002825 */ or $a1,$zero,$zero
/* f040234: afae0250 */ sw $t6,0x250($sp)
/* f040238: 27a601e0 */ addiu $a2,$sp,0x1e0
/* f04023c: 0fc64fd9 */ jal aibotShootFarsightThroughWalls
/* f04023c: 0fc64fd9 */ jal botactShootFarsight
/* f040240: 27a70244 */ addiu $a3,$sp,0x244
/* f040244: 24010002 */ addiu $at,$zero,0x2
/* f040248: 5441000a */ bnel $v0,$at,.NB0f040274
@@ -15575,7 +15576,7 @@ glabel var7f1a9184
* takes care of the gun's fire rate.
*/
// Mismatches:
// - near aibotShootFarsightThroughWalls, chr needs to be loaded into t3 which
// - near botactShootFarsight, chr needs to be loaded into t3 which
// should solve instruction ordering.
// - Float calculations near 65536 have diffent codegen
// - Calculation of sp168 and spcc have reordered instructions
@@ -15730,7 +15731,7 @@ glabel var7f1a9184
// vector.f[2] = cosf(sp200) * cosf(aimangle);
//
// if (isaibot) {
// bgun0f0a0fac(&vector, chr->aibot->weaponnum, chr->aibot->gunfunc, chr->aibot->unk04d[handnum], chrGuessCrouchPos(chr), chr->weapons_held[0] && chr->weapons_held[1]);
// bgun0f0a0fac(&vector, chr->aibot->weaponnum, chr->aibot->gunfunc, chr->aibot->unk04d[handnum], botGuessCrouchPos(chr), chr->weapons_held[0] && chr->weapons_held[1]);
// }
// }
//
@@ -15740,7 +15741,7 @@ glabel var7f1a9184
// makebeam = true;
//
// // This function can never return 2 though...
// if (aibotShootFarsightThroughWalls(chr, 0, &vector, &gunpos) == 2) {
// if (botactShootFarsight(chr, 0, &vector, &gunpos) == 2) {
// normalshoot = random() % 255 > 200;
// }
// }
@@ -25246,7 +25247,7 @@ Gfx *chrsRenderChrStats(Gfx *gdl, s16 *rooms)
if (chr->aibot) {
if (g_MpSetup.options & MPOPTION_TEAMSENABLED) {
aibot = 1;
sprintf(aibotbuffer, "\nTEAM %d: Cmd: %s", chr->team, mpGetBotCommandName(chr->aibot->command));
sprintf(aibotbuffer, "\nTEAM %d: Cmd: %s", chr->team, botGetCommandName(chr->aibot->command));
}
}
+10 -10
View File
@@ -1143,8 +1143,8 @@ void filemgrDeleteCurrentFile(void)
} else {
// If deleting a loaded MP player, reset them to default
for (i = 0; i < 4; i++) {
if (g_FilemgrFileToDelete.fileid == g_MpPlayers[i].fileguid.fileid
&& g_FilemgrFileToDelete.deviceserial == g_MpPlayers[i].fileguid.deviceserial) {
if (g_FilemgrFileToDelete.fileid == g_PlayerConfigsArray[i].fileguid.fileid
&& g_FilemgrFileToDelete.deviceserial == g_PlayerConfigsArray[i].fileguid.deviceserial) {
mpPlayerSetDefaults(i, true);
}
}
@@ -1331,9 +1331,9 @@ void filemgrGetRenameName(char *buffer)
i = 0;
j = 0;
while (g_MpPlayers[g_MpPlayerNum].base.name[i] != '\0') {
if (g_MpPlayers[g_MpPlayerNum].base.name[i] != '\n') {
buffer[j] = g_MpPlayers[g_MpPlayerNum].base.name[i];
while (g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] != '\0') {
if (g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] != '\n') {
buffer[j] = g_PlayerConfigsArray[g_MpPlayerNum].base.name[i];
j++;
}
@@ -1371,7 +1371,7 @@ void filemgrSetRenameName(char *name)
break;
case 6:
case 12:
sprintf(g_MpPlayers[g_MpPlayerNum].base.name, "%s\n", name);
sprintf(g_PlayerConfigsArray[g_MpPlayerNum].base.name, "%s\n", name);
break;
case 7:
case 13:
@@ -2060,8 +2060,8 @@ bool filemgrIsFileInUse(struct filelistfile *file)
for (i = 0; i < 4; i++) {
if ((g_MpSetup.chrslots & (1 << i))
&& g_MpPlayers[i].fileguid.fileid == file->fileid
&& g_MpPlayers[i].fileguid.deviceserial == file->deviceserial) {
&& g_PlayerConfigsArray[i].fileguid.fileid == file->fileid
&& g_PlayerConfigsArray[i].fileguid.deviceserial == file->deviceserial) {
return true;
}
}
@@ -2885,8 +2885,8 @@ s32 filemgrMainMenuDialog(s32 operation, struct menudialog *dialog, union handle
// Set MP player names to "Player 1" through 4 if blank
for (i = 0; i < 4; i++) {
if (g_MpPlayers[i].base.name[0] == '\0') {
sprintf(g_MpPlayers[i].base.name, "%s %d\n", langGet(L_MISC_437), i + 1);
if (g_PlayerConfigsArray[i].base.name[0] == '\0') {
sprintf(g_PlayerConfigsArray[i].base.name, "%s %d\n", langGet(L_MISC_437), i + 1);
}
}
break;
+2 -2
View File
@@ -2935,7 +2935,7 @@ void setupParseObjects(s32 stagenum)
}
}
mpRemoveAllSimulants();
botmgrRemoveAll();
index = 0;
obj = (struct defaultobj *)g_StageSetup.props;
@@ -3471,7 +3471,7 @@ void setupParseObjects(s32 stagenum)
if ((g_MpSetup.chrslots & (1 << (slotnum + 4)))
&& mpIsSimSlotEnabled(slotnum)) {
aibotAllocate(chrnum, slotnum);
botmgrAllocateBot(chrnum, slotnum);
chrnum++;
}
+3 -3
View File
@@ -1829,7 +1829,7 @@ glabel var7f1a827c
/* f01204c: 8e2f0284 */ lw $t7,0x284($s1)
/* f012050: 8e2e0288 */ lw $t6,0x288($s1)
/* f012054: 8e2d0284 */ lw $t5,0x284($s1)
/* f012058: 3c09800b */ lui $t1,%hi(g_MpPlayers+0x11)
/* f012058: 3c09800b */ lui $t1,%hi(g_PlayerConfigsArray+0x11)
/* f01205c: 8dcf0070 */ lw $t7,0x70($t6)
/* f012060: 8dac00bc */ lw $t4,0xbc($t5)
/* f012064: 240b0001 */ addiu $t3,$zero,0x1
@@ -1837,7 +1837,7 @@ glabel var7f1a827c
/* f01206c: 014f5021 */ addu $t2,$t2,$t7
/* f012070: 000a5140 */ sll $t2,$t2,0x5
/* f012074: 012a4821 */ addu $t1,$t1,$t2
/* f012078: 9129c7c9 */ lbu $t1,%lo(g_MpPlayers+0x11)($t1)
/* f012078: 9129c7c9 */ lbu $t1,%lo(g_PlayerConfigsArray+0x11)($t1)
/* f01207c: 8d990004 */ lw $t9,0x4($t4)
/* f012080: 012bc004 */ sllv $t8,$t3,$t1
/* f012084: 10000006 */ b .L0f0120a0
@@ -3178,7 +3178,7 @@ glabel var7f1a827c
// }
// } else {
// if (g_Vars.mplayerisrunning) {
// g_Vars.currentplayer->prop->chr->team = 1 << g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.team;
// g_Vars.currentplayer->prop->chr->team = 1 << g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.team;
// } else {
// g_Vars.currentplayer->prop->chr->team = TEAM_ALLY;
// }
+1 -264
View File
@@ -4,7 +4,7 @@
#include "game/chr/chr.h"
#include "game/game_02cde0.h"
#include "game/prop.h"
#include "game/game_197600.h"
#include "game/botcmd.h"
#include "game/mplayer/mplayer.h"
#include "bss.h"
#include "lib/memp.h"
@@ -31,266 +31,3 @@ void lasersightsReset(void)
g_LaserSights[i].id = -1;
}
}
void mpRemoveAllSimulants(void)
{
s32 i;
for (i = 0; i < 8; i++) {
g_MpSimulantChrs[i] = NULL;
}
g_NumMpSimulantChrs = 0;
}
void aibotAllocate(s32 chrnum, s32 aibotnum)
{
s16 rooms[1];
struct prop *prop;
struct chrdata *chr;
struct aibot *aibot;
struct model *model;
s32 i;
s32 bodynum;
s32 headnum;
rooms[0] = -1;
headnum = mpGetHeadId(g_MpSimulants[aibotnum].base.mpheadnum);
bodynum = mpGetBodyId(g_MpSimulants[aibotnum].base.mpbodynum);
if (IS4MB()) {
headnum = HEAD_DDSHOCK;
bodynum = BODY_DDSHOCK;
}
model = modelAllocateChr(bodynum, headnum, 0);
if (model != NULL) {
struct coord pos = {0.0f, 0.0f, 0.0f};
u32 stack;
prop = chrAllocate(model, &pos, rooms, 0.0f, ailistFindById(GAILIST_AIBOT_INIT));
if (prop != NULL) {
propActivate(prop);
propEnable(prop);
chr = prop->chr;
chrSetChrnum(chr, chrnum);
chr->chrnum = chrnum;
chr->padpreset1 = -1;
chr->chrpreset1 = -1;
chr->hearingscale = 1;
chr->visionrange = 80;
chr->headnum = headnum;
chr->bodynum = bodynum;
chr->race = bodyGetRace(chr->bodynum);
chr->flags = CHRFLAG0_CAN_EXAMINE_BODY; // reused flag?
chr->flags2 = 0;
chr->team = 1 << g_MpSimulants[aibotnum].base.team;
chr->squadron = 0;
if (g_NumMpSimulantChrs < 8) {
g_MpSimulantChrs[g_NumMpSimulantChrs] = chr;
g_NumMpSimulantChrs++;
aibot = mempAlloc(sizeof(struct aibot), MEMPOOL_STAGE);
chr->aibot = aibot;
if (aibot != NULL) {
chr->tude = 0;
chr->voicebox = random() % 3;
if (g_HeadsAndBodies[chr->bodynum].ismale == false) {
chr->voicebox = VOICEBOX_FEMALE;
}
chr->target = -1;
chr->naturalanim = 0;
chr->myspecial = -1;
chr->yvisang = 0;
chr->teamscandist = 0;
chr->convtalk = 0;
chr->myaction = MA_AIBOTMAINLOOP;
g_MpPlayerChrs[g_MpNumPlayers] = chr;
var800ac500[g_MpNumPlayers] = &g_MpSimulants[aibotnum].base;
g_MpNumPlayers++;
aibot->ammoheld = mempAlloc(36 * sizeof(s32), MEMPOOL_STAGE);
for (i = 0; i < 33; i++) {
aibot->ammoheld[i] = 0;
}
aibot->simulant = &g_MpSimulants[aibotnum];
switch (g_MpSimulants[aibotnum].difficulty) {
case SIMDIFF_MEAT:
aibot->unk000 = 0;
break;
case SIMDIFF_EASY:
aibot->unk000 = 10;
break;
default:
case SIMDIFF_NORMAL:
aibot->unk000 = 20;
break;
case SIMDIFF_HARD:
aibot->unk000 = 40;
break;
case SIMDIFF_PERFECT:
aibot->unk000 = 60;
break;
case SIMDIFF_DARK:
aibot->unk000 = 0;
break;
}
aibot->aibotnum = aibotnum;
aibot->unk064 = 0;
aibot->fetchprop = NULL;
aibot->unk02c[0] = 0;
aibot->unk02c[1] = 0;
aibot->unk034 = 0;
aibot->unk040 = 0.0f;
aibot->loadedammo[0] = 0;
aibot->loadedammo[1] = 0;
aibot->unk058 = 0;
aibot->unk059 = 0;
aibot->unk05c = 0;
aibot->unk060 = 0;
#if !PAL
aibot->unk030 = 301;
#endif
aibot->unk038 = 0;
aibot->unk03e = -1;
aibot->unk03c = 0;
aibot->attackingplayernum = -1;
aibot->followingplayernum = -1;
aibot->dangerouspropnum = -1;
aibot->unk068 = 0;
aibot->unk06c = 0.0f;
aibot->unk070 = 0.0f;
aibot->unk074 = -1;
aibot->lastkilledbyplayernum = -1;
aibot->unk114 = -1;
aibot->command = AIBOTCMD_NORMAL;
aibot->unk098 = 0.0f;
aibot->defendholdpos.x = pos.x;
aibot->defendholdpos.y = pos.y;
aibot->defendholdpos.z = pos.z;
aibot->weaponnum = WEAPON_UNARMED;
aibot->unk04d[0] = 0;
aibot->unk04d[1] = 0;
aibot->skrocket = NULL;
aibot->unk0a0 = 0;
aibot->gunfunc = 0;
aibot->iscloserangeweapon = true;
aibot->teamisonlyai = 0;
aibot->unk09c_00 = 0;
aibot->unk09c_01 = 0;
aibot->cloakdeviceenabled = false;
aibot->rcp120cloakenabled = false;
aibot->unk04c_04 = 0;
aibot->unk04c_03 = 0;
aibot->unk04c_05 = 0;
aibot->unk04c_00 = 0;
aibot->unk048 = -1;
aibot->unk04a = -1;
aibot->unk0bc = -1;
aibot->unk0c4[HAND_LEFT] = 0;
aibot->unk0c4[HAND_RIGHT] = 0;
aibot->unk0cc = 0;
aibot->unk0d0 = 0;
aibot->unk0d8 = 0;
aibot->unk0dc = 0;
aibot->unk0e0[HAND_LEFT] = 0;
aibot->unk0e0[HAND_RIGHT] = 0;
aibot->maulercharge[HAND_LEFT] = 0.0f;
aibot->maulercharge[HAND_RIGHT] = 0.0f;
aibot->unk0a4 = model0001ae44(chr->model);
aibot->angleoffset = 0.0f;
aibot->speedtheta = 0.0f;
aibot->unk0b0 = model0001ae44(chr->model);
aibot->unk0b4 = 0.0f;
aibot->unk0b8 = 0.0f;
aibot->shotspeed.x = 0.0f;
aibot->shotspeed.y = 0.0f;
aibot->shotspeed.z = 0.0f;
aibot->unk118 = 0;
aibot->unk11c = 0;
aibot->unk120 = -1;
aibot->unk124 = -1;
aibot->unk128 = 0;
aibot->unk12c = 0;
for (i = 0; i < 12; i++) {
aibot->unk130[i] = -1;
aibot->playerdistances[i] = U32_MAX;
aibot->unk16c[i] = 0;
aibot->unk178[i] = -1;
aibot->unk1a8[i] = -1;
}
aibot->unk1c0 = 0.0f;
aibot->unk1c4 = 0.0f;
aibot->unk1c8 = 0.0f;
aibot->unk1cc = -1;
aibot->unk1d0 = 0;
aibot->unk1d4 = 0.0f;
aibot->unk1e4 = -1;
aibot->unk1e8 = 0;
aibot->unk208 = 0;
aibot->rand = random();
aibot->randttl60 = 0;
for (i = 0; i < 6; i++) {
aibot->killsbygunfunc[i][0] = 0.0f;
aibot->killsbygunfunc[i][1] = 0.0f;
aibot->suicidesbygunfunc[i][0] = 0.0f;
aibot->suicidesbygunfunc[i][1] = 0.0f;
aibot->equipdurations60[i][0] = 0;
aibot->equipdurations60[i][1] = 0;
aibot->unk2a8[i] = 0;
}
aibot->unk2a4 = 0;
aibot->dampensuicidesttl60 = 0;
aibot->unk2c4 = 0.0f;
aibot->unk2c8 = 0;
aibot->unk09c_03 = 0;
aibot->unk2cc = 0;
aibot->unk2d0 = random();
aibot->unk2d4 = random() * (1.0f / U32_MAX);
aibot->cheap = false;
#if VERSION >= VERSION_NTSC_1_0
aibot->unk078 = 0;
aibot->unk050 = 0;
aibot->unk09d = 0;
#endif
} else {
g_MpSimulantChrs[--g_NumMpSimulantChrs] = NULL;
return;
}
aibotAllocateInventory(chr, 10);
}
}
}
}
+27 -27
View File
@@ -2463,9 +2463,9 @@ glabel var7f1a863c
/* f01c778: 15c10005 */ bne $t6,$at,.L0f01c790
/* f01c77c: 0311c021 */ addu $t8,$t8,$s1
/* f01c780: 0018c140 */ sll $t8,$t8,0x5
/* f01c784: 3c01800b */ lui $at,%hi(g_MpPlayers+0x11)
/* f01c784: 3c01800b */ lui $at,%hi(g_PlayerConfigsArray+0x11)
/* f01c788: 00380821 */ addu $at,$at,$t8
/* f01c78c: a020c7c9 */ sb $zero,%lo(g_MpPlayers+0x11)($at)
/* f01c78c: a020c7c9 */ sb $zero,%lo(g_PlayerConfigsArray+0x11)($at)
.L0f01c790:
/* f01c790: 1080003b */ beqz $a0,.L0f01c880
/* f01c794: 30591000 */ andi $t9,$v0,0x1000
@@ -2474,9 +2474,9 @@ glabel var7f1a863c
/* f01c7a0: 00117880 */ sll $t7,$s1,0x2
/* f01c7a4: 01f17821 */ addu $t7,$t7,$s1
/* f01c7a8: 000f7940 */ sll $t7,$t7,0x5
/* f01c7ac: 3c01800b */ lui $at,%hi(g_MpPlayers+0x9d)
/* f01c7ac: 3c01800b */ lui $at,%hi(g_PlayerConfigsArray+0x9d)
/* f01c7b0: 002f0821 */ addu $at,$at,$t7
/* f01c7b4: a02dc855 */ sb $t5,%lo(g_MpPlayers+0x9d)($at)
/* f01c7b4: a02dc855 */ sb $t5,%lo(g_PlayerConfigsArray+0x9d)($at)
/* f01c7b8: 8e630490 */ lw $v1,0x490($s3)
/* f01c7bc: 24010002 */ addiu $at,$zero,0x2
/* f01c7c0: 02714021 */ addu $t0,$s3,$s1
@@ -2594,9 +2594,9 @@ glabel var7f1a863c
/* f01c950: 00116880 */ sll $t5,$s1,0x2
/* f01c954: 01b16821 */ addu $t5,$t5,$s1
/* f01c958: 000d6940 */ sll $t5,$t5,0x5
/* f01c95c: 3c04800b */ lui $a0,%hi(g_MpPlayers+0x45)
/* f01c95c: 3c04800b */ lui $a0,%hi(g_PlayerConfigsArray+0x45)
/* f01c960: 008d2021 */ addu $a0,$a0,$t5
/* f01c964: 8084c7fd */ lb $a0,%lo(g_MpPlayers+0x45)($a0)
/* f01c964: 8084c7fd */ lb $a0,%lo(g_PlayerConfigsArray+0x45)($a0)
/* f01c968: 0c005408 */ jal joyGetButtonsPressedThisFrame
/* f01c96c: 3405ffff */ dli $a1,0xffff
/* f01c970: 304f4000 */ andi $t7,$v0,0x4000
@@ -2948,8 +2948,8 @@ glabel var7f1a863c
.L0f01ce44:
/* f01ce44: 00116880 */ sll $t5,$s1,0x2
/* f01ce48: 01b16821 */ addu $t5,$t5,$s1
/* f01ce4c: 3c19800b */ lui $t9,%hi(g_MpPlayers)
/* f01ce50: 2739c7b8 */ addiu $t9,$t9,%lo(g_MpPlayers)
/* f01ce4c: 3c19800b */ lui $t9,%hi(g_PlayerConfigsArray)
/* f01ce50: 2739c7b8 */ addiu $t9,$t9,%lo(g_PlayerConfigsArray)
/* f01ce54: 000d6940 */ sll $t5,$t5,0x5
/* f01ce58: 01b91021 */ addu $v0,$t5,$t9
/* f01ce5c: afa20058 */ sw $v0,0x58($sp)
@@ -3120,19 +3120,19 @@ glabel var7f1a863c
/* f01d0a8: 8e630298 */ lw $v1,0x298($s3)
.L0f01d0ac:
/* f01d0ac: 8e630298 */ lw $v1,0x298($s3)
/* f01d0b0: 3c04800b */ lui $a0,%hi(g_MpPlayers+0x280)
/* f01d0b4: 2484ca38 */ addiu $a0,$a0,%lo(g_MpPlayers+0x280)
/* f01d0b0: 3c04800b */ lui $a0,%hi(g_PlayerConfigsArray+0x280)
/* f01d0b4: 2484ca38 */ addiu $a0,$a0,%lo(g_PlayerConfigsArray+0x280)
/* f01d0b8: 04610003 */ bgez $v1,.L0f01d0c8
/* f01d0bc: 27a20070 */ addiu $v0,$sp,0x70
/* f01d0c0: 8e78029c */ lw $t8,0x29c($s3)
/* f01d0c4: 0700005a */ bltz $t8,.L0f01d230
.L0f01d0c8:
/* f01d0c8: 3c05800b */ lui $a1,%hi(g_MpPlayers+0x320)
/* f01d0cc: 3c06800b */ lui $a2,%hi(g_MpPlayers+0xa0)
/* f01d0d0: 3c07800b */ lui $a3,%hi(g_MpPlayers)
/* f01d0d4: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers)
/* f01d0d8: 24c6c858 */ addiu $a2,$a2,%lo(g_MpPlayers+0xa0)
/* f01d0dc: 24a5cad8 */ addiu $a1,$a1,%lo(g_MpPlayers+0x320)
/* f01d0c8: 3c05800b */ lui $a1,%hi(g_PlayerConfigsArray+0x320)
/* f01d0cc: 3c06800b */ lui $a2,%hi(g_PlayerConfigsArray+0xa0)
/* f01d0d0: 3c07800b */ lui $a3,%hi(g_PlayerConfigsArray)
/* f01d0d4: 24e7c7b8 */ addiu $a3,$a3,%lo(g_PlayerConfigsArray)
/* f01d0d8: 24c6c858 */ addiu $a2,$a2,%lo(g_PlayerConfigsArray+0xa0)
/* f01d0dc: 24a5cad8 */ addiu $a1,$a1,%lo(g_PlayerConfigsArray+0x320)
/* f01d0e0: 00807825 */ or $t7,$a0,$zero
/* f01d0e4: 00407025 */ or $t6,$v0,$zero
/* f01d0e8: 2499009c */ addiu $t9,$a0,0x9c
@@ -5700,12 +5700,12 @@ glabel var7f1a863c
//
// // c76c
// if (g_BossFile.locktype == MPLOCKTYPE_CHALLENGE) {
// g_MpPlayers[i].base.team = 0;
// g_PlayerConfigsArray[i].base.team = 0;
// }
//
// // c790
// if (pass2 && (buttons & START_BUTTON)) {
// g_MpPlayers[i].handicap = 128;
// g_PlayerConfigsArray[i].handicap = 128;
//
// if (g_Vars.unk000490 == 2) {
// if (g_Vars.unk000494[i] == 0) {
@@ -5758,7 +5758,7 @@ glabel var7f1a863c
// }
//
// if (g_MenuData.root == MENUROOT_MPENDSCREEN) {
// u16 buttons2 = joyGetButtonsPressedThisFrame(g_MpPlayers[i].base.unk45, 0xffff);
// u16 buttons2 = joyGetButtonsPressedThisFrame(g_PlayerConfigsArray[i].base.unk45, 0xffff);
//
// if (buttons2 & B_BUTTON) {
// s32 playernum = -1;
@@ -5902,7 +5902,7 @@ glabel var7f1a863c
// mpPushEndscreenDialog(sp288, i);
// sp344 = true;
//
// if (g_MpPlayers[i].unk4c.unk00 && g_MpPlayers[i].unk4c.unk04) {
// if (g_PlayerConfigsArray[i].unk4c.unk00 && g_PlayerConfigsArray[i].unk4c.unk04) {
// func0f0fd548(i);
// }
// }
@@ -5969,15 +5969,15 @@ glabel var7f1a863c
// } else {
// // d0ac
// if (g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) {
// struct mpplayer tmp;
// struct mpplayerconfig tmp;
//
// tmp = g_MpPlayers[4];
// g_MpPlayers[4] = g_MpPlayers[0];
// g_MpPlayers[0] = tmp;
// tmp = g_PlayerConfigsArray[4];
// g_PlayerConfigsArray[4] = g_PlayerConfigsArray[0];
// g_PlayerConfigsArray[0] = tmp;
//
// tmp = g_MpPlayers[5];
// g_MpPlayers[5] = g_MpPlayers[1];
// g_MpPlayers[1] = tmp;
// tmp = g_PlayerConfigsArray[5];
// g_PlayerConfigsArray[5] = g_PlayerConfigsArray[1];
// g_PlayerConfigsArray[1] = tmp;
// }
// }
//
+1 -1
View File
@@ -8,7 +8,7 @@
#include "game/hudmsg.h"
#include "game/game_127910.h"
#include "game/mplayer/setup.h"
#include "game/game_197600.h"
#include "game/botcmd.h"
#include "game/lang.h"
#include "game/mplayer/mplayer.h"
#include "game/options.h"
+20 -20
View File
@@ -313,13 +313,13 @@ f32 playerChooseSpawnLocation(f32 chrwidth, struct coord *dstpos, s16 *dstrooms,
roomGetNeighbours(pad.room, neighbours, 20);
for (i = 0; i < g_NumMpSimulantChrs; i++) {
if (g_MpSimulantChrs[i]->prop
&& g_MpSimulantChrs[i]->prop != prop
&& (!prop || chrCompareTeams(prop->chr, g_MpSimulantChrs[i], COMPARE_ENEMIES))) {
xdiff = g_MpSimulantChrs[i]->prop->pos.x - pad.pos.x;
ydiff = g_MpSimulantChrs[i]->prop->pos.y - pad.pos.y;
zdiff = g_MpSimulantChrs[i]->prop->pos.z - pad.pos.z;
for (i = 0; i < g_BotCount; i++) {
if (g_MpBotChrPtrs[i]->prop
&& g_MpBotChrPtrs[i]->prop != prop
&& (!prop || chrCompareTeams(prop->chr, g_MpBotChrPtrs[i], COMPARE_ENEMIES))) {
xdiff = g_MpBotChrPtrs[i]->prop->pos.x - pad.pos.x;
ydiff = g_MpBotChrPtrs[i]->prop->pos.y - pad.pos.y;
zdiff = g_MpBotChrPtrs[i]->prop->pos.z - pad.pos.z;
sqdist = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff;
@@ -327,11 +327,11 @@ f32 playerChooseSpawnLocation(f32 chrwidth, struct coord *dstpos, s16 *dstrooms,
bestsqdist = sqdist;
}
if (arrayIntersects(tmppadrooms, g_MpSimulantChrs[i]->prop->rooms)) {
if (arrayIntersects(tmppadrooms, g_MpBotChrPtrs[i]->prop->rooms)) {
verybadpads[p] = true;
}
if (verybadpads[p] || arrayIntersects(neighbours, g_MpSimulantChrs[i]->prop->rooms)) {
if (verybadpads[p] || arrayIntersects(neighbours, g_MpBotChrPtrs[i]->prop->rooms)) {
badpads[p] = true;
}
}
@@ -1867,7 +1867,7 @@ void currentPlayerSpawn(void)
#if VERSION >= VERSION_NTSC_1_0
if (g_Vars.currentplayer->model00d4 == NULL
&& (IS8MB() || g_Vars.fourmeg2player || g_MpPlayerChrs[g_Vars.currentplayernum] == NULL)) {
&& (IS8MB() || g_Vars.fourmeg2player || g_MpAllChrPtrs[g_Vars.currentplayernum] == NULL)) {
func0f0b8ba0();
}
#else
@@ -1930,17 +1930,17 @@ void currentPlayerChooseBodyAndHead(s32 *bodynum, s32 *headnum, s32 *arg2)
}
if (g_Vars.normmplayerisrunning) {
if (g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum < mpGetNumHeads2()) {
*headnum = mpGetHeadId(g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum);
if (g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.mpheadnum < mpGetNumHeads2()) {
*headnum = mpGetHeadId(g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.mpheadnum);
} else {
*headnum = g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum - mpGetNumHeads2();
*headnum = g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.mpheadnum - mpGetNumHeads2();
if (arg2) {
*arg2 = true;
}
}
*bodynum = mpGetBodyId(g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpbodynum);
*bodynum = mpGetBodyId(g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.mpbodynum);
return;
}
@@ -2484,21 +2484,21 @@ glabel var7f1ad5b4
/* f0b9230: 11600011 */ beqz $t3,.L0f0b9278
/* f0b9234: 8da60004 */ lw $a2,0x4($t5)
/* f0b9238: 8e02028c */ lw $v0,0x28c($s0)
/* f0b923c: 3c01800b */ lui $at,%hi(g_MpPlayerChrs)
/* f0b9240: 3c0f800b */ lui $t7,%hi(g_MpPlayers)
/* f0b923c: 3c01800b */ lui $at,%hi(g_MpAllChrPtrs)
/* f0b9240: 3c0f800b */ lui $t7,%hi(g_PlayerConfigsArray)
/* f0b9244: 00027080 */ sll $t6,$v0,0x2
/* f0b9248: 002e0821 */ addu $at,$at,$t6
/* f0b924c: ac26c4d0 */ sw $a2,%lo(g_MpPlayerChrs)($at)
/* f0b924c: ac26c4d0 */ sw $a2,%lo(g_MpAllChrPtrs)($at)
/* f0b9250: 8e080288 */ lw $t0,0x288($s0)
/* f0b9254: 3c01800b */ lui $at,%hi(var800ac500)
/* f0b9258: 25efc7b8 */ addiu $t7,$t7,%lo(g_MpPlayers)
/* f0b9254: 3c01800b */ lui $at,%hi(g_MpAllChrConfigPtrs)
/* f0b9258: 25efc7b8 */ addiu $t7,$t7,%lo(g_PlayerConfigsArray)
/* f0b925c: 8d180070 */ lw $t8,0x70($t0)
/* f0b9260: 002e0821 */ addu $at,$at,$t6
/* f0b9264: 0018c880 */ sll $t9,$t8,0x2
/* f0b9268: 0338c821 */ addu $t9,$t9,$t8
/* f0b926c: 0019c940 */ sll $t9,$t9,0x5
/* f0b9270: 032f4821 */ addu $t1,$t9,$t7
/* f0b9274: ac29c500 */ sw $t1,%lo(var800ac500)($at)
/* f0b9274: ac29c500 */ sw $t1,%lo(g_MpAllChrConfigPtrs)($at)
.L0f0b9278:
/* f0b9278: 8cca0018 */ lw $t2,0x18($a2)
/* f0b927c: 354c0001 */ ori $t4,$t2,0x1
+4 -4
View File
@@ -5812,8 +5812,8 @@ glabel func0f0f3220
/* f0f3344: 01c37021 */ addu $t6,$t6,$v1
/* f0f3348: 8ced0000 */ lw $t5,0x0($a3)
/* f0f334c: 000e7140 */ sll $t6,$t6,0x5
/* f0f3350: 3c18800b */ lui $t8,%hi(g_MpPlayers)
/* f0f3354: 2718c7b8 */ addiu $t8,$t8,%lo(g_MpPlayers)
/* f0f3350: 3c18800b */ lui $t8,%hi(g_PlayerConfigsArray)
/* f0f3354: 2718c7b8 */ addiu $t8,$t8,%lo(g_PlayerConfigsArray)
/* f0f3358: 25cf004c */ addiu $t7,$t6,0x4c
/* f0f335c: ace30000 */ sw $v1,0x0($a3)
/* f0f3360: 01f82021 */ addu $a0,$t7,$t8
@@ -10996,11 +10996,11 @@ glabel func0f0f5004
/* f0f5004: 27bdffa0 */ addiu $sp,$sp,-96
/* f0f5008: 3c0e7f1b */ lui $t6,%hi(var7f1b25f8)
/* f0f500c: 27a20000 */ addiu $v0,$sp,0x0
/* f0f5010: 3c03800b */ lui $v1,%hi(g_MpPlayers)
/* f0f5010: 3c03800b */ lui $v1,%hi(g_PlayerConfigsArray)
/* f0f5014: 3c078007 */ lui $a3,%hi(g_MpPlayerNum)
/* f0f5018: 25ce25f8 */ addiu $t6,$t6,%lo(var7f1b25f8)
/* f0f501c: 24e71448 */ addiu $a3,$a3,%lo(g_MpPlayerNum)
/* f0f5020: 2463c7b8 */ addiu $v1,$v1,%lo(g_MpPlayers)
/* f0f5020: 2463c7b8 */ addiu $v1,$v1,%lo(g_PlayerConfigsArray)
/* f0f5024: 240800a0 */ addiu $t0,$zero,0xa0
/* f0f5028: 2409000c */ addiu $t1,$zero,0xc
/* f0f502c: 25d90060 */ addiu $t9,$t6,0x60
+2 -2
View File
@@ -650,8 +650,8 @@ void currentPlayerCalculateAiBuddyNums(void)
s32 playernum = g_Vars.currentplayernum;
s32 playercount = PLAYERCOUNT();
for (i = playercount; i < g_MpNumPlayers; i++) {
if (var800ac500[i]->team == var800ac500[playernum]->team) {
for (i = playercount; i < g_MpNumChrs; i++) {
if (g_MpAllChrConfigPtrs[i]->team == g_MpAllChrConfigPtrs[playernum]->team) {
g_Vars.players[playernum]->aibuddynums[g_Vars.players[playernum]->numaibuddies] = i;
g_Vars.players[playernum]->numaibuddies++;
}
File diff suppressed because it is too large Load Diff
+17 -17
View File
@@ -6,7 +6,7 @@
#include "game/atan2f.h"
#include "game/game_127910.h"
#include "game/mplayer/setup.h"
#include "game/game_190260.h"
#include "game/bot.h"
#include "game/game_19aa80.h"
#include "game/training/training.h"
#include "game/lang.h"
@@ -895,7 +895,7 @@ void mpPerformSanityChecks(void)
// Reset player handicaps
for (i = 0; i < 4; i++) {
if (g_MpSetup.chrslots & (1 << i)) {
g_MpPlayers[i].handicap = 0x80;
g_PlayerConfigsArray[i].handicap = 0x80;
numplayers++;
}
}
@@ -905,9 +905,9 @@ void mpPerformSanityChecks(void)
g_MpSetup.chrslots &= 0x000f;
for (i = 0; i != MAX_SIMULANTS; i++) {
g_MpSimulants[i].difficulty = g_MpSimulantDifficultiesPerNumPlayers[i * 4 + numplayers - 1];
g_BotConfigsArray[i].difficulty = g_MpSimulantDifficultiesPerNumPlayers[i * 4 + numplayers - 1];
if (g_MpSimulants[i].difficulty != SIMDIFF_DISABLED) {
if (g_BotConfigsArray[i].difficulty != BOTDIFF_DISABLED) {
g_MpSetup.chrslots |= 1 << (i + 4);
}
}
@@ -1285,10 +1285,10 @@ void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s3
s32 i;
for (i = 0; i < 8; i++) {
s32 simtype = mpGetSimTypeIndex(config->simulants[i].type, SIMDIFF_NORMAL);
s32 simtype = mpGetSimTypeIndex(config->simulants[i].type, BOTDIFF_NORMAL);
if (simtype >= 0) {
featurenum = g_MpSimulantTypes[simtype].requirefeature;
featurenum = g_BotProfiles[simtype].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, array, index, len);
@@ -1299,7 +1299,7 @@ void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s3
simtype = mpGetSimTypeIndex(0, config->simulants[i].difficulties[numplayers]);
if (simtype >= 0) {
featurenum = g_MpSimulantTypes[simtype].requirefeature;
featurenum = g_BotProfiles[simtype].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, array, index, len);
@@ -1326,7 +1326,7 @@ void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s3
#if VERSION >= VERSION_NTSC_1_0
if (challengeindex >= 25) {
index = mpForceUnlockFeature(MPFEATURE_SIMDIFF_DARK, array, index, len);
index = mpForceUnlockFeature(MPFEATURE_BOTDIFF_DARK, array, index, len);
} else if (challengeindex >= 20) {
index = mpForceUnlockFeature(MPFEATURE_STAGE_CARPARK, array, index, len);
} else if (challengeindex >= 15) {
@@ -1364,10 +1364,10 @@ void mpForceUnlockSimulantFeatures(void)
for (i = 0; i < 8; i++) {
// Force unlock the simulant type
s32 simtypeindex = mpGetSimTypeIndex(g_MpSimulants[i].base.simtype, SIMDIFF_NORMAL);
s32 simtypeindex = mpGetSimTypeIndex(g_BotConfigsArray[i].type, BOTDIFF_NORMAL);
if (simtypeindex >= 0) {
s32 featurenum = g_MpSimulantTypes[simtypeindex].requirefeature;
s32 featurenum = g_BotProfiles[simtypeindex].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, g_MpFeaturesForceUnlocked, index, ARRAYCOUNT(g_MpFeaturesForceUnlocked));
@@ -1375,10 +1375,10 @@ void mpForceUnlockSimulantFeatures(void)
}
// Force unlock the simulant difficulty
simtypeindex = mpGetSimTypeIndex(SIMTYPE_GENERAL, g_MpSimulants[i].difficulty);
simtypeindex = mpGetSimTypeIndex(BOTTYPE_GENERAL, g_BotConfigsArray[i].difficulty);
if (simtypeindex >= 0) {
s32 featurenum = g_MpSimulantTypes[simtypeindex].requirefeature;
s32 featurenum = g_BotProfiles[simtypeindex].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, g_MpFeaturesForceUnlocked, index, ARRAYCOUNT(g_MpFeaturesForceUnlocked));
@@ -1390,8 +1390,8 @@ void mpForceUnlockSimulantFeatures(void)
}
// Force unlock the simulant's body
if (g_MpSimulants[i].base.mpbodynum < ARRAYCOUNT(g_MpBodies)) {
s32 featurenum = g_MpBodies[g_MpSimulants[i].base.mpbodynum].requirefeature;
if (g_BotConfigsArray[i].base.mpbodynum < ARRAYCOUNT(g_MpBodies)) {
s32 featurenum = g_MpBodies[g_BotConfigsArray[i].base.mpbodynum].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, g_MpFeaturesForceUnlocked, index, ARRAYCOUNT(g_MpFeaturesForceUnlocked));
@@ -1399,8 +1399,8 @@ void mpForceUnlockSimulantFeatures(void)
}
// Force unlock the simulant's head
if (g_MpSimulants[i].base.mpheadnum < ARRAYCOUNT(g_MpHeads)) {
s32 featurenum = g_MpHeads[g_MpSimulants[i].base.mpheadnum].requirefeature;
if (g_BotConfigsArray[i].base.mpheadnum < ARRAYCOUNT(g_MpHeads)) {
s32 featurenum = g_MpHeads[g_BotConfigsArray[i].base.mpheadnum].requirefeature;
if (featurenum) {
index = mpForceUnlockFeature(featurenum, g_MpFeaturesForceUnlocked, index, ARRAYCOUNT(g_MpFeaturesForceUnlocked));
@@ -1441,7 +1441,7 @@ void func0f19c1cc(void)
mpSetLock(MPLOCKTYPE_CHALLENGE, 5);
for (i = 0; i < 4; i++) {
g_MpPlayers[i].base.team = 0;
g_PlayerConfigsArray[i].base.team = 0;
}
}
+4 -4
View File
@@ -396,8 +396,8 @@ void lvInit(s32 stagenum)
if (g_Vars.mplayerisrunning == false) {
g_Vars.playerstats[0].mpindex = 4;
g_MpPlayers[4].base.contpad1 = 0;
g_MpPlayers[4].base.contpad2 = 1;
g_PlayerConfigsArray[4].contpad1 = 0;
g_PlayerConfigsArray[4].contpad2 = 1;
}
for (i = 0; i != ARRAYCOUNT(g_Vars.playerstats); i++) {
@@ -8211,8 +8211,8 @@ void lvTick(void)
}
}
for (i = 0; i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->actiontype == ACT_DIE) {
for (i = 0; i < g_MpNumChrs; i++) {
if (g_MpAllChrPtrs[i]->actiontype == ACT_DIE) {
numdying++;
}
}
+6 -6
View File
@@ -10868,7 +10868,7 @@ Gfx *menuRenderItemPlayerStats(Gfx *gdl, struct menurendercontext *context)
s32 y;
u32 maincolour;
s32 playernum = g_MpSelectedPlayersForStats[g_MpPlayerNum];
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
u32 selectioncolour;
s32 textheight;
s32 textwidth;
@@ -10880,9 +10880,9 @@ Gfx *menuRenderItemPlayerStats(Gfx *gdl, struct menurendercontext *context)
s32 ypos = 0;
if (playernum < 4) {
mpchr = &g_MpPlayers[playernum].base;
mpchr = &g_PlayerConfigsArray[playernum].base;
} else {
mpchr = &g_MpSimulants[playernum - 4].base;
mpchr = &g_BotConfigsArray[playernum - 4].base;
}
gdl = func0f153628(gdl);
@@ -11035,12 +11035,12 @@ Gfx *menuRenderItemPlayerStats(Gfx *gdl, struct menurendercontext *context)
for (i = 0; i < 12; i++) {
if (g_MpSetup.chrslots & (1 << i)) {
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (i != playernum) {
+19 -19
View File
@@ -51,9 +51,9 @@ s32 mpStatsForPlayerDropdownHandler(s32 operation, struct menuitem *item, union
for (a1 = 0; a1 < 12; a1++) {
if (g_MpSetup.chrslots & (1 << a1)) {
if (a1 < 4) {
name = g_MpPlayers[a1].base.name;
name = g_PlayerConfigsArray[a1].base.name;
} else {
name = g_MpSimulants[a1 - 4].base.name;
name = g_BotConfigsArray[a1 - 4].base.name;
}
if (v0 == data->list.value) {
@@ -219,9 +219,9 @@ char *mpMenuTitleStatsFor(struct menudialog *dialog)
char *name;
if (g_MpSelectedPlayersForStats[g_MpPlayerNum] < 4) {
name = g_MpPlayers[g_MpSelectedPlayersForStats[g_MpPlayerNum]].base.name;
name = g_PlayerConfigsArray[g_MpSelectedPlayersForStats[g_MpPlayerNum]].base.name;
} else {
name = g_MpSimulants[g_MpSelectedPlayersForStats[g_MpPlayerNum] - 4].base.name;
name = g_BotConfigsArray[g_MpSelectedPlayersForStats[g_MpPlayerNum] - 4].base.name;
}
// "Stats for %s"
@@ -409,13 +409,13 @@ char *mpMenuTextPlacementWithSuffix(struct menuitem *item)
L_MPMENU_275, // "12th"
};
return langGet(suffixes[g_MpPlayers[g_MpPlayerNum].base.placement]);
return langGet(suffixes[g_PlayerConfigsArray[g_MpPlayerNum].base.placement]);
}
s32 mpPlacementMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_GETCOLOUR) {
if (g_MpPlayers[g_MpPlayerNum].base.placement == 0) { // winner
if (g_PlayerConfigsArray[g_MpPlayerNum].base.placement == 0) { // winner
data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, func0f006b08(40) * 255);
}
}
@@ -434,7 +434,7 @@ s32 mpAwardsMenuHandler(s32 operation, struct menuitem *item, union handlerdata
u32 colour;
for (i = 0; i < 4; i++) {
if (g_MpPlayers[g_MpPlayerNum].medals & (1 << i)) {
if (g_PlayerConfigsArray[g_MpPlayerNum].medals & (1 << i)) {
switch (i) {
case 0: colour = 0xff7f7fff; break; // killmaster - red
case 1: colour = 0xbfbf00ff; break; // headshot - yellow
@@ -487,7 +487,7 @@ s32 mpAwardsMenuHandler(s32 operation, struct menuitem *item, union handlerdata
s32 mpPlayerTitleMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_GETCOLOUR) {
if (g_MpPlayers[g_MpPlayerNum].title != g_MpPlayers[g_MpPlayerNum].newtitle) {
if (g_PlayerConfigsArray[g_MpPlayerNum].title != g_PlayerConfigsArray[g_MpPlayerNum].newtitle) {
data->label.colour2 = colourBlend(data->label.colour2, 0xffff00ff, func0f006b08(40) * 255);
}
}
@@ -497,7 +497,7 @@ s32 mpPlayerTitleMenuHandler(s32 operation, struct menuitem *item, union handler
char *mpMenuTextPlayerTitle(s32 arg0)
{
return langGet(L_MISC_185 + g_MpPlayers[g_MpPlayerNum].title);
return langGet(L_MISC_185 + g_PlayerConfigsArray[g_MpPlayerNum].title);
}
#if VERSION >= VERSION_NTSC_1_0
@@ -510,10 +510,10 @@ s32 mpConfirmPlayerNameHandler(s32 operation, struct menuitem *item, union handl
case MENUOP_GETTEXT:
i = 0;
while (g_MpPlayers[g_MpPlayerNum].base.name[i] != '\n'
&& g_MpPlayers[g_MpPlayerNum].base.name[i] != '\0'
while (g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] != '\n'
&& g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] != '\0'
&& i <= 10) {
name[i] = g_MpPlayers[g_MpPlayerNum].base.name[i];
name[i] = g_PlayerConfigsArray[g_MpPlayerNum].base.name[i];
i++;
}
@@ -526,15 +526,15 @@ s32 mpConfirmPlayerNameHandler(s32 operation, struct menuitem *item, union handl
i = 0;
while (i <= 10 && name[i] != '\0') {
g_MpPlayers[g_MpPlayerNum].base.name[i] = name[i];
g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] = name[i];
i++;
}
g_MpPlayers[g_MpPlayerNum].base.name[i] = '\n';
g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] = '\n';
i++;
while (i <= 10) {
g_MpPlayers[g_MpPlayerNum].base.name[i] = '\0';
g_PlayerConfigsArray[g_MpPlayerNum].base.name[i] = '\0';
i++;
}
break;
@@ -603,10 +603,10 @@ void mpPushEndscreenDialog(u32 arg0, u32 playernum)
}
#if VERSION >= VERSION_NTSC_1_0
if ((g_MpPlayers[g_MpPlayerNum].options & OPTION_ASKEDSAVEPLAYER) == 0
&& g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 0
&& g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial == 0) {
g_MpPlayers[g_MpPlayerNum].options |= OPTION_ASKEDSAVEPLAYER;
if ((g_PlayerConfigsArray[g_MpPlayerNum].options & OPTION_ASKEDSAVEPLAYER) == 0
&& g_PlayerConfigsArray[g_MpPlayerNum].fileguid.fileid == 0
&& g_PlayerConfigsArray[g_MpPlayerNum].fileguid.deviceserial == 0) {
g_PlayerConfigsArray[g_MpPlayerNum].options |= OPTION_ASKEDSAVEPLAYER;
menuPushDialog(&g_MpEndscreenSavePlayerMenuDialog);
}
#endif
+2 -2
View File
@@ -1,7 +1,7 @@
#include <ultra64.h>
#include "constants.h"
#include "game/chr/chrai.h"
#include "game/game_190260.h"
#include "game/bot.h"
#include "bss.h"
#include "data.h"
#include "types.h"
@@ -11,7 +11,7 @@
*/
bool aiMpInitSimulants(void)
{
mpInitSimulants();
botSpawnAll();
g_Vars.aioffset += 2;
return false;
}
+277 -277
View File
File diff suppressed because it is too large Load Diff
+116 -116
View File
@@ -18,7 +18,7 @@
#include "game/mplayer/setup.h"
#include "game/mplayer/scenarios.h"
#include "game/radar.h"
#include "game/game_197600.h"
#include "game/botcmd.h"
#include "game/game_19aa80.h"
#include "game/lang.h"
#include "game/mplayer/mplayer.h"
@@ -904,14 +904,14 @@ void scenarioHtbTick(void)
// Check if a simulant is holding it
if (g_ScenarioData.htb.token == NULL) {
for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) {
for (i = PLAYERCOUNT(); i < g_MpNumChrs; i++) {
#if VERSION >= VERSION_NTSC_1_0
if (g_MpPlayerChrs[i]->prop && g_MpPlayerChrs[i]->aibot->unk09c_00)
if (g_MpAllChrPtrs[i]->prop && g_MpAllChrPtrs[i]->aibot->unk09c_00)
#else
if (g_MpPlayerChrs[i]->aibot->unk09c_00)
if (g_MpAllChrPtrs[i]->aibot->unk09c_00)
#endif
{
g_ScenarioData.htb.token = g_MpPlayerChrs[i]->prop;
g_ScenarioData.htb.token = g_MpAllChrPtrs[i]->prop;
break;
}
}
@@ -941,7 +941,7 @@ void scenarioHtbCallback14(struct chrdata *chr)
if (chr->aibot->unk0a0 >= PALDOWN(7200)) {
sndStart(var80095200, SFX_MP_SCOREPOINT, NULL, -1, -1, -1, -1, -1);
var800ac500[mpPlayerGetIndex(chr)]->unk3e++;
g_MpAllChrConfigPtrs[mpPlayerGetIndex(chr)]->unk3e++;
chr->aibot->unk0a0 = 0;
}
} else {
@@ -953,7 +953,7 @@ void scenarioHtbCallback14(struct chrdata *chr)
if (g_Vars.currentplayerstats->tokenheldtime >= PALDOWN(7200)) {
sndStart(var80095200, SFX_MP_SCOREPOINT, NULL, -1, -1, -1, -1, -1);
var800ac500[g_Vars.currentplayernum]->unk3e++;
g_MpAllChrConfigPtrs[g_Vars.currentplayernum]->unk3e++;
hudmsgCreateWithFlags(langGet(L_MPWEAPONS_024), HUDMSGTYPE_MPSCENARIO, HUDMSGFLAG_ONLYIFALIVE); // "1 Point!"
g_Vars.currentplayerstats->tokenheldtime = 0;
}
@@ -1318,9 +1318,9 @@ glabel scenarioHtbCallback18
);
#endif
void scenarioHtbKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
void scenarioHtbKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
{
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
s32 i;
*score = 0;
@@ -1332,9 +1332,9 @@ void scenarioHtbKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
*score -= mpchr->killcounts[i];
} else if (g_MpSetup.options & MPOPTION_TEAMSENABLED) {
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (loopmpchr->team == mpchr->team) {
@@ -1428,12 +1428,12 @@ void scenarioCtcInit(void)
for (k = 0; k < MAX_MPCHRS; k++) {
if (g_MpSetup.chrslots & (1 << k)) {
struct mpchr *basedata;
struct mpchrconfig *basedata;
if (k < 4) {
basedata = &g_MpPlayers[k].base;
basedata = &g_PlayerConfigsArray[k].base;
} else {
basedata = &g_MpSimulants[k - 4].base;
basedata = &g_BotConfigsArray[k - 4].base;
}
while (basedata->team >= scenarioGetMaxTeams()) {
@@ -1603,8 +1603,8 @@ glabel scenarioCtcReset
/* f180f64: 00116080 */ sll $t4,$s1,0x2
/* f180f68: 00115080 */ sll $t2,$s1,0x2
/* f180f6c: 01515021 */ addu $t2,$t2,$s1
/* f180f70: 3c0b800b */ lui $t3,%hi(g_MpPlayers)
/* f180f74: 256bc7b8 */ addiu $t3,$t3,%lo(g_MpPlayers)
/* f180f70: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray)
/* f180f74: 256bc7b8 */ addiu $t3,$t3,%lo(g_PlayerConfigsArray)
/* f180f78: 000a5140 */ sll $t2,$t2,0x5
/* f180f7c: 10000009 */ b .L0f180fa4
/* f180f80: 014b8021 */ addu $s0,$t2,$t3
@@ -1613,8 +1613,8 @@ glabel scenarioCtcReset
/* f180f88: 000c6080 */ sll $t4,$t4,0x2
/* f180f8c: 01916023 */ subu $t4,$t4,$s1
/* f180f90: 000c6080 */ sll $t4,$t4,0x2
/* f180f94: 3c19800b */ lui $t9,%hi(g_MpSimulants)
/* f180f98: 2739c538 */ addiu $t9,$t9,%lo(g_MpSimulants)
/* f180f94: 3c19800b */ lui $t9,%hi(g_BotConfigsArray)
/* f180f98: 2739c538 */ addiu $t9,$t9,%lo(g_BotConfigsArray)
/* f180f9c: 258dfed0 */ addiu $t5,$t4,-304
/* f180fa0: 01b98021 */ addu $s0,$t5,$t9
.L0f180fa4:
@@ -2306,9 +2306,9 @@ glabel scenarioCtcReset
);
#endif
void scenarioCtcKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
void scenarioCtcKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
{
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
s32 i;
*score = 0;
@@ -2320,9 +2320,9 @@ void scenarioCtcKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
*score -= mpchr->killcounts[i];
} else {
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (loopmpchr->team == mpchr->team) {
@@ -3828,14 +3828,14 @@ glabel var7f1b8950
/* f1822f8: 00009025 */ or $s2,$zero,$zero
/* f1822fc: 0c004241 */ jal sndStart
/* f182300: e7a60014 */ swc1 $f6,0x14($sp)
/* f182304: 3c03800b */ lui $v1,%hi(g_MpNumPlayers)
/* f182308: 8c63c530 */ lw $v1,%lo(g_MpNumPlayers)($v1)
/* f18230c: 3c10800b */ lui $s0,%hi(g_MpPlayerChrs)
/* f182310: 2610c4d0 */ addiu $s0,$s0,%lo(g_MpPlayerChrs)
/* f182304: 3c03800b */ lui $v1,%hi(g_MpNumChrs)
/* f182308: 8c63c530 */ lw $v1,%lo(g_MpNumChrs)($v1)
/* f18230c: 3c10800b */ lui $s0,%hi(g_MpAllChrPtrs)
/* f182310: 2610c4d0 */ addiu $s0,$s0,%lo(g_MpAllChrPtrs)
/* f182314: 1860001e */ blez $v1,.L0f182390
/* f182318: 00002825 */ or $a1,$zero,$zero
/* f18231c: 3c11800b */ lui $s1,%hi(var800ac500)
/* f182320: 2631c500 */ addiu $s1,$s1,%lo(var800ac500)
/* f18231c: 3c11800b */ lui $s1,%hi(g_MpAllChrConfigPtrs)
/* f182320: 2631c500 */ addiu $s1,$s1,%lo(g_MpAllChrConfigPtrs)
.L0f182324:
/* f182324: 8e0d0000 */ lw $t5,0x0($s0)
/* f182328: 91a40125 */ lbu $a0,0x125($t5)
@@ -3857,8 +3857,8 @@ glabel var7f1b8950
/* f182368: 252a0001 */ addiu $t2,$t1,0x1
/* f18236c: a44a003e */ sh $t2,0x3e($v0)
.L0f182370:
/* f182370: 3c03800b */ lui $v1,%hi(g_MpNumPlayers)
/* f182374: 8c63c530 */ lw $v1,%lo(g_MpNumPlayers)($v1)
/* f182370: 3c03800b */ lui $v1,%hi(g_MpNumChrs)
/* f182374: 8c63c530 */ lw $v1,%lo(g_MpNumChrs)($v1)
/* f182378: 26520001 */ addiu $s2,$s2,0x1
/* f18237c: 24a50004 */ addiu $a1,$a1,0x0004
/* f182380: 0243082a */ slt $at,$s2,$v1
@@ -3868,8 +3868,8 @@ glabel var7f1b8950
.L0f182390:
/* f182390: 1860001b */ blez $v1,.L0f182400
/* f182394: 8e91028c */ lw $s1,0x28c($s4)
/* f182398: 3c10800b */ lui $s0,%hi(g_MpPlayerChrs)
/* f18239c: 2610c4d0 */ addiu $s0,$s0,%lo(g_MpPlayerChrs)
/* f182398: 3c10800b */ lui $s0,%hi(g_MpAllChrPtrs)
/* f18239c: 2610c4d0 */ addiu $s0,$s0,%lo(g_MpAllChrPtrs)
/* f1823a0: 8e020000 */ lw $v0,0x0($s0)
.L0f1823a4:
/* f1823a4: 8c4b02d4 */ lw $t3,0x2d4($v0)
@@ -3889,8 +3889,8 @@ glabel var7f1b8950
/* f1823dc: 0fc377e9 */ jal hudmsgCreateWithFlags
/* f1823e0: 24060001 */ addiu $a2,$zero,0x1
.L0f1823e4:
/* f1823e4: 3c0d800b */ lui $t5,%hi(g_MpNumPlayers)
/* f1823e8: 8dadc530 */ lw $t5,%lo(g_MpNumPlayers)($t5)
/* f1823e4: 3c0d800b */ lui $t5,%hi(g_MpNumChrs)
/* f1823e8: 8dadc530 */ lw $t5,%lo(g_MpNumChrs)($t5)
/* f1823ec: 26520001 */ addiu $s2,$s2,0x1
/* f1823f0: 26100004 */ addiu $s0,$s0,0x4
/* f1823f4: 024d082a */ slt $at,$s2,$t5
@@ -4617,9 +4617,9 @@ glabel scenarioKohCallback18
);
#endif
void scenarioKohKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
void scenarioKohKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
{
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
s32 i;
*score = 0;
@@ -4631,9 +4631,9 @@ void scenarioKohKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
*score -= mpchr->killcounts[i];
} else {
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (loopmpchr->team == mpchr->team) {
@@ -5331,9 +5331,9 @@ void scenarioHtmTick(void)
// Check if a simulant is holding it
if (g_ScenarioData.htm.uplink == NULL) {
for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->aibot->unk04c_05) {
g_ScenarioData.htm.uplink = g_MpPlayerChrs[i]->prop;
for (i = PLAYERCOUNT(); i < g_MpNumChrs; i++) {
if (g_MpAllChrPtrs[i]->aibot->unk04c_05) {
g_ScenarioData.htm.uplink = g_MpAllChrPtrs[i]->prop;
break;
}
}
@@ -6492,9 +6492,9 @@ glabel scenarioHtmCallback18
);
#endif
void scenarioHtmKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
void scenarioHtmKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
{
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
s32 i;
s32 index;
@@ -6511,9 +6511,9 @@ void scenarioHtmKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
*score -= mpchr->killcounts[i];
} else if (g_MpSetup.options & MPOPTION_TEAMSENABLED) {
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (loopmpchr->team == mpchr->team) {
@@ -6962,8 +6962,8 @@ glabel scenarioPacChooseVictims
/* f184418: a440001e */ sh $zero,0x1e($v0)
/* f18441c: 1443fffd */ bne $v0,$v1,.L0f184414
/* f184420: a4400036 */ sh $zero,0x36($v0)
/* f184424: 3c13800b */ lui $s3,%hi(g_MpNumPlayers)
/* f184428: 2673c530 */ addiu $s3,$s3,%lo(g_MpNumPlayers)
/* f184424: 3c13800b */ lui $s3,%hi(g_MpNumChrs)
/* f184428: 2673c530 */ addiu $s3,$s3,%lo(g_MpNumChrs)
/* f18442c: 8e640000 */ lw $a0,0x0($s3)
/* f184430: 00008825 */ or $s1,$zero,$zero
/* f184434: 1880001f */ blez $a0,.L0f1844b4
@@ -7038,9 +7038,9 @@ glabel scenarioPacChooseVictims
//
// i = 0;
//
// while (i < g_MpNumPlayers) {
// while (i < g_MpNumChrs) {
// bool isnew = true;
// s32 victimplayernum = random() % g_MpNumPlayers;
// s32 victimplayernum = random() % g_MpNumChrs;
//
// for (j = 0; j < i; j++) {
// if (g_ScenarioData.pac.victims[j] == victimplayernum) {
@@ -7055,7 +7055,7 @@ glabel scenarioPacChooseVictims
// }
// }
//
// for (i = 0; i < g_MpNumPlayers; i++) {
// for (i = 0; i < g_MpNumChrs; i++) {
// // This loop probably printed debug messages
// }
//}
@@ -7092,11 +7092,11 @@ glabel scenarioPacHighlight
/* f18456c: 00184040 */ sll $t0,$t8,0x1
/* f184570: 01284821 */ addu $t1,$t1,$t0
/* f184574: 8529c118 */ lh $t1,%lo(g_ScenarioData+0x8)($t1)
/* f184578: 3c0b800b */ lui $t3,%hi(g_MpPlayerChrs)
/* f184578: 3c0b800b */ lui $t3,%hi(g_MpAllChrPtrs)
/* f18457c: 8c990004 */ lw $t9,0x4($a0)
/* f184580: 00095080 */ sll $t2,$t1,0x2
/* f184584: 016a5821 */ addu $t3,$t3,$t2
/* f184588: 8d6bc4d0 */ lw $t3,%lo(g_MpPlayerChrs)($t3)
/* f184588: 8d6bc4d0 */ lw $t3,%lo(g_MpAllChrPtrs)($t3)
/* f18458c: 240c00ff */ addiu $t4,$zero,0xff
/* f184590: 240d0040 */ addiu $t5,$zero,0x40
/* f184594: 172b0006 */ bne $t9,$t3,.L0f1845b0
@@ -7118,7 +7118,7 @@ glabel scenarioPacHighlight
// if ((g_MpSetup.options & MPOPTION_PAC_HIGHLIGHTTARGET) &&
// (prop->type == PROPTYPE_PLAYER || prop->type == PROPTYPE_CHR) &&
// g_ScenarioData.pac.victimindex != -1 &&
// prop->chr == g_MpPlayerChrs[g_ScenarioData.pac.victims[g_ScenarioData.pac.victimindex]]) {
// prop->chr == g_MpAllChrPtrs[g_ScenarioData.pac.victims[g_ScenarioData.pac.victimindex]]) {
// colour[0] = 0;
// colour[1] = 0xff;
// colour[2] = 0;
@@ -7137,10 +7137,10 @@ glabel func0f1845bc
/* f1845c0: 2442c110 */ addiu $v0,$v0,%lo(g_ScenarioData)
/* f1845c4: 8c4e0004 */ lw $t6,0x4($v0)
/* f1845c8: 27bdff70 */ addiu $sp,$sp,-144
/* f1845cc: 3c18800b */ lui $t8,%hi(g_MpNumPlayers)
/* f1845cc: 3c18800b */ lui $t8,%hi(g_MpNumChrs)
/* f1845d0: 25cf0001 */ addiu $t7,$t6,0x1
/* f1845d4: ac4f0004 */ sw $t7,0x4($v0)
/* f1845d8: 8f18c530 */ lw $t8,%lo(g_MpNumPlayers)($t8)
/* f1845d8: 8f18c530 */ lw $t8,%lo(g_MpNumChrs)($t8)
/* f1845dc: afbf002c */ sw $ra,0x2c($sp)
/* f1845e0: afb40028 */ sw $s4,0x28($sp)
/* f1845e4: afb30024 */ sw $s3,0x24($sp)
@@ -7205,8 +7205,8 @@ glabel func0f1845bc
/* f1846b4: 10000018 */ b .L0f184718
/* f1846b8: 02202025 */ or $a0,$s1,$zero
.L0f1846bc:
/* f1846bc: 3c09800b */ lui $t1,%hi(var800ac500)
/* f1846c0: 2529c500 */ addiu $t1,$t1,%lo(var800ac500)
/* f1846bc: 3c09800b */ lui $t1,%hi(g_MpAllChrConfigPtrs)
/* f1846c0: 2529c500 */ addiu $t1,$t1,%lo(g_MpAllChrConfigPtrs)
/* f1846c4: 00144080 */ sll $t0,$s4,0x2
/* f1846c8: 01098021 */ addu $s0,$t0,$t1
/* f1846cc: 0fc619e0 */ jal mpChrsAreSameTeam
@@ -7283,10 +7283,10 @@ glabel func0f1845bc
/* f1845c0: 2442c110 */ addiu $v0,$v0,%lo(g_ScenarioData)
/* f1845c4: 8c4e0004 */ lw $t6,0x4($v0)
/* f1845c8: 27bdff70 */ addiu $sp,$sp,-144
/* f1845cc: 3c18800b */ lui $t8,%hi(g_MpNumPlayers)
/* f1845cc: 3c18800b */ lui $t8,%hi(g_MpNumChrs)
/* f1845d0: 25cf0001 */ addiu $t7,$t6,0x1
/* f1845d4: ac4f0004 */ sw $t7,0x4($v0)
/* f1845d8: 8f18c530 */ lw $t8,%lo(g_MpNumPlayers)($t8)
/* f1845d8: 8f18c530 */ lw $t8,%lo(g_MpNumChrs)($t8)
/* f1845dc: afbf002c */ sw $ra,0x2c($sp)
/* f1845e0: afb40028 */ sw $s4,0x28($sp)
/* f1845e4: afb30024 */ sw $s3,0x24($sp)
@@ -7351,8 +7351,8 @@ glabel func0f1845bc
/* f1846b4: 10000018 */ b .L0f184718
/* f1846b8: 02202025 */ or $a0,$s1,$zero
.L0f1846bc:
/* f1846bc: 3c09800b */ lui $t1,%hi(var800ac500)
/* f1846c0: 2529c500 */ addiu $t1,$t1,%lo(var800ac500)
/* f1846bc: 3c09800b */ lui $t1,%hi(g_MpAllChrConfigPtrs)
/* f1846c0: 2529c500 */ addiu $t1,$t1,%lo(g_MpAllChrConfigPtrs)
/* f1846c4: 00144080 */ sll $t0,$s4,0x2
/* f1846c8: 01098021 */ addu $s0,$t0,$t1
/* f1846cc: 0fc619e0 */ jal mpChrsAreSameTeam
@@ -8338,9 +8338,9 @@ glabel scenarioPacCallback18
);
#endif
void scenarioPacKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
void scenarioPacKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
{
struct mpchr *loopmpchr;
struct mpchrconfig *loopmpchr;
s32 i;
s32 index;
@@ -8358,9 +8358,9 @@ void scenarioPacKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3)
*score -= mpchr->killcounts[i];
} else if (g_MpSetup.options & MPOPTION_TEAMSENABLED) {
if (i < 4) {
loopmpchr = &g_MpPlayers[i].base;
loopmpchr = &g_PlayerConfigsArray[i].base;
} else {
loopmpchr = &g_MpSimulants[i - 4].base;
loopmpchr = &g_BotConfigsArray[i - 4].base;
}
if (loopmpchr->team == mpchr->team) {
@@ -8398,11 +8398,11 @@ glabel scenarioPacRadar2
/* f184db8: 000fc040 */ sll $t8,$t7,0x1
/* f184dbc: 0338c821 */ addu $t9,$t9,$t8
/* f184dc0: 8739c118 */ lh $t9,%lo(g_ScenarioData+0x8)($t9)
/* f184dc4: 3c09800b */ lui $t1,%hi(g_MpPlayerChrs)
/* f184dc4: 3c09800b */ lui $t1,%hi(g_MpAllChrPtrs)
/* f184dc8: 3c02800a */ lui $v0,%hi(g_Vars+0x284)
/* f184dcc: 00194080 */ sll $t0,$t9,0x2
/* f184dd0: 01284821 */ addu $t1,$t1,$t0
/* f184dd4: 8d29c4d0 */ lw $t1,%lo(g_MpPlayerChrs)($t1)
/* f184dd4: 8d29c4d0 */ lw $t1,%lo(g_MpAllChrPtrs)($t1)
/* f184dd8: 8d2a001c */ lw $t2,0x1c($t1)
/* f184ddc: 15450033 */ bne $t2,$a1,.L0f184eac
/* f184de0: afaa0034 */ sw $t2,0x34($sp)
@@ -8472,7 +8472,7 @@ glabel scenarioPacRadar2
//{
// if ((g_MpSetup.options & MPOPTION_PAC_SHOWONRADAR) && g_ScenarioData.pac.victimindex >= 0) {
// s32 index = g_ScenarioData.pac.victimindex;
// struct prop *thing = g_MpPlayerChrs[g_ScenarioData.pac.victims[index]]->prop;
// struct prop *thing = g_MpAllChrPtrs[g_ScenarioData.pac.victims[index]]->prop;
//
// if (thing == prop) {
// struct coord dist;
@@ -8958,8 +8958,8 @@ void mpCreateMatchStartHudmsgs(void)
sprintf(scenarioname, "%s\n", langGet(g_MpScenarioOverviews[g_MpSetup.scenario].name));
for (i = 0; i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->aibot == NULL) {
for (i = 0; i < g_MpNumChrs; i++) {
if (g_MpAllChrPtrs[i]->aibot == NULL) {
setCurrentPlayerNum(i);
if (g_BossFile.locktype == MPLOCKTYPE_CHALLENGE) {
@@ -9561,11 +9561,11 @@ glabel func0f185c14
/* f185c60: 1000003b */ b .L0f185d50
/* f185c64: 8fbf001c */ lw $ra,0x1c($sp)
.L0f185c68:
/* f185c68: 3c09800b */ lui $t1,%hi(g_MpSimulants)
/* f185c6c: 3c07800b */ lui $a3,%hi(g_MpPlayers)
/* f185c68: 3c09800b */ lui $t1,%hi(g_BotConfigsArray)
/* f185c6c: 3c07800b */ lui $a3,%hi(g_PlayerConfigsArray)
/* f185c70: acc00000 */ sw $zero,0x0($a2)
/* f185c74: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers)
/* f185c78: 2529c538 */ addiu $t1,$t1,%lo(g_MpSimulants)
/* f185c74: 24e7c7b8 */ addiu $a3,$a3,%lo(g_PlayerConfigsArray)
/* f185c78: 2529c538 */ addiu $t1,$t1,%lo(g_BotConfigsArray)
/* f185c7c: 00001025 */ or $v0,$zero,$zero
/* f185c80: 02001825 */ or $v1,$s0,$zero
/* f185c84: 240a004c */ addiu $t2,$zero,0x4c
@@ -9730,13 +9730,13 @@ glabel var7f1b89b8
/* f185ebc: 00001025 */ or $v0,$zero,$zero
.L0f185ec0:
/* f185ec0: 8d8ca248 */ lw $t4,%lo(g_Vars+0x288)($t4)
/* f185ec4: 3c0f800b */ lui $t7,%hi(g_MpPlayers+0x14)
/* f185ec4: 3c0f800b */ lui $t7,%hi(g_PlayerConfigsArray+0x14)
/* f185ec8: 8d8d0070 */ lw $t5,0x70($t4)
/* f185ecc: 000d7080 */ sll $t6,$t5,0x2
/* f185ed0: 01cd7021 */ addu $t6,$t6,$t5
/* f185ed4: 000e7140 */ sll $t6,$t6,0x5
/* f185ed8: 01ee7821 */ addu $t7,$t7,$t6
/* f185edc: 8defc7cc */ lw $t7,%lo(g_MpPlayers+0x14)($t7)
/* f185edc: 8defc7cc */ lw $t7,%lo(g_PlayerConfigsArray+0x14)($t7)
/* f185ee0: 31f80002 */ andi $t8,$t7,0x2
/* f185ee4: 530000a1 */ beqzl $t8,.L0f18616c
/* f185ee8: 00001025 */ or $v0,$zero,$zero
@@ -9819,13 +9819,13 @@ glabel var7f1b89b8
/* f18600c: 1160000e */ beqz $t3,.L0f186048
/* f186010: 3c0c800a */ lui $t4,%hi(g_Vars+0x288)
/* f186014: 8d8ca248 */ lw $t4,%lo(g_Vars+0x288)($t4)
/* f186018: 3c0f800b */ lui $t7,%hi(g_MpPlayers+0x14)
/* f186018: 3c0f800b */ lui $t7,%hi(g_PlayerConfigsArray+0x14)
/* f18601c: 8d8d0070 */ lw $t5,0x70($t4)
/* f186020: 000d7080 */ sll $t6,$t5,0x2
/* f186024: 01cd7021 */ addu $t6,$t6,$t5
/* f186028: 000e7140 */ sll $t6,$t6,0x5
/* f18602c: 01ee7821 */ addu $t7,$t7,$t6
/* f186030: 8defc7cc */ lw $t7,%lo(g_MpPlayers+0x14)($t7)
/* f186030: 8defc7cc */ lw $t7,%lo(g_PlayerConfigsArray+0x14)($t7)
/* f186034: 31f80008 */ andi $t8,$t7,0x8
/* f186038: 13000003 */ beqz $t8,.L0f186048
/* f18603c: 00000000 */ nop
@@ -9834,13 +9834,13 @@ glabel var7f1b89b8
.L0f186048:
/* f186048: 3c19800a */ lui $t9,%hi(g_Vars+0x288)
/* f18604c: 8f39a248 */ lw $t9,%lo(g_Vars+0x288)($t9)
/* f186050: 3c0b800b */ lui $t3,%hi(g_MpPlayers+0x14)
/* f186050: 3c0b800b */ lui $t3,%hi(g_PlayerConfigsArray+0x14)
/* f186054: 8f290070 */ lw $t1,0x70($t9)
/* f186058: 00095080 */ sll $t2,$t1,0x2
/* f18605c: 01495021 */ addu $t2,$t2,$t1
/* f186060: 000a5140 */ sll $t2,$t2,0x5
/* f186064: 016a5821 */ addu $t3,$t3,$t2
/* f186068: 8d6bc7cc */ lw $t3,%lo(g_MpPlayers+0x14)($t3)
/* f186068: 8d6bc7cc */ lw $t3,%lo(g_PlayerConfigsArray+0x14)($t3)
/* f18606c: 316c0001 */ andi $t4,$t3,0x1
/* f186070: 11800002 */ beqz $t4,.L0f18607c
/* f186074: 00000000 */ nop
@@ -10227,8 +10227,8 @@ void mpCreateScenarioHudmsg(s32 playernum, char *message)
bool mpChrsAreSameTeam(s32 arg0, s32 arg1)
{
struct mpchr *achr;
struct mpchr *bchr;
struct mpchrconfig *achr;
struct mpchrconfig *bchr;
if ((g_MpSetup.options & MPOPTION_TEAMSENABLED) && arg0 >= 0 && arg1 >= 0) {
s32 a = func0f18d074(arg0);
@@ -10236,15 +10236,15 @@ bool mpChrsAreSameTeam(s32 arg0, s32 arg1)
if (a >= 0 && b >= 0) {
if (a < 4) {
achr = &g_MpPlayers[a].base;
achr = &g_PlayerConfigsArray[a].base;
} else {
achr = &g_MpSimulants[a - 4].base;
achr = &g_BotConfigsArray[a - 4].base;
}
if (b < 4) {
bchr = &g_MpPlayers[b].base;
bchr = &g_PlayerConfigsArray[b].base;
} else {
bchr = &g_MpSimulants[b - 4].base;
bchr = &g_BotConfigsArray[b - 4].base;
}
return (achr->team == bchr->team) ? true : false;
@@ -10294,7 +10294,7 @@ glabel chrGiveBriefcase
/* f187924: 8c8302d4 */ lw $v1,0x2d4($a0)
/* f187928: 906e009c */ lbu $t6,0x9c($v1)
/* f18792c: 35d80080 */ ori $t8,$t6,0x80
/* f187930: 0fc663e3 */ jal aibotGiveSingleWeapon
/* f187930: 0fc663e3 */ jal botinvGiveSingleWeapon
/* f187934: a078009c */ sb $t8,0x9c($v1)
/* f187938: 3c11800a */ lui $s1,0x800a
/* f18793c: 10000020 */ b .PF0f1879c0
@@ -10544,7 +10544,7 @@ glabel chrGiveBriefcase
.PF0f187ca4:
/* f187ca4: 11a00009 */ beqz $t5,.PF0f187ccc
/* f187ca8: 01802025 */ move $a0,$t4
/* f187cac: 0fc66aa1 */ jal func0f199984
/* f187cac: 0fc66aa1 */ jal botinvDropOne
/* f187cb0: 24050057 */ li $a1,0x57
/* f187cb4: 8fae0128 */ lw $t6,0x128($sp)
/* f187cb8: 8dc302d4 */ lw $v1,0x2d4($t6)
@@ -10895,7 +10895,7 @@ glabel chrGiveBriefcase
/* f18818c: 01e02025 */ move $a0,$t7
/* f188190: 13200009 */ beqz $t9,.PF0f1881b8
/* f188194: 00000000 */ nop
/* f188198: 0fc663e3 */ jal aibotGiveSingleWeapon
/* f188198: 0fc663e3 */ jal botinvGiveSingleWeapon
/* f18819c: 24050057 */ li $a1,0x57
/* f1881a0: 8fab0124 */ lw $t3,0x124($sp)
/* f1881a4: 00001025 */ move $v0,$zero
@@ -10966,9 +10966,9 @@ glabel chrGiveBriefcase
/* f1868ec: 0fc633fe */ jal mpPlayerGetIndex
/* f1868f0: 00000000 */ nop
/* f1868f4: 00025080 */ sll $t2,$v0,0x2
/* f1868f8: 3c0b800b */ lui $t3,%hi(var800ac500)
/* f1868f8: 3c0b800b */ lui $t3,%hi(g_MpAllChrConfigPtrs)
/* f1868fc: 016a5821 */ addu $t3,$t3,$t2
/* f186900: 8d6bc500 */ lw $t3,%lo(var800ac500)($t3)
/* f186900: 8d6bc500 */ lw $t3,%lo(g_MpAllChrConfigPtrs)($t3)
/* f186904: 8fac0120 */ lw $t4,0x120($sp)
/* f186908: 8fa4012c */ lw $a0,0x12c($sp)
/* f18690c: afab0050 */ sw $t3,0x50($sp)
@@ -10979,20 +10979,20 @@ glabel chrGiveBriefcase
/* f186920: 8c8302d4 */ lw $v1,0x2d4($a0)
/* f186924: 906e009c */ lbu $t6,0x9c($v1)
/* f186928: 35d80080 */ ori $t8,$t6,0x80
/* f18692c: 0fc65fa3 */ jal aibotGiveSingleWeapon
/* f18692c: 0fc65fa3 */ jal botinvGiveSingleWeapon
/* f186930: a078009c */ sb $t8,0x9c($v1)
/* f186934: 3c11800a */ lui $s1,%hi(g_Vars)
/* f186938: 10000020 */ b .L0f1869bc
/* f18693c: 26319fc0 */ addiu $s1,$s1,%lo(g_Vars)
/* f186940: 8e39028c */ lw $t9,0x28c($s1)
.L0f186944:
/* f186944: 3c0c800b */ lui $t4,%hi(g_MpPlayers)
/* f186948: 258cc7b8 */ addiu $t4,$t4,%lo(g_MpPlayers)
/* f186944: 3c0c800b */ lui $t4,%hi(g_PlayerConfigsArray)
/* f186948: 258cc7b8 */ addiu $t4,$t4,%lo(g_PlayerConfigsArray)
/* f18694c: 001979c0 */ sll $t7,$t9,0x7
/* f186950: 022f5021 */ addu $t2,$s1,$t7
/* f186954: 8d4200e4 */ lw $v0,0xe4($t2)
/* f186958: 3c19800b */ lui $t9,%hi(g_MpSimulants)
/* f18695c: 2739c538 */ addiu $t9,$t9,%lo(g_MpSimulants)
/* f186958: 3c19800b */ lui $t9,%hi(g_BotConfigsArray)
/* f18695c: 2739c538 */ addiu $t9,$t9,%lo(g_BotConfigsArray)
/* f186960: 28410004 */ slti $at,$v0,0x4
/* f186964: 10200007 */ beqz $at,.L0f186984
/* f186968: 00027080 */ sll $t6,$v0,0x2
@@ -11151,9 +11151,9 @@ glabel chrGiveBriefcase
/* f186b80: 0fc633fe */ jal mpPlayerGetIndex
/* f186b84: 01402025 */ or $a0,$t2,$zero
/* f186b88: 00025880 */ sll $t3,$v0,0x2
/* f186b8c: 3c0c800b */ lui $t4,%hi(var800ac500)
/* f186b8c: 3c0c800b */ lui $t4,%hi(g_MpAllChrConfigPtrs)
/* f186b90: 018b6021 */ addu $t4,$t4,$t3
/* f186b94: 8d8cc500 */ lw $t4,%lo(var800ac500)($t4)
/* f186b94: 8d8cc500 */ lw $t4,%lo(g_MpAllChrConfigPtrs)($t4)
/* f186b98: 8fad0128 */ lw $t5,0x128($sp)
/* f186b9c: 3c11800a */ lui $s1,%hi(g_Vars)
/* f186ba0: afac0050 */ sw $t4,0x50($sp)
@@ -11162,13 +11162,13 @@ glabel chrGiveBriefcase
/* f186bac: 8da302d4 */ lw $v1,0x2d4($t5)
/* f186bb0: 8e2e028c */ lw $t6,0x28c($s1)
.L0f186bb4:
/* f186bb4: 3c0a800b */ lui $t2,%hi(g_MpPlayers)
/* f186bb8: 254ac7b8 */ addiu $t2,$t2,%lo(g_MpPlayers)
/* f186bb4: 3c0a800b */ lui $t2,%hi(g_PlayerConfigsArray)
/* f186bb8: 254ac7b8 */ addiu $t2,$t2,%lo(g_PlayerConfigsArray)
/* f186bbc: 000ec1c0 */ sll $t8,$t6,0x7
/* f186bc0: 0238c821 */ addu $t9,$s1,$t8
/* f186bc4: 8f2200e4 */ lw $v0,0xe4($t9)
/* f186bc8: 3c0e800b */ lui $t6,%hi(g_MpSimulants)
/* f186bcc: 25cec538 */ addiu $t6,$t6,%lo(g_MpSimulants)
/* f186bc8: 3c0e800b */ lui $t6,%hi(g_BotConfigsArray)
/* f186bcc: 25cec538 */ addiu $t6,$t6,%lo(g_BotConfigsArray)
/* f186bd0: 28410004 */ slti $at,$v0,0x4
/* f186bd4: 10200007 */ beqz $at,.L0f186bf4
/* f186bd8: 00026080 */ sll $t4,$v0,0x2
@@ -11229,7 +11229,7 @@ glabel chrGiveBriefcase
.L0f186ca0:
/* f186ca0: 11a00009 */ beqz $t5,.L0f186cc8
/* f186ca4: 01802025 */ or $a0,$t4,$zero
/* f186ca8: 0fc66661 */ jal func0f199984
/* f186ca8: 0fc66661 */ jal botinvDropOne
/* f186cac: 24050057 */ addiu $a1,$zero,0x57
/* f186cb0: 8fae0128 */ lw $t6,0x128($sp)
/* f186cb4: 8dc302d4 */ lw $v1,0x2d4($t6)
@@ -11336,7 +11336,7 @@ glabel chrGiveBriefcase
/* f186e28: 02002025 */ or $a0,$s0,$zero
/* f186e2c: 8fae0128 */ lw $t6,0x128($sp)
/* f186e30: 00107880 */ sll $t7,$s0,0x2
/* f186e34: 3c0b800b */ lui $t3,%hi(var800ac500)
/* f186e34: 3c0b800b */ lui $t3,%hi(g_MpAllChrConfigPtrs)
/* f186e38: 8dd902d4 */ lw $t9,0x2d4($t6)
/* f186e3c: 8faa0118 */ lw $t2,0x118($sp)
/* f186e40: 016f5821 */ addu $t3,$t3,$t7
@@ -11350,7 +11350,7 @@ glabel chrGiveBriefcase
/* f186e60: 10000011 */ b .L0f186ea8
/* f186e64: 8e2c006c */ lw $t4,0x6c($s1)
.L0f186e68:
/* f186e68: 8d6bc500 */ lw $t3,%lo(var800ac500)($t3)
/* f186e68: 8d6bc500 */ lw $t3,%lo(g_MpAllChrConfigPtrs)($t3)
/* f186e6c: 8fb80114 */ lw $t8,0x114($sp)
/* f186e70: 24060001 */ addiu $a2,$zero,0x1
/* f186e74: 916d0011 */ lbu $t5,0x11($t3)
@@ -11531,7 +11531,7 @@ glabel chrGiveBriefcase
/* f1870e4: 02002025 */ or $a0,$s0,$zero
/* f1870e8: 8fb90128 */ lw $t9,0x128($sp)
/* f1870ec: 00107080 */ sll $t6,$s0,0x2
/* f1870f0: 3c0a800b */ lui $t2,%hi(var800ac500)
/* f1870f0: 3c0a800b */ lui $t2,%hi(g_MpAllChrConfigPtrs)
/* f1870f4: 8f2b02d4 */ lw $t3,0x2d4($t9)
/* f1870f8: 8fb80118 */ lw $t8,0x118($sp)
/* f1870fc: 014e5021 */ addu $t2,$t2,$t6
@@ -11545,7 +11545,7 @@ glabel chrGiveBriefcase
/* f18711c: 10000011 */ b .L0f187164
/* f187120: 8e39006c */ lw $t9,0x6c($s1)
.L0f187124:
/* f187124: 8d4ac500 */ lw $t2,%lo(var800ac500)($t2)
/* f187124: 8d4ac500 */ lw $t2,%lo(g_MpAllChrConfigPtrs)($t2)
/* f187128: 85ac0062 */ lh $t4,0x62($t5)
/* f18712c: 24060001 */ addiu $a2,$zero,0x1
/* f187130: 914f0011 */ lbu $t7,0x11($t2)
@@ -11604,7 +11604,7 @@ glabel chrGiveBriefcase
/* f1871e8: 01e02025 */ or $a0,$t7,$zero
/* f1871ec: 13200009 */ beqz $t9,.L0f187214
/* f1871f0: 00000000 */ nop
/* f1871f4: 0fc65fa3 */ jal aibotGiveSingleWeapon
/* f1871f4: 0fc65fa3 */ jal botinvGiveSingleWeapon
/* f1871f8: 24050057 */ addiu $a1,$zero,0x57
/* f1871fc: 8fab0124 */ lw $t3,0x124($sp)
/* f187200: 00001025 */ or $v0,$zero,$zero
@@ -11688,7 +11688,7 @@ glabel chrGiveBriefcase
/* f180d88: 8c8302d4 */ lw $v1,0x2d4($a0)
/* f180d8c: 906e009c */ lbu $t6,0x9c($v1)
/* f180d90: 35d80080 */ ori $t8,$t6,0x80
/* f180d94: 0fc6479b */ jal aibotGiveSingleWeapon
/* f180d94: 0fc6479b */ jal botinvGiveSingleWeapon
/* f180d98: a078009c */ sb $t8,0x9c($v1)
/* f180d9c: 3c11800a */ lui $s1,0x800a
/* f180da0: 10000020 */ beqz $zero,.NB0f180e24
@@ -11932,7 +11932,7 @@ glabel chrGiveBriefcase
.NB0f1810f0:
/* f1810f0: 11800009 */ beqz $t4,.NB0f181118
/* f1810f4: 01602025 */ or $a0,$t3,$zero
/* f1810f8: 0fc64e59 */ jal func0f199984
/* f1810f8: 0fc64e59 */ jal botinvDropOne
/* f1810fc: 24050056 */ addiu $a1,$zero,0x56
/* f181100: 8fad0128 */ lw $t5,0x128($sp)
/* f181104: 8da302d4 */ lw $v1,0x2d4($t5)
@@ -12307,7 +12307,7 @@ glabel chrGiveBriefcase
/* f181638: 01c02025 */ or $a0,$t6,$zero
/* f18163c: 13200009 */ beqz $t9,.NB0f181664
/* f181640: 00000000 */ sll $zero,$zero,0x0
/* f181644: 0fc6479b */ jal aibotGiveSingleWeapon
/* f181644: 0fc6479b */ jal botinvGiveSingleWeapon
/* f181648: 24050056 */ addiu $a1,$zero,0x56
/* f18164c: 8faa0124 */ lw $t2,0x124($sp)
/* f181650: 00001025 */ or $v0,$zero,$zero
@@ -12456,7 +12456,7 @@ glabel func0f187288
s32 chrGiveUplink(struct chrdata *chr, struct prop *prop)
{
s32 i;
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
char message[60];
s32 mpindex;
u32 playernum;
@@ -12469,14 +12469,14 @@ s32 chrGiveUplink(struct chrdata *chr, struct prop *prop)
g_ScenarioData.htm.uplink = chr->prop;
if (chr->aibot) {
mpchr = var800ac500[mpPlayerGetIndex(chr)];
mpchr = g_MpAllChrConfigPtrs[mpPlayerGetIndex(chr)];
} else {
mpindex = g_Vars.playerstats[g_Vars.currentplayernum].mpindex;
if (mpindex < 4) {
mpchr = &g_MpPlayers[mpindex].base;
mpchr = &g_PlayerConfigsArray[mpindex].base;
} else {
mpchr = &g_MpSimulants[mpindex - 4].base;
mpchr = &g_BotConfigsArray[mpindex - 4].base;
}
}
@@ -12500,7 +12500,7 @@ s32 chrGiveUplink(struct chrdata *chr, struct prop *prop)
if (chr->aibot) {
propPlayPickupSound(prop, WEAPON_DATAUPLINK);
aibotGiveSingleWeapon(chr, WEAPON_DATAUPLINK);
botinvGiveSingleWeapon(chr, WEAPON_DATAUPLINK);
chr->aibot->unk04c_05 = true;
#if VERSION >= VERSION_NTSC_1_0
+126 -126
View File
@@ -41,7 +41,7 @@ s32 menuhandlerMpDropOut(s32 operation, struct menuitem *item, union handlerdata
char *mpGetCurrentPlayerName(struct menuitem *item)
{
return g_MpPlayers[g_MpPlayerNum].base.name;
return g_PlayerConfigsArray[g_MpPlayerNum].base.name;
}
s32 menuhandlerMpTeamsLabel(s32 operation, struct menuitem *item, union handlerdata *data)
@@ -431,12 +431,12 @@ s32 menuhandlerMpControlCheckbox(s32 operation, struct menuitem *item, union han
switch (operation) {
case MENUOP_GET:
if (item->param3 == OPTION_FORWARDPITCH) {
if ((g_MpPlayers[g_MpPlayerNum].options & item->param3) == 0) {
if ((g_PlayerConfigsArray[g_MpPlayerNum].options & item->param3) == 0) {
return true;
}
return false;
}
if ((g_MpPlayers[g_MpPlayerNum].options & item->param3) == 0) {
if ((g_PlayerConfigsArray[g_MpPlayerNum].options & item->param3) == 0) {
return false;
}
return true;
@@ -451,10 +451,10 @@ s32 menuhandlerMpControlCheckbox(s32 operation, struct menuitem *item, union han
}
}
g_MpPlayers[g_MpPlayerNum].options &= ~item->param3;
g_PlayerConfigsArray[g_MpPlayerNum].options &= ~item->param3;
if (data->checkbox.value) {
g_MpPlayers[g_MpPlayerNum].options |= item->param3;
g_PlayerConfigsArray[g_MpPlayerNum].options |= item->param3;
}
}
@@ -526,15 +526,15 @@ s32 menuhandlerMpDisplayOptionCheckbox(s32 operation, struct menuitem *item, uni
{
switch (operation) {
case MENUOP_GET:
if ((g_MpPlayers[g_MpPlayerNum].base.displayoptions & item->param3) == 0) {
if ((g_PlayerConfigsArray[g_MpPlayerNum].base.displayoptions & item->param3) == 0) {
return false;
}
return true;
case MENUOP_SET:
g_MpPlayers[g_MpPlayerNum].base.displayoptions &= ~(u8)item->param3;
g_PlayerConfigsArray[g_MpPlayerNum].base.displayoptions &= ~(u8)item->param3;
if (data->checkbox.value) {
g_MpPlayers[g_MpPlayerNum].base.displayoptions |= (u8)item->param3;
g_PlayerConfigsArray[g_MpPlayerNum].base.displayoptions |= (u8)item->param3;
}
break;
}
@@ -602,10 +602,10 @@ s32 func0f179b68(s32 operation, struct menuitem *item, union handlerdata *data)
{
switch (operation) {
case MENUOP_GETSLIDER:
data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk18;
data->slider.value = g_PlayerConfigsArray[g_MpPlayerNum].base.unk18;
break;
case MENUOP_SET:
g_MpPlayers[g_MpPlayerNum].base.unk18 = (u8) data->slider.value;
g_PlayerConfigsArray[g_MpPlayerNum].base.unk18 = (u8) data->slider.value;
break;
case MENUOP_GETSLIDERLABEL:
sprintf(data->slider.label, "%d%%\n", data->slider.value + 20);
@@ -619,10 +619,10 @@ s32 func0f179c14(s32 operation, struct menuitem *item, union handlerdata *data)
{
switch (operation) {
case MENUOP_GETSLIDER:
data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk1a;
data->slider.value = g_PlayerConfigsArray[g_MpPlayerNum].base.unk1a;
break;
case MENUOP_SET:
g_MpPlayers[g_MpPlayerNum].base.unk1a = (u8) data->slider.value;
g_PlayerConfigsArray[g_MpPlayerNum].base.unk1a = (u8) data->slider.value;
break;
case MENUOP_GETSLIDERLABEL:
sprintf(data->slider.label, "%d%%\n", data->slider.value + 20);
@@ -636,10 +636,10 @@ s32 func0f179cc0(s32 operation, struct menuitem *item, union handlerdata *data)
{
switch (operation) {
case MENUOP_GETSLIDER:
data->slider.value = g_MpPlayers[g_MpPlayerNum].base.unk1c;
data->slider.value = g_PlayerConfigsArray[g_MpPlayerNum].base.unk1c;
break;
case MENUOP_SET:
g_MpPlayers[g_MpPlayerNum].base.unk1c = data->slider.value;
g_PlayerConfigsArray[g_MpPlayerNum].base.unk1c = data->slider.value;
break;
case MENUOP_GETSLIDERLABEL:
sprintf(data->slider.label, "%d%%\n", data->slider.value + 25);
@@ -1315,29 +1315,29 @@ s32 menuhandlerMpCharacterBody(s32 operation, struct menuitem *item, union handl
{
switch (operation) {
case MENUOP_SET:
if (g_MpPlayers[g_MpPlayerNum].base.mpheadnum < mpGetNumHeads()) {
if (g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum < mpGetNumHeads()) {
#if VERSION >= VERSION_NTSC_1_0
if (!data->carousel.unk04)
#endif
{
g_MpPlayers[g_MpPlayerNum].base.mpheadnum = mpGetMpheadnumByMpbodynum(data->carousel.value);
g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum = mpGetMpheadnumByMpbodynum(data->carousel.value);
}
}
g_MpPlayers[g_MpPlayerNum].base.mpbodynum = data->carousel.value;
g_PlayerConfigsArray[g_MpPlayerNum].base.mpbodynum = data->carousel.value;
func0f17b8f0();
break;
case MENUOP_CHECKPREFOCUSED:
#if VERSION >= VERSION_NTSC_1_0
func0f179da4(operation, item, data,
g_MpPlayers[g_MpPlayerNum].base.mpbodynum,
g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1);
g_PlayerConfigsArray[g_MpPlayerNum].base.mpbodynum,
g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum, 1);
#endif
return true;
}
return func0f179da4(operation, item, data,
g_MpPlayers[g_MpPlayerNum].base.mpbodynum,
g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1);
g_PlayerConfigsArray[g_MpPlayerNum].base.mpbodynum,
g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum, 1);
}
s32 menudialog0017a174(s32 operation, struct menudialog *dialog, union handlerdata *data)
@@ -1456,67 +1456,67 @@ const char var7f1b7ed0[] = "Menu99 -> Calling Camera Module Finish\n";
char *mpMenuTextKills(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].kills);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].kills);
return g_StringPointer;
}
char *mpMenuTextDeaths(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].deaths);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].deaths);
return g_StringPointer;
}
char *mpMenuTextGamesPlayed(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gamesplayed);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].gamesplayed);
return g_StringPointer;
}
char *mpMenuTextGamesWon(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gameswon);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].gameswon);
return g_StringPointer;
}
char *mpMenuTextGamesLost(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].gameslost);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].gameslost);
return g_StringPointer;
}
char *mpMenuTextHeadShots(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].headshots);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].headshots);
return g_StringPointer;
}
char *mpMenuTextMedalAccuracy(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].accuracymedals);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].accuracymedals);
return g_StringPointer;
}
char *mpMenuTextMedalHeadShot(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].headshotmedals);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].headshotmedals);
return g_StringPointer;
}
char *mpMenuTextMedalKillMaster(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].killmastermedals);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].killmastermedals);
return g_StringPointer;
}
char *mpMenuTextMedalSurvivor(struct menuitem *item)
{ \
sprintf(g_StringPointer, "%d\n", g_MpPlayers[g_MpPlayerNum].survivormedals);
sprintf(g_StringPointer, "%d\n", g_PlayerConfigsArray[g_MpPlayerNum].survivormedals);
return g_StringPointer;
}
char *mpMenuTextAmmoUsed(struct menuitem *item)
{
s32 value = g_MpPlayers[g_MpPlayerNum].ammoused;
s32 value = g_PlayerConfigsArray[g_MpPlayerNum].ammoused;
if (value > 100000) {
value = value / 1000;
@@ -1536,7 +1536,7 @@ char *mpMenuTextAmmoUsed(struct menuitem *item)
char *mpMenuTextDistance(struct menuitem *item)
{
sprintf(g_StringPointer, "%s%s%.1fkm\n", "", "", g_MpPlayers[g_MpPlayerNum].distance / 10.0f);
sprintf(g_StringPointer, "%s%s%.1fkm\n", "", "", g_PlayerConfigsArray[g_MpPlayerNum].distance / 10.0f);
return g_StringPointer;
}
@@ -1545,13 +1545,13 @@ GLOBAL_ASM(
glabel mpMenuTextTime
/* f17ab38: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum)
/* f17ab3c: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6)
/* f17ab40: 3c02800b */ lui $v0,%hi(g_MpPlayers+0x68)
/* f17ab40: 3c02800b */ lui $v0,%hi(g_PlayerConfigsArray+0x68)
/* f17ab44: 2408003c */ addiu $t0,$zero,0x3c
/* f17ab48: 000e7880 */ sll $t7,$t6,0x2
/* f17ab4c: 01ee7821 */ addu $t7,$t7,$t6
/* f17ab50: 000f7940 */ sll $t7,$t7,0x5
/* f17ab54: 004f1021 */ addu $v0,$v0,$t7
/* f17ab58: 8c42c820 */ lw $v0,%lo(g_MpPlayers+0x68)($v0)
/* f17ab58: 8c42c820 */ lw $v0,%lo(g_PlayerConfigsArray+0x68)($v0)
/* f17ab5c: 27bdffe0 */ addiu $sp,$sp,-32
/* f17ab60: afbf001c */ sw $ra,0x1c($sp)
/* f17ab64: 0048001b */ divu $zero,$v0,$t0
@@ -1806,12 +1806,12 @@ const char var7f1b7f68[] = "%d:%02d:%02d";
char *mpMenuTextAccuracy(struct menuitem *item)
{
#if VERSION < VERSION_NTSC_1_0
if (g_MpPlayers[g_MpPlayerNum].gamesplayed < 8) {
if (g_PlayerConfigsArray[g_MpPlayerNum].gamesplayed < 8) {
return "-\n";
}
#endif
sprintf(g_StringPointer, "%s%s%.1f%%", "", "", g_MpPlayers[g_MpPlayerNum].accuracy / 10.0f);
sprintf(g_StringPointer, "%s%s%.1f%%", "", "", g_PlayerConfigsArray[g_MpPlayerNum].accuracy / 10.0f);
return g_StringPointer;
}
@@ -1849,13 +1849,13 @@ void mpFormatDamageValue(char *dst, f32 damage)
char *mpMenuTextPainReceived(struct menuitem *item)
{
mpFormatDamageValue(g_StringPointer, g_MpPlayers[g_MpPlayerNum].painreceived / 10.0f);
mpFormatDamageValue(g_StringPointer, g_PlayerConfigsArray[g_MpPlayerNum].painreceived / 10.0f);
return g_StringPointer;
}
char *mpMenuTextDamageDealt(struct menuitem *item)
{
mpFormatDamageValue(g_StringPointer, g_MpPlayers[g_MpPlayerNum].damagedealt / 10.0f);
mpFormatDamageValue(g_StringPointer, g_PlayerConfigsArray[g_MpPlayerNum].damagedealt / 10.0f);
return g_StringPointer;
}
@@ -2304,14 +2304,14 @@ glabel menuhandlerMpMedal
char *mpMenuTitleStatsForPlayerName(struct menudialog *dialog)
{
// "Stats for %s"
sprintf(g_StringPointer, langGet(L_MPMENU_145), g_MpPlayers[g_MpPlayerNum].base.name);
sprintf(g_StringPointer, langGet(L_MPMENU_145), g_PlayerConfigsArray[g_MpPlayerNum].base.name);
return g_StringPointer;
}
s32 menuhandlerMpUsernamePassword(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_CHECKHIDDEN) {
if (g_MpPlayers[g_MpPlayerNum].title != MPPLAYERTITLE_PERFECT) {
if (g_PlayerConfigsArray[g_MpPlayerNum].title != MPPLAYERTITLE_PERFECT) {
return true;
}
}
@@ -3383,15 +3383,15 @@ glabel var7f1b814c
s32 menuhandlerMpCharacterHead(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
g_MpPlayers[g_MpPlayerNum].base.mpheadnum = data->carousel.value;
g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum = data->carousel.value;
}
return func0f17b4f8(operation, item, data, g_MpPlayers[g_MpPlayerNum].base.mpheadnum, 1);
return func0f17b4f8(operation, item, data, g_PlayerConfigsArray[g_MpPlayerNum].base.mpheadnum, 1);
}
char *mpMenuTextBodyName(struct menuitem *item)
{
return mpGetBodyName(g_MpPlayers[g_MpPlayerNum].base.mpbodynum);
return mpGetBodyName(g_PlayerConfigsArray[g_MpPlayerNum].base.mpbodynum);
}
void func0f17b8f0(void)
@@ -3407,15 +3407,15 @@ glabel menuhandler0017b91c
/* f17b928: 8cc20000 */ lw $v0,0x0($a2)
/* f17b92c: 24010012 */ addiu $at,$zero,0x12
/* f17b930: 10810034 */ beq $a0,$at,.L0f17ba04
/* f17b934: 3c07800b */ lui $a3,%hi(g_MpPlayers)
/* f17b934: 3c07800b */ lui $a3,%hi(g_PlayerConfigsArray)
/* f17b938: 03e00008 */ jr $ra
/* f17b93c: 00001025 */ or $v0,$zero,$zero
.L0f17b940:
/* f17b940: 3c088007 */ lui $t0,%hi(g_MpPlayerNum)
/* f17b944: 25081448 */ addiu $t0,$t0,%lo(g_MpPlayerNum)
/* f17b948: 8d040000 */ lw $a0,0x0($t0)
/* f17b94c: 3c07800b */ lui $a3,%hi(g_MpPlayers)
/* f17b950: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers)
/* f17b94c: 3c07800b */ lui $a3,%hi(g_PlayerConfigsArray)
/* f17b950: 24e7c7b8 */ addiu $a3,$a3,%lo(g_PlayerConfigsArray)
/* f17b954: 00047080 */ sll $t6,$a0,0x2
/* f17b958: 01c47021 */ addu $t6,$t6,$a0
/* f17b95c: 000e7140 */ sll $t6,$t6,0x5
@@ -3472,8 +3472,8 @@ glabel menuhandler0017b91c
/* f17ba14: 25081448 */ addiu $t0,$t0,%lo(g_MpPlayerNum)
/* f17ba18: 3c0b8007 */ lui $t3,%hi(g_MpPlayerNum)
/* f17ba1c: 8d6b1448 */ lw $t3,%lo(g_MpPlayerNum)($t3)
/* f17ba20: 3c0e800b */ lui $t6,%hi(g_MpPlayers)
/* f17ba24: 25cec7b8 */ addiu $t6,$t6,%lo(g_MpPlayers)
/* f17ba20: 3c0e800b */ lui $t6,%hi(g_PlayerConfigsArray)
/* f17ba24: 25cec7b8 */ addiu $t6,$t6,%lo(g_PlayerConfigsArray)
/* f17ba28: 000b6080 */ sll $t4,$t3,0x2
/* f17ba2c: 018b6021 */ addu $t4,$t4,$t3
/* f17ba30: 000c6140 */ sll $t4,$t4,0x5
@@ -3492,7 +3492,7 @@ glabel menuhandler0017b91c
/* f17ba60: 24630001 */ addiu $v1,$v1,0x1
.L0f17ba64:
/* f17ba64: 8d0f0000 */ lw $t7,0x0($t0)
/* f17ba68: 24e7c7b8 */ addiu $a3,$a3,%lo(g_MpPlayers)
/* f17ba68: 24e7c7b8 */ addiu $a3,$a3,%lo(g_PlayerConfigsArray)
/* f17ba6c: 240b000a */ addiu $t3,$zero,0xa
/* f17ba70: 000fc080 */ sll $t8,$t7,0x2
/* f17ba74: 030fc021 */ addu $t8,$t8,$t7
@@ -4171,13 +4171,13 @@ glabel var7f1b81a8
/* f17c060: 8e020000 */ lw $v0,0x0($s0)
/* f17c064: 8e680000 */ lw $t0,0x0($s3)
/* f17c068: 3c13800b */ lui $s3,%hi(g_MpSetup)
/* f17c06c: 3c11800b */ lui $s1,%hi(g_MpPlayers)
/* f17c06c: 3c11800b */ lui $s1,%hi(g_PlayerConfigsArray)
/* f17c070: 00084880 */ sll $t1,$t0,0x2
/* f17c074: 01284823 */ subu $t1,$t1,$t0
/* f17c078: 000948c0 */ sll $t1,$t1,0x3
/* f17c07c: 00499021 */ addu $s2,$v0,$t1
/* f17c080: 24150001 */ addiu $s5,$zero,0x1
/* f17c084: 2631c7b8 */ addiu $s1,$s1,%lo(g_MpPlayers)
/* f17c084: 2631c7b8 */ addiu $s1,$s1,%lo(g_PlayerConfigsArray)
/* f17c088: 2673cb88 */ addiu $s3,$s3,%lo(g_MpSetup)
/* f17c08c: 00008025 */ or $s0,$zero,$zero
/* f17c090: 24140004 */ addiu $s4,$zero,0x4
@@ -4485,13 +4485,13 @@ s32 menuhandlerMpHandicapPlayer(s32 operation, struct menuitem *item, union hand
}
break;
case MENUOP_GETSLIDER:
data->slider.value = g_MpPlayers[item->param].handicap;
data->slider.value = g_PlayerConfigsArray[item->param].handicap;
break;
case MENUOP_SET:
g_MpPlayers[item->param].handicap = (u16)data->slider.value;
g_PlayerConfigsArray[item->param].handicap = (u16)data->slider.value;
break;
case MENUOP_GETSLIDERLABEL:
sprintf(data->slider.label, "%s%s%.00f%%\n", "", "", mpHandicapToDamageScale(g_MpPlayers[item->param].handicap) * 100);
sprintf(data->slider.label, "%s%s%.00f%%\n", "", "", mpHandicapToDamageScale(g_PlayerConfigsArray[item->param].handicap) * 100);
break;
}
@@ -4501,7 +4501,7 @@ s32 menuhandlerMpHandicapPlayer(s32 operation, struct menuitem *item, union hand
char *mpMenuTextHandicapPlayerName(struct menuitem *item)
{
if (g_MpSetup.chrslots & (1 << item->param)) {
return g_MpPlayers[item->param].base.name;
return g_PlayerConfigsArray[item->param].base.name;
}
return "";
@@ -4515,7 +4515,7 @@ s32 menuhandlerMpRestoreHandicapDefaults(s32 operation, struct menuitem *item, u
s32 i;
for (i = 0; i < 4; i++) {
g_MpPlayers[i].handicap = 0x80;
g_PlayerConfigsArray[i].handicap = 0x80;
}
}
@@ -4525,8 +4525,8 @@ s32 menuhandlerMpRestoreHandicapDefaults(s32 operation, struct menuitem *item, u
s32 menudialogMpReady(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_OPEN) {
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid && g_MpPlayers[g_MpPlayerNum].fileguid.deviceserial) {
filemgrSaveOrLoad(&g_MpPlayers[g_MpPlayerNum].fileguid, FILEOP_SAVE_MPPLAYER, g_MpPlayerNum);
if (g_PlayerConfigsArray[g_MpPlayerNum].fileguid.fileid && g_PlayerConfigsArray[g_MpPlayerNum].fileguid.deviceserial) {
filemgrSaveOrLoad(&g_PlayerConfigsArray[g_MpPlayerNum].fileguid, FILEOP_SAVE_MPPLAYER, g_MpPlayerNum);
}
}
@@ -4536,7 +4536,7 @@ s32 menudialogMpReady(s32 operation, struct menudialog *dialog, union handlerdat
s32 menudialogMpSimulant(s32 operation, struct menudialog *dialog, union handlerdata *data)
{
if (operation == MENUOP_TICK) {
if ((u8)g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.name[0] == '\0') {
if ((u8)g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.name[0] == '\0') {
menuPopDialog();
}
}
@@ -4758,10 +4758,10 @@ glabel var7f1b81e8
/* f17c710: 8c2881ac */ lw $t0,%lo(var7f1b81ac)($at)
/* f17c714: 01000008 */ jr $t0
/* f17c718: 00000000 */ nop
/* f17c71c: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17c71c: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17c720: 3c118008 */ lui $s1,%hi(g_MpBodies)
/* f17c724: 263177bc */ addiu $s1,$s1,%lo(g_MpBodies)
/* f17c728: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17c728: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
.L0f17c72c:
/* f17c72c: 0fc67244 */ jal mpIsFeatureUnlocked
/* f17c730: 92040006 */ lbu $a0,0x6($s0)
@@ -4773,10 +4773,10 @@ glabel var7f1b81e8
/* f17c744: 00000000 */ nop
/* f17c748: 100000b4 */ b .L0f17ca1c
/* f17c74c: ae920000 */ sw $s2,0x0($s4)
/* f17c750: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17c750: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17c754: 3c118008 */ lui $s1,%hi(g_MpBodies)
/* f17c758: 263177bc */ addiu $s1,$s1,%lo(g_MpBodies)
/* f17c75c: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17c75c: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
.L0f17c760:
/* f17c760: 0fc67244 */ jal mpIsFeatureUnlocked
/* f17c764: 92040006 */ lbu $a0,0x6($s0)
@@ -4830,8 +4830,8 @@ glabel var7f1b81e8
/* f17c818: 240a0001 */ addiu $t2,$zero,0x1
/* f17c81c: afaa0038 */ sw $t2,0x38($sp)
.L0f17c820:
/* f17c820: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17c824: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17c820: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17c824: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
/* f17c828: 00008825 */ or $s1,$zero,$zero
/* f17c82c: 24130012 */ addiu $s3,$zero,0x12
.L0f17c830:
@@ -4849,7 +4849,7 @@ glabel var7f1b81e8
.L0f17c858:
/* f17c858: 8fac0038 */ lw $t4,0x38($sp)
/* f17c85c: 8fad003c */ lw $t5,0x3c($sp)
/* f17c860: 3c19800b */ lui $t9,%hi(g_MpSimulants)
/* f17c860: 3c19800b */ lui $t9,%hi(g_BotConfigsArray)
/* f17c864: 11800006 */ beqz $t4,.L0f17c880
/* f17c868: 000d7880 */ sll $t7,$t5,0x2
/* f17c86c: 8fa4003c */ lw $a0,0x3c($sp)
@@ -4863,7 +4863,7 @@ glabel var7f1b81e8
/* f17c888: 000f7880 */ sll $t7,$t7,0x2
/* f17c88c: 01ed7823 */ subu $t7,$t7,$t5
/* f17c890: 000f7880 */ sll $t7,$t7,0x2
/* f17c894: 2739c538 */ addiu $t9,$t9,%lo(g_MpSimulants)
/* f17c894: 2739c538 */ addiu $t9,$t9,%lo(g_BotConfigsArray)
/* f17c898: 01f91021 */ addu $v0,$t7,$t9
/* f17c89c: 31d800ff */ andi $t8,$t6,0xff
/* f17c8a0: 17000004 */ bnez $t8,.L0f17c8b4
@@ -4888,8 +4888,8 @@ glabel var7f1b81e8
/* f17c8e8: 002a0821 */ addu $at,$at,$t2
/* f17c8ec: 1000004b */ b .L0f17ca1c
/* f17c8f0: ac28ee20 */ sw $t0,%lo(g_Menus+0xe20)($at)
/* f17c8f4: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17c8f8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17c8f4: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17c8f8: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
/* f17c8fc: 00008825 */ or $s1,$zero,$zero
/* f17c900: 24130012 */ addiu $s3,$zero,0x12
.L0f17c904:
@@ -4942,8 +4942,8 @@ glabel var7f1b81e8
/* f17c9b4: 1000001b */ b .L0f17ca24
/* f17c9b8: 8fbf002c */ lw $ra,0x2c($sp)
/* f17c9bc: 8e8b0000 */ lw $t3,0x0($s4)
/* f17c9c0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17c9c4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17c9c0: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17c9c4: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
/* f17c9c8: 000b60c0 */ sll $t4,$t3,0x3
/* f17c9cc: 026c6821 */ addu $t5,$s3,$t4
/* f17c9d0: 8daf0000 */ lw $t7,0x0($t5)
@@ -5291,28 +5291,28 @@ s32 menuhandlerMpSimulantHead(s32 operation, struct menuitem *item, union handle
*/
switch (operation) {
case MENUOP_SET:
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum = start + data->carousel.value;
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum = start + data->carousel.value;
case MENUOP_FOCUS:
if (operation == MENUOP_FOCUS
&& item->param2 == 1
&& g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum < start) {
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum = start;
&& g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum < start) {
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum = start;
}
break;
}
return func0f17b4f8(operation, item, data, g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum, 0);
return func0f17b4f8(operation, item, data, g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum, 0);
}
s32 menuhandlerMpSimulantBody(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpbodynum = data->carousel.value;
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpbodynum = data->carousel.value;
}
return func0f179da4(operation, item, data,
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpbodynum,
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum,
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpbodynum,
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.mpheadnum,
0);
}
@@ -5378,7 +5378,7 @@ glabel menuhandlerMpSimulantDifficulty
.L0f17ce40:
/* f17ce40: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8)
/* f17ce44: 3c08800a */ lui $t0,%hi(g_Menus+0xe1c)
/* f17ce48: 3c02800b */ lui $v0,%hi(g_MpSimulants+0x48)
/* f17ce48: 3c02800b */ lui $v0,%hi(g_BotConfigsArray+0x48)
/* f17ce4c: 0018c8c0 */ sll $t9,$t8,0x3
/* f17ce50: 0338c823 */ subu $t9,$t9,$t8
/* f17ce54: 0019c880 */ sll $t9,$t9,0x2
@@ -5394,7 +5394,7 @@ glabel menuhandlerMpSimulantDifficulty
/* f17ce7c: 01284823 */ subu $t1,$t1,$t0
/* f17ce80: 00094880 */ sll $t1,$t1,0x2
/* f17ce84: 00491021 */ addu $v0,$v0,$t1
/* f17ce88: 9042c580 */ lbu $v0,%lo(g_MpSimulants+0x48)($v0)
/* f17ce88: 9042c580 */ lbu $v0,%lo(g_BotConfigsArray+0x48)($v0)
/* f17ce8c: 04400005 */ bltz $v0,.L0f17cea4
/* f17ce90: 28410006 */ slti $at,$v0,0x6
/* f17ce94: 10200003 */ beqz $at,.L0f17cea4
@@ -5405,10 +5405,10 @@ glabel menuhandlerMpSimulantDifficulty
/* f17cea4: 10000023 */ b .L0f17cf34
/* f17cea8: ae800000 */ sw $zero,0x0($s4)
.L0f17ceac:
/* f17ceac: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17ceb0: 3c118008 */ lui $s1,%hi(g_MpSimulantTypes+0x30)
/* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_MpSimulantTypes+0x30)
/* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17ceac: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17ceb0: 3c118008 */ lui $s1,%hi(g_BotProfiles+0x30)
/* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_BotProfiles+0x30)
/* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
.L0f17cebc:
/* f17cebc: 0fc67244 */ jal mpIsFeatureUnlocked
/* f17cec0: 92040006 */ lbu $a0,0x6($s0)
@@ -5421,8 +5421,8 @@ glabel menuhandlerMpSimulantDifficulty
/* f17ced8: 10000016 */ b .L0f17cf34
/* f17cedc: ae920000 */ sw $s2,0x0($s4)
.L0f17cee0:
/* f17cee0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17cee0: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
/* f17cee8: 24130006 */ addiu $s3,$zero,0x6
.L0f17ceec:
/* f17ceec: 0fc67244 */ jal mpIsFeatureUnlocked
@@ -5505,7 +5505,7 @@ glabel menuhandlerMpSimulantDifficulty
.L0f17ce40:
/* f17ce40: 8f181448 */ lw $t8,%lo(g_MpPlayerNum)($t8)
/* f17ce44: 3c08800a */ lui $t0,%hi(g_Menus+0xe1c)
/* f17ce48: 3c02800b */ lui $v0,%hi(g_MpSimulants+0x48)
/* f17ce48: 3c02800b */ lui $v0,%hi(g_BotConfigsArray+0x48)
/* f17ce4c: 0018c8c0 */ sll $t9,$t8,0x3
/* f17ce50: 0338c823 */ subu $t9,$t9,$t8
/* f17ce54: 0019c880 */ sll $t9,$t9,0x2
@@ -5521,7 +5521,7 @@ glabel menuhandlerMpSimulantDifficulty
/* f17ce7c: 01284823 */ subu $t1,$t1,$t0
/* f17ce80: 00094880 */ sll $t1,$t1,0x2
/* f17ce84: 00491021 */ addu $v0,$v0,$t1
/* f17ce88: 9042c580 */ lbu $v0,%lo(g_MpSimulants+0x48)($v0)
/* f17ce88: 9042c580 */ lbu $v0,%lo(g_BotConfigsArray+0x48)($v0)
/* f17ce8c: 04400005 */ bltz $v0,.L0f17cea4
/* f17ce90: 28410006 */ slti $at,$v0,0x6
/* f17ce94: 10200003 */ beqz $at,.L0f17cea4
@@ -5532,10 +5532,10 @@ glabel menuhandlerMpSimulantDifficulty
/* f17cea4: 10000023 */ b .L0f17cf34
/* f17cea8: ae800000 */ sw $zero,0x0($s4)
.L0f17ceac:
/* f17ceac: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17ceb0: 3c118008 */ lui $s1,%hi(g_MpSimulantTypes+0x30)
/* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_MpSimulantTypes+0x30)
/* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17ceac: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17ceb0: 3c118008 */ lui $s1,%hi(g_BotProfiles+0x30)
/* f17ceb4: 2631775c */ addiu $s1,$s1,%lo(g_BotProfiles+0x30)
/* f17ceb8: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
.L0f17cebc:
/* f17cebc: 0fc67244 */ jal mpIsFeatureUnlocked
/* f17cec0: 92040006 */ lbu $a0,0x6($s0)
@@ -5548,8 +5548,8 @@ glabel menuhandlerMpSimulantDifficulty
/* f17ced8: 10000016 */ b .L0f17cf34
/* f17cedc: ae920000 */ sw $s2,0x0($s4)
.L0f17cee0:
/* f17cee0: 3c108008 */ lui $s0,%hi(g_MpSimulantTypes)
/* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_MpSimulantTypes)
/* f17cee0: 3c108008 */ lui $s0,%hi(g_BotProfiles)
/* f17cee4: 2610772c */ addiu $s0,$s0,%lo(g_BotProfiles)
/* f17cee8: 24130006 */ addiu $s3,$zero,0x6
.L0f17ceec:
/* f17ceec: 0fc67244 */ jal mpIsFeatureUnlocked
@@ -5726,7 +5726,7 @@ s32 menuhandlerMpDeleteSimulant(s32 operation, struct menuitem *item, union hand
char *mpMenuTitleEditSimulant(struct menudialog *dialog)
{
sprintf(g_StringPointer, "%s", &g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.name);
sprintf(g_StringPointer, "%s", &g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.name);
return g_StringPointer;
}
@@ -5736,11 +5736,11 @@ s32 menuhandlerMpChangeSimulantType(s32 operation, struct menuitem *item, union
s32 i;
s32 count = 0;
s32 simtypeindex = mpGetSimTypeIndex(
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].base.simtype,
g_MpSimulants[g_Menus[g_MpPlayerNum].mpsetup.slotindex].difficulty);
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].type,
g_BotConfigsArray[g_Menus[g_MpPlayerNum].mpsetup.slotindex].difficulty);
for (i = 0; i < simtypeindex; i++) {
if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) {
if (mpIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) {
count++;
}
}
@@ -5813,18 +5813,18 @@ char *mpMenuTextSimulantName(struct menuitem *item)
{
s32 index = item->param;
if (g_MpSimulants[index].base.name[0] == '\0' || (g_MpSetup.chrslots & 1 << (index + 4)) == 0) {
if (g_BotConfigsArray[index].base.name[0] == '\0' || (g_MpSetup.chrslots & 1 << (index + 4)) == 0) {
return "";
}
return g_MpSimulants[index].base.name;
return g_BotConfigsArray[index].base.name;
}
char *func0f17d3dc(struct menuitem *item)
{
s32 index = item->param;
if (g_MpSimulants[index].base.name[0] == '\0'
if (g_BotConfigsArray[index].base.name[0] == '\0'
|| ((g_MpSetup.chrslots & 1 << (index + 4)) == 0)) {
return "";
}
@@ -5947,7 +5947,7 @@ s32 menuhandlerMpNTeams(s32 operation, struct menuitem *item, union handlerdata
i = (start + 1) % numchrs;
do {
struct mpchr *mpchr = func0f18c794(i);
struct mpchrconfig *mpchr = func0f18c794(i);
if (teamsremaining);
@@ -6219,12 +6219,12 @@ s32 menuhandlerMpMaximumTeams(s32 operation, struct menuitem *item, union handle
for (i = 0; i != MAX_MPCHRS; i++) {
if (g_MpSetup.chrslots & (1 << i)) {
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
if (i < 4) {
mpchr = &g_MpPlayers[i].base;
mpchr = &g_PlayerConfigsArray[i].base;
} else {
mpchr = &g_MpSimulants[i - 4].base;
mpchr = &g_BotConfigsArray[i - 4].base;
}
mpchr->team = team++;
@@ -6248,12 +6248,12 @@ s32 menuhandlerMpHumansVsSimulants(s32 operation, struct menuitem *item, union h
for (i = 0; i != MAX_MPCHRS; i++) {
if (g_MpSetup.chrslots & (1 << i)) {
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
if (i < 4) {
mpchr = &g_MpPlayers[i].base;
mpchr = &g_PlayerConfigsArray[i].base;
} else {
mpchr = &g_MpSimulants[i - 4].base;
mpchr = &g_BotConfigsArray[i - 4].base;
}
mpchr->team = i < 4 ? 0 : 1;
@@ -6276,12 +6276,12 @@ s32 menuhandlerMpHumanSimulantPairs(s32 operation, struct menuitem *item, union
for (i = 0; i != MAX_MPCHRS; i++) {
if (g_MpSetup.chrslots & (1 << i)) {
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
if (i < 4) {
mpchr = &g_MpPlayers[i].base;
mpchr = &g_PlayerConfigsArray[i].base;
} else {
mpchr = &g_MpSimulants[i - 4].base;
mpchr = &g_BotConfigsArray[i - 4].base;
}
if (i < 4) {
@@ -6304,7 +6304,7 @@ s32 menuhandlerMpHumanSimulantPairs(s32 operation, struct menuitem *item, union
char *mpMenuTextChrNameForTeamSetup(struct menuitem *item)
{
struct mpchr *mpchr = func0f18c794(item->param);
struct mpchrconfig *mpchr = func0f18c794(item->param);
if (mpchr) {
return mpchr->name;
@@ -6332,7 +6332,7 @@ s32 func0f17dac4(s32 operation, struct menuitem *item, union handlerdata *data)
s32 menuhandlerMpTeamSlot(s32 operation, struct menuitem *item, union handlerdata *data)
{
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
switch (operation) {
case MENUOP_SET:
@@ -7984,7 +7984,7 @@ s32 menuhandlerMpLock(s32 operation, struct menuitem *item, union handlerdata *d
return (s32) langGet(labels[data->dropdown.value]);
}
if (mpGetLockType() == MPLOCKTYPE_PLAYER) {
return (s32) g_MpPlayers[mpGetLockPlayerNum()].base.name;
return (s32) g_PlayerConfigsArray[mpGetLockPlayerNum()].base.name;
}
return (s32) mpGetCurrentPlayerName(item);
case MENUOP_SET:
@@ -8004,7 +8004,7 @@ s32 menuhandlerMpLock(s32 operation, struct menuitem *item, union handlerdata *d
s32 menuhandlerMpSavePlayer(s32 operation, struct menuitem *item, union handlerdata *data)
{
if (operation == MENUOP_SET) {
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 0) {
if (g_PlayerConfigsArray[g_MpPlayerNum].fileguid.fileid == 0) {
filemgrPushSelectLocationDialog(6, FILETYPE_MPPLAYER);
} else {
menuPushDialog(&g_MpSavePlayerMenuDialog);
@@ -8016,7 +8016,7 @@ s32 menuhandlerMpSavePlayer(s32 operation, struct menuitem *item, union handlerd
char *mpMenuTextSavePlayerOrCopy(struct menuitem *item)
{
if (g_MpPlayers[g_MpPlayerNum].fileguid.fileid == 0) {
if (g_PlayerConfigsArray[g_MpPlayerNum].fileguid.fileid == 0) {
return langGet(L_MPMENU_038); // "Save Player"
}
@@ -8114,7 +8114,7 @@ void mpConfigureQuickTeamPlayers(void)
g_MpSetup.options |= MPOPTION_TEAMSENABLED;
for (i = 0; i < 4; i++) {
g_MpPlayers[i].base.team = g_Vars.mpplayerteams[i];
g_PlayerConfigsArray[i].base.team = g_Vars.mpplayerteams[i];
}
break;
@@ -8122,7 +8122,7 @@ void mpConfigureQuickTeamPlayers(void)
g_MpSetup.options |= MPOPTION_TEAMSENABLED;
for (i = 0; i < 4; i++) {
g_MpPlayers[i].base.team = 0;
g_PlayerConfigsArray[i].base.team = 0;
}
break;
@@ -8130,7 +8130,7 @@ void mpConfigureQuickTeamPlayers(void)
g_MpSetup.options |= MPOPTION_TEAMSENABLED;
for (i = 0; i < 4; i++) {
g_MpPlayers[i].base.team = i;
g_PlayerConfigsArray[i].base.team = i;
}
break;
@@ -8140,7 +8140,7 @@ void mpConfigureQuickTeamPlayers(void)
void mpConfigureQuickTeamSimulants(void)
{
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
s32 numchrs;
s32 numsims;
s32 i;
@@ -8170,8 +8170,8 @@ void mpConfigureQuickTeamSimulants(void)
func0f18cddc();
for (i = 0; i < ARRAYCOUNT(g_MpSimulants); i++) {
g_MpSimulants[i].base.team = 1;
for (i = 0; i < ARRAYCOUNT(g_BotConfigsArray); i++) {
g_BotConfigsArray[i].base.team = 1;
}
break;
@@ -8184,7 +8184,7 @@ void mpConfigureQuickTeamSimulants(void)
if (numsims >= 0) {
func0f18c984(numsims, g_Vars.mpsimdifficulty);
g_MpSimulants[numsims].base.team = mpchr->team;
g_BotConfigsArray[numsims].base.team = mpchr->team;
}
}
}
@@ -8318,7 +8318,7 @@ s32 mpQuickTeamSimulantDifficultyHandler(s32 operation, struct menuitem *item, u
switch (operation) {
case MENUOP_GETOPTIONCOUNT:
for (i = 0; i < 6; i++) {
if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) {
if (mpIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) {
count++;
}
}
@@ -8327,7 +8327,7 @@ s32 mpQuickTeamSimulantDifficultyHandler(s32 operation, struct menuitem *item, u
break;
case MENUOP_GETOPTIONTEXT:
for (i = 0; i < 6; i++) {
if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) {
if (mpIsFeatureUnlocked(g_BotProfiles[i].requirefeature)) {
if (count == data->dropdown.value) {
return (s32) langGet(i + L_MISC_082);
}
+17 -17
View File
@@ -8,7 +8,7 @@
#include "game/hudmsg.h"
#include "game/game_127910.h"
#include "game/mplayer/setup.h"
#include "game/game_197600.h"
#include "game/botcmd.h"
#include "game/lang.h"
#include "game/mplayer/mplayer.h"
#include "game/options.h"
@@ -172,16 +172,16 @@ void mpstatsRecordPlayerSuicide(void)
s32 duration;
s32 time;
s32 mpindex;
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
if (g_Vars.normmplayerisrunning) {
time = getMissionTime();
mpindex = g_Vars.currentplayerstats->mpindex;
if (mpindex < 4) {
mpchr = &g_MpPlayers[mpindex].base;
mpchr = &g_PlayerConfigsArray[mpindex].base;
} else {
mpchr = &g_MpSimulants[mpindex - 4].base;
mpchr = &g_BotConfigsArray[mpindex - 4].base;
}
// Show HUD message
@@ -231,9 +231,9 @@ void mpstatsRecordPlayerSuicide(void)
void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
{
s32 vmpindex = -1;
struct mpchr *vmpchr = NULL;
struct mpchrconfig *vmpchr = NULL;
s32 ampindex;
struct mpchr *ampchr = NULL;
struct mpchrconfig *ampchr = NULL;
s32 prevplayernum;
char text[256];
@@ -247,9 +247,9 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
if (ampindex >= 0) {
if (ampindex < 4) {
ampchr = &g_MpPlayers[ampindex].base;
ampchr = &g_PlayerConfigsArray[ampindex].base;
} else {
ampchr = &g_MpSimulants[ampindex - 4].base;
ampchr = &g_BotConfigsArray[ampindex - 4].base;
}
}
}
@@ -259,9 +259,9 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
if (vmpindex >= 0) {
if (vmpindex < 4) {
vmpchr = &g_MpPlayers[vmpindex].base;
vmpchr = &g_PlayerConfigsArray[vmpindex].base;
} else {
vmpchr = &g_MpSimulants[vmpindex - 4].base;
vmpchr = &g_BotConfigsArray[vmpindex - 4].base;
}
}
}
@@ -293,7 +293,7 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
if (g_Vars.normmplayerisrunning && aplayernum >= 0) {
// "Killed by %s"
sprintf(text, "%s %s", langGet(L_MISC_183), var800ac500[aplayernum]->name);
sprintf(text, "%s %s", langGet(L_MISC_183), g_MpAllChrConfigPtrs[aplayernum]->name);
hudmsgCreate(text, HUDMSGTYPE_DEFAULT);
}
@@ -313,7 +313,7 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
if (g_Vars.normmplayerisrunning && vplayernum >= 0) {
// "Killed %s"
sprintf(text, "%s %s", langGet(L_MISC_184), var800ac500[vplayernum]->name);
sprintf(text, "%s %s", langGet(L_MISC_184), g_MpAllChrConfigPtrs[vplayernum]->name);
hudmsgCreate(text, HUDMSGTYPE_DEFAULT);
}
@@ -326,18 +326,18 @@ void mpstatsRecordDeath(s32 aplayernum, s32 vplayernum)
&& aplayernum >= 0
&& vplayernum >= PLAYERCOUNT()
&& aplayernum != vplayernum) {
g_MpPlayerChrs[vplayernum]->aibot->lastkilledbyplayernum = aplayernum;
g_MpAllChrPtrs[vplayernum]->aibot->lastkilledbyplayernum = aplayernum;
}
}
if (g_Vars.normmplayerisrunning && aplayernum >= 0 && g_MpPlayerChrs[aplayernum]->aibot) {
s32 index = mpGetWeaponIndexByWeaponNum(g_MpPlayerChrs[aplayernum]->aibot->weaponnum);
if (g_Vars.normmplayerisrunning && aplayernum >= 0 && g_MpAllChrPtrs[aplayernum]->aibot) {
s32 index = mpGetWeaponSlotByWeaponNum(g_MpAllChrPtrs[aplayernum]->aibot->weaponnum);
if (index >= 0) {
if (aplayernum == vplayernum) {
g_MpPlayerChrs[aplayernum]->aibot->suicidesbygunfunc[index][g_MpPlayerChrs[aplayernum]->aibot->gunfunc]++;
g_MpAllChrPtrs[aplayernum]->aibot->suicidesbygunfunc[index][g_MpAllChrPtrs[aplayernum]->aibot->gunfunc]++;
} else {
g_MpPlayerChrs[aplayernum]->aibot->killsbygunfunc[index][g_MpPlayerChrs[aplayernum]->aibot->gunfunc]++;
g_MpAllChrPtrs[aplayernum]->aibot->killsbygunfunc[index][g_MpAllChrPtrs[aplayernum]->aibot->gunfunc]++;
}
}
}
+40 -40
View File
@@ -24,77 +24,77 @@ u16 var8008231cnb = 0x7fff;
s32 optionsGetControlMode(s32 mpchrnum)
{
return g_MpPlayers[mpchrnum].base.controlmode;
return g_PlayerConfigsArray[mpchrnum].controlmode;
}
void optionsSetControlMode(s32 mpchrnum, s32 mode)
{
g_MpPlayers[mpchrnum].base.controlmode = mode;
g_PlayerConfigsArray[mpchrnum].controlmode = mode;
}
s32 optionsGetContpadNum1(s32 mpchrnum)
{
return g_MpPlayers[mpchrnum].base.contpad1;
return g_PlayerConfigsArray[mpchrnum].contpad1;
}
s32 optionsGetContpadNum2(s32 mpchrnum)
{
return g_MpPlayers[mpchrnum].base.contpad2;
return g_PlayerConfigsArray[mpchrnum].contpad2;
}
s32 optionsGetForwardPitch(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_FORWARDPITCH) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_FORWARDPITCH) != 0;
}
s32 optionsGetAutoAim(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_AUTOAIM) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_AUTOAIM) != 0;
}
s32 optionsGetLookAhead(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_LOOKAHEAD) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_LOOKAHEAD) != 0;
}
s32 optionsGetAimControl(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_AIMCONTROL) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_AIMCONTROL) != 0;
}
s32 optionsGetSightOnScreen(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_SIGHTONSCREEN) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_SIGHTONSCREEN) != 0;
}
s32 optionsGetAmmoOnScreen(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_AMMOONSCREEN) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_AMMOONSCREEN) != 0;
}
s32 optionsGetShowGunFunction(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_SHOWGUNFUNCTION) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_SHOWGUNFUNCTION) != 0;
}
s32 optionsGetAlwaysShowTarget(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_ALWAYSSHOWTARGET) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_ALWAYSSHOWTARGET) != 0;
}
s32 optionsGetShowZoomRange(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_SHOWZOOMRANGE) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_SHOWZOOMRANGE) != 0;
}
s32 optionsGetPaintball(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_PAINTBALL) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_PAINTBALL) != 0;
}
s32 optionsGetShowMissionTime(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_SHOWMISSIONTIME) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_SHOWMISSIONTIME) != 0;
}
u8 optionsGetInGameSubtitles(void)
@@ -109,105 +109,105 @@ u8 optionsGetCutsceneSubtitles(void)
s32 optionsGetHeadRoll(s32 mpchrnum)
{
return (g_MpPlayers[mpchrnum].options & OPTION_HEADROLL) != 0;
return (g_PlayerConfigsArray[mpchrnum].options & OPTION_HEADROLL) != 0;
}
void optionsSetForwardPitch(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_FORWARDPITCH;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_FORWARDPITCH;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_FORWARDPITCH;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_FORWARDPITCH;
}
}
void optionsSetAutoAim(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_AUTOAIM;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_AUTOAIM;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_AUTOAIM;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_AUTOAIM;
}
}
void optionsSetLookAhead(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_LOOKAHEAD;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_LOOKAHEAD;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_LOOKAHEAD;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_LOOKAHEAD;
}
}
void optionsSetAimControl(s32 mpchrnum, s32 index)
{
if (index) {
g_MpPlayers[mpchrnum].options |= OPTION_AIMCONTROL;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_AIMCONTROL;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_AIMCONTROL;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_AIMCONTROL;
}
}
void optionsSetSightOnScreen(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_SIGHTONSCREEN;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_SIGHTONSCREEN;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_SIGHTONSCREEN;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_SIGHTONSCREEN;
}
}
void optionsSetAmmoOnScreen(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_AMMOONSCREEN;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_AMMOONSCREEN;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_AMMOONSCREEN;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_AMMOONSCREEN;
}
}
void optionsSetShowGunFunction(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_SHOWGUNFUNCTION;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_SHOWGUNFUNCTION;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_SHOWGUNFUNCTION;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_SHOWGUNFUNCTION;
}
}
void optionsSetAlwaysShowTarget(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_ALWAYSSHOWTARGET;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_ALWAYSSHOWTARGET;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_ALWAYSSHOWTARGET;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_ALWAYSSHOWTARGET;
}
}
void optionsSetShowZoomRange(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_SHOWZOOMRANGE;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_SHOWZOOMRANGE;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_SHOWZOOMRANGE;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_SHOWZOOMRANGE;
}
}
void optionsSetPaintball(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_PAINTBALL;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_PAINTBALL;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_PAINTBALL;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_PAINTBALL;
}
}
void optionsSetShowMissionTime(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_SHOWMISSIONTIME;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_SHOWMISSIONTIME;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_SHOWMISSIONTIME;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_SHOWMISSIONTIME;
}
}
@@ -224,9 +224,9 @@ void optionsSetCutsceneSubtitles(s32 enable)
void optionsSetHeadRoll(s32 mpchrnum, bool enable)
{
if (enable) {
g_MpPlayers[mpchrnum].options |= OPTION_HEADROLL;
g_PlayerConfigsArray[mpchrnum].options |= OPTION_HEADROLL;
} else {
g_MpPlayers[mpchrnum].options &= ~OPTION_HEADROLL;
g_PlayerConfigsArray[mpchrnum].options &= ~OPTION_HEADROLL;
}
}
+9 -9
View File
@@ -20,7 +20,7 @@
#include "game/smoke/smoke.h"
#include "game/sparks/sparks.h"
#include "game/bg.h"
#include "game/game_190260.h"
#include "game/bot.h"
#include "game/training/training.h"
#include "game/pad.h"
#include "game/propobj.h"
@@ -1973,7 +1973,7 @@ glabel var7f1ab190pf
/* f063740: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f063744: 11e00005 */ beqz $t7,.PF0f06375c
/* f063748: 00000000 */ nop
/* f06374c: 0fc64a62 */ jal aibotTick
/* f06374c: 0fc64a62 */ jal botTick
/* f063750: 02002025 */ move $a0,$s0
/* f063754: 10000004 */ b .PF0f063768
/* f063758: 00403025 */ move $a2,$v0
@@ -2143,7 +2143,7 @@ glabel var7f1ab190pf
/* f0639ac: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f0639b0: 11e00005 */ beqz $t7,.PF0f0639c8
/* f0639b4: 00000000 */ nop
/* f0639b8: 0fc64a62 */ jal aibotTick
/* f0639b8: 0fc64a62 */ jal botTick
/* f0639bc: 02002025 */ move $a0,$s0
/* f0639c0: 1000003c */ b .PF0f063ab4
/* f0639c4: 00403025 */ move $a2,$v0
@@ -2959,7 +2959,7 @@ glabel propsTick
/* f0634d4: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f0634d8: 11e00005 */ beqz $t7,.L0f0634f0
/* f0634dc: 00000000 */ nop
/* f0634e0: 0fc64634 */ jal aibotTick
/* f0634e0: 0fc64634 */ jal botTick
/* f0634e4: 02002025 */ or $a0,$s0,$zero
/* f0634e8: 10000004 */ b .L0f0634fc
/* f0634ec: 00403025 */ or $a2,$v0,$zero
@@ -3123,7 +3123,7 @@ glabel propsTick
/* f063728: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f06372c: 11e00005 */ beqz $t7,.L0f063744
/* f063730: 00000000 */ nop
/* f063734: 0fc64634 */ jal aibotTick
/* f063734: 0fc64634 */ jal botTick
/* f063738: 02002025 */ or $a0,$s0,$zero
/* f06373c: 1000003c */ b .L0f063830
/* f063740: 00403025 */ or $a2,$v0,$zero
@@ -3932,7 +3932,7 @@ glabel propsTick
/* f062748: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f06274c: 11e00005 */ beqz $t7,.NB0f062764
/* f062750: 00000000 */ sll $zero,$zero,0x0
/* f062754: 0fc62e6d */ jal aibotTick
/* f062754: 0fc62e6d */ jal botTick
/* f062758: 02002025 */ or $a0,$s0,$zero
/* f06275c: 10000004 */ beqz $zero,.NB0f062770
/* f062760: 00403025 */ or $a2,$v0,$zero
@@ -4096,7 +4096,7 @@ glabel propsTick
/* f06299c: 8c4f02d4 */ lw $t7,0x2d4($v0)
/* f0629a0: 11e00005 */ beqz $t7,.NB0f0629b8
/* f0629a4: 00000000 */ sll $zero,$zero,0x0
/* f0629a8: 0fc62e6d */ jal aibotTick
/* f0629a8: 0fc62e6d */ jal botTick
/* f0629ac: 02002025 */ or $a0,$s0,$zero
/* f0629b0: 1000003c */ beqz $zero,.NB0f062aa4
/* f0629b4: 00403025 */ or $a2,$v0,$zero
@@ -4803,7 +4803,7 @@ glabel propsTick
// splatTick(prop);
//
// if (chr && chr->aibot) {
// op = aibotTick(prop);
// op = botTick(prop);
// } else {
// op = chrTick(prop);
// }
@@ -4866,7 +4866,7 @@ glabel propsTick
// splatTick(prop);
//
// if (chr && chr->aibot) {
// op = aibotTick(prop);
// op = botTick(prop);
// } else {
// op = chrTick(prop);
// }
+35 -35
View File
@@ -48,8 +48,8 @@
#include "game/mplayer/setup.h"
#include "game/mplayer/scenarios.h"
#include "game/mpstats.h"
#include "game/game_190260.h"
#include "game/game_1999b0.h"
#include "game/bot.h"
#include "game/botact.h"
#include "game/training/training.h"
#include "game/lang.h"
#include "game/mplayer/mplayer.h"
@@ -5975,9 +5975,9 @@ void objFree(struct defaultobj *obj, bool freeprop, bool canregen)
&& obj->projectile->ownerprop) {
s32 i;
for (i = 0; i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->aibot && g_MpPlayerChrs[i]->aibot->skrocket == obj->prop) {
g_MpPlayerChrs[i]->aibot->skrocket = NULL;
for (i = 0; i < g_MpNumChrs; i++) {
if (g_MpAllChrPtrs[i]->aibot && g_MpAllChrPtrs[i]->aibot->skrocket == obj->prop) {
g_MpAllChrPtrs[i]->aibot->skrocket = NULL;
}
}
}
@@ -6046,9 +6046,9 @@ void objFree(struct defaultobj *obj, bool freeprop, bool canregen)
if (g_Vars.normmplayerisrunning) {
s32 i;
for (i = 0; i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->aibot && g_MpPlayerChrs[i]->aibot->fetchprop == obj->prop) {
g_MpPlayerChrs[i]->aibot->fetchprop = NULL;
for (i = 0; i < g_MpNumChrs; i++) {
if (g_MpAllChrPtrs[i]->aibot && g_MpAllChrPtrs[i]->aibot->fetchprop == obj->prop) {
g_MpAllChrPtrs[i]->aibot->fetchprop = NULL;
}
}
}
@@ -21716,7 +21716,7 @@ glabel var7f1aa3d0
/* f073564: 26650008 */ addiu $a1,$s3,0x8
/* f073568: 24460008 */ addiu $a2,$v0,0x8
/* f07356c: 26670028 */ addiu $a3,$s3,0x28
/* f073570: 0fc669b4 */ jal func0f19a6d0
/* f073570: 0fc669b4 */ jal botactFindRocketRoute
/* f073574: afb20014 */ sw $s2,0x14($sp)
/* f073578: c7ac0094 */ lwc1 $f12,0x94($sp)
/* f07357c: 1440000c */ bnez $v0,.L0f0735b0
@@ -21729,7 +21729,7 @@ glabel var7f1aa3d0
/* f073594: 956400f8 */ lhu $a0,0xf8($t3)
/* f073598: e7ae008c */ swc1 $f14,0x8c($sp)
/* f07359c: e7ac0094 */ swc1 $f12,0x94($sp)
/* f0735a0: 0fc669f4 */ jal func0f19a7d0
/* f0735a0: 0fc669f4 */ jal botactGetRocketSpawnPos
/* f0735a4: 264500c4 */ addiu $a1,$s2,0xc4
/* f0735a8: c7ac0094 */ lwc1 $f12,0x94($sp)
/* f0735ac: c7ae008c */ lwc1 $f14,0x8c($sp)
@@ -21941,10 +21941,10 @@ glabel var7f1aa3d0
/* f0738ac: 12800065 */ beqz $s4,.L0f073a44
/* f0738b0: 8faf0188 */ lw $t7,0x188($sp)
/* f0738b4: 85f80062 */ lh $t8,0x62($t7)
/* f0738b8: 3c19800b */ lui $t9,%hi(g_MpNumPlayers)
/* f0738b8: 3c19800b */ lui $t9,%hi(g_MpNumChrs)
/* f0738bc: 13000061 */ beqz $t8,.L0f073a44
/* f0738c0: 00000000 */ nop
/* f0738c4: 8f39c530 */ lw $t9,%lo(g_MpNumPlayers)($t9)
/* f0738c4: 8f39c530 */ lw $t9,%lo(g_MpNumChrs)($t9)
/* f0738c8: 00008825 */ or $s1,$zero,$zero
/* f0738cc: 1b20005d */ blez $t9,.L0f073a44
/* f0738d0: 00000000 */ nop
@@ -21962,7 +21962,7 @@ glabel var7f1aa3d0
/* f0738fc: 24060002 */ addiu $a2,$zero,0x2
/* f073900: 1040004a */ beqz $v0,.L0f073a2c
/* f073904: 00002025 */ or $a0,$zero,$zero
/* f073908: 0fc64a53 */ jal func0f19294c
/* f073908: 0fc64a53 */ jal bot0f19294c
/* f07390c: 02002825 */ or $a1,$s0,$zero
/* f073910: 14400046 */ bnez $v0,.L0f073a2c
/* f073914: 00000000 */ nop
@@ -21998,8 +21998,8 @@ glabel var7f1aa3d0
/* f073988: 00000000 */ nop
/* f07398c: 0fc633fe */ jal mpPlayerGetIndex
/* f073990: 02802025 */ or $a0,$s4,$zero
/* f073994: 3c0b800b */ lui $t3,%hi(g_MpNumPlayers)
/* f073998: 8d6bc530 */ lw $t3,%lo(g_MpNumPlayers)($t3)
/* f073994: 3c0b800b */ lui $t3,%hi(g_MpNumChrs)
/* f073998: 8d6bc530 */ lw $t3,%lo(g_MpNumChrs)($t3)
/* f07399c: 8eaa000c */ lw $t2,0xc($s5)
/* f0739a0: 26640008 */ addiu $a0,$s3,0x8
/* f0739a4: 26650028 */ addiu $a1,$s3,0x28
@@ -22039,8 +22039,8 @@ glabel var7f1aa3d0
/* f073a24: a2400104 */ sb $zero,0x104($s2)
/* f073a28: e64600cc */ swc1 $f6,0xcc($s2)
.L0f073a2c:
/* f073a2c: 3c08800b */ lui $t0,%hi(g_MpNumPlayers)
/* f073a30: 8d08c530 */ lw $t0,%lo(g_MpNumPlayers)($t0)
/* f073a2c: 3c08800b */ lui $t0,%hi(g_MpNumChrs)
/* f073a30: 8d08c530 */ lw $t0,%lo(g_MpNumChrs)($t0)
/* f073a34: 26310001 */ addiu $s1,$s1,0x1
/* f073a38: 0228082a */ slt $at,$s1,$t0
/* f073a3c: 1420ffa5 */ bnez $at,.L0f0738d4
@@ -22173,7 +22173,7 @@ glabel var7f1aa3d0
/* f073564: 26650008 */ addiu $a1,$s3,0x8
/* f073568: 24460008 */ addiu $a2,$v0,0x8
/* f07356c: 26670028 */ addiu $a3,$s3,0x28
/* f073570: 0fc669b4 */ jal func0f19a6d0
/* f073570: 0fc669b4 */ jal botactFindRocketRoute
/* f073574: afb20014 */ sw $s2,0x14($sp)
/* f073578: c7ac0094 */ lwc1 $f12,0x94($sp)
/* f07357c: 1440000c */ bnez $v0,.L0f0735b0
@@ -22186,7 +22186,7 @@ glabel var7f1aa3d0
/* f073594: 956400f8 */ lhu $a0,0xf8($t3)
/* f073598: e7ae008c */ swc1 $f14,0x8c($sp)
/* f07359c: e7ac0094 */ swc1 $f12,0x94($sp)
/* f0735a0: 0fc669f4 */ jal func0f19a7d0
/* f0735a0: 0fc669f4 */ jal botactGetRocketSpawnPos
/* f0735a4: 264500c4 */ addiu $a1,$s2,0xc4
/* f0735a8: c7ac0094 */ lwc1 $f12,0x94($sp)
/* f0735ac: c7ae008c */ lwc1 $f14,0x8c($sp)
@@ -22398,10 +22398,10 @@ glabel var7f1aa3d0
/* f0738ac: 12800065 */ beqz $s4,.L0f073a44
/* f0738b0: 8faf0188 */ lw $t7,0x188($sp)
/* f0738b4: 85f80062 */ lh $t8,0x62($t7)
/* f0738b8: 3c19800b */ lui $t9,%hi(g_MpNumPlayers)
/* f0738b8: 3c19800b */ lui $t9,%hi(g_MpNumChrs)
/* f0738bc: 13000061 */ beqz $t8,.L0f073a44
/* f0738c0: 00000000 */ nop
/* f0738c4: 8f39c530 */ lw $t9,%lo(g_MpNumPlayers)($t9)
/* f0738c4: 8f39c530 */ lw $t9,%lo(g_MpNumChrs)($t9)
/* f0738c8: 00008825 */ or $s1,$zero,$zero
/* f0738cc: 1b20005d */ blez $t9,.L0f073a44
/* f0738d0: 00000000 */ nop
@@ -22419,7 +22419,7 @@ glabel var7f1aa3d0
/* f0738fc: 24060002 */ addiu $a2,$zero,0x2
/* f073900: 1040004a */ beqz $v0,.L0f073a2c
/* f073904: 00002025 */ or $a0,$zero,$zero
/* f073908: 0fc64a53 */ jal func0f19294c
/* f073908: 0fc64a53 */ jal bot0f19294c
/* f07390c: 02002825 */ or $a1,$s0,$zero
/* f073910: 14400046 */ bnez $v0,.L0f073a2c
/* f073914: 00000000 */ nop
@@ -22455,8 +22455,8 @@ glabel var7f1aa3d0
/* f073988: 00000000 */ nop
/* f07398c: 0fc633fe */ jal mpPlayerGetIndex
/* f073990: 02802025 */ or $a0,$s4,$zero
/* f073994: 3c0b800b */ lui $t3,%hi(g_MpNumPlayers)
/* f073998: 8d6bc530 */ lw $t3,%lo(g_MpNumPlayers)($t3)
/* f073994: 3c0b800b */ lui $t3,%hi(g_MpNumChrs)
/* f073998: 8d6bc530 */ lw $t3,%lo(g_MpNumChrs)($t3)
/* f07399c: 8eaa000c */ lw $t2,0xc($s5)
/* f0739a0: 26640008 */ addiu $a0,$s3,0x8
/* f0739a4: 26650028 */ addiu $a1,$s3,0x28
@@ -22496,8 +22496,8 @@ glabel var7f1aa3d0
/* f073a24: a2400104 */ sb $zero,0x104($s2)
/* f073a28: e64600cc */ swc1 $f6,0xcc($s2)
.L0f073a2c:
/* f073a2c: 3c08800b */ lui $t0,%hi(g_MpNumPlayers)
/* f073a30: 8d08c530 */ lw $t0,%lo(g_MpNumPlayers)($t0)
/* f073a2c: 3c08800b */ lui $t0,%hi(g_MpNumChrs)
/* f073a30: 8d08c530 */ lw $t0,%lo(g_MpNumChrs)($t0)
/* f073a34: 26310001 */ addiu $s1,$s1,0x1
/* f073a38: 0228082a */ slt $at,$s1,$t0
/* f073a3c: 1420ffa5 */ bnez $at,.L0f0738d4
@@ -35620,11 +35620,11 @@ glabel var7f1aa580
/* f079074: 3c09800a */ lui $t1,%hi(g_Vars)
/* f079078: 25299fc0 */ addiu $t1,$t1,%lo(g_Vars)
/* f07907c: 8d390318 */ lw $t9,0x318($t1)
/* f079080: 3c05800b */ lui $a1,%hi(g_MpNumPlayers)
/* f079080: 3c05800b */ lui $a1,%hi(g_MpNumChrs)
/* f079084: 13200003 */ beqz $t9,.L0f079094
/* f079088: 00000000 */ nop
/* f07908c: 10000007 */ b .L0f0790ac
/* f079090: 8ca5c530 */ lw $a1,%lo(g_MpNumPlayers)($a1)
/* f079090: 8ca5c530 */ lw $a1,%lo(g_MpNumChrs)($a1)
.L0f079094:
/* f079094: 0fc07934 */ jal chrsGetNumSlots
/* f079098: afa800ac */ sw $t0,0xac($sp)
@@ -35659,9 +35659,9 @@ glabel var7f1aa580
/* f0790fc: 00417024 */ and $t6,$v0,$at
/* f079100: 000e7f02 */ srl $t7,$t6,0x1c
/* f079104: 11e3ffea */ beq $t7,$v1,.L0f0790b0
/* f079108: 3c04800b */ lui $a0,%hi(g_MpPlayerChrs)
/* f079108: 3c04800b */ lui $a0,%hi(g_MpAllChrPtrs)
/* f07910c: 00982021 */ addu $a0,$a0,$t8
/* f079110: 8c84c4d0 */ lw $a0,%lo(g_MpPlayerChrs)($a0)
/* f079110: 8c84c4d0 */ lw $a0,%lo(g_MpAllChrPtrs)($a0)
/* f079114: 8c99001c */ lw $t9,0x1c($a0)
/* f079118: 5320ffe6 */ beqzl $t9,.L0f0790b4
/* f07911c: 246a0001 */ addiu $t2,$v1,0x1
@@ -36842,11 +36842,11 @@ glabel var7f1aa580
/* f079074: 3c09800a */ lui $t1,%hi(g_Vars)
/* f079078: 25299fc0 */ addiu $t1,$t1,%lo(g_Vars)
/* f07907c: 8d390318 */ lw $t9,0x318($t1)
/* f079080: 3c05800b */ lui $a1,%hi(g_MpNumPlayers)
/* f079080: 3c05800b */ lui $a1,%hi(g_MpNumChrs)
/* f079084: 13200003 */ beqz $t9,.L0f079094
/* f079088: 00000000 */ nop
/* f07908c: 10000007 */ b .L0f0790ac
/* f079090: 8ca5c530 */ lw $a1,%lo(g_MpNumPlayers)($a1)
/* f079090: 8ca5c530 */ lw $a1,%lo(g_MpNumChrs)($a1)
.L0f079094:
/* f079094: 0fc07934 */ jal chrsGetNumSlots
/* f079098: afa800ac */ sw $t0,0xac($sp)
@@ -36881,9 +36881,9 @@ glabel var7f1aa580
/* f0790fc: 00417024 */ and $t6,$v0,$at
/* f079100: 000e7f02 */ srl $t7,$t6,0x1c
/* f079104: 11e3ffea */ beq $t7,$v1,.L0f0790b0
/* f079108: 3c04800b */ lui $a0,%hi(g_MpPlayerChrs)
/* f079108: 3c04800b */ lui $a0,%hi(g_MpAllChrPtrs)
/* f07910c: 00982021 */ addu $a0,$a0,$t8
/* f079110: 8c84c4d0 */ lw $a0,%lo(g_MpPlayerChrs)($a0)
/* f079110: 8c84c4d0 */ lw $a0,%lo(g_MpAllChrPtrs)($a0)
/* f079114: 8c99001c */ lw $t9,0x1c($a0)
/* f079118: 5320ffe6 */ beqzl $t9,.L0f0790b4
/* f07911c: 246a0001 */ addiu $t2,$v1,0x1
@@ -65939,7 +65939,7 @@ struct autogunobj *laptopDeploy(s32 modelnum, struct gset *gset, struct chrdata
laptop->shotbondsum = 0;
if (chr->aibot) {
laptop->ammoquantity = aibotTryRemoveAmmoFromReserve(chr->aibot, WEAPON_LAPTOPGUN, FUNC_PRIMARY, 200);
laptop->ammoquantity = botactTryRemoveAmmoFromReserve(chr->aibot, WEAPON_LAPTOPGUN, FUNC_PRIMARY, 200);
} else if (chr->prop->type == PROPTYPE_PLAYER) {
s32 qty;
s32 prevplayernum = g_Vars.currentplayernum;
+12 -12
View File
@@ -261,7 +261,7 @@ Gfx *radarRender(Gfx *gdl)
return gdl;
}
if ((g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.displayoptions & 0x00000004) == 0) {
if ((g_PlayerConfigsArray[g_Vars.currentplayerstats->mpindex].base.displayoptions & 0x00000004) == 0) {
return gdl;
}
} else if ((g_Vars.currentplayer->devicesactive & ~g_Vars.currentplayer->devicesinhibit & DEVICE_RTRACKER) == 0) {
@@ -340,7 +340,7 @@ Gfx *radarRender(Gfx *gdl)
pos.z = g_Vars.players[i]->prop->pos.z - g_Vars.currentplayer->prop->pos.z;
if (g_Vars.normmplayerisrunning && (g_MpSetup.options & MPOPTION_TEAMSENABLED)) {
s32 index = g_MpPlayers[g_Vars.playerstats[i].mpindex].base.team;
s32 index = g_PlayerConfigsArray[g_Vars.playerstats[i].mpindex].base.team;
colour = g_TeamColours[index];
} else {
colour = 0x00ff0000;
@@ -372,21 +372,21 @@ Gfx *radarRender(Gfx *gdl)
// Draw dots for MP simulants
if (g_Vars.normmplayerisrunning != 0) {
for (i = 0; i < g_NumMpSimulantChrs; i++) {
if (!chrIsDead(g_MpSimulantChrs[i])
&& (g_MpSimulantChrs[i]->hidden & CHRHFLAG_CLOAKED) == 0
&& scenarioRadar2(&gdl, g_MpSimulantChrs[i]->prop) == false) {
pos.x = g_MpSimulantChrs[i]->prop->pos.x - g_Vars.currentplayer->prop->pos.x;
pos.y = g_MpSimulantChrs[i]->prop->pos.y - g_Vars.currentplayer->prop->pos.y;
pos.z = g_MpSimulantChrs[i]->prop->pos.z - g_Vars.currentplayer->prop->pos.z;
for (i = 0; i < g_BotCount; i++) {
if (!chrIsDead(g_MpBotChrPtrs[i])
&& (g_MpBotChrPtrs[i]->hidden & CHRHFLAG_CLOAKED) == 0
&& scenarioRadar2(&gdl, g_MpBotChrPtrs[i]->prop) == false) {
pos.x = g_MpBotChrPtrs[i]->prop->pos.x - g_Vars.currentplayer->prop->pos.x;
pos.y = g_MpBotChrPtrs[i]->prop->pos.y - g_Vars.currentplayer->prop->pos.y;
pos.z = g_MpBotChrPtrs[i]->prop->pos.z - g_Vars.currentplayer->prop->pos.z;
if (g_Vars.normmplayerisrunning && (g_MpSetup.options & MPOPTION_TEAMSENABLED)) {
colour = g_TeamColours[radarGetTeamIndex(g_MpSimulantChrs[i]->team)];
colour = g_TeamColours[radarGetTeamIndex(g_MpBotChrPtrs[i]->team)];
} else {
colour = 0x00ff0000;
}
gdl = radarDrawDot(gdl, g_MpSimulantChrs[i]->prop, &pos, colour, 0, 0);
gdl = radarDrawDot(gdl, g_MpBotChrPtrs[i]->prop, &pos, colour, 0, 0);
}
}
}
@@ -405,7 +405,7 @@ Gfx *radarRender(Gfx *gdl)
pos.z = 0;
if (g_Vars.normmplayerisrunning && (g_MpSetup.options & MPOPTION_TEAMSENABLED)) {
s32 index = g_MpPlayers[g_Vars.playerstats[playernum].mpindex].base.team;
s32 index = g_PlayerConfigsArray[g_Vars.playerstats[playernum].mpindex].base.team;
colour = g_TeamColours[index];
} else {
colour = 0x00ff0000;
+2 -2
View File
@@ -6975,12 +6975,12 @@ void setNumPlayers(s32 numplayers)
s32 playerGetTeam(s32 playernum)
{
return g_MpPlayers[g_Vars.playerstats[playernum].mpindex].base.team;
return g_PlayerConfigsArray[g_Vars.playerstats[playernum].mpindex].base.team;
}
void playerSetTeam(s32 playernum, s32 team)
{
g_MpPlayers[g_Vars.playerstats[playernum].mpindex].base.team = team;
g_PlayerConfigsArray[g_Vars.playerstats[playernum].mpindex].base.team = team;
}
void titleInitSkip(void)
+6 -6
View File
@@ -281,15 +281,15 @@ extern struct textureconfig *var800ab5a8;
extern struct textureconfig *var800ab5ac;
extern struct scenariodata g_ScenarioData;
extern u32 var800ac4cc;
extern struct chrdata *g_MpPlayerChrs[MAX_MPCHRS];
extern struct mpchr *var800ac500[MAX_MPCHRS];
extern s32 g_MpNumPlayers;
extern struct mpsim g_MpSimulants[MAX_SIMULANTS];
extern struct chrdata *g_MpAllChrPtrs[MAX_MPCHRS];
extern struct mpchrconfig *g_MpAllChrConfigPtrs[MAX_MPCHRS];
extern s32 g_MpNumChrs;
extern struct mpbotconfig g_BotConfigsArray[MAX_SIMULANTS];
extern u8 g_MpSimulantDifficultiesPerNumPlayers[32];
extern struct mpplayer g_MpPlayers[6];
extern struct mpplayerconfig g_PlayerConfigsArray[6];
extern u8 g_AmBotCommands[16];
extern struct mpsetup g_MpSetup;
extern struct bossfile g_BossFile;
extern struct chrdata *g_MpSimulantChrs[MAX_SIMULANTS];
extern struct chrdata *g_MpBotChrPtrs[MAX_SIMULANTS];
#endif
+40 -25
View File
@@ -264,6 +264,43 @@
#define BANK_0 0
#define BANK_1 1
#define BOTDIFF_MEAT 0
#define BOTDIFF_EASY 1
#define BOTDIFF_NORMAL 2
#define BOTDIFF_HARD 3
#define BOTDIFF_PERFECT 4
#define BOTDIFF_DARK 5
#define BOTDIFF_DISABLED 6
#define BOTDISTCFG_CLOSE 0
#define BOTDISTCFG_PISTOL 1
#define BOTDISTCFG_DEFAULT 2
#define BOTDISTCFG_SHOOTEXPLOSIVE 3
#define BOTDISTCFG_KAZE 4
#define BOTDISTCFG_FARSIGHT 5
#define BOTDISTCFG_FOLLOW 6
#define BOTDISTCFG_THROWEXPLOSIVE 7
// Bot distance modes
#define BOTDISTMODE_BACKUP 1
#define BOTDISTMODE_OK 2
#define BOTDISTMODE_ADVANCE 3
#define BOTDISTMODE_GOTO 4
#define BOTTYPE_GENERAL 0
#define BOTTYPE_PEACE 1 // Collects weapons but doesn't engage in combat
#define BOTTYPE_SHIELD 2 // Prioritises full shield before combat
#define BOTTYPE_ROCKET 3 // Prefers explosive weapons
#define BOTTYPE_KAZE 4 // Does not keep distance
#define BOTTYPE_FIST 5 // Uses fists only
#define BOTTYPE_PREY 6 // Target players who are newly spawned, have inferior weapons or are low on health
#define BOTTYPE_COWARD 7 // Runs away, only attacks if opponent's weapon is inferior
#define BOTTYPE_JUDGE 8 // Targets the winning player
#define BOTTYPE_FEUD 9 // Targets a single player for the whole match
#define BOTTYPE_SPEED 10 // Runs faster
#define BOTTYPE_TURTLE 11 // Moves slower and has double shield
#define BOTTYPE_VENGE 12 // Targets the last player who killed it
#define BRIEFINGTYPE_LOCATION 0
#define BRIEFINGTYPE_TEXT_PA 1
#define BRIEFINGTYPE_TEXT_SA 2
@@ -2457,10 +2494,10 @@
#define MPFEATURE_WEAPON_SHIELD 0x16
#define MPFEATURE_WEAPON_CLOAKINGDEVICE 0x17
#define MPFEATURE_WEAPON_COMBATBOOST 0x18
#define MPFEATURE_SIMDIFF_HARD 0x19
#define MPFEATURE_SIMDIFF_PERFECT 0x1a
#define MPFEATURE_BOTDIFF_HARD 0x19
#define MPFEATURE_BOTDIFF_PERFECT 0x1a
#define MPFEATURE_1B 0x1b
#define MPFEATURE_SIMDIFF_DARK 0x1c
#define MPFEATURE_BOTDIFF_DARK 0x1c
#define MPFEATURE_SLOWMOTION 0x1d
#define MPFEATURE_ONEHITKILLS 0x1e
#define MPFEATURE_1F 0x1f
@@ -3323,28 +3360,6 @@
#define SIGHTTARGET_4 4
#define SIGHTTARGET_5 5
#define SIMDIFF_MEAT 0
#define SIMDIFF_EASY 1
#define SIMDIFF_NORMAL 2
#define SIMDIFF_HARD 3
#define SIMDIFF_PERFECT 4
#define SIMDIFF_DARK 5
#define SIMDIFF_DISABLED 6
#define SIMTYPE_GENERAL 0
#define SIMTYPE_PEACE 1
#define SIMTYPE_SHIELD 2
#define SIMTYPE_ROCKET 3
#define SIMTYPE_KAZE 4
#define SIMTYPE_FIST 5
#define SIMTYPE_PREY 6
#define SIMTYPE_COWARD 7
#define SIMTYPE_JUDGE 8
#define SIMTYPE_FEUD 9
#define SIMTYPE_SPEED 10
#define SIMTYPE_TURTLE 11
#define SIMTYPE_VENGE 12
#define SKEL_BASIC 0x02
#define SKEL_CHRGUN 0x03
#define SKEL_JOYPAD 0x04
+2 -2
View File
@@ -501,12 +501,12 @@ extern s32 var80087260;
extern bool g_MpEnableMusicSwitching;
extern struct mpweapon g_MpWeapons[0x27];
extern struct mphead g_MpHeads[75];
extern struct mpsimulanttype g_MpSimulantTypes[];
extern struct botprofile g_BotProfiles[];
extern struct mpbody g_MpBodies[NUM_MPBODIES];
extern struct mppreset g_MpPresets[NUM_MPPRESETS];
extern u32 g_TeamColours[];
extern u16 var80087ce4[];
extern u8 g_NumMpSimulantChrs;
extern u8 g_BotCount;
extern struct aibotweaponpreference g_AibotWeaponPreferences[];
extern u32 var80087eb4;
extern struct challenge g_MpChallenges[NUM_CHALLENGES];
+55
View File
@@ -0,0 +1,55 @@
#ifndef _IN_GAME_BOT_H
#define _IN_GAME_BOT_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
bool bot0f190260(struct chrdata *chr);
void botReset(struct chrdata *chr, u8 respawning);
void botSpawn(struct chrdata *chr, u8 full);
void botSpawnAll(void);
u32 add87654321(u32 value);
u32 botPickupProp(struct prop *prop, struct chrdata *chr);
bool botTestPropForPickup(struct prop *prop, struct chrdata *chr);
void botCheckPickups(struct chrdata *chr);
s32 botGuessCrouchPos(struct chrdata *chr);
bool botApplyMovement(struct chrdata *chr);
bool bot0f191638(struct chrdata *chr, bool arg1);
s32 botTick(struct prop *prop);
f32 botCalculateMaxSpeed(struct chrdata *chr);
void bot0f1921f8(struct chrdata *chr, f32 *arg1, s32 arg2, f32 arg3);
void botLoseGun(struct chrdata *chr, struct prop *attacker);
void bot0f19277c(struct chrdata *chr, s32 propnum);
bool bot0f19294c(struct chrdata *botchr, struct chrdata *otherchr);
bool botHasGround(struct chrdata *chr);
void bot0f192a74(struct chrdata *chr);
bool botPassesPeaceCheck(struct chrdata *botchr, struct chrdata *otherchr);
bool botPassesCowardCheck(struct chrdata *botchr, struct chrdata *otherchr);
u32 bot0f192e90(void);
void bot0f19369c(struct chrdata *chr, s32 arg1);
s32 bot0f1937a4(struct chrdata *chr, s32 arg1);
s32 botGetNumOpponentsInHill(struct chrdata *chr);
void botTickUnpaused(struct chrdata *chr);
s32 botIsObjCollectable(struct defaultobj *obj);
s32 botGetWeaponNum(struct chrdata *chr);
u8 botGetTargetsWeaponNum(struct chrdata *chr);
char *botGetCommandName(s32 command);
void botApplyAttack(struct chrdata *chr, struct prop *prop);
void botApplyFollow(struct chrdata *chr, struct prop *prop);
void botApplyProtect(struct chrdata *chr, struct prop *prop);
void botApplyDefend(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3);
void botApplyHold(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3);
void botApplyScenarioCommand(struct chrdata *chr, u32 arg1);
bool botIsFollowing(struct chrdata *leader, struct chrdata *follower);
s32 bot0f193530(struct chrdata *chr, f32 range);
bool bot0f194670(struct chrdata *chr);
s32 bot0f194694(struct chrdata *chr);
s32 bot0f1946b4(struct chrdata *chr);
s32 botGetNumPlayerTeammates(struct chrdata *chr);
s32 botCountByCommand(struct chrdata *self, u32 command, bool includeself);
s32 botIsChrsTokenHeld(struct chrdata *chr);
bool bot0f19489c(struct chrdata *chr);
s32 botGetNumTeammatesDefendingHill(struct chrdata *bot);
void botCheckFetch(struct chrdata *chr);
#endif
+25
View File
@@ -0,0 +1,25 @@
#ifndef IN_GAME_BOTACT_H
#define IN_GAME_BOTACT_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
s32 botactGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum);
s32 botactGetClipCapacityByFunction(s32 weaponnum, u32 funcnum);
void botactReload(struct chrdata *chr, s32 handnum, bool withsound);
s32 botactGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, bool include_equipped);
s32 botactGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_equipped);
s32 botactTryRemoveAmmoFromReserve(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty);
void botactGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty);
void botactGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity);
bool botactShootFarsight(struct chrdata *chr, s32 arg1, struct coord *arg2, struct coord *arg3);
bool botactIsWeaponThrowable(u32 weaponnum, bool is_secondary);
u32 botactGetProjectileThrowInterval(u32 weapon);
u32 botactGetWeaponByAmmoType(u32 ammotype);
void botact0f19a37c(struct chrdata *chr);
s32 botact0f19a60c(s32 weaponnum, s32 funcnum);
bool botactFindRocketRoute(struct chrdata *chr, struct coord *frompos, struct coord *topos, s16 *fromrooms, s16 *torooms, struct projectile *projectile);
void botactGetRocketSpawnPos(u16 padnum, struct coord *pos);
void botactCreateSlayerRocket(struct chrdata *chr);
#endif
+10
View File
@@ -0,0 +1,10 @@
#ifndef IN_GAME_BOTCMD_H
#define IN_GAME_BOTCMD_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void botcmdTickDistMode(struct chrdata *chr);
void botcmdApply(struct chrdata *chr, u32 command);
#endif
+30
View File
@@ -0,0 +1,30 @@
#ifndef IN_GAME_BOTINV_H
#define IN_GAME_BOTINV_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void botinvClear(struct chrdata *chr);
struct invitem *botinvGetFreeSlot(struct chrdata *chr);
struct invitem *botinvGetItem(struct chrdata *chr, u32 weaponnum);
void botinvRemoveItem(struct chrdata *chr, s32 weaponnum);
u32 botinvGetItemType(struct chrdata *chr, u32 weaponnum);
bool botinvGiveSingleWeapon(struct chrdata *chr, u32 weaponnum);
void botinvGiveDualWeapon(struct chrdata *chr, u32 weaponnum);
s16 botinvGetWeaponPad(struct chrdata *chr, u32 weaponnum);
bool botinvGiveProp(struct chrdata *chr, struct prop *prop);
void botinvScoreAllWeapons(struct chrdata *chr, s32 *weaponnums, s32 *scores1, s32 *scores2);
bool mpHasShield(void);
s32 mpGetWeaponSlotByWeaponNum(s32 weaponnum);
void botinvScoreWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2, bool arg7, bool arg8);
void botinvScoreWeaponAgainstTarget(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2);
void botinvScoreWeaponByItself(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2);
s32 botinvGetDistConfig(s32 weaponnum, s32 funcnum);
bool botinvAllowsWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum);
void botinvTick(struct chrdata *chr);
bool botinvSwitchToWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum);
void botinvDrop(struct chrdata *chr, s32 weaponnum, u8 dropall);
void botinvDropAll(struct chrdata *chr, u32 weaponnum);
void botinvDropOne(struct chrdata *chr, u32 weaponnum);
#endif
+9
View File
@@ -0,0 +1,9 @@
#ifndef _IN_GAME_BOTINVINIT_H
#define _IN_GAME_BOTINVINIT_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void botinvInit(struct chrdata *chr, s32 maxitems);
#endif
+2 -2
View File
@@ -6,7 +6,7 @@
void func0f0147d0(void);
void lasersightsReset(void);
void mpRemoveAllSimulants(void);
void aibotAllocate(s32 chrnum, s32 aibotnum);
void botmgrRemoveAll(void);
void botmgrAllocateBot(s32 chrnum, s32 aibotnum);
#endif
-9
View File
@@ -1,9 +0,0 @@
#ifndef _IN_GAME_GAME_014E90_H
#define _IN_GAME_GAME_014E90_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void aibotAllocateInventory(struct chrdata *chr, s32 maxitems);
#endif
-55
View File
@@ -1,55 +0,0 @@
#ifndef _IN_GAME_GAME_190260_H
#define _IN_GAME_GAME_190260_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
bool func0f190260(struct chrdata *chr);
void mpChrReset(struct chrdata *chr, u8 full);
void mpInitSimulant(struct chrdata *chr, u8 full);
void mpInitSimulants(void);
u32 add87654321(u32 value);
u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr);
bool func0f190be4(struct prop *prop, struct chrdata *chr);
void func0f19124c(struct chrdata *chr);
s32 chrGuessCrouchPos(struct chrdata *chr);
bool func0f191448(struct chrdata *chr);
bool func0f191638(struct chrdata *chr, bool arg1);
s32 aibotTick(struct prop *prop);
f32 aibotCalculateMaxSpeed(struct chrdata *chr);
void func0f1921f8(struct chrdata *chr, f32 *arg1, s32 arg2, f32 arg3);
void aibotLoseGun(struct chrdata *chr, struct prop *attacker);
void func0f19277c(struct chrdata *chr, s32 propnum);
bool func0f19294c(struct chrdata *botchr, struct chrdata *otherchr);
bool chrHasGround(struct chrdata *chr);
void func0f192a74(struct chrdata *chr);
bool func0f192d64(struct chrdata *botchr, struct chrdata *otherchr);
bool func0f192dc0(struct chrdata *botchr, struct chrdata *chr);
u32 func0f192e90(void);
void func0f19369c(struct chrdata *chr, s32 arg1);
s32 func0f1937a4(struct chrdata *chr, s32 arg1);
s32 mpGetNumOpponentsInHill(struct chrdata *chr);
void func0f194b40(struct chrdata *chr);
s32 mpObjIsSafe(struct defaultobj *obj);
s32 mpchrGetWeaponNum(struct chrdata *chr);
u8 mpchrGetTargetsWeaponNum(struct chrdata *chr);
char *mpGetBotCommandName(s32 command);
void mpAibotApplyAttack(struct chrdata *chr, struct prop *prop);
void mpAibotApplyFollow(struct chrdata *chr, struct prop *prop);
void mpAibotApplyProtect(struct chrdata *chr, struct prop *prop);
void mpAibotApplyDefend(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3);
void mpAibotApplyHold(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3);
void mpAibotApplyScenarioCommand(struct chrdata *chr, u32 arg1);
bool mpIsChrFollowedByChr(struct chrdata *leader, struct chrdata *follower);
s32 func0f193530(struct chrdata *chr, f32 range);
bool func0f194670(struct chrdata *chr);
s32 func0f194694(struct chrdata *chr);
s32 func0f1946b4(struct chrdata *chr);
s32 mpGetNumPlayerTeammates(struct chrdata *chr);
s32 mpCountAibotsWithCommand(struct chrdata *self, u32 command, bool includeself);
s32 scenarioCtcIsChrsTokenHeld(struct chrdata *chr);
bool func0f19489c(struct chrdata *chr);
s32 mpGetNumTeammatesDefendingHill(struct chrdata *bot);
void func0f197544(struct chrdata *chr);
#endif
-32
View File
@@ -1,32 +0,0 @@
#ifndef IN_GAME_GAME_197600_H
#define IN_GAME_GAME_197600_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
void func0f197600(struct chrdata *chr);
void mpAibotApplyCommand(struct chrdata *chr, u32 command);
void aibotClearInventory(struct chrdata *chr);
struct invitem *aibotGetFreeInvSlot(struct chrdata *chr);
struct invitem *aibotGetInvItem(struct chrdata *chr, u32 weaponnum);
void aibotRemoveInvItem(struct chrdata *chr, s32 weaponnum);
u32 aibotGetInvItemType(struct chrdata *chr, u32 weaponnum);
bool aibotGiveSingleWeapon(struct chrdata *chr, u32 weaponnum);
void aibotGiveDualWeapon(struct chrdata *chr, u32 weaponnum);
s16 aibotGetWeaponPad(struct chrdata *chr, u32 weaponnum);
bool aibotGiveProp(struct chrdata *chr, struct prop *prop);
void func0f198068(struct chrdata *chr, s32 *weaponnums, s32 *scores1, s32 *scores2);
bool mpHasShield(void);
s32 mpGetWeaponIndexByWeaponNum(s32 weaponnum);
void aibotScoreWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2, bool arg7, bool arg8);
void func0f198db4(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2);
void func0f198df8(struct chrdata *chr, s32 weaponnum, s32 funcnum, s32 arg3, bool arg4, s32 *dst1, s32 *dst2);
s32 func0f198e38(s32 weaponnum, s32 funcnum);
bool func0f198e78(struct chrdata *chr, s32 weaponnum, s32 funcnum);
void aibotTickInventory(struct chrdata *chr);
bool aibotSwitchToWeapon(struct chrdata *chr, s32 weaponnum, s32 funcnum);
void func0f19978c(struct chrdata *chr, s32 weaponnum, u8 arg2);
void func0f199964(struct chrdata *chr, u32 weaponnum);
void func0f199984(struct chrdata *chr, u32 weaponnum);
#endif
-25
View File
@@ -1,25 +0,0 @@
#ifndef IN_GAME_GAME_1999B0_H
#define IN_GAME_GAME_1999B0_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
s32 weaponGetAmmoTypeByFunction(s32 weaponnum, u32 funcnum);
s32 weaponGetClipCapacityByFunction(s32 weaponnum, u32 funcnum);
void aibotReloadWeapon(struct chrdata *chr, s32 handnum, bool withsound);
s32 aibotGetAmmoQuantityByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, bool include_equipped);
s32 aibotGetAmmoQuantityByType(struct aibot *aibot, s32 ammotype, bool include_equipped);
s32 aibotTryRemoveAmmoFromReserve(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty);
void aibotGiveAmmoByWeapon(struct aibot *aibot, s32 weaponnum, s32 funcnum, s32 qty);
void aibotGiveAmmoByType(struct aibot *aibot, u32 ammotype, s32 quantity);
bool aibotShootFarsightThroughWalls(struct chrdata *chr, s32 arg1, struct coord *arg2, struct coord *arg3);
bool func0f19a29c(u32 weaponnum, bool is_secondary);
u32 aibotGetProjectileThrowInterval(u32 weapon);
u32 ammotypeGetWeapon(u32 ammotype);
void func0f19a37c(struct chrdata *chr);
s32 func0f19a60c(s32 weaponnum, s32 funcnum);
bool func0f19a6d0(struct chrdata *chr, struct coord *frompos, struct coord *topos, s16 *fromrooms, s16 *torooms, struct projectile *projectile);
void func0f19a7d0(u16 padnum, struct coord *pos);
void aibotCreateSlayerRocket(struct chrdata *chr);
#endif
+3 -3
View File
@@ -5,7 +5,7 @@
#include "types.h"
f32 mpHandicapToDamageScale(u8 value);
void func0f187838(struct mpchr *mpchr);
void func0f187838(struct mpchrconfig *mpchr);
void mpStartMatch(void);
void mpInit(void);
void mpCalculateTeamIsOnlyAi(void);
@@ -43,7 +43,7 @@ u32 func0f189cc0(void);
u32 func0f189dc8(void);
u32 func0f189ed0(void);
u32 func0f18a030(void);
void mpCalculatePlayerTitle(struct mpplayer *mpplayer);
void mpCalculatePlayerTitle(struct mpplayerconfig *mpplayer);
void func0f18a56c(void);
void mpEndMatch(void);
s32 mpGetNumHeads2(void);
@@ -80,7 +80,7 @@ void mpRandomiseMultiTracks(void);
void mpSetTrackToRandom(void);
s32 mpGetCurrentTrackSlotNum(void);
u32 mpChooseRandomTrack(void);
struct mpchr *func0f18c794(s32 index);
struct mpchrconfig *func0f18c794(s32 index);
u32 func0f18c828(void);
s32 mpGetNumChrs(void);
u32 func0f18c8b8(void);
+5 -5
View File
@@ -12,7 +12,7 @@ s32 scenarioHtbCallback08(void);
void scenarioHtbReset(void);
void scenarioHtbTick(void);
void scenarioHtbCallback14(struct chrdata *chr);
void scenarioHtbKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
void scenarioHtbKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
Gfx *scenarioHtbRadar(Gfx *gdl);
bool scenarioHtbRadar2(Gfx **gdl, struct prop *prop);
bool scenarioHtbHighlight(struct prop *prop, u32 *colour);
@@ -20,7 +20,7 @@ void scenarioCtcInit(void);
s32 scenarioCtcCallback08(void);
void scenarioCtcTick(void);
void scenarioCtcCallback14(struct chrdata *chr);
void scenarioCtcKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
void scenarioCtcKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
Gfx *scenarioCtcRadar(Gfx *gdl);
bool scenarioCtcRadar2(Gfx **gdl, struct prop *prop);
bool scenarioCtcChooseSpawnLocation(f32 arg0, struct coord *pos, s16 *rooms, struct prop *prop, f32 *arg4);
@@ -31,18 +31,18 @@ void scenarioKohReadSave(struct savebuffer *buffer);
void scenarioKohWriteSave(struct savebuffer *buffer);
void scenarioKohInit(void);
void scenarioKohReset(void);
void scenarioKohKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
void scenarioKohKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
Gfx *scenarioKohRadar(Gfx *gdl);
bool scenarioKohIsRoomHighlighted(s16 arg0);
void scenarioHtmInit(void);
s32 scenarioHtmCallback08(void);
void scenarioHtmTick(void);
void scenarioHtmKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
void scenarioHtmKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
bool scenarioHtmRadar2(Gfx **gdl, struct prop *prop);
bool scenarioHtmHighlight(struct prop *prop, u32 *colour);
void scenarioPacInit(void);
void scenarioPacReset(void);
void scenarioPacKill(struct mpchr *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
void scenarioPacKill(struct mpchrconfig *mpchr, s32 mpchrnum, s32 *score, s32 *arg3);
Gfx *scenarioPacRadar(Gfx *gdl);
s32 menuhandlerMpOpenOptions(s32 operation, struct menuitem *item, union handlerdata *data);
void scenarioReadSave(struct savebuffer *buffer);
+18 -18
View File
@@ -832,7 +832,7 @@ struct waypoint {
struct aibot {
/*0x000*/ u8 unk000;
/*0x002*/ s16 aibotnum;
/*0x004*/ struct mpsim *simulant;
/*0x004*/ struct mpbotconfig *config;
/*0x008*/ s16 attackingplayernum;
/*0x00a*/ s16 followingplayernum;
/*0x00c*/ s16 dangerouspropnum; // index into g_DangerousProps
@@ -886,7 +886,7 @@ struct aibot {
/*0x068*/ struct attackanimconfig *unk068;
/*0x06c*/ f32 unk06c;
/*0x070*/ f32 unk070;
/*0x074*/ s8 unk074;
/*0x074*/ s8 distmode;
/*0x075*/ s8 unk075;
/*0x076*/ s16 lastkilledbyplayernum;
/*0x078*/ u8 unk078;
@@ -918,7 +918,7 @@ struct aibot {
/*0x0c0*/ s32 attackpropnum;
/*0x0c4*/ u32 unk0c4[2];
/*0x0cc*/ u32 unk0cc; // Timer? Related to weapon switching
/*0x0d0*/ s32 unk0d0;
/*0x0d0*/ s32 distmodettl60;
/*0x0d4*/ s32 followprotectpropnum;
/*0x0d8*/ s32 unk0d8;
/*0x0dc*/ u32 unk0dc;
@@ -3258,7 +3258,7 @@ struct mphead {
u8 requirefeature;
};
struct mpsimulanttype {
struct botprofile {
/*0x00*/ u8 type;
/*0x01*/ u8 difficulty;
/*0x02*/ u16 name;
@@ -4565,7 +4565,7 @@ struct gamefile {
/*0xb5*/ u8 weaponsfound[6];
};
struct mpchr {
struct mpchrconfig {
/*0x00*/ char name[12]; // up to 10 visible chars plus line break plus null byte
/*0x0c*/ u8 unk0c;
/*0x0d*/ u8 unk0d;
@@ -4583,15 +4583,13 @@ struct mpchr {
/*0x3c*/ s16 numdeaths;
/*0x3e*/ s16 unk3e;
/*0x40*/ s16 unk40;
/*0x42*/ u16 unk42;
};
struct mpplayerconfig {
/*0x00*/ struct mpchrconfig base;
/*0x44*/ u8 controlmode;
/*0x45*/ s8 contpad1;
/*0x46*/ s8 contpad2;
/*0x47*/ u8 simtype;
};
struct mpplayer {
/*0x00*/ struct mpchr base;
/*0x48*/ u16 options;
/*0x4c*/ struct fileguid fileguid;
/*0x54*/ u32 kills;
@@ -4618,8 +4616,10 @@ struct mpplayer {
/*0x9d*/ u8 handicap;
};
struct mpsim {
/*0x00*/ struct mpchr base;
struct mpbotconfig {
/*0x00*/ struct mpchrconfig base;
/*0x44*/ u8 unk44[3];
/*0x47*/ u8 type;
/*0x48*/ u8 difficulty;
};
@@ -4688,7 +4688,7 @@ struct mpscenario {
void (*tickfunc)(void);
void (*unk14)(struct chrdata *chr);
void *unk18;
void (*killfunc)(struct mpchr *mpchr, s32 arg1, s32 *score, s32 *arg3);
void (*killfunc)(struct mpchrconfig *mpchr, s32 arg1, s32 *score, s32 *arg3);
Gfx *(*radarfunc)(Gfx *gdl);
bool (*radar2func)(Gfx **gdl, struct prop *prop);
bool (*highlightfunc)(struct prop *prop, u32 *colour);
@@ -4762,7 +4762,7 @@ struct scenariodata_cbt {
u32 unk04;
u32 unk08;
u16 unk0c;
s16 unk0e[1]; // possibly for a different scenario - see mpGetNumTeammatesDefendingHill
s16 unk0e[1]; // possibly for a different scenario - see botGetNumTeammatesDefendingHill
};
struct scenariodata_htb {
@@ -5232,7 +5232,7 @@ struct chrbio {
};
struct mpteaminfo {
struct mpchr *mpchr;
struct mpchrconfig *mpchr;
u32 teamnum;
u32 positionindex;
u8 unk0c;
@@ -6945,8 +6945,8 @@ struct aibotweaponpreference {
u8 unk03;
u16 unk04_00 : 1;
u16 unk04_01 : 1;
u16 unk04_02 : 4;
u16 unk04_06 : 4;
u16 pridistconfig : 4;
u16 secdistconfig : 4;
u16 unk06;
u16 unk08;
u16 unk0a;
+1 -1
View File
@@ -63,7 +63,7 @@ void gvarsInit(void)
g_Vars.unk00049c = 0;
g_Vars.unk0004a0 = 1;
g_Vars.mpquickteamnumsims = 1;
g_Vars.mpsimdifficulty = SIMDIFF_NORMAL;
g_Vars.mpsimdifficulty = BOTDIFF_NORMAL;
g_Vars.mpplayerteams[0] = 0;
g_Vars.mpplayerteams[1] = 1;
g_Vars.mpplayerteams[2] = 2;
+1 -1
View File
@@ -1344,7 +1344,7 @@ void joyGetContpadNumsForPlayer(s8 playernum, s32 *pad1, s32 *pad2)
*pad1 = playernum;
if (g_MpPlayers[g_Vars.playerstats[playernum].mpindex].base.controlmode >= CONTROLMODE_21) {
if (g_PlayerConfigsArray[g_Vars.playerstats[playernum].mpindex].controlmode >= CONTROLMODE_21) {
*pad2 = PLAYERCOUNT() + playernum;
return;
}
+356 -356
View File
@@ -22,14 +22,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_PISTOLS
@@ -50,14 +50,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_FARSIGHT
@@ -78,14 +78,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_DRUGGUN
@@ -106,14 +106,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_SLAYER
@@ -134,14 +134,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CLOAKING
@@ -162,14 +162,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_CLOAKINGDEVICE,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_SLOWMO
@@ -190,14 +190,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_NOSHIELD
@@ -218,14 +218,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_BRIEFCASE
@@ -246,14 +246,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_SKEDARKING
@@ -278,14 +278,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_FLAGS
@@ -306,14 +306,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_SIMULANTS
@@ -334,14 +334,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_AUTOMATICS
@@ -362,14 +362,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_ROCKETS
@@ -390,14 +390,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE01
@@ -418,14 +418,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_DD_SECGUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_DD_SECGUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE02
@@ -446,14 +446,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE03
@@ -474,14 +474,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_CILABTECH, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CILABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CILABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CILABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_CILABTECH, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CILABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CILABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CILABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE04
@@ -502,14 +502,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE05
@@ -530,14 +530,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE06
@@ -558,14 +558,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_OFFICEWORKER, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_OFFICEWORKER2, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_OFFICEWORKER, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_OFFICEWORKER2, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_OFFICEWORKER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_OFFICEWORKER2, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_OFFICEWORKER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_OFFICEWORKER2, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_OFFICEWORKER, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_OFFICEWORKER2, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_OFFICEWORKER, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_OFFICEWORKER2, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_OFFICEWORKER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_OFFICEWORKER2, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_OFFICEWORKER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_OFFICEWORKER2, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE07
@@ -586,14 +586,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE08
@@ -614,14 +614,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE09
@@ -642,14 +642,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_NSA_LACKEY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_NSA_LACKEY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE10
@@ -670,14 +670,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_G5_GUARD, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_G5_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_G5_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_G5_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_G5_GUARD, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_G5_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_G5_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_G5_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_G5_SWAT_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE11
@@ -698,14 +698,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_MEAT, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_MEAT, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE12
@@ -726,14 +726,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_TRENCH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE13
@@ -754,14 +754,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE14
@@ -782,14 +782,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_A51TROOPER, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_A51AIRMAN, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_A51TROOPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_A51AIRMAN, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_A51TROOPER, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_A51AIRMAN, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_A51TROOPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_A51AIRMAN, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE15
@@ -810,14 +810,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_LABTECH, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_DD_LABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_LABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_DD_LABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_LABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_LABTECH, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_DD_LABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_LABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_DD_LABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_LABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEMLABTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE16
@@ -838,14 +838,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BIOTECH, MPBODY_BIOTECH, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE17
@@ -866,14 +866,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_CARRINGTON, MPBODY_CARRINGTON, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CARRINGTON, MPBODY_CARRINGTON, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_CHRIST, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE18
@@ -894,14 +894,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_CLOAKINGDEVICE,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_THEKING, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_MEAT, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_MEAT } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_THEKING, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_MEAT, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_MEAT } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ELVIS, MPBODY_ELVIS1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE19
@@ -922,14 +922,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_COMBATBOOST,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_PERFECT, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_PERFECT, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSNIPER, MPBODY_DDSNIPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE20
@@ -950,20 +950,20 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_GRANT, MPBODY_PILOTAF1, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_PILOTAF1, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_STEWARD, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_GRANT, MPBODY_PILOTAF1, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_PILOTAF1, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_STEWARD, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
#if VERSION >= VERSION_NTSC_1_0
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STEWARD, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STEWARD, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STEWARD, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STEWARD, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
#else
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STEWARD, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STEWARD, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_EASY, SIMDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STEWARD, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STEWARD, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_STEWARDESS, MPTEAM_0, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_EASY, BOTDIFF_EASY } },
#endif
},
},
@@ -985,14 +985,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARKSNOW, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_PENNY, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_ALASKAN_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARKSNOW, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_PENNY, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_ALASKAN_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE22
@@ -1013,14 +1013,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_PRESIDENT, MPBODY_PRESIDENT, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_PRES_SECURITY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_PRESIDENT, MPBODY_PRESIDENT, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DAVEC, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_PRES_SECURITY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE23
@@ -1041,14 +1041,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_COMBATBOOST,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_PRESIDENT, MPBODY_PRESIDENT_CLONE2, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_HARD, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_STRIPES, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_PRESIDENT, MPBODY_PRESIDENT_CLONE2, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_KEITH, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_HARD, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_STRIPES, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE24
@@ -1069,14 +1069,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_HARD, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_A51TROOPER, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_A51AIRMAN, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_EASY, SIMDIFF_NORMAL } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_A51TROOPER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_A51AIRMAN, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_PERFECT, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_AREA51GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_STEVEM, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_HARD, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_A51TROOPER, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_A51AIRMAN, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_EASY, BOTDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_A51TROOPER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_A51AIRMAN, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_PERFECT, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_AREA51GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE25
@@ -1097,14 +1097,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_HARD, SIMDIFF_HARD, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_NORMAL, SIMDIFF_HARD } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_EASY } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_HARD, BOTDIFF_HARD, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_NORMAL, BOTDIFF_HARD } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_EASY } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DDSHOCK, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DDSHOCK, MPBODY_DD_SHOCK_INF, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE26
@@ -1125,14 +1125,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_JON, MPBODY_CILABTECH, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_HARD, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_EASY, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_CISOLDIER, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JON, MPBODY_CILABTECH, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_CIFEMTECH, MPTEAM_1, { BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_HARD, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_EASY, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_CISOLDIER, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE27
@@ -1153,14 +1153,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_PERFECT, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_PERFECT, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_PERFECT } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CIAGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_FBIGUY, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_BEAU1, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_PERFECT, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_PERFECT, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_PERFECT } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_CIAGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_FBIGUY, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE28
@@ -1181,14 +1181,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_DARLING, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_ROSS, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_PELAGIC_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARLING, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_BRIAN, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_ROSS, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DUNCAN2, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_JAMIE, MPBODY_PELAGIC_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE29
@@ -1209,14 +1209,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_MARK2, MPBODY_OFFICEWORKER, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_RUSS, MPBODY_OFFICEWORKER2, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_MARK2, MPBODY_OFFICEWORKER, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_RUSS, MPBODY_OFFICEWORKER2, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_VD, MPBODY_FEM_GUARD, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
},
},
// MPCONFIG_CHALLENGE30
@@ -1237,14 +1237,14 @@ struct mpconfig g_MpConfigs[] = {
MPWEAPON_DISABLED,
},
}, {
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DARK } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED, SIMDIFF_DISABLED } },
{ SIMTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL, SIMDIFF_NORMAL } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_CASSANDRA, MPBODY_CASSANDRA, MPTEAM_1, { BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_TRENT, MPBODY_TRENT, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_MRBLONDE, MPBODY_MRBLONDE, MPTEAM_1, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DARK } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED, BOTDIFF_DISABLED } },
{ BOTTYPE_GENERAL, MPHEAD_DARK_COMBAT, MPBODY_DARK_COMBAT, MPTEAM_0, { BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL, BOTDIFF_NORMAL } },
},
},
};
+2 -2
View File
@@ -157,8 +157,8 @@ void piracy_patch(void)
// algorithm, patch function, sum function
patch(algo01, "__scHandleTasks", "bootPhase1");
patch(algo02, "cheatMenuHandleDialog", "__scHandleTasks");
patch(algo03, "propobjHandlePickupByAibot", "doorFinishClose");
patch(algo04, "chrUncloak", "propobjHandlePickupByAibot");
patch(algo03, "botPickupProp", "doorFinishClose");
patch(algo04, "chrUncloak", "botPickupProp");
patch(algo05, "chrsCheckForNoise", "__scHandleRetrace");
patch(algo06, "lvInit", "lvGetSlowMotionType");
patch(algo07, "propAllocateEyespy", "lvInit");