357 lines
13 KiB
Plaintext
357 lines
13 KiB
Plaintext
|
#include common_scripts\utility;
|
||
|
#include maps\_utility;
|
||
|
#include maps\_anim;
|
||
|
|
||
|
main()
|
||
|
{
|
||
|
//!!!!! This is not actually called anywhere, but it needs to load immediately otherwise I get a precache error (?)
|
||
|
level._effect[ "_attack_heli_spotlight_ending" ] = LoadFX( "misc/hunted_spotlight_model_dim" );
|
||
|
//!!!!! This is not actually called anywhere, but it needs to load immediately otherwise I get a precache error (?)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
level._effect[ "vehicle_explosion_slamraam" ] = LoadFX( "explosions/vehicle_explosion_slamraam" );
|
||
|
|
||
|
level._effect[ "_attack_heli_spotlight" ] = LoadFX( "misc/spotlight_large_dcburning" );
|
||
|
|
||
|
//columns
|
||
|
level._effect[ "large_column" ] = loadfx( "props/dcburning_pillars" );
|
||
|
|
||
|
|
||
|
//Vehcile DeathFX Overrides
|
||
|
maps\_vehicle::build_deathfx_override( "m1a1", "vehicle_m1a1_abrams", "explosions/javelin_explosion_dcburn", undefined , "exp_javelin_armor_destroy" );
|
||
|
maps\_vehicle::build_deathfx_override( "hummer", "vehicle_hummer", "explosions/javelin_explosion_dcburn", undefined , "exp_javelin_armor_destroy" );
|
||
|
maps\_vehicle::build_deathfx_override( "seaknight", "vehicle_ch46e_low", "explosions/javelin_explosion_dcburn", undefined , "exp_javelin_armor_destroy" );
|
||
|
maps\_vehicle::build_deathfx_override( "bradley", "vehicle_bradley", "explosions/javelin_explosion_dcburn", undefined , "exp_javelin_armor_destroy" );
|
||
|
|
||
|
level._effect[ "turret_overheat_haze" ] = loadfx( "distortion/abrams_exhaust" );
|
||
|
level._effect[ "turret_overheat_smoke" ] = loadfx( "distortion/armored_car_overheat" );
|
||
|
|
||
|
//Magic Bullet Muzzleflashes
|
||
|
level._effect[ "javelin_muzzle" ] = loadfx( "muzzleflashes/javelin_flash_wv" );
|
||
|
|
||
|
level._effect[ "light_glow_white_bulb" ] = loadfx( "misc/light_glow_white_bulb" );
|
||
|
|
||
|
level._effect[ "door_kick_dust" ] = loadfx( "dust/door_kick" );
|
||
|
|
||
|
|
||
|
level._effect[ "dlight_laptop" ] = loadfx( "misc/dlight_laptop" );
|
||
|
|
||
|
/*-----------------------
|
||
|
CHEAP VEHICLE EXPLOSIONS
|
||
|
-------------------------*/
|
||
|
level._effect[ "large_vehicle_explosion" ] = loadfx( "explosions/large_vehicle_explosion" );
|
||
|
level._effect[ "cheap_vehicle_explosion" ] = loadfx( "explosions/small_vehicle_explosion_low" );
|
||
|
level._effect[ "cheap_mack_truck_explosion" ] = loadfx( "explosions/tanker_explosion_dcburn" );
|
||
|
level._effect[ "tanker_fire" ] = loadfx( "fire/firelp_large_pm" );
|
||
|
|
||
|
/*-----------------------
|
||
|
PLAYER BLACKHAWK CRASH
|
||
|
-------------------------*/
|
||
|
level._effect[ "smoke_trail_black_heli" ] = loadfx( "smoke/smoke_trail_black_heli" );
|
||
|
level._effect[ "dlight_blue" ] = loadfx( "misc/dlight_blue" );
|
||
|
level._effect[ "dlight_red" ] = loadfx( "misc/aircraft_light_cockpit_red" );
|
||
|
level._effect[ "player_death_explosion" ] = loadfx( "explosions/player_death_explosion" );
|
||
|
level._effect[ "heat_shimmer_door" ] = loadfx( "distortion/abrams_exhaust" );
|
||
|
|
||
|
level._effect[ "firelp_large_pm_nolight" ] = loadfx( "fire/firelp_large_pm_nolight" );
|
||
|
level._effect[ "firelp_med_pm_nolight" ] = loadfx( "fire/firelp_med_pm_nolight" );
|
||
|
level._effect[ "firelp_small_pm_nolight" ] = loadfx( "fire/firelp_small_pm_nolight" );
|
||
|
|
||
|
/*-----------------------
|
||
|
LITTLEBIRD CRASH
|
||
|
-------------------------*/
|
||
|
level._effect[ "crash_main_01" ] = loadfx( "explosions/javelin_explosion_dcburn" );
|
||
|
level._effect[ "crash_end_01" ] = loadfx( "explosions/helicopter_explosion_little_bird_dcburn" );
|
||
|
|
||
|
level._effect[ "chopper_smoke_trail" ] = loadfx( "fire/fire_smoke_trail_L" );
|
||
|
level._effect[ "chopper_explosion" ] = loadfx( "explosions/aerial_explosion" );
|
||
|
|
||
|
/*-----------------------
|
||
|
Sniping
|
||
|
-------------------------*/
|
||
|
level._effect[ "headshot" ] = loadfx( "impacts/flesh_hit_head_fatal_exit" ); // sprays on wall
|
||
|
level._effect[ "headshot2" ] = loadfx( "impacts/flesh_hit_splat_large" ); // chunks
|
||
|
level._effect[ "headshot3" ] = loadfx( "impacts/flesh_hit_body_fatal_exit" ); // big spray
|
||
|
level._effect[ "headshot4" ] = loadfx( "impacts/sniper_escape_blood" ); // big spray
|
||
|
level._effect[ "bodyshot" ] = loadfx( "impacts/flesh_hit" );
|
||
|
|
||
|
level._effect[ "thermal_body_gib" ] = loadfx( "impacts/thermal_body_gib" ); // splatter
|
||
|
|
||
|
level._effect[ "flare_ambient" ] = loadfx( "misc/flare_ambient" );
|
||
|
|
||
|
level._effect[ "heat_shimmer_door" ] = loadfx( "distortion/abrams_exhaust" );
|
||
|
level._effect[ "heli_dust_default" ] = loadfx( "treadfx/heli_dust_airlift" );
|
||
|
|
||
|
|
||
|
/*-----------------------
|
||
|
FLARES
|
||
|
-------------------------*/
|
||
|
level._effect[ "flare_runner_intro" ] = loadfx( "misc/flare_start" );
|
||
|
level._effect[ "flare_runner" ] = loadfx( "misc/flare" );
|
||
|
level._effect[ "flare_runner_fizzout" ] = loadfx( "misc/flare_end" );
|
||
|
|
||
|
|
||
|
/*-----------------------
|
||
|
PLANE AIRSTRIKES
|
||
|
-------------------------*/
|
||
|
level.airstrikefx = loadfx( "explosions/clusterbomb" );
|
||
|
//level.airstrikefx = loadfx( "explosions/tanker_explosion" );
|
||
|
//level.scr_sound[ "airstrike" ][ "explosion" ] = "mortar_incoming";
|
||
|
|
||
|
/*-----------------------
|
||
|
AMBIENT FX
|
||
|
-------------------------*/
|
||
|
level._effect["powerline_runner"] = loadfx ("explosions/powerline_runner");
|
||
|
|
||
|
level._effect[ "antiair_runner" ] = loadfx( "misc/antiair_runner_night" );
|
||
|
level._effect[ "hallway_smoke_dark" ] = loadfx( "smoke/hallway_smoke_dark" );
|
||
|
level._effect[ "ground_smoke_dcburning1200x1200" ] = loadfx( "smoke/ground_smoke1200x1200_dcburning" );
|
||
|
level._effect[ "thin_black_smoke_L" ] = loadfx( "smoke/thin_black_smoke_L" );
|
||
|
level._effect[ "thick_white_smoke_giant" ] = loadfx( "smoke/thick_white_smoke_giant_dcburning" );
|
||
|
level._effect[ "thick_dark_smoke_giant" ] = loadfx( "smoke/thick_dark_smoke_giant_dcburning" );
|
||
|
|
||
|
level._effect[ "firelp_small_pm" ] = LoadFX( "fire/firelp_small_pm" );
|
||
|
level._effect[ "firelp_small_pm_a" ] = LoadFX( "fire/firelp_small_pm_a" );
|
||
|
level._effect[ "firelp_med_pm" ] = LoadFX( "fire/firelp_med_pm" );
|
||
|
level._effect[ "firelp_large_pm" ] = LoadFX( "fire/firelp_large_pm" );
|
||
|
level._effect[ "firelp_vhc_lrg_pm_farview" ] = loadfx( "fire/firelp_vhc_lrg_pm_farview" );
|
||
|
|
||
|
level._effect[ "drips_slow" ] = loadfx( "misc/drips_slow" );
|
||
|
level._effect[ "drips_fast" ] = loadfx( "misc/drips_fast" );
|
||
|
level._effect[ "powerline_runner_cheap" ] = loadfx( "explosions/powerline_runner_cheap" );
|
||
|
level._effect[ "water_pipe_spray" ] = loadfx( "water/water_pipe_spray" );
|
||
|
level._effect[ "cgo_ship_puddle_small" ] = loadfx( "distortion/cgo_ship_puddle_small" );
|
||
|
level._effect[ "rock_falling_small_runner" ] = loadfx( "misc/rock_falling_small_runner" );
|
||
|
|
||
|
|
||
|
//Exploders
|
||
|
level._effect[ "ceiling_dust_default" ] = loadfx( "dust/ceiling_dust_default" );
|
||
|
level._effect[ "commerce_window_shatter" ] = loadfx( "props/car_glass_large" );
|
||
|
maps\createfx\dcburning_fx::main();
|
||
|
|
||
|
}
|
||
|
|
||
|
littlebird_monument_crash( crashStruct )
|
||
|
{
|
||
|
while( isdefined( self ) )
|
||
|
{
|
||
|
self waittill( "damage", amount, attacker, enemy_org, impact_org, type );
|
||
|
if ( !isdefined( type ) )
|
||
|
continue;
|
||
|
if ( !isdefined( attacker ) )
|
||
|
continue;
|
||
|
if ( !isdefined( amount ) )
|
||
|
continue;
|
||
|
if ( isplayer( attacker ) )
|
||
|
continue;
|
||
|
if ( ( type == "MOD_PROJECTILE" ) && ( amount > 999 ) )
|
||
|
break;
|
||
|
if ( ( type == "MOD_PROJECTILE_SPLASH" ) && ( amount == 4000 ) )
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
self vehicle_detachfrompath();
|
||
|
self setvehgoalpos( crashStruct.origin, false );
|
||
|
self thread play_sound_on_entity( "car_explode" );
|
||
|
earthquake( .3, 1.5, level.player.origin, 1600 );
|
||
|
self Vehicle_SetSpeed( 80 );
|
||
|
self thread littlebird_spinout();
|
||
|
|
||
|
array_thread( self.riders,::littlebird_monument_rider_death, self );
|
||
|
playfxOnTag( getfx( "crash_main_01" ), self, "tag_deathfx" );
|
||
|
while ( distance( self.origin, crashStruct.origin ) > 100 )
|
||
|
{
|
||
|
playfxOnTag( getfx( "chopper_smoke_trail" ), self, "tag_deathfx" );
|
||
|
wait( .1 );
|
||
|
}
|
||
|
self thread play_sound_on_entity( "exp_tanker_vehicle" );
|
||
|
dummy = spawn( "script_origin", self gettagorigin( "tag_deathfx" ) );
|
||
|
playfx( getfx( "crash_end_01" ), dummy.origin );
|
||
|
earthquake( .3, 2, level.player.origin, 1600 );
|
||
|
self delete();
|
||
|
dummy delete();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
littlebird_monument_rider_death( heli )
|
||
|
{
|
||
|
if ( ( self.script_startingposition == 0 ) || ( self.script_startingposition == 1 ) )
|
||
|
return;
|
||
|
tag = "tag_detach_right";
|
||
|
linked = false;
|
||
|
|
||
|
sAnim = undefined;
|
||
|
if ( ( self.script_startingposition == 2 ) || ( self.script_startingposition == 3 ) || ( self.script_startingposition == 4 ) )
|
||
|
{
|
||
|
tag = "tag_detach_left";
|
||
|
}
|
||
|
if ( ( self.script_startingposition == 2 ) || ( self.script_startingposition == 5 ) )
|
||
|
sAnim = "little_bird_death_guy1";
|
||
|
if ( ( self.script_startingposition == 3 ) || ( self.script_startingposition == 6 ) || ( self.script_startingposition == 7 ) )
|
||
|
sAnim = "little_bird_death_guy3";
|
||
|
if ( self.script_startingposition == 4 )
|
||
|
{
|
||
|
linked = true;
|
||
|
sAnim = "little_bird_death_guy2";
|
||
|
}
|
||
|
|
||
|
//wait( randomfloatrange( .1, .9 ) );
|
||
|
self.animname = "generic";
|
||
|
self setcontents( 0 );
|
||
|
self stopanimscripted();
|
||
|
self.skipdeathanim = 1;
|
||
|
self delaythread( randomfloatrange( .3, 1 ), ::play_sound_in_space, "generic_death_falling" );
|
||
|
pos = heli gettagorigin( tag );
|
||
|
angles = heli gettagangles( tag );
|
||
|
dummy = undefined;
|
||
|
if ( linked )
|
||
|
{
|
||
|
heli anim_generic( self, sAnim, tag );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
dummy = spawn( "script_origin", pos );
|
||
|
dummy.angles = angles;
|
||
|
dummy thread updatePos( heli, tag );
|
||
|
dummy thread ent_cleanup( heli );
|
||
|
self unlink();
|
||
|
self linkto( dummy );
|
||
|
//thread debug_message( "dummy", undefined, 9999, dummy );
|
||
|
dummy anim_generic( self, sAnim );
|
||
|
self unlink();
|
||
|
}
|
||
|
|
||
|
if( isdefined( self ) )
|
||
|
self kill();
|
||
|
|
||
|
}
|
||
|
|
||
|
ent_cleanup( ent )
|
||
|
{
|
||
|
ent waittill( "death" );
|
||
|
self delete();
|
||
|
}
|
||
|
|
||
|
updatePos( heli, tag )
|
||
|
{
|
||
|
heli endon( "death" );
|
||
|
self endon( "death " );
|
||
|
org = undefined;
|
||
|
while( true )
|
||
|
{
|
||
|
wait( 0.05 );
|
||
|
org = heli gettagorigin( tag );
|
||
|
self.origin = org;
|
||
|
//self.origin = ( org[ 0 ], org[ 1 ], self.origin[ 2 ] );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//littlebird_crash()
|
||
|
//{
|
||
|
// thread flag_set_delayed( "littlebird_crash_path_end", 3 );
|
||
|
// self thread play_sound_on_entity( "car_explode" );
|
||
|
// earthquake( .3, 1.5, level.player.origin, 1600 );
|
||
|
// self Vehicle_SetSpeed( 70 );
|
||
|
// self thread littlebird_spinout();
|
||
|
// array_thread( self.riders,::littlebird_rider_death, self );
|
||
|
// playfxOnTag( getfx( "crash_main_01" ), self, "tag_deathfx" );
|
||
|
// while ( !flag( "littlebird_crash_path_end") )
|
||
|
// {
|
||
|
// playfxOnTag( getfx( "chopper_smoke_trail" ), self, "tag_deathfx" );
|
||
|
// wait( .1 );
|
||
|
// }
|
||
|
// self thread play_sound_on_entity( "exp_tanker_vehicle" );
|
||
|
// dummy = spawn( "script_origin", self gettagorigin( "tag_deathfx" ) );
|
||
|
// playfx( getfx( "crash_main_02" ), dummy.origin );
|
||
|
// playfx( getfx( "crash_end_01" ), dummy.origin );
|
||
|
// playfx( getfx( "crash_end_02" ), dummy.origin );
|
||
|
// earthquake( .3, 2, level.player.origin, 1600 );
|
||
|
// self delete();
|
||
|
//
|
||
|
//}
|
||
|
//
|
||
|
//littlebird_crash2()
|
||
|
//{
|
||
|
// //thread flag_set_delayed( "littlebird_crash_02_end", 3 );
|
||
|
// self thread play_sound_on_entity( "car_explode" );
|
||
|
// array_thread( self.riders,::littlebird_rider_death, self );
|
||
|
// earthquake( .3, 1.5, level.player.origin, 1600 );
|
||
|
// //self Vehicle_SetSpeed( 70 );
|
||
|
//
|
||
|
// self thread littlebird_spinout();
|
||
|
//
|
||
|
// playfxOnTag( getfx( "crash_main_01" ), self, "tag_deathfx" );
|
||
|
// while ( !flag( "littlebrid_crash_02_end") )
|
||
|
// {
|
||
|
// playfxOnTag( getfx( "chopper_smoke_trail" ), self, "tag_deathfx" );
|
||
|
// wait( .1 );
|
||
|
// }
|
||
|
// self thread play_sound_on_entity( "exp_tanker_vehicle" );
|
||
|
// dummy = spawn( "script_origin", self gettagorigin( "tag_deathfx" ) );
|
||
|
// playfx( getfx( "crash_main_02" ), dummy.origin );
|
||
|
// playfx( getfx( "crash_end_01" ), dummy.origin );
|
||
|
// playfx( getfx( "crash_end_02" ), dummy.origin );
|
||
|
// earthquake( .3, 2, level.player.origin, 1600 );
|
||
|
// self delete();
|
||
|
//
|
||
|
//}
|
||
|
|
||
|
littlebird_spinout()
|
||
|
{
|
||
|
self SetMaxPitchRoll( 100, 200 );
|
||
|
self setturningability( 1 );
|
||
|
yawspeed = 1400;
|
||
|
yawaccel = 200;
|
||
|
targetyaw = undefined;
|
||
|
|
||
|
while ( isdefined( self ) )
|
||
|
{
|
||
|
targetyaw = self.angles[ 1 ] - 300;
|
||
|
self setyawspeed( yawspeed, yawaccel );
|
||
|
self settargetyaw( targetyaw );
|
||
|
wait 0.1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//littlebird_rider_death( heli )
|
||
|
//{
|
||
|
// if ( ( self.script_startingposition == 0 ) || ( self.script_startingposition == 1 ) )
|
||
|
// return;
|
||
|
// tag = "tag_detach_right";
|
||
|
// if ( ( self.script_startingposition == 2 ) || ( self.script_startingposition == 3 ) || ( self.script_startingposition == 4 ) )
|
||
|
// tag = "tag_detach_left";
|
||
|
// wait( randomfloatrange( .1, .8 ) );
|
||
|
// //self unlink();
|
||
|
// self.animname = "generic";
|
||
|
// self setcontents( 0 );
|
||
|
// self stopanimscripted();
|
||
|
// self delaythread( randomfloatrange( .3, 1 ), ::play_sound_in_space, "generic_death_falling" );
|
||
|
// heli anim_generic( self, "littlebird_rider_death", tag );
|
||
|
// if( isdefined( self ) )
|
||
|
// self kill();
|
||
|
//
|
||
|
//}
|
||
|
|
||
|
monument_heli_destroyed( monument_heli_owned )
|
||
|
{
|
||
|
monument_heli_owned_destroyed = getent( "monument_heli_owned_destroyed", "targetname" );
|
||
|
monument_heli_owned delete();
|
||
|
monument_heli_owned_destroyed show();
|
||
|
playfx( getfx( "large_vehicle_explosion" ), monument_heli_owned_destroyed.origin );
|
||
|
monument_heli_owned_destroyed thread play_sound_in_space( "exp_tanker_vehicle" );
|
||
|
monument_heli_owned_destroyeddummy = spawn( "script_origin", monument_heli_owned_destroyed.origin + ( 0, 0, 0 ) );
|
||
|
monument_heli_owned_destroyeddummy.angles = monument_heli_owned_destroyed.angles;
|
||
|
fx = spawnFx( getFx( "tanker_fire" ), monument_heli_owned_destroyeddummy.origin );
|
||
|
triggerFx( fx );
|
||
|
|
||
|
flag_wait( "player_entering_top_elevator_area" );
|
||
|
fx delete();
|
||
|
monument_heli_owned_destroyeddummy delete();
|
||
|
}
|
||
|
|