mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-10 02:37:59 -05:00
checked 3 more scripts and added them to the untested category
Once all scripts in patch_zm/maps/mp/zombies have been checked the testing phase will begin.
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
#include maps/mp/_utility;
|
||||
#include common_scripts/utility;
|
||||
|
||||
register_game_module( index, module_name, pre_init_func, post_init_func, pre_init_zombie_spawn_func, post_init_zombie_spawn_func, hub_start_func )
|
||||
register_game_module( index, module_name, pre_init_func, post_init_func, pre_init_zombie_spawn_func, post_init_zombie_spawn_func, hub_start_func ) //checked partially changed to match cerberus output //did not change while loop to for loop to prevent the infinite loop bu caused by continues
|
||||
{
|
||||
if ( !isDefined( level._game_modules ) )
|
||||
{
|
||||
@ -20,14 +20,13 @@ register_game_module( index, module_name, pre_init_func, post_init_func, pre_ini
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isDefined( level._game_modules[ i ].index ) && level._game_modules[ i ].index == index )
|
||||
{
|
||||
/*
|
||||
/#
|
||||
assert( level._game_modules[ i ].index != index, "A Game module is already registered for index (" + index + ")" );
|
||||
#/
|
||||
}
|
||||
*/
|
||||
}
|
||||
i++;
|
||||
}
|
||||
@ -42,7 +41,7 @@ register_game_module( index, module_name, pre_init_func, post_init_func, pre_ini
|
||||
level._num_registered_game_modules++;
|
||||
}
|
||||
|
||||
set_current_game_module( game_module_index )
|
||||
set_current_game_module( game_module_index ) //checked matches cerberus output
|
||||
{
|
||||
if ( !isDefined( game_module_index ) )
|
||||
{
|
||||
@ -53,38 +52,38 @@ set_current_game_module( game_module_index )
|
||||
game_module = get_game_module( game_module_index );
|
||||
if ( !isDefined( game_module ) )
|
||||
{
|
||||
/*
|
||||
/#
|
||||
assert( isDefined( game_module ), "unknown game module (" + game_module_index + ")" );
|
||||
#/
|
||||
*/
|
||||
return;
|
||||
}
|
||||
level.current_game_module = game_module_index;
|
||||
}
|
||||
|
||||
get_current_game_module()
|
||||
get_current_game_module() //checked matches cerberus output
|
||||
{
|
||||
return get_game_module( level.current_game_module );
|
||||
}
|
||||
|
||||
get_game_module( game_module_index )
|
||||
get_game_module( game_module_index ) //checked changed to match cerberus output
|
||||
{
|
||||
if ( !isDefined( game_module_index ) )
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
i = 0;
|
||||
while ( i < level._game_modules.size )
|
||||
for ( i = 0; i < level._game_modules.size; i++ )
|
||||
{
|
||||
if ( level._game_modules[ i ].index == game_module_index )
|
||||
{
|
||||
return level._game_modules[ i ];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
game_module_pre_zombie_spawn_init()
|
||||
game_module_pre_zombie_spawn_init() //checked matches cerberus output
|
||||
{
|
||||
current_module = get_current_game_module();
|
||||
if ( !isDefined( current_module ) || !isDefined( current_module.pre_init_zombie_spawn_func ) )
|
||||
@ -94,7 +93,7 @@ game_module_pre_zombie_spawn_init()
|
||||
self [[ current_module.pre_init_zombie_spawn_func ]]();
|
||||
}
|
||||
|
||||
game_module_post_zombie_spawn_init()
|
||||
game_module_post_zombie_spawn_init() //checked matches cerberus output
|
||||
{
|
||||
current_module = get_current_game_module();
|
||||
if ( !isDefined( current_module ) || !isDefined( current_module.post_init_zombie_spawn_func ) )
|
||||
@ -104,69 +103,57 @@ game_module_post_zombie_spawn_init()
|
||||
self [[ current_module.post_init_zombie_spawn_func ]]();
|
||||
}
|
||||
|
||||
kill_all_zombies()
|
||||
kill_all_zombies() //checked changed to match cerberus output
|
||||
{
|
||||
ai = get_round_enemy_array();
|
||||
_a115 = ai;
|
||||
_k115 = getFirstArrayKey( _a115 );
|
||||
while ( isDefined( _k115 ) )
|
||||
foreach ( zombie in ai )
|
||||
{
|
||||
zombie = _a115[ _k115 ];
|
||||
if ( isDefined( zombie ) )
|
||||
{
|
||||
zombie dodamage( zombie.maxhealth * 2, zombie.origin, zombie, zombie, "none", "MOD_SUICIDE" );
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
_k115 = getNextArrayKey( _a115, _k115 );
|
||||
}
|
||||
}
|
||||
|
||||
freeze_players( freeze )
|
||||
freeze_players( freeze ) //checked changed to match cerberus output
|
||||
{
|
||||
players = get_players();
|
||||
i = 0;
|
||||
while ( i < players.size )
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
players[ i ] freeze_player_controls( freeze );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
turn_power_on_and_open_doors()
|
||||
turn_power_on_and_open_doors() //checked changed at own discretion
|
||||
{
|
||||
level.local_doors_stay_open = 1;
|
||||
level.power_local_doors_globally = 1;
|
||||
flag_set( "power_on" );
|
||||
level setclientfield( "zombie_power_on", 1 );
|
||||
zombie_doors = getentarray( "zombie_door", "targetname" );
|
||||
_a144 = zombie_doors;
|
||||
_k144 = getFirstArrayKey( _a144 );
|
||||
while ( isDefined( _k144 ) )
|
||||
i = 0;
|
||||
while ( i < zombie_doors.size )
|
||||
{
|
||||
door = _a144[ _k144 ];
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" )
|
||||
{
|
||||
door notify( "power_on" );
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" )
|
||||
{
|
||||
door notify( "local_power_on" );
|
||||
}
|
||||
}
|
||||
_k144 = getNextArrayKey( _a144, _k144 );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
respawn_spectators_and_freeze_players()
|
||||
respawn_spectators_and_freeze_players() //checked changed to match cerberus output
|
||||
{
|
||||
players = get_players();
|
||||
_a161 = players;
|
||||
_k161 = getFirstArrayKey( _a161 );
|
||||
while ( isDefined( _k161 ) )
|
||||
foreach ( player in players )
|
||||
{
|
||||
player = _a161[ _k161 ];
|
||||
if ( player.sessionstate == "spectator" )
|
||||
{
|
||||
if ( isDefined( player.spectate_hud ) )
|
||||
@ -176,11 +163,10 @@ respawn_spectators_and_freeze_players()
|
||||
player [[ level.spawnplayer ]]();
|
||||
}
|
||||
player freeze_player_controls( 1 );
|
||||
_k161 = getNextArrayKey( _a161, _k161 );
|
||||
}
|
||||
}
|
||||
|
||||
damage_callback_no_pvp_damage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime )
|
||||
damage_callback_no_pvp_damage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) //checked matches cerberus output
|
||||
{
|
||||
if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker == self )
|
||||
{
|
||||
@ -197,21 +183,17 @@ damage_callback_no_pvp_damage( einflictor, eattacker, idamage, idflags, smeansof
|
||||
return 0;
|
||||
}
|
||||
|
||||
respawn_players()
|
||||
respawn_players() //checked changed to match cerberus output
|
||||
{
|
||||
players = get_players();
|
||||
_a196 = players;
|
||||
_k196 = getFirstArrayKey( _a196 );
|
||||
while ( isDefined( _k196 ) )
|
||||
foreach ( player in players )
|
||||
{
|
||||
player = _a196[ _k196 ];
|
||||
player [[ level.spawnplayer ]]();
|
||||
player freeze_player_controls( 1 );
|
||||
_k196 = getNextArrayKey( _a196, _k196 );
|
||||
}
|
||||
}
|
||||
|
||||
zombie_goto_round( target_round )
|
||||
zombie_goto_round( target_round ) //checked changed to match cerberus output
|
||||
{
|
||||
level notify( "restart_round" );
|
||||
if ( target_round < 1 )
|
||||
@ -221,20 +203,18 @@ zombie_goto_round( target_round )
|
||||
level.zombie_total = 0;
|
||||
maps/mp/zombies/_zm::ai_calculate_health( target_round );
|
||||
zombies = get_round_enemy_array();
|
||||
while ( isDefined( zombies ) )
|
||||
if ( isDefined( zombies ) )
|
||||
{
|
||||
i = 0;
|
||||
while ( i < zombies.size )
|
||||
for ( i = 0; i < zombies.size; i++ )
|
||||
{
|
||||
zombies[ i ] dodamage( zombies[ i ].health + 666, zombies[ i ].origin );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
respawn_players();
|
||||
wait 1;
|
||||
}
|
||||
|
||||
wait_for_team_death_and_round_end()
|
||||
wait_for_team_death_and_round_end() //checked partially changed to match cerberus output //did not use foreach with continue to prevent continue bug
|
||||
{
|
||||
level endon( "game_module_ended" );
|
||||
level endon( "end_game" );
|
||||
@ -245,33 +225,31 @@ wait_for_team_death_and_round_end()
|
||||
cdc_alive = 0;
|
||||
cia_alive = 0;
|
||||
players = get_players();
|
||||
_a244 = players;
|
||||
_k244 = getFirstArrayKey( _a244 );
|
||||
while ( isDefined( _k244 ) )
|
||||
while ( i < players.size )
|
||||
{
|
||||
player = _a244[ _k244 ];
|
||||
if ( !isDefined( player._encounters_team ) )
|
||||
if ( !isDefined( players[ i ]._encounters_team ) )
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else if ( player._encounters_team == "A" )
|
||||
if ( players[ i ]._encounters_team == "A" )
|
||||
{
|
||||
if ( is_player_valid( player ) )
|
||||
if ( is_player_valid( players[ i ] ) )
|
||||
{
|
||||
cia_alive++;
|
||||
}
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( is_player_valid( player ) )
|
||||
if ( is_player_valid( players[ i ] ) )
|
||||
{
|
||||
cdc_alive++;
|
||||
}
|
||||
}
|
||||
_k244 = getNextArrayKey( _a244, _k244 );
|
||||
i++;
|
||||
}
|
||||
if ( cia_alive == 0 && cdc_alive == 0 && !level.isresetting_grief && isDefined( level.host_ended_game ) && !level.host_ended_game )
|
||||
{
|
||||
wait 0,5;
|
||||
wait 0.5;
|
||||
if ( isDefined( level._grief_reset_message ) )
|
||||
{
|
||||
level thread [[ level._grief_reset_message ]]();
|
||||
@ -285,42 +263,35 @@ wait_for_team_death_and_round_end()
|
||||
level thread reset_grief();
|
||||
level thread maps/mp/zombies/_zm::round_think( 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !checking_for_round_end )
|
||||
else if ( !checking_for_round_end )
|
||||
{
|
||||
if ( cia_alive == 0 )
|
||||
{
|
||||
level thread check_for_round_end( "B" );
|
||||
checking_for_round_end = 1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( cdc_alive == 0 )
|
||||
else if ( cdc_alive == 0 )
|
||||
{
|
||||
level thread check_for_round_end( "A" );
|
||||
checking_for_round_end = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( cia_alive > 0 && cdc_alive > 0 )
|
||||
{
|
||||
level notify( "stop_round_end_check" );
|
||||
checking_for_round_end = 0;
|
||||
}
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
reset_grief()
|
||||
reset_grief() //checked matches cerberus output
|
||||
{
|
||||
wait 1;
|
||||
level.isresetting_grief = 0;
|
||||
}
|
||||
|
||||
check_for_round_end( winner )
|
||||
check_for_round_end( winner ) //checked partially changed to match cerberus output //did not change while loop to for loop to prevent the infinite loop continue bug
|
||||
{
|
||||
level endon( "keep_griefing" );
|
||||
level endon( "stop_round_end_check" );
|
||||
@ -338,19 +309,16 @@ check_for_round_end( winner )
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
players[ i ] thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "grief_lost" );
|
||||
}
|
||||
i++;
|
||||
}
|
||||
level notify( "game_module_ended" );
|
||||
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 );
|
||||
level notify( "end_game" );
|
||||
}
|
||||
|
||||
wait_for_team_death()
|
||||
wait_for_team_death() //checked partially changed to match cerberus output //did not change while loop to foreach with continue to prevent infinite loop bug
|
||||
{
|
||||
wait 15;
|
||||
winner = undefined;
|
||||
@ -359,49 +327,42 @@ wait_for_team_death()
|
||||
cdc_alive = 0;
|
||||
cia_alive = 0;
|
||||
players = get_players();
|
||||
_a418 = players;
|
||||
_k418 = getFirstArrayKey( _a418 );
|
||||
while ( isDefined( _k418 ) )
|
||||
while ( i < players.size )
|
||||
{
|
||||
player = _a418[ _k418 ];
|
||||
if ( player._encounters_team == "A" )
|
||||
if ( players[ i ]._encounters_team == "A" )
|
||||
{
|
||||
if ( is_player_valid( player ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( player.lives ) && player.lives > 0 )
|
||||
if ( is_player_valid( players[ i ] ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( players[ i ].lives ) && players[ i ].lives > 0 )
|
||||
{
|
||||
cia_alive++;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( is_player_valid( player ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( player.lives ) && player.lives > 0 )
|
||||
if ( is_player_valid( players[ i ] ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( players[ i ].lives ) && players[ i ].lives > 0 )
|
||||
{
|
||||
cdc_alive++;
|
||||
}
|
||||
}
|
||||
_k418 = getNextArrayKey( _a418, _k418 );
|
||||
i++;
|
||||
}
|
||||
if ( cia_alive == 0 )
|
||||
{
|
||||
winner = "B";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( cdc_alive == 0 )
|
||||
else if ( cdc_alive == 0 )
|
||||
{
|
||||
winner = "A";
|
||||
}
|
||||
wait 0.05;
|
||||
}
|
||||
wait 0,05;
|
||||
}
|
||||
level notify( "game_module_ended" );
|
||||
level notify( "game_module_ended", winner );
|
||||
}
|
||||
|
||||
make_supersprinter()
|
||||
make_supersprinter() //checked matches cerberus output
|
||||
{
|
||||
self set_zombie_run_cycle( "super_sprint" );
|
||||
}
|
||||
|
||||
game_module_custom_intermission( intermission_struct )
|
||||
game_module_custom_intermission( intermission_struct ) //checked matches cerberus output
|
||||
{
|
||||
self closemenu();
|
||||
self closeingamemenu();
|
||||
@ -444,7 +405,7 @@ game_module_custom_intermission( intermission_struct )
|
||||
self.game_over_bg thread maps/mp/zombies/_zm::fade_up_over_time( 1 );
|
||||
}
|
||||
|
||||
create_fireworks( launch_spots, min_wait, max_wait, randomize )
|
||||
create_fireworks( launch_spots, min_wait, max_wait, randomize ) //checked changed to match cerberus output
|
||||
{
|
||||
level endon( "stop_fireworks" );
|
||||
while ( 1 )
|
||||
@ -453,26 +414,22 @@ create_fireworks( launch_spots, min_wait, max_wait, randomize )
|
||||
{
|
||||
launch_spots = array_randomize( launch_spots );
|
||||
}
|
||||
_a516 = launch_spots;
|
||||
_k516 = getFirstArrayKey( _a516 );
|
||||
while ( isDefined( _k516 ) )
|
||||
foreach ( spot in launch_spots )
|
||||
{
|
||||
spot = _a516[ _k516 ];
|
||||
level thread fireworks_launch( spot );
|
||||
wait randomfloatrange( min_wait, max_wait );
|
||||
_k516 = getNextArrayKey( _a516, _k516 );
|
||||
}
|
||||
wait randomfloatrange( min_wait, max_wait );
|
||||
}
|
||||
}
|
||||
|
||||
fireworks_launch( launch_spot )
|
||||
fireworks_launch( launch_spot ) //checked matches cerberus output
|
||||
{
|
||||
firework = spawn( "script_model", launch_spot.origin + ( randomintrange( -60, 60 ), randomintrange( -60, 60 ), 0 ) );
|
||||
firework setmodel( "tag_origin" );
|
||||
wait_network_frame();
|
||||
playfxontag( level._effect[ "fw_trail_cheap" ], firework, "tag_origin" );
|
||||
firework playloopsound( "zmb_souls_loop", 0,75 );
|
||||
firework playloopsound( "zmb_souls_loop", 0.75 );
|
||||
dest = launch_spot;
|
||||
while ( isDefined( dest ) && isDefined( dest.target ) )
|
||||
{
|
||||
@ -489,3 +446,4 @@ fireworks_launch( launch_spot )
|
||||
playfx( level._effect[ "fw_pre_burst" ], firework.origin );
|
||||
firework delete();
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include maps/mp/_utility;
|
||||
#include common_scripts/utility;
|
||||
|
||||
init()
|
||||
init() //checked matches cerberus output
|
||||
{
|
||||
level.trap_kills = 0;
|
||||
traps = getentarray( "zombie_trap", "targetname" );
|
||||
@ -19,7 +19,7 @@ init()
|
||||
level.elec_trap_cooldown_time = 60;
|
||||
}
|
||||
|
||||
trap_init()
|
||||
trap_init() //checked partially changed to match cerberus output //did not change for loop to while loop to prevent infinite loop bug caused by continue in a for loop
|
||||
{
|
||||
self ent_flag_init( "flag_active" );
|
||||
self ent_flag_init( "flag_cooldown" );
|
||||
@ -30,10 +30,7 @@ trap_init()
|
||||
if ( isDefined( level._zombiemode_trap_activate_funcs ) && isDefined( level._zombiemode_trap_activate_funcs[ self._trap_type ] ) )
|
||||
{
|
||||
self._trap_activate_func = level._zombiemode_trap_activate_funcs[ self._trap_type ];
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch( self.script_noteworthy )
|
||||
{
|
||||
case "rotating":
|
||||
@ -49,7 +46,6 @@ trap_init()
|
||||
default:
|
||||
self._trap_activate_func = ::trap_activate_fire;
|
||||
}
|
||||
}
|
||||
if ( isDefined( level._zombiemode_trap_use_funcs ) && isDefined( level._zombiemode_trap_use_funcs[ self._trap_type ] ) )
|
||||
{
|
||||
self._trap_use_func = level._zombiemode_trap_use_funcs[ self._trap_type ];
|
||||
@ -65,8 +61,7 @@ self._trap_lights = [];
|
||||
self._trap_movers = [];
|
||||
self._trap_switches = [];
|
||||
components = getentarray( self.target, "targetname" );
|
||||
i = 0;
|
||||
while ( i < components.size )
|
||||
for ( i = 0; i < components.size; i++ )
|
||||
{
|
||||
if ( isDefined( components[ i ].script_noteworthy ) )
|
||||
{
|
||||
@ -75,33 +70,21 @@ while ( i < components.size )
|
||||
case "counter_1s":
|
||||
self.counter_1s = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "counter_10s":
|
||||
self.counter_10s = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "counter_100s":
|
||||
self.counter_100s = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "mover":
|
||||
self._trap_movers[ self._trap_movers.size ] = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "switch":
|
||||
self._trap_switches[ self._trap_switches.size ] = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "light":
|
||||
self._trap_lightes[ self._trap_lightes.size ] = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( isDefined( components[ i ].script_string ) )
|
||||
@ -111,38 +94,24 @@ while ( i < components.size )
|
||||
case "flipper1":
|
||||
self.flipper1 = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "flipper2":
|
||||
self.flipper2 = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "flipper1_radius_check":
|
||||
self.flipper1_radius_check = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "flipper2_radius_check":
|
||||
self.flipper2_radius_check = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "target1":
|
||||
self.target1 = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "target2":
|
||||
self.target2 = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "target3":
|
||||
self.target3 = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
switch( components[ i ].classname )
|
||||
@ -150,8 +119,6 @@ while ( i < components.size )
|
||||
case "trigger_use":
|
||||
self._trap_use_trigs[ self._trap_use_trigs.size ] = components[ i ];
|
||||
break;
|
||||
i++;
|
||||
continue;
|
||||
case "script_model":
|
||||
if ( components[ i ].model == self._trap_light_model_off )
|
||||
{
|
||||
@ -162,7 +129,6 @@ while ( i < components.size )
|
||||
self._trap_switches[ self._trap_switches.size ] = components[ i ];
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
self._trap_fx_structs = [];
|
||||
components = getstructarray( self.target, "targetname" );
|
||||
@ -175,15 +141,14 @@ while ( i < components.size )
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
self._trap_fx_structs[ self._trap_fx_structs.size ] = components[ i ];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
/*
|
||||
/#
|
||||
assert( self._trap_use_trigs.size > 0, "_zm_traps::init no use triggers found for " + self.target );
|
||||
#/
|
||||
*/
|
||||
if ( !isDefined( self.zombie_cost ) )
|
||||
{
|
||||
self.zombie_cost = 1000;
|
||||
@ -193,43 +158,34 @@ self._trap_cooling_down = 0;
|
||||
self thread trap_dialog();
|
||||
flag_wait( "start_zombie_round_logic" );
|
||||
self trap_lights_red();
|
||||
i = 0;
|
||||
while ( i < self._trap_use_trigs.size )
|
||||
for ( i = 0; i < self._trap_use_trigs.size; i++ )
|
||||
{
|
||||
self._trap_use_trigs[ i ] setcursorhint( "HINT_NOICON" );
|
||||
i++;
|
||||
}
|
||||
if ( !isDefined( self.script_flag_wait ) )
|
||||
{
|
||||
self trap_set_string( &"ZOMBIE_NEED_POWER" );
|
||||
flag_wait( "power_on" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !isDefined( level.flag[ self.script_flag_wait ] ) )
|
||||
else if ( !isDefined( level.flag[ self.script_flag_wait ] ) )
|
||||
{
|
||||
flag_init( self.script_flag_wait );
|
||||
}
|
||||
flag_wait( self.script_flag_wait );
|
||||
}
|
||||
self trap_set_string( &"ZOMBIE_BUTTON_BUY_TRAP", self.zombie_cost );
|
||||
self trap_lights_green();
|
||||
i = 0;
|
||||
while ( i < self._trap_use_trigs.size )
|
||||
for ( i = 0; i < self._trap_use_trigs.size; i++ )
|
||||
{
|
||||
self._trap_use_trigs[ i ] thread [[ self._trap_use_func ]]( self );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
trap_use_think( trap )
|
||||
{
|
||||
for ( ;; )
|
||||
trap_use_think( trap ) //checked changed to match cerberus output
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
self waittill( "trigger", who );
|
||||
while ( who in_revive_trigger() )
|
||||
if ( who in_revive_trigger() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -238,11 +194,10 @@ trap_use_think( trap )
|
||||
if ( who.score >= trap.zombie_cost )
|
||||
{
|
||||
who maps/mp/zombies/_zm_score::minus_to_player_score( trap.zombie_cost );
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
continue;
|
||||
}
|
||||
trap._trap_in_use = 1;
|
||||
trap trap_set_string( &"ZOMBIE_TRAP_ACTIVE" );
|
||||
@ -258,12 +213,14 @@ trap_use_think( trap )
|
||||
trap trigger_off();
|
||||
trap._trap_cooling_down = 1;
|
||||
trap trap_set_string( &"ZOMBIE_TRAP_COOLDOWN" );
|
||||
/*
|
||||
/#
|
||||
if ( getDvarInt( "zombie_cheat" ) >= 1 )
|
||||
{
|
||||
trap._trap_cooldown_time = 5;
|
||||
#/
|
||||
}
|
||||
*/
|
||||
wait trap._trap_cooldown_time;
|
||||
trap._trap_cooling_down = 0;
|
||||
trap notify( "available" );
|
||||
@ -273,10 +230,9 @@ trap_use_think( trap )
|
||||
}
|
||||
}
|
||||
|
||||
trap_lights_red()
|
||||
trap_lights_red() //checked changed to match cerberus output
|
||||
{
|
||||
i = 0;
|
||||
while ( i < self._trap_lights.size )
|
||||
for ( i = 0; i < self._trap_lights.size; i++ )
|
||||
{
|
||||
light = self._trap_lights[ i ];
|
||||
light setmodel( self._trap_light_model_red );
|
||||
@ -288,11 +244,10 @@ trap_lights_red()
|
||||
light.fx setmodel( "tag_origin" );
|
||||
light.fx.angles = light.angles;
|
||||
playfxontag( level._effect[ "zapper_light_notready" ], light.fx, "tag_origin" );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
trap_lights_green()
|
||||
trap_lights_green() //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop bug
|
||||
{
|
||||
i = 0;
|
||||
while ( i < self._trap_lights.size )
|
||||
@ -303,8 +258,6 @@ trap_lights_green()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
light setmodel( self._trap_light_model_green );
|
||||
if ( isDefined( light.fx ) )
|
||||
{
|
||||
@ -314,12 +267,11 @@ trap_lights_green()
|
||||
light.fx setmodel( "tag_origin" );
|
||||
light.fx.angles = light.angles;
|
||||
playfxontag( level._effect[ "zapper_light_ready" ], light.fx, "tag_origin" );
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
trap_set_string( string, param1, param2 )
|
||||
trap_set_string( string, param1, param2 ) //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop bug with continues
|
||||
{
|
||||
i = 0;
|
||||
while ( i < self._trap_use_trigs.size )
|
||||
@ -330,44 +282,37 @@ trap_set_string( string, param1, param2 )
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else if ( !isDefined( param2 ) )
|
||||
if ( !isDefined( param2 ) )
|
||||
{
|
||||
self._trap_use_trigs[ i ] sethintstring( string, param1 );
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
self._trap_use_trigs[ i ] sethintstring( string, param1, param2 );
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
trap_move_switches()
|
||||
trap_move_switches() //checked checked changed to match cerberus output
|
||||
{
|
||||
self trap_lights_red();
|
||||
i = 0;
|
||||
while ( i < self._trap_switches.size )
|
||||
for ( i = 0; i < self._trap_switches.size; i++ )
|
||||
{
|
||||
self._trap_switches[ i ] rotatepitch( 180, 0,5 );
|
||||
self._trap_switches[ i ] playsound( "amb_sparks_l_b" );
|
||||
i++;
|
||||
}
|
||||
self._trap_switches[ 0 ] waittill( "rotatedone" );
|
||||
self notify( "switch_activated" );
|
||||
self waittill( "available" );
|
||||
i = 0;
|
||||
while ( i < self._trap_switches.size )
|
||||
for ( i = 0; i < self._trap_switches.size; i++ )
|
||||
{
|
||||
self._trap_switches[ i ] rotatepitch( -180, 0,5 );
|
||||
i++;
|
||||
}
|
||||
self._trap_switches[ 0 ] waittill( "rotatedone" );
|
||||
self trap_lights_green();
|
||||
}
|
||||
|
||||
trap_activate_electric()
|
||||
trap_activate_electric() //checked changed to match cerberus output
|
||||
{
|
||||
self._trap_duration = 40;
|
||||
self._trap_cooldown_time = 60;
|
||||
@ -385,12 +330,10 @@ trap_activate_electric()
|
||||
}
|
||||
}
|
||||
fx_points = getstructarray( self.target, "targetname" );
|
||||
i = 0;
|
||||
while ( i < fx_points.size )
|
||||
for ( i = 0; i < fx_points.size; i++ )
|
||||
{
|
||||
wait_network_frame();
|
||||
fx_points[ i ] thread trap_audio_fx( self );
|
||||
i++;
|
||||
}
|
||||
self thread trap_damage();
|
||||
wait self._trap_duration;
|
||||
@ -401,19 +344,17 @@ trap_activate_electric()
|
||||
}
|
||||
}
|
||||
|
||||
trap_activate_fire()
|
||||
trap_activate_fire() //checked changed to match cerberus output
|
||||
{
|
||||
self._trap_duration = 40;
|
||||
self._trap_cooldown_time = 60;
|
||||
clientnotify( self.script_string + "1" );
|
||||
clientnotify( self.script_parameters );
|
||||
fx_points = getstructarray( self.target, "targetname" );
|
||||
i = 0;
|
||||
while ( i < fx_points.size )
|
||||
while ( i = 0; i < fx_points.size; i++ )
|
||||
{
|
||||
wait_network_frame();
|
||||
fx_points[ i ] thread trap_audio_fx( self );
|
||||
i++;
|
||||
}
|
||||
self thread trap_damage();
|
||||
wait self._trap_duration;
|
||||
@ -422,7 +363,7 @@ trap_activate_fire()
|
||||
clientnotify( self.script_parameters );
|
||||
}
|
||||
|
||||
trap_activate_rotating()
|
||||
trap_activate_rotating() //checked partially changed to match cerberus output
|
||||
{
|
||||
self endon( "trap_done" );
|
||||
self._trap_duration = 30;
|
||||
@ -430,47 +371,39 @@ trap_activate_rotating()
|
||||
self thread trap_damage();
|
||||
self thread trig_update( self._trap_movers[ 0 ] );
|
||||
old_angles = self._trap_movers[ 0 ].angles;
|
||||
i = 0;
|
||||
while ( i < self._trap_movers.size )
|
||||
for ( i = 0; i < self._trap_movers.size; i++ )
|
||||
{
|
||||
self._trap_movers[ i ] rotateyaw( 360, 5, 4,5 );
|
||||
i++;
|
||||
self._trap_movers[ i ] rotateyaw( 360, 5, 4.5 );
|
||||
}
|
||||
wait 5;
|
||||
step = 1,5;
|
||||
step = 1.5;
|
||||
t = 0;
|
||||
while ( t < self._trap_duration )
|
||||
while ( t < self._trap_duration ) //this would not make sense as a for loop leaving as a while loop
|
||||
{
|
||||
i = 0;
|
||||
while ( i < self._trap_movers.size )
|
||||
for ( i = 0; i < self._trap_movers.size; i++ )
|
||||
{
|
||||
self._trap_movers[ i ] rotateyaw( 360, step );
|
||||
i++;
|
||||
}
|
||||
wait step;
|
||||
t += step;
|
||||
}
|
||||
i = 0;
|
||||
while ( i < self._trap_movers.size )
|
||||
for ( i = 0; i < self._trap_movers.size i++ )
|
||||
{
|
||||
self._trap_movers[ i ] rotateyaw( 360, 5, 0, 4,5 );
|
||||
i++;
|
||||
self._trap_movers[ i ] rotateyaw( 360, 5, 0, 4.5 );
|
||||
}
|
||||
wait 5;
|
||||
i = 0;
|
||||
while ( i < self._trap_movers.size )
|
||||
for ( i = 0; i < self._trap_movers.size; i++ )
|
||||
{
|
||||
self._trap_movers[ i ].angles = old_angles;
|
||||
i++;
|
||||
}
|
||||
self notify( "trap_done" );
|
||||
}
|
||||
|
||||
trap_activate_flipper()
|
||||
trap_activate_flipper() //checked matches cerberus output
|
||||
{
|
||||
}
|
||||
|
||||
trap_audio_fx( trap )
|
||||
trap_audio_fx( trap ) //checked matches cerberus output
|
||||
{
|
||||
sound_origin = undefined;
|
||||
if ( trap.script_noteworthy == "electric" )
|
||||
@ -497,22 +430,22 @@ trap_audio_fx( trap )
|
||||
playsoundatposition( "zmb_firetrap_end", sound_origin.origin );
|
||||
}
|
||||
sound_origin stoploopsound();
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
sound_origin delete();
|
||||
}
|
||||
}
|
||||
|
||||
play_electrical_sound( trap )
|
||||
play_electrical_sound( trap ) //checked matches cerberus output
|
||||
{
|
||||
trap endon( "trap_done" );
|
||||
while ( 1 )
|
||||
{
|
||||
wait randomfloatrange( 0,1, 0,5 );
|
||||
wait randomfloatrange( 0.1, 0.5 );
|
||||
playsoundatposition( "zmb_elec_arc", self.origin );
|
||||
}
|
||||
}
|
||||
|
||||
trap_damage()
|
||||
trap_damage() //checked partially changed to match cerberus output
|
||||
{
|
||||
self endon( "trap_done" );
|
||||
while ( 1 )
|
||||
@ -537,8 +470,7 @@ trap_damage()
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
continue;
|
||||
//break; //this doesn't make much sense commenting out
|
||||
}
|
||||
else if ( !isDefined( ent.marked_for_death ) )
|
||||
{
|
||||
@ -557,24 +489,23 @@ trap_damage()
|
||||
default:
|
||||
ent thread zombie_trap_death( self, randomint( 100 ) );
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
trig_update( parent )
|
||||
trig_update( parent ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "trap_done" );
|
||||
start_angles = self.angles;
|
||||
while ( 1 )
|
||||
{
|
||||
self.angles = parent.angles;
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
player_elec_damage()
|
||||
player_elec_damage() //checked changed to match cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "disconnect" );
|
||||
@ -587,35 +518,34 @@ player_elec_damage()
|
||||
self.is_burning = 1;
|
||||
if ( is_true( level.trap_electric_visionset_registered ) )
|
||||
{
|
||||
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_trap_electric", self, 1,25, 1,25 );
|
||||
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_trap_electric", self, 1.25, 1.25 );
|
||||
}
|
||||
else
|
||||
{
|
||||
self setelectrified( 1,25 );
|
||||
self setelectrified( 1.25 );
|
||||
}
|
||||
shocktime = 2,5;
|
||||
shocktime = 2.5;
|
||||
self shellshock( "electrocution", shocktime );
|
||||
if ( level.elec_loop == 0 )
|
||||
{
|
||||
elec_loop = 1;
|
||||
self playsound( "zmb_zombie_arc" );
|
||||
}
|
||||
if ( !self hasperk( "specialty_armorvest" ) || ( self.health - 100 ) < 1 )
|
||||
if ( !self hasperk( "specialty_armorvest" ) || self.health - 100 < 1 )
|
||||
{
|
||||
radiusdamage( self.origin, 10, self.health + 100, self.health + 100 );
|
||||
self.is_burning = undefined;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
self dodamage( 50, self.origin );
|
||||
wait 0,1;
|
||||
wait 0.1;
|
||||
self.is_burning = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
player_fire_damage()
|
||||
player_fire_damage() //checked changed to match cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "disconnect" );
|
||||
@ -624,29 +554,28 @@ player_fire_damage()
|
||||
self.is_burning = 1;
|
||||
if ( is_true( level.trap_fire_visionset_registered ) )
|
||||
{
|
||||
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_trap_burn", self, 1,25, 1,25 );
|
||||
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_trap_burn", self, 1.25, 1.25 );
|
||||
}
|
||||
else
|
||||
{
|
||||
self setburn( 1,25 );
|
||||
self setburn( 1.25 );
|
||||
}
|
||||
self notify( "burned" );
|
||||
if ( !self hasperk( "specialty_armorvest" ) || ( self.health - 100 ) < 1 )
|
||||
if ( !self hasperk( "specialty_armorvest" ) || self.health - 100 < 1 )
|
||||
{
|
||||
radiusdamage( self.origin, 10, self.health + 100, self.health + 100 );
|
||||
self.is_burning = undefined;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
self dodamage( 50, self.origin );
|
||||
wait 0,1;
|
||||
wait 0.1;
|
||||
self.is_burning = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zombie_trap_death( trap, param )
|
||||
zombie_trap_death( trap, param ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self.marked_for_death = 1;
|
||||
@ -664,7 +593,7 @@ zombie_trap_death( trap, param )
|
||||
self playsound( "ignite" );
|
||||
self thread maps/mp/animscripts/zm_death::flame_death_fx();
|
||||
playfxontag( level._effect[ "character_fire_death_torso" ], self, "J_SpineLower" );
|
||||
wait randomfloat( 1,25 );
|
||||
wait randomfloat( 1.25 );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -685,7 +614,7 @@ zombie_trap_death( trap, param )
|
||||
self thread play_elec_vocals();
|
||||
}
|
||||
}
|
||||
wait randomfloat( 1,25 );
|
||||
wait randomfloat( 1.25 );
|
||||
self playsound( "zmb_zombie_arc" );
|
||||
}
|
||||
}
|
||||
@ -717,26 +646,26 @@ zombie_trap_death( trap, param )
|
||||
}
|
||||
}
|
||||
|
||||
zombie_flame_watch()
|
||||
zombie_flame_watch() //checked matches cerberus output
|
||||
{
|
||||
self waittill( "death" );
|
||||
self stoploopsound();
|
||||
arrayremovevalue( level.burning_zombies, self );
|
||||
}
|
||||
|
||||
play_elec_vocals()
|
||||
play_elec_vocals() //checked matches cerberus output
|
||||
{
|
||||
if ( isDefined( self ) )
|
||||
{
|
||||
org = self.origin;
|
||||
wait 0,15;
|
||||
wait 0.15;
|
||||
playsoundatposition( "zmb_elec_vocals", org );
|
||||
playsoundatposition( "zmb_zombie_arc", org );
|
||||
playsoundatposition( "zmb_exp_jib_zombie", org );
|
||||
}
|
||||
}
|
||||
|
||||
electroctute_death_fx()
|
||||
electroctute_death_fx() //checked matches cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
if ( isDefined( self.is_electrocuted ) && self.is_electrocuted )
|
||||
@ -784,7 +713,7 @@ electroctute_death_fx()
|
||||
}
|
||||
}
|
||||
|
||||
electrocute_timeout()
|
||||
electrocute_timeout() //checked matches cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self playloopsound( "fire_manager_0" );
|
||||
@ -797,14 +726,14 @@ electrocute_timeout()
|
||||
}
|
||||
}
|
||||
|
||||
trap_dialog()
|
||||
trap_dialog() //checked partially changed to match cerberus output //did not change while loop to for loop to prevent in the infinite for loop bug caused by continues
|
||||
{
|
||||
self endon( "warning_dialog" );
|
||||
level endon( "switch_flipped" );
|
||||
timer = 0;
|
||||
while ( 1 )
|
||||
{
|
||||
wait 0,5;
|
||||
wait 0.5;
|
||||
players = get_players();
|
||||
i = 0;
|
||||
while ( i < players.size )
|
||||
@ -816,11 +745,9 @@ trap_dialog()
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( dist < 4900 && timer < 3 )
|
||||
{
|
||||
wait 0,5;
|
||||
wait 0.5;
|
||||
timer++;
|
||||
}
|
||||
if ( dist < 4900 && timer == 3 )
|
||||
@ -830,35 +757,32 @@ trap_dialog()
|
||||
wait 3;
|
||||
self notify( "warning_dialog" );
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get_trap_array( trap_type )
|
||||
get_trap_array( trap_type ) //checked changed to match cerberus output
|
||||
{
|
||||
ents = getentarray( "zombie_trap", "targetname" );
|
||||
traps = [];
|
||||
i = 0;
|
||||
while ( i < ents.size )
|
||||
for ( i = 0; i < ents.size i++ )
|
||||
{
|
||||
if ( ents[ i ].script_noteworthy == trap_type )
|
||||
{
|
||||
traps[ traps.size ] = ents[ i ];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return traps;
|
||||
}
|
||||
|
||||
trap_disable()
|
||||
trap_disable() //checked matches cerberus output
|
||||
{
|
||||
cooldown = self._trap_cooldown_time;
|
||||
if ( self._trap_in_use )
|
||||
{
|
||||
self notify( "trap_done" );
|
||||
self._trap_cooldown_time = 0,05;
|
||||
self._trap_cooldown_time = 0.05;
|
||||
self waittill( "available" );
|
||||
}
|
||||
array_thread( self._trap_use_trigs, ::trigger_off );
|
||||
@ -866,13 +790,13 @@ trap_disable()
|
||||
self._trap_cooldown_time = cooldown;
|
||||
}
|
||||
|
||||
trap_enable()
|
||||
trap_enable() //checked matches cerberus output
|
||||
{
|
||||
array_thread( self._trap_use_trigs, ::trigger_on );
|
||||
self trap_lights_green();
|
||||
}
|
||||
|
||||
trap_model_type_init()
|
||||
trap_model_type_init() //checked matches cerberus output
|
||||
{
|
||||
if ( !isDefined( self.script_parameters ) )
|
||||
{
|
||||
@ -896,14 +820,11 @@ trap_model_type_init()
|
||||
}
|
||||
}
|
||||
|
||||
register_visionsets( a_traps )
|
||||
register_visionsets( a_traps ) //checked changed to match cerberus output
|
||||
{
|
||||
a_registered_traps = [];
|
||||
_a1177 = a_traps;
|
||||
_k1177 = getFirstArrayKey( _a1177 );
|
||||
while ( isDefined( _k1177 ) )
|
||||
foreach ( trap in a_traps )
|
||||
{
|
||||
trap = _a1177[ _k1177 ];
|
||||
if ( isDefined( trap.script_noteworthy ) )
|
||||
{
|
||||
if ( !trap is_trap_registered( a_registered_traps ) )
|
||||
@ -911,14 +832,10 @@ register_visionsets( a_traps )
|
||||
a_registered_traps[ trap.script_noteworthy ] = 1;
|
||||
}
|
||||
}
|
||||
_k1177 = getNextArrayKey( _a1177, _k1177 );
|
||||
}
|
||||
keys = getarraykeys( a_registered_traps );
|
||||
_a1190 = keys;
|
||||
_k1190 = getFirstArrayKey( _a1190 );
|
||||
while ( isDefined( _k1190 ) )
|
||||
foreach ( key in keys )
|
||||
{
|
||||
key = _a1190[ _k1190 ];
|
||||
switch( key )
|
||||
{
|
||||
case "electric":
|
||||
@ -938,11 +855,11 @@ register_visionsets( a_traps )
|
||||
level.trap_fire_visionset_registered = 1;
|
||||
break;
|
||||
}
|
||||
_k1190 = getNextArrayKey( _a1190, _k1190 );
|
||||
}
|
||||
}
|
||||
|
||||
is_trap_registered( a_registered_traps )
|
||||
is_trap_registered( a_registered_traps ) //checked matches cerberus output
|
||||
{
|
||||
return isDefined( a_registered_traps[ self.script_noteworthy ] );
|
||||
}
|
||||
|
||||
|
@ -4,17 +4,19 @@
|
||||
#include maps/mp/_utility;
|
||||
#include common_scripts/utility;
|
||||
|
||||
#using_animtree( "zombie_cymbal_monkey" );
|
||||
//#using_animtree( "zombie_cymbal_monkey" );
|
||||
|
||||
init()
|
||||
init() //checked matches cerberus output
|
||||
{
|
||||
if ( !cymbal_monkey_exists() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
/*
|
||||
/#
|
||||
level.zombiemode_devgui_cymbal_monkey_give = ::player_give_cymbal_monkey;
|
||||
#/
|
||||
*/
|
||||
if ( isDefined( level.legacy_cymbal_monkey ) && level.legacy_cymbal_monkey )
|
||||
{
|
||||
level.cymbal_monkey_model = "weapon_zombie_monkey_bomb";
|
||||
@ -29,14 +31,14 @@ init()
|
||||
scriptmodelsuseanimtree( -1 );
|
||||
}
|
||||
|
||||
player_give_cymbal_monkey()
|
||||
player_give_cymbal_monkey() //checked matches cerberus output
|
||||
{
|
||||
self giveweapon( "cymbal_monkey_zm" );
|
||||
self set_player_tactical_grenade( "cymbal_monkey_zm" );
|
||||
self thread player_handle_cymbal_monkey();
|
||||
}
|
||||
|
||||
player_handle_cymbal_monkey()
|
||||
player_handle_cymbal_monkey() //checked matches cerberus output
|
||||
{
|
||||
self notify( "starting_monkey_watch" );
|
||||
self endon( "disconnect" );
|
||||
@ -64,7 +66,7 @@ player_handle_cymbal_monkey()
|
||||
}
|
||||
}
|
||||
|
||||
watch_for_dud( model, actor )
|
||||
watch_for_dud( model, actor ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self waittill( "grenade_dud" );
|
||||
@ -90,7 +92,7 @@ watch_for_dud( model, actor )
|
||||
}
|
||||
}
|
||||
|
||||
watch_for_emp( model, actor )
|
||||
watch_for_emp( model, actor ) //checked changed to match cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
if ( !should_watch_for_emp() )
|
||||
@ -100,20 +102,17 @@ watch_for_emp( model, actor )
|
||||
while ( 1 )
|
||||
{
|
||||
level waittill( "emp_detonate", origin, radius );
|
||||
if ( distancesquared( origin, self.origin ) < ( radius * radius ) )
|
||||
if ( distancesquared( origin, self.origin ) < radius * radius )
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
self.stun_fx = 1;
|
||||
if ( isDefined( level._equipment_emp_destroy_fx ) )
|
||||
{
|
||||
playfx( level._equipment_emp_destroy_fx, self.origin + vectorScale( ( 0, 0, -1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) );
|
||||
playfx( level._equipment_emp_destroy_fx, self.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) );
|
||||
}
|
||||
wait 0,15;
|
||||
wait 0.15;
|
||||
self.attract_to_origin = 0;
|
||||
self deactivate_zombie_point_of_interest();
|
||||
model clearanim( %o_monkey_bomb, 0 );
|
||||
@ -138,18 +137,18 @@ watch_for_emp( model, actor )
|
||||
}
|
||||
}
|
||||
|
||||
clone_player_angles( owner )
|
||||
clone_player_angles( owner ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
owner endon( "death" );
|
||||
while ( isDefined( self ) )
|
||||
{
|
||||
self.angles = owner.angles;
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
show_briefly( showtime )
|
||||
show_briefly( showtime ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "show_owner" );
|
||||
if ( isDefined( self.show_for_time ) )
|
||||
@ -161,14 +160,14 @@ show_briefly( showtime )
|
||||
self setvisibletoall();
|
||||
while ( self.show_for_time > 0 )
|
||||
{
|
||||
self.show_for_time -= 0,05;
|
||||
wait 0,05;
|
||||
self.show_for_time -= 0.05;
|
||||
wait 0.05;
|
||||
}
|
||||
self setvisibletoallexceptteam( level.zombie_team );
|
||||
self.show_for_time = undefined;
|
||||
}
|
||||
|
||||
show_owner_on_attack( owner )
|
||||
show_owner_on_attack( owner ) //checked matches cerberus output
|
||||
{
|
||||
owner endon( "hide_owner" );
|
||||
owner endon( "show_owner" );
|
||||
@ -179,11 +178,11 @@ show_owner_on_attack( owner )
|
||||
for ( ;; )
|
||||
{
|
||||
owner waittill( "weapon_fired" );
|
||||
owner thread show_briefly( 0,5 );
|
||||
owner thread show_briefly( 0.5 );
|
||||
}
|
||||
}
|
||||
|
||||
hide_owner( owner )
|
||||
hide_owner( owner ) //checked matches cerberus output
|
||||
{
|
||||
owner notify( "hide_owner" );
|
||||
owner endon( "hide_owner" );
|
||||
@ -198,9 +197,11 @@ hide_owner( owner )
|
||||
}
|
||||
self thread show_owner_on_attack( owner );
|
||||
evt = self waittill_any_return( "explode", "death", "grenade_dud" );
|
||||
/*
|
||||
/#
|
||||
println( "ZMCLONE: Player visible again because of " + evt );
|
||||
#/
|
||||
*/
|
||||
owner notify( "show_owner" );
|
||||
owner unsetperk( "specialty_immunemms" );
|
||||
if ( isDefined( level._effect[ "human_disappears" ] ) )
|
||||
@ -213,16 +214,16 @@ hide_owner( owner )
|
||||
owner show();
|
||||
}
|
||||
|
||||
proximity_detonate( owner )
|
||||
proximity_detonate( owner ) //checked changed to match cerberus output
|
||||
{
|
||||
wait 1,5;
|
||||
wait 1.5;
|
||||
if ( !isDefined( self ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
detonateradius = 96;
|
||||
explosionradius = detonateradius * 2;
|
||||
damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 1,5 );
|
||||
damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 1.5 );
|
||||
damagearea setexcludeteamfortrigger( owner.team );
|
||||
damagearea enablelinkto();
|
||||
damagearea linkto( self );
|
||||
@ -240,7 +241,7 @@ proximity_detonate( owner )
|
||||
}
|
||||
self playsound( "wpn_claymore_alert" );
|
||||
dist = distance( self.origin, ent.origin );
|
||||
radiusdamage( self.origin + vectorScale( ( 0, 0, -1 ), 12 ), explosionradius, 1, 1, owner, "MOD_GRENADE_SPLASH", "cymbal_monkey_zm" );
|
||||
radiusdamage( self.origin + vectorScale( ( 0, 0, 1 ), 12 ), explosionradius, 1, 1, owner, "MOD_GRENADE_SPLASH", "cymbal_monkey_zm" );
|
||||
if ( isDefined( owner ) )
|
||||
{
|
||||
self detonate( owner );
|
||||
@ -257,7 +258,7 @@ proximity_detonate( owner )
|
||||
}
|
||||
}
|
||||
|
||||
player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff )
|
||||
player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ) //checked matches cerberus output
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "starting_monkey_watch" );
|
||||
@ -353,7 +354,7 @@ player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_d
|
||||
}
|
||||
}
|
||||
|
||||
grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor )
|
||||
grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor ) //checked changed to match cerberus output
|
||||
{
|
||||
if ( !isDefined( ent_model ) )
|
||||
{
|
||||
@ -373,18 +374,16 @@ grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor )
|
||||
}
|
||||
}
|
||||
players = get_players();
|
||||
i = 0;
|
||||
while ( i < players.size )
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
if ( isalive( players[ i ] ) )
|
||||
{
|
||||
players[ i ] playlocalsound( level.zmb_laugh_alias );
|
||||
}
|
||||
i++;
|
||||
}
|
||||
playfxontag( level._effect[ "grenade_samantha_steal" ], ent_model, "tag_origin" );
|
||||
ent_model movez( 60, 1, 0,25, 0,25 );
|
||||
ent_model vibrate( direction, 1,5, 2,5, 1 );
|
||||
ent_model movez( 60, 1, 0.25, 0.25 );
|
||||
ent_model vibrate( direction, 1.5, 2.5, 1 );
|
||||
ent_model waittill( "movedone" );
|
||||
if ( isDefined( self.damagearea ) )
|
||||
{
|
||||
@ -405,13 +404,13 @@ grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor )
|
||||
}
|
||||
}
|
||||
|
||||
wait_for_attractor_positions_complete()
|
||||
wait_for_attractor_positions_complete() //checked matches cerberus output
|
||||
{
|
||||
self waittill( "attractor_positions_generated" );
|
||||
self.attract_to_origin = 0;
|
||||
}
|
||||
|
||||
monkey_cleanup( parent )
|
||||
monkey_cleanup( parent ) //checked matches cerberus output
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
@ -428,16 +427,16 @@ monkey_cleanup( parent )
|
||||
self_delete();
|
||||
return;
|
||||
}
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
do_monkey_sound( model, info )
|
||||
do_monkey_sound( model, info ) //checked changed to match cerberus output
|
||||
{
|
||||
self.monk_scream_vox = 0;
|
||||
if ( isDefined( level.grenade_safe_to_bounce ) )
|
||||
{
|
||||
if ( !( [[ level.grenade_safe_to_bounce ]]( self.owner, "cymbal_monkey_zm" ) ) )
|
||||
if ( ![[ level.grenade_safe_to_bounce ]]( self.owner, "cymbal_monkey_zm" ) )
|
||||
{
|
||||
self playsound( "zmb_vox_monkey_scream" );
|
||||
self.monk_scream_vox = 1;
|
||||
@ -459,20 +458,15 @@ do_monkey_sound( model, info )
|
||||
self thread play_delayed_explode_vox();
|
||||
}
|
||||
self waittill( "explode", position );
|
||||
level notify( "grenade_exploded" );
|
||||
level notify( "grenade_exploded", position, 100, 5000, 450 );
|
||||
monkey_index = -1;
|
||||
i = 0;
|
||||
while ( i < level.cymbal_monkeys.size )
|
||||
for ( i = 0; i < level.cymbal_monkeys.size; i++ )
|
||||
{
|
||||
if ( !isDefined( level.cymbal_monkeys[ i ] ) )
|
||||
{
|
||||
monkey_index = i;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if ( monkey_index >= 0 )
|
||||
{
|
||||
@ -482,27 +476,25 @@ do_monkey_sound( model, info )
|
||||
{
|
||||
model clearanim( %o_monkey_bomb, 0,2 );
|
||||
}
|
||||
i = 0;
|
||||
while ( i < info.sound_attractors.size )
|
||||
for ( i = 0; i < info.sound_attractors.size; i++ )
|
||||
{
|
||||
if ( isDefined( info.sound_attractors[ i ] ) )
|
||||
{
|
||||
info.sound_attractors[ i ] notify( "monkey_blown_up" );
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
play_delayed_explode_vox()
|
||||
play_delayed_explode_vox() //checked matches cerberus output
|
||||
{
|
||||
wait 6,5;
|
||||
wait 6.5;
|
||||
if ( isDefined( self ) )
|
||||
{
|
||||
self playsound( "zmb_vox_monkey_explode" );
|
||||
}
|
||||
}
|
||||
|
||||
get_thrown_monkey()
|
||||
get_thrown_monkey() //checked matches cerberus output
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "starting_monkey_watch" );
|
||||
@ -515,11 +507,11 @@ get_thrown_monkey()
|
||||
grenade.grenade_multiattack_bookmark_count = 1;
|
||||
return grenade;
|
||||
}
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
monitor_zombie_groans( info )
|
||||
monitor_zombie_groans( info ) //checked changed to match cerberus output
|
||||
{
|
||||
self endon( "explode" );
|
||||
while ( 1 )
|
||||
@ -528,12 +520,12 @@ monitor_zombie_groans( info )
|
||||
{
|
||||
return;
|
||||
}
|
||||
while ( !isDefined( self.attractor_array ) )
|
||||
if ( !isDefined( self.attractor_array ) )
|
||||
{
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
i = 0;
|
||||
while ( i < self.attractor_array.size )
|
||||
for ( i = 0; i < self.attractor_array.size; i++ )
|
||||
{
|
||||
if ( array_check_for_dupes( info.sound_attractors, self.attractor_array[ i ] ) )
|
||||
{
|
||||
@ -546,13 +538,12 @@ monitor_zombie_groans( info )
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
wait 0,05;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
play_zombie_groans()
|
||||
play_zombie_groans() //checked changed to match cerberus output
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "monkey_blown_up" );
|
||||
@ -562,7 +553,6 @@ play_zombie_groans()
|
||||
{
|
||||
self playsound( "zmb_vox_zombie_groan" );
|
||||
wait randomfloatrange( 2, 3 );
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -571,7 +561,8 @@ play_zombie_groans()
|
||||
}
|
||||
}
|
||||
|
||||
cymbal_monkey_exists()
|
||||
cymbal_monkey_exists() //checked matches cerberus output
|
||||
{
|
||||
return isDefined( level.zombie_weapons[ "cymbal_monkey_zm" ] );
|
||||
}
|
||||
|
||||
|
@ -47,30 +47,32 @@ patch_zm/maps/mp/zombies/_zm_equipment.gsc
|
||||
patch_zm/maps/mp/zombies/_load.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_pers_upgrades_functions.gsc
|
||||
```
|
||||
### The following scripts are not tested yet, uploaded to setup a baseline:
|
||||
### The following scripts have been checked, but they have not been tested yet
|
||||
```
|
||||
patch_zm/maps/mp/zombies/_zm_traps.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc
|
||||
```
|
||||
### The following scripts are not checked yet, uploaded to setup a baseline:
|
||||
```
|
||||
patch_zm/maps/mp/zombies/_zm_blockers.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_buildables.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_devgui.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_equip_turbine.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_game_module.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_jump_pad.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_laststand.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_magicbox_lock.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_mgturret.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_playerhealth.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_power.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_sidequests.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_stats.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_traps.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_turned.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_unitrigger.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_utility.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc
|
||||
```
|
||||
|
||||
### The following scripts have not been checked using the proper debugging methods:
|
||||
```
|
||||
//I will put these off to towards much later since the hacker and gas mask are parts of the game that do not exist inside the game in any capacity whatsoever.
|
||||
//Therefore, whether or not they work is irrelevant.
|
||||
patch_zm/maps/mp/zombies/_zm_devgui.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_equip_hacker.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_equip_gasmask.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_hackables_boards.gsc
|
||||
@ -80,8 +82,9 @@ patch_zm/maps/mp/zombies/_zm_hackables_packapunch.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_hackables_perks.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_hackables_powerups.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_hackables_wallbuys.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_jump_pad.gsc
|
||||
patch_zm/maps/mp/zombies/_zm_mgturret.gsc
|
||||
```
|
||||
|
||||
### notes:
|
||||
```
|
||||
The shaders that _zm_timer.gsc relies on do not exist.
|
||||
|
Reference in New Issue
Block a user