2059 lines
59 KiB
Plaintext
2059 lines
59 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
if ( !isdefined( level.func ) )
|
|
level.func = [];
|
|
|
|
level.func["setsaveddvar"] = ::setsaveddvar;
|
|
level.func["useanimtree"] = ::useanimtree;
|
|
level.func["setanim"] = ::setanim;
|
|
level.func["setanimknob"] = ::setanimknob;
|
|
level.func["setflaggedanimknob"] = ::setflaggedanimknob;
|
|
level.func["setflaggedanimknobrestart"] = ::setflaggedanimknobrestart;
|
|
level.func["setanimlimited"] = ::setanimlimited;
|
|
level.func["setanimtime"] = ::setanimtime;
|
|
level.func["getanimtime"] = ::getanimtime;
|
|
level.func["getanimlength"] = ::getanimlength;
|
|
level.func["clearanim"] = ::clearanim;
|
|
level.func["kill"] = ::kill;
|
|
level.func["magicgrenade"] = ::magicgrenade;
|
|
set_early_level();
|
|
level.global_callbacks = [];
|
|
level.global_callbacks["_autosave_stealthcheck"] = ::global_empty_callback;
|
|
level.global_callbacks["_patrol_endon_spotted_flag"] = ::global_empty_callback;
|
|
level.global_callbacks["_spawner_stealth_default"] = ::global_empty_callback;
|
|
level.global_callbacks["_idle_call_idle_func"] = ::global_empty_callback;
|
|
|
|
if ( !isdefined( level.visionthermaldefault ) )
|
|
level.visionthermaldefault = "cheat_bw";
|
|
|
|
visionsetthermal( level.visionthermaldefault );
|
|
visionsetpain( "near_death" );
|
|
level.func["damagefeedback"] = maps\_damagefeedback::updatedamagefeedback;
|
|
common_scripts\utility::array_thread( getentarray( "script_model_pickup_claymore", "classname" ), ::claymore_pickup_think_global );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_cache", "targetname" ), ::ammo_cache_think_global );
|
|
maps\_utility::array_delete( getentarray( "trigger_multiple_softlanding", "classname" ) );
|
|
|
|
if ( getdvar( "debug" ) == "" )
|
|
setdvar( "debug", "0" );
|
|
|
|
if ( getdvar( "fallback" ) == "" )
|
|
setdvar( "fallback", "0" );
|
|
|
|
if ( getdvar( "angles" ) == "" )
|
|
setdvar( "angles", "0" );
|
|
|
|
if ( getdvar( "noai" ) == "" )
|
|
setdvar( "noai", "off" );
|
|
|
|
if ( getdvar( "scr_RequiredMapAspectratio" ) == "" )
|
|
setdvar( "scr_RequiredMapAspectratio", "1" );
|
|
|
|
setdvar( "ac130_player_num", -1 );
|
|
setdvar( "ui_remotemissile_playernum", 0 );
|
|
setdvar( "ui_pmc_won", 0 );
|
|
setdvar( "ui_actionSlot_1_forceActive", "off" );
|
|
setdvar( "ui_actionSlot_2_forceActive", "off" );
|
|
setdvar( "ui_actionSlot_3_forceActive", "off" );
|
|
setdvar( "ui_actionSlot_4_forceActive", "off" );
|
|
setdvar( "ui_dog_grenade", 0 );
|
|
setdvar( "hideHudFast", 0 );
|
|
setdvar( "ui_securing", "" );
|
|
setdvar( "ui_securing_progress", 0.0 );
|
|
setdvar( "hud_showObjectives", 1 );
|
|
setdvar( "hud_showIntel", 1 );
|
|
setdvar( "minimap_sp", 0 );
|
|
setdvar( "minimap_full_sp", 0 );
|
|
|
|
if ( !isdefined( anim.notetracks ) )
|
|
{
|
|
anim.notetracks = [];
|
|
animscripts\notetracks::registernotetracks();
|
|
}
|
|
|
|
common_scripts\utility::flag_init( "introscreen_complete" );
|
|
maps\_utility::add_start( "no_game", ::start_nogame );
|
|
add_no_game_starts();
|
|
level._loadstarted = 1;
|
|
level.first_frame = 1;
|
|
level.level_specific_dof = 0;
|
|
thread remove_level_first_frame();
|
|
level.wait_any_func_array = [];
|
|
level.run_func_after_wait_array = [];
|
|
level.run_call_after_wait_array = [];
|
|
level.run_noself_call_after_wait_array = [];
|
|
level.do_wait_endons_array = [];
|
|
level.abort_wait_any_func_array = [];
|
|
|
|
if ( !isdefined( level.script ) )
|
|
level.script = tolower( getdvar( "mapname" ) );
|
|
|
|
level.dirteffectmenu["center"] = "dirt_effect_center";
|
|
level.dirteffectmenu["left"] = "dirt_effect_left";
|
|
level.dirteffectmenu["right"] = "dirt_effect_right";
|
|
precachemenu( level.dirteffectmenu["center"] );
|
|
precachemenu( level.dirteffectmenu["left"] );
|
|
precachemenu( level.dirteffectmenu["right"] );
|
|
precacheshader( "fullscreen_dirt_bottom_b" );
|
|
precacheshader( "fullscreen_dirt_bottom" );
|
|
precacheshader( "fullscreen_dirt_left" );
|
|
precacheshader( "fullscreen_dirt_right" );
|
|
precacheshader( "fullscreen_bloodsplat_bottom" );
|
|
precacheshader( "fullscreen_bloodsplat_left" );
|
|
precacheshader( "fullscreen_bloodsplat_right" );
|
|
precacheshader( "black" );
|
|
precacheshader( "white" );
|
|
level.ai_number = 0;
|
|
|
|
if ( !isdefined( level.flag ) )
|
|
common_scripts\utility::init_flags();
|
|
else
|
|
{
|
|
var_0 = getarraykeys( level.flag );
|
|
common_scripts\utility::array_levelthread( var_0, ::check_flag_for_stat_tracking );
|
|
}
|
|
|
|
init_level_players();
|
|
|
|
if ( issplitscreen() )
|
|
setsaveddvar( "cg_fovScale", "0.75" );
|
|
else
|
|
setsaveddvar( "cg_fovScale", "1" );
|
|
|
|
level.radiation_totalpercent = 0;
|
|
common_scripts\utility::flag_init( "missionfailed" );
|
|
common_scripts\utility::flag_init( "auto_adjust_initialized" );
|
|
common_scripts\utility::flag_init( "_radiation_poisoning" );
|
|
common_scripts\utility::flag_init( "gameskill_selected" );
|
|
common_scripts\utility::flag_init( "battlechatter_on_thread_waiting" );
|
|
common_scripts\utility::flag_init( "start_is_set" );
|
|
thread maps\_gameskill::aa_init_stats();
|
|
thread player_death_detection();
|
|
level.default_run_speed = 190;
|
|
setsaveddvar( "g_speed", level.default_run_speed );
|
|
|
|
if ( maps\_utility::is_specialop() )
|
|
setsaveddvar( "sv_saveOnStartMap", 0 );
|
|
else if ( isdefined( level.credits_active ) )
|
|
setsaveddvar( "sv_saveOnStartMap", 0 );
|
|
else
|
|
setsaveddvar( "sv_saveOnStartMap", 1 );
|
|
|
|
common_scripts\utility::create_lock( "mg42_drones" );
|
|
common_scripts\utility::create_lock( "mg42_drones_target_trace" );
|
|
level.dronestruct = [];
|
|
|
|
foreach ( var_3, var_2 in level.struct )
|
|
{
|
|
if ( !isdefined( var_2.targetname ) )
|
|
continue;
|
|
|
|
if ( var_2.targetname == "delete_on_load" )
|
|
level.struct[var_3] = undefined;
|
|
}
|
|
|
|
common_scripts\utility::struct_class_init();
|
|
common_scripts\utility::flag_init( "respawn_friendlies" );
|
|
common_scripts\utility::flag_init( "player_flashed" );
|
|
level.connectpathsfunction = ::connectpaths;
|
|
level.disconnectpathsfunction = ::disconnectpaths;
|
|
level.badplace_cylinder_func = ::badplace_cylinder;
|
|
level.badplace_delete_func = ::badplace_delete;
|
|
level.isaifunc = ::isai;
|
|
level.createclientfontstring_func = maps\_hud_util::createclientfontstring;
|
|
level.hudsetpoint_func = maps\_hud_util::setpoint;
|
|
level.makeentitysentient_func = ::makeentitysentient;
|
|
level.freeentitysentient_func = ::freeentitysentient;
|
|
level.laseron_func = ::laserforceon;
|
|
level.laseroff_func = ::laserforceoff;
|
|
level.stat_track_kill_func = maps\_player_stats::register_kill;
|
|
level.stat_track_damage_func = maps\_player_stats::register_shot_hit;
|
|
level.dopickyautosavechecks = 1;
|
|
level.autosave_threat_check_enabled = 1;
|
|
level.getnodefunction = ::getnode;
|
|
level.getnodearrayfunction = ::getnodearray;
|
|
level.addaieventlistener_func = ::addaieventlistener;
|
|
|
|
if ( !isdefined( level._notetrackfx ) )
|
|
level._notetrackfx = [];
|
|
|
|
foreach ( var_5 in level.players )
|
|
{
|
|
var_5.maxhealth = level.player.health;
|
|
var_5.shellshocked = 0;
|
|
var_5.inwater = 0;
|
|
var_5 thread watchweaponchange();
|
|
}
|
|
|
|
level.last_mission_sound_time = -5000;
|
|
level.hero_list = [];
|
|
thread precache_script_models();
|
|
|
|
for ( var_7 = 0; var_7 < level.players.size; var_7++ )
|
|
{
|
|
var_5 = level.players[var_7];
|
|
var_5 thread maps\_utility::flashmonitor();
|
|
var_5 thread maps\_utility::shock_ondeath();
|
|
}
|
|
|
|
precachemodel( "fx" );
|
|
precachemodel( "tag_origin" );
|
|
precachemodel( "tag_ik_target" );
|
|
precacheshellshock( "victoryscreen" );
|
|
precacheshellshock( "default" );
|
|
precacheshellshock( "flashbang" );
|
|
precacheshellshock( "dog_bite" );
|
|
precacherumble( "damage_heavy" );
|
|
precacherumble( "damage_light" );
|
|
precacherumble( "grenade_rumble" );
|
|
precacherumble( "artillery_rumble" );
|
|
precacherumble( "slide_start" );
|
|
precacherumble( "slide_loop" );
|
|
precachestring( &"GAME_GET_TO_COVER" );
|
|
precachestring( &"GAME_LAST_STAND_GET_BACK_UP" );
|
|
precachestring( &"SCRIPT_GRENADE_DEATH" );
|
|
precachestring( &"SCRIPT_GRENADE_SUICIDE_LINE1" );
|
|
precachestring( &"SCRIPT_GRENADE_SUICIDE_LINE2" );
|
|
precachestring( &"SCRIPT_EXPLODING_VEHICLE_DEATH" );
|
|
precachestring( &"SCRIPT_EXPLODING_DESTRUCTIBLE_DEATH" );
|
|
precachestring( &"SCRIPT_EXPLODING_BARREL_DEATH" );
|
|
precacheshader( "hud_grenadeicon" );
|
|
precacheshader( "hud_grenadepointer" );
|
|
precacheshader( "hud_burningcaricon" );
|
|
precacheshader( "death_juggernaut" );
|
|
precacheshader( "death_friendly_fire" );
|
|
precacheshader( "hud_destructibledeathicon" );
|
|
precacheshader( "hud_burningbarrelicon" );
|
|
precacheshader( "waypoint_ammo" );
|
|
level._effect["deathfx_bloodpool_generic"] = loadfx( "fx/impacts/deathfx_bloodpool_generic" );
|
|
animscripts\pain::initpainfx();
|
|
animscripts\melee::melee_init();
|
|
level.createfx_enabled = getdvar( "createfx" ) != "";
|
|
slowmo_system_init();
|
|
maps\_mgturret::main();
|
|
common_scripts\_exploder::setupexploders();
|
|
maps\_gameskill::setskill();
|
|
maps\_art::main();
|
|
maps\_anim::init();
|
|
thread common_scripts\_fx::initfx();
|
|
|
|
if ( level.createfx_enabled )
|
|
{
|
|
|
|
}
|
|
|
|
maps\_global_fx_code::init();
|
|
maps\_global_fx::main();
|
|
default_footsteps();
|
|
maps\_detonategrenades::init();
|
|
maps\_lights::init();
|
|
maps\_names::setup_names();
|
|
|
|
if ( isdefined( level.handle_starts_endons ) )
|
|
thread [[ level.handle_starts_endons ]]();
|
|
else
|
|
thread handle_starts();
|
|
|
|
if ( !isdefined( level.trigger_flags ) )
|
|
common_scripts\utility::init_trigger_flags();
|
|
|
|
level.killspawn_groups = [];
|
|
maps\_audio::init_audio();
|
|
maps\_trigger::init_script_triggers();
|
|
setsaveddvar( "ufoHitsTriggers", "0" );
|
|
do_no_game_start();
|
|
|
|
if ( getdvar( "g_connectpaths" ) == "2" )
|
|
level waittill( "eternity" );
|
|
|
|
maps\_autosave::main();
|
|
|
|
if ( !isdefined( level.animsounds ) )
|
|
thread init_animsounds();
|
|
|
|
maps\_anim::init();
|
|
anim.usefacialanims = 0;
|
|
|
|
if ( !isdefined( level.missionfailed ) )
|
|
level.missionfailed = 0;
|
|
|
|
if ( !maps\_utility::is_specialop() )
|
|
{
|
|
maps\_loadout::init_loadout();
|
|
setsaveddvar( "ui_campaign", level.campaign );
|
|
}
|
|
|
|
common_scripts\_destructible::init();
|
|
thread maps\_vehicle::init_vehicles();
|
|
setobjectivetextcolors();
|
|
common_scripts\_dynamic_world::init();
|
|
thread maps\_autosave::beginningoflevelsave();
|
|
thread maps\_introscreen::main();
|
|
thread maps\_endmission::main();
|
|
thread maps\_damagefeedback::init();
|
|
maps\_friendlyfire::main();
|
|
common_scripts\utility::array_levelthread( getentarray( "badplace", "targetname" ), ::badplace_think );
|
|
common_scripts\utility::array_levelthread( getentarray( "delete_on_load", "targetname" ), maps\_utility::deleteent );
|
|
common_scripts\utility::array_thread( getnodearray( "traverse", "targetname" ), ::traversethink );
|
|
common_scripts\utility::array_thread( getentarray( "piano_key", "targetname" ), ::pianothink );
|
|
common_scripts\utility::array_thread( getentarray( "piano_damage", "targetname" ), ::pianodamagethink );
|
|
common_scripts\utility::array_thread( getentarray( "water", "targetname" ), ::waterthink );
|
|
common_scripts\utility::array_thread( getentarray( "kill_all_players", "targetname" ), ::kill_all_players_trigger );
|
|
common_scripts\utility::flag_init( "allow_ammo_pickups" );
|
|
common_scripts\utility::flag_set( "allow_ammo_pickups" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_grenade_launcher", "targetname" ), ::ammo_pickup, "grenade_launcher" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_rpg", "targetname" ), ::ammo_pickup, "rpg" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_c4", "targetname" ), ::ammo_pickup, "c4" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_claymore", "targetname" ), ::ammo_pickup, "claymore" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_556", "targetname" ), ::ammo_pickup, "556" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_762", "targetname" ), ::ammo_pickup, "762" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_45", "targetname" ), ::ammo_pickup, "45" );
|
|
common_scripts\utility::array_thread( getentarray( "ammo_pickup_pistol", "targetname" ), ::ammo_pickup, "pistol" );
|
|
thread maps\_intelligence::main();
|
|
thread maps\_gameskill::playerhealthregeninit();
|
|
|
|
for ( var_7 = 0; var_7 < level.players.size; var_7++ )
|
|
{
|
|
var_5 = level.players[var_7];
|
|
|
|
if ( !maps\_utility::in_alien_mode() )
|
|
var_5 thread maps\_gameskill::playerhealthregen();
|
|
|
|
var_5 thread playerdamagerumble();
|
|
}
|
|
|
|
thread maps\_player_death::main();
|
|
thread massnodeinitfunctions();
|
|
common_scripts\utility::flag_init( "spawning_friendlies" );
|
|
common_scripts\utility::flag_init( "friendly_wave_spawn_enabled" );
|
|
common_scripts\utility::flag_clear( "spawning_friendlies" );
|
|
level.friendly_spawner["rifleguy"] = getentarray( "rifle_spawner", "script_noteworthy" );
|
|
level.friendly_spawner["smgguy"] = getentarray( "smg_spawner", "script_noteworthy" );
|
|
level.spawn_funcs = [];
|
|
level.spawn_funcs["allies"] = [];
|
|
level.spawn_funcs["axis"] = [];
|
|
level.spawn_funcs["team3"] = [];
|
|
level.spawn_funcs["neutral"] = [];
|
|
thread maps\_spawner::goalvolumes();
|
|
thread maps\_spawner::friendlychains();
|
|
thread maps\_spawner::friendlychain_ondeath();
|
|
common_scripts\utility::array_thread( getentarray( "friendly_spawn", "targetname" ), maps\_spawner::friendlyspawnwave );
|
|
common_scripts\utility::array_thread( getentarray( "flood_and_secure", "targetname" ), maps\_spawner::flood_and_secure );
|
|
common_scripts\utility::array_thread( getentarray( "window_poster", "targetname" ), ::window_destroy );
|
|
|
|
if ( !isdefined( level.trigger_hint_string ) )
|
|
{
|
|
level.trigger_hint_string = [];
|
|
level.trigger_hint_func = [];
|
|
}
|
|
|
|
level.shared_portable_turrets = [];
|
|
level.spawn_groups = [];
|
|
maps\_spawner::main();
|
|
common_scripts\utility::array_thread( getentarray( "background_block", "targetname" ), ::background_block );
|
|
maps\_hud::init();
|
|
thread load_friendlies();
|
|
thread maps\_animatedmodels::main();
|
|
thread weapon_ammo();
|
|
|
|
if ( level.script == level.missionsettings.levels[0].name && !level.player getlocalplayerprofiledata( "hasEverPlayed_SP" ) )
|
|
maps\_utility::delaythread( 0.1, ::update_gamer_profile );
|
|
|
|
level notify( "load_finished" );
|
|
run_post_function();
|
|
}
|
|
|
|
update_gamer_profile()
|
|
{
|
|
level.player setlocalplayerprofiledata( "hasEverPlayed_SP", 1 );
|
|
updategamerprofile();
|
|
}
|
|
|
|
run_post_function()
|
|
{
|
|
if ( isdefined( level.post_load_funcs ) )
|
|
{
|
|
foreach ( var_1 in level.post_load_funcs )
|
|
[[ var_1 ]]();
|
|
}
|
|
}
|
|
|
|
set_early_level()
|
|
{
|
|
level.early_level = [];
|
|
level.early_level["prologue"] = 1;
|
|
level.early_level["deer_hunt"] = 1;
|
|
level.early_level["nml"] = 1;
|
|
level.early_level["homecoming"] = 1;
|
|
}
|
|
|
|
weapon_ammo()
|
|
{
|
|
var_0 = getentarray();
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
{
|
|
if ( isdefined( var_0[var_1].classname ) && getsubstr( var_0[var_1].classname, 0, 7 ) == "weapon_" )
|
|
{
|
|
var_2 = var_0[var_1];
|
|
var_3 = getsubstr( var_2.classname, 7 );
|
|
|
|
if ( isdefined( var_2.script_ammo_max ) )
|
|
{
|
|
var_4 = weaponclipsize( var_3 );
|
|
var_5 = weaponmaxammo( var_3 );
|
|
var_2 itemweaponsetammo( var_4, var_5, var_4, 0 );
|
|
var_6 = weaponaltweaponname( var_3 );
|
|
|
|
if ( var_6 != "none" )
|
|
{
|
|
var_7 = weaponclipsize( var_6 );
|
|
var_8 = weaponmaxammo( var_6 );
|
|
var_2 itemweaponsetammo( var_7, var_8, var_7, 1 );
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
var_9 = 0;
|
|
var_4 = undefined;
|
|
var_10 = undefined;
|
|
var_11 = 0;
|
|
var_12 = undefined;
|
|
var_13 = undefined;
|
|
|
|
if ( isdefined( var_2.script_ammo_clip ) )
|
|
{
|
|
var_4 = var_2.script_ammo_clip;
|
|
var_9 = 1;
|
|
}
|
|
|
|
if ( isdefined( var_2.script_ammo_extra ) )
|
|
{
|
|
var_10 = var_2.script_ammo_extra;
|
|
var_9 = 1;
|
|
}
|
|
|
|
if ( isdefined( var_2.script_ammo_alt_clip ) )
|
|
{
|
|
var_12 = var_2.script_ammo_alt_clip;
|
|
var_11 = 1;
|
|
}
|
|
|
|
if ( isdefined( var_2.script_ammo_alt_extra ) )
|
|
{
|
|
var_13 = var_2.script_ammo_alt_extra;
|
|
var_11 = 1;
|
|
}
|
|
|
|
if ( var_9 )
|
|
{
|
|
if ( !isdefined( var_4 ) )
|
|
{
|
|
|
|
}
|
|
|
|
if ( !isdefined( var_10 ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_2 itemweaponsetammo( var_4, var_10 );
|
|
}
|
|
|
|
if ( var_11 )
|
|
{
|
|
if ( !isdefined( var_12 ) )
|
|
{
|
|
|
|
}
|
|
|
|
if ( !isdefined( var_13 ) )
|
|
{
|
|
|
|
}
|
|
|
|
var_2 itemweaponsetammo( var_12, var_13, 0, 1 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
exploder_load( var_0 )
|
|
{
|
|
level endon( "killexplodertridgers" + var_0.script_exploder );
|
|
var_0 waittill( "trigger" );
|
|
|
|
if ( isdefined( var_0.script_chance ) && randomfloat( 1 ) > var_0.script_chance )
|
|
{
|
|
if ( !var_0 maps\_utility::script_delay() )
|
|
wait 4;
|
|
|
|
level thread exploder_load( var_0 );
|
|
return;
|
|
}
|
|
|
|
if ( !var_0 maps\_utility::script_delay() && isdefined( var_0.script_exploder_delay ) )
|
|
wait( var_0.script_exploder_delay );
|
|
|
|
common_scripts\utility::exploder( var_0.script_exploder );
|
|
level notify( "killexplodertridgers" + var_0.script_exploder );
|
|
}
|
|
|
|
badplace_think( var_0 )
|
|
{
|
|
if ( !isdefined( level.badplaces ) )
|
|
level.badplaces = 0;
|
|
|
|
level.badplaces++;
|
|
badplace_cylinder( "badplace" + level.badplaces, -1, var_0.origin, var_0.radius, 1024 );
|
|
}
|
|
|
|
playerdamagerumble()
|
|
{
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_0 );
|
|
|
|
if ( isdefined( self.specialdamage ) )
|
|
continue;
|
|
|
|
self playrumbleonentity( "damage_heavy" );
|
|
}
|
|
}
|
|
|
|
map_is_early_in_the_game()
|
|
{
|
|
if ( isdefined( level.early_level[level.script] ) )
|
|
return level.early_level[level.script];
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
traversethink()
|
|
{
|
|
var_0 = getent( self.target, "targetname" );
|
|
self.traverse_height = var_0.origin[2];
|
|
self.traverse_height_delta = var_0.origin[2] - self.origin[2];
|
|
var_0 delete();
|
|
}
|
|
|
|
pianodamagethink()
|
|
{
|
|
var_0 = self getorigin();
|
|
var_1[0] = "large";
|
|
var_1[1] = "small";
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger" );
|
|
thread common_scripts\utility::play_sound_in_space( "bullet_" + common_scripts\utility::random( var_1 ) + "_piano", var_0 );
|
|
}
|
|
}
|
|
|
|
pianothink()
|
|
{
|
|
var_0 = self getorigin();
|
|
var_1 = "piano_" + self.script_noteworthy;
|
|
self sethintstring( &"SCRIPT_PLATFORM_PIANO" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger" );
|
|
thread common_scripts\utility::play_sound_in_space( var_1, var_0 );
|
|
}
|
|
}
|
|
|
|
waterthink()
|
|
{
|
|
var_0 = getent( self.target, "targetname" );
|
|
var_1 = var_0.origin[2];
|
|
var_0 = undefined;
|
|
level.depth_allow_prone = 8;
|
|
level.depth_allow_crouch = 33;
|
|
level.depth_allow_stand = 50;
|
|
var_2 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( !level.player.inwater && var_2 )
|
|
{
|
|
var_2 = 0;
|
|
level.player allowprone( 1 );
|
|
level.player allowcrouch( 1 );
|
|
level.player allowstand( 1 );
|
|
thread waterthink_rampspeed( level.default_run_speed );
|
|
}
|
|
|
|
self waittill( "trigger" );
|
|
level.player.inwater = 1;
|
|
var_2 = 1;
|
|
|
|
while ( level.player istouching( self ) )
|
|
{
|
|
level.player.inwater = 1;
|
|
var_3 = level.player getorigin();
|
|
var_4 = var_3[2] - var_1;
|
|
|
|
if ( var_4 > 0 )
|
|
break;
|
|
|
|
var_5 = int( level.default_run_speed - abs( var_4 * 5 ) );
|
|
|
|
if ( var_5 < 50 )
|
|
var_5 = 50;
|
|
|
|
thread waterthink_rampspeed( var_5 );
|
|
|
|
if ( abs( var_4 ) > level.depth_allow_crouch )
|
|
level.player allowcrouch( 0 );
|
|
else
|
|
level.player allowcrouch( 1 );
|
|
|
|
if ( abs( var_4 ) > level.depth_allow_prone )
|
|
level.player allowprone( 0 );
|
|
else
|
|
level.player allowprone( 1 );
|
|
|
|
wait 0.5;
|
|
}
|
|
|
|
level.player.inwater = 0;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
waterthink_rampspeed( var_0 )
|
|
{
|
|
level notify( "ramping_water_movement_speed" );
|
|
level endon( "ramping_water_movement_speed" );
|
|
var_1 = 0.5;
|
|
var_2 = int( var_1 * 20 );
|
|
var_3 = getdvarint( "g_speed" );
|
|
var_4 = 0;
|
|
|
|
if ( var_0 < var_3 )
|
|
var_4 = 1;
|
|
|
|
var_5 = int( abs( var_3 - var_0 ) );
|
|
var_6 = int( var_5 / var_2 );
|
|
|
|
for ( var_7 = 0; var_7 < var_2; var_7++ )
|
|
{
|
|
var_3 = getdvarint( "g_speed" );
|
|
|
|
if ( var_4 )
|
|
setsaveddvar( "g_speed", var_3 - var_6 );
|
|
else
|
|
setsaveddvar( "g_speed", var_3 + var_6 );
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
setsaveddvar( "g_speed", var_0 );
|
|
}
|
|
|
|
massnodeinitfunctions()
|
|
{
|
|
var_0 = getallnodes();
|
|
thread maps\_mgturret::auto_mgturretlink( var_0 );
|
|
thread maps\_mgturret::saw_mgturretlink( var_0 );
|
|
thread maps\_colors::init_color_grouping( var_0 );
|
|
}
|
|
|
|
indicate_start( var_0 )
|
|
{
|
|
var_1 = newhudelem();
|
|
var_1.alignx = "left";
|
|
var_1.aligny = "middle";
|
|
var_1.x = 10;
|
|
var_1.y = 400;
|
|
var_1 settext( var_0 );
|
|
var_1.alpha = 0;
|
|
var_1.fontscale = 3;
|
|
wait 1;
|
|
var_1 fadeovertime( 1 );
|
|
var_1.alpha = 1;
|
|
wait 5;
|
|
var_1 fadeovertime( 1 );
|
|
var_1.alpha = 0;
|
|
wait 1;
|
|
var_1 destroy();
|
|
}
|
|
|
|
handle_starts()
|
|
{
|
|
level.start_struct = spawnstruct();
|
|
common_scripts\utility::create_dvar( "start", "" );
|
|
|
|
if ( getdvar( "scr_generateClipModels" ) != "" && getdvar( "scr_generateClipModels" ) != "0" )
|
|
return;
|
|
|
|
if ( !isdefined( level.start_functions ) )
|
|
level.start_functions = [];
|
|
|
|
var_0 = tolower( getdvar( "start" ) );
|
|
var_1 = get_start_dvars();
|
|
|
|
if ( isdefined( level.start_point ) )
|
|
var_0 = level.start_point;
|
|
|
|
var_2 = 0;
|
|
|
|
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
|
{
|
|
if ( var_0 == var_1[var_3] )
|
|
{
|
|
var_2 = var_3;
|
|
level.start_point = var_1[var_3];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( level.default_start_override ) && !isdefined( level.start_point ) )
|
|
{
|
|
foreach ( var_6, var_5 in var_1 )
|
|
{
|
|
if ( level.default_start_override == var_5 )
|
|
{
|
|
var_2 = var_6;
|
|
level.start_point = var_5;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( level.start_point ) )
|
|
{
|
|
if ( isdefined( level.default_start ) )
|
|
level.start_point = "default";
|
|
else if ( maps\_utility::level_has_start_points() )
|
|
level.start_point = level.start_functions[0]["name"];
|
|
else
|
|
level.start_point = "default";
|
|
}
|
|
|
|
var_7 = getdvarint( "sv_loadingsavegame", 0 );
|
|
|
|
if ( var_7 != 0 )
|
|
{
|
|
var_8 = getdvar( "sv_savegametransient", "" );
|
|
loadstartpointtransient( var_8 );
|
|
|
|
if ( var_8 != "" )
|
|
common_scripts\utility::flag_set( var_8 + "_loaded" );
|
|
}
|
|
else if ( level.start_point != "default" )
|
|
{
|
|
var_9 = level.start_arrays[level.start_point];
|
|
|
|
if ( isdefined( var_9["transient"] ) )
|
|
{
|
|
loadstartpointtransient( var_9["transient"] );
|
|
common_scripts\utility::flag_set( var_9["transient"] + "_loaded" );
|
|
}
|
|
else
|
|
loadstartpointtransient( "" );
|
|
}
|
|
else
|
|
loadstartpointtransient( "" );
|
|
|
|
waittillframeend;
|
|
common_scripts\utility::flag_set( "start_is_set" );
|
|
thread start_menu();
|
|
|
|
if ( level.start_point == "default" )
|
|
{
|
|
if ( isdefined( level.default_start ) )
|
|
level thread [[ level.default_start ]]();
|
|
}
|
|
else
|
|
{
|
|
var_9 = level.start_arrays[level.start_point];
|
|
thread [[ var_9["start_func"] ]]();
|
|
}
|
|
|
|
if ( maps\_utility::is_default_start() )
|
|
{
|
|
var_10 = get_string_for_starts( var_1 );
|
|
setdvar( "start", var_10 );
|
|
}
|
|
|
|
waittillframeend;
|
|
|
|
if ( var_7 != 0 )
|
|
wait 0.1;
|
|
|
|
var_11 = [];
|
|
|
|
if ( !maps\_utility::is_default_start() && level.start_point != "no_game" )
|
|
{
|
|
var_12 = gettime();
|
|
|
|
for ( var_3 = 0; var_3 < level.start_functions.size; var_3++ )
|
|
{
|
|
var_9 = level.start_functions[var_3];
|
|
|
|
if ( var_9["name"] == level.start_point )
|
|
break;
|
|
|
|
if ( !isdefined( var_9["catchup_function"] ) )
|
|
continue;
|
|
|
|
[[ var_9["catchup_function"] ]]();
|
|
}
|
|
}
|
|
|
|
for ( var_3 = var_2; var_3 < level.start_functions.size; var_3++ )
|
|
{
|
|
var_9 = level.start_functions[var_3];
|
|
|
|
if ( !isdefined( var_9["logic_func"] ) )
|
|
continue;
|
|
|
|
if ( already_ran_function( var_9["logic_func"], var_11 ) )
|
|
continue;
|
|
|
|
level.start_struct [[ var_9["logic_func"] ]]();
|
|
var_11[var_11.size] = var_9["logic_func"];
|
|
}
|
|
}
|
|
|
|
already_ran_function( var_0, var_1 )
|
|
{
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
if ( var_3 == var_0 )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
get_string_for_starts( var_0 )
|
|
{
|
|
var_1 = " ** No starts have been set up for this map with maps_utility::add_start().";
|
|
|
|
if ( var_0.size )
|
|
{
|
|
var_1 = " ** ";
|
|
|
|
for ( var_2 = var_0.size - 1; var_2 >= 0; var_2-- )
|
|
var_1 = var_1 + var_0[var_2] + " ";
|
|
}
|
|
|
|
setdvar( "start", var_1 );
|
|
return var_1;
|
|
}
|
|
|
|
create_start( var_0, var_1 )
|
|
{
|
|
var_2 = 1;
|
|
var_3 = ( 0.9, 0.9, 0.9 );
|
|
|
|
if ( var_1 != -1 )
|
|
{
|
|
var_4 = 5;
|
|
|
|
if ( var_1 != var_4 )
|
|
var_2 = 1 - abs( var_4 - var_1 ) / var_4;
|
|
else
|
|
var_3 = ( 1, 1, 0 );
|
|
}
|
|
|
|
if ( var_2 == 0 )
|
|
var_2 = 0.05;
|
|
|
|
var_5 = newhudelem();
|
|
var_5.alignx = "left";
|
|
var_5.aligny = "middle";
|
|
var_5.x = 80;
|
|
var_5.y = 80 + var_1 * 18;
|
|
var_5 settext( var_0 );
|
|
var_5.alpha = 0;
|
|
var_5.foreground = 1;
|
|
var_5.color = var_3;
|
|
var_5.fontscale = 1.75;
|
|
var_5 fadeovertime( 0.5 );
|
|
var_5.alpha = var_2;
|
|
return var_5;
|
|
}
|
|
|
|
start_menu()
|
|
{
|
|
|
|
}
|
|
|
|
start_nogame()
|
|
{
|
|
common_scripts\utility::array_call( getaiarray(), ::delete );
|
|
common_scripts\utility::array_call( getspawnerarray(), ::delete );
|
|
}
|
|
|
|
get_start_dvars()
|
|
{
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < level.start_functions.size; var_1++ )
|
|
var_0[var_0.size] = level.start_functions[var_1]["name"];
|
|
|
|
return var_0;
|
|
}
|
|
|
|
display_starts()
|
|
{
|
|
level.display_starts_pressed = 1;
|
|
|
|
if ( level.start_functions.size <= 0 )
|
|
return;
|
|
|
|
var_0 = get_start_dvars();
|
|
var_0[var_0.size] = "default";
|
|
var_0[var_0.size] = "cancel";
|
|
var_1 = start_list_menu();
|
|
var_2 = create_start( "Selected Start:", -1 );
|
|
var_2.color = ( 1, 1, 1 );
|
|
var_3 = [];
|
|
|
|
for ( var_4 = 0; var_4 < var_0.size; var_4++ )
|
|
{
|
|
var_5 = var_0[var_4];
|
|
var_6 = "[" + var_0[var_4] + "]";
|
|
|
|
if ( var_5 != "cancel" && var_5 != "default" )
|
|
{
|
|
if ( isdefined( level.start_arrays[var_5]["start_loc_string"] ) )
|
|
{
|
|
var_6 = var_6 + " -> ";
|
|
var_6 = var_6 + level.start_arrays[var_5]["start_loc_string"];
|
|
}
|
|
}
|
|
|
|
var_3[var_3.size] = var_6;
|
|
}
|
|
|
|
var_7 = var_0.size - 1;
|
|
var_8 = 0;
|
|
var_9 = 0;
|
|
|
|
for ( var_10 = 0; var_7 > 0; var_7-- )
|
|
{
|
|
if ( var_0[var_7] == level.start_point )
|
|
{
|
|
var_10 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( !var_10 )
|
|
var_7 = var_0.size - 1;
|
|
|
|
start_list_settext( var_1, var_3, var_7 );
|
|
var_11 = var_7;
|
|
|
|
for (;;)
|
|
{
|
|
if ( !level.player buttonpressed( "F10" ) )
|
|
level.display_starts_pressed = 0;
|
|
|
|
if ( var_11 != var_7 )
|
|
{
|
|
start_list_settext( var_1, var_3, var_7 );
|
|
var_11 = var_7;
|
|
}
|
|
|
|
if ( !var_8 )
|
|
{
|
|
if ( level.player buttonpressed( "UPARROW" ) || level.player buttonpressed( "DPAD_UP" ) || level.player buttonpressed( "APAD_UP" ) )
|
|
{
|
|
var_8 = 1;
|
|
var_7--;
|
|
}
|
|
}
|
|
else if ( !level.player buttonpressed( "UPARROW" ) && !level.player buttonpressed( "DPAD_UP" ) && !level.player buttonpressed( "APAD_UP" ) )
|
|
var_8 = 0;
|
|
|
|
if ( !var_9 )
|
|
{
|
|
if ( level.player buttonpressed( "DOWNARROW" ) || level.player buttonpressed( "DPAD_DOWN" ) || level.player buttonpressed( "APAD_DOWN" ) )
|
|
{
|
|
var_9 = 1;
|
|
var_7++;
|
|
}
|
|
}
|
|
else if ( !level.player buttonpressed( "DOWNARROW" ) && !level.player buttonpressed( "DPAD_DOWN" ) && !level.player buttonpressed( "APAD_DOWN" ) )
|
|
var_9 = 0;
|
|
|
|
if ( var_7 < 0 )
|
|
var_7 = var_0.size - 1;
|
|
|
|
if ( var_7 >= var_0.size )
|
|
var_7 = 0;
|
|
|
|
if ( level.player buttonpressed( "BUTTON_B" ) )
|
|
{
|
|
start_display_cleanup( var_1, var_2 );
|
|
break;
|
|
}
|
|
|
|
if ( level.player buttonpressed( "kp_enter" ) || level.player buttonpressed( "BUTTON_A" ) || level.player buttonpressed( "enter" ) )
|
|
{
|
|
if ( var_0[var_7] == "cancel" )
|
|
{
|
|
start_display_cleanup( var_1, var_2 );
|
|
break;
|
|
}
|
|
|
|
setdvar( "start", var_0[var_7] );
|
|
level.player openpopupmenu( "start" );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
start_list_menu()
|
|
{
|
|
var_0 = [];
|
|
|
|
for ( var_1 = 0; var_1 < 11; var_1++ )
|
|
{
|
|
var_2 = create_start( "", var_1 );
|
|
var_0[var_0.size] = var_2;
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
start_list_settext( var_0, var_1, var_2 )
|
|
{
|
|
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
|
|
{
|
|
var_4 = var_3 + ( var_2 - 5 );
|
|
|
|
if ( isdefined( var_1[var_4] ) )
|
|
var_5 = var_1[var_4];
|
|
else
|
|
var_5 = "";
|
|
|
|
var_0[var_3] settext( var_5 );
|
|
}
|
|
}
|
|
|
|
start_display_cleanup( var_0, var_1 )
|
|
{
|
|
var_1 destroy();
|
|
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
var_0[var_2] destroy();
|
|
}
|
|
|
|
background_block()
|
|
{
|
|
self.origin = self.origin - self.script_bg_offset;
|
|
}
|
|
|
|
set_player_viewhand_model( var_0 )
|
|
{
|
|
level.player_viewhand_model = var_0;
|
|
precachemodel( level.player_viewhand_model );
|
|
}
|
|
|
|
setobjectivetextcolors()
|
|
{
|
|
var_0 = "1.0 1.0 1.0";
|
|
var_1 = "0.9 0.9 0.9";
|
|
var_2 = "0.85 0.85 0.85";
|
|
setsaveddvar( "con_typewriterColorBase", var_0 );
|
|
}
|
|
|
|
ammo_pickup( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
if ( var_0 == "grenade_launcher" )
|
|
{
|
|
var_1[var_1.size] = "alt_m4_grenadier";
|
|
var_1[var_1.size] = "alt_m4m203_acog";
|
|
var_1[var_1.size] = "alt_m4m203_acog_payback";
|
|
var_1[var_1.size] = "alt_m4m203_eotech";
|
|
var_1[var_1.size] = "alt_m4m203_motion_tracker";
|
|
var_1[var_1.size] = "alt_m4m203_reflex";
|
|
var_1[var_1.size] = "alt_m4m203_reflex_arctic";
|
|
var_1[var_1.size] = "alt_m4m203_silencer";
|
|
var_1[var_1.size] = "alt_m4m203_silencer_reflex";
|
|
var_1[var_1.size] = "alt_m16_grenadier";
|
|
var_1[var_1.size] = "alt_ak47_grenadier";
|
|
var_1[var_1.size] = "alt_ak47_desert_grenadier";
|
|
var_1[var_1.size] = "alt_ak47_digital_grenadier";
|
|
var_1[var_1.size] = "alt_ak47_fall_grenadier";
|
|
var_1[var_1.size] = "alt_ak47_woodland_grenadier";
|
|
}
|
|
else if ( var_0 == "rpg" )
|
|
{
|
|
var_1[var_1.size] = "rpg";
|
|
var_1[var_1.size] = "rpg_player";
|
|
var_1[var_1.size] = "rpg_straight";
|
|
}
|
|
else if ( var_0 == "c4" )
|
|
var_1[var_1.size] = "c4";
|
|
else if ( var_0 == "claymore" )
|
|
var_1[var_1.size] = "claymore";
|
|
else if ( var_0 == "556" )
|
|
{
|
|
var_1[var_1.size] = "m4_grenadier";
|
|
var_1[var_1.size] = "m4_grunt";
|
|
var_1[var_1.size] = "m4_sd_cloth";
|
|
var_1[var_1.size] = "m4_shotgun";
|
|
var_1[var_1.size] = "m4_silencer";
|
|
var_1[var_1.size] = "m4_silencer_acog";
|
|
var_1[var_1.size] = "m4m203_acog";
|
|
var_1[var_1.size] = "m4m203_acog_payback";
|
|
var_1[var_1.size] = "m4m203_eotech";
|
|
var_1[var_1.size] = "m4m203_motion_tracker";
|
|
var_1[var_1.size] = "m4m203_reflex";
|
|
var_1[var_1.size] = "m4m203_reflex_arctic";
|
|
var_1[var_1.size] = "m4m203_silencer";
|
|
var_1[var_1.size] = "m4m203_silencer_reflex";
|
|
var_1[var_1.size] = "m4m203_silencer";
|
|
}
|
|
else if ( var_0 == "762" )
|
|
{
|
|
var_1[var_1.size] = "ak47";
|
|
var_1[var_1.size] = "ak47_acog";
|
|
var_1[var_1.size] = "ak47_eotech";
|
|
var_1[var_1.size] = "ak47_grenadier";
|
|
var_1[var_1.size] = "ak47_reflex";
|
|
var_1[var_1.size] = "ak47_shotgun";
|
|
var_1[var_1.size] = "ak47_silencer";
|
|
var_1[var_1.size] = "ak47_thermal";
|
|
var_1[var_1.size] = "ak47_desert";
|
|
var_1[var_1.size] = "ak47_desert_acog";
|
|
var_1[var_1.size] = "ak47_desert_eotech";
|
|
var_1[var_1.size] = "ak47_desert_grenadier";
|
|
var_1[var_1.size] = "ak47_desert_reflex";
|
|
var_1[var_1.size] = "ak47_digital";
|
|
var_1[var_1.size] = "ak47_digital_acog";
|
|
var_1[var_1.size] = "ak47_digital_eotech";
|
|
var_1[var_1.size] = "ak47_digital_grenadier";
|
|
var_1[var_1.size] = "ak47_digital_reflex";
|
|
var_1[var_1.size] = "ak47_fall";
|
|
var_1[var_1.size] = "ak47_fall_acog";
|
|
var_1[var_1.size] = "ak47_fall_eotech";
|
|
var_1[var_1.size] = "ak47_fall_grenadier";
|
|
var_1[var_1.size] = "ak47_fall_reflex";
|
|
var_1[var_1.size] = "ak47_woodland";
|
|
var_1[var_1.size] = "ak47_woodland_acog";
|
|
var_1[var_1.size] = "ak47_woodland_eotech";
|
|
var_1[var_1.size] = "ak47_woodland_grenadier";
|
|
var_1[var_1.size] = "ak47_woodland_reflex";
|
|
}
|
|
else if ( var_0 == "45" )
|
|
{
|
|
var_1[var_1.size] = "ump45";
|
|
var_1[var_1.size] = "ump45_acog";
|
|
var_1[var_1.size] = "ump45_eotech";
|
|
var_1[var_1.size] = "ump45_reflex";
|
|
var_1[var_1.size] = "ump45_silencer";
|
|
var_1[var_1.size] = "ump45_arctic";
|
|
var_1[var_1.size] = "ump45_arctic_acog";
|
|
var_1[var_1.size] = "ump45_arctic_eotech";
|
|
var_1[var_1.size] = "ump45_arctic_reflex";
|
|
var_1[var_1.size] = "ump45_digital";
|
|
var_1[var_1.size] = "ump45_digital_acog";
|
|
var_1[var_1.size] = "ump45_digital_eotech";
|
|
var_1[var_1.size] = "ump45_digital_reflex";
|
|
}
|
|
else if ( var_0 == "pistol" )
|
|
{
|
|
var_1[var_1.size] = "beretta";
|
|
var_1[var_1.size] = "beretta393";
|
|
var_1[var_1.size] = "usp";
|
|
var_1[var_1.size] = "usp_scripted";
|
|
var_1[var_1.size] = "usp_silencer";
|
|
var_1[var_1.size] = "glock";
|
|
}
|
|
|
|
var_2 = spawn( "trigger_radius", self.origin, 0, 25, 32 );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "allow_ammo_pickups" );
|
|
var_2 waittill( "trigger", var_3 );
|
|
|
|
if ( !common_scripts\utility::flag( "allow_ammo_pickups" ) )
|
|
continue;
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
continue;
|
|
|
|
if ( !isplayer( var_3 ) )
|
|
continue;
|
|
|
|
var_4 = undefined;
|
|
var_5 = undefined;
|
|
var_6 = var_3 getweaponslistall();
|
|
|
|
for ( var_7 = 0; var_7 < var_6.size; var_7++ )
|
|
{
|
|
for ( var_8 = 0; var_8 < var_1.size; var_8++ )
|
|
{
|
|
if ( var_6[var_7] == var_1[var_8] )
|
|
var_4 = var_6[var_7];
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_4 ) && var_0 == "claymore" )
|
|
{
|
|
var_5 = 1;
|
|
var_4 = "claymore";
|
|
break;
|
|
}
|
|
|
|
if ( !isdefined( var_4 ) && var_0 == "c4" )
|
|
{
|
|
var_5 = 1;
|
|
var_4 = "c4";
|
|
break;
|
|
}
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
continue;
|
|
|
|
if ( var_3 getfractionmaxammo( var_4 ) >= 1 )
|
|
continue;
|
|
|
|
break;
|
|
}
|
|
|
|
if ( isdefined( var_5 ) )
|
|
var_3 giveweapon( var_4 );
|
|
else
|
|
{
|
|
var_9 = 1;
|
|
|
|
if ( var_0 == "556" || var_0 == "762" )
|
|
var_9 = 30;
|
|
else if ( var_0 == "45" )
|
|
var_9 = 25;
|
|
else if ( var_0 == "pistol" )
|
|
var_9 = 15;
|
|
|
|
var_3 setweaponammostock( var_4, var_3 getweaponammostock( var_4 ) + var_9 );
|
|
}
|
|
|
|
var_3 playlocalsound( "grenade_pickup" );
|
|
var_2 delete();
|
|
|
|
if ( isdefined( self ) )
|
|
self delete();
|
|
}
|
|
|
|
remove_level_first_frame()
|
|
{
|
|
wait 0.05;
|
|
level.first_frame = -1;
|
|
}
|
|
|
|
load_friendlies()
|
|
{
|
|
if ( isdefined( game["total characters"] ) )
|
|
var_0 = game["total characters"];
|
|
else
|
|
return;
|
|
|
|
var_1 = getaiarray( "allies" );
|
|
var_2 = var_1.size;
|
|
var_3 = 0;
|
|
var_4 = getspawnerteamarray( "allies" );
|
|
var_5 = var_4.size;
|
|
var_6 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
if ( var_2 <= 0 && var_5 <= 0 || var_0 <= 0 )
|
|
return;
|
|
|
|
if ( var_2 > 0 )
|
|
{
|
|
if ( isdefined( var_1[var_3].script_friendname ) )
|
|
{
|
|
var_2--;
|
|
var_3++;
|
|
continue;
|
|
}
|
|
|
|
var_1[var_3] codescripts\character::new();
|
|
var_1[var_3] thread codescripts\character::load( game["character" + ( var_0 - 1 )] );
|
|
var_2--;
|
|
var_3++;
|
|
var_0--;
|
|
continue;
|
|
}
|
|
|
|
if ( var_5 > 0 )
|
|
{
|
|
if ( isdefined( var_4[var_6].script_friendname ) )
|
|
{
|
|
var_5--;
|
|
var_6++;
|
|
continue;
|
|
}
|
|
|
|
var_7 = game["character" + ( var_0 - 1 )];
|
|
maps\_utility::precache( var_7["model"] );
|
|
maps\_utility::precache( var_7["model"] );
|
|
var_4[var_6] thread maps\_utility::spawn_setcharacter( game["character" + ( var_0 - 1 )] );
|
|
var_5--;
|
|
var_6++;
|
|
var_0--;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
check_flag_for_stat_tracking( var_0 )
|
|
{
|
|
if ( !common_scripts\utility::issuffix( var_0, "aa_" ) )
|
|
return;
|
|
|
|
[[ level.sp_stat_tracking_func ]]( var_0 );
|
|
}
|
|
|
|
precache_script_models()
|
|
{
|
|
waittillframeend;
|
|
|
|
if ( !isdefined( level.scr_model ) )
|
|
return;
|
|
|
|
var_0 = getarraykeys( level.scr_model );
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
{
|
|
if ( isarray( level.scr_model[var_0[var_1]] ) )
|
|
{
|
|
for ( var_2 = 0; var_2 < level.scr_model[var_0[var_1]].size; var_2++ )
|
|
precachemodel( level.scr_model[var_0[var_1]][var_2] );
|
|
|
|
continue;
|
|
}
|
|
|
|
precachemodel( level.scr_model[var_0[var_1]] );
|
|
}
|
|
}
|
|
|
|
player_death_detection()
|
|
{
|
|
setdvar( "player_died_recently", "0" );
|
|
thread player_died_recently_degrades();
|
|
level maps\_utility::add_wait( common_scripts\utility::flag_wait, "missionfailed" );
|
|
level.player maps\_utility::add_wait( maps\_utility::waittill_msg, "death" );
|
|
maps\_utility::do_wait_any();
|
|
var_0 = [];
|
|
var_0[0] = 70;
|
|
var_0[1] = 30;
|
|
var_0[2] = 0;
|
|
var_0[3] = 0;
|
|
setdvar( "player_died_recently", var_0[level.gameskill] );
|
|
}
|
|
|
|
player_died_recently_degrades()
|
|
{
|
|
for (;;)
|
|
{
|
|
var_0 = getdvarint( "player_died_recently", 0 );
|
|
|
|
if ( var_0 > 0 )
|
|
{
|
|
var_0 = var_0 - 5;
|
|
setdvar( "player_died_recently", var_0 );
|
|
}
|
|
|
|
wait 5;
|
|
}
|
|
}
|
|
|
|
recon_player()
|
|
{
|
|
self notify( "new_recon_player" );
|
|
self endon( "new_recon_player" );
|
|
self waittill( "death", var_0, var_1, var_2 );
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
var_2 = "script_kill";
|
|
|
|
var_3 = 0;
|
|
var_4 = "none";
|
|
var_5 = ( 0, 0, 0 );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
var_4 = var_0.classname;
|
|
var_5 = var_0.origin;
|
|
var_6 = vectornormalize( var_5 - self.origin );
|
|
var_7 = anglestoforward( self getplayerangles() );
|
|
var_3 = vectordot( var_6, var_7 );
|
|
}
|
|
|
|
reconspatialevent( self.origin, "script_player_death: playerid %s, enemy %s, enemyposition %v, enemydotproduct %f, cause %s, weapon %s", self.unique_id, var_4, var_5, var_3, var_1, var_2 );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
reconspatialevent( var_0.origin, "script_player_killer: playerid %s, enemy %s, playerposition %v, enemydotproduct %f, cause %s, weapon %s", self.unique_id, var_4, self.origin, var_3, var_1, var_2 );
|
|
|
|
bbprint( "kills", "attackername %s attackerteam %s attackerx %f attackery %f attackerz %f attackerweapon %s victimx %f victimy %f victimz %f victimname %s victimteam %s damage %i damagetype %s damagelocation %s attackerisbot %i victimisbot %i timesincespawn %f", var_0.classname, "enemy", var_0.origin[0], var_0.origin[1], var_0.origin[2], var_2, self.origin[0], self.origin[1], self.origin[2], self.unique_id, "player", 0, var_1, "", 1, 0, getlevelticks() * 0.05 );
|
|
}
|
|
|
|
recon_player_downed()
|
|
{
|
|
self notify( "new_player_downed_recon" );
|
|
self endon( "new_player_downed_recon" );
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "player_downed" );
|
|
var_0 = getlevelticks() * 0.05;
|
|
var_1 = var_0;
|
|
|
|
if ( isdefined( self.last_downed_time ) )
|
|
var_0 = var_1 - self.last_downed_time;
|
|
|
|
self.last_downed_time = var_1;
|
|
reconspatialevent( self.origin, "script_player_downed: playerid %s, leveltime %d, deltatime %d", self.unique_id, var_1, var_0 );
|
|
}
|
|
}
|
|
|
|
init_level_players()
|
|
{
|
|
level.players = getentarray( "player", "classname" );
|
|
|
|
for ( var_0 = 0; var_0 < level.players.size; var_0++ )
|
|
level.players[var_0].unique_id = "player" + var_0;
|
|
|
|
level.player = level.players[0];
|
|
|
|
if ( level.players.size > 1 )
|
|
level.player2 = level.players[1];
|
|
|
|
level notify( "level.players initialized" );
|
|
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
var_2 thread recon_player();
|
|
|
|
if ( maps\_utility::is_specialop() )
|
|
var_2 thread recon_player_downed();
|
|
}
|
|
}
|
|
|
|
kill_all_players_trigger()
|
|
{
|
|
self waittill( "trigger", var_0 );
|
|
maps\_utility::kill_wrapper();
|
|
}
|
|
|
|
watchweaponchange()
|
|
{
|
|
if ( !isdefined( level.friendly_thermal_reflector_effect ) )
|
|
level.friendly_thermal_reflector_effect = loadfx( "fx/misc/thermal_tapereflect_inverted" );
|
|
|
|
self endon( "death" );
|
|
var_0 = self getcurrentweapon();
|
|
|
|
if ( weap_has_thermal( var_0 ) )
|
|
thread thermal_tracker();
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_change", var_1 );
|
|
|
|
if ( weap_has_thermal( var_1 ) )
|
|
{
|
|
thread thermal_tracker();
|
|
continue;
|
|
}
|
|
|
|
self notify( "acogThermalTracker" );
|
|
}
|
|
}
|
|
|
|
weap_has_thermal( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
if ( var_0 == "none" )
|
|
return 0;
|
|
|
|
if ( weaponhasthermalscope( var_0 ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
thermal_tracker()
|
|
{
|
|
self endon( "death" );
|
|
self notify( "acogThermalTracker" );
|
|
self endon( "acogThermalTracker" );
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = var_0;
|
|
var_0 = self playerads();
|
|
|
|
if ( turn_thermal_on( var_0, var_1 ) )
|
|
thermal_effectson();
|
|
else if ( turn_thermal_off( var_0, var_1 ) )
|
|
thermal_effectsoff();
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
turn_thermal_on( var_0, var_1 )
|
|
{
|
|
if ( var_0 <= var_1 )
|
|
return 0;
|
|
|
|
if ( var_0 <= 0.65 )
|
|
return 0;
|
|
|
|
return !isdefined( self.is_in_thermal_vision );
|
|
}
|
|
|
|
turn_thermal_off( var_0, var_1 )
|
|
{
|
|
if ( var_0 >= var_1 )
|
|
return 0;
|
|
|
|
if ( var_0 >= 0.8 )
|
|
return 0;
|
|
|
|
return isdefined( self.is_in_thermal_vision );
|
|
}
|
|
|
|
thermal_effectson()
|
|
{
|
|
self.is_in_thermal_vision = 1;
|
|
var_0 = getaiarray( "allies" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isdefined( var_2.has_thermal_fx ) )
|
|
continue;
|
|
|
|
var_2.has_thermal_fx = 1;
|
|
var_2 thread loop_friendly_thermal_reflector_effect( self.unique_id );
|
|
}
|
|
|
|
if ( maps\_utility::is_coop() )
|
|
{
|
|
var_4 = maps\_utility::get_other_player( self );
|
|
|
|
if ( !isdefined( var_4.has_thermal_fx ) )
|
|
{
|
|
var_4.has_thermal_fx = 1;
|
|
var_4 thread loop_friendly_thermal_reflector_effect( self.unique_id, self );
|
|
}
|
|
}
|
|
}
|
|
|
|
thermal_effectsoff()
|
|
{
|
|
self.is_in_thermal_vision = undefined;
|
|
level notify( "thermal_fx_off" + self.unique_id );
|
|
var_0 = getaiarray( "allies" );
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
var_0[var_1].has_thermal_fx = undefined;
|
|
|
|
if ( maps\_utility::is_coop() )
|
|
{
|
|
var_2 = maps\_utility::get_other_player( self );
|
|
var_2.has_thermal_fx = undefined;
|
|
}
|
|
}
|
|
|
|
loop_friendly_thermal_reflector_effect( var_0, var_1 )
|
|
{
|
|
if ( isdefined( self.has_no_ir ) )
|
|
return;
|
|
|
|
level endon( "thermal_fx_off" + var_0 );
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
playfxontagforclients( level.friendly_thermal_reflector_effect, self, "J_Spine4", var_1 );
|
|
else
|
|
playfxontag( level.friendly_thermal_reflector_effect, self, "J_Spine4" );
|
|
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
claymore_pickup_think_global()
|
|
{
|
|
precacheitem( "claymore" );
|
|
self endon( "deleted" );
|
|
self setcursorhint( "HINT_NOICON" );
|
|
self sethintstring( &"WEAPON_CLAYMORE_PICKUP" );
|
|
self makeusable();
|
|
var_0 = weaponmaxammo( "claymore" ) + weaponclipsize( "claymore" );
|
|
|
|
if ( isdefined( self.script_ammo_clip ) )
|
|
var_0 = self.script_ammo_clip;
|
|
|
|
while ( var_0 > 0 )
|
|
{
|
|
self waittill( "trigger", var_1 );
|
|
var_1 playsound( "weap_pickup" );
|
|
var_2 = 0;
|
|
|
|
if ( !var_1 hasweapon( "claymore" ) )
|
|
var_1 giveweapon( "claymore" );
|
|
else
|
|
var_2 = var_1 getammocount( "claymore" );
|
|
|
|
if ( isdefined( var_0 ) && var_0 > 0 )
|
|
{
|
|
var_0 = var_2 + var_0;
|
|
var_3 = weaponmaxammo( "claymore" );
|
|
var_4 = weaponclipsize( "claymore" );
|
|
|
|
if ( var_0 >= var_4 )
|
|
{
|
|
var_0 = var_0 - var_4;
|
|
var_1 setweaponammoclip( "claymore", var_4 );
|
|
}
|
|
|
|
if ( var_0 >= var_3 )
|
|
{
|
|
var_0 = var_0 - var_3;
|
|
var_1 setweaponammostock( "claymore", var_3 );
|
|
}
|
|
else if ( var_0 > 0 )
|
|
{
|
|
var_1 setweaponammostock( "claymore", var_0 );
|
|
var_0 = 0;
|
|
}
|
|
}
|
|
else
|
|
var_1 givemaxammo( "claymore" );
|
|
|
|
var_5 = 4;
|
|
|
|
if ( isdefined( var_1.remotemissile_actionslot ) && var_1.remotemissile_actionslot == 4 )
|
|
var_5 = 2;
|
|
|
|
var_1 setactionslot( var_5, "weapon", "claymore" );
|
|
var_1 switchtoweapon( "claymore" );
|
|
}
|
|
|
|
if ( isdefined( self.target ) )
|
|
{
|
|
var_6 = getentarray( self.target, "targetname" );
|
|
|
|
foreach ( var_8 in var_6 )
|
|
var_8 delete();
|
|
}
|
|
|
|
self makeunusable();
|
|
self delete();
|
|
}
|
|
|
|
ammo_cache_think_global( var_0 )
|
|
{
|
|
self endon( "remove_ammo_cache" );
|
|
self.use_trigger = spawn( "script_model", self.origin + ( 0, 0, 28 ) );
|
|
self.use_trigger setmodel( "tag_origin" );
|
|
self.use_trigger makeusable();
|
|
self.use_trigger setcursorhint( "HINT_NOICON" );
|
|
var_1 = &"WEAPON_CACHE_USE_HINT";
|
|
|
|
if ( getdvar( "consoleGame" ) == "true" )
|
|
var_1 = &"WEAPON_CACHE_USE_CONTROLLER_HINT";
|
|
|
|
self.use_trigger sethintstring( var_1 );
|
|
|
|
if ( !isdefined( var_0 ) || isdefined( var_0 ) && var_0 )
|
|
thread ammo_icon_think();
|
|
|
|
for (;;)
|
|
{
|
|
self.use_trigger waittill( "trigger", var_2 );
|
|
|
|
if ( isdefined( var_2.dont_allow_ammo_cache ) )
|
|
continue;
|
|
|
|
var_2.using_ammo_cache = 1;
|
|
self notify( "used_ammo_cache" );
|
|
self.use_trigger makeunusable();
|
|
var_2 playsound( "player_refill_all_ammo" );
|
|
var_2 disableweapons();
|
|
var_3 = var_2 getweaponslistall();
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( var_5 == "claymore" )
|
|
continue;
|
|
|
|
if ( var_5 == "c4" )
|
|
continue;
|
|
|
|
var_2 givemaxammo( var_5 );
|
|
var_6 = weaponclipsize( var_5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
{
|
|
if ( var_2 getweaponammoclip( var_5 ) < var_6 )
|
|
var_2 setweaponammoclip( var_5, var_6 );
|
|
}
|
|
}
|
|
|
|
wait 1.5;
|
|
var_2 enableweapons();
|
|
self.use_trigger makeusable();
|
|
var_2.using_ammo_cache = undefined;
|
|
}
|
|
}
|
|
|
|
ammo_icon_think()
|
|
{
|
|
self endon( "remove_ammo_cache" );
|
|
var_0 = spawn( "trigger_radius", self.origin, 0, 320, 72 );
|
|
var_1 = newhudelem();
|
|
var_1 setshader( "waypoint_ammo", 1, 1 );
|
|
var_1.alpha = 0;
|
|
var_1.color = ( 1, 1, 1 );
|
|
var_1.x = self.origin[0];
|
|
var_1.y = self.origin[1];
|
|
var_1.z = self.origin[2] + 16;
|
|
var_1 setwaypoint( 1, 1 );
|
|
self.ammo_icon = var_1;
|
|
self.ammo_icon_trig = var_0;
|
|
|
|
if ( isdefined( self.icon_always_show ) && self.icon_always_show )
|
|
{
|
|
ammo_icon_fade_in( var_1 );
|
|
return;
|
|
}
|
|
|
|
wait 0.05;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "trigger", var_2 );
|
|
|
|
if ( !isplayer( var_2 ) )
|
|
continue;
|
|
|
|
while ( var_2 istouching( var_0 ) )
|
|
{
|
|
var_3 = 1;
|
|
var_4 = var_2 getcurrentweapon();
|
|
|
|
if ( var_4 == "none" )
|
|
var_3 = 0;
|
|
else if ( var_2 getfractionmaxammo( var_4 ) > 0.9 )
|
|
var_3 = 0;
|
|
|
|
if ( maps\_utility::player_looking_at( self.origin, 0.8, 1 ) && var_3 )
|
|
ammo_icon_fade_in( var_1 );
|
|
else
|
|
ammo_icon_fade_out( var_1 );
|
|
|
|
wait 0.25;
|
|
}
|
|
|
|
ammo_icon_fade_out( var_1 );
|
|
}
|
|
}
|
|
|
|
ammo_icon_fade_in( var_0 )
|
|
{
|
|
if ( var_0.alpha != 0 )
|
|
return;
|
|
|
|
var_0 fadeovertime( 0.2 );
|
|
var_0.alpha = 0.3;
|
|
wait 0.2;
|
|
}
|
|
|
|
ammo_icon_fade_out( var_0 )
|
|
{
|
|
if ( var_0.alpha == 0 )
|
|
return;
|
|
|
|
var_0 fadeovertime( 0.2 );
|
|
var_0.alpha = 0;
|
|
wait 0.2;
|
|
}
|
|
|
|
window_destroy()
|
|
{
|
|
var_0 = getglass( self.target );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
level waittillmatch( "glass_destroyed", var_0 );
|
|
self delete();
|
|
}
|
|
|
|
global_empty_callback( var_0, var_1, var_2, var_3, var_4 )
|
|
{
|
|
|
|
}
|
|
|
|
weapon_list_debug()
|
|
{
|
|
common_scripts\utility::create_dvar( "weaponlist", "0" );
|
|
|
|
if ( !getdvarint( "weaponlist" ) )
|
|
return;
|
|
|
|
var_0 = getentarray();
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( !isdefined( var_3.code_classname ) )
|
|
continue;
|
|
|
|
if ( issubstr( var_3.code_classname, "weapon" ) )
|
|
var_1[var_3.classname] = 1;
|
|
}
|
|
|
|
foreach ( var_7, var_6 in var_1 )
|
|
{
|
|
|
|
}
|
|
|
|
var_8 = getspawnerarray();
|
|
var_9 = [];
|
|
|
|
foreach ( var_11 in var_8 )
|
|
var_9[var_11.code_classname] = 1;
|
|
|
|
foreach ( var_14, var_6 in var_9 )
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
slowmo_system_init()
|
|
{
|
|
level.slowmo = spawnstruct();
|
|
slowmo_system_defaults();
|
|
notifyoncommand( "_cheat_player_press_slowmo", "+melee" );
|
|
notifyoncommand( "_cheat_player_press_slowmo", "+melee_breath" );
|
|
notifyoncommand( "_cheat_player_press_slowmo", "+melee_zoom" );
|
|
}
|
|
|
|
slowmo_system_defaults()
|
|
{
|
|
level.slowmo.lerp_time_in = 0.0;
|
|
level.slowmo.lerp_time_out = 0.25;
|
|
level.slowmo.speed_slow = 0.4;
|
|
level.slowmo.speed_norm = 1.0;
|
|
}
|
|
|
|
add_no_game_starts()
|
|
{
|
|
var_0 = getentarray( "script_origin_start_nogame", "classname" );
|
|
|
|
if ( !var_0.size )
|
|
return;
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( !isdefined( var_2.script_startname ) )
|
|
continue;
|
|
|
|
maps\_utility::add_start( "no_game_" + var_2.script_startname, ::start_nogame );
|
|
}
|
|
}
|
|
|
|
do_no_game_start()
|
|
{
|
|
if ( !maps\_utility::is_no_game_start() )
|
|
return;
|
|
|
|
setsaveddvar( "ufoHitsTriggers", "1" );
|
|
level.stop_load = 1;
|
|
|
|
if ( isdefined( level.custom_no_game_setupfunc ) )
|
|
level [[ level.custom_no_game_setupfunc ]]();
|
|
|
|
maps\_loadout::init_loadout();
|
|
maps\_audio::init_audio();
|
|
maps\_global_fx::main();
|
|
do_no_game_start_teleport();
|
|
common_scripts\utility::array_call( getentarray( "truckjunk", "targetname" ), ::delete );
|
|
common_scripts\utility::array_call( getentarray( "truckjunk", "script_noteworthy" ), ::delete );
|
|
level waittill( "eternity" );
|
|
}
|
|
|
|
do_no_game_start_teleport()
|
|
{
|
|
var_0 = getentarray( "script_origin_start_nogame", "classname" );
|
|
|
|
if ( !var_0.size )
|
|
return;
|
|
|
|
var_0 = sortbydistance( var_0, level.player.origin );
|
|
|
|
if ( level.start_point == "no_game" )
|
|
{
|
|
level.player maps\_utility::teleport_player( var_0[0] );
|
|
return;
|
|
}
|
|
|
|
var_1 = getsubstr( level.start_point, 8 );
|
|
var_2 = 0;
|
|
|
|
foreach ( var_4 in var_0 )
|
|
{
|
|
if ( !isdefined( var_4.script_startname ) )
|
|
continue;
|
|
|
|
if ( var_1 != var_4.script_startname )
|
|
continue;
|
|
|
|
if ( isdefined( var_4.script_visionset ) )
|
|
maps\_utility::vision_set_fog_changes( var_4.script_visionset, 0 );
|
|
|
|
level.player maps\_utility::teleport_player( var_4 );
|
|
var_2 = 1;
|
|
break;
|
|
}
|
|
|
|
if ( !var_2 )
|
|
level.player maps\_utility::teleport_player( var_0[0] );
|
|
}
|
|
|
|
init_animsounds()
|
|
{
|
|
level.animsounds = [];
|
|
level.animsound_aliases = [];
|
|
waittillframeend;
|
|
waittillframeend;
|
|
var_0 = getarraykeys( level.scr_notetrack );
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
init_notetracks_for_animname( var_0[var_1] );
|
|
|
|
var_0 = getarraykeys( level.scr_animsound );
|
|
|
|
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
|
init_animsounds_for_animname( var_0[var_1] );
|
|
}
|
|
|
|
init_animsounds_for_animname( var_0 )
|
|
{
|
|
var_1 = getarraykeys( level.scr_animsound[var_0] );
|
|
|
|
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
|
|
{
|
|
var_3 = var_1[var_2];
|
|
var_4 = level.scr_animsound[var_0][var_3];
|
|
level.animsound_aliases[var_0][var_3]["#" + var_3]["soundalias"] = var_4;
|
|
level.animsound_aliases[var_0][var_3]["#" + var_3]["created_by_animSound"] = 1;
|
|
}
|
|
}
|
|
|
|
init_notetracks_for_animname( var_0 )
|
|
{
|
|
foreach ( var_10, var_2 in level.scr_notetrack[var_0] )
|
|
{
|
|
foreach ( var_9, var_4 in var_2 )
|
|
{
|
|
foreach ( var_6 in var_4 )
|
|
{
|
|
var_7 = var_6["sound"];
|
|
|
|
if ( !isdefined( var_7 ) )
|
|
continue;
|
|
|
|
level.animsound_aliases[var_0][var_10][var_9]["soundalias"] = var_7;
|
|
|
|
if ( isdefined( var_6["created_by_animSound"] ) )
|
|
level.animsound_aliases[var_0][var_10][var_9]["created_by_animSound"] = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
default_footsteps()
|
|
{
|
|
animscripts\utility::setfootstepeffect( "default", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "asphalt", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "brick", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "carpet", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "cloth", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "concrete", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "cushion", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "dirt", loadfx( "fx/impacts/footstep_dust" ) );
|
|
animscripts\utility::setfootstepeffect( "foliage", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "grass", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "gravel", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "mud", loadfx( "fx/impacts/footstep_mud" ) );
|
|
animscripts\utility::setfootstepeffect( "rock", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "sand", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "wood", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "water", loadfx( "fx/impacts/footstep_water" ) );
|
|
animscripts\utility::setfootstepeffect( "snow", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffect( "ice", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "default", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "asphalt", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "brick", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "carpet", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "cloth", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "concrete", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "cushion", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "dirt", loadfx( "fx/impacts/footstep_dust" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "foliage", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "grass", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "gravel", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "mud", loadfx( "fx/impacts/footstep_mud" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "rock", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "sand", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "wood", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "water", loadfx( "fx/impacts/footstep_water" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "snow", loadfx( "fx/misc/blank" ) );
|
|
animscripts\utility::setfootstepeffectsmall( "ice", loadfx( "fx/misc/blank" ) );
|
|
var_0 = "bodyfall small";
|
|
var_1 = "J_SpineLower";
|
|
var_2 = "bodyfall_";
|
|
var_3 = "_small";
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "dirt", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "concrete", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "asphalt", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "rock", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
var_4 = [ "brick", "carpet", "foliage", "grass", "gravel", "ice", "metal", "painted metal", "mud", "plaster", "sand", "snow", "slush", "water", "wood", "ceramic" ];
|
|
|
|
foreach ( var_6 in var_4 )
|
|
animscripts\utility::setnotetracksound( var_0, var_6, var_2, var_3 );
|
|
|
|
var_0 = "bodyfall small";
|
|
var_1 = "J_SpineLower";
|
|
var_2 = "bodyfall_";
|
|
var_3 = "_large";
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "dirt", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "concrete", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "asphalt", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
animscripts\utility::setnotetrackeffect( var_0, var_1, "rock", loadfx( "fx/impacts/bodyfall_default_large_runner" ), var_2, var_3 );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
animscripts\utility::setnotetracksound( var_0, var_6, var_2, var_3 );
|
|
}
|