Posts
208
Respect
27Add +1
Forum Rank
Mr. Elemental
Primary Group
Member
Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!/*
Generated by Script Placer Z © 2013-2015
Created by Jordy Rymenants
For support, visit [url=http://www.codscript.net]www.codscript.net[/url]
*/
// Utilities
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_zombiemode_zone_manager;
#include maps\_music;
// DLC3 Utilities
#include maps\dlc3_code;
#include maps\dlc3_teleporter;
main() {
level.DLC3 = spawnStruct();
level.DLC3.createArt = maps\createart\nazi_zombie_psychosis_art::main;
level.DLC3.createFX = maps\createfx\nazi_zombie_psychosis_fx::main;
level.DLC3.myFX = ::preCacheMyFX;
DLC3_FX();
level._effect["chair_light_fx"] = loadfx("env/light/fx_glow_hanginglamp");
// Level variables
level.modderHelpText = []; // Variable Containing Helpful Text For Modders -- Don't Remove
// Intro message
level.DLC3.introString0 = "Dislocated";
level.DLC3.introString1 = "3:00 AM";
level.DLC3.introString2 = "";
level.DLC3.weapons = maps\dlc3_code::include_weapons;
level.DLC3.powerUps = maps\dlc3_code::include_powerups;
level.start_score = 30000;
level.antiCheat = false;
level.DLC3.perk_altMeleeDamage = 1000; // Adjusts how much melee damage a player with the perk will do, needs only be set once. Stock is 1000.
level.DLC3.barrierSearchOverride = 400; // Adjusts barrier search override. Stock is 400.
level.DLC3.powerUpDropMax = 3; // Adjusts power up drop max per round. Stock is 3.
level.DLC3.useCoopHeroes = true; // _loadout Variables
level.DLC3.useBridge = false; // Bridge Feature
level.DLC3.useHellHounds = true; // Hell Hounds
level.DLC3.useMixedRounds = true; // Mixed Rounds
// Magic Boxes -- The Script_Noteworthy Value Names On Purchase Trigger In Radiant
boxArray = [];
boxArray[ boxArray.size ] = "start_chest";
boxArray[ boxArray.size ] = "chest1";
boxArray[ boxArray.size ] = "chest2";
boxArray[ boxArray.size ] = "chest3";
boxArray[ boxArray.size ] = "chest4";
boxArray[ boxArray.size ] = "chest5";
level.DLC3.PandoraBoxes = boxArray;
// Initial Zone(s) -- Zone(s) You Want Activated At Map Start
zones = [];
zones[ zones.size ] = "start_zone";
level.DLC3.initialZones = zones;
// Electricity Switch -- If False Map Will Start With Power On
level.DLC3.useElectricSwitch = true;
// Electric Traps
level.DLC3.useElectricTraps = true;
// _zombiemode_weapons Variables
level.DLC3.usePandoraBoxLight = true;
level.DLC3.useChestPulls = true;
level.DLC3.useChestMoves = true;
level.DLC3.useWeaponSpawn = true;
level.DLC3.useGiveWeapon = true;
// _zombiemode_spawner Varibles
level.DLC3.riserZombiesGoToDoorsFirst = true;
level.DLC3.riserZombiesInActiveZonesOnly = true;
level.DLC3.assureNodes = true;
// _zombiemode_perks Variables
level.DLC3.perksNeedPowerOn = true;
// _zombiemode_devgui Variables
level.DLC3.powerSwitch = true;
// Pre-load
level thread DLC3_threadCalls();
[[level.DLC3.weapons]]();
[[level.DLC3.powerUps]]();
// Initialize zombiemode
maps\ugx_easy_fx::fx_setup();
maps\bazooka_text::main();
maps\sophia_text::main();
maps\_zombiemode::main();
maps\_blst_light_control::main();
maps\_mc_debug::init();
maps\help_text::main();
maps\power_text::main();
thread maps\_kinostyle_teleporter::init();
lamps = getentarray("dyn_lamp","script_noteworthy");
array_thread(lamps,::dynamic_light);
maps\nsz_ww_panther::init();
players = get_players();
for(i = 0; i < players.size; i++)
{
// Places the FX roughly at half of the player's height
ent = Spawn("script_model", players[i].origin + (0, 0, 36));
ent SetModel("tag_origin");
PlayFxOnTag(level._effect["playerlight"], ent, "tag_origin");
ent LinkTo(players[i]);
}
array_thread(players, ::zombie_hug_fix);
maps\_zombiemode_rotating_door::init();
thread maps\ugx_easy_fx::fx_start();
thread maps\nazi_zombie_sumpf_zipline::initZipline();
// Script Placer Z Function calls
maps\zom_counter::main();
if( level.antiCheat )
level thread anticheat();
// Post-load
level.zone_manager_init_func = ::dlc3_zone_init;
level thread DLC3_threadCalls2();
thread weapon_locker_begin();
}
dlc3_zone_init() {
/*
=============
///ScriptDocBegin
"Name: add_adjacent_zone( <zone_1>, <zone_2>, <flag>, <one_way> )"
"Summary: Sets up adjacent zones."
"MandatoryArg: <zone_1>: Name of first Info_Volume"
"MandatoryArg: <zone_2>: Name of second Info_Volume"
"MandatoryArg: <flag>: Flag to be set to initiate zones"
"OptionalArg: <one_way>: Make <zone_1> adjacent to <zone_2>. Defaults to false."
"Example: add_adjacent_zone( "receiver_zone", "outside_east_zone", "enter_outside_east" );"
///ScriptDocEnd
=============
*/
add_adjacent_zone( "start_zone", "zone_1", "enter_zone_1", true );
add_adjacent_zone( "start_zone", "start_zone", "enter_start_zone", true );
add_adjacent_zone( "zone_1", "zone_2", "enter_zone_2", true );
add_adjacent_zone( "zone_2", "zone_3", "enter_zone_3", true );
add_adjacent_zone( "zone_3", "zone_4", "enter_zone_4", true );
add_adjacent_zone( "zone_4", "zone_5", "enter_zone_5", true );
add_adjacent_zone( "zone_5", "zone_6", "enter_zone_6", true );
add_adjacent_zone( "zone_6", "zone_7", "enter_zone_7", true);
add_adjacent_zone( "zone_7", "zone_8", "enter_zone_8" ,true);
add_adjacent_zone( "zone_5", "zone_10", "enter_zone_10", true );
add_adjacent_zone( "zone_10", "zone_11", "enter_zone_11", true );
add_adjacent_zone( "zone_11", "zone_12", "enter_zone_12", true );
add_adjacent_zone( "zone_12", "zone_8", "enter_zone_8", true);
add_adjacent_zone( "zone_8", "zone_7", "enter_zone_7", true);
add_adjacent_zone( "zone_8", "zone_9", "enter_zone_9", true);
add_adjacent_zone( "zone_2", "zone_9", "enter_zone_9", true);
//add_adjacent_zone( "start_zone", "start_zone", "enter_start_zone" );
}
preCacheMyFX() {
// Load your custom FX, example below
// level._effect[ "myFx" ] = loadFx( "myFx" );
// NSZ Stuff
// Effects
level._effect["nsz_ww_landing"] = loadfx( "custom/nsz_ww_landing" );
level._effect["nsz_explode_fx"] = loadFX("custom/nsz_big_geyser");
PrecacheShader( "vfx_blood_screen_splatter" );
}
antiCheat() {
setDvar( "god", "Not Allowed" );
setDvar( "ufo", "Not Allowed" );
setDvar( "noclip", "Not Allowed" );
setDvar( "give", "Not Allowed" );
setDvar( "demigod", "Not Allowed" );
setDvar( "notarget", "Not Allowed" );
setDvar( "jumptonode", "Not Allowed" );
setDvar( "thereisacow", "Not Allowed" );
setDvar( "player_sprintunlimited", "Not Allowed" );
setDvar( "sf_use_ignoreammo", "Not Allowed" );
meleedamage = getDvar( "player_meleedamagemultiplier" );
res_range = getDvar( "player_revivetriggerRadius" );
bleed_out = getDvar( "player_laststandbleedouttime" );
melee_range = getDvar( "player_meleerange" );
clip_size = getDvar( "player_clipsizemultiplier" );
speed = getDvar( "g_speed" );
gravity = getDvar( "g_gravity" );
death_delay = getDvar( "g_deathdelay" );
perk_1 = getDvar( "perk_overheatreduction" );
arcade = getDvar( "arcademode_score_revive" );
ammo = getDvar( "player_sustainammo" );
for(;;) {
if( getDvarInt( "player_meleedamagemultiplier" ) != meleedamage ||
getDvarInt( "player_revivetriggerRadius" ) != res_range ||
getDvarInt( "player_laststandbleedouttime" ) != bleed_out ||
getDvarInt( "player_meleerange" ) != melee_range ||
getDvarInt( "player_clipsizemultiplier" ) != clip_size ||
getDvarInt( "g_speed" ) != speed ||
getDvarInt( "g_gravity" ) != gravity ||
getDvarInt( "g_deathdelay" ) != death_delay ||
getDvarInt( "perk_overheatreduction" ) != perk_1 ||
getDvarInt( "arcademode_score_revive" ) != arcade ||
getDvarInt( "player_sustainammo" ) != ammo ) {
setSavedDvar( "player_meleedamagemultiplier", "0.4" );
setSavedDvar( "player_revivetriggerRadius", "64" );
setSavedDvar( "player_laststandbleedouttime", "30" );
setSavedDvar( "player_meleerange", "64" );
setSavedDvar( "player_clipsizemultiplier", "1" );
setSavedDvar( "g_speed", "190" );
setSavedDvar( "g_gravity", "800" );
setSavedDvar( "g_deathdelay", "4000" );
setSavedDvar( "perk_overheatreduction", "0.7" );
setSavedDvar( "arcademode_score_revive", "100" );
setSavedDvar( "player_sustainammo", "0" );
}
wait 1;
}
}
weapon_locker_begin()
{
players = getplayers();
for(i=0; i<players.size; i++)
{
players[i] thread get_stored_gun();
}
self thread weapon_locker();
}
get_stored_gun()
{
wait 1;
self.stored_gun_ammo = self GetStat(3007);
self.stored_ammo_clip = self GetStat(3008);
self.has_stored_weapon = self GetStat(3009);
keys = GetArrayKeys( level.zombie_weapons );
self.stored_weapon = keys[ self GetStat( 3006 ) ];
}
weapon_locker()
{
wait 2;
weapon_locker = getEnt("weapon_locker", "targetname");
weapon_locker setHintString( "Press & hold &&1 to store current weapon" );
weapon_locker setCursorHint("HINT_NOICON");
while(1)
{
weapon_locker waittill( "trigger", user );
if( is_player_valid(user))
{
user.old_gun = user getcurrentweapon();
user.gun_ammo = user GetAmmoCount( user.old_gun );
user.gun_ammo_clip = user GetWeaponAmmoClip(user.old_gun);
// this line is for non valid weapons, such as perk bottles, knuckle crack and the syringe when reviving, this should only need to be changed if adding extra perks etc.
if (!( user.old_gun == "none" || user.old_gun == "syrette" || user.old_gun == "zombie_melee" || user.old_gun == "zombie_perk_bottle_revive" || user.old_gun == "zombie_perk_bottle_doubletap" || user.old_gun == "zombie_perk_bottle_jugg" || user.old_gun == "zombie_perk_bottle_sleight" || user.old_gun == "zombie_perk_bottle_staminup" || user.old_gun == "zombie_perk_bottle_phd" || user.old_gun == "zombie_perk_bottle_mulekick" || user.old_gun == "zombie_perk_bottle_deadshot" || user.old_gun == "zombie_perk_bottle_cherry" || user.old_gun == "zombie_perk_bottle_vulture" || user.old_gun == "zombie_knuckle_crack" || user.old_gun == "stielhandgranate" || user.old_gun == "zombie_cymbal_monkey" || user.old_gun == "zombie_bowie_flourish" ))
{
primaryWeapons = user GetWeaponsListPrimaries();
if( (IsDefined( primaryWeapons ) && primaryWeapons.size == 1 || IsDefined( primaryWeapons ) && primaryWeapons.size == 2 && user hasPerk ("specialty_extraammo")) && user.has_stored_weapon == 1)
{
user giveweapon( user.stored_weapon );
user SetWeaponAmmoStock(user.stored_weapon,user.stored_gun_ammo);
user SetWeaponAmmoClip(user.stored_weapon,user.stored_ammo_clip);
user switchtoweapon( user.stored_weapon );
user.has_stored_weapon = 0;
user SetStat(3009,0);
}
else
// the following line is for weapons that you do not want storeable, i added some from my own map and advise customizing for weapons in your own map. zombie colt should be changed to your starting weapon
if ( user.old_gun == "colt" || user.old_gun == "zombie_colt" || user.old_gun == "zombie_colt_upgraded" || user.old_gun == "tesla_gun" || user.old_gun == "tesla_gun_upgraded" || user.old_gun == "thundergun" || user.old_gun == "thundergun_upgraded" || user.old_gun == "ray_gun" || user.old_gun == "ray_gun_upgraded" || user.old_gun == "scavenger" || user.old_gun == "scavenger_upgraded" || user.old_gun == "vorkuta_knife" || user.old_gun == "vorkuta_knife_upgraded"|| user.old_gun == "m2_flamethrower_wet")
{
user iPrintLnBold("^7Cannot store this weapon");
wait 2;
}
else
{
primaryWeapons = user GetWeaponsListPrimaries();
if(!( IsDefined( primaryWeapons ) && primaryWeapons.size == 1 || IsDefined( primaryWeapons ) && primaryWeapons.size == 2 && user hasPerk ("specialty_extraammo") ))
user takeweapon( user.old_gun );
if(user.has_stored_weapon == 1)
{
user giveweapon( user.stored_weapon );
user SetWeaponAmmoStock(user.stored_weapon,user.stored_gun_ammo);
user SetWeaponAmmoClip(user.stored_weapon,user.stored_ammo_clip);
user switchtoweapon( user.stored_weapon );
}
user.switch_weapon = user.stored_weapon;
wait 0.1;
user.stored_weapon = user.old_gun;
user.stored_ammo_clip = user.gun_ammo_clip;
user.stored_gun_ammo = user.gun_ammo - user.stored_ammo_clip;
wait 0.1;
keys = GetArrayKeys( level.zombie_weapons );
for( i = 0; i < keys.size; i ++ )
{
if( keys[i] == user.stored_weapon )
{
user SetStat( 3006, i );
break;
}
}
user SetStat(3007,user.stored_gun_ammo);
user SetStat(3008,user.stored_ammo_clip);
user.has_stored_weapon = 1;
user SetStat(3009,1);
user playlocalsound("cha_ching");
user.cur_gun = user getcurrentweapon();
primaryWeapons = user GetWeaponsListPrimaries();
if( IsDefined( primaryWeapons ) && primaryWeapons.size > 0 && (!(user.cur_gun == user.switch_weapon)))
{
user SwitchToWeapon( primaryWeapons[0] );
}
wait 2;
}
}
}
}
}
zombie_hug_fix()
{
self endon( "disconnect");
for( ;; )
{
if(getDvarInt("aim_automelee_range") != 64)
{
self SetClientDvar("aim_automelee_range", "64");
}
zombies = getaiarray( "axis" );
for(i=0; i < zombies.size; i++)
{
if(Distance( self.origin, zombies[i].origin ) <= 96 && self maps\_laststand::player_is_in_laststand())
{
zombies[i] PushPlayer( true );
}
else
{
zombies[i] PushPlayer( false );
}
}
wait 0.1;
}
}
dynamic_light()
{
light = get_array_of_closest(self.origin,getEntArray("dyn_light","targetname"))[0];
if(!isdefined(light))
return;
light linkto(self);
fx = spawn("script_model", self.origin);
fx.angles = (90,0,0);
fx setmodel("tag_origin");
fx linkto(self);
playfxontag(level._effect["chair_light_fx"],fx,"tag_origin");
while(1)
{
self physicslaunch ( self.origin, (randomintrange(-20,20),randomintrange(-20,20),randomintrange(-20,20)) );
wait(randomfloatrange(10,15));
}
}
#include clientscripts\_utility;
#include clientscripts\_music;
#include clientscripts\_fx;
main()
{
level.DLC3_Client = spawnStruct(); // Leave This Line Or Else It Breaks Everything
// Must Change These For Your Map
level.DLC3_Client.createFX = clientscripts\createfx\nazi_zombie_psychosis_fx::main;
level.DLC3_Client.myFX = ::preCacheMyFX;
clientscripts\_load::main();
println("Registering zombify");
clientscripts\_utility::registerSystem("zombify", clientscripts\dlc3_code::zombifyHandler);
clientscripts\dlc3_teleporter::main();
clientscripts\dlc3_code::DLC3_FX();
clientscripts\_zombiemode_tesla::init();
clientscripts\_blst_lights::init();
thread clientscripts\_audio::audio_init(0);
// ======================= DUAL WEILD ===============================================
thread clientscripts\_dual_wield::init();
// ======================= DUAL WEILD ===============================================
// ======================= PERKS ===============================================
thread clientscripts\_zombiemode_perks::init();
// ======================= PERKS ===============================================
// Change For Your Map!
thread clientscripts\nazi_zombie_psychosis_amb::main();
level._zombieCBFunc = clientscripts\_zombie_mode::zombie_eyes;
thread waitforclient(0);
println("*** Client : zombie running...or is it chasing? Muhahahaha");
}
preCacheMyFX()
{
// LEVEL SPECIFIC - FEEL FREE TO REMOVE/EDIT
level._effect["snow_thick"] = LoadFx( "env/weather/fx_snow_blizzard_intense" );
}
#include clientscripts\_utility;
lerp_radiuslights_overtime( clientNum )
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
wait randomFloatRange(1,4);
on_radius = self.lights[clientNum] getLightradius();
off = 50;
curr = on_radius;
//transition_on = .3;
//transition_off = .6;
transition_on = 1;
transition_off = 1;
increment_on = ( on_radius - off ) / ( transition_on / .05 );
increment_off = ( on_radius - off ) / ( transition_off / .05 );
original_position = self.lights[clientNum].origin;
while( 1 )
{
rand0 = randomFloatRange( 25, 50 );
//get small
time = 0;
while ( ( time < transition_off ) )
{
curr -= increment_off;
self.lights[clientNum] setLightradius( curr );
time += .05;
wait( .05 );
}
//get big
wait( .5 );
original_position = self.lights[clientNum].origin + ( 0, 0, rand0 );
self.lights[clientNum] moveto ( original_position, 3 );
//ramp up
time = 0;
while ( time < transition_on )
{
curr += increment_on;
self.lights[clientNum] setLightradius( curr );
time += .05;
wait( .05 );
}
original_position = self.lights[clientNum].origin - ( 0, 0, rand0 );
self.lights[clientNum] moveto ( original_position, 3 );
wait( .5 );
}
}
movinglights( clientNum )
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
wait randomFloatRange(1,4);
original_position = self.lights[clientNum].origin;
while( 1 )
{
rand0 = randomFloatRange( 25,75 );
original_position = self.lights[clientNum].origin + ( 0, 0, rand0 );
self.lights[clientNum] moveto ( original_position, 1 );
self.lights[clientNum] RotateYaw (360, 1);
wait( 1 );
original_position = self.lights[clientNum].origin - ( 0, 0, rand0 );
self.lights[clientNum] moveto ( original_position, 1 );
self.lights[clientNum] RotateYaw (360, 1);
wait( 1 );
}
}
add_light(clientNum)
{
light = spawn(clientNum, self.origin);
light makelight(self.pl);
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
light setLightIntensity( 0 );
}
return(light);
}
create_lights(clientNum)
{
if(!isdefined(self.lights))
{
self.lights = [];
}
self.lights[clientNum] = self add_light(clientNum);
}
generic_flickering(clientNum)
{
}
generic_pulsing(clientNum)
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
//ChrisC wants the lights off when probes are done
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
self.lights[clientNum] setLightIntensity( 0 );
return;
}
on = self.lights[clientNum] getLightIntensity();
off = .05;
curr = on;
transition_on = .3;
transition_off = .6;
increment_on = ( on - off ) / ( transition_on / .05 );
increment_off = ( on - off ) / ( transition_off / .05 );
for ( ;; )
{
//ramp down
time = 0;
while ( ( time < transition_off ) )
{
curr -= increment_off;
self.lights[clientNum] setLightIntensity( curr );
time += .05;
wait( .05 );
}
//off wait time
wait( 1 );
//ramp up
time = 0;
while ( time < transition_on )
{
curr += increment_on;
self.lights[clientNum] setLightIntensity( curr );
time += .05;
wait( .05 );
}
//on wait time
wait( .5 );
}
}
generic_double_strobe(clientNum)
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
}
// modified version of _lights::burning_trash_fire()
ber3b_firelight(clientNum)
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
full = self.lights[clientNum] GetLightIntensity();
old_intensity = full;
while( 1 )
{
intensity = RandomFloatRange( full * 0.63, full * 1.2 );
// old values = 6, 12
timer = RandomFloatRange( 2, 5 );
for ( i = 0; i < timer; i ++ )
{
new_intensity = intensity * ( i / timer ) + old_intensity * ( ( timer - i ) / timer );
self.lights[clientNum] SetLightIntensity( new_intensity );
wait( 0.05 );
}
old_intensity = intensity;
}
}
fire_flicker(clientNum)
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
self endon("stop_flicker"); //self.lights[clientNum] endon("stop_flicker");
/#
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
return;
}
#/
min_delay = 0.1;
max_delay = 0.5;
if( IsDefined( self.script_delay_min ) )
{
min_delay = self.script_delay_min;
}
if( IsDefined( self.script_delay_max ) )
{
max_delay = self.script_delay_max;
}
min_intensity = 0.25;
max_intensity = 1;
if( IsDefined( self.script_intensity_min ) )
{
min_intensity = self.script_intensity_min;
}
if( IsDefined( self.script_intensity_max ) )
{
max_intensity = self.script_intensity_max;
}
intensity = self.lights[clientNum] GetLightIntensity();
curr_intensity = intensity;
for( ;; )
{
temp_intensity = intensity * RandomFloatRange( min_intensity, max_intensity );
time = RandomFloatRange( min_delay, max_delay );
steps = time * 20;
div = ( curr_intensity - temp_intensity ) / steps;
for( i = 0; i < steps; i++ )
{
curr_intensity -= div;
if( curr_intensity < 0 )
{
curr_intensity = 0;
}
self.lights[clientNum] SetLightIntensity( curr_intensity );
wait( 0.05 );
}
curr_intensity = temp_intensity;
}
}
init_lights(clientNum)
{
lights = GetStructArray("light", "classname");
if(isdefined(lights))
{
array_thread(lights, ::create_lights, clientNum);
println("*** Client : Lights " + lights.size);
}
else
{
println("*** Client : No Lights");
}
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
return;
}
flickering_lights = GetStructArray( "generic_flickering", "targetname" );
pulsing_lights = GetStructArray( "generic_pulsing", "targetname" );
double_strobe = GetStructArray( "generic_double_strobe", "targetname" );
fire_flickers = GetStructArray( "fire_flicker", "targetname" );
fire_casters = GetStructArray( "firecaster", "targetname");
//chrisp- added for zombie_Asylum map
asylum_lights = GetStructArray("elect_light","targetname");
asylum_controlroom_light = getstructarray("elect_flicker","script_noteworthy");
movinglights = GetStructArray( "movinglights", "targetname");
if(isdefined(movinglights))
//////////////////////
println("*** Client : " + movinglights.size + " movinglights.");
array_thread( movinglights, ::movinglights, clientNum );
lerp_radiuslights_overtime = GetStructArray( "rotatinglights", "targetname");
if(isdefined(lerp_radiuslights_overtime))
{
println("*** Client : " + lerp_radiuslights_overtime.size + " lerp_radiuslights_overtime.");
array_thread( lerp_radiuslights_overtime, ::lerp_radiuslights_overtime, clientNum );
}
//////////////////////
if(isdefined(flickering_lights))
{
println("*** Client : " + flickering_lights.size + " flickering lights.");
array_thread( flickering_lights, ::generic_flickering, clientNum );
}
if(isdefined(pulsing_lights))
{
println("*** Client : " + pulsing_lights.size + " pulsing_lights.");
array_thread( pulsing_lights, ::generic_pulsing, clientNum );
}
if(isdefined(double_strobe))
{
println("*** Client : " + double_strobe.size + " double_strobe.");
array_thread( double_strobe, ::generic_double_strobe, clientNum );
}
if(isdefined(fire_flickers))
{
println("*** Client : " + fire_flickers.size + " fire_flickers.");
array_thread( fire_flickers, ::fire_flicker, clientNum );
}
if(isdefined(fire_casters))
{
println("*** Client : " + fire_casters.size + " fire_casters.");
array_thread( fire_casters, ::ber3b_firelight, clientNum );
}
if(isdefined(asylum_lights))
{
println("*** Client : " + asylum_lights.size + " asylum lights.");
array_thread( asylum_lights, ::asylum_light_think, clientNum );
}
if(isDefined(asylum_controlroom_light))
{
println("*** Client : " + asylum_controlroom_light.size + " control lights.");
array_thread(asylum_controlroom_light,::asylum_controlroom_light_think,clientNum) ;
}
// Adding lights for Factory. Not sure if there's a better place to do this.
//MarkM- added for nazi_zombie_factory
power_lights = GetStructArray( "light_electric", "targetname" );
if(isDefined(power_lights))
{
println("*** Client : " + power_lights.size + " power lights.");
array_thread(power_lights,::power_lights_think, clientNum);
}
// power_lights_flicker = GetStructArray( "light_electric_flicker", "targetname" );
// if(isDefined(power_lights))
// {
// println("*** Client : " + power_lights_flicker.size + " power lights flicker.");
// array_thread(power_lights_flicker,::power_lights_flicker_think, clientNum);
// }
}
//zombie asylum map stuff
asylum_light_think(clientnum)
{
self.lights[clientNum] setLightIntensity( 0 );
level waittill ("start_lights");
self.lights[clientnum] setLightIntensity( 2 );
}
asylum_controlroom_light_think(clientnum)
{
level waittill ("start_lights");
println("control room client num: " + clientnum);
self notify("stop_flicker"); // self.lights[clientnum] notify("stop_flicker");
self.lights[clientnum] setLightIntensity( 0 );
}
//
// Control light intensity for certain lights connected to the power
power_lights_think( clientNum )
{
// The lights start off
while (1)
{
level waittill( "pl1" ); // power lights on
// Turn the lights on
println("power lights on client num: " + clientnum);
if ( IsDefined( self.script_float ) )
{
self.lights[clientNum] SetLightIntensity( self.script_float );
}
else
{
self.lights[clientNum] SetLightIntensity( 1.5 );
}
level waittill( "lights_off" );
// Turn the lights off
// Turn this into a flicker later
println("power lights off client num: " + clientnum);
self.lights[clientNum] SetLightIntensity( 0.001 );
}
}
//
// Causes light to flicker after power is applied
//
power_lights_flicker_think(clientNum)
{
assertex(isdefined(self.lights) && isdefined(self.lights[clientNum]), "Light not setup before script thread run on it.");
self endon("stop_flicker"); //self.lights[clientNum] endon("stop_flicker");
/#
if ( getdvar( "r_reflectionProbeGenerate" ) == "1" )
{
return;
}
#/
min_delay = 0.1;
max_delay = 0.5;
if( IsDefined( self.script_delay_min ) )
{
min_delay = self.script_delay_min;
}
if( IsDefined( self.script_delay_max ) )
{
max_delay = self.script_delay_max;
}
// Get associated light model entity
if ( IsDefined( self.target ) )
{
self.light_model = GetEnt( clientNum, self.target, "targetname" );
}
min_intensity = 0.25;
max_intensity = 1;
if( IsDefined( self.script_intensity_min ) )
{
min_intensity = self.script_intensity_min;
}
if( IsDefined( self.script_intensity_max ) )
{
max_intensity = self.script_intensity_max;
}
intensity = self.lights[clientNum] GetLightIntensity();
curr_intensity = intensity;
model_swap_1 = intensity + min_intensity + ((max_intensity - min_intensity) / 3);
model_swap_2 = intensity + max_intensity - ((max_intensity - min_intensity) / 3);
// Start the lights at an initial intensity
println("power lights on client num: " + clientnum);
if ( IsDefined( self.script_float ) )
{
self.lights[clientNum] SetLightIntensity( self.script_float );
}
else
{
self.lights[clientNum] SetLightIntensity( 0.001 );
}
level waittill( "pl1" ); // power lights on
model = "";
for( ;; )
{
temp_intensity = intensity * RandomFloatRange( min_intensity, max_intensity );
time = RandomFloatRange( min_delay, max_delay );
steps = time * 20;
div = ( curr_intensity - temp_intensity ) / steps;
for( i = 0; i < steps; i++ )
{
curr_intensity -= div;
if( curr_intensity < 0 )
{
curr_intensity = 0;
}
self.lights[clientNum] SetLightIntensity( curr_intensity );
// Model swap check
println("*** Client : light flicker " + curr_intensity);
if ( IsDefined( self.light_model ) )
{
if ( curr_intensity < model_swap_1 )
{
model = "lights_berlin_subway_hat_0";
println("*** Client : light flicker hat 0");
}
else if ( curr_intensity > model_swap_2 )
{
model = "lights_berlin_subway_hat_100";
println("*** Client : light flicker hat 50");
}
else
{
model = "lights_berlin_subway_hat_50";
println("*** Client : light flicker hat 100");
}
if ( model != self.light_model.model )
{
self.light_model SetModel( model );
}
}
wait( 0.05 );
}
curr_intensity = temp_intensity;
}
}