diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 1e2b8179f..4ab316506 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -11042,43 +11042,43 @@ bool ai010c(void) GLOBAL_ASM( glabel ai011e /* f0591c0: 3c03800a */ lui $v1,0x800a -/* f0591c4: 24639fc0 */ addiu $v1,$v1,-24640 +/* f0591c4: 24639fc0 */ addiu $v1,$v1,-24640 # v1 = g_Vars /* f0591c8: 8c6e0434 */ lw $t6,0x434($v1) /* f0591cc: 8c6f0438 */ lw $t7,0x438($v1) /* f0591d0: 27bdffe0 */ addiu $sp,$sp,-32 /* f0591d4: afbf0014 */ sw $ra,0x14($sp) -/* f0591d8: 01cf3821 */ addu $a3,$t6,$t7 -/* f0591dc: 90e50002 */ lbu $a1,0x2($a3) +/* f0591d8: 01cf3821 */ addu $a3,$t6,$t7 # a3 = g_Vars.ailist + g_Vars.aioffset +/* f0591dc: 90e50002 */ lbu $a1,0x2($a3) # a1 = cmd[2] /* f0591e0: afa7001c */ sw $a3,0x1c($sp) /* f0591e4: 0fc126d1 */ jal chrFindById -/* f0591e8: 8c640424 */ lw $a0,0x424($v1) +/* f0591e8: 8c640424 */ lw $a0,0x424($v1) # a0 = g_Vars.chrdata /* f0591ec: 3c03800a */ lui $v1,0x800a -/* f0591f0: 24639fc0 */ addiu $v1,$v1,-24640 -/* f0591f4: 10400012 */ beqz $v0,.L0f059240 +/* f0591f0: 24639fc0 */ addiu $v1,$v1,-24640 # v1 = g_Vars +/* f0591f4: 10400012 */ beqz $v0,.L0f059240 # if (chr == 0) goto 40 /* f0591f8: 8fa7001c */ lw $a3,0x1c($sp) -/* f0591fc: 8c58001c */ lw $t8,0x1c($v0) -/* f059200: 53000010 */ beqzl $t8,.L0f059244 -/* f059204: 8c790438 */ lw $t9,0x438($v1) -/* f059208: 10400003 */ beqz $v0,.L0f059218 -/* f05920c: 00002025 */ or $a0,$zero,$zero -/* f059210: 10000001 */ beqz $zero,.L0f059218 -/* f059214: 904402fe */ lbu $a0,0x2fe($v0) +/* f0591fc: 8c58001c */ lw $t8,0x1c($v0) # t8 = chr->pos +/* f059200: 53000010 */ beqzl $t8,.L0f059244 # if (chr->pos == 0) goto 44 +/* f059204: 8c790438 */ lw $t9,0x438($v1) # t9 = g_Vars.aioffset +/* f059208: 10400003 */ beqz $v0,.L0f059218 # if (v0 == 0) goto 18 +/* f05920c: 00002025 */ or $a0,$zero,$zero # a0 = 0 +/* f059210: 10000001 */ beqz $zero,.L0f059218 # if (true) +/* f059214: 904402fe */ lbu $a0,0x2fe($v0) # a0 = chr->race .L0f059218: -/* f059218: 5480000a */ bnezl $a0,.L0f059244 -/* f05921c: 8c790438 */ lw $t9,0x438($v1) -/* f059220: 8c640434 */ lw $a0,0x434($v1) -/* f059224: 8c650438 */ lw $a1,0x438($v1) +/* f059218: 5480000a */ bnezl $a0,.L0f059244 # if (a0 != 0) goto 44 +/* f05921c: 8c790438 */ lw $t9,0x438($v1) # t9 = g_Vars.aioffset +/* f059220: 8c640434 */ lw $a0,0x434($v1) # a0 = g_Vars.ailist +/* f059224: 8c650438 */ lw $a1,0x438($v1) # a1 = g_Vars.aioffset /* f059228: 0fc13583 */ jal chraiGoToLabel -/* f05922c: 90e60003 */ lbu $a2,0x3($a3) +/* f05922c: 90e60003 */ lbu $a2,0x3($a3) # a2 = cmd[3] /* f059230: 3c03800a */ lui $v1,0x800a -/* f059234: 24639fc0 */ addiu $v1,$v1,-24640 +/* f059234: 24639fc0 */ addiu $v1,$v1,-24640 # v1 = g_Vars /* f059238: 10000004 */ beqz $zero,.L0f05924c -/* f05923c: ac620438 */ sw $v0,0x438($v1) +/* f05923c: ac620438 */ sw $v0,0x438($v1) # v0 = g_Vars.aioffset .L0f059240: -/* f059240: 8c790438 */ lw $t9,0x438($v1) +/* f059240: 8c790438 */ lw $t9,0x438($v1) # t9 = g_Vars.aioffset .L0f059244: -/* f059244: 27280004 */ addiu $t0,$t9,0x4 -/* f059248: ac680438 */ sw $t0,0x438($v1) +/* f059244: 27280004 */ addiu $t0,$t9,0x4 # t9 += 4 +/* f059248: ac680438 */ sw $t0,0x438($v1) # g_Vars.aioffset += 4 .L0f05924c: /* f05924c: 8fbf0014 */ lw $ra,0x14($sp) /* f059250: 27bd0020 */ addiu $sp,$sp,0x20 diff --git a/src/include/commands.h b/src/include/commands.h index 5b6b1864e..02bb90422 100644 --- a/src/include/commands.h +++ b/src/include/commands.h @@ -1134,8 +1134,12 @@ mkword(chrflag2), \ label, -// This is definitely wrong -#define if_chr_is_dead_maybe(chr, label) \ +#define if_chr_is_human(chr, label) \ + mkshort(0x011e), \ + chr, \ + label, + +#define if_chr_is_skedar(chr, label) \ mkshort(0x011f), \ chr, \ label, diff --git a/src/setup/ailists.c b/src/setup/ailists.c index 9641d0568..e122a9950 100644 --- a/src/setup/ailists.c +++ b/src/setup/ailists.c @@ -711,7 +711,7 @@ u8 func0006_unalerted[] = { goto_first(LABEL_HEARSPAWN) label(0x13) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x7b) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x7b) restart_timer if_self_flag_bankx_eq(CHRFLAG1_DOINGIDLEANIMATION, TRUE, BANK_1, /*goto*/ 0x7a) animation(ANIM_YAWN, 0, 193, 0x1810, CHR_SELF, 2) @@ -869,7 +869,7 @@ u8 func0007_alerted[] = { // If something, jump to combat label(0x13) unset_self_flag_bankx(CHRFLAG1_01000000, BANK_1) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x13) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x13) goto_next(0x16) label(0x13) @@ -2838,7 +2838,7 @@ u8 func000d_init_combat[] = { }; u8 func000c_combat_with_target_chr[] = { - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x16) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) dprint 'S','E','E',' ','E','N','E','M','Y','\n',0, if_num_human_players_lt(2, /*goto*/ 0x16) label(0x13) @@ -2908,7 +2908,7 @@ u8 func000c_combat_with_target_chr[] = { endloop(0x1c) label(0x16) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x16) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) say_quip(CHR_BOND, 0x19, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00) goto_next(0x17) @@ -2961,7 +2961,7 @@ u8 func000c_combat_with_target_chr[] = { if_alertness(100, OPERATOR_LESS_THAN, /*goto*/ 0xb3) dprint 'A','L','E','R','T','\n',0, if_enemy_distance_lt_and_los(2540, /*goto*/ 0xb3) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x16) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) if_chr_flag_bank2(CHR_SELF, CHRFLAG2_PSYCHOSISED, /*goto*/ 0x13) goto_next(0x16) @@ -2973,7 +2973,7 @@ u8 func000c_combat_with_target_chr[] = { return label(0xb3) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x16) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) label(0x13) if_chr_lost_track_of_target_maybe(/*goto*/ 0x13) goto_next(0x16) @@ -3190,7 +3190,7 @@ u8 func000c_combat_with_target_chr[] = { label(0x13) label(0x16) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x17) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x17) goto_next(0x16) label(0x17) @@ -3339,7 +3339,7 @@ u8 func000c_combat_with_target_chr[] = { label(0xca) restart_timer dprint 'T','A','R','S','H','O','\n',0, - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x16) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x16) goto_next(0x17) label(0x16) @@ -3458,7 +3458,7 @@ u8 func000c_combat_with_target_chr[] = { say_quip(CHR_BOND, 0x0f, 0x28, 0x00, 0x01, BANK_0, 0x00, 0x00) try_face_entity(0x0200, 0x0000, /*goto*/ 0x16) label(0x16) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0xd9) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0xd9) animation(ANIM_YAWN, 0, 193, 0x1810, CHR_SELF, 2) beginloop(0xd8) @@ -3797,7 +3797,7 @@ u8 func000f_hand_combat[] = { label(0x13) dprint 'L','O','O','K',' ','F','O','R',' ','T','A','R','G','E','T','\n',0, if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x13) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x0f) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) if_chr_distance_gt(120, /*goto*/ 0x13) goto_next(0x10) @@ -3814,7 +3814,7 @@ u8 func000f_hand_combat[] = { if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x13) if_chr_distance_gt(400, /*goto*/ 0x0b) label(0x13) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x0f) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) if_chr_distance_lt(120, /*goto*/ LABEL_FACE_TARGET) goto_next(0x10) @@ -3836,7 +3836,7 @@ u8 func000f_hand_combat[] = { if_self_flag_bankx_eq(CHRFLAG1_00000001, TRUE, BANK_1, /*goto*/ 0x13) if_chr_distance_gt(400, /*goto*/ 0x0b) label(0x13) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x0f) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) if_chr_distance_lt(120, /*goto*/ LABEL_FACE_TARGET) goto_next(0x10) @@ -3846,7 +3846,7 @@ u8 func000f_hand_combat[] = { endloop(0x03) label(0x09) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x0f) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) if_chr_distance_lt(120, /*goto*/ LABEL_FACE_TARGET) goto_next(0x10) @@ -3859,7 +3859,7 @@ u8 func000f_hand_combat[] = { goto_first(0x03) label(0x0a) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x0f) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x0f) if_chr_distance_lt(120, /*goto*/ LABEL_FACE_TARGET) goto_next(0x10) @@ -3906,7 +3906,7 @@ u8 func000f_hand_combat[] = { label(0x13) add_morale(1) - if_chr_is_dead_maybe(CHR_SELF, /*goto*/ 0x17) + if_chr_is_skedar(CHR_SELF, /*goto*/ 0x17) goto_next(0x05) label(0x17)