iw6-scripts/maps/_player_death.gsc
2024-02-13 13:20:49 +01:00

271 lines
6.4 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
level.player thread player_throwgrenade_timer();
level endon( "new_quote_string" );
level.player waittill( "death", var_0, var_1, var_2, var_3 );
set_deadquote( "" );
setsaveddvar( "ammoCounterHide", 1 );
setsaveddvar( "hud_showstance", 0 );
setsaveddvar( "actionSlotsHide", 1 );
if ( isdefined( var_3 ) )
{
var_4 = level.player.origin - level.player geteye() + ( 0, 0, 35 );
var_5 = spawn( "script_model", level.player.origin + ( 0, 0, var_4[2] ) );
var_5.angles = ( -10, level.player.angles[2], 30 );
var_5 linkto( var_3 );
level.player playerlinkto( var_5 );
}
special_death_hint( var_0, var_1, var_2 );
}
player_throwgrenade_timer()
{
self endon( "death" );
self.lastgrenadetime = 0;
for (;;)
{
while ( !self isthrowinggrenade() )
wait 0.05;
self.lastgrenadetime = gettime();
while ( self isthrowinggrenade() )
wait 0.05;
}
}
special_death_hint( var_0, var_1, var_2 )
{
if ( maps\_utility::is_specialop() )
return;
if ( level.missionfailed )
return;
set_deadquote( "" );
if ( var_1 != "MOD_GRENADE" && var_1 != "MOD_GRENADE_SPLASH" && var_1 != "MOD_SUICIDE" && var_1 != "MOD_EXPLOSIVE" )
return;
if ( level.gameskill >= 2 )
{
if ( !maps\_load::map_is_early_in_the_game() )
return;
}
switch ( var_1 )
{
case "MOD_SUICIDE":
if ( level.player.lastgrenadetime - gettime() > 3500.0 )
return;
thread grenade_death_hint( &"SCRIPT_GRENADE_SUICIDE_LINE1", &"SCRIPT_GRENADE_SUICIDE_LINE2" );
break;
case "MOD_EXPLOSIVE":
if ( level.player destructible_death( var_0 ) )
return;
if ( level.player vehicle_death( var_0 ) )
return;
if ( level.player exploding_barrel_death( var_0 ) )
return;
break;
case "MOD_GRENADE_SPLASH":
case "MOD_GRENADE":
if ( isdefined( var_2 ) && !isweapondetonationtimed( var_2 ) )
return;
set_deadquote( "@SCRIPT_GRENADE_DEATH" );
thread grenade_death_indicator_hud();
break;
default:
break;
}
}
vehicle_death( var_0 )
{
if ( !isdefined( var_0 ) )
return 0;
if ( var_0.code_classname != "script_vehicle" )
return 0;
level notify( "new_quote_string" );
set_deadquote( "@SCRIPT_EXPLODING_VEHICLE_DEATH" );
thread set_death_icon( "hud_burningcaricon", 96, 96 );
return 1;
}
destructible_death( var_0 )
{
if ( !isdefined( var_0 ) )
return 0;
if ( !isdefined( var_0.destructible_type ) )
return 0;
level notify( "new_quote_string" );
if ( issubstr( var_0.destructible_type, "vehicle" ) )
{
set_deadquote( "@SCRIPT_EXPLODING_VEHICLE_DEATH" );
thread set_death_icon( "hud_burningcaricon", 96, 96 );
}
else
{
set_deadquote( "@SCRIPT_EXPLODING_DESTRUCTIBLE_DEATH" );
thread set_death_icon( "hud_destructibledeathicon", 96, 96 );
}
return 1;
}
exploding_barrel_death( var_0 )
{
if ( isdefined( level.lastexplodingbarrel ) )
{
if ( gettime() != level.lastexplodingbarrel["time"] )
return 0;
var_1 = distance( self.origin, level.lastexplodingbarrel["origin"] );
if ( var_1 > level.lastexplodingbarrel["radius"] )
return 0;
level notify( "new_quote_string" );
set_deadquote( "@SCRIPT_EXPLODING_BARREL_DEATH" );
thread set_death_icon( "hud_burningbarrelicon", 64, 64 );
return 1;
}
return 0;
}
set_deadquote( var_0 )
{
setdvar( "ui_deadquote", var_0 );
}
deadquote_recently_used( var_0 )
{
if ( var_0 == getdvar( "ui_deadquote_v1" ) )
return 1;
if ( var_0 == getdvar( "ui_deadquote_v2" ) )
return 1;
if ( var_0 == getdvar( "ui_deadquote_v3" ) )
return 1;
return 0;
}
lookupdeathquote( var_0 )
{
var_1 = tablelookup( "sp/deathQuoteTable.csv", 0, var_0, 1 );
if ( tolower( var_1[0] ) != tolower( "@" ) )
var_1 = "@" + var_1;
return var_1;
}
grenade_death_hint( var_0, var_1 )
{
level.player.failingmission = 1;
set_deadquote( "" );
wait 1.5;
var_2 = newhudelem();
var_2.elemtype = "font";
var_2.font = "default";
var_2.fontscale = 1.5;
var_2.x = 0;
var_2.y = -30;
var_2.alignx = "center";
var_2.aligny = "middle";
var_2.horzalign = "center";
var_2.vertalign = "middle";
var_2 settext( var_0 );
var_2.foreground = 1;
var_2.alpha = 0;
var_2 fadeovertime( 1 );
var_2.alpha = 1;
if ( isdefined( var_1 ) )
{
var_2 = newhudelem();
var_2.elemtype = "font";
var_2.font = "default";
var_2.fontscale = 1.5;
var_2.x = 0;
var_2.y = -25 + level.fontheight * var_2.fontscale;
var_2.alignx = "center";
var_2.aligny = "middle";
var_2.horzalign = "center";
var_2.vertalign = "middle";
var_2 settext( var_1 );
var_2.foreground = 1;
var_2.alpha = 0;
var_2 fadeovertime( 1 );
var_2.alpha = 1;
}
}
grenade_death_indicator_hud()
{
wait 1.5;
var_0 = newhudelem();
var_0.x = 0;
var_0.y = 68;
var_0 setshader( "hud_grenadeicon", 50, 50 );
var_0.alignx = "center";
var_0.aligny = "middle";
var_0.horzalign = "center";
var_0.vertalign = "middle";
var_0.foreground = 1;
var_0.alpha = 0;
var_0 fadeovertime( 1 );
var_0.alpha = 1;
var_0 = newhudelem();
var_0.x = 0;
var_0.y = 25;
var_0 setshader( "hud_grenadepointer", 50, 25 );
var_0.alignx = "center";
var_0.aligny = "middle";
var_0.horzalign = "center";
var_0.vertalign = "middle";
var_0.foreground = 1;
var_0.alpha = 0;
var_0 fadeovertime( 1 );
var_0.alpha = 1;
}
set_death_icon( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_3 ) )
var_3 = 1.5;
wait( var_3 );
var_4 = newhudelem();
var_4.x = 0;
var_4.y = 40;
var_4 setshader( var_0, var_1, var_2 );
var_4.alignx = "center";
var_4.aligny = "middle";
var_4.horzalign = "center";
var_4.vertalign = "middle";
var_4.foreground = 1;
var_4.alpha = 0;
var_4 fadeovertime( 1 );
var_4.alpha = 1;
}