Update scripts to better decompiled scripts.

This commit is contained in:
JezuzLizard 2023-10-26 13:13:39 -07:00
parent 26ba037e40
commit d02a9efd43
2879 changed files with 493771 additions and 466190 deletions

View File

@ -0,0 +1,24 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
main()
{
assert( isdefined( self ) );
wait 0;
if ( isdefined( self ) )
{
/#
if ( isdefined( self.classname ) )
{
if ( self.classname == "trigger_once" || self.classname == "trigger_radius" || self.classname == "trigger_multiple" )
{
println( "" );
println( "*** trigger debug: delete.gsc is deleting trigger with ent#: " + self getentitynumber() + " at origin: " + self.origin );
println( "" );
}
}
#/
self delete();
}
}

File diff suppressed because it is too large Load Diff

473
MP/Core/maps/mp/_art.gsc Normal file
View File

@ -0,0 +1,473 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
main()
{
/#
if ( getdvar( "scr_art_tweak" ) == "" || getdvar( "scr_art_tweak" ) == "0" )
setdvar( "scr_art_tweak", 0 );
if ( getdvar( "scr_dof_enable" ) == "" )
setdvar( "scr_dof_enable", "1" );
if ( getdvar( "scr_cinematic_autofocus" ) == "" )
setdvar( "scr_cinematic_autofocus", "1" );
if ( getdvar( "scr_art_visionfile" ) == "" && isdefined( level.script ) )
setdvar( "scr_art_visionfile", level.script );
if ( getdvar( "debug_reflection" ) == "" )
setdvar( "debug_reflection", "0" );
if ( getdvar( "debug_reflection_matte" ) == "" )
setdvar( "debug_reflection_matte", "0" );
if ( getdvar( "debug_color_pallete" ) == "" )
setdvar( "debug_color_pallete", "0" );
precachemodel( "test_sphere_lambert" );
precachemodel( "test_macbeth_chart" );
precachemodel( "test_macbeth_chart_unlit" );
precachemodel( "test_sphere_silver" );
level thread debug_reflection();
level thread debug_reflection_matte();
level thread debug_color_pallete();
#/
if ( !isdefined( level.dofdefault ) )
{
level.dofdefault["nearStart"] = 0;
level.dofdefault["nearEnd"] = 1;
level.dofdefault["farStart"] = 8000;
level.dofdefault["farEnd"] = 10000;
level.dofdefault["nearBlur"] = 6;
level.dofdefault["farBlur"] = 0;
}
level.curdof = ( level.dofdefault["farStart"] - level.dofdefault["nearEnd"] ) / 2;
/#
thread tweakart();
#/
if ( !isdefined( level.script ) )
level.script = tolower( getdvar( "mapname" ) );
}
artfxprintln( file, string )
{
/#
if ( file == -1 )
return;
fprintln( file, string );
#/
}
strtok_loc( string, par1 )
{
stringlist = [];
indexstring = "";
for ( i = 0; i < string.size; i++ )
{
if ( string[i] == " " )
{
stringlist[stringlist.size] = indexstring;
indexstring = "";
continue;
}
indexstring += string[i];
}
if ( indexstring.size )
stringlist[stringlist.size] = indexstring;
return stringlist;
}
setfogsliders()
{
fogall = strtok_loc( getdvar( "g_fogColorReadOnly" ), " " );
red = fogall[0];
green = fogall[1];
blue = fogall[2];
halfplane = getdvar( "g_fogHalfDistReadOnly" );
nearplane = getdvar( "g_fogStartDistReadOnly" );
if ( !isdefined( red ) || !isdefined( green ) || !isdefined( blue ) || !isdefined( halfplane ) )
{
red = 1;
green = 1;
blue = 1;
halfplane = 10000001;
nearplane = 10000000;
}
setdvar( "scr_fog_exp_halfplane", halfplane );
setdvar( "scr_fog_nearplane", nearplane );
setdvar( "scr_fog_color", red + " " + green + " " + blue );
}
tweakart()
{
/#
if ( !isdefined( level.tweakfile ) )
level.tweakfile = 0;
if ( getdvar( "scr_fog_baseheight" ) == "" )
{
setdvar( "scr_fog_exp_halfplane", "500" );
setdvar( "scr_fog_exp_halfheight", "500" );
setdvar( "scr_fog_nearplane", "0" );
setdvar( "scr_fog_baseheight", "0" );
}
setdvar( "scr_fog_fraction", "1.0" );
setdvar( "scr_art_dump", "0" );
setdvar( "scr_art_sun_fog_dir_set", "0" );
setdvar( "scr_dof_nearStart", level.dofdefault["nearStart"] );
setdvar( "scr_dof_nearEnd", level.dofdefault["nearEnd"] );
setdvar( "scr_dof_farStart", level.dofdefault["farStart"] );
setdvar( "scr_dof_farEnd", level.dofdefault["farEnd"] );
setdvar( "scr_dof_nearBlur", level.dofdefault["nearBlur"] );
setdvar( "scr_dof_farBlur", level.dofdefault["farBlur"] );
file = undefined;
filename = undefined;
tweak_toggle = 1;
for (;;)
{
while ( getdvarint( "scr_art_tweak" ) == 0 )
{
tweak_toggle = 1;
wait 0.05;
}
if ( tweak_toggle )
{
tweak_toggle = 0;
fogsettings = getfogsettings();
setdvar( "scr_fog_nearplane", fogsettings[0] );
setdvar( "scr_fog_exp_halfplane", fogsettings[1] );
setdvar( "scr_fog_exp_halfheight", fogsettings[3] );
setdvar( "scr_fog_baseheight", fogsettings[2] );
setdvar( "scr_fog_color", fogsettings[4] + " " + fogsettings[5] + " " + fogsettings[6] );
setdvar( "scr_fog_color_scale", fogsettings[7] );
setdvar( "scr_sun_fog_color", fogsettings[8] + " " + fogsettings[9] + " " + fogsettings[10] );
level.fogsundir = [];
level.fogsundir[0] = fogsettings[11];
level.fogsundir[1] = fogsettings[12];
level.fogsundir[2] = fogsettings[13];
setdvar( "scr_sun_fog_start_angle", fogsettings[14] );
setdvar( "scr_sun_fog_end_angle", fogsettings[15] );
setdvar( "scr_fog_max_opacity", fogsettings[16] );
}
level.fogexphalfplane = getdvarfloat( "scr_fog_exp_halfplane" );
level.fogexphalfheight = getdvarfloat( "scr_fog_exp_halfheight" );
level.fognearplane = getdvarfloat( "scr_fog_nearplane" );
level.fogbaseheight = getdvarfloat( "scr_fog_baseheight" );
level.fogcolorred = getdvarcolorred( "scr_fog_color" );
level.fogcolorgreen = getdvarcolorgreen( "scr_fog_color" );
level.fogcolorblue = getdvarcolorblue( "scr_fog_color" );
level.fogcolorscale = getdvarfloat( "scr_fog_color_scale" );
level.sunfogcolorred = getdvarcolorred( "scr_sun_fog_color" );
level.sunfogcolorgreen = getdvarcolorgreen( "scr_sun_fog_color" );
level.sunfogcolorblue = getdvarcolorblue( "scr_sun_fog_color" );
level.sunstartangle = getdvarfloat( "scr_sun_fog_start_angle" );
level.sunendangle = getdvarfloat( "scr_sun_fog_end_angle" );
level.fogmaxopacity = getdvarfloat( "scr_fog_max_opacity" );
if ( getdvarint( "scr_art_sun_fog_dir_set" ) )
{
setdvar( "scr_art_sun_fog_dir_set", "0" );
println( "Setting sun fog direction to facing of player" );
players = get_players();
dir = vectornormalize( anglestoforward( players[0] getplayerangles() ) );
level.fogsundir = [];
level.fogsundir[0] = dir[0];
level.fogsundir[1] = dir[1];
level.fogsundir[2] = dir[2];
}
fovslidercheck();
dumpsettings();
if ( !getdvarint( _hash_DBBD8F3B ) )
{
if ( !isdefined( level.fogsundir ) )
{
level.fogsundir = [];
level.fogsundir[0] = 1;
level.fogsundir[1] = 0;
level.fogsundir[2] = 0;
}
setvolfog( level.fognearplane, level.fogexphalfplane, level.fogexphalfheight, level.fogbaseheight, level.fogcolorred, level.fogcolorgreen, level.fogcolorblue, level.fogcolorscale, level.sunfogcolorred, level.sunfogcolorgreen, level.sunfogcolorblue, level.fogsundir[0], level.fogsundir[1], level.fogsundir[2], level.sunstartangle, level.sunendangle, 0, level.fogmaxopacity );
}
else
setexpfog( 100000000, 100000001, 0, 0, 0, 0 );
wait 0.1;
}
#/
}
fovslidercheck()
{
if ( level.dofdefault["nearStart"] >= level.dofdefault["nearEnd"] )
{
level.dofdefault["nearStart"] = level.dofdefault["nearEnd"] - 1;
setdvar( "scr_dof_nearStart", level.dofdefault["nearStart"] );
}
if ( level.dofdefault["nearEnd"] <= level.dofdefault["nearStart"] )
{
level.dofdefault["nearEnd"] = level.dofdefault["nearStart"] + 1;
setdvar( "scr_dof_nearEnd", level.dofdefault["nearEnd"] );
}
if ( level.dofdefault["farStart"] >= level.dofdefault["farEnd"] )
{
level.dofdefault["farStart"] = level.dofdefault["farEnd"] - 1;
setdvar( "scr_dof_farStart", level.dofdefault["farStart"] );
}
if ( level.dofdefault["farEnd"] <= level.dofdefault["farStart"] )
{
level.dofdefault["farEnd"] = level.dofdefault["farStart"] + 1;
setdvar( "scr_dof_farEnd", level.dofdefault["farEnd"] );
}
if ( level.dofdefault["farBlur"] >= level.dofdefault["nearBlur"] )
{
level.dofdefault["farBlur"] = level.dofdefault["nearBlur"] - 0.1;
setdvar( "scr_dof_farBlur", level.dofdefault["farBlur"] );
}
if ( level.dofdefault["farStart"] <= level.dofdefault["nearEnd"] )
{
level.dofdefault["farStart"] = level.dofdefault["nearEnd"] + 1;
setdvar( "scr_dof_farStart", level.dofdefault["farStart"] );
}
}
dumpsettings()
{
/#
if ( getdvar( "scr_art_dump" ) != "0" )
{
println( "\\tstart_dist = " + level.fognearplane + ";" );
println( "\\thalf_dist = " + level.fogexphalfplane + ";" );
println( "\\thalf_height = " + level.fogexphalfheight + ";" );
println( "\\tbase_height = " + level.fogbaseheight + ";" );
println( "\\tfog_r = " + level.fogcolorred + ";" );
println( "\\tfog_g = " + level.fogcolorgreen + ";" );
println( "\\tfog_b = " + level.fogcolorblue + ";" );
println( "\\tfog_scale = " + level.fogcolorscale + ";" );
println( "\\tsun_col_r = " + level.sunfogcolorred + ";" );
println( "\\tsun_col_g = " + level.sunfogcolorgreen + ";" );
println( "\\tsun_col_b = " + level.sunfogcolorblue + ";" );
println( "\\tsun_dir_x = " + level.fogsundir[0] + ";" );
println( "\\tsun_dir_y = " + level.fogsundir[1] + ";" );
println( "\\tsun_dir_z = " + level.fogsundir[2] + ";" );
println( "\\tsun_start_ang = " + level.sunstartangle + ";" );
println( "\\tsun_stop_ang = " + level.sunendangle + ";" );
println( "\\ttime = 0;" );
println( "\\tmax_fog_opacity = " + level.fogmaxopacity + ";" );
println( "" );
println( "\\tsetVolFog(start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale," );
println( "\\t\\tsun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, " );
println( "\\t\\tsun_stop_ang, time, max_fog_opacity);" );
setdvar( "scr_art_dump", "0" );
}
#/
}
debug_reflection()
{
/#
level.debug_reflection = 0;
while ( true )
{
wait 0.1;
if ( getdvar( "debug_reflection" ) == "2" && level.debug_reflection != 2 || getdvar( "debug_reflection" ) == "3" && level.debug_reflection != 3 )
{
remove_reflection_objects();
if ( getdvar( "debug_reflection" ) == "2" )
{
create_reflection_objects();
level.debug_reflection = 2;
}
else
{
create_reflection_objects();
create_reflection_object();
level.debug_reflection = 3;
}
}
else if ( getdvar( "debug_reflection" ) == "1" && level.debug_reflection != 1 )
{
setdvar( "debug_reflection_matte", "0" );
setdvar( "debug_color_pallete", "0" );
remove_reflection_objects();
create_reflection_object();
level.debug_reflection = 1;
}
else if ( getdvar( "debug_reflection" ) == "0" && level.debug_reflection != 0 )
{
remove_reflection_objects();
level.debug_reflection = 0;
}
}
#/
}
remove_reflection_objects()
{
/#
if ( ( level.debug_reflection == 2 || level.debug_reflection == 3 ) && isdefined( level.debug_reflection_objects ) )
{
for ( i = 0; i < level.debug_reflection_objects.size; i++ )
level.debug_reflection_objects[i] delete();
level.debug_reflection_objects = undefined;
}
if ( level.debug_reflection == 1 || level.debug_reflection == 3 || level.debug_reflection_matte == 1 || level.debug_color_pallete == 1 || level.debug_color_pallete == 2 )
{
if ( isdefined( level.debug_reflectionobject ) )
level.debug_reflectionobject delete();
}
#/
}
create_reflection_objects()
{
/#
reflection_locs = getreflectionlocs();
for ( i = 0; i < reflection_locs.size; i++ )
{
level.debug_reflection_objects[i] = spawn( "script_model", reflection_locs[i] );
level.debug_reflection_objects[i] setmodel( "test_sphere_silver" );
}
#/
}
create_reflection_object( model = "test_sphere_silver" )
{
/#
if ( isdefined( level.debug_reflectionobject ) )
level.debug_reflectionobject delete();
players = get_players();
player = players[0];
level.debug_reflectionobject = spawn( "script_model", player geteye() + vectorscale( anglestoforward( player.angles ), 100 ) );
level.debug_reflectionobject setmodel( model );
level.debug_reflectionobject.origin = player geteye() + vectorscale( anglestoforward( player getplayerangles() ), 100 );
level.debug_reflectionobject linkto( player );
thread debug_reflection_buttons();
#/
}
debug_reflection_buttons()
{
/#
level notify( "new_reflection_button_running" );
level endon( "new_reflection_button_running" );
level.debug_reflectionobject endon( "death" );
offset = 100;
lastoffset = offset;
while ( getdvar( "debug_reflection" ) == "1" || getdvar( "debug_reflection" ) == "3" || getdvar( "debug_reflection_matte" ) == "1" || getdvar( "debug_color_pallete" ) == "1" || getdvar( "debug_color_pallete" ) == "2" )
{
players = get_players();
if ( players[0] buttonpressed( "BUTTON_X" ) )
offset += 50;
if ( players[0] buttonpressed( "BUTTON_Y" ) )
offset -= 50;
if ( offset > 1000 )
offset = 1000;
if ( offset < 64 )
offset = 64;
level.debug_reflectionobject unlink();
level.debug_reflectionobject.origin = players[0] geteye() + vectorscale( anglestoforward( players[0] getplayerangles() ), offset );
temp_angles = vectortoangles( players[0].origin - level.debug_reflectionobject.origin );
level.debug_reflectionobject.angles = ( 0, temp_angles[1], 0 );
lastoffset = offset;
line( level.debug_reflectionobject.origin, getreflectionorigin( level.debug_reflectionobject.origin ), ( 1, 0, 0 ), 1, 1 );
wait 0.05;
if ( isdefined( level.debug_reflectionobject ) )
level.debug_reflectionobject linkto( players[0] );
}
#/
}
debug_reflection_matte()
{
/#
level.debug_reflection_matte = 0;
while ( true )
{
wait 0.1;
if ( getdvar( "debug_reflection_matte" ) == "1" && level.debug_reflection_matte != 1 )
{
setdvar( "debug_reflection", "0" );
setdvar( "debug_color_pallete", "0" );
remove_reflection_objects();
create_reflection_object( "test_sphere_lambert" );
level.debug_reflection_matte = 1;
}
else if ( getdvar( "debug_reflection_matte" ) == "0" && level.debug_reflection_matte != 0 )
{
remove_reflection_objects();
level.debug_reflection_matte = 0;
}
}
#/
}
debug_color_pallete()
{
/#
level.debug_color_pallete = 0;
while ( true )
{
wait 0.1;
if ( getdvar( "debug_color_pallete" ) == "1" && level.debug_color_pallete != 1 )
{
setdvar( "debug_reflection", "0" );
setdvar( "debug_reflection_matte", "0" );
remove_reflection_objects();
create_reflection_object( "test_macbeth_chart" );
level.debug_color_pallete = 1;
}
else if ( getdvar( "debug_color_pallete" ) == "2" && level.debug_color_pallete != 2 )
{
remove_reflection_objects();
create_reflection_object( "test_macbeth_chart_unlit" );
level.debug_color_pallete = 2;
}
else if ( getdvar( "debug_color_pallete" ) == "0" && level.debug_color_pallete != 0 )
{
remove_reflection_objects();
level.debug_color_pallete = 0;
}
}
#/
}

89
MP/Core/maps/mp/_bb.gsc Normal file
View File

@ -0,0 +1,89 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
level thread onplayerconnect();
}
onplayerconnect()
{
for (;;)
{
level waittill( "connected", player );
player thread onplayerspawned();
player thread onplayerdeath();
}
}
onplayerspawned()
{
self endon( "disconnect" );
self._bbdata = [];
for (;;)
{
self waittill( "spawned_player" );
self._bbdata["score"] = 0;
self._bbdata["momentum"] = 0;
self._bbdata["spawntime"] = gettime();
self._bbdata["shots"] = 0;
self._bbdata["hits"] = 0;
}
}
onplayerdisconnect()
{
for (;;)
{
self waittill( "disconnect" );
self commitspawndata();
break;
}
}
onplayerdeath()
{
self endon( "disconnect" );
for (;;)
{
self waittill( "death" );
self commitspawndata();
}
}
commitspawndata()
{
assert( isdefined( self._bbdata ) );
if ( !isdefined( self._bbdata ) )
return;
bbprint( "mpplayerlives", "gametime %d spawnid %d lifescore %d lifemomentum %d lifetime %d name %s", gettime(), getplayerspawnid( self ), self._bbdata["score"], self._bbdata["momentum"], gettime() - self._bbdata["spawntime"], self.name );
}
commitweapondata( spawnid, currentweapon, time0 )
{
assert( isdefined( self._bbdata ) );
if ( !isdefined( self._bbdata ) )
return;
time1 = gettime();
bbprint( "mpweapons", "spawnid %d name %s duration %d shots %d hits %d", spawnid, currentweapon, time1 - time0, self._bbdata["shots"], self._bbdata["hits"] );
self._bbdata["shots"] = 0;
self._bbdata["hits"] = 0;
}
bbaddtostat( statname, delta )
{
if ( isdefined( self._bbdata ) && isdefined( self._bbdata[statname] ) )
self._bbdata[statname] += delta;
}

View File

@ -0,0 +1,18 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\_utility;
businit()
{
assert( level.clientscripts );
level.busstate = "";
registerclientsys( "busCmd" );
}
setbusstate( state )
{
if ( level.busstate != state )
setclientsysstate( "busCmd", state );
level.busstate = state;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

90
MP/Core/maps/mp/_demo.gsc Normal file
View File

@ -0,0 +1,90 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
init()
{
level.bookmark["kill"] = 0;
level.bookmark["event"] = 1;
level.bookmark["zm_round_end"] = 2;
level.bookmark["zm_player_downed"] = 3;
level.bookmark["zm_player_revived"] = 4;
level.bookmark["zm_player_bledout"] = 5;
level.bookmark["zm_player_use_magicbox"] = 6;
level.bookmark["score_event"] = 7;
level.bookmark["medal"] = 8;
level.bookmark["round_result"] = 9;
level.bookmark["game_result"] = 10;
level.bookmark["zm_powerup_dropped"] = 11;
level.bookmark["zm_player_powerup_grabbed"] = 12;
level.bookmark["zm_player_perk"] = 13;
level.bookmark["zm_power"] = 14;
level.bookmark["zm_player_door"] = 15;
level.bookmark["zm_player_buildable_placed"] = 16;
level.bookmark["zm_player_use_packapunch"] = 17;
level.bookmark["zm_player_rampage"] = 18;
level.bookmark["zm_player_grenade_special"] = 19;
level.bookmark["zm_player_grenade_multiattack"] = 20;
level.bookmark["zm_player_meat_stink"] = 21;
level.bookmark["zm_player_grabbed_magicbox"] = 22;
level.bookmark["zm_player_grabbed_packapunch"] = 23;
level.bookmark["zm_player_grenade_special_long"] = 24;
}
bookmark( type, time, clientent1, clientent2, eventpriority, inflictorent, overrideentitycamera, actorent )
{
assert( isdefined( level.bookmark[type] ), "Unable to find a bookmark type for type - " + type );
client1 = 255;
client2 = 255;
inflictorentnum = -1;
inflictorenttype = 0;
inflictorbirthtime = 0;
actorentnum = undefined;
scoreeventpriority = 0;
if ( isdefined( clientent1 ) )
client1 = clientent1 getentitynumber();
if ( isdefined( clientent2 ) )
client2 = clientent2 getentitynumber();
if ( isdefined( eventpriority ) )
scoreeventpriority = eventpriority;
if ( isdefined( inflictorent ) )
{
inflictorentnum = inflictorent getentitynumber();
inflictorenttype = inflictorent getentitytype();
if ( isdefined( inflictorent.birthtime ) )
inflictorbirthtime = inflictorent.birthtime;
}
if ( !isdefined( overrideentitycamera ) )
overrideentitycamera = 0;
if ( isdefined( actorent ) )
actorentnum = actorent getentitynumber();
adddemobookmark( level.bookmark[type], time, client1, client2, scoreeventpriority, inflictorentnum, inflictorenttype, inflictorbirthtime, overrideentitycamera, actorentnum );
}
gameresultbookmark( type, winningteamindex, losingteamindex )
{
assert( isdefined( level.bookmark[type] ), "Unable to find a bookmark type for type - " + type );
client1 = 255;
client2 = 255;
scoreeventpriority = 0;
inflictorentnum = -1;
inflictorenttype = 0;
inflictorbirthtime = 0;
overrideentitycamera = 0;
actorentnum = undefined;
if ( isdefined( winningteamindex ) )
client1 = winningteamindex;
if ( isdefined( losingteamindex ) )
client2 = losingteamindex;
adddemobookmark( level.bookmark[type], gettime(), client1, client2, scoreeventpriority, inflictorentnum, inflictorenttype, inflictorbirthtime, overrideentitycamera, actorentnum );
}

View File

@ -417,11 +417,8 @@ destructible_barrel_fire_think( attacker )
self thread destructible_barrel_explosion( attacker );
}
destructible_barrel_explosion( attacker, physics_explosion )
destructible_barrel_explosion( attacker, physics_explosion = 1 )
{
if ( !isdefined( physics_explosion ) )
physics_explosion = 1;
self notify( "barrel_dead" );
if ( isdefined( self.target ) )

View File

@ -47,9 +47,8 @@ monitorempgrenade()
hurtvictim = 1;
hurtattacker = 0;
/#
assert( isdefined( self.team ) );
#/
if ( level.teambased && isdefined( attacker ) && isdefined( attacker.team ) && attacker.team == self.team && attacker != self )
{
if ( level.friendlyfire == 0 )

View File

@ -11,12 +11,8 @@ init()
return;
level.initedentityheadicons = 1;
/#
assert( isdefined( game["entity_headicon_allies"] ), "Allied head icons are not defined. Check the team set for the level." );
#/
/#
assert( isdefined( game["entity_headicon_axis"] ), "Axis head icons are not defined. Check the team set for the level." );
#/
precacheshader( game["entity_headicon_allies"] );
precacheshader( game["entity_headicon_axis"] );
@ -72,9 +68,7 @@ setentityheadicon( team, owner, offset, icon, constant_size )
{
if ( !isplayer( owner ) )
{
/#
assert( isdefined( owner.owner ), "entity has to have an owner if it's not a player" );
#/
owner = owner.owner;
}

View File

@ -58,9 +58,9 @@ monitorflash_internal( amount_distance, amount_angle, attacker, direct_on_player
rumbleduration = 0.75;
else
rumbleduration = 0.25;
/#
assert( isdefined( self.team ) );
#/
if ( level.teambased && isdefined( attacker ) && isdefined( attacker.team ) && attacker.team == self.team && attacker != self )
{
if ( level.friendlyfire == 0 )

453
MP/Core/maps/mp/_fx.gsc Normal file
View File

@ -0,0 +1,453 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\_createfx;
print_org( fxcommand, fxid, fxpos, waittime )
{
/#
if ( getdvar( _hash_F49A52C ) == "1" )
{
println( "{" );
println( "\"origin\" \"" + fxpos[0] + " " + fxpos[1] + " " + fxpos[2] + "\"" );
println( "\"classname\" \"script_model\"" );
println( "\"model\" \"fx\"" );
println( "\"script_fxcommand\" \"" + fxcommand + "\"" );
println( "\"script_fxid\" \"" + fxid + "\"" );
println( "\"script_delay\" \"" + waittime + "\"" );
println( "}" );
}
#/
}
oneshotfx( fxid, fxpos, waittime, fxpos2 )
{
}
oneshotfxthread()
{
wait 0.05;
if ( self.v["delay"] > 0 )
wait( self.v["delay"] );
create_triggerfx();
}
create_triggerfx()
{
self.looper = spawnfx_wrapper( self.v["fxid"], self.v["origin"], self.v["forward"], self.v["up"] );
triggerfx( self.looper, self.v["delay"] );
create_loopsound();
}
exploderfx( num, fxid, fxpos, waittime, fxpos2, firefx, firefxdelay, firefxsound, fxsound, fxquake, fxdamage, soundalias, repeat, delay_min, delay_max, damage_radius, firefxtimeout, exploder_group )
{
if ( 1 )
{
ent = createexploder( fxid );
ent.v["origin"] = fxpos;
ent.v["angles"] = ( 0, 0, 0 );
if ( isdefined( fxpos2 ) )
ent.v["angles"] = vectortoangles( fxpos2 - fxpos );
ent.v["delay"] = waittime;
ent.v["exploder"] = num;
return;
}
fx = spawn( "script_origin", ( 0, 0, 0 ) );
fx.origin = fxpos;
fx.angles = vectortoangles( fxpos2 - fxpos );
fx.script_exploder = num;
fx.script_fxid = fxid;
fx.script_delay = waittime;
fx.script_firefx = firefx;
fx.script_firefxdelay = firefxdelay;
fx.script_firefxsound = firefxsound;
fx.script_sound = fxsound;
fx.script_earthquake = fxquake;
fx.script_damage = fxdamage;
fx.script_radius = damage_radius;
fx.script_soundalias = soundalias;
fx.script_firefxtimeout = firefxtimeout;
fx.script_repeat = repeat;
fx.script_delay_min = delay_min;
fx.script_delay_max = delay_max;
fx.script_exploder_group = exploder_group;
forward = anglestoforward( fx.angles );
forward = vectorscale( forward, 150 );
fx.targetpos = fxpos + forward;
if ( !isdefined( level._script_exploders ) )
level._script_exploders = [];
level._script_exploders[level._script_exploders.size] = fx;
maps\mp\_createfx::createfx_showorigin( fxid, fxpos, waittime, fxpos2, "exploderfx", fx, undefined, firefx, firefxdelay, firefxsound, fxsound, fxquake, fxdamage, soundalias, repeat, delay_min, delay_max, damage_radius, firefxtimeout );
}
loopfx( fxid, fxpos, waittime, fxpos2, fxstart, fxstop, timeout )
{
/#
println( "Loopfx is deprecated!" );
#/
ent = createloopeffect( fxid );
ent.v["origin"] = fxpos;
ent.v["angles"] = ( 0, 0, 0 );
if ( isdefined( fxpos2 ) )
ent.v["angles"] = vectortoangles( fxpos2 - fxpos );
ent.v["delay"] = waittime;
}
create_looper()
{
self.looper = playloopedfx( level._effect[self.v["fxid"]], self.v["delay"], self.v["origin"], 0, self.v["forward"], self.v["up"] );
create_loopsound();
}
create_loopsound()
{
self notify( "stop_loop" );
if ( isdefined( self.v["soundalias"] ) && self.v["soundalias"] != "nil" )
{
if ( isdefined( self.looper ) )
self.looper thread maps\mp\_utility::loop_fx_sound( self.v["soundalias"], self.v["origin"], "death" );
else
thread maps\mp\_utility::loop_fx_sound( self.v["soundalias"], self.v["origin"], "stop_loop" );
}
}
stop_loopsound()
{
self notify( "stop_loop" );
}
loopfxthread()
{
wait 0.05;
if ( isdefined( self.fxstart ) )
level waittill( "start fx" + self.fxstart );
while ( true )
{
create_looper();
if ( isdefined( self.timeout ) )
thread loopfxstop( self.timeout );
if ( isdefined( self.fxstop ) )
level waittill( "stop fx" + self.fxstop );
else
return;
if ( isdefined( self.looper ) )
self.looper delete();
if ( isdefined( self.fxstart ) )
level waittill( "start fx" + self.fxstart );
else
return;
}
}
loopfxchangeid( ent )
{
self endon( "death" );
ent waittill( "effect id changed", change );
}
loopfxchangeorg( ent )
{
self endon( "death" );
for (;;)
{
ent waittill( "effect org changed", change );
self.origin = change;
}
}
loopfxchangedelay( ent )
{
self endon( "death" );
ent waittill( "effect delay changed", change );
}
loopfxdeletion( ent )
{
self endon( "death" );
ent waittill( "effect deleted" );
self delete();
}
loopfxstop( timeout )
{
self endon( "death" );
wait( timeout );
self.looper delete();
}
loopsound( sound, pos, waittime )
{
level thread loopsoundthread( sound, pos, waittime );
}
loopsoundthread( sound, pos, waittime )
{
org = spawn( "script_origin", pos );
org.origin = pos;
org playloopsound( sound );
}
gunfireloopfx( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax )
{
thread gunfireloopfxthread( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax );
}
gunfireloopfxthread( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax )
{
level endon( "stop all gunfireloopfx" );
wait 0.05;
if ( betweensetsmax < betweensetsmin )
{
temp = betweensetsmax;
betweensetsmax = betweensetsmin;
betweensetsmin = temp;
}
betweensetsbase = betweensetsmin;
betweensetsrange = betweensetsmax - betweensetsmin;
if ( shotdelaymax < shotdelaymin )
{
temp = shotdelaymax;
shotdelaymax = shotdelaymin;
shotdelaymin = temp;
}
shotdelaybase = shotdelaymin;
shotdelayrange = shotdelaymax - shotdelaymin;
if ( shotsmax < shotsmin )
{
temp = shotsmax;
shotsmax = shotsmin;
shotsmin = temp;
}
shotsbase = shotsmin;
shotsrange = shotsmax - shotsmin;
fxent = spawnfx( level._effect[fxid], fxpos );
for (;;)
{
shotnum = shotsbase + randomint( shotsrange );
for ( i = 0; i < shotnum; i++ )
{
triggerfx( fxent );
wait( shotdelaybase + randomfloat( shotdelayrange ) );
}
wait( betweensetsbase + randomfloat( betweensetsrange ) );
}
}
gunfireloopfxvec( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax )
{
thread gunfireloopfxvecthread( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax );
}
gunfireloopfxvecthread( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax )
{
level endon( "stop all gunfireloopfx" );
wait 0.05;
if ( betweensetsmax < betweensetsmin )
{
temp = betweensetsmax;
betweensetsmax = betweensetsmin;
betweensetsmin = temp;
}
betweensetsbase = betweensetsmin;
betweensetsrange = betweensetsmax - betweensetsmin;
if ( shotdelaymax < shotdelaymin )
{
temp = shotdelaymax;
shotdelaymax = shotdelaymin;
shotdelaymin = temp;
}
shotdelaybase = shotdelaymin;
shotdelayrange = shotdelaymax - shotdelaymin;
if ( shotsmax < shotsmin )
{
temp = shotsmax;
shotsmax = shotsmin;
shotsmin = temp;
}
shotsbase = shotsmin;
shotsrange = shotsmax - shotsmin;
fxpos2 = vectornormalize( fxpos2 - fxpos );
fxent = spawnfx( level._effect[fxid], fxpos, fxpos2 );
for (;;)
{
shotnum = shotsbase + randomint( shotsrange );
for ( i = 0; i < int( shotnum / level.fxfireloopmod ); i++ )
{
triggerfx( fxent );
delay = ( shotdelaybase + randomfloat( shotdelayrange ) ) * level.fxfireloopmod;
if ( delay < 0.05 )
delay = 0.05;
wait( delay );
}
wait( shotdelaybase + randomfloat( shotdelayrange ) );
wait( betweensetsbase + randomfloat( betweensetsrange ) );
}
}
setfireloopmod( value )
{
level.fxfireloopmod = 1 / value;
}
setup_fx()
{
if ( !isdefined( self.script_fxid ) || !isdefined( self.script_fxcommand ) || !isdefined( self.script_delay ) )
return;
org = undefined;
if ( isdefined( self.target ) )
{
ent = getent( self.target, "targetname" );
if ( isdefined( ent ) )
org = ent.origin;
}
fxstart = undefined;
if ( isdefined( self.script_fxstart ) )
fxstart = self.script_fxstart;
fxstop = undefined;
if ( isdefined( self.script_fxstop ) )
fxstop = self.script_fxstop;
if ( self.script_fxcommand == "OneShotfx" )
oneshotfx( self.script_fxid, self.origin, self.script_delay, org );
if ( self.script_fxcommand == "loopfx" )
loopfx( self.script_fxid, self.origin, self.script_delay, org, fxstart, fxstop );
if ( self.script_fxcommand == "loopsound" )
loopsound( self.script_fxid, self.origin, self.script_delay );
self delete();
}
script_print_fx()
{
/#
if ( !isdefined( self.script_fxid ) || !isdefined( self.script_fxcommand ) || !isdefined( self.script_delay ) )
{
println( "Effect at origin ", self.origin, " doesn't have script_fxid/script_fxcommand/script_delay" );
self delete();
return;
}
if ( isdefined( self.target ) )
org = getent( self.target, "targetname" ).origin;
else
org = "undefined";
if ( self.script_fxcommand == "OneShotfx" )
println( "mapsmp_fx::OneShotfx(\"" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");" );
if ( self.script_fxcommand == "loopfx" )
println( "mapsmp_fx::LoopFx(\"" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");" );
if ( self.script_fxcommand == "loopsound" )
println( "mapsmp_fx::LoopSound(\"" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");" );
#/
}
script_playfx( id, pos, pos2 )
{
if ( !id )
return;
if ( isdefined( pos2 ) )
playfx( id, pos, pos2 );
else
playfx( id, pos );
}
script_playfxontag( id, ent, tag )
{
if ( !id )
return;
playfxontag( id, ent, tag );
}
grenadeexplosionfx( pos )
{
playfx( level._effect["mechanical explosion"], pos );
earthquake( 0.15, 0.5, pos, 250 );
}
soundfx( fxid, fxpos, endonnotify )
{
org = spawn( "script_origin", ( 0, 0, 0 ) );
org.origin = fxpos;
org playloopsound( fxid );
if ( isdefined( endonnotify ) )
org thread soundfxdelete( endonnotify );
}
soundfxdelete( endonnotify )
{
level waittill( endonnotify );
self delete();
}
blenddelete( blend )
{
self waittill( "death" );
blend delete();
}
spawnfx_wrapper( fx_id, origin, forward, up )
{
assert( isdefined( level._effect[fx_id] ), "Missing level._effect[\"" + fx_id + "\"]. You did not setup the fx before calling it in createFx." );
fx_object = spawnfx( level._effect[fx_id], origin, forward, up );
return fx_object;
}

View File

@ -377,19 +377,19 @@ updatedebughud( hudindex, text, value )
/#
switch ( hudindex )
{
case "1":
case 1:
level.sessionadverthud_1a_text = text;
level.sessionadverthud_1b_text = value;
break;
case "2":
case 2:
level.sessionadverthud_2a_text = text;
level.sessionadverthud_2b_text = value;
break;
case "3":
case 3:
level.sessionadverthud_3a_text = text;
level.sessionadverthud_3b_text = value;
break;
case "4":
case 4:
level.sessionadverthud_4a_text = text;
level.sessionadverthud_4b_text = value;
break;

View File

@ -150,9 +150,7 @@ watchhackertoolfired()
self forceoffhandend();
clip_ammo = self getweaponammoclip( "pda_hack_mp" );
clip_ammo--;
/#
assert( clip_ammo >= 0 );
#/
self setweaponammoclip( "pda_hack_mp", clip_ammo );
self switchtoweapon( self getlastweapon() );
}
@ -301,9 +299,8 @@ hackertooltargetloop()
if ( self.hackertoollocktimeelapsed < locklengthms / 1000 )
continue;
/#
assert( isdefined( self.hackertooltarget ) );
#/
self notify( "stop_lockon_sound" );
self.hackertoollockfinalized = 1;
self weaponlockfinalize( self.hackertooltarget );
@ -564,9 +561,7 @@ gethackertoolradius( target )
if ( isentityhackablecarepackage( target ) )
{
/#
assert( isdefined( target.hackertoolradius ) );
#/
radius = target.hackertoolradius;
}
else if ( isentityhackableweaponobject( target ) )
@ -629,9 +624,8 @@ gethacktime( target )
if ( isentityhackablecarepackage( target ) )
{
/#
assert( isdefined( target.hackertooltimems ) );
#/
if ( isdefined( target.owner ) && target.owner == self )
time = level.carepackageownerhackertooltimems;
else if ( isdefined( target.owner ) && target.owner.team == self.team )

View File

@ -180,9 +180,8 @@ stingerirtloop()
if ( timepassed < locklength )
continue;
/#
assert( isdefined( self.stingertarget ) );
#/
self notify( "stop_lockon_sound" );
self.stingerlockfinalized = 1;
self weaponlockfinalize( self.stingertarget );
@ -428,9 +427,7 @@ initlockfield( target )
lockingon( target, lock )
{
/#
assert( isdefined( target.locking_on ) );
#/
clientnum = self getentitynumber();
if ( lock )
@ -456,9 +453,7 @@ watchclearlockingon( target, clientnum )
lockedon( target, lock )
{
/#
assert( isdefined( target.locked_on ) );
#/
clientnum = self getentitynumber();
if ( lock )
@ -519,9 +514,7 @@ _incomingmissiletracker( missile )
missile waittill( "death" );
self.incoming_missile--;
/#
assert( self.incoming_missile >= 0 );
#/
}
missiletarget_ismissileincoming()

513
MP/Core/maps/mp/_load.gsc Normal file
View File

@ -0,0 +1,513 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\_script_gen;
#include maps\mp\gametypes\_spawning;
#include maps\mp\gametypes\_tweakables;
#include maps\mp\_destructible;
#include maps\mp\_riotshield;
#include maps\mp\_vehicles;
#include maps\mp\killstreaks\_dogs;
#include maps\mp\killstreaks\_ai_tank;
#include maps\mp\killstreaks\_rcbomb;
#include maps\mp\killstreaks\_helicopter_guard;
#include maps\mp\_trophy_system;
#include maps\mp\_proximity_grenade;
#include maps\mp\_audio;
#include maps\mp\_busing;
#include maps\mp\_music;
#include maps\mp\_fxanim;
#include maps\mp\_interactive_objects;
#include maps\mp\_serverfaceanim_mp;
#include maps\mp\_art;
#include maps\mp\_createfx;
#include maps\mp\_global_fx;
#include maps\mp\_demo;
#include maps\mp\_development_dvars;
#include maps\mp\_load;
#include maps\mp\animscripts\utility;
#include maps\mp\animscripts\traverse\shared;
#include maps\mp\gametypes\_spawnlogic;
main( bscriptgened, bcsvgened, bsgenabled )
{
if ( !isdefined( level.script_gen_dump_reasons ) )
level.script_gen_dump_reasons = [];
if ( !isdefined( bsgenabled ) )
level.script_gen_dump_reasons[level.script_gen_dump_reasons.size] = "First run";
if ( !isdefined( bcsvgened ) )
bcsvgened = 0;
level.bcsvgened = bcsvgened;
if ( !isdefined( bscriptgened ) )
bscriptgened = 0;
else
bscriptgened = 1;
level.bscriptgened = bscriptgened;
level._loadstarted = 1;
struct_class_init();
level.clientscripts = getdvar( "cg_usingClientScripts" ) != "";
level._client_exploders = [];
level._client_exploder_ids = [];
if ( !isdefined( level.flag ) )
{
level.flag = [];
level.flags_lock = [];
}
if ( !isdefined( level.timeofday ) )
level.timeofday = "day";
flag_init( "scriptgen_done" );
level.script_gen_dump_reasons = [];
if ( !isdefined( level.script_gen_dump ) )
{
level.script_gen_dump = [];
level.script_gen_dump_reasons[0] = "First run";
}
if ( !isdefined( level.script_gen_dump2 ) )
level.script_gen_dump2 = [];
if ( isdefined( level.createfxent ) )
script_gen_dump_addline( "maps\\mp\\createfx\\" + level.script + "_fx::main();", level.script + "_fx" );
if ( isdefined( level.script_gen_dump_preload ) )
{
for ( i = 0; i < level.script_gen_dump_preload.size; i++ )
script_gen_dump_addline( level.script_gen_dump_preload[i].string, level.script_gen_dump_preload[i].signature );
}
if ( getdvar( "scr_RequiredMapAspectratio" ) == "" )
setdvar( "scr_RequiredMapAspectratio", "1" );
setdvar( "r_waterFogTest", 0 );
setdvar( "tu6_player_shallowWaterHeight", "0.0" );
precacherumble( "reload_small" );
precacherumble( "reload_medium" );
precacherumble( "reload_large" );
precacherumble( "reload_clipin" );
precacherumble( "reload_clipout" );
precacherumble( "reload_rechamber" );
precacherumble( "pullout_small" );
precacherumble( "buzz_high" );
precacherumble( "riotshield_impact" );
registerclientsys( "levelNotify" );
level.aitriggerspawnflags = getaitriggerflags();
level.vehicletriggerspawnflags = getvehicletriggerflags();
level.physicstracemaskphysics = 1;
level.physicstracemaskvehicle = 2;
level.physicstracemaskwater = 4;
level.physicstracemaskclip = 8;
level.physicstracecontentsvehicleclip = 16;
level.createfx_enabled = getdvar( "createfx" ) != "";
if ( !sessionmodeiszombiesgame() )
{
thread maps\mp\gametypes\_spawning::init();
thread maps\mp\gametypes\_tweakables::init();
thread maps\mp\_destructible::init();
thread maps\mp\_riotshield::register();
thread maps\mp\_vehicles::init();
thread maps\mp\killstreaks\_dogs::init();
thread maps\mp\killstreaks\_ai_tank::register();
thread maps\mp\killstreaks\_rcbomb::register();
thread maps\mp\killstreaks\_helicopter_guard::register();
thread maps\mp\_trophy_system::register();
thread maps\mp\_proximity_grenade::register();
maps\mp\_audio::init();
thread maps\mp\_busing::businit();
thread maps\mp\_music::music_init();
thread maps\mp\_fxanim::init();
}
else
{
level thread start_intro_screen_zm();
thread maps\mp\_interactive_objects::init();
maps\mp\_audio::init();
thread maps\mp\_busing::businit();
thread maps\mp\_music::music_init();
thread maps\mp\_fxanim::init();
thread maps\mp\_serverfaceanim_mp::init();
if ( level.createfx_enabled )
setinitialplayersconnected();
}
visionsetnight( "default_night" );
setup_traversals();
maps\mp\_art::main();
setupexploders();
parse_structs();
if ( sessionmodeiszombiesgame() )
thread footsteps();
/#
level thread level_notify_listener();
level thread client_notify_listener();
#/
thread maps\mp\_createfx::fx_init();
if ( level.createfx_enabled )
{
calculate_map_center();
maps\mp\_createfx::createfx();
}
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
maps\mp\_global_fx::main();
level waittill( "eternity" );
}
thread maps\mp\_global_fx::main();
maps\mp\_demo::init();
if ( !sessionmodeiszombiesgame() )
thread maps\mp\_development_dvars::init();
for ( p = 0; p < 6; p++ )
{
switch ( p )
{
case 0:
triggertype = "trigger_multiple";
break;
case 1:
triggertype = "trigger_once";
break;
case 2:
triggertype = "trigger_use";
break;
case 3:
triggertype = "trigger_radius";
break;
case 4:
triggertype = "trigger_lookat";
break;
default:
assert( p == 5 );
triggertype = "trigger_damage";
break;
}
triggers = getentarray( triggertype, "classname" );
for ( i = 0; i < triggers.size; i++ )
{
if ( isdefined( triggers[i].script_prefab_exploder ) )
triggers[i].script_exploder = triggers[i].script_prefab_exploder;
if ( isdefined( triggers[i].script_exploder ) )
level thread maps\mp\_load::exploder_load( triggers[i] );
}
}
}
level_notify_listener()
{
while ( true )
{
val = getdvar( "level_notify" );
if ( val != "" )
{
level notify( val );
setdvar( "level_notify", "" );
}
wait 0.2;
}
}
client_notify_listener()
{
while ( true )
{
val = getdvar( "client_notify" );
if ( val != "" )
{
clientnotify( val );
setdvar( "client_notify", "" );
}
wait 0.2;
}
}
footsteps()
{
maps\mp\animscripts\utility::setfootstepeffect( "asphalt", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "brick", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "carpet", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "cloth", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "concrete", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "dirt", loadfx( "bio/player/fx_footstep_sand" ) );
maps\mp\animscripts\utility::setfootstepeffect( "foliage", loadfx( "bio/player/fx_footstep_sand" ) );
maps\mp\animscripts\utility::setfootstepeffect( "gravel", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "grass", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "metal", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "mud", loadfx( "bio/player/fx_footstep_mud" ) );
maps\mp\animscripts\utility::setfootstepeffect( "paper", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "plaster", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "rock", loadfx( "bio/player/fx_footstep_dust" ) );
maps\mp\animscripts\utility::setfootstepeffect( "sand", loadfx( "bio/player/fx_footstep_sand" ) );
maps\mp\animscripts\utility::setfootstepeffect( "water", loadfx( "bio/player/fx_footstep_water" ) );
maps\mp\animscripts\utility::setfootstepeffect( "wood", loadfx( "bio/player/fx_footstep_dust" ) );
}
parse_structs()
{
for ( i = 0; i < level.struct.size; i++ )
{
if ( isdefined( level.struct[i].targetname ) )
{
if ( level.struct[i].targetname == "flak_fire_fx" )
{
level._effect["flak20_fire_fx"] = loadfx( "weapon/tracer/fx_tracer_flak_single_noExp" );
level._effect["flak38_fire_fx"] = loadfx( "weapon/tracer/fx_tracer_quad_20mm_Flak38_noExp" );
level._effect["flak_cloudflash_night"] = loadfx( "weapon/flak/fx_flak_cloudflash_night" );
level._effect["flak_burst_single"] = loadfx( "weapon/flak/fx_flak_single_day_dist" );
}
if ( level.struct[i].targetname == "fake_fire_fx" )
level._effect["distant_muzzleflash"] = loadfx( "weapon/muzzleflashes/heavy" );
if ( level.struct[i].targetname == "spotlight_fx" )
level._effect["spotlight_beam"] = loadfx( "env/light/fx_ray_spotlight_md" );
}
}
}
exploder_load( trigger )
{
level endon( "killexplodertridgers" + trigger.script_exploder );
trigger waittill( "trigger" );
if ( isdefined( trigger.script_chance ) && randomfloat( 1 ) > trigger.script_chance )
{
if ( isdefined( trigger.script_delay ) )
wait( trigger.script_delay );
else
wait 4;
level thread exploder_load( trigger );
return;
}
maps\mp\_utility::exploder( trigger.script_exploder );
level notify( "killexplodertridgers" + trigger.script_exploder );
}
setupexploders()
{
ents = getentarray( "script_brushmodel", "classname" );
smodels = getentarray( "script_model", "classname" );
for ( i = 0; i < smodels.size; i++ )
ents[ents.size] = smodels[i];
for ( i = 0; i < ents.size; i++ )
{
if ( isdefined( ents[i].script_prefab_exploder ) )
ents[i].script_exploder = ents[i].script_prefab_exploder;
if ( isdefined( ents[i].script_exploder ) )
{
if ( ents[i].model == "fx" && ( !isdefined( ents[i].targetname ) || ents[i].targetname != "exploderchunk" ) )
{
ents[i] hide();
continue;
}
if ( isdefined( ents[i].targetname ) && ents[i].targetname == "exploder" )
{
ents[i] hide();
ents[i] notsolid();
continue;
}
if ( isdefined( ents[i].targetname ) && ents[i].targetname == "exploderchunk" )
{
ents[i] hide();
ents[i] notsolid();
}
}
}
script_exploders = [];
potentialexploders = getentarray( "script_brushmodel", "classname" );
for ( i = 0; i < potentialexploders.size; i++ )
{
if ( isdefined( potentialexploders[i].script_prefab_exploder ) )
potentialexploders[i].script_exploder = potentialexploders[i].script_prefab_exploder;
if ( isdefined( potentialexploders[i].script_exploder ) )
script_exploders[script_exploders.size] = potentialexploders[i];
}
potentialexploders = getentarray( "script_model", "classname" );
for ( i = 0; i < potentialexploders.size; i++ )
{
if ( isdefined( potentialexploders[i].script_prefab_exploder ) )
potentialexploders[i].script_exploder = potentialexploders[i].script_prefab_exploder;
if ( isdefined( potentialexploders[i].script_exploder ) )
script_exploders[script_exploders.size] = potentialexploders[i];
}
potentialexploders = getentarray( "item_health", "classname" );
for ( i = 0; i < potentialexploders.size; i++ )
{
if ( isdefined( potentialexploders[i].script_prefab_exploder ) )
potentialexploders[i].script_exploder = potentialexploders[i].script_prefab_exploder;
if ( isdefined( potentialexploders[i].script_exploder ) )
script_exploders[script_exploders.size] = potentialexploders[i];
}
if ( !isdefined( level.createfxent ) )
level.createfxent = [];
acceptabletargetnames = [];
acceptabletargetnames["exploderchunk visible"] = 1;
acceptabletargetnames["exploderchunk"] = 1;
acceptabletargetnames["exploder"] = 1;
for ( i = 0; i < script_exploders.size; i++ )
{
exploder = script_exploders[i];
ent = createexploder( exploder.script_fxid );
ent.v = [];
ent.v["origin"] = exploder.origin;
ent.v["angles"] = exploder.angles;
ent.v["delay"] = exploder.script_delay;
ent.v["firefx"] = exploder.script_firefx;
ent.v["firefxdelay"] = exploder.script_firefxdelay;
ent.v["firefxsound"] = exploder.script_firefxsound;
ent.v["firefxtimeout"] = exploder.script_firefxtimeout;
ent.v["earthquake"] = exploder.script_earthquake;
ent.v["damage"] = exploder.script_damage;
ent.v["damage_radius"] = exploder.script_radius;
ent.v["soundalias"] = exploder.script_soundalias;
ent.v["repeat"] = exploder.script_repeat;
ent.v["delay_min"] = exploder.script_delay_min;
ent.v["delay_max"] = exploder.script_delay_max;
ent.v["target"] = exploder.target;
ent.v["ender"] = exploder.script_ender;
ent.v["type"] = "exploder";
if ( !isdefined( exploder.script_fxid ) )
ent.v["fxid"] = "No FX";
else
ent.v["fxid"] = exploder.script_fxid;
ent.v["exploder"] = exploder.script_exploder;
assert( isdefined( exploder.script_exploder ), "Exploder at origin " + exploder.origin + " has no script_exploder" );
if ( !isdefined( ent.v["delay"] ) )
ent.v["delay"] = 0;
if ( isdefined( exploder.target ) )
{
org = getent( ent.v["target"], "targetname" ).origin;
ent.v["angles"] = vectortoangles( org - ent.v["origin"] );
}
if ( exploder.classname == "script_brushmodel" || isdefined( exploder.model ) )
{
ent.model = exploder;
ent.model.disconnect_paths = exploder.script_disconnectpaths;
}
if ( isdefined( exploder.targetname ) && isdefined( acceptabletargetnames[exploder.targetname] ) )
ent.v["exploder_type"] = exploder.targetname;
else
ent.v["exploder_type"] = "normal";
ent maps\mp\_createfx::post_entity_creation_function();
}
level.createfxexploders = [];
for ( i = 0; i < level.createfxent.size; i++ )
{
ent = level.createfxent[i];
if ( ent.v["type"] != "exploder" )
continue;
ent.v["exploder_id"] = getexploderid( ent );
if ( !isdefined( level.createfxexploders[ent.v["exploder"]] ) )
level.createfxexploders[ent.v["exploder"]] = [];
level.createfxexploders[ent.v["exploder"]][level.createfxexploders[ent.v["exploder"]].size] = ent;
}
}
setup_traversals()
{
potential_traverse_nodes = getallnodes();
for ( i = 0; i < potential_traverse_nodes.size; i++ )
{
node = potential_traverse_nodes[i];
if ( node.type == "Begin" )
node maps\mp\animscripts\traverse\shared::init_traverse();
}
}
calculate_map_center()
{
if ( !isdefined( level.mapcenter ) )
{
level.nodesmins = ( 0, 0, 0 );
level.nodesmaxs = ( 0, 0, 0 );
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter( level.nodesmins, level.nodesmaxs );
/#
println( "map center: ", level.mapcenter );
#/
setmapcenter( level.mapcenter );
}
}
start_intro_screen_zm()
{
if ( level.createfx_enabled )
return;
if ( !isdefined( level.introscreen ) )
{
level.introscreen = newhudelem();
level.introscreen.x = 0;
level.introscreen.y = 0;
level.introscreen.horzalign = "fullscreen";
level.introscreen.vertalign = "fullscreen";
level.introscreen.foreground = 0;
level.introscreen setshader( "black", 640, 480 );
wait 0.05;
}
level.introscreen.alpha = 1;
players = get_players();
for ( i = 0; i < players.size; i++ )
players[i] freezecontrols( 1 );
wait 1;
}

View File

@ -0,0 +1,26 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\_utility;
music_init()
{
assert( level.clientscripts );
level.musicstate = "";
registerclientsys( "musicCmd" );
}
setmusicstate( state, player )
{
if ( isdefined( level.musicstate ) )
{
if ( isdefined( player ) )
{
setclientsysstate( "musicCmd", state, player );
return;
}
else if ( level.musicstate != state )
setclientsysstate( "musicCmd", state );
}
level.musicstate = state;
}

View File

@ -198,12 +198,8 @@ damageplayerinradius( position, owner, einflictor )
for ( i = 0; i < level.proximitygrenadedotdamageinstances; i++ )
{
wait( level.proximitygrenadedotdamagetime );
/#
assert( isdefined( owner ) );
#/
/#
assert( isdefined( killcament ) );
#/
self dodamage( damage, position, owner, killcament, "none", "MOD_GAS", 0, "proximity_grenade_aoe_mp" );
}

View File

@ -241,7 +241,7 @@ spawnriotshieldcover( origin, angles )
shield_ent.team = self.team;
shield_ent setteam( self.team );
shield_ent attachreconmodel( level.detectshieldmodel, self );
shield_ent useanimtree( -1 );
shield_ent useanimtree( #animtree );
shield_ent setscriptmoverflag( 0 );
shield_ent disconnectpaths();
return shield_ent;
@ -276,11 +276,7 @@ watchriotshielddeploy()
assert( !isdefined( self.riotshieldentity ) );
if ( level.gametype != "shrp" )
{
/#
assert( primaries.size > 0 );
#/
}
#/
shield_ent setclientfield( "riotshield_state", 1 );
shield_ent.reconmodel setclientfield( "riotshield_state", 1 );
@ -323,9 +319,7 @@ watchriotshielddeploy()
riotshielddistancetest( origin )
{
/#
assert( isdefined( origin ) );
#/
min_dist_squared = getdvarfloat( "riotshield_deploy_limit_radius" );
min_dist_squared *= min_dist_squared;
@ -384,9 +378,9 @@ watchdeployedriotshielddamage()
if ( !isdefined( attacker ) )
continue;
/#
assert( isdefined( self.owner ) && isdefined( self.owner.team ) );
#/
if ( isplayer( attacker ) )
{
if ( level.teambased && attacker.team == self.owner.team && attacker != self.owner )

View File

@ -28,9 +28,8 @@ scoreeventtablelookup( index, scoreeventcolumn )
getscoreeventcolumn( gametype )
{
columnoffset = getcolumnoffsetforgametype( gametype );
/#
assert( columnoffset >= 0 );
#/
if ( columnoffset >= 0 )
columnoffset += 0;
@ -40,9 +39,8 @@ getscoreeventcolumn( gametype )
getxpeventcolumn( gametype )
{
columnoffset = getcolumnoffsetforgametype( gametype );
/#
assert( columnoffset >= 0 );
#/
if ( columnoffset >= 0 )
columnoffset += 1;
@ -55,9 +53,9 @@ getcolumnoffsetforgametype( gametype )
if ( !isdefined( level.scoreeventtableid ) )
level.scoreeventtableid = getscoreeventtableid();
/#
assert( isdefined( level.scoreeventtableid ) );
#/
if ( !isdefined( level.scoreeventtableid ) )
return -1;
@ -81,9 +79,8 @@ getcolumnoffsetforgametype( gametype )
gamemodecolumn += 2;
}
/#
assert( foundgamemode, "Could not find gamemode in scoreInfo.csv:" + gametype );
#/
return gamemodecolumn;
}
@ -94,9 +91,8 @@ getscoreeventtableid()
if ( isdefined( scoreinfotableid ) )
scoreinfotableloaded = 1;
/#
assert( scoreinfotableloaded, "Score Event Table is not loaded: " + "mp/scoreInfo.csv" );
#/
return scoreinfotableid;
}
@ -525,9 +521,7 @@ specificweaponkill( attacker, victim, weapon, killstreak )
multikill( killcount, weapon )
{
/#
assert( killcount > 1 );
#/
self maps\mp\_challenges::multikill( killcount, weapon );
if ( killcount > 8 )
@ -740,9 +734,7 @@ decrementlastobituaryplayercountafterfade()
level endon( "reset_obituary_count" );
wait 5;
level.lastobituaryplayercount--;
/#
assert( level.lastobituaryplayercount >= 0 );
#/
}
ongameend( data )

View File

@ -0,0 +1,290 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\_script_gen;
script_gen_dump_checksaved()
{
signatures = getarraykeys( level.script_gen_dump );
for ( i = 0; i < signatures.size; i++ )
{
if ( !isdefined( level.script_gen_dump2[signatures[i]] ) )
{
level.script_gen_dump[signatures[i]] = undefined;
level.script_gen_dump_reasons[level.script_gen_dump_reasons.size] = "Signature unmatched( removed feature ): " + signatures[i];
}
}
}
script_gen_dump()
{
/#
script_gen_dump_checksaved();
if ( !level.script_gen_dump_reasons.size )
{
flag_set( "scriptgen_done" );
return;
}
firstrun = 0;
if ( level.bscriptgened )
{
println( " " );
println( " " );
println( " " );
println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " );
println( "^3Dumping scriptgen dump for these reasons" );
println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " );
for ( i = 0; i < level.script_gen_dump_reasons.size; i++ )
{
if ( issubstr( level.script_gen_dump_reasons[i], "nowrite" ) )
{
substr = getsubstr( level.script_gen_dump_reasons[i], 15 );
println( i + ". ) " + substr );
}
else
println( i + ". ) " + level.script_gen_dump_reasons[i] );
if ( level.script_gen_dump_reasons[i] == "First run" )
firstrun = 1;
}
println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " );
println( " " );
if ( firstrun )
{
println( "for First Run make sure you delete all of the vehicle precache script calls, createart calls, createfx calls( most commonly placed in maps\\" + level.script + "_fx.gsc ) " );
println( " " );
println( "replace:" );
println( "maps\\_load::main( 1 );" );
println( " " );
println( "with( don't forget to add this file to P4 ):" );
println( "maps\\scriptgen\\" + level.script + "_scriptgen::main();" );
println( " " );
}
println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " );
println( " " );
println( "^2 / \\ / \\ / \\" );
println( "^2scroll up" );
println( "^2 / \\ / \\ / \\" );
println( " " );
}
else
return;
filename = "scriptgen/" + level.script + "_scriptgen.gsc";
csvfilename = "zone_source/" + level.script + ".csv";
if ( level.bscriptgened )
file = openfile( filename, "write" );
else
file = 0;
assert( file != -1, "File not writeable( check it and and restart the map ): " + filename );
script_gen_dumpprintln( file, "// script generated script do not write your own script here it will go away if you do." );
script_gen_dumpprintln( file, "main()" );
script_gen_dumpprintln( file, "{" );
script_gen_dumpprintln( file, "" );
script_gen_dumpprintln( file, "\\tlevel.script_gen_dump = [];" );
script_gen_dumpprintln( file, "" );
signatures = getarraykeys( level.script_gen_dump );
for ( i = 0; i < signatures.size; i++ )
{
if ( !issubstr( level.script_gen_dump[signatures[i]], "nowrite" ) )
script_gen_dumpprintln( file, "\\t" + level.script_gen_dump[signatures[i]] );
}
for ( i = 0; i < signatures.size; i++ )
{
if ( !issubstr( level.script_gen_dump[signatures[i]], "nowrite" ) )
{
script_gen_dumpprintln( file, "\\tlevel.script_gen_dump[ " + "\"" + signatures[i] + "\"" + " ] = " + "\"" + signatures[i] + "\"" + ";" );
continue;
}
script_gen_dumpprintln( file, "\\tlevel.script_gen_dump[ " + "\"" + signatures[i] + "\"" + " ] = " + "\"nowrite\"" + ";" );
}
script_gen_dumpprintln( file, "" );
keys1 = undefined;
keys2 = undefined;
if ( isdefined( level.sg_precacheanims ) )
keys1 = getarraykeys( level.sg_precacheanims );
if ( isdefined( keys1 ) )
{
for ( i = 0; i < keys1.size; i++ )
script_gen_dumpprintln( file, "\\tanim_precach_" + keys1[i] + "();" );
}
script_gen_dumpprintln( file, "\\tmaps\\_load::main( 1, " + level.bcsvgened + ", 1 );" );
script_gen_dumpprintln( file, "}" );
script_gen_dumpprintln( file, "" );
if ( isdefined( level.sg_precacheanims ) )
keys1 = getarraykeys( level.sg_precacheanims );
if ( isdefined( keys1 ) )
{
for ( i = 0; i < keys1.size; i++ )
{
script_gen_dumpprintln( file, "#using_animtree( \"" + keys1[i] + "\" );" );
script_gen_dumpprintln( file, "anim_precach_" + keys1[i] + "()" );
script_gen_dumpprintln( file, "{" );
script_gen_dumpprintln( file, "\\tlevel.sg_animtree[ \"" + keys1[i] + "\" ] = #animtree;" );
keys2 = getarraykeys( level.sg_precacheanims[keys1[i]] );
if ( isdefined( keys2 ) )
{
for ( j = 0; j < keys2.size; j++ )
script_gen_dumpprintln( file, "\\tlevel.sg_anim[ \"" + keys2[j] + "\" ] = %" + keys2[j] + ";" );
}
script_gen_dumpprintln( file, "}" );
script_gen_dumpprintln( file, "" );
}
}
if ( level.bscriptgened )
saved = closefile( file );
else
saved = 1;
if ( level.bcsvgened )
csvfile = openfile( csvfilename, "write" );
else
csvfile = 0;
assert( csvfile != -1, "File not writeable( check it and and restart the map ): " + csvfilename );
signatures = getarraykeys( level.script_gen_dump );
for ( i = 0; i < signatures.size; i++ )
script_gen_csvdumpprintln( csvfile, signatures[i] );
if ( level.bcsvgened )
csvfilesaved = closefile( csvfile );
else
csvfilesaved = 1;
assert( csvfilesaved == 1, "csv not saved( see above message? ): " + csvfilename );
assert( saved == 1, "map not saved( see above message? ): " + filename );
#/
assert( !level.bscriptgened, "SCRIPTGEN generated: follow instructions listed above this error in the console" );
if ( level.bscriptgened )
{
/#
assertmsg( "SCRIPTGEN updated: Rebuild fast file and run map again" );
#/
}
flag_set( "scriptgen_done" );
}
script_gen_csvdumpprintln( file, signature )
{
prefix = undefined;
writtenprefix = undefined;
path = "";
extension = "";
if ( issubstr( signature, "ignore" ) )
prefix = "ignore";
else if ( issubstr( signature, "col_map_sp" ) )
prefix = "col_map_sp";
else if ( issubstr( signature, "gfx_map" ) )
prefix = "gfx_map";
else if ( issubstr( signature, "rawfile" ) )
prefix = "rawfile";
else if ( issubstr( signature, "sound" ) )
prefix = "sound";
else if ( issubstr( signature, "xmodel" ) )
prefix = "xmodel";
else if ( issubstr( signature, "xanim" ) )
prefix = "xanim";
else if ( issubstr( signature, "item" ) )
{
prefix = "item";
writtenprefix = "weapon";
path = "sp/";
}
else if ( issubstr( signature, "fx" ) )
prefix = "fx";
else if ( issubstr( signature, "menu" ) )
{
prefix = "menu";
writtenprefix = "menufile";
path = "ui / scriptmenus/";
extension = ".menu";
}
else if ( issubstr( signature, "rumble" ) )
{
prefix = "rumble";
writtenprefix = "rawfile";
path = "rumble/";
}
else if ( issubstr( signature, "shader" ) )
{
prefix = "shader";
writtenprefix = "material";
}
else if ( issubstr( signature, "shock" ) )
{
prefix = "shock";
writtenprefix = "rawfile";
extension = ".shock";
path = "shock/";
}
else if ( issubstr( signature, "string" ) )
{
prefix = "string";
/#
assertmsg( "string not yet supported by scriptgen" );
#/
}
else if ( issubstr( signature, "turret" ) )
{
prefix = "turret";
writtenprefix = "weapon";
path = "sp/";
}
else if ( issubstr( signature, "vehicle" ) )
{
prefix = "vehicle";
writtenprefix = "rawfile";
path = "vehicles/";
}
if ( !isdefined( prefix ) )
return;
if ( !isdefined( writtenprefix ) )
string = prefix + ", " + getsubstr( signature, prefix.size + 1, signature.size );
else
string = writtenprefix + ", " + path + getsubstr( signature, prefix.size + 1, signature.size ) + extension;
/#
if ( file == -1 || !level.bcsvgened )
println( string );
else
fprintln( file, string );
#/
}
script_gen_dumpprintln( file, string )
{
/#
if ( file == -1 || !level.bscriptgened )
println( string );
else
fprintln( file, string );
#/
}

View File

@ -172,10 +172,10 @@ damageinpoisonarea( gaseffectarea, killcament, trace, position )
{
switch ( timer )
{
case "0":
case 0:
self shellshock( "tabun_gas_mp", 1.0 );
break;
case "1":
case 1:
self shellshock( "tabun_gas_nokick_mp", 1.0 );
break;
default:
@ -348,22 +348,22 @@ spawnalllocs( owner, startpos )
switch ( fxtoplay )
{
case "0":
case 0:
locations["fxtoplay"][i] = level.fx_tabun_0;
locations["radius"][i] = level.fx_tabun_radius0;
continue;
case "1":
break;
case 1:
locations["fxtoplay"][i] = level.fx_tabun_1;
locations["radius"][i] = level.fx_tabun_radius1;
continue;
case "2":
break;
case 2:
locations["fxtoplay"][i] = level.fx_tabun_2;
locations["radius"][i] = level.fx_tabun_radius2;
continue;
case "3":
break;
case 3:
locations["fxtoplay"][i] = level.fx_tabun_3;
locations["radius"][i] = level.fx_tabun_radius3;
continue;
break;
default:
locations["fxtoplay"][i] = undefined;
locations["radius"][i] = 0;

2671
MP/Core/maps/mp/_utility.gsc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -529,9 +529,7 @@ build_rumble( rumble, scale, duration, radius, basetime, randomaditionaltime )
level.vehicle_rumble = [];
struct = build_quake( scale, duration, radius, basetime, randomaditionaltime );
/#
assert( isdefined( rumble ) );
#/
precacherumble( rumble );
struct.rumble = rumble;
level.vehicle_rumble[level.vttype] = struct;
@ -713,7 +711,9 @@ do_dead_cleanup_wait( test_name )
cleanup( test_name, cleanup_dvar_name, cleanup_func )
{
for ( keep_waiting = 1; keep_waiting; keep_waiting = 1 )
keep_waiting = 1;
while ( keep_waiting )
{
cleanupenabled = !isdefined( cleanup_dvar_name ) || getdvarint( cleanup_dvar_name ) != 0;
@ -724,9 +724,11 @@ cleanup( test_name, cleanup_dvar_name, cleanup_func )
}
keep_waiting = 0;
devblock( loc_395E );
/#
self cleanup_debug_print( "Cleanup disabled for " + test_name + " ( dvar = " + cleanup_dvar_name + " )" );
wait 5.0;
keep_waiting = 1;
#/
}
}
@ -1506,9 +1508,7 @@ vehicle_disconnect_paths()
follow_path( node )
{
self endon( "death" );
/#
assert( isdefined( node ), "vehicle_path() called without a path" );
#/
self notify( "newpath" );
if ( isdefined( node ) )

View File

@ -0,0 +1,105 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\animscripts\shared;
#include maps\mp\animscripts\utility;
main()
{
debug_anim_print( "dog_combat::main() " );
self endon( "killanimscript" );
self setaimanimweights( 0, 0 );
/#
if ( !debug_allow_combat() )
{
combatidle();
return;
}
#/
if ( isdefined( level.hostmigrationtimer ) )
{
combatidle();
return;
}
assert( isdefined( self.enemy ) );
if ( !isalive( self.enemy ) )
{
combatidle();
return;
}
if ( isplayer( self.enemy ) )
self meleebiteattackplayer( self.enemy );
}
combatidle()
{
self set_orient_mode( "face enemy" );
self animmode( "zonly_physics", 0 );
idleanims = [];
idleanims[0] = "combat_attackidle";
idleanims[1] = "combat_attackidle_bark";
idleanims[2] = "combat_attackidle_growl";
idleanim = random( idleanims );
debug_anim_print( "dog_combat::combatIdle() - Setting " + idleanim );
self setanimstate( idleanim );
self maps\mp\animscripts\shared::donotetracks( "done" );
debug_anim_print( "dog_combat::combatIdle() - " + idleanim + " notify done." );
}
meleebiteattackplayer( player )
{
self set_orient_mode( "face enemy" );
self animmode( "gravity", 0 );
self.safetochangescript = 0;
if ( use_low_attack() )
{
self animmode( "angle deltas", 0 );
self setanimstate( "combat_attack_player_close_range" );
wait 0.35;
if ( isplayer( self.enemy ) && self.enemy getstance() == "prone" )
self meleewithoffset( vectorscale( ( 0, 0, -1 ), 9.0 ) );
else
self melee();
self maps\mp\animscripts\shared::donotetracksfortime( 1.2, "done" );
self animmode( "gravity", 0 );
}
else
{
attack_time = 1.2 + randomfloat( 0.4 );
debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" );
self setanimstate( "combat_attack_run" );
self maps\mp\animscripts\shared::donotetracksfortime( attack_time, "done", ::handlemeleebiteattacknotetracks, player );
debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." );
}
self.safetochangescript = 1;
self animmode( "none", 0 );
}
handlemeleebiteattacknotetracks( note, player )
{
if ( note == "dog_melee" )
self melee( anglestoforward( self.angles ) );
}
use_low_attack()
{
if ( isplayer( self.enemy ) )
{
if ( self.enemy getstance() == "prone" )
{
attack_height = self.origin[2] + 16;
if ( self.enemy.origin[2] < attack_height )
return true;
}
}
return false;
}

View File

@ -0,0 +1,32 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\animscripts\utility;
#include maps\mp\animscripts\shared;
main()
{
debug_anim_print( "dog_death::main()" );
self setaimanimweights( 0, 0 );
self endon( "killanimscript" );
if ( isdefined( self.a.nodeath ) )
{
assert( self.a.nodeath, "Nodeath needs to be set to true or undefined." );
wait 3;
return;
}
self unlink();
if ( isdefined( self.enemy ) && isdefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self )
self.enemy.syncedmeleetarget = undefined;
death_anim = "death_" + getanimdirection( self.damageyaw );
/#
println( death_anim );
#/
self animmode( "gravity", 0 );
debug_anim_print( "dog_death::main() - Setting " + death_anim );
self setanimstate( death_anim );
self maps\mp\animscripts\shared::donotetracks( "done" );
}

View File

@ -0,0 +1,127 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\animscripts\shared;
#include maps\mp\animscripts\utility;
main()
{
debug_anim_print( "dog_stop::main()" );
self endon( "killanimscript" );
self setaimanimweights( 0, 0 );
self thread lookattarget( "attackIdle" );
while ( true )
{
if ( shouldattackidle() )
{
self randomattackidle();
maps\mp\animscripts\shared::donotetracks( "done" );
}
else
{
self set_orient_mode( "face current" );
debug_anim_print( "dog_stop::main() - Setting stop_idle" );
self notify( "stop tracking" );
self setaimanimweights( 0, 0 );
self setanimstate( "stop_idle" );
maps\mp\animscripts\shared::donotetracks( "done" );
self thread lookattarget( "attackIdle" );
}
debug_anim_print( "dog_stop::main() - stop idle loop notify done." );
}
}
isfacingenemy( tolerancecosangle )
{
assert( isdefined( self.enemy ) );
vectoenemy = self.enemy.origin - self.origin;
disttoenemy = length( vectoenemy );
if ( disttoenemy < 1 )
return 1;
forward = anglestoforward( self.angles );
val1 = forward[0] * vectoenemy[0] + forward[1] * vectoenemy[1];
val2 = ( forward[0] * vectoenemy[0] + forward[1] * vectoenemy[1] ) / disttoenemy;
return ( forward[0] * vectoenemy[0] + forward[1] * vectoenemy[1] ) / disttoenemy > tolerancecosangle;
}
randomattackidle()
{
if ( isfacingenemy( -0.5 ) )
self set_orient_mode( "face current" );
else
self set_orient_mode( "face enemy" );
if ( should_growl() )
{
debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl" );
self setanimstate( "stop_attackidle_growl" );
return;
}
idlechance = 33;
barkchance = 66;
if ( isdefined( self.mode ) )
{
if ( self.mode == "growl" )
{
idlechance = 15;
barkchance = 30;
}
else if ( self.mode == "bark" )
{
idlechance = 15;
barkchance = 85;
}
}
rand = randomint( 100 );
if ( rand < idlechance )
{
debug_anim_print( "dog_stop::main() - Setting stop_attackidle" );
self setanimstate( "stop_attackidle" );
}
else if ( rand < barkchance )
{
debug_anim_print( "dog_stop::main() - Setting stop_attackidle_bark " );
self setanimstate( "stop_attackidle_bark" );
}
else
{
debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl " );
self setanimstate( "stop_attackidle_growl" );
}
}
shouldattackidle()
{
return isdefined( self.enemy ) && isalive( self.enemy ) && distancesquared( self.origin, self.enemy.origin ) < 1000000;
}
should_growl()
{
if ( isdefined( self.script_growl ) )
return 1;
if ( !isalive( self.enemy ) )
return 1;
return !self cansee( self.enemy );
}
lookattarget( lookposeset )
{
self endon( "killanimscript" );
self endon( "stop tracking" );
debug_anim_print( "dog_stop::lookAtTarget() - Starting look at " + lookposeset );
self.rightaimlimit = 90;
self.leftaimlimit = -90;
self.upaimlimit = 45;
self.downaimlimit = -45;
self maps\mp\animscripts\shared::setanimaimweight( 1, 0.2 );
self maps\mp\animscripts\shared::trackloop();
}

View File

@ -0,0 +1,279 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\animscripts\utility;
#include maps\mp\_utility;
handledogsoundnotetracks( note )
{
if ( note == "sound_dogstep_run_default" )
return true;
prefix = getsubstr( note, 0, 5 );
if ( prefix != "sound" )
return false;
return true;
}
growling()
{
return isdefined( self.script_growl );
}
handlenotetrack( note, flagname, customfunction, var1 )
{
/#
if ( getdvarint( _hash_6EBEB982 ) )
println( "dog notetrack: " + flagname + " " + note + " " + gettime() );
#/
if ( isai( self ) && self.type == "dog" )
{
if ( handledogsoundnotetracks( note ) )
return;
}
switch ( note )
{
case "undefined":
case "finish":
case "end":
return note;
default:
if ( isdefined( customfunction ) )
{
if ( !isdefined( var1 ) )
return [[ customfunction ]]( note );
else
return [[ customfunction ]]( note, var1 );
}
break;
}
}
donotetracks( flagname, customfunction, var1 )
{
for (;;)
{
self waittill( flagname, note );
if ( !isdefined( note ) )
note = "undefined";
val = self handlenotetrack( note, flagname, customfunction, var1 );
if ( isdefined( val ) )
return val;
}
}
donotetracksforeverproc( notetracksfunc, flagname, killstring, customfunction, var1 )
{
if ( isdefined( killstring ) )
self endon( killstring );
self endon( "killanimscript" );
for (;;)
{
time = gettime();
returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 );
timetaken = gettime() - time;
if ( timetaken < 0.05 )
{
time = gettime();
returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 );
timetaken = gettime() - time;
if ( timetaken < 0.05 )
{
/#
println( gettime() + " mapsmpanimscriptsshared::DoNoteTracksForever is trying to cause an infinite loop on anim " + flagname + ", returned " + returnednote + "." );
#/
wait( 0.05 - timetaken );
}
}
}
}
donotetracksforever( flagname, killstring, customfunction, var1 )
{
donotetracksforeverproc( ::donotetracks, flagname, killstring, customfunction, var1 );
}
donotetracksfortimeproc( donotetracksforeverfunc, time, flagname, customfunction, ent, var1 )
{
ent endon( "stop_notetracks" );
[[ donotetracksforeverfunc ]]( flagname, undefined, customfunction, var1 );
}
donotetracksfortime( time, flagname, customfunction, var1 )
{
ent = spawnstruct();
ent thread donotetracksfortimeendnotify( time );
donotetracksfortimeproc( ::donotetracksforever, time, flagname, customfunction, ent, var1 );
}
donotetracksfortimeendnotify( time )
{
wait( time );
self notify( "stop_notetracks" );
}
trackloop()
{
players = get_players();
deltachangeperframe = 5;
aimblendtime = 0.05;
prevyawdelta = 0;
prevpitchdelta = 0;
maxyawdeltachange = 5;
maxpitchdeltachange = 5;
pitchadd = 0;
yawadd = 0;
if ( self.type == "dog" || self.type == "zombie" || self.type == "zombie_dog" )
{
domaxanglecheck = 0;
self.shootent = self.enemy;
}
else
{
domaxanglecheck = 1;
if ( self.a.script == "cover_crouch" && isdefined( self.a.covermode ) && self.a.covermode == "lean" )
pitchadd = -1 * anim.covercrouchleanpitch;
if ( ( self.a.script == "cover_left" || self.a.script == "cover_right" ) && isdefined( self.a.cornermode ) && self.a.cornermode == "lean" )
yawadd = self.covernode.angles[1] - self.angles[1];
}
yawdelta = 0;
pitchdelta = 0;
firstframe = 1;
for (;;)
{
incranimaimweight();
selfshootatpos = ( self.origin[0], self.origin[1], self geteye()[2] );
shootpos = undefined;
if ( isdefined( self.enemy ) )
shootpos = self.enemy getshootatpos();
if ( !isdefined( shootpos ) )
{
yawdelta = 0;
pitchdelta = 0;
}
else
{
vectortoshootpos = shootpos - selfshootatpos;
anglestoshootpos = vectortoangles( vectortoshootpos );
pitchdelta = 360 - anglestoshootpos[0];
pitchdelta = angleclamp180( pitchdelta + pitchadd );
yawdelta = self.angles[1] - anglestoshootpos[1];
yawdelta = angleclamp180( yawdelta + yawadd );
}
if ( domaxanglecheck && ( abs( yawdelta ) > 60 || abs( pitchdelta ) > 60 ) )
{
yawdelta = 0;
pitchdelta = 0;
}
else
{
if ( yawdelta > self.rightaimlimit )
yawdelta = self.rightaimlimit;
else if ( yawdelta < self.leftaimlimit )
yawdelta = self.leftaimlimit;
if ( pitchdelta > self.upaimlimit )
pitchdelta = self.upaimlimit;
else if ( pitchdelta < self.downaimlimit )
pitchdelta = self.downaimlimit;
}
if ( firstframe )
firstframe = 0;
else
{
yawdeltachange = yawdelta - prevyawdelta;
if ( abs( yawdeltachange ) > maxyawdeltachange )
yawdelta = prevyawdelta + maxyawdeltachange * sign( yawdeltachange );
pitchdeltachange = pitchdelta - prevpitchdelta;
if ( abs( pitchdeltachange ) > maxpitchdeltachange )
pitchdelta = prevpitchdelta + maxpitchdeltachange * sign( pitchdeltachange );
}
prevyawdelta = yawdelta;
prevpitchdelta = pitchdelta;
updown = 0;
leftright = 0;
if ( yawdelta > 0 )
{
assert( yawdelta <= self.rightaimlimit );
weight = yawdelta / self.rightaimlimit * self.a.aimweight;
leftright = weight;
}
else if ( yawdelta < 0 )
{
assert( yawdelta >= self.leftaimlimit );
weight = yawdelta / self.leftaimlimit * self.a.aimweight;
leftright = -1 * weight;
}
if ( pitchdelta > 0 )
{
assert( pitchdelta <= self.upaimlimit );
weight = pitchdelta / self.upaimlimit * self.a.aimweight;
updown = weight;
}
else if ( pitchdelta < 0 )
{
assert( pitchdelta >= self.downaimlimit );
weight = pitchdelta / self.downaimlimit * self.a.aimweight;
updown = -1 * weight;
}
self setaimanimweights( updown, leftright );
wait 0.05;
}
}
setanimaimweight( goalweight, goaltime )
{
if ( !isdefined( goaltime ) || goaltime <= 0 )
{
self.a.aimweight = goalweight;
self.a.aimweight_start = goalweight;
self.a.aimweight_end = goalweight;
self.a.aimweight_transframes = 0;
}
else
{
self.a.aimweight = goalweight;
self.a.aimweight_start = self.a.aimweight;
self.a.aimweight_end = goalweight;
self.a.aimweight_transframes = int( goaltime * 20 );
}
self.a.aimweight_t = 0;
}
incranimaimweight()
{
if ( self.a.aimweight_t < self.a.aimweight_transframes )
{
self.a.aimweight_t++;
t = 1.0 * self.a.aimweight_t / self.a.aimweight_transframes;
self.a.aimweight = self.a.aimweight_start * ( 1 - t ) + self.a.aimweight_end * t;
}
}

View File

@ -0,0 +1,195 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\animscripts\utility;
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\animscripts\shared;
init_traverse()
{
point = getent( self.target, "targetname" );
if ( isdefined( point ) )
{
self.traverse_height = point.origin[2];
point delete();
}
else
{
point = getstruct( self.target, "targetname" );
if ( isdefined( point ) )
self.traverse_height = point.origin[2];
}
}
teleportthread( verticaloffset )
{
self endon( "killanimscript" );
self notify( "endTeleportThread" );
self endon( "endTeleportThread" );
reps = 5;
offset = ( 0, 0, verticaloffset / reps );
for ( i = 0; i < reps; i++ )
{
self teleport( self.origin + offset );
wait 0.05;
}
}
teleportthreadex( verticaloffset, delay, frames )
{
self endon( "killanimscript" );
self notify( "endTeleportThread" );
self endon( "endTeleportThread" );
if ( verticaloffset == 0 )
return;
wait( delay );
amount = verticaloffset / frames;
if ( amount > 10.0 )
amount = 10.0;
else if ( amount < -10.0 )
amount = -10.0;
offset = ( 0, 0, amount );
for ( i = 0; i < frames; i++ )
{
self teleport( self.origin + offset );
wait 0.05;
}
}
dog_wall_and_window_hop( traversename, height )
{
self endon( "killanimscript" );
self traversemode( "nogravity" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[2];
self thread teleportthread( realheight - height );
}
else if ( height != 36.0 )
self thread teleportthreadex( height - 36.0, 0.2, 7 );
debug_anim_print( "traverse::dog_wall_and_window_hop() - Setting " + traversename );
self setanimstate( traversename );
maps\mp\animscripts\shared::donotetracksfortime( 1.0, "done" );
debug_anim_print( "traverse::dog_wall_and_window_hop() - " + traversename );
self.traversecomplete = 1;
}
dog_jump_down( height, frames, time )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
if ( !isdefined( time ) )
time = 0.3;
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[2];
self thread teleportthread( realheight - height );
}
else if ( height != 40.0 )
self thread teleportthreadex( height - 40.0, 0.1, frames );
debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_40" );
self setanimstate( "traverse_jump_down_40" );
maps\mp\animscripts\shared::donotetracksfortime( time, "done" );
debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_40 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_down_far( height, frames, time )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
if ( !isdefined( time ) )
time = 0.3;
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[2];
self thread teleportthread( realheight - height );
}
else if ( height != 80.0 )
self thread teleportthreadex( 80.0 - height, 0.1, frames );
debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_80" );
self setanimstate( "traverse_jump_down_80" );
maps\mp\animscripts\shared::donotetracksfortime( time, "done" );
debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_80 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_up( height, frames )
{
self endon( "killanimscript" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[2];
self thread teleportthread( realheight - height );
}
else if ( height != 40.0 )
self thread teleportthreadex( height - 40.0, 0.2, frames );
debug_anim_print( "traverse::dog_jump_up() - Setting traverse_jump_up_40" );
self setanimstate( "traverse_jump_up_40" );
maps\mp\animscripts\shared::donotetracksfortime( 0.5, "done" );
debug_anim_print( "traverse::dog_jump_up() - traverse_jump_up_40 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}
dog_jump_up_high( height, frames )
{
assert( self.type == "dog", "Only dogs can do this traverse currently." );
self endon( "killanimscript" );
self traversemode( "nogravity" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
assert( isdefined( startnode ) );
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )
{
realheight = startnode.traverse_height - startnode.origin[2];
self thread teleportthreadex( height - 80, 0.2, frames );
}
else if ( height != 80.0 )
self thread teleportthreadex( height - 80.0, 0.2, frames );
debug_anim_print( "traverse::dog_jump_up_80() - Setting traverse_jump_up_80" );
self setanimstate( "traverse_jump_up_80" );
maps\mp\animscripts\shared::donotetracksfortime( 0.6, "done" );
debug_anim_print( "traverse::dog_jump_up_80() - traverse_jump_up_80 " );
self traversemode( "gravity" );
self.traversecomplete = 1;
}

View File

@ -10,9 +10,7 @@ main()
self traversemode( "nogravity" );
self traversemode( "noclip" );
startnode = self getnegotiationstartnode();
/#
assert( isdefined( startnode ) );
#/
self orientmode( "face angle", startnode.angles[1] );
if ( isdefined( startnode.traverse_height ) )

View File

@ -0,0 +1,135 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
anim_get_dvar_int( dvar, def )
{
return int( anim_get_dvar( dvar, def ) );
}
anim_get_dvar( dvar, def )
{
if ( getdvar( dvar ) != "" )
return getdvarfloat( dvar );
else
{
setdvar( dvar, def );
return def;
}
}
set_orient_mode( mode, val1 )
{
/#
if ( level.dog_debug_orient == self getentnum() )
{
if ( isdefined( val1 ) )
println( "DOG: Setting orient mode: " + mode + " " + val1 + " " + gettime() );
else
println( "DOG: Setting orient mode: " + mode + " " + gettime() );
}
#/
if ( isdefined( val1 ) )
self orientmode( mode, val1 );
else
self orientmode( mode );
}
debug_anim_print( text )
{
/#
if ( level.dog_debug_anims )
println( text + " " + gettime() );
if ( level.dog_debug_anims_ent == self getentnum() )
println( text + " " + gettime() );
#/
}
debug_turn_print( text, line )
{
/#
if ( level.dog_debug_turns == self getentnum() )
{
duration = 200;
currentyawcolor = ( 1, 1, 1 );
lookaheadyawcolor = ( 1, 0, 0 );
desiredyawcolor = ( 1, 1, 0 );
currentyaw = angleclamp180( self.angles[1] );
desiredyaw = angleclamp180( self.desiredangle );
lookaheaddir = self.lookaheaddir;
lookaheadangles = vectortoangles( lookaheaddir );
lookaheadyaw = angleclamp180( lookaheadangles[1] );
println( text + " " + gettime() + " cur: " + currentyaw + " look: " + lookaheadyaw + " desired: " + desiredyaw );
}
#/
}
debug_allow_movement()
{
/#
return anim_get_dvar_int( "debug_dog_allow_movement", "1" );
#/
return 1;
}
debug_allow_combat()
{
/#
return anim_get_dvar_int( "debug_dog_allow_combat", "1" );
#/
return 1;
}
current_yaw_line_debug( duration )
{
/#
currentyawcolor = [];
currentyawcolor[0] = ( 0, 0, 1 );
currentyawcolor[1] = ( 1, 0, 1 );
current_color_index = 0;
start_time = gettime();
if ( !isdefined( level.lastdebugheight ) )
level.lastdebugheight = 15;
while ( gettime() - start_time < 1000 )
{
pos1 = ( self.origin[0], self.origin[1], self.origin[2] + level.lastdebugheight );
pos2 = pos1 + vectorscale( anglestoforward( self.angles ), ( current_color_index + 1 ) * 10 );
line( pos1, pos2, currentyawcolor[current_color_index], 0.3, 1, duration );
current_color_index = ( current_color_index + 1 ) % currentyawcolor.size;
wait 0.05;
}
if ( level.lastdebugheight == 15 )
level.lastdebugheight = 30;
else
level.lastdebugheight = 15;
#/
}
getanimdirection( damageyaw )
{
if ( damageyaw > 135 || damageyaw <= -135 )
return "front";
else if ( damageyaw > 45 && damageyaw <= 135 )
return "right";
else if ( damageyaw > -45 && damageyaw <= 45 )
return "back";
else
return "left";
return "front";
}
setfootstepeffect( name, fx )
{
assert( isdefined( name ), "Need to define the footstep surface type." );
assert( isdefined( fx ), "Need to define the mud footstep effect." );
if ( !isdefined( anim.optionalstepeffects ) )
anim.optionalstepeffects = [];
anim.optionalstepeffects[anim.optionalstepeffects.size] = name;
level._effect["step_" + name] = fx;
}

View File

@ -229,17 +229,11 @@ bot_count_enemy_bots( friend_team )
bot_choose_comp_stomp_team()
{
host = gethostplayerforbots();
/#
assert( isdefined( host ) );
#/
teamkeys = getarraykeys( level.teams );
/#
assert( teamkeys.size == 2 );
#/
enemy_team = host.pers["team"];
/#
assert( isdefined( enemy_team ) && enemy_team != "spectator" );
#/
return getotherteam( enemy_team );
}
@ -438,9 +432,7 @@ bot_local_think()
{
wait 5;
host = gethostplayerforbots();
/#
assert( isdefined( host ) );
#/
host_team = host.team;
if ( !isdefined( host_team ) || host_team == "spectator" )
@ -562,10 +554,8 @@ bot_choose_class()
{
self notify( "menuresponse", "changeclass", bot_classes[i] );
return;
continue;
}
if ( sidearm == "smaw_mp" )
else if ( sidearm == "smaw_mp" )
{
bot_classes[bot_classes.size] = bot_classes[i];
bot_classes[bot_classes.size] = bot_classes[i];
@ -1008,9 +998,7 @@ bot_update_crouch()
if ( dist > 0 )
{
dir = self getlookaheaddir();
/#
assert( isdefined( dir ) );
#/
dir = vectorscale( dir, dist );
start = self.origin + vectorscale( ( 0, 0, 1 ), 70.0 );
end = start + dir;
@ -1068,11 +1056,8 @@ bot_has_radar()
return isdefined( self.hasspyplane ) && self.hasspyplane || isdefined( self.hassatellite ) && self.hassatellite;
}
bot_get_enemies( on_radar )
bot_get_enemies( on_radar = 0 )
{
if ( !isdefined( on_radar ) )
on_radar = 0;
enemies = self getenemies( 1 );
/#
for ( i = 0; i < enemies.size; i++ )

View File

@ -608,11 +608,8 @@ threat_is_ai_tank()
return isdefined( ent ) && isdefined( ent.targetname ) && ent.targetname == "talon";
}
threat_is_qrdrone( ent )
threat_is_qrdrone( ent = self.bot.threat.entity )
{
if ( !isdefined( ent ) )
ent = self.bot.threat.entity;
return isdefined( ent ) && isdefined( ent.helitype ) && ent.helitype == "qrdrone";
}

View File

@ -316,9 +316,8 @@ bot_patrol_flag()
return;
nodes = getvisiblenodes( nearest );
/#
assert( nodes.size );
#/
for ( i = randomint( nodes.size ); i < nodes.size; i++ )
{
if ( self maps\mp\bots\_bot::bot_friend_goal_in_radius( "ctf_flag_patrol", nodes[i].origin, 256 ) == 0 )
@ -334,9 +333,7 @@ base_nearest_node( flag )
{
home = flag ctf_flag_get_home();
nodes = getnodesinradiussorted( home, 256, 0 );
/#
assert( nodes.size );
#/
return nodes[0];
}

View File

@ -40,10 +40,8 @@ bot_dem_attack_think()
{
self.goal_flag = zone;
break;
continue;
}
if ( randomint( 100 ) < 50 )
else if ( randomint( 100 ) < 50 )
{
self.goal_flag = zone;
break;
@ -85,10 +83,8 @@ bot_dem_defend_think()
{
self.goal_flag = zone;
break;
continue;
}
if ( randomint( 100 ) < 50 )
else if ( randomint( 100 ) < 50 )
{
self.goal_flag = zone;
break;

View File

@ -59,9 +59,8 @@ bot_move_to_flag( flag )
nodes = getnodesinradius( flag.origin, flag.radius, 0, 32 );
else
nodes = getnodesinradius( flag.origin, flag.radius, 0 );
/#
assert( nodes.size );
#/
node = random( nodes );
self addgoal( node, 24, 3, "dom_flag" );
}
@ -239,9 +238,8 @@ bot_capture_flag( flag )
dom_is_game_start()
{
/#
assert( isdefined( level.flags ) );
#/
foreach ( flag in level.flags )
{
if ( flag getflagteam() != "neutral" )
@ -259,9 +257,7 @@ dom_get_closest_flag()
dom_get_weighted_flag( owner )
{
/#
assert( isdefined( level.flags ) );
#/
best = undefined;
distsq = 9999999;
@ -284,9 +280,7 @@ dom_get_weighted_flag( owner )
dom_get_weighted_enemy_flag( team )
{
/#
assert( isdefined( level.flags ) );
#/
best = undefined;
distsq = 9999999;
@ -331,9 +325,7 @@ dom_has_two_flags( team )
dom_get_weighted_contested_flag( team )
{
/#
assert( isdefined( level.flags ) );
#/
best = undefined;
distsq = 9999999;
@ -356,9 +348,7 @@ dom_get_weighted_contested_flag( team )
dom_get_random_flag( owner )
{
/#
assert( isdefined( level.flags ) );
#/
flagindex = randomintrange( 0, level.flags.size );
if ( !isdefined( owner ) )

View File

@ -151,9 +151,8 @@ bot_patrol_hq()
}
nodes = getvisiblenodes( nearest );
/#
assert( nodes.size );
#/
for ( i = randomint( nodes.size ); i < nodes.size; i++ )
{
if ( self maps\mp\bots\_bot::bot_friend_goal_in_radius( "hq_radio", nodes[i].origin, 128 ) == 0 )

View File

@ -283,8 +283,6 @@ bot_hill_tactical_insertion()
hill_nearest_node()
{
nodes = getnodesinradiussorted( level.zone.gameobject.curorigin, 256, 0 );
/#
assert( nodes.size );
#/
return nodes[0];
}

View File

@ -14,9 +14,7 @@ bot_sd_think()
if ( !isdefined( zone.nearest_node ) )
{
nodes = getnodesinradiussorted( zone.trigger.origin, 256, 0 );
/#
assert( nodes.size );
#/
zone.nearest_node = nodes[0];
}
}

View File

@ -1,5 +1,10 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_globallogic;
#include maps\mp\killstreaks\_killstreaks;
init()
{
@ -8,12 +13,8 @@ init()
foreach ( team in level.teams )
{
/#
assert( isdefined( level.teamprefix[team] ) );
#/
/#
assert( isdefined( level.teamprefix[team] ) );
#/
level.isteamspeaking[team] = 0;
level.speakers[team] = [];
}

View File

@ -0,0 +1,210 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include maps\mp\_utility;
#include maps\mp\_audio;
#include maps\mp\gametypes\_globallogic;
#include maps\mp\gametypes\_globallogic_player;
#include maps\mp\gametypes\_globallogic_actor;
#include maps\mp\gametypes\_globallogic_vehicle;
#include maps\mp\gametypes\_hostmigration;
codecallback_startgametype()
{
if ( !isdefined( level.gametypestarted ) || !level.gametypestarted )
{
[[ level.callbackstartgametype ]]();
level.gametypestarted = 1;
}
}
codecallback_finalizeinitialization()
{
maps\mp\_utility::callback( "on_finalize_initialization" );
}
codecallback_playerconnect()
{
self endon( "disconnect" );
self thread maps\mp\_audio::monitor_player_sprint();
[[ level.callbackplayerconnect ]]();
}
codecallback_playerdisconnect()
{
self notify( "disconnect" );
level notify( "disconnect", self );
client_num = self getentitynumber();
[[ level.callbackplayerdisconnect ]]();
}
codecallback_hostmigration()
{
/#
println( "****CodeCallback_HostMigration****" );
#/
[[ level.callbackhostmigration ]]();
}
codecallback_hostmigrationsave()
{
/#
println( "****CodeCallback_HostMigrationSave****" );
#/
[[ level.callbackhostmigrationsave ]]();
}
codecallback_playermigrated()
{
/#
println( "****CodeCallback_PlayerMigrated****" );
#/
[[ level.callbackplayermigrated ]]();
}
codecallback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex )
{
self endon( "disconnect" );
[[ level.callbackplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex );
}
codecallback_playerkilled( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration )
{
self endon( "disconnect" );
[[ level.callbackplayerkilled ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration );
}
codecallback_playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration )
{
self endon( "disconnect" );
[[ level.callbackplayerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration );
}
codecallback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit )
{
self endon( "disconnect" );
[[ level.callbackplayermelee ]]( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit );
}
codecallback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex )
{
[[ level.callbackactordamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex );
}
codecallback_actorkilled( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset )
{
[[ level.callbackactorkilled ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset );
}
codecallback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, damagefromunderneath, modelindex, partname )
{
[[ level.callbackvehicledamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, damagefromunderneath, modelindex, partname );
}
codecallback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, timeoffset )
{
[[ level.callbackvehicleradiusdamage ]]( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, timeoffset );
}
codecallback_faceeventnotify( notify_msg, ent )
{
if ( isdefined( ent ) && isdefined( ent.do_face_anims ) && ent.do_face_anims )
{
if ( isdefined( level.face_event_handler ) && isdefined( level.face_event_handler.events[notify_msg] ) )
ent sendfaceevent( level.face_event_handler.events[notify_msg] );
}
}
codecallback_menuresponse( action, arg )
{
if ( !isdefined( level.menuresponsequeue ) )
{
level.menuresponsequeue = [];
level thread menuresponsequeuepump();
}
index = level.menuresponsequeue.size;
level.menuresponsequeue[index] = spawnstruct();
level.menuresponsequeue[index].action = action;
level.menuresponsequeue[index].arg = arg;
level.menuresponsequeue[index].ent = self;
level notify( "menuresponse_queue" );
}
menuresponsequeuepump()
{
while ( true )
{
level waittill( "menuresponse_queue" );
do
{
level.menuresponsequeue[0].ent notify( "menuresponse", level.menuresponsequeue[0].action, level.menuresponsequeue[0].arg );
arrayremoveindex( level.menuresponsequeue, 0, 0 );
wait 0.05;
}
while ( level.menuresponsequeue.size > 0 );
}
}
setupcallbacks()
{
setdefaultcallbacks();
level.idflags_radius = 1;
level.idflags_no_armor = 2;
level.idflags_no_knockback = 4;
level.idflags_penetration = 8;
level.idflags_destructible_entity = 16;
level.idflags_shield_explosive_impact = 32;
level.idflags_shield_explosive_impact_huge = 64;
level.idflags_shield_explosive_splash = 128;
level.idflags_no_team_protection = 256;
level.idflags_no_protection = 512;
level.idflags_passthru = 1024;
}
setdefaultcallbacks()
{
level.callbackstartgametype = maps\mp\gametypes\_globallogic::callback_startgametype;
level.callbackplayerconnect = maps\mp\gametypes\_globallogic_player::callback_playerconnect;
level.callbackplayerdisconnect = maps\mp\gametypes\_globallogic_player::callback_playerdisconnect;
level.callbackplayerdamage = maps\mp\gametypes\_globallogic_player::callback_playerdamage;
level.callbackplayerkilled = maps\mp\gametypes\_globallogic_player::callback_playerkilled;
level.callbackplayermelee = maps\mp\gametypes\_globallogic_player::callback_playermelee;
level.callbackplayerlaststand = maps\mp\gametypes\_globallogic_player::callback_playerlaststand;
level.callbackactordamage = maps\mp\gametypes\_globallogic_actor::callback_actordamage;
level.callbackactorkilled = maps\mp\gametypes\_globallogic_actor::callback_actorkilled;
level.callbackvehicledamage = maps\mp\gametypes\_globallogic_vehicle::callback_vehicledamage;
level.callbackvehicleradiusdamage = maps\mp\gametypes\_globallogic_vehicle::callback_vehicleradiusdamage;
level.callbackplayermigrated = maps\mp\gametypes\_globallogic_player::callback_playermigrated;
level.callbackhostmigration = maps\mp\gametypes\_hostmigration::callback_hostmigration;
level.callbackhostmigrationsave = maps\mp\gametypes\_hostmigration::callback_hostmigrationsave;
}
abortlevel()
{
/#
println( "ERROR: Aborting level - gametype is not supported" );
#/
level.callbackstartgametype = ::callbackvoid;
level.callbackplayerconnect = ::callbackvoid;
level.callbackplayerdisconnect = ::callbackvoid;
level.callbackplayerdamage = ::callbackvoid;
level.callbackplayerkilled = ::callbackvoid;
level.callbackplayerlaststand = ::callbackvoid;
level.callbackplayermelee = ::callbackvoid;
level.callbackactordamage = ::callbackvoid;
level.callbackactorkilled = ::callbackvoid;
level.callbackvehicledamage = ::callbackvoid;
setdvar( "g_gametype", "dm" );
exitlevel( 0 );
}
codecallback_glasssmash( pos, dir )
{
level notify( "glass_smash", pos, dir );
}
callbackvoid()
{
}

View File

@ -1,5 +1,14 @@
// T6 GSC SOURCE
// Decompiled by https://github.com/xensik/gsc-tool
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_tweakables;
#include maps\mp\killstreaks\_killstreaks;
#include maps\mp\killstreaks\_killstreak_weapons;
#include maps\mp\gametypes\_class;
#include maps\mp\teams\_teams;
#include maps\mp\gametypes\_dev;
#include maps\mp\_challenges;
init()
{
@ -199,11 +208,7 @@ weapon_class_register( weapon, weapon_type )
else if ( weapon_type == "weapon_rifle" )
level.inventory_array[weapon] = 1;
else
{
/#
assert( 0, "Weapon group info is missing from statsTable for: " + weapon_type );
#/
}
}
cac_init()
@ -296,9 +301,7 @@ cac_init()
getclasschoice( response )
{
/#
assert( isdefined( level.classmap[response] ) );
#/
return level.classmap[response];
}
@ -359,9 +362,7 @@ givekillstreaks( classnum )
if ( isdefined( killstreakindex ) && killstreakindex > 0 )
{
/#
assert( isdefined( level.tbl_killstreakdata[killstreakindex] ), "KillStreak #:" + killstreakindex + "'s data is undefined" );
#/
if ( isdefined( level.tbl_killstreakdata[killstreakindex] ) )
{
@ -575,9 +576,7 @@ giveloadout( team, class )
else
{
pixbeginevent( "default class" );
/#
assert( isdefined( self.pers["class"] ), "Player during spawn and loadout got no class!" );
#/
class_num = level.classtoclassnum[class];
self.class_num = class_num;
pixendevent();
@ -667,7 +666,6 @@ giveloadout( team, class )
/#
println( "^5GiveWeapon( " + weapon + " ) -- weapon" );
#/
if ( primaryweapon != "" && primaryweapon != "weapon_null_mp" && primaryweapon != "weapon_null" )
{
if ( self hasperk( "specialty_extraammo" ) )
@ -693,9 +691,7 @@ giveloadout( team, class )
spawnweapon = self.spawnweapon;
self.pers["changed_class"] = 0;
/#
assert( spawnweapon != "" );
#/
self.spawnweapon = spawnweapon;
self.pers["spawnWeapon"] = self.spawnweapon;
self setspawnweapon( spawnweapon );
@ -734,7 +730,6 @@ giveloadout( team, class )
else
grenadetypeprimary = level.weapons["flash"];
}
/#
println( "^5GiveWeapon( " + grenadetypeprimary + " ) -- grenadeTypePrimary" );
#/
@ -817,9 +812,7 @@ setweaponammooverall( weaponname, amount )
{
self setweaponammoclip( weaponname, amount );
diff = amount - self getweaponammoclip( weaponname );
/#
assert( diff >= 0 );
#/
self setweaponammostock( weaponname, diff );
}
}
@ -901,7 +894,6 @@ register_perks()
self setperk( perk );
}
/#
maps\mp\gametypes\_dev::giveextraperks();
#/
@ -952,7 +944,6 @@ cac_modified_vehicle_damage( victim, attacker, damage, meansofdeath, weapon, inf
}
else
final_damage = old_damage;
/#
if ( getdvarint( _hash_5ABA6445 ) )
println( "Perk/> Damage Factor: " + final_damage / old_damage + " - Pre Damage: " + old_damage + " - Post Damage: " + final_damage );
@ -962,15 +953,9 @@ cac_modified_vehicle_damage( victim, attacker, damage, meansofdeath, weapon, inf
cac_modified_damage( victim, attacker, damage, mod, weapon, inflictor, hitloc )
{
/#
assert( isdefined( victim ) );
#/
/#
assert( isdefined( attacker ) );
#/
/#
assert( isplayer( victim ) );
#/
if ( victim == attacker )
return damage;
@ -980,7 +965,6 @@ cac_modified_damage( victim, attacker, damage, mod, weapon, inflictor, hitloc )
if ( damage <= 0 )
return damage;
/#
debug = 0;
@ -1046,7 +1030,6 @@ cac_modified_damage( victim, attacker, damage, mod, weapon, inflictor, hitloc )
println( "Perk/> " + victim.name + "'s flak jacket decreased " + attacker.name + "'s grenade damage" );
#/
}
/#
victim.cac_debug_damage_type = tolower( mod );
victim.cac_debug_original_damage = damage;

View File

@ -603,9 +603,7 @@ coptermove()
}
else
{
/#
assert( movingvertically );
#/
thisdest = ( self.origin[0], self.origin[1], desiredz );
}

Some files were not shown because too many files have changed in this diff Show More