// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool init_ai_space() { precachemodel( "us_space_assault_a_body_cracked" ); precachemodel( "us_space_assault_b_body_cracked" ); precachemodel( "body_fed_space_assault_a_cracked" ); precachemodel( "body_fed_space_assault_b_cracked" ); common_scripts\utility::flag_init( "no_steam_on_death" ); level._effect["swim_ai_blood_impact"] = loadfx( "fx/water/blood_spurt_underwater" ); level._effect["swim_ai_death_blood"] = loadfx( "fx/impacts/deathfx_bloodpool_underwater" ); level._effect["blood_impact_space"] = loadfx( "vfx/moments/odin/vfx_blood_impact_space" ); level._effect["bloodpool_zerog"] = loadfx( "vfx/moments/odin/vfx_bloodpool_zerog" ); level._effect["space_headshot"] = loadfx( "vfx/moments/odin/vfx_blood_impact_head_space" ); level._effect["sp_blood_float"] = loadfx( "vfx/moments/ODIN/sp_blood_float" ); level._effect["space_death_steam"] = loadfx( "vfx/gameplay/space/space_death_steam" ); level._effect["ally_light"] = loadfx( "vfx/moments/ODIN/light_suit_ally_02" ); level._effect["ally_light_02"] = loadfx( "vfx/moments/ODIN/light_suit_ally_02" ); level._effect["ally_light_02_a"] = loadfx( "vfx/moments/ODIN/light_suit_ally_02_a" ); level._effect["enemy_light"] = loadfx( "vfx/moments/ODIN/light_suit_enemy" ); if ( level.script == "loki" ) { setsaveddvar( "ragdoll_max_life", 65000 ); if ( level.console ) setsaveddvar( "ai_corpseCount", 8 ); setsaveddvar( "phys_gravity_ragdoll", 0 ); setsaveddvar( "phys_gravity", 0 ); setsaveddvar( "phys_autoDisableLinear", 0.25 ); } else setsaveddvar( "ragdoll_max_life", 15000 ); setsaveddvar( "actor_trace_bound_offset", -32.0 ); maps\_utility::battlechatter_off( "axis" ); } enable_space() { if ( !isai( self ) ) return; self.swimmer = 1; self.space = 1; self.grenadeammo = 0; self.goalradius = 128; self.goalheight = 18; maps\_utility::disable_surprise(); thread unlimited_ammo(); thread glint_behavior(); self.dontmelee = 1; self.no_pistol_switch = 1; self.norunreload = 1; self.disablebulletwhizbyreaction = 1; self.usechokepoints = 0; self.disabledoorbehavior = 1; self.combatmode = "cover"; self.oldgrenadeawareness = self.grenadeawareness; self.grenadeawareness = 0; self.oldgrenadereturnthrow = self.nogrenadereturnthrow; self.nogrenadereturnthrow = 1; self.norunngun = 1; self.jumping = 1; self.approachtype = ""; maps\_utility::disable_long_death(); init_ai_space_animsets(); thread space_actor_lights(); if ( !isdefined( anim.archetypes["soldier"]["swim"] ) ) init_space_anims(); animscripts\swim::swim_begin(); thread force_rotation_update_listener(); } printturnrate() { self endon( "death" ); for (;;) wait 0.05; } disable_space() { self.custommovetransition = undefined; self.permanentcustommovetransition = 0; animscripts\swim::swim_end(); self notify( "stop_glint_thread" ); } #using_animtree("generic_human"); init_space_anims() { var_0 = []; var_0["forward"] = %space_forward; var_0["forward_twitch"] = %space_forward_twitch_1; var_0["forward_aim"] = %space_aiming_move_f; var_0["idle_to_forward"] = []; var_0["idle_to_forward"][2] = []; var_0["idle_to_forward"][2][4] = %space_idle_to_forward_l90; var_0["idle_to_forward"][4] = []; var_0["idle_to_forward"][4][2] = %space_idle_to_forward_u90; var_0["idle_to_forward"][4][3] = %space_idle_to_forward_u45; var_0["idle_to_forward"][4][4] = %space_idle_to_forward; var_0["idle_to_forward"][4][5] = %space_idle_to_forward_d45; var_0["idle_to_forward"][4][6] = %space_idle_to_forward_d90; var_0["idle_to_forward"][6] = []; var_0["idle_to_forward"][6][4] = %space_idle_to_forward_r90; var_0["idle_ready_to_forward"] = []; var_0["idle_ready_to_forward"][2] = []; var_0["idle_ready_to_forward"][2][4] = %space_idle_to_forward_l90; var_0["idle_ready_to_forward"][4] = []; var_0["idle_ready_to_forward"][4][2] = %space_idle_to_forward_u90; var_0["idle_ready_to_forward"][4][3] = %space_idle_to_forward_u45; var_0["idle_ready_to_forward"][4][4] = %space_idle_ready_to_forward; var_0["idle_ready_to_forward"][4][5] = %space_idle_to_forward_d45; var_0["idle_ready_to_forward"][4][6] = %space_idle_to_forward_d90; var_0["idle_ready_to_forward"][6] = []; var_0["idle_ready_to_forward"][6][4] = %space_idle_to_forward_r90; var_0["aim_stand_D"] = %space_fire_d; var_0["aim_stand_U"] = %space_fire_u_extended; var_0["aim_stand_L"] = %space_fire_l; var_0["aim_stand_R"] = %space_fire_r; var_0["aim_move_R"] = %space_aiming_move_f_fire_r; var_0["aim_move_L"] = %space_aiming_move_f_fire_l; var_0["aim_move_U"] = %space_aiming_move_f_fire_u_extended; var_0["aim_move_D"] = %space_aiming_move_f_fire_d_extended; var_0["strafe_B"] = %space_aiming_move_b; var_0["strafe_L"] = %space_aiming_move_l; var_0["strafe_R"] = %space_aiming_move_r; var_0["strafe_L_aim_R"] = %space_aiming_move_l_fire_r; var_0["strafe_L_aim_L"] = %space_aiming_move_l_fire_l; var_0["strafe_L_aim_U"] = %space_aiming_move_l_fire_u; var_0["strafe_L_aim_D"] = %space_aiming_move_l_fire_d; var_0["strafe_R_aim_R"] = %space_aiming_move_r_fire_r; var_0["strafe_R_aim_L"] = %space_aiming_move_r_fire_l; var_0["strafe_R_aim_U"] = %space_aiming_move_r_fire_u; var_0["strafe_R_aim_D"] = %space_aiming_move_r_fire_d; var_0["strafe_B_aim_R"] = %space_aiming_move_b_fire_r; var_0["strafe_B_aim_L"] = %space_aiming_move_b_fire_l; var_0["strafe_B_aim_U"] = %space_aiming_move_b_fire_u; var_0["strafe_B_aim_D"] = %space_aiming_move_b_fire_d; var_0["turn_left_45"] = %space_aiming_turn_l45; var_0["turn_left_90"] = %space_aiming_turn_l90; var_0["turn_left_135"] = %space_aiming_turn_l135; var_0["turn_left_180"] = %space_aiming_turn_l180; var_0["turn_right_45"] = %space_aiming_turn_r45; var_0["turn_right_90"] = %space_aiming_turn_r90; var_0["turn_right_135"] = %space_aiming_turn_r135; var_0["turn_right_180"] = %space_aiming_turn_r180; var_0["idle_turn"] = []; var_0["idle_turn"][0] = %space_aiming_turn_r180; var_0["idle_turn"][1] = %space_aiming_turn_r135; var_0["idle_turn"][2] = %space_aiming_turn_r90; var_0["idle_turn"][3] = %space_aiming_turn_r45; var_0["idle_turn"][5] = %space_aiming_turn_l45; var_0["idle_turn"][6] = %space_aiming_turn_l90; var_0["idle_turn"][7] = %space_aiming_turn_l135; var_0["idle_turn"][8] = %space_aiming_turn_l180; var_0["surprise_stop"] = %space_surprise_stop; var_0["arrival_cover_corner_r"] = []; var_0["arrival_cover_corner_r"][0] = []; var_0["arrival_cover_corner_r"][0][2] = %space_aiming_move_to_cover_r1_180_u90; var_0["arrival_cover_corner_r"][0][3] = %space_aiming_move_to_cover_r1_180_u45; var_0["arrival_cover_corner_r"][0][4] = %space_aiming_move_to_cover_r1_180; var_0["arrival_cover_corner_r"][0][5] = %space_aiming_move_to_cover_r1_180_d45; var_0["arrival_cover_corner_r"][0][6] = %space_aiming_move_to_cover_r1_180_d90; var_0["arrival_cover_corner_r"][1] = []; var_0["arrival_cover_corner_r"][1][3] = %space_aiming_move_to_cover_r1_r135_u45; var_0["arrival_cover_corner_r"][1][4] = %space_aiming_move_to_cover_r1_r135; var_0["arrival_cover_corner_r"][1][5] = %space_aiming_move_to_cover_r1_r135_d45; var_0["arrival_cover_corner_r"][2] = []; var_0["arrival_cover_corner_r"][2][2] = %space_aiming_move_to_cover_r1_r90_u90; var_0["arrival_cover_corner_r"][2][3] = %space_aiming_move_to_cover_r1_r90_u45; var_0["arrival_cover_corner_r"][2][4] = %space_aiming_move_to_cover_r1_r90; var_0["arrival_cover_corner_r"][2][5] = %space_aiming_move_to_cover_r1_r90_d45; var_0["arrival_cover_corner_r"][2][6] = %space_aiming_move_to_cover_r1_r90_d90; var_0["arrival_cover_corner_r"][3] = []; var_0["arrival_cover_corner_r"][3][3] = %space_aiming_move_to_cover_r1_r45_u45; var_0["arrival_cover_corner_r"][3][4] = %space_aiming_move_to_cover_r1_r45; var_0["arrival_cover_corner_r"][3][5] = %space_aiming_move_to_cover_r1_r45_d45; var_0["arrival_cover_corner_r"][4] = []; var_0["arrival_cover_corner_r"][4][2] = %space_aiming_move_to_cover_r1_u90; var_0["arrival_cover_corner_r"][4][3] = %space_aiming_move_to_cover_r1_u45; var_0["arrival_cover_corner_r"][4][4] = %space_aiming_move_to_cover_r1; var_0["arrival_cover_corner_r"][4][5] = %space_aiming_move_to_cover_r1_d45; var_0["arrival_cover_corner_r"][4][6] = %space_aiming_move_to_cover_r1_d90; var_0["arrival_cover_corner_r"][5] = []; var_0["arrival_cover_corner_r"][5][3] = %space_aiming_move_to_cover_r1_l45_u45; var_0["arrival_cover_corner_r"][5][4] = %space_aiming_move_to_cover_r1_l45; var_0["arrival_cover_corner_r"][5][5] = %space_aiming_move_to_cover_r1_l45_d45; var_0["arrival_cover_corner_r"][6] = []; var_0["arrival_cover_corner_r"][6][2] = %space_aiming_move_to_cover_r1_l90_u90; var_0["arrival_cover_corner_r"][6][3] = %space_aiming_move_to_cover_r1_l90_u45; var_0["arrival_cover_corner_r"][6][4] = %space_aiming_move_to_cover_r1_l90; var_0["arrival_cover_corner_r"][6][5] = %space_aiming_move_to_cover_r1_l90_d45; var_0["arrival_cover_corner_r"][6][6] = %space_aiming_move_to_cover_r1_l90_d90; var_0["arrival_cover_corner_r"][7] = []; var_0["arrival_cover_corner_r"][7][3] = %space_aiming_move_to_cover_r1_180_u45; var_0["arrival_cover_corner_r"][7][4] = %space_aiming_move_to_cover_r1_180; var_0["arrival_cover_corner_r"][7][5] = %space_aiming_move_to_cover_r1_180_d45; var_0["arrival_cover_corner_r"][8] = []; var_0["arrival_cover_corner_r"][8][2] = %space_aiming_move_to_cover_r1_180_u90; var_0["arrival_cover_corner_r"][8][3] = %space_aiming_move_to_cover_r1_180_u45; var_0["arrival_cover_corner_r"][8][4] = %space_aiming_move_to_cover_r1_180; var_0["arrival_cover_corner_r"][8][5] = %space_aiming_move_to_cover_r1_180_d45; var_0["arrival_cover_corner_r"][8][6] = %space_aiming_move_to_cover_r1_180_d90; var_0["arrival_cover_corner_l"] = []; var_0["arrival_cover_corner_l"][0] = []; var_0["arrival_cover_corner_l"][0][2] = %space_aiming_move_to_cover_l1_180_u90; var_0["arrival_cover_corner_l"][0][3] = %space_aiming_move_to_cover_l1_180_u45; var_0["arrival_cover_corner_l"][0][4] = %space_aiming_move_to_cover_l1_180; var_0["arrival_cover_corner_l"][0][5] = %space_aiming_move_to_cover_l1_180_d45; var_0["arrival_cover_corner_l"][0][6] = %space_aiming_move_to_cover_l1_180_d90; var_0["arrival_cover_corner_l"][1] = []; var_0["arrival_cover_corner_l"][1][3] = %space_aiming_move_to_cover_l1_180_u45; var_0["arrival_cover_corner_l"][1][4] = %space_aiming_move_to_cover_l1_180; var_0["arrival_cover_corner_l"][1][5] = %space_aiming_move_to_cover_l1_180_d45; var_0["arrival_cover_corner_l"][2] = []; var_0["arrival_cover_corner_l"][2][2] = %space_aiming_move_to_cover_l1_r90_u90; var_0["arrival_cover_corner_l"][2][3] = %space_aiming_move_to_cover_l1_r90_u45; var_0["arrival_cover_corner_l"][2][4] = %space_aiming_move_to_cover_l1_r90; var_0["arrival_cover_corner_l"][2][5] = %space_aiming_move_to_cover_l1_r90_d45; var_0["arrival_cover_corner_l"][2][6] = %space_aiming_move_to_cover_l1_r90_d90; var_0["arrival_cover_corner_l"][3] = []; var_0["arrival_cover_corner_l"][3][3] = %space_aiming_move_to_cover_l1_r45_u45; var_0["arrival_cover_corner_l"][3][4] = %space_aiming_move_to_cover_l1_r45; var_0["arrival_cover_corner_l"][3][5] = %space_aiming_move_to_cover_l1_r45_d45; var_0["arrival_cover_corner_l"][4] = []; var_0["arrival_cover_corner_l"][4][2] = %space_aiming_move_to_cover_l1_u90; var_0["arrival_cover_corner_l"][4][3] = %space_aiming_move_to_cover_l1_u45; var_0["arrival_cover_corner_l"][4][4] = %space_aiming_move_to_cover_l1; var_0["arrival_cover_corner_l"][4][5] = %space_aiming_move_to_cover_l1_d45; var_0["arrival_cover_corner_l"][4][6] = %space_aiming_move_to_cover_l1_d90; var_0["arrival_cover_corner_l"][5] = []; var_0["arrival_cover_corner_l"][5][3] = %space_aiming_move_to_cover_l1_l45_u45; var_0["arrival_cover_corner_l"][5][4] = %space_aiming_move_to_cover_l1_l45; var_0["arrival_cover_corner_l"][5][5] = %space_aiming_move_to_cover_l1_l45_d45; var_0["arrival_cover_corner_l"][6] = []; var_0["arrival_cover_corner_l"][6][2] = %space_aiming_move_to_cover_l1_l90_u90; var_0["arrival_cover_corner_l"][6][3] = %space_aiming_move_to_cover_l1_l90_u45; var_0["arrival_cover_corner_l"][6][4] = %space_aiming_move_to_cover_l1_l90; var_0["arrival_cover_corner_l"][6][5] = %space_aiming_move_to_cover_l1_l90_d45; var_0["arrival_cover_corner_l"][6][6] = %space_aiming_move_to_cover_l1_l90_d90; var_0["arrival_cover_corner_l"][7] = []; var_0["arrival_cover_corner_l"][7][3] = %space_aiming_move_to_cover_l1_l135_u45; var_0["arrival_cover_corner_l"][7][4] = %space_aiming_move_to_cover_l1_l135; var_0["arrival_cover_corner_l"][7][5] = %space_aiming_move_to_cover_l1_l135_d45; var_0["arrival_cover_corner_l"][8] = []; var_0["arrival_cover_corner_l"][8][2] = %space_aiming_move_to_cover_l1_180_u90; var_0["arrival_cover_corner_l"][8][3] = %space_aiming_move_to_cover_l1_180_u45; var_0["arrival_cover_corner_l"][8][4] = %space_aiming_move_to_cover_l1_180; var_0["arrival_cover_corner_l"][8][5] = %space_aiming_move_to_cover_l1_180_d45; var_0["arrival_cover_corner_l"][8][6] = %space_aiming_move_to_cover_l1_180_d90; var_0["arrival_cover_u"] = []; var_0["arrival_cover_u"][0] = []; var_0["arrival_cover_u"][0][2] = %space_aiming_move_to_cover_u1_180_u90; var_0["arrival_cover_u"][0][3] = %space_aiming_move_to_cover_u1_180_u45; var_0["arrival_cover_u"][0][4] = %space_aiming_move_to_cover_u1_180; var_0["arrival_cover_u"][0][5] = %space_aiming_move_to_cover_u1_180; var_0["arrival_cover_u"][0][6] = %space_aiming_move_to_cover_u1_180_d90; var_0["arrival_cover_u"][1] = []; var_0["arrival_cover_u"][1][3] = %space_aiming_move_to_cover_u1_r135_u45; var_0["arrival_cover_u"][1][4] = %space_aiming_move_to_cover_u1_r135; var_0["arrival_cover_u"][1][5] = %space_aiming_move_to_cover_u1_r135; var_0["arrival_cover_u"][2] = []; var_0["arrival_cover_u"][2][2] = %space_aiming_move_to_cover_u1_r90_u90; var_0["arrival_cover_u"][2][3] = %space_aiming_move_to_cover_u1_r90_u45; var_0["arrival_cover_u"][2][4] = %space_aiming_move_to_cover_u1_r90; var_0["arrival_cover_u"][2][5] = %space_aiming_move_to_cover_u1_r90_d45; var_0["arrival_cover_u"][2][6] = %space_aiming_move_to_cover_u1_r90_d90; var_0["arrival_cover_u"][3] = []; var_0["arrival_cover_u"][3][3] = %space_aiming_move_to_cover_u1_r45_u45; var_0["arrival_cover_u"][3][4] = %space_aiming_move_to_cover_u1_r45; var_0["arrival_cover_u"][3][5] = %space_aiming_move_to_cover_u1_r45_d45; var_0["arrival_cover_u"][4] = []; var_0["arrival_cover_u"][4][2] = %space_aiming_move_to_cover_u1_u90; var_0["arrival_cover_u"][4][3] = %space_aiming_move_to_cover_u1_u45; var_0["arrival_cover_u"][4][4] = %space_aiming_move_to_cover_u1; var_0["arrival_cover_u"][4][5] = %space_aiming_move_to_cover_u1_d45; var_0["arrival_cover_u"][4][6] = %space_aiming_move_to_cover_u1_d90; var_0["arrival_cover_u"][5] = []; var_0["arrival_cover_u"][5][3] = %space_aiming_move_to_cover_u1_l45_u45; var_0["arrival_cover_u"][5][4] = %space_aiming_move_to_cover_u1_l45; var_0["arrival_cover_u"][5][5] = %space_aiming_move_to_cover_u1_l45_d45; var_0["arrival_cover_u"][6] = []; var_0["arrival_cover_u"][6][2] = %space_aiming_move_to_cover_u1_l90_u90; var_0["arrival_cover_u"][6][3] = %space_aiming_move_to_cover_u1_l90_u45; var_0["arrival_cover_u"][6][4] = %space_aiming_move_to_cover_u1_l90; var_0["arrival_cover_u"][6][5] = %space_aiming_move_to_cover_u1_l90_d45; var_0["arrival_cover_u"][6][6] = %space_aiming_move_to_cover_u1_l90_d90; var_0["arrival_cover_u"][7] = []; var_0["arrival_cover_u"][7][3] = %space_aiming_move_to_cover_u1_l135_u45; var_0["arrival_cover_u"][7][4] = %space_aiming_move_to_cover_u1_l135; var_0["arrival_cover_u"][7][5] = %space_aiming_move_to_cover_u1_l135; var_0["arrival_cover_u"][8] = []; var_0["arrival_cover_u"][8][2] = %space_aiming_move_to_cover_u1_180_u90; var_0["arrival_cover_u"][8][3] = %space_aiming_move_to_cover_u1_180_u45; var_0["arrival_cover_u"][8][4] = %space_aiming_move_to_cover_u1_180; var_0["arrival_cover_u"][8][5] = %space_aiming_move_to_cover_u1_180_d45; var_0["arrival_cover_u"][8][6] = %space_aiming_move_to_cover_u1_180_d90; var_0["arrival_exposed"] = []; var_0["arrival_exposed"][4] = []; var_0["arrival_exposed"][4][2] = %space_forward_90d_to_idle; var_0["arrival_exposed"][4][3] = %space_forward_45d_to_idle; var_0["arrival_exposed"][4][4] = %space_forward_to_idle_ready; var_0["arrival_exposed"][4][5] = %space_forward_45u_to_idle; var_0["arrival_exposed"][4][6] = %space_forward_90u_to_idle; var_0["arrival_exposed_noncombat"] = []; var_0["arrival_exposed_noncombat"][4] = []; var_0["arrival_exposed_noncombat"][4][2] = %space_forward_90d_to_idle; var_0["arrival_exposed_noncombat"][4][3] = %space_forward_45d_to_idle; var_0["arrival_exposed_noncombat"][4][4] = %space_forward_to_idle; var_0["arrival_exposed_noncombat"][4][5] = %space_forward_45u_to_idle; var_0["arrival_exposed_noncombat"][4][6] = %space_forward_90u_to_idle; var_0["exit_cover_corner_r"] = []; var_0["exit_cover_corner_r"][0] = []; var_0["exit_cover_corner_r"][0][3] = %space_cover_r1_to_aiming_move_180_u45; var_0["exit_cover_corner_r"][0][4] = %space_cover_r1_to_aiming_move_180; var_0["exit_cover_corner_r"][0][5] = %space_cover_r1_to_aiming_move_180_d45; var_0["exit_cover_corner_r"][1] = []; var_0["exit_cover_corner_r"][1][3] = %space_cover_r1_to_aiming_move_r135_u45; var_0["exit_cover_corner_r"][1][4] = %space_cover_r1_to_aiming_move_r135; var_0["exit_cover_corner_r"][1][5] = %space_cover_r1_to_aiming_move_r135_d45; var_0["exit_cover_corner_r"][2] = []; var_0["exit_cover_corner_r"][2][2] = %space_cover_r1_to_aiming_move_r90_u90; var_0["exit_cover_corner_r"][2][3] = %space_cover_r1_to_aiming_move_r90_u45; var_0["exit_cover_corner_r"][2][4] = %space_cover_r1_to_aiming_move_r90; var_0["exit_cover_corner_r"][2][5] = %space_cover_r1_to_aiming_move_r90_d45; var_0["exit_cover_corner_r"][2][6] = %space_cover_r1_to_aiming_move_r90_d90; var_0["exit_cover_corner_r"][3] = []; var_0["exit_cover_corner_r"][3][3] = %space_cover_r1_to_aiming_move_r45_u45; var_0["exit_cover_corner_r"][3][4] = %space_cover_r1_to_aiming_move_r45; var_0["exit_cover_corner_r"][3][5] = %space_cover_r1_to_aiming_move_r45_d45; var_0["exit_cover_corner_r"][4] = []; var_0["exit_cover_corner_r"][4][2] = %space_cover_r1_to_aiming_move_u90; var_0["exit_cover_corner_r"][4][3] = %space_cover_r1_to_aiming_move_u45; var_0["exit_cover_corner_r"][4][4] = %space_cover_r1_to_aiming_move; var_0["exit_cover_corner_r"][4][5] = %space_cover_r1_to_aiming_move_d45; var_0["exit_cover_corner_r"][4][6] = %space_cover_r1_to_aiming_move_d90; var_0["exit_cover_corner_r"][5] = []; var_0["exit_cover_corner_r"][5][3] = %space_cover_r1_to_aiming_move_u45; var_0["exit_cover_corner_r"][5][4] = %space_cover_r1_to_aiming_move; var_0["exit_cover_corner_r"][5][5] = %space_cover_r1_to_aiming_move_d45; var_0["exit_cover_corner_r"][6] = []; var_0["exit_cover_corner_r"][6][2] = %space_cover_r1_to_aiming_move_l90_u90; var_0["exit_cover_corner_r"][6][3] = %space_cover_r1_to_aiming_move_l90_u45; var_0["exit_cover_corner_r"][6][4] = %space_cover_r1_to_aiming_move_l90; var_0["exit_cover_corner_r"][6][5] = %space_cover_r1_to_aiming_move_l90_d45; var_0["exit_cover_corner_r"][6][6] = %space_cover_r1_to_aiming_move_l90_d90; var_0["exit_cover_corner_r"][7] = []; var_0["exit_cover_corner_r"][7][3] = %space_cover_r1_to_aiming_move_l135_u45; var_0["exit_cover_corner_r"][7][4] = %space_cover_r1_to_aiming_move_l135; var_0["exit_cover_corner_r"][7][5] = %space_cover_r1_to_aiming_move_l135_d45; var_0["exit_cover_corner_r"][8] = []; var_0["exit_cover_corner_r"][8][3] = %space_cover_r1_to_aiming_move_180_u45; var_0["exit_cover_corner_r"][8][4] = %space_cover_r1_to_aiming_move_180; var_0["exit_cover_corner_r"][8][5] = %space_cover_r1_to_aiming_move_180_d45; var_0["exit_cover_corner_l"] = []; var_0["exit_cover_corner_l"][0] = []; var_0["exit_cover_corner_l"][0][3] = %space_cover_l1_to_aiming_move_180_u45; var_0["exit_cover_corner_l"][0][4] = %space_cover_l1_exit_r180; var_0["exit_cover_corner_l"][0][5] = %space_cover_l1_to_aiming_move_180_d45; var_0["exit_cover_corner_l"][1] = []; var_0["exit_cover_corner_l"][1][3] = %space_cover_l1_to_aiming_move_r135_u45; var_0["exit_cover_corner_l"][1][4] = %space_cover_l1_to_aiming_move_r135; var_0["exit_cover_corner_l"][1][5] = %space_cover_l1_to_aiming_move_r135_d45; var_0["exit_cover_corner_l"][2] = []; var_0["exit_cover_corner_l"][2][2] = %space_cover_l1_to_aiming_move_r90_u90; var_0["exit_cover_corner_l"][2][3] = %space_cover_l1_to_aiming_move_r90_u45; var_0["exit_cover_corner_l"][2][4] = %space_cover_l1_to_aiming_move_r90; var_0["exit_cover_corner_l"][2][5] = %space_cover_l1_to_aiming_move_r90_d45; var_0["exit_cover_corner_l"][2][6] = %space_cover_l1_to_aiming_move_r90_d90; var_0["exit_cover_corner_l"][3] = []; var_0["exit_cover_corner_l"][3][3] = %space_cover_l1_to_aiming_move_u45; var_0["exit_cover_corner_l"][3][4] = %space_cover_l1_to_aiming_move; var_0["exit_cover_corner_l"][3][5] = %space_cover_l1_to_aiming_move_d45; var_0["exit_cover_corner_l"][4] = []; var_0["exit_cover_corner_l"][4][2] = %space_cover_l1_to_aiming_move_u90; var_0["exit_cover_corner_l"][4][3] = %space_cover_l1_to_aiming_move_u45; var_0["exit_cover_corner_l"][4][4] = %space_cover_l1_to_aiming_move; var_0["exit_cover_corner_l"][4][5] = %space_cover_l1_to_aiming_move_d45; var_0["exit_cover_corner_l"][4][6] = %space_cover_l1_to_aiming_move_d90; var_0["exit_cover_corner_l"][5] = []; var_0["exit_cover_corner_l"][5][3] = %space_cover_l1_to_aiming_move_l45_u45; var_0["exit_cover_corner_l"][5][4] = %space_cover_l1_to_aiming_move_l45; var_0["exit_cover_corner_l"][5][5] = %space_cover_l1_to_aiming_move_l45_d45; var_0["exit_cover_corner_l"][6] = []; var_0["exit_cover_corner_l"][6][2] = %space_cover_l1_to_aiming_move_l90_u90; var_0["exit_cover_corner_l"][6][3] = %space_cover_l1_to_aiming_move_l90_u45; var_0["exit_cover_corner_l"][6][4] = %space_cover_l1_to_aiming_move_l90; var_0["exit_cover_corner_l"][6][5] = %space_cover_l1_to_aiming_move_l90_d45; var_0["exit_cover_corner_l"][6][6] = %space_cover_l1_to_aiming_move_l90_d90; var_0["exit_cover_corner_l"][7] = []; var_0["exit_cover_corner_l"][7][3] = %space_cover_l1_to_aiming_move_l135_u45; var_0["exit_cover_corner_l"][7][4] = %space_cover_l1_to_aiming_move_l135; var_0["exit_cover_corner_l"][7][5] = %space_cover_l1_to_aiming_move_l135_d45; var_0["exit_cover_corner_l"][8] = []; var_0["exit_cover_corner_l"][8][3] = %space_cover_l1_to_aiming_move_180_u45; var_0["exit_cover_corner_l"][8][4] = %space_cover_l1_exit_r180; var_0["exit_cover_corner_l"][8][5] = %space_cover_l1_to_aiming_move_180_d45; var_0["exit_cover_u"] = []; var_0["exit_cover_u"][0] = []; var_0["exit_cover_u"][0][3] = %space_cover_u1_to_aiming_move_180_u45; var_0["exit_cover_u"][0][4] = %space_cover_u1_to_aiming_move_180; var_0["exit_cover_u"][0][5] = %space_cover_u1_to_aiming_move_180_d45; var_0["exit_cover_u"][1] = []; var_0["exit_cover_u"][1][3] = %space_cover_u1_to_aiming_move_r135_u45; var_0["exit_cover_u"][1][4] = %space_cover_u1_to_aiming_move_r135; var_0["exit_cover_u"][1][5] = %space_cover_u1_to_aiming_move_r135_d45; var_0["exit_cover_u"][2] = []; var_0["exit_cover_u"][2][2] = %space_cover_u1_to_aiming_move_r90_u90; var_0["exit_cover_u"][2][3] = %space_cover_u1_to_aiming_move_r90_u45; var_0["exit_cover_u"][2][4] = %space_cover_u1_to_aiming_move_r90; var_0["exit_cover_u"][2][5] = %space_cover_u1_to_aiming_move_r90_d45; var_0["exit_cover_u"][2][6] = %space_cover_u1_to_aiming_move_r90_d90; var_0["exit_cover_u"][3] = []; var_0["exit_cover_u"][3][3] = %space_cover_u1_to_aiming_move_r45_u45; var_0["exit_cover_u"][3][4] = %space_cover_u1_to_aiming_move_r45; var_0["exit_cover_u"][3][5] = %space_cover_u1_to_aiming_move_r45; var_0["exit_cover_u"][4] = []; var_0["exit_cover_u"][4][2] = %space_cover_u1_to_aiming_move_u90; var_0["exit_cover_u"][4][3] = %space_cover_u1_to_aiming_move_u45; var_0["exit_cover_u"][4][4] = %space_cover_u1_to_aiming_move; var_0["exit_cover_u"][4][5] = %space_cover_u1_to_aiming_move; var_0["exit_cover_u"][4][6] = %space_cover_u1_to_aiming_move_d90; var_0["exit_cover_u"][5] = []; var_0["exit_cover_u"][5][3] = %space_cover_u1_to_aiming_move_l45_u45; var_0["exit_cover_u"][5][4] = %space_cover_u1_to_aiming_move_l45; var_0["exit_cover_u"][5][5] = %space_cover_u1_to_aiming_move_l45; var_0["exit_cover_u"][6] = []; var_0["exit_cover_u"][6][2] = %space_cover_u1_to_aiming_move_l90_u90; var_0["exit_cover_u"][6][3] = %space_cover_u1_to_aiming_move_l90_u45; var_0["exit_cover_u"][6][4] = %space_cover_u1_to_aiming_move_l90; var_0["exit_cover_u"][6][5] = %space_cover_u1_to_aiming_move_l90_d45; var_0["exit_cover_u"][6][6] = %space_cover_u1_to_aiming_move_l90_d90; var_0["exit_cover_u"][7] = []; var_0["exit_cover_u"][7][3] = %space_cover_u1_to_aiming_move_l135_u45; var_0["exit_cover_u"][7][4] = %space_cover_u1_to_aiming_move_l135; var_0["exit_cover_u"][7][5] = %space_cover_u1_to_aiming_move_l135_d45; var_0["exit_cover_u"][8] = []; var_0["exit_cover_u"][8][3] = %space_cover_u1_to_aiming_move_180_u45; var_0["exit_cover_u"][8][4] = %space_cover_u1_to_aiming_move_180; var_0["exit_cover_u"][8][5] = %space_cover_u1_to_aiming_move_180_d45; var_0["turn"] = []; var_0["turn"] = []; var_0["turn"][0] = []; var_0["turn"][0][4] = %space_swim_turn_l180; var_0["turn"][1] = []; var_0["turn"][1][4] = %space_swim_turn_l135; var_0["turn"][2] = []; var_0["turn"][2][4] = %space_swim_turn_l90; var_0["turn"][3] = []; var_0["turn"][3][3] = %space_swim_turn_d45_l45; var_0["turn"][3][4] = %space_swim_turn_l45; var_0["turn"][3][5] = %space_swim_turn_u45_l45; var_0["turn"][4] = []; var_0["turn"][4][3] = %space_swim_turn_d45; var_0["turn"][4][5] = %space_swim_turn_u45; var_0["turn"][5] = []; var_0["turn"][5][3] = %space_swim_turn_d45_r45; var_0["turn"][5][4] = %space_swim_turn_r45; var_0["turn"][5][5] = %space_swim_turn_u45_r45; var_0["turn"][6] = []; var_0["turn"][6][4] = %space_swim_turn_r90; var_0["turn"][7] = []; var_0["turn"][7][4] = %space_swim_turn_r135; var_0["turn"][8] = []; var_0["turn"][8][4] = %space_swim_turn_l180; var_0["turn_add_r"] = %space_slight_turn_r; var_0["turn_add_l"] = %space_slight_turn_l; var_0["turn_add_u"] = %space_slight_turn_u; var_0["turn_add_d"] = %space_slight_turn_d; var_0["cover_corner_r"] = []; var_0["cover_corner_r"]["straight_level"] = %space_fire; var_0["cover_corner_r"]["alert_idle"] = %space_cover_r1_loop; var_0["cover_corner_r"]["alert_idle_twitch"] = [ %space_cover_r1_twitch_right, %space_cover_r1_twitch_up, %space_cover_r1_twitch_back, %space_cover_r1_twitch_down, %space_cover_r1_twitch_left ]; var_0["cover_corner_r"]["alert_to_A"] = [ %space_cover_r1_full_expose ]; var_0["cover_corner_r"]["alert_to_B"] = [ %space_cover_r1_full_expose ]; var_0["cover_corner_r"]["A_to_alert"] = [ %space_cover_r1_full_hide ]; var_0["cover_corner_r"]["A_to_B"] = [ %space_fire ]; var_0["cover_corner_r"]["B_to_alert"] = [ %space_cover_r1_full_hide ]; var_0["cover_corner_r"]["B_to_A"] = [ %space_fire ]; var_0["cover_corner_r"]["lean_to_alert"] = [ %space_cover_r1_hide ]; var_0["cover_corner_r"]["alert_to_lean"] = [ %space_cover_r1_expose ]; var_0["cover_corner_r"]["look"] = %space_cover_r1_expose; var_0["cover_corner_r"]["reload"] = [ %space_cover_r1_reload ]; var_0["cover_corner_r"]["alert_to_look"] = %space_cover_r1_alert_to_look; var_0["cover_corner_r"]["look_to_alert"] = %space_cover_r1_look_to_alert; var_0["cover_corner_r"]["look_to_alert_fast"] = %space_cover_r1_look_to_alert; var_0["cover_corner_r"]["look_idle"] = %space_cover_r1_look_idle; var_0["cover_corner_r"]["lean_aim_down"] = %space_cover_r1_exposed_aim_d; var_0["cover_corner_r"]["lean_aim_left"] = %space_cover_r1_exposed_aim_l; var_0["cover_corner_r"]["lean_aim_straight"] = %space_cover_r1_exposed_fire; var_0["cover_corner_r"]["lean_aim_right"] = %space_cover_r1_exposed_aim_r; var_0["cover_corner_r"]["lean_aim_up"] = %space_cover_r1_exposed_aim_u; var_0["cover_corner_r"]["lean_reload"] = %space_cover_r1_reload; var_0["cover_corner_r"]["lean_idle"] = [ %space_cover_r1_exposed_idle ]; var_0["cover_corner_r"]["lean_single"] = %space_cover_r1_exposed_fire; var_0["cover_corner_r"]["lean_fire"] = %space_cover_r1_exposed_fire; var_0["cover_corner_r"]["add_aim_down"] = %space_fire_d; var_0["cover_corner_r"]["add_aim_left"] = %space_fire_l; var_0["cover_corner_r"]["add_aim_straight"] = %space_cover_r1_exposed_fire; var_0["cover_corner_r"]["add_aim_right"] = %space_fire_r; var_0["cover_corner_r"]["add_aim_up"] = %space_fire_u_extended; var_0["cover_corner_r"]["add_aim_idle"] = %space_firing_idle; var_0["cover_corner_l"] = []; var_0["cover_corner_l"]["straight_level"] = %space_fire; var_0["cover_corner_l"]["alert_idle"] = %space_cover_l1_idle; var_0["cover_corner_l"]["alert_idle_twitch"] = [ %space_cover_l1_twitch_right, %space_cover_l1_twitch_left, %space_cover_l1_twitch_down, %space_cover_l1_twitch_up, %space_cover_l1_twitch_back ]; var_0["cover_corner_l"]["alert_to_A"] = [ %space_cover_l1_full_expose ]; var_0["cover_corner_l"]["alert_to_B"] = [ %space_cover_l1_full_expose ]; var_0["cover_corner_l"]["A_to_alert"] = [ %space_cover_l1_full_hide ]; var_0["cover_corner_l"]["A_to_B"] = [ %space_fire ]; var_0["cover_corner_l"]["B_to_alert"] = [ %space_cover_l1_full_hide ]; var_0["cover_corner_l"]["B_to_A"] = [ %space_fire ]; var_0["cover_corner_l"]["lean_to_alert"] = [ %space_cover_l1_hide ]; var_0["cover_corner_l"]["alert_to_lean"] = [ %space_cover_l1_expose ]; var_0["cover_corner_l"]["look"] = %space_cover_l1_expose; var_0["cover_corner_l"]["reload"] = [ %space_cover_l1_reload ]; var_0["cover_corner_l"]["alert_to_look"] = %space_cover_l1_alert_to_look; var_0["cover_corner_l"]["look_to_alert"] = %space_cover_l1_look_to_alert; var_0["cover_corner_l"]["look_to_alert_fast"] = %space_cover_l1_look_to_alert; var_0["cover_corner_l"]["look_idle"] = %space_cover_l1_look_idle; var_0["cover_corner_l"]["lean_aim_down"] = %space_cover_l1_exposed_aim_d; var_0["cover_corner_l"]["lean_aim_left"] = %space_cover_l1_exposed_aim_l; var_0["cover_corner_l"]["lean_aim_straight"] = %space_cover_l1_exposed_fire; var_0["cover_corner_l"]["lean_aim_right"] = %space_cover_l1_exposed_aim_r; var_0["cover_corner_l"]["lean_aim_up"] = %space_cover_l1_exposed_aim_u; var_0["cover_corner_l"]["lean_reload"] = %space_cover_l1_reload; var_0["cover_corner_l"]["lean_idle"] = [ %space_cover_l1_exposed_idle ]; var_0["cover_corner_l"]["lean_single"] = %space_cover_l1_exposed_fire; var_0["cover_corner_l"]["lean_fire"] = %space_cover_l1_exposed_fire; var_0["cover_corner_l"]["add_aim_down"] = %space_fire_d; var_0["cover_corner_l"]["add_aim_left"] = %space_fire_l; var_0["cover_corner_l"]["add_aim_straight"] = %space_firing_burst2; var_0["cover_corner_l"]["add_aim_right"] = %space_fire_r; var_0["cover_corner_l"]["add_aim_up"] = %space_fire_u_extended; var_0["cover_corner_l"]["add_aim_idle"] = %space_firing_idle; var_0["cover_u"] = []; var_0["cover_u"]["straight_level"] = %space_fire; var_0["cover_u"]["alert_idle"] = %space_cover_u1_idle; var_0["cover_u"]["alert_idle_twitch"] = [ %space_cover_u1_twitch_right, %space_cover_u1_twitch_up, %space_cover_u1_twitch_back, %space_cover_u1_twitch_down, %space_cover_u1_twitch_left ]; var_0["cover_u"]["alert_to_A"] = [ %space_cover_u1_full_expose ]; var_0["cover_u"]["alert_to_B"] = [ %space_cover_u1_full_expose ]; var_0["cover_u"]["A_to_alert"] = [ %space_cover_u1_full_hide ]; var_0["cover_u"]["A_to_B"] = [ %space_fire ]; var_0["cover_u"]["B_to_alert"] = [ %space_cover_u1_full_hide ]; var_0["cover_u"]["B_to_A"] = [ %space_fire ]; var_0["cover_u"]["lean_to_alert"] = [ %space_cover_u1_hide ]; var_0["cover_u"]["alert_to_lean"] = [ %space_cover_u1_expose ]; var_0["cover_u"]["look"] = %space_cover_u1_expose; var_0["cover_u"]["reload"] = [ %space_cover_u1_reload ]; var_0["cover_u"]["alert_to_look"] = %space_cover_u1_alert_to_look; var_0["cover_u"]["look_to_alert"] = %space_cover_u1_look_to_alert; var_0["cover_u"]["look_to_alert_fast"] = %space_cover_u1_look_to_alert; var_0["cover_u"]["look_idle"] = %space_cover_u1_look_idle; var_0["cover_u"]["lean_aim_down"] = %space_cover_u1_exposed_aim_d; var_0["cover_u"]["lean_aim_left"] = %space_cover_u1_exposed_aim_l; var_0["cover_u"]["lean_aim_straight"] = %space_cover_u1_exposed_fire; var_0["cover_u"]["lean_aim_right"] = %space_cover_u1_exposed_aim_r; var_0["cover_u"]["lean_aim_up"] = %space_cover_u1_exposed_aim_u; var_0["cover_u"]["lean_reload"] = %space_cover_u1_reload; var_0["cover_u"]["lean_idle"] = [ %space_cover_u1_exposed_idle ]; var_0["cover_u"]["lean_single"] = %space_cover_u1_exposed_fire; var_0["cover_u"]["lean_fire"] = %space_cover_u1_exposed_fire; var_0["cover_u"]["add_aim_down"] = %space_fire_d; var_0["cover_u"]["add_aim_left"] = %space_fire_l; var_0["cover_u"]["add_aim_straight"] = %space_firing_burst2; var_0["cover_u"]["add_aim_right"] = %space_fire_r; var_0["cover_u"]["add_aim_up"] = %space_fire_u_extended; var_0["cover_u"]["add_aim_idle"] = %space_firing_idle; anim.archetypes["soldier"]["swim"] = var_0; anim.archetypes["soldier"]["swim"]["maxDelta"] = []; init_space_anim_deltas( "soldier", "arrival_exposed" ); init_space_anim_deltas( "soldier", "arrival_exposed_noncombat" ); init_space_anim_deltas( "soldier", "arrival_cover_corner_r" ); init_space_anim_deltas( "soldier", "arrival_cover_corner_l" ); init_space_anim_deltas( "soldier", "arrival_cover_u" ); init_space_anim_deltas( "soldier", "exit_cover_corner_r", 0 ); init_space_anim_deltas( "soldier", "exit_cover_corner_l", 0 ); init_space_anim_deltas( "soldier", "exit_cover_u", 0 ); init_space_anim_deltas( "soldier", "idle_to_forward", 0 ); } init_space_anim_deltas( var_0, var_1, var_2 ) { var_3 = var_1 + "_delta"; var_4 = var_1 + "_angleDelta"; var_5 = 1; if ( isdefined( var_2 ) ) var_5 = var_2; anim.archetypes[var_0]["swim"][var_3] = []; foreach ( var_14, var_7 in anim.archetypes[var_0]["swim"][var_1] ) { if ( !isdefined( anim.archetypes[var_0]["swim"][var_3][var_14] ) ) { anim.archetypes[var_0]["swim"][var_3][var_14] = []; anim.archetypes[var_0]["swim"][var_4][var_14] = []; } var_8 = 0; foreach ( var_13, var_10 in var_7 ) { var_11 = getmovedelta( var_10, 0, 1 ); anim.archetypes[var_0]["swim"][var_3][var_14][var_13] = var_11; anim.archetypes[var_0]["swim"][var_4][var_14][var_13] = getangledelta3d( var_10, 0, 1 ); if ( var_5 ) { var_12 = lengthsquared( var_11 ); if ( var_12 > var_8 ) var_8 = var_12; } } if ( var_5 ) anim.archetypes[var_0]["swim"][var_1]["maxDelta"] = sqrt( var_8 ); } } init_ai_space_animsets() { self.customidleanimset = []; self.customidleanimset["stand"] = %space_idle; self.a.pose = "stand"; self allowedstances( "stand" ); var_0 = anim.archetypes["soldier"]["default_stand"]; var_0["straight_level"] = %space_idle_ready; var_0["add_aim_up"] = %space_idle_ready_aim_u_extended; var_0["add_aim_down"] = %space_idle_ready_aim_d_extended; var_0["add_aim_left"] = %space_idle_ready_aim_l; var_0["add_aim_right"] = %space_idle_ready_aim_r; var_0["fire"] = %space_firing_burst2; var_0["single"] = [ %space_firing_burst2 ]; var_0["burst2"] = %space_firing_burst2; var_0["burst3"] = %space_firing_burst3; var_0["burst4"] = %space_firing_burst2; var_0["burst5"] = %space_firing_burst2; var_0["burst6"] = %space_firing_burst2; var_0["semi2"] = %space_firing_burst2; var_0["semi3"] = %space_firing_burst2; var_0["semi4"] = %space_firing_burst2; var_0["semi5"] = %space_firing_burst2; var_0["exposed_idle"] = [ %space_firing_idle ]; var_0["reload"] = [ %space_reload ]; var_0["reload_crouchhide"] = [ %space_reload ]; var_0["turn_left_45"] = %space_aiming_turn_l45; var_0["turn_left_90"] = %space_aiming_turn_l90; var_0["turn_left_135"] = %space_aiming_turn_l135; var_0["turn_left_180"] = %space_aiming_turn_l180; var_0["turn_right_45"] = %space_aiming_turn_r45; var_0["turn_right_90"] = %space_aiming_turn_r90; var_0["turn_right_135"] = %space_aiming_turn_r135; var_0["turn_right_180"] = %space_aiming_turn_r180; animscripts\animset::init_animset_complete_custom_stand( var_0 ); animscripts\animset::init_animset_complete_custom_crouch( var_0 ); self.painfunction = ::ai_space_pain; self.deathfunction = ::ai_space_death; } ai_space_pain() { if ( self.a.movement == "run" ) { var_0 = 27225; var_1 = vectordot( self.lookaheaddir, anglestoforward( self.angles ) ); if ( distance2dsquared( self.origin, self.goalpos ) > var_0 && var_1 > 0.5 ) var_2 = %space_pain_1; else var_2 = common_scripts\utility::random( [ %space_firing_pain_1, %space_firing_pain_2 ] ); self orientmode( "face motion" ); } else var_2 = common_scripts\utility::random( [ %space_firing_pain_1, %space_firing_pain_2 ] ); var_3 = 1; self setflaggedanimknoballrestart( "painanim", var_2, %body, 1, 0.1, var_3 ); if ( self.a.pose == "prone" ) self updateprone( %prone_legs_up, %prone_legs_down, 1, 0.1, 1 ); if ( animhasnotetrack( var_2, "start_aim" ) ) { thread animscripts\pain::notifystartaim( "painanim" ); self endon( "start_aim" ); } if ( animhasnotetrack( var_2, "code_move" ) ) animscripts\shared::donotetracks( "painanim" ); animscripts\shared::donotetracks( "painanim" ); } unlimited_ammo() { self endon( "death" ); for (;;) { self.a.rockets = 100; wait 0.2; } } ai_space_death() { playfxontag( common_scripts\utility::getfx( "bloodpool_zerog" ), self, "j_spineupper" ); if ( !common_scripts\utility::flag( "no_steam_on_death" ) ) playfxontag( common_scripts\utility::getfx( "space_death_steam" ), self, "J_Neck" ); var_0 = animscripts\pain::wasdamagedbyexplosive(); if ( !isdefined( self.deathanim ) && var_0 && self.damagelocation == "none" ) { if ( self.damageyaw > 135 || self.damageyaw <= -135 ) self.deathanim = %space_explosion_death_b_1; else if ( self.damageyaw > 45 && self.damageyaw <= 135 ) self.deathanim = %space_explosion_death_l_1; else if ( self.damageyaw > -45 && self.damageyaw <= 45 ) self.deathanim = %space_explosion_death_f_1; else self.deathanim = %space_explosion_death_r_1; } if ( !isdefined( self.deathanim ) ) { if ( self.damageyaw > -60 && self.damageyaw <= 60 ) self.deathanim = %space_idle_death_behind; else if ( self.a.movement == "run" ) self.deathanim = %space_death_1; else if ( animscripts\utility::damagelocationisany( "left_arm_upper" ) ) self.deathanim = %space_firing_death_1; else if ( animscripts\utility::damagelocationisany( "head", "helmet" ) ) self.deathanim = %space_firing_death_2; else if ( animscripts\utility::damagelocationisany( "left_leg_upper", "left_leg_lower", "right_leg_upper", "right_leg_lower", "left_foot", "right_foot" ) ) self.deathanim = %space_firing_death_3; else self.deathanim = common_scripts\utility::random( [ %space_firing_death_1, %space_firing_death_2, %space_firing_death_3 ] ); } if ( !isdefined( self.nodeathsound ) && !isdefined( self.diequietly ) ) animscripts\death::playdeathsound(); thread sfx_npc_death(); thread ai_space_headshot_death(); return 0; } ai_space_headshot_death() { if ( self.damagelocation == "head" || self.damagelocation == "neck" ) { if ( self.model == "us_space_assault_a_body" || self.model == "us_space_assault_b_body" || self.model == "body_fed_space_assault_a" || self.model == "body_fed_space_assault_b" ) { playfxontag( common_scripts\utility::getfx( "space_headshot" ), self, "J_Head" ); self setmodel( self.model + "_cracked" ); if ( gettimescale() < 0.5 ) self playsound( "space_npc_helmet_shatter_slomo" ); else self playsound( "space_npc_helmet_shatter" ); } } } sfx_npc_death() { if ( level.play_npc_deaths == 1 ) self playsound( "space_npc_death" ); } space_actor_lights() { self endon( "death" ); self endon( "faux_death" ); maps\_utility::ent_flag_init( "lights_on" ); maps\_utility::ent_flag_set( "lights_on" ); if ( isalive( self ) ) { if ( self.model == "body_fed_space_assault_a" || self.model == "body_fed_space_assault_b" ) { var_0 = common_scripts\utility::getfx( "enemy_light" ); playfxontag( var_0, self, "tag_light_left" ); maps\_utility::delaythread( 0.05, ::space_actor_lights_kill, var_0, "tag_light_left" ); } else if ( self.model == "us_space_assault_a_body" || self.model == "us_space_assault_b_body" ) { var_0 = common_scripts\utility::getfx( "ally_light" ); maps\_utility::delaythread( 0.05, ::space_actor_lights_kill, var_0, "tag_light_back" ); while ( isalive( self ) ) { if ( maps\_utility::ent_flag( "lights_on" ) ) { playfxontag( var_0, self, "tag_light_back" ); wait 0.15; stopfxontag( var_0, self, "tag_light_back" ); wait 0.15; playfxontag( var_0, self, "tag_light_back" ); wait 0.15; stopfxontag( var_0, self, "tag_light_back" ); wait( randomfloatrange( 1, 3 ) ); continue; } stopfxontag( var_0, self, "tag_light_back" ); common_scripts\utility::waitframe(); } } } } space_actor_lights_kill( var_0, var_1 ) { common_scripts\utility::waittill_any( "death", "faux_death" ); if ( isdefined( self ) && maps\_utility::ent_flag( "lights_on" ) ) killfxontag( var_0, self, var_1 ); var_2 = 0.15; for ( var_3 = 0; var_3 < 5; var_3++ ) { if ( isdefined( self ) && maps\_utility::ent_flag( "lights_on" ) ) playfxontag( var_0, self, var_1 ); wait( var_2 ); if ( isdefined( self ) && maps\_utility::ent_flag( "lights_on" ) ) killfxontag( var_0, self, var_1 ); wait( var_2 ); } } space_blood() { self endon( "death" ); self endon( "styptic" ); for (;;) { self waittill( "damage", var_0, var_1, var_2, var_3, var_4 ); if ( var_4 != "MOD_EXPLOSIVE" ) { if ( var_2 != ( 0, 0, 0 ) ) playfx( common_scripts\utility::getfx( "blood_impact_space" ), var_3, var_2 ); } } } glint_behavior() { self notify( "new_glint_thread" ); self endon( "new_glint_thread" ); self endon( "stop_glint_thread" ); self endon( "death" ); if ( !isdefined( level._effect["sniper_glint"] ) ) return; if ( !isalive( self.enemy ) ) return; var_0 = common_scripts\utility::getfx( "sniper_glint" ); wait 0.2; for (;;) { if ( self.weapon == self.primaryweapon && animscripts\combat_utility::player_sees_my_scope() && isdefined( self.enemy ) ) { if ( distancesquared( self.origin, self.enemy.origin ) > 65536 ) playfxontag( var_0, self, "tag_eye" ); var_1 = randomfloatrange( 3, 5 ); wait( var_1 ); } wait 0.2; } } doing_in_space_rotation( var_0, var_1, var_2, var_3 ) { self endon( "stop_rotation" ); self endon( "death" ); if ( isdefined( var_3 ) && var_3 == 1 ) self.turnrate = animscripts\swim::space_getorientturnrate(); if ( isdefined( var_2 ) && var_2 > 1 ) { for ( var_4 = 0; var_4 < var_2; var_4++ ) { var_5 = fake_slerp( var_0, var_1, var_4 / var_2 ); self orientmode( "face angle 3d", var_5, 1 ); wait 0.05; } } else self orientmode( "face angle 3d", var_1 ); if ( isdefined( var_3 ) && var_3 == 1 ) { var_6 = gettime(); var_7 = 2000; for (;;) { if ( gettime() > var_6 + var_7 || angles_within( var_1, 15, 15, 15 ) ) { if ( self.turnrate == animscripts\swim::space_getorientturnrate() ) self.turnrate = animscripts\swim::space_getdefaultturnrate(); return; } wait 0.1; } } } fake_slerp( var_0, var_1, var_2 ) { return ( angle_lerp( var_0[0], var_1[0], var_2 ), angle_lerp( var_0[1], var_1[1], var_2 ), angle_lerp( var_0[2], var_1[2], var_2 ) ); } angle_lerp( var_0, var_1, var_2 ) { return angleclamp( var_0 + angleclamp180( var_1 - var_0 ) * var_2 ); } force_actor_upright() { var_0 = ( self.angles[0], self.angles[1], 0 ); thread doing_in_space_rotation( self.angles, var_0, 1, 1 ); } force_actor_space_rotation_update( var_0, var_1, var_2 ) { if ( isdefined( var_0 ) && var_0 ) { if ( !isdefined( self.nextforceorienttime ) || gettime() < self.nextforceorienttime ) return; } var_3 = ( 0, 0, 0 ); if ( isdefined( var_2 ) ) var_3 = var_2; else if ( isdefined( self.node ) ) { var_3 = animscripts\utility::gettruenodeangles( self.node ); if ( ( self.node.type == "Cover Right 3D" || self.node.type == "Cover Left 3D" ) && isdefined( self.hideyawoffset ) ) var_3 = combineangles( var_3, ( 0, self.hideyawoffset, 0 ) ); else if ( !isdefined( self.hideyawoffset ) ) { if ( self.node.type == "Cover Left 3D" ) { var_4 = anim.archetypes["soldier"]["swim"]["arrival_cover_corner_l_angleDelta"][4][4]; var_3 = combineangles( var_3, ( 0, var_4[1], 0 ) ); } else if ( self.node.type == "Cover Right 3D" ) { var_4 = anim.archetypes["soldier"]["swim"]["arrival_cover_corner_r_angleDelta"][4][4]; var_3 = combineangles( var_3, ( 0, var_4[1], 0 ) ); } } } else return; if ( isdefined( var_1 ) && var_1 ) doing_in_space_rotation( self.angles, var_3, 1 ); else thread doing_in_space_rotation( self.angles, var_3, 1 ); if ( isdefined( self.nextforceorienttime ) ) self.nextforceorienttime = gettime() + 6500; } force_rotation_update_listener() { self endon( "death" ); for (;;) { self waittill( "force_space_rotation_update", var_0, var_1, var_2, var_3 ); if ( isdefined( var_3 ) ) { force_actor_upright(); continue; } force_actor_space_rotation_update( var_0, var_1, var_2 ); } } angles_within( var_0, var_1, var_2, var_3 ) { if ( self.angles[0] < var_0[0] + var_1 && self.angles[0] > var_0[0] - var_1 ) { if ( self.angles[1] < var_0[1] + var_2 && self.angles[1] > var_0[1] - var_2 ) { if ( self.angles[2] < var_0[2] + var_3 && self.angles[2] > var_0[2] - var_3 ) return 1; } } return 0; } clear_actor_space_rotation() { thread doing_in_space_rotation( self.angles, ( self.angles[0], self.angles[1], 0 ), 1 ); } smart_radio_dialogue_facial( var_0, var_1, var_2 ) { if ( !isdefined( self ) ) return; maps\_utility_code::add_to_radio( var_0 ); thread maps\_utility::radio_dialogue( var_0, var_2 ); maps\_utility::bcs_scripted_dialogue_start(); maps\_anim::anim_single_queue( self, var_1 ); }