mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 15:17:57 -05:00
Pad empty lines around blocks
This commit is contained in:
@ -490,6 +490,7 @@ health_bar_hud()
|
||||
|
||||
x = 5;
|
||||
y = -104;
|
||||
|
||||
if (level.script == "zm_buried")
|
||||
{
|
||||
y -= 25;
|
||||
@ -580,6 +581,7 @@ shield_bar_hud()
|
||||
|
||||
x = 5;
|
||||
y = -104;
|
||||
|
||||
if (level.script == "zm_buried")
|
||||
{
|
||||
y -= 25;
|
||||
@ -655,6 +657,7 @@ shield_bar_hud()
|
||||
}
|
||||
|
||||
health = level.zombie_vars["riotshield_hit_points"] - self.shielddamagetaken;
|
||||
|
||||
if (health < 0)
|
||||
{
|
||||
health = 0;
|
||||
@ -664,6 +667,7 @@ shield_bar_hud()
|
||||
|
||||
offset_x = 0;
|
||||
health_str = "" + self.health;
|
||||
|
||||
for(i = 0; i < health_str.size; i++)
|
||||
{
|
||||
if (health_str[i] == "1")
|
||||
@ -722,6 +726,7 @@ enemy_counter_hud()
|
||||
while (1)
|
||||
{
|
||||
enemies = get_round_enemy_array().size + level.zombie_total;
|
||||
|
||||
if (level flag_exists("spawn_ghosts") && flag("spawn_ghosts"))
|
||||
{
|
||||
enemies = get_current_ghost_count();
|
||||
@ -970,6 +975,7 @@ zone_hud()
|
||||
|
||||
x = 5;
|
||||
y = -119;
|
||||
|
||||
if (level.script == "zm_buried")
|
||||
{
|
||||
y -= 25;
|
||||
@ -2101,6 +2107,7 @@ bleedout_bar_hud_updatebar(hud)
|
||||
for(i = 0; i < vars["num_intervals"]; i++)
|
||||
{
|
||||
vars["time"] = vars["bleedout_time"];
|
||||
|
||||
if(vars["time"] > vars["interval_time"])
|
||||
{
|
||||
vars["time"] = vars["interval_time"];
|
||||
@ -2109,6 +2116,7 @@ bleedout_bar_hud_updatebar(hud)
|
||||
vars["frac"] = 0.99 - ((i + 1) * vars["interval_frac"]);
|
||||
|
||||
barwidth = int((hud.width * vars["frac"]) + 0.5);
|
||||
|
||||
if(barwidth < 1)
|
||||
{
|
||||
barwidth = 1;
|
||||
@ -2169,6 +2177,7 @@ last_stand_pistol_swap()
|
||||
else if ( self.laststandpistol == "ray_gun_zm" || self.laststandpistol == "ray_gun_upgraded_zm" || self.laststandpistol == "raygun_mark2_zm" || self.laststandpistol == "raygun_mark2_upgraded_zm" || self.laststandpistol == level.default_solo_laststandpistol )
|
||||
{
|
||||
amt = ammoclip;
|
||||
|
||||
if ( self.hadpistol && amt > self.stored_weapon_info[self.laststandpistol].total_amt )
|
||||
{
|
||||
amt = self.stored_weapon_info[self.laststandpistol].total_amt;
|
||||
@ -2179,6 +2188,7 @@ last_stand_pistol_swap()
|
||||
else
|
||||
{
|
||||
amt = ammoclip + doubleclip;
|
||||
|
||||
if ( self.hadpistol && amt > self.stored_weapon_info[self.laststandpistol].total_amt )
|
||||
{
|
||||
amt = self.stored_weapon_info[self.laststandpistol].total_amt;
|
||||
@ -2203,6 +2213,7 @@ last_stand_pistol_swap()
|
||||
}
|
||||
|
||||
clip_amt_add = weaponclipsize( self.laststandpistol ) - clip_amt_init;
|
||||
|
||||
if ( clip_amt_add > amt )
|
||||
{
|
||||
clip_amt_add = amt;
|
||||
@ -2215,6 +2226,7 @@ last_stand_pistol_swap()
|
||||
if ( dual_wield_wep != "none" )
|
||||
{
|
||||
left_clip_amt_add = weaponclipsize( dual_wield_wep ) - left_clip_amt_init;
|
||||
|
||||
if ( left_clip_amt_add > amt )
|
||||
{
|
||||
left_clip_amt_add = amt;
|
||||
@ -2226,6 +2238,7 @@ last_stand_pistol_swap()
|
||||
}
|
||||
|
||||
stock_amt = doubleclip;
|
||||
|
||||
if ( stock_amt > amt )
|
||||
{
|
||||
stock_amt = amt;
|
||||
@ -2239,6 +2252,7 @@ last_stand_pistol_swap()
|
||||
last_stand_restore_pistol_ammo(only_store_info = false)
|
||||
{
|
||||
self.weapon_taken_by_losing_specialty_additionalprimaryweapon = undefined;
|
||||
|
||||
if ( !isDefined( self.stored_weapon_info ) )
|
||||
{
|
||||
return;
|
||||
@ -2247,9 +2261,11 @@ last_stand_restore_pistol_ammo(only_store_info = false)
|
||||
weapon_inventory = self getweaponslist( 1 );
|
||||
weapon_to_restore = getarraykeys( self.stored_weapon_info );
|
||||
i = 0;
|
||||
|
||||
while ( i < weapon_inventory.size )
|
||||
{
|
||||
weapon = weapon_inventory[ i ];
|
||||
|
||||
if(weapon != self.laststandpistol)
|
||||
{
|
||||
i++;
|
||||
@ -2259,6 +2275,7 @@ last_stand_restore_pistol_ammo(only_store_info = false)
|
||||
for ( j = 0; j < weapon_to_restore.size; j++ )
|
||||
{
|
||||
check_weapon = weapon_to_restore[ j ];
|
||||
|
||||
if ( weapon == check_weapon )
|
||||
{
|
||||
if (self.stored_weapon_info[ weapon ].given_amt == 0)
|
||||
@ -2277,10 +2294,12 @@ last_stand_restore_pistol_ammo(only_store_info = false)
|
||||
|
||||
last_clip = self getweaponammoclip( weapon );
|
||||
last_left_clip = 0;
|
||||
|
||||
if( "none" != dual_wield_name )
|
||||
{
|
||||
last_left_clip = self getweaponammoclip( dual_wield_name );
|
||||
}
|
||||
|
||||
last_stock = self getweaponammostock( weapon );
|
||||
last_total = last_clip + last_left_clip + last_stock;
|
||||
|
||||
@ -2348,6 +2367,7 @@ last_stand_restore_pistol_ammo(only_store_info = false)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@ -2412,6 +2432,7 @@ set_lethal_grenade_init()
|
||||
swap_staminup_perk()
|
||||
{
|
||||
vending_triggers = getentarray("zombie_vending", "targetname");
|
||||
|
||||
foreach (trigger in vending_triggers)
|
||||
{
|
||||
if (trigger.script_noteworthy == "specialty_longersprint")
|
||||
@ -2584,6 +2605,7 @@ disable_bank_teller()
|
||||
{
|
||||
level notify( "stop_bank_teller" );
|
||||
bank_teller_dmg_trig = getent( "bank_teller_tazer_trig", "targetname" );
|
||||
|
||||
if(IsDefined(bank_teller_dmg_trig))
|
||||
{
|
||||
bank_teller_transfer_trig = getent( bank_teller_dmg_trig.target, "targetname" );
|
||||
@ -2651,6 +2673,7 @@ add_wallbuy( name, script_noteworthy )
|
||||
spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "tazer_upgrade", "targetname" ), 1, 0 );
|
||||
spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "buildable_wallbuy", "targetname" ), 1, 0 );
|
||||
spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "claymore_purchase", "targetname" ), 1, 0 );
|
||||
|
||||
for(i = 0; i < spawnable_weapon_spawns.size; i++)
|
||||
{
|
||||
if(IsDefined(spawnable_weapon_spawns[i].zombie_weapon_upgrade) && spawnable_weapon_spawns[i].zombie_weapon_upgrade == name)
|
||||
@ -2661,6 +2684,7 @@ add_wallbuy( name, script_noteworthy )
|
||||
}
|
||||
|
||||
struct = spawnable_weapon_spawns[i];
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2777,6 +2801,7 @@ weapon_inspect_watcher()
|
||||
vars["curr_wep"] = self getCurrentWeapon();
|
||||
|
||||
vars["is_primary"] = 0;
|
||||
|
||||
foreach(wep in self getWeaponsListPrimaries())
|
||||
{
|
||||
if(wep == vars["curr_wep"])
|
||||
@ -2866,6 +2891,7 @@ buildbuildables()
|
||||
buildbuildable( buildable, craft = 0, solo_pool = 0, onuse )
|
||||
{
|
||||
player = get_players()[0];
|
||||
|
||||
foreach (stub in level.buildable_stubs)
|
||||
{
|
||||
if ( !isDefined( buildable ) || stub.equipname == buildable )
|
||||
@ -3029,10 +3055,12 @@ removebuildable( buildable, poolname )
|
||||
if ( isDefined( buildable ) || stub.persistent != 3 )
|
||||
{
|
||||
stub maps\mp\zombies\_zm_buildables::buildablestub_remove();
|
||||
|
||||
foreach (piece in stub.buildablezone.pieces)
|
||||
{
|
||||
piece maps\mp\zombies\_zm_buildables::piece_unspawn();
|
||||
}
|
||||
|
||||
maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( stub );
|
||||
return;
|
||||
}
|
||||
@ -3116,6 +3144,7 @@ buildcraftables()
|
||||
takecraftableparts( buildable )
|
||||
{
|
||||
player = get_players()[ 0 ];
|
||||
|
||||
foreach (stub in level.zombie_include_craftables)
|
||||
{
|
||||
if ( stub.name == buildable )
|
||||
@ -3123,6 +3152,7 @@ takecraftableparts( buildable )
|
||||
foreach (piece in stub.a_piecestubs)
|
||||
{
|
||||
piecespawn = piece.piecespawn;
|
||||
|
||||
if ( isDefined( piecespawn ) )
|
||||
{
|
||||
player player_take_piece( piecespawn );
|
||||
@ -3137,6 +3167,7 @@ takecraftableparts( buildable )
|
||||
buildcraftable( buildable )
|
||||
{
|
||||
player = get_players()[ 0 ];
|
||||
|
||||
foreach (stub in level.a_uts_craftables)
|
||||
{
|
||||
if ( stub.craftablestub.name == buildable )
|
||||
@ -3144,6 +3175,7 @@ buildcraftable( buildable )
|
||||
foreach (piece in stub.craftablespawn.a_piecespawns)
|
||||
{
|
||||
piecespawn = get_craftable_piece( stub.craftablestub.name, piece.piecename );
|
||||
|
||||
if ( isDefined( piecespawn ) )
|
||||
{
|
||||
player player_take_piece( piecespawn );
|
||||
@ -3216,11 +3248,14 @@ piece_unspawn()
|
||||
{
|
||||
self.model delete();
|
||||
}
|
||||
|
||||
self.model = undefined;
|
||||
|
||||
if ( isDefined( self.unitrigger ) )
|
||||
{
|
||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.unitrigger );
|
||||
}
|
||||
|
||||
self.unitrigger = undefined;
|
||||
}
|
||||
|
||||
@ -3231,10 +3266,12 @@ remove_buildable_pieces( buildable_name )
|
||||
if(IsDefined(buildable.name) && buildable.name == buildable_name)
|
||||
{
|
||||
pieces = buildable.buildablepieces;
|
||||
|
||||
for(i = 0; i < pieces.size; i++)
|
||||
{
|
||||
pieces[i] maps\mp\zombies\_zm_buildables::piece_unspawn();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -3380,6 +3417,7 @@ tombstone_emp()
|
||||
while ( 1 )
|
||||
{
|
||||
level waittill( "emp_detonate", origin, radius );
|
||||
|
||||
if ( distancesquared( origin, self.origin ) < ( radius * radius ) )
|
||||
{
|
||||
playfx( level._effect[ "powerup_off" ], self.origin );
|
||||
@ -3425,6 +3463,7 @@ tombstone_grab()
|
||||
{
|
||||
players = get_players();
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( players[ i ].is_zombie )
|
||||
@ -3437,6 +3476,7 @@ tombstone_grab()
|
||||
if ( isDefined( self.player ) && players[ i ] == self.player )
|
||||
{
|
||||
dist = distance( players[ i ].origin, self.origin );
|
||||
|
||||
if ( dist < 64 )
|
||||
{
|
||||
playfx( level._effect[ "powerup_grabbed_solo" ], self.origin );
|
||||
@ -3454,8 +3494,10 @@ tombstone_grab()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
wait_network_frame();
|
||||
}
|
||||
}
|
||||
@ -3504,20 +3546,24 @@ tombstone_save()
|
||||
alt_wep = weaponAltWeaponName(wep);
|
||||
|
||||
clip_missing = weaponClipSize(wep) - self.tombstone_savedweapon_weaponsammo_clip[i];
|
||||
|
||||
if (clip_missing > self.tombstone_savedweapon_weaponsammo_stock[i])
|
||||
{
|
||||
clip_missing = self.tombstone_savedweapon_weaponsammo_stock[i];
|
||||
}
|
||||
|
||||
self.tombstone_savedweapon_weaponsammo_clip[i] += clip_missing;
|
||||
self.tombstone_savedweapon_weaponsammo_stock[i] -= clip_missing;
|
||||
|
||||
if (dualwield_wep != "none")
|
||||
{
|
||||
clip_dualwield_missing = weaponClipSize(dualwield_wep) - self.tombstone_savedweapon_weaponsammo_clip_dualwield[i];
|
||||
|
||||
if (clip_dualwield_missing > self.tombstone_savedweapon_weaponsammo_stock[i])
|
||||
{
|
||||
clip_dualwield_missing = self.tombstone_savedweapon_weaponsammo_stock[i];
|
||||
}
|
||||
|
||||
self.tombstone_savedweapon_weaponsammo_clip_dualwield[i] += clip_dualwield_missing;
|
||||
self.tombstone_savedweapon_weaponsammo_stock[i] -= clip_dualwield_missing;
|
||||
}
|
||||
@ -3525,10 +3571,12 @@ tombstone_save()
|
||||
if (alt_wep != "none")
|
||||
{
|
||||
clip_alt_missing = weaponClipSize(alt_wep) - self.tombstone_savedweapon_weaponsammo_clip_alt[i];
|
||||
|
||||
if (clip_alt_missing > self.tombstone_savedweapon_weaponsammo_stock_alt[i])
|
||||
{
|
||||
clip_alt_missing = self.tombstone_savedweapon_weaponsammo_stock_alt[i];
|
||||
}
|
||||
|
||||
self.tombstone_savedweapon_weaponsammo_clip_alt[i] += clip_alt_missing;
|
||||
self.tombstone_savedweapon_weaponsammo_stock_alt[i] -= clip_alt_missing;
|
||||
}
|
||||
@ -3558,34 +3606,42 @@ tombstone_save()
|
||||
tombstone_save_perks( ent )
|
||||
{
|
||||
perk_array = [];
|
||||
|
||||
if ( ent hasperk( "specialty_armorvest" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_armorvest";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_deadshot" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_deadshot";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_fastreload" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_fastreload";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_flakjacket" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_flakjacket";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_movefaster" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_movefaster";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_quickrevive" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_quickrevive";
|
||||
}
|
||||
|
||||
if ( ent hasperk( "specialty_rof" ) )
|
||||
{
|
||||
perk_array[ perk_array.size ] = "specialty_rof";
|
||||
}
|
||||
|
||||
return perk_array;
|
||||
}
|
||||
|
||||
@ -3597,6 +3653,7 @@ tombstone_give()
|
||||
}
|
||||
|
||||
primary_weapons = self getWeaponsListPrimaries();
|
||||
|
||||
foreach(weapon in primary_weapons)
|
||||
{
|
||||
self takeWeapon(weapon);
|
||||
@ -3609,6 +3666,7 @@ tombstone_give()
|
||||
|
||||
primary_weapons_returned = 0;
|
||||
i = 0;
|
||||
|
||||
while ( i < self.tombstone_savedweapon_weapons.size )
|
||||
{
|
||||
if ( isdefined( self.tombstone_savedweapon_grenades ) && self.tombstone_savedweapon_weapons[ i ] == self.tombstone_savedweapon_grenades || ( isdefined( self.tombstone_savedweapon_tactical ) && self.tombstone_savedweapon_weapons[ i ] == self.tombstone_savedweapon_tactical ) )
|
||||
@ -3720,10 +3778,12 @@ tombstone_give()
|
||||
}
|
||||
|
||||
current_wep = self getCurrentWeapon();
|
||||
|
||||
if(!isSubStr(current_wep, "perk_bottle") && !isSubStr(current_wep, "knuckle_crack") && !isSubStr(current_wep, "flourish") && !isSubStr(current_wep, "item_meat"))
|
||||
{
|
||||
switched = 0;
|
||||
primaries = self getweaponslistprimaries();
|
||||
|
||||
foreach ( weapon in primaries )
|
||||
{
|
||||
if ( isDefined( self.tombstone_savedweapon_currentweapon ) && self.tombstone_savedweapon_currentweapon == weapon )
|
||||
@ -3745,6 +3805,7 @@ tombstone_give()
|
||||
if ( isDefined( self.tombstone_perks ) && self.tombstone_perks.size > 0 )
|
||||
{
|
||||
i = 0;
|
||||
|
||||
while ( i < self.tombstone_perks.size )
|
||||
{
|
||||
if ( self hasperk( self.tombstone_perks[ i ] ) )
|
||||
@ -3866,12 +3927,14 @@ additionalprimaryweapon_stowed_weapon_refill()
|
||||
if(self hasPerk("specialty_additionalprimaryweapon"))
|
||||
{
|
||||
vars["curr_wep"] = self getCurrentWeapon();
|
||||
|
||||
if(vars["curr_wep"] == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
primaries = self getWeaponsListPrimaries();
|
||||
|
||||
foreach(primary in primaries)
|
||||
{
|
||||
if(primary != maps\mp\zombies\_zm_weapons::get_nonalternate_weapon(vars["curr_wep"]))
|
||||
@ -3941,6 +4004,7 @@ refill_after_time(primary)
|
||||
self setWeaponAmmoStock(primary, vars["ammo_stock"] - vars["missing_clip"]);
|
||||
|
||||
vars["dw_primary"] = weaponDualWieldWeaponName(primary);
|
||||
|
||||
if(vars["dw_primary"] != "none")
|
||||
{
|
||||
vars["ammo_clip"] = self getWeaponAmmoClip(vars["dw_primary"]);
|
||||
@ -3957,6 +4021,7 @@ refill_after_time(primary)
|
||||
}
|
||||
|
||||
vars["alt_primary"] = weaponAltWeaponName(primary);
|
||||
|
||||
if(vars["alt_primary"] != "none")
|
||||
{
|
||||
vars["ammo_clip"] = self getWeaponAmmoClip(vars["alt_primary"]);
|
||||
@ -4044,6 +4109,7 @@ remove_status_icons_on_intermission()
|
||||
level waittill("intermission");
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player.statusicon = "";
|
||||
|
@ -29,6 +29,7 @@ init()
|
||||
enemy_location_override( zombie, enemy )
|
||||
{
|
||||
location = enemy.origin;
|
||||
|
||||
if ( is_true( self.reroute ) )
|
||||
{
|
||||
if ( isDefined( self.reroute_origin ) )
|
||||
@ -36,5 +37,6 @@ enemy_location_override( zombie, enemy )
|
||||
location = self.reroute_origin;
|
||||
}
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
@ -60,6 +60,7 @@ struct_init()
|
||||
for (i = 0; i < og_perk_structs.size; i++)
|
||||
{
|
||||
rand = randomint(og_perk_structs.size);
|
||||
|
||||
if (rand != i)
|
||||
{
|
||||
temp_script_noteworthy = og_perk_structs[i].script_noteworthy;
|
||||
@ -111,6 +112,7 @@ struct_init()
|
||||
else if (player_respawn_point.script_noteworthy == "zone_maze_staircase")
|
||||
{
|
||||
spawn_array = getstructarray( player_respawn_point.target, "targetname" );
|
||||
|
||||
foreach (spawn in spawn_array)
|
||||
{
|
||||
if (spawn.origin[0] > 5950)
|
||||
@ -237,6 +239,7 @@ init_wallbuys()
|
||||
{
|
||||
og_weapon_structs = [];
|
||||
structs = getstructarray( "weapon_upgrade", "targetname" );
|
||||
|
||||
foreach (struct in structs)
|
||||
{
|
||||
if (isDefined(struct.script_noteworthy) && isSubStr(struct.script_noteworthy, "maze"))
|
||||
@ -269,6 +272,7 @@ init_barriers()
|
||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", (3398, 898, 372), (0, 0, 0) );
|
||||
|
||||
structs = getstructarray( "zm_perk_machine", "targetname" );
|
||||
|
||||
foreach (struct in structs)
|
||||
{
|
||||
scripts\zm\replaced\utility::barrier( "collision_geo_64x64x128_standard", struct.origin + (anglesToRight(struct.angles) * -9) + (0, 0, 320), struct.angles );
|
||||
|
@ -119,6 +119,7 @@ set_box_weapons()
|
||||
{
|
||||
level.zombie_weapons["thompson_zm"].is_in_box = 0;
|
||||
}
|
||||
|
||||
if(isDefined(level.zombie_weapons["beretta93r_zm"]))
|
||||
{
|
||||
level.zombie_weapons["beretta93r_zm"].is_in_box = 1;
|
||||
@ -177,6 +178,7 @@ disable_zombie_spawn_locations()
|
||||
zone = level.zones[ level.zone_keys[ z ] ];
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < zone.spawn_locations.size )
|
||||
{
|
||||
if (zone.spawn_locations[i].origin == (615.8, 7875.9, 95))
|
||||
@ -196,6 +198,7 @@ disable_zombie_spawn_locations()
|
||||
disable_gondola_call_triggers()
|
||||
{
|
||||
t_call_triggers = getentarray( "gondola_call_trigger", "targetname" );
|
||||
|
||||
foreach ( trigger in t_call_triggers )
|
||||
{
|
||||
trigger delete();
|
||||
@ -205,6 +208,7 @@ disable_gondola_call_triggers()
|
||||
disable_craftable_triggers()
|
||||
{
|
||||
t_crafting_table = getentarray( "open_craftable_trigger", "targetname" );
|
||||
|
||||
foreach ( trigger in t_crafting_table )
|
||||
{
|
||||
trigger delete();
|
||||
@ -214,6 +218,7 @@ disable_craftable_triggers()
|
||||
disable_afterlife_props()
|
||||
{
|
||||
a_afterlife_props = getentarray( "afterlife_show", "targetname" );
|
||||
|
||||
foreach ( m_prop in a_afterlife_props )
|
||||
{
|
||||
m_prop delete();
|
||||
@ -223,6 +228,7 @@ disable_afterlife_props()
|
||||
turn_afterlife_interacts_on()
|
||||
{
|
||||
a_afterlife_interact = getentarray( "afterlife_interact", "targetname" );
|
||||
|
||||
foreach ( model in a_afterlife_interact )
|
||||
{
|
||||
if ( model.script_string == "juggernog_on" )
|
||||
|
@ -15,6 +15,7 @@ struct_init()
|
||||
|
||||
zone_respawnpoints = [];
|
||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
for (i = 0; i < respawnpoints.size; i++)
|
||||
{
|
||||
if (isDefined(respawnpoints[i].script_noteworthy) && respawnpoints[i].script_noteworthy == "zone_amb_cornfield")
|
||||
@ -37,6 +38,7 @@ struct_init()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group( zone_respawnpoints[zone].origin, zone, zone_respawnpoints[zone].script_int );
|
||||
|
||||
respawn_array = getstructarray(zone_respawnpoints[zone].target, "targetname");
|
||||
|
||||
foreach(respawn in respawn_array)
|
||||
{
|
||||
scripts\zm\replaced\utility::register_map_spawn( respawn.origin + (100, 0, 0), respawn.angles, zone, respawn.script_int );
|
||||
@ -55,6 +57,7 @@ struct_init()
|
||||
scripts\zm\replaced\utility::register_map_spawn( (10036, -967, -186), (0, 0, 0), zone );
|
||||
|
||||
structs = getstructarray( "game_mode_object", "targetname" );
|
||||
|
||||
foreach ( struct in structs )
|
||||
{
|
||||
if ( isDefined( struct.script_noteworthy ) && struct.script_noteworthy == "cornfield" )
|
||||
@ -240,6 +243,7 @@ disable_zombie_spawn_locations()
|
||||
zone = level.zones[ level.zone_keys[ z ] ];
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < zone.spawn_locations.size )
|
||||
{
|
||||
if (zone.spawn_locations[i].origin[0] <= 9700)
|
||||
|
@ -16,6 +16,7 @@ struct_init()
|
||||
|
||||
ind = 0;
|
||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
for(i = 0; i < respawnpoints.size; i++)
|
||||
{
|
||||
if(respawnpoints[i].script_noteworthy == "zone_gas")
|
||||
@ -29,6 +30,7 @@ struct_init()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int );
|
||||
|
||||
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
||||
|
||||
foreach(respawn in respawn_array)
|
||||
{
|
||||
if(respawn.script_int == 2)
|
||||
@ -64,6 +66,7 @@ struct_init()
|
||||
scripts\zm\replaced\utility::register_map_spawn( (-5895, -6984, -30), (0, 0, 0), zone );
|
||||
|
||||
gameObjects = getEntArray( "script_model", "classname" );
|
||||
|
||||
foreach ( object in gameObjects )
|
||||
{
|
||||
if ( isDefined( object.script_noteworthy ) && object.script_noteworthy == getDvar( "ui_zm_mapstartlocation" ) )
|
||||
@ -188,6 +191,7 @@ disable_zombie_spawn_locations()
|
||||
zone = level.zones[ level.zone_keys[ z ] ];
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < zone.spawn_locations.size )
|
||||
{
|
||||
if ( zone.spawn_locations[ i ].targetname == "zone_trans_diner_spawners")
|
||||
|
@ -19,6 +19,7 @@ struct_init()
|
||||
|
||||
ind = 0;
|
||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
for(i = 0; i < respawnpoints.size; i++)
|
||||
{
|
||||
if(respawnpoints[i].script_noteworthy == "zone_prr")
|
||||
@ -44,9 +45,11 @@ struct_init()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group( respawnpoints[ind].origin, zone, respawnpoints[ind].script_int );
|
||||
|
||||
respawn_array = getstructarray(respawnpoints[ind].target, "targetname");
|
||||
|
||||
foreach(respawn in respawn_array)
|
||||
{
|
||||
angles = respawn.angles;
|
||||
|
||||
if (respawn.origin[0] < 12200)
|
||||
{
|
||||
angles += (0, 90, 0);
|
||||
@ -164,6 +167,7 @@ disable_zombie_spawn_locations()
|
||||
disable_player_spawn_locations()
|
||||
{
|
||||
respawnpoints = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
foreach (respawnpoint in respawnpoints)
|
||||
{
|
||||
if (respawnpoint.script_noteworthy == "zone_pow_warehouse")
|
||||
|
@ -98,6 +98,7 @@ disable_zombie_spawn_locations()
|
||||
zone = level.zones[ level.zone_keys[ z ] ];
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < zone.spawn_locations.size )
|
||||
{
|
||||
if ( zone.spawn_locations[ i ].origin == ( -11447, -3424, 254.2 ) )
|
||||
|
@ -41,6 +41,7 @@ get_assigned_team()
|
||||
teamplayers["allies"] = 0;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( !isDefined(player.team) || (player.team != "axis" && player.team != "allies") )
|
||||
@ -59,6 +60,7 @@ get_assigned_team()
|
||||
if ( teamplayers["axis"] <= teamplayers["allies"] )
|
||||
{
|
||||
guids = strTok(getDvar("team_axis"), " ");
|
||||
|
||||
foreach ( guid in guids )
|
||||
{
|
||||
if ( self getguid() == int(guid) )
|
||||
@ -66,6 +68,7 @@ get_assigned_team()
|
||||
arrayRemoveValue(guids, guid);
|
||||
|
||||
guid_text = "";
|
||||
|
||||
foreach (guid in guids)
|
||||
{
|
||||
guid_text += guid + " ";
|
||||
@ -81,6 +84,7 @@ get_assigned_team()
|
||||
if ( teamplayers["allies"] <= teamplayers["axis"] )
|
||||
{
|
||||
guids = strTok(getDvar("team_allies"), " ");
|
||||
|
||||
foreach ( guid in guids )
|
||||
{
|
||||
if ( self getguid() == int(guid) )
|
||||
@ -88,6 +92,7 @@ get_assigned_team()
|
||||
arrayRemoveValue(guids, guid);
|
||||
|
||||
guid_text = "";
|
||||
|
||||
foreach (guid in guids)
|
||||
{
|
||||
guid_text += guid + " ";
|
||||
|
@ -329,6 +329,7 @@ round_think( restart = 0 )
|
||||
if (!is_gametype_active("zgrief"))
|
||||
{
|
||||
level.player_starting_points = (level.round_number + 1) * 500;
|
||||
|
||||
if (level.player_starting_points > 10000)
|
||||
{
|
||||
level.player_starting_points = 10000;
|
||||
@ -459,6 +460,7 @@ spectators_respawn()
|
||||
thread refresh_player_navcard_hud();
|
||||
|
||||
new_score = (level.round_number + 1) * 250;
|
||||
|
||||
if (new_score > 1500)
|
||||
{
|
||||
new_score = 1500;
|
||||
@ -610,6 +612,7 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
|
||||
level.passed_introscreen = 1;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player setclientuivisibilityflag( "hud_visible", 1 );
|
||||
@ -627,6 +630,7 @@ fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards )
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
if ( !( isdefined( level.host_ended_game ) && level.host_ended_game ) )
|
||||
@ -667,6 +671,7 @@ wait_for_all_players_ready()
|
||||
}
|
||||
|
||||
num_players = get_number_of_waiting_players();
|
||||
|
||||
while ( num_players < level.pregame_minplayers )
|
||||
{
|
||||
if (is_gametype_active("zgrief"))
|
||||
@ -675,6 +680,7 @@ wait_for_all_players_ready()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( is_true( player.afterlife ) )
|
||||
@ -688,6 +694,7 @@ wait_for_all_players_ready()
|
||||
num_waiting_for = level.pregame_minplayers - num_players;
|
||||
|
||||
players_str = "PLAYERS";
|
||||
|
||||
if ( num_waiting_for == 1 )
|
||||
{
|
||||
players_str = "PLAYER";
|
||||
@ -813,6 +820,7 @@ wait_for_all_players_ready()
|
||||
num_waiting_for = players.size - num_ready;
|
||||
|
||||
players_str = "PLAYERS";
|
||||
|
||||
if ( num_waiting_for == 1 )
|
||||
{
|
||||
players_str = "PLAYER";
|
||||
@ -1044,6 +1052,7 @@ last_stand_best_pistol()
|
||||
ammo_count = self getammocount( current_weapons[i] );
|
||||
|
||||
dual_wield_name = weapondualwieldweaponname( current_weapons[i] );
|
||||
|
||||
if ( dual_wield_name != "none" )
|
||||
{
|
||||
ammo_count += self getweaponammoclip( dual_wield_name );
|
||||
@ -1105,6 +1114,7 @@ can_track_ammo( weap )
|
||||
case "alcatraz_shield_zm":
|
||||
case "tomb_shield_zm":
|
||||
return false;
|
||||
|
||||
default:
|
||||
if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool )
|
||||
return false;
|
||||
@ -1144,20 +1154,24 @@ take_additionalprimaryweapon()
|
||||
alt_name = weaponAltWeaponName(name);
|
||||
|
||||
clip_missing = weaponClipSize(name) - self.a_saved_weapon["clip"];
|
||||
|
||||
if (clip_missing > self.a_saved_weapon["stock"])
|
||||
{
|
||||
clip_missing = self.a_saved_weapon["stock"];
|
||||
}
|
||||
|
||||
self.a_saved_weapon["clip"] += clip_missing;
|
||||
self.a_saved_weapon["stock"] -= clip_missing;
|
||||
|
||||
if (dw_name != "none")
|
||||
{
|
||||
clip_dualwield_missing = weaponClipSize(dw_name) - self.a_saved_weapon["lh_clip"];
|
||||
|
||||
if (clip_dualwield_missing > self.a_saved_weapon["stock"])
|
||||
{
|
||||
clip_dualwield_missing = self.a_saved_weapon["stock"];
|
||||
}
|
||||
|
||||
self.a_saved_weapon["lh_clip"] += clip_dualwield_missing;
|
||||
self.a_saved_weapon["stock"] -= clip_dualwield_missing;
|
||||
}
|
||||
@ -1165,10 +1179,12 @@ take_additionalprimaryweapon()
|
||||
if (alt_name != "none")
|
||||
{
|
||||
clip_alt_missing = weaponClipSize(alt_name) - self.a_saved_weapon["alt_clip"];
|
||||
|
||||
if (clip_alt_missing > self.a_saved_weapon["alt_stock"])
|
||||
{
|
||||
clip_alt_missing = self.a_saved_weapon["alt_stock"];
|
||||
}
|
||||
|
||||
self.a_saved_weapon["alt_clip"] += clip_alt_missing;
|
||||
self.a_saved_weapon["alt_stock"] -= clip_alt_missing;
|
||||
}
|
||||
@ -1516,6 +1532,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
||||
if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker.sessionteam == self.sessionteam && !eattacker hasperk( "specialty_noname" ) && isDefined( self.is_zombie ) && !self.is_zombie )
|
||||
{
|
||||
self maps\mp\zombies\_zm::process_friendly_fire_callbacks( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
|
||||
|
||||
if ( self != eattacker )
|
||||
{
|
||||
return;
|
||||
@ -1525,10 +1542,12 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_true( level.pers_upgrade_insta_kill ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_insta_kill_melee_swipe( smeansofdeath, eattacker );
|
||||
}
|
||||
|
||||
if ( isDefined( self.overrideplayerdamage ) )
|
||||
{
|
||||
idamage = self [[ self.overrideplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime );
|
||||
@ -1537,20 +1556,24 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
||||
{
|
||||
idamage = self [[ level.overrideplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime );
|
||||
}
|
||||
|
||||
if ( is_true( self.magic_bullet_shield ) )
|
||||
{
|
||||
maxhealth = self.maxhealth;
|
||||
self.health += idamage;
|
||||
self.maxhealth = maxhealth;
|
||||
}
|
||||
|
||||
if ( isDefined( self.divetoprone ) && self.divetoprone == 1 )
|
||||
{
|
||||
if ( smeansofdeath == "MOD_GRENADE_SPLASH" )
|
||||
{
|
||||
dist = distance2d( vpoint, self.origin );
|
||||
|
||||
if ( dist > 32 )
|
||||
{
|
||||
dot_product = vectordot( anglesToForward( self.angles ), vdir );
|
||||
|
||||
if ( dot_product > 0 )
|
||||
{
|
||||
idamage = int( idamage * 0.5 );
|
||||
@ -1558,6 +1581,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( level.prevent_player_damage ) )
|
||||
{
|
||||
if ( self [[ level.prevent_player_damage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) )
|
||||
@ -1565,7 +1589,9 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
idflags |= level.idflags_no_knockback;
|
||||
|
||||
if ( idamage > 0 && shitloc == "riotshield" )
|
||||
{
|
||||
shitloc = "torso_upper";
|
||||
@ -1587,6 +1613,7 @@ getfreespawnpoint( spawnpoints, player )
|
||||
{
|
||||
game[ "spawns_randomized" ] = 1;
|
||||
random_chance = randomint( 100 );
|
||||
|
||||
if ( random_chance > 50 )
|
||||
{
|
||||
set_game_var( "side_selection", 1 );
|
||||
@ -1598,6 +1625,7 @@ getfreespawnpoint( spawnpoints, player )
|
||||
}
|
||||
|
||||
side_selection = get_game_var( "side_selection" );
|
||||
|
||||
if ( get_game_var( "switchedsides" ) )
|
||||
{
|
||||
if ( side_selection == 2 )
|
||||
@ -1616,6 +1644,7 @@ getfreespawnpoint( spawnpoints, player )
|
||||
if ( isdefined( player ) && isdefined( player.team ) )
|
||||
{
|
||||
i = 0;
|
||||
|
||||
while ( isdefined( spawnpoints ) && i < spawnpoints.size )
|
||||
{
|
||||
if ( side_selection == 1 )
|
||||
@ -1741,6 +1770,7 @@ check_for_valid_spawn_near_team( revivee, return_struct )
|
||||
if ( spawn_points[ j ].locked == 0 )
|
||||
{
|
||||
plyr_dist = distancesquared( players[ i ].origin, spawn_points[ j ].origin );
|
||||
|
||||
if ( plyr_dist < ideal_distance * ideal_distance )
|
||||
{
|
||||
if ( plyr_dist < closest_distance )
|
||||
@ -1769,6 +1799,7 @@ check_for_valid_spawn_near_team( revivee, return_struct )
|
||||
if ( isdefined( closest_group ) )
|
||||
{
|
||||
spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct );
|
||||
|
||||
if ( isdefined( spawn_location ) )
|
||||
{
|
||||
return spawn_location;
|
||||
@ -1795,6 +1826,7 @@ check_for_valid_spawn_near_team( revivee, return_struct )
|
||||
if ( spawn_points[ j ].locked == 0 )
|
||||
{
|
||||
plyr_dist = distancesquared( self.origin, spawn_points[ j ].origin );
|
||||
|
||||
if ( plyr_dist < ideal_distance * ideal_distance )
|
||||
{
|
||||
if ( plyr_dist < closest_distance )
|
||||
@ -1822,6 +1854,7 @@ check_for_valid_spawn_near_team( revivee, return_struct )
|
||||
if ( isdefined( closest_group ) )
|
||||
{
|
||||
spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct );
|
||||
|
||||
if ( isdefined( spawn_location ) )
|
||||
{
|
||||
return spawn_location;
|
||||
@ -1878,6 +1911,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
if ( is_true( self.use_adjusted_grenade_damage ) )
|
||||
{
|
||||
self.use_adjusted_grenade_damage = undefined;
|
||||
|
||||
if ( self.health > idamage )
|
||||
{
|
||||
return idamage;
|
||||
@ -1968,6 +2002,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
}
|
||||
|
||||
canexert = 1;
|
||||
|
||||
if ( is_true( level.pers_upgrade_flopper ) )
|
||||
{
|
||||
if ( is_true( self.pers_upgrades_awarded[ "flopper" ] ) )
|
||||
@ -2032,6 +2067,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
}
|
||||
|
||||
vars = [];
|
||||
|
||||
if (!self hasPerk("specialty_flakjacket"))
|
||||
{
|
||||
// remove fall damage being based off max health
|
||||
@ -2040,11 +2076,13 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
|
||||
// increase fall damage beyond 110
|
||||
vars["max_damage"] = 110;
|
||||
|
||||
if (idamage >= vars["max_damage"])
|
||||
{
|
||||
vars["velocity"] = abs(self.fall_velocity);
|
||||
vars["min_velocity"] = getDvarInt("bg_fallDamageMinHeight") * 3.25;
|
||||
vars["max_velocity"] = getDvarInt("bg_fallDamageMaxHeight") * 2.5;
|
||||
|
||||
if (self.divetoprone)
|
||||
{
|
||||
vars["min_velocity"] = getDvarInt("dtp_fall_damage_min_height") * 4.5;
|
||||
@ -2062,6 +2100,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
finaldamage = idamage;
|
||||
}
|
||||
}
|
||||
|
||||
if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" )
|
||||
{
|
||||
if ( self hasperk( "specialty_flakjacket" ) )
|
||||
@ -2113,6 +2152,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
|
||||
return finaldamage;
|
||||
}
|
||||
|
||||
if ( isDefined( eattacker ) )
|
||||
{
|
||||
if ( isDefined( eattacker.animname ) && eattacker.animname == "zombie_dog" )
|
||||
@ -2164,6 +2204,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
|
||||
players = get_players();
|
||||
count = 0;
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
if ( players[ i ] == self || players[ i ].is_zombie || players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || players[ i ].sessionstate == "spectator" )
|
||||
@ -2178,11 +2219,13 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
|
||||
{
|
||||
self thread maps\mp\zombies\_zm::wait_and_revive();
|
||||
}
|
||||
|
||||
return finaldamage;
|
||||
}
|
||||
|
||||
solo_death = self is_solo_death( players );
|
||||
non_solo_death = self is_non_solo_death( players, count );
|
||||
|
||||
if ( ( solo_death || non_solo_death ) && !is_true( level.no_end_game_check ) )
|
||||
{
|
||||
level notify( "stop_suicide_trigger" );
|
||||
@ -2264,12 +2307,14 @@ is_solo_death( players )
|
||||
}
|
||||
|
||||
active_perks = 0;
|
||||
|
||||
if(isDefined(self.perks_active))
|
||||
{
|
||||
active_perks = self.perks_active.size;
|
||||
}
|
||||
|
||||
disabled_perks = 0;
|
||||
|
||||
if(isDefined(self.disabled_perks))
|
||||
{
|
||||
disabled_perks = self.disabled_perks.size;
|
||||
@ -2300,31 +2345,39 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
|
||||
self allowjump( 0 );
|
||||
currweapon = self getcurrentweapon();
|
||||
statweapon = currweapon;
|
||||
|
||||
if ( is_alt_weapon( statweapon ) )
|
||||
{
|
||||
statweapon = weaponaltweaponname( statweapon );
|
||||
}
|
||||
|
||||
self addweaponstat( statweapon, "deathsDuringUse", 1 );
|
||||
|
||||
if ( is_true( self.hasperkspecialtytombstone ) )
|
||||
{
|
||||
self.laststand_perks = scripts\zm\_zm_reimagined::tombstone_save_perks( self );
|
||||
}
|
||||
|
||||
if ( isDefined( self.pers_upgrades_awarded[ "perk_lose" ] ) && self.pers_upgrades_awarded[ "perk_lose" ] )
|
||||
{
|
||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_perk_lose_save();
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
if ( players.size == 1 && flag( "solo_game" ) )
|
||||
{
|
||||
if ( self.solo_lives_given < 3 )
|
||||
{
|
||||
active_perks = 0;
|
||||
|
||||
if(isDefined(self.perks_active))
|
||||
{
|
||||
active_perks = self.perks_active.size;
|
||||
}
|
||||
|
||||
disabled_perks = 0;
|
||||
|
||||
if(isDefined(self.disabled_perks))
|
||||
{
|
||||
disabled_perks = self.disabled_perks.size;
|
||||
@ -2336,10 +2389,12 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( self hasperk( "specialty_additionalprimaryweapon" ) )
|
||||
{
|
||||
self.weapon_taken_by_losing_specialty_additionalprimaryweapon = maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
||||
}
|
||||
|
||||
if ( is_true( self.hasperkspecialtytombstone ) )
|
||||
{
|
||||
self [[ level.tombstone_laststand_func ]]();
|
||||
@ -2351,12 +2406,14 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
|
||||
self notify( "specialty_scavenger_stop" );
|
||||
}
|
||||
}
|
||||
|
||||
self clear_is_drinking();
|
||||
self thread maps\mp\zombies\_zm::remove_deadshot_bottle();
|
||||
self thread maps\mp\zombies\_zm::remote_revive_watch();
|
||||
self maps\mp\zombies\_zm_score::player_downed_penalty();
|
||||
self disableoffhandweapons();
|
||||
self thread maps\mp\zombies\_zm::last_stand_grenade_save_and_return();
|
||||
|
||||
if ( smeansofdeath != "MOD_SUICIDE" && smeansofdeath != "MOD_FALLING" )
|
||||
{
|
||||
if ( !is_true( self.intermission ) )
|
||||
@ -2371,23 +2428,29 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "downed", self.origin );
|
||||
|
||||
if ( isDefined( level._zombie_minigun_powerup_last_stand_func ) )
|
||||
{
|
||||
self thread [[ level._zombie_minigun_powerup_last_stand_func ]]();
|
||||
}
|
||||
|
||||
if ( isDefined( level._zombie_tesla_powerup_last_stand_func ) )
|
||||
{
|
||||
self thread [[ level._zombie_tesla_powerup_last_stand_func ]]();
|
||||
}
|
||||
|
||||
if ( self hasperk( "specialty_grenadepulldeath" ) )
|
||||
{
|
||||
b_alt_visionset = 1;
|
||||
|
||||
if ( isDefined( level.custom_laststand_func ) )
|
||||
{
|
||||
self thread [[ level.custom_laststand_func ]]();
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_true( self.intermission ) )
|
||||
{
|
||||
bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "died", self.origin );
|
||||
@ -2395,6 +2458,7 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
|
||||
self stopsounds();
|
||||
level waittill( "forever" );
|
||||
}
|
||||
|
||||
if ( !b_alt_visionset )
|
||||
{
|
||||
visionsetlaststand( "zombie_last_stand", 1 );
|
||||
@ -2446,15 +2510,19 @@ player_spawn_protection_timeout()
|
||||
wait_and_revive()
|
||||
{
|
||||
flag_set( "wait_and_revive" );
|
||||
|
||||
if ( isDefined( self.waiting_to_revive ) && self.waiting_to_revive == 1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( is_true( self.pers_upgrades_awarded[ "perk_lose" ] ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_perk_lose_save();
|
||||
}
|
||||
|
||||
self.waiting_to_revive = 1;
|
||||
|
||||
if ( isDefined( level.exit_level_func ) )
|
||||
{
|
||||
self thread [[ level.exit_level_func ]]();
|
||||
@ -2463,10 +2531,12 @@ wait_and_revive()
|
||||
{
|
||||
self thread maps\mp\zombies\_zm::default_exit_level();
|
||||
}
|
||||
|
||||
solo_revive_time = 10;
|
||||
self.revive_hud.y = -160;
|
||||
self.revive_hud settext( &"ZOMBIE_REVIVING" );
|
||||
self maps\mp\zombies\_zm_laststand::revive_hud_show_n_fade( solo_revive_time );
|
||||
|
||||
if ( !isDefined( self.beingrevivedprogressbar ) )
|
||||
{
|
||||
self.beingrevivedprogressbar = self createprimaryprogressbar();
|
||||
@ -2480,18 +2550,22 @@ wait_and_revive()
|
||||
self.beingrevivedprogressbar.barframe.sort = 3;
|
||||
self.beingrevivedprogressbar.barframe destroy();
|
||||
}
|
||||
|
||||
self.beingrevivedprogressbar updatebar( 0.01, 1 / solo_revive_time );
|
||||
flag_wait_or_timeout( "instant_revive", solo_revive_time );
|
||||
self.revive_hud settext( "" );
|
||||
|
||||
if ( isDefined( self.beingrevivedprogressbar ) )
|
||||
{
|
||||
self.beingrevivedprogressbar destroyelem();
|
||||
}
|
||||
|
||||
flag_clear( "wait_and_revive" );
|
||||
self maps\mp\zombies\_zm_laststand::auto_revive( self );
|
||||
self.solo_lives_given++;
|
||||
|
||||
self.waiting_to_revive = 0;
|
||||
|
||||
if ( is_true( self.pers_upgrades_awarded[ "perk_lose" ] ) )
|
||||
{
|
||||
self thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_perk_lose_restore();
|
||||
@ -2503,23 +2577,29 @@ player_revive_monitor()
|
||||
self endon( "disconnect" );
|
||||
self notify( "stop_player_revive_monitor" );
|
||||
self endon( "stop_player_revive_monitor" );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "player_revived", reviver );
|
||||
self playsoundtoplayer( "zmb_character_revived", self );
|
||||
|
||||
if ( isDefined( level.isresetting_grief ) && level.isresetting_grief )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "revived", self.origin );
|
||||
|
||||
if ( isDefined( reviver ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "revive_up" );
|
||||
|
||||
if(reviver != self)
|
||||
{
|
||||
points = self.score_lost_when_downed;
|
||||
reviver maps\mp\zombies\_zm_score::player_add_points( "reviver", points );
|
||||
}
|
||||
|
||||
self.score_lost_when_downed = 0;
|
||||
}
|
||||
}
|
||||
@ -2654,6 +2734,7 @@ end_game()
|
||||
level waittill( "end_game" );
|
||||
maps\mp\zombies\_zm::check_end_game_intermission_delay();
|
||||
clientnotify( "zesn" );
|
||||
|
||||
if ( isDefined( level.sndgameovermusicoverride ) )
|
||||
{
|
||||
level thread maps\mp\zombies\_zm_audio::change_zombie_music( level.sndgameovermusicoverride );
|
||||
@ -2662,14 +2743,18 @@ end_game()
|
||||
{
|
||||
level thread maps\mp\zombies\_zm_audio::change_zombie_music( "game_over" );
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
setclientsysstate( "lsm", "0", players[ i ] );
|
||||
}
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] enableInvulnerability();
|
||||
|
||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
{
|
||||
players[ i ] recordplayerdeathzombies();
|
||||
@ -2677,11 +2762,13 @@ end_game()
|
||||
players[ i ] maps\mp\zombies\_zm_stats::increment_client_stat( "deaths" );
|
||||
players[ i ] maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_jugg_player_death_stat();
|
||||
}
|
||||
|
||||
if ( isdefined( players[ i ].revivetexthud) )
|
||||
{
|
||||
players[ i ].revivetexthud destroy();
|
||||
}
|
||||
}
|
||||
|
||||
stopallrumbles();
|
||||
level.intermission = 1;
|
||||
level.zombie_vars[ "zombie_powerup_insta_kill_time" ] = 0;
|
||||
@ -2691,6 +2778,7 @@ end_game()
|
||||
game_over = [];
|
||||
survived = [];
|
||||
players = get_players();
|
||||
|
||||
if ( !isDefined( level._supress_survived_screen ) )
|
||||
{
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
@ -2716,6 +2804,7 @@ end_game()
|
||||
game_over[ i ] fadeovertime( 1 );
|
||||
game_over[ i ].alpha = 1;
|
||||
}
|
||||
|
||||
survived[ i ] = newclienthudelem( players[ i ] );
|
||||
survived[ i ].alignx = "center";
|
||||
survived[ i ].aligny = "middle";
|
||||
@ -2753,25 +2842,30 @@ end_game()
|
||||
{
|
||||
survived[ i ] settext( &"ZOMBIE_SURVIVED_ROUNDS", level.round_number );
|
||||
}
|
||||
|
||||
survived[ i ] fadeovertime( 1 );
|
||||
survived[ i ].alpha = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( level.custom_end_screen ) )
|
||||
{
|
||||
level [[ level.custom_end_screen ]]();
|
||||
}
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] setclientammocounterhide( 1 );
|
||||
players[ i ] setclientminiscoreboardhide( 1 );
|
||||
}
|
||||
|
||||
uploadstats();
|
||||
maps\mp\zombies\_zm_stats::update_players_stats_at_match_end( players );
|
||||
maps\mp\zombies\_zm_stats::update_global_counters_on_match_end();
|
||||
wait 1;
|
||||
wait 3.95;
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( isdefined( player.sessionstate ) && player.sessionstate == "spectator" )
|
||||
@ -2779,8 +2873,10 @@ end_game()
|
||||
player.sessionstate = "playing";
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
players = get_players();
|
||||
|
||||
if ( !isDefined( level._supress_survived_screen ) )
|
||||
{
|
||||
for(i = 0; i < players.size; i++)
|
||||
@ -2789,17 +2885,20 @@ end_game()
|
||||
game_over[ i ] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
if ( isDefined( players[ i ].survived_hud ) )
|
||||
{
|
||||
players[ i ].survived_hud destroy();
|
||||
}
|
||||
|
||||
if ( isDefined( players[ i ].game_over_hud ) )
|
||||
{
|
||||
players[ i ].game_over_hud destroy();
|
||||
}
|
||||
}
|
||||
|
||||
maps\mp\zombies\_zm::intermission();
|
||||
wait level.zombie_vars[ "zombie_intermission_time" ];
|
||||
level notify( "stop_intermission" );
|
||||
@ -2807,6 +2906,7 @@ end_game()
|
||||
bbprint( "zombie_epilogs", "rounds %d", level.round_number );
|
||||
wait 1.5;
|
||||
players = get_players();
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] cameraactivate( 0 );
|
||||
|
@ -92,6 +92,7 @@ afterlife_add()
|
||||
self.lives++;
|
||||
self thread afterlife_add_fx();
|
||||
}
|
||||
|
||||
self playsoundtoplayer( "zmb_afterlife_add", self );
|
||||
self setclientfieldtoplayer( "player_lives", self.lives );
|
||||
}
|
||||
@ -101,10 +102,12 @@ afterlife_start_zombie_logic()
|
||||
flag_wait( "start_zombie_round_logic" );
|
||||
wait 0.5;
|
||||
everyone_alive = 0;
|
||||
|
||||
while ( isDefined( everyone_alive ) && !everyone_alive )
|
||||
{
|
||||
everyone_alive = 1;
|
||||
players = getplayers();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if ( isDefined( player.afterlife ) && player.afterlife )
|
||||
@ -115,11 +118,14 @@ afterlife_start_zombie_logic()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
|
||||
while ( level.intermission )
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
flag_set( "afterlife_start_over" );
|
||||
wait 2;
|
||||
array_func( getplayers(), ::afterlife_add );
|
||||
@ -296,6 +302,7 @@ afterlife_revive_do_revive( playerbeingrevived, revivergun )
|
||||
playerbeingrevived_player = playerbeingrevived;
|
||||
playerbeingrevived_player.revive_hud.y = -160;
|
||||
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
||||
|
||||
if ( isDefined( playerbeingrevived.e_afterlife_player ) )
|
||||
{
|
||||
playerbeingrevived_player = playerbeingrevived.e_afterlife_player;
|
||||
|
@ -48,6 +48,7 @@ check_range_attack()
|
||||
avogadro_exit( from )
|
||||
{
|
||||
powerup_origin = spawn( "script_origin", self.origin );
|
||||
|
||||
if ( self.state == "attacking_bus" || self.state == "stay_attached" )
|
||||
{
|
||||
powerup_origin linkto( level.the_bus );
|
||||
|
@ -16,9 +16,11 @@ inert_wakeup()
|
||||
{
|
||||
current_time = getTime();
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
dist_sq = distancesquared( self.origin, player.origin );
|
||||
|
||||
if ( dist_sq < 4096 )
|
||||
{
|
||||
self maps\mp\zombies\_zm_ai_basic::stop_inert();
|
||||
|
@ -433,6 +433,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
{
|
||||
level.num_pulls_since_brutus_spawn = 0;
|
||||
self set_zombie_run_cycle( "run" );
|
||||
|
||||
if ( !isDefined( has_helmet ) )
|
||||
{
|
||||
self.has_helmet = 1;
|
||||
@ -441,6 +442,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
{
|
||||
self.has_helmet = has_helmet;
|
||||
}
|
||||
|
||||
if ( !isDefined( helmet_hits ) )
|
||||
{
|
||||
self.helmet_hits = 0;
|
||||
@ -449,6 +451,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
{
|
||||
self.helmet_hits = helmet_hits;
|
||||
}
|
||||
|
||||
if ( !isDefined( explosive_dmg_taken ) )
|
||||
{
|
||||
self.explosive_dmg_taken = 0;
|
||||
@ -457,6 +460,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
{
|
||||
self.explosive_dmg_taken = explosive_dmg_taken;
|
||||
}
|
||||
|
||||
if ( !isDefined( starting_health ) )
|
||||
{
|
||||
self brutus_health_increases();
|
||||
@ -468,6 +472,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
self.maxhealth = starting_health;
|
||||
self.health = starting_health;
|
||||
}
|
||||
|
||||
self.explosive_dmg_req = level.brutus_expl_dmg_req;
|
||||
self.no_damage_points = 1;
|
||||
self endon( "death" );
|
||||
@ -495,6 +500,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
self setfreecameralockonallowed( 0 );
|
||||
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
||||
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
||||
|
||||
if ( isDefined( zone_name ) && zone_name == "zone_golden_gate_bridge" )
|
||||
{
|
||||
wait randomfloat( 1.5 );
|
||||
@ -504,23 +510,28 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
||||
{
|
||||
spawn_pos = get_best_brutus_spawn_pos( zone_name );
|
||||
}
|
||||
|
||||
if ( !isDefined( spawn_pos ) )
|
||||
{
|
||||
self delete();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isDefined( spawn_pos.angles ) )
|
||||
{
|
||||
spawn_pos.angles = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
if ( isDefined( level.brutus_do_prologue ) && level.brutus_do_prologue )
|
||||
{
|
||||
self brutus_spawn_prologue( spawn_pos );
|
||||
}
|
||||
|
||||
if ( !self.has_helmet )
|
||||
{
|
||||
self detach( "c_zom_cellbreaker_helmet" );
|
||||
}
|
||||
|
||||
level.brutus_count++;
|
||||
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
||||
self thread snddelayedmusic();
|
||||
@ -560,20 +571,24 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
n_brutus_damage_percent = level.brutus_damage_percent;
|
||||
n_brutus_headshot_modifier = 1;
|
||||
}
|
||||
|
||||
if ( isDefined( weapon ) && is_weapon_shotgun( weapon ) )
|
||||
{
|
||||
n_brutus_damage_percent *= level.brutus_shotgun_damage_mod;
|
||||
n_brutus_headshot_modifier *= level.brutus_shotgun_damage_mod;
|
||||
}
|
||||
|
||||
if ( isDefined( weapon ) && weapon == "bouncing_tomahawk_zm" && isDefined( inflictor ) )
|
||||
{
|
||||
self playsound( "wpn_tomahawk_imp_zombie" );
|
||||
|
||||
if ( self.has_helmet )
|
||||
{
|
||||
if ( damage == 1 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( isDefined( inflictor.n_cookedtime ) && inflictor.n_cookedtime >= 2000 )
|
||||
{
|
||||
self.helmet_hits = level.brutus_helmet_shots;
|
||||
@ -586,9 +601,11 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
{
|
||||
self.helmet_hits++;
|
||||
}
|
||||
|
||||
if ( self.helmet_hits >= level.brutus_helmet_shots )
|
||||
{
|
||||
self thread brutus_remove_helmet( vdir );
|
||||
|
||||
if ( level.brutus_in_grief )
|
||||
{
|
||||
player_points = level.brutus_points_for_helmet;
|
||||
@ -598,6 +615,7 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
||||
player_points = multiplier * round_up_score( level.brutus_points_for_helmet, 5 );
|
||||
}
|
||||
|
||||
if ( isDefined( attacker ) && isplayer( attacker ) )
|
||||
{
|
||||
attacker add_to_player_score( player_points );
|
||||
@ -605,6 +623,7 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
level notify( "brutus_helmet_removed", attacker );
|
||||
}
|
||||
}
|
||||
|
||||
return damage * n_brutus_damage_percent;
|
||||
}
|
||||
else
|
||||
@ -612,6 +631,7 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
return damage;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( meansofdeath == "MOD_MELEE" || meansofdeath == "MOD_IMPACT" ) && isDefined( meansofdeath ) )
|
||||
{
|
||||
if ( weapon == "alcatraz_shield_zm" )
|
||||
@ -621,14 +641,17 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( level.zombiemode_using_afterlife ) && level.zombiemode_using_afterlife && weapon == "lightning_hands_zm" )
|
||||
{
|
||||
self thread brutus_afterlife_teleport();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( is_explosive_damage( meansofdeath ) && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm" )
|
||||
{
|
||||
self.explosive_dmg_taken += damage;
|
||||
|
||||
if ( !self.has_helmet )
|
||||
{
|
||||
scaler = n_brutus_headshot_modifier;
|
||||
@ -637,9 +660,11 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
{
|
||||
scaler = level.brutus_damage_percent;
|
||||
}
|
||||
|
||||
if ( self.explosive_dmg_taken >= self.explosive_dmg_req && isDefined( self.has_helmet ) && self.has_helmet )
|
||||
{
|
||||
self thread brutus_remove_helmet( vectorScale( ( 0, 1, 0 ), 10 ) );
|
||||
|
||||
if ( level.brutus_in_grief )
|
||||
{
|
||||
player_points = level.brutus_points_for_helmet;
|
||||
@ -649,9 +674,11 @@ brutus_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon
|
||||
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
||||
player_points = multiplier * round_up_score( level.brutus_points_for_helmet, 5 );
|
||||
}
|
||||
|
||||
attacker add_to_player_score( player_points );
|
||||
attacker.pers[ "score" ] = inflictor.score;
|
||||
}
|
||||
|
||||
return damage * scaler;
|
||||
}
|
||||
else if ( shitloc != "head" && shitloc != "helmet" )
|
||||
@ -675,21 +702,26 @@ brutus_health_increases()
|
||||
{
|
||||
players = getplayers();
|
||||
n_player_modifier = 1;
|
||||
|
||||
if ( players.size > 1 )
|
||||
{
|
||||
n_player_modifier = players.size * 0.75;
|
||||
}
|
||||
|
||||
level.brutus_round_count++;
|
||||
level.brutus_health = int( level.brutus_health_increase * n_player_modifier * level.brutus_round_count );
|
||||
level.brutus_expl_dmg_req = int( level.brutus_explosive_damage_increase * n_player_modifier * level.brutus_round_count );
|
||||
|
||||
if ( level.brutus_health >= ( 5000 * n_player_modifier ) )
|
||||
{
|
||||
level.brutus_health = int( 5000 * n_player_modifier );
|
||||
}
|
||||
|
||||
if ( level.brutus_expl_dmg_req >= ( 4500 * n_player_modifier ) )
|
||||
{
|
||||
level.brutus_expl_dmg_req = int( 4500 * n_player_modifier );
|
||||
}
|
||||
|
||||
level.brutus_last_spawn_round = level.round_number;
|
||||
}
|
||||
}
|
||||
|
@ -118,6 +118,7 @@ screecher_spawning_logic()
|
||||
screecher_melee_damage( player )
|
||||
{
|
||||
melee_score = 0;
|
||||
|
||||
if ( player hasweapon( "tazer_knuckles_zm" ) )
|
||||
{
|
||||
melee_score = 30;
|
||||
|
@ -6,10 +6,12 @@
|
||||
init()
|
||||
{
|
||||
onplayerconnect_callback( ::onplayerconnect_bank_deposit_box );
|
||||
|
||||
if ( !isDefined( level.ta_vaultfee ) )
|
||||
{
|
||||
level.ta_vaultfee = 100;
|
||||
}
|
||||
|
||||
if ( !isDefined( level.ta_tellerfee ) )
|
||||
{
|
||||
level.ta_tellerfee = 100;
|
||||
@ -31,6 +33,7 @@ gain_interest_after_rounds()
|
||||
level waittill("end_of_round");
|
||||
|
||||
self.account_value *= 1.1;
|
||||
|
||||
if(self.account_value > level.bank_account_max)
|
||||
{
|
||||
self.account_value = level.bank_account_max;
|
||||
@ -65,13 +68,16 @@ bank_withdraw_unitrigger()
|
||||
trigger_deposit_think()
|
||||
{
|
||||
self endon( "kill_trigger" );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "trigger", player );
|
||||
|
||||
while ( !is_player_valid( player ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.account_value < level.bank_account_max )
|
||||
{
|
||||
account_value = level.bank_account_increment;
|
||||
@ -93,10 +99,12 @@ trigger_deposit_think()
|
||||
player playsoundtoplayer( "zmb_vault_bank_deposit", player );
|
||||
player.score -= score;
|
||||
player.account_value += account_value;
|
||||
|
||||
if ( isDefined( level.custom_bank_deposit_vo ) )
|
||||
{
|
||||
player thread [[ level.custom_bank_deposit_vo ]]();
|
||||
}
|
||||
|
||||
if ( (player.score <= 0) || (player.account_value >= level.bank_account_max) )
|
||||
{
|
||||
self sethintstring( "" );
|
||||
@ -106,6 +114,7 @@ trigger_deposit_think()
|
||||
{
|
||||
player thread do_player_general_vox( "general", "exert_sigh", 10, 50 );
|
||||
}
|
||||
|
||||
self thread show_balance(player);
|
||||
}
|
||||
}
|
||||
@ -113,13 +122,16 @@ trigger_deposit_think()
|
||||
trigger_withdraw_think()
|
||||
{
|
||||
self endon( "kill_trigger" );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "trigger", player );
|
||||
|
||||
while ( !is_player_valid( player ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.account_value > 0 )
|
||||
{
|
||||
score = level.bank_deposit_ddl_increment_amount;
|
||||
@ -135,6 +147,7 @@ trigger_withdraw_think()
|
||||
player.score += score;
|
||||
level notify( "bank_withdrawal" );
|
||||
player.account_value -= account_value;
|
||||
|
||||
if ( isDefined( level.custom_bank_withdrawl_vo ) )
|
||||
{
|
||||
player thread [[ level.custom_bank_withdrawl_vo ]]();
|
||||
@ -143,6 +156,7 @@ trigger_withdraw_think()
|
||||
{
|
||||
player thread do_player_general_vox( "general", "exert_laugh", 10, 50 );
|
||||
}
|
||||
|
||||
if ( player.account_value <= 0 )
|
||||
{
|
||||
self sethintstring( "" );
|
||||
@ -152,6 +166,7 @@ trigger_withdraw_think()
|
||||
{
|
||||
player thread do_player_general_vox( "general", "exert_sigh", 10, 50 );
|
||||
}
|
||||
|
||||
self thread show_balance(player);
|
||||
}
|
||||
}
|
||||
@ -159,11 +174,13 @@ trigger_withdraw_think()
|
||||
trigger_deposit_update_prompt( player )
|
||||
{
|
||||
self thread show_balance(player);
|
||||
|
||||
if ( (player.score <= 0) || (player.account_value >= level.bank_account_max) )
|
||||
{
|
||||
self sethintstring( "" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
self sethintstring( &"ZOMBIE_BANK_DEPOSIT_PROMPT", level.bank_deposit_ddl_increment_amount );
|
||||
return 1;
|
||||
}
|
||||
@ -171,11 +188,13 @@ trigger_deposit_update_prompt( player )
|
||||
trigger_withdraw_update_prompt( player )
|
||||
{
|
||||
self thread show_balance(player);
|
||||
|
||||
if ( player.account_value <= 0 )
|
||||
{
|
||||
self sethintstring( "" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
self sethintstring( &"ZOMBIE_BANK_WITHDRAW_PROMPT", level.bank_deposit_ddl_increment_amount, level.ta_vaultfee );
|
||||
return 1;
|
||||
}
|
||||
|
@ -186,10 +186,12 @@ handle_post_board_repair_rewards( cost, zbarrier )
|
||||
{
|
||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "boards" );
|
||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "boards" );
|
||||
|
||||
if ( isDefined( self.pers[ "boards" ] ) && ( self.pers[ "boards" ] % 10 ) == 0 )
|
||||
{
|
||||
self thread do_player_general_vox( "general", "reboard", 90 );
|
||||
}
|
||||
|
||||
self maps\mp\zombies\_zm_pers_upgrades_functions::pers_boards_updated( zbarrier );
|
||||
self.rebuild_barrier_reward += cost;
|
||||
|
||||
|
@ -14,6 +14,7 @@ buildable_place_think()
|
||||
{
|
||||
self endon( "kill_trigger" );
|
||||
player_built = undefined;
|
||||
|
||||
while ( isDefined( self.stub.built ) && !self.stub.built )
|
||||
{
|
||||
self waittill( "trigger", player );
|
||||
@ -24,24 +25,29 @@ buildable_place_think()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( player.screecher_weapon ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !is_player_valid( player ) )
|
||||
{
|
||||
player thread ignore_triggers( 0.5 );
|
||||
}
|
||||
|
||||
status = player player_can_build( self.stub.buildablezone );
|
||||
|
||||
if ( !status )
|
||||
{
|
||||
self.stub.hint_string = "";
|
||||
self sethintstring( self.stub.hint_string );
|
||||
|
||||
if ( isDefined( self.stub.oncantuse ) )
|
||||
{
|
||||
self.stub [[ self.stub.oncantuse ]]( player );
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
else
|
||||
@ -50,12 +56,15 @@ buildable_place_think()
|
||||
{
|
||||
self.stub [[ self.stub.onbeginuse ]]( player );
|
||||
}
|
||||
|
||||
result = self buildable_use_hold_think( player );
|
||||
team = player.pers[ "team" ];
|
||||
|
||||
if ( isDefined( self.stub.onenduse ) )
|
||||
{
|
||||
self.stub [[ self.stub.onenduse ]]( team, player, result );
|
||||
}
|
||||
|
||||
if ( !result )
|
||||
{
|
||||
continue;
|
||||
@ -70,6 +79,7 @@ buildable_place_think()
|
||||
{
|
||||
self.stub [[ self.stub.onuse ]]( player );
|
||||
}
|
||||
|
||||
prompt = player maps\mp\zombies\_zm_buildables::player_build( self.stub.buildablezone );
|
||||
player_built = player;
|
||||
self.stub.hint_string = prompt;
|
||||
|
@ -57,6 +57,7 @@ randomize_pooled_buildables( poolname )
|
||||
for ( i = 0; i < count; i++ )
|
||||
{
|
||||
rand = randomint(count);
|
||||
|
||||
if ( rand != i )
|
||||
{
|
||||
swap_buildable_fields( level.buildablepools[poolname].stubs[i], level.buildablepools[poolname].stubs[rand] );
|
||||
@ -499,9 +500,11 @@ pooled_buildable_place_think()
|
||||
pooled_buildable_place_update_all()
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
num = player getentitynumber();
|
||||
|
||||
if ( isDefined( self.stub.playertrigger[num] ) )
|
||||
{
|
||||
self.stub.playertrigger[num] notify( "kill_trigger" );
|
||||
|
@ -236,6 +236,7 @@ chugabud_give_loadout()
|
||||
}
|
||||
|
||||
weapons_given = 0;
|
||||
|
||||
for ( i = 0; i < loadout.weapons.size; i++ )
|
||||
{
|
||||
if ( !isdefined( loadout.weapons[i] ) )
|
||||
@ -247,6 +248,7 @@ chugabud_give_loadout()
|
||||
self maps\mp\zombies\_zm_weapons::weapondata_give( loadout.weapons[i] );
|
||||
|
||||
weapons_given++;
|
||||
|
||||
if (weapons_given >= 2)
|
||||
{
|
||||
break;
|
||||
@ -299,6 +301,7 @@ chugabud_give_perks()
|
||||
maps\mp\zombies\_zm_perks::give_perk( loadout.perks[i] );
|
||||
}
|
||||
}
|
||||
|
||||
self.loadout.perks = undefined;
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ init_anim_slice_times()
|
||||
animlength = getanimlength( %o_zmb_chopper_slice_slow );
|
||||
|
||||
i = 0;
|
||||
|
||||
foreach ( frac in slice_times )
|
||||
{
|
||||
if ( i != 6 )
|
||||
@ -36,6 +37,7 @@ init_anim_slice_times()
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
foreach ( frac in retract_times )
|
||||
{
|
||||
if ( i == 0 || i == 6 )
|
||||
|
@ -8,28 +8,34 @@ startturretdeploy( weapon )
|
||||
self endon( "disconnect" );
|
||||
self endon( "equip_turret_zm_taken" );
|
||||
self thread maps\mp\zombies\_zm_equip_turret::watchforcleanup();
|
||||
|
||||
if ( !isDefined( self.turret_health ) )
|
||||
{
|
||||
self.turret_health = 30;
|
||||
}
|
||||
|
||||
if ( isDefined( weapon ) )
|
||||
{
|
||||
weapon hide();
|
||||
wait 0.1;
|
||||
|
||||
if ( isDefined( weapon.power_on ) && weapon.power_on )
|
||||
{
|
||||
weapon.turret notify( "stop_burst_fire_unmanned" );
|
||||
}
|
||||
|
||||
if ( !isDefined( weapon ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( self.turret ) )
|
||||
{
|
||||
self.turret notify( "stop_burst_fire_unmanned" );
|
||||
self.turret notify( "turret_deactivated" );
|
||||
self.turret delete();
|
||||
}
|
||||
|
||||
turret = spawnturret( "misc_turret", weapon.origin, "zombie_bullet_crouch_zm" );
|
||||
turret.turrettype = "sentry";
|
||||
turret setturrettype( turret.turrettype );
|
||||
@ -53,25 +59,30 @@ startturretdeploy( weapon )
|
||||
weapon.turret = turret;
|
||||
self.turret = turret;
|
||||
weapon turret_power_on();
|
||||
|
||||
if ( weapon.power_on )
|
||||
{
|
||||
turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
||||
}
|
||||
|
||||
self thread turretdecay( weapon );
|
||||
self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect( weapon );
|
||||
weapon waittill("death");
|
||||
|
||||
if ( isDefined( self.buildableturret.sound_ent ) )
|
||||
{
|
||||
self.buildableturret.sound_ent playsound( "wpn_zmb_turret_stop" );
|
||||
self.buildableturret.sound_ent delete();
|
||||
self.buildableturret.sound_ent = undefined;
|
||||
}
|
||||
|
||||
if ( isDefined( turret ) )
|
||||
{
|
||||
turret notify( "stop_burst_fire_unmanned" );
|
||||
turret notify( "turret_deactivated" );
|
||||
turret delete();
|
||||
}
|
||||
|
||||
self.turret = undefined;
|
||||
self notify( "turret_cleanup" );
|
||||
}
|
||||
@ -82,10 +93,12 @@ turret_power_on()
|
||||
self.power_on = 1;
|
||||
self.turret thread maps\mp\zombies\_zm_mgturret::burst_fire_unmanned();
|
||||
player = self.turret.owner;
|
||||
|
||||
if ( !isDefined( player.buildableturret.sound_ent ) )
|
||||
{
|
||||
player.buildableturret.sound_ent = spawn( "script_origin", self.turret.origin );
|
||||
}
|
||||
|
||||
player.buildableturret.sound_ent playsound( "wpn_zmb_turret_start" );
|
||||
player.buildableturret.sound_ent playloopsound( "wpn_zmb_turret_loop", 2 );
|
||||
}
|
||||
@ -95,6 +108,7 @@ turretdecay( weapon )
|
||||
self endon( "death" );
|
||||
self endon( "disconnect" );
|
||||
self endon( "equip_turret_zm_taken" );
|
||||
|
||||
while ( isDefined( weapon ) )
|
||||
{
|
||||
if ( weapon.power_on )
|
||||
@ -109,6 +123,7 @@ turretdecay( weapon )
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
}
|
@ -23,11 +23,14 @@ show_equipment_hint( equipment )
|
||||
placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
||||
{
|
||||
pickupmodel = spawn( "script_model", origin );
|
||||
|
||||
if ( isDefined( angles ) )
|
||||
{
|
||||
pickupmodel.angles = angles;
|
||||
}
|
||||
|
||||
pickupmodel setmodel( model );
|
||||
|
||||
if ( isDefined( level.equipment_safe_to_drop ) )
|
||||
{
|
||||
if ( !( self [[ level.equipment_safe_to_drop ]]( pickupmodel ) ) )
|
||||
@ -38,7 +41,9 @@ placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
watchername = getsubstr( equipname, 0, equipname.size - 3 );
|
||||
|
||||
if ( isDefined( level.retrievehints[ watchername ] ) )
|
||||
{
|
||||
hint = level.retrievehints[ watchername ].hint;
|
||||
@ -47,17 +52,22 @@ placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
||||
{
|
||||
hint = &"MP_GENERIC_PICKUP";
|
||||
}
|
||||
|
||||
icon = maps\mp\zombies\_zm_equipment::get_equipment_icon( equipname );
|
||||
|
||||
if ( !isDefined( tradius ) )
|
||||
{
|
||||
tradius = 32;
|
||||
}
|
||||
|
||||
torigin = origin;
|
||||
|
||||
if ( isDefined( toffset ) )
|
||||
{
|
||||
tforward = anglesToForward( angles );
|
||||
torigin += toffset * tforward;
|
||||
}
|
||||
|
||||
tup = anglesToUp( angles );
|
||||
eq_unitrigger_offset = 12 * tup;
|
||||
pickupmodel.stub = maps\mp\zombies\_zm_equipment::generate_equipment_unitrigger( "trigger_radius_use", torigin + eq_unitrigger_offset, angles, 0, tradius, 64, hint, equipname, maps\mp\zombies\_zm_equipment::placed_equipment_unitrigger_think, pickupmodel.canmove );
|
||||
@ -65,18 +75,22 @@ placed_equipment_think( model, equipname, origin, angles, tradius, toffset )
|
||||
pickupmodel.stub.equipname = equipname;
|
||||
pickupmodel.equipname = equipname;
|
||||
pickupmodel thread item_watch_damage();
|
||||
|
||||
if ( maps\mp\zombies\_zm_equipment::is_limited_equipment( equipname ) )
|
||||
{
|
||||
if ( !isDefined( level.dropped_equipment ) )
|
||||
{
|
||||
level.dropped_equipment = [];
|
||||
}
|
||||
|
||||
if ( isDefined( level.dropped_equipment[ equipname ] ) && isDefined( level.dropped_equipment[ equipname ].model ) )
|
||||
{
|
||||
level.dropped_equipment[ equipname ].model maps\mp\zombies\_zm_equipment::dropped_equipment_destroy( 1 );
|
||||
}
|
||||
|
||||
level.dropped_equipment[ equipname ] = pickupmodel.stub;
|
||||
}
|
||||
|
||||
maps\mp\zombies\_zm_equipment::destructible_equipment_list_add( pickupmodel );
|
||||
return pickupmodel;
|
||||
}
|
||||
@ -85,6 +99,7 @@ item_watch_damage()
|
||||
{
|
||||
self endon( "death" );
|
||||
self setcandamage( 1 );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self.health = 1000000;
|
||||
|
@ -15,12 +15,14 @@ wait_for_team_death_and_round_end()
|
||||
checking_for_round_end = 0;
|
||||
checking_for_round_tie = 0;
|
||||
level.isresetting_grief = 0;
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
cdc_alive = 0;
|
||||
cia_alive = 0;
|
||||
players = get_players();
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( !isDefined( players[ i ]._encounters_team ) )
|
||||
@ -28,19 +30,23 @@ wait_for_team_death_and_round_end()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( players[ i ]._encounters_team == "A" )
|
||||
{
|
||||
if ( is_player_valid( players[ i ] ) )
|
||||
{
|
||||
cia_alive++;
|
||||
}
|
||||
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( is_player_valid( players[ i ] ) )
|
||||
{
|
||||
cdc_alive++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
@ -126,6 +132,7 @@ round_end(winner)
|
||||
level endon("end_game");
|
||||
|
||||
team = undefined;
|
||||
|
||||
if(isDefined(winner))
|
||||
{
|
||||
if(winner == "A")
|
||||
@ -144,6 +151,7 @@ round_end(winner)
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
// don't spawn tombstone powerup on next down
|
||||
@ -213,18 +221,22 @@ game_won(winner)
|
||||
level.zombie_vars[ "spectators_respawn" ] = 0;
|
||||
players = get_players();
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
players[ i ] freezecontrols( 1 );
|
||||
|
||||
if ( players[ i ]._encounters_team == winner )
|
||||
{
|
||||
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer( "grief_won" );
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
players[ i ] thread maps\mp\zombies\_zm_audio_announcer::leaderdialogonplayer( "grief_lost" );
|
||||
i++;
|
||||
}
|
||||
|
||||
level notify( "game_module_ended", winner );
|
||||
level._game_module_game_end_check = undefined;
|
||||
maps\mp\gametypes_zm\_zm_gametype::track_encounters_win_stats( level.gamemodulewinningteam );
|
||||
@ -242,6 +254,7 @@ zombie_goto_round(target_round)
|
||||
|
||||
level.zombie_total = 0;
|
||||
zombies = get_round_enemy_array();
|
||||
|
||||
if ( isDefined( zombies ) )
|
||||
{
|
||||
for ( i = 0; i < zombies.size; i++ )
|
||||
@ -270,6 +283,7 @@ player_respawn_award()
|
||||
{
|
||||
maps\mp\zombies\_zm::award_grenades_for_survivors();
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(player.score < level.player_starting_points)
|
||||
|
@ -8,17 +8,21 @@ onspawnplayer( predictedspawn )
|
||||
{
|
||||
predictedspawn = 0;
|
||||
}
|
||||
|
||||
pixbeginevent( "ZSURVIVAL:onSpawnPlayer" );
|
||||
self.usingobj = undefined;
|
||||
self.is_zombie = 0;
|
||||
|
||||
if ( isDefined( level.custom_spawnplayer ) && is_true( self.player_initialized ) )
|
||||
{
|
||||
self [[ level.custom_spawnplayer ]]();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( level.customspawnlogic ) )
|
||||
{
|
||||
self [[ level.customspawnlogic ]]( predictedspawn );
|
||||
|
||||
if ( predictedspawn )
|
||||
{
|
||||
return;
|
||||
@ -27,6 +31,7 @@ onspawnplayer( predictedspawn )
|
||||
else
|
||||
{
|
||||
location = level.scr_zm_map_start_location;
|
||||
|
||||
if ( ( location == "default" || location == "" ) && isDefined( level.default_start_location ) )
|
||||
{
|
||||
location = level.default_start_location;
|
||||
@ -43,6 +48,7 @@ onspawnplayer( predictedspawn )
|
||||
if ( isdefined( structs[ i ].script_string ) )
|
||||
{
|
||||
tokens = strtok( structs[ i ].script_string, " " );
|
||||
|
||||
foreach ( token in tokens )
|
||||
{
|
||||
if ( token == match_string )
|
||||
@ -96,6 +102,7 @@ onspawnplayer( predictedspawn )
|
||||
if ( isDefined( level.game_mode_spawn_player_logic ) )
|
||||
{
|
||||
spawn_in_spectate = [[ level.game_mode_spawn_player_logic ]]();
|
||||
|
||||
if ( spawn_in_spectate )
|
||||
{
|
||||
self delay_thread( 0.05, maps\mp\zombies\_zm::spawnspectator );
|
||||
@ -109,26 +116,32 @@ onplayerspawned()
|
||||
{
|
||||
level endon( "end_game" );
|
||||
self endon( "disconnect" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill_either( "spawned_player", "fake_spawned_player" );
|
||||
|
||||
if ( isDefined( level.match_is_ending ) && level.match_is_ending )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
{
|
||||
self thread maps\mp\zombies\_zm_laststand::auto_revive( self );
|
||||
}
|
||||
|
||||
if ( isDefined( level.custom_player_fake_death_cleanup ) )
|
||||
{
|
||||
self [[ level.custom_player_fake_death_cleanup ]]();
|
||||
}
|
||||
|
||||
self setstance( "stand" );
|
||||
self.zmbdialogqueue = [];
|
||||
self.zmbdialogactive = 0;
|
||||
self.zmbdialoggroups = [];
|
||||
self.zmbdialoggroup = "";
|
||||
|
||||
if ( is_encounter() )
|
||||
{
|
||||
if ( self.team == "axis" )
|
||||
@ -144,27 +157,35 @@ onplayerspawned()
|
||||
self._team_name = &"ZOMBIE_RACE_TEAM_2";
|
||||
}
|
||||
}
|
||||
|
||||
self takeallweapons();
|
||||
|
||||
if ( isDefined( level.givecustomcharacters ) )
|
||||
{
|
||||
self [[ level.givecustomcharacters ]]();
|
||||
}
|
||||
|
||||
weapons_restored = 0;
|
||||
|
||||
if ( isDefined( level.onplayerspawned_restore_previous_weapons ) )
|
||||
{
|
||||
weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]]();
|
||||
}
|
||||
|
||||
if ( !is_true( weapons_restored ) )
|
||||
{
|
||||
self giveweapon( "knife_zm" );
|
||||
self give_start_weapon( 1 );
|
||||
}
|
||||
|
||||
weapons_restored = 0;
|
||||
|
||||
if ( isDefined( level._team_loadout ) )
|
||||
{
|
||||
self giveweapon( level._team_loadout );
|
||||
self switchtoweapon( level._team_loadout );
|
||||
}
|
||||
|
||||
if ( isDefined( level.gamemode_post_spawn_logic ) )
|
||||
{
|
||||
self [[ level.gamemode_post_spawn_logic ]]();
|
||||
@ -360,12 +381,15 @@ menu_onmenuresponse()
|
||||
case "allies":
|
||||
self [[ level.allies ]]();
|
||||
break;
|
||||
|
||||
case "axis":
|
||||
self [[ level.teammenu ]]( response );
|
||||
break;
|
||||
|
||||
case "autoassign":
|
||||
self [[ level.autoassign ]]( 1 );
|
||||
break;
|
||||
|
||||
case "spectator":
|
||||
self [[ level.spectator ]]();
|
||||
break;
|
||||
|
@ -12,6 +12,7 @@ revive_do_revive( playerbeingrevived, revivergun )
|
||||
playerbeingrevived_player = playerbeingrevived;
|
||||
playerbeingrevived_player.revive_hud.y = -160;
|
||||
beingrevivedprogressbar_y = level.primaryprogressbary * -1;
|
||||
|
||||
if ( isDefined( playerbeingrevived.e_chugabud_player ) )
|
||||
{
|
||||
playerbeingrevived_player = playerbeingrevived.e_chugabud_player;
|
||||
@ -258,6 +259,7 @@ laststand_clean_up_reviving_any( playerbeingrevived )
|
||||
playerbeingrevived waittill_any( "disconnect", "zombified", "stop_revive_trigger", "chugabud_effects_cleanup" );
|
||||
|
||||
self.is_reviving_any--;
|
||||
|
||||
if ( self.is_reviving_any < 0 )
|
||||
{
|
||||
self.is_reviving_any = 0;
|
||||
@ -290,6 +292,7 @@ laststand_clean_up_reviving_any( playerbeingrevived )
|
||||
revive_give_back_weapons( gun )
|
||||
{
|
||||
revive_tool = level.revive_tool;
|
||||
|
||||
if ( is_true( self.afterlife ) )
|
||||
{
|
||||
revive_tool = level.afterlife_revive_tool;
|
||||
@ -326,6 +329,7 @@ revive_give_back_weapons( gun )
|
||||
else
|
||||
{
|
||||
primaryweapons = self getweaponslistprimaries();
|
||||
|
||||
if ( isDefined( primaryweapons ) && primaryweapons.size > 0 )
|
||||
{
|
||||
self switchtoweapon( primaryweapons[ 0 ] );
|
||||
@ -340,13 +344,16 @@ revive_hud_think()
|
||||
while ( 1 )
|
||||
{
|
||||
wait 0.1;
|
||||
|
||||
if ( !maps\mp\zombies\_zm_laststand::player_any_player_in_laststand() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
playertorevive = undefined;
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( !isDefined( players[ i ].revivetrigger ) || !isDefined( players[ i ].revivetrigger.createtime ) )
|
||||
@ -354,15 +361,19 @@ revive_hud_think()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !isDefined( playertorevive ) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime )
|
||||
{
|
||||
playertorevive = players[ i ];
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if ( isDefined( playertorevive ) )
|
||||
{
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
@ -370,6 +381,7 @@ revive_hud_think()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( getDvar( "g_gametype" ) == "vs" )
|
||||
{
|
||||
if ( players[ i ].team != playertorevive.team )
|
||||
@ -378,6 +390,7 @@ revive_hud_think()
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_encounter() )
|
||||
{
|
||||
if ( players[ i ].sessionteam != playertorevive.sessionteam )
|
||||
@ -385,15 +398,18 @@ revive_hud_think()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( is_true( level.hide_revive_message ) )
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
players[ i ] thread maps\mp\zombies\_zm_laststand::faderevivemessageover( playertorevive, 3 );
|
||||
i++;
|
||||
}
|
||||
|
||||
playertorevive.revivetrigger.createtime = undefined;
|
||||
}
|
||||
}
|
||||
@ -440,6 +456,7 @@ auto_revive( reviver, dont_enable_weapons )
|
||||
self.laststand = undefined;
|
||||
|
||||
valid_reviver = 1;
|
||||
|
||||
if ( is_gametype_active( "zgrief" ) && reviver == self )
|
||||
{
|
||||
valid_reviver = 0;
|
||||
|
@ -19,16 +19,20 @@ treasure_chest_init( start_chest_name )
|
||||
flag_init( "chest_has_been_used" );
|
||||
level.chest_moves = 0;
|
||||
level.chest_level = 0;
|
||||
|
||||
if ( level.chests.size == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < level.chests.size )
|
||||
{
|
||||
level.chests[ i ].box_hacks = [];
|
||||
level.chests[ i ].orig_origin = level.chests[ i ].origin;
|
||||
level.chests[ i ] maps\mp\zombies\_zm_magicbox::get_chest_pieces();
|
||||
|
||||
if ( isDefined( level.chests[ i ].zombie_cost ) )
|
||||
{
|
||||
level.chests[ i ].old_cost = level.chests[ i ].zombie_cost;
|
||||
@ -39,17 +43,22 @@ treasure_chest_init( start_chest_name )
|
||||
{
|
||||
level.chests[ i ].old_cost = 950;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if ( (getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) || !level.enable_magic )
|
||||
{
|
||||
foreach (chest in level.chests)
|
||||
{
|
||||
chest maps\mp\zombies\_zm_magicbox::hide_chest();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
level.chest_accessed = 0;
|
||||
|
||||
if ( level.chests.size > 1 )
|
||||
{
|
||||
flag_set( "moving_chest_enabled" );
|
||||
@ -60,6 +69,7 @@ treasure_chest_init( start_chest_name )
|
||||
level.chest_index = 0;
|
||||
level.chests[ 0 ].no_fly_away = 1;
|
||||
}
|
||||
|
||||
init_starting_chest_location( start_chest_name );
|
||||
array_thread( level.chests, ::treasure_chest_think );
|
||||
}
|
||||
@ -522,6 +532,7 @@ treasure_chest_weapon_spawn( chest, player, respin )
|
||||
self.weapon_string = undefined;
|
||||
|
||||
joker_angles = angles - vectorscale( ( 0, 1, 0 ), 90.0 );
|
||||
|
||||
if ( angles[2] < 0 )
|
||||
{
|
||||
joker_angles = angles + vectorscale( ( 0, 1, 0 ), 90.0 );
|
||||
@ -714,28 +725,36 @@ treasure_chest_move( player_vox )
|
||||
level waittill( "weapon_fly_away_start" );
|
||||
players = get_players();
|
||||
array_thread( players, maps\mp\zombies\_zm_magicbox::play_crazi_sound );
|
||||
|
||||
if ( isDefined( player_vox ) )
|
||||
{
|
||||
player_vox delay_thread( randomintrange( 2, 7 ), maps\mp\zombies\_zm_audio::create_and_play_dialog, "general", "box_move" );
|
||||
}
|
||||
|
||||
level waittill( "weapon_fly_away_end" );
|
||||
|
||||
if ( isDefined( self.zbarrier ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_magicbox::hide_chest( 1 );
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
|
||||
if ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 1 && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() )
|
||||
{
|
||||
current_sale_time = level.zombie_vars[ "zombie_powerup_fire_sale_time" ];
|
||||
wait_network_frame();
|
||||
self thread maps\mp\zombies\_zm_magicbox::fire_sale_fix();
|
||||
level.zombie_vars[ "zombie_powerup_fire_sale_time" ] = current_sale_time;
|
||||
|
||||
while ( level.zombie_vars[ "zombie_powerup_fire_sale_time" ] > 0 )
|
||||
{
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
level.verify_chest = 0;
|
||||
|
||||
if ( isDefined( level._zombiemode_custom_box_move_logic ) )
|
||||
{
|
||||
[[ level._zombiemode_custom_box_move_logic ]]();
|
||||
@ -744,10 +763,12 @@ treasure_chest_move( player_vox )
|
||||
{
|
||||
default_box_move_logic();
|
||||
}
|
||||
|
||||
if ( isDefined( level.chests[ level.chest_index ].box_hacks[ "summon_box" ] ) )
|
||||
{
|
||||
level.chests[ level.chest_index ] [[ level.chests[ level.chest_index ].box_hacks[ "summon_box" ] ]]( 0 );
|
||||
}
|
||||
|
||||
playfx( level._effect[ "poltergeist" ], level.chests[ level.chest_index ].zbarrier.origin );
|
||||
level.chests[ level.chest_index ] maps\mp\zombies\_zm_magicbox::show_chest();
|
||||
flag_clear( "moving_chest_now" );
|
||||
@ -799,6 +820,7 @@ timer_til_despawn( v_float )
|
||||
self endon( "kill_weapon_movement" );
|
||||
self moveto( self.origin - ( v_float * 0.85 ), level.magicbox_timeout, level.magicbox_timeout * 0.5 );
|
||||
wait level.magicbox_timeout;
|
||||
|
||||
if ( isDefined( self ) )
|
||||
{
|
||||
self delete();
|
||||
@ -824,6 +846,7 @@ decide_hide_show_hint( endon_notify, second_endon_notify, onlyplayer )
|
||||
use_choke = 1;
|
||||
|
||||
is_grenade = 0;
|
||||
|
||||
if ( isDefined( self.zombie_weapon_upgrade ) && weaponType( self.zombie_weapon_upgrade ) == "grenade" )
|
||||
{
|
||||
is_grenade = 1;
|
||||
@ -888,6 +911,7 @@ trigger_visible_to_player( player )
|
||||
else
|
||||
{
|
||||
is_chest = 0;
|
||||
|
||||
foreach ( chest in level.chests )
|
||||
{
|
||||
if ( self.stub.trigger_target == chest )
|
||||
|
@ -7,11 +7,13 @@
|
||||
change_melee_weapon( weapon_name, current_weapon )
|
||||
{
|
||||
current_melee_weapon = self get_player_melee_weapon();
|
||||
|
||||
if ( isDefined( current_melee_weapon ) && current_melee_weapon != weapon_name )
|
||||
{
|
||||
self takeweapon( current_melee_weapon );
|
||||
unacquire_weapon_toggle( current_melee_weapon );
|
||||
}
|
||||
|
||||
self set_player_melee_weapon( weapon_name );
|
||||
had_ballistic = 0;
|
||||
had_ballistic_upgraded = 0;
|
||||
@ -21,52 +23,65 @@ change_melee_weapon( weapon_name, current_weapon )
|
||||
ballistic_ammo_stock = 0;
|
||||
primaryweapons = self getweaponslistprimaries();
|
||||
i = 0;
|
||||
|
||||
while ( i < primaryweapons.size )
|
||||
{
|
||||
primary_weapon = primaryweapons[ i ];
|
||||
|
||||
if ( issubstr( primary_weapon, "knife_ballistic_" ) )
|
||||
{
|
||||
had_ballistic = 1;
|
||||
|
||||
if ( primary_weapon == current_weapon )
|
||||
{
|
||||
ballistic_was_primary = 1;
|
||||
}
|
||||
|
||||
old_ballistic = primary_weapon;
|
||||
ballistic_ammo_clip = self getWeaponAmmoClip( primary_weapon );
|
||||
ballistic_ammo_stock = self getWeaponAmmoStock( primary_weapon );
|
||||
self notify( "zmb_lost_knife" );
|
||||
self takeweapon( primary_weapon );
|
||||
unacquire_weapon_toggle( primary_weapon );
|
||||
|
||||
if ( issubstr( primary_weapon, "upgraded" ) )
|
||||
{
|
||||
had_ballistic_upgraded = 1;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if ( had_ballistic )
|
||||
{
|
||||
if ( had_ballistic_upgraded )
|
||||
{
|
||||
new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ];
|
||||
|
||||
if ( ballistic_was_primary )
|
||||
{
|
||||
current_weapon = new_ballistic;
|
||||
}
|
||||
|
||||
self giveweapon( new_ballistic, 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( new_ballistic ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
new_ballistic = level.ballistic_weapon_name[ weapon_name ];
|
||||
|
||||
if ( ballistic_was_primary )
|
||||
{
|
||||
current_weapon = new_ballistic;
|
||||
}
|
||||
|
||||
self giveweapon( new_ballistic, 0 );
|
||||
}
|
||||
|
||||
self giveMaxAmmo( new_ballistic );
|
||||
self seteverhadweaponall( 1 );
|
||||
}
|
||||
|
||||
return current_weapon;
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ machine_selector()
|
||||
|
||||
do
|
||||
new_machine = machines[randomint( machines.size )];
|
||||
|
||||
while ( new_machine == level.random_perk_start_machine );
|
||||
|
||||
level.random_perk_start_machine = new_machine;
|
||||
|
@ -154,6 +154,7 @@ vending_trigger_think()
|
||||
case "specialty_armorvest":
|
||||
cost = 2500;
|
||||
break;
|
||||
|
||||
case "specialty_quickrevive_upgrade":
|
||||
case "specialty_quickrevive":
|
||||
if ( solo )
|
||||
@ -162,22 +163,27 @@ vending_trigger_think()
|
||||
cost = 1500;
|
||||
|
||||
break;
|
||||
|
||||
case "specialty_fastreload_upgrade":
|
||||
case "specialty_fastreload":
|
||||
cost = 3000;
|
||||
break;
|
||||
|
||||
case "specialty_rof_upgrade":
|
||||
case "specialty_rof":
|
||||
cost = 2000;
|
||||
break;
|
||||
|
||||
case "specialty_longersprint_upgrade":
|
||||
case "specialty_longersprint":
|
||||
cost = 2000;
|
||||
break;
|
||||
|
||||
case "specialty_deadshot_upgrade":
|
||||
case "specialty_deadshot":
|
||||
cost = 1500;
|
||||
break;
|
||||
|
||||
case "specialty_additionalprimaryweapon_upgrade":
|
||||
case "specialty_additionalprimaryweapon":
|
||||
cost = 4000;
|
||||
@ -215,6 +221,7 @@ vending_trigger_think()
|
||||
case "specialty_armorvest":
|
||||
self sethintstring( &"ZOMBIE_PERK_JUGGERNAUT", cost );
|
||||
break;
|
||||
|
||||
case "specialty_quickrevive_upgrade":
|
||||
case "specialty_quickrevive":
|
||||
if ( solo )
|
||||
@ -223,34 +230,42 @@ vending_trigger_think()
|
||||
self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE", cost );
|
||||
|
||||
break;
|
||||
|
||||
case "specialty_fastreload_upgrade":
|
||||
case "specialty_fastreload":
|
||||
self sethintstring( &"ZOMBIE_PERK_FASTRELOAD", cost );
|
||||
break;
|
||||
|
||||
case "specialty_rof_upgrade":
|
||||
case "specialty_rof":
|
||||
self sethintstring( &"ZOMBIE_PERK_DOUBLETAP", cost );
|
||||
break;
|
||||
|
||||
case "specialty_longersprint_upgrade":
|
||||
case "specialty_longersprint":
|
||||
self sethintstring( &"ZOMBIE_PERK_MARATHON", cost );
|
||||
break;
|
||||
|
||||
case "specialty_deadshot_upgrade":
|
||||
case "specialty_deadshot":
|
||||
self sethintstring( &"ZOMBIE_PERK_DEADSHOT", cost );
|
||||
break;
|
||||
|
||||
case "specialty_additionalprimaryweapon_upgrade":
|
||||
case "specialty_additionalprimaryweapon":
|
||||
self sethintstring( &"ZOMBIE_PERK_ADDITIONALPRIMARYWEAPON", cost );
|
||||
break;
|
||||
|
||||
case "specialty_scavenger_upgrade":
|
||||
case "specialty_scavenger":
|
||||
self sethintstring( &"ZOMBIE_PERK_TOMBSTONE", cost );
|
||||
break;
|
||||
|
||||
case "specialty_finalstand_upgrade":
|
||||
case "specialty_finalstand":
|
||||
self sethintstring( &"ZOMBIE_PERK_CHUGABUD", cost );
|
||||
break;
|
||||
|
||||
default:
|
||||
self sethintstring( perk + " Cost: " + level.zombie_vars["zombie_perk_cost"] );
|
||||
}
|
||||
@ -393,40 +408,49 @@ perk_give_bottle_end( gun, perk )
|
||||
case "specialty_rof":
|
||||
weapon = level.machine_assets["doubletap"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_longersprint_upgrade":
|
||||
case "specialty_longersprint":
|
||||
weapon = level.machine_assets["marathon"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_flakjacket_upgrade":
|
||||
case "specialty_flakjacket":
|
||||
weapon = level.machine_assets["divetonuke"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_armorvest_upgrade":
|
||||
case "specialty_armorvest":
|
||||
weapon = level.machine_assets["juggernog"].weapon;
|
||||
self.jugg_used = 1;
|
||||
break;
|
||||
|
||||
case "specialty_quickrevive_upgrade":
|
||||
case "specialty_quickrevive":
|
||||
weapon = level.machine_assets["revive"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_fastreload_upgrade":
|
||||
case "specialty_fastreload":
|
||||
weapon = level.machine_assets["speedcola"].weapon;
|
||||
self.speed_used = 1;
|
||||
break;
|
||||
|
||||
case "specialty_deadshot_upgrade":
|
||||
case "specialty_deadshot":
|
||||
weapon = level.machine_assets["deadshot"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_additionalprimaryweapon_upgrade":
|
||||
case "specialty_additionalprimaryweapon":
|
||||
weapon = level.machine_assets["additionalprimaryweapon"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_scavenger_upgrade":
|
||||
case "specialty_scavenger":
|
||||
weapon = level.machine_assets["tombstone"].weapon;
|
||||
break;
|
||||
|
||||
case "specialty_finalstand_upgrade":
|
||||
case "specialty_finalstand":
|
||||
weapon = level.machine_assets["whoswho"].weapon;
|
||||
@ -676,6 +700,7 @@ destroy_weapon_in_blackout( player )
|
||||
{
|
||||
self.worldgun.worldgundw delete();
|
||||
}
|
||||
|
||||
self.worldgun delete();
|
||||
}
|
||||
|
||||
@ -686,9 +711,11 @@ give_perk( perk, bought )
|
||||
{
|
||||
self setperk( perk );
|
||||
self.num_perks++;
|
||||
|
||||
if ( isDefined( bought ) && bought )
|
||||
{
|
||||
self maps\mp\zombies\_zm_audio::playerexert( "burp" );
|
||||
|
||||
if ( isDefined( level.remove_perk_vo_delay ) && level.remove_perk_vo_delay )
|
||||
{
|
||||
self maps\mp\zombies\_zm_audio::perk_vox( perk );
|
||||
@ -697,9 +724,12 @@ give_perk( perk, bought )
|
||||
{
|
||||
self delay_thread( 1.5, maps\mp\zombies\_zm_audio::perk_vox, perk );
|
||||
}
|
||||
|
||||
self notify( "perk_bought" );
|
||||
}
|
||||
|
||||
self perk_set_max_health_if_jugg( perk, 1, 0 );
|
||||
|
||||
if ( isDefined( level.disable_deadshot_clientfield ) && !level.disable_deadshot_clientfield )
|
||||
{
|
||||
if ( perk == "specialty_deadshot" )
|
||||
@ -714,18 +744,23 @@ give_perk( perk, bought )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( perk == "specialty_scavenger" )
|
||||
{
|
||||
self.hasperkspecialtytombstone = 1;
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
if ( use_solo_revive() && perk == "specialty_quickrevive" )
|
||||
{
|
||||
self.lives = 1;
|
||||
|
||||
if ( !isDefined( level.solo_lives_given ) )
|
||||
{
|
||||
level.solo_lives_given = 0;
|
||||
}
|
||||
|
||||
if ( isDefined( level.solo_game_free_player_quickrevive ) )
|
||||
{
|
||||
level.solo_game_free_player_quickrevive = undefined;
|
||||
@ -734,40 +769,50 @@ give_perk( perk, bought )
|
||||
{
|
||||
level.solo_lives_given++;
|
||||
}
|
||||
|
||||
if ( level.solo_lives_given >= 3 )
|
||||
{
|
||||
flag_set( "solo_revive" );
|
||||
}
|
||||
|
||||
self thread solo_revive_buy_trigger_move( perk );
|
||||
}
|
||||
|
||||
if ( perk == "specialty_finalstand" )
|
||||
{
|
||||
self.hasperkspecialtychugabud = 1;
|
||||
self notify( "perk_chugabud_activated" );
|
||||
}
|
||||
|
||||
if ( perk == "specialty_additionalprimaryweapon" )
|
||||
{
|
||||
self scripts\zm\replaced\_zm::restore_additionalprimaryweapon();
|
||||
}
|
||||
|
||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_give ) )
|
||||
{
|
||||
self thread [[ level._custom_perks[ perk ].player_thread_give ]]();
|
||||
}
|
||||
|
||||
self set_perk_clientfield( perk, 1 );
|
||||
maps\mp\_demo::bookmark( "zm_player_perk", getTime(), self );
|
||||
self maps\mp\zombies\_zm_stats::increment_client_stat( "perks_drank" );
|
||||
self maps\mp\zombies\_zm_stats::increment_client_stat( perk + "_drank" );
|
||||
self maps\mp\zombies\_zm_stats::increment_player_stat( perk + "_drank" );
|
||||
self maps\mp\zombies\_zm_stats::increment_player_stat( "perks_drank" );
|
||||
|
||||
if ( !isDefined( self.perk_history ) )
|
||||
{
|
||||
self.perk_history = [];
|
||||
}
|
||||
|
||||
self.perk_history = add_to_array( self.perk_history, perk, 0 );
|
||||
|
||||
if ( !isDefined( self.perks_active ) )
|
||||
{
|
||||
self.perks_active = [];
|
||||
}
|
||||
|
||||
self.perks_active[ self.perks_active.size ] = perk;
|
||||
self notify( "perk_acquired" );
|
||||
self thread perk_think( perk );
|
||||
@ -780,10 +825,12 @@ perk_think( perk )
|
||||
perk_str = perk + "_stop";
|
||||
result = self waittill_any_return( "fake_death", "death", "player_downed", perk_str );
|
||||
do_retain = 1;
|
||||
|
||||
if ( use_solo_revive() && perk == "specialty_quickrevive" )
|
||||
{
|
||||
do_retain = 0;
|
||||
}
|
||||
|
||||
if ( do_retain )
|
||||
{
|
||||
if ( is_true( self._retain_perks ) )
|
||||
@ -795,6 +842,7 @@ perk_think( perk )
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self unsetperk( perk );
|
||||
self.num_perks--;
|
||||
|
||||
@ -803,43 +851,55 @@ perk_think( perk )
|
||||
case "specialty_armorvest":
|
||||
self setmaxhealth( self.premaxhealth );
|
||||
break;
|
||||
|
||||
case "specialty_additionalprimaryweapon":
|
||||
if ( result == perk_str )
|
||||
{
|
||||
self maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "specialty_deadshot":
|
||||
if ( !is_true( level.disable_deadshot_clientfield ) )
|
||||
{
|
||||
self setclientfieldtoplayer( "deadshot_perk", 0 );
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "specialty_deadshot_upgrade":
|
||||
if ( !is_true( level.disable_deadshot_clientfield ) )
|
||||
{
|
||||
self setclientfieldtoplayer( "deadshot_perk", 0 );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_take ) )
|
||||
{
|
||||
self thread [[ level._custom_perks[ perk ].player_thread_take ]]();
|
||||
}
|
||||
|
||||
self set_perk_clientfield( perk, 0 );
|
||||
self.perk_purchased = undefined;
|
||||
|
||||
if ( isDefined( level.perk_lost_func ) )
|
||||
{
|
||||
self [[ level.perk_lost_func ]]( perk );
|
||||
}
|
||||
|
||||
if ( isDefined( self.perks_active ) && isinarray( self.perks_active, perk ) )
|
||||
{
|
||||
arrayremovevalue( self.perks_active, perk, 0 );
|
||||
}
|
||||
|
||||
if ( isDefined( self.disabled_perks ) && isDefined( self.disabled_perks[perk] ) )
|
||||
{
|
||||
self.disabled_perks[perk] = undefined;
|
||||
}
|
||||
|
||||
self notify( "perk_lost" );
|
||||
}
|
||||
|
||||
@ -926,33 +986,43 @@ set_perk_clientfield( perk, state )
|
||||
case "specialty_additionalprimaryweapon":
|
||||
self setclientfieldtoplayer( "perk_additional_primary_weapon", state );
|
||||
break;
|
||||
|
||||
case "specialty_deadshot":
|
||||
self setclientfieldtoplayer( "perk_dead_shot", state );
|
||||
break;
|
||||
|
||||
case "specialty_flakjacket":
|
||||
self setclientfieldtoplayer( "perk_dive_to_nuke", state );
|
||||
break;
|
||||
|
||||
case "specialty_rof":
|
||||
self setclientfieldtoplayer( "perk_double_tap", state );
|
||||
break;
|
||||
|
||||
case "specialty_armorvest":
|
||||
self setclientfieldtoplayer( "perk_juggernaut", state );
|
||||
break;
|
||||
|
||||
case "specialty_movefaster":
|
||||
self setclientfieldtoplayer( "perk_marathon", state );
|
||||
break;
|
||||
|
||||
case "specialty_quickrevive":
|
||||
self setclientfieldtoplayer( "perk_quick_revive", state );
|
||||
break;
|
||||
|
||||
case "specialty_fastreload":
|
||||
self setclientfieldtoplayer( "perk_sleight_of_hand", state );
|
||||
break;
|
||||
|
||||
case "specialty_scavenger":
|
||||
self setclientfieldtoplayer( "perk_tombstone", state );
|
||||
break;
|
||||
|
||||
case "specialty_finalstand":
|
||||
self setclientfieldtoplayer( "perk_chugabud", state );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1024,6 +1094,7 @@ remove_pap_machine()
|
||||
exceptions = array("specialty_armorvest", "specialty_fastreload");
|
||||
|
||||
structs = getStructArray("zm_perk_machine", "targetname");
|
||||
|
||||
foreach(struct in structs)
|
||||
{
|
||||
if(isDefined(struct.script_noteworthy) && struct.script_noteworthy == "specialty_weapupgrade")
|
||||
@ -1063,6 +1134,7 @@ move_perk_machine(map, location, perk, move_struct)
|
||||
if(isDefined(move_struct.script_string))
|
||||
{
|
||||
gametypes = strTok(move_struct.script_string, " ");
|
||||
|
||||
foreach(gametype in gametypes)
|
||||
{
|
||||
perk_struct.script_string += " " + gametype + "_perks_" + location;
|
||||
@ -1104,15 +1176,18 @@ turn_movefaster_on()
|
||||
machine = getentarray( "vending_marathon", "targetname" );
|
||||
machine_triggers = getentarray( "vending_marathon", "target" );
|
||||
i = 0;
|
||||
|
||||
while ( i < machine.size )
|
||||
{
|
||||
machine[ i ] setmodel( level.machine_assets[ "marathon" ].off_model );
|
||||
i++;
|
||||
}
|
||||
|
||||
array_thread( machine_triggers, ::set_power_on, 0 );
|
||||
level thread do_initial_power_off_callback( machine, "marathon" );
|
||||
level waittill( "marathon_on" );
|
||||
i = 0;
|
||||
|
||||
while ( i < machine.size )
|
||||
{
|
||||
machine[ i ] setmodel( level.machine_assets[ "marathon" ].on_model );
|
||||
@ -1122,17 +1197,22 @@ turn_movefaster_on()
|
||||
machine[ i ] thread play_loop_on_machine();
|
||||
i++;
|
||||
}
|
||||
|
||||
level notify( "specialty_movefaster_power_on" );
|
||||
array_thread( machine_triggers, ::set_power_on, 1 );
|
||||
|
||||
if ( isDefined( level.machine_assets[ "marathon" ].power_on_callback ) )
|
||||
{
|
||||
array_thread( machine, level.machine_assets[ "marathon" ].power_on_callback );
|
||||
}
|
||||
|
||||
level waittill( "marathon_off" );
|
||||
|
||||
if ( isDefined( level.machine_assets[ "marathon" ].power_off_callback ) )
|
||||
{
|
||||
array_thread( machine, level.machine_assets[ "marathon" ].power_off_callback );
|
||||
}
|
||||
|
||||
array_thread( machine, ::turn_perk_off );
|
||||
}
|
||||
}
|
||||
|
@ -38,16 +38,19 @@ playerhealthregen()
|
||||
healthoverlaycutoff = 0.2;
|
||||
|
||||
self thread maps\mp\zombies\_zm_playerhealth::playerhurtcheck();
|
||||
|
||||
if ( !isDefined( self.veryhurt ) )
|
||||
{
|
||||
self.veryhurt = 0;
|
||||
}
|
||||
|
||||
self.bolthit = 0;
|
||||
|
||||
if ( getDvar( "scr_playerInvulTimeScale" ) == "" )
|
||||
{
|
||||
setdvar( "scr_playerInvulTimeScale", 1 );
|
||||
}
|
||||
|
||||
playerinvultimescale = getDvarFloat( "scr_playerInvulTimeScale" );
|
||||
|
||||
for ( ;; )
|
||||
@ -73,6 +76,7 @@ playerhealthregen()
|
||||
{
|
||||
player_flag_clear( "player_has_red_flashing_overlay" );
|
||||
}
|
||||
|
||||
lastinvulratio = 1;
|
||||
playerjustgotredflashing = 0;
|
||||
veryhurt = 0;
|
||||
@ -93,6 +97,7 @@ playerhealthregen()
|
||||
if ( self.health <= 50 )
|
||||
{
|
||||
veryhurt = 1;
|
||||
|
||||
if ( !wasveryhurt )
|
||||
{
|
||||
hurttime = getTime();
|
||||
@ -117,6 +122,7 @@ playerhealthregen()
|
||||
{
|
||||
self.veryhurt = veryhurt;
|
||||
newhealth = health_ratio;
|
||||
|
||||
if ( veryhurt )
|
||||
{
|
||||
if ( ( getTime() - hurttime ) >= longregendelay )
|
||||
@ -173,6 +179,7 @@ playerhealthregen()
|
||||
{
|
||||
self player_flag_set( "player_is_invulnerable" );
|
||||
level notify( "player_becoming_invulnerable" );
|
||||
|
||||
if ( playerjustgotredflashing )
|
||||
{
|
||||
invultime = level.invultime_onshield;
|
||||
@ -186,6 +193,7 @@ playerhealthregen()
|
||||
{
|
||||
invultime = level.invultime_preshield;
|
||||
}
|
||||
|
||||
invultime *= playerinvultimescale;
|
||||
lastinvulratio = self.health / self.maxhealth;
|
||||
self thread maps\mp\zombies\_zm_playerhealth::playerinvul( invultime );
|
||||
|
@ -8,6 +8,7 @@ standard_powered_items()
|
||||
flag_wait( "start_zombie_round_logic" );
|
||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
||||
i = 0;
|
||||
|
||||
while ( i < vending_triggers.size)
|
||||
{
|
||||
if ( vending_triggers[ i ].script_noteworthy == "specialty_weapupgrade" )
|
||||
@ -15,33 +16,42 @@ standard_powered_items()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state( vending_triggers[ i ].script_noteworthy );
|
||||
add_powered_item( ::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, vending_triggers[ i ] );
|
||||
i++;
|
||||
}
|
||||
|
||||
pack_a_punch = getentarray( "specialty_weapupgrade", "script_noteworthy" );
|
||||
|
||||
foreach ( trigger in pack_a_punch )
|
||||
{
|
||||
powered_on = maps\mp\zombies\_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy );
|
||||
trigger.powered = add_powered_item( ::pap_power_on, ::pap_power_off, ::pap_range, ::cost_low_if_local, 0, powered_on, trigger );
|
||||
}
|
||||
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" )
|
||||
{
|
||||
add_powered_item( ::door_power_on, ::door_power_off, ::door_range, ::cost_door, 0, 0, door );
|
||||
}
|
||||
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
||||
{
|
||||
power_sources = 0;
|
||||
|
||||
if ( !is_true( level.power_local_doors_globally ) )
|
||||
{
|
||||
power_sources = 1;
|
||||
}
|
||||
|
||||
add_powered_item( ::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door );
|
||||
}
|
||||
}
|
||||
|
||||
thread watch_global_power();
|
||||
}
|
||||
|
||||
@ -49,10 +59,12 @@ perk_power_off( origin, radius )
|
||||
{
|
||||
self.target notify( "death" );
|
||||
self.target thread maps\mp\zombies\_zm_perks::vending_trigger_think();
|
||||
|
||||
if ( isDefined( self.target.perk_hum ) )
|
||||
{
|
||||
self.target.perk_hum delete();
|
||||
}
|
||||
|
||||
maps\mp\zombies\_zm_perks::perk_pause( self.target.script_noteworthy );
|
||||
level notify( self.target maps\mp\zombies\_zm_perks::getvendingmachinenotify() + "_off" );
|
||||
}
|
@ -160,18 +160,22 @@ powerup_grab( powerup_team )
|
||||
players[i].zombie_nuked = arraysort( zombies, self.origin );
|
||||
players[i] notify( "nuke_triggered" );
|
||||
break;
|
||||
|
||||
case "full_ammo":
|
||||
level thread full_ammo_powerup( self, players[i] );
|
||||
players[i] thread powerup_vo( "full_ammo" );
|
||||
break;
|
||||
|
||||
case "double_points":
|
||||
level thread double_points_powerup( self, players[i] );
|
||||
players[i] thread powerup_vo( "double_points" );
|
||||
break;
|
||||
|
||||
case "insta_kill":
|
||||
level thread insta_kill_powerup( self, players[i] );
|
||||
players[i] thread powerup_vo( "insta_kill" );
|
||||
break;
|
||||
|
||||
case "carpenter":
|
||||
if ( is_classic() )
|
||||
players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check();
|
||||
@ -183,43 +187,55 @@ powerup_grab( powerup_team )
|
||||
|
||||
players[i] thread powerup_vo( "carpenter" );
|
||||
break;
|
||||
|
||||
case "fire_sale":
|
||||
level thread start_fire_sale( self );
|
||||
players[i] thread powerup_vo( "firesale" );
|
||||
break;
|
||||
|
||||
case "bonfire_sale":
|
||||
level thread start_bonfire_sale( self );
|
||||
players[i] thread powerup_vo( "firesale" );
|
||||
break;
|
||||
|
||||
case "minigun":
|
||||
level thread minigun_weapon_powerup( players[i] );
|
||||
players[i] thread powerup_vo( "minigun" );
|
||||
break;
|
||||
|
||||
case "free_perk":
|
||||
level thread free_perk_powerup( self );
|
||||
break;
|
||||
|
||||
case "tesla":
|
||||
level thread tesla_weapon_powerup( players[i] );
|
||||
players[i] thread powerup_vo( "tesla" );
|
||||
break;
|
||||
|
||||
case "random_weapon":
|
||||
if ( !level random_weapon_powerup( self, players[i] ) )
|
||||
continue;
|
||||
|
||||
break;
|
||||
|
||||
case "bonus_points_player":
|
||||
level thread bonus_points_player_powerup( self, players[i] );
|
||||
players[i] thread powerup_vo( "bonus_points_solo" );
|
||||
break;
|
||||
|
||||
case "bonus_points_team":
|
||||
level thread bonus_points_team_powerup( self );
|
||||
players[i] thread powerup_vo( "bonus_points_team" );
|
||||
break;
|
||||
|
||||
case "teller_withdrawl":
|
||||
level thread teller_withdrawl( self, players[i] );
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( isdefined( level._zombiemode_powerup_grab ) )
|
||||
level thread [[ level._zombiemode_powerup_grab ]]( self, players[i] );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -298,6 +314,7 @@ powerup_grab( powerup_team )
|
||||
full_ammo_powerup( drop_item, player )
|
||||
{
|
||||
clip_only = 0;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
clip_only = 1;
|
||||
@ -305,11 +322,14 @@ full_ammo_powerup( drop_item, player )
|
||||
}
|
||||
|
||||
players = get_players( player.team );
|
||||
|
||||
if ( isdefined( level._get_game_module_players ) )
|
||||
{
|
||||
players = [[ level._get_game_module_players ]]( player );
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
@ -317,6 +337,7 @@ full_ammo_powerup( drop_item, player )
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
primary_weapons = players[ i ] getweaponslist( 1 );
|
||||
|
||||
players[ i ] notify( "zmb_max_ammo" );
|
||||
@ -325,6 +346,7 @@ full_ammo_powerup( drop_item, player )
|
||||
players[ i ] notify( "zmb_disable_spikemore_prompt" );
|
||||
|
||||
x = 0;
|
||||
|
||||
while ( x < primary_weapons.size )
|
||||
{
|
||||
if ( level.headshots_only && is_lethal_grenade(primary_weapons[ x ] ) )
|
||||
@ -356,6 +378,7 @@ full_ammo_powerup( drop_item, player )
|
||||
}
|
||||
|
||||
new_ammo = players[i] getWeaponAmmoStock(primary_weapons[x]) + weaponClipSize(primary_weapons[x]);
|
||||
|
||||
if(weaponDualWieldWeaponName(primary_weapons[x]) != "none")
|
||||
{
|
||||
new_ammo += weaponClipSize(weaponDualWieldWeaponName(primary_weapons[x]));
|
||||
@ -373,6 +396,7 @@ full_ammo_powerup( drop_item, player )
|
||||
players[i] givemaxammo(primary_weapons[x]);
|
||||
}
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
@ -380,6 +404,7 @@ full_ammo_powerup( drop_item, player )
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
level thread full_ammo_on_hud( drop_item, player.team );
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
@ -424,6 +449,7 @@ empty_clip_powerup( drop_item, player )
|
||||
|
||||
i = 0;
|
||||
players = get_players(team);
|
||||
|
||||
while(i < players.size)
|
||||
{
|
||||
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
@ -433,6 +459,7 @@ empty_clip_powerup( drop_item, player )
|
||||
}
|
||||
|
||||
primaries = players[i] getweaponslistprimaries();
|
||||
|
||||
foreach(weapon in primaries)
|
||||
{
|
||||
dual_wield_weapon = weaponDualWieldWeaponName(weapon);
|
||||
@ -539,6 +566,7 @@ nuke_powerup( drop_item, player_team )
|
||||
}
|
||||
|
||||
players = get_players( player_team );
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] maps\mp\zombies\_zm_score::player_add_points( "nuke_powerup", 400 );
|
||||
@ -547,6 +575,7 @@ nuke_powerup( drop_item, player_team )
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
players = get_players(getOtherTeam(player_team));
|
||||
|
||||
for(i = 0; i < players.size; i++)
|
||||
{
|
||||
if(is_player_valid(players[i]))
|
||||
@ -599,6 +628,7 @@ insta_kill_powerup( drop_item, player )
|
||||
team = player.team;
|
||||
|
||||
time = 30;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
time = 15;
|
||||
@ -637,12 +667,14 @@ insta_kill_powerup( drop_item, player )
|
||||
|
||||
players = get_players( team );
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( isDefined( players[ i ] ) )
|
||||
{
|
||||
players[ i ] notify( "insta_kill_over" );
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@ -682,6 +714,7 @@ double_points_powerup( drop_item, player )
|
||||
team = player.team;
|
||||
|
||||
time = 30;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
time = 15;
|
||||
@ -715,6 +748,7 @@ double_points_powerup( drop_item, player )
|
||||
}
|
||||
|
||||
players = get_players( team );
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] setclientfield( "score_cf_double_points_active", 1 );
|
||||
@ -740,6 +774,7 @@ double_points_powerup( drop_item, player )
|
||||
temp_ent delete();
|
||||
|
||||
players = get_players( team );
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] playsound( "zmb_points_loop_off" );
|
||||
|
@ -9,17 +9,21 @@ add_to_player_score( points, add_to_total )
|
||||
{
|
||||
add_to_total = 1;
|
||||
}
|
||||
|
||||
if ( !isDefined( points ) || level.intermission )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
points = int(points); // points must be an int
|
||||
self.score += points;
|
||||
self.pers[ "score" ] = self.score;
|
||||
|
||||
if ( add_to_total )
|
||||
{
|
||||
self.score_total += points;
|
||||
}
|
||||
|
||||
self incrementplayerstat( "score", points );
|
||||
}
|
||||
|
||||
@ -29,6 +33,7 @@ minus_to_player_score( points )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
points = int(points); // points must be an int
|
||||
self.score -= points;
|
||||
self.pers[ "score" ] = self.score;
|
||||
@ -60,6 +65,7 @@ player_add_points_kill_bonus( mod, hit_location )
|
||||
self score_cf_increment_info( "death_head" );
|
||||
score = level.zombie_vars["zombie_score_bonus_head"];
|
||||
break;
|
||||
|
||||
default:
|
||||
self score_cf_increment_info( "death_normal" );
|
||||
break;
|
||||
|
@ -64,12 +64,14 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
||||
if ( is_placeable_mine( self.damageweapon ) )
|
||||
{
|
||||
damage = level.round_number * 100;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
damage = 2000;
|
||||
}
|
||||
|
||||
max_damage = 9000;
|
||||
|
||||
if(damage > max_damage)
|
||||
{
|
||||
damage = max_damage;
|
||||
@ -91,12 +93,14 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
||||
else if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" )
|
||||
{
|
||||
damage = level.round_number * 25;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
damage = 500;
|
||||
}
|
||||
|
||||
max_damage = 1500;
|
||||
|
||||
if(damage > max_damage)
|
||||
{
|
||||
damage = max_damage;
|
||||
@ -116,12 +120,14 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
||||
else if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_EXPLOSIVE" )
|
||||
{
|
||||
damage = level.round_number * 50;
|
||||
|
||||
if(level.scr_zm_ui_gametype == "zgrief")
|
||||
{
|
||||
damage = 1000;
|
||||
}
|
||||
|
||||
max_damage = 3000;
|
||||
|
||||
if(damage > max_damage)
|
||||
{
|
||||
damage = max_damage;
|
||||
@ -142,6 +148,7 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
||||
if ( isDefined( player ) )
|
||||
{
|
||||
rand = randomintrange( 0, 100 );
|
||||
|
||||
if ( rand < 10 )
|
||||
{
|
||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "crawl_spawn" );
|
||||
@ -157,6 +164,7 @@ zombie_damage( mod, hit_location, hit_origin, player, amount, team )
|
||||
if ( isDefined( player ) )
|
||||
{
|
||||
rand = randomintrange( 0, 100 );
|
||||
|
||||
if ( rand < 7 )
|
||||
{
|
||||
player maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "shoot_arm" );
|
||||
@ -201,16 +209,19 @@ zombie_gib_on_damage()
|
||||
refs[refs.size] = "guts";
|
||||
refs[refs.size] = "right_arm";
|
||||
break;
|
||||
|
||||
case "right_hand":
|
||||
case "right_arm_upper":
|
||||
case "right_arm_lower":
|
||||
refs[refs.size] = "right_arm";
|
||||
break;
|
||||
|
||||
case "left_hand":
|
||||
case "left_arm_upper":
|
||||
case "left_arm_lower":
|
||||
refs[refs.size] = "left_arm";
|
||||
break;
|
||||
|
||||
case "right_leg_upper":
|
||||
case "right_leg_lower":
|
||||
case "right_foot":
|
||||
@ -223,6 +234,7 @@ zombie_gib_on_damage()
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "left_leg_upper":
|
||||
case "left_leg_lower":
|
||||
case "left_foot":
|
||||
@ -235,6 +247,7 @@ zombie_gib_on_damage()
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( self.damagelocation == "none" )
|
||||
{
|
||||
|
@ -25,6 +25,7 @@ navcomputer_waitfor_navcard()
|
||||
navcomputer_use_trig playsound( "zmb_sq_navcard_success" );
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player freezecontrols(1);
|
||||
@ -53,6 +54,7 @@ sq_give_player_all_perks()
|
||||
else
|
||||
{
|
||||
machines = array_randomize( getentarray( "zombie_vending", "targetname" ) );
|
||||
|
||||
for ( i = 0; i < machines.size; i++ )
|
||||
{
|
||||
if ( machines[i].script_noteworthy == "specialty_weapupgrade" )
|
||||
|
@ -85,44 +85,56 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
||||
{
|
||||
self endon( "death" );
|
||||
forward = ( 0, 1, 0 );
|
||||
|
||||
if ( !isDefined( self.num_poi_attracts ) || isDefined( self.script_noteworthy ) && self.script_noteworthy != "zombie_poi" )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isDefined( num_attract_dists ) )
|
||||
{
|
||||
num_attract_dists = 4;
|
||||
}
|
||||
|
||||
if ( !isDefined( diff_per_dist ) )
|
||||
{
|
||||
diff_per_dist = 45;
|
||||
}
|
||||
|
||||
if ( !isDefined( attractor_width ) )
|
||||
{
|
||||
attractor_width = 45;
|
||||
}
|
||||
|
||||
self.attract_to_origin = 0;
|
||||
self.num_attract_dists = num_attract_dists;
|
||||
self.last_index = [];
|
||||
|
||||
for ( i = 0; i < num_attract_dists; i++ )
|
||||
{
|
||||
self.last_index[ i ] = -1;
|
||||
}
|
||||
|
||||
self.attract_dists = [];
|
||||
|
||||
for ( i = 0; i < self.num_attract_dists; i++ )
|
||||
{
|
||||
self.attract_dists[ i ] = diff_per_dist * ( i + 1 );
|
||||
}
|
||||
|
||||
max_positions = [];
|
||||
|
||||
for ( i = 0; i < self.num_attract_dists; i++ )
|
||||
{
|
||||
max_positions[ i ] = int( ( 6.28 * self.attract_dists[ i ] ) / attractor_width );
|
||||
}
|
||||
|
||||
num_attracts_per_dist = self.num_poi_attracts / self.num_attract_dists;
|
||||
self.max_attractor_dist = self.attract_dists[ self.attract_dists.size - 1 ] * 1.1;
|
||||
diff = 0;
|
||||
actual_num_positions = [];
|
||||
i = 0;
|
||||
|
||||
while ( i < self.num_attract_dists )
|
||||
{
|
||||
if ( num_attracts_per_dist > ( max_positions[ i ] + diff ) )
|
||||
@ -132,14 +144,17 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
actual_num_positions[ i ] = num_attracts_per_dist + diff;
|
||||
diff = 0;
|
||||
i++;
|
||||
}
|
||||
|
||||
self.attractor_positions = [];
|
||||
failed = 0;
|
||||
angle_offset = 0;
|
||||
prev_last_index = -1;
|
||||
|
||||
for ( j = 0; j < 4; j++)
|
||||
{
|
||||
if ( ( actual_num_positions[ j ] + failed ) < max_positions[ j ] )
|
||||
@ -152,6 +167,7 @@ create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per
|
||||
actual_num_positions[ j ] = max_positions[ j ];
|
||||
failed = max_positions[ j ] - actual_num_positions[ j ];
|
||||
}
|
||||
|
||||
failed += self generated_radius_attract_positions( forward, angle_offset, actual_num_positions[ j ], self.attract_dists[ j ] );
|
||||
angle_offset += 15;
|
||||
self.last_index[ j ] = int( ( actual_num_positions[ j ] - failed ) + prev_last_index );
|
||||
|
@ -28,6 +28,7 @@ on_spawn( watcher, player )
|
||||
retrievable_model.angles = angles;
|
||||
retrievable_model.name = watcher.weapon;
|
||||
isfriendly = 0;
|
||||
|
||||
if ( isDefined( prey ) )
|
||||
{
|
||||
if ( isplayer( prey ) )
|
||||
@ -38,6 +39,7 @@ on_spawn( watcher, player )
|
||||
{
|
||||
isfriendly = 1;
|
||||
}
|
||||
|
||||
if ( isfriendly )
|
||||
{
|
||||
retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) );
|
||||
@ -49,8 +51,10 @@ on_spawn( watcher, player )
|
||||
retrievable_model thread force_drop_knives_to_ground_on_death( player, prey );
|
||||
}
|
||||
}
|
||||
|
||||
watcher.objectarray[ watcher.objectarray.size ] = retrievable_model;
|
||||
retrievable_model thread drop_knives_to_ground( player );
|
||||
|
||||
if( isfriendly )
|
||||
{
|
||||
player notify( "ballistic_knife_stationary", retrievable_model, normal );
|
||||
@ -68,29 +72,36 @@ watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundo
|
||||
self endon( "delete" );
|
||||
level endon( "game_ended" );
|
||||
autorecover = is_true( level.ballistic_knife_autorecover );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
trigger waittill( "trigger", player );
|
||||
|
||||
if ( !isalive( player ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( trigger.claimedby ) && player != trigger.claimedby )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( trigger.owner ) && player != trigger.owner )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player getcurrentweapon() == weapon && player getweaponammostock( weapon ) >= weaponmaxammo( weapon ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !autorecover && !is_true( trigger.force_pickup ) )
|
||||
{
|
||||
if( player.throwinggrenade || player meleebuttonpressed() )
|
||||
@ -98,14 +109,17 @@ watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundo
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( playersoundonuse ) )
|
||||
{
|
||||
player playlocalsound( playersoundonuse );
|
||||
}
|
||||
|
||||
if ( isDefined( npcsoundonuse ) )
|
||||
{
|
||||
player playsound( npcsoundonuse );
|
||||
}
|
||||
|
||||
player thread [[ callback ]]( weapon, model, trigger );
|
||||
return;
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ _titus_locate_target( is_not_upgraded = 1, count )
|
||||
n_fuse_timer = randomfloatrange( 3.0, 4.0 );
|
||||
|
||||
n_spread = 5;
|
||||
|
||||
if (isads(self))
|
||||
{
|
||||
n_spread *= 0.5;
|
||||
|
@ -9,26 +9,33 @@ buy_claymores()
|
||||
self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" );
|
||||
self setcursorhint( "HINT_WEAPON", "claymore_zm" );
|
||||
self endon( "kill_trigger" );
|
||||
|
||||
if ( !isDefined( self.stub ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( self.stub ) && !isDefined( self.stub.claymores_triggered ) )
|
||||
{
|
||||
self.stub.claymores_triggered = 0;
|
||||
}
|
||||
|
||||
self.claymores_triggered = self.stub.claymores_triggered;
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "trigger", who );
|
||||
|
||||
while ( who in_revive_trigger() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
while ( who has_powerup_weapon() )
|
||||
{
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
if ( is_player_valid( who ) )
|
||||
{
|
||||
if ( who.score >= self.zombie_cost )
|
||||
@ -37,19 +44,24 @@ buy_claymores()
|
||||
{
|
||||
play_sound_at_pos( "purchase", self.origin );
|
||||
who maps\mp\zombies\_zm_score::minus_to_player_score( self.zombie_cost );
|
||||
|
||||
if ( !who is_player_placeable_mine( "claymore_zm" ) )
|
||||
{
|
||||
who thread show_claymore_hint( "claymore_purchased" );
|
||||
}
|
||||
|
||||
who thread claymore_setup();
|
||||
who thread maps\mp\zombies\_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" );
|
||||
|
||||
if ( isDefined( self.stub ) )
|
||||
{
|
||||
self.claymores_triggered = self.stub.claymores_triggered;
|
||||
}
|
||||
|
||||
if ( self.claymores_triggered == 0 )
|
||||
{
|
||||
model = getent( self.target, "targetname" );
|
||||
|
||||
if ( isDefined( model ) )
|
||||
{
|
||||
model thread maps\mp\zombies\_zm_weapons::weapon_show( who );
|
||||
@ -61,7 +73,9 @@ buy_claymores()
|
||||
level setclientfield( self.clientfieldname, 1 );
|
||||
}
|
||||
}
|
||||
|
||||
self.claymores_triggered = 1;
|
||||
|
||||
if ( isDefined( self.stub ) )
|
||||
{
|
||||
self.stub.claymores_triggered = 1;
|
||||
@ -94,40 +108,50 @@ claymore_detonation()
|
||||
damagearea setexcludeteamfortrigger( self.team );
|
||||
damagearea enablelinkto();
|
||||
damagearea linkto( self );
|
||||
|
||||
if ( is_true( self.isonbus ) )
|
||||
{
|
||||
damagearea setmovingplatformenabled( 1 );
|
||||
}
|
||||
|
||||
self.damagearea = damagearea;
|
||||
self thread delete_claymores_on_death( self.owner, damagearea );
|
||||
self.owner.claymores[ self.owner.claymores.size ] = self;
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
damagearea waittill( "trigger", ent );
|
||||
|
||||
if ( isDefined( self.owner ) && ent == self.owner )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == self.team )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == getOtherTeam( self.team ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( ent.ignore_claymore ) && ent.ignore_claymore )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !ent shouldaffectweaponobject( self ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( ent damageconetrace( self.origin, self ) > 0 )
|
||||
{
|
||||
self playsound( "wpn_claymore_alert" );
|
||||
wait 0.4;
|
||||
|
||||
if ( isDefined( self.owner ) )
|
||||
{
|
||||
self detonate( self.owner );
|
||||
@ -136,6 +160,7 @@ claymore_detonation()
|
||||
{
|
||||
self detonate( undefined );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -144,6 +144,7 @@ emp_players(origin, radius, owner)
|
||||
{
|
||||
rsquared = radius * radius;
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(distancesquared(origin, player.origin) < rsquared)
|
||||
@ -167,6 +168,7 @@ player_emp_fx(time)
|
||||
self endon("player_perk_pause_timeout");
|
||||
|
||||
wait_time = 2.5;
|
||||
|
||||
for(i = 0; i < time; i += wait_time)
|
||||
{
|
||||
playfxontag( level._effect[ "elec_torso" ], self, "J_SpineLower" );
|
||||
@ -208,6 +210,7 @@ player_perk_pause_all_perks_acquired(time)
|
||||
player_perk_pause_all_perks()
|
||||
{
|
||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
||||
|
||||
foreach ( trigger in vending_triggers )
|
||||
{
|
||||
self player_perk_pause( trigger.script_noteworthy );
|
||||
@ -219,6 +222,7 @@ player_perk_unpause_all_perks()
|
||||
self notify("player_perk_pause_timeout");
|
||||
|
||||
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
||||
|
||||
foreach ( trigger in vending_triggers )
|
||||
{
|
||||
self player_perk_unpause( trigger.script_noteworthy );
|
||||
@ -238,30 +242,37 @@ player_perk_pause( perk )
|
||||
{
|
||||
self.disabled_perks = [];
|
||||
}
|
||||
|
||||
if ( !is_true( self.disabled_perks[ perk ] ) && self hasperk( perk ) )
|
||||
{
|
||||
self.disabled_perks[ perk ] = 1;
|
||||
}
|
||||
|
||||
if ( self.disabled_perks[ perk ] )
|
||||
{
|
||||
self unsetperk( perk );
|
||||
self maps\mp\zombies\_zm_perks::set_perk_clientfield( perk, 2 );
|
||||
|
||||
if ( perk == "specialty_armorvest" || perk == "specialty_armorvest_upgrade" )
|
||||
{
|
||||
self setmaxhealth( self.premaxhealth );
|
||||
|
||||
if ( self.health > self.maxhealth )
|
||||
{
|
||||
self.health = self.maxhealth;
|
||||
}
|
||||
}
|
||||
|
||||
if ( perk == "specialty_additionalprimaryweapon" || perk == "specialty_additionalprimaryweapon_upgrade" )
|
||||
{
|
||||
self maps\mp\zombies\_zm::take_additionalprimaryweapon();
|
||||
}
|
||||
|
||||
if ( issubstr( perk, "specialty_scavenger" ) )
|
||||
{
|
||||
self.hasperkspecialtytombstone = 0;
|
||||
}
|
||||
|
||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_take ) )
|
||||
{
|
||||
self thread [[ level._custom_perks[ perk ].player_thread_take ]]();
|
||||
@ -288,11 +299,14 @@ player_perk_unpause( perk )
|
||||
self.disabled_perks[ perk ] = undefined;
|
||||
self maps\mp\zombies\_zm_perks::set_perk_clientfield( perk, 1 );
|
||||
self setperk( perk );
|
||||
|
||||
if ( issubstr( perk, "specialty_scavenger" ) )
|
||||
{
|
||||
self.hasperkspecialtytombstone = 1;
|
||||
}
|
||||
|
||||
self maps\mp\zombies\_zm_perks::perk_set_max_health_if_jugg( perk, 0, 0 );
|
||||
|
||||
if ( isDefined( level._custom_perks[ perk ] ) && isDefined( level._custom_perks[ perk ].player_thread_give ) )
|
||||
{
|
||||
self thread [[ level._custom_perks[ perk ].player_thread_give ]]();
|
||||
|
@ -96,51 +96,64 @@ jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_s
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( zombie enemy_killed_by_jetgun() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( zombie.is_avogadro ) && zombie.is_avogadro )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( zombie.isdog ) && zombie.isdog )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( zombie.isscreecher ) && zombie.isscreecher )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( self.animname ) && self.animname == "quad_zombie" )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
test_origin = zombie getcentroid();
|
||||
test_range_squared = distancesquared( view_pos, test_origin );
|
||||
|
||||
if ( test_range_squared > drag_range_squared )
|
||||
{
|
||||
zombie jetgun_debug_print( "range", ( 1, 0, 1 ) );
|
||||
return;
|
||||
}
|
||||
|
||||
normal = vectornormalize( test_origin - view_pos );
|
||||
dot = vectordot( forward_view_angles, normal );
|
||||
|
||||
if ( abs( dot ) < 0.7 )
|
||||
{
|
||||
zombie jetgun_debug_print( "dot", ( 1, 0, 1 ) );
|
||||
return;
|
||||
}
|
||||
|
||||
radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin );
|
||||
|
||||
if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared )
|
||||
{
|
||||
zombie jetgun_debug_print( "cylinder", ( 1, 0, 1 ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( zombie damageconetrace( view_pos, self ) == 0 )
|
||||
{
|
||||
zombie jetgun_debug_print( "cone", ( 1, 0, 1 ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( test_range_squared < grind_range_squared )
|
||||
{
|
||||
level.jetgun_fling_enemies[ level.jetgun_fling_enemies.size ] = zombie;
|
||||
@ -152,6 +165,7 @@ jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_s
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground )
|
||||
{
|
||||
return;
|
||||
@ -169,10 +183,12 @@ jetgun_grind_zombie( player )
|
||||
player endon( "death" );
|
||||
player endon( "disconnect" );
|
||||
self endon( "death" );
|
||||
|
||||
if ( !isDefined( self.jetgun_grind ) )
|
||||
{
|
||||
self.jetgun_grind = 1;
|
||||
self notify( "grinding" );
|
||||
|
||||
if ( is_mature() )
|
||||
{
|
||||
if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) )
|
||||
@ -180,6 +196,7 @@ jetgun_grind_zombie( player )
|
||||
playfx( level._effect[ "zombie_guts_explosion" ], self gettagorigin( "J_SpineLower" ) );
|
||||
}
|
||||
}
|
||||
|
||||
self.nodeathragdoll = 1;
|
||||
self.handle_death_notetracks = ::jetgun_handle_death_notetracks;
|
||||
player maps\mp\zombies\_zm_score::add_to_player_score(50 * maps\mp\zombies\_zm_score::get_points_multiplier(player));
|
||||
@ -190,6 +207,7 @@ jetgun_grind_zombie( player )
|
||||
handle_overheated_jetgun()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "jetgun_overheated" );
|
||||
|
@ -109,6 +109,7 @@ explode_into_goo( player, chain_depth )
|
||||
self.goo_chain_depth = chain_depth;
|
||||
|
||||
chain_radius = level.zombie_vars["slipgun_chain_radius"];
|
||||
|
||||
if ( is_true( self.goo_upgraded ) )
|
||||
{
|
||||
chain_radius *= 1.5;
|
||||
|
@ -114,6 +114,7 @@ watch_reset_anim_rate()
|
||||
{
|
||||
self set_anim_rate( 1 );
|
||||
self setclientfieldtoplayer( "slowgun_fx", 0 );
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill_any( "spawned_player", "entering_last_stand", "player_revived", "player_suicide" );
|
||||
|
@ -57,12 +57,15 @@ get_impact_damage( damageweapon )
|
||||
{
|
||||
case "staff_fire_zm":
|
||||
return 2050;
|
||||
|
||||
case "staff_fire_upgraded_zm":
|
||||
case "staff_fire_upgraded2_zm":
|
||||
case "staff_fire_upgraded3_zm":
|
||||
return 3300;
|
||||
|
||||
case "one_inch_punch_fire_zm":
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ tomahawk_attack_zombies( m_tomahawk, a_zombies )
|
||||
}
|
||||
|
||||
n_attack_limit = m_tomahawk.n_grenade_charge_power - 1;
|
||||
|
||||
if ( a_zombies.size <= n_attack_limit )
|
||||
n_attack_limit = a_zombies.size;
|
||||
|
||||
|
@ -60,6 +60,7 @@ show_current_weapon(player)
|
||||
num = player getentitynumber();
|
||||
|
||||
displayname = "None";
|
||||
|
||||
if (player wl_has_stored_weapondata())
|
||||
{
|
||||
weapondata = player wl_get_stored_weapondata();
|
||||
@ -117,20 +118,24 @@ wl_set_stored_weapondata( weapondata )
|
||||
alt_name = weaponAltWeaponName(name);
|
||||
|
||||
clip_missing = weaponClipSize(name) - weapondata["clip"];
|
||||
|
||||
if (clip_missing > weapondata["stock"])
|
||||
{
|
||||
clip_missing = weapondata["stock"];
|
||||
}
|
||||
|
||||
weapondata["clip"] += clip_missing;
|
||||
weapondata["stock"] -= clip_missing;
|
||||
|
||||
if (dw_name != "none")
|
||||
{
|
||||
clip_dualwield_missing = weaponClipSize(dw_name) - weapondata["lh_clip"];
|
||||
|
||||
if (clip_dualwield_missing > weapondata["stock"])
|
||||
{
|
||||
clip_dualwield_missing = weapondata["stock"];
|
||||
}
|
||||
|
||||
weapondata["lh_clip"] += clip_dualwield_missing;
|
||||
weapondata["stock"] -= clip_dualwield_missing;
|
||||
}
|
||||
@ -138,10 +143,12 @@ wl_set_stored_weapondata( weapondata )
|
||||
if (alt_name != "none")
|
||||
{
|
||||
clip_alt_missing = weaponClipSize(alt_name) - weapondata["alt_clip"];
|
||||
|
||||
if (clip_alt_missing > weapondata["alt_stock"])
|
||||
{
|
||||
clip_alt_missing = weapondata["alt_stock"];
|
||||
}
|
||||
|
||||
weapondata["alt_clip"] += clip_alt_missing;
|
||||
weapondata["alt_stock"] -= clip_alt_missing;
|
||||
}
|
||||
|
@ -316,15 +316,19 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
primaryweapons = self getweaponslistprimaries();
|
||||
current_weapon = self getcurrentweapon();
|
||||
current_weapon = self maps\mp\zombies\_zm_weapons::switch_from_alt_weapon( current_weapon );
|
||||
|
||||
if ( !isDefined( is_upgrade ) )
|
||||
{
|
||||
is_upgrade = 0;
|
||||
}
|
||||
|
||||
weapon_limit = get_player_weapon_limit( self );
|
||||
|
||||
if ( is_equipment( weapon ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_equipment::equipment_give( weapon );
|
||||
}
|
||||
|
||||
if ( weapon == "riotshield_zm" )
|
||||
{
|
||||
if ( isDefined( self.player_shield_reset_health ) )
|
||||
@ -332,19 +336,24 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
self [[ self.player_shield_reset_health ]]();
|
||||
}
|
||||
}
|
||||
|
||||
if ( self hasweapon( weapon ) )
|
||||
{
|
||||
if ( issubstr( weapon, "knife_ballistic_" ) )
|
||||
{
|
||||
self notify( "zmb_lost_knife" );
|
||||
}
|
||||
|
||||
self givestartammo( weapon );
|
||||
|
||||
if ( !is_offhand_weapon( weapon ) )
|
||||
{
|
||||
self switchtoweapon( weapon );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ( is_melee_weapon( weapon ) )
|
||||
{
|
||||
current_weapon = maps\mp\zombies\_zm_melee_weapon::change_melee_weapon( weapon, current_weapon );
|
||||
@ -352,43 +361,52 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
else if ( is_lethal_grenade( weapon ) )
|
||||
{
|
||||
old_lethal = self get_player_lethal_grenade();
|
||||
|
||||
if ( isDefined( old_lethal ) && old_lethal != "" )
|
||||
{
|
||||
self takeweapon( old_lethal );
|
||||
unacquire_weapon_toggle( old_lethal );
|
||||
}
|
||||
|
||||
self set_player_lethal_grenade( weapon );
|
||||
}
|
||||
else if ( is_tactical_grenade( weapon ) )
|
||||
{
|
||||
old_tactical = self get_player_tactical_grenade();
|
||||
|
||||
if ( isDefined( old_tactical ) && old_tactical != "" )
|
||||
{
|
||||
self takeweapon( old_tactical );
|
||||
unacquire_weapon_toggle( old_tactical );
|
||||
}
|
||||
|
||||
self set_player_tactical_grenade( weapon );
|
||||
}
|
||||
else if ( is_placeable_mine( weapon ) )
|
||||
{
|
||||
old_mine = self get_player_placeable_mine();
|
||||
|
||||
if ( isDefined( old_mine ) )
|
||||
{
|
||||
self takeweapon( old_mine );
|
||||
unacquire_weapon_toggle( old_mine );
|
||||
}
|
||||
|
||||
self set_player_placeable_mine( weapon );
|
||||
}
|
||||
|
||||
if ( !is_offhand_weapon( weapon ) )
|
||||
{
|
||||
self maps\mp\zombies\_zm_weapons::take_fallback_weapon();
|
||||
}
|
||||
|
||||
if ( primaryweapons.size >= weapon_limit )
|
||||
{
|
||||
if ( is_melee_weapon( current_weapon ) || is_placeable_mine( current_weapon ) || is_equipment( current_weapon ) )
|
||||
{
|
||||
current_weapon = undefined;
|
||||
}
|
||||
|
||||
if ( isDefined( current_weapon ) )
|
||||
{
|
||||
if ( !is_offhand_weapon( weapon ) )
|
||||
@ -397,15 +415,18 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
{
|
||||
level.player_drops_tesla_gun = 1;
|
||||
}
|
||||
|
||||
if ( issubstr( current_weapon, "knife_ballistic_" ) )
|
||||
{
|
||||
self notify( "zmb_lost_knife" );
|
||||
}
|
||||
|
||||
self takeweapon( current_weapon );
|
||||
unacquire_weapon_toggle( current_weapon );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( level.zombiemode_offhand_weapon_give_override ) )
|
||||
{
|
||||
if ( self [[ level.zombiemode_offhand_weapon_give_override ]]( weapon ) )
|
||||
@ -413,6 +434,7 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( weapon == "cymbal_monkey_zm" )
|
||||
{
|
||||
self maps\mp\zombies\_zm_weap_cymbal_monkey::player_give_cymbal_monkey();
|
||||
@ -429,20 +451,24 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
self play_weapon_vo( weapon, magic_box );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( level.zombie_weapons_callbacks ) && isDefined( level.zombie_weapons_callbacks[ weapon ] ) )
|
||||
{
|
||||
self thread [[ level.zombie_weapons_callbacks[ weapon ] ]]();
|
||||
play_weapon_vo( weapon, magic_box );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !is_true( nosound ) )
|
||||
{
|
||||
self play_sound_on_ent( "purchase" );
|
||||
}
|
||||
|
||||
if ( is_true( magic_box ) && is_limited_weapon( weapon ) && level.limited_weapons[ weapon ] == 1 )
|
||||
{
|
||||
playsoundatposition( "mus_raygun_stinger", ( 0, 0, 0 ) );
|
||||
}
|
||||
|
||||
if ( !is_weapon_upgraded( weapon ) )
|
||||
{
|
||||
self giveweapon( weapon );
|
||||
@ -451,8 +477,10 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
{
|
||||
self giveweapon( weapon, 0, self get_pack_a_punch_weapon_options( weapon ) );
|
||||
}
|
||||
|
||||
acquire_weapon_toggle( weapon, self );
|
||||
self givestartammo( weapon );
|
||||
|
||||
if ( !is_offhand_weapon( weapon ) )
|
||||
{
|
||||
if ( !is_melee_weapon( weapon ) )
|
||||
@ -464,6 +492,7 @@ weapon_give( weapon, is_upgrade, magic_box, nosound )
|
||||
self switchtoweapon( current_weapon );
|
||||
}
|
||||
}
|
||||
|
||||
self play_weapon_vo( weapon, magic_box );
|
||||
|
||||
self notify("weapon_ammo_change");
|
||||
@ -536,6 +565,7 @@ weapon_spawn_think()
|
||||
second_endon = undefined;
|
||||
|
||||
is_grenade = 0;
|
||||
|
||||
if(weapontype( self.zombie_weapon_upgrade ) == "grenade")
|
||||
{
|
||||
is_grenade = 1;
|
||||
@ -565,6 +595,7 @@ weapon_spawn_think()
|
||||
else if ( !isDefined( self.first_time_triggered ) )
|
||||
{
|
||||
self.first_time_triggered = 0;
|
||||
|
||||
if ( isDefined( self.stub ) )
|
||||
{
|
||||
self.stub.first_time_triggered = 0;
|
||||
@ -599,6 +630,7 @@ weapon_spawn_think()
|
||||
toplayer = player get_eye() - self.origin;
|
||||
forward = -1 * anglesToRight( self.angles );
|
||||
dot = vectordot( toplayer, forward );
|
||||
|
||||
if ( dot < 0 )
|
||||
{
|
||||
continue;
|
||||
@ -612,9 +644,11 @@ weapon_spawn_think()
|
||||
}
|
||||
|
||||
player_has_weapon = player maps\mp\zombies\_zm_weapons::has_weapon_or_upgrade( self.zombie_weapon_upgrade );
|
||||
|
||||
if ( !player_has_weapon && is_true( level.weapons_using_ammo_sharing ) )
|
||||
{
|
||||
shared_ammo_weapon = player maps\mp\zombies\_zm_weapons::get_shared_ammo_weapon( self.zombie_weapon_upgrade );
|
||||
|
||||
if ( isDefined( shared_ammo_weapon ) )
|
||||
{
|
||||
player_has_weapon = 1;
|
||||
@ -627,6 +661,7 @@ weapon_spawn_think()
|
||||
}
|
||||
|
||||
cost = maps\mp\zombies\_zm_weapons::get_weapon_cost( self.zombie_weapon_upgrade );
|
||||
|
||||
if ( player maps\mp\zombies\_zm_pers_upgrades_functions::is_pers_double_points_active() )
|
||||
{
|
||||
cost = int( cost / 2 );
|
||||
@ -648,6 +683,7 @@ weapon_spawn_think()
|
||||
if ( self.zombie_weapon_upgrade == "riotshield_zm" )
|
||||
{
|
||||
player maps\mp\zombies\_zm_equipment::equipment_give( "riotshield_zm" );
|
||||
|
||||
if ( isDefined( player.player_shield_reset_health ) )
|
||||
{
|
||||
player [[ player.player_shield_reset_health ]]();
|
||||
|
@ -19,6 +19,7 @@ struct_class_init()
|
||||
level.struct_class_names[ "script_noteworthy" ] = [];
|
||||
level.struct_class_names[ "script_linkname" ] = [];
|
||||
level.struct_class_names[ "script_unitrigger_type" ] = [];
|
||||
|
||||
foreach ( s_struct in level.struct )
|
||||
{
|
||||
if ( isDefined( s_struct.targetname ) )
|
||||
@ -27,43 +28,53 @@ struct_class_init()
|
||||
{
|
||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "targetname" ][ s_struct.targetname ].size;
|
||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.target ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "target" ][ s_struct.target ] ) )
|
||||
{
|
||||
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "target" ][ s_struct.target ].size;
|
||||
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_noteworthy ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] ) )
|
||||
{
|
||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ].size;
|
||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_linkname ) )
|
||||
{
|
||||
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_unitrigger_type ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] ) )
|
||||
{
|
||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ].size;
|
||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ][ size ] = s_struct;
|
||||
}
|
||||
}
|
||||
|
||||
gametype = getDvar( "g_gametype" );
|
||||
location = getDvar( "ui_zm_mapstartlocation" );
|
||||
|
||||
if ( array_validate( level.add_struct_gamemode_location_funcs ) )
|
||||
{
|
||||
if ( array_validate( level.add_struct_gamemode_location_funcs[ gametype ] ) )
|
||||
@ -87,37 +98,45 @@ add_struct( s_struct )
|
||||
{
|
||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "targetname" ][ s_struct.targetname ].size;
|
||||
level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_noteworthy ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] ) )
|
||||
{
|
||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ].size;
|
||||
level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.target ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "target" ][ s_struct.target ] ) )
|
||||
{
|
||||
level.struct_class_names[ "target" ][ s_struct.target ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "target" ][ s_struct.target ].size;
|
||||
level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_linkname ) )
|
||||
{
|
||||
level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct;
|
||||
}
|
||||
|
||||
if ( isDefined( s_struct.script_unitrigger_type ) )
|
||||
{
|
||||
if ( !isDefined( level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] ) )
|
||||
{
|
||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = [];
|
||||
}
|
||||
|
||||
size = level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ].size;
|
||||
level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ][ size ] = s_struct;
|
||||
}
|
||||
@ -185,6 +204,7 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
||||
unitrigger_stub.angles = angles;
|
||||
|
||||
model_name = undefined;
|
||||
|
||||
if ( weapon_name == "sticky_grenade_zm" )
|
||||
{
|
||||
model_name = "semtex_bag";
|
||||
@ -217,6 +237,7 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
||||
if ( unitrigger_stub.targetname == "weapon_upgrade" )
|
||||
{
|
||||
unitrigger_stub.cost = get_weapon_cost( weapon_name );
|
||||
|
||||
if ( !is_true( level.monolingustic_prompt_format ) )
|
||||
{
|
||||
unitrigger_stub.hint_string = get_weapon_hint( weapon_name );
|
||||
@ -225,10 +246,12 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
||||
else
|
||||
{
|
||||
unitrigger_stub.hint_parm1 = get_weapon_display_name( weapon_name );
|
||||
|
||||
if ( !isDefined( unitrigger_stub.hint_parm1 ) || unitrigger_stub.hint_parm1 == "" || unitrigger_stub.hint_parm1 == "none" )
|
||||
{
|
||||
unitrigger_stub.hint_parm1 = "missing weapon name " + weapon_name;
|
||||
}
|
||||
|
||||
unitrigger_stub.hint_parm2 = unitrigger_stub.cost;
|
||||
unitrigger_stub.hint_string = &"ZOMBIE_WEAPONCOSTONLY";
|
||||
}
|
||||
@ -244,6 +267,7 @@ wallbuy( weapon_name, target, targetname, origin, angles, play_chalk_fx = 1 )
|
||||
if ( is_melee_weapon( weapon_name ) )
|
||||
{
|
||||
melee_weapon = undefined;
|
||||
|
||||
foreach(melee_weapon in level._melee_weapons)
|
||||
{
|
||||
if(melee_weapon.weapon_name == weapon_name)
|
||||
@ -330,6 +354,7 @@ playchalkfx( effect, origin, angles )
|
||||
wallbuy_grenade_model_fix()
|
||||
{
|
||||
model = getent(self.target, "targetname");
|
||||
|
||||
if(!isDefined(model))
|
||||
{
|
||||
return;
|
||||
@ -347,13 +372,16 @@ barrier( model, origin, angles, not_solid )
|
||||
level.survival_barriers = [];
|
||||
level.survival_barriers_index = 0;
|
||||
}
|
||||
|
||||
level.survival_barriers[ level.survival_barriers_index ] = spawn( "script_model", origin );
|
||||
level.survival_barriers[ level.survival_barriers_index ] setModel( model );
|
||||
level.survival_barriers[ level.survival_barriers_index ] rotateTo( angles, 0.1 );
|
||||
|
||||
if ( is_true( not_solid ) )
|
||||
{
|
||||
level.survival_barriers[ level.survival_barriers_index ] notSolid();
|
||||
}
|
||||
|
||||
level.survival_barriers_index++;
|
||||
}
|
||||
|
||||
@ -363,13 +391,16 @@ add_struct_location_gamemode_func( gametype, location, func )
|
||||
{
|
||||
level.add_struct_gamemode_location_funcs = [];
|
||||
}
|
||||
|
||||
if ( !isDefined( level.add_struct_gamemode_location_funcs[ gametype ] ) )
|
||||
{
|
||||
level.add_struct_gamemode_location_funcs[ gametype ] = [];
|
||||
}
|
||||
|
||||
if ( !isDefined( level.add_struct_gamemode_location_funcs[ gametype ][ location ] ) )
|
||||
{
|
||||
level.add_struct_gamemode_location_funcs[ gametype ][ location ] = [];
|
||||
}
|
||||
|
||||
level.add_struct_gamemode_location_funcs[ gametype ][ location ][ level.add_struct_gamemode_location_funcs[ gametype ][ location ].size ] = func;
|
||||
}
|
@ -136,6 +136,7 @@ meat_stink( who )
|
||||
if (valid_drop)
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
||||
@ -178,6 +179,7 @@ meat_stink( who )
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||
@ -289,6 +291,7 @@ meat_stink_ignoreme_think()
|
||||
zombies = get_round_enemy_array();
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (player == self)
|
||||
@ -337,6 +340,7 @@ meat_stink_cleanup_on_downed()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||
@ -354,6 +358,7 @@ meat_stink_cleanup_on_downed()
|
||||
if (valid_drop)
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread scripts\zm\zgrief\zgrief_reimagined::show_grief_hud_msg("Meat dropped!");
|
||||
@ -380,6 +385,7 @@ meat_powerup_reset_on_disconnect()
|
||||
level.meat_player = undefined;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (is_player_valid(player) && !is_true(player.spawn_protection) && !is_true(player.revive_protection))
|
||||
@ -424,6 +430,7 @@ meat_stink_player( who )
|
||||
level.meat_player = who;
|
||||
who.ignoreme = 0;
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||
@ -443,6 +450,7 @@ meat_stink_player( who )
|
||||
|
||||
who notify( "meat_stink_player_end" );
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||
@ -452,6 +460,7 @@ meat_stink_player( who )
|
||||
player.ignoreme = 0;
|
||||
}
|
||||
}
|
||||
|
||||
level.meat_player = undefined;
|
||||
}
|
||||
|
||||
@ -479,6 +488,7 @@ print_meat_msg(meat_player, verb)
|
||||
}
|
||||
|
||||
color = "";
|
||||
|
||||
if (self.team == meat_player.team)
|
||||
{
|
||||
color = "^8";
|
||||
|
@ -12,6 +12,7 @@ give_afterlife()
|
||||
wait 0.5;
|
||||
start_pos = 1;
|
||||
players = getplayers();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( isDefined( player.afterlife ) && !player.afterlife )
|
||||
|
@ -52,14 +52,17 @@ give_team_characters()
|
||||
{
|
||||
self detachall();
|
||||
self set_player_is_female( 0 );
|
||||
|
||||
if ( !isDefined( self.characterindex ) )
|
||||
{
|
||||
self.characterindex = 1;
|
||||
|
||||
if ( self.team == "axis" )
|
||||
{
|
||||
self.characterindex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
switch( self.characterindex )
|
||||
{
|
||||
case 0:
|
||||
@ -70,6 +73,7 @@ give_team_characters()
|
||||
self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" );
|
||||
self.characterindex = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 3:
|
||||
self setmodel( "c_zom_player_grief_guard_fb" );
|
||||
@ -79,6 +83,7 @@ give_team_characters()
|
||||
self.characterindex = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
self setmovespeedscale( 1 );
|
||||
self setsprintduration( 4 );
|
||||
self setsprintcooldown( 0 );
|
||||
@ -120,6 +125,7 @@ main()
|
||||
a_t_door_triggers = getentarray( "zombie_door", "targetname" );
|
||||
triggers = a_t_door_triggers;
|
||||
i = 0;
|
||||
|
||||
while ( i < triggers.size )
|
||||
{
|
||||
if ( isDefined( triggers[ i ].script_flag ) )
|
||||
@ -130,25 +136,32 @@ main()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( triggers[ i ].script_flag == "activate_cafeteria" || triggers[ i ].script_flag == "activate_cellblock_east" || triggers[ i ].script_flag == "activate_cellblock_west" || triggers[ i ].script_flag == "activate_cellblock_barber" || triggers[ i ].script_flag == "activate_cellblock_gondola" || triggers[ i ].script_flag == "activate_cellblock_east_west" || triggers[ i ].script_flag == "activate_warden_office" )
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isDefined( triggers[ i ].target ) )
|
||||
{
|
||||
str_target = triggers[ i ].target;
|
||||
a_door_and_clip = getentarray( str_target, "targetname" );
|
||||
|
||||
foreach ( ent in a_door_and_clip )
|
||||
{
|
||||
ent delete();
|
||||
}
|
||||
}
|
||||
|
||||
triggers[ i ] delete();
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
a_t_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( t_door in a_t_doors )
|
||||
{
|
||||
if ( isDefined( t_door.script_flag ) )
|
||||
@ -159,6 +172,7 @@ main()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zbarriers = getzbarrierarray();
|
||||
a_str_zones = [];
|
||||
a_str_zones[ 0 ] = "zone_start";
|
||||
@ -171,6 +185,7 @@ main()
|
||||
a_str_zones[ 7 ] = "zone_cellblock_west_barber";
|
||||
a_str_zones[ 8 ] = "zone_cellblock_west";
|
||||
a_str_zones[ 9 ] = "zone_cellblock_west_gondola";
|
||||
|
||||
foreach ( barrier in zbarriers )
|
||||
{
|
||||
if ( isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "cafe_chest_zbarrier" || isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "start_chest_zbarrier" )
|
||||
@ -181,6 +196,7 @@ main()
|
||||
{
|
||||
str_model = barrier.model;
|
||||
b_delete_barrier = 1;
|
||||
|
||||
if ( isdefined( barrier.script_string ) )
|
||||
{
|
||||
for ( i = 0; i < a_str_zones.size; i++ )
|
||||
@ -198,6 +214,7 @@ main()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
t_temp = getent( "tower_trap_activate_trigger", "targetname" );
|
||||
t_temp delete();
|
||||
t_temp = getent( "tower_trap_range_trigger", "targetname" );
|
||||
@ -207,77 +224,99 @@ main()
|
||||
e_brush = getent( "tower_shockbox_door", "targetname" );
|
||||
e_brush delete();
|
||||
a_t_travel_triggers = getentarray( "travel_trigger", "script_noteworthy" );
|
||||
|
||||
foreach ( trigger in a_t_travel_triggers )
|
||||
{
|
||||
trigger delete();
|
||||
}
|
||||
|
||||
a_e_gondola_lights = getentarray( "gondola_state_light", "targetname" );
|
||||
|
||||
foreach ( light in a_e_gondola_lights )
|
||||
{
|
||||
light delete();
|
||||
}
|
||||
|
||||
a_e_gondola_landing_gates = getentarray( "gondola_landing_gates", "targetname" );
|
||||
|
||||
foreach ( model in a_e_gondola_landing_gates )
|
||||
{
|
||||
model delete();
|
||||
}
|
||||
|
||||
a_e_gondola_landing_doors = getentarray( "gondola_landing_doors", "targetname" );
|
||||
|
||||
foreach ( model in a_e_gondola_landing_doors )
|
||||
{
|
||||
model delete();
|
||||
}
|
||||
|
||||
a_e_gondola_gates = getentarray( "gondola_gates", "targetname" );
|
||||
|
||||
foreach ( model in a_e_gondola_gates )
|
||||
{
|
||||
model delete();
|
||||
}
|
||||
|
||||
a_e_gondola_doors = getentarray( "gondola_doors", "targetname" );
|
||||
|
||||
foreach ( model in a_e_gondola_doors )
|
||||
{
|
||||
model delete();
|
||||
}
|
||||
|
||||
m_gondola = getent( "zipline_gondola", "targetname" );
|
||||
m_gondola delete();
|
||||
t_ride_trigger = getent( "gondola_ride_trigger", "targetname" );
|
||||
t_ride_trigger delete();
|
||||
a_classic_clips = getentarray( "classic_clips", "targetname" );
|
||||
|
||||
foreach ( clip in a_classic_clips )
|
||||
{
|
||||
clip connectpaths();
|
||||
clip delete();
|
||||
}
|
||||
|
||||
a_afterlife_props = getentarray( "afterlife_show", "targetname" );
|
||||
|
||||
foreach ( m_prop in a_afterlife_props )
|
||||
{
|
||||
m_prop delete();
|
||||
}
|
||||
|
||||
spork_portal = getent( "afterlife_show_spork", "targetname" );
|
||||
spork_portal delete();
|
||||
a_audio = getentarray( "at_headphones", "script_noteworthy" );
|
||||
|
||||
foreach ( model in a_audio )
|
||||
{
|
||||
model delete();
|
||||
}
|
||||
|
||||
m_spoon_pickup = getent( "pickup_spoon", "targetname" );
|
||||
m_spoon_pickup delete();
|
||||
t_sq_bg = getent( "sq_bg_reward_pickup", "targetname" );
|
||||
t_sq_bg delete();
|
||||
t_crafting_table = getentarray( "open_craftable_trigger", "targetname" );
|
||||
|
||||
foreach ( trigger in t_crafting_table )
|
||||
{
|
||||
trigger delete();
|
||||
}
|
||||
|
||||
t_warden_fence = getent( "warden_fence_damage", "targetname" );
|
||||
t_warden_fence delete();
|
||||
m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" );
|
||||
m_plane_about_to_crash delete();
|
||||
m_plane_craftable = getent( "plane_craftable", "targetname" );
|
||||
m_plane_craftable delete();
|
||||
|
||||
for ( i = 1; i <= 5; i++ )
|
||||
{
|
||||
m_key_lock = getent( "masterkey_lock_" + i, "targetname" );
|
||||
m_key_lock delete();
|
||||
}
|
||||
|
||||
m_shower_door = getent( "shower_key_door", "targetname" );
|
||||
m_shower_door delete();
|
||||
m_nixie_door = getent( "nixie_door_left", "targetname" );
|
||||
@ -286,11 +325,13 @@ main()
|
||||
m_nixie_door delete();
|
||||
m_nixie_brush = getent( "nixie_tube_weaponclip", "targetname" );
|
||||
m_nixie_brush delete();
|
||||
|
||||
for ( i = 1; i <= 3; i++ )
|
||||
{
|
||||
m_nixie_tube = getent( "nixie_tube_" + i, "targetname" );
|
||||
m_nixie_tube delete();
|
||||
}
|
||||
|
||||
t_elevator_door = getent( "nixie_elevator_door", "targetname" );
|
||||
t_elevator_door delete();
|
||||
e_elevator_clip = getent( "elevator_door_playerclip", "targetname" );
|
||||
@ -309,18 +350,23 @@ main()
|
||||
m_infirmary_case delete();
|
||||
fake_plane_part = getent( "fake_veh_t6_dlc_zombie_part_control", "targetname" );
|
||||
fake_plane_part delete();
|
||||
|
||||
for ( i = 1; i <= 3; i++ )
|
||||
{
|
||||
m_generator = getent( "generator_panel_" + i, "targetname" );
|
||||
m_generator delete();
|
||||
}
|
||||
|
||||
a_m_generator_core = getentarray( "generator_core", "targetname" );
|
||||
|
||||
foreach ( generator in a_m_generator_core )
|
||||
{
|
||||
generator delete();
|
||||
}
|
||||
|
||||
e_playerclip = getent( "electric_chair_playerclip", "targetname" );
|
||||
e_playerclip delete();
|
||||
|
||||
for ( i = 1; i <= 4; i++ )
|
||||
{
|
||||
t_use = getent( "trigger_electric_chair_" + i, "targetname" );
|
||||
@ -328,12 +374,15 @@ main()
|
||||
m_chair = getent( "electric_chair_" + i, "targetname" );
|
||||
m_chair delete();
|
||||
}
|
||||
|
||||
a_afterlife_interact = getentarray( "afterlife_interact", "targetname" );
|
||||
|
||||
foreach ( model in a_afterlife_interact )
|
||||
{
|
||||
model turn_afterlife_interact_on();
|
||||
wait 0.1;
|
||||
}
|
||||
|
||||
flag_wait( "initial_blackscreen_passed" );
|
||||
maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors();
|
||||
flag_wait( "start_zombie_round_logic" );
|
||||
@ -366,6 +415,7 @@ remove_zombie_hats_for_grief()
|
||||
enemy_location_override( zombie, enemy )
|
||||
{
|
||||
location = enemy.origin;
|
||||
|
||||
if ( is_true( self.reroute ) )
|
||||
{
|
||||
if ( isDefined( self.reroute_origin ) )
|
||||
@ -373,19 +423,23 @@ enemy_location_override( zombie, enemy )
|
||||
location = self.reroute_origin;
|
||||
}
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
magicbox_face_spawn()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
if ( !is_gametype_active( "zgrief" ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "user_grabbed_weapon" );
|
||||
|
||||
if ( randomint( 50000 ) == 115 )
|
||||
{
|
||||
self playsoundtoplayer( "zmb_easteregg_face", self );
|
||||
@ -400,6 +454,7 @@ magicbox_face_spawn()
|
||||
wait 0.25;
|
||||
self.wth_elem destroy();
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
@ -412,6 +467,7 @@ turn_afterlife_interact_on()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( self.script_string == "electric_cherry_on" || self.script_string == "sleight_on" || self.script_string == "wires_admin_door" )
|
||||
{
|
||||
if ( !isDefined( level.shockbox_anim ) )
|
||||
@ -419,6 +475,7 @@ turn_afterlife_interact_on()
|
||||
level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim;
|
||||
level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim;
|
||||
}
|
||||
|
||||
if ( issubstr( self.model, "p6_zm_al_shock_box" ) )
|
||||
{
|
||||
self useanimtree( -1 );
|
||||
|
@ -38,10 +38,12 @@ move_gondola( b_suppress_doors_close = 0 )
|
||||
flag_clear( "gondola_at_" + e_gondola.location );
|
||||
|
||||
a_t_move = getentarray( "gondola_move_trigger", "targetname" );
|
||||
|
||||
foreach ( trigger in a_t_move )
|
||||
trigger sethintstring( "" );
|
||||
|
||||
a_t_call = getentarray( "gondola_call_trigger", "targetname" );
|
||||
|
||||
foreach ( trigger in a_t_call )
|
||||
trigger sethintstring( &"ZM_PRISON_GONDOLA_ACTIVE" );
|
||||
|
||||
|
@ -50,6 +50,7 @@ blundergat_upgrade_station()
|
||||
}
|
||||
|
||||
str_valid_weapon = player getcurrentweapon();
|
||||
|
||||
if ( str_valid_weapon == "blundergat_zm" || str_valid_weapon == "blundergat_upgraded_zm" )
|
||||
{
|
||||
player maps\mp\zombies\_zm_score::minus_to_player_score( t_upgrade.cost );
|
||||
|
@ -85,6 +85,7 @@ main()
|
||||
enemy_location_override( zombie, enemy )
|
||||
{
|
||||
location = enemy.origin;
|
||||
|
||||
if ( isDefined( self.reroute ) && self.reroute )
|
||||
{
|
||||
if ( isDefined( self.reroute_origin ) )
|
||||
@ -92,6 +93,7 @@ enemy_location_override( zombie, enemy )
|
||||
location = self.reroute_origin;
|
||||
}
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
@ -131,6 +133,7 @@ builddynamicwallbuy( location, weaponname )
|
||||
if ( isDefined( wallbuy.script_location ) && wallbuy.script_location == location )
|
||||
{
|
||||
spawned_wallbuy = undefined;
|
||||
|
||||
for ( i = 0; i < level._spawned_wallbuys.size; i++ )
|
||||
{
|
||||
if ( level._spawned_wallbuys[ i ].target == wallbuy.targetname )
|
||||
@ -157,6 +160,7 @@ builddynamicwallbuy( location, weaponname )
|
||||
}
|
||||
|
||||
struct = spawnStruct();
|
||||
|
||||
struct.target = wallbuy.targetname;
|
||||
level._spawned_wallbuys[level._spawned_wallbuys.size] = struct;
|
||||
|
||||
@ -274,6 +278,7 @@ disable_tunnels()
|
||||
// player spawns
|
||||
invalid_zones = array("zone_start", "zone_tunnels_center", "zone_tunnels_north", "zone_tunnels_south");
|
||||
spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
foreach(spawn_point in spawn_points)
|
||||
{
|
||||
if(isinarray(invalid_zones, spawn_point.script_noteworthy))
|
||||
|
@ -26,6 +26,7 @@ ows_targets_start()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
if ( level.targets_hit < ( 20 * players.size ) )
|
||||
{
|
||||
flag_set( "sq_ows_target_missed" );
|
||||
@ -45,6 +46,7 @@ ows_targets_start()
|
||||
ows_targets_spawn( a_spawn_spots )
|
||||
{
|
||||
i = 0;
|
||||
|
||||
foreach ( s_spot in a_spawn_spots )
|
||||
{
|
||||
m_target = spawn( "script_model", s_spot.origin );
|
||||
|
@ -72,6 +72,7 @@ stage_logic_richtofen()
|
||||
flag_clear( "sq_tpo_time_bomb_in_valid_location" );
|
||||
|
||||
b_time_bomb_in_valid_location = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if ( isdefined( level.time_bomb_save_data ) && isdefined( level.time_bomb_save_data.time_bomb_model ) )
|
||||
@ -136,6 +137,7 @@ special_round_end()
|
||||
scripts\zm\replaced\_zm_weap_time_bomb::time_bomb_detonation();
|
||||
|
||||
a_players = get_players();
|
||||
|
||||
foreach ( player in a_players )
|
||||
{
|
||||
vsmgr_deactivate( "visionset", "cheat_bw", player );
|
||||
|
@ -148,27 +148,33 @@ squashed_death_init( kill_if_falling )
|
||||
insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
if ( isDefined( perks_can_respawn_player ) && perks_can_respawn_player == 0 )
|
||||
{
|
||||
if ( self hasperk( "specialty_quickrevive" ) )
|
||||
{
|
||||
self unsetperk( "specialty_quickrevive" );
|
||||
}
|
||||
|
||||
if ( self hasperk( "specialty_finalstand" ) )
|
||||
{
|
||||
self unsetperk( "specialty_finalstand" );
|
||||
}
|
||||
}
|
||||
|
||||
self maps\mp\zombies\_zm_buildables::player_return_piece_to_original_spawn();
|
||||
|
||||
if ( isDefined( self.insta_killed ) && self.insta_killed )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( self.ignore_insta_kill ) )
|
||||
{
|
||||
self.disable_chugabud_corpse = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( self hasperk( "specialty_finalstand" ) )
|
||||
{
|
||||
self.ignore_insta_kill = 1;
|
||||
@ -176,6 +182,7 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
self dodamage( self.health + 1000, ( 0, 0, 1 ) );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isDefined( kill_if_falling ) || kill_if_falling == 0 )
|
||||
{
|
||||
if ( !self isonground() )
|
||||
@ -183,16 +190,20 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( is_player_killable( self ) )
|
||||
{
|
||||
self.insta_killed = 1;
|
||||
in_last_stand = 0;
|
||||
self notify( "chugabud_effects_cleanup" );
|
||||
|
||||
if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||
{
|
||||
in_last_stand = 1;
|
||||
}
|
||||
|
||||
self thread blood_splat();
|
||||
|
||||
if ( getnumconnectedplayers() == 1 )
|
||||
{
|
||||
if ( isDefined( self.solo_lives_given ) && self.solo_lives_given < 3 )
|
||||
@ -201,15 +212,18 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
points = getstruct( "zone_green_start", "script_noteworthy" );
|
||||
spawn_points = getstructarray( points.target, "targetname" );
|
||||
point = spawn_points[ 0 ];
|
||||
|
||||
if ( in_last_stand == 0 )
|
||||
{
|
||||
self dodamage( self.health + 1000, ( 0, 0, 1 ) );
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
self freezecontrols( 1 );
|
||||
wait 0.25;
|
||||
self setorigin( point.origin + vectorScale( ( 0, 0, 1 ), 20 ) );
|
||||
self.angles = point.angles;
|
||||
|
||||
if ( in_last_stand )
|
||||
{
|
||||
flag_set( "instant_revive" );
|
||||
@ -224,6 +238,7 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
self.solo_respawn = 0;
|
||||
self.lives--;
|
||||
}
|
||||
|
||||
self freezecontrols( 0 );
|
||||
self.insta_killed = 0;
|
||||
}
|
||||
@ -238,6 +253,7 @@ insta_kill_player( perks_can_respawn_player, kill_if_falling )
|
||||
wait_network_frame();
|
||||
self.bleedout_time = 0;
|
||||
}
|
||||
|
||||
self.insta_killed = 0;
|
||||
}
|
||||
}
|
||||
@ -291,6 +307,7 @@ escape_pod()
|
||||
level notify( "escape_pod_falling_begin" );
|
||||
|
||||
players_in_escape_pod = escape_pod_trigger escape_pod_get_all_alive_players_inside();
|
||||
|
||||
foreach ( player in players_in_escape_pod )
|
||||
{
|
||||
player.riding_escape_pod = 1;
|
||||
|
@ -484,6 +484,7 @@ watch_for_elevator_during_faller_spawn()
|
||||
flag_wait( "power_on" );
|
||||
|
||||
elevator_bodies = [];
|
||||
|
||||
foreach ( elevator in level.elevators )
|
||||
{
|
||||
elevator_bodies[elevator_bodies.size] = elevator.body;
|
||||
|
@ -178,6 +178,7 @@ sq_give_all_perks()
|
||||
level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud();
|
||||
|
||||
players = getplayers();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
player thread sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder );
|
||||
|
@ -62,6 +62,7 @@ sq_atd_watch_elevator( str_flag )
|
||||
}
|
||||
|
||||
a_dragon_icons = getentarray( "elevator_dragon_icon", "targetname" );
|
||||
|
||||
foreach ( m_icon in a_dragon_icons )
|
||||
{
|
||||
if ( issubstr( self.targetname, m_icon.script_noteworthy ) )
|
||||
|
@ -120,6 +120,7 @@ is_springpad_in_place( m_springpad, is_generator )
|
||||
if ( is_generator )
|
||||
{
|
||||
wait 0.1;
|
||||
|
||||
if ( pts_should_springpad_create_trigs( s_spot ) )
|
||||
{
|
||||
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( self.buildablespringpad.stub );
|
||||
@ -322,14 +323,17 @@ pts_springpad_fling( str_spot_name )
|
||||
str_anim1 = "dc";
|
||||
str_anim2 = "cd";
|
||||
break;
|
||||
|
||||
case "lion_pair_2":
|
||||
str_anim1 = "ab";
|
||||
str_anim2 = "ba";
|
||||
break;
|
||||
|
||||
case "lion_pair_3":
|
||||
str_anim1 = "cd";
|
||||
str_anim2 = "dc";
|
||||
break;
|
||||
|
||||
case "lion_pair_4":
|
||||
str_anim1 = "ba";
|
||||
str_anim2 = "ab";
|
||||
|
@ -77,6 +77,7 @@ stage_two()
|
||||
t_plane_fly_afterlife trigger_on();
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( is_player_valid( player ) )
|
||||
|
@ -70,6 +70,7 @@ sndmeleewpn_isstaff( weapon )
|
||||
case "staff_air_melee_zm":
|
||||
isstaff = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
isstaff = 0;
|
||||
}
|
||||
@ -120,6 +121,7 @@ tomb_can_track_ammo_custom( weap )
|
||||
case "alcatraz_shield_zm":
|
||||
case "tomb_shield_zm":
|
||||
return false;
|
||||
|
||||
default:
|
||||
if ( is_melee_weapon( weap ) || is_zombie_perk_bottle( weap ) || is_placeable_mine( weap ) || is_equipment( weap ) || issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" || weaponfuellife( weap ) > 0 || weap == level.revive_tool )
|
||||
return false;
|
||||
|
@ -78,12 +78,14 @@ reward_random_perk( player, s_stat )
|
||||
}
|
||||
|
||||
perk = player.tomb_reward_perk;
|
||||
|
||||
if (!isDefined(perk))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
model = maps\mp\zombies\_zm_perk_random::get_perk_weapon_model(perk);
|
||||
|
||||
if (!isDefined(model))
|
||||
{
|
||||
return 0;
|
||||
@ -95,15 +97,18 @@ reward_random_perk( player, s_stat )
|
||||
m_reward playsound( "zmb_spawn_powerup" );
|
||||
m_reward playloopsound( "zmb_spawn_powerup_loop", 0.5 );
|
||||
wait_network_frame();
|
||||
|
||||
if ( !maps\mp\zombies\_zm_challenges::reward_rise_and_grab( m_reward, 50, 2, 2, 10 ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( player hasperk( perk ) || player maps\mp\zombies\_zm_perks::has_perk_paused( perk ) )
|
||||
{
|
||||
m_reward thread maps\mp\zm_tomb_challenges::bottle_reject_sink( player );
|
||||
return 0;
|
||||
}
|
||||
|
||||
m_reward stoploopsound( 0.1 );
|
||||
player playsound( "zmb_powerup_grabbed" );
|
||||
m_reward thread maps\mp\zombies\_zm_perks::vending_trigger_post_think( player, perk );
|
||||
@ -114,9 +119,11 @@ reward_random_perk( player, s_stat )
|
||||
get_random_perk()
|
||||
{
|
||||
perks = [];
|
||||
|
||||
for (i = 0; i < level._random_perk_machine_perk_list.size; i++)
|
||||
{
|
||||
perk = level._random_perk_machine_perk_list[ i ];
|
||||
|
||||
if ( isDefined( self.perk_purchased ) && self.perk_purchased == perk )
|
||||
{
|
||||
continue;
|
||||
@ -129,6 +136,7 @@ get_random_perk()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( perks.size > 0 )
|
||||
{
|
||||
perks = array_randomize( perks );
|
||||
|
@ -242,6 +242,7 @@ quadrotor_control_thread()
|
||||
}
|
||||
|
||||
str_vehicle = "heli_quadrotor_zm";
|
||||
|
||||
if ( flag( "ee_maxis_drone_retrieved" ) )
|
||||
{
|
||||
str_vehicle = "heli_quadrotor_upgraded_zm";
|
||||
@ -331,9 +332,11 @@ quadrotor_set_available()
|
||||
case "zone_nml_9":
|
||||
setclientfield( "cooldown_steam", 1 );
|
||||
break;
|
||||
|
||||
case "zone_bunker_5a":
|
||||
setclientfield( "cooldown_steam", 2 );
|
||||
break;
|
||||
|
||||
case "zone_village_1":
|
||||
setclientfield( "cooldown_steam", 3 );
|
||||
break;
|
||||
|
@ -40,12 +40,15 @@ create_robot_head_trigger( unitrigger_stub )
|
||||
case "fire":
|
||||
m_sign showpart( "j_fire" );
|
||||
break;
|
||||
|
||||
case "water":
|
||||
m_sign showpart( "j_ice" );
|
||||
break;
|
||||
|
||||
case "lightning":
|
||||
m_sign showpart( "j_lightning" );
|
||||
break;
|
||||
|
||||
case "air":
|
||||
m_sign showpart( "j_wind" );
|
||||
break;
|
||||
|
@ -28,6 +28,7 @@ stage_logic()
|
||||
}
|
||||
|
||||
a_zombies = getaispeciesarray( level.zombie_team, "all" );
|
||||
|
||||
foreach ( zombie in a_zombies )
|
||||
{
|
||||
if ( is_point_in_chamber( zombie.origin ) && !is_true( zombie.is_mechz ) && is_true( zombie.has_legs ) && is_true( zombie.completed_emerging_into_playable_area ) )
|
||||
@ -49,6 +50,7 @@ stage_logic()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( is_player_valid( player ) )
|
||||
|
@ -73,6 +73,7 @@ robot_cycling()
|
||||
{
|
||||
do
|
||||
random_number = randomint( 3 );
|
||||
|
||||
while ( random_number == last_robot );
|
||||
}
|
||||
|
||||
|
@ -380,6 +380,7 @@ insert_staff_hint_charger(player, enum)
|
||||
self.playertrigger[num] endon("death");
|
||||
|
||||
element = "";
|
||||
|
||||
if (enum == 1)
|
||||
{
|
||||
element = "Fire";
|
||||
@ -564,6 +565,7 @@ run_gramophone_teleporter( str_vinyl_record )
|
||||
}
|
||||
|
||||
arrayremovevalue(level.gramophone_teleporter_triggers, t_gramophone);
|
||||
|
||||
foreach (trigger in level.gramophone_teleporter_triggers)
|
||||
{
|
||||
if (trigger != t_gramophone)
|
||||
|
@ -159,6 +159,7 @@ busschedulethink()
|
||||
zonestocheck[zonestocheck.size] = "zone_amb_bridge";
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_2b";
|
||||
break;
|
||||
|
||||
case "zone_gas":
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_2";
|
||||
zonestocheck[zonestocheck.size] = "zone_amb_tunnel";
|
||||
@ -171,6 +172,7 @@ busschedulethink()
|
||||
zonestocheck[zonestocheck.size] = "zone_roadside_east";
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_3";
|
||||
break;
|
||||
|
||||
case "zone_far":
|
||||
zonestocheck[zonestocheck.size] = "zone_amb_forest";
|
||||
zonestocheck[zonestocheck.size] = "zone_far_ext";
|
||||
@ -179,6 +181,7 @@ busschedulethink()
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_5";
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_6";
|
||||
break;
|
||||
|
||||
case "zone_pow":
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_6";
|
||||
zonestocheck[zonestocheck.size] = "zone_amb_cornfield";
|
||||
@ -188,6 +191,7 @@ busschedulethink()
|
||||
zonestocheck[zonestocheck.size] = "zone_pcr";
|
||||
zonestocheck[zonestocheck.size] = "zone_pow_warehouse";
|
||||
break;
|
||||
|
||||
case "zone_town_north":
|
||||
zonestocheck[zonestocheck.size] = "zone_trans_8";
|
||||
zonestocheck[zonestocheck.size] = "zone_amb_power2town";
|
||||
@ -309,6 +313,7 @@ busshowleavinghud( time )
|
||||
while (time > 0)
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (!isDefined(player.busleavehud))
|
||||
@ -345,6 +350,7 @@ busshowleavinghud( time )
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (isDefined(player.busleavehud))
|
||||
@ -360,6 +366,7 @@ busshowleavinghud_destroy_on_depart_early()
|
||||
self waittill("depart_early");
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (isDefined(player.busleavehud))
|
||||
@ -544,6 +551,7 @@ buspathblockersetup()
|
||||
bus_buyable_weapon_unitrigger_setup(trig)
|
||||
{
|
||||
unitrigger = undefined;
|
||||
|
||||
while (!isDefined(unitrigger))
|
||||
{
|
||||
for(i = 0; i < level._unitriggers.trigger_stubs.size; i++)
|
||||
|
@ -39,6 +39,7 @@ main()
|
||||
enemy_location_override( zombie, enemy )
|
||||
{
|
||||
location = enemy.origin;
|
||||
|
||||
if ( is_true( self.reroute ) )
|
||||
{
|
||||
if ( isDefined( self.reroute_origin ) )
|
||||
@ -46,12 +47,14 @@ enemy_location_override( zombie, enemy )
|
||||
location = self.reroute_origin;
|
||||
}
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
remove_lava_collision()
|
||||
{
|
||||
ents = getEntArray( "script_model", "classname");
|
||||
|
||||
foreach (ent in ents)
|
||||
{
|
||||
if (IsDefined(ent.model))
|
||||
@ -97,6 +100,7 @@ open_electric_doors_on_door_opened()
|
||||
level.local_doors_stay_open = 1;
|
||||
door = undefined;
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if(door.target == "busstop_doors")
|
||||
@ -108,6 +112,7 @@ open_electric_doors_on_door_opened()
|
||||
door waittill( "door_opened" );
|
||||
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
||||
|
@ -125,10 +125,12 @@ maxis_sidequest_c()
|
||||
flag_waitopen( "power_on" );
|
||||
level endon( "power_on" );
|
||||
level.sq_progress["maxis"]["C_screecher_dark"] = 0;
|
||||
|
||||
for(i = 0; i < 8; i++)
|
||||
{
|
||||
level.sq_progress["maxis"]["C_screecher_" + i] = undefined;
|
||||
}
|
||||
|
||||
level.sq_progress["maxis"]["C_complete"] = 0;
|
||||
turbine_1_talked = 0;
|
||||
turbine_2_talked = 0;
|
||||
@ -151,6 +153,7 @@ maxis_sidequest_c()
|
||||
player.buildableturbine thread turbine_watch_cleanup();
|
||||
|
||||
zone_used = 0;
|
||||
|
||||
for(i = 0; i < 8; i++)
|
||||
{
|
||||
if ( isdefined( level.sq_progress["maxis"]["C_screecher_" + i] ) && zone == level.sq_progress["maxis"]["C_screecher_" + i] )
|
||||
@ -283,6 +286,7 @@ droppowerup( story )
|
||||
level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud();
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach ( player in players )
|
||||
{
|
||||
if ( is_player_valid( player ) )
|
||||
|
@ -36,6 +36,7 @@ main()
|
||||
|
||||
// electric doors showing hintstring
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
||||
@ -48,6 +49,7 @@ main()
|
||||
enemy_location_override( zombie, enemy )
|
||||
{
|
||||
location = enemy.origin;
|
||||
|
||||
if ( is_true( self.reroute ) )
|
||||
{
|
||||
if ( isDefined( self.reroute_origin ) )
|
||||
@ -55,12 +57,14 @@ enemy_location_override( zombie, enemy )
|
||||
location = self.reroute_origin;
|
||||
}
|
||||
}
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
remove_lava_collision()
|
||||
{
|
||||
ents = getEntArray( "script_model", "classname");
|
||||
|
||||
foreach (ent in ents)
|
||||
{
|
||||
if (IsDefined(ent.model))
|
||||
@ -106,6 +110,7 @@ open_electric_doors_on_door_opened()
|
||||
level.local_doors_stay_open = 1;
|
||||
door = undefined;
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if(door.target == "busstop_doors")
|
||||
@ -117,6 +122,7 @@ open_electric_doors_on_door_opened()
|
||||
door waittill( "door_opened" );
|
||||
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
foreach ( door in zombie_doors )
|
||||
{
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
||||
|
@ -57,6 +57,7 @@ item_meat_on_spawn_retrieve_trigger( watcher, player, weaponname )
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (other_player in players)
|
||||
{
|
||||
other_player thread maps\mp\gametypes_zm\zgrief::meat_stink_player_cleanup();
|
||||
|
@ -351,14 +351,17 @@ set_grief_vars()
|
||||
{
|
||||
level.zombie_weapons["knife_ballistic_zm"].is_in_box = 1;
|
||||
}
|
||||
|
||||
if(isDefined(level.zombie_weapons["ray_gun_zm"]))
|
||||
{
|
||||
level.zombie_weapons["ray_gun_zm"].is_in_box = 1;
|
||||
}
|
||||
|
||||
if(isDefined(level.zombie_weapons["raygun_mark2_zm"]))
|
||||
{
|
||||
level.zombie_weapons["raygun_mark2_zm"].is_in_box = 1;
|
||||
}
|
||||
|
||||
if(isDefined(level.zombie_weapons["willy_pete_zm"]))
|
||||
{
|
||||
register_tactical_grenade_for_level( "willy_pete_zm" );
|
||||
@ -504,6 +507,7 @@ powerup_hud_destroy_on_intermission()
|
||||
powerup_hud_move()
|
||||
{
|
||||
offset_x = 37;
|
||||
|
||||
if((level.active_powerup_hud_array[self.team].size % 2) == 0)
|
||||
{
|
||||
offset_x /= 2;
|
||||
@ -604,6 +608,7 @@ grief_onplayerdisconnect(disconnecting_player)
|
||||
if(count <= 0)
|
||||
{
|
||||
encounters_team = "A";
|
||||
|
||||
if(getOtherTeam(disconnecting_player.team) == "allies")
|
||||
{
|
||||
encounters_team = "B";
|
||||
@ -815,6 +820,7 @@ add_grief_downed_score()
|
||||
add_grief_bleedout_score()
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(is_player_valid(player) && player.team != self.team)
|
||||
@ -938,6 +944,7 @@ headstomp_watcher()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player_top_origin = player getCentroid();
|
||||
@ -1002,6 +1009,7 @@ round_start_wait(time, initial)
|
||||
flag_wait( "start_zombie_round_logic" );
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player.hostmigrationcontrolsfrozen = 1; // fixes players being able to move after initial_blackscreen_passed
|
||||
@ -1014,6 +1022,7 @@ round_start_wait(time, initial)
|
||||
else
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
ground_origin = groundpos(player.origin);
|
||||
@ -1042,6 +1051,7 @@ round_start_wait(time, initial)
|
||||
level thread zombie_spawn_wait(zombie_spawn_time);
|
||||
|
||||
text = "MATCH BEGINS IN";
|
||||
|
||||
if(level.scr_zm_ui_gametype_obj == "zsnr")
|
||||
{
|
||||
text = "ROUND " + level.snr_round_number + " BEGINS IN";
|
||||
@ -1054,6 +1064,7 @@ round_start_wait(time, initial)
|
||||
countdown_hud scripts\zm\replaced\_zm::countdown_hud_destroy();
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(initial)
|
||||
@ -1075,6 +1086,7 @@ freeze_hotjoin_players()
|
||||
while(1)
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(!is_true(player.hostmigrationcontrolsfrozen))
|
||||
@ -1340,6 +1352,7 @@ grief_intro_msg()
|
||||
get_gamemode_display_name(gamemode = level.scr_zm_ui_gametype_obj)
|
||||
{
|
||||
name = "";
|
||||
|
||||
if(gamemode == "zgrief")
|
||||
{
|
||||
name = "Grief";
|
||||
@ -1534,6 +1547,7 @@ custom_end_screen()
|
||||
{
|
||||
players = get_players();
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
players[ i ].game_over_hud = newclienthudelem( players[ i ] );
|
||||
@ -1550,11 +1564,13 @@ custom_end_screen()
|
||||
players[ i ].game_over_hud settext( &"ZOMBIE_GAME_OVER" );
|
||||
players[ i ].game_over_hud fadeovertime( 1 );
|
||||
players[ i ].game_over_hud.alpha = 1;
|
||||
|
||||
if ( players[ i ] issplitscreen() )
|
||||
{
|
||||
players[ i ].game_over_hud.fontscale = 2;
|
||||
players[ i ].game_over_hud.y += 40;
|
||||
}
|
||||
|
||||
players[ i ].survived_hud = newclienthudelem( players[ i ] );
|
||||
players[ i ].survived_hud.alignx = "center";
|
||||
players[ i ].survived_hud.aligny = "middle";
|
||||
@ -1566,11 +1582,13 @@ custom_end_screen()
|
||||
players[ i ].survived_hud.alpha = 0;
|
||||
players[ i ].survived_hud.color = ( 1, 1, 1 );
|
||||
players[ i ].survived_hud.hidewheninmenu = 1;
|
||||
|
||||
if ( players[ i ] issplitscreen() )
|
||||
{
|
||||
players[ i ].survived_hud.fontscale = 1.5;
|
||||
players[ i ].survived_hud.y += 40;
|
||||
}
|
||||
|
||||
winner_text = "YOU WIN!";
|
||||
loser_text = "YOU LOSE!";
|
||||
|
||||
@ -1589,6 +1607,7 @@ custom_end_screen()
|
||||
players[ i ].survived_hud settext( loser_text );
|
||||
}
|
||||
}
|
||||
|
||||
players[ i ].survived_hud fadeovertime( 1 );
|
||||
players[ i ].survived_hud.alpha = 1;
|
||||
i++;
|
||||
@ -1598,12 +1617,14 @@ custom_end_screen()
|
||||
game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime )
|
||||
{
|
||||
self.last_damage_from_zombie_or_player = 0;
|
||||
|
||||
if ( isDefined( eattacker ) )
|
||||
{
|
||||
if ( isplayer( eattacker ) && eattacker == self )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isDefined( eattacker.is_zombie ) || eattacker.is_zombie && isplayer( eattacker ) )
|
||||
{
|
||||
self.last_damage_from_zombie_or_player = 1;
|
||||
@ -1659,6 +1680,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme
|
||||
}
|
||||
|
||||
is_melee = false;
|
||||
|
||||
if(isDefined(eattacker) && isplayer(eattacker) && eattacker != self && eattacker.team != self.team && (smeansofdeath == "MOD_MELEE" || issubstr(sweapon, "knife_ballistic")))
|
||||
{
|
||||
is_melee = true;
|
||||
@ -1677,6 +1699,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme
|
||||
{
|
||||
amount = 297.5; // 32 units
|
||||
}
|
||||
|
||||
if (self getStance() == "crouch")
|
||||
{
|
||||
amount = 215; // 21.33 units
|
||||
@ -1696,6 +1719,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme
|
||||
{
|
||||
amount = 235; // 24 units
|
||||
}
|
||||
|
||||
if (self getStance() == "crouch")
|
||||
{
|
||||
amount = 172.5; // 16 units
|
||||
@ -1718,6 +1742,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme
|
||||
{
|
||||
amount = 540; // 64 units
|
||||
}
|
||||
|
||||
if (self getStance() == "crouch")
|
||||
{
|
||||
amount = 377.5; // 42.66 units
|
||||
@ -1737,6 +1762,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme
|
||||
{
|
||||
amount = 420; // 48 units
|
||||
}
|
||||
|
||||
if (self getStance() == "crouch")
|
||||
{
|
||||
amount = 297.5; // 32 units
|
||||
@ -1830,6 +1856,7 @@ do_game_mode_shellshock(is_melee = 0, is_upgraded = 0)
|
||||
self endon( "disconnect" );
|
||||
|
||||
time = 0.5;
|
||||
|
||||
if (is_melee)
|
||||
{
|
||||
time = 0.75;
|
||||
@ -1921,10 +1948,12 @@ grief_laststand_weapon_save( einflictor, attacker, idamage, smeansofdeath, sweap
|
||||
if (isDefined(self.grief_savedweapon_weaponsammo_clip[i]))
|
||||
{
|
||||
clip_missing = weaponClipSize(self.grief_savedweapon_weapons[i]) - self.grief_savedweapon_weaponsammo_clip[i];
|
||||
|
||||
if (clip_missing > self.grief_savedweapon_weaponsammo_stock[i])
|
||||
{
|
||||
clip_missing = self.grief_savedweapon_weaponsammo_stock[i];
|
||||
}
|
||||
|
||||
self.grief_savedweapon_weaponsammo_clip[i] += clip_missing;
|
||||
self.grief_savedweapon_weaponsammo_stock[i] -= clip_missing;
|
||||
}
|
||||
@ -1932,10 +1961,12 @@ grief_laststand_weapon_save( einflictor, attacker, idamage, smeansofdeath, sweap
|
||||
if (isDefined(self.grief_savedweapon_weaponsammo_clip_dualwield[i]) && weaponDualWieldWeaponName(self.grief_savedweapon_weapons[i]) != "none")
|
||||
{
|
||||
clip_dualwield_missing = weaponClipSize(weaponDualWieldWeaponName(self.grief_savedweapon_weapons[i])) - self.grief_savedweapon_weaponsammo_clip_dualwield[i];
|
||||
|
||||
if (clip_dualwield_missing > self.grief_savedweapon_weaponsammo_stock[i])
|
||||
{
|
||||
clip_dualwield_missing = self.grief_savedweapon_weaponsammo_stock[i];
|
||||
}
|
||||
|
||||
self.grief_savedweapon_weaponsammo_clip_dualwield[i] += clip_dualwield_missing;
|
||||
self.grief_savedweapon_weaponsammo_stock[i] -= clip_dualwield_missing;
|
||||
}
|
||||
@ -1943,10 +1974,12 @@ grief_laststand_weapon_save( einflictor, attacker, idamage, smeansofdeath, sweap
|
||||
if (isDefined(self.grief_savedweapon_weaponsammo_clip_alt[i]) && weaponAltWeaponName(self.grief_savedweapon_weapons[i]) != "none")
|
||||
{
|
||||
clip_alt_missing = weaponClipSize(weaponAltWeaponName(self.grief_savedweapon_weapons[i])) - self.grief_savedweapon_weaponsammo_clip_alt[i];
|
||||
|
||||
if (clip_alt_missing > self.grief_savedweapon_weaponsammo_stock_alt[i])
|
||||
{
|
||||
clip_alt_missing = self.grief_savedweapon_weaponsammo_stock_alt[i];
|
||||
}
|
||||
|
||||
self.grief_savedweapon_weaponsammo_clip_alt[i] += clip_alt_missing;
|
||||
self.grief_savedweapon_weaponsammo_stock_alt[i] -= clip_alt_missing;
|
||||
}
|
||||
@ -1987,6 +2020,7 @@ grief_laststand_weapons_return()
|
||||
if(isDefined(self.grief_savedperks))
|
||||
{
|
||||
self.perks_active = [];
|
||||
|
||||
foreach(perk in self.grief_savedperks)
|
||||
{
|
||||
self maps\mp\zombies\_zm_perks::give_perk(perk);
|
||||
@ -1996,6 +2030,7 @@ grief_laststand_weapons_return()
|
||||
|
||||
primary_weapons_returned = 0;
|
||||
i = 0;
|
||||
|
||||
while ( i < self.grief_savedweapon_weapons.size )
|
||||
{
|
||||
if ( isdefined( self.grief_savedweapon_grenades ) && self.grief_savedweapon_weapons[ i ] == self.grief_savedweapon_grenades || ( isdefined( self.grief_savedweapon_tactical ) && self.grief_savedweapon_weapons[ i ] == self.grief_savedweapon_tactical ) )
|
||||
@ -2037,6 +2072,7 @@ grief_laststand_weapons_return()
|
||||
self.grief_savedweapon_weaponsammo_stock[i] = 0;
|
||||
|
||||
dual_wield_name = weapondualwieldweaponname(self.grief_savedweapon_weapons[i]);
|
||||
|
||||
if( "none" != dual_wield_name )
|
||||
{
|
||||
if (used_amt >= self.grief_savedweapon_weaponsammo_clip_dualwield[i])
|
||||
@ -2253,6 +2289,7 @@ sudden_death()
|
||||
level.sudden_death = 1;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg( "Sudden Death!" );
|
||||
@ -2261,6 +2298,7 @@ sudden_death()
|
||||
|
||||
health = player.health;
|
||||
player setMaxHealth(player.maxhealth - 100);
|
||||
|
||||
if(player.health > health)
|
||||
{
|
||||
player.health = health;
|
||||
@ -2335,6 +2373,7 @@ func_should_drop_meat()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (player hasWeapon("item_meat_zm"))
|
||||
@ -2373,12 +2412,14 @@ save_teams_on_intermission()
|
||||
if (level.allow_teamchange)
|
||||
{
|
||||
players = get_players("axis");
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
axis_guids += player getguid() + " ";
|
||||
}
|
||||
|
||||
players = get_players("allies");
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
allies_guids += player getguid() + " ";
|
||||
@ -2387,6 +2428,7 @@ save_teams_on_intermission()
|
||||
else
|
||||
{
|
||||
players = array_randomize(get_players());
|
||||
|
||||
for (i = 0; i < players.size; i++)
|
||||
{
|
||||
if (i % 2 == 0)
|
||||
@ -2422,6 +2464,7 @@ race_check_for_kills()
|
||||
|
||||
amount = 1;
|
||||
special_score = undefined;
|
||||
|
||||
if (is_true(zombie.is_brutus))
|
||||
{
|
||||
amount = 10;
|
||||
@ -2516,6 +2559,7 @@ containment_think()
|
||||
next_zone = level.zones[next_zone_name];
|
||||
|
||||
zone_name_to_lock = zone_name;
|
||||
|
||||
if (zone_name == "zone_street_fountain")
|
||||
{
|
||||
zone_name_to_lock = "zone_street_lighteast";
|
||||
@ -2526,6 +2570,7 @@ containment_think()
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg("New containment zone!");
|
||||
@ -2548,6 +2593,7 @@ containment_think()
|
||||
if (containment_zones.size > 1)
|
||||
{
|
||||
spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
foreach(spawn_point in spawn_points)
|
||||
{
|
||||
if(spawn_point.script_noteworthy == zone_name_to_lock)
|
||||
@ -2567,6 +2613,7 @@ containment_think()
|
||||
foreach(player in players)
|
||||
{
|
||||
player_zone_name = player get_current_zone();
|
||||
|
||||
if(isDefined(player_zone_name) && player_zone_name == zone_name)
|
||||
{
|
||||
if(is_player_valid(player))
|
||||
@ -2596,6 +2643,7 @@ containment_think()
|
||||
if (containment_zones.size > 1 && show_next_obj_waypoint)
|
||||
{
|
||||
player_zone_name = player get_current_zone();
|
||||
|
||||
if (isDefined(player_zone_name) && player_zone_name == next_zone_name)
|
||||
{
|
||||
player containment_set_obj_waypoint_on_screen(1);
|
||||
@ -2616,6 +2664,7 @@ containment_think()
|
||||
if (team_diff > 0)
|
||||
{
|
||||
team = "axis";
|
||||
|
||||
if (get_players("allies").size < get_players("axis").size)
|
||||
{
|
||||
team = "allies";
|
||||
@ -2678,10 +2727,12 @@ containment_think()
|
||||
if(held_prev != "axis")
|
||||
{
|
||||
obj_time = 1000;
|
||||
|
||||
if(!isDefined(held_time["axis"]))
|
||||
{
|
||||
held_time["axis"] = getTime();
|
||||
}
|
||||
|
||||
held_time["allies"] = undefined;
|
||||
held_prev = "axis";
|
||||
|
||||
@ -2715,10 +2766,12 @@ containment_think()
|
||||
if(held_prev != "allies")
|
||||
{
|
||||
obj_time = 1000;
|
||||
|
||||
if(!isDefined(held_time["allies"]))
|
||||
{
|
||||
held_time["allies"] = getTime();
|
||||
}
|
||||
|
||||
held_time["axis"] = undefined;
|
||||
held_prev = "allies";
|
||||
|
||||
@ -2811,6 +2864,7 @@ containment_think()
|
||||
}
|
||||
|
||||
zombies = get_round_enemy_array();
|
||||
|
||||
if (isDefined(zombies))
|
||||
{
|
||||
for (i = 0; i < zombies.size; i++)
|
||||
@ -2823,6 +2877,7 @@ containment_think()
|
||||
}
|
||||
|
||||
spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
foreach(spawn_point in spawn_points)
|
||||
{
|
||||
if(spawn_point.script_noteworthy == zone_name_to_lock)
|
||||
@ -2912,6 +2967,7 @@ containment_get_zones()
|
||||
containment_set_obj_waypoint_on_screen(next_obj = false)
|
||||
{
|
||||
hud = self.obj_waypoint;
|
||||
|
||||
if (next_obj)
|
||||
{
|
||||
hud = self.next_obj_waypoint;
|
||||
@ -2936,6 +2992,7 @@ containment_set_obj_waypoint_on_screen(next_obj = false)
|
||||
containment_set_obj_waypoint_off_screen(zone_name, zone, next_obj = false)
|
||||
{
|
||||
hud = self.obj_waypoint;
|
||||
|
||||
if (next_obj)
|
||||
{
|
||||
hud = self.next_obj_waypoint;
|
||||
@ -3045,6 +3102,7 @@ meat_powerup_drop_think()
|
||||
wait 10;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg("Kill a zombie to drop the meat!");
|
||||
@ -3065,6 +3123,7 @@ meat_powerup_drop_think()
|
||||
if (!isDefined(level.meat_player))
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg("Meat dropped!");
|
||||
@ -3076,6 +3135,7 @@ meat_powerup_drop_think()
|
||||
level waittill("meat_inactive");
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg("Meat reset!");
|
||||
@ -3269,12 +3329,14 @@ increment_score(team, amount = 1, show_lead_msg = true, special_score)
|
||||
level endon("end_game");
|
||||
|
||||
encounters_team = "A";
|
||||
|
||||
if(team == "allies")
|
||||
{
|
||||
encounters_team = "B";
|
||||
}
|
||||
|
||||
level.grief_score[encounters_team] += amount;
|
||||
|
||||
if (level.grief_score[encounters_team] > get_gamemode_winning_score())
|
||||
{
|
||||
level.grief_score[encounters_team] = get_gamemode_winning_score();
|
||||
@ -3297,6 +3359,7 @@ increment_score(team, amount = 1, show_lead_msg = true, special_score)
|
||||
if(level.scr_zm_ui_gametype_obj == "zgrief")
|
||||
{
|
||||
players = get_players(team);
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg("Enemy Bled Out! [" + score_left + " Remaining]");
|
||||
@ -3332,6 +3395,7 @@ increment_score(team, amount = 1, show_lead_msg = true, special_score)
|
||||
}
|
||||
|
||||
players = get_players(team);
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
player thread show_grief_hud_msg(msg);
|
||||
@ -3346,6 +3410,7 @@ increment_score(team, amount = 1, show_lead_msg = true, special_score)
|
||||
level.prev_leader = encounters_team;
|
||||
|
||||
players = get_players();
|
||||
|
||||
foreach (player in players)
|
||||
{
|
||||
if (player.team == team)
|
||||
|
@ -93,15 +93,18 @@ buried_special_weapon_magicbox_check(weapon)
|
||||
{
|
||||
players = get_players();
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( is_player_valid( players[ i ], undefined, 1 ) && players[ i ] is_player_tactical_grenade( weapon ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -117,6 +120,7 @@ player_initial_spawn_override()
|
||||
// set new initial spawns to be same as respawns already on map
|
||||
ind = 0;
|
||||
respawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
for (i = 0; i < respawn_points.size; i++)
|
||||
{
|
||||
if (respawn_points[i].script_noteworthy == "zone_stables")
|
||||
@ -127,6 +131,7 @@ player_initial_spawn_override()
|
||||
}
|
||||
|
||||
respawn_array = getstructarray(respawn_points[ind].target, "targetname");
|
||||
|
||||
foreach (respawn in respawn_array)
|
||||
{
|
||||
struct = spawnStruct();
|
||||
@ -204,6 +209,7 @@ sloth_barricades_buyable()
|
||||
}
|
||||
|
||||
sloth_trigs = getentarray( "sloth_barricade", "targetname" );
|
||||
|
||||
foreach (trig in sloth_trigs)
|
||||
{
|
||||
if (isDefined(trig.script_noteworthy) && trig.script_noteworthy == "courtyard_fountain")
|
||||
@ -316,6 +322,7 @@ sloth_barricade_move()
|
||||
|
||||
num = randomintrange( 3, 5 );
|
||||
og_angles = self.angles;
|
||||
|
||||
for ( i = 0; i < num; i++ )
|
||||
{
|
||||
angles = og_angles + ( -5 + randomfloat( 10 ), -5 + randomfloat( 10 ), -5 + randomfloat( 10 ) );
|
||||
|
@ -57,9 +57,11 @@ init()
|
||||
door_changes()
|
||||
{
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
for ( i = 0; i < zombie_doors.size; i++ )
|
||||
{
|
||||
new_target = undefined;
|
||||
|
||||
if (zombie_doors[i].target == "pf1577_auto2497")
|
||||
{
|
||||
new_target = "pf1577_auto2496";
|
||||
@ -89,16 +91,20 @@ zombie_init_done()
|
||||
self.zombie_path_bad = 0;
|
||||
self thread maps\mp\zm_highrise_distance_tracking::escaped_zombies_cleanup_init();
|
||||
self thread maps\mp\zm_highrise::elevator_traverse_watcher();
|
||||
|
||||
if ( self.classname == "actor_zm_highrise_basic_03" )
|
||||
{
|
||||
health_bonus = int( self.maxhealth * 0.05 );
|
||||
self.maxhealth += health_bonus;
|
||||
|
||||
if ( self.headmodel == "c_zom_zombie_chinese_head3_helmet" )
|
||||
{
|
||||
self.maxhealth += health_bonus;
|
||||
}
|
||||
|
||||
self.health = self.maxhealth;
|
||||
}
|
||||
|
||||
self setphysparams( 15, 0, 48 );
|
||||
}
|
||||
|
||||
@ -126,12 +132,14 @@ highrise_respawn_override( revivee, return_struct )
|
||||
if ( isDefined( spawn_points[ j ].script_noteworthy ) )
|
||||
{
|
||||
zone = level.zones[ spawn_points[ j ].script_noteworthy ];
|
||||
|
||||
for ( k = 0; k < zone.volumes.size; k++ )
|
||||
{
|
||||
if ( players[ i ] istouching( zone.volumes[ k ] ) )
|
||||
{
|
||||
closest_group = j;
|
||||
spawn_location = maps\mp\zombies\_zm::get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct );
|
||||
|
||||
if ( isDefined( spawn_location ) )
|
||||
{
|
||||
return spawn_location;
|
||||
@ -246,6 +254,7 @@ elevator_call_think()
|
||||
while ( 1 )
|
||||
{
|
||||
cost_active = 0;
|
||||
|
||||
if ( !self.elevator.body.is_moving && self.elevator maps\mp\zm_highrise_elevators::elevator_is_on_floor( self.floor ) && !is_true( self.elevator.body.start_location_wait ) )
|
||||
{
|
||||
if ( !is_true( self.elevator.body.elevator_stop ) )
|
||||
|
@ -18,10 +18,12 @@ zombie_init_done()
|
||||
{
|
||||
self.meleedamage = 50;
|
||||
self.allowpain = 0;
|
||||
|
||||
if ( isDefined( self.script_parameters ) && self.script_parameters == "crater" )
|
||||
{
|
||||
self thread maps\mp\zm_nuked::zombie_crater_locomotion();
|
||||
}
|
||||
|
||||
self setphysparams( 15, 0, 48 );
|
||||
}
|
||||
|
||||
|
@ -89,6 +89,7 @@ door_changes()
|
||||
num = 0;
|
||||
targets = getentarray( "cellblock_start_door", "targetname" );
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
for ( i = 0; i < zombie_doors.size; i++ )
|
||||
{
|
||||
if ( isdefined( zombie_doors[i].target ) && zombie_doors[i].target == "cellblock_start_door" )
|
||||
@ -115,18 +116,22 @@ check_for_special_weapon_limit_exist(weapon)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
players = get_players();
|
||||
count = 0;
|
||||
|
||||
if ( weapon == "blundergat_zm" )
|
||||
{
|
||||
if ( self maps\mp\zombies\_zm_weapons::has_weapon_or_upgrade( "blundersplat_zm" ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( self afterlife_weapon_limit_check( "blundergat_zm" ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
limit = level.limited_weapons[ "blundergat_zm" ];
|
||||
}
|
||||
else
|
||||
@ -135,9 +140,12 @@ check_for_special_weapon_limit_exist(weapon)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
limit = level.limited_weapons[ "minigun_alcatraz_zm" ];
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
||||
while ( i < players.size )
|
||||
{
|
||||
if ( weapon == "blundergat_zm" )
|
||||
@ -156,12 +164,15 @@ check_for_special_weapon_limit_exist(weapon)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if ( count >= limit )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -778,6 +789,7 @@ working_zone_init()
|
||||
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_gondola" );
|
||||
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "gondola_dock_to_roof" );
|
||||
}
|
||||
|
||||
// else if ( is_gametype_active( "zgrief" ) )
|
||||
// {
|
||||
// playable_area = getentarray( "player_volume", "script_noteworthy" );
|
||||
|
@ -102,6 +102,7 @@ tomb_special_weapon_magicbox_check(weapon)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( level.zombie_weapons[ weapon ].shared_ammo_weapon ) )
|
||||
{
|
||||
if ( self maps\mp\zombies\_zm_weapons::has_weapon_or_upgrade( level.zombie_weapons[ weapon ].shared_ammo_weapon ) )
|
||||
@ -109,6 +110,7 @@ tomb_special_weapon_magicbox_check(weapon)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -125,24 +127,28 @@ register_melee_weapons_for_level()
|
||||
change_stargate_teleport_return_player_angles()
|
||||
{
|
||||
struct = getstructarray( "air_teleport_return", "targetname" );
|
||||
|
||||
foreach (pos in struct)
|
||||
{
|
||||
pos.angles = (0, -120, 0);
|
||||
}
|
||||
|
||||
struct = getstructarray( "elec_teleport_return", "targetname" );
|
||||
|
||||
foreach (pos in struct)
|
||||
{
|
||||
pos.angles = (0, 0, 0);
|
||||
}
|
||||
|
||||
struct = getstructarray( "fire_teleport_return", "targetname" );
|
||||
|
||||
foreach (pos in struct)
|
||||
{
|
||||
pos.angles = (0, -130, 0);
|
||||
}
|
||||
|
||||
struct = getstructarray( "ice_teleport_return", "targetname" );
|
||||
|
||||
foreach (pos in struct)
|
||||
{
|
||||
pos.angles = (0, -110, 0);
|
||||
@ -175,6 +181,7 @@ zombie_blood_dig_changes()
|
||||
for (i = 0; i < level.a_zombie_blood_entities.size; i++)
|
||||
{
|
||||
ent = level.a_zombie_blood_entities[i];
|
||||
|
||||
if (IsDefined(ent.e_unique_player))
|
||||
{
|
||||
if (!isDefined(ent.e_unique_player.initial_zombie_blood_dig))
|
||||
@ -183,6 +190,7 @@ zombie_blood_dig_changes()
|
||||
}
|
||||
|
||||
ent.e_unique_player.initial_zombie_blood_dig++;
|
||||
|
||||
if (ent.e_unique_player.initial_zombie_blood_dig <= 2)
|
||||
{
|
||||
ent setvisibletoplayer(ent.e_unique_player);
|
||||
@ -216,6 +224,7 @@ custom_magic_box_timer_til_despawn( magic_box )
|
||||
v_float = anglesToForward( magic_box.angles - vectorScale( ( 0, 1, 0 ), 90 ) ) * 40;
|
||||
self moveto( self.origin - ( v_float * 0.25 ), level.magicbox_timeout, level.magicbox_timeout * 0.5 );
|
||||
wait level.magicbox_timeout;
|
||||
|
||||
if ( isDefined( self ) )
|
||||
{
|
||||
self delete();
|
||||
|
@ -141,6 +141,7 @@ electric_door_changes()
|
||||
}
|
||||
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
for ( i = 0; i < zombie_doors.size; i++ )
|
||||
{
|
||||
if ( isDefined( zombie_doors[i].script_noteworthy ) && (zombie_doors[i].script_noteworthy == "local_electric_door" || zombie_doors[i].script_noteworthy == "electric_door") )
|
||||
@ -155,6 +156,7 @@ electric_door_changes()
|
||||
|
||||
// link Bus Depot and Farm electric doors together
|
||||
new_target = undefined;
|
||||
|
||||
if (zombie_doors[i].target == "pf1766_auto2353")
|
||||
{
|
||||
new_target = "pf1766_auto2352";
|
||||
@ -192,6 +194,7 @@ power_local_electric_doors_globally()
|
||||
|
||||
local_power = [];
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
|
||||
for ( i = 0; i < zombie_doors.size; i++ )
|
||||
{
|
||||
if ( isDefined( zombie_doors[i].script_noteworthy ) && zombie_doors[i].script_noteworthy == "local_electric_door" )
|
||||
@ -334,6 +337,7 @@ player_respawn_override()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group(origin, zone, dist);
|
||||
|
||||
respawn_array = [];
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
respawn_array[i] = spawnStruct();
|
||||
@ -376,6 +380,7 @@ player_respawn_override()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group(origin, zone, dist);
|
||||
|
||||
respawn_array = [];
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
respawn_array[i] = spawnStruct();
|
||||
@ -418,6 +423,7 @@ player_respawn_override()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group(origin, zone, dist);
|
||||
|
||||
respawn_array = [];
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
respawn_array[i] = spawnStruct();
|
||||
@ -460,6 +466,7 @@ player_respawn_override()
|
||||
scripts\zm\replaced\utility::register_map_spawn_group(origin, zone, dist);
|
||||
|
||||
respawn_array = [];
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
respawn_array[i] = spawnStruct();
|
||||
@ -595,6 +602,7 @@ power_station_vision_change()
|
||||
while(1)
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
foreach(player in players)
|
||||
{
|
||||
if(!isDefined(player.power_station_vision_set))
|
||||
@ -636,6 +644,7 @@ change_dvar_over_time(dvar, val, time, increment)
|
||||
rate = (level.changed_r_exposureValue - level.default_r_exposureValue) / intervals;
|
||||
|
||||
i = 0;
|
||||
|
||||
while(i < intervals)
|
||||
{
|
||||
if(increment)
|
||||
@ -730,10 +739,12 @@ manage_zones( initial_zone )
|
||||
deactivate_initial_barrier_goals();
|
||||
zone_choke = 0;
|
||||
spawn_points = maps\mp\gametypes_zm\_zm_gametype::get_player_spawns_for_gametype();
|
||||
|
||||
for ( i = 0; i < spawn_points.size; i++ )
|
||||
{
|
||||
spawn_points[ i ].locked = 1;
|
||||
}
|
||||
|
||||
if ( isDefined( level.zone_manager_init_func ) )
|
||||
{
|
||||
[[ level.zone_manager_init_func ]]();
|
||||
@ -752,17 +763,21 @@ manage_zones( initial_zone )
|
||||
zone_init( initial_zone );
|
||||
enable_zone( initial_zone );
|
||||
}
|
||||
|
||||
setup_zone_flag_waits();
|
||||
zkeys = getarraykeys( level.zones );
|
||||
level.zone_keys = zkeys;
|
||||
level.newzones = [];
|
||||
|
||||
for ( z = 0; z < zkeys.size; z++ )
|
||||
{
|
||||
level.newzones[ zkeys[ z ] ] = spawnstruct();
|
||||
}
|
||||
|
||||
oldzone = undefined;
|
||||
flag_set( "zones_initialized" );
|
||||
flag_wait( "begin_spawning" );
|
||||
|
||||
while ( getDvarInt( "noclip" ) == 0 || getDvarInt( "notarget" ) != 0 )
|
||||
{
|
||||
for( z = 0; z < zkeys.size; z++ )
|
||||
@ -770,19 +785,23 @@ manage_zones( initial_zone )
|
||||
level.newzones[ zkeys[ z ] ].is_active = 0;
|
||||
level.newzones[ zkeys[ z ] ].is_occupied = 0;
|
||||
}
|
||||
|
||||
a_zone_is_active = 0;
|
||||
a_zone_is_spawning_allowed = 0;
|
||||
level.zone_scanning_active = 1;
|
||||
z = 0;
|
||||
|
||||
while ( z < zkeys.size )
|
||||
{
|
||||
zone = level.zones[ zkeys[ z ] ];
|
||||
newzone = level.newzones[ zkeys[ z ] ];
|
||||
|
||||
if( !zone.is_enabled )
|
||||
{
|
||||
z++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isdefined(level.zone_occupied_func ) )
|
||||
{
|
||||
newzone.is_occupied = [[ level.zone_occupied_func ]]( zkeys[ z ] );
|
||||
@ -791,25 +810,31 @@ manage_zones( initial_zone )
|
||||
{
|
||||
newzone.is_occupied = player_in_zone( zkeys[ z ] );
|
||||
}
|
||||
|
||||
if ( newzone.is_occupied )
|
||||
{
|
||||
newzone.is_active = 1;
|
||||
a_zone_is_active = 1;
|
||||
|
||||
if ( zone.is_spawning_allowed )
|
||||
{
|
||||
a_zone_is_spawning_allowed = 1;
|
||||
}
|
||||
|
||||
if ( !isdefined(oldzone) || oldzone != newzone )
|
||||
{
|
||||
level notify( "newzoneActive", zkeys[ z ] );
|
||||
oldzone = newzone;
|
||||
}
|
||||
|
||||
azkeys = getarraykeys( zone.adjacent_zones );
|
||||
|
||||
for ( az = 0; az < zone.adjacent_zones.size; az++ )
|
||||
{
|
||||
if ( zone.adjacent_zones[ azkeys[ az ] ].is_connected && level.zones[ azkeys[ az ] ].is_enabled )
|
||||
{
|
||||
level.newzones[ azkeys[ az ] ].is_active = 1;
|
||||
|
||||
if ( level.zones[ azkeys[ az ] ].is_spawning_allowed )
|
||||
{
|
||||
a_zone_is_spawning_allowed = 1;
|
||||
@ -817,20 +842,26 @@ manage_zones( initial_zone )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zone_choke++;
|
||||
|
||||
if ( zone_choke >= 3 )
|
||||
{
|
||||
zone_choke = 0;
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
z++;
|
||||
}
|
||||
|
||||
level.zone_scanning_active = 0;
|
||||
|
||||
for ( z = 0; z < zkeys.size; z++ )
|
||||
{
|
||||
level.zones[ zkeys[ z ] ].is_active = level.newzones[ zkeys[ z ] ].is_active;
|
||||
level.zones[ zkeys[ z ] ].is_occupied = level.newzones[ zkeys[ z ] ].is_occupied;
|
||||
}
|
||||
|
||||
if ( !a_zone_is_active || !a_zone_is_spawning_allowed )
|
||||
{
|
||||
if ( isarray( initial_zone ) )
|
||||
@ -846,6 +877,7 @@ manage_zones( initial_zone )
|
||||
level.zones[ initial_zone ].is_spawning_allowed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
[[ level.create_spawner_list_func ]]( zkeys );
|
||||
level.active_zone_names = maps\mp\zombies\_zm_zonemgr::get_active_zone_names();
|
||||
wait 1;
|
||||
|
Reference in New Issue
Block a user