mirror of
https://github.com/ineedbots/t5_bot_warfare.git
synced 2025-06-26 14:22:02 +00:00
1.03
This commit is contained in:
716
mods/mp_patch/maps/mp/mp_cosmodrome.gsc
Normal file
716
mods/mp_patch/maps/mp/mp_cosmodrome.gsc
Normal file
@ -0,0 +1,716 @@
|
||||
#include maps\mp\_utility;
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_events;
|
||||
|
||||
main()
|
||||
{
|
||||
precachemodel("tag_origin");
|
||||
|
||||
level.onSpawnIntermission = ::cosmodrome_intermission;
|
||||
|
||||
/#
|
||||
level thread devgui_cosmodrome();
|
||||
execdevgui( "devgui_mp_cosmodrome" );
|
||||
#/
|
||||
|
||||
//needs to be first for create fx
|
||||
maps\mp\mp_cosmodrome_fx::main();
|
||||
|
||||
precachemodel("collision_wall_128x128x10");
|
||||
precachemodel("collision_geo_128x128x128");
|
||||
precachemodel("collision_wall_512x512x10");
|
||||
precachemodel("collision_geo_mc_8x560x190");
|
||||
precachemodel("collision_geo_mc_4x52x190");
|
||||
precachemodel("collision_geo_mc_4x156x190");
|
||||
|
||||
maps\mp\_load::main();
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome_wager");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_compass::setupMiniMap("compass_map_mp_cosmodrome");
|
||||
}
|
||||
maps\mp\mp_cosmodrome_amb::main();
|
||||
|
||||
// If the team nationalites change in this file,
|
||||
// you must update the team nationality in the level's csc file as well!
|
||||
maps\mp\gametypes\_teamset_urbanspecops::level_init();
|
||||
|
||||
level thread rocket_arm_think();
|
||||
level thread rocket_think();
|
||||
level thread radar_dish_think();
|
||||
level thread distant_rockets_think();
|
||||
|
||||
// spawn collision to prevent players from sneaking under a small area by the rocket
|
||||
spawncollision("collision_wall_128x128x10","collider",(1558, -179, -362), (0, 225, 0));
|
||||
|
||||
// spawn collision to prevent players from sneaking inside 2 vents
|
||||
spawncollision("collision_wall_128x128x10","collider",(-699, 1457, -60), (0, 270, 0));
|
||||
spawncollision("collision_wall_128x128x10","collider",(-699, 1329, -60), (0, 270, 0));
|
||||
|
||||
// spawn collision to prevent players from strafe jumping onto pipes.
|
||||
spawncollision("collision_geo_128x128x128","collider",(1408.5, 863, -126.5), (0, 0, 0));
|
||||
spawncollision("collision_geo_128x128x128","collider",(1536.5, 863, -126.5), (0, 0, 0));
|
||||
|
||||
// spawn collision to prevent players from jumping up onto walls by the rocket
|
||||
spawncollision("collision_wall_512x512x10","collider",(1224, -160, 240), (0, 0, 0));
|
||||
spawncollision("collision_wall_512x512x10","collider",(1348, -160, 240), (0, 0, 0));
|
||||
|
||||
// Spawn collision to keep players from walking onto a small ledge of collision on the green girders.
|
||||
spawncollision("collision_wall_128x128x10","collider",(1911, 1018, -82), (0, 270, 0));
|
||||
|
||||
// not sure if this is the best way to determine that the map has been trimmed down
|
||||
if ( isSmallMapVersion() )
|
||||
{
|
||||
//spawning missile clip collision to catch grenades, rockets and crossbow bolts on the wager match boundary
|
||||
spawncollision("collision_geo_mc_8x560x190","collider",(-393, 396.5, -72), (0, 270, 0));
|
||||
spawncollision("collision_geo_mc_4x52x190","collider",(-358, 676.5, -74), (0, 0, 0));
|
||||
spawncollision("collision_geo_mc_4x156x190","collider",(-328.5, 758, -74), (0, 270, 0));
|
||||
}
|
||||
|
||||
// enable new spawning system
|
||||
maps\mp\gametypes\_spawning::level_use_unified_spawning(true);
|
||||
|
||||
SetDvar( "scr_spawn_enemy_influencer_radius", 1700 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_radius", 1300 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_timeout_seconds", 10 );
|
||||
SetDvar( "scr_spawn_dead_friend_influencer_count", 7 );
|
||||
}
|
||||
|
||||
isSmallMapVersion()
|
||||
{
|
||||
if ( GetDvarInt( #"xblive_wagermatch" ) == 1 )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
gametype = getDvar( #"g_gametype" );
|
||||
if ( gametype == "oic" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "hlnd" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "shrp" )
|
||||
return true;
|
||||
|
||||
if ( gametype == "gun" )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
cosmodrome_intermission()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
|
||||
|
||||
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
|
||||
|
||||
if ( !IsDefined( rocket_base ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( IsDefined( level.rocket_camera ) && level.rocket_camera == true )
|
||||
{
|
||||
lookat = Spawn( "script_model", rocket_base.origin + ( 0, 0, 1024 ) );
|
||||
lookat SetModel( "tag_origin" );
|
||||
lookat LinkTo( rocket_base );
|
||||
|
||||
self CameraSetPosition( self.origin );
|
||||
self CameraSetLookAt( lookat );
|
||||
self CameraActivate( true );
|
||||
}
|
||||
}
|
||||
|
||||
rocket_arm_think()
|
||||
{
|
||||
start_pitch = set_dvar_int_if_unset( "scr_rocket_arm_pitch", "90" );
|
||||
rotate_time = set_dvar_int_if_unset( "scr_rocket_arm_rotate_secs", "30" );
|
||||
wait_time = set_dvar_int_if_unset( "scr_rocket_arm_wait_secs", "5" );
|
||||
|
||||
arm_base = GetEnt( "cosmodrome_rocket_arm_base", "targetname" );
|
||||
AssertEx( IsDefined( arm_base ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm_base'" );
|
||||
|
||||
arm = GetEntArray( "cosmodrome_rocket_arm", "targetname" );
|
||||
AssertEx( IsDefined( arm ), "Unable to find entity with targetname: 'cosmodrome_rocket_arm'" );
|
||||
|
||||
for ( i = 0; i < arm.size; i++ )
|
||||
{
|
||||
arm[i] LinkTo( arm_base );
|
||||
}
|
||||
|
||||
if ( !IsDefined( arm_base.angles_target ) )
|
||||
{
|
||||
arm_base.angles_target = arm_base.angles;
|
||||
}
|
||||
|
||||
arm_base.angles = ( start_pitch, arm_base.angles[1], arm_base.angles[2] );
|
||||
//IPrintLnBold ("rocket is MOVING?");
|
||||
|
||||
wait ( wait_time );
|
||||
|
||||
//IPrintLnBold ("start arm sound");
|
||||
arm_base playloopsound("evt_rocket_lp",.2);
|
||||
arm_base PlaySound ("evt_rocket_start");
|
||||
arm_base RotateTo( arm_base.angles_target, rotate_time );
|
||||
|
||||
|
||||
wait(rotate_time);
|
||||
arm_base stoploopsound(.3);
|
||||
arm_base PlaySound ("evt_rocket_end");
|
||||
// IPrintLnBold (rotate_time);
|
||||
// stop loppsound with fade
|
||||
// play oneshot attach
|
||||
// stop loop sound
|
||||
}
|
||||
|
||||
rocket_prelaunch( rocket_base )
|
||||
{
|
||||
//this will play vo for countdown and delay the launch by 10 seconds
|
||||
snd_countdown ();
|
||||
|
||||
// move the claw arms away from the rocket
|
||||
claw_r = GetEntArray("claw_r", "targetname");
|
||||
claw_l = GetEntArray("claw_l", "targetname");
|
||||
claw_arm_r = GetEntArray("claw_arm_r", "targetname");
|
||||
claw_arm_l = GetEntArray("claw_arm_l", "targetname");
|
||||
mover_r = GetEnt("claw_r_mover", "targetname");
|
||||
mover_l = GetEnt("claw_l_mover", "targetname");
|
||||
move_here_r = GetEnt("claw_r_move_here", "targetname");
|
||||
move_here_l = GetEnt("claw_l_move_here", "targetname");
|
||||
|
||||
for(i = 0 ; i < claw_r.size; i++)
|
||||
{
|
||||
claw_r[i] LinkTo(mover_r);
|
||||
}
|
||||
for(i = 0 ; i < claw_l.size; i++)
|
||||
{
|
||||
claw_l[i] LinkTo(mover_l);
|
||||
}
|
||||
mover_r MoveTo(move_here_r.origin, 3.0);
|
||||
mover_l MoveTo(move_here_l.origin, 3.0);
|
||||
|
||||
// play sound on the arms
|
||||
thread snd_rocket_gantry ( mover_r, mover_l);
|
||||
|
||||
wait(4.0);
|
||||
for(i = 0; i < claw_r.size; i++)
|
||||
{
|
||||
claw_r[i] Unlink();
|
||||
claw_r[i] LinkTo(move_here_r);
|
||||
}
|
||||
for(i = 0; i < claw_l.size; i++)
|
||||
{
|
||||
claw_l[i] Unlink();
|
||||
claw_l[i] LinkTo(move_here_l);
|
||||
}
|
||||
|
||||
for(i = 0; i < claw_arm_r.size; i++)
|
||||
{
|
||||
claw_arm_r[i] LinkTo(move_here_r);
|
||||
}
|
||||
for(i = 0; i < claw_arm_l.size; i++)
|
||||
{
|
||||
claw_arm_l[i] LinkTo(move_here_l);
|
||||
}
|
||||
move_here_r RotateYaw(75, 3.0);
|
||||
move_here_l RotateYaw(-75, 3.0);
|
||||
|
||||
// wait to launch
|
||||
rocket_base playsound ("evt_cosmo_launch");
|
||||
playsoundatposition("evt_cosmo_air_distf",(0,0,0));
|
||||
playsoundatposition("evt_cosmo_air_distr",(0,0,0));
|
||||
|
||||
wait(5);
|
||||
}
|
||||
|
||||
Rocket_Think()
|
||||
{
|
||||
level.const_fx_exploder_rocket_coolant = 2;
|
||||
|
||||
level.rocket_camera = false;
|
||||
flag_init( "rocket_launch_grenade_detonate" );
|
||||
|
||||
rocket = GetEntArray( "cosmodrome_rocket", "targetname" );
|
||||
AssertEx( IsDefined( rocket ), "Unable to find entity with targetname: 'cosmodrome_rocket'" );
|
||||
array_thread( rocket, ::rocket_sticky_grenade_think );
|
||||
|
||||
rocket_base = GetEnt( "cosmodrome_rocket_base", "script_noteworthy" );
|
||||
AssertEx( IsDefined( rocket_base ), "Unable to find entity with script_noteworthy: 'cosmodrome_rocket_base'" );
|
||||
level.rocket_base = rocket_base;
|
||||
|
||||
rocket_damage_triggers = GetEntArray( "cosmodrome_rocket_damage_trigger", "targetname" );
|
||||
rocket_collision = GetEntArray( "rocket_collision", "targetname" );
|
||||
|
||||
killCamEnt = spawn( "script_model", rocket_base.origin );
|
||||
rocket_base.killCamEnt = killCamEnt;
|
||||
killCamEnt.startTime = gettime();
|
||||
killCamEnt linkTo( rocket_base, "tag_origin", (50,0,-1000), ( 0,0,0 ) );
|
||||
|
||||
|
||||
rocket_timer_init();
|
||||
|
||||
wait( 3 );
|
||||
exploder( level.const_fx_exploder_rocket_coolant );
|
||||
|
||||
event = level waittill_any_return( "rocket_launch", "rocket_launch_skip_prelaunch" );
|
||||
|
||||
if ( event == "rocket_launch" )
|
||||
{
|
||||
rocket_prelaunch( rocket_base );
|
||||
}
|
||||
|
||||
level.rocket_camera = true;
|
||||
|
||||
// pre-launch fx
|
||||
earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
|
||||
earthquake( .25, 4, earthquake_origin, 4096 );
|
||||
|
||||
//play 3d launch aounds on rocket_base, and 2 st 2d sounds
|
||||
|
||||
|
||||
wait( 3.5 );
|
||||
flag_set( "rocket_launch_grenade_detonate" );
|
||||
|
||||
// launch fx
|
||||
earthquake( .35, 15, earthquake_origin, 4096 );
|
||||
array_thread( rocket_damage_triggers, ::rocket_damage_think );
|
||||
array_thread( rocket_damage_triggers, ::destroy_greandes_in_trigger );
|
||||
rocket_base SetClientFlag( level.const_flag_rocket_fx );
|
||||
exploder_stop( level.const_fx_exploder_rocket_coolant );
|
||||
|
||||
// move pieces
|
||||
array_thread( rocket, ::rocket_move );
|
||||
|
||||
// stop damage
|
||||
wait( 6 );
|
||||
level notify( "rocket_damage_stop" );
|
||||
|
||||
wait( 2 );
|
||||
level.rocket_camera = false;
|
||||
|
||||
for ( i = 0; i < rocket_damage_triggers.size; i++ )
|
||||
{
|
||||
rocket_damage_triggers[i] delete();
|
||||
}
|
||||
|
||||
for ( i = 0; i < rocket_collision.size; i++ )
|
||||
{
|
||||
rocket_collision[i] delete();
|
||||
}
|
||||
}
|
||||
|
||||
snd_rocket_gantry ( orignr, originl)
|
||||
{
|
||||
orignr playsound ("evt_gantry_disengage");
|
||||
orignr playsound ("evt_rocket_start");
|
||||
// originl playsound ("evt_rocket_start");
|
||||
}
|
||||
snd_countdown()
|
||||
{
|
||||
//wait 2;
|
||||
countdownl = spawn("script_origin", (480, -1256, 224));
|
||||
countdownr = spawn("script_origin", (152, 1488, 224));
|
||||
|
||||
clientnotify ( "snd_rocket_launch" );
|
||||
|
||||
|
||||
if( IsDefined(countdownl)&& IsDefined(countdownr) )
|
||||
{
|
||||
countdownl playsound( "vox_mp_com_1a_rua1" );
|
||||
wait .112;
|
||||
countdownr playsound( "vox_mp_com_1a_rua1" );
|
||||
wait 16.5;
|
||||
|
||||
thread snd_launch ();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
snd_launch ()
|
||||
{
|
||||
countdownl = spawn("script_origin", (480, -1256, 224));
|
||||
countdownr = spawn("script_origin", (152, 1488, 224));
|
||||
wait 2;
|
||||
countdownl playsound( "vox_mp_com_2a_rua1" );
|
||||
wait .112;
|
||||
countdownr playsound( "vox_mp_com_2a_rua1" );
|
||||
|
||||
}
|
||||
rocket_sticky_grenade_think()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "grenade_stuck", grenade_ent );
|
||||
grenade_ent thread sticky_grenade_think();
|
||||
}
|
||||
}
|
||||
|
||||
sticky_grenade_think()
|
||||
{
|
||||
self endon( "death" );
|
||||
level endon( "rocket_damage_stop" );
|
||||
|
||||
flag_wait( "rocket_launch_grenade_detonate" );
|
||||
wait( 0.05 );
|
||||
|
||||
self Detonate();
|
||||
}
|
||||
|
||||
//Self is the trigger. This loops to make sure any grenade or claymore that's touching the damage trigger explodes.
|
||||
destroy_greandes_in_trigger()
|
||||
{
|
||||
self endon( "death" );
|
||||
level endon( "rocket_damage_stop" );
|
||||
|
||||
flag_wait( "rocket_launch_grenade_detonate" );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
grenades = GetEntArray( "grenade", "classname" );
|
||||
|
||||
for ( i = 0; i < grenades.size; i++ )
|
||||
{
|
||||
if( grenades[i] IsTouching( self ))
|
||||
{
|
||||
grenades[i] Detonate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
rocket_timer_init()
|
||||
{
|
||||
level waittill( "prematch_over" );
|
||||
|
||||
event = set_dvar_if_unset( "scr_rocket_event", "end" );
|
||||
trigger1 = set_dvar_int_if_unset( "scr_rocket_event_trigger1", "0" );
|
||||
trigger2 = set_dvar_int_if_unset( "scr_rocket_event_trigger2", "0" );
|
||||
|
||||
if ( rocket_launch_abort() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( event )
|
||||
{
|
||||
case "end":
|
||||
add_timed_event( 0, "rocket_launch" );
|
||||
add_score_event( level.scorelimit, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(level.scorelimit * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "time":
|
||||
assert( trigger1 >= 0 );
|
||||
add_timed_event( trigger1, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "percent":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger1 <= 100 );
|
||||
|
||||
minutes = ( trigger1 * 0.01 ) * level.timelimit;
|
||||
add_timed_event( minutes * 60, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
|
||||
|
||||
score = ( trigger1 * 0.01 ) * level.scorelimit;
|
||||
add_score_event( score, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(score * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "random_time":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger2 >= 0 );
|
||||
assert( trigger1 < trigger2 );
|
||||
|
||||
time = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
add_timed_event( trigger1, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(trigger1 * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
case "random_percent":
|
||||
assert( trigger1 >= 0 );
|
||||
assert( trigger1 <= 100 );
|
||||
assert( trigger2 >= 0 );
|
||||
assert( trigger2 <= 100 );
|
||||
assert( trigger1 < trigger2 );
|
||||
|
||||
percent = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
minutes = ( percent * 0.01 ) * level.timelimit;
|
||||
add_timed_event( minutes * 60, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_timed_event( int(minutes * 60 * 0.5), "distant_rocket_launch" );
|
||||
|
||||
percent = RandomIntRange( trigger1, trigger2 + 1 );
|
||||
score = ( percent * 0.01 ) * level.scorelimit;
|
||||
add_score_event( score, "rocket_launch" );
|
||||
// AE 11-2-09: putting in the distant rocket timing
|
||||
add_score_event( int(score * 0.5), "distant_rocket_launch" );
|
||||
break;
|
||||
|
||||
default:
|
||||
error( "Unknown event type: '" + event + "' used in dvar 'scr_rocket_event'" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rocket_launch_abort()
|
||||
{
|
||||
launch_abort = set_dvar_int_if_unset( "scr_rocket_event_off", "0" );
|
||||
assert( launch_abort >= 0 );
|
||||
assert( launch_abort <= 100 );
|
||||
|
||||
if ( RandomInt( 101 ) < launch_abort )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
rocket_move()
|
||||
{
|
||||
self MoveTo( self.origin + ( 0, 0, 50000 ), 50, 45 );
|
||||
|
||||
self waittill( "movedone" );
|
||||
self delete();
|
||||
}
|
||||
|
||||
rocket_damage_think()
|
||||
{
|
||||
level endon( "rocket_damage_stop" );
|
||||
damage_interval_secs = 1;
|
||||
|
||||
assert( self.classname == "trigger_radius" );
|
||||
|
||||
/#
|
||||
if ( set_dvar_int_if_unset( "scr_rocket_debug", "0" ) != 0 )
|
||||
{
|
||||
drawcylinder( self.origin, self.radius, self.height, undefined, "rocket_damage_stop" );
|
||||
}
|
||||
#/
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
self waittill( "trigger", ent );
|
||||
|
||||
if(IsPlayer(ent))
|
||||
{
|
||||
player = ent;
|
||||
|
||||
if ( player.sessionstate != "playing" )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !IsDefined( player.rocket_damage_time ) )
|
||||
{
|
||||
player.rocket_damage_time = GetTime();
|
||||
}
|
||||
|
||||
if ( player.rocket_damage_time > GetTime() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
player shellshock( "tabun_gas_mp", damage_interval_secs );
|
||||
player.rocket_damage_time = GetTime() + ( damage_interval_secs * 1000 );
|
||||
player DoDamage( RandomIntRange( 40, 60 ), self.origin, self, level.rocket_base, 0, "MOD_SUICIDE" );
|
||||
}
|
||||
//This kill dogs in the radius trigger
|
||||
else if ( IsAI( ent ))
|
||||
{
|
||||
ent DoDamage( ent.health * 2, ent.origin);
|
||||
}
|
||||
//This kills RC bombs in the radius trigger
|
||||
else if(IsDefined( ent.targetname ) && ent.targetname == "rcbomb" )
|
||||
{
|
||||
//Destroy RC bomb
|
||||
ent maps\mp\_rcbomb::rcbomb_force_explode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
radar_dish_think()
|
||||
{
|
||||
radar_dish = GetEnt( "cosmodrome_radar_dish", "targetname" );
|
||||
AssertEx( IsDefined( radar_dish ), "Unable to find entity with targetname: 'cosmodrome_radar_dish'" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
rotate_time = set_dvar_int_if_unset( "scr_radar_dish_rotate_secs", "30" );
|
||||
|
||||
if ( rotate_time <= 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
radar_dish RotateYaw( 360, rotate_time );
|
||||
radar_dish waittill( "rotatedone" );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
devgui_cosmodrome( cmd )
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
wait( 0.5 );
|
||||
|
||||
devgui_string = GetDvar( #"devgui_notify" );
|
||||
|
||||
switch( devgui_string )
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
|
||||
case "rocket_arm":
|
||||
SetDvar( "scr_rocket_arm_wait_secs", "0" );
|
||||
level thread rocket_arm_think();
|
||||
break;
|
||||
|
||||
default:
|
||||
level notify( devgui_string );
|
||||
break;
|
||||
}
|
||||
|
||||
SetDvar( "devgui_notify", "" );
|
||||
}
|
||||
}
|
||||
|
||||
distant_rockets_think()
|
||||
{
|
||||
// have the rockets in the distance going off
|
||||
|
||||
distant_rocket = GetEntArray( "distant_rocket", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket ), "Unable to find entity with targetname: 'distant_rocket'" );
|
||||
|
||||
distant_rocket_gantry1 = GetEntArray("distant_rocket_gantry1", "targetname");
|
||||
AssertEx( IsDefined( distant_rocket_gantry1 ), "Unable to find entity with targetname: 'distant_rocket_gantry1'" );
|
||||
distant_rocket_gantry2 = GetEntArray("distant_rocket_gantry2", "targetname");
|
||||
AssertEx( IsDefined( distant_rocket_gantry2 ), "Unable to find entity with targetname: 'distant_rocket_gantry2'" );
|
||||
|
||||
distant_rocket_arm1 = GetEntArray( "distant_rocket_arm1", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm1 ), "Unable to find entity with targetname: 'distant_rocket_arm1'" );
|
||||
distant_rocket_arm2 = GetEntArray( "distant_rocket_arm2", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm2 ), "Unable to find entity with targetname: 'distant_rocket_arm2'" );
|
||||
distant_rocket_arm3 = GetEntArray( "distant_rocket_arm3", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm3 ), "Unable to find entity with targetname: 'distant_rocket_arm3'" );
|
||||
distant_rocket_arm4 = GetEntArray( "distant_rocket_arm4", "targetname" );
|
||||
AssertEx( IsDefined( distant_rocket_arm4 ), "Unable to find entity with targetname: 'distant_rocket_arm4'" );
|
||||
|
||||
distant_rocket_engine = GetEnt( "distant_rocket_engine", "script_noteworthy" );
|
||||
AssertEx( IsDefined( distant_rocket_engine ), "Unable to find entity with script_noteworthy: 'distant_rocket_engine'" );
|
||||
distant_rocket_engine SetModel("tag_origin");
|
||||
distant_rocket_engine.angles = (-90, 0, 0);
|
||||
|
||||
wait( 3 );
|
||||
|
||||
level waittill( "distant_rocket_launch" );
|
||||
|
||||
// splay sound on the gantry
|
||||
thread snd_distant_gantry (distant_rocket_engine, distant_rocket_engine);
|
||||
// play sound for arms
|
||||
thread snd_distant_rocket_arm (distant_rocket_engine);
|
||||
|
||||
// move the gantry away from the rocket
|
||||
array_thread( distant_rocket_gantry1, ::distant_rocket_gantry1_move );
|
||||
array_thread( distant_rocket_gantry2, ::distant_rocket_gantry2_move );
|
||||
|
||||
wait(10);
|
||||
|
||||
// move the arms away from the rocket
|
||||
array_thread( distant_rocket_arm1, ::distant_rocket_arm1_move );
|
||||
array_thread( distant_rocket_arm2, ::distant_rocket_arm2_move );
|
||||
array_thread( distant_rocket_arm3, ::distant_rocket_arm3_move );
|
||||
array_thread( distant_rocket_arm4, ::distant_rocket_arm4_move );
|
||||
|
||||
|
||||
|
||||
// wait to launch
|
||||
wait(8);
|
||||
|
||||
// pre-launch fx
|
||||
// TODO: small earthquakes??
|
||||
//earthquake_origin = rocket_base GetTagOrigin( "tag_engine" );
|
||||
//earthquake( .25, 4, earthquake_origin, 4096 );
|
||||
|
||||
// play 3d launch aounds on distant_rocket_engine, and 2 st 2d sounds
|
||||
distant_rocket_engine playsound ("evt_dist_cosmo_launch");
|
||||
//playsoundatposition("evt_dist_cosmo_air_distf",(0,0,0));
|
||||
distant_rocket_engine playsound ("evt_dist_cosmo_air_distf");
|
||||
wait( 3.5 );
|
||||
|
||||
// launch fx
|
||||
//earthquake( .35, 15, earthquake_origin, 4096 );
|
||||
|
||||
playfxontag( level._effect["rocket_blast_trail"], distant_rocket_engine, "tag_origin" );
|
||||
|
||||
// move pieces
|
||||
array_thread( distant_rocket, ::rocket_move );
|
||||
|
||||
}
|
||||
|
||||
distant_rocket_gantry1_move() // self == distant_rocket_gantry
|
||||
{
|
||||
self RotatePitch(-45, 10.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_gantry2_move() // self == distant_rocket_gantry
|
||||
{
|
||||
self RotatePitch(45, 10.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
|
||||
distant_rocket_arm1_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotatePitch(-45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm2_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotateRoll(-45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm3_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotatePitch(45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
distant_rocket_arm4_move() // self == distant_rocket_arm
|
||||
{
|
||||
self RotateRoll(45, 6.0);
|
||||
self waittill("rotatedone");
|
||||
}
|
||||
snd_distant_rocket_arm ( distant_rocket_engine )
|
||||
{
|
||||
|
||||
//IPrintLnBold ("this is in the distant rocket arm section - snd_distant_rocket_arm");
|
||||
distant_rocket_engine playloopsound ("evt_dist_rocket_lp", .5);
|
||||
distant_rocket_engine PlaySound ("evt_dist_rocket_start");
|
||||
//self waittill("rotatedone");
|
||||
wait (16);
|
||||
distant_rocket_engine stoploopsound(.3);
|
||||
distant_rocket_engine PlaySound ("evt_dist_rocket_end");
|
||||
|
||||
}
|
||||
snd_distant_gantry ( orignr, originl)
|
||||
{
|
||||
//IPrintLnBold ("this is playing dist rocket start");
|
||||
orignr playsound ("evt_dist_gantry_disengage");
|
||||
orignr playsound ("evt_dist_rocket_start");
|
||||
}
|
Reference in New Issue
Block a user