cod5-sdk/raw/maps/hol1_anim.gsc

1005 lines
33 KiB
Plaintext

// Animation Level File
#include maps\_anim;
#include common_scripts\utility;
#include maps\_utility;
#include maps\hol1_util;
#using_animtree("generic_human");
main()
{
anim_loader();
}
anim_loader()
{
// driving
level.scr_anim["jeep_driver"]["driver_idle"][0] = %crew_jeep1_driver_drive_idle;
level.scr_anim["jeep_driver"]["driver_idle"][1] = %crew_jeep1_driver_drive_idle;
level.scr_anim["jeep_driver"]["driver_turn_left"] = %crew_jeep1_driver_turn_left_light;
level.scr_anim["jeep_driver"]["driver_turn_right"] = %crew_jeep1_driver_turn_right_light;
level.scr_anim["jeep_driver"]["driver_sharp_turn_left"] = %crew_jeep1_driver_turn_left_heavy;
level.scr_anim["jeep_driver"]["driver_sharp_turn_right"] = %crew_jeep1_driver_turn_right_heavy;
level.scr_anim["jeep_driver"]["climb_out"] = %crew_jeep1_driver_climbout;
level.scr_anim["jeep_passenger"]["passenger_idle"][0] = %crew_jeep1_passenger1_drive_idle;
level.scr_anim["jeep_passenger"]["passenger_idle"][1] = %crew_jeep1_passenger1_drive_idle;
level.scr_anim["jeep_passenger"]["passenger_turn_left"] = %crew_jeep1_passenger1_turn_left_light;
level.scr_anim["jeep_passenger"]["passenger_turn_right"] = %crew_jeep1_passenger1_turn_right_light;
level.scr_anim["jeep_passenger"]["passenger_sharp_turn_left"] = %crew_jeep1_passenger1_turn_left_heavy;
level.scr_anim["jeep_passenger"]["passenger_sharp_turn_right"] = %crew_jeep1_passenger1_turn_right_heavy;
level.scr_anim["jeep_passenger"]["climb_out"] = %crew_jeep1_passenger1_climbout;
level.scr_anim["jeep_passenger2"]["passenger2_idle"][0] = %crew_jeep1_passenger2_drive_idle;
level.scr_anim["jeep_passenger2"]["passenger2_idle"][1] = %crew_jeep1_passenger2_drive_idle;
level.scr_anim["jeep_passenger2"]["passenger2_turn_left"] = %crew_jeep1_passenger2_turn_left_light;
level.scr_anim["jeep_passenger2"]["passenger2_turn_right"] = %crew_jeep1_passenger2_turn_right_light;
level.scr_anim["jeep_passenger2"]["passenger2_sharp_turn_left"] = %crew_jeep1_passenger2_turn_left_heavy;
level.scr_anim["jeep_passenger2"]["passenger2_sharp_turn_right"] = %crew_jeep1_passenger2_turn_right_heavy;
level.scr_anim["jeep_passenger2"]["climb_out"] = %crew_jeep1_passenger2_climbout;
level.scr_anim["jeep_passenger"]["maddock_get_out"] = %crew_jeep1_passenger1_climbout;
level.scr_anim["jeep_passenger"]["maddock_close_door"] = %crew_jeep1_passenger1_closedoor;
level.scr_anim["jeep_passenger"]["maddock_capture"] = %run_2_melee_charge;
level.scr_anim["jeep_passenger"]["maddock_on_ground"][0] = %reload_prone_rifle;
level.scr_anim["jeep_passenger"]["maddock_on_ground"][1] = %reload_prone_rifle;
// german checkpoint
level.scr_anim["german_camp_fire"]["around_fire_a"][0] = %ch_aroundfire_guy_a;
level.scr_anim["german_camp_fire"]["around_fire_a"][1] = %ch_aroundfire_guy_a;
level.scr_anim["german_camp_fire"]["around_fire_b"][0] = %ch_aroundfire_guy_b;
level.scr_anim["german_camp_fire"]["around_fire_b"][1] = %ch_aroundfire_guy_b;
level.scr_anim["german_camp_fire"]["around_fire_c"][0] = %ch_aroundfire_guy_c;
level.scr_anim["german_camp_fire"]["around_fire_c"][1] = %ch_aroundfire_guy_c;
level.scr_anim["german_camp_fire"]["around_fire_d"][0] = %ch_aroundfire_guy_d;
level.scr_anim["german_camp_fire"]["around_fire_d"][1] = %ch_aroundfire_guy_d;
level.scr_anim["german_guard"]["crouch_alert_idle_reach"] = %crouch_alert_A_idle;
level.scr_anim["german_guard"]["crouch_alert_idle"][0] = %crouch_alert_A_idle;
level.scr_anim["german_guard"]["crouch_alert_idle"][1] = %crouch_alert_A_twitch;
level.scr_anim["german_guard"]["stand_alert_idle_reach"] = %stand_alertb_idle1;
level.scr_anim["german_guard"]["stand_alert_idle"][0] = %stand_alertb_idle1;
level.scr_anim["german_guard"]["stand_alert_idle"][1] = %stand_alertb_twitch1;
level.scr_anim["german_guard"]["stand_aim_reach"] = %stand_aim_straight;
level.scr_anim["german_guard"]["stand_aim"][0] = %stand_aim_straight;
level.scr_anim["german_guard"]["stand_aim"][1] = %stand_aim_straight;
level.scr_anim["german_guard"]["stand_melee"] = %stand_2_melee_1;
// patrols anims
level.scr_anim[ "generic" ][ "patrol_walk" ] = %patrol_bored_patrolwalk;
level.scr_anim[ "generic" ][ "patrol_walk_twitch" ] = %patrol_bored_patrolwalk_twitch;
level.scr_anim[ "generic" ][ "patrol_stop" ] = %patrol_bored_walk_2_bored;
level.scr_anim[ "generic" ][ "patrol_start" ] = %patrol_bored_2_walk;
level.scr_anim[ "generic" ][ "patrol_turn180" ] = %patrol_bored_2_walk_180turn;
level.scr_anim[ "generic" ][ "patrol_idle_1" ] = %patrol_bored_idle;
level.scr_anim[ "generic" ][ "patrol_idle_2" ] = %patrol_bored_idle_smoke;
level.scr_anim[ "generic" ][ "patrol_idle_3" ] = %patrol_bored_idle_cellphone;
level.scr_anim[ "generic" ][ "patrol_idle_4" ] = %patrol_bored_twitch_bug;
level.scr_anim[ "generic" ][ "patrol_idle_5" ] = %patrol_bored_twitch_checkphone;
level.scr_anim[ "generic" ][ "patrol_idle_6" ] = %patrol_bored_twitch_stretch;
level.scr_anim[ "generic" ][ "patrol_idle_smoke" ] = %patrol_bored_idle_smoke;
level.scr_anim[ "generic" ][ "patrol_idle_checkphone" ] = %patrol_bored_twitch_checkphone;
level.scr_anim[ "generic" ][ "patrol_idle_stretch" ] = %patrol_bored_twitch_stretch;
level.scr_anim[ "generic" ][ "patrol_idle_phone" ] = %patrol_bored_idle_cellphone;
level.scr_anim[ "generic" ][ "sneak_walk_1" ] = %patrol_bored_patrolwalk;
level.scr_anim[ "generic" ][ "sneak_walk_2" ] = %patrol_bored_patrolwalk;
level.scr_anim[ "generic" ][ "sneak_walk_3" ] = %patrol_bored_patrolwalk;
// generic anims
level.scr_anim[ "generic" ][ "generic_wave" ][0] = %patrol_bored_idle_smoke;
level.scr_anim[ "generic" ][ "generic_wave" ][1] = %patrol_bored_idle_smoke;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][0] = %patrol_bored_idle;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][1] = %patrol_bored_idle_smoke;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][2] = %patrol_bored_idle_cellphone;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][3] = %patrol_bored_twitch_bug;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][4] = %patrol_bored_twitch_checkphone;
level.scr_anim[ "generic" ][ "patrol_idle_all" ][5] = %patrol_bored_twitch_stretch;
// capture anims
level.scr_anim["captor"]["capture_walk_formation"] = %ch_captor_formation1;
level.scr_anim["captor"]["capture_walk_formation_idle"][0] = %ch_captor_formation_idle1;
level.scr_anim["captor"]["capture_walk_formation_idle"][1] = %ch_captor_formation_idle1;
level.scr_anim["captor"]["capture_walk_in"] = %ch_captor_in1;
level.scr_anim["captor"]["capture_walk_loop"] = %ch_captor_loop1;
level.scr_anim["captor"]["capture_walk_out"] = %ch_captor_out1;
level.scr_anim["captor"]["capture_walk_idle"][0] = %ch_captor_walk_idle1;
level.scr_anim["captor"]["capture_walk_idle"][1] = %ch_captor_walk_idle1;
level.scr_anim["prisonerL"]["capture_walk_formation"] = %ch_captor_formation;
level.scr_anim["prisonerL"]["capture_walk_formation_idle"][0] = %ch_captor_formation_idle;
level.scr_anim["prisonerL"]["capture_walk_formation_idle"][1] = %ch_captor_formation_idle;
level.scr_anim["prisonerL"]["capture_walk_in"] = %ch_captor_in;
level.scr_anim["prisonerL"]["capture_walk_loop"] = %ch_captor_loop;
level.scr_anim["prisonerL"]["capture_walk_out"] = %ch_captor_out;
level.scr_anim["prisonerL"]["capture_walk_idle"][0] = %ch_captor_walk_idle;
level.scr_anim["prisonerL"]["capture_walk_idle"][1] = %ch_captor_walk_idle;
level.scr_anim["prisonerR"]["capture_walk_formation"] = %ch_captor_formation2;
level.scr_anim["prisonerR"]["capture_walk_formation_idle"][0] = %ch_captor_formation_idle2;
level.scr_anim["prisonerR"]["capture_walk_formation_idle"][1] = %ch_captor_formation_idle2;
level.scr_anim["prisonerR"]["capture_walk_in"] = %ch_captor_in2;
level.scr_anim["prisonerR"]["capture_walk_loop"] = %ch_captor_loop2;
level.scr_anim["prisonerR"]["capture_walk_out"] = %ch_captor_out2;
level.scr_anim["prisonerR"]["capture_walk_idle"][0] = %ch_captor_walk_idle2;
level.scr_anim["prisonerR"]["capture_walk_idle"][1] = %ch_captor_walk_idle2;
// ambient
level.scr_anim["snow_digger"]["snow_dig_react"] = %ch_holland1_shoveling_alert;
level.scr_anim["snow_digger"]["snow_dig"][0] = %ch_holland1_shoveling_loop;
level.scr_anim["snow_digger"]["snow_dig"][1] = %ch_holland1_shoveling_loop;
level.scr_anim["sitting"]["sitting_react"] = %ch_seated_weaponcheck_alert;
level.scr_anim["sitting"]["sitting_idle_1"][0] = %ch_seated_weaponcheck_guy1;
level.scr_anim["sitting"]["sitting_idle_1"][1] = %ch_seated_weaponcheck_guy1;
level.scr_anim["sitting"]["sitting_idle_2"][0] = %ch_seated_weaponcheck_guy2;
level.scr_anim["sitting"]["sitting_idle_2"][1] = %ch_seated_weaponcheck_guy2;
level.scr_anim["sitting"]["sitting_idle_3"][0] = %ch_seated_weaponcheck_guy3;
level.scr_anim["sitting"]["sitting_idle_3"][1] = %ch_seated_weaponcheck_guy3;
level.scr_anim["sitting"]["sitting_idle_4"][0] = %ch_seated_weaponcheck_guy4;
level.scr_anim["sitting"]["sitting_idle_4"][1] = %ch_seated_weaponcheck_guy4;
level.scr_anim["cargo_guy1"]["cargo_jump"] = %ch_holland1_cargo_guy1;
level.scr_anim["cargo_guy2"]["cargo_jump"] = %ch_holland1_cargo_guy2;
level.scr_anim["jump_guy1"]["jump_for_cover"] = %ch_holland1_jump2cover_guy1;
level.scr_anim["jump_guy2"]["jump_for_cover"] = %ch_holland1_jump2cover_guy2;
// goddard kill
level.scr_anim["sneaky_goddard"]["goddard_knife"] = %ch_holland2_slit_sarge;
level.scr_anim["nazi_knifed"]["goddard_knife"] = %ch_holland2_slit_german;
level.scr_anim["sneaky_goddard"]["goddard_sneak"] = %ch_holland2_slit_sarge_sneaking;
level.scr_anim["sneaky_goddard"]["goddard_kill"] = %ch_holland2_slit_sarge_death;
level.scr_anim["nazi_knifed"]["nazi_death"] = %ch_holland2_slit_german_death;
// SHooting prisoner
level.scr_anim["knees_execution_executioner"]["execute"] = %ch_berlin2_E1vignette2_german;
level.scr_anim["knees_execution_victim"]["execute"] = %ch_berlin2_E1vignette2_russian;
level.scr_anim["knees_execution_victim"]["deathidle"][0] = %ch_berlin2_E1vignette2_russian_dead;
level.scr_sound["knees_execution_victim"]["saved_getup"] = "print:getting up anim";
addNotetrack_sound( "knees_execution_executioner", "shoot", "execute", "weap_kar98k_fire" ); // gunshot sound
addNotetrack_customFunction( "knees_execution_executioner", "shoot", ::event3_execution_gunshotFX, "execute" ); // gunshot fx
addNotetrack_sound( "knees_execution_executioner", "shot_in_the_head", "execute", "bullet_large_flesh" ); // headshot sound
// movements
level.scr_anim["gesture"]["gesture_stop"] = %ch_crouch_gesture_stop;
level.scr_anim["gesture"]["gesture_closer"] = %ch_crouch_gesture_closer;
}
/////////////////////////////////////////////////////////////////////////////////////////
#using_animtree ("hol1_trucks");
ev2_truck_crash_anim()
{
level waittill( "truck_collision_anim_starts" );
iprintlnbold( "TRUCK ANIM" );
origin_start = getent( "trucks_collision_start_origin", "targetname" );
opel1 = spawn("script_model",origin_start getorigin());
opel1.angles = origin_start.angles;
opel1 setmodel("vehicle_ger_wheeled_opel_blitz_winter");
opel2 = spawn("script_model",origin_start getorigin());
opel2.angles = origin_start.angles;
opel2 setmodel("vehicle_ger_wheeled_opel_blitz_winter");
opel1.animname = "opel";
opel2.animname = "opel";
opel1 UseAnimTree( #animtree );
opel2 UseAnimTree( #animtree );
opel1 setflaggedanim( "anim", %v_holl1_truck_crashing_a, 1, 0.1, 1 );
opel2 setflaggedanim( "anim", %v_holl1_truck_crashing_b, 1, 0.1, 1 );
wait( 0.5 );
playfxontag( level._effect["headlight"], opel1, "tag_headlight_left" );
playfxontag( level._effect["headlight"], opel1, "tag_headlight_right" );
//playfxontag( level._effect["brakelight"], opel1, "tag_brakelight_left" );
playfxontag( level._effect["headlight"], opel2, "tag_headlight_left" );
playfxontag( level._effect["headlight"], opel2, "tag_headlight_right" );
//playfxontag( level._effect["brakelight"], opel2, "tag_brakelight_left" );
wait( 10 );
opel1 delete();
opel2 delete();
}
#using_animtree("generic_human");
/////////////////////////////////////////////////////////////////////////////////////////
driver_anims( guy )
{
guy endon( "death" );
// idle unless instructed to make turns
guy.animname = "jeep_driver";
guy thread left_turn_driver_anim();
guy thread sharp_left_turn_driver_anim();
guy thread right_turn_driver_anim();
guy thread sharp_right_turn_driver_anim();
guy thread exit_driver_anim();
guy thread anim_loop_solo( guy, "driver_idle", undefined, "stop_idle" );
guy waittill( "get_out" );
guy notify( "stop_idle" );
}
left_turn_driver_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_left" );
self SetFlaggedAnimKnobRestart( "driver_turn_left", level.scr_anim["jeep_driver"]["driver_turn_left"], 1.0, 0.2, 1.0 );
}
}
right_turn_driver_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_right" );
self SetFlaggedAnimKnobRestart( "driver_turn_right", level.scr_anim["jeep_driver"]["driver_turn_right"], 1.0, 0.2, 1.0 );
}
}
sharp_left_turn_driver_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_left" );
self SetFlaggedAnimKnobRestart( "driver_sharp_turn_left", level.scr_anim["jeep_driver"]["driver_sharp_turn_left"], 1.0, 0.2, 1.0 );
}
}
sharp_right_turn_driver_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_right" );
self SetFlaggedAnimKnobRestart( "driver_sharp_turn_right", level.scr_anim["jeep_driver"]["driver_sharp_turn_right"], 1.0, 0.2, 1.0 );
}
}
exit_driver_anim()
{
self endon( "death" );
self waittill( "get_out" );
self notify( "stop_idle" );
self SetFlaggedAnimKnobRestart( "climb_out", level.scr_anim["jeep_driver"]["climb_out"], 1.0, 0.2, 1.0 );
//self waittillmatch("climb_out", "end");
wait( 2 );
self unlink();
}
/////////////////////////////////////////////////////////////////////////////////////////
passenger_anims( guy )
{
guy endon( "death" );
// idle unless instructed to make turns
guy.animname = "jeep_passenger";
guy thread left_turn_passenger_anim();
guy thread right_turn_passenger_anim();
guy thread sharp_left_turn_passenger_anim();
guy thread sharp_right_turn_passenger_anim();
guy thread exit_passenger_anim();
guy thread anim_loop_solo( guy, "passenger_idle", undefined, "stop_idle" );
guy waittill( "get_out" );
guy notify( "stop_idle" );
}
left_turn_passenger_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_left" );
self SetFlaggedAnimKnobRestart( "passenger_turn_left", level.scr_anim["jeep_passenger"]["passenger_turn_left"], 1.0, 0.2, 1.0 );
}
}
right_turn_passenger_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_right" );
self SetFlaggedAnimKnobRestart( "passenger_turn_right", level.scr_anim["jeep_passenger"]["passenger_turn_right"], 1.0, 0.2, 1.0 );
}
}
sharp_left_turn_passenger_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_left" );
self SetFlaggedAnimKnobRestart( "passenger_sharp_turn_left", level.scr_anim["jeep_passenger"]["passenger_sharp_turn_left"], 1.0, 0.2, 1.0 );
}
}
sharp_right_turn_passenger_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_right" );
self SetFlaggedAnimKnobRestart( "passenger_sharp_turn_right", level.scr_anim["jeep_passenger"]["passenger_sharp_turn_right"], 1.0, 0.2, 1.0 );
}
}
exit_passenger_anim()
{
self endon( "death" );
self waittill( "get_out" );
self notify( "stop_idle" );
self SetFlaggedAnimKnobRestart( "climb_out", level.scr_anim["jeep_passenger"]["climb_out"], 1.0, 0.2, 1.0 );
//self waittillmatch("climb_out", "end");
wait( 2 );
self unlink();
}
/////////////////////////////////////////////////////////////////////////////////////////
passenger2_anims( guy )
{
guy endon( "death" );
// idle unless instructed to make turns
guy.animname = "jeep_passenger2";
guy thread left_turn_passenger2_anim();
guy thread right_turn_passenger2_anim();
guy thread sharp_left_turn_passenger2_anim();
guy thread sharp_right_turn_passenger2_anim();
guy thread exit_passenger2_anim();
guy thread anim_loop_solo( guy, "passenger2_idle", undefined, "stop_idle" );
guy waittill( "get_out" );
guy notify( "stop_idle" );
}
left_turn_passenger2_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_left" );
self SetFlaggedAnimKnobRestart( "passenger2_turn_left", level.scr_anim["jeep_passenger2"]["passenger2_turn_left"], 1.0, 0.2, 1.0 );
}
}
right_turn_passenger2_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "turn_right" );
self SetFlaggedAnimKnobRestart( "passenger2_turn_right", level.scr_anim["jeep_passenger2"]["passenger2_turn_right"], 1.0, 0.2, 1.0 );
}
}
sharp_left_turn_passenger2_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_left" );
self SetFlaggedAnimKnobRestart( "passenger2_sharp_turn_left", level.scr_anim["jeep_passenger2"]["passenger2_sharp_turn_left"], 1.0, 0.2, 1.0 );
}
}
sharp_right_turn_passenger2_anim()
{
self endon( "death" );
self endon( "get_out" );
while( 1 )
{
self waittill( "sharp_turn_right" );
self SetFlaggedAnimKnobRestart( "passenger2_sharp_turn_right", level.scr_anim["jeep_passenger2"]["passenger2_sharp_turn_right"], 1.0, 0.2, 1.0 );
}
}
exit_passenger2_anim()
{
self endon( "death" );
self waittill( "get_out" );
self notify( "stop_idle" );
self SetFlaggedAnimKnobRestart( "climb_out", level.scr_anim["jeep_passenger2"]["climb_out"], 1.0, 0.2, 1.0 );
//self waittillmatch("climb_out", "end");
wait( 2 );
self unlink();
}
/////////////////////////////////////////////////////////////////////////////////////////
maddock_capture_anims( guy )
{
guy endon( "death" );
guy anim_single_solo( guy, "maddock_get_out" );
pos = getstruct( "maddock_exit_point", "script_noteworthy" );
org = spawn( "script_origin", pos.origin );
guy unlink();
guy linkto( org );
level notify( "maddock_out" );
iprintlnbold( "Maddock arguing with guard" );
wait( 3 );
level notify( "maddock_captured" );
}
/////////////////////////////////////////////////////////////////////////////////////////
ev1_spawners_anims_init()
{
// enemies from train (some run and die, while others fight normally)
initialize_spawn_func( "ev1_checkpoint_patrol", "script_noteworthy", ::ev1_patrol_think );
initialize_spawn_func( "ev1_checkpoint_barrel", "script_noteworthy", ::ev1_fire_think );
initialize_spawn_func( "ev1_checkpoint_guard1", "script_noteworthy", ::ev1_stand_guard_think );
initialize_spawn_func( "ev1_checkpoint_guard2", "script_noteworthy", ::ev1_stand_guard_think );
initialize_spawn_func( "ev1_checkpoint_guard3", "script_noteworthy", ::ev1_stand_guard_think );
initialize_spawn_func( "ev1_checkpoint_guard4", "script_noteworthy", ::ev1_stand_guard_think );
initialize_spawn_func( "ev1_checkpoint_guard5", "script_noteworthy", ::ev1_stand_guard_think );
initialize_spawn_func( "ev1_checkpoint_gunner1", "script_noteworthy", ::ev1_gunner_think );
initialize_spawn_func( "ev1_checkpoint_checker", "script_noteworthy", ::ev1_checker_think );
initialize_spawn_func( "ev1_checkpoint_approacher1", "script_noteworthy", ::ev1_approacher_think );
initialize_spawn_func( "ev1_checkpoint_approacher2", "script_noteworthy", ::ev1_approacher_think );
initialize_spawn_func( "ev1_checkpoint_approacher3", "script_noteworthy", ::ev1_approacher_think );
initialize_spawn_func( "ev1_checkpoint_approacher4", "script_noteworthy", ::ev1_approacher_think );
initialize_spawn_func( "ev1_checkpoint_approacher5", "script_noteworthy", ::ev1_approacher_think );
initialize_spawn_func( "ev1_jumper_1", "script_noteworthy", ::ev1_jumper1_think );
initialize_spawn_func( "ev1_jumper_2", "script_noteworthy", ::ev1_jumper2_think );
}
ev1_patrol_think()
{
self endon( "death" );
maps\hol1_util::hold_fire( self );
level waittill( "checkpoint_break_through" );
maps\hol1_util::open_fire_fake( self );
}
ev1_fire_think()
{
self endon( "death" );
self.animname = "german_camp_fire";
maps\hol1_util::hold_fire( self );
index = randomint( 4 );
if( index == 0 )
{
self thread anim_loop_solo ( self, "around_fire_a", undefined, "stop_looping");
}
else if( index == 1 )
{
self thread anim_loop_solo ( self, "around_fire_b", undefined, "stop_looping");
}
else if( index == 2 )
{
self thread anim_loop_solo ( self, "around_fire_c", undefined, "stop_looping");
}
else
{
self thread anim_loop_solo ( self, "around_fire_d", undefined, "stop_looping");
}
level waittill( "checkpoint_break_through" );
self notify ("stop_looping");
maps\hol1_util::open_fire_fake( self );
}
ev1_stand_guard_think()
{
self endon( "death" );
self.animname = "german_guard";
maps\hol1_util::hold_fire( self );
self thread anim_loop_solo ( self, "stand_alert_idle", undefined, "stop_looping");
level waittill( "checkpoint_break_through" );
self notify ("stop_looping");
maps\hol1_util::open_fire_fake( self );
}
ev1_gunner_think()
{
self endon( "death" );
self.animname = "german_guard";
maps\hol1_util::hold_fire( self );
self thread anim_loop_solo ( self, "crouch_alert_idle", undefined, "stop_looping");
level waittill( "checkpoint_break_through" );
self notify ("stop_looping");
maps\hol1_util::open_fire_fake( self );
}
ev1_approacher_think()
{
self endon( "death" );
self.animname = "german_guard";
maps\hol1_util::hold_fire( self );
self thread anim_loop_solo ( self, "stand_alert_idle", undefined, "stop_looping");
level waittill( "checkpoint_entered" );
self notify ("stop_looping");
// go into a second animation spot
self thread anim_loop_solo ( self, "stand_aim", undefined, "stop_looping");
level waittill( "checkpoint_break_through" );
self notify ("stop_looping");
maps\hol1_util::open_fire_fake( self );
}
ev1_checker_think()
{
self endon( "death" );
self.animname = "german_guard";
maps\hol1_util::hold_fire( self );
self thread anim_loop_solo ( self, "stand_alert_idle", undefined, "stop_looping");
level waittill( "checkpoint_entered" );
self notify ("stop_looping");
self thread anim_loop_solo ( self, "stand_aim", undefined, "stop_looping");
level waittill( "maddock_out" );
self notify ("stop_looping");
self thread anim_single_solo( self, "stand_melee" );
level notify( "time_to_run" );
maps\hol1_util::open_fire_fake( self );
}
ev1_jumper1_think()
{
self endon( "death" );
self.animname = "jump_guy1";
level thread maps\hol1_util::hold_fire( self );
self thread anim_single_solo( self, "jump_for_cover" );
}
ev1_jumper2_think()
{
self endon( "death" );
self.animname = "jump_guy2";
level thread maps\hol1_util::hold_fire( self );
self thread anim_single_solo( self, "jump_for_cover" );
}
/////////////////////////////////////////////////////////////////////////////////////////
ev2_spawners_anims_init()
{
// enemies from train (some run and die, while others fight normally)
initialize_spawn_func( "ev2_halftrack", "script_noteworthy", ::ev2_halftrack_think );
initialize_spawn_func( "ev2_truck_unloader1", "script_noteworthy", ::ev2_truck_unload1_think );
initialize_spawn_func( "ev2_truck_unloader2", "script_noteworthy", ::ev2_truck_unload2_think );
initialize_spawn_func( "ev2_tank_guard", "script_noteworthy", ::ev2_tank_guard_think );
initialize_spawn_func( "ev2_truck_chaser", "script_noteworthy", ::ev2_halftrack_think );
level thread cargo_guys_jump_anim();
}
ev2_truck_unload1_think()
{
self endon( "death" );
level.cargo_guy1 = self;
self.animname = "cargo_guy1";
level thread maps\hol1_util::hold_fire( self );
anim_trigger = getent( "ev2_truck_chase_spawn", "targetname" );
anim_trigger waittill( "trigger" );
level notify( "cargo_guy1_ready" );
//level waittill( "stop_at_halftrack" );
//maps\hol1_util::open_fire_fake2( self );
}
ev2_truck_unload2_think()
{
self endon( "death" );
level.cargo_guy2 = self;
self.animname = "cargo_guy2";
level thread maps\hol1_util::hold_fire( self );
anim_trigger = getent( "ev2_truck_chase_spawn", "targetname" );
anim_trigger waittill( "trigger" );
level notify( "cargo_guy2_ready" );
//level waittill( "lake_stop" );
//maps\hol1_util::open_fire_fake2( self );
}
cargo_guys_jump_anim()
{
level waittill_multiple( "cargo_guy1_ready", "cargo_guy2_ready" );
wait( 1.8 );
anim_node = getnode( "ev2_cargo_jump_node", "targetname" );
level thread anim_reach_node( "cargo_jump", level.cargo_guy1, anim_node, "cargo1_in_place" );
level thread anim_reach_node( "cargo_jump", level.cargo_guy2, anim_node, "cargo2_in_place" );
level.cargo_guy1.goalradius = 4;
level.cargo_guy2.goalradius = 4;
level waittill_multiple( "cargo1_in_place", "cargo2_in_place" );
anim_guys = [];
anim_guys[0] = level.cargo_guy1;
anim_guys[1] = level.cargo_guy2;
anim_single( anim_guys, "cargo_jump", undefined, anim_node );
}
ev2_halftrack_think()
{
self endon( "death" );
//maps\hol1_util::hold_fire( self );
//level waittill( "lake_stop" );
maps\hol1_util::open_fire_fake2( self );
}
ev2_tank_guard_think()
{
self endon( "death" );
self.goalradius = 4;
maps\hol1_util::hold_fire( self );
//level waittill( "stop_at_tank" );
//maps\hol1_util::open_fire_fake2( self );
//level waittill( "tank_guards_escape" );
//retreat_node = getnode( "ev2_tank_guard_escape", "targetname" );
//maps\hol1_util::hold_fire( self );
//self setgoalnode( retreat_node );
}
ev3_spawners_anims_init()
{
// enemies from train (some run and die, while others fight normally)
initialize_spawn_func( "ev3_camp", "script_noteworthy", ::ev2_halftrack_think );
}
/////////////////////////////////////////////////////////////////////////////
formation_anim()
{
anim_node = getnode( "formation_1_start", "targetname" );
everyone_anim_reach( "capture_walk_formation", anim_node );
everyone_anim_single( "capture_walk_formation", anim_node );
}
everyone_anim_reach( anim_name, anim_node )
{
level thread anim_reach_node( anim_name, level.goddard, anim_node, "captor_in_place" );
level thread anim_reach_node( anim_name, level.friend1, anim_node, "prisonerL_in_place" );
level thread anim_reach_node( anim_name, level.friend2, anim_node, "prisonerR_in_place" );
level.goddard.goalradius = 4;
level.friend1.goalradius = 4;
level.friend2.goalradius = 4;
level waittill_multiple( "captor_in_place", "prisonerL_in_place", "prisonerR_in_place" );
level notify( "everyone_in_place" );
}
anim_reach_node( anim_name, guy, anim_node, notify_name )
{
guy anim_reach_solo( guy, anim_name, undefined, anim_node );
level notify( notify_name );
}
everyone_anim_single( anim_name, anim_node )
{
anim_guys = [];
anim_guys[0] = level.goddard;
anim_guys[1] = level.friend1;
anim_guys[2] = level.friend2;
anim_single( anim_guys, anim_name, undefined, anim_node );
//anim_guys[0] waittill( anim_name ); // assume the 3 anims end at teh same time
level notify( "everyone_finished_anim" );
}
everyone_single_solo( anim_name )
{
level.goddard thread anim_single_solo( level.goddard, anim_name );
level.friend1 thread anim_single_solo( level.friend1, anim_name );
level.friend2 thread anim_single_solo( level.friend2, anim_name );
level.goddard waittill( anim_name ); // assume the 3 anims end at teh same time
level notify( "everyone_finished_anim" );
}
/////////////////////////////////////////////////////////////////////////////
turn_anim_with_idle()
{
anim_node = getnode( "formation_2_start", "targetname" );
level thread single_reach_anim_idle( anim_node, level.goddard, "captor_in_place" );
level thread single_reach_anim_idle( anim_node, level.friend1, "prisonerL_in_place" );
level thread single_reach_anim_idle( anim_node, level.friend2, "prisonerR_in_place" );
level.goddard.goalradius = 4;
level.friend1.goalradius = 4;
level.friend2.goalradius = 4;
level waittill_multiple( "captor_in_place", "prisonerL_in_place", "prisonerR_in_place" );
level notify( "everyone_in_place" );
wait( 0.1 );
level.goddard notify( "stop_idle" );
level.friend1 notify( "stop_idle" );
level.friend2 notify( "stop_idle" );
level notify( "everyone_finished_anim" );
}
single_reach_anim_idle( anim_node, guy, msg )
{
//level endon( "everyone_in_place" );
level thread anim_reach_node( "capture_walk_formation", guy, anim_node, msg );
level waittill( msg );
// guy is now in position. The next part may play if others are not yet in position
guy thread anim_loop_solo( guy, "capture_walk_idle", undefined, "stop_idle" );
}
set_capture_walk_anims()
{
level.goddard thread set_run_anim( "capture_walk_loop" );
level.friend1 thread set_run_anim( "capture_walk_loop" );
level.friend2 thread set_run_anim( "capture_walk_loop" );
}
reset_capture_walk_anims()
{
level.goddard thread reset_run_anim();
level.friend1 thread reset_run_anim();
level.friend2 thread reset_run_anim();
}
reset_run_anim()
{
self.a.combatrunanim = undefined;
self.run_noncombatanim = self.a.combatrunanim;
self.walk_combatanim = self.a.combatrunanim;
self.walk_noncombatanim = self.a.combatrunanim;
self.preCombatRunEnabled = false;
}
////////////////////////////////////////////////////
digger_anim()
{
wait( randomfloat( 4 ) );
self.animname = "snow_digger";
self thread single_loop_react_anim( "snow_dig", "snow_dig_react", "enemy_in_sight" );
}
barrel_anim()
{
self.animname = "german_camp_fire";
index = randomint( 4 );
if( index == 0 )
{
self thread single_loop_react_anim( "around_fire_a", undefined, "enemy_in_sight" );
}
else if( index == 1 )
{
self thread single_loop_react_anim( "around_fire_b", undefined, "enemy_in_sight" );
}
else if( index == 2 )
{
self thread single_loop_react_anim( "around_fire_c", undefined, "enemy_in_sight" );
}
else
{
self thread single_loop_react_anim( "around_fire_d", undefined, "enemy_in_sight" );
}
}
weapon_check_1_anim()
{
self.animname = "sitting";
self thread single_loop_react_anim( "sitting_idle_1", "sitting_react", "enemy_in_sight" );
}
weapon_check_2_anim()
{
self.animname = "sitting";
self thread single_loop_react_anim( "sitting_idle_2", "sitting_react", "enemy_in_sight" );
}
weapon_check_3_anim()
{
self.animname = "sitting";
self thread single_loop_react_anim( "sitting_idle_3", "sitting_react", "enemy_in_sight" );
}
weapon_check_4_anim()
{
self.animname = "sitting";
self thread single_loop_react_anim( "sitting_idle_4", "sitting_react", "enemy_in_sight" );
}
single_loop_react_anim( anim_idle_name, anim_react_name, end_msg )
{
self endon( "death" );
self thread anim_loop_solo( self, anim_idle_name, undefined, end_msg );
self waittill( end_msg );
if( isdefined( anim_react_name ) )
{
self thread anim_single_solo( self, anim_react_name );
}
}
/////////////////////////////////////////////////////
event3_execution_2man_anims( victim, executioner, animSpot )
{
knees_execution_guys_array = [];
knees_execution_guys_array[0] = victim;
knees_execution_guys_array[1] = executioner;
// run the anim
animSpot thread anim_single( knees_execution_guys_array, "execute" );
animSpot thread victim_deathanim( victim );
}
victim_deathanim( victim )
{
// wait for the headshot notetrack
victim.executioner waittillmatch( "single anim", "shot_in_the_head" );
// wait for the shooting animation to finish
victim waittillmatch( "single anim", "end" );
// drop the weapon
victim animscripts\shared::DropAllAIWeapons();
// set custom deathanim and kill the man!
victim.deathanim = level.scr_anim[victim.animname]["deathidle"][0];
victim DoDamage( victim.health + 5, (0,0,0) );
wait( 1 );
level notify( "execution_done" );
}
event3_execution_gunshotFX( executioner )
{
executioner endon( "death" );
PlayFxOnTag( level._effect["rifleflash"], executioner, "tag_flash" );
wait( 0.2 );
PlayFxOnTag( level._effect["rifle_shelleject"], executioner, "tag_brass" );
}
event3_execution_headshotFX( executioner )
{
executioner endon( "death" );
victim = executioner.victim;
forward = AnglesToForward( ( executioner GetTagAngles( "tag_flash" ) ) );
PlayFX( level._effect["headshot"], victim GetTagOrigin( "J_HEAD" ), forward );
}
/////////////////////////////////////////////////////