Rename chr->unk2d4 to chr->aibot

This commit is contained in:
Ryan Dwyer
2020-03-12 17:41:25 +10:00
parent 4bedb8b8ad
commit 51e037ca80
8 changed files with 183 additions and 183 deletions
+31 -31
View File
@@ -828,7 +828,7 @@ void func0f02e9a0(struct chrdata *chr, f32 arg1)
chr->sleep = fsleep;
if (func0001db94(chr->animdata) && !chr->unk2d4) {
if (func0001db94(chr->animdata) && !chr->aibot) {
chr->hidden |= CHRHFLAG_00200000;
} else {
func0f02e6dc(chr, arg1);
@@ -857,7 +857,7 @@ void chrStand(struct chrdata *chr)
chr->sleep = 0;
chr->act_stand.face_target = false;
if (chr->unk2d4 == NULL) {
if (chr->aibot == NULL) {
if (animGetId(chr->animdata) == ANIM_KNEEL_SHOOT_RIGHT_HAND) {
result = func0f02e15c(chr, 0.5, 0.8);
func0001dccc(chr->animdata, ANIM_KNEEL_SHOOT_RIGHT_HAND,
@@ -3360,7 +3360,7 @@ void func0f03119c(struct chrdata *chr)
}
chr->actiontype = ACT_DEAD;
chr->act_dead.unk038 = chr->unk2d4 ? 0 : -1;
chr->act_dead.unk038 = chr->aibot ? 0 : -1;
chr->act_dead.unk02c = 0;
chr->act_dead.unk030 = 0;
chr->act_dead.unk034 = 0;
@@ -9145,13 +9145,13 @@ void func0f036358(struct chrdata *chr, s32 arg1)
chr->aioffset = 0;
func0f0b09f4(arg1, mpPlayerGetIndex(chr));
func0f199964(chr, chr->unk2d4->unk020);
func0f199964(chr, chr->aibot->unk020);
chr->unk2d4->unk09c_00 = 0;
chr->unk2d4->unk09c_01 = 0;
chr->unk2d4->unk04c_04 = 0;
chr->unk2d4->unk04c_03 = 0;
chr->unk2d4->unk04c_05 = 0;
chr->aibot->unk09c_00 = 0;
chr->aibot->unk09c_01 = 0;
chr->aibot->unk04c_04 = 0;
chr->aibot->unk04c_03 = 0;
chr->aibot->unk04c_05 = 0;
}
}
@@ -11863,7 +11863,7 @@ glabel chrGoToPos
// func0f036ee4(chr, &chr->act_gopos.unk068, &auStack52[0], &prevpos);
// }
//
// if (chr->act_gopos.unk068 != MAX_CHRWAYPOINTS && func0001db94(chr->animdata) != 0 && !chr->unk2d4) {
// if (chr->act_gopos.unk068 != MAX_CHRWAYPOINTS && func0001db94(chr->animdata) != 0 && !chr->aibot) {
// chr->hidden |= CHRHFLAG_00200000;
// return true;
// } else {
@@ -16254,7 +16254,7 @@ void func0f03cd04(struct chrdata *chr)
void chrTickDead(struct chrdata *chr)
{
struct chr2d4 *chr2d4 = chr->unk2d4;
struct aibot *aibot = chr->aibot;
if (chr->act_dead.unk038 >= 0) {
chr->act_dead.unk038 += g_Vars.lvupdate240_60;
@@ -16262,7 +16262,7 @@ void chrTickDead(struct chrdata *chr)
if (chr->act_dead.unk038 >= 90) {
chr->fadealpha = 0;
if (chr2d4) {
if (aibot) {
mpInitSimulant(chr, true);
} else {
chr->hidden |= CHRHFLAG_00000020;
@@ -16283,7 +16283,7 @@ void chrTickDead(struct chrdata *chr)
}
if (chr->act_dead.unk030 && chr->act_dead.unk034 >= 120) {
if (chr2d4 == 0) {
if (aibot == 0) {
chr->hidden |= CHRHFLAG_00000020;
}
@@ -16293,7 +16293,7 @@ void chrTickDead(struct chrdata *chr)
}
}
if (chr2d4 == NULL) {
if (aibot == NULL) {
chr->ailist = NULL;
}
}
@@ -16799,7 +16799,7 @@ void chrTickDruggedDrop(struct chrdata *chr)
if (animGetFrame(animdata) >= func0001d1a0(animdata)) {
chr->actiontype = ACT_DRUGGEDKO;
chr->act_druggedko.unk038 = chr->unk2d4 ? 0 : -1;
chr->act_druggedko.unk038 = chr->aibot ? 0 : -1;
chr->act_druggedko.unk02c = 0;
chr->act_druggedko.unk030 = 0;
chr->act_druggedko.unk034 = 0;
@@ -17176,8 +17176,8 @@ glabel var7f1a8f24
void func0f03e538(struct chrdata *chr, f32 arg1)
{
if (chr->unk2d4) {
chr->unk2d4->unk0b0 = arg1;
if (chr->aibot) {
chr->aibot->unk0b0 = arg1;
} else {
func0001ae90(chr->animdata, arg1);
}
@@ -17185,8 +17185,8 @@ void func0f03e538(struct chrdata *chr, f32 arg1)
f32 func0f03e578(struct chrdata *chr)
{
if (chr->unk2d4) {
return chr->unk2d4->unk0a4;
if (chr->aibot) {
return chr->aibot->unk0a4;
}
return func0001ae44(chr->animdata);
@@ -17194,8 +17194,8 @@ f32 func0f03e578(struct chrdata *chr)
void func0f03e5b0(struct chrdata *chr, f32 arg1)
{
if (chr->unk2d4) {
chr->unk2d4->unk0a4 = arg1;
if (chr->aibot) {
chr->aibot->unk0a4 = arg1;
} else {
func0001ae90(chr->animdata, arg1);
}
@@ -18600,7 +18600,7 @@ void chrStopFiring(struct chrdata *chr)
{
u8 race = CHRRACE(chr);
if (race != RACE_DRCAROLL && race != RACE_EYESPY && chr->unk2d4 == NULL) {
if (race != RACE_DRCAROLL && race != RACE_EYESPY && chr->aibot == NULL) {
chrSetFiring(chr, 0, false);
chrSetFiring(chr, 1, false);
chrResetAimEndProperties(chr);
@@ -23428,9 +23428,9 @@ bool chrDetectDangerousObject(struct chrdata *chr, u8 flags)
chr->runfrompos.y = g_DangerousProps[i]->pos.y;
chr->runfrompos.z = g_DangerousProps[i]->pos.z;
if (chr->unk2d4) {
chr->unk2d4->unk064 |= 0x0004;
chr->unk2d4->unk00c = i;
if (chr->aibot) {
chr->aibot->unk064 |= 0x0004;
chr->aibot->unk00c = i;
}
return true;
@@ -23438,9 +23438,9 @@ bool chrDetectDangerousObject(struct chrdata *chr, u8 flags)
}
}
if (chr->unk2d4) {
chr->unk2d4->unk064 &= ~0x0004;
chr->unk2d4->unk00c = -1;
if (chr->aibot) {
chr->aibot->unk064 &= ~0x0004;
chr->aibot->unk00c = -1;
}
return false;
@@ -27436,8 +27436,8 @@ void chrTick(struct chrdata *chr)
chr->soundtimer += g_Vars.lvupdate240_60;
chr->talktimer += g_Vars.lvupdate240_60;
if (chr->unk2d4) {
chr->unk2d4->unk030 += g_Vars.lvupdate240_60;
if (chr->aibot) {
chr->aibot->unk030 += g_Vars.lvupdate240_60;
}
if (chr->hidden & CHRHFLAG_TIMER_RUNNING) {
@@ -27449,7 +27449,7 @@ void chrTick(struct chrdata *chr)
if (chr->sleep < 0
|| (chr->chrflags & CHRCFLAG_00040000)
|| chr->alertness >= 65
|| (chr->unk2d4 && (chr->actiontype == ACT_DIE || chr->actiontype == ACT_DEAD))) {
|| (chr->aibot && (chr->actiontype == ACT_DIE || chr->actiontype == ACT_DEAD))) {
u8 pass = race == RACE_HUMAN || race == RACE_SKEDAR;
chr->sleep = 0;
+1 -1
View File
@@ -2724,7 +2724,7 @@ void chrInit(struct prop *prop, u8 *ailist)
chr->runfrompos.y = 0;
chr->runfrompos.z = 0;
chr->oldrooms[0] = -1;
chr->unk2d4 = NULL;
chr->aibot = NULL;
chr->blurdrugamount = 0;
chr->drugheadsway = 0;
chr->drugheadcount = 0;
+7 -7
View File
@@ -825,7 +825,7 @@ void scenarioHtbCallback10(void)
// Check if a simulant is holding it
if (g_ScenarioData.htb.token == NULL) {
for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) {
if (g_MpPlayerChrs[i]->prop && g_MpPlayerChrs[i]->unk2d4->unk09c_00) {
if (g_MpPlayerChrs[i]->prop && g_MpPlayerChrs[i]->aibot->unk09c_00) {
g_ScenarioData.htb.token = g_MpPlayerChrs[i]->prop;
break;
}
@@ -851,16 +851,16 @@ void scenarioHtbCallback10(void)
void scenarioHtbCallback14(struct chrdata *chr)
{
if (chr) {
if (chr->unk2d4->unk09c_00) {
chr->unk2d4->unk0a0 += g_Vars.lvupdate240;
if (chr->aibot->unk09c_00) {
chr->aibot->unk0a0 += g_Vars.lvupdate240;
if (chr->unk2d4->unk0a0 >= SECSTOFRAMES240(30)) {
if (chr->aibot->unk0a0 >= SECSTOFRAMES240(30)) {
func00010904(var80095200, 0x5b8, 0, -1, -1, -1, -1, -1);
var800ac500[mpPlayerGetIndex(chr)]->unk3e++;
chr->unk2d4->unk0a0 = 0;
chr->aibot->unk0a0 = 0;
}
} else {
chr->unk2d4->unk0a0 = 0;
chr->aibot->unk0a0 = 0;
}
} else {
if (currentPlayerHasBriefcase()) {
@@ -3305,7 +3305,7 @@ void scenarioHtmCallback10(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]->unk2d4->unk04c_05) {
if (g_MpPlayerChrs[i]->aibot->unk04c_05) {
g_ScenarioData.htm.uplink = g_MpPlayerChrs[i]->prop;
break;
}
+132 -132
View File
@@ -39,7 +39,7 @@
bool func0f190260(struct chrdata *chr)
{
return chr->blurdrugamount >= var80087d14[chr->unk2d4->simulant->unk48].blurdrugamount;
return chr->blurdrugamount >= var80087d14[chr->aibot->simulant->unk48].blurdrugamount;
}
GLOBAL_ASM(
@@ -277,8 +277,8 @@ glabel mpChrReset
// s32 i;
// u32 rand;
//
// if (chr->unk2d4) {
// struct chr2d4 *chr2d4 = chr->unk2d4;
// if (chr->aibot) {
// struct aibot *aibot = chr->aibot;
//
// chr->fadealpha = -1;
// chr->chrflags &= ~CHRCFLAG_JUST_INJURED;
@@ -311,104 +311,104 @@ glabel mpChrReset
// chr->chrheight = 185;
//
// for (i = 0; i < 33; i++) {
// chr2d4->unk01c->unk00[i] = 0;
// aibot->unk01c->unk00[i] = 0;
// }
//
// func0f197c00(chr);
//
// chr2d4->unk04c_02 = 0;
// chr2d4->unk04c_01 = 1;
// chr2d4->unk09c_00 = 0;
// chr2d4->unk04c_06 = 0;
// chr2d4->unk04c_04 = 0;
// chr2d4->unk04c_03 = 0;
// chr2d4->unk09c_01 = 0;
// chr2d4->unk04c_05 = 0;
// chr2d4->unk020 = 1;
// chr2d4->unk024 = 0;
// chr2d4->unk028 = 0;
// chr2d4->prop = NULL;
// chr2d4->unk02c = 0;
// chr2d4->unk02e = 0;
// chr2d4->unk05c = 0;
// chr2d4->unk060 = 0;
// chr2d4->unk074 = -1;
// chr2d4->unk030 = 301;
// chr2d4->unk034 = 0;
// chr2d4->unk04d = 0;
// chr2d4->unk04e = 0;
// chr2d4->unk044 = 0;
// chr2d4->unk0a0 = 0;
// chr2d4->unk09c_02 = 0;
// chr2d4->unk064 = 0;
// chr2d4->unk04c_00 = 0;
// chr2d4->unk048 = -1;
// chr2d4->unk04a = -1;
// chr2d4->unk0bc = -1;
// chr2d4->unk0c8 = 0;
// chr2d4->unk0c4 = 0;
// chr2d4->unk0cc = 0;
// chr2d4->unk0d0 = 0;
// chr2d4->unk0d8 = 0;
// chr2d4->unk0dc = 0;
// chr2d4->unk03e = -1;
// chr2d4->unk03c = 0;
// chr2d4->unk0e2 = 0;
// chr2d4->unk0e0 = 0;
// chr2d4->unk118 = 0;
// chr2d4->unk11c = 0;
// chr2d4->unk120 = -1;
// chr2d4->unk124 = -1;
// chr2d4->unk128 = 0;
// chr2d4->unk12c = 0;
// chr2d4->unk040 = 0;
// chr2d4->unk06c = 0;
// chr2d4->unk070 = 0;
// chr2d4->unk0e8 = 0;
// chr2d4->unk0e4 = 0;
// chr2d4->unk108 = 0;
// chr2d4->unk10c = 0;
// chr2d4->unk110 = 0;
// aibot->unk04c_02 = 0;
// aibot->unk04c_01 = 1;
// aibot->unk09c_00 = 0;
// aibot->unk04c_06 = 0;
// aibot->unk04c_04 = 0;
// aibot->unk04c_03 = 0;
// aibot->unk09c_01 = 0;
// aibot->unk04c_05 = 0;
// aibot->unk020 = 1;
// aibot->unk024 = 0;
// aibot->unk028 = 0;
// aibot->prop = NULL;
// aibot->unk02c = 0;
// aibot->unk02e = 0;
// aibot->unk05c = 0;
// aibot->unk060 = 0;
// aibot->unk074 = -1;
// aibot->unk030 = 301;
// aibot->unk034 = 0;
// aibot->unk04d = 0;
// aibot->unk04e = 0;
// aibot->unk044 = 0;
// aibot->unk0a0 = 0;
// aibot->unk09c_02 = 0;
// aibot->unk064 = 0;
// aibot->unk04c_00 = 0;
// aibot->unk048 = -1;
// aibot->unk04a = -1;
// aibot->unk0bc = -1;
// aibot->unk0c8 = 0;
// aibot->unk0c4 = 0;
// aibot->unk0cc = 0;
// aibot->unk0d0 = 0;
// aibot->unk0d8 = 0;
// aibot->unk0dc = 0;
// aibot->unk03e = -1;
// aibot->unk03c = 0;
// aibot->unk0e2 = 0;
// aibot->unk0e0 = 0;
// aibot->unk118 = 0;
// aibot->unk11c = 0;
// aibot->unk120 = -1;
// aibot->unk124 = -1;
// aibot->unk128 = 0;
// aibot->unk12c = 0;
// aibot->unk040 = 0;
// aibot->unk06c = 0;
// aibot->unk070 = 0;
// aibot->unk0e8 = 0;
// aibot->unk0e4 = 0;
// aibot->unk108 = 0;
// aibot->unk10c = 0;
// aibot->unk110 = 0;
//
// for (i = 0; i != 12; i++) {
// chr2d4->unk130[i] = -1;
// chr2d4->unk13c[i] = 4294967296;
// chr2d4->unk16c[i] = 0;
// chr2d4->unk178[i] = -1;
// chr2d4->unk1a8[i] = -1;
// aibot->unk130[i] = -1;
// aibot->unk13c[i] = 4294967296;
// aibot->unk16c[i] = 0;
// aibot->unk178[i] = -1;
// aibot->unk1a8[i] = -1;
// }
//
// chr2d4->unk1e8 = 0;
// chr2d4->unk208 = 0;
// chr2d4->unk210 = random();
// chr2d4->unk20c = 0;
// chr2d4->unk2c8 = 0;
// chr2d4->unk09c_03 = 0;
// chr2d4->unk2cc = 0;
// chr2d4->unk2c4 = 0;
// aibot->unk1e8 = 0;
// aibot->unk208 = 0;
// aibot->unk210 = random();
// aibot->unk20c = 0;
// aibot->unk2c8 = 0;
// aibot->unk09c_03 = 0;
// aibot->unk2cc = 0;
// aibot->unk2c4 = 0;
//
// chr2d4->unk2d0 = random();
// chr2d4->unk2d4 = random();
// chr2d4->unk078 = 0;
// chr2d4->unk09c_07 = 0;
// chr2d4->unk050 = 0;
// chr2d4->unk09d = 0;
// aibot->unk2d0 = random();
// aibot->aibot = random();
// aibot->unk078 = 0;
// aibot->unk09c_07 = 0;
// aibot->unk050 = 0;
// aibot->unk09d = 0;
// }
//
// if (chr2d4->simulant->type == SIMTYPE_TURTLE || chr2d4->simulant->type == SIMTYPE_SHIELD) {
// if (aibot->simulant->type == SIMTYPE_TURTLE || aibot->simulant->type == SIMTYPE_SHIELD) {
// chr->cshield = 8;
// }
//
// if (chr2d4->simulant->unk48 == 5) {
// chr2d4->unk064 &= ~1;
// if (aibot->simulant->unk48 == 5) {
// aibot->unk064 &= ~1;
//
// if (func0f198278()) {
// chr->cshield = 8;
// }
// }
//
// chr2d4->unk059 = 1;
// chr2d4->unk058 = 120;
// aibot->unk059 = 1;
// aibot->unk058 = 120;
// }
//}
@@ -417,7 +417,7 @@ void mpInitSimulant(struct chrdata *chr, u8 full)
f32 thing;
struct prop *prop;
struct defaultobj *obj;
struct chr2d4 *chr2d4 = chr->unk2d4;
struct aibot *aibot = chr->aibot;
struct coord pos;
s16 rooms[8];
@@ -435,18 +435,18 @@ void mpInitSimulant(struct chrdata *chr, u8 full)
}
}
if (chr2d4) {
if (aibot) {
mpChrReset(chr, full);
chrInitSplats(chr);
thing = scenarioCallback2c(chr->chrwidth, &pos, rooms, chr->prop);
chr->hidden |= CHRHFLAG_00100000;
chrMoveToPos(chr, &pos, rooms, thing, true);
chr->unk2d4->unk0a4 = func0001ae44(chr->animdata);
chr->unk2d4->unk0a8 = 0;
chr->unk2d4->unk0ac = 0;
chr->unk2d4->unk0b0 = func0001ae44(chr->animdata);
chr->unk2d4->unk0b4 = 0;
chr->unk2d4->unk0b8 = 0;
chr->aibot->unk0a4 = func0001ae44(chr->animdata);
chr->aibot->unk0a8 = 0;
chr->aibot->unk0ac = 0;
chr->aibot->unk0b0 = func0001ae44(chr->animdata);
chr->aibot->unk0b4 = 0;
chr->aibot->unk0b8 = 0;
func0f02e9a0(chr, 0);
}
}
@@ -469,7 +469,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr)
{
struct defaultobj *obj = prop->obj;
if (!chr || !chr->unk2d4) {
if (!chr || !chr->aibot) {
return 0;
}
@@ -487,7 +487,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr)
dprint();
if (qty) {
aibotGiveAmmo(chr->unk2d4, crate->ammotype, qty);
aibotGiveAmmo(chr->aibot, crate->ammotype, qty);
}
func0f0939f8(NULL, prop, 0xea, -1,
@@ -536,7 +536,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr)
}
if (qty) {
aibotGiveAmmo(chr->unk2d4, i + 1, qty);
aibotGiveAmmo(chr->aibot, i + 1, qty);
}
}
@@ -562,7 +562,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr)
qty = weaponGetPickupAmmoQty(weapon);
if (qty) {
func0f199e3c(chr->unk2d4, weapon->weapon_id, weapon->dragonthrown, qty);
func0f199e3c(chr->aibot, weapon->weapon_id, weapon->dragonthrown, qty);
}
if (itemtype) {
@@ -1330,8 +1330,8 @@ glabel var7f1b8eb4
u32 func0f1915b4(struct chrdata *chr)
{
if (chr->unk2d4) {
return chr->unk2d4->unk020;
if (chr->aibot) {
return chr->aibot->unk020;
}
return g_Vars.players[propGetPlayerNum(chr->prop)]->unk0638;
@@ -2404,51 +2404,51 @@ char *mpGetBotCommandName(s32 command)
void mpAibotApplyAttack(struct chrdata *chr, struct prop *prop)
{
chr->unk2d4->command = AIBOTCMD_ATTACK;
chr->unk2d4->attackpropnum = prop - g_Vars.props;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = AIBOTCMD_ATTACK;
chr->aibot->attackpropnum = prop - g_Vars.props;
chr->aibot->unk0d8 = 1;
}
void mpAibotApplyFollow(struct chrdata *chr, struct prop *prop)
{
chr->unk2d4->command = AIBOTCMD_FOLLOW;
chr->unk2d4->followprotectpropnum = prop - g_Vars.props;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = AIBOTCMD_FOLLOW;
chr->aibot->followprotectpropnum = prop - g_Vars.props;
chr->aibot->unk0d8 = 1;
}
void mpAibotApplyProtect(struct chrdata *chr, struct prop *prop)
{
chr->unk2d4->command = AIBOTCMD_PROTECT;
chr->unk2d4->followprotectpropnum = prop - g_Vars.props;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = AIBOTCMD_PROTECT;
chr->aibot->followprotectpropnum = prop - g_Vars.props;
chr->aibot->unk0d8 = 1;
}
void mpAibotApplyDefend(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3)
{
chr->unk2d4->command = AIBOTCMD_DEFEND;
chr->unk2d4->defendholdpos.x = pos->x;
chr->unk2d4->defendholdpos.y = pos->y;
chr->unk2d4->defendholdpos.z = pos->z;
roomsCopy(room, &chr->unk2d4->rooms[0]);
chr->unk2d4->unk098 = arg3;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = AIBOTCMD_DEFEND;
chr->aibot->defendholdpos.x = pos->x;
chr->aibot->defendholdpos.y = pos->y;
chr->aibot->defendholdpos.z = pos->z;
roomsCopy(room, &chr->aibot->rooms[0]);
chr->aibot->unk098 = arg3;
chr->aibot->unk0d8 = 1;
}
void mpAibotApplyHold(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3)
{
chr->unk2d4->command = AIBOTCMD_HOLD;
chr->unk2d4->defendholdpos.x = pos->x;
chr->unk2d4->defendholdpos.y = pos->y;
chr->unk2d4->defendholdpos.z = pos->z;
roomsCopy(room, &chr->unk2d4->rooms[0]);
chr->unk2d4->unk098 = arg3;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = AIBOTCMD_HOLD;
chr->aibot->defendholdpos.x = pos->x;
chr->aibot->defendholdpos.y = pos->y;
chr->aibot->defendholdpos.z = pos->z;
roomsCopy(room, &chr->aibot->rooms[0]);
chr->aibot->unk098 = arg3;
chr->aibot->unk0d8 = 1;
}
void mpAibotApplyScenarioCommand(struct chrdata *chr, u32 command)
{
chr->unk2d4->command = command;
chr->unk2d4->unk0d8 = 1;
chr->aibot->command = command;
chr->aibot->unk0d8 = 1;
}
GLOBAL_ASM(
@@ -3524,13 +3524,13 @@ bool mpIsChrFollowedByChr(struct chrdata *leader, struct chrdata *follower)
bool result = true;
while (true) {
struct chr2d4 *chr2d4 = follower->unk2d4;
struct aibot *aibot = follower->aibot;
if (!chr2d4 || follower->myaction[0] != MA_AIBOTFOLLOW || chr2d4->followingplayernum < 0) {
if (!aibot || follower->myaction[0] != MA_AIBOTFOLLOW || aibot->followingplayernum < 0) {
break;
}
follower = g_MpPlayerChrs[chr2d4->followingplayernum];
follower = g_MpPlayerChrs[aibot->followingplayernum];
if (follower == leader) {
result = false;
@@ -3546,7 +3546,7 @@ s32 func0f193530(struct chrdata *chr, f32 arg1)
s32 result = -1;
if (g_MpSetup.options & MPOPTION_TEAMSENABLED) {
if (chr->myaction[0] != MA_AIBOTFOLLOW && (random() % 100) < chr->unk2d4->unk000) {
if (chr->myaction[0] != MA_AIBOTFOLLOW && (random() % 100) < chr->aibot->unk000) {
f32 bestvalue = 0;
s32 bestindex = -1;
s32 i;
@@ -3556,7 +3556,7 @@ s32 func0f193530(struct chrdata *chr, f32 arg1)
!chrIsDead(g_MpPlayerChrs[i]) &&
chr->team == g_MpPlayerChrs[i]->team &&
mpIsChrFollowedByChr(chr, g_MpPlayerChrs[i])) {
f32 value = chr->unk2d4->unk13c[i];
f32 value = chr->aibot->unk13c[i];
if (bestindex < 0 || value < bestvalue) {
bestindex = i;
@@ -4740,7 +4740,7 @@ s32 mpCountAibotsWithCommand(struct chrdata *self, u32 command, bool includeself
for (i = PLAYERCOUNT(); i < g_MpNumPlayers; i++) {
if (self->team == g_MpPlayerChrs[i]->team) {
if (includeself || self != g_MpPlayerChrs[i]) {
if (command == g_MpPlayerChrs[i]->unk2d4->command) {
if (command == g_MpPlayerChrs[i]->aibot->command) {
count++;
}
}
@@ -4760,8 +4760,8 @@ s32 scenarioCtcIsChrsTokenHeld(struct chrdata *chr)
bool func0f19489c(struct chrdata *chr)
{
if (chr->unk2d4->unk09c_01) {
if (chr->unk2d4->unk04f_00 == 0 || mpGetNumPlayerTeammates(chr) >= 2 || !scenarioCtcIsChrsTokenHeld(chr)) {
if (chr->aibot->unk09c_01) {
if (chr->aibot->unk04f_00 == 0 || mpGetNumPlayerTeammates(chr) >= 2 || !scenarioCtcIsChrsTokenHeld(chr)) {
return true;
}
}
@@ -4776,7 +4776,7 @@ s32 mpGetNumTeammatesDefendingHill(struct chrdata *bot)
for (i = 0; i < g_MpNumPlayers; i++) {
if (bot->team == g_MpPlayerChrs[i]->team && g_MpPlayerChrs[i]->prop->rooms[0] == g_ScenarioData.cbt.unk0e[0]) {
if (g_MpPlayerChrs[i]->unk2d4->command == AIBOTCMD_DEFHILL || g_MpPlayerChrs[i]->unk2d4->command == AIBOTCMD_HOLDHILL) {
if (g_MpPlayerChrs[i]->aibot->command == AIBOTCMD_DEFHILL || g_MpPlayerChrs[i]->aibot->command == AIBOTCMD_HOLDHILL) {
count++;
}
}
@@ -7902,11 +7902,11 @@ glabel var7f1b8fc8
void func0f197544(struct chrdata *chr)
{
bool pass = false;
struct chr2d4 *chr2d4 = chr->unk2d4;
struct aibot *aibot = chr->aibot;
if (chr->myaction[0] == MA_AIBOTGETITEM) {
if (chr->act_gopos.waypoints[chr->act_gopos.nextwaypointindex] == 0) {
struct prop *prop = chr2d4->prop;
struct prop *prop = aibot->prop;
if (prop && !prop->parent && prop->timetoregen == 0) {
if (prop->type == PROPTYPE_WEAPON || prop->type == PROPTYPE_OBJ) {
@@ -7915,7 +7915,7 @@ void func0f197544(struct chrdata *chr)
}
}
chr2d4->unk0d8 = 1;
aibot->unk0d8 = 1;
pass = true;
}
+1 -1
View File
@@ -598,7 +598,7 @@ u32 aibotGetInvItemType(struct chrdata *chr, u32 weaponnum)
{
struct invitem *item;
if (!chr || !chr->unk2d4) {
if (!chr || !chr->aibot) {
return 0;
}
+5 -5
View File
@@ -44,22 +44,22 @@ bool aiMpInitSimulants(void)
bool ai0176(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
struct chr2d4 *chr2d4;
struct aibot *aibot;
/**
* @bug: Missing return means a crash will occur if either of these are
* null.
*/
if (!g_Vars.chrdata || !g_Vars.chrdata->unk2d4) {
if (!g_Vars.chrdata || !g_Vars.chrdata->aibot) {
g_Vars.aioffset += 3;
//return false;
}
chr2d4 = g_Vars.chrdata->unk2d4;
aibot = g_Vars.chrdata->aibot;
if (chr2d4->unk059 == 1) {
if (aibot->unk059 == 1) {
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
chr2d4->unk059 = 0;
aibot->unk059 = 0;
} else {
g_Vars.aioffset += 3;
}
+2 -2
View File
@@ -9,8 +9,8 @@ u32 func0f199a40(void);
u32 func0f199be4(void);
u32 func0f199cb8(void);
u32 func0f199d70(void);
void func0f199e3c(struct chr2d4 *chr2d4, u32 weaponnum, bool proxy, u32 qty);
void aibotGiveAmmo(struct chr2d4 *chr2d4, u32 ammotype, u32 qty);
void func0f199e3c(struct aibot *aibot, u32 weaponnum, bool proxy, u32 qty);
void aibotGiveAmmo(struct aibot *aibot, u32 ammotype, u32 qty);
u32 func0f199f84(void);
bool func0f19a29c(u32 value, bool fallback);
u32 func0f19a2dc(u32 value);
+4 -4
View File
@@ -137,11 +137,11 @@ struct animdata {
/*0x20*/ struct anim *anim;
};
struct chr2d4_01c {
struct aibot_01c {
u32 unk00[33];
};
struct chr2d4 {
struct aibot {
/*0x000*/ u8 unk000;
/*0x004*/ struct mpsim *simulant;
/*0x008*/ u16 unk008;
@@ -150,7 +150,7 @@ struct chr2d4 {
/*0x010*/ struct prop *prop;
/*0x014*/ u32 unk014;
/*0x018*/ u32 unk018;
/*0x01c*/ struct chr2d4_01c *unk01c;
/*0x01c*/ struct aibot_01c *unk01c;
/*0x020*/ u32 unk020;
/*0x024*/ u32 unk024;
/*0x028*/ u32 unk028;
@@ -673,7 +673,7 @@ struct chrdata {
/*0x2b4*/ u32 unk2b4;
/*0x2b8*/ s16 oldrooms[8];
/*0x2c8*/ struct coord runfrompos;
/*0x2d4*/ struct chr2d4 *unk2d4;
/*0x2d4*/ struct aibot *aibot;
/*0x2d8*/ s16 blurdrugamount;
/*0x2da*/ u16 cloakpause;
/*0x2dc*/ f32 drugheadsway;