diff --git a/patch_zm/maps/mp/zombies/_zm_blockers.gsc b/patch_zm/maps/mp/zombies/_zm_blockers.gsc index 4385372..c71202f 100644 --- a/patch_zm/maps/mp/zombies/_zm_blockers.gsc +++ b/patch_zm/maps/mp/zombies/_zm_blockers.gsc @@ -13,7 +13,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { init_blockers(); if ( isDefined( level.quantum_bomb_register_result_func ) ) @@ -22,7 +22,7 @@ init() } } -init_blockers() +init_blockers() //checked matches cerberus output { level.exterior_goals = getstructarray( "exterior_goal", "targetname" ); array_thread( level.exterior_goals, ::blocker_init ); @@ -38,22 +38,20 @@ init_blockers() array_thread( flag_blockers, ::flag_blocker ); } -door_init() +door_init() //checked changed to match cerberus output { self.type = undefined; self.purchaser = undefined; self._door_open = 0; targets = getentarray( self.target, "targetname" ); - while ( isDefined( self.script_flag ) && !isDefined( level.flag[ self.script_flag ] ) ) + if ( isDefined( self.script_flag ) && !isDefined( level.flag[ self.script_flag ] ) ) { - while ( isDefined( self.script_flag ) ) + if ( isDefined( self.script_flag ) ) { tokens = strtok( self.script_flag, "," ); - i = 0; - while ( i < tokens.size ) + for ( i = 0; i < tokens.size; i++ ) { flag_init( self.script_flag ); - i++; } } } @@ -62,8 +60,7 @@ door_init() self.script_noteworthy = "default"; } self.doors = []; - i = 0; - while ( i < targets.size ) + for ( i = 0; i < targets.size; i++ ) { targets[ i ] door_classify( self ); if ( !isDefined( targets[ i ].og_origin ) ) @@ -71,7 +68,6 @@ door_init() targets[ i ].og_origin = targets[ i ].origin; targets[ i ].og_angles = targets[ i ].angles; } - i++; } cost = 1000; if ( isDefined( self.zombie_cost ) ) @@ -96,109 +92,96 @@ door_init() } return; } - else + else if ( self.script_noteworthy == "local_electric_door" ) { - if ( self.script_noteworthy == "local_electric_door" ) + if ( getDvar( "ui_gametype" ) == "zgrief" ) { - if ( getDvar( "ui_gametype" ) == "zgrief" ) - { - self setinvisibletoall(); - return; - } - self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); - if ( isDefined( level.door_dialog_function ) ) - { - self thread [[ level.door_dialog_function ]](); - } + self setinvisibletoall(); return; } - else + self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); + if ( isDefined( level.door_dialog_function ) ) { - if ( self.script_noteworthy == "kill_counter_door" ) - { - self sethintstring( &"ZOMBIE_DOOR_ACTIVATE_COUNTER", cost ); - return; - } + self thread [[ level.door_dialog_function ]](); } + return; + } + else if ( self.script_noteworthy == "kill_counter_door" ) + { + self sethintstring( &"ZOMBIE_DOOR_ACTIVATE_COUNTER", cost ); + return; } } self set_hint_string( self, "default_buy_door", cost ); } -door_classify( parent_trig ) +door_classify( parent_trig ) //checked changed to match cerberus output { if ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "clip" ) { parent_trig.clip = self; parent_trig.script_string = "clip"; break; -} -else -{ + } if ( !isDefined( self.script_string ) ) { if ( isDefined( self.script_angles ) ) { self.script_string = "rotate"; } - else + else if ( isDefined( self.script_vector ) ) { - if ( isDefined( self.script_vector ) ) - { - self.script_string = "move"; - } + self.script_string = "move"; } - break; -} -else if ( !isDefined( self.script_string ) ) -{ - self.script_string = ""; -} -switch( self.script_string ) -{ - case "anim": -/# - assert( isDefined( self.script_animname ), "Blocker_init: You must specify a script_animname for " + self.targetname ); -#/ -/# - assert( isDefined( level.scr_anim[ self.script_animname ] ), "Blocker_init: You must define a level.scr_anim for script_anim -> " + self.script_animname ); -#/ -/# - assert( isDefined( level.blocker_anim_func ), "Blocker_init: You must define a level.blocker_anim_func" ); -#/ - break; - case "counter_1s": - parent_trig.counter_1s = self; - return; + if ( !isDefined( self.script_string ) ) + { + self.script_string = ""; + } + switch( self.script_string ) + { + case "anim": + /* + /# + assert( isDefined( self.script_animname ), "Blocker_init: You must specify a script_animname for " + self.targetname ); + #/ + /# + assert( isDefined( level.scr_anim[ self.script_animname ] ), "Blocker_init: You must define a level.scr_anim for script_anim -> " + self.script_animname ); + #/ + /# + assert( isDefined( level.blocker_anim_func ), "Blocker_init: You must define a level.blocker_anim_func" ); + #/ + */ + break; + case "counter_1s": + parent_trig.counter_1s = self; + return; case "counter_10s": parent_trig.counter_10s = self; return; - case "counter_100s": - parent_trig.counter_100s = self; - return; - case "explosives": - if ( !isDefined( parent_trig.explosives ) ) - { - parent_trig.explosives = []; - } - parent_trig.explosives[ parent_trig.explosives.size ] = self; - return; + case "counter_100s": + parent_trig.counter_100s = self; + return; + case "explosives": + if ( !isDefined( parent_trig.explosives ) ) + { + parent_trig.explosives = []; } - } - if ( self.classname == "script_brushmodel" ) - { - self disconnectpaths(); - } - parent_trig.doors[ parent_trig.doors.size ] = self; + parent_trig.explosives[ parent_trig.explosives.size ] = self; + return; } + if ( self.classname == "script_brushmodel" ) + { + self disconnectpaths(); + } + parent_trig.doors[ parent_trig.doors.size ] = self; } -door_buy() +door_buy() //checked matches cerberus output { self waittill( "trigger", who, force ); if ( isDefined( level.custom_door_buy_check ) ) { - if ( !( who [[ level.custom_door_buy_check ]]( self ) ) ) + if ( !who [[ level.custom_door_buy_check ]]( self ) ) { return 0; } @@ -211,11 +194,11 @@ door_buy() { return 0; } - if ( who in_revive_trigger() ) + if ( who maps/mp/zombies/_zm_utility::in_revive_trigger() ) { return 0; } - if ( is_player_valid( who ) ) + if ( maps/mp/zombies/_zm_utility::is_player_valid( who ) ) { players = get_players(); cost = self.zombie_cost; @@ -256,15 +239,13 @@ door_buy() return 1; } -door_delay() +door_delay() //checked changed to match cerberus output { - while ( isDefined( self.explosives ) ) + if ( isDefined( self.explosives ) ) { - i = 0; - while ( i < self.explosives.size ) + for ( i = 0; i < self.explosives.size; i++ ) { self.explosives[ i ] show(); - i++; } } if ( !isDefined( self.script_int ) ) @@ -272,35 +253,31 @@ door_delay() self.script_int = 5; } all_trigs = getentarray( self.target, "target" ); - i = 0; - while ( i < all_trigs.size ) + for ( i = 0; i < all_trigs.size; i++ ) { all_trigs[ i ] trigger_off(); - i++; } wait self.script_int; - i = 0; - while ( i < self.script_int ) + for ( i = 0; i < self.script_int; i++ ) { + /* /# iprintln( self.script_int - i ); #/ + */ wait 1; - i++; } - while ( isDefined( self.explosives ) ) + if ( isDefined( self.explosives ) ) { - i = 0; - while ( i < self.explosives.size ) + for ( i = 0; i < self.explosives.size; i++ ) { playfx( level._effect[ "def_explosion" ], self.explosives[ i ].origin, anglesToForward( self.explosives[ i ].angles ) ); self.explosives[ i ] hide(); - i++; } } } -door_activate( time, open, quick, use_blocker_clip_for_pathing ) +door_activate( time, open, quick, use_blocker_clip_for_pathing ) //checked matches cerberus output { if ( !isDefined( open ) ) { @@ -316,7 +293,7 @@ door_activate( time, open, quick, use_blocker_clip_for_pathing ) } if ( isDefined( self.door_moving ) ) { - if ( isDefined( self.script_noteworthy ) || self.script_noteworthy == "clip" && isDefined( self.script_string ) && self.script_string == "clip" ) + if ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "clip" || isDefined( self.script_string ) && self.script_string == "clip" ) { if ( !is_true( use_blocker_clip_for_pathing ) ) { @@ -343,7 +320,7 @@ door_activate( time, open, quick, use_blocker_clip_for_pathing ) self connectpaths(); } } - if ( isDefined( self.script_noteworthy ) || self.script_noteworthy == "clip" && isDefined( self.script_string ) && self.script_string == "clip" ) + if ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "clip" || isDefined( self.script_string ) && self.script_string == "clip" ) { if ( !open ) { @@ -390,16 +367,16 @@ door_activate( time, open, quick, use_blocker_clip_for_pathing ) self thread disconnect_paths_when_done(); } } - wait randomfloat( 0,15 ); + wait randomfloat( 0.15 ); break; case "move": case "slide_apart": if ( isDefined( self.script_vector ) ) { vector = vectorScale( self.script_vector, scale ); - if ( time >= 0,5 ) + if ( time >= 0.5 ) { - self moveto( self.origin + vector, time, time * 0,25, time * 0,25 ); + self moveto( self.origin + vector, time, time * 0.25, time * 0.25 ); } else { @@ -411,16 +388,16 @@ door_activate( time, open, quick, use_blocker_clip_for_pathing ) self thread disconnect_paths_when_done(); } } - wait randomfloat( 0,15 ); + wait randomfloat( 0.15 ); break; case "anim": self [[ level.blocker_anim_func ]]( self.script_animname ); self thread door_solid_thread_anim(); - wait randomfloat( 0,15 ); + wait randomfloat( 0.15 ); break; case "physics": self thread physics_launch_door( self ); - wait 0,1; + wait 0.1; break; } if ( isDefined( self.script_firefx ) ) @@ -429,7 +406,7 @@ door_activate( time, open, quick, use_blocker_clip_for_pathing ) } } -kill_trapped_zombies( trigger ) +kill_trapped_zombies( trigger ) //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop continue bug { zombies = getaiarray( level.zombie_team ); if ( !isDefined( zombies ) ) @@ -448,117 +425,96 @@ kill_trapped_zombies( trigger ) { zombies[ i ].marked_for_recycle = 1; zombies[ i ] dodamage( zombies[ i ].health + 666, trigger.origin, self ); - wait randomfloat( 0,15 ); + wait randomfloat( 0.15 ); i++; continue; } - else + if ( isDefined( level.custom_trapped_zombies ) ) { - if ( isDefined( level.custom_trapped_zombies ) ) - { - zombies[ i ] thread [[ level.custom_trapped_zombies ]](); - wait randomfloat( 0,15 ); - } + zombies[ i ] thread [[ level.custom_trapped_zombies ]](); + wait randomfloat( 0.15 ); } i++; } } -any_player_touching( trigger ) +any_player_touching( trigger ) //checked changed to match cerberus output { - _a556 = get_players(); - _k556 = getFirstArrayKey( _a556 ); - while ( isDefined( _k556 ) ) + foreach ( player in get_players() ) { - player = _a556[ _k556 ]; if ( player istouching( trigger ) ) { return 1; } - wait 0,01; - _k556 = getNextArrayKey( _a556, _k556 ); + wait 0.01; } return 0; } -any_player_touching_any( trigger, more_triggers ) +any_player_touching_any( trigger, more_triggers ) //checked changed to match cerberus output { - _a567 = get_players(); - _k567 = getFirstArrayKey( _a567 ); - while ( isDefined( _k567 ) ) + foreach ( player in get_players() ) { - player = _a567[ _k567 ]; while ( is_player_valid( player, 0, 1 ) ) { if ( isDefined( trigger ) && player istouching( trigger ) ) { return 1; } - while ( isDefined( more_triggers ) && more_triggers.size > 0 ) + if ( isDefined( more_triggers ) && more_triggers.size > 0 ) { - _a574 = more_triggers; - _k574 = getFirstArrayKey( _a574 ); - while ( isDefined( _k574 ) ) + foreach ( trig in more_triggers ) { - trig = _a574[ _k574 ]; if ( isDefined( trig ) && player istouching( trig ) ) { return 1; } - _k574 = getNextArrayKey( _a574, _k574 ); } } } - _k567 = getNextArrayKey( _a567, _k567 ); } return 0; } -any_zombie_touching_any( trigger, more_triggers ) +any_zombie_touching_any( trigger, more_triggers ) //checked changed to match cerberus output { zombies = getaiarray( level.zombie_team ); - _a586 = zombies; - _k586 = getFirstArrayKey( _a586 ); - while ( isDefined( _k586 ) ) + foreach ( zombie in zombies ) { - zombie = _a586[ _k586 ]; if ( isDefined( trigger ) && zombie istouching( trigger ) ) { return 1; } - while ( isDefined( more_triggers ) && more_triggers.size > 0 ) + if ( isDefined( more_triggers ) && more_triggers.size > 0 ) { - _a591 = more_triggers; - _k591 = getFirstArrayKey( _a591 ); - while ( isDefined( _k591 ) ) + foreach ( trig in more_triggers ) { - trig = _a591[ _k591 ]; if ( isDefined( trig ) && zombie istouching( trig ) ) { return 1; } - _k591 = getNextArrayKey( _a591, _k591 ); } } - _k586 = getNextArrayKey( _a586, _k586 ); } return 0; } -wait_trigger_clear( trigger, more_triggers, end_on ) +wait_trigger_clear( trigger, more_triggers, end_on ) //checked matches cerberus output { self endon( end_on ); while ( any_player_touching_any( trigger, more_triggers ) || any_zombie_touching_any( trigger, more_triggers ) ) { wait 1; } + /* /# println( "ZM BLOCKER local door trigger clear\n" ); #/ + */ self notify( "trigger_clear" ); } -waittill_door_trigger_clear_local_power_off( trigger, all_trigs ) +waittill_door_trigger_clear_local_power_off( trigger, all_trigs ) //checked matches cerberus output { self endon( "trigger_clear" ); while ( 1 ) @@ -567,14 +523,16 @@ waittill_door_trigger_clear_local_power_off( trigger, all_trigs ) { self waittill( "local_power_off" ); } + /* /# println( "ZM BLOCKER local door power off\n" ); #/ + */ self wait_trigger_clear( trigger, all_trigs, "local_power_on" ); } } -waittill_door_trigger_clear_global_power_off( trigger, all_trigs ) +waittill_door_trigger_clear_global_power_off( trigger, all_trigs ) //checked matches cerberus output { self endon( "trigger_clear" ); while ( 1 ) @@ -583,14 +541,16 @@ waittill_door_trigger_clear_global_power_off( trigger, all_trigs ) { self waittill( "power_off" ); } + /* /# println( "ZM BLOCKER global door power off\n" ); #/ + */ self wait_trigger_clear( trigger, all_trigs, "power_on" ); } } -waittill_door_can_close() +waittill_door_can_close() //checked changed to match cerberus output { trigger = undefined; if ( isDefined( self.door_hold_trigger ) ) @@ -598,7 +558,7 @@ waittill_door_can_close() trigger = getent( self.door_hold_trigger, "targetname" ); } all_trigs = getentarray( self.target, "target" ); - switch( self.script_noteworthy ) + switch ( self.script_noteworthy ) { case "local_electric_door": if ( isDefined( trigger ) || isDefined( all_trigs ) ) @@ -606,36 +566,29 @@ waittill_door_can_close() self waittill_door_trigger_clear_local_power_off( trigger, all_trigs ); self thread kill_trapped_zombies( trigger ); } - else + else if ( isDefined( self.local_power_on ) && self.local_power_on ) { - if ( isDefined( self.local_power_on ) && self.local_power_on ) - { - self waittill( "local_power_off" ); - } + self waittill( "local_power_off" ); } return; - case "electric_door": - if ( isDefined( trigger ) || isDefined( all_trigs ) ) + case "electric_door": + if ( isDefined( trigger ) || isDefined( all_trigs ) ) + { + self waittill_door_trigger_clear_global_power_off( trigger, all_trigs ); + if ( isDefined( trigger ) ) { - self waittill_door_trigger_clear_global_power_off( trigger, all_trigs ); - if ( isDefined( trigger ) ) - { - self thread kill_trapped_zombies( trigger ); - } + self thread kill_trapped_zombies( trigger ); } - else - { - if ( isDefined( self.power_on ) && self.power_on ) - { - self waittill( "power_off" ); - } - } - return; - } + } + else if ( isDefined( self.power_on ) && self.power_on ) + { + self waittill( "power_off" ); + } + return; } } -door_think() +door_think() //checked changed to match cerberus output { self endon( "kill_door_think" ); cost = 1000; @@ -644,118 +597,124 @@ door_think() cost = self.zombie_cost; } self sethintlowpriority( 1 ); - for ( ;; ) + while ( 1 ) { - while ( 1 ) + switch ( self.script_noteworthy ) { - switch( self.script_noteworthy ) - { - case "local_electric_door": - if ( isDefined( self.local_power_on ) && !self.local_power_on ) - { - self waittill( "local_power_on" ); - } - if ( isDefined( self._door_open ) && !self._door_open ) - { -/# - println( "ZM BLOCKER local door opened\n" ); -#/ - self door_opened( cost, 1 ); - if ( !isDefined( self.power_cost ) ) - { - self.power_cost = 0; - } - self.power_cost += 200; - } - self sethintstring( "" ); - if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) - { - return; - } - wait 3; - self waittill_door_can_close(); - self door_block(); - if ( isDefined( self._door_open ) && self._door_open ) - { -/# - println( "ZM BLOCKER local door closed\n" ); -#/ - self door_opened( cost, 1 ); - } - self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); - wait 3; + case "local_electric_door": + if ( isDefined( self.local_power_on ) && !self.local_power_on ) + { + self waittill( "local_power_on" ); } - case "electric_door": - if ( isDefined( self.power_on ) && !self.power_on ) - { - self waittill( "power_on" ); - } - if ( isDefined( self._door_open ) && !self._door_open ) - { + if ( isDefined( self._door_open ) && !self._door_open ) + { + /* /# - println( "ZM BLOCKER global door opened\n" ); + println( "ZM BLOCKER local door opened\n" ); #/ - self door_opened( cost, 1 ); - if ( !isDefined( self.power_cost ) ) - { - self.power_cost = 0; - } - self.power_cost += 200; - } - self sethintstring( "" ); - if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) + */ + self door_opened( cost, 1 ); + if ( !isDefined( self.power_cost ) ) { - return; + self.power_cost = 0; } - wait 3; - self waittill_door_can_close(); - self door_block(); - if ( isDefined( self._door_open ) && self._door_open ) - { -/# - println( "ZM BLOCKER global door closed\n" ); -#/ - self door_opened( cost, 1 ); - } - self sethintstring( &"ZOMBIE_NEED_POWER" ); - wait 3; + self.power_cost += 200; } - case "electric_buyable_door": - flag_wait( "power_on" ); - self set_hint_string( self, "default_buy_door", cost ); - while ( !self door_buy() ) - { - continue; - } - case "delay_door": - while ( !self door_buy() ) - { - continue; - } - self door_delay(); - break; - default: - if ( isDefined( level._default_door_custom_logic ) ) - { - self [[ level._default_door_custom_logic ]](); - break; - } - else while ( !self door_buy() ) - { - continue; - } - } - self door_opened( cost ); - if ( !flag( "door_can_close" ) ) + self sethintstring( "" ); + if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) { return; } - else } - } + wait 3; + self waittill_door_can_close(); + self door_block(); + if ( isDefined( self._door_open ) && self._door_open ) + { + /* +/# + println( "ZM BLOCKER local door closed\n" ); +#/ + */ + self door_opened( cost, 1 ); + } + self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); + wait 3; + continue; + case "electric_door": + if ( isDefined( self.power_on ) && !self.power_on ) + { + self waittill( "power_on" ); + } + if ( isDefined( self._door_open ) && !self._door_open ) + { + /* +/# + println( "ZM BLOCKER global door opened\n" ); +#/ + */ + self door_opened( cost, 1 ); + if ( !isDefined( self.power_cost ) ) + { + self.power_cost = 0; + } + self.power_cost += 200; + } + self sethintstring( "" ); + if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) + { + return; + } + wait 3; + self waittill_door_can_close(); + self door_block(); + if ( isDefined( self._door_open ) && self._door_open ) + { + /* +/# + println( "ZM BLOCKER global door closed\n" ); +#/ + */ + self door_opened( cost, 1 ); + } + self sethintstring( &"ZOMBIE_NEED_POWER" ); + wait 3; + continue; + case "electric_buyable_door": + flag_wait( "power_on" ); + self set_hint_string( self, "default_buy_door", cost ); + if ( !self door_buy() ) + { + continue; + } + break; + case "delay_door": + if ( !self door_buy() ) + { + continue; + } + self door_delay(); + break; + default: + if ( isDefined( level._default_door_custom_logic ) ) + { + self [[ level._default_door_custom_logic ]](); + break; + } + if ( !self door_buy() ) + { + continue; + } + break; + } + self door_opened( cost ); + if ( !flag( "door_can_close" ) ) + { + break; + } } } -self_and_flag_wait( msg ) +self_and_flag_wait( msg ) //checked matches cerberus output { self endon( msg ); if ( isDefined( self.power_door_ignore_flag_wait ) && self.power_door_ignore_flag_wait ) @@ -768,23 +727,21 @@ self_and_flag_wait( msg ) } } -door_block() +door_block() //checked changed to match cerberus output { - while ( isDefined( self.doors ) ) + if ( isDefined( self.doors ) ) { - i = 0; - while ( i < self.doors.size ) + for ( i = 0; i < self.doors.size; i++ ) { - if ( isDefined( self.doors[ i ].script_noteworthy ) || self.doors[ i ].script_noteworthy == "clip" && isDefined( self.doors[ i ].script_string ) && self.doors[ i ].script_string == "clip" ) + if ( isDefined( self.doors[ i ].script_noteworthy ) && self.doors[ i ].script_noteworthy == "clip" || isDefined( self.doors[ i ].script_string ) && self.doors[ i ].script_string == "clip" ) { self.doors[ i ] solid(); } - i++; } } } -door_opened( cost, quick_close ) +door_opened( cost, quick_close ) //checked partially changed to match cerberus output //did not foreach to prevent infinite loop with continues { if ( isDefined( self.door_is_moving ) && self.door_is_moving ) { @@ -793,64 +750,56 @@ door_opened( cost, quick_close ) self.has_been_opened = 1; all_trigs = getentarray( self.target, "target" ); self.door_is_moving = 1; - _a848 = all_trigs; - _k848 = getFirstArrayKey( _a848 ); - while ( isDefined( _k848 ) ) + j = 0; + while ( j < all_trigs.size ) { - trig = _a848[ _k848 ]; - trig.door_is_moving = 1; - trig trigger_off(); - trig.has_been_opened = 1; - if ( !isDefined( trig._door_open ) || trig._door_open == 0 ) + all_trigs[ j ].door_is_moving = 1; + all_trigs[ j ] trigger_off(); + all_trigs[ j ].has_been_opened = 1; + if ( !isDefined( all_trigs[ j ]._door_open ) || all_trigs[ j ]._door_open == 0 ) { - trig._door_open = 1; - trig notify( "door_opened" ); + all_trigs[ j ]._door_open = 1; + all_trigs[ j ] notify( "door_opened" ); level thread maps/mp/zombies/_zm_audio::sndmusicstingerevent( "door_open" ); } else { - trig._door_open = 0; + all_trigs[ j ]._door_open = 0; } - if ( isDefined( trig.script_flag ) && trig._door_open == 1 ) + if ( isDefined( all_trigs[ j ].script_flag ) && all_trigs[ j ]._door_open == 1 ) { - tokens = strtok( trig.script_flag, "," ); - i = 0; - while ( i < tokens.size ) + tokens = strtok( all_trigs[ j ].script_flag, "," ); + for ( i = 0; i < tokens.size; i++ ) { flag_set( tokens[ i ] ); - i++; } + break; } - else while ( isDefined( trig.script_flag ) && trig._door_open == 0 ) + if ( isDefined( all_trigs[ j ].script_flag ) && all_trigs[ j ]._door_open == 0 ) { - tokens = strtok( trig.script_flag, "," ); - i = 0; - while ( i < tokens.size ) + tokens = strtok( all_trigs[ j ].script_flag, "," ); + for ( i = 0; i < tokens.size; i++ ) { flag_clear( tokens[ i ] ); - i++; } } - if ( isDefined( quick_close ) && quick_close ) + else if ( isDefined( quick_close ) && quick_close ) { - trig set_hint_string( trig, "" ); + all_trigs[ j ] set_hint_string( all_trigs[ j ], "" ); + j++; + continue; } - else + if ( all_trigs[ j ]._door_open == 1 && flag( "door_can_close" ) ) { - if ( trig._door_open == 1 && flag( "door_can_close" ) ) - { - trig set_hint_string( trig, "default_buy_door_close" ); - break; - } - else - { - if ( trig._door_open == 0 ) - { - trig set_hint_string( trig, "default_buy_door", cost ); - } - } + all_trigs[ j ] set_hint_string( all_trigs[ j ], "default_buy_door_close" ); + j++; + continue; } - _k848 = getNextArrayKey( _a848, _k848 ); + if ( all_trigs[ j ]._door_open == 0 ) + { + all_trigs[ j ] set_hint_string( all_trigs[ j ], "default_buy_door", cost ); + } + j++; } level notify( "door_opened" ); if ( isDefined( self.doors ) ) @@ -858,37 +807,32 @@ door_opened( cost, quick_close ) is_script_model_door = 0; have_moving_clip_for_door = 0; use_blocker_clip_for_pathing = 0; - _a905 = self.doors; - _k905 = getFirstArrayKey( _a905 ); - while ( isDefined( _k905 ) ) - { - door = _a905[ _k905 ]; - if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) ) - { - } - else if ( door.classname == "script_model" ) - { - is_script_model_door = 1; - } - else - { - if ( door.classname == "script_brushmodel" && isDefined( door.script_noteworthy ) && door.script_noteworthy != "clip" || !isDefined( door.script_string ) && door.script_string != "clip" ) - { - have_moving_clip_for_door = 1; - } - } - _k905 = getNextArrayKey( _a905, _k905 ); - } - if ( is_script_model_door ) - { - use_blocker_clip_for_pathing = !have_moving_clip_for_door; - } i = 0; while ( i < self.doors.size ) { - self.doors[ i ] thread door_activate( self.doors[ i ].script_transition_time, self._door_open, quick_close, use_blocker_clip_for_pathing ); + if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) ) + { + i++; + continue; + } + if ( door.classname == "script_model" ) + { + is_script_model_door = 1; + } + if ( door.classname == "script_brushmodel" && isDefined( door.script_noteworthy ) && door.script_noteworthy != "clip" || !isDefined( door.script_string ) && door.script_string != "clip" ) + { + have_moving_clip_for_door = 1; + } i++; } + if ( is_script_model_door && !have_moving_clip_for_door ) + { + use_blocker_clip_for_pathing = 1; + } + for ( i = 0; i < self.doors.size; i++ ) + { + self.doors[ i ] thread door_activate( self.doors[ i ].script_transition_time, self._door_open, quick_close, use_blocker_clip_for_pathing ); + } if ( self.doors.size ) { play_sound_at_pos( "purchase", self.doors[ 0 ].origin ); @@ -897,49 +841,41 @@ door_opened( cost, quick_close ) level.active_zone_names = maps/mp/zombies/_zm_zonemgr::get_active_zone_names(); wait 1; self.door_is_moving = 0; - _a948 = all_trigs; - _k948 = getFirstArrayKey( _a948 ); - while ( isDefined( _k948 ) ) + foreach ( trig in all_trigs ) { - trig = _a948[ _k948 ]; trig.door_is_moving = 0; - _k948 = getNextArrayKey( _a948, _k948 ); } if ( isDefined( quick_close ) && quick_close ) { - i = 0; - while ( i < all_trigs.size ) + for ( i = 0; i < all_trigs.size; i++ ) { all_trigs[ i ] trigger_on(); - i++; } return; } - while ( flag( "door_can_close" ) ) + if ( flag( "door_can_close" ) ) { wait 2; - i = 0; - while ( i < all_trigs.size ) + for ( i = 0; i < all_trigs.size; i++ ) { all_trigs[ i ] trigger_on(); - i++; } } } -physics_launch_door( door_trig ) +physics_launch_door( door_trig ) //checked matches cerberus output { vec = vectorScale( vectornormalize( self.script_vector ), 10 ); - self rotateroll( 5, 0,05 ); - wait 0,05; - self moveto( self.origin + vec, 0,1 ); + self rotateroll( 5, 0.05 ); + wait 0.05; + self moveto( self.origin + vec, 0.1 ); self waittill( "movedone" ); self physicslaunch( self.origin, self.script_vector * 300 ); wait 60; self delete(); } -door_solid_thread() +door_solid_thread() //checked changed to match cerberus output { self waittill_either( "rotatedone", "movedone" ); self.door_moving = undefined; @@ -947,18 +883,13 @@ door_solid_thread() { players = get_players(); player_touching = 0; - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( players[ i ] istouching( self ) ) { player_touching = 1; break; } - else - { - i++; - } } if ( !player_touching ) { @@ -969,7 +900,7 @@ door_solid_thread() } } -door_solid_thread_anim() +door_solid_thread_anim() //checked changed to match cerberus output { self waittillmatch( "door_anim" ); return "end"; @@ -978,18 +909,13 @@ door_solid_thread_anim() { players = get_players(); player_touching = 0; - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( players[ i ] istouching( self ) ) { player_touching = 1; break; } - else - { - i++; - } } if ( !player_touching ) { @@ -1000,18 +926,18 @@ door_solid_thread_anim() } } -disconnect_paths_when_done() +disconnect_paths_when_done() //checked matches cerberus output { self waittill_either( "rotatedone", "movedone" ); self disconnectpaths(); } -self_disconnectpaths() +self_disconnectpaths() //checked matches cerberus output { self disconnectpaths(); } -debris_init() +debris_init() //checked matches cerberus output { cost = 1000; if ( isDefined( self.zombie_cost ) ) @@ -1027,62 +953,53 @@ debris_init() self thread debris_think(); } -debris_think() +debris_think() //partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop bug due to continue { if ( isDefined( level.custom_debris_function ) ) { self [[ level.custom_debris_function ]](); } - for ( ;; ) + while ( 1 ) { - while ( 1 ) + self waittill( "trigger", who, force ); + if ( getDvarInt( "zombie_unlock_all" ) > 0 || isDefined( force ) && force ) { - self waittill( "trigger", who, force ); - if ( getDvarInt( "zombie_unlock_all" ) > 0 || isDefined( force ) && force ) + } + else if ( !who usebuttonpressed() ) + { + continue; + } + if ( who maps/mp/zombies/_zm_utility::in_revive_trigger() ) + { + continue; + } + if ( maps/mp/zombies/_zm_utility::is_player_valid( who ) ) + { + players = get_players(); + if ( getDvarInt( "zombie_unlock_all" ) > 0 ) { } + else if ( who.score >= self.zombie_cost ) + { + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + maps/mp/_demo::bookmark( "zm_player_door", getTime(), who ); + who maps/mp/zombies/_zm_stats::increment_client_stat( "doors_purchased" ); + who maps/mp/zombies/_zm_stats::increment_player_stat( "doors_purchased" ); + } else { - while ( !who usebuttonpressed() ) - { - continue; - } - while ( who in_revive_trigger() ) - { - continue; - } - } - if ( is_player_valid( who ) ) - { - players = get_players(); - if ( getDvarInt( "zombie_unlock_all" ) > 0 ) - { - break; - } - else if ( who.score >= self.zombie_cost ) - { - who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); - maps/mp/_demo::bookmark( "zm_player_door", getTime(), who ); - who maps/mp/zombies/_zm_stats::increment_client_stat( "doors_purchased" ); - who maps/mp/zombies/_zm_stats::increment_player_stat( "doors_purchased" ); - break; - } - else - { - play_sound_at_pos( "no_purchase", self.origin ); - who maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny" ); - } + play_sound_at_pos( "no_purchase", self.origin ); + who maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny" ); + continue; } bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", who.name, who.score, level.round_number, self.zombie_cost, self.script_flag, self.origin, "door" ); junk = getentarray( self.target, "targetname" ); while ( isDefined( self.script_flag ) ) { tokens = strtok( self.script_flag, "," ); - i = 0; - while ( i < tokens.size ) + for ( i = 0; i < tokens.size; i++ ) { flag_set( tokens[ i ] ); - i++; } } play_sound_at_pos( "purchase", self.origin ); @@ -1102,7 +1019,7 @@ debris_think() continue; } } - else struct = undefined; + struct = undefined; if ( isDefined( junk[ i ].script_linkto ) ) { struct = getstruct( junk[ i ].script_linkto, "script_linkname" ); @@ -1118,18 +1035,13 @@ debris_think() i++; continue; } - else - { - junk[ i ] delete(); - } + junk[ i ] delete(); i++; } all_trigs = getentarray( self.target, "target" ); - i = 0; - while ( i < all_trigs.size ) + for ( i = 0; i < all_trigs.size; i++ ) { all_trigs[ i ] delete(); - i++; } if ( isDefined( clip ) ) { @@ -1139,15 +1051,12 @@ debris_think() } clip delete(); } - return; - } - else - { + break; } } } -debris_move( struct ) +debris_move( struct ) //checked changed to match cerberus output { self script_delay(); self notsolid(); @@ -1157,30 +1066,28 @@ debris_move( struct ) { playfx( level._effect[ self.script_firefx ], self.origin ); } - while ( isDefined( self.script_noteworthy ) ) + if ( isDefined( self.script_noteworthy ) ) { - while ( self.script_noteworthy == "jiggle" ) + if ( self.script_noteworthy == "jiggle" ) { num = randomintrange( 3, 5 ); og_angles = self.angles; - i = 0; - while ( i < num ) + for ( i = 0; i < num; i++ ) { angles = og_angles + ( -5 + randomfloat( 10 ), -5 + randomfloat( 10 ), -5 + randomfloat( 10 ) ); - time = randomfloatrange( 0,1, 0,4 ); + time = randomfloatrange( 0.1, 0.4 ); self rotateto( angles, time ); - wait ( time - 0,05 ); - i++; + wait ( time - 0.05 ); } } } - time = 0,5; + time = 0.5; if ( isDefined( self.script_transition_time ) ) { time = self.script_transition_time; } - self moveto( struct.origin, time, time * 0,5 ); - self rotateto( struct.angles, time * 0,75 ); + self moveto( struct.origin, time, time * 0.5 ); + self rotateto( struct.angles, time * 0.75 ); self waittill( "movedone" ); if ( isDefined( self.script_fxid ) ) { @@ -1190,15 +1097,15 @@ debris_move( struct ) self delete(); } -blocker_disconnect_paths( start_node, end_node, two_way ) +blocker_disconnect_paths( start_node, end_node, two_way ) //checked matches cerberus output { } -blocker_connect_paths( start_node, end_node, two_way ) +blocker_connect_paths( start_node, end_node, two_way ) //checked matches cerberus output { } -blocker_init() +blocker_init() //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop caused by continue { if ( !isDefined( self.target ) ) { @@ -1217,15 +1124,9 @@ blocker_init() j++; continue; } - else self.zbarrier = targets[ j ]; + self.zbarrier = targets[ j ]; if ( isDefined( level.zbarrier_script_string_sets_collision ) && level.zbarrier_script_string_sets_collision ) { - if ( isDefined( self.zbarrier.script_string ) ) - { - } - else - { - } m_collision = "p6_anim_zm_barricade_board_collision"; } else @@ -1235,14 +1136,12 @@ blocker_init() precachemodel( m_collision ); self.zbarrier setzbarriercolmodel( m_collision ); self.zbarrier.chunk_health = []; - i = 0; - while ( i < self.zbarrier getnumzbarrierpieces() ) + for ( i = 0; i < self.zbarrier getnumzbarrierpieces(); i++ ) { self.zbarrier.chunk_health[ i ] = 0; - i++; } } - else if ( isDefined( targets[ j ].script_string ) && targets[ j ].script_string == "rock" ) + if ( isDefined( targets[ j ].script_string ) && targets[ j ].script_string == "rock" ) { targets[ j ].material = "rock"; } @@ -1252,15 +1151,16 @@ blocker_init() { if ( isDefined( targets[ j ].script_noteworthy ) ) { - if ( targets[ j ].script_noteworthy != "2" && targets[ j ].script_noteworthy != "3" && targets[ j ].script_noteworthy != "4" || targets[ j ].script_noteworthy == "5" && targets[ j ].script_noteworthy == "6" ) + if ( targets[ j ].script_noteworthy == "2" || targets[ j ].script_noteworthy == "3" || targets[ j ].script_noteworthy == "4" || targets[ j ].script_noteworthy == "5" || targets[ j ].script_noteworthy == "6" ) { targets[ j ] hide(); + /* /# iprintlnbold( " Hide " ); #/ + */ } } - break; } else if ( targets[ j ].script_parameters == "repair_board" ) { @@ -1275,24 +1175,16 @@ blocker_init() { targets[ j ].material = "glass"; targets[ j ] thread destructible_glass_barricade( targets[ j ].unbroken_section, self ); - break; } - else + else if ( isDefined( targets[ j ].unbroken_section.script_noteworthy ) && targets[ j ].unbroken_section.script_noteworthy == "metal" ) { - if ( isDefined( targets[ j ].unbroken_section.script_noteworthy ) && targets[ j ].unbroken_section.script_noteworthy == "metal" ) - { - targets[ j ].material = "metal"; - } + targets[ j ].material = "metal"; } } - break; } - else + else if ( targets[ j ].script_parameters == "barricade_vents" ) { - if ( targets[ j ].script_parameters == "barricade_vents" ) - { - targets[ j ].material = "metal_vent"; - } + targets[ j ].material = "metal_vent"; } } if ( isDefined( targets[ j ].targetname ) ) @@ -1312,8 +1204,7 @@ blocker_init() j++; } target_nodes = getnodearray( self.target, "targetname" ); - j = 0; - while ( j < target_nodes.size ) + for ( j = 0; j < target_nodes.size; j++ ) { if ( target_nodes[ j ].type == "Begin" ) { @@ -1324,17 +1215,14 @@ blocker_init() } blocker_disconnect_paths( self.neg_start, self.neg_end ); } - j++; } if ( isDefined( self.zbarrier ) ) { if ( isDefined( self.barrier_chunks ) ) { - i = 0; - while ( i < self.barrier_chunks.size ) + for ( i = 0; i < self.barrier_chunks.size; i++ ) { self.barrier_chunks[ i ] delete(); - i++; } self.barrier_chunks = []; } @@ -1350,22 +1238,22 @@ blocker_init() self thread blocker_think(); } -should_delete_zbarriers() +should_delete_zbarriers() //checked matches cerberus output { gametype = getDvar( "ui_gametype" ); - if ( !is_classic() && !is_standard() && gametype != "zgrief" ) + if ( !maps/mp/zombies/_zm_utility::is_classic() && !maps/mp/zombies/_zm_utility::is_standard() && gametype != "zgrief" ) { return 1; } return 0; } -destructible_glass_barricade( unbroken_section, node ) +destructible_glass_barricade( unbroken_section, node ) //checked matches cerberus output { unbroken_section setcandamage( 1 ); unbroken_section.health = 99999; unbroken_section waittill( "damage", amount, who ); - if ( is_player_valid( who ) || who maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + if ( maps/mp/zombies/_zm_utility::is_player_valid( who ) || who maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) { self thread maps/mp/zombies/_zm_spawner::zombie_boardtear_offset_fx_horizontle( self, node ); level thread remove_chunk( self, node, 1 ); @@ -1375,59 +1263,57 @@ destructible_glass_barricade( unbroken_section, node ) } } -blocker_attack_spots() +blocker_attack_spots() //checked changed to match cerberus output //may need to review order of operations { spots = []; numslots = self.zbarrier getzbarriernumattackslots(); numslots = int( max( numslots, 1 ) ); if ( numslots % 2 ) { - spots[ spots.size ] = groundpos_ignore_water_new( self.zbarrier.origin + vectorScale( ( -1, 0, 0 ), 60 ) ); + spots[ spots.size ] = groundpos_ignore_water_new( self.zbarrier.origin + vectorScale( ( 0, 0, 1 ), 60 ) ); } - while ( numslots > 1 ) + if ( numslots > 1 ) { reps = floor( numslots / 2 ); slot = 1; - i = 0; - while ( i < reps ) + for ( i = 0; i < reps; i++ ) { offset = self.zbarrier getzbarrierattackslothorzoffset() * ( i + 1 ); - spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * offset ) + vectorScale( ( -1, 0, 0 ), 60 ) ); + spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * offset ) + vectorScale( ( 0, 0, 1 ), 60 ) ); slot++; if ( slot < numslots ) { - spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * ( offset * -1 ) ) + vectorScale( ( -1, 0, 0 ), 60 ) ); + spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * ( offset * -1 ) ) + vectorScale( ( 0, 0, 1 ), 60 ) ); slot++; } - i++; } } taken = []; - i = 0; - while ( i < spots.size ) + for ( i = 0; i < spots.size; i++ ) { taken[ i ] = 0; - i++; } self.attack_spots_taken = taken; self.attack_spots = spots; + /* /# self thread debug_attack_spots_taken(); #/ + */ } -blocker_choke() +blocker_choke() //checked matches cerberus output { level._blocker_choke = 0; level endon( "stop_blocker_think" ); while ( 1 ) { - wait 0,05; + wait 0.05; level._blocker_choke = 0; } } -blocker_think() +blocker_think() //checked changed to match cerberus output { level endon( "stop_blocker_think" ); if ( !isDefined( level._blocker_choke ) ) @@ -1441,20 +1327,20 @@ blocker_think() } while ( 1 ) { - wait 0,5; + wait 0.5; if ( use_choke ) { if ( level._blocker_choke > 3 ) { - wait 0,05; + wait 0.05; } } level._blocker_choke++; - while ( all_chunks_intact( self, self.barrier_chunks ) ) + if ( all_chunks_intact( self, self.barrier_chunks ) ) { continue; } - while ( no_valid_repairable_boards( self, self.barrier_chunks ) ) + if ( no_valid_repairable_boards( self, self.barrier_chunks ) ) { continue; } @@ -1462,13 +1348,13 @@ blocker_think() } } -player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_required ) +player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_required ) //checked matches cerberus output { if ( !isDefined( trigger ) ) { return 1; } - if ( !is_player_valid( player ) ) + if ( !maps/mp/zombies/_zm_utility::is_player_valid( player ) ) { return 1; } @@ -1484,14 +1370,14 @@ player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_req { return 1; } - if ( player in_revive_trigger() ) + if ( player maps/mp/zombies/_zm_utility::in_revive_trigger() ) { return 1; } return 0; } -has_blocker_affecting_perk() +has_blocker_affecting_perk() //checked matches cerberus output { has_perk = undefined; if ( self hasperk( "specialty_fastreload" ) ) @@ -1501,7 +1387,7 @@ has_blocker_affecting_perk() return has_perk; } -do_post_chunk_repair_delay( has_perk ) +do_post_chunk_repair_delay( has_perk ) //checked matches cerberus output { if ( !self script_delay() ) { @@ -1509,7 +1395,7 @@ do_post_chunk_repair_delay( has_perk ) } } -handle_post_board_repair_rewards( cost, zbarrier ) +handle_post_board_repair_rewards( cost, zbarrier ) //checked matches cerberus output { self maps/mp/zombies/_zm_stats::increment_client_stat( "boards" ); self maps/mp/zombies/_zm_stats::increment_player_stat( "boards" ); @@ -1530,26 +1416,28 @@ handle_post_board_repair_rewards( cost, zbarrier ) } } -blocker_unitrigger_think() +blocker_unitrigger_think() //checked matches cerberus output { self endon( "kill_trigger" ); while ( 1 ) { self waittill( "trigger", player ); - self.stub.trigger_target notify( "trigger" ); + self.stub.trigger_target notify( "trigger", player ); } } -blocker_trigger_think() +blocker_trigger_think() //checked changed to match cerberus output { self endon( "blocker_hacked" ); if ( isDefined( level.no_board_repair ) && level.no_board_repair ) { return; } + /* /# println( "ZM >> TRIGGER blocker_trigger_think " ); #/ + */ level endon( "stop_blocker_think" ); cost = 10; if ( isDefined( self.zombie_cost ) ) @@ -1559,8 +1447,8 @@ blocker_trigger_think() original_cost = cost; if ( !isDefined( self.unitrigger_stub ) ) { - radius = 94,21; - height = 94,21; + radius = 94.21; + height = 94.21; if ( isDefined( self.trigger_location ) ) { trigger_location = self.trigger_location; @@ -1577,7 +1465,7 @@ blocker_trigger_think() { height = trigger_location.height; } - trigger_pos = groundpos( trigger_location.origin ) + vectorScale( ( -1, 0, 0 ), 4 ); + trigger_pos = groundpos( trigger_location.origin ) + vectorScale( ( 0, 0, 1 ), 4 ); self.unitrigger_stub = spawnstruct(); self.unitrigger_stub.origin = trigger_pos; self.unitrigger_stub.radius = radius; @@ -1590,18 +1478,20 @@ blocker_trigger_think() maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); if ( !isDefined( trigger_location.angles ) ) { - trigger_location.angles = ( -1, 0, 0 ); + trigger_location.angles = ( 0, 0, 0 ); } - self.unitrigger_stub.origin = ( groundpos( trigger_location.origin ) + vectorScale( ( -1, 0, 0 ), 4 ) ) + ( anglesToForward( trigger_location.angles ) * -11 ); + self.unitrigger_stub.origin = ( groundpos( trigger_location.origin ) + vectorScale( ( 0, 0, 1 ), 4 ) ) + ( anglesToForward( trigger_location.angles ) * -11 ); } self thread trigger_delete_on_repair(); thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::blocker_unitrigger_think ); + /* /# if ( getDvarInt( "zombie_debug" ) > 0 ) { thread debug_blocker( trigger_pos, radius, height ); #/ } + */ while ( 1 ) { self waittill( "trigger", player ); @@ -1630,7 +1520,7 @@ blocker_trigger_think() { break; } - else if ( isDefined( self.zbarrier ) ) + if ( isDefined( self.zbarrier ) ) { chunk = get_random_destroyed_chunk( self, self.barrier_chunks ); if ( isDefined( player.pers_upgrades_awarded[ "board" ] ) ) @@ -1662,13 +1552,13 @@ blocker_trigger_think() { chunk play_sound_on_ent( "rebuild_barrier_piece" ); } - playsoundatposition( "zmb_cha_ching", ( -1, 0, 0 ) ); + playsoundatposition( "zmb_cha_ching", ( 0, 0, 0 ) ); } } if ( chunk.script_parameters == "bar" ) { chunk play_sound_on_ent( "rebuild_barrier_piece" ); - playsoundatposition( "zmb_cha_ching", ( -1, 0, 0 ) ); + playsoundatposition( "zmb_cha_ching", ( 0, 0, 0 ) ); } if ( isDefined( chunk.script_parameters ) ) { @@ -1681,12 +1571,9 @@ blocker_trigger_think() chunk hide(); break; } - else + else if ( chunk.script_noteworthy == "3" ) { - if ( chunk.script_noteworthy == "3" ) - { - chunk hide(); - } + chunk hide(); } } } @@ -1711,35 +1598,31 @@ blocker_trigger_think() { break; } - else + player handle_post_board_repair_rewards( cost, self ); + if ( all_chunks_intact( self, self.barrier_chunks ) ) { - player handle_post_board_repair_rewards( cost, self ); - if ( all_chunks_intact( self, self.barrier_chunks ) ) - { - self notify( "all_boards_repaired" ); - return; - } - if ( no_valid_repairable_boards( self, self.barrier_chunks ) ) - { - self notify( "no valid boards" ); - return; - } + self notify( "all_boards_repaired" ); + return; + } + if ( no_valid_repairable_boards( self, self.barrier_chunks ) ) + { + self notify( "no valid boards" ); + return; } } } } -random_destroyed_chunk_show() +random_destroyed_chunk_show() //checked matches cerberus output { - wait 0,5; + wait 0.5; self show(); } -door_repaired_rumble_n_sound() +door_repaired_rumble_n_sound() //checked changed to match cerberus output { players = get_players(); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( distance( players[ i ].origin, self.origin ) < 150 ) { @@ -1748,36 +1631,35 @@ door_repaired_rumble_n_sound() players[ i ] thread board_completion(); } } - i++; } } -board_completion() +board_completion() //checked matches cerberus output { self endon( "disconnect" ); } -trigger_delete_on_repair() +trigger_delete_on_repair() //checked changed to match cerberus output { while ( 1 ) { self waittill_either( "all_boards_repaired", "no valid boards" ); maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); - return; + break; } } -rebuild_barrier_reward_reset() +rebuild_barrier_reward_reset() //checked matches cerberus output { self.rebuild_barrier_reward = 0; } -remove_chunk( chunk, node, destroy_immediately, zomb ) +remove_chunk( chunk, node, destroy_immediately, zomb ) //checked changed to match cerberus output { chunk update_states( "mid_tear" ); if ( isDefined( chunk.script_parameters ) ) { - if ( chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + if ( chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" || chunk.script_parameters == "barricade_vents" ) { chunk thread zombie_boardtear_audio_offset( chunk ); } @@ -1804,7 +1686,7 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) if ( isDefined( chunk.script_noteworthy ) && chunk.script_noteworthy == "4" ) { ent = spawn( "script_origin", chunk.origin ); - ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + ent.angles = node.angles + vectorScale( ( 0, 1, 0 ), 180 ); dist = 100; if ( isDefined( chunk.script_move_dist ) ) { @@ -1816,10 +1698,10 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) dist = 100 + randomint( 100 ); } dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); - trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + trace = bullettrace( dest + vectorScale( ( 0, 0, 1 ), 16 ), dest + vectorScale( ( 0, 0, -1 ), 200 ), 0, undefined ); if ( trace[ "fraction" ] == 1 ) { - dest += vectorScale( ( -1, 0, 0 ), 200 ); + dest += vectorScale( ( 0, 0, -1 ), 200 ); } else { @@ -1829,21 +1711,21 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) time = ent fake_physicslaunch( dest, 300 + randomint( 100 ) ); if ( randomint( 100 ) > 40 ) { - ent rotatepitch( 180, time * 0,5 ); + ent rotatepitch( 180, time * 0.5 ); } else { - ent rotatepitch( 90, time, time * 0,5 ); + ent rotatepitch( 90, time, time * 0.5 ); } wait time; chunk hide(); - wait 0,1; + wait 0.1; ent delete(); } else { ent = spawn( "script_origin", chunk.origin ); - ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + ent.angles = node.angles + vectorScale( ( 0, 1, 0 ), 180 ); dist = 100; if ( isDefined( chunk.script_move_dist ) ) { @@ -1855,10 +1737,10 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) dist = 100 + randomint( 100 ); } dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); - trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + trace = bullettrace( dest + vectorScale( ( 0, 0, 1 ), 16 ), dest + vectorScale( ( 0, 0, -1 ), 200 ), 0, undefined ); if ( trace[ "fraction" ] == 1 ) { - dest += vectorScale( ( -1, 0, 0 ), 200 ); + dest += vectorScale( ( 0, 0, -1 ), 200 ); } else { @@ -1876,16 +1758,16 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) } wait time; chunk hide(); - wait 0,1; + wait 0.1; ent delete(); } chunk update_states( "destroyed" ); chunk notify( "destroyed" ); } - if ( isDefined( chunk.script_parameters ) && chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" || chunk.script_parameters == "barricade_vents" ) { ent = spawn( "script_origin", chunk.origin ); - ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + ent.angles = node.angles + vectorScale( ( 0, 1, 0 ), 180 ); dist = 100; if ( isDefined( chunk.script_move_dist ) ) { @@ -1897,10 +1779,10 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) dist = 100 + randomint( 100 ); } dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); - trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + trace = bullettrace( dest + vectorScale( ( 0, 0, 1 ), 16 ), dest + vectorScale( ( 0, 0, -1 ), 200 ), 0, undefined ); if ( trace[ "fraction" ] == 1 ) { - dest += vectorScale( ( -1, 0, 0 ), 200 ); + dest += vectorScale( ( 0, 0, -1 ), 200 ); } else { @@ -1917,11 +1799,11 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) } if ( randomint( 100 ) > 40 ) { - ent rotatepitch( 180, time * 0,5 ); + ent rotatepitch( 180, time * 0.5 ); } else { - ent rotatepitch( 90, time, time * 0,5 ); + ent rotatepitch( 90, time, time * 0.5 ); } wait time; if ( isDefined( chunk.unbroken_section ) ) @@ -1932,7 +1814,7 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) } } chunk hide(); - wait 0,1; + wait 0.1; ent delete(); chunk update_states( "destroyed" ); chunk notify( "destroyed" ); @@ -1942,13 +1824,13 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) if ( isDefined( chunk.script_noteworthy ) && chunk.script_noteworthy == "6" ) { ent = spawn( "script_origin", chunk.origin ); - ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + ent.angles = node.angles + vectorScale( ( 0, 1, 0 ), 180 ); dist = 100 + randomint( 100 ); dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); - trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + trace = bullettrace( dest + vectorScale( ( 0, 0, 1 ), 16 ), dest + vectorScale( ( 0, 0, -1 ), 200 ), 0, undefined ); if ( trace[ "fraction" ] == 1 ) { - dest += vectorScale( ( -1, 0, 0 ), 200 ); + dest += vectorScale( ( 0, 0, -1 ), 200 ); } else { @@ -1958,11 +1840,11 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) time = ent fake_physicslaunch( dest, 200 + randomint( 100 ) ); if ( randomint( 100 ) > 40 ) { - ent rotatepitch( 180, time * 0,5 ); + ent rotatepitch( 180, time * 0.5 ); } else { - ent rotatepitch( 90, time, time * 0,5 ); + ent rotatepitch( 90, time, time * 0.5 ); } wait time; chunk hide(); @@ -1980,16 +1862,16 @@ remove_chunk( chunk, node, destroy_immediately, zomb ) } } -remove_chunk_rotate_grate( chunk ) +remove_chunk_rotate_grate( chunk ) //checked changed to match cerberus output { if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "grate" ) { - chunk vibrate( vectorScale( ( -1, 0, 0 ), 270 ), 0,2, 0,4, 0,4 ); + chunk vibrate( vectorScale( ( 0, 1, 0 ), 270 ), 0.2, 0.4, 0.4 ); return; } } -zombie_boardtear_audio_offset( chunk ) +zombie_boardtear_audio_offset( chunk ) //checked changed to match cerberus output { if ( isDefined( chunk.material ) && !isDefined( chunk.already_broken ) ) { @@ -1998,68 +1880,53 @@ zombie_boardtear_audio_offset( chunk ) if ( isDefined( chunk.material ) && chunk.material == "glass" && chunk.already_broken == 0 ) { chunk playsound( "zmb_break_glass_barrier" ); - wait randomfloatrange( 0,3, 0,6 ); + wait randomfloatrange( 0.3, 0.6 ); chunk playsound( "zmb_break_glass_barrier" ); chunk.already_broken = 1; } - else + else if ( isDefined( chunk.material ) && chunk.material == "metal" && chunk.already_broken == 0 ) { - if ( isDefined( chunk.material ) && chunk.material == "metal" && chunk.already_broken == 0 ) + chunk playsound( "grab_metal_bar" ); + wait randomfloatrange( 0.3, 0.6 ); + chunk playsound( "break_metal_bar" ); + chunk.already_broken = 1; + } + else if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && !level.use_clientside_rock_tearin_fx ) { - chunk playsound( "grab_metal_bar" ); - wait randomfloatrange( 0,3, 0,6 ); - chunk playsound( "break_metal_bar" ); - chunk.already_broken = 1; - return; + chunk playsound( "zmb_break_rock_barrier" ); + wait randomfloatrange( 0.3, 0.6 ); + chunk playsound( "zmb_break_rock_barrier" ); } - else + chunk.already_broken = 1; + } + else if ( isDefined( chunk.material ) && chunk.material == "metal_vent" ) + { + if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) { - if ( isDefined( chunk.material ) && chunk.material == "rock" ) - { - if ( isDefined( level.use_clientside_rock_tearin_fx ) && !level.use_clientside_rock_tearin_fx ) - { - chunk playsound( "zmb_break_rock_barrier" ); - wait randomfloatrange( 0,3, 0,6 ); - chunk playsound( "zmb_break_rock_barrier" ); - } - chunk.already_broken = 1; - return; - } - else - { - if ( isDefined( chunk.material ) && chunk.material == "metal_vent" ) - { - if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) - { - chunk playsound( "evt_vent_slat_remove" ); - } - return; - } - else - { - if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) - { - chunk play_sound_on_ent( "break_barrier_piece" ); - wait randomfloatrange( 0,3, 0,6 ); - chunk play_sound_on_ent( "break_barrier_piece" ); - } - chunk.already_broken = 1; - } - } + chunk playsound( "evt_vent_slat_remove" ); } } + else if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) + { + chunk play_sound_on_ent( "break_barrier_piece" ); + wait randomfloatrange( 0.3, 0.6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + } + chunk.already_broken = 1; } -zombie_bartear_audio_offset( chunk ) +zombie_bartear_audio_offset( chunk ) //checked matches cerberus output { chunk play_sound_on_ent( "grab_metal_bar" ); - wait randomfloatrange( 0,3, 0,6 ); + wait randomfloatrange( 0.3, 0.6 ); chunk play_sound_on_ent( "break_metal_bar" ); - wait randomfloatrange( 1, 1,3 ); + wait randomfloatrange( 1, 1.3 ); chunk play_sound_on_ent( "drop_metal_bar" ); } -ensure_chunk_is_back_to_origin( chunk ) +ensure_chunk_is_back_to_origin( chunk ) //checked matches cerberus output { if ( chunk.origin != chunk.og_origin ) { @@ -2068,17 +1935,19 @@ ensure_chunk_is_back_to_origin( chunk ) } } -replace_chunk( barrier, chunk, perk, upgrade, via_powerup ) +replace_chunk( barrier, chunk, perk, upgrade, via_powerup ) //checked changed to match cerberus output { if ( !isDefined( barrier.zbarrier ) ) { chunk update_states( "mid_repair" ); + /* /# assert( isDefined( chunk.og_origin ) ); #/ /# assert( isDefined( chunk.og_angles ) ); #/ + */ sound = "rebuild_barrier_hover"; if ( isDefined( chunk.script_presound ) ) { @@ -2109,14 +1978,11 @@ replace_chunk( barrier, chunk, perk, upgrade, via_powerup ) { if ( perk == "speciality_fastreload" ) { - scalar = 0,31; + scalar = 0.31; } - else + else if ( perk == "speciality_fastreload_upgrade" ) { - if ( perk == "speciality_fastreload_upgrade" ) - { - scalar = 0,2112; - } + scalar = 0.2112; } } barrier.zbarrier showzbarrierpiece( chunk ); @@ -2125,36 +1991,29 @@ replace_chunk( barrier, chunk, perk, upgrade, via_powerup ) wait waitduration; } -open_all_zbarriers() +open_all_zbarriers() //checked partially changed to match cerberus output //did not change while loop to for loop because of infinite continue loop bug { - _a2642 = level.exterior_goals; - _k2642 = getFirstArrayKey( _a2642 ); - while ( isDefined( _k2642 ) ) + i = 0; + while ( i < level.exterior_goals.size ) { - barrier = _a2642[ _k2642 ]; - while ( isDefined( barrier.zbarrier ) ) + if ( isDefined( level.exterior_goals[ i ].zbarrier ) ) { - x = 0; - while ( x < barrier.zbarrier getnumzbarrierpieces() ) + for ( x = 0; x < level.exterior_goals[ i ].zbarrier getnumzbarrierpieces(); x++ ) { - barrier.zbarrier setzbarrierpiecestate( x, "opening" ); - x++; + level.exterior_goals[ i ].zbarrier setzbarrierpiecestate( x, "opening" ); } } - if ( isDefined( barrier.clip ) ) + else if ( isDefined( level.exterior_goals[ i ].clip ) ) { - barrier.clip disable_trigger(); - barrier.clip connectpaths(); + level.exterior_goals[ i ].clip disable_trigger(); + level.exterior_goals[ i ].clip connectpaths(); + continue; } - else - { - blocker_connect_paths( barrier.neg_start, barrier.neg_end ); - } - _k2642 = getNextArrayKey( _a2642, _k2642 ); + blocker_connect_paths( level.exterior_goals[ i ].neg_start, level.exterior_goals[ i ].neg_end ); } } -zombie_boardtear_audio_plus_fx_offset_repair_horizontal( chunk ) +zombie_boardtear_audio_plus_fx_offset_repair_horizontal( chunk ) //checked changed to match cerberus output { if ( isDefined( chunk.material ) && chunk.material == "rock" ) { @@ -2164,32 +2023,28 @@ zombie_boardtear_audio_plus_fx_offset_repair_horizontal( chunk ) } else { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0,3, 0,6 ); + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 1 ), 30 ) ); + wait randomfloatrange( 0.3, 0.6 ); chunk play_sound_on_ent( "break_barrier_piece" ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, -1 ), 30 ) ); } } + else if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_board_horizontal_fx ); + } else { - if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) - { - chunk clearclientflag( level._zombie_scriptmover_flag_board_horizontal_fx ); - return; - } - else - { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0,3, 0,6 ); - chunk play_sound_on_ent( "break_barrier_piece" ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - } + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 1 ), 30 ) ); + wait randomfloatrange( 0.3, 0.6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, -1 ), 30 ) ); } } -zombie_boardtear_audio_plus_fx_offset_repair_verticle( chunk ) +zombie_boardtear_audio_plus_fx_offset_repair_verticle( chunk ) //checked changed to match cerberus output { if ( isDefined( chunk.material ) && chunk.material == "rock" ) { @@ -2199,60 +2054,56 @@ zombie_boardtear_audio_plus_fx_offset_repair_verticle( chunk ) } else { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0,3, 0,6 ); + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0.3, 0.6 ); chunk play_sound_on_ent( "break_barrier_piece" ); playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); } } + else if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_board_vertical_fx ); + } else { - if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) - { - chunk clearclientflag( level._zombie_scriptmover_flag_board_vertical_fx ); - return; - } - else - { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0,3, 0,6 ); - chunk play_sound_on_ent( "break_barrier_piece" ); - playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - } + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0.3, 0.6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); } } -zombie_gratetear_audio_plus_fx_offset_repair_horizontal( chunk ) +zombie_gratetear_audio_plus_fx_offset_repair_horizontal( chunk ) //checked matches cerberus output { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); chunk play_sound_on_ent( "bar_rebuild_slam" ); switch( randomint( 9 ) ) { case 0: playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); break; case 1: playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); break; case 2: playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); break; case 3: playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); break; case 4: playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); break; case 5: @@ -2270,35 +2121,35 @@ zombie_gratetear_audio_plus_fx_offset_repair_horizontal( chunk ) } } -zombie_bartear_audio_plus_fx_offset_repair_horizontal( chunk ) +zombie_bartear_audio_plus_fx_offset_repair_horizontal( chunk ) //checked matches cerberus output { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); chunk play_sound_on_ent( "bar_rebuild_slam" ); switch( randomint( 9 ) ) { case 0: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); break; case 1: playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); break; case 2: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); break; case 3: playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); break; case 4: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); break; case 5: @@ -2316,35 +2167,35 @@ zombie_bartear_audio_plus_fx_offset_repair_horizontal( chunk ) } } -zombie_bartear_audio_plus_fx_offset_repair_verticle( chunk ) +zombie_bartear_audio_plus_fx_offset_repair_verticle( chunk ) //checked matches cerberus output { - earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + earthquake( randomfloatrange( 0.3, 0.4 ), randomfloatrange( 0.2, 0.4 ), chunk.origin, 150 ); chunk play_sound_on_ent( "bar_rebuild_slam" ); switch( randomint( 9 ) ) { case 0: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); break; case 1: playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); break; case 2: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); break; case 3: playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); break; case 4: playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); - wait randomfloatrange( 0, 0,3 ); + wait randomfloatrange( 0, 0.3 ); playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); break; case 5: @@ -2362,7 +2213,7 @@ zombie_bartear_audio_plus_fx_offset_repair_verticle( chunk ) } } -add_new_zombie_spawners() +add_new_zombie_spawners() //checked changed to match cerberus output { if ( isDefined( self.target ) ) { @@ -2378,22 +2229,22 @@ add_new_zombie_spawners() return; } zombies_to_add = self.possible_spawners; - i = 0; - while ( i < self.possible_spawners.size ) + for ( i = 0; i < self.possible_spawners.size; i++ ) { self.possible_spawners[ i ].is_enabled = 1; add_spawner( self.possible_spawners[ i ] ); - i++; } } -flag_blocker() +flag_blocker() //checked matches cerberus output { if ( !isDefined( self.script_flag_wait ) ) { + /* /# assertmsg( "Flag Blocker at " + self.origin + " does not have a script_flag_wait key value pair" ); #/ + */ return; } if ( !isDefined( level.flag[ self.script_flag_wait ] ) ) @@ -2419,95 +2270,88 @@ flag_blocker() self disable_trigger(); return; } + /* /# assertmsg( "flag blocker at " + self.origin + ", the type "" + type + "" is not recognized" ); #/ + */ } -update_states( states ) +update_states( states ) //checked matches cerberus output { + /* /# assert( isDefined( states ) ); #/ + */ self.state = states; } -quantum_bomb_open_nearest_door_validation( position ) +quantum_bomb_open_nearest_door_validation( position ) //checked changed to match cerberus output { range_squared = 32400; zombie_doors = getentarray( "zombie_door", "targetname" ); - i = 0; - while ( i < zombie_doors.size ) + for ( i = 0; i < zombie_doors.size; i++ ) { if ( distancesquared( zombie_doors[ i ].origin, position ) < range_squared ) { return 1; } - i++; } zombie_airlock_doors = getentarray( "zombie_airlock_buy", "targetname" ); - i = 0; - while ( i < zombie_airlock_doors.size ) + for ( i = 0; i < zombie_airlock_doors.size; i++ ) { if ( distancesquared( zombie_airlock_doors[ i ].origin, position ) < range_squared ) { return 1; } - i++; } zombie_debris = getentarray( "zombie_debris", "targetname" ); - i = 0; - while ( i < zombie_debris.size ) + for ( i = 0; i < zombie_debris.size; i++ ) { if ( distancesquared( zombie_debris[ i ].origin, position ) < range_squared ) { return 1; } - i++; } return 0; } -quantum_bomb_open_nearest_door_result( position ) +quantum_bomb_open_nearest_door_result( position ) //checked changed to match cerberus output { range_squared = 32400; zombie_doors = getentarray( "zombie_door", "targetname" ); - i = 0; - while ( i < zombie_doors.size ) + for ( i = 0; i < zombie_doors.size; i++ ) { if ( distancesquared( zombie_doors[ i ].origin, position ) < range_squared ) { self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); - zombie_doors[ i ] notify( "trigger" ); + zombie_doors[ i ] notify( "trigger", self, 1 ); [[ level.quantum_bomb_play_area_effect_func ]]( position ); return; } - i++; } zombie_airlock_doors = getentarray( "zombie_airlock_buy", "targetname" ); - i = 0; - while ( i < zombie_airlock_doors.size ) + for ( i = 0; i < zombie_airlock_doors.size; i++ ) { if ( distancesquared( zombie_airlock_doors[ i ].origin, position ) < range_squared ) { self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); - zombie_airlock_doors[ i ] notify( "trigger" ); + zombie_airlock_doors[ i ] notify( "trigger", self, 1 ); [[ level.quantum_bomb_play_area_effect_func ]]( position ); return; } - i++; } zombie_debris = getentarray( "zombie_debris", "targetname" ); - i = 0; - while ( i < zombie_debris.size ) + for ( i = 0; i < zombie_debris.size; i++ ) { if ( distancesquared( zombie_debris[ i ].origin, position ) < range_squared ) { self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); - zombie_debris[ i ] notify( "trigger" ); + zombie_debris[ i ] notify( "trigger", self, 1 ); [[ level.quantum_bomb_play_area_effect_func ]]( position ); return; } - i++; } } + diff --git a/patch_zm/maps/mp/zombies/_zm_equip_turbine.gsc b/patch_zm/maps/mp/zombies/_zm_equip_turbine.gsc index 01cc67c..e3d9d0c 100644 --- a/patch_zm/maps/mp/zombies/_zm_equip_turbine.gsc +++ b/patch_zm/maps/mp/zombies/_zm_equip_turbine.gsc @@ -7,9 +7,9 @@ #include maps/mp/_utility; #include common_scripts/utility; -#using_animtree( "zombie_turbine" ); +//#using_animtree( "zombie_turbine" ); -init( hint, howto ) +init( hint, howto ) //checked matches cerberus output { if ( !isDefined( hint ) ) { @@ -35,7 +35,7 @@ init( hint, howto ) level._turbine_disappear_fx = loadfx( "maps/zombie/fx_zmb_tranzit_turbine_explo" ); } -onplayerconnect() +onplayerconnect() //checked matches cerberus output { for ( ;; ) { @@ -44,7 +44,7 @@ onplayerconnect() } } -onplayerspawned() +onplayerspawned() //checked matches cerberus output { self endon( "disconnect" ); self thread setupwatchers(); @@ -55,14 +55,14 @@ onplayerspawned() } } -setupwatchers() +setupwatchers() //checked matches cerberus output { self waittill( "weapon_watchers_created" ); watcher = maps/mp/gametypes_zm/_weaponobjects::getweaponobjectwatcher( "equip_turbine" ); - watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; + watcher.onspawnretrievetriggers = maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; } -watchturbineuse() +watchturbineuse() //checked matches cerberus output { self notify( "watchTurbineUse" ); self endon( "watchTurbineUse" ); @@ -81,7 +81,7 @@ watchturbineuse() } } -cleanupoldturbine( preserve_state ) +cleanupoldturbine( preserve_state ) //checked matches cerberus output { if ( isDefined( self.localpower ) ) { @@ -109,7 +109,7 @@ cleanupoldturbine( preserve_state ) } } -watchforcleanup() +watchforcleanup() //checked matches cerberus output { self notify( "turbine_cleanup" ); self endon( "turbine_cleanup" ); @@ -120,7 +120,7 @@ watchforcleanup() } } -depower_on_disconnect( localpower ) +depower_on_disconnect( localpower ) //checked matches cerberus output { self notify( "depower_on_disconnect" ); self endon( "depower_on_disconnect" ); @@ -131,13 +131,13 @@ depower_on_disconnect( localpower ) } } -placeturbine( origin, angles ) +placeturbine( origin, angles ) //checked matches cerberus output { item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "p6_anim_zm_buildable_turbine", "equip_turbine_zm", origin, angles ); return item; } -dropturbine() +dropturbine() //checked matches cerberus output { item = thread maps/mp/zombies/_zm_equipment::dropped_equipment_think( "p6_anim_zm_buildable_turbine", "equip_turbine_zm", self.origin, self.angles ); if ( isDefined( item ) ) @@ -159,7 +159,7 @@ dropturbine() return item; } -pickupturbine( item ) +pickupturbine( item ) //checked matches cerberus output { item.owner = self; self.turbine_power_on = item.turbine_power_on; @@ -177,11 +177,11 @@ pickupturbine( item ) self.turbine_is_powering_on = undefined; } -transferturbine( fromplayer, toplayer ) +transferturbine( fromplayer, toplayer ) //checked changed to match cerberus output { - while ( isDefined( toplayer.turbine_is_powering_on ) || toplayer.turbine_is_powering_on && isDefined( fromplayer.turbine_is_powering_on ) && fromplayer.turbine_is_powering_on ) + while ( isDefined( toplayer.turbine_is_powering_on ) && toplayer.turbine_is_powering_on || isDefined( fromplayer.turbine_is_powering_on ) && fromplayer.turbine_is_powering_on ) { - wait 0,05; + wait 0.05; } if ( isDefined( fromplayer.buildableturbine ) && isDefined( fromplayer.buildableturbine.dying ) && fromplayer.buildableturbine.dying ) { @@ -236,7 +236,7 @@ transferturbine( fromplayer, toplayer ) } } -startturbinedeploy( weapon ) +startturbinedeploy( weapon ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -260,9 +260,11 @@ startturbinedeploy( weapon ) self thread turbinepowerdiminish( origin, powerradius ); if ( isDefined( weapon ) ) { + /* /# self thread debugturbine( powerradius ); #/ + */ self thread turbineaudio(); self thread turbineanim(); self thread turbinepowerthink( weapon, powerradius ); @@ -277,7 +279,7 @@ startturbinedeploy( weapon ) } } -turbine_watch_for_emp( weapon, powerradius ) +turbine_watch_for_emp( weapon, powerradius ) //checked changed to match cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -294,16 +296,13 @@ turbine_watch_for_emp( weapon, powerradius ) { break; } - else - { - } } self.turbine_emped = 1; self.turbine_emp_time = getTime(); self notify( "turbine_power_change" ); } -turbinepowerthink( weapon, powerradius ) +turbinepowerthink( weapon, powerradius ) //checked changed to match cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -311,7 +310,7 @@ turbinepowerthink( weapon, powerradius ) self.buildableturbine endon( "death" ); origin = weapon.origin; self thread turbine_watch_for_emp( weapon, powerradius ); - if ( isDefined( self.turbine_power_on ) || self.turbine_power_on && isDefined( self.turbine_emped ) && self.turbine_emped ) + if ( isDefined( self.turbine_power_on ) && self.turbine_power_on || isDefined( self.turbine_emped ) && self.turbine_emped ) { self thread turbinepoweron( origin, powerradius ); } @@ -326,28 +325,22 @@ turbinepowerthink( weapon, powerradius ) origin = weapon.origin; } self thread turbinepoweron( origin, powerradius ); - continue; + //continue; } - else + else if ( isDefined( self.turbine_power_is_on ) && !self.turbine_power_is_on ) { - if ( isDefined( self.turbine_power_is_on ) && !self.turbine_power_is_on ) - { - self thread turbinepoweroff( origin, powerradius ); - break; - } - else - { - if ( isDefined( weapon ) ) - { - origin = weapon.origin; - } - self thread turbinepoweron( origin, powerradius ); - } + self thread turbinepoweroff( origin, powerradius ); + break; } + else if ( isDefined( weapon ) ) + { + origin = weapon.origin; + } + self thread turbinepoweron( origin, powerradius ); } } -turbinepowermove( weapon ) +turbinepowermove( weapon ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -364,11 +357,11 @@ turbinepowermove( weapon ) } origin = weapon.origin; } - wait 0,5; + wait 0.5; } } -turbinewarmup() +turbinewarmup() //checked matches cerberus output //order of operations may need to be checked { if ( isDefined( self.turbine_emped ) && self.turbine_emped ) { @@ -383,14 +376,14 @@ turbinewarmup() self.turbine_emp_time = undefined; } self.buildableturbine maps/mp/zombies/_zm_equipment::signal_equipment_activated( 3 ); - wait 0,5; + wait 0.5; self.buildableturbine maps/mp/zombies/_zm_equipment::signal_equipment_activated( 2 ); - wait 0,5; + wait 0.5; self.buildableturbine maps/mp/zombies/_zm_equipment::signal_equipment_activated( 1 ); - wait 0,5; + wait 0.5; } -turbinepoweron( origin, powerradius ) +turbinepoweron( origin, powerradius ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -420,7 +413,7 @@ turbinepoweron( origin, powerradius ) } } -turbinepoweroff( origin, powerradius ) +turbinepoweroff( origin, powerradius ) //checked matches cerberus output { if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) { @@ -439,7 +432,7 @@ turbinepoweroff( origin, powerradius ) } } -turbine_disappear_fx( origin, waittime ) +turbine_disappear_fx( origin, waittime ) //checked matches cerberus output { if ( isDefined( waittime ) && waittime > 0 ) { @@ -452,7 +445,7 @@ turbine_disappear_fx( origin, waittime ) } } -turbinefxonce( withaoe ) +turbinefxonce( withaoe ) //checked matches cerberus output { if ( isDefined( self ) && isDefined( self.buildableturbine ) && isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) { @@ -488,26 +481,26 @@ turbinefxonce( withaoe ) } } -turbinefx() +turbinefx() //checked matches cerberus output { self endon( "disconnect" ); self endon( "equip_turbine_zm_taken" ); while ( isDefined( self ) && isDefined( self.buildableturbine ) && isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) { self turbinefxonce( 1 ); - wait 0,5; + wait 0.5; self turbinefxonce( 0 ); - wait 0,5; + wait 0.5; } } -turbineaudio() +turbineaudio() //checked changed to match cerberus output { if ( !isDefined( self.buildableturbine ) ) { return; } - if ( isDefined( self.turbine_power_is_on ) || !self.turbine_power_is_on && isDefined( self.turbine_emped ) && self.turbine_emped ) + if ( isDefined( self.turbine_power_is_on ) && !self.turbine_power_is_on || isDefined( self.turbine_emped ) && self.turbine_emped ) { self.buildableturbine stoploopsound(); return; @@ -515,12 +508,12 @@ turbineaudio() self.buildableturbine playloopsound( "zmb_turbine_loop", 2 ); } -init_animtree() +init_animtree() //checked matches cerberus output { scriptmodelsuseanimtree( -1 ); } -turbineanim( wait_for_end ) +turbineanim( wait_for_end ) //checked changed to match cerberus output { if ( !isDefined( self.buildableturbine ) ) { @@ -533,17 +526,12 @@ turbineanim( wait_for_end ) animlength = getanimlength( %o_zombie_buildable_turbine_death ); self.buildableturbine setanim( %o_zombie_buildable_turbine_death ); break; -} -else -{ + } if ( isDefined( self.turbine_emped ) && self.turbine_emped ) { self.buildableturbine clearanim( %o_zombie_buildable_turbine_fullpower, 0 ); return; - break; -} -else -{ + } switch( self.turbine_power_level ) { case 3: @@ -560,15 +548,13 @@ else self.buildableturbine setanim( %o_zombie_buildable_turbine_neardeath ); break; } -} -} -if ( isDefined( wait_for_end ) && wait_for_end ) -{ -wait animlength; -} + if ( isDefined( wait_for_end ) && wait_for_end ) + { + wait animlength; + } } -turbinedecay() +turbinedecay() //checked changed to match cerberus output //order of operations may need to be checked { self notify( "turbineDecay" ); self endon( "turbineDecay" ); @@ -601,30 +587,27 @@ turbinedecay() { self.turbine_power_level = 0; } - else + else if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) { - if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + cost = 1; + if ( isDefined( self.localpower ) ) { - cost = 1; - if ( isDefined( self.localpower ) ) - { - cost += maps/mp/zombies/_zm_power::get_local_power_cost( self.localpower ); - } - self.turbine_health -= cost; - if ( self.turbine_health < 200 ) - { - self.turbine_power_level = 1; - break; - } - else if ( self.turbine_health < 600 ) - { - self.turbine_power_level = 2; - break; - } - else - { - self.turbine_power_level = 4; - } + cost += maps/mp/zombies/_zm_power::get_local_power_cost( self.localpower ); + } + self.turbine_health -= cost; + if ( self.turbine_health < 200 ) + { + self.turbine_power_level = 1; + break; + } + else if ( self.turbine_health < 600 ) + { + self.turbine_power_level = 2; + break; + } + else + { + self.turbine_power_level = 4; } } if ( old_power_level != self.turbine_power_level ) @@ -653,7 +636,7 @@ turbinedecay() self cleanupoldturbine(); } -destroy_placed_turbine() +destroy_placed_turbine() //checked matches cerberus output { if ( isDefined( self.buildableturbine ) ) { @@ -661,7 +644,7 @@ destroy_placed_turbine() { while ( isDefined( self.buildableturbine ) ) { - wait 0,05; + wait 0.05; } return; } @@ -675,13 +658,13 @@ destroy_placed_turbine() } } -wait_and_take_equipment() +wait_and_take_equipment() //checked matches cerberus output { - wait 0,05; + wait 0.05; self thread maps/mp/zombies/_zm_equipment::equipment_release( "equip_turbine_zm" ); } -turbinepowerdiminish( origin, powerradius ) +turbinepowerdiminish( origin, powerradius ) //checked changed to match cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -696,31 +679,32 @@ turbinepowerdiminish( origin, powerradius ) case 4: break; case 3: - case 2: - self.turbine_power_on = 1; - wait randomintrange( 12, 20 ); - self turbinepoweroff( origin, powerradius ); - self.turbine_power_on = 0; - wait randomintrange( 3, 8 ); - self turbinepoweron( origin, powerradius ); - break; - case 1: - self.turbine_power_on = 1; - wait randomintrange( 3, 7 ); - self turbinepoweroff( origin, powerradius ); - self.turbine_power_on = 0; - wait randomintrange( 6, 12 ); - self turbinepoweron( origin, powerradius ); - break; - } + break; + case 2: + self.turbine_power_on = 1; + wait randomintrange( 12, 20 ); + self turbinepoweroff( origin, powerradius ); + self.turbine_power_on = 0; + wait randomintrange( 3, 8 ); + self turbinepoweron( origin, powerradius ); + break; + case 1: + self.turbine_power_on = 1; + wait randomintrange( 3, 7 ); + self turbinepoweroff( origin, powerradius ); + self.turbine_power_on = 0; + wait randomintrange( 6, 12 ); + self turbinepoweron( origin, powerradius ); + break; } - wait 0,05; + wait 0.05; } } } -debugturbine( radius ) +debugturbine( radius ) //checked changed to match cerberus output may need to check order of operations { + /* /# self endon( "death" ); self endon( "disconnect" ); @@ -728,9 +712,10 @@ debugturbine( radius ) self.buildableturbine endon( "death" ); while ( isDefined( self.buildableturbine ) ) { + //missing dvar name if ( getDvarInt( #"EB512CB7" ) ) { - color = ( 0, 0, 1 ); + color = ( 0, 1, 0 ); text = ""; if ( isDefined( self.turbine_health ) ) { @@ -739,7 +724,7 @@ debugturbine( radius ) if ( isDefined( self.buildableturbine.dying ) && self.buildableturbine.dying ) { text = "dying"; - color = ( 0, 0, 1 ); + color = ( 0, 0, 0 ); } else { @@ -765,7 +750,7 @@ debugturbine( radius ) { if ( self.turbine_health < 200 ) { - color = ( 0, 0, 1 ); + color = ( 1, 0, 0 ); break; } else if ( self.turbine_health < 600 ) @@ -775,15 +760,17 @@ debugturbine( radius ) } else { - color = ( 0, 0, 1 ); + color = ( 1, 1, 0 ); } } } } } - print3d( self.buildableturbine.origin + vectorScale( ( 0, 0, 1 ), 60 ), text, color, 1, 0,5, 1 ); + print3d( self.buildableturbine.origin + vectorScale( ( 0, 0, 1 ), 60 ), text, color, 1, 0.5, 1 ); } - wait 0,05; + wait 0.05; #/ } + */ } + diff --git a/patch_zm/maps/mp/zombies/_zm_laststand.gsc b/patch_zm/maps/mp/zombies/_zm_laststand.gsc index 0b46dac..4a24b87 100644 --- a/patch_zm/maps/mp/zombies/_zm_laststand.gsc +++ b/patch_zm/maps/mp/zombies/_zm_laststand.gsc @@ -9,15 +9,15 @@ #include maps/mp/_utility; #include common_scripts/utility; -laststand_global_init() +laststand_global_init() //checked matches cerberus output { level.const_laststand_getup_count_start = 0; - level.const_laststand_getup_bar_start = 0,5; - level.const_laststand_getup_bar_regen = 0,0025; - level.const_laststand_getup_bar_damage = 0,1; + level.const_laststand_getup_bar_start = 0.5; + level.const_laststand_getup_bar_regen = 0.0025; + level.const_laststand_getup_bar_damage = 0.1; } -init() +init() //checked matches cerberus output { if ( level.script == "frontend" ) { @@ -48,48 +48,52 @@ init() level.laststandgetupallowed = 0; } -player_is_in_laststand() +player_is_in_laststand() //checked changed to match cerberus output //changed at own discretion { - if ( isDefined( self.no_revive_trigger ) && !self.no_revive_trigger ) + if ( isDefined( self.no_revive_trigger ) && !self.no_revive_trigger && isDefined( self.revivetrigger ) ) { - return isDefined( self.revivetrigger ); + return 1; } - else + if ( isDefined( self.laststand ) && self.laststand ) { - if ( isDefined( self.laststand ) ) - { - return self.laststand; - } + return 1; } + return 0; } -player_num_in_laststand() +player_num_in_laststand() //checked changed to match cerberus output { num = 0; players = get_players(); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( players[ i ] player_is_in_laststand() ) { num++; } - i++; } return num; } -player_all_players_in_laststand() +player_all_players_in_laststand() //checked changed at own discretion { - return player_num_in_laststand() == get_players().size; + if ( player_num_in_laststand() == get_players().size ) + { + return 1; + } + return 0; } -player_any_player_in_laststand() +player_any_player_in_laststand() //checked changed at own discretion { - return player_num_in_laststand() > 0; + if ( player_num_in_laststand() > 0 ) + { + return 1; + } + return 0; } -player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output { if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) { @@ -140,7 +144,7 @@ player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, } } -increment_downed_stat() +increment_downed_stat() //checked matches cerberus output { if ( level.gametype != "zcleansed" ) { @@ -157,7 +161,7 @@ increment_downed_stat() self recordplayerdownzombies( zonename ); } -playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output { self notify( "entering_last_stand" ); if ( isDefined( level._game_module_player_laststand_callback ) ) @@ -232,7 +236,7 @@ playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, sh self thread cleanup_laststand_on_disconnect(); } -refire_player_downed() +refire_player_downed() //checked matches cerberus output { self endon( "player_revived" ); self endon( "death" ); @@ -244,7 +248,7 @@ refire_player_downed() } } -laststand_allowed( sweapon, smeansofdeath, shitloc ) +laststand_allowed( sweapon, smeansofdeath, shitloc ) //checked matches cerberus output { if ( level.laststandpistol == "none" ) { @@ -253,7 +257,7 @@ laststand_allowed( sweapon, smeansofdeath, shitloc ) return 1; } -laststand_disable_player_weapons() +laststand_disable_player_weapons() //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite loop bug due to continue { weaponinventory = self getweaponslist( 1 ); self.lastactiveweapon = self getcurrentweapon(); @@ -283,7 +287,7 @@ laststand_disable_player_weapons() { class = "knife"; } - if ( class != "pistol" && class != "pistol spread" && class == "pistolspread" && !isDefined( self.laststandpistol ) ) + if ( ( class == "pistol" || class == "pistol spread" ) && !isDefined( self.laststandpistol ) || class == "pistolspread" && !isDefined( self.laststandpistol ) ) { self.laststandpistol = weapon; self.hadpistol = 1; @@ -293,17 +297,14 @@ laststand_disable_player_weapons() self maps/mp/zombies/_zm_stats::increment_client_stat( "failed_sacrifices" ); self maps/mp/zombies/_zm_stats::increment_player_stat( "failed_sacrifices" ); } - else + else if ( is_zombie_perk_bottle( weapon ) ) { - if ( is_zombie_perk_bottle( weapon ) ) - { - self takeweapon( weapon ); - self.lastactiveweapon = "none"; - i++; - continue; - } + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + i++; + continue; } - else if ( isDefined( get_gamemode_var( "item_meat_name" ) ) ) + if ( isDefined( get_gamemode_var( "item_meat_name" ) ) ) { if ( weapon == get_gamemode_var( "item_meat_name" ) ) { @@ -327,7 +328,7 @@ laststand_disable_player_weapons() self notify( "weapons_taken_for_last_stand" ); } -laststand_enable_player_weapons() +laststand_enable_player_weapons() //checked matches cerberus output { if ( isDefined( self.hadpistol ) && !self.hadpistol && isDefined( self.laststandpistol ) ) { @@ -353,7 +354,7 @@ laststand_enable_player_weapons() } } -laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ) +laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ) //checked matches cerberus output { self endon( "do_revive_ended_normally" ); revivetrigger = playerbeingrevived.revivetrigger; @@ -374,26 +375,28 @@ laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ) self revive_give_back_weapons( revivergun ); } -laststand_clean_up_reviving_any( playerbeingrevived ) +laststand_clean_up_reviving_any( playerbeingrevived ) //checked changed to match cerberus output { self endon( "do_revive_ended_normally" ); playerbeingrevived waittill_any( "disconnect", "zombified", "stop_revive_trigger" ); self.is_reviving_any--; - if ( self.is_reviving_any <= 0 ) + if ( self.is_reviving_any < 0 ) { self.is_reviving_any = 0; } } -laststand_give_pistol() +laststand_give_pistol() //checked changed to match cerberus output { + /* /# assert( isDefined( self.laststandpistol ) ); #/ /# assert( self.laststandpistol != "none" ); #/ + */ if ( isDefined( level.zombie_last_stand ) ) { [[ level.zombie_last_stand ]](); @@ -406,13 +409,13 @@ laststand_give_pistol() } } -laststand_bleedout( delay ) +laststand_bleedout( delay ) //checked changed to match cerberus output { self endon( "player_revived" ); self endon( "player_suicide" ); self endon( "zombified" ); self endon( "disconnect" ); - if ( isDefined( self.is_zombie ) || self.is_zombie && isDefined( self.no_revive_trigger ) && self.no_revive_trigger ) + if ( isDefined( self.is_zombie ) && self.is_zombie || isDefined( self.no_revive_trigger ) && self.no_revive_trigger ) { self notify( "bled_out" ); wait_network_frame(); @@ -421,12 +424,12 @@ laststand_bleedout( delay ) } setclientsysstate( "lsm", "1", self ); self.bleedout_time = delay; - while ( self.bleedout_time > int( delay * 0,5 ) ) + while ( self.bleedout_time > int( delay * 0.5 ) ) { self.bleedout_time -= 1; wait 1; } - visionsetlaststand( "zombie_death", delay * 0,5 ); + visionsetlaststand( "zombie_death", delay * 0.5 ); while ( self.bleedout_time > 0 ) { self.bleedout_time -= 1; @@ -434,14 +437,14 @@ laststand_bleedout( delay ) } while ( isDefined( self.revivetrigger ) && isDefined( self.revivetrigger.beingrevived ) && self.revivetrigger.beingrevived == 1 ) { - wait 0,1; + wait 0.1; } self notify( "bled_out" ); wait_network_frame(); self bleed_out(); } -bleed_out() +bleed_out() //checked changed to match cerberus output { self cleanup_suicide_hud(); if ( isDefined( self.revivetrigger ) ) @@ -459,27 +462,23 @@ bleed_out() { maps/mp/_demo::bookmark( "zm_player_bledout", getTime(), self, undefined, 1 ); } - level notify( "bleed_out" ); + level notify( "bleed_out", self.characterindex ); self undolaststand(); if ( isDefined( level.is_zombie_level ) && level.is_zombie_level ) { self thread [[ level.player_becomes_zombie ]](); } + if ( isDefined( level.is_specops_level ) && level.is_specops_level ) + { + self thread [[ level.spawnspectator ]](); + } else { - if ( isDefined( level.is_specops_level ) && level.is_specops_level ) - { - self thread [[ level.spawnspectator ]](); - return; - } - else - { - self.ignoreme = 0; - } + self.ignoreme = 0; } } -cleanup_suicide_hud() +cleanup_suicide_hud() //checked matches cerberus output { if ( isDefined( self.suicideprompt ) ) { @@ -488,7 +487,7 @@ cleanup_suicide_hud() self.suicideprompt = undefined; } -clean_up_suicide_hud_on_end_game() +clean_up_suicide_hud_on_end_game() //checked matches cerberus output { self endon( "disconnect" ); self endon( "zombified" ); @@ -507,7 +506,7 @@ clean_up_suicide_hud_on_end_game() } } -clean_up_suicide_hud_on_bled_out() +clean_up_suicide_hud_on_bled_out() //checked matches cerberus output { self endon( "disconnect" ); self endon( "zombified" ); @@ -524,7 +523,7 @@ clean_up_suicide_hud_on_bled_out() } } -suicide_trigger_spawn() +suicide_trigger_spawn() //checked matches cerberus output { radius = getDvarInt( "revive_trigger_radius" ); self.suicideprompt = newclienthudelem( self ); @@ -539,14 +538,14 @@ suicide_trigger_spawn() } self.suicideprompt.foreground = 1; self.suicideprompt.font = "default"; - self.suicideprompt.fontscale = 1,5; + self.suicideprompt.fontscale = 1.5; self.suicideprompt.alpha = 1; self.suicideprompt.color = ( 1, 1, 1 ); self.suicideprompt.hidewheninmenu = 1; self thread suicide_trigger_think(); } -suicide_trigger_think() +suicide_trigger_think() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "zombified" ); @@ -569,12 +568,12 @@ suicide_trigger_think() while ( 1 ) { wait 0,1; - while ( !isDefined( self.suicideprompt ) ) + if ( !isDefined( self.suicideprompt ) ) { continue; } self.suicideprompt settext( &"ZOMBIE_BUTTON_TO_SUICIDE" ); - while ( !self is_suiciding() ) + if ( !self is_suiciding() ) { continue; } @@ -598,7 +597,7 @@ suicide_trigger_think() } } -suicide_do_suicide( duration ) +suicide_do_suicide( duration ) //checked matches cerberus output { level endon( "end_game" ); level endon( "stop_suicide_trigger" ); @@ -614,7 +613,7 @@ suicide_do_suicide( duration ) { self.suicidetexthud = newclienthudelem( self ); } - self.suicideprogressbar updatebar( 0,01, 1 / suicidetime ); + self.suicideprogressbar updatebar( 0.01, 1 / suicidetime ); self.suicidetexthud.alignx = "center"; self.suicidetexthud.aligny = "middle"; self.suicidetexthud.horzalign = "center"; @@ -626,15 +625,15 @@ suicide_do_suicide( duration ) } self.suicidetexthud.foreground = 1; self.suicidetexthud.font = "default"; - self.suicidetexthud.fontscale = 1,8; + self.suicidetexthud.fontscale = 1.8; self.suicidetexthud.alpha = 1; self.suicidetexthud.color = ( 1, 1, 1 ); self.suicidetexthud.hidewheninmenu = 1; self.suicidetexthud settext( &"ZOMBIE_SUICIDING" ); while ( self is_suiciding() ) { - wait 0,05; - timer += 0,05; + wait 0.05; + timer += 0.05; if ( timer >= suicidetime ) { suicided = 1; @@ -659,7 +658,7 @@ suicide_do_suicide( duration ) return suicided; } -can_suicide() +can_suicide() //checked matches cerberus output { if ( !isalive( self ) ) { @@ -684,15 +683,16 @@ can_suicide() return 1; } -is_suiciding( revivee ) +is_suiciding( revivee ) //checked changed at own discretion { - if ( self usebuttonpressed() ) + if ( self usebuttonpressed() && can_suicide() ) { - return can_suicide(); + return 1; } + return 0; } -revive_trigger_spawn() +revive_trigger_spawn() //checked changed to match cerberus output { if ( isDefined( level.revive_trigger_spawn_override_link ) ) { @@ -701,7 +701,7 @@ revive_trigger_spawn() else { radius = getDvarInt( "revive_trigger_radius" ); - self.revivetrigger = spawn( "trigger_radius", ( 1, 1, 1 ), 0, radius, radius ); + self.revivetrigger = spawn( "trigger_radius", ( 0, 0, 0 ), 0, radius, radius ); self.revivetrigger sethintstring( "" ); self.revivetrigger setcursorhint( "HINT_NOICON" ); self.revivetrigger setmovingplatformenabled( 1 ); @@ -714,7 +714,7 @@ revive_trigger_spawn() self thread revive_trigger_think(); } -revive_trigger_think() +revive_trigger_think() //checked partially changed to match cerberus output //did not change while loop to for loop because of infinite loop continue bug { self endon( "disconnect" ); self endon( "zombified" ); @@ -723,11 +723,10 @@ revive_trigger_think() self endon( "death" ); while ( 1 ) { - wait 0,1; + wait 0.1; self.revivetrigger sethintstring( "" ); players = get_players(); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { d = 0; d = self depthinwater(); @@ -736,10 +735,6 @@ revive_trigger_think() self.revivetrigger setrevivehintstring( &"ZOMBIE_BUTTON_TO_REVIVE_PLAYER", self.team ); break; } - else - { - i++; - } } i = 0; while ( i < players.size ) @@ -750,47 +745,43 @@ revive_trigger_think() i++; continue; } - else - { - gun = reviver getcurrentweapon(); + gun = reviver getcurrentweapon(); + /* /# - assert( isDefined( gun ) ); + assert( isDefined( gun ) ); #/ - if ( gun == level.revive_tool ) + */ + if ( gun == level.revive_tool ) + { + i++; + continue; + } + reviver giveweapon( level.revive_tool ); + reviver switchtoweapon( level.revive_tool ); + reviver setweaponammostock( level.revive_tool, 1 ); + revive_success = reviver revive_do_revive( self, gun ); + reviver revive_give_back_weapons( gun ); + if ( isplayer( self ) ) + { + self allowjump( 1 ); + } + self.laststand = undefined; + if ( revive_success ) + { + if ( isplayer( self ) ) { - i++; - continue; - } - else - { - reviver giveweapon( level.revive_tool ); - reviver switchtoweapon( level.revive_tool ); - reviver setweaponammostock( level.revive_tool, 1 ); - revive_success = reviver revive_do_revive( self, gun ); - reviver revive_give_back_weapons( gun ); - if ( isplayer( self ) ) - { - self allowjump( 1 ); - } - self.laststand = undefined; - if ( revive_success ) - { - if ( isplayer( self ) ) - { - maps/mp/zombies/_zm_chugabud::player_revived_cleanup_chugabud_corpse(); - } - self thread revive_success( reviver ); - self cleanup_suicide_hud(); - return; - } + maps/mp/zombies/_zm_chugabud::player_revived_cleanup_chugabud_corpse(); } + self thread revive_success( reviver ); + self cleanup_suicide_hud(); + return; } i++; } } } -revive_give_back_weapons( gun ) +revive_give_back_weapons( gun ) //checked matches cerberus output { self takeweapon( level.revive_tool ); if ( self player_is_in_laststand() ) @@ -811,7 +802,7 @@ revive_give_back_weapons( gun ) } } -can_revive( revivee ) +can_revive( revivee ) //checked changed to match cerberus output { if ( !isDefined( revivee.revivetrigger ) ) { @@ -841,11 +832,11 @@ can_revive( revivee ) { return 1; } - if ( isDefined( level.can_revive ) && !( [[ level.can_revive ]]( revivee ) ) ) + if ( isDefined( level.can_revive ) && ![[ level.can_revive ]]( revivee ) ) { return 0; } - if ( isDefined( level.can_revive_game_module ) && !( [[ level.can_revive_game_module ]]( revivee ) ) ) + if ( isDefined( level.can_revive_game_module ) && ![[ level.can_revive_game_module ]]( revivee ) ) { return 0; } @@ -872,11 +863,11 @@ can_revive( revivee ) { return 0; } - if ( !sighttracepassed( self.origin + vectorScale( ( 1, 1, 1 ), 50 ), revivee.origin + vectorScale( ( 1, 1, 1 ), 30 ), 0, undefined ) ) + if ( !sighttracepassed( self.origin + vectorScale( ( 0, 0, 1 ), 50 ), revivee.origin + vectorScale( ( 0, 0, 1 ), 30 ), 0, undefined ) ) { return 0; } - if ( !bullettracepassed( self.origin + vectorScale( ( 1, 1, 1 ), 50 ), revivee.origin + vectorScale( ( 1, 1, 1 ), 30 ), 0, undefined ) ) + if ( !bullettracepassed( self.origin + vectorScale( ( 0, 0, 1 ), 50 ), revivee.origin + vectorScale( ( 0, 0, 1 ), 30 ), 0, undefined ) ) { return 0; } @@ -884,23 +875,25 @@ can_revive( revivee ) return 1; } -is_reviving( revivee ) +is_reviving( revivee ) //checked changed at own discretion { - if ( self usebuttonpressed() ) + if ( self usebuttonpressed() && can_revive( revivee ) ) { - return can_revive( revivee ); + return 1; } + return 0; } -is_reviving_any() +is_reviving_any() //checked changed at own discretion { - if ( isDefined( self.is_reviving_any ) ) + if ( isDefined( self.is_reviving_any ) && self.is_reviving_any ) { - return self.is_reviving_any; + return 1; } + return 0; } -is_facing( facee ) +is_facing( facee ) //checked matches cerberus output { orientation = self getplayerangles(); forwardvec = anglesToForward( orientation ); @@ -910,14 +903,16 @@ is_facing( facee ) tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); unittofaceevec2d = vectornormalize( tofaceevec2d ); dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); - return dotproduct > 0,9; + return dotproduct > 0.9; } -revive_do_revive( playerbeingrevived, revivergun ) +revive_do_revive( playerbeingrevived, revivergun ) //checked changed to match cerberus output { + /* /# assert( self is_reviving( playerbeingrevived ) ); #/ + */ revivetime = 3; if ( self hasperk( "specialty_quickrevive" ) ) { @@ -925,7 +920,7 @@ revive_do_revive( playerbeingrevived, revivergun ) } if ( self maps/mp/zombies/_zm_pers_upgrades_functions::pers_revive_active() ) { - revivetime *= 0,5; + revivetime *= 0.5; } timer = 0; revived = 0; @@ -952,7 +947,7 @@ revive_do_revive( playerbeingrevived, revivergun ) } self.is_reviving_any++; self thread laststand_clean_up_reviving_any( playerbeingrevived ); - self.reviveprogressbar updatebar( 0,01, 1 / revivetime ); + self.reviveprogressbar updatebar( 0.01, 1 / revivetime ); self.revivetexthud.alignx = "center"; self.revivetexthud.aligny = "middle"; self.revivetexthud.horzalign = "center"; @@ -964,20 +959,20 @@ revive_do_revive( playerbeingrevived, revivergun ) } self.revivetexthud.foreground = 1; self.revivetexthud.font = "default"; - self.revivetexthud.fontscale = 1,8; + self.revivetexthud.fontscale = 1.8; self.revivetexthud.alpha = 1; self.revivetexthud.color = ( 1, 1, 1 ); self.revivetexthud.hidewheninmenu = 1; if ( self maps/mp/zombies/_zm_pers_upgrades_functions::pers_revive_active() ) { - self.revivetexthud.color = ( 0,5, 0,5, 1 ); + self.revivetexthud.color = ( 0.5, 0.5, 1 ); } self.revivetexthud settext( &"ZOMBIE_REVIVING" ); self thread check_for_failed_revive( playerbeingrevived ); while ( self is_reviving( playerbeingrevived ) ) { - wait 0,05; - timer += 0,05; + wait 0.05; + timer += 0.05; if ( self player_is_in_laststand() ) { break; @@ -986,16 +981,10 @@ revive_do_revive( playerbeingrevived, revivergun ) { break; } - else + if ( timer >= revivetime ) { - if ( timer >= revivetime ) - { - revived = 1; - break; - } - else - { - } + revived = 1; + break; } } if ( isDefined( self.reviveprogressbar ) ) @@ -1028,7 +1017,7 @@ revive_do_revive( playerbeingrevived, revivergun ) return revived; } -checkforbleedout( player ) +checkforbleedout( player ) //checked matches cerberus output { self endon( "player_revived" ); self endon( "player_suicide" ); @@ -1041,7 +1030,7 @@ checkforbleedout( player ) } } -auto_revive( reviver, dont_enable_weapons ) +auto_revive( reviver, dont_enable_weapons ) //checked changed to match cerberus output { if ( isDefined( self.revivetrigger ) ) { @@ -1054,10 +1043,7 @@ auto_revive( reviver, dont_enable_weapons ) { break; } - else - { - wait_network_frame(); - } + wait_network_frame(); } } self.revivetrigger.auto_trigger = 0; @@ -1090,7 +1076,7 @@ auto_revive( reviver, dont_enable_weapons ) self notify( "player_revived" ); } -remote_revive( reviver ) +remote_revive( reviver ) //checked matches cerberus output { if ( !self player_is_in_laststand() ) { @@ -1099,7 +1085,7 @@ remote_revive( reviver ) self auto_revive( reviver ); } -revive_success( reviver, b_track_stats ) +revive_success( reviver, b_track_stats ) //checked changed to match cerberus output { if ( !isDefined( b_track_stats ) ) { @@ -1107,14 +1093,14 @@ revive_success( reviver, b_track_stats ) } if ( !isplayer( self ) ) { - self notify( "player_revived" ); + self notify( "player_revived", reviver ); return; } if ( isDefined( b_track_stats ) && b_track_stats ) { maps/mp/_demo::bookmark( "zm_player_revived", getTime(), self, reviver ); } - self notify( "player_revived" ); + self notify( "player_revived", reviver ); self reviveplayer(); self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); if ( isDefined( self.pers_upgrades_awarded[ "perk_lose" ] ) && self.pers_upgrades_awarded[ "perk_lose" ] ) @@ -1137,9 +1123,6 @@ revive_success( reviver, b_track_stats ) { reviver thread check_for_sacrifice(); } - if ( isDefined( level.missioncallbacks ) ) - { - } setclientsysstate( "lsm", "0", self ); self.revivetrigger delete(); self.revivetrigger = undefined; @@ -1148,8 +1131,9 @@ revive_success( reviver, b_track_stats ) self.ignoreme = 0; } -revive_force_revive( reviver ) +revive_force_revive( reviver ) //checked matches cerberus output { + /* /# assert( isDefined( self ) ); #/ @@ -1159,10 +1143,11 @@ revive_force_revive( reviver ) /# assert( self player_is_in_laststand() ); #/ + */ self thread revive_success( reviver ); } -revive_hud_create() +revive_hud_create() //checked matches cerberus output { self.revive_hud = newclienthudelem( self ); self.revive_hud.alignx = "center"; @@ -1171,7 +1156,7 @@ revive_hud_create() self.revive_hud.vertalign = "bottom"; self.revive_hud.foreground = 1; self.revive_hud.font = "default"; - self.revive_hud.fontscale = 1,5; + self.revive_hud.fontscale = 1.5; self.revive_hud.alpha = 0; self.revive_hud.color = ( 1, 1, 1 ); self.revive_hud.hidewheninmenu = 1; @@ -1179,13 +1164,13 @@ revive_hud_create() self.revive_hud.y = -160; } -revive_hud_think() +revive_hud_think() //checked partially changed to match cerberus output //did not change while loops to for loops to prevent infinite loop bug due to continue { self endon( "disconnect" ); while ( 1 ) { wait 0,1; - while ( !player_any_player_in_laststand() ) + if ( !player_any_player_in_laststand() ) { continue; } @@ -1199,12 +1184,9 @@ revive_hud_think() i++; continue; } - else + if ( !isDefined( playertorevive ) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime ) { - if ( !isDefined( playertorevive ) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime ) - { - playertorevive = players[ i ]; - } + playertorevive = players[ i ]; } i++; } @@ -1218,7 +1200,7 @@ revive_hud_think() i++; continue; } - else if ( getDvar( "g_gametype" ) == "vs" ) + if ( getDvar( "g_gametype" ) == "vs" ) { if ( players[ i ].team != playertorevive.team ) { @@ -1226,32 +1208,29 @@ revive_hud_think() continue; } } - else if ( is_encounter() ) + if ( is_encounter() ) { if ( players[ i ].sessionteam != playertorevive.sessionteam ) { i++; continue; } - else if ( isDefined( level.hide_revive_message ) && level.hide_revive_message ) + if ( isDefined( level.hide_revive_message ) && level.hide_revive_message ) { i++; continue; } } - else - { - players[ i ] thread faderevivemessageover( playertorevive, 3 ); - } + players[ i ] thread faderevivemessageover( playertorevive, 3 ); i++; } playertorevive.revivetrigger.createtime = undefined; - wait 3,5; + wait 3.5; } } } -faderevivemessageover( playertorevive, time ) +faderevivemessageover( playertorevive, time ) //checked matches cerberus output { revive_hud_show(); self.revive_hud settext( &"ZOMBIE_PLAYER_NEEDS_TO_BE_REVIVED", playertorevive ); @@ -1259,26 +1238,29 @@ faderevivemessageover( playertorevive, time ) self.revive_hud.alpha = 0; } -revive_hud_show() +revive_hud_show() //checked matches cerberus output { + /* /# assert( isDefined( self ) ); #/ /# assert( isDefined( self.revive_hud ) ); #/ + */ self.revive_hud.alpha = 1; } -revive_hud_show_n_fade( time ) +revive_hud_show_n_fade( time ) //checked matches cerberus output { revive_hud_show(); self.revive_hud fadeovertime( time ); self.revive_hud.alpha = 0; } -drawcylinder( pos, rad, height ) +drawcylinder( pos, rad, height ) //checked matches cerberus output //may need to review order of operations { + /* /# currad = rad; curheight = height; @@ -1293,13 +1275,16 @@ drawcylinder( pos, rad, height ) r++; #/ } + */ } -get_lives_remaining() +get_lives_remaining() //checked matches cerberus output { + /* /# assert( level.laststandgetupallowed, "Lives only exist in the Laststand type GETUP." ); #/ + */ if ( level.laststandgetupallowed && isDefined( self.laststand_info ) && isDefined( self.laststand_info.type_getup_lives ) ) { return max( 0, self.laststand_info.type_getup_lives ); @@ -1307,14 +1292,16 @@ get_lives_remaining() return 0; } -update_lives_remaining( increment ) +update_lives_remaining( increment ) //checked changed to match cerberus output { + /* /# assert( level.laststandgetupallowed, "Lives only exist in the Laststand type GETUP." ); #/ /# assert( isDefined( increment ), "Must specify increment true or false" ); #/ + */ if ( isDefined( increment ) ) { } @@ -1329,25 +1316,29 @@ update_lives_remaining( increment ) { } self.laststand_info.type_getup_lives = max( 0, self.laststand_info.type_getup_lives - 1, self.laststand_info.type_getup_lives + 1 ); - self notify( "laststand_lives_updated" ); + self notify( "laststand_lives_updated", self.laststand_info.type_getup_lives + 1, increment ); } -player_getup_setup() +player_getup_setup() //checked matches cerberus output { + /* /# println( "ZM >> player_getup_setup called" ); #/ + */ self.laststand_info = spawnstruct(); self.laststand_info.type_getup_lives = level.const_laststand_getup_count_start; } -laststand_getup() +laststand_getup() //checked matches cerberus output { self endon( "player_revived" ); self endon( "disconnect" ); + /* /# println( "ZM >> laststand_getup called" ); #/ + */ self update_lives_remaining( 0 ); setclientsysstate( "lsm", "1", self ); self.laststand_info.getup_bar_value = level.const_laststand_getup_bar_start; @@ -1356,13 +1347,13 @@ laststand_getup() while ( self.laststand_info.getup_bar_value < 1 ) { self.laststand_info.getup_bar_value += level.const_laststand_getup_bar_regen; - wait 0,05; + wait 0.05; } self auto_revive( self ); setclientsysstate( "lsm", "0", self ); } -laststand_getup_damage_watcher() +laststand_getup_damage_watcher() //checked matches cerberus output { self endon( "player_revived" ); self endon( "disconnect" ); @@ -1377,7 +1368,7 @@ laststand_getup_damage_watcher() } } -laststand_getup_hud() +laststand_getup_hud() //checked matches cerberus output { self endon( "player_revived" ); self endon( "disconnect" ); @@ -1389,7 +1380,7 @@ laststand_getup_hud() hudelem.x = 5; hudelem.y = 170; hudelem.font = "big"; - hudelem.fontscale = 1,5; + hudelem.fontscale = 1.5; hudelem.foreground = 1; hudelem.hidewheninmenu = 1; hudelem.hidewhendead = 1; @@ -1399,17 +1390,17 @@ laststand_getup_hud() while ( 1 ) { hudelem setvalue( self.laststand_info.getup_bar_value ); - wait 0,05; + wait 0.05; } } -laststand_getup_hud_destroy( hudelem ) +laststand_getup_hud_destroy( hudelem ) //checked matches cerberus output { self waittill_either( "player_revived", "disconnect" ); hudelem destroy(); } -check_for_sacrifice() +check_for_sacrifice() //checked matches cerberus output { self delay_notify( "sacrifice_denied", 1 ); self endon( "sacrifice_denied" ); @@ -1418,7 +1409,7 @@ check_for_sacrifice() self maps/mp/zombies/_zm_stats::increment_player_stat( "sacrifices" ); } -check_for_failed_revive( playerbeingrevived ) +check_for_failed_revive( playerbeingrevived ) //checked matches cerberus output { self endon( "disconnect" ); playerbeingrevived endon( "disconnect" ); @@ -1431,7 +1422,7 @@ check_for_failed_revive( playerbeingrevived ) self maps/mp/zombies/_zm_stats::increment_player_stat( "failed_revives" ); } -add_weighted_down() +add_weighted_down() //checked matches cerberus output { if ( !level.curr_gametype_affects_rank ) { @@ -1445,7 +1436,7 @@ add_weighted_down() self addplayerstat( "weighted_downs", weighted_down ); } -cleanup_laststand_on_disconnect() +cleanup_laststand_on_disconnect() //checked matches cerberus output { self endon( "player_revived" ); self endon( "player_suicide" ); @@ -1457,3 +1448,4 @@ cleanup_laststand_on_disconnect() trig delete(); } } + diff --git a/patch_zm/maps/mp/zombies/_zm_sidequests.gsc b/patch_zm/maps/mp/zombies/_zm_sidequests.gsc index 72aa244..6283a0e 100644 --- a/patch_zm/maps/mp/zombies/_zm_sidequests.gsc +++ b/patch_zm/maps/mp/zombies/_zm_sidequests.gsc @@ -2,16 +2,18 @@ #include maps/mp/_utility; #include common_scripts/utility; -init_sidequests() +init_sidequests() //checked matches cerberus output { level._sidequest_icons_base_x = -225; level._zombie_sidequests = []; + /* /# level thread sidequest_debug(); #/ + */ } -is_sidequest_allowed( a_gametypes ) +is_sidequest_allowed( a_gametypes ) //checked changed to match cerberus output { if ( isDefined( level.gamedifficulty ) && level.gamedifficulty == 0 ) { @@ -22,21 +24,21 @@ is_sidequest_allowed( a_gametypes ) { a_gametypes = array( a_gametypes ); } - i = 0; - while ( i < a_gametypes.size ) + for ( i = 0; i < a_gametypes.size; i++ ) { if ( getDvar( "g_gametype" ) == a_gametypes[ i ] ) { b_is_gametype_active = 1; } - i++; } return b_is_gametype_active; } -sidequest_debug() +sidequest_debug() //checked matches cerberus output { + /* /# + //dvar name is unknown if ( getDvar( #"A7AC338D" ) != "1" ) { return; @@ -46,9 +48,10 @@ sidequest_debug() wait 1; #/ } + */ } -damager_trigger_thread( dam_types, trigger_func ) +damager_trigger_thread( dam_types, trigger_func ) //checked changed to match cerberus output { while ( 1 ) { @@ -58,17 +61,12 @@ damager_trigger_thread( dam_types, trigger_func ) self.dam_dir = dir; self.dam_point = point; self.dam_type = type; - i = 0; - while ( i < dam_types.size ) + for ( i = 0; i < dam_types.size; i++ ) { if ( type == dam_types[ i ] ) { break; } - else - { - i++; - } } } if ( isDefined( trigger_func ) ) @@ -78,7 +76,7 @@ damager_trigger_thread( dam_types, trigger_func ) self notify( "triggered" ); } -damage_trigger_thread() +damage_trigger_thread() //checked matches cerberus output { self endon( "death" ); while ( 1 ) @@ -88,18 +86,18 @@ damage_trigger_thread() } } -sidequest_uses_teleportation( name ) +sidequest_uses_teleportation( name ) //checked matches cerberus output { level._zombie_sidequests[ name ].uses_teleportation = 1; } -declare_sidequest_icon( sidequest_name, icon_name, shader_name ) +declare_sidequest_icon( sidequest_name, icon_name, shader_name ) //checked matches cerberus output { sidequest = level._zombie_sidequests[ sidequest_name ]; sidequest.icons[ icon_name ] = shader_name; } -create_icon( shader_name, x ) +create_icon( shader_name, x ) //checked matches cerberus output { icon = create_simple_hud( self ); icon.foreground = 1; @@ -116,7 +114,7 @@ create_icon( shader_name, x ) return icon; } -add_sidequest_icon( sidequest_name, icon_name ) +add_sidequest_icon( sidequest_name, icon_name ) //checked matches cerberus output { if ( !isDefined( self.sidequest_icons ) ) { @@ -132,10 +130,10 @@ add_sidequest_icon( sidequest_name, icon_name ) { base_x += level._zombiemode_sidequest_icon_offset; } - self.sidequest_icons[ icon_name ] = self create_icon( sq.icons[ icon_name ], base_x + ( self.sidequest_icons.size * 34 ) ); + self.sidequest_icons[ icon_name ] = self create_icon( sq.icons[ icon_name ], base_x + self.sidequest_icons.size * 34 ); } -remove_sidequest_icon( sidequest_name, icon_name ) +remove_sidequest_icon( sidequest_name, icon_name ) //checked changed to match cerberus output { if ( !isDefined( self.sidequest_icons ) ) { @@ -148,14 +146,12 @@ remove_sidequest_icon( sidequest_name, icon_name ) icon = self.sidequest_icons[ icon_name ]; new_array = []; keys = getarraykeys( self.sidequest_icons ); - i = 0; - while ( i < keys.size ) + for ( i = 0; i < keys.size; i++ ) { if ( keys[ i ] != icon_name ) { new_array[ keys[ i ] ] = self.sidequest_icons[ keys[ i ] ]; } - i++; } self.sidequest_icons = new_array; icon destroy(); @@ -165,20 +161,19 @@ remove_sidequest_icon( sidequest_name, icon_name ) { base_x += level._zombiemode_sidequest_icon_offset; } - i = 0; - while ( i < keys.size ) + for ( i = 0; i < keys.size; i++ ) { - self.sidequest_icons[ keys[ i ] ].x = base_x + ( i * 34 ); - i++; + self.sidequest_icons[ keys[ i ] ].x = base_x + i * 34; } } -declare_sidequest( name, init_func, logic_func, complete_func, generic_stage_start_func, generic_stage_end_func ) +declare_sidequest( name, init_func, logic_func, complete_func, generic_stage_start_func, generic_stage_end_func ) //checked matches cerberus output { if ( !isDefined( level._zombie_sidequests ) ) { init_sidequests(); } + /* /# if ( isDefined( level._zombie_sidequests[ name ] ) ) { @@ -186,6 +181,7 @@ declare_sidequest( name, init_func, logic_func, complete_func, generic_stage_sta return; #/ } + */ sq = spawnstruct(); sq.name = name; sq.stages = []; @@ -205,8 +201,9 @@ declare_sidequest( name, init_func, logic_func, complete_func, generic_stage_sta level._zombie_sidequests[ name ] = sq; } -declare_sidequest_stage( sidequest_name, stage_name, init_func, logic_func, exit_func ) +declare_sidequest_stage( sidequest_name, stage_name, init_func, logic_func, exit_func ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -224,6 +221,7 @@ declare_sidequest_stage( sidequest_name, stage_name, init_func, logic_func, exit return; #/ } + */ stage = spawnstruct(); stage.name = stage_name; stage.stage_number = level._zombie_sidequests[ sidequest_name ].stages.size; @@ -237,8 +235,9 @@ declare_sidequest_stage( sidequest_name, stage_name, init_func, logic_func, exit level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] = stage; } -set_stage_time_limit( sidequest_name, stage_name, time_limit, timer_func ) +set_stage_time_limit( sidequest_name, stage_name, time_limit, timer_func ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -256,13 +255,15 @@ set_stage_time_limit( sidequest_name, stage_name, time_limit, timer_func ) return; #/ } + */ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].time_limit = time_limit; level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].time_limit_func = timer_func; } -declare_stage_asset_from_struct( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) +declare_stage_asset_from_struct( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) //checked changed to match cerberus output { structs = getstructarray( target_name, "targetname" ); + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -285,8 +286,8 @@ declare_stage_asset_from_struct( sidequest_name, stage_name, target_name, thread return; #/ } - i = 0; - while ( i < structs.size ) + */ + for ( i = 0; i < structs.size; i++ ) { asset = spawnstruct(); asset.type = "struct"; @@ -294,12 +295,12 @@ declare_stage_asset_from_struct( sidequest_name, stage_name, target_name, thread asset.thread_func = thread_func; asset.trigger_thread_func = trigger_thread_func; level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets[ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets.size ] = asset; - i++; } } -declare_stage_title( sidequest_name, stage_name, title ) +declare_stage_title( sidequest_name, stage_name, title ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -317,12 +318,14 @@ declare_stage_title( sidequest_name, stage_name, title ) return; #/ } + */ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].title = title; } -declare_stage_asset( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) +declare_stage_asset( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) //checked changed to match cerberus output { ents = getentarray( target_name, "targetname" ); + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -345,8 +348,8 @@ declare_stage_asset( sidequest_name, stage_name, target_name, thread_func, trigg return; #/ } - i = 0; - while ( i < ents.size ) + */ + for ( i = 0; i < ents.size; i++ ) { asset = spawnstruct(); asset.type = "entity"; @@ -354,13 +357,13 @@ declare_stage_asset( sidequest_name, stage_name, target_name, thread_func, trigg asset.thread_func = thread_func; asset.trigger_thread_func = trigger_thread_func; level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets[ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets.size ] = asset; - i++; } } -declare_sidequest_asset( sidequest_name, target_name, thread_func, trigger_thread_func ) +declare_sidequest_asset( sidequest_name, target_name, thread_func, trigger_thread_func ) //checked changed to match cerberus output { ents = getentarray( target_name, "targetname" ); + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -378,8 +381,8 @@ declare_sidequest_asset( sidequest_name, target_name, thread_func, trigger_threa return; #/ } - i = 0; - while ( i < ents.size ) + */ + for ( i = 0; i < ents.size; i++ ) { asset = spawnstruct(); asset.type = "entity"; @@ -389,13 +392,13 @@ declare_sidequest_asset( sidequest_name, target_name, thread_func, trigger_threa asset.ent.thread_func = thread_func; asset.ent.trigger_thread_func = trigger_thread_func; level._zombie_sidequests[ sidequest_name ].assets[ level._zombie_sidequests[ sidequest_name ].assets.size ] = asset; - i++; } } -declare_sidequest_asset_from_struct( sidequest_name, target_name, thread_func, trigger_thread_func ) +declare_sidequest_asset_from_struct( sidequest_name, target_name, thread_func, trigger_thread_func ) //checked changed to match cerberus output { structs = getstructarray( target_name, "targetname" ); + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -413,8 +416,8 @@ declare_sidequest_asset_from_struct( sidequest_name, target_name, thread_func, t return; #/ } - i = 0; - while ( i < structs.size ) + */ + for ( i = 0; i < structs.size; i++ ) { asset = spawnstruct(); asset.type = "struct"; @@ -422,11 +425,10 @@ declare_sidequest_asset_from_struct( sidequest_name, target_name, thread_func, t asset.thread_func = thread_func; asset.trigger_thread_func = trigger_thread_func; level._zombie_sidequests[ sidequest_name ].assets[ level._zombie_sidequests[ sidequest_name ].assets.size ] = asset; - i++; } } -build_asset_from_struct( asset, parent_struct ) +build_asset_from_struct( asset, parent_struct ) //checked matches cerberus output { ent = spawn( "script_model", asset.origin ); if ( isDefined( asset.model ) ) @@ -453,10 +455,9 @@ build_asset_from_struct( asset, parent_struct ) return ent; } -delete_stage_assets() +delete_stage_assets() //checked changed to match cerberus output { - i = 0; - while ( i < self.active_assets.size ) + for ( i = 0; i < self.active_assets.size; i++ ) { asset = self.active_assets[ i ]; switch( asset.type ) @@ -464,48 +465,44 @@ delete_stage_assets() case "struct": if ( isDefined( asset.trigger ) ) { + /* /# println( "Deleting trigger from struct type asset." ); #/ + */ asset.trigger delete(); asset.trigger = undefined; } asset delete(); break; - i++; - continue; case "entity": if ( isDefined( asset.trigger ) ) { + /* /# println( "Deleting trigger from ent type asset." ); #/ + */ asset.trigger delete(); asset.trigger = undefined; } break; - i++; - continue; } - i++; } remaining_assets = []; - i = 0; - while ( i < self.active_assets.size ) + for ( i = 0; i < self.active_assets.size; i++ ) { if ( isDefined( self.active_assets[ i ] ) ) { remaining_assets[ remaining_assets.size ] = self.active_assets[ i ]; } - i++; } self.active_assets = remaining_assets; } -build_assets() +build_assets() //checked changed to match cerberus output { - i = 0; - while ( i < self.assets.size ) + for ( i = 0; i < self.assets.size; i++ ) { asset = undefined; switch( self.assets[ i ].type ) @@ -515,30 +512,27 @@ build_assets() self.active_assets[ self.active_assets.size ] = build_asset_from_struct( asset, self.assets[ i ] ); break; case "entity": - j = 0; - while ( j < self.active_assets.size ) + for ( j = 0; j < self.active_assets.size; j++ ) { if ( self.active_assets[ j ] == self.assets[ i ].ent ) { asset = self.active_assets[ j ]; break; } - else - { - j++; - } } asset = self.assets[ i ].ent; asset.type = "entity"; self.active_assets[ self.active_assets.size ] = asset; break; default: + /* /# println( "*** ERROR: Don't know how to build asset of type " + self.assets.type ); #/ + */ break; } - if ( isDefined( asset.script_noteworthy ) && self.assets[ i ].type == "entity" || !isDefined( asset.trigger ) && isDefined( asset.script_noteworthy ) ) + if ( isDefined( asset.script_noteworthy ) && self.assets[ i ].type == "entity" && !isDefined( asset.trigger ) || isDefined( asset.script_noteworthy ) ) { trigger_radius = 15; trigger_height = 72; @@ -555,7 +549,7 @@ build_assets() { trigger_spawnflags = asset.script_trigger_spawnflags; } - trigger_offset = ( 0, 1, 0 ); + trigger_offset = ( 0, 0, 0 ); if ( isDefined( asset.script_vector ) ) { trigger_offset = asset.script_vector; @@ -581,7 +575,6 @@ build_assets() } self.active_assets[ self.active_assets.size - 1 ].trigger = use_trigger; break; - break; case "trigger_radius_damage": damage_trigger = spawn( "trigger_damage", asset.origin + trigger_offset, trigger_spawnflags, trigger_radius, trigger_height ); if ( isDefined( asset.radius ) ) @@ -599,7 +592,6 @@ build_assets() } self.active_assets[ self.active_assets.size - 1 ].trigger = damage_trigger; break; - break; case "trigger_radius": radius_trigger = spawn( "trigger_radius", asset.origin + trigger_offset, trigger_spawnflags, trigger_radius, trigger_height ); if ( isDefined( asset.radius ) ) @@ -617,22 +609,21 @@ build_assets() } self.active_assets[ self.active_assets.size - 1 ].trigger = radius_trigger; break; - break; + } } if ( isDefined( self.assets[ i ].thread_func ) && !isDefined( self.active_assets[ self.active_assets.size - 1 ].dont_rethread ) ) { self.active_assets[ self.active_assets.size - 1 ] thread [[ self.assets[ i ].thread_func ]](); } - if ( ( i % 2 ) == 0 ) + if ( i % 2 == 0 ) { wait_network_frame(); } - i++; } } -radius_trigger_thread() +radius_trigger_thread() //checked matches cerberus output { self endon( "death" ); while ( 1 ) @@ -645,36 +636,35 @@ radius_trigger_thread() self.owner_ent notify( "triggered" ); while ( player istouching( self ) ) { - wait 0,05; + wait 0.05; } self.owner_ent notify( "untriggered" ); } } -thread_on_assets( target_name, thread_func ) +thread_on_assets( target_name, thread_func ) //checked changed to match cerberus output { - i = 0; - while ( i < self.active_assets.size ) + for ( i = 0; i < self.active_assets.size; i++ ) { if ( self.active_assets[ i ].targetname == target_name ) { self.active_assets[ i ] thread [[ thread_func ]](); } - i++; } } -stage_logic_func_wrapper( sidequest, stage ) +stage_logic_func_wrapper( sidequest, stage ) //checked matches cerberus output { if ( isDefined( stage.logic_func ) ) { - level endon( ( sidequest.name + "_" ) + stage.name + "_over" ); + level endon( sidequest.name + "_" + stage.name + "_over" ); stage [[ stage.logic_func ]](); } } -sidequest_start( sidequest_name ) +sidequest_start( sidequest_name ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -687,6 +677,7 @@ sidequest_start( sidequest_name ) return; #/ } + */ sidequest = level._zombie_sidequests[ sidequest_name ]; sidequest build_assets(); if ( isDefined( sidequest.init_func ) ) @@ -699,7 +690,7 @@ sidequest_start( sidequest_name ) } } -stage_start( sidequest, stage ) +stage_start( sidequest, stage ) //checked matches cerberus output { if ( isstring( sidequest ) ) { @@ -711,7 +702,7 @@ stage_start( sidequest, stage ) } stage build_assets(); sidequest.active_stage = stage.stage_number; - level notify( ( sidequest.name + "_" ) + stage.name + "_started" ); + level notify( sidequest.name + "_" + stage.name + "_started" ); stage.completed = 0; if ( isDefined( sidequest.generic_stage_start_func ) ) { @@ -733,7 +724,7 @@ stage_start( sidequest, stage ) } } -display_stage_title( wait_for_teleport_done_notify ) +display_stage_title( wait_for_teleport_done_notify ) //checked changed to match cerberus output { if ( wait_for_teleport_done_notify ) { @@ -745,16 +736,16 @@ display_stage_title( wait_for_teleport_done_notify ) stage_text.alignx = "center"; stage_text.aligny = "middle"; stage_text.foreground = 1; - stage_text.fontscale = 1,6; + stage_text.fontscale = 1.6; stage_text.sort = 20; stage_text.x = 320; stage_text.y = 300; stage_text.og_scale = 1; - stage_text.color = vectorScale( ( 0, 1, 0 ), 128 ); + stage_text.color = vectorScale( ( 1, 0, 0 ), 128 ); stage_text.alpha = 0; stage_text.fontstyle3d = "shadowedmore"; stage_text settext( self.title ); - stage_text fadeovertime( 0,5 ); + stage_text fadeovertime( 0.5 ); stage_text.alpha = 1; wait 5; stage_text fadeovertime( 1 ); @@ -763,22 +754,24 @@ display_stage_title( wait_for_teleport_done_notify ) stage_text destroy(); } -time_limited_stage( sidequest ) +time_limited_stage( sidequest ) //checked matches cerberus output { + /* /# println( "*** Starting timer for sidequest " + sidequest.name + " stage " + self.name + " : " + self.time_limit + " seconds." ); #/ - level endon( ( sidequest.name + "_" ) + self.name + "_over" ); + */ + level endon( sidequest.name + "_" + self.name + "_over" ); level endon( "suspend_timer" ); level endon( "end_game" ); time_limit = undefined; if ( isDefined( self.time_limit_func ) ) { - time_limit = [[ self.time_limit_func ]]() * 0,25; + time_limit = [[ self.time_limit_func ]]() * 0.25; } else { - time_limit = self.time_limit * 0,25; + time_limit = self.time_limit * 0.25; } wait time_limit; level notify( "timed_stage_75_percent" ); @@ -792,8 +785,9 @@ time_limited_stage( sidequest ) stage_failed( sidequest, self ); } -sidequest_println( str ) +sidequest_println( str ) //checked matches cerberus output { + /* /# if ( getDvar( #"A7AC338D" ) != "1" ) { @@ -801,29 +795,25 @@ sidequest_println( str ) } println( str ); #/ + */ } -precache_sidequest_assets() +precache_sidequest_assets() //checked changed to match cerberus output { sidequest_names = getarraykeys( level._zombie_sidequests ); - i = 0; - while ( i < sidequest_names.size ) + for ( i = 0; i < sidequest_names.size; i++ ) { sq = level._zombie_sidequests[ sidequest_names[ i ] ]; icon_keys = getarraykeys( sq.icons ); - j = 0; - while ( j < icon_keys.size ) + for ( j = 0; j < icon_keys.size; j++ ) { precacheshader( sq.icons[ icon_keys[ j ] ] ); - j++; } stage_names = getarraykeys( sq.stages ); - j = 0; - while ( j < stage_names.size ) + for ( j = 0; j < stage_names.size; j++ ) { stage = sq.stages[ stage_names[ j ] ]; - k = 0; - while ( k < stage.assets.size ) + for ( k = 0; k < stage.assets.size; k++ ) { asset = stage.assets[ k ]; if ( isDefined( asset.type ) && asset.type == "struct" ) @@ -833,16 +823,14 @@ precache_sidequest_assets() precachemodel( asset.model ); } } - k++; } - j++; } - i++; } } -sidequest_complete( sidequest_name ) +sidequest_complete( sidequest_name ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -855,11 +843,13 @@ sidequest_complete( sidequest_name ) return; #/ } + */ return level._zombie_sidequests[ sidequest_name ].sidequest_complete; } -stage_completed( sidequest_name, stage_name ) +stage_completed( sidequest_name, stage_name ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -878,27 +868,32 @@ stage_completed( sidequest_name, stage_name ) } println( "*** stage completed called." ); #/ + */ sidequest = level._zombie_sidequests[ sidequest_name ]; stage = sidequest.stages[ stage_name ]; level thread stage_completed_internal( sidequest, stage ); } -stage_completed_internal( sidequest, stage ) +stage_completed_internal( sidequest, stage ) //checked changed to match cerberus output { - level notify( ( sidequest.name + "_" ) + stage.name + "_over" ); - level notify( ( sidequest.name + "_" ) + stage.name + "_completed" ); + level notify( sidequest.name + "_" + stage.name + "_over" ); + level notify( sidequest.name + "_" + stage.name + "_completed" ); if ( isDefined( sidequest.generic_stage_end_func ) ) { + /* /# println( "Calling generic end func." ); #/ + */ stage [[ sidequest.generic_stage_end_func ]](); } if ( isDefined( stage.exit_func ) ) { + /* /# println( "Calling stage end func." ); #/ + */ stage [[ stage.exit_func ]]( 1 ); } stage.completed = 1; @@ -907,18 +902,13 @@ stage_completed_internal( sidequest, stage ) stage delete_stage_assets(); all_complete = 1; stage_names = getarraykeys( sidequest.stages ); - i = 0; - while ( i < stage_names.size ) + for ( i = 0; i < stage_names.size; i++ ) { if ( sidequest.stages[ stage_names[ i ] ].completed == 0 ) { all_complete = 0; break; } - else - { - i++; - } } if ( all_complete == 1 ) { @@ -931,10 +921,10 @@ stage_completed_internal( sidequest, stage ) } } -stage_failed_internal( sidequest, stage ) +stage_failed_internal( sidequest, stage ) //checked matches cerberus output { - level notify( ( sidequest.name + "_" ) + stage.name + "_over" ); - level notify( ( sidequest.name + "_" ) + stage.name + "_failed" ); + level notify( sidequest.name + "_" + stage.name + "_over" ); + level notify( sidequest.name + "_" + stage.name + "_failed" ); if ( isDefined( sidequest.generic_stage_end_func ) ) { stage [[ sidequest.generic_stage_end_func ]](); @@ -947,11 +937,13 @@ stage_failed_internal( sidequest, stage ) stage delete_stage_assets(); } -stage_failed( sidequest, stage ) +stage_failed( sidequest, stage ) //checked matches cerberus output { + /* /# println( "*** Stage failed called." ); #/ + */ if ( isstring( sidequest ) ) { sidequest = level._zombie_sidequests[ sidequest ]; @@ -963,64 +955,57 @@ stage_failed( sidequest, stage ) level thread stage_failed_internal( sidequest, stage ); } -get_sidequest_stage( sidequest, stage_number ) +get_sidequest_stage( sidequest, stage_number ) //checked changed to match cerberus output { stage = undefined; stage_names = getarraykeys( sidequest.stages ); - i = 0; - while ( i < stage_names.size ) + for ( i = 0; i < stage_names.size; i++ ) { if ( sidequest.stages[ stage_names[ i ] ].stage_number == stage_number ) { stage = sidequest.stages[ stage_names[ i ] ]; break; } - else - { - i++; - } } return stage; } -get_damage_trigger( radius, origin, damage_types ) +get_damage_trigger( radius, origin, damage_types ) //checked matches cerberus output { trig = spawn( "trigger_damage", origin, 0, radius, 72 ); trig thread dam_trigger_thread( damage_types ); return trig; } -dam_trigger_thread( damage_types ) +dam_trigger_thread( damage_types ) //checked changed to match cerberus output { self endon( "death" ); damage_type = "NONE"; while ( 1 ) { self waittill( "damage", amount, attacker, dir, point, mod ); - i = 0; - while ( i < damage_types.size ) + for ( i = 0; i < damage_types.size; i++ ) { if ( mod == damage_types[ i ] ) { self notify( "triggered" ); } - i++; } } } -use_trigger_thread() +use_trigger_thread() //checked matches cerberus output { self endon( "death" ); while ( 1 ) { self waittill( "trigger", player ); self.owner_ent notify( "triggered" ); - wait 0,1; + wait 0.1; } } -sidequest_stage_active( sidequest_name, stage_name ) +sidequest_stage_active( sidequest_name, stage_name ) //checked matches cerberus output { sidequest = level._zombie_sidequests[ sidequest_name ]; stage = sidequest.stages[ stage_name ]; @@ -1034,8 +1019,9 @@ sidequest_stage_active( sidequest_name, stage_name ) } } -sidequest_start_next_stage( sidequest_name ) +sidequest_start_next_stage( sidequest_name ) //checked matches cerberus output { + /* /# if ( !isDefined( level._zombie_sidequests ) ) { @@ -1048,6 +1034,7 @@ sidequest_start_next_stage( sidequest_name ) return; #/ } + */ sidequest = level._zombie_sidequests[ sidequest_name ]; if ( sidequest.sidequest_complete == 1 ) { @@ -1065,20 +1052,22 @@ sidequest_start_next_stage( sidequest_name ) stage = get_sidequest_stage( sidequest, last_completed ); if ( !isDefined( stage ) ) { + /* /# println( "*** ERROR: Sidequest " + sidequest_name + " has no stage number " + last_completed ); #/ + */ return; } stage_start( sidequest, stage ); return stage; } -main() +main() //checked matches cerberus output { } -is_facing( facee ) +is_facing( facee ) //checked matches cerberus output { orientation = self getplayerangles(); forwardvec = anglesToForward( orientation ); @@ -1088,10 +1077,10 @@ is_facing( facee ) tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); unittofaceevec2d = vectornormalize( tofaceevec2d ); dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); - return dotproduct > 0,9; + return dotproduct > 0.9; } -fake_use( notify_string, qualifier_func ) +fake_use( notify_string, qualifier_func ) //checked changed to match cerberus output { waittillframeend; while ( 1 ) @@ -1100,12 +1089,13 @@ fake_use( notify_string, qualifier_func ) { return; } + /* /# print3d( self.origin, "+", vectorScale( ( 0, 1, 0 ), 255 ), 1 ); #/ + */ players = get_players(); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { qualifier_passed = 1; if ( isDefined( qualifier_func ) ) @@ -1118,13 +1108,13 @@ fake_use( notify_string, qualifier_func ) { if ( players[ i ] usebuttonpressed() ) { - self notify( notify_string ); + self notify( notify_string, players[ i ] ); return; } } } - i++; } - wait 0,1; + wait 0.1; } } + diff --git a/patch_zm/maps/mp/zombies/_zm_stats.gsc b/patch_zm/maps/mp/zombies/_zm_stats.gsc index 9bfce24..6459e15 100644 --- a/patch_zm/maps/mp/zombies/_zm_stats.gsc +++ b/patch_zm/maps/mp/zombies/_zm_stats.gsc @@ -6,7 +6,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { level.player_stats_init = ::player_stats_init; level.add_client_stat = ::add_client_stat; @@ -14,7 +14,7 @@ init() level.track_gibs = ::do_stats_for_gibs; } -player_stats_init() +player_stats_init() //checked matches cerberus output { self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "kills", 0 ); self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "suicides", 0 ); @@ -195,7 +195,7 @@ player_stats_init() } } -update_players_stats_at_match_end( players ) +update_players_stats_at_match_end( players ) //checked partially matches cerberus output //did not change while loop to for loop to prevent infinite loop continue bug { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -214,12 +214,9 @@ update_players_stats_at_match_end( players ) { matchrecorderincrementheaderstat( "winningTeam", 1 ); } - else + else if ( level.gamemodulewinningteam == "A" ) { - if ( level.gamemodulewinningteam == "A" ) - { - matchrecorderincrementheaderstat( "winningTeam", 2 ); - } + matchrecorderincrementheaderstat( "winningTeam", 2 ); } } recordmatchsummaryzombieendgamedata( game_mode, game_mode_group, map_location_name, level.round_number ); @@ -233,49 +230,46 @@ update_players_stats_at_match_end( players ) i++; continue; } - else + distance = player get_stat_distance_traveled(); + player addplayerstatwithgametype( "distance_traveled", distance ); + player add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "time_played_total", player.pers[ "time_played_total" ] ); + recordplayermatchend( player ); + recordplayerstats( player, "presentAtEnd", 1 ); + player maps/mp/zombies/_zm_weapons::updateweapontimingszm( newtime ); + if ( isDefined( level._game_module_stat_update_func ) ) { - distance = player get_stat_distance_traveled(); - player addplayerstatwithgametype( "distance_traveled", distance ); - player add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "time_played_total", player.pers[ "time_played_total" ] ); - recordplayermatchend( player ); - recordplayerstats( player, "presentAtEnd", 1 ); - player maps/mp/zombies/_zm_weapons::updateweapontimingszm( newtime ); - if ( isDefined( level._game_module_stat_update_func ) ) + player [[ level._game_module_stat_update_func ]](); + } + old_high_score = player get_game_mode_stat( game_mode, "score" ); + if ( player.score_total > old_high_score ) + { + player set_game_mode_stat( game_mode, "score", player.score_total ); + } + if ( gamemodeismode( level.gamemode_public_match ) ) + { + player gamehistoryfinishmatch( 4, 0, 0, 0, 0, 0 ); + if ( isDefined( player.pers[ "matchesPlayedStatsTracked" ] ) ) { - player [[ level._game_module_stat_update_func ]](); - } - old_high_score = player get_game_mode_stat( game_mode, "score" ); - if ( player.score_total > old_high_score ) - { - player set_game_mode_stat( game_mode, "score", player.score_total ); - } - if ( gamemodeismode( level.gamemode_public_match ) ) - { - player gamehistoryfinishmatch( 4, 0, 0, 0, 0, 0 ); - if ( isDefined( player.pers[ "matchesPlayedStatsTracked" ] ) ) + gamemode = maps/mp/gametypes_zm/_globallogic::getcurrentgamemode(); + player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "played", "completed" ); + if ( isDefined( player.pers[ "matchesHostedStatsTracked" ] ) ) { - gamemode = maps/mp/gametypes_zm/_globallogic::getcurrentgamemode(); - player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "played", "completed" ); - if ( isDefined( player.pers[ "matchesHostedStatsTracked" ] ) ) - { - player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "hosted", "completed" ); - } + player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "hosted", "completed" ); } } - if ( !isDefined( player.pers[ "previous_distance_traveled" ] ) ) - { - player.pers[ "previous_distance_traveled" ] = 0; - } - distancethisround = int( player.pers[ "distance_traveled" ] - player.pers[ "previous_distance_traveled" ] ); - player.pers[ "previous_distance_traveled" ] = player.pers[ "distance_traveled" ]; - player incrementplayerstat( "distance_traveled", distancethisround ); } + if ( !isDefined( player.pers[ "previous_distance_traveled" ] ) ) + { + player.pers[ "previous_distance_traveled" ] = 0; + } + distancethisround = int( player.pers[ "distance_traveled" ] - player.pers[ "previous_distance_traveled" ] ); + player.pers[ "previous_distance_traveled" ] = player.pers[ "distance_traveled" ]; + player incrementplayerstat( "distance_traveled", distancethisround ); i++; } } -update_playing_utc_time( matchendutctime ) +update_playing_utc_time( matchendutctime ) //checked changed to match cerberus output //order of operations may need to be reviewed { current_days = int( matchendutctime / 86400 ); last_days = self get_global_stat( "TIMESTAMPLASTDAY1" ); @@ -284,36 +278,32 @@ update_playing_utc_time( matchendutctime ) timestamp_name = ""; if ( diff_days > 0 ) { - i = 5; - while ( i > diff_days ) + for ( i = 5; i > diff_days; i-- ) { timestamp_name = "TIMESTAMPLASTDAY" + ( i - diff_days ); timestamp_name_to = "TIMESTAMPLASTDAY" + i; timestamp_value = self get_global_stat( timestamp_name ); self set_global_stat( timestamp_name_to, timestamp_value ); - i--; } - i = 2; - while ( i <= diff_days && i < 6 ) + for ( i = 2; i <= diff_days && i < 6; i++ ) { timestamp_name = "TIMESTAMPLASTDAY" + i; self set_global_stat( timestamp_name, 0 ); - i++; } self set_global_stat( "TIMESTAMPLASTDAY1", matchendutctime ); } } -survival_classic_custom_stat_update() +survival_classic_custom_stat_update() //checked matches cerberus output { } -grief_custom_stat_update() -{ +grief_custom_stat_update() //checked matches cerberus output +{ } -add_game_mode_group_stat( game_mode, stat_name, value ) +add_game_mode_group_stat( game_mode, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -322,7 +312,7 @@ add_game_mode_group_stat( game_mode, stat_name, value ) self adddstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue", value ); } -set_game_mode_group_stat( game_mode, stat_name, value ) +set_game_mode_group_stat( game_mode, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -331,12 +321,12 @@ set_game_mode_group_stat( game_mode, stat_name, value ) self setdstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue", value ); } -get_game_mode_group_stat( game_mode, stat_name ) +get_game_mode_group_stat( game_mode, stat_name ) //checked matches cerberus output { return self getdstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue" ); } -add_game_mode_stat( game_mode, stat_name, value ) +add_game_mode_stat( game_mode, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -345,7 +335,7 @@ add_game_mode_stat( game_mode, stat_name, value ) self adddstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue", value ); } -set_game_mode_stat( game_mode, stat_name, value ) +set_game_mode_stat( game_mode, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -354,17 +344,17 @@ set_game_mode_stat( game_mode, stat_name, value ) self setdstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue", value ); } -get_game_mode_stat( game_mode, stat_name ) +get_game_mode_stat( game_mode, stat_name ) //checked matches cerberus output { return self getdstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue" ); } -get_global_stat( stat_name ) +get_global_stat( stat_name ) //checked matches cerberus output { return self getdstat( "PlayerStatsList", stat_name, "StatValue" ); } -set_global_stat( stat_name, value ) +set_global_stat( stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -373,7 +363,7 @@ set_global_stat( stat_name, value ) self setdstat( "PlayerStatsList", stat_name, "StatValue", value ); } -add_global_stat( stat_name, value ) +add_global_stat( stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -382,7 +372,7 @@ add_global_stat( stat_name, value ) self adddstat( "PlayerStatsList", stat_name, "StatValue", value ); } -get_map_stat( stat_name, map ) +get_map_stat( stat_name, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -391,7 +381,7 @@ get_map_stat( stat_name, map ) return self getdstat( "PlayerStatsByMap", map, stat_name ); } -set_map_stat( stat_name, value, map ) +set_map_stat( stat_name, value, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -404,7 +394,7 @@ set_map_stat( stat_name, value, map ) self setdstat( "PlayerStatsByMap", map, stat_name, value ); } -add_map_stat( stat_name, value, map ) +add_map_stat( stat_name, value, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -417,12 +407,12 @@ add_map_stat( stat_name, value, map ) self adddstat( "PlayerStatsByMap", map, stat_name, value ); } -get_location_gametype_stat( start_location, game_type, stat_name ) +get_location_gametype_stat( start_location, game_type, stat_name ) //checked matches cerberus output { return self getdstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue" ); } -set_location_gametype_stat( start_location, game_type, stat_name, value ) +set_location_gametype_stat( start_location, game_type, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -431,7 +421,7 @@ set_location_gametype_stat( start_location, game_type, stat_name, value ) self setdstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue", value ); } -add_location_gametype_stat( start_location, game_type, stat_name, value ) +add_location_gametype_stat( start_location, game_type, stat_name, value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -440,7 +430,7 @@ add_location_gametype_stat( start_location, game_type, stat_name, value ) self adddstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue", value ); } -get_map_weaponlocker_stat( stat_name, map ) +get_map_weaponlocker_stat( stat_name, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -449,7 +439,7 @@ get_map_weaponlocker_stat( stat_name, map ) return self getdstat( "PlayerStatsByMap", map, "weaponLocker", stat_name ); } -set_map_weaponlocker_stat( stat_name, value, map ) +set_map_weaponlocker_stat( stat_name, value, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -469,7 +459,7 @@ set_map_weaponlocker_stat( stat_name, value, map ) } } -add_map_weaponlocker_stat( stat_name, value, map ) +add_map_weaponlocker_stat( stat_name, value, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -482,21 +472,21 @@ add_map_weaponlocker_stat( stat_name, value, map ) self adddstat( "PlayerStatsByMap", map, "weaponLocker", stat_name, value ); } -has_stored_weapondata( map ) +has_stored_weapondata( map ) //checked changed to match cerberus output { if ( !isDefined( map ) ) { map = level.script; } storedweapon = self get_map_weaponlocker_stat( "name", map ); - if ( isDefined( storedweapon ) && isstring( storedweapon ) || storedweapon == "" && isint( storedweapon ) && storedweapon == 0 ) + if ( isDefined( storedweapon ) || isstring( storedweapon ) && storedweapon == "" || isint( storedweapon ) && storedweapon == 0 ) { return 0; } return 1; } -get_stored_weapondata( map ) +get_stored_weapondata( map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -516,7 +506,7 @@ get_stored_weapondata( map ) return undefined; } -clear_stored_weapondata( map ) +clear_stored_weapondata( map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -530,7 +520,7 @@ clear_stored_weapondata( map ) self set_map_weaponlocker_stat( "alt_stock", 0, map ); } -set_stored_weapondata( weapondata, map ) +set_stored_weapondata( weapondata, map ) //checked matches cerberus output { if ( !isDefined( map ) ) { @@ -544,7 +534,7 @@ set_stored_weapondata( weapondata, map ) self set_map_weaponlocker_stat( "alt_stock", weapondata[ "alt_stock" ], map ); } -add_client_stat( stat_name, stat_value, include_gametype ) +add_client_stat( stat_name, stat_value, include_gametype ) //checked matches cerberus output { if ( getDvar( "ui_zm_mapstartlocation" ) == "" || is_true( level.zm_disable_recording_stats ) ) { @@ -558,7 +548,7 @@ add_client_stat( stat_name, stat_value, include_gametype ) self.stats_this_frame[ stat_name ] = 1; } -increment_player_stat( stat_name ) +increment_player_stat( stat_name ) //checked matches cerberus output { if ( getDvar( "ui_zm_mapstartlocation" ) == "" || is_true( level.zm_disable_recording_stats ) ) { @@ -567,7 +557,7 @@ increment_player_stat( stat_name ) self incrementplayerstat( stat_name, 1 ); } -increment_root_stat( stat_name, stat_value ) +increment_root_stat( stat_name, stat_value ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -576,7 +566,7 @@ increment_root_stat( stat_name, stat_value ) self adddstat( stat_name, stat_value ); } -increment_client_stat( stat_name, include_gametype ) +increment_client_stat( stat_name, include_gametype ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -585,7 +575,7 @@ increment_client_stat( stat_name, include_gametype ) add_client_stat( stat_name, 1, include_gametype ); } -set_client_stat( stat_name, stat_value, include_gametype ) +set_client_stat( stat_name, stat_value, include_gametype ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -596,7 +586,7 @@ set_client_stat( stat_name, stat_value, include_gametype ) self.stats_this_frame[ stat_name ] = 1; } -zero_client_stat( stat_name, include_gametype ) +zero_client_stat( stat_name, include_gametype ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -607,7 +597,7 @@ zero_client_stat( stat_name, include_gametype ) self.stats_this_frame[ stat_name ] = 1; } -increment_map_cheat_stat( stat_name ) +increment_map_cheat_stat( stat_name ) //checked matches cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -616,30 +606,27 @@ increment_map_cheat_stat( stat_name ) self adddstat( "PlayerStatsByMap", level.script, "cheats", stat_name, 1 ); } -get_stat_distance_traveled() +get_stat_distance_traveled() //checked changed to match cerberu output { miles = int( self.pers[ "distance_traveled" ] / 63360 ); remainder = ( self.pers[ "distance_traveled" ] / 63360 ) - miles; - if ( miles < 1 && remainder < 0,5 ) + if ( miles < 1 && remainder < 0.5 ) { miles = 1; } - else + else if ( remainder >= 0.5 ) { - if ( remainder >= 0,5 ) - { - miles++; - } + miles++; } return miles; } -get_stat_round_number() +get_stat_round_number() //checked matches cerberus output { return level.round_number; } -get_stat_combined_rank_value_survival_classic() +get_stat_combined_rank_value_survival_classic() //checked matches cerberus output { rounds = get_stat_round_number(); kills = self.pers[ "kills" ]; @@ -647,11 +634,11 @@ get_stat_combined_rank_value_survival_classic() { rounds = 99; } - result = ( rounds * 10000000 ) + kills; + result = rounds * 10000000 + kills; return result; } -get_stat_combined_rank_value_grief() +get_stat_combined_rank_value_grief() //checked matches cerberus output { wins = self.pers[ "wins" ]; losses = self.pers[ "losses" ]; @@ -664,11 +651,11 @@ get_stat_combined_rank_value_grief() losses = 9999; } losses_value = 9999 - losses; - result = ( wins * 10000 ) + losses_value; + result = wins * 10000 + losses_value; return result; } -update_global_counters_on_match_end() +update_global_counters_on_match_end() //checked changed to match cerberus output { if ( is_true( level.zm_disable_recording_stats ) ) { @@ -776,11 +763,8 @@ update_global_counters_on_match_end() tomb_golden_hard_hat = 0; tomb_perk_extension = 0; players = get_players(); - _a838 = players; - _k838 = getFirstArrayKey( _a838 ); - while ( isDefined( _k838 ) ) + foreach ( player in players ) { - player = _a838[ _k838 ]; deaths += player.pers[ "deaths" ]; kills += player.pers[ "kills" ]; headshots += player.pers[ "headshots" ]; @@ -882,7 +866,6 @@ update_global_counters_on_match_end() tomb_golden_shovel += player.pers[ "tomb_golden_shovel" ]; tomb_golden_hard_hat += player.pers[ "tomb_golden_hard_hat" ]; tomb_perk_extension += player.pers[ "tomb_perk_extension" ]; - _k838 = getNextArrayKey( _a838, _k838 ); } game_mode = getDvar( "ui_gametype" ); incrementcounter( "global_zm_" + game_mode, 1 ); @@ -996,58 +979,52 @@ update_global_counters_on_match_end() incrementcounter( "global_zm_tomb_perk_extension", tomb_perk_extension ); } -get_specific_stat( stat_category, stat_name ) +get_specific_stat( stat_category, stat_name ) //checked matches cerberus output { return self getdstat( stat_category, stat_name, "StatValue" ); } -do_stats_for_gibs( zombie, limb_tags_array ) +do_stats_for_gibs( zombie, limb_tags_array ) //checked partially changed to match cerberus output //did not use foreach to prevent infinite loop due to continue { - while ( isDefined( zombie ) && isDefined( zombie.attacker ) && isplayer( zombie.attacker ) ) - { - _a1069 = limb_tags_array; - _k1069 = getFirstArrayKey( _a1069 ); - while ( isDefined( _k1069 ) ) + if ( isDefined( zombie ) && isDefined( zombie.attacker ) && isplayer( zombie.attacker ) ) + { + i = 0; + while ( i < limb_tags_array.size ) { - limb = _a1069[ _k1069 ]; stat_name = undefined; - if ( limb == level._zombie_gib_piece_index_right_arm ) + if ( limb_tags_array[ i ] == level._zombie_gib_piece_index_right_arm ) { stat_name = "right_arm_gibs"; } - else if ( limb == level._zombie_gib_piece_index_left_arm ) + else if ( limb_tags_array[ i ] == level._zombie_gib_piece_index_left_arm ) { stat_name = "left_arm_gibs"; } - else if ( limb == level._zombie_gib_piece_index_right_leg ) + else if ( limb_tags_array[ i ] == level._zombie_gib_piece_index_right_leg ) { stat_name = "right_leg_gibs"; } - else if ( limb == level._zombie_gib_piece_index_left_leg ) + else if ( limb_tags_array[ i ] == level._zombie_gib_piece_index_left_leg ) { stat_name = "left_leg_gibs"; } - else + else if ( limb == level._zombie_gib_piece_index_head ) { - if ( limb == level._zombie_gib_piece_index_head ) - { - stat_name = "head_gibs"; - } + stat_name = "head_gibs"; } if ( !isDefined( stat_name ) ) { + i++; + continue; } - else - { - zombie.attacker increment_client_stat( stat_name, 0 ); - zombie.attacker increment_client_stat( "gibs" ); - } - _k1069 = getNextArrayKey( _a1069, _k1069 ); + zombie.attacker increment_client_stat( stat_name, 0 ); + zombie.attacker increment_client_stat( "gibs" ); + i++; } } } -initializematchstats() +initializematchstats() //checked matches cerberus output { if ( !level.onlinegame || !gamemodeismode( level.gamemode_public_match ) ) { @@ -1058,18 +1035,20 @@ initializematchstats() self gamehistorystartmatch( getgametypeenumfromname( currgametype, 0 ) ); } -adjustrecentstats() +adjustrecentstats() //checked matches cerberus output { + /* /# if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 ) { return; #/ } + */ initializematchstats(); } -uploadstatssoon() +uploadstatssoon() //checked matches cerberus output { self notify( "upload_stats_soon" ); self endon( "upload_stats_soon" ); @@ -1077,3 +1056,4 @@ uploadstatssoon() wait 1; uploadstats( self ); } + diff --git a/patch_zm/maps/mp/zombies/_zm_utility.gsc b/patch_zm/maps/mp/zombies/_zm_utility.gsc index 69ee134..8177ca7 100644 --- a/patch_zm/maps/mp/zombies/_zm_utility.gsc +++ b/patch_zm/maps/mp/zombies/_zm_utility.gsc @@ -3093,6 +3093,7 @@ is_magic_bullet_shield_enabled( ent ) //checked changed at own discretion { return 1; } + return 0; } really_play_2d_sound( sound ) //checked changed to match cerberus output @@ -3604,22 +3605,30 @@ register_lethal_grenade_for_level( weaponname ) //checked changed at own discret level.zombie_lethal_grenade_list[ weaponname ] = weaponname; } -is_lethal_grenade( weaponname ) //checked matches cerberus output +is_lethal_grenade( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( level.zombie_lethal_grenade_list ) ) { return 0; } - return isDefined( level.zombie_lethal_grenade_list[ weaponname ] ); + if ( isDefined( level.zombie_lethal_grenade_list[ weaponname ] ) ) + { + return 1; + } + return 0; } -is_player_lethal_grenade( weaponname ) //checked matches cerberus output +is_player_lethal_grenade( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( self.current_lethal_grenade ) ) { return 0; } - return self.current_lethal_grenade == weaponname; + if ( self.current_lethal_grenade == weaponname ) + { + return 1; + } + return 0; } get_player_lethal_grenade() //checked matches cerberus output @@ -3655,22 +3664,30 @@ register_tactical_grenade_for_level( weaponname ) //checked changed at own discr level.zombie_tactical_grenade_list[ weaponname ] = weaponname; } -is_tactical_grenade( weaponname ) //checked matches cerberus output +is_tactical_grenade( weaponname ) //checked matches cerberus output //checked changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( level.zombie_tactical_grenade_list ) ) { return 0; } - return isDefined( level.zombie_tactical_grenade_list[ weaponname ] ); + if ( isDefined( level.zombie_tactical_grenade_list[ weaponname ] ) ) + { + return 1; + } + return 0; } -is_player_tactical_grenade( weaponname ) //checked matches cerberus output +is_player_tactical_grenade( weaponname ) //checked matches cerberus output //checked changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( self.current_tactical_grenade ) ) { return 0; } - return self.current_tactical_grenade == weaponname; + if ( self.current_tactical_grenade == weaponname ) + { + return 1; + } + return 0; } get_player_tactical_grenade() //checked matches cerberus output @@ -3707,22 +3724,30 @@ register_placeable_mine_for_level( weaponname ) //checked changed at own discret level.zombie_placeable_mine_list[ weaponname ] = weaponname; } -is_placeable_mine( weaponname ) //checked matches cerberus output +is_placeable_mine( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( level.zombie_placeable_mine_list ) ) { return 0; } - return isDefined( level.zombie_placeable_mine_list[ weaponname ] ); + if ( isDefined( level.zombie_placeable_mine_list[ weaponname ] ) ) + { + return 1; + } + return 0; } -is_player_placeable_mine( weaponname ) //checked matches cerberus output +is_player_placeable_mine( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( self.current_placeable_mine ) ) { return 0; } - return self.current_placeable_mine == weaponname; + if ( self.current_placeable_mine == weaponname ) + { + return 1; + } + return 0; } get_player_placeable_mine() //checked matches cerberus output @@ -3753,22 +3778,30 @@ register_melee_weapon_for_level( weaponname ) //checked matches cerberus output level.zombie_melee_weapon_list[ weaponname ] = weaponname; } -is_melee_weapon( weaponname ) //checked matches cerberus output +is_melee_weapon( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( level.zombie_melee_weapon_list ) ) { return 0; } - return isDefined( level.zombie_melee_weapon_list[ weaponname ] ); + if ( isDefined( level.zombie_melee_weapon_list[ weaponname ] ) ) + { + return 1; + } + return 0; } -is_player_melee_weapon( weaponname ) //checked matches cerberus output +is_player_melee_weapon( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( self.current_melee_weapon ) ) { return 0; } - return self.current_melee_weapon == weaponname; + if ( self.current_melee_weapon == weaponname ) + { + return 1; + } + return 0; } get_player_melee_weapon() //checked matches cerberus output @@ -3804,27 +3837,39 @@ register_equipment_for_level( weaponname ) //checked matches cerberus output level.zombie_equipment_list[ weaponname ] = weaponname; } -is_equipment( weaponname ) //checked matches cerberus output +is_equipment( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( level.zombie_equipment_list ) ) { return 0; } - return isDefined( level.zombie_equipment_list[ weaponname ] ); + if ( isDefined( level.zombie_equipment_list[ weaponname ] ) ) + { + return 1; + } + return 0; } -is_equipment_that_blocks_purchase( weaponname ) //checked matches cerberus output +is_equipment_that_blocks_purchase( weaponname ) //checked matches cerberus output //changed at own discretion { - return is_equipment( weaponname ); + if ( is_equipment( weaponname ) ) + { + return 1; + } + return 0; } -is_player_equipment( weaponname ) //checked matches cerberus output +is_player_equipment( weaponname ) //checked matches cerberus output //changed at own discretion { if ( !isDefined( weaponname ) || !isDefined( self.current_equipment ) ) { return 0; } - return self.current_equipment == weaponname; + if ( self.current_equipment == weaponname ) + { + return 1; + } + return 0; } has_deployed_equipment( weaponname ) //checked changed to match cerberus output @@ -3857,9 +3902,13 @@ get_player_equipment() //checked matches cerberus output return self.current_equipment; } -hacker_active() //checked matches cerberus output +hacker_active() //checked matches cerberus output //changed at own discretion { - return self maps/mp/zombies/_zm_equipment::is_equipment_active( "equip_hacker_zm" ); + if ( self maps/mp/zombies/_zm_equipment::is_equipment_active( "equip_hacker_zm" ) ) + { + return 1; + } + return 0; } set_player_equipment( weaponname ) //checked matches cerberus output @@ -5623,3 +5672,5 @@ get_player_perk_purchase_limit() //checked matches cerberus output + + diff --git a/patch_zm/readme.md b/patch_zm/readme.md index 6803fc5..15a698c 100644 --- a/patch_zm/readme.md +++ b/patch_zm/readme.md @@ -48,23 +48,53 @@ patch_zm/maps/mp/zombies/_zm_pers_upgrades_functions.gsc ``` ### The following scripts have been checked, but they have not been tested yet ``` +patch_zm/maps/mp/zombies/_zm_blockers.gsc patch_zm/maps/mp/zombies/_zm_buildables.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_laststand.gsc patch_zm/maps/mp/zombies/_zm_magicbox_lock.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_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_equip_turbine.gsc -patch_zm/maps/mp/zombies/_zm_laststand.gsc -patch_zm/maps/mp/zombies/_zm_sidequests.gsc -patch_zm/maps/mp/zombies/_zm_stats.gsc -patch_zm/maps/mp/zombies/_zm_unitrigger.gsc +patch_zm/maps/mp/gametypes_zm/_callbacksetup.gsc +patch_zm/maps/mp/gametypes_zm/_damagefeedback.gsc +patch_zm/maps/mp/gametypes_zm/_dev.gsc +patch_zm/maps/mp/gametypes_zm/_gameobjects.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_actor.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_audio.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_defaults.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_player.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_score.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_spawn.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_ui.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_utils.gsc +patch_zm/maps/mp/gametypes_zm/_globallogic_vehicle.gsc +patch_zm/maps/mp/gametypes_zm/_gv_actions.gsc +patch_zm/maps/mp/gametypes_zm/_healthoverlay.gsc +patch_zm/maps/mp/gametypes_zm/_hostmigration.gsc +patch_zm/maps/mp/gametypes_zm/_hud.gsc +patch_zm/maps/mp/gametypes_zm/_hud_message.gsc +patch_zm/maps/mp/gametypes_zm/_hud_util.gsc +patch_zm/maps/mp/gametypes_zm/_menus.gsc +patch_zm/maps/mp/gametypes_zm/_perplayer.gsc +patch_zm/maps/mp/gametypes_zm/_serversettings.gsc +patch_zm/maps/mp/gametypes_zm/_spawning.gsc +patch_zm/maps/mp/gametypes_zm/_spawnlogic.gsc +patch_zm/maps/mp/gametypes_zm/_spectating.gsc +patch_zm/maps/mp/gametypes_zm/_tweakables.gsc +patch_zm/maps/mp/gametypes_zm/_weapon_utils.gsc +patch_zm/maps/mp/gametypes_zm/_weaponobjects.gsc +patch_zm/maps/mp/gametypes_zm/_weapons.gsc ``` ### The following scripts have not been checked using the proper debugging methods: ```