mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-08 09:57:52 -05:00
checked 4 scripts against cerberus output
_zm_gametype.gsc still has errors with sub gamemodes and sub maps, but its logic has been improved as well as made more readable. _zm_perk_electric_cherry.gsc has been compared with the cerberus output so the code is much cleaner now. _zm_perks.gsc has undergone a full comparison against the cerberus output, and while it is in a better state maps using custom perk scripts don't work properly. _zm_weapons is in a working state now but has errors with wall weapon hint strings and attachments not being applied to packapunch weapons.
This commit is contained in:
parent
0feba0b86a
commit
c06a6c4b00
@ -27,6 +27,7 @@ main()
|
|||||||
maps/mp/gametypes_zm/_callbacksetup::setupcallbacks();
|
maps/mp/gametypes_zm/_callbacksetup::setupcallbacks();
|
||||||
globallogic_setupdefault_zombiecallbacks();
|
globallogic_setupdefault_zombiecallbacks();
|
||||||
menu_init();
|
menu_init();
|
||||||
|
|
||||||
//controls several gamemode specific variables non essential
|
//controls several gamemode specific variables non essential
|
||||||
registerroundlimit( 1, 1 );
|
registerroundlimit( 1, 1 );
|
||||||
registertimelimit( 0, 0 );
|
registertimelimit( 0, 0 );
|
||||||
@ -67,11 +68,8 @@ main()
|
|||||||
setdvar( "scr_disable_weapondrop", 1 );
|
setdvar( "scr_disable_weapondrop", 1 );
|
||||||
setdvar( "scr_xpscale", 0 );
|
setdvar( "scr_xpscale", 0 );
|
||||||
|
|
||||||
//all working except onspawnplayerunified
|
|
||||||
level.onstartgametype = ::onstartgametype;
|
level.onstartgametype = ::onstartgametype;
|
||||||
level.onspawnplayer = ::blank;
|
level.onspawnplayer = ::blank;
|
||||||
|
|
||||||
//causes the server to crash when someone joins
|
|
||||||
level.onspawnplayerunified = ::onspawnplayerunified;
|
level.onspawnplayerunified = ::onspawnplayerunified;
|
||||||
level.onroundendgame = ::onroundendgame;
|
level.onroundendgame = ::onroundendgame;
|
||||||
level.mayspawn = ::mayspawn;
|
level.mayspawn = ::mayspawn;
|
||||||
@ -85,7 +83,7 @@ main()
|
|||||||
mode = getDvar( "ui_gametype" );
|
mode = getDvar( "ui_gametype" );
|
||||||
|
|
||||||
//condition was incorrect
|
//condition was incorrect
|
||||||
if ( !isDefined( mode ) || mode == "" && isDefined( level.default_game_mode ) )
|
if ( !isDefined( mode ) && isDefined( level.default_game_mode ) || mode == "" && isDefined( level.default_game_mode ) )
|
||||||
{
|
{
|
||||||
mode = level.default_game_mode;
|
mode = level.default_game_mode;
|
||||||
}
|
}
|
||||||
@ -121,56 +119,50 @@ main()
|
|||||||
onplayerconnect_callback( ::onplayerconnect_check_for_hotjoin );
|
onplayerconnect_callback( ::onplayerconnect_check_for_hotjoin );
|
||||||
}
|
}
|
||||||
|
|
||||||
game_objects_allowed( mode, location ) //checked not sure what to do yet
|
game_objects_allowed( mode, location ) //checked partially changed to match cerberus output changed at own discretion
|
||||||
{
|
{
|
||||||
allowed[ 0 ] = mode;
|
allowed[ 0 ] = mode;
|
||||||
entities = getentarray();
|
entities = getentarray();
|
||||||
_a153 = entities;
|
i = 0;
|
||||||
_k153 = getFirstArrayKey( _a153 );
|
while ( i < entities.size )
|
||||||
while ( isDefined( _k153 ) )
|
|
||||||
{
|
{
|
||||||
entity = _a153[ _k153 ];
|
if ( isDefined( entities[ i ].script_gameobjectname ) )
|
||||||
if ( isDefined( entity.script_gameobjectname ) )
|
|
||||||
{
|
{
|
||||||
isallowed = maps/mp/gametypes_zm/_gameobjects::entity_is_allowed( entity, allowed );
|
isallowed = maps/mp/gametypes_zm/_gameobjects::entity_is_allowed( entities[ i ], allowed );
|
||||||
isvalidlocation = maps/mp/gametypes_zm/_gameobjects::location_is_allowed( entity, location );
|
isvalidlocation = maps/mp/gametypes_zm/_gameobjects::location_is_allowed( entities[ i ], location );
|
||||||
if ( !isallowed || !isvalidlocation && !is_classic() )
|
if ( !isallowed || !isvalidlocation && !is_classic() )
|
||||||
{
|
{
|
||||||
if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 )
|
if ( isDefined( entities[ i ].spawnflags ) && entities[ i ].spawnflags == 1 )
|
||||||
{
|
{
|
||||||
if ( isDefined( entity.classname ) && entity.classname != "trigger_multiple" )
|
if ( isDefined( entities[ i ].classname ) && entities[ i ].classname != "trigger_multiple" )
|
||||||
{
|
{
|
||||||
entity connectpaths();
|
entities[ i ] connectpaths();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
entity delete();
|
entities[ i ] delete();
|
||||||
break;
|
i++;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
if ( isDefined( entities[ i ].script_vector ) )
|
||||||
{
|
{
|
||||||
if ( isDefined( entity.script_vector ) )
|
entities[ i ] moveto( entities[ i ].origin + entities[ i ].script_vector, 0.05 );
|
||||||
|
entities[ i ] waittill( "movedone" );
|
||||||
|
if ( isDefined( entities[ i ].spawnflags ) && entities[ i ].spawnflags == 1 )
|
||||||
{
|
{
|
||||||
entity moveto( entity.origin + entity.script_vector, 0,05 );
|
entities[ i ] disconnectpaths();
|
||||||
entity waittill( "movedone" );
|
}
|
||||||
if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 )
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ( isDefined( entities[ i ].spawnflags ) && entities[ i ].spawnflags == 1 )
|
||||||
{
|
{
|
||||||
entity disconnectpaths();
|
if ( isDefined( entities[ i ].classname ) && entities[ i ].classname != "trigger_multiple" )
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 )
|
entities[ i ] connectpaths();
|
||||||
{
|
|
||||||
if ( isDefined( entity.classname ) && entity.classname != "trigger_multiple" )
|
|
||||||
{
|
|
||||||
entity connectpaths();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
i++;
|
||||||
}
|
|
||||||
_k153 = getNextArrayKey( _a153, _k153 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -861,65 +853,53 @@ game_end_func() //checked matches cerberus output
|
|||||||
setup_classic_gametype() //checked did not change to match cerberus output
|
setup_classic_gametype() //checked did not change to match cerberus output
|
||||||
{
|
{
|
||||||
ents = getentarray();
|
ents = getentarray();
|
||||||
_a1004 = ents;
|
i = 0;
|
||||||
_k1004 = getFirstArrayKey( _a1004 );
|
while ( i < ents.size )
|
||||||
while ( isDefined( _k1004 ) )
|
|
||||||
{
|
{
|
||||||
ent = _a1004[ _k1004 ];
|
if ( isDefined( ents[ i ].script_parameters ) )
|
||||||
if ( isDefined( ent.script_parameters ) )
|
|
||||||
{
|
{
|
||||||
parameters = strtok( ent.script_parameters, " " );
|
parameters = strtok( ents[ i ].script_parameters, " " );
|
||||||
should_remove = 0;
|
should_remove = 0;
|
||||||
_a1010 = parameters;
|
foreach ( parm in parameters )
|
||||||
_k1010 = getFirstArrayKey( _a1010 );
|
|
||||||
while ( isDefined( _k1010 ) )
|
|
||||||
{
|
{
|
||||||
parm = _a1010[ _k1010 ];
|
|
||||||
if ( parm == "survival_remove" )
|
if ( parm == "survival_remove" )
|
||||||
{
|
{
|
||||||
should_remove = 1;
|
should_remove = 1;
|
||||||
}
|
}
|
||||||
_k1010 = getNextArrayKey( _a1010, _k1010 );
|
|
||||||
}
|
}
|
||||||
if ( should_remove )
|
if ( should_remove )
|
||||||
{
|
{
|
||||||
ent delete();
|
ent delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_k1004 = getNextArrayKey( _a1004, _k1004 );
|
i++;
|
||||||
}
|
}
|
||||||
structs = getstructarray( "game_mode_object" );
|
structs = getstructarray( "game_mode_object" );
|
||||||
_a1040 = structs;
|
while ( i < structs.size )
|
||||||
_k1040 = getFirstArrayKey( _a1040 );
|
|
||||||
while ( isDefined( _k1040 ) )
|
|
||||||
{
|
{
|
||||||
struct = _a1040[ _k1040 ];
|
if ( !isdefined( structs[ i ].script_string ) )
|
||||||
if ( !isDefined( struct.script_string ) )
|
|
||||||
{
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else tokens = strtok( struct.script_string, " " );
|
tokens = strtok( structs[ i ].script_string, " " );
|
||||||
spawn_object = 0;
|
spawn_object = 0;
|
||||||
_a1048 = tokens;
|
foreach ( parm in tokens )
|
||||||
_k1048 = getFirstArrayKey( _a1048 );
|
|
||||||
while ( isDefined( _k1048 ) )
|
|
||||||
{
|
{
|
||||||
parm = _a1048[ _k1048 ];
|
|
||||||
if ( parm == "survival" )
|
if ( parm == "survival" )
|
||||||
{
|
{
|
||||||
spawn_object = 1;
|
spawn_object = 1;
|
||||||
}
|
}
|
||||||
_k1048 = getNextArrayKey( _a1048, _k1048 );
|
|
||||||
}
|
}
|
||||||
if ( !spawn_object )
|
if ( !spawn_object )
|
||||||
{
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
barricade = spawn( "script_model", struct.origin );
|
barricade = spawn( "script_model", struct.origin );
|
||||||
barricade.angles = struct.angles;
|
barricade.angles = struct.angles;
|
||||||
barricade setmodel( struct.script_parameters );
|
barricade setmodel( struct.script_parameters );
|
||||||
}
|
i++;
|
||||||
_k1040 = getNextArrayKey( _a1040, _k1040 );
|
|
||||||
}
|
}
|
||||||
unlink_meat_traversal_nodes();
|
unlink_meat_traversal_nodes();
|
||||||
}
|
}
|
||||||
@ -1052,11 +1032,10 @@ create_final_score() //checked matches cerberus output
|
|||||||
wait 2;
|
wait 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
module_hud_team_winer_score() //checked did not match cerberus output did not change
|
module_hud_team_winer_score() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = get_players();
|
||||||
i = 0;
|
for ( i = 0; i < players.size; i++ )
|
||||||
while ( i < players.size )
|
|
||||||
{
|
{
|
||||||
players[ i ] thread create_module_hud_team_winer_score();
|
players[ i ] thread create_module_hud_team_winer_score();
|
||||||
if ( isDefined( players[ i ]._team_hud ) && isDefined( players[ i ]._team_hud[ "team" ] ) )
|
if ( isDefined( players[ i ]._team_hud ) && isDefined( players[ i ]._team_hud[ "team" ] ) )
|
||||||
@ -1079,7 +1058,6 @@ module_hud_team_winer_score() //checked did not match cerberus output did not ch
|
|||||||
players[ i ].afk = 0;
|
players[ i ].afk = 0;
|
||||||
players[ i ] detachall();
|
players[ i ] detachall();
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
level thread maps/mp/zombies/_zm_audio::change_zombie_music( "match_over" );
|
level thread maps/mp/zombies/_zm_audio::change_zombie_music( "match_over" );
|
||||||
}
|
}
|
||||||
@ -1466,6 +1444,7 @@ onspawnplayer( predictedspawn ) //fixed checked changed partially to match cerbe
|
|||||||
|
|
||||||
spawnpoints = [];
|
spawnpoints = [];
|
||||||
structs = getstructarray("initial_spawn", "script_noteworthy");
|
structs = getstructarray("initial_spawn", "script_noteworthy");
|
||||||
|
/*
|
||||||
if ( isDefined( structs ) )
|
if ( isDefined( structs ) )
|
||||||
{
|
{
|
||||||
_a1757 = structs;
|
_a1757 = structs;
|
||||||
@ -1492,6 +1471,26 @@ onspawnplayer( predictedspawn ) //fixed checked changed partially to match cerbe
|
|||||||
_k1757 = getNextArrayKey( _a1757, _k1757 );
|
_k1757 = getNextArrayKey( _a1757, _k1757 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
if ( isdefined( structs ) )
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
while ( i < structs.size )
|
||||||
|
{
|
||||||
|
if ( isdefined( structs[ i ].script_string ) )
|
||||||
|
{
|
||||||
|
tokens = strtok( structs[ i ].script_string, " " );
|
||||||
|
foreach ( token in tokens )
|
||||||
|
{
|
||||||
|
if ( token == match_string )
|
||||||
|
{
|
||||||
|
spawnpoints[ spawnpoints.size ] = structs[ i ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 )
|
if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 )
|
||||||
{
|
{
|
||||||
spawnpoints = getstructarray( "initial_spawn_points", "targetname" );
|
spawnpoints = getstructarray( "initial_spawn_points", "targetname" );
|
||||||
@ -1551,28 +1550,25 @@ get_player_spawns_for_gametype() //fixed checked partially changed to match cerb
|
|||||||
match_string = level.scr_zm_ui_gametype + "_" + location;
|
match_string = level.scr_zm_ui_gametype + "_" + location;
|
||||||
player_spawns = [];
|
player_spawns = [];
|
||||||
structs = getstructarray("player_respawn_point", "targetname");
|
structs = getstructarray("player_respawn_point", "targetname");
|
||||||
_a1869 = structs;
|
i = 0;
|
||||||
_k1869 = getFirstArrayKey( _a1869 );
|
while ( i < structs.size )
|
||||||
while ( isDefined( _k1869 ) )
|
|
||||||
{
|
{
|
||||||
struct = _a1869[ _k1869 ];
|
if ( isdefined( structs[ i ].script_string ) )
|
||||||
if ( isDefined( struct.script_string ) )
|
|
||||||
{
|
{
|
||||||
tokens = strtok( struct.script_string, " " );
|
tokens = strtok( structs[ i ].script_string, " " );
|
||||||
_a1874 = tokens;
|
foreach ( token in tokens )
|
||||||
_k1874 = getFirstArrayKey( _a1874 );
|
|
||||||
while ( isDefined( _k1874 ) )
|
|
||||||
{
|
{
|
||||||
token = _a1874[ _k1874 ];
|
|
||||||
if ( token == match_string )
|
if ( token == match_string )
|
||||||
{
|
{
|
||||||
player_spawns[ player_spawns.size ] = struct;
|
player_spawns[ player_spawns.size ] = structs[ i ];
|
||||||
}
|
|
||||||
_k1874 = getNextArrayKey( _a1874, _k1874 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else player_spawns[ player_spawns.size ] = struct;
|
}
|
||||||
_k1869 = getNextArrayKey( _a1869, _k1869 );
|
else
|
||||||
|
{
|
||||||
|
player_spawns[ player_spawns.size ] = structs[ i ];
|
||||||
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
return player_spawns;
|
return player_spawns;
|
||||||
}
|
}
|
||||||
@ -1945,7 +1941,7 @@ onplayerspawned() //checked partially changed to cerberus output
|
|||||||
{
|
{
|
||||||
weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]]();
|
weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]]();
|
||||||
}
|
}
|
||||||
if ( !isDefined( weapons_restored ) && weapons_restored )
|
if ( isDefined( weapons_restored ) && !weapons_restored || !isDefined( weapons_restored ) )
|
||||||
{
|
{
|
||||||
self give_start_weapon( 1 );
|
self give_start_weapon( 1 );
|
||||||
}
|
}
|
||||||
@ -2042,3 +2038,7 @@ blank()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,16 @@
|
|||||||
#include common_scripts/utility;
|
#include common_scripts/utility;
|
||||||
#include maps/mp/_utility;
|
#include maps/mp/_utility;
|
||||||
|
|
||||||
enable_electric_cherry_perk_for_level()
|
enable_electric_cherry_perk_for_level() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
|
//begin debug code
|
||||||
|
level.custom_zm_perk_electric_cherry_loaded = 1;
|
||||||
|
maps/mp/zombies/_zm_bot::init();
|
||||||
|
if ( !isDefined( level.debugLogging_zm_perk_electric_cherry ) )
|
||||||
|
{
|
||||||
|
level.debugLogging_zm_perk_electric_cherry = 0;
|
||||||
|
}
|
||||||
|
//end debug code
|
||||||
register_perk_basic_info( "specialty_grenadepulldeath", "electric_cherry", 2000, &"ZM_PRISON_PERK_CHERRY", "zombie_perk_bottle_cherry" );
|
register_perk_basic_info( "specialty_grenadepulldeath", "electric_cherry", 2000, &"ZM_PRISON_PERK_CHERRY", "zombie_perk_bottle_cherry" );
|
||||||
register_perk_precache_func( "specialty_grenadepulldeath", ::electic_cherry_precache );
|
register_perk_precache_func( "specialty_grenadepulldeath", ::electic_cherry_precache );
|
||||||
register_perk_clientfields( "specialty_grenadepulldeath", ::electric_cherry_register_clientfield, ::electric_cherry_set_clientfield );
|
register_perk_clientfields( "specialty_grenadepulldeath", ::electric_cherry_register_clientfield, ::electric_cherry_set_clientfield );
|
||||||
@ -21,14 +29,14 @@ enable_electric_cherry_perk_for_level()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init_electric_cherry()
|
init_electric_cherry() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
level.custom_laststand_func = ::electric_cherry_laststand;
|
level.custom_laststand_func = ::electric_cherry_laststand;
|
||||||
set_zombie_var( "tesla_head_gib_chance", 50 );
|
set_zombie_var( "tesla_head_gib_chance", 50 );
|
||||||
registerclientfield( "allplayers", "electric_cherry_reload_fx", 9000, 2, "int" );
|
registerclientfield( "allplayers", "electric_cherry_reload_fx", 9000, 2, "int" );
|
||||||
}
|
}
|
||||||
|
|
||||||
electic_cherry_precache()
|
electic_cherry_precache() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
precacheitem( "zombie_perk_bottle_cherry" );
|
precacheitem( "zombie_perk_bottle_cherry" );
|
||||||
precacheshader( "specialty_fastreload_zombies" );
|
precacheshader( "specialty_fastreload_zombies" );
|
||||||
@ -44,17 +52,17 @@ electic_cherry_precache()
|
|||||||
level._effect[ "tesla_shock_secondary" ] = loadfx( "maps/zombie/fx_zombie_tesla_shock_secondary" );
|
level._effect[ "tesla_shock_secondary" ] = loadfx( "maps/zombie/fx_zombie_tesla_shock_secondary" );
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_register_clientfield()
|
electric_cherry_register_clientfield() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
registerclientfield( "toplayer", "perk_electric_cherry", 9000, 1, "int" );
|
registerclientfield( "toplayer", "perk_electric_cherry", 9000, 1, "int" );
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_set_clientfield( state )
|
electric_cherry_set_clientfield( state ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self setclientfieldtoplayer( "perk_electric_cherry", state );
|
self setclientfieldtoplayer( "perk_electric_cherry", state );
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision )
|
electric_cherry_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
use_trigger.script_sound = "mus_perks_cherry_jingle";
|
use_trigger.script_sound = "mus_perks_cherry_jingle";
|
||||||
use_trigger.script_string = "electric_cherry_perk";
|
use_trigger.script_string = "electric_cherry_perk";
|
||||||
@ -68,31 +76,27 @@ electric_cherry_perk_machine_setup( use_trigger, perk_machine, bump_trigger, col
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_perk_machine_think()
|
electric_cherry_perk_machine_think() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
init_electric_cherry();
|
init_electric_cherry();
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
machine = getentarray( "vendingelectric_cherry", "targetname" );
|
machine = getentarray( "vendingelectric_cherry", "targetname" );
|
||||||
machine_triggers = getentarray( "vending_electriccherry", "target" );
|
machine_triggers = getentarray( "vending_electriccherry", "target" );
|
||||||
i = 0;
|
for ( i = 0; i < machine.size; i++ )
|
||||||
while ( i < machine.size )
|
|
||||||
{
|
{
|
||||||
machine[ i ] setmodel( "p6_zm_vending_electric_cherry_off" );
|
machine[ i ] setmodel( "p6_zm_vending_electric_cherry_off" );
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
level thread do_initial_power_off_callback( machine, "electriccherry" );
|
level thread do_initial_power_off_callback( machine, "electriccherry" );
|
||||||
array_thread( machine_triggers, ::set_power_on, 0 );
|
array_thread( machine_triggers, ::set_power_on, 0 );
|
||||||
level waittill( "electric_cherry_on" );
|
level waittill( "electric_cherry_on" );
|
||||||
i = 0;
|
for ( i = 0; i < machine.size; i++ )
|
||||||
while ( i < machine.size )
|
|
||||||
{
|
{
|
||||||
machine[ i ] setmodel( "p6_zm_vending_electric_cherry_on" );
|
machine[ i ] setmodel( "p6_zm_vending_electric_cherry_on" );
|
||||||
machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0.3, 0.4, 3 );
|
machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0.3, 0.4, 3 );
|
||||||
machine[ i ] playsound( "zmb_perks_power_on" );
|
machine[ i ] playsound( "zmb_perks_power_on" );
|
||||||
machine[ i ] thread perk_fx( "electriccherry" );
|
machine[ i ] thread perk_fx( "electriccherry" );
|
||||||
machine[ i ] thread play_loop_on_machine();
|
machine[ i ] thread play_loop_on_machine();
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
level notify( "specialty_grenadepulldeath_power_on" );
|
level notify( "specialty_grenadepulldeath_power_on" );
|
||||||
array_thread( machine_triggers, ::set_power_on, 1 );
|
array_thread( machine_triggers, ::set_power_on, 1 );
|
||||||
@ -101,24 +105,20 @@ electric_cherry_perk_machine_think()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_host_migration_func()
|
electric_cherry_host_migration_func() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
a_electric_cherry_perk_machines = getentarray( "vending_electriccherry", "targetname" );
|
a_electric_cherry_perk_machines = getentarray( "vending_electriccherry", "targetname" );
|
||||||
_a130 = a_electric_cherry_perk_machines;
|
foreach ( perk_machine in a_electric_cherry_perk_machines )
|
||||||
_k130 = getFirstArrayKey( _a130 );
|
|
||||||
while ( isDefined( _k130 ) )
|
|
||||||
{
|
{
|
||||||
perk_machine = _a130[ _k130 ];
|
|
||||||
if ( isDefined( perk_machine.model ) && perk_machine.model == "p6_zm_vending_electric_cherry_on" )
|
if ( isDefined( perk_machine.model ) && perk_machine.model == "p6_zm_vending_electric_cherry_on" )
|
||||||
{
|
{
|
||||||
perk_machine perk_fx( undefined, 1 );
|
perk_machine perk_fx( undefined, 1 );
|
||||||
perk_machine thread perk_fx( "electriccherry" );
|
perk_machine thread perk_fx( "electriccherry" );
|
||||||
}
|
}
|
||||||
_k130 = getNextArrayKey( _a130, _k130 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_laststand()
|
electric_cherry_laststand() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
visionsetlaststand( "zombie_last_stand", 1 );
|
visionsetlaststand( "zombie_last_stand", 1 );
|
||||||
if ( isDefined( self ) )
|
if ( isDefined( self ) )
|
||||||
@ -129,16 +129,14 @@ electric_cherry_laststand()
|
|||||||
wait 0.05;
|
wait 0.05;
|
||||||
a_zombies = get_round_enemy_array();
|
a_zombies = get_round_enemy_array();
|
||||||
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 500 );
|
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, 500 );
|
||||||
i = 0;
|
for ( i = 0; i < a_zombies.size; i++)
|
||||||
while ( i < a_zombies.size )
|
|
||||||
{
|
{
|
||||||
if ( isalive( self ) )
|
if ( isalive( self ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( a_zombies[ i ].health <= 1000 )
|
if ( a_zombies[ i ].health <= 1000 )
|
||||||
{
|
{
|
||||||
a_zombies[ i ] thread electric_cherry_death_fx();
|
a_zombies[ i ] thread electric_cherry_death_fx();
|
||||||
if ( isDefined( self.cherry_kills ) )
|
if ( isdefined( self.cherry_kills ) )
|
||||||
{
|
{
|
||||||
self.cherry_kills++;
|
self.cherry_kills++;
|
||||||
}
|
}
|
||||||
@ -152,13 +150,12 @@ electric_cherry_laststand()
|
|||||||
wait 0.1 ;
|
wait 0.1 ;
|
||||||
a_zombies[ i ] dodamage( 1000, self.origin, self, self, "none" );
|
a_zombies[ i ] dodamage( 1000, self.origin, self, self, "none" );
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
self notify( "electric_cherry_end" );
|
self notify( "electric_cherry_end" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_death_fx()
|
electric_cherry_death_fx() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
tag = "J_SpineUpper";
|
tag = "J_SpineUpper";
|
||||||
@ -175,7 +172,7 @@ electric_cherry_death_fx()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_shock_fx()
|
electric_cherry_shock_fx() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
tag = "J_SpineUpper";
|
tag = "J_SpineUpper";
|
||||||
@ -188,16 +185,18 @@ electric_cherry_shock_fx()
|
|||||||
network_safe_play_fx_on_tag( "tesla_shock_fx", 2, level._effect[ fx ], self, tag );
|
network_safe_play_fx_on_tag( "tesla_shock_fx", 2, level._effect[ fx ], self, tag );
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_stun()
|
electric_cherry_stun() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self notify( "stun_zombie" );
|
self notify( "stun_zombie" );
|
||||||
self endon( "stun_zombie" );
|
self endon( "stun_zombie" );
|
||||||
if ( self.health <= 0 )
|
if ( self.health <= 0 )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
/#
|
/#
|
||||||
iprintln( "trying to stun a dead zombie" );
|
iprintln( "trying to stun a dead zombie" );
|
||||||
#/
|
#/
|
||||||
|
*/
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( self.ai_state != "find_flesh" )
|
if ( self.ai_state != "find_flesh" )
|
||||||
@ -206,12 +205,10 @@ electric_cherry_stun()
|
|||||||
}
|
}
|
||||||
self.forcemovementscriptstate = 1;
|
self.forcemovementscriptstate = 1;
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
i = 0;
|
for ( i = 0; i < 2; i++ )
|
||||||
while ( i < 2 )
|
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_afterlife_stun" );
|
self animscripted( self.origin, self.angles, "zm_afterlife_stun" );
|
||||||
self maps/mp/animscripts/shared::donotetracks( "stunned" );
|
self maps/mp/animscripts/shared::donotetracks( "stunned" );
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
self.forcemovementscriptstate = 0;
|
self.forcemovementscriptstate = 0;
|
||||||
self.ignoreall = 0;
|
self.ignoreall = 0;
|
||||||
@ -219,7 +216,7 @@ electric_cherry_stun()
|
|||||||
self thread maps/mp/zombies/_zm_ai_basic::find_flesh();
|
self thread maps/mp/zombies/_zm_ai_basic::find_flesh();
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_reload_attack()
|
electric_cherry_reload_attack() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
@ -273,8 +270,7 @@ electric_cherry_reload_attack()
|
|||||||
a_zombies = get_round_enemy_array();
|
a_zombies = get_round_enemy_array();
|
||||||
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, perk_radius );
|
a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, perk_radius );
|
||||||
n_zombies_hit = 0;
|
n_zombies_hit = 0;
|
||||||
i = 0;
|
for ( i = 0; i < a_zombies.size; i++ )
|
||||||
while ( i < a_zombies.size )
|
|
||||||
{
|
{
|
||||||
if ( isalive( self ) )
|
if ( isalive( self ) )
|
||||||
{
|
{
|
||||||
@ -298,25 +294,21 @@ electric_cherry_reload_attack()
|
|||||||
}
|
}
|
||||||
self maps/mp/zombies/_zm_score::add_to_player_score( 40 );
|
self maps/mp/zombies/_zm_score::add_to_player_score( 40 );
|
||||||
}
|
}
|
||||||
else
|
else if ( !isDefined( a_zombies[ i ].is_brutus ) )
|
||||||
{
|
|
||||||
if ( !isDefined( a_zombies[ i ].is_brutus ) )
|
|
||||||
{
|
{
|
||||||
a_zombies[ i ] thread electric_cherry_stun();
|
a_zombies[ i ] thread electric_cherry_stun();
|
||||||
}
|
}
|
||||||
a_zombies[ i ] thread electric_cherry_shock_fx();
|
a_zombies[ i ] thread electric_cherry_shock_fx();
|
||||||
}
|
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
a_zombies[ i ] dodamage( perk_dmg, self.origin, self, self, "none" );
|
a_zombies[ i ] dodamage( perk_dmg, self.origin, self, self, "none" );
|
||||||
}
|
}
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
self notify( "electric_cherry_end" );
|
self notify( "electric_cherry_end" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_cooldown_timer( str_current_weapon )
|
electric_cherry_cooldown_timer( str_current_weapon ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self notify( "electric_cherry_cooldown_started" );
|
self notify( "electric_cherry_cooldown_started" );
|
||||||
self endon( "electric_cherry_cooldown_started" );
|
self endon( "electric_cherry_cooldown_started" );
|
||||||
@ -332,7 +324,7 @@ electric_cherry_cooldown_timer( str_current_weapon )
|
|||||||
self.consecutive_electric_cherry_attacks = 0;
|
self.consecutive_electric_cherry_attacks = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_for_reload_complete( weapon )
|
check_for_reload_complete( weapon ) //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
@ -346,15 +338,12 @@ check_for_reload_complete( weapon )
|
|||||||
{
|
{
|
||||||
arrayremovevalue( self.wait_on_reload, weapon );
|
arrayremovevalue( self.wait_on_reload, weapon );
|
||||||
self notify( "weapon_reload_complete_" + weapon );
|
self notify( "weapon_reload_complete_" + weapon );
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
weapon_replaced_monitor( weapon )
|
weapon_replaced_monitor( weapon ) //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
@ -367,15 +356,12 @@ weapon_replaced_monitor( weapon )
|
|||||||
{
|
{
|
||||||
self notify( "player_lost_weapon_" + weapon );
|
self notify( "player_lost_weapon_" + weapon );
|
||||||
arrayremovevalue( self.wait_on_reload, weapon );
|
arrayremovevalue( self.wait_on_reload, weapon );
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_reload_fx( n_fraction )
|
electric_cherry_reload_fx( n_fraction ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( n_fraction >= 0.67 )
|
if ( n_fraction >= 0.67 )
|
||||||
{
|
{
|
||||||
@ -393,8 +379,11 @@ electric_cherry_reload_fx( n_fraction )
|
|||||||
self setclientfield( "electric_cherry_reload_fx", 0 );
|
self setclientfield( "electric_cherry_reload_fx", 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
electric_cherry_perk_lost()
|
electric_cherry_perk_lost() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self notify( "stop_electric_cherry_reload_attack" );
|
self notify( "stop_electric_cherry_reload_attack" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user