359 lines
12 KiB
Plaintext
359 lines
12 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init_chaingun_player()
|
|
{
|
|
common_scripts\utility::flag_init( "player_mounting_chaingun_turret" );
|
|
common_scripts\utility::flag_init( "player_dismounting_chaingun_turret" );
|
|
common_scripts\utility::flag_init( "player_on_chaingun_turret" );
|
|
chaingun_player_anims();
|
|
}
|
|
|
|
#using_animtree("vehicles");
|
|
|
|
chaingun_player_anims()
|
|
{
|
|
level.scr_animtree["turret_player_rig"] = #animtree;
|
|
level.scr_model["turret_player_rig"] = level.chaingun_viewmodel;
|
|
level.scr_anim["turret_player_rig"]["chaingun_hands_geton"] = %chaingun_geton_player;
|
|
level.scr_anim["chaingun_player"]["chaingun_hands_getoff"] = %chaingun_getoff_player;
|
|
level.scr_anim["chaingun_player"]["chaingun_hands_idle"] = %chaingun_idle_player;
|
|
level.scr_anim["chaingun_player"]["chaingun_hands_fire"] = %chaingun_fire_player;
|
|
level.scr_anim["chaingun_player"]["chaingun_hands_idle2fire"] = %chaingun_fire_in_player;
|
|
level.scr_anim["chaingun_player"]["chaingun_hands_idle2fire"] = %chaingun_fire_out_player;
|
|
level.scr_animtree["chaingun_player"] = #animtree;
|
|
level.scr_anim["chaingun_player"]["turret_gun_geton"] = %chaingun_geton_gun;
|
|
level.scr_anim["chaingun_player"]["turret_gun_getoff"] = %chaingun_getoff_gun;
|
|
level.scr_anim["chaingun_player"]["turret_gun_idle"] = %chaingun_idle_gun;
|
|
level.scr_anim["chaingun_player"]["turret_gun_fire"] = %chaingun_fire_gun;
|
|
level.scr_anim["chaingun_player"]["turret_gun_idle2fire"] = %chaingun_fire_in_gun;
|
|
level.scr_anim["chaingun_player"]["turret_gun_fire2idle"] = %chaingun_fire_out_gun;
|
|
}
|
|
|
|
chaingun_turret_init( var_0 )
|
|
{
|
|
level.player endon( "death" );
|
|
var_1 = self;
|
|
var_1 endon( "death" );
|
|
var_1 endon( "disable_player_turret" );
|
|
var_1 makeunusable();
|
|
var_1 setdefaultdroppitch( 0 );
|
|
var_1.setturretusable = 1;
|
|
|
|
while ( var_1.setturretusable == 1 )
|
|
{
|
|
wait 1.5;
|
|
var_2 = get_world_relative_offset( var_1.origin, var_1.angles, ( -32, 0, -48 ) );
|
|
var_1.usable_turret_trigger = spawn( "trigger_radius", var_2, 0, 30, 128 );
|
|
var_1 custom_mount_hint_return_when_mounted( var_1.usable_turret_trigger );
|
|
thread player_use_chaingun_with_viewmodel( self, level.player, var_0 );
|
|
var_1.usable_turret_trigger delete();
|
|
self waittill( "geton_anim_finished" );
|
|
var_1 custom_dismount_hint_return_when_dismounted();
|
|
var_1 handle_dismount();
|
|
}
|
|
}
|
|
|
|
custom_mount_hint_return_when_mounted( var_0 )
|
|
{
|
|
level.player endon( "death" );
|
|
var_0 endon( "death" );
|
|
self.mount_hint = maps\_hud_util::createfontstring( "default", 1.5 );
|
|
self.mount_hint.alpha = 0.9;
|
|
self.mount_hint.x = 0;
|
|
self.mount_hint.y = 50;
|
|
self.mount_hint.alignx = "center";
|
|
self.mount_hint.aligny = "middle";
|
|
self.mount_hint.horzalign = "center";
|
|
self.mount_hint.vertalign = "middle";
|
|
self.mount_hint.foreground = 0;
|
|
self.mount_hint.hidewhendead = 1;
|
|
self.mount_hint.hidewheninmenu = 1;
|
|
var_1 = cos( 80 );
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
if ( level.player getstance() == "prone" )
|
|
{
|
|
self.mount_hint settext( "" );
|
|
continue;
|
|
}
|
|
|
|
if ( level.player issprintsliding() )
|
|
{
|
|
self.mount_hint settext( "" );
|
|
continue;
|
|
}
|
|
|
|
if ( !maps\_utility::within_fov_2d( level.player geteye(), level.player.angles, self.origin, var_1 ) )
|
|
{
|
|
self.mount_hint settext( "" );
|
|
continue;
|
|
}
|
|
|
|
self.mount_hint settext( &"PLATFORM_HOLD_TO_USE" );
|
|
|
|
if ( level.player usebuttonpressed() )
|
|
{
|
|
self.mount_hint destroy();
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
self.mount_hint settext( "" );
|
|
}
|
|
}
|
|
|
|
custom_dismount_hint_return_when_dismounted()
|
|
{
|
|
level.player endon( "death" );
|
|
self.disomount_hint = maps\_hud_util::createfontstring( "default", 1.5 );
|
|
self.disomount_hint.alpha = 0.9;
|
|
self.disomount_hint.x = 0;
|
|
self.disomount_hint.y = 50;
|
|
self.disomount_hint.alignx = "center";
|
|
self.disomount_hint.aligny = "middle";
|
|
self.disomount_hint.horzalign = "center";
|
|
self.disomount_hint.vertalign = "middle";
|
|
self.disomount_hint.foreground = 0;
|
|
self.disomount_hint.hidewhendead = 1;
|
|
self.disomount_hint.hidewheninmenu = 1;
|
|
self.disomount_hint settext( &"PLATFORM_PRESS_TO_DROP" );
|
|
notifyoncommand( "turret_dismount", "+usereload" );
|
|
notifyoncommand( "turret_dismount", "+activate" );
|
|
level.player waittill( "turret_dismount" );
|
|
self.disomount_hint destroy();
|
|
}
|
|
|
|
handle_dismount()
|
|
{
|
|
if ( !common_scripts\utility::flag( "player_dismounting_chaingun_turret" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "player_dismounting_chaingun_turret" );
|
|
level.player freezecontrols( 1 );
|
|
self.animname = "chaingun_player";
|
|
self notify( "player_dismount" );
|
|
maps\_anim::setanimtree();
|
|
var_0 = self gettagangles( "tag_ground" );
|
|
var_1 = getanimlength( %chaingun_getoff_gun );
|
|
var_2 = maps\_utility::getanim( "chaingun_hands_getoff" );
|
|
var_3 = maps\_utility::getanim( "turret_gun_getoff" );
|
|
self clearanim( %root, 0 );
|
|
self setanim( var_2, 1, 0, 1 );
|
|
self setanim( var_3, 1, 0, 1 );
|
|
wait( var_1 );
|
|
self detachall();
|
|
self makeusable();
|
|
self setturretdismountorg( self gettagorigin( "tag_ground" ) );
|
|
level.player enableturretdismount();
|
|
self useby( level.player );
|
|
self makeunusable();
|
|
var_4 = 0.15;
|
|
level.player lerpfov( 65, var_4 );
|
|
var_5 = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
var_5.origin = self gettagorigin( "tag_ground" );
|
|
var_5.angles = var_0;
|
|
level.player playerlinkto( var_5, "", 1, 0, 0, 0, 0, 0 );
|
|
var_5 moveto( self.mount_pos, var_4, var_4 * 0.25 );
|
|
wait( var_4 + 0.1 );
|
|
var_5 delete();
|
|
|
|
if ( isdefined( self.disomount_hint ) )
|
|
self.disomount_hint destroy();
|
|
|
|
if ( isdefined( self.mount_hint ) )
|
|
self.mount_hint destroy();
|
|
|
|
if ( isdefined( self.player_rig ) )
|
|
self.player_rig delete();
|
|
|
|
level.player enableweapons();
|
|
level.player freezecontrols( 0 );
|
|
setsaveddvar( "ammoCounterHide", 0 );
|
|
common_scripts\utility::flag_clear( "player_on_chaingun_turret" );
|
|
common_scripts\utility::flag_clear( "player_dismounting_chaingun_turret" );
|
|
}
|
|
}
|
|
|
|
player_use_chaingun_with_viewmodel( var_0, var_1, var_2 )
|
|
{
|
|
level.player endon( "death" );
|
|
common_scripts\utility::flag_set( "player_on_chaingun_turret" );
|
|
common_scripts\utility::flag_set( "player_mounting_chaingun_turret" );
|
|
var_0 endon( "player_dismount" );
|
|
var_0.animname = "chaingun_player";
|
|
var_0 maps\_anim::setanimtree();
|
|
var_1 freezecontrols( 1 );
|
|
var_1 disableweapons();
|
|
setsaveddvar( "ammoCounterHide", 1 );
|
|
level.player setstance( "stand" );
|
|
self.mount_pos = var_1.origin;
|
|
var_0.player_rig = maps\_utility::spawn_anim_model( "turret_player_rig" );
|
|
var_0.player_rig.animname = "turret_player_rig";
|
|
var_0.player_rig linkto( var_0, "tag_ground", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
var_0.player_rig hide();
|
|
var_0.player_rig common_scripts\utility::delaycall( 0.25, ::show );
|
|
var_0 maps\_anim::anim_first_frame_solo( var_0.player_rig, "chaingun_hands_geton", "tag_player" );
|
|
maps\_anim::anim_first_frame_solo( var_0, "turret_gun_geton" );
|
|
var_1 playerlinktoblend( var_0.player_rig, "tag_origin", 0.3, 0.1, 0.1 );
|
|
wait 0.2;
|
|
var_3 = getanimlength( %chaingun_geton_gun );
|
|
var_4 = var_0.player_rig maps\_utility::getanim( "chaingun_hands_geton" );
|
|
var_5 = maps\_utility::getanim( "turret_gun_geton" );
|
|
var_0 clearanim( %root, 0 );
|
|
var_0 setanim( var_5, 1, 0, 1 );
|
|
thread notifyaftertime( "geton_anim_finished", "time is up", var_3 );
|
|
wait 0.1;
|
|
var_0.player_rig setanim( var_4, 1, 0, 1 );
|
|
var_6 = var_0 getanimtime( var_5 );
|
|
var_0.player_rig setanimtime( var_4, var_6 );
|
|
var_1 lerpfov( 65, 0.2 );
|
|
self waittill( "geton_anim_finished" );
|
|
common_scripts\utility::flag_clear( "player_mounting_chaingun_turret" );
|
|
|
|
if ( isdefined( var_2 ) && var_2 == 1 )
|
|
thread chaingun_shells( level.chaingun_shelleject_fx, "player_dismounting_chaingun_turret" );
|
|
|
|
var_1 playerlinktodelta( self, "tag_player", 0.35, 90, 90, 45, 30, 1 );
|
|
var_0.player_rig delete();
|
|
var_0.viewhands = level.scr_model["turret_player_rig"];
|
|
var_0 attach( var_0.viewhands, "tag_ground" );
|
|
thread cleanup_on_death();
|
|
var_0.is_occupied = 1;
|
|
var_0 makeusable();
|
|
var_0 setmode( "manual" );
|
|
var_1 unlink();
|
|
var_0 useby( var_1 );
|
|
var_0 makeunusable();
|
|
var_1 disableturretdismount();
|
|
var_7 = maps\_utility::getanim( "chaingun_hands_idle" );
|
|
var_0 clearanim( var_4, 0.1 );
|
|
var_0 setanim( var_7, 1, 0.1, 1 );
|
|
var_0.hands_animation = var_7;
|
|
var_8 = var_0 maps\_utility::getanim( "turret_gun_idle" );
|
|
var_0 clearanim( var_5, 0.1 );
|
|
var_0 setanim( var_8, 1, 0.1, 1 );
|
|
var_0.gun_animation = var_8;
|
|
var_9 = 0;
|
|
var_10 = 0;
|
|
|
|
while ( common_scripts\utility::flag( "player_on_chaingun_turret" ) )
|
|
{
|
|
var_9 = level.player attackbuttonpressed();
|
|
|
|
if ( var_10 != var_9 )
|
|
{
|
|
if ( var_9 )
|
|
var_0 thread animate_turret_with_viewmodel( "chaingun_hands_idle2fire", "chaingun_hands_fire", "turret_gun_idle2fire", "turret_gun_fire" );
|
|
else
|
|
var_0 thread animate_turret_with_viewmodel( "chaingun_hands_idle2fire", "chaingun_hands_idle", "turret_gun_fire2idle", "turret_gun_idle" );
|
|
|
|
var_10 = var_9;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
animate_turret_with_viewmodel( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self notify( "turret_anim_change" );
|
|
self endon( "turret_anim_change" );
|
|
self endon( "player_dismount" );
|
|
var_4 = maps\_utility::getanim( var_0 );
|
|
var_5 = maps\_utility::getanim( var_1 );
|
|
var_6 = maps\_utility::getanim( var_2 );
|
|
var_7 = maps\_utility::getanim( var_3 );
|
|
self clearanim( self.hands_animation, 0 );
|
|
self.hands_animation = var_4;
|
|
self clearanim( self.gun_animation, 0 );
|
|
self.gun_animation = var_6;
|
|
self setanim( var_6, 1, 0.1, 1 );
|
|
self setflaggedanim( var_0, var_4, 1, 0.1, 1 );
|
|
self waittillmatch( var_0, "end" );
|
|
self clearanim( var_4, 0 );
|
|
self clearanim( var_6, 0 );
|
|
self.hands_animation = var_5;
|
|
self.gun_animation = var_7;
|
|
self setanim( var_5, 1, 0.1, 1 );
|
|
self setanim( var_7, 1, 0.1, 1 );
|
|
}
|
|
|
|
cleanup_on_death()
|
|
{
|
|
level.player endon( "death" );
|
|
level.player waittill( "death" );
|
|
level.player unlink();
|
|
level.player lerpfov( 65, 0.1 );
|
|
}
|
|
|
|
chaingun_shells( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
level endon( var_1 );
|
|
|
|
var_2 = common_scripts\utility::getfx( var_0 );
|
|
var_3 = "tag_brass";
|
|
var_4 = 0.1;
|
|
common_scripts\utility::flag_wait( "player_on_chaingun_turret" );
|
|
|
|
while ( common_scripts\utility::flag( "player_on_chaingun_turret" ) )
|
|
{
|
|
while ( level.player attackbuttonpressed() )
|
|
{
|
|
playfxontag( var_2, self, var_3 );
|
|
wait( var_4 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
chaingun_turret_disable( var_0 )
|
|
{
|
|
if ( common_scripts\utility::flag( "player_mounting_chaingun_turret" ) )
|
|
{
|
|
common_scripts\utility::flag_waitopen( "player_mounting_chaingun_turret" );
|
|
wait 0.1;
|
|
}
|
|
|
|
if ( common_scripts\utility::flag( "player_on_chaingun_turret" ) )
|
|
{
|
|
self notify( "turret_dismount" );
|
|
var_0.setturretusable = 0;
|
|
}
|
|
else
|
|
var_0 notify( "disable_player_turret" );
|
|
|
|
if ( isdefined( var_0.usable_turret_trigger ) )
|
|
var_0.usable_turret_trigger delete();
|
|
|
|
if ( isdefined( var_0.mount_hint ) )
|
|
var_0.mount_hint destroy();
|
|
}
|
|
|
|
notifyaftertime( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( var_1 );
|
|
wait( var_2 );
|
|
self notify( var_0 );
|
|
}
|
|
|
|
get_world_relative_offset( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = cos( var_1[1] );
|
|
var_4 = sin( var_1[1] );
|
|
var_5 = var_2[0] * var_3 - var_2[1] * var_4;
|
|
var_6 = var_2[0] * var_4 + var_2[1] * var_3;
|
|
var_5 = var_5 + var_0[0];
|
|
var_6 = var_6 + var_0[1];
|
|
return ( var_5, var_6, var_0[2] + var_2[2] );
|
|
}
|