iw6-scripts/vehicle_scripts/_snowmobile.gsc
2024-02-13 13:20:49 +01:00

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;
}