375 lines
16 KiB
Plaintext
375 lines
16 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main( var_0, var_1, var_2 )
|
|
{
|
|
maps\_vehicle::build_template( "snowmobile", var_0, var_1, var_2 );
|
|
maps\_vehicle::build_localinit( ::init_local );
|
|
maps\_vehicle::build_deathmodel( "vehicle_snowmobile", "vehicle_snowmobile_static" );
|
|
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
|
maps\_vehicle::build_treadfx();
|
|
maps\_vehicle::build_life( 999, 500, 1500 );
|
|
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
|
maps\_vehicle::build_team( "allies" );
|
|
maps\_vehicle::build_unload_groups( ::unload_groups );
|
|
|
|
if ( !isdefined( anim._effect ) )
|
|
anim._effect = [];
|
|
|
|
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/car_headlight_jeep_l_clk", "headlights" );
|
|
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/car_headlight_jeep_r_clk", "headlights" );
|
|
maps\_vehicle::build_light( var_2, "taillight_truck_right", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_taillight_jeep_r_clk", "headlights" );
|
|
maps\_vehicle::build_light( var_2, "taillight_truck_left", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_taillight_jeep_l_clk", "headlights" );
|
|
maps\_vehicle::build_light( var_2, "brakelight_truck_right", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_brakelight_truck_R_pb", "brakelights" );
|
|
maps\_vehicle::build_light( var_2, "brakelight_truck_left", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_brakelight_truck_L_pb", "brakelights" );
|
|
anim._effect["snowmobile_leftground"] = loadfx( "fx/treadfx/bigair_snow_snowmobile_emitter" );
|
|
anim._effect["snowmobile_bumpbig"] = loadfx( "fx/treadfx/bigjump_land_snow_snowmobile" );
|
|
anim._effect["snowmobile_bump"] = loadfx( "fx/treadfx/smalljump_land_snow_snowmobile" );
|
|
maps\_vehicle::build_single_tread();
|
|
}
|
|
|
|
init_local()
|
|
{
|
|
self.driver_shooting = 0;
|
|
self.passenger_shooting = 1;
|
|
self.steering_enable = 1;
|
|
self.steering_maxroll = 15;
|
|
self.steering_maxdelta = 0.15;
|
|
self.steering = 0;
|
|
self.update_time = -1;
|
|
self.kill_my_fx = 0;
|
|
|
|
if ( !maps\_utility::is_specialop() )
|
|
thread do_steering();
|
|
|
|
self.bigjump_timedelta = 500;
|
|
self.event_time = -1;
|
|
self.event = [];
|
|
self.event["jump"] = [];
|
|
self.event["jump"]["driver"] = 0;
|
|
self.event["jump"]["passenger"] = 0;
|
|
self.event["bump"] = [];
|
|
self.event["bump"]["driver"] = 0;
|
|
self.event["bump"]["passenger"] = 0;
|
|
self.event["bump_big"] = [];
|
|
self.event["bump_big"]["driver"] = 0;
|
|
self.event["bump_big"]["passenger"] = 0;
|
|
self.event["sway_left"] = [];
|
|
self.event["sway_left"]["driver"] = 0;
|
|
self.event["sway_left"]["passenger"] = 0;
|
|
self.event["sway_right"] = [];
|
|
self.event["sway_right"]["driver"] = 0;
|
|
self.event["sway_right"]["passenger"] = 0;
|
|
thread watchvelocity();
|
|
thread listen_leftground();
|
|
thread listen_landed();
|
|
thread listen_jolt();
|
|
thread listen_collision();
|
|
thread setridershooting();
|
|
|
|
if ( issubstr( self.vehicletype, "player" ) )
|
|
{
|
|
var_0 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_0 setmodel( "viewmodel_glock" );
|
|
var_0 linkto( self, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
var_0 hideallparts();
|
|
}
|
|
}
|
|
|
|
init_rider()
|
|
{
|
|
self.ridingvehicle.steering = 0;
|
|
self.onsnowmobile = 1;
|
|
self.custom_animscript["combat"] = animscripts\snowmobile::main;
|
|
self.custom_animscript["stop"] = animscripts\snowmobile::main;
|
|
}
|
|
|
|
watchvelocity()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = self vehicle_getvelocity();
|
|
|
|
for (;;)
|
|
{
|
|
self.prevframevelocity = var_0;
|
|
var_0 = self vehicle_getvelocity();
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
setridershooting()
|
|
{
|
|
self endon( "death" );
|
|
waittillframeend;
|
|
|
|
if ( self.riders.size == 1 )
|
|
{
|
|
self.driver_shooting = 1;
|
|
self.passenger_shooting = 0;
|
|
}
|
|
}
|
|
|
|
snowmobile_fx( var_0 )
|
|
{
|
|
if ( isdefined( anim._effect[var_0] ) )
|
|
playfxontag( anim._effect[var_0], self, "tag_deathfx" );
|
|
}
|
|
|
|
listen_leftground()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "veh_leftground" );
|
|
|
|
if ( self.kill_my_fx == 0 )
|
|
{
|
|
self.event_time = gettime();
|
|
self.event["jump"]["driver"] = 1;
|
|
self.event["jump"]["passenger"] = 1;
|
|
snowmobile_fx( "snowmobile_leftground" );
|
|
wait 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
listen_landed()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "veh_landed" );
|
|
|
|
if ( self.kill_my_fx == 0 )
|
|
{
|
|
if ( self.event_time + self.bigjump_timedelta < gettime() )
|
|
{
|
|
self.event["bump_big"]["driver"] = 1;
|
|
self.event["bump_big"]["passenger"] = 1;
|
|
snowmobile_fx( "snowmobile_bumpbig" );
|
|
continue;
|
|
}
|
|
|
|
self.event["bump"]["driver"] = 1;
|
|
self.event["bump"]["passenger"] = 1;
|
|
snowmobile_fx( "snowmobile_bump" );
|
|
}
|
|
}
|
|
}
|
|
|
|
listen_jolt()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "veh_jolt", var_0 );
|
|
|
|
if ( self.kill_my_fx == 0 )
|
|
{
|
|
if ( var_0[1] >= 0 )
|
|
{
|
|
self.event["sway_left"]["driver"] = 1;
|
|
self.event["sway_left"]["passenger"] = 1;
|
|
snowmobile_fx( "snowmobile_sway_left" );
|
|
continue;
|
|
}
|
|
|
|
self.event["sway_right"]["driver"] = 1;
|
|
self.event["sway_right"]["passenger"] = 1;
|
|
snowmobile_fx( "snowmobile_sway_right" );
|
|
}
|
|
}
|
|
}
|
|
|
|
listen_collision()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "veh_collision", var_0, var_1 );
|
|
|
|
foreach ( var_3 in self.riders )
|
|
{
|
|
if ( isalive( var_3 ) && !isdefined( var_3.magic_bullet_shield ) )
|
|
{
|
|
var_3.specialdeathfunc = animscripts\snowmobile::snowmobile_collide_death;
|
|
var_3 kill();
|
|
}
|
|
}
|
|
|
|
if ( self.kill_my_fx == 0 )
|
|
snowmobile_fx( "snowmobile_collision" );
|
|
}
|
|
}
|
|
|
|
#using_animtree("vehicles");
|
|
|
|
do_steering()
|
|
{
|
|
self endon( "death" );
|
|
wait 0.05;
|
|
self setanimknoball( %snowmobile, %root, 1, 0 );
|
|
self setanimlimited( %sm_turn, 1, 0 );
|
|
|
|
for (;;)
|
|
{
|
|
maps\_vehicle_code::update_steering( self );
|
|
|
|
if ( self.steering_enable )
|
|
{
|
|
if ( self.steering >= 0 )
|
|
{
|
|
self setanimknoblimited( %snowmobile_vehicle_lean_r_delta, 1, 0, 0 );
|
|
self setanimtime( %snowmobile_vehicle_lean_r_delta, self.steering );
|
|
}
|
|
else
|
|
{
|
|
self setanimknoblimited( %snowmobile_vehicle_lean_l_delta, 1, 0, 0 );
|
|
self setanimtime( %snowmobile_vehicle_lean_l_delta, abs( self.steering ) );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self clearanim( %snowmobile_vehicle_lean_r_delta, 0 );
|
|
self clearanim( %snowmobile_vehicle_lean_l_delta, 0 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
init_snowmobile_mount_anims()
|
|
{
|
|
level.snowmobile_mount_anims = [];
|
|
level.snowmobile_mount_anims["snowmobile_passenger"] = [];
|
|
level.snowmobile_mount_anims["snowmobile_driver"] = [];
|
|
|
|
foreach ( var_2, var_1 in level.scr_anim["generic"] )
|
|
{
|
|
if ( issubstr( var_2, "snowmobile_passenger_mount" ) )
|
|
{
|
|
level.snowmobile_mount_anims["snowmobile_passenger"][var_2] = 1;
|
|
continue;
|
|
}
|
|
|
|
if ( issubstr( var_2, "snowmobile_driver_mount" ) )
|
|
level.snowmobile_mount_anims["snowmobile_driver"][var_2] = 1;
|
|
}
|
|
}
|
|
|
|
set_vehicle_anims( var_0 )
|
|
{
|
|
return var_0;
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
setanims()
|
|
{
|
|
level.scr_anim["generic"]["snowmobile_passenger_mount_dir1"] = %snowmobile_passenger_mount_dir3;
|
|
level.scr_anim["generic"]["snowmobile_passenger_mount_dir3"] = %snowmobile_passenger_mount_dir1;
|
|
level.scr_anim["generic"]["snowmobile_driver_mount_dir3"] = %snowmobile_driver_mount_dir3;
|
|
level.scr_anim["generic"]["snowmobile_driver_mount_dir1"] = %snowmobile_driver_mount_dir1;
|
|
level.scr_anim["generic"]["snowmobile_passenger_mount_dir1_short"] = %snowmobile_passenger_mount_dir3_short;
|
|
level.scr_anim["generic"]["snowmobile_passenger_mount_dir3_short"] = %snowmobile_passenger_mount_dir1_short;
|
|
level.scr_anim["generic"]["snowmobile_driver_mount_dir3_short"] = %snowmobile_driver_mount_dir3_short;
|
|
level.scr_anim["generic"]["snowmobile_driver_mount_dir1_short"] = %snowmobile_driver_mount_dir1_short;
|
|
level.scr_anim["snowmobile"]["driver"]["idle"] = %snowmobile_driver_aiming_idle;
|
|
level.scr_anim["snowmobile"]["driver"]["drive"] = %snowmobile_driver_driving_idle;
|
|
level.scr_anim["snowmobile"]["driver"]["left2right"] = %snowmobile_driver_lean_l2r;
|
|
level.scr_anim["snowmobile"]["driver"]["right2left"] = %snowmobile_driver_lean_r2l;
|
|
level.scr_anim["snowmobile"]["driver"]["fire"] = %snowmobile_driver_autofire;
|
|
level.scr_anim["snowmobile"]["driver"]["single"] = %snowmobile_driver_fire;
|
|
level.scr_anim["snowmobile"]["driver"]["drive_jump"] = %snowmobile_driver_driving_jump_01;
|
|
level.scr_anim["snowmobile"]["driver"]["drive_bump"] = %snowmobile_driver_driving_bump_01;
|
|
level.scr_anim["snowmobile"]["driver"]["drive_bump_big"] = %snowmobile_driver_driving_bump_02;
|
|
level.scr_anim["snowmobile"]["driver"]["drive_sway_left"] = %snowmobile_driver_driving_swayl_01;
|
|
level.scr_anim["snowmobile"]["driver"]["drive_sway_right"] = %snowmobile_driver_driving_swayr_01;
|
|
level.scr_anim["snowmobile"]["driver"]["shoot_jump"] = %snowmobile_driver_aiming_jump_01;
|
|
level.scr_anim["snowmobile"]["driver"]["shoot_bump"] = %snowmobile_driver_aiming_bump_01;
|
|
level.scr_anim["snowmobile"]["driver"]["shoot_bump_big"] = %snowmobile_driver_aiming_bump_02;
|
|
level.scr_anim["snowmobile"]["driver"]["shoot_sway_left"] = %snowmobile_driver_aiming_swayl_01;
|
|
level.scr_anim["snowmobile"]["driver"]["shoot_sway_right"] = %snowmobile_driver_aiming_swayr_01;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["left"] = %snowmobile_driver_aim4l_add;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["center"] = %snowmobile_driver_aim4c_add;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["right"] = %snowmobile_driver_aim4r_add;
|
|
level.scr_anim["snowmobile"]["driver"]["straight_level"]["left"] = %snowmobile_driver_aim5l;
|
|
level.scr_anim["snowmobile"]["driver"]["straight_level"]["center"] = %snowmobile_driver_aim5c;
|
|
level.scr_anim["snowmobile"]["driver"]["straight_level"]["right"] = %snowmobile_driver_aim5r;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["left"] = %snowmobile_driver_aim6l_add;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["center"] = %snowmobile_driver_aim6c_add;
|
|
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["right"] = %snowmobile_driver_aim6r_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide"] = %snowmobile_passenger_hide;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive"] = %snowmobile_passenger_driving_idle;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_lean"]["left"] = %snowmobile_passenger_lean_l;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_lean"]["right"] = %snowmobile_passenger_lean_r;
|
|
level.scr_anim["snowmobile"]["passenger"]["idle"] = %snowmobile_passenger_aiming_idle;
|
|
level.scr_anim["snowmobile"]["passenger"]["fire"] = %snowmobile_passenger_autofire;
|
|
level.scr_anim["snowmobile"]["passenger"]["single"] = %snowmobile_passenger_fire;
|
|
level.scr_anim["snowmobile"]["passenger"]["reload"] = %snowmobile_passenger_reload;
|
|
level.scr_anim["snowmobile"]["passenger"]["gun_down"] = %snowmobile_passenger_aim2hide;
|
|
level.scr_anim["snowmobile"]["passenger"]["gun_up"] = %snowmobile_passenger_hide2aim;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide_jump"] = %snowmobile_passenger_driving_jump_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide_bump"] = %snowmobile_passenger_driving_bump_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide_bump_big"] = %snowmobile_passenger_driving_bump_02;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide_sway_left"] = %snowmobile_passenger_driving_swayl_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["hide_sway_right"] = %snowmobile_passenger_driving_swayr_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive_jump"] = %snowmobile_passenger_aiming_jump_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive_bump"] = %snowmobile_passenger_aiming_bump_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive_bump_big"] = %snowmobile_passenger_aiming_bump_02;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive_sway_left"] = %snowmobile_passenger_aiming_swayl_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["drive_sway_right"] = %snowmobile_passenger_aiming_swayr_01;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["left"] = %snowmobile_passenger_aim4l;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["center"] = %snowmobile_passenger_aim4c;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["right"] = %snowmobile_passenger_aim4r;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["left"] = %snowmobile_passenger_aim6l;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["center"] = %snowmobile_passenger_aim6c;
|
|
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["right"] = %snowmobile_passenger_aim6r;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["left"] = %snowmobile_passenger_aim1l_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["center"] = %snowmobile_passenger_aim1c_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["right"] = %snowmobile_passenger_aim1r_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["left"] = %snowmobile_passenger_aim3l_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["center"] = %snowmobile_passenger_aim3c_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["right"] = %snowmobile_passenger_aim3r_add;
|
|
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["left"] = %snowmobile_passenger_aim5l;
|
|
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["center"] = %snowmobile_passenger_aim5c;
|
|
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["right"] = %snowmobile_passenger_aim5r;
|
|
level.scr_anim["snowmobile"]["big"]["death"]["back"] = %snowmobile_driver_death_b_01;
|
|
level.scr_anim["snowmobile"]["big"]["death"]["left"] = %snowmobile_driver_death_l_01;
|
|
level.scr_anim["snowmobile"]["big"]["death"]["front"] = %snowmobile_driver_death_f_01;
|
|
level.scr_anim["snowmobile"]["big"]["death"]["right"] = %snowmobile_driver_death_r_01;
|
|
level.scr_anim["snowmobile"]["small"]["death"]["back"] = %snowmobile_driver_death_b_03;
|
|
level.scr_anim["snowmobile"]["small"]["death"]["left"] = %snowmobile_driver_death_l_03;
|
|
level.scr_anim["snowmobile"]["small"]["death"]["right"] = %snowmobile_driver_death_r_03;
|
|
init_snowmobile_mount_anims();
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < 2; var_1++ )
|
|
var_0[var_1] = spawnstruct();
|
|
|
|
var_0[0].sittag = "tag_driver";
|
|
var_0[0].linktoblend = 1;
|
|
var_0[0].rider_func = ::init_rider;
|
|
var_0[1].sittag = "tag_passenger";
|
|
var_0[1].linktoblend = 1;
|
|
var_0[1].rider_func = ::init_rider;
|
|
var_0[0].getout = %snowmobile_driver_dismount;
|
|
var_0[1].getout = %snowmobile_passenger_dismount;
|
|
return var_0;
|
|
}
|
|
|
|
unload_groups()
|
|
{
|
|
var_0 = [];
|
|
var_0["all"] = [];
|
|
var_1 = "all";
|
|
var_0[var_1][var_0[var_1].size] = 0;
|
|
var_0[var_1][var_0[var_1].size] = 1;
|
|
var_0["default"] = var_0["all"];
|
|
return var_0;
|
|
}
|