iw4x-rawfiles/iw4x/iw4x_00/maps/mp/mp_nuked.gsc

139 lines
3.2 KiB
Plaintext

#include common_scripts\utility;
main()
{
maps\mp\_load::main();
maps\mp\mp_nuked_fx::main();
//setexpfog(874.792, 2740, 0.776471, 0.588235, 0.47451, 0.5, 0, 0.803922, 0.717647, 0.6, (-0.432962, -0.395847, 0.809845), 0, 61.0525, 5.68252);
setexpfog(1074.792, 3540, 0.934471, 0.838235, 0.694513, 0.5, 0, 0.803922, 0.717647, 0.6, (-0.432962, -0.395847, 0.809845), 0, 61.0525, 5.68252);
ambientPlay( "ambient_mp_desert" );
game[ "attackers" ] = "allies";
game[ "defenders" ] = "axis";
maps\mp\_compass::setupMiniMap( "compass_map_mp_nuked" );
//setdvar( "compassmaxrange", "4000" );
nuked_doomsday_clock_init();
level thread nuked_population_sign_think();
array_thread( getentarray( "compassTriggers", "targetname" ), ::compass_triggers_think );
}
self_delete()
{
self delete();
}
compass_triggers_think()
{
assertex( isdefined( self.script_noteworthy ), "compassTrigger at " + self.origin + " needs to have a script_noteworthy with the name of the minimap to use" );
while( true )
{
wait( 1 );
self waittill( "trigger" );
maps\mp\_compass::setupMiniMap( self.script_noteworthy );
}
}
createSpawnpoint( classname, origin, yaw )
{
spawnpoint = spawn( "script_origin", origin );
spawnpoint.angles = (0,yaw,0);
if ( !isdefined( level.extraspawnpoints ) )
level.extraspawnpoints = [];
if ( !isdefined( level.extraspawnpoints[classname] ) )
level.extraspawnpoints[classname] = [];
level.extraspawnpoints[classname][ level.extraspawnpoints[classname].size ] = spawnpoint;
}
nuked_population_sign_think()
{
tens_model = GetEnt( "counter_tens", "targetname" );
ones_model = GetEnt( "counter_ones", "targetname" );
step = ( 360 / 10 ); // 10 digits (0-9) on the dial
// put the dials at 0
ones = 0;
tens = 0;
tens_model RotateRoll( step, 0.05 );
ones_model RotateRoll( step, 0.05 );
for ( ;; )
{
wait( 1 );
for ( ;; )
{
num_players = level.players.size;
dial = ones + ( tens * 10 );
if ( num_players < dial )
{
ones--;
time = 0.5;
if ( ones < 0 )
{
ones = 9;
tens_model RotateRoll( 0 - step, time );
tens--;
}
ones_model RotateRoll( 0 - step, time );
ones_model waittill( "rotatedone" );
}
else if ( num_players > dial )
{
ones++;
time = 0.5;
if ( ones > 9 )
{
ones = 0;
tens_model RotateRoll( step, time );
tens++;
}
ones_model RotateRoll( step, time );
ones_model waittill( "rotatedone" );
}
else
{
break;
}
}
}
}
nuked_doomsday_clock_init()
{
min_hand_model = GetEnt( "clock_min_hand", "targetname" );
sec_hand_model = GetEnt( "clock_sec_hand", "targetname" );
start_angle = 318;
min_hand_model RotatePitch( start_angle, 0.05 );
min_hand_model waittill( "rotatedone" );
if ( level.timelimit > 0 )
{
min_hand_model RotatePitch( 360 - start_angle, level.timelimit * 60 );
sec_hand_model RotatePitch( 360 * level.timelimit, level.timelimit * 60 );
}
else
{
sec_hand_model thread nuked_doomsday_clock_seconds_think();
}
}
nuked_doomsday_clock_seconds_think()
{
for ( ;; )
{
self RotatePitch( 360, 60 );
self waittill( "rotatedone" );
}
}