Improve documentation for CHR_P1P2 features

This commit is contained in:
Ryan Dwyer 2019-12-17 17:12:22 +10:00
parent 452d86aec3
commit 9fbd4a8732
27 changed files with 427 additions and 413 deletions

View File

@ -2110,7 +2110,7 @@ u8 func100e_check_ecm_mines[] = {
u8 func1004_check_lab_lift_located[] = {
beginloop(0x52)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LABLIFTDOOR1, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_LABLIFTDOOR2, /*goto*/ 0x2c)
if_chr_in_room(CHR_P1P2, 0x00, 0x002b, /*goto*/ 0x2c)
@ -2302,7 +2302,7 @@ u8 func1008_doorswitch[] = {
// PA
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_DOORSWITCH, /*goto*/ 0x2c)
label(0x06)
endloop(0x04)
@ -2376,7 +2376,7 @@ u8 func100a_alarm_guard[] = {
u8 func100b_lightswitch[] = {
beginloop(0x04)
if_chr_activated_object(CHR_F3, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANY, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
@ -3284,8 +3284,8 @@ u8 func1010_start_hub_humms[] = {
u8 func1011_check_hubs_activated[] = {
beginloop(0x04)
if_chr_activated_object(CHR_F3, OBJ_SECURITYHUB, /*goto*/ 0x08)
if_chr_activated_object(CHR_F3, OBJ_EXTCOMMSHUB, /*goto*/ 0x0a)
if_chr_activated_object(CHR_ANY, OBJ_SECURITYHUB, /*goto*/ 0x08)
if_chr_activated_object(CHR_ANY, OBJ_EXTCOMMSHUB, /*goto*/ 0x0a)
reloop(0x04)
label(0x08)
@ -3557,7 +3557,7 @@ u8 func1019_toggle_guards[] = {
hide_chr(0x16)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -2000, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
endloop(0x04)
@ -3685,7 +3685,7 @@ u8 unregistered_function7[] = {
u8 func101e_lift_door_sounds[] = {
beginloop(0xc4)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT1DOOR1, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT1DOOR2, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT1DOOR3, /*goto*/ 0x2c)
@ -3726,7 +3726,7 @@ u8 func042e_init_surrendering_guard[] = {
u8 func042f_surrendering_guard[] = {
// Wait for player detection
beginloop(0xc4)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2c)
if_enemy_distance_lt_and_los(500, /*goto*/ 0x2c)
@ -3774,7 +3774,7 @@ u8 func042f_surrendering_guard[] = {
if_chr_distance_gt(300, /*goto*/ 0x06)
if_chr_in_view(/*goto*/ 0x28)
label(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x58)
endloop(0x55)

View File

@ -942,7 +942,7 @@ u8 func0406_general_combat[] = {
set_view_distance(100)
label(0x20)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_FOYER_LIGHTS_RESTORED, TRUE, /*goto*/ 0x00)
if_target_chr_in_sight(/*goto*/ 0x15)
@ -1027,7 +1027,7 @@ u8 func0406_general_combat[] = {
say_quip(CHR_BOND, 0x12, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00)
beginloop(0x1c)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
call_rng
if_target_chr_in_sight(/*goto*/ 0x19)
@ -1046,7 +1046,7 @@ u8 func0406_general_combat[] = {
restart_timer
beginloop(0x1b)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x19)
if_timer_gt(300, /*goto*/ 0x00)
@ -1318,7 +1318,7 @@ u8 func0408_hovercopter[] = {
u8 func1002_check_accessed_foyer_elevator[] = {
beginloop(0x21)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_y(CHR_TARGET, -8155, OPERATOR_LESS_THAN, /*goto*/ 0x20)
if_chr_distance_to_pad_lt(CHR_TARGET, 300, 0x021a, /*goto*/ 0x00)
@ -1334,7 +1334,7 @@ u8 func1002_check_accessed_foyer_elevator[] = {
u8 func1003_check_end_level[] = {
beginloop(0x21)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_to_pad_lt(CHR_P1P2, 200, 0x0002, /*goto*/ 0x00)
reloop(0x21)
@ -1381,7 +1381,7 @@ u8 func1004_elevator_unlocking[] = {
set_function(CHR_SELF, GFUNC_IDLE)
beginloop(0x1f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, 0x01, /*goto*/ 0x20)
if_object_in_good_condition(0x01, /*goto*/ 0x00)
@ -1578,7 +1578,7 @@ u8 func1009_init_top_room[] = {
set_chr_flag_bank3(CHR_CASS, CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
beginloop(0x1f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0039, /*goto*/ 0x00)
if_chr_activated_object(CHR_P1P2, OBJ_TOPROOMDOOR, /*goto*/ 0x00)
endloop(0x1f)
@ -1630,7 +1630,7 @@ u8 func0409_tech_conversation[] = {
set_onshot_function(GFUNC_IDLE)
beginloop(0x01)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, 0x11, /*goto*/ 0x00)
if_door_state(0x11, DOORSTATEBIT_OPEN, /*goto*/ 0x00)
@ -1671,7 +1671,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x21)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1692,7 +1692,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x22)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1713,7 +1713,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x23)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1734,7 +1734,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x24)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1756,7 +1756,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x25)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1776,7 +1776,7 @@ u8 func0409_tech_conversation[] = {
beginloop(0x26)
if_shot_near_chr(0x00, /*goto*/ 0x33)
if_saw_death(0x00, /*goto*/ 0x33)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x33)
if_chr_sees_player(/*goto*/ 0x20)
@ -1847,7 +1847,7 @@ u8 func040a_tech2[] = {
stop_chr
beginloop(0x1f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TECHS_FINISHED, TRUE, /*goto*/ 0x20)
if_target_chr_in_sight(/*goto*/ 0x33)
@ -1858,7 +1858,7 @@ u8 func040a_tech2[] = {
stop_chr
beginloop(0x21)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x00)
reloop(0x21)
@ -2077,7 +2077,7 @@ u8 func040d_cass[] = {
// And not in sight
label(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x20)
set_target_chr(CHR_ANTI)
@ -2102,7 +2102,7 @@ u8 func040d_cass[] = {
u8 func101f_unlock_top_door[] = {
beginloop(0x1f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x003b, /*goto*/ 0x20)
endloop(0x1f)
@ -2123,7 +2123,7 @@ u8 func040e_noop2[] = {
u8 func100a_lightswitch[] = {
beginloop(0x1f)
if_chr_activated_object(CHR_F3, OBJ_LIGHTSWITCH, /*goto*/ 0x20)
if_chr_activated_object(CHR_ANY, OBJ_LIGHTSWITCH, /*goto*/ 0x20)
reloop(0x1f)
label(0x20)
@ -2633,7 +2633,7 @@ u8 func0413_defend_pad[] = {
set_onshot_function(FUNC_GENERAL_COMBAT)
beginloop(0x1f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x21)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x21)
@ -2940,7 +2940,7 @@ u8 func101a_set_rocketlauncher_flag[] = {
u8 func101b_lift_door_sounds[] = {
beginloop(0x8d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x23, /*goto*/ 0x20)
if_chr_activated_object(CHR_P1P2, 0x27, /*goto*/ 0x5e)
if_chr_activated_object(CHR_P1P2, 0x20, /*goto*/ 0x20)

View File

@ -784,7 +784,7 @@ u8 func0406_init_stripes[] = {
u8 func1003_msg_therestheescapepod[] = {
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 1000, 0x01d8, /*goto*/ 0x31)
endloop(0x06)
@ -810,7 +810,7 @@ u8 func1005_msg_thejamming[] = {
if_difficulty_lt(DIFF_PA, /*goto*/ 0x0f)
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(2, /*goto*/ 0x0f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0029, /*goto*/ 0x31)
endloop(0x06)
@ -824,7 +824,7 @@ u8 func1005_msg_thejamming[] = {
u8 func1006_msg_elvisbeable[] = {
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 1000, 0x0105, /*goto*/ 0x31)
endloop(0x06)
@ -1049,7 +1049,7 @@ u8 func0416_spawned_guard[] = {
u8 func1008_escapepod[] = {
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_ESCAPEPOD, /*goto*/ 0x31)
// Pod destroyed
@ -1270,7 +1270,7 @@ u8 func0418_robot[] = {
beginloop(0x04)
dprint 'P','A','R','T',' ','1','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0d)
if_target_chr_in_sight(/*goto*/ 0x0d)
@ -1324,10 +1324,10 @@ u8 func0418_robot[] = {
if_chr_distance_gt(1000, /*goto*/ 0x15)
dprint 'P','A','R','T',' ','2','\n',0,
if_target_chr_in_sight(/*goto*/ 0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0x15)
endloop(0x0a)
@ -1361,7 +1361,7 @@ u8 func0414_spawner[] = {
set_self_flag_bank3(CHRFLAG3_00000002)
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x0a)
// Room 0x0029 is the skedar shuttle area
@ -1416,7 +1416,7 @@ u8 func041a_pres_clone[] = {
set_self_flag_bank3(CHRFLAG3_00080000)
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x31)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x08)
@ -1475,7 +1475,7 @@ u8 func041c_president_waiting[] = {
// Wait until trigger and can see player
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_PRESIDENT_RUNNING, TRUE, /*goto*/ 0x31)
goto_first(0x06)
@ -1711,7 +1711,7 @@ u8 func041e_trent_waiting[] = {
set_chr_flag_bank2(CHR_SELF, CHRFLAG2_10000000)
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x08)
endloop(0x06)
@ -1735,7 +1735,7 @@ u8 func041f_trent_shooting[] = {
stop_chr
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
try_unset_chr_flag_bank3_02000000(CHR_SELF, /*goto*/ 0x31)
if_target_chr_in_sight(/*goto*/ 0x08)
@ -1793,7 +1793,7 @@ u8 func0420_trent_running[] = {
endloop(0x0a)
label(0x31)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x31)
goto_next(0x08)

View File

@ -1179,7 +1179,7 @@ u8 func0407_stewardess[] = {
restart_timer
beginloop(0x11)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_MSG_NOWSYOURCHANCE, TRUE, /*goto*/ 0x75)
if_chr_distance_gt(200, /*goto*/ 0x75)
@ -1208,7 +1208,7 @@ u8 func0407_stewardess[] = {
// Walking
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_MSG_NOWSYOURCHANCE, TRUE, /*goto*/ 0x75)
if_chr_distance_gt(200, /*goto*/ 0x75)
@ -1281,7 +1281,7 @@ u8 func0407_stewardess[] = {
dprint 'W','A','L','K','F','A','I','L','\n',0,
beginloop(0x49)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_MSG_NOWSYOURCHANCE, TRUE, /*goto*/ 0x75)
if_chr_distance_gt(200, /*goto*/ 0x75)
@ -1303,7 +1303,7 @@ u8 func0407_stewardess[] = {
restart_timer
beginloop(0x4b)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_MSG_NOWSYOURCHANCE, TRUE, /*goto*/ 0x75)
if_chr_distance_gt(200, /*goto*/ 0x75)
@ -1319,7 +1319,7 @@ u8 func0407_stewardess[] = {
stop_chr
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_MSG_NOWSYOURCHANCE, TRUE, /*goto*/ 0x75)
if_chr_distance_gt(200, /*goto*/ 0x75)
@ -1510,7 +1510,7 @@ u8 func0408_secretary[] = {
// MAIN LOOP
//
beginloop(LABEL_MAIN_LOOP)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_view_distance(100)
if_shot_near_chr(0x00, /*goto*/ LABEL_BECOME_ALERT1)
@ -1706,7 +1706,7 @@ u8 func0408_secretary[] = {
u8 unregistered_function2[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_flag_bank2(CHR_P1P2, CHRFLAG2_DISGUISED, /*goto*/ 0x02)
endloop(0x00)
@ -1722,7 +1722,7 @@ u8 unregistered_function2[] = {
u8 func1007_console_activation[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_CONSOLE, /*goto*/ 0x31)
goto_next(0x0c)
@ -1768,7 +1768,7 @@ u8 func1007_console_activation[] = {
play_x_music(0x58, 88) // @bug? Invalid channel
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -2000, OPERATOR_LESS_THAN, /*goto*/ 0x02)
endloop(0x06)
@ -1943,7 +1943,7 @@ u8 func1021_weapon_scanning_coop[] = {
u8 func1009_carousel_activation[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_BAGGAGE_CARRIER, /*goto*/ 0x02)
if_stage_flag_eq(STAGEFLAG_SECURITY_SHUT_DOWN, TRUE, /*goto*/ 0x31)
reloop(0x00)
@ -2063,7 +2063,7 @@ u8 func0409_office1[] = {
animation(ANIM_SITTING_DORMANT, 0, -1, 0x14, 0x10, CHR_SELF, 2)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x02)
if_shot_near_chr(0x00, /*goto*/ LABEL_RUN_TO_FOYER)
@ -2213,7 +2213,7 @@ u8 func040a_office2[] = {
label(0x02)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x02)
if_shot_near_chr(0x00, /*goto*/ 0x02)
@ -2270,7 +2270,7 @@ u8 func040a_office2[] = {
u8 func100c_check_end_level[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(0, /*goto*/ 0x31)
goto_first(0x00)
@ -2347,7 +2347,7 @@ u8 func100c_check_end_level[] = {
u8 func100d_laser_panel[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASER_PANEL, /*goto*/ 0x04)
if_object_in_good_condition(OBJ_LASER_PANEL, /*goto*/ 0x02)
goto_next(0x05)
@ -2434,7 +2434,7 @@ u8 func040f_nsa[] = {
beginloop(0x06)
dprint 'G','O',' ','F','O','R',' ','P','A','D','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_lt(250, /*goto*/ 0x64)
if_self_flag_bankx_eq(CHRFLAG0_00000080, TRUE, BANK_0, /*goto*/ 0x33)
@ -2465,7 +2465,7 @@ u8 func040f_nsa[] = {
stop_chr
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
dprint 'W','A','I','T',' ','F','O','R',' ','C','H','R','\n',0,
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_SECURITY_SHUT_DOWN, TRUE, /*goto*/ 0x0b)
@ -2614,7 +2614,7 @@ u8 func0411_takeover_lackey[] = {
set_function(CHR_SELF, GFUNC_IDLE)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_dying(0x0c, /*goto*/ 0x7b)
if_chr_death_animation_finished(0x0c, /*goto*/ 0x7b)
@ -2686,7 +2686,7 @@ u8 func0414_officeworker[] = {
animation(ANIM_SITTING_DORMANT, -1, 60, 0x14, 0x00, CHR_SELF, 2)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_SECURITY_SHUT_DOWN, TRUE, /*goto*/ 0x07)
if_chr_idle(/*goto*/ 0x02)
@ -2730,7 +2730,7 @@ u8 func0414_officeworker[] = {
animation(ANIM_COWER_0229, -1, 60, 0x14, 0x0a, CHR_SELF, 2)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x02)
if_chr_idle(/*goto*/ 0x31)
@ -3144,7 +3144,7 @@ u8 func042a_foyer_spawner[] = {
set_self_flag_bank3(CHRFLAG3_00040000)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_SECURITY_SHUT_DOWN, TRUE, /*goto*/ 0x02)
if_chr_y(CHR_TARGET, -4800, OPERATOR_LESS_THAN, /*goto*/ 0x09)
@ -3369,7 +3369,7 @@ u8 func0419_ba8c[] = {
restart_timer
label(0x72)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_saw_death(0x00, /*goto*/ 0x4f)
if_shot_near_chr(0x00, /*goto*/ 0x0f)
@ -3491,7 +3491,7 @@ u8 func1018_safe_switch[] = {
// Wait for player to activate switch
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_SAFE_SWITCH, /*goto*/ 0x31)
endloop(0x00)
@ -3508,7 +3508,7 @@ u8 func1018_safe_switch[] = {
// Wait for player to press button again
beginloop(0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_SAFE_SWITCH, /*goto*/ 0x31)
endloop(0x06)
@ -3555,7 +3555,7 @@ u8 func1018_safe_switch_cover[] = {
set_object_flag_bank0(OBJ_SAFE_SWITCH_COVER, OBJECTFLAG0_DEACTIVATED)
beginloop(0x00)
if_chr_activated_object(CHR_F3, OBJ_SAFE_SWITCH_COVER, /*goto*/ 0x31)
if_chr_activated_object(CHR_ANY, OBJ_SAFE_SWITCH_COVER, /*goto*/ 0x31)
endloop(0x00)
label(0x31)
@ -3575,7 +3575,7 @@ u8 func1018_safe_switch_cover[] = {
u8 func101a_check_disguise_used[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_flag_bank2(CHR_P1P2, CHRFLAG2_DISGUISED, /*goto*/ 0x31)
endloop(0x00)
@ -3872,7 +3872,7 @@ u8 func101d_msg_usethatcase[] = {
restart_timer
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_BRIEFCASE1, /*goto*/ 0x31)
endloop(0x00)
@ -3915,7 +3915,7 @@ u8 func101e_msg_casewillgetstopped[] = {
u8 func101f_msg_smallerthanithought[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0025, /*goto*/ 0x31)
if_chr_in_room(CHR_P1P2, 0x00, 0x001c, /*goto*/ 0x31)
endloop(0x00)
@ -3993,7 +3993,7 @@ u8 func0416_watch_flag[] = {
u8 func101a_check_disguise_used2[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_UNIFORM, /*goto*/ 0x02)
endloop(0x00)
@ -4139,7 +4139,7 @@ u8 func141b_setup_lifts_and_doors[] = {
u8 func1029_lift_doors[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x37, /*goto*/ 0x31)
if_chr_activated_object(CHR_P1P2, 0x38, /*goto*/ 0x31)
if_chr_activated_object(CHR_P1P2, 0x39, /*goto*/ 0x31)
@ -4235,7 +4235,7 @@ u8 func102d_check_console_destroyed[] = {
u8 func102e_check_base_entered[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x002e, /*goto*/ 0x31)
endloop(0x00)
@ -4311,7 +4311,7 @@ u8 func1032_unhide_guards_near_plane[] = {
// elevator all the way to the bottom, then come out and turn left, you'll
// walk through these rooms before reaching the stairs.
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0016, /*goto*/ 0x31)
if_chr_in_room(CHR_P1P2, 0x00, 0x0017, /*goto*/ 0x31)
endloop(0x00)

View File

@ -1011,7 +1011,7 @@ u8 unregistered_function1[] = {
u8 func1004_msg_controlledfrom[] = {
restart_timer
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0027, /*goto*/ 0x07)
endloop(0x00)
@ -1023,7 +1023,7 @@ u8 func1004_msg_controlledfrom[] = {
u8 func1005_msg_withoutautopilot[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x007e, /*goto*/ 0x07)
endloop(0x00)
@ -1035,7 +1035,7 @@ u8 func1005_msg_withoutautopilot[] = {
u8 func1006_msg_conductoperations[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x007f, /*goto*/ 0x07)
endloop(0x00)
@ -1068,7 +1068,7 @@ u8 unregistered_function2[] = {
u8 func1009_open_reactor_hatch[] = {
// Wait for all switches active
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_HATCHSWITCH1_ACTIVATED, TRUE, /*goto*/ 0x07)
reloop(0x00)
@ -1095,7 +1095,7 @@ u8 func1009_open_reactor_hatch[] = {
u8 func100a_reactor_switch[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_REACTOR_SWITCH, /*goto*/ 0x07)
message(CHR_BOND, 0x1624) // "Critical mission object has been destroyed."
set_stage_flag(STAGEFLAG_REACTOR_SWITCH_DESTROYED)
@ -1126,7 +1126,7 @@ u8 func100a_reactor_switch[] = {
u8 func100b_check_diving_area_located[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_MET_ELVIS, TRUE, /*goto*/ 0x07)
reloop(0x00)
@ -1179,7 +1179,7 @@ u8 func100c_check_end_level[] = {
set_function(CHR_ELVIS, FUNC_ELVIS_AT_MOONPOOL)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0064, /*goto*/ 0x07)
reloop(0x00)
@ -1356,7 +1356,7 @@ u8 func040b_labtech1[] = {
label(0x04)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x0f)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0f)
@ -1431,7 +1431,7 @@ u8 func040c_labtech2[] = {
label(0x04)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x0f)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x0f)
@ -1510,7 +1510,7 @@ u8 func040d_labtech3[] = {
label(0x04)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x0f)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x10)
@ -1624,7 +1624,7 @@ u8 func0411_labtech_alerted[] = {
animation(ANIM_COWER_0229, -1, -1, 0x10, 0x0a, CHR_SELF, 2)
beginloop(0x11)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_timer_gt(1200, /*goto*/ 0x0d)
if_chr_sees_player(/*goto*/ 0x07)
@ -1885,7 +1885,7 @@ u8 func0401_pilot[] = {
// Alive - wait for player to arrive
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x07)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x04)
@ -1901,7 +1901,7 @@ u8 func0401_pilot[] = {
beginloop(0x0b)
// Wait for Jo nearby
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_lt(200, /*goto*/ 0x07)
reloop(0x0b)
@ -2228,7 +2228,7 @@ u8 func0404_angry_pilot[] = {
u8 func1013_lift_switch[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT_SWITCH, /*goto*/ 0x07)
endloop(0x00)
@ -2245,7 +2245,7 @@ u8 func1013_lift_switch[] = {
u8 func1014_moonpool_switch[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_MOONPOOL_SWITCH, /*goto*/ 0x08)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x10)
message(CHR_P1P2, 0x1624) // "Critical mission object has been destroyed."
@ -2309,7 +2309,7 @@ u8 func1015_shuffle_hatchswitches[] = {
yield \
\
beginloop(0x00) \
consider_coop_for_p1p2_chr(CHR_SELF) \
chr_toggle_p1p2(CHR_SELF) \
if_chr_activated_object(CHR_P1P2, switch, /*goto*/ 0x07) \
endloop(0x00) \
\
@ -2682,7 +2682,7 @@ u8 func0418_elvis_at_moonpool[] = {
set_onshot_function(FUNC_ELVIS_LEADING)
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x07)
endloop(0x00)
@ -2801,7 +2801,7 @@ u8 func0417_elvis_prepare_leading[] = {
u8 func101d_alarm_switches[] = {
beginloop(0x00)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x21, /*goto*/ 0x07)
if_chr_activated_object(CHR_P1P2, 0x22, /*goto*/ 0x07)
if_chr_activated_object(CHR_P1P2, 0x23, /*goto*/ 0x07)

View File

@ -533,7 +533,7 @@ u8 func040c_start_path03[] = {
u8 func1008_check_generator[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_GENERATOR, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_GENERATOR, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_GENERATOR_SHUT_DOWN, TRUE, /*goto*/ 0x2c)
@ -574,7 +574,7 @@ u8 func1003_laser_switch_1[] = {
play_sound_from_object(CHANNEL_0, OBJ_LASER_1A, 0x012c, 0x0190)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH1, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH1, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, TRUE, /*goto*/ 0x2c)
@ -640,7 +640,7 @@ u8 func1004_laser_switch_2[] = {
play_sound_from_object(CHANNEL_1, OBJ_LASER_2A, 0x012c, 0x0190)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH2, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH2, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, TRUE, /*goto*/ 0x2c)
@ -707,7 +707,7 @@ u8 func1005_laser_switch_3[] = {
play_sound_from_object(CHANNEL_2, OBJ_LASER_3A, 0x012c, 0x0190)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH3, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH3, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, TRUE, /*goto*/ 0x2c)
@ -773,7 +773,7 @@ u8 func1006_laser_switch_4[] = {
play_sound_from_object(CHANNEL_3, OBJ_LASER_4A, 0x012c, 0x0190)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LASERSWITCH4, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_LASERSWITCH4, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET4_DISABLED, TRUE, /*goto*/ 0x2c)
@ -1068,7 +1068,7 @@ u8 func0401_init_swat1[] = {
init_swat
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2c)
@ -1092,7 +1092,7 @@ u8 func0402_init_swat2[] = {
init_swat
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x2c)
@ -1212,7 +1212,7 @@ u8 func100a_give_keycards[] = {
u8 func100b_check_backup_collected[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_BACKUPDISK, /*goto*/ 0x2c)
endloop(0x04)
@ -1289,7 +1289,7 @@ u8 func100e_check_conspirators_alerted[] = {
u8 func100f_alarm_switches[] = {
// Wait until player activated alarm switch
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_ALARM1, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_ALARM2, /*goto*/ 0x2c)
reloop(0x04)
@ -1313,7 +1313,7 @@ u8 func100f_alarm_switches[] = {
u8 func1010_safe_cracking[] = {
// Wait for player to activate keypad or for it to be destroyed
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_SAFEKEYPAD, /*goto*/ 0x2c)
message(CHR_BOND, 0x1840) // "Mission critical object destroyed."
set_stage_flag(STAGEFLAG_SAFEKEYPAD_DESTROYED)
@ -1385,7 +1385,7 @@ u8 func1010_safe_cracking[] = {
u8 func1012_check_for_end[] = {
// Wait until player on ending catwalk
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0060, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0061, /*goto*/ 0x06)
reloop(0x08)
@ -1463,7 +1463,7 @@ u8 func1013_check_escape_doors[] = {
u8 func1014_check_camspy_location[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(0x00, /*camspy*/ 0x02, 0x0094, /*goto*/ 0x06)
endloop(0x04)
@ -2255,7 +2255,7 @@ u8 func0412_cloak_guard[] = {
// Choose target
label(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0x06)
restart_timer
@ -2329,7 +2329,7 @@ u8 func0413_cloak1_guard[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_lt(400, /*goto*/ 0x06)
if_jo_front_direction_lt(30, /*goto*/ 0x06)
@ -2368,7 +2368,7 @@ u8 func0414_init_cloak2_guard[] = {
u8 func101b_cloak2_entry[] = {
// Wait until in glass area of second cloak room
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x001a, /*goto*/ 0x06)
endloop(0x08)
@ -2524,7 +2524,7 @@ u8 func101c_check_visited_top_door[] = {
// Wait until player gone near top fire escape door
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 400, 0x0058, /*goto*/ 0x06)
endloop(0x08)
@ -2588,7 +2588,7 @@ u8 func0408_init_cloak1_guard[] = {
u8 func101e_msg_nowaythrough[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_LASERSET1_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET2_DISABLED, FALSE, /*goto*/ 0x2c)
if_stage_flag_eq(STAGEFLAG_LASERSET3_DISABLED, FALSE, /*goto*/ 0x2c)
@ -2611,7 +2611,7 @@ u8 func101f_msg_meetingroomahead[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_MEETING_HOLOGRAPHED, TRUE, /*goto*/ 0x0d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x2c)
reloop(0x04)
@ -2631,7 +2631,7 @@ u8 func101f_msg_meetingroomahead[] = {
u8 func1020_msg_heavilyencrypted[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0050, /*goto*/ 0x2c)
endloop(0x04)
@ -2644,7 +2644,7 @@ u8 func1020_msg_heavilyencrypted[] = {
u8 func1021_blow_mines[] = {
// Wait for backup collected
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_BACKUP_COLLECTED, TRUE, /*goto*/ 0x2c)
endloop(0x04)
@ -2695,7 +2695,7 @@ u8 func1021_blow_mines[] = {
u8 func1022_light_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
reloop(0x04)

View File

@ -983,7 +983,7 @@ u8 func1003_devicetraining_nightvision[] = {
label(0x57)
set_stage_flag(STAGEFLAG_TRIGGER_CANNOTEXIT_MSG)
label(0x59)
if_chr_activated_object(CHR_F3, OBJ_LIGHTSWITCH, /*goto*/ 0x2f)
if_chr_activated_object(CHR_ANY, OBJ_LIGHTSWITCH, /*goto*/ 0x2f)
endloop(0x82)
label(0x2f)
@ -3548,7 +3548,7 @@ u8 func101c_holo1_main[] = {
unset_object_flag_bank1(object, OBJECTFLAG1_00040000) \
\
beginloop(0x04) \
if_chr_activated_object(CHR_F3, object, /*goto*/ 0x2f) \
if_chr_activated_object(CHR_ANY, object, /*goto*/ 0x2f) \
reloop(0x04) \
\
label(0x2f) \
@ -3590,7 +3590,7 @@ u8 func1020_holo1_monitor_switches[] = {
unset_object_flag_bank1(0x4f, OBJECTFLAG1_00040000)
beginloop(0x04)
if_chr_activated_object(CHR_F3, 0x4f, /*goto*/ 0x2f)
if_chr_activated_object(CHR_ANY, 0x4f, /*goto*/ 0x2f)
reloop(0x04)
label(0x2f)
@ -3889,7 +3889,7 @@ u8 func1022_holo2_main[] = {
#define holo2_do_thing(object, function) \
restart_timer \
beginloop(0x04) \
if_chr_activated_object(CHR_F3, object, /*goto*/ 0x2f) \
if_chr_activated_object(CHR_ANY, object, /*goto*/ 0x2f) \
if_object_flag_bank1(object, OBJECTFLAG1_00000001, /*goto*/ 0x06) \
reloop(0x04) \
\
@ -4273,7 +4273,7 @@ u8 func102b_holo3_part2[] = {
u8 func102c_holo3_object1[] = {
beginloop(0x04)
if_chr_activated_object(CHR_F3, 0x65, /*goto*/ 0x2f)
if_chr_activated_object(CHR_ANY, 0x65, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
@ -4288,7 +4288,7 @@ u8 func102c_holo3_object1[] = {
u8 func102d_holo3_object2[] = {
beginloop(0x04)
if_chr_activated_object(CHR_F3, 0x66, /*goto*/ 0x2f)
if_chr_activated_object(CHR_ANY, 0x66, /*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
@ -5684,7 +5684,7 @@ u8 func1035_manage_music[] = {
#define do_gun_msg(object, text) \
beginloop(0x03) \
if_chr_activated_object(CHR_F3, object, /*goto*/ 0x2f) \
if_chr_activated_object(CHR_ANY, object, /*goto*/ 0x2f) \
reloop(0x03) \
\
label(0x2f) \
@ -5818,7 +5818,7 @@ u8 func1040_lift_door_sounds[] = {
// Play sounds when lift doors activated
beginloop(0x8f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x80, /*goto*/ 0x2f)
if_chr_activated_object(CHR_P1P2, 0x81, /*goto*/ 0x2f)
if_chr_activated_object(CHR_P1P2, 0x82, /*goto*/ 0x2f)

View File

@ -938,7 +938,7 @@ u8 func0404_scientist[] = {
stop_chr
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2f)
if_chr_distance_lt(500, /*goto*/ 0x2f)
@ -1296,7 +1296,7 @@ u8 func0406_nasty_scientist[] = {
u8 func1009_weaponscache[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_CACHETERMINAL, /*goto*/ 0x2f)
endloop(0x04)
@ -1343,7 +1343,7 @@ u8 func1002_bot_activation_terminal[] = {
set_function(CHR_SELF, GFUNC_IDLE)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_BOT_ACTIVATION_TERMINAL, /*goto*/ 0x2f)
reloop(0x04)
@ -1421,7 +1421,7 @@ u8 func1003_bot_programming_terminal[] = {
set_function(CHR_SELF, GFUNC_IDLE)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_BOT_PROGRAMMING_TERMINAL, /*goto*/ 0x2f)
reloop(0x04)
@ -1505,7 +1505,7 @@ u8 func1018_item_pickup_messages[] = {
if_difficulty_lt(DIFF_PA, /*goto*/ 0x0d)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_HAS_K7AVENGER, TRUE, /*goto*/ 0x2f)
if_chr_has_object(CHR_P1P2, OBJ_K7AVENGER, /*goto*/ 0x06)
goto_next(0x2f)
@ -1596,7 +1596,7 @@ u8 func1005_check_unacceptable_casualties[] = {
u8 func1006_terminal_activation[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_GOODTERM1, /*goto*/ 0x08)
if_chr_activated_object(CHR_TARGET, OBJ_ALARMTERM1, /*goto*/ 0x09)
@ -1783,7 +1783,7 @@ u8 func1007_uplink[] = {
goto_next(0x0d)
label(0x30)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_UPLINKPC, /*goto*/ 0x2f)
reloop(0x04)
@ -2602,7 +2602,7 @@ u8 func1415_outro_audio[] = {
u8 func100f_check_for_end_level[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0063, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0065, /*goto*/ 0x2f)
reloop(0x04)
@ -2722,7 +2722,7 @@ u8 func1012_start_laser_sound[] = {
u8 func1013_hatch_pc[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_HATCHPC, /*goto*/ 0x06)
reloop(0x04)
@ -2823,7 +2823,7 @@ u8 func0402_k7_guard[] = {
set_onshot_function(GFUNC_ALERTED)
beginloop(0x0f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_follow_chr(CHR_P1P2)
if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
@ -2840,7 +2840,7 @@ u8 func0402_k7_guard[] = {
label(0x06)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -2858,7 +2858,7 @@ u8 func0402_k7_guard[] = {
say_quip(CHR_BOND, 0x00, 0x32, 0x02, 0xff, BANK_0, 0x00, 0x00)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -2894,7 +2894,7 @@ u8 func0402_k7_guard[] = {
restart_timer
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -2908,7 +2908,7 @@ u8 func0402_k7_guard[] = {
restart_timer
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -2928,7 +2928,7 @@ u8 func0402_k7_guard[] = {
u8 func0403_k7_scientist[] = {
beginloop(0x14)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_in_room(CHR_TARGET, 0x00, 0x0035, /*goto*/ 0x03)
if_chr_in_room(CHR_TARGET, 0x00, 0x0036, /*goto*/ 0x03)
@ -2941,7 +2941,7 @@ u8 func0403_k7_scientist[] = {
restart_timer
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -2971,7 +2971,7 @@ u8 func0403_k7_scientist[] = {
goto_next(0x0f)
beginloop(0x0f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
if_near_miss(/*goto*/ 0x0c)
@ -3040,7 +3040,7 @@ u8 func040b_init_shock_guard[] = {
u8 func1019_msg_securitysector[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0052, /*goto*/ 0x2f)
endloop(0x04)
@ -3052,7 +3052,7 @@ u8 func1019_msg_securitysector[] = {
u8 func101a_msg_lotofpower[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x2f)
endloop(0x04)
@ -3067,7 +3067,7 @@ u8 func101b_msg_reprogram[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x08)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x2f)
if_chr_in_room(CHR_P1P2, 0x00, 0x0024, /*goto*/ 0x2f)
endloop(0x04)
@ -3082,7 +3082,7 @@ u8 func101b_msg_reprogram[] = {
u8 func101c_msg_radioactive[] = {
beginloop(0x04)
if_objective_complete(0, /*goto*/ 0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x2f)
endloop(0x04)

View File

@ -1549,7 +1549,7 @@ u8 func0402_taker[] = {
try_aim_and_shoot_thing1(0x0220, 0x0000, /*goto*/ 0x04)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
dprint 'A','I','M','I','N','G',' ','A','T',' ','M','E','\n',0,
if_chr_distance_to_pad_lt(CHR_P1P2, 200, 0x0236, /*goto*/ 0x06)
label(0x2d)
@ -1704,7 +1704,7 @@ u8 func1005_toggle_snipers[] = {
hide_chr(CHR_SNIPER8)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x002b, /*goto*/ 0x06)
endloop(0x08)
@ -1723,7 +1723,7 @@ u8 func1005_toggle_snipers[] = {
// @bug: When using small characters or play as Elvis cheats, the height
// criteria is not met so the snipers cannot be unhidden.
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -500, OPERATOR_LESS_THAN, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x004e, /*goto*/ 0x06)
label(0x2d)
@ -1791,7 +1791,7 @@ u8 func0404_sniper[] = {
endloop(0x11)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
dprint 'S','T','A','R','T','\n',0,
if_target_chr_in_sight(/*goto*/ 0x58)
@ -1823,7 +1823,7 @@ u8 func0404_sniper[] = {
restart_timer
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x58)
if_saw_death(0x00, /*goto*/ 0x58)
@ -1858,7 +1858,7 @@ u8 func0404_sniper[] = {
label(0x0b)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x58)
if_saw_death(0x00, /*goto*/ 0x58)
@ -1957,7 +1957,7 @@ u8 func1006_check_snipers_dead[] = {
u8 func1007_cooling_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_COOLING_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -2007,7 +2007,7 @@ u8 func1007_cooling_switch[] = {
u8 func1008_power_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_POWER_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -2057,7 +2057,7 @@ u8 func1008_power_switch[] = {
u8 func1009_windmill_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_WINDMILL_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -2211,7 +2211,7 @@ u8 func0405_hacker[] = {
animation(ANIM_SITTING_TYPING, 0, -1, 0x14, 0x00, CHR_SELF, 2)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_HACKERS_SUCCEEDED, TRUE, /*goto*/ 0x2d)
if_chr_sees_player(/*goto*/ 0x09)
@ -2222,7 +2222,7 @@ u8 func0405_hacker[] = {
run_to_pad(0x0070)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x09)
if_chr_stopped(/*goto*/ 0x06)
@ -2290,7 +2290,7 @@ u8 func100e_check_objectives_complete[] = {
// player to enter the cellar while closing the door behind them and then
// mess with Carrington.
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_door_state(0x09, DOORSTATEBIT_OPEN, /*goto*/ 0x2d)
if_door_state(0x08, DOORSTATEBIT_OPEN, /*goto*/ 0x2d)
endloop(0x04)
@ -2532,7 +2532,7 @@ u8 func040b_init_basement_guard[] = {
u8 func1016_msg_generator[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0077, /*goto*/ 0x2d)
endloop(0x04)
@ -2578,7 +2578,7 @@ u8 func1018_msg_hidingdaniel[] = {
endloop(0x04)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0088, /*goto*/ 0x2d)
endloop(0x08)
@ -2637,7 +2637,7 @@ u8 func101b_toggle_basement_chrs[] = {
// Not sure which room 0x0087 is
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0087, /*goto*/ 0x2d)
endloop(0x04)
@ -2836,7 +2836,7 @@ u8 func101c_toggle_villa_guards[] = {
// @bug: It is possible to cross room 0x002a in a single frame on coop if
// hugging the corner tightly, which means the guards will not be unhidden.
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x002a, /*goto*/ 0x2d)
endloop(0x04)
@ -3201,7 +3201,7 @@ u8 func1025_check_basement_entered_without_subdue[] = {
beginloop(0x04)
if_objective_complete(4, /*goto*/ 0x0c)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0087, /*goto*/ 0x06)
label(0x0c)
endloop(0x04)

View File

@ -803,7 +803,7 @@ u8 func1005_check_safeinfo_destroyed[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0e) \
\
beginloop(0x04) \
consider_coop_for_p1p2_chr(CHR_SELF) \
chr_toggle_p1p2(CHR_SELF) \
if_object_in_good_condition(switch, /*goto*/ 0x2e) \
goto_next(0x0b) \
\
@ -1650,7 +1650,7 @@ u8 func100e_setup_firingrange[] = {
// Wait until guns complete or failed, or skip this check if Agent
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x2e)
if_objective_complete(0, /*goto*/ 0x2e)
if_stage_flag_eq(STAGEFLAG_AUTOGUN_SWITCH_DESTROYED, TRUE, /*goto*/ 0x2e)
@ -1673,7 +1673,7 @@ u8 func100e_setup_firingrange[] = {
// Wait until player in firing range entrance or door is opening
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0007, /*goto*/ 0x08)
if_door_state(0x23, (DOORSTATEBIT_OPEN | DOORSTATEBIT_CLOSING | DOORSTATEBIT_OPENING), /*goto*/ 0x2f)
endloop(0x0a)
@ -1683,7 +1683,7 @@ u8 func100e_setup_firingrange[] = {
restart_timer
beginloop(0x71)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0007, /*goto*/ 0x08)
if_timer_gt(600, /*goto*/ 0x08)
endloop(0x71)
@ -1728,7 +1728,7 @@ u8 func041a_hostage_holo[] = {
// Alive - wait until holo room door opened
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_door_state(0x43, (DOORSTATEBIT_OPEN | DOORSTATEBIT_OPENING), /*goto*/ 0x2e)
if_door_state(0x44, (DOORSTATEBIT_OPEN | DOORSTATEBIT_OPENING), /*goto*/ 0x2e)
endloop(0x04)
@ -2250,7 +2250,7 @@ u8 func042e_taker_device_m[] = {
set_self_flag_bank3(CHRFLAG3_00020000)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x08)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x08)
@ -2302,7 +2302,7 @@ u8 func0430_taker_device_f[] = {
set_self_flag_bank3(CHRFLAG3_00020000)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x08)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x08)
@ -2892,7 +2892,7 @@ u8 func1014_carrington_messages[] = {
endloop(0xca)
beginloop(0xcb)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_all_objectives_complete(/*goto*/ 0x2e)
reloop(0xcb)
@ -2928,7 +2928,7 @@ u8 func1014_carrington_messages[] = {
u8 func1015_firingrange_pc[] = {
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_FR_PC, /*goto*/ 0x08)
if_object_in_good_condition(OBJ_FR_PC, /*goto*/ 0x2e)
goto_next(0x2f)
@ -3108,7 +3108,7 @@ u8 func0410_spawner6[] = {
set_self_flag_bank3(CHRFLAG3_00040000)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(2, /*goto*/ 0x2e)
reloop(0x04)
@ -3477,7 +3477,7 @@ u8 func101c_msg_fosterworkingon[] = {
reloop(0x04)
label(0x2f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0009, /*goto*/ 0x2e)
endloop(0x0a)
@ -3652,7 +3652,7 @@ u8 func1024_setup_lifts[] = {
u8 func1025_lift_door_sounds[] = {
beginloop(0xe4)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x46, /*goto*/ 0x2e)
if_chr_activated_object(CHR_P1P2, 0x47, /*goto*/ 0x2e)
if_chr_activated_object(CHR_P1P2, 0x48, /*goto*/ 0x2e)
@ -3698,7 +3698,7 @@ u8 func1027_uplink[] = {
goto_next(0x0f)
label(0x2f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_activated_object(CHR_TARGET, OBJ_SKEDAR_SHUTTLE, /*goto*/ 0x2e)
reloop(0x04)
@ -3796,7 +3796,7 @@ u8 func1027_uplink[] = {
u8 func1028_shuttle_immunity[] = {
beginloop(0xe4)
if_stage_flag_eq(STAGEFLAG_TRIGGER_SHUTTLE_TAKEOFF, TRUE, /*goto*/ 0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0045, /*goto*/ 0x2e)
if_chr_in_room(CHR_P1P2, 0x00, 0x0046, /*goto*/ 0x2e)
if_chr_in_room(CHR_P1P2, 0x00, 0x0047, /*goto*/ 0x2e)

View File

@ -581,7 +581,7 @@ u8 func1004_check_hangar_doors_opened[] = {
set_object_flag_bank0(OBJ_HANGARDOOR4, OBJECTFLAG0_02000000)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, OBJ_HANGARDOORCONSOLE, /*goto*/ 0x06)
if_object_in_good_condition(OBJ_HANGARDOORCONSOLE, /*goto*/ 0x2d)
@ -711,7 +711,7 @@ u8 func040e_elvis_give_ar34[] = {
// Wait until player in sight
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_follow_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
@ -1157,7 +1157,7 @@ u8 func0410_wake_suspendedanim_skedar[] = {
u8 func1006_wake_slayer_skedar[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0033, /*goto*/ 0x2c)
endloop(0x04)
@ -1202,7 +1202,7 @@ u8 func1006_wake_slayer_skedar[] = {
label(0x2c)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_ENTERED_SLAYER_AREA, TRUE, /*goto*/ 0x2c)
reloop(0x0a)
@ -1297,7 +1297,7 @@ u8 func1008_hangar_lifts[] = {
beginloop(0x67)
dprint 'T','R','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_death_animation_finished(CHR_BOND, /*goto*/ 0x2c)
if_chr_in_room(CHR_BOND, 0x00, 0x0018, /*goto*/ 0x2c)
if_door_state(0x39, (DOORSTATEBIT_CLOSED | DOORSTATEBIT_CLOSING), /*goto*/ 0x2d)
@ -1327,7 +1327,7 @@ u8 func1008_hangar_lifts[] = {
// Wait until Y coordinate >= 400
beginloop(0x09)
dprint 'P','U','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x2c)
if_chr_y(CHR_P1P2, 400, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
@ -1407,7 +1407,7 @@ u8 func1008_hangar_lifts[] = {
// For buddy or counterop who might still be in the hangar,
// wait for lift to be called from hangar
beginloop(0x68)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x3b, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3c, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3b, /*goto*/ 0x2c)
@ -1483,7 +1483,7 @@ u8 func0408_knifeable_skedar[] = {
try_face_entity(0x0200, 0x0000, /*goto*/ 0x04)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_CASS_AT_PAD, TRUE, /*goto*/ 0x06)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
@ -1505,7 +1505,7 @@ u8 func0408_knifeable_skedar[] = {
jog_to_pad(0x00dd)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_stopped(/*goto*/ 0x06)
if_target_chr_in_sight(/*goto*/ 0x0c)
@ -1519,7 +1519,7 @@ u8 func0408_knifeable_skedar[] = {
try_face_entity(ENTITYTYPE_PAD, 0x00ef, /*goto*/ 0x0b)
beginloop(0x0b)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_timer_gt(600, /*goto*/ 0x06)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x0c)
@ -1533,7 +1533,7 @@ u8 func0408_knifeable_skedar[] = {
jog_to_pad(0x00d9)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_just_injured(CHR_SELF, /*goto*/ 0x0c)
dprint 'W','A','I','T','I','N','G',' ','T','W','O','\n',0,
@ -1958,7 +1958,7 @@ u8 func100c_engineroom[] = {
u8 func100d_prebridgelift[] = {
// Wait until Y >= 2600
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 2600, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
@ -1979,7 +1979,7 @@ u8 func100d_prebridgelift[] = {
// Wait until lift called at bottom by buddy or counterop
beginloop(0x68)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x3d, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x3e, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x3d, /*goto*/ 0x2c)
@ -2038,7 +2038,7 @@ u8 func100d_prebridgelift[] = {
u8 func100e_bridgelift[] = {
// Wait until Y >= 3600
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 3600, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x0a)
@ -2061,7 +2061,7 @@ u8 func100e_bridgelift[] = {
// Wait until lift called from below by buddy or counterop
beginloop(0x68)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x2f, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x30, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANTI, 0x2f, /*goto*/ 0x2c)
@ -2986,7 +2986,7 @@ u8 func0421_bridge_skedar[] = {
kneel
beginloop(0xc7)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
label(0x2c)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06)
@ -3042,7 +3042,7 @@ u8 func0421_bridge_skedar[] = {
label(0xcd)
call_rng
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06)
if_target_chr_in_sight(/*goto*/ 0xce)
@ -3062,7 +3062,7 @@ u8 func0421_bridge_skedar[] = {
restart_timer
beginloop(0xd1)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0xce)
if_timer_gt(300, /*goto*/ 0x06)
@ -3137,7 +3137,7 @@ u8 func1014_msg_hangarbaydoors[] = {
u8 func1015_msg_starmaps[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x003e, /*goto*/ 0x2c)
endloop(0x04)
@ -3149,7 +3149,7 @@ u8 func1015_msg_starmaps[] = {
u8 func1016_msg_ifwecontrolthebridge[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x006f, /*goto*/ 0x2c)
endloop(0x04)
@ -3234,7 +3234,7 @@ u8 func0423_shy_skedar[] = {
run_to_pad(0x00da)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2d)
if_chr_distance_to_pad_lt(CHR_SELF, 200, 0x00da, /*goto*/ 0x2d)
@ -3401,7 +3401,7 @@ u8 func101a_kill_maian[] = {
u8 func101c_lift_door_sounds[] = {
beginloop(0xc2)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x2f, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x30, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x31, /*goto*/ 0x2c)
@ -3454,7 +3454,7 @@ u8 func101d_unlock_doors[] = {
u8 func101e_bridge_music[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_BOND, 0x00, 0x006e, /*goto*/ 0x2c)
endloop(0x04)
@ -3534,7 +3534,7 @@ u8 func1020_engine_hum_noise[] = {
u8 func1021_check_ammo_wasted[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_SHIELDS_DISABLED, TRUE, /*goto*/ 0x0d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_weapon_equipped(CHR_P1P2, WEAPON_MAULER, /*goto*/ 0x65)
endloop(0x04)
@ -3650,7 +3650,7 @@ u8 func1025_toggle_chrs[] = {
hide_chr(CHR_BRIDGESPAWNER2)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 450, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
@ -3724,7 +3724,7 @@ u8 func1025_toggle_chrs[] = {
rebuild_squadrons
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 550, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)

View File

@ -858,7 +858,7 @@ u8 func1400_give_datauplinks[] = {
u8 func1007_check_disguise_collected[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_LABCOAT1, /*goto*/ 0x06)
if_chr_has_object(CHR_P1P2, OBJ_LABCOAT2, /*goto*/ 0x06)
if_chr_has_object(CHR_P1P2, OBJ_LABCOAT3, /*goto*/ 0x06)
@ -893,7 +893,7 @@ u8 func1026_check_records_destroyed[] = {
u8 func1003_uplink_doors[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x02, /*goto*/ 0x2d)
reloop(0x04)
@ -970,7 +970,7 @@ u8 func1003_uplink_doors[] = {
u8 func1004_uplink_lights[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x01, /*goto*/ 0x2d)
reloop(0x04)
@ -1061,7 +1061,7 @@ u8 func1004_uplink_lights[] = {
u8 func1005_uplink_autoguns[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x03, /*goto*/ 0x2d)
reloop(0x04)
@ -1142,7 +1142,7 @@ u8 func1005_uplink_autoguns[] = {
u8 func1006_check_lab_accessed[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x008f, /*goto*/ 0x06)
endloop(0x04)
@ -1342,7 +1342,7 @@ u8 func0410_labtech_showers_sa_pa[] = {
stop_chr
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2d)
if_chr_distance_lt(500, /*goto*/ 0x03)
@ -1716,7 +1716,7 @@ u8 func0418_doorman[] = {
stop_chr
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x03)
if_chr_distance_lt(500, /*goto*/ 0x03)
@ -1850,7 +1850,7 @@ u8 func0418_doorman[] = {
u8 func100b_check_doorman_dead[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_dying(CHR_DOORMAN, /*goto*/ 0x2d)
if_chr_death_animation_finished(CHR_DOORMAN, /*goto*/ 0x2d)
if_chr_unloaded(CHR_DOORMAN, /*goto*/ 0x2d)
@ -1944,7 +1944,7 @@ u8 func041a_labtech_harrysmate[] = {
stop_chr
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_in_room(CHR_P1P2, 0x00, 0x0083, /*goto*/ 0x08)
endloop(0x04)
@ -2045,7 +2045,7 @@ u8 func041b_labtech_keycardguy[] = {
// Not injured, or recovered
// Waiting to detect Jo
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2d)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x2d)
@ -2103,7 +2103,7 @@ u8 func100c_keycardguy_lights[] = {
u8 func100d_check_entered_lab[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0083, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0084, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0085, /*goto*/ 0x06)
@ -2153,7 +2153,7 @@ u8 func100e_elvis_timer[] = {
u8 func100f_check_end_level[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 300, 0x02a1, /*goto*/ 0x06)
reloop(0x04)
@ -2298,7 +2298,7 @@ u8 func0413_mechanic[] = {
// Wait for player to attempt to open door
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x0a)
if_chr_activated_object(CHR_P1P2, 0x14, /*goto*/ 0x2d)
@ -2319,7 +2319,7 @@ u8 func0413_mechanic[] = {
open_door(0x15)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x06)
endloop(0x0a)
@ -2370,7 +2370,7 @@ u8 func0413_mechanic[] = {
u8 func1011_unhide_warehouse_spawner[] = {
// Wait until player near second elevator
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00f8, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x00f7, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x00f6, /*goto*/ 0x06)
@ -2391,7 +2391,7 @@ u8 func0415_warehouse_spawner[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x08)
if_chr_in_room(CHR_TARGET, 0x00, 0x00f8, /*goto*/ 0x08)
@ -2545,7 +2545,7 @@ u8 func041e_unused_041e[] = {
u8 func1016_check_undisguised[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_DISGUISE_UNCOVERED, TRUE, /*goto*/ 0x06)
if_chr_dying(CHR_LABTECH_HARRYSMATE, /*goto*/ 0x06)
if_chr_dying(CHR_LABTECH_KEYCARDGUY, /*goto*/ 0x06)
@ -2615,7 +2615,7 @@ u8 func041f_labtech_lights[] = {
goto_next(0x04)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x53)
if_target_chr_in_sight(/*goto*/ 0x03)
@ -2701,7 +2701,7 @@ u8 func041f_labtech_lights[] = {
walk_to_pad(0x020d)
beginloop(0x0d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2d)
if_shot_near_chr(0x00, /*goto*/ 0x0f)
@ -2739,7 +2739,7 @@ u8 func041f_labtech_lights[] = {
animation(ANIM_OPERATE_0223, -1, -1, 0x10, 0x0a, CHR_SELF, 2)
beginloop(0x0e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2d)
if_shot_near_chr(0x00, /*goto*/ 0x0f)
@ -2822,7 +2822,7 @@ u8 func0420_labtech_doors[] = {
label(0x6f)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
set_target_chr(CHR_BOND)
if_chr_flag_bank2(CHR_TARGET, CHRFLAG2_DISGUISE_UNCOVERED, /*goto*/ 0x06)
@ -3063,7 +3063,7 @@ u8 func0422_labtech_records[] = {
goto_first(0x5e)
label(0x2d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x03)
if_alertness(99, OPERATOR_GREATER_THAN, /*goto*/ 0x03)
@ -3152,7 +3152,7 @@ u8 func1018_disable_chambers[] = {
#define chamber_logic(switch, chamber, stageflag) \
/* Wait for player to activate chamber switch */ \
beginloop(0x04) \
consider_coop_for_p1p2_chr(CHR_SELF) \
chr_toggle_p1p2(CHR_SELF) \
if_chr_activated_object(CHR_P1P2, switch, /*goto*/ 0x06) \
reloop(0x04) \
\
@ -3214,7 +3214,7 @@ u8 func1018_disable_chambers[] = {
u8 func1019_chamber1[] = {
// Wait for player to activate chamber switch
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_CHAMBER1_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -3285,7 +3285,7 @@ u8 func1019_chamber1[] = {
u8 func101a_chamber2[] = {
// Wait for player to activate chamber switch
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_CHAMBER2_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -3371,7 +3371,7 @@ u8 func1020_chamber8[] = {
// Wait for player to activate chamber switch
beginloop(0x04)
// Likely @bug: Chamber 8 is the only chamber that doesn't call
// consider_coop_for_p1p2_chr here.
// chr_toggle_p1p2 here.
// Co-op player might not be able to activate chamber 8.
if_chr_activated_object(CHR_P1P2, OBJ_CHAMBER8_SWITCH, /*goto*/ 0x06)
reloop(0x04)
@ -3488,7 +3488,7 @@ u8 func1021_xray_scanning[] = {
beginloop(0x04)
// @bug? In co-op, the player wearing the xray may be the player who is
// not looking at the alien.
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_weapon_equipped(CHR_P1P2, WEAPON_XRAYSCANNER, /*goto*/ 0x06)
reloop(0x04)
@ -3528,7 +3528,7 @@ u8 unregistered_function1[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_timer_gt(600, /*goto*/ 0x08)
pause_timer
if_chr_in_room(CHR_P1P2, 0x00, 0x010d, /*goto*/ 0x06)
@ -3591,7 +3591,7 @@ u8 func0427_shock_clone[] = {
label(0x04)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x010d, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0102, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0103, /*goto*/ 0x06)
@ -3967,7 +3967,7 @@ u8 func1025_toggle_guards[] = {
set_chr_flag_bank3(0x32, CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_KEYCARD, /*goto*/ 0x2d)
endloop(0x08)
@ -4022,14 +4022,14 @@ u8 func0429_spawn_while_xraying[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_flag_bank2(CHR_P1P2, CHRFLAG2_DISGUISED, /*goto*/ 0x0d)
if_timer_gt(1800, /*goto*/ 0x2d)
reloop(0x04)
// 30 seconds passed and not disguised
label(0x2d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_flag_bank2(CHR_P1P2, CHRFLAG2_DISGUISED, /*goto*/ 0x0d)
// Xray area
@ -4403,7 +4403,7 @@ u8 func102f_shuffle_disguise[] = {
u8 func1030_lift_door_sounds[] = {
beginloop(0x5e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x46, /*goto*/ 0x2d)
if_chr_activated_object(CHR_P1P2, 0x47, /*goto*/ 0x2d)
if_chr_activated_object(CHR_P1P2, 0x48, /*goto*/ 0x2d)
@ -4497,7 +4497,7 @@ u8 func1032_count_last_room_guards[] = {
*/
u8 func1033_update_buddy_placed_flag[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_flag_bank2(CHR_P1P2, CHRFLAG2_BUDDY_PLACED, /*goto*/ 0x2d)
endloop(0x04)

View File

@ -964,7 +964,7 @@ u8 func140e_check_interceptors_destroyed[] = {
u8 func100c_maingate_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_door_state(OBJ_MAINGATE1, DOORSTATEBIT_CLOSING, /*goto*/ 0x2e)
goto_next(0x06)
@ -1107,7 +1107,7 @@ u8 func1405_antenna_switch[] = {
set_object_flag_bank0(OBJ_ANTENNA, OBJECTFLAG0_DEACTIVATED)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_ANTENNA_SWITCH, /*goto*/ 0x2e)
reloop(0x04)
@ -1163,7 +1163,7 @@ u8 func1405_antenna_switch[] = {
u8 func1006_lift_switches[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT1_SWITCH, /*goto*/ 0x09)
if_chr_activated_object(CHR_P1P2, OBJ_LIFT2_SWITCH, /*goto*/ 0x0a)
reloop(0x04)
@ -1229,7 +1229,7 @@ u8 func1006_lift_switches[] = {
u8 func1007_check_hangar_accessed[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0042, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0043, /*goto*/ 0x06)
endloop(0x04)
@ -1248,7 +1248,7 @@ u8 func1008_check_end_level[] = {
endloop(0x04)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0060, /*goto*/ 0x06)
endloop(0x09)
@ -1296,7 +1296,7 @@ u8 func1009_check_radar_shut_down[] = {
u8 func100b_final_hangar[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(0, /*goto*/ 0x2e)
reloop(0x04)
@ -1521,9 +1521,9 @@ u8 func0417_traitor[] = {
goto_next(0x0c)
beginloop(0x0b)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -1373, OPERATOR_LESS_THAN, /*goto*/ 0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -1373, OPERATOR_LESS_THAN, /*goto*/ 0x10)
if_chr_stopped(/*goto*/ 0x0c)
endloop(0x0b)
@ -1593,7 +1593,7 @@ u8 func0416_mechanic[] = {
animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, 0x10, 0x10, CHR_SELF, 2)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_INTERCEPTOR, TRUE, /*goto*/ 0x2f)
if_just_injured(CHR_SELF, /*goto*/ 0x2e)
@ -1616,7 +1616,7 @@ u8 func0416_mechanic[] = {
animation(ANIM_STANDING_TYPE_ONE_HAND, 0, 193, 0x10, 0x10, CHR_SELF, 2)
beginloop(0x0d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_shot_at_close_range(/*goto*/ 0x2e)
if_target_chr_in_sight(/*goto*/ 0x2e)
@ -1680,7 +1680,7 @@ u8 func040a_top_interceptor[] = {
set_chr_health(CHR_SELF, 5000)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x59)
endloop(0x04)
@ -1691,7 +1691,7 @@ u8 func040a_top_interceptor[] = {
begin_hovercar_path(0x22)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0x06)
if_chr_sees_player(/*goto*/ 0x59)
@ -2364,7 +2364,7 @@ u8 func1013_bunker_lasers[] = {
u8 func1011_bunker_explosives[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_RADAR_TERMINAL, /*goto*/ 0x2e)
reloop(0x04)
@ -2597,7 +2597,7 @@ u8 func1018_unhide_guards[] = {
// Wait until player in room 0x0044 (first hangar ramp)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0044, /*goto*/ 0x2e)
endloop(0x09)
@ -2823,7 +2823,7 @@ u8 func101a_check_mechanic_dead[] = {
*/
u8 func101b_msg_airinterceptradar[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0001, /*goto*/ 0x2e)
endloop(0x04)
@ -2838,7 +2838,7 @@ u8 func101c_msg_cantthrow[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0013, /*goto*/ 0x2e)
endloop(0x04)
@ -2855,7 +2855,7 @@ u8 func101c_msg_cantthrow[] = {
u8 func101d_msg_hangarlift[] = {
// Wait for radar shut down and player in room 0x0001 (which is impossible)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(0, /*goto*/ 0x2e)
reloop(0x04)
@ -2871,7 +2871,7 @@ u8 func101d_msg_hangarlift[] = {
u8 func101e_msg_triggerfinger[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0051, /*goto*/ 0x2e)
endloop(0x04)
@ -2885,7 +2885,7 @@ u8 func0421_activate_autogun[] = {
set_onshot_function(GFUNC_ALERTED)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x2e)
if_shot_at_close_range(/*goto*/ 0x2e)
@ -2983,7 +2983,7 @@ u8 func1022_check_lift_switches_destroyed[] = {
u8 func1024_lift_door_sounds[] = {
beginloop(0x7e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x3c, /*goto*/ 0x0a)
if_chr_activated_object(CHR_P1P2, 0x3e, /*goto*/ 0x0b)
if_chr_activated_object(CHR_P1P2, 0x3d, /*goto*/ 0x41)

View File

@ -3117,7 +3117,7 @@ u8 func041b_sniper_wait_for_detection[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2e)
if_enemy_distance_lt_and_los(1000, /*goto*/ 0x2e)
@ -3162,7 +3162,7 @@ u8 func041d_sniper[] = {
cmd0139(70, 0x02, TRUE)
beginloop(0x63)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_sees_player(/*goto*/ 0x2e)
dprint 'N','O',' ','P','L','A','Y','E','R',' ','T','A','R','G','E','T','\n',0,
if_enemy_distance_lt_and_los(1000, /*goto*/ 0x2f)
@ -3251,7 +3251,7 @@ u8 func041d_sniper[] = {
u8 func040c_blonde[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x06)
endloop(0x04)
@ -3285,7 +3285,7 @@ u8 func100c_countdown_timer[] = {
start_countdown_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_countdown_timer_lt(1, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x000c, /*goto*/ 0x2e)
endloop(0x04)
@ -3516,7 +3516,7 @@ u8 func1010_agent_hallway_spawner[] = {
// Wait until player in a certain room
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0054, /*goto*/ 0x2e)
endloop(0x04)
@ -3529,7 +3529,7 @@ u8 func1010_agent_hallway_spawner[] = {
// Wait until player in a certain room
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_P1P2)
chr_toggle_p1p2(CHR_P1P2)
if_chr_in_room(CHR_P1P2, 0x00, 0x005a, /*goto*/ 0x2e)
endloop(0x08)
@ -3542,7 +3542,7 @@ u8 func1010_agent_hallway_spawner[] = {
// Wait until player in a certain room
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0067, /*goto*/ 0x2e)
endloop(0x09)
@ -3990,7 +3990,7 @@ u8 func040a_check_pa_canisters_destroyed[] = {
*/
u8 func101f_pa_circleroom_spawner[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_door_state(0x09, (DOORSTATEBIT_OPEN | DOORSTATEBIT_CLOSING | DOORSTATEBIT_OPENING), /*goto*/ 0x2e)
if_chr_in_room(CHR_P1P2, 0x00, 0x008b, /*goto*/ 0x2e)
endloop(0x04)
@ -4007,7 +4007,7 @@ u8 func101f_pa_circleroom_spawner[] = {
restart_timer
beginloop(0x20)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x008c, /*goto*/ 0x58)
dprint 'T','I','M','E','\n',0,
if_timer_lt(300, /*goto*/ 0x21)
@ -4045,7 +4045,7 @@ u8 func041f_init_pa_circleroom_miniskedar[] = {
u8 func1020_pa_deadendroom_spawner[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00b4, /*goto*/ 0x2e)
if_chr_in_room(CHR_P1P2, 0x00, 0x00b8, /*goto*/ 0x2e)
endloop(0x04)
@ -4193,7 +4193,7 @@ u8 func1022_control_room[] = {
// SA and PA
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x2e)
endloop(0x04)
@ -4228,7 +4228,7 @@ u8 func1023_check_drcaroll_restored[] = {
if_chr_death_animation_finished(CHR_ELVIS, /*goto*/ 0x0d)
if_chr_dying(CHR_ELVIS, /*goto*/ 0x0d)
if_chr_unloaded(CHR_ELVIS, /*goto*/ 0x0d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 200, 0x0193, /*goto*/ 0x2e)
reloop(0x04)
@ -4516,7 +4516,7 @@ u8 func040f_miniskedar_unalerted[] = {
rebuild_squadrons
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2e)
endloop(0x04)
@ -4583,7 +4583,7 @@ u8 func042c_elvis_stop[] = {
u8 func102f_unlock_drcaroll_door[] = {
// Wait until player in Dr Caroll room
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x2e)
endloop(0x08)
@ -4693,7 +4693,7 @@ u8 func1034_enable_blondes[] = {
hide_chr(CHR_BLONDE2)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004c, /*goto*/ 0x2e)
endloop(0x04)

View File

@ -710,7 +710,7 @@ u8 func100f_check_mine[] = {
// SA and PA
yield
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_BRIEFCASE1, /*goto*/ 0x03)
reloop(0x08)
@ -800,7 +800,7 @@ u8 func100f_check_mine[] = {
u8 func1026_uplink[] = {
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_TAXI, /*goto*/ 0x03)
reloop(0x10)
@ -888,7 +888,7 @@ u8 func040d_limo[] = {
// Wait until not in room
beginloop(0x2d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0002, /*goto*/ 0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0010, /*goto*/ 0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0012, /*goto*/ 0x03)
@ -1131,7 +1131,7 @@ u8 func1005_check_things_destroyed[] = {
u8 func1006_check_for_end[] = {
beginloop(0x05)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(0, /*goto*/ 0x03)
reloop(0x05)
@ -1335,7 +1335,7 @@ u8 func0412_cia[] = {
// Not shot, not a patroller, or patroller who has started his path
label(0x10)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_self_flag_bankx_eq(CHRFLAG0_00004000, TRUE, BANK_0, /*goto*/ 0x37)
call_rng
@ -1395,7 +1395,7 @@ u8 func0412_cia[] = {
go_to_target_pad(SPEED_WALK)
beginloop(0x36)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_saw_death(0x00, /*goto*/ 0x1d)
if_shot_near_chr(0x00, /*goto*/ 0x1e)
@ -1572,7 +1572,7 @@ u8 func0413_bugspotter[] = {
// Wait until player in sight (mainly)
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x04)
if_stage_flag_eq(STAGEFLAG_LIMO_READY_TO_LEAVE, TRUE, /*goto*/ LABEL_RUN_AWAY)
@ -1613,10 +1613,10 @@ u8 func0413_bugspotter[] = {
goto_next(LABEL_RUN_AWAY)
label(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x03)
goto_next(0x0a)
@ -1683,10 +1683,10 @@ u8 func0413_bugspotter[] = {
if_object_in_good_condition(OBJ_LIMO, /*goto*/ 0x03)
goto_next(LABEL_RUN_AWAY)
label(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x03)
goto_next(0x04)
@ -1701,7 +1701,7 @@ u8 func0413_bugspotter[] = {
endloop(0x0e)
label(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x03)
goto_next(0x04)
@ -1822,7 +1822,7 @@ u8 func041d_fbi[] = {
label(0x19)
set_action(ACTION_SCAN, TRUE)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(100, OPERATOR_LESS_THAN, /*goto*/ 0x04)
goto_next(0x16)
@ -1853,10 +1853,10 @@ u8 func041d_fbi[] = {
beginloop(0x06)
if_chr_distance_lt(500, /*goto*/ 0x18)
if_target_chr_in_sight(/*goto*/ 0x18)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x18)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
endloop(0x06)
@ -1974,7 +1974,7 @@ u8 func041a_robot[] = {
set_stage_flag(STAGEFLAG_ROBOT_NEAR_HOME)
label(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_TRIGGER_CRASH, TRUE, /*goto*/ 0x01)
if_target_chr_in_sight(/*goto*/ 0x08)
@ -2096,7 +2096,7 @@ u8 func041e_sealer1[] = {
set_onshot_function(GFUNC_IDLE)
beginloop(0x19)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_stage_flag_eq(STAGEFLAG_CRASH_FINISHED, TRUE, /*goto*/ 0x03)
if_alertness(100, OPERATOR_LESS_THAN, /*goto*/ 0x04)
@ -2460,7 +2460,7 @@ u8 func1010_elevator_switch[] = {
yield
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_SWITCH, /*goto*/ 0x03)
if_stage_flag_eq(STAGEFLAG_ELEVATOR_SEALED, TRUE, /*goto*/ 0x04)
label(0x04)
@ -2949,7 +2949,7 @@ u8 func0411_60f4[] = {
u8 func101a_msg_onlyplace[] = {
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x03)
endloop(0x10)
@ -2970,7 +2970,7 @@ u8 func101b_msg_blockedupdoors[] = {
endloop(0x10)
beginloop(0x05)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x003a, /*goto*/ 0x03)
endloop(0x05)
@ -2993,7 +2993,7 @@ u8 func101c_msg_reprogramthattaxi[] = {
label(0x03)
if_stage_flag_eq(STAGEFLAG_TAXI_REPROGRAMMED, TRUE, /*goto*/ 0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x004a, /*goto*/ 0x03)
endloop(0x05)
@ -3006,7 +3006,7 @@ u8 func101c_msg_reprogramthattaxi[] = {
u8 func101d_msg_pointofingress[] = {
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0059, /*goto*/ 0x03)
endloop(0x10)
@ -3074,7 +3074,7 @@ u8 func1020_elevator_doors[] = {
*/
u8 func1021_check_topstairs_guy[] = {
beginloop(0x10)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 500, OPERATOR_LESS_THAN, /*goto*/ 0x03)
goto_next(0x04)
label(0x03)
@ -3097,7 +3097,7 @@ u8 func040d_limo_flags[] = {
// Wait until player not in certain rooms
beginloop(0x2f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0002, /*goto*/ 0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0010, /*goto*/ 0x03)
if_chr_in_room(CHR_P1P2, 0x00, 0x0012, /*goto*/ 0x03)

View File

@ -581,7 +581,7 @@ u8 func1024_give_objects[] = {
set_object_flag_bank0(OBJ_REMOTEMINE_COOP, OBJECTFLAG0_00100000)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_has_object(CHR_P1P2, OBJ_EQUIPMENT, /*goto*/ 0x06)
endloop(0x04)
@ -599,7 +599,7 @@ u8 func1024_give_objects[] = {
u8 func1004_reassign_ailists_during_conversation[] = {
// Wait until player in president's room
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0055, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0056, /*goto*/ 0x06)
if_chr_in_room(CHR_P1P2, 0x00, 0x0057, /*goto*/ 0x06)
@ -1121,7 +1121,7 @@ u8 func1009_check_end_level[] = {
u8 func100a_autopilot_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_AUTOPILOT_SWITCH, /*goto*/ 0x2d)
goto_next(0x08)
@ -1678,7 +1678,7 @@ u8 func100c_cockpit_stripes[] = {
set_self_flag_bank3(CHRFLAG3_00000040)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x06)
if_enemy_distance_lt_and_los(2540, /*goto*/ 0x06)
@ -2204,7 +2204,7 @@ u8 func1010_dumbwaiter1[] = {
set_object_image(OBJ_DUMBWAITER1_SWITCH, 0x00, 0x12)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_DUMBWAITER1_SWITCH, /*goto*/ 0x2d)
endloop(0x04)
@ -2265,7 +2265,7 @@ u8 func1011_dumbwaiter2[] = {
set_object_image(OBJ_DUMBWAITER2_SWITCH, 0x00, 0x12)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_DUMBWAITER2_SWITCH, /*goto*/ 0x2d)
endloop(0x04)
@ -2436,7 +2436,7 @@ u8 func0415_cloner1[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_UFO_ATTACHMENT_DAMAGED, TRUE, /*goto*/ 0x0e)
// These rooms are the attachment area
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0017, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0018, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0019, /*goto*/ 0x2d)
@ -2532,7 +2532,7 @@ u8 func0418_cloner2[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_UFO_ATTACHMENT_DAMAGED, TRUE, /*goto*/ 0x0e)
// These rooms are the attachment area
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0017, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0018, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0019, /*goto*/ 0x2d)
@ -2631,7 +2631,7 @@ u8 func041b_cloner3[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_UFO_ATTACHMENT_DAMAGED, TRUE, /*goto*/ 0x0e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0017, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0018, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x0019, /*goto*/ 0x2d)
@ -2753,7 +2753,7 @@ u8 func041e_blonde[] = {
beginloop(0x75)
label(0x2d)
consider_coop_for_p1p2_chr(CHR_P1P2)
chr_toggle_p1p2(CHR_P1P2)
set_target_chr(CHR_BOND)
if_target_chr_in_sight(/*goto*/ 0x6a)
if_near_miss(/*goto*/ 0x6b)
@ -2865,7 +2865,7 @@ u8 func0421_trent_waiting[] = {
set_chr_flag_bank3(CHR_TRENT, CHRFLAG3_INVINCIBLE_TO_GUNFIRE)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x06)
endloop(0x04)
@ -2889,7 +2889,7 @@ u8 func0420_trent_attacking[] = {
stop_chr
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
try_unset_chr_flag_bank3_02000000(CHR_SELF, /*goto*/ 0x2d)
set_target_chr(CHR_PRESIDENT)
@ -3001,7 +3001,7 @@ u8 func1013_unhide_trent_and_blondes[] = {
hide_chr(CHR_BLONDE2)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_PRESIDENT_STARTED_RUNNING, TRUE, /*goto*/ 0x2d)
reloop(0x04)
@ -3128,7 +3128,7 @@ u8 func0407_steward[] = {
set_onshot_function(FUNC_STEWARD_SHOT)
beginloop(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_idle(/*goto*/ 0x2d)
call_rng
@ -3203,7 +3203,7 @@ u8 func0407_steward[] = {
goto_first(0x79)
beginloop(0x87)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x89)
if_shot_near_chr(0x00, /*goto*/ 0x89)
@ -3357,7 +3357,7 @@ u8 func1016_msg_onthislevel[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 440, OPERATOR_LESS_THAN, /*goto*/ 0x06)
goto_next(0x2d)
@ -3400,7 +3400,7 @@ u8 func1017_msg_gettothecockpit[] = {
u8 func1018_msg_maybeamine[] = {
beginloop(0x04)
if_stage_flag_eq(STAGEFLAG_ALL_OBJECTIVES_COMPLETE, TRUE, /*goto*/ 0x0e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_objective_complete(2, /*goto*/ 0x2d)
reloop(0x04)
@ -3617,7 +3617,7 @@ u8 func101a_equipment_switch[] = {
set_object_image(OBJ_EQUIPMENT_SWITCH, 0x00, 0x12)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_EQUIPMENT_SWITCH, /*goto*/ 0x2d)
reloop(0x04)
@ -3678,7 +3678,7 @@ u8 func101b_hoverbike_switch[] = {
open_door(0x20)
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_door_state(0x20, DOORSTATEBIT_CLOSING, /*goto*/ 0x2d)
if_chr_activated_object(CHR_P1P2, OBJ_HOVERBIKE_SWITCH, /*goto*/ 0x0a)
reloop(0x09)

View File

@ -1166,7 +1166,7 @@ u8 func1005_check_experiemnt_destroyed_pointless[] = {
u8 func1006_activate_alarm[] = {
// Wait until player is in crate room
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x003f, /*goto*/ 0x2c)
endloop(0x04)
@ -1309,7 +1309,7 @@ u8 func1007_disable_pods[] = {
u8 func1008_check_console[] = {
// Wait for console activated or destroyed
beginloop(0x04)
if_chr_activated_object(CHR_F3, OBJ_CONSOLE, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANY, OBJ_CONSOLE, /*goto*/ 0x2c)
if_object_in_good_condition(OBJ_CONSOLE, /*goto*/ 0x06)
goto_next(0x08)
label(0x06)
@ -1383,7 +1383,7 @@ u8 func1009_check_for_exit[] = {
u8 func100a_vertical_door_sounds[] = {
// Wait for player to activate vertical doors
beginloop(0x5d)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x46, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x47, /*goto*/ 0x2c)
if_chr_activated_object(CHR_P1P2, 0x48, /*goto*/ 0x2c)
@ -1835,7 +1835,7 @@ u8 func100f_init_lighting[] = {
u8 func1010_unload_part1_chrs[] = {
// Wait until player is in room 0x0067 - probably crate room or so
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0067, /*goto*/ 0x2c)
endloop(0x04)

View File

@ -852,7 +852,7 @@ u8 func0407_init_cloaked_skedar[] = {
beginloop(0x04)
// Wait until clone dead - which it would be immediately?
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
label(0x4f)
if_chr_death_animation_finished(CHR_CLONE, /*goto*/ 0x4f)
reloop(0x04)
@ -886,7 +886,7 @@ u8 func0408_cloaked_skedar[] = {
if_objective_complete(4, /*goto*/ 0x0e)
// King is alive
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 300, TARGET_PAD, /*goto*/ 0x2d)
// 1 in 256 chance of making skedar roar sound
@ -919,7 +919,7 @@ u8 func0404_miniskedar_spawner[] = {
// Wait until player near trigger pad
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_distance_to_pad_lt(CHR_P1P2, 300, TARGET_PAD, /*goto*/ 0x4f)
endloop(0x04)
@ -1065,7 +1065,7 @@ u8 func1005_5e0c[] = {
yield
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_distance_to_pad_lt(OBJ_PUZZLEROCK, 50, 0x00d4, /*goto*/ 0x2d)
if_chr_distance_to_pad_lt(CHR_P1P2, 50, 0x00d4, /*goto*/ 0x2d)
if_chr_in_room(CHR_P1P2, 0x00, 0x005f, /*goto*/ 0x2e)
@ -1440,7 +1440,7 @@ u8 func1009_altar[] = {
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0f)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_flag_bank1(OBJ_ALTAR, OBJECTFLAG1_00002000, /*goto*/ 0x2d)
if_chr_distance_to_pad_lt(CHR_P1P2, 300, 0x0137, /*goto*/ 0x2e)
label(0x2d)
@ -1688,7 +1688,7 @@ u8 func0409_reaper_slayer_skedar[] = {
kneel
beginloop(0x5f)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
label(0x2d)
set_target_chr(CHR_P1P2)
if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x2e)
@ -1756,7 +1756,7 @@ u8 func0409_reaper_slayer_skedar[] = {
label(0x6a)
call_rng
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06)
if_target_chr_in_sight(/*goto*/ 0x6b)
@ -1776,7 +1776,7 @@ u8 func0409_reaper_slayer_skedar[] = {
restart_timer
beginloop(0x6e)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x6b)
if_timer_gt(300, /*goto*/ 0x06)
@ -1814,7 +1814,7 @@ u8 func100a_army_room[] = {
set_lights_state(0x0087, 0x01, 0x06, 0x00, 0x00)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0082, /*goto*/ 0x2d)
endloop(0x04)
@ -1851,7 +1851,7 @@ u8 func100a_army_room[] = {
u8 func100b_check_sanctum_accessed[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x007a, /*goto*/ 0x2d)
endloop(0x04)
@ -1929,7 +1929,7 @@ u8 func040c_king_waiting[] = {
set_morale(0)
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0088, /*goto*/ 0x2d)
endloop(0x08)
@ -1961,7 +1961,7 @@ u8 func040d_king_combat[] = {
#define LABEL_LOW_SHIELD 0x7c
beginloop(0x59)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_in_disarm_range(/*goto*/ 0x03)
if_chr_shield_lt(CHR_SELF, 20, /*goto*/ LABEL_LOW_SHIELD)
@ -1969,7 +1969,7 @@ u8 func040d_king_combat[] = {
// Main loop
label(LABEL_MAINLOOP)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
try_face_entity(0x0200, 0x0000, /*goto*/ 0x04)
@ -2991,7 +2991,7 @@ u8 func0413_hide[] = {
u8 func1015_msg_specialpillars[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0026, /*goto*/ 0x91)
if_chr_in_room(CHR_P1P2, 0x00, 0x0031, /*goto*/ 0x92)
if_chr_in_room(CHR_P1P2, 0x00, 0x0035, /*goto*/ 0x93)
@ -3039,7 +3039,7 @@ u8 func1016_msg_powersmoreconstant[] = {
restart_timer
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0077, /*goto*/ 0x2d)
endloop(0x04)
@ -3051,7 +3051,7 @@ u8 func1016_msg_powersmoreconstant[] = {
u8 func1017_msg_skedararmy[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0082, /*goto*/ 0x2d)
endloop(0x04)
@ -3063,7 +3063,7 @@ u8 func1017_msg_skedararmy[] = {
u8 func1018_msg_cutoffthehead[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0088, /*goto*/ 0x2d)
endloop(0x04)

View File

@ -816,7 +816,7 @@ u8 func0402_jonathan_waiting_for_meetup[] = {
set_self_flag_bank3(CHRFLAG3_00080000)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x06)
endloop(0x04)
@ -1496,7 +1496,7 @@ u8 func0406_unused_0406[] = {
u8 func1008_spawngroup1[] = {
// Wait until meeting done and player in the T-junction corridor
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_MET_JON, TRUE, /*goto*/ 0x06)
reloop(0x04)
@ -1852,7 +1852,7 @@ u8 func1009_blow_up_wall[] = {
u8 func100a_check_hangar_accessed[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00e7, /*goto*/ 0x06)
endloop(0x04)
@ -1900,7 +1900,7 @@ u8 func100c_medpack_activation[] = {
endloop(0x67)
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_difficulty_lt(DIFF_SA, /*goto*/ 0x0c)
if_chr_activated_object(CHR_P1P2, OBJ_HOVERBED, /*goto*/ 0x06)
reloop(0x04)
@ -1938,7 +1938,7 @@ u8 func100c_medpack_activation[] = {
yield
beginloop(0x0c)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00df, /*goto*/ 0x32)
endloop(0x0c)
@ -2030,7 +2030,7 @@ u8 func040b_elvis_follow[] = {
u8 func100f_terminals[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, OBJ_TERMINAL1, /*goto*/ 0x08)
if_chr_activated_object(CHR_P1P2, OBJ_TERMINAL2, /*goto*/ 0x0a)
reloop(0x04)
@ -2222,7 +2222,7 @@ u8 func1011_unlock_doors_when_jo_escaping[] = {
u8 func1012_hoverbike_auto_doors[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_JO_ESCAPE_STARTED, TRUE, /*goto*/ 0x06)
reloop(0x04)
@ -3133,7 +3133,7 @@ u8 func1021_jo_escaping[] = {
set_stage_flag(STAGEFLAG_TRIGGER_JETBIKE_MESSAGE)
beginloop(0x0a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x0014, /*goto*/ 0x06)
endloop(0x0a)
@ -3288,7 +3288,7 @@ u8 func041a_init_superdragon_guard[] = {
u8 func101a_medpack_switch[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_object_in_good_condition(OBJ_MEDPACK_SWITCH, /*goto*/ 0x32)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
set_stage_flag(STAGEFLAG_MEDPACK_SWITCH_DESTROYED)
@ -3321,7 +3321,7 @@ u8 unregistered_function1[] = {
// Wait until player in mine room
beginloop(0x08)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00dc, /*goto*/ 0x32)
if_chr_in_room(CHR_P1P2, 0x00, 0x00dd, /*goto*/ 0x32)
endloop(0x08)
@ -3354,7 +3354,7 @@ u8 func040f_warp_jon_to_catwalk[] = {
u8 func101d_msg_medpackaroundhere[] = {
beginloop(0x04)
if_difficulty_lt(DIFF_PA, /*goto*/ 0x06)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x00d2, /*goto*/ 0x32)
endloop(0x04)
@ -3391,7 +3391,7 @@ u8 func101e_msg_hookup[] = {
u8 func101f_msg_oil[] = {
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_JON_SAID_MAINT_HATCH, TRUE, /*goto*/ 0x32)
reloop(0x04)

View File

@ -1157,7 +1157,7 @@ u8 func040d_start_path37[] = {
u8 func1002_lightswitch[] = {
// Wait until switch activated
beginloop(0x04)
if_chr_activated_object(CHR_F3, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
if_chr_activated_object(CHR_ANY, OBJ_LIGHTSWITCH, /*goto*/ 0x2c)
reloop(0x04)
label(0x2c)
@ -1303,7 +1303,7 @@ u8 func0411_cass_in_office[] = {
animation(0x00a0, 0, 193, 0x18, 0x10, CHR_SELF, 2)
beginloop(0x54)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x55)
endloop(0x54)
@ -1340,7 +1340,7 @@ u8 func0411_cass_in_office[] = {
// Wait until player in disarm range
beginloop(0x5a)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_in_disarm_range(/*goto*/ 0x83)
reloop(0x5a)
@ -1417,7 +1417,7 @@ u8 func0413_cass_running[] = {
stop_chr
beginloop(0x09)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x2c)
endloop(0x09)
@ -1505,7 +1505,7 @@ u8 func1006_lift_disabling[] = {
// Wait until player Y above -4300
beginloop(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -4300, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
@ -1573,7 +1573,7 @@ u8 func0415_chief[] = {
// Wait until player in sight
beginloop(0x03)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x06)
if_target_chr_in_sight(/*goto*/ 0x2c)
@ -1602,7 +1602,7 @@ u8 func100f_disable_chiefs_lift[] = {
// Wait until player above -4400
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -4400, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
@ -1636,7 +1636,7 @@ u8 func100f_disable_chiefs_lift[] = {
u8 func1007_bomb_logic[] = {
// Wait until in lab elevator and has bomb equipped
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_in_room(CHR_P1P2, 0x00, 0x002b, /*goto*/ 0x2c)
reloop(0x04)
@ -1731,7 +1731,7 @@ u8 func1008_check_bomb_unplantable[] = {
// Door is closed
label(0xb2)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_stage_flag_eq(STAGEFLAG_BOMB_PLANTED, TRUE, /*goto*/ 0x0d)
if_chr_in_room(CHR_BOND, 0x00, 0x002b, /*goto*/ 0x06)
if_chr_in_room(CHR_COOP, 0x00, 0x002b, /*goto*/ 0x06)
@ -1778,7 +1778,7 @@ u8 func1009_toggle_top_guards[] = {
// Wait until player above -4100
beginloop(0x04)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, -4100, OPERATOR_LESS_THAN, /*goto*/ 0x2c)
goto_next(0x06)
label(0x2c)
@ -1837,7 +1837,7 @@ u8 func100a_check_for_completion[] = {
// Wait until player at helipad
label(0x2c)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_y(CHR_P1P2, 0, OPERATOR_LESS_THAN, /*goto*/ 0x2d)
// Wait 1 second
@ -1889,7 +1889,7 @@ u8 func100b_start_lifts[] = {
u8 func100c_lift_doors[] = {
// Wait until player activated a lift door
beginloop(0xc1)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_activated_object(CHR_P1P2, 0x57, /*goto*/ 0xb1)
if_chr_activated_object(CHR_P1P2, 0x58, /*goto*/ 0xb1)
if_chr_activated_object(CHR_P1P2, 0x59, /*goto*/ 0xb1)

View File

@ -50201,37 +50201,37 @@ glabel chrResolveId
//{
// if (ref) {
// switch (id) {
// case 0xfa:
// case CHR_SEESHOT:
// id = ref->chrseeshot;
// break;
// case 0xfb:
// case CHR_SEEDIE:
// id = ref->chrseedie;
// break;
// case 0xfc:
// case CHR_PRESET:
// id = ref->chrpreset1;
// break;
// case 0xfd:
// case CHR_SELF:
// id = ref->chrnum;
// break;
// case 0xf9:
// case CHR_CLONE:
// id = ref->chrdup;
// break;
// case 0xf8:
// case CHR_BOND:
// if (g_Vars.bond && g_Vars.bond->targetpos && g_Vars.bond->targetpos->chr) {
// id = g_Vars.bond->targetpos->chr->chrnum;
// }
// break;
// case 0xf5:
// case CHR_COOP:
// if (g_Vars.coop && g_Vars.coop->targetpos && g_Vars.coop->targetpos->chr) {
// id = g_Vars.coop->targetpos->chr->chrnum;
// }
// break;
// case 0xf4:
// case CHR_ANTI:
// if (g_Vars.anti && g_Vars.anti->targetpos && g_Vars.anti->targetpos->chr) {
// id = g_Vars.anti->targetpos->chr->chrnum;
// }
// break;
// case 0xf2:
// case CHR_P1P2:
// {
// u32 index = g_Vars.coopplayernum >= 0 ? ref->p1p2 : g_Vars.bondplayernum;
// struct player *player = g_Vars.players[index];
@ -50240,7 +50240,7 @@ glabel chrResolveId
// }
// }
// break;
// case 0xf1:
// case CHR_P1P2_OPPOSITE:
// if (g_Vars.coopplayernum >= 0) {
// struct player *player = g_Vars.players[1 - ref->p1p2];
// if (player && player->targetpos && player->targetpos->chr) {
@ -50248,7 +50248,7 @@ glabel chrResolveId
// }
// }
// break;
// case 0xf6:
// case CHR_TARGET:
// {
// struct position *target = chrGetTargetPosition(ref);
// if ((target->unk00 == 3 || target->unk00 == 6) && target->chr) {
@ -50259,22 +50259,22 @@ glabel chrResolveId
// }
// } else { // ref is NULL
// switch (id) {
// case 0xf8:
// case CHR_BOND:
// if (g_Vars.bond && g_Vars.bond->targetpos && g_Vars.bond->targetpos->chr) {
// id = g_Vars.bond->targetpos->chr->chrnum;
// }
// break;
// case 0xf5:
// case CHR_COOP:
// if (g_Vars.coop && g_Vars.coop->targetpos && g_Vars.coop->targetpos->chr) {
// id = g_Vars.coop->targetpos->chr->chrnum;
// }
// break;
// case 0xf4:
// case CHR_ANTI:
// if (g_Vars.anti && g_Vars.anti->targetpos && g_Vars.anti->targetpos->chr) {
// id = g_Vars.anti->targetpos->chr->chrnum;
// }
// break;
// case 0xf2: // P1/P2
// case CHR_P1P2:
// {
// struct player *player = g_Vars.players[g_Vars.bondplayernum];
// if (player && player->targetpos && player->targetpos->chr) {
@ -50282,7 +50282,7 @@ glabel chrResolveId
// }
// }
// break;
// case 0xf1: // P1/P2 inverse?
// case CHR_P1P2_OPPOSITE:
// if (g_Vars.coopplayernum >= 0) {
// struct player *player = g_Vars.players[g_Vars.coopplayernum];
// if (player && player->targetpos && player->targetpos->chr) {

View File

@ -3252,7 +3252,7 @@ glabel aiIfChrActivatedObject
// bool pass = false;
//
// if (obj && obj->pos) {
// if (cmd[2] == CHR_F3) {
// if (cmd[2] == CHR_ANY) {
// if (obj->hidden & (OBJHIDDENFLAG_ACTIVATED_BY_BOND | OBJHIDDENFLAG_ACTIVATED_BY_COOP)) {
// pass = true;
// obj->hidden &= ~(OBJHIDDENFLAG_ACTIVATED_BY_BOND | OBJHIDDENFLAG_ACTIVATED_BY_COOP);
@ -13618,7 +13618,7 @@ bool aiToggleP1P2(void)
/**
* @cmd 01b5
*/
bool ai01b5(void)
bool aiChrSetP1P2(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;

View File

@ -1770,7 +1770,14 @@
mkshort(0x01b2), \
value,
#define consider_coop_for_p1p2_chr(chr) \
/**
* Toggle which player (Bond or Coop) is referenced by the chr's CHR_P1P2
* identifier. This should be called inside a loop to give the illusion of
* referencing both players.
*
* This is safe to use in solo mode; it will not set it to coop if they don't exist.
*/
#define chr_toggle_p1p2(chr) \
mkshort(0x01b3), \
chr,
@ -1778,6 +1785,11 @@
mkshort(0x01b4), \
label,
#define chr_set_p1p2(chr, p1p2_chr) \
mkshort(0x01b5), \
chr, \
p1p2_chr,
#define enable_snow(bool) \
mkshort(0x01b6), \
bool,

View File

@ -82,16 +82,18 @@
#define CHANNEL_9 9
#define CHANNEL_10 10
#define CHR_P1P2 0xf2
#define CHR_F3 0xf3
#define CHR_ANTI 0xf4
#define CHR_COOP 0xf5
#define CHR_TARGET 0xf6
#define CHR_BOND 0xf8
#define CHR_CLONE 0xf9
#define CHR_SEEDIE 0xfb
#define CHR_PRESET 0xfc
#define CHR_SELF 0xfd
#define CHR_P1P2_OPPOSITE 0xf1
#define CHR_P1P2 0xf2
#define CHR_ANY 0xf3 // Only supported by if_chr_activated_object command
#define CHR_ANTI 0xf4
#define CHR_COOP 0xf5
#define CHR_TARGET 0xf6
#define CHR_BOND 0xf8
#define CHR_CLONE 0xf9
#define CHR_SEESHOT 0xfa
#define CHR_SEEDIE 0xfb
#define CHR_PRESET 0xfc
#define CHR_SELF 0xfd
// Character flags - bank 0 (chr struct offset 0x114 - chr->flags)
#define CHRFLAG0_CANT_ALERT_GROUP 0x00000001 // Don't set group alertness when becoming aware

View File

@ -400,7 +400,7 @@
/*0x01b2*/ bool ai01b2(void);
/*0x01b3*/ bool aiToggleP1P2(void);
/*0x01b4*/ bool ai01b4(void);
/*0x01b5*/ bool ai01b5(void);
/*0x01b5*/ bool aiChrSetP1P2(void);
/*0x01b6*/ bool aiConfigureSnow(void);
/*0x01b7*/ bool aiChrSetCloaked(void);
/*0x01b8*/ bool aiSetAutogunType(void);

View File

@ -145,7 +145,7 @@ u8 func0006_unalerted[] = {
set_action(ACTION_SCAN, TRUE)
yield
dprint 'S','2',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0x13)
if_alertness(100, OPERATOR_LESS_THAN, /*goto*/ 0x16)
@ -540,7 +540,7 @@ u8 func0006_unalerted[] = {
dprint 'S','9',0,
dprint 'W','A','L','K','I','N','G','\n',0,
if_shot_near_chr(0x00, /*goto*/ 0x16)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x13)
if_target_chr_in_sight(/*goto*/ 0x16)
@ -562,7 +562,7 @@ u8 func0006_unalerted[] = {
dprint 'E','X','A','M',' ','B','O','D','Y','\n',0,
if_shot_near_chr(0x00, /*goto*/ 0x16)
set_hear_distance(10000)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_hears_gunfire(/*goto*/ 0x16)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x13)
@ -1178,12 +1178,12 @@ u8 func0007_alerted[] = {
goto_next(0xef)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee)
set_target_chr(CHR_P1P2)
if_in_disarm_range(/*goto*/ 0x9a)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0xef)
endloop(0x03)
@ -1215,7 +1215,7 @@ u8 func0007_alerted[] = {
dprint 'A','M','B','1','\n',0,
if_distance_from_target_to_pad_lt(200, TARGET_PAD, /*goto*/ 0x13)
dprint 'A','M','B','2','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_enemy_distance_lt_and_los(1200, /*goto*/ 0xee)
endloop(0xa2)
@ -1265,7 +1265,7 @@ u8 func0007_alerted[] = {
try_aim_and_shoot_thing1(0x0220, 0x0000, /*goto*/ 0xa9)
beginloop(0xa9)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_near_miss(/*goto*/ 0x13)
if_shot_near_chr(0x00, /*goto*/ 0x13)
@ -1347,12 +1347,12 @@ u8 func0007_alerted[] = {
goto_next(0xef)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee)
set_target_chr(CHR_P1P2)
if_in_disarm_range(/*goto*/ 0x13)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0xef)
goto_first(LABEL_SNIPE)
@ -1531,7 +1531,7 @@ u8 func0007_alerted[] = {
beginloop(0x59)
cmd013d_if_grenade_thrown_nearby_maybe(ACTION_GRENADE_STOP, /*goto*/ LABEL_FLEE_GRENADE)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x5f)
if_timer_gt(240, /*goto*/ 0x61)
@ -1885,13 +1885,13 @@ u8 func0007_alerted[] = {
goto_next(0xef)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x42)
if_chr_in_view(/*goto*/ 0x42)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0xef)
if_timer_gt(240, /*goto*/ 0x49)
@ -1921,12 +1921,12 @@ u8 func0007_alerted[] = {
if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee)
goto_next(0xef)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
if_chr_target_eq(CHR_SELF, CHR_P1P2, FALSE, /*goto*/ 0xee)
set_target_chr(CHR_P1P2)
if_within_units_of_sight(30, /*goto*/ 0x42)
label(0xee)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
label(0xef)
if_timer_gt(600, /*goto*/ 0x3d)
@ -2178,7 +2178,7 @@ u8 func0007_alerted[] = {
set_function(CHR_SELF, GFUNC_HAND_COMBAT)
label(0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_gt(1300, /*goto*/ 0x13)
if_self_flag_bankx_eq(CHRFLAG1_01000000, TRUE, BANK_1, /*goto*/ 0x16)
@ -2491,7 +2491,7 @@ u8 func0007_alerted[] = {
beginloop(0x6e)
cmd013d_if_grenade_thrown_nearby_maybe(ACTION_GRENADE_STOP, /*goto*/ LABEL_FLEE_GRENADE)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_distance_lt(3000, /*goto*/ 0x6f)
endloop(0x6e)
@ -2514,7 +2514,7 @@ u8 func0007_alerted[] = {
beginloop(0x71)
if_chr_dying(CHR_SELF, /*goto*/ 0x88)
if_timer_gt(300, /*goto*/ 0x16)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_in_view(/*goto*/ 0x72)
if_bitcheck_in_position_struct(/*goto*/ 0x13)
@ -2696,7 +2696,7 @@ u8 func000a_do_idle_animation[] = {
// Nothing jumps to here or below
beginloop(0x15)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x13)
if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x16)
@ -3515,7 +3515,7 @@ u8 func000e_see_then_attack[] = {
set_onshot_function(GFUNC_ALERTED)
beginloop(0x0c)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_chr_sees_player(/*goto*/ 0x16)
endloop(0x0c)
@ -4153,7 +4153,7 @@ u8 func001b_observe_camspy[] = {
beginloop(0x0c)
if_timer_gt(60, /*goto*/ 0x0b)
if_chr_distance_lt(300, /*goto*/ 0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x16)
if_target_chr_in_sight(/*goto*/ 0x0b)
@ -4173,7 +4173,7 @@ u8 func001b_observe_camspy[] = {
beginloop(0x03)
if_timer_gt(300, /*goto*/ 0x04)
if_chr_distance_gt(400, /*goto*/ 0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x16)
if_target_chr_in_sight(/*goto*/ 0x0b)
@ -4195,7 +4195,7 @@ u8 func001b_observe_camspy[] = {
if_chr_idle(/*goto*/ 0x13)
if_timer_gt(300, /*goto*/ 0x06)
label(0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x16)
if_target_chr_in_sight(/*goto*/ 0x0b)
@ -4291,7 +4291,7 @@ u8 func001d_search_for_player[] = {
beginloop(0x03)
dprint 'S','E','A','R','C','H','I','N','I','T','\n',0,
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_target_chr_in_sight(/*goto*/ 0x12)
if_self_flag_bankx_eq(CHRFLAG0_AIVSAI, FALSE, BANK_0, /*goto*/ 0x13)
@ -4319,7 +4319,7 @@ u8 func001d_search_for_player[] = {
goto_next(0x05)
label(0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_player_looking_at_something_maybe(0x00, 0x00, 0x01, /*goto*/ 0x15)
if_target_chr_in_sight(/*goto*/ 0x12)
@ -4384,7 +4384,7 @@ u8 func001d_search_for_player[] = {
if_self_flag_bankx_eq(CHRFLAG1_00000400, FALSE, BANK_1, /*goto*/ 0x13)
if_chr_distance_lt(500, /*goto*/ 0x13)
label(0x13)
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
dprint '1','\n',0,
if_timer_gt(600, /*goto*/ 0x0b)
@ -4470,7 +4470,7 @@ u8 func001f_related_to_spawning[] = {
label(0x1a)
set_action(ACTION_SCAN, TRUE)
yield
consider_coop_for_p1p2_chr(CHR_SELF)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
if_alertness(100, OPERATOR_LESS_THAN, /*goto*/ 0x16)
goto_next(0x78)

View File

@ -14569,7 +14569,7 @@ bool (*g_CommandPointers[])(void) = {
/*0x01b2*/ ai01b2,
/*0x01b3*/ aiToggleP1P2,
/*0x01b4*/ ai01b4,
/*0x01b5*/ ai01b5,
/*0x01b5*/ aiChrSetP1P2,
/*0x01b6*/ aiConfigureSnow,
/*0x01b7*/ aiChrSetCloaked,
/*0x01b8*/ aiSetAutogunType,