diff --git a/patch_zm/maps/mp/zombies/_zm_magicbox_lock.gsc b/patch_zm/maps/mp/zombies/_zm_magicbox_lock.gsc index 72881ca..3e8dacd 100644 --- a/patch_zm/maps/mp/zombies/_zm_magicbox_lock.gsc +++ b/patch_zm/maps/mp/zombies/_zm_magicbox_lock.gsc @@ -5,7 +5,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { precachemodel( "p6_anim_zm_al_magic_box_lock_red" ); level.locked_magic_box_cost = 2000; @@ -13,7 +13,7 @@ init() add_zombie_hint( "locked_magic_box_cost", &"ZOMBIE_LOCKED_COST_2000" ); } -watch_for_lock() +watch_for_lock() //checked matches cerberus output { self endon( "user_grabbed_weapon" ); self endon( "chest_accessed" ); @@ -21,13 +21,13 @@ watch_for_lock() self notify( "kill_chest_think" ); self.grab_weapon_hint = 0; self.chest_user = undefined; - wait 0,1; + wait 0.1; self thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); self.unitrigger_stub run_visibility_function_for_all_triggers(); self thread treasure_chest_think(); } -clean_up_locked_box() +clean_up_locked_box() //checked matches cerberus output { self endon( "box_spin_done" ); self.owner waittill( "box_locked" ); @@ -47,7 +47,7 @@ clean_up_locked_box() self setzbarrierpiecestate( 4, "closed" ); } -magic_box_locks() +magic_box_locks() //checked matches cerberus output { self.owner.is_locked = 1; self.owner notify( "box_locked" ); @@ -57,19 +57,19 @@ magic_box_locks() self setzbarrierpiecestate( 5, "closing" ); while ( self getzbarrierpiecestate( 5 ) == "closing" ) { - wait 0,5; + wait 0.5; } self notify( "locked" ); } -magic_box_unlocks() +magic_box_unlocks() //checked matches cerberus output { maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.owner.unitrigger_stub ); self playsound( "zmb_hellbox_unlock" ); self setzbarrierpiecestate( 5, "opening" ); while ( self getzbarrierpiecestate( 5 ) == "opening" ) { - wait 0,5; + wait 0.5; } self setzbarrierpiecestate( 2, "closed" ); self showzbarrierpiece( 2 ); @@ -80,7 +80,7 @@ magic_box_unlocks() self setclientfield( "magicbox_amb_fx", 1 ); } -set_locked_magicbox_state( state ) +set_locked_magicbox_state( state ) //checked matches cerberus output { switch( state ) { @@ -96,3 +96,4 @@ set_locked_magicbox_state( state ) break; } } + diff --git a/patch_zm/maps/mp/zombies/_zm_playerhealth.gsc b/patch_zm/maps/mp/zombies/_zm_playerhealth.gsc index 5c641f1..dac154a 100644 --- a/patch_zm/maps/mp/zombies/_zm_playerhealth.gsc +++ b/patch_zm/maps/mp/zombies/_zm_playerhealth.gsc @@ -3,7 +3,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { if ( !isDefined( level.script ) ) { @@ -20,9 +20,11 @@ init() level.difficultystring[ "normal" ] = &"GAMESKILL_NORMAL"; level.difficultystring[ "hardened" ] = &"GAMESKILL_HARDENED"; level.difficultystring[ "veteran" ] = &"GAMESKILL_VETERAN"; + /* /# thread playerhealthdebug(); #/ + */ level.gameskill = 1; switch( level.gameskill ) { @@ -42,22 +44,22 @@ init() logstring( "difficulty: " + level.gameskill ); level.player_deathinvulnerabletime = 1700; level.longregentime = 5000; - level.healthoverlaycutoff = 0,2; - level.invultime_preshield = 0,35; - level.invultime_onshield = 0,5; - level.invultime_postshield = 0,3; + level.healthoverlaycutoff = 0.2; + level.invultime_preshield = 0.35; + level.invultime_onshield = 0.5; + level.invultime_postshield = 0.3; level.playerhealth_regularregendelay = 2400; - level.worthydamageratio = 0,1; - setdvar( "player_meleeDamageMultiplier", 0,4 ); + level.worthydamageratio = 0.1; + setdvar( "player_meleeDamageMultiplier", 0.4 ); onplayerconnect_callback( ::onplayerconnect ); } -onplayerconnect() +onplayerconnect() //checked matches cerberus output { self thread onplayerspawned(); } -onplayerspawned() +onplayerspawned() //checked changed to match cerberus output { for ( ;; ) { @@ -67,15 +69,12 @@ onplayerspawned() { continue; } - else - { - self notify( "noHealthOverlay" ); - self thread playerhealthregen(); - } + self notify( "noHealthOverlay" ); + self thread playerhealthregen(); } } -playerhurtcheck() +playerhurtcheck() //checked changed to match cerberus output { self endon( "noHealthOverlay" ); self.hurtagain = 0; @@ -86,16 +85,13 @@ playerhurtcheck() { continue; } - else - { - self.hurtagain = 1; - self.damagepoint = point; - self.damageattacker = attacker; - } + self.hurtagain = 1; + self.damagepoint = point; + self.damageattacker = attacker; } } -playerhealthregen() +playerhealthregen() //checked changed to match cerberus output { self notify( "playerHealthRegen" ); self endon( "playerHealthRegen" ); @@ -116,7 +112,7 @@ playerhealthregen() self thread healthoverlay(); oldratio = 1; health_add = 0; - regenrate = 0,1; + regenrate = 0.1; veryhurt = 0; playerjustgotredflashing = 0; invultime = 0; @@ -136,7 +132,7 @@ playerhealthregen() playerinvultimescale = getDvarFloat( "scr_playerInvulTimeScale" ); for ( ;; ) { - wait 0,05; + wait 0.05; waittillframeend; if ( self.health == self.maxhealth ) { @@ -149,11 +145,13 @@ playerhealthregen() veryhurt = 0; continue; } - else if ( self.health <= 0 ) + if ( self.health <= 0 ) { + /* /# showhitlog(); #/ + */ return; } wasveryhurt = veryhurt; @@ -164,7 +162,7 @@ playerhealthregen() if ( !wasveryhurt ) { hurttime = getTime(); - self startfadingblur( 3,6, 2 ); + self startfadingblur( 3.6, 2 ); self player_flag_set( "player_has_red_flashing_overlay" ); playerjustgotredflashing = 1; } @@ -176,11 +174,11 @@ playerhealthregen() } if ( health_ratio >= oldratio ) { - if ( ( getTime() - hurttime ) < level.playerhealth_regularregendelay ) + if ( getTime() - hurttime < level.playerhealth_regularregendelay ) { continue; } - else if ( veryhurt ) + if ( veryhurt ) { self.veryhurt = 1; newhealth = health_ratio; @@ -202,21 +200,24 @@ playerhealthregen() { return; } + /* /# if ( newhealth > health_ratio ) { logregen( newhealth ); #/ } + */ self setnormalhealth( newhealth ); oldratio = self.health / self.maxhealth; continue; } - else invulworthyhealthdrop = ( lastinvulratio - health_ratio ) > level.worthydamageratio; + invulworthyhealthdrop = lastinvulratio - health_ratio > level.worthydamageratio; if ( self.health <= 1 ) { self setnormalhealth( 2 / self.maxhealth ); invulworthyhealthdrop = 1; + /* /# if ( !isDefined( level.player_deathinvulnerabletimeout ) ) { @@ -227,68 +228,69 @@ playerhealthregen() level.player_deathinvulnerabletimeout = getTime() + getDvarInt( "player_deathInvulnerableTime" ); #/ } + */ } oldratio = self.health / self.maxhealth; level notify( "hit_again" ); health_add = 0; hurttime = getTime(); - self startfadingblur( 3, 0,8 ); + self startfadingblur( 3, 0.8 ); if ( !invulworthyhealthdrop || playerinvultimescale <= 0 ) { + /* /# loghit( self.health, 0 ); #/ + */ continue; } + if ( self player_flag( "player_is_invulnerable" ) ) + { + continue; + } + self player_flag_set( "player_is_invulnerable" ); + level notify( "player_becoming_invulnerable" ); + if ( playerjustgotredflashing ) + { + invultime = level.invultime_onshield; + playerjustgotredflashing = 0; + } + else if ( veryhurt ) + { + invultime = level.invultime_postshield; + } else { - if ( self player_flag( "player_is_invulnerable" ) ) - { - break; - } - else - { - self player_flag_set( "player_is_invulnerable" ); - level notify( "player_becoming_invulnerable" ); - if ( playerjustgotredflashing ) - { - invultime = level.invultime_onshield; - playerjustgotredflashing = 0; - } - else if ( veryhurt ) - { - invultime = level.invultime_postshield; - } - else - { - invultime = level.invultime_preshield; - } - invultime *= playerinvultimescale; -/# - loghit( self.health, invultime ); -#/ - lastinvulratio = self.health / self.maxhealth; - self thread playerinvul( invultime ); - } + invultime = level.invultime_preshield; } + invultime *= playerinvultimescale; + /* +/# + loghit( self.health, invultime ); +#/ + */ + lastinvulratio = self.health / self.maxhealth; + self thread playerinvul( invultime ); } } -playerinvul( timer ) +playerinvul( timer ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); if ( timer > 0 ) { + /* /# level.playerinvultimeend = getTime() + ( timer * 1000 ); -#/ +#/ + */ wait timer; } self player_flag_clear( "player_is_invulnerable" ); } -healthoverlay() +healthoverlay() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "noHealthOverlay" ); @@ -307,37 +309,36 @@ healthoverlay() overlay = self._health_overlay; self thread healthoverlay_remove( overlay ); self thread watchhideredflashingoverlay( overlay ); - pulsetime = 0,8; - for ( ;; ) + pulsetime = 0.8; + while ( overlay.alpha > 0 ) { - if ( overlay.alpha > 0 ) - { - overlay fadeovertime( 0,5 ); - } + overlay fadeovertime( 0.5 ); overlay.alpha = 0; self player_flag_wait( "player_has_red_flashing_overlay" ); self redflashingoverlay( overlay ); } } -fadefunc( overlay, severity, mult, hud_scaleonly ) +fadefunc( overlay, severity, mult, hud_scaleonly ) //checkec matches cerberus output { - pulsetime = 0,8; - scalemin = 0,5; - fadeintime = pulsetime * 0,1; - stayfulltime = pulsetime * ( 0,1 + ( severity * 0,2 ) ); - fadeouthalftime = pulsetime * ( 0,1 + ( severity * 0,1 ) ); - fadeoutfulltime = pulsetime * 0,3; + pulsetime = 0.8; + scalemin = 0.5; + fadeintime = pulsetime * 0.1; + stayfulltime = pulsetime * ( 0.1 + severity * 0.2 ); + fadeouthalftime = pulsetime * ( 0.1 + severity * 0.1 ); + fadeoutfulltime = pulsetime * 0.3; remainingtime = pulsetime - fadeintime - stayfulltime - fadeouthalftime - fadeoutfulltime; + /* /# - assert( remainingtime >= -0,001 ); + assert( remainingtime >= -0.001 ); #/ + */ if ( remainingtime < 0 ) { remainingtime = 0; } - halfalpha = 0,8 + ( severity * 0,1 ); - leastalpha = 0,5 + ( severity * 0,3 ); + halfalpha = 0.8 + severity * 0.1; + leastalpha = 0.5 + severity * 0.3; overlay fadeovertime( fadeintime ); overlay.alpha = mult * 1; wait ( fadeintime + stayfulltime ); @@ -350,21 +351,21 @@ fadefunc( overlay, severity, mult, hud_scaleonly ) wait remainingtime; } -watchhideredflashingoverlay( overlay ) +watchhideredflashingoverlay( overlay ) //checked matches cerberus output { self endon( "death_or_disconnect" ); while ( isDefined( overlay ) ) { self waittill( "clear_red_flashing_overlay" ); self player_flag_clear( "player_has_red_flashing_overlay" ); - overlay fadeovertime( 0,05 ); + overlay fadeovertime( 0.05 ); overlay.alpha = 0; setclientsysstate( "levelNotify", "rfo3", self ); self notify( "hit_again" ); } } -redflashingoverlay( overlay ) +redflashingoverlay( overlay ) //checked matches cerberus output { self endon( "hit_again" ); self endon( "damage" ); @@ -377,57 +378,64 @@ redflashingoverlay( overlay ) fadefunc( overlay, 1, 1, 0 ); while ( getTime() < self.stopflashingbadlytime && isalive( self ) && isDefined( self.is_in_process_of_zombify ) && !self.is_in_process_of_zombify && isDefined( self.is_zombie ) && !self.is_zombie ) { - fadefunc( overlay, 0,9, 1, 0 ); + fadefunc( overlay, 0.9, 1, 0 ); } if ( isDefined( self.is_in_process_of_zombify ) && !self.is_in_process_of_zombify && isDefined( self.is_zombie ) && !self.is_zombie ) { if ( isalive( self ) ) { - fadefunc( overlay, 0,65, 0,8, 0 ); + fadefunc( overlay, 0.65, 0.8, 0 ); } - fadefunc( overlay, 0, 0,6, 1 ); + fadefunc( overlay, 0, 0.6, 1 ); } } - overlay fadeovertime( 0,5 ); + overlay fadeovertime( 0.5 ); overlay.alpha = 0; self player_flag_clear( "player_has_red_flashing_overlay" ); setclientsysstate( "levelNotify", "rfo3", self ); - wait 0,5; + wait 0.5; self notify( "hit_again" ); } -healthoverlay_remove( overlay ) +healthoverlay_remove( overlay ) //checked matches cerberus output { self endon( "disconnect" ); self waittill_any( "noHealthOverlay", "death" ); - overlay fadeovertime( 3,5 ); + overlay fadeovertime( 3.5 ); overlay.alpha = 0; } -empty_kill_func( type, loc, point, attacker, amount ) +empty_kill_func( type, loc, point, attacker, amount ) //checked matches cerberus output { } -loghit( newhealth, invultime ) +loghit( newhealth, invultime ) //checked matches cerberus output { + /* /# #/ + */ } -logregen( newhealth ) +logregen( newhealth ) //checked matches cerberus output { + /* /# #/ + */ } -showhitlog() +showhitlog() //checked matches cerberus output { + /* /# #/ + */ } -playerhealthdebug() +playerhealthdebug() //checked changed to match cerberus output { + /* /# if ( getDvar( "scr_health_debug" ) == "" ) { @@ -442,10 +450,7 @@ playerhealthdebug() { break; } - else - { - wait 0,5; - } + wait 0.5; } thread printhealthdebug(); while ( 1 ) @@ -454,19 +459,18 @@ playerhealthdebug() { break; } - else - { - wait 0,5; - } + wait 0.5; } level notify( "stop_printing_grenade_timers" ); destroyhealthdebug(); #/ } + */ } -printhealthdebug() +printhealthdebug() //checked changed to match cerberus output { + /* /# level notify( "stop_printing_health_bars" ); level endon( "stop_printing_health_bars" ); @@ -484,8 +488,7 @@ printhealthdebug() { level.player_deathinvulnerabletimeout = 0; } - i = 0; - while ( i < level.healthbarkeys.size ) + for ( i = 0; i < level.healthbarkeys.size; i++ ) { key = level.healthbarkeys[ i ]; textelem = newhudelem(); @@ -505,7 +508,7 @@ printhealthdebug() bgbar.vertalign = "fullscreen"; bgbar.maxwidth = 3; bgbar setshader( "white", bgbar.maxwidth, 10 ); - bgbar.color = vectorScale( ( 1, 1, 1 ), 0,5 ); + bgbar.color = vectorScale( ( 1, 1, 1 ), 0.5 ); bar = newhudelem(); bar.x = x + 80; bar.y = y + 2; @@ -519,15 +522,13 @@ printhealthdebug() textelem.key = key; y += 10; level.healthbarhudelems[ key ] = textelem; - i++; } flag_wait( "start_zombie_round_logic" ); while ( 1 ) { - wait 0,05; + wait 0.05; players = get_players(); - i = 0; - while ( i < level.healthbarkeys.size && players.size > 0 ) + for ( i = 0; i < level.healthbarkeys.size && players.size > 0; i++ ) { key = level.healthbarkeys[ i ]; player = players[ 0 ]; @@ -540,12 +541,9 @@ printhealthdebug() { width = ( ( level.playerinvultimeend - getTime() ) / 1000 ) * 40; } - else + else if ( i == 2 ) { - if ( i == 2 ) - { - width = ( ( level.player_deathinvulnerabletimeout - getTime() ) / 1000 ) * 40; - } + width = ( ( level.player_deathinvulnerabletimeout - getTime() ) / 1000 ) * 40; } width = int( max( width, 1 ) ); width = int( min( width, 300 ) ); @@ -556,28 +554,29 @@ printhealthdebug() { bgbar.maxwidth = width + 2; bgbar setshader( "white", bgbar.maxwidth, 10 ); - bgbar.color = vectorScale( ( 1, 1, 1 ), 0,5 ); + bgbar.color = vectorScale( ( 1, 1, 1 ), 0.5 ); } - i++; } #/ } + */ } -destroyhealthdebug() +destroyhealthdebug() //checked changed to match cerberus output { + /* /# if ( !isDefined( level.healthbarhudelems ) ) { return; } - i = 0; - while ( i < level.healthbarkeys.size ) + while ( i = 0; i < level.healthbarkeys.size; i++ ) { level.healthbarhudelems[ level.healthbarkeys[ i ] ].bgbar destroy(); level.healthbarhudelems[ level.healthbarkeys[ i ] ].bar destroy(); level.healthbarhudelems[ level.healthbarkeys[ i ] ] destroy(); - i++; #/ } + */ } + diff --git a/patch_zm/maps/mp/zombies/_zm_power.gsc b/patch_zm/maps/mp/zombies/_zm_power.gsc index f46d80e..08b17c1 100644 --- a/patch_zm/maps/mp/zombies/_zm_power.gsc +++ b/patch_zm/maps/mp/zombies/_zm_power.gsc @@ -5,7 +5,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { if ( !isDefined( level.powered_items ) ) { @@ -16,36 +16,36 @@ init() level.local_power = []; } thread standard_powered_items(); + /* /# thread debug_powered_items(); #/ + */ } -debug_powered_items() +debug_powered_items() //checked changed to match cerberus output { +/* /# while ( 1 ) { - while ( getDvarInt( #"EB512CB7" ) ) + if ( getDvarInt( #"EB512CB7" ) ) { - while ( isDefined( level.local_power ) ) + if ( isDefined( level.local_power ) ) { - _a32 = level.local_power; - _k32 = getFirstArrayKey( _a32 ); - while ( isDefined( _k32 ) ) + foreach(localpower in level.local_power) { - localpower = _a32[ _k32 ]; - circle( localpower.origin, localpower.radius, ( 0, 0, 1 ), 0, 1, 1 ); - _k32 = getNextArrayKey( _a32, _k32 ); + circle( localpower.origin, localpower.radius, ( 1, 0, 0 ), 0, 1, 1 ); } } } - wait 0,05; + wait 0.05; #/ } + */ } -watch_global_power() +watch_global_power() //checked matches cerberus output { while ( 1 ) { @@ -56,63 +56,49 @@ watch_global_power() } } -standard_powered_items() +standard_powered_items() //checked partially changed to match cerberus output //did not use foreach with continue to prevent infinite loop bug { flag_wait( "start_zombie_round_logic" ); vending_triggers = getentarray( "zombie_vending", "targetname" ); - _a67 = vending_triggers; - _k67 = getFirstArrayKey( _a67 ); - while ( isDefined( _k67 ) ) + i = 0; + while ( i < vending_triggers.size) { - trigger = _a67[ _k67 ]; - if ( trigger.script_noteworthy == "specialty_weapupgrade" ) + if ( vending_triggers[ i ].script_noteworthy == "specialty_weapupgrade" ) { + i++; + continue; } - else - { - powered_on = maps/mp/zombies/_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy ); - add_powered_item( ::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, trigger ); - } - _k67 = getNextArrayKey( _a67, _k67 ); + powered_on = maps/mp/zombies/_zm_perks::get_perk_machine_start_state( vending_triggers[ i ].script_noteworthy ); + add_powered_item( ::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, vending_triggers[ i ] ); + i++; } pack_a_punch = getentarray( "specialty_weapupgrade", "script_noteworthy" ); - _a77 = pack_a_punch; - _k77 = getFirstArrayKey( _a77 ); - while ( isDefined( _k77 ) ) + foreach ( trigger in pack_a_punch ) { - trigger = _a77[ _k77 ]; powered_on = maps/mp/zombies/_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy ); trigger.powered = add_powered_item( ::pap_power_on, ::pap_power_off, ::pap_range, ::cost_low_if_local, 0, powered_on, trigger ); - _k77 = getNextArrayKey( _a77, _k77 ); } zombie_doors = getentarray( "zombie_door", "targetname" ); - _a86 = zombie_doors; - _k86 = getFirstArrayKey( _a86 ); - while ( isDefined( _k86 ) ) + foreach ( door in zombie_doors ) { - door = _a86[ _k86 ]; if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" ) { add_powered_item( ::door_power_on, ::door_power_off, ::door_range, ::cost_door, 0, 0, door ); } - else + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) { - if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) + power_sources = 0; + if ( isDefined( level.power_local_doors_globally ) && !level.power_local_doors_globally ) { - power_sources = 0; - if ( isDefined( level.power_local_doors_globally ) && !level.power_local_doors_globally ) - { - power_sources = 1; - } - add_powered_item( ::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door ); + power_sources = 1; } + add_powered_item( ::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door ); } - _k86 = getNextArrayKey( _a86, _k86 ); } thread watch_global_power(); } -add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) +add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) //checked matches cerberus output { powered = spawnstruct(); powered.power_on_func = power_on_func; @@ -133,21 +119,18 @@ add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_so return powered; } -remove_powered_item( powered ) +remove_powered_item( powered ) //checked matches cerberus output { arrayremovevalue( level.powered_items, powered, 0 ); } -add_temp_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) +add_temp_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) //checked changed to match cerberus output { powered = add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ); - while ( isDefined( level.local_power ) ) + if ( isDefined( level.local_power ) ) { - _a140 = level.local_power; - _k140 = getFirstArrayKey( _a140 ); - while ( isDefined( _k140 ) ) + foreach ( localpower in level.local_power ) { - localpower = _a140[ _k140 ]; if ( powered [[ powered.range_func ]]( 1, localpower.origin, localpower.radius ) ) { powered change_power( 1, localpower.origin, localpower.radius ); @@ -157,24 +140,20 @@ add_temp_powered_item( power_on_func, power_off_func, range_func, cost_func, pow } localpower.added_list[ localpower.added_list.size ] = powered; } - _k140 = getNextArrayKey( _a140, _k140 ); } } thread watch_temp_powered_item( powered ); return powered; } -watch_temp_powered_item( powered ) +watch_temp_powered_item( powered ) //checked changed to match cerberus output { powered.target waittill( "death" ); remove_powered_item( powered ); - while ( isDefined( level.local_power ) ) + if ( isDefined( level.local_power ) ) { - _a161 = level.local_power; - _k161 = getFirstArrayKey( _a161 ); - while ( isDefined( _k161 ) ) + foreach ( localpower in level.local_power ) { - localpower = _a161[ _k161 ]; if ( isDefined( localpower.added_list ) ) { arrayremovevalue( localpower.added_list, powered, 0 ); @@ -183,16 +162,14 @@ watch_temp_powered_item( powered ) { arrayremovevalue( localpower.enabled_list, powered, 0 ); } - _k161 = getNextArrayKey( _a161, _k161 ); } } } -change_power_in_radius( delta, origin, radius ) +change_power_in_radius( delta, origin, radius ) //checked changed to match cerberus output { changed_list = []; - i = 0; - while ( i < level.powered_items.size ) + for ( i = 0; i < level.powered_items.size; i++ ) { powered = level.powered_items[ i ]; if ( powered.power_sources != 2 ) @@ -203,12 +180,11 @@ change_power_in_radius( delta, origin, radius ) changed_list[ changed_list.size ] = powered; } } - i++; } return changed_list; } -change_power( delta, origin, radius ) +change_power( delta, origin, radius ) //checked changed to match cerberus output { if ( delta > 0 ) { @@ -219,70 +195,66 @@ change_power( delta, origin, radius ) } self.powered_count++; } - else + else if ( delta < 0 ) { - if ( delta < 0 ) + if ( self.power ) { - if ( self.power ) - { - self.power = 0; - self [[ self.power_off_func ]]( origin, radius ); - } - self.depowered_count++; + self.power = 0; + self [[ self.power_off_func ]]( origin, radius ); } + self.depowered_count++; } } -revert_power_to_list( delta, origin, radius, powered_list ) +revert_power_to_list( delta, origin, radius, powered_list ) //checked changed to match cerberus output { - i = 0; - while ( i < powered_list.size ) + for ( i = 0; i < powered_list.size; i++ ) { powered = powered_list[ i ]; powered revert_power( delta, origin, radius ); - i++; } } -revert_power( delta, origin, radius, powered_list ) +revert_power( delta, origin, radius, powered_list ) //checked changed to match cerberus output { if ( delta > 0 ) { self.depowered_count--; - + /* /# assert( self.depowered_count >= 0, "Depower underflow in power system" ); #/ + */ if ( self.depowered_count == 0 && self.powered_count > 0 && !self.power ) { self.power = 1; self [[ self.power_on_func ]]( origin, radius ); } } - else + if ( delta < 0 ) { - if ( delta < 0 ) - { - self.powered_count--; - + self.powered_count--; + /* /# - assert( self.powered_count >= 0, "Repower underflow in power system" ); + assert( self.powered_count >= 0, "Repower underflow in power system" ); #/ - if ( self.powered_count == 0 && self.power ) - { - self.power = 0; - self [[ self.power_off_func ]]( origin, radius ); - } + */ + if ( self.powered_count == 0 && self.power ) + { + self.power = 0; + self [[ self.power_off_func ]]( origin, radius ); } } } -add_local_power( origin, radius ) +add_local_power( origin, radius ) //checked matches cerberus output { localpower = spawnstruct(); + /* /# println( "ZM POWER: local power on at " + origin + " radius " + radius + "\n" ); #/ + */ localpower.origin = origin; localpower.radius = radius; localpower.enabled_list = change_power_in_radius( 1, origin, radius ); @@ -294,7 +266,7 @@ add_local_power( origin, radius ) return localpower; } -move_local_power( localpower, origin ) +move_local_power( localpower, origin ) //checked partially changed to match cerberus output //did not change while loop to for loop to prevent infinite continue loop bug { changed_list = []; i = 0; @@ -306,7 +278,7 @@ move_local_power( localpower, origin ) i++; continue; } - else waspowered = isinarray( localpower.enabled_list, powered ); + waspowered = isinarray( localpower.enabled_list, powered ); ispowered = powered [[ powered.range_func ]]( 1, origin, localpower.radius ); if ( ispowered && !waspowered ) { @@ -315,13 +287,10 @@ move_local_power( localpower, origin ) i++; continue; } - else + if ( !ispowered && waspowered ) { - if ( !ispowered && waspowered ) - { - powered revert_power( -1, localpower.origin, localpower.radius, localpower.enabled_list ); - arrayremovevalue( localpower.enabled_list, powered, 0 ); - } + powered revert_power( -1, localpower.origin, localpower.radius, localpower.enabled_list ); + arrayremovevalue( localpower.enabled_list, powered, 0 ); } i++; } @@ -329,11 +298,13 @@ move_local_power( localpower, origin ) return localpower; } -end_local_power( localpower ) +end_local_power( localpower ) //checked matches cerberus output { + /* /# println( "ZM POWER: local power off at " + localpower.origin + " radius " + localpower.radius + "\n" ); #/ + */ if ( isDefined( localpower.enabled_list ) ) { revert_power_to_list( -1, localpower.origin, localpower.radius, localpower.enabled_list ); @@ -347,26 +318,22 @@ end_local_power( localpower ) arrayremovevalue( level.local_power, localpower, 0 ); } -has_local_power( origin ) +has_local_power( origin ) //checked changed to match cerberus output { - while ( isDefined( level.local_power ) ) + if ( isDefined( level.local_power ) ) { - _a309 = level.local_power; - _k309 = getFirstArrayKey( _a309 ); - while ( isDefined( _k309 ) ) + foreach ( localpower in level.local_power ) { - localpower = _a309[ _k309 ]; if ( distancesquared( localpower.origin, origin ) < ( localpower.radius * localpower.radius ) ) { return 1; } - _k309 = getNextArrayKey( _a309, _k309 ); } } return 0; } -get_powered_item_cost() +get_powered_item_cost() //checked matches cerberus output { if ( isDefined( self.power ) && !self.power ) { @@ -385,40 +352,31 @@ get_powered_item_cost() return cost / power_sources; } -get_local_power_cost( localpower ) +get_local_power_cost( localpower ) //checked changed to match cerberus output { cost = 0; - while ( isDefined( localpower ) && isDefined( localpower.enabled_list ) ) + if ( isDefined( localpower ) && isDefined( localpower.enabled_list ) ) { - _a340 = localpower.enabled_list; - _k340 = getFirstArrayKey( _a340 ); - while ( isDefined( _k340 ) ) + foreach ( powered in localpower.enabled_list ) { - powered = _a340[ _k340 ]; cost += powered get_powered_item_cost(); - _k340 = getNextArrayKey( _a340, _k340 ); } } - while ( isDefined( localpower ) && isDefined( localpower.added_list ) ) + else if ( isDefined( localpower ) && isDefined( localpower.added_list ) ) { - _a345 = localpower.added_list; - _k345 = getFirstArrayKey( _a345 ); - while ( isDefined( _k345 ) ) + foreach ( powered in localpower.added_list ) { - powered = _a345[ _k345 ]; cost += powered get_powered_item_cost(); - _k345 = getNextArrayKey( _a345, _k345 ); } } return cost; } -set_global_power( on_off ) +set_global_power( on_off ) //checked changed to match cerberus output { maps/mp/_demo::bookmark( "zm_power", getTime(), undefined, undefined, 1 ); level._power_global = on_off; - i = 0; - while ( i < level.powered_items.size ) + for ( i = 0; i < level.powered_items.size; i++ ) { powered = level.powered_items[ i ]; if ( isDefined( powered.target ) && powered.power_sources != 1 ) @@ -426,17 +384,18 @@ set_global_power( on_off ) powered global_power( on_off ); wait_network_frame(); } - i++; } } -global_power( on_off ) +global_power( on_off ) //checked matches cerberus output { if ( on_off ) { + /* /# println( "ZM POWER: global power on\n" ); #/ + */ if ( !self.power ) { self.power = 1; @@ -446,14 +405,17 @@ global_power( on_off ) } else { + /* /# println( "ZM POWER: global power off\n" ); #/ + */ self.powered_count--; - + /* /# assert( self.powered_count >= 0, "Repower underflow in power system" ); #/ + */ if ( self.powered_count == 0 && self.power ) { self.power = 0; @@ -462,15 +424,15 @@ global_power( on_off ) } } -never_power_on( origin, radius ) +never_power_on( origin, radius ) //checked matches cerberus output { } -never_power_off( origin, radius ) +never_power_off( origin, radius ) //checked matches cerberus output { } -cost_negligible() +cost_negligible() //checked matches cerberus output { if ( isDefined( self.one_time_cost ) ) { @@ -481,7 +443,7 @@ cost_negligible() return 0; } -cost_low_if_local() +cost_low_if_local() //checked matches cerberus output { if ( isDefined( self.one_time_cost ) ) { @@ -500,7 +462,7 @@ cost_low_if_local() return 1; } -cost_high() +cost_high() //checked matches cerberus output { if ( isDefined( self.one_time_cost ) ) { @@ -511,56 +473,64 @@ cost_high() return 10; } -door_range( delta, origin, radius ) +door_range( delta, origin, radius ) //checked matches cerberus output { if ( delta < 0 ) { return 0; } - if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) ) + if ( distancesquared( self.target.origin, origin ) < radius * radius ) { return 1; } return 0; } -door_power_on( origin, radius ) +door_power_on( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: door on\n" ); -#/ +#/ + */ self.target.power_on = 1; self.target notify( "power_on" ); } -door_power_off( origin, radius ) +door_power_off( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: door off\n" ); #/ + */ self.target notify( "power_off" ); self.target.power_on = 0; } -door_local_power_on( origin, radius ) +door_local_power_on( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: door on (local)\n" ); #/ + */ self.target.local_power_on = 1; self.target notify( "local_power_on" ); } -door_local_power_off( origin, radius ) +door_local_power_off( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: door off (local)\n" ); #/ + */ self.target notify( "local_power_off" ); self.target.local_power_on = 0; } -cost_door() +cost_door() //checked matches cerberus output { if ( isDefined( self.target.power_cost ) ) { @@ -580,7 +550,7 @@ cost_door() return 0; } -zombie_range( delta, origin, radius ) +zombie_range( delta, origin, radius ) //checked matches cerberus output { if ( delta > 0 ) { @@ -595,30 +565,32 @@ zombie_range( delta, origin, radius ) return 1; } -zombie_power_off( origin, radius ) +zombie_power_off( origin, radius ) //checked changed to match cerberus output { + /* /# println( "^1ZM POWER: zombies off\n" ); #/ - i = 0; - while ( i < self.zombies.size ) + */ + for ( i = 0; i < self.zombies.size; i++ ) { self.zombies[ i ] thread stun_zombie(); - wait 0,05; - i++; + wait 0.05; } } -stun_zombie() +stun_zombie() //checked matches cerberus output { self endon( "death" ); self notify( "stun_zombie" ); self endon( "stun_zombie" ); if ( self.health <= 0 ) { + /* /# iprintln( "trying to stun a dead zombie" ); #/ + */ return; } if ( isDefined( self.ignore_inert ) && self.ignore_inert ) @@ -633,7 +605,7 @@ stun_zombie() self thread maps/mp/zombies/_zm_ai_basic::start_inert(); } -perk_range( delta, origin, radius ) +perk_range( delta, origin, radius ) //checked changed to match cerberus output { if ( isDefined( self.target ) ) { @@ -642,14 +614,11 @@ perk_range( delta, origin, radius ) { perkorigin = self.target.realorigin; } - else + else if ( isDefined( self.target.disabled ) && self.target.disabled ) { - if ( isDefined( self.target.disabled ) && self.target.disabled ) - { - perkorigin += vectorScale( ( 0, 0, 1 ), 10000 ); - } + perkorigin += vectorScale( ( 0, 0, 1 ), 10000 ); } - if ( distancesquared( perkorigin, origin ) < ( radius * radius ) ) + if ( distancesquared( perkorigin, origin ) < radius * radius ) { return 1; } @@ -657,16 +626,18 @@ perk_range( delta, origin, radius ) return 0; } -perk_power_on( origin, radius ) +perk_power_on( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: perk " + self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + " on\n" ); #/ + */ level notify( self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + "_on" ); maps/mp/zombies/_zm_perks::perk_unpause( self.target.script_noteworthy ); } -perk_power_off( origin, radius ) +perk_power_off( origin, radius ) //checked matches cerberus output { notify_name = self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify(); if ( isDefined( notify_name ) && notify_name == "revive" ) @@ -676,9 +647,11 @@ perk_power_off( origin, radius ) return; } } + /* /# println( "^1ZM POWER: perk " + self.target.script_noteworthy + " off\n" ); #/ + */ self.target notify( "death" ); self.target thread maps/mp/zombies/_zm_perks::vending_trigger_think(); if ( isDefined( self.target.perk_hum ) ) @@ -689,7 +662,7 @@ perk_power_off( origin, radius ) level notify( self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + "_off" ); } -pap_range( delta, origin, radius ) +pap_range( delta, origin, radius ) //checked changed to match cerberus output { if ( isDefined( self.target ) ) { @@ -698,12 +671,9 @@ pap_range( delta, origin, radius ) { paporigin = self.target.realorigin; } - else + else if ( isDefined( self.target.disabled ) && self.target.disabled ) { - if ( isDefined( self.target.disabled ) && self.target.disabled ) - { - paporigin += vectorScale( ( 0, 0, 1 ), 10000 ); - } + paporigin += vectorScale( ( 0, 0, 1 ), 10000 ); } if ( distancesquared( paporigin, origin ) < ( radius * radius ) ) { @@ -713,25 +683,29 @@ pap_range( delta, origin, radius ) return 0; } -pap_power_on( origin, radius ) +pap_power_on( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: PaP on\n" ); #/ + */ level notify( "Pack_A_Punch_on" ); } -pap_power_off( origin, radius ) +pap_power_off( origin, radius ) //checked matches cerberus output { + /* /# println( "^1ZM POWER: PaP off\n" ); #/ + */ level notify( "Pack_A_Punch_off" ); self.target notify( "death" ); self.target thread maps/mp/zombies/_zm_perks::vending_weapon_upgrade(); } -pap_is_on() +pap_is_on() //checked matches cerberus output { if ( isDefined( self.powered ) ) { @@ -739,3 +713,4 @@ pap_is_on() } return 0; } + diff --git a/patch_zm/maps/mp/zombies/_zm_spawner.gsc b/patch_zm/maps/mp/zombies/_zm_spawner.gsc index 4c9175f..05c90fd 100644 --- a/patch_zm/maps/mp/zombies/_zm_spawner.gsc +++ b/patch_zm/maps/mp/zombies/_zm_spawner.gsc @@ -214,6 +214,12 @@ zombie_spawn_init( animname_set ) //checked partially changed to match cerberus self.badplaceawareness = 0; self.chatinitialized = 0; self.a.disablepain = 1; + + self.no_damage_points = 0; //wasn't defined anywhere defining here + self.no_eye_glow = 0; //wasn't defined anywhere defining here + self.create_eyes = 1; //wasn't defined anywhere defining here + self.is_inert = 0; //wasn't defined anywhere defining here + self disable_react(); if ( isDefined( level.zombie_health ) ) { @@ -382,6 +388,11 @@ zombie_think() //checked changed to match cerberus output } else { + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline1 = "INFO: _zm_spawner.gsc zombie_think() calls do_zombie_spawn()" + "\n"; + logprint( logline1 ); + } self thread do_zombie_spawn(); } self waittill( "risen", find_flesh_struct_string ); @@ -580,15 +591,24 @@ zombie_goto_entrance( node, endon_bad_path ) //checked matches cerberus output self.barricade_enter = 0; } -zombie_assure_node() //checked changed to match cerberus output +zombie_assure_node() //checked changed to match cerberus output //changed for loops to while loops to prevent infinite loops with continues { self endon( "death" ); self endon( "goal" ); level endon( "intermission" ); start_pos = self.origin; + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 1 ) && level.debugLogging_zm_spawner ) + { + if ( !isDefined( self.entrance_nodes ) ) + { + logline12 = "ERROR: _zm_spawner.gsc zombie_assure_node() self.entrance_nodes is undefined! " + "\n"; + logprint( logline12 ); + } + } if ( isDefined( self.entrance_nodes ) ) { - for ( i = 0; i < self.entrance_nodes.size; i++ ) + i = 0; + while ( i < self.entrance_nodes.size ) { if ( self zombie_bad_path() ) { @@ -601,6 +621,7 @@ zombie_assure_node() //checked changed to match cerberus output level thread draw_line_ent_to_pos( self, self.entrance_nodes[ i ].origin, "goal" ); self.first_node = self.entrance_nodes[ i ]; self setgoalpos( self.entrance_nodes[ i ].origin ); + i++; continue; } return; @@ -611,7 +632,8 @@ zombie_assure_node() //checked changed to match cerberus output if ( isDefined( nodes ) ) { self.entrance_nodes = nodes; - for ( i = 0; i < self.entrance_nodes.size; i++ ) + i = 0; + while ( i < self.entrance_nodes.size) { if ( self zombie_bad_path() ) { @@ -624,8 +646,10 @@ zombie_assure_node() //checked changed to match cerberus output level thread draw_line_ent_to_pos( self, self.entrance_nodes[ i ].origin, "goal" ); self.first_node = self.entrance_nodes[ i ]; self setgoalpos( self.entrance_nodes[ i ].origin ); + i++; continue; } + i++; return; } } @@ -668,6 +692,11 @@ zombie_bad_path_timeout() //checked matches cerberus output tear_into_building() //checked changed to match cerberus output { + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline13 = "INFO: _zm_spawner.gsc tear_into_building() is called " + "\n"; + logprint( logline13 ); + } self endon( "death" ); self endon( "teleporting" ); self zombie_history( "tear_into_building -> start" ); @@ -791,7 +820,7 @@ tear_into_building() //checked changed to match cerberus output self.first_node.attack_spots_taken[ i ] = 0; i++; } - level notify( "last_board_torn" ); + level notify( "last_board_torn", self.first_node.zbarrier.origin ); return; } } @@ -1656,17 +1685,20 @@ derive_damage_refs( point ) //checked changed to match cerberus output init_gib_tags(); } closesttag = undefined; - for ( i = 0; i < level.gib_tags.size; i++ ) + i = 0; + while ( i < level.gib_tags.size ) { if ( !isDefined( closesttag ) ) { closesttag = level.gib_tags[ i ]; + i++; continue; } if ( distancesquared( point, self gettagorigin( level.gib_tags[ i ] ) ) < distancesquared( point, self gettagorigin( closesttag ) ) ) { closesttag = level.gib_tags[ i ]; } + i++; } refs = []; if ( closesttag != "J_SpineLower" || closesttag == "J_SpineUpper" || closesttag == "J_Spine4" ) @@ -1924,7 +1956,7 @@ zombie_death_animscript() //checked changed to match cerberus output } if ( self.damagemod == "MOD_GRENADE" || self.damagemod == "MOD_GRENADE_SPLASH" ) { - level notify( "zombie_grenade_death" ); + level notify( "zombie_grenade_death", self.origin ); } return 0; } @@ -2383,7 +2415,7 @@ zombie_death_event( zombie ) //checked changed to match cerberus output zombie.attacker maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "damage" ); } } - zombie.attacker notify( "zom_kill" ); + zombie.attacker notify( "zom_kill", zombie ); damageloc = zombie.damagelocation; damagemod = zombie.damagemod; attacker = zombie.attacker; @@ -2606,7 +2638,8 @@ zombie_pathing_get_breadcrumb( origin, breadcrumbs, bad_crumbs, pick_random ) // #/ } */ - for ( i = 0; i < breadcrumbs.size; i++ ) + i = 0; + while ( i < breadcrumbs.size ) { if ( pick_random ) { @@ -2618,8 +2651,10 @@ zombie_pathing_get_breadcrumb( origin, breadcrumbs, bad_crumbs, pick_random ) // } if ( crumb_is_bad( crumb_index, bad_crumbs ) ) { + i++; continue; } + i++; return breadcrumbs[ crumb_index ]; } return undefined; @@ -2805,30 +2840,54 @@ do_zombie_spawn() //checked changed to match cerberus output spots = []; if ( isDefined( self._rise_spot ) ) { + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline2 = "INFO: _zm_spawner.gsc do_zombie_spawn() self._rise_spot is defined calling do_zombie_rise(); returning" + "\n"; + logprint( logline2 ); + } spot = self._rise_spot; self thread do_zombie_rise( spot ); return; } + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 1 ) && level.debugLogging_zm_spawner ) + { + if ( !isDefined( level.zombie_spawn_locations ) ) + { + logline3 = "ERROR: _zm_spawner.gsc do_zombie_spawn() level.zombie_spawn_locations is not defined!" + "\n"; + logprint( logline3 ); + return; + } + } if ( isDefined( level.zombie_spawn_locations ) ) { - for ( i = 0; i < level.zombie_spawn_locations.size; i++ ) + i = 0; + while ( i < level.zombie_spawn_locations.size ) { if ( isDefined( level.use_multiple_spawns ) && level.use_multiple_spawns && isDefined( self.script_int ) ) { if ( isDefined( level.spawner_int ) && self.script_int == level.spawner_int && ( !isDefined( level.zombie_spawn_locations[ i ].script_int ) || !isDefined( level.zones[ level.zombie_spawn_locations[ i ].zone_name ].script_int ) ) ) { + i++; continue; } if ( isDefined( level.zombie_spawn_locations[ i ].script_int ) && level.zombie_spawn_locations[ i ].script_int != self.script_int ) { + i++; continue; } else if ( isDefined( level.zones[ level.zombie_spawn_locations[ i ].zone_name ].script_int ) && level.zones[ level.zombie_spawn_locations[ i ].zone_name ].script_int != self.script_int ) { + i++; continue; } - spots[ spots.size ] = level.zombie_spawn_locations[ i ]; } + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline11 = "INFO: _zm_spawner.gsc do_zombie_spawn() setting spot: " + spots.size + " to level.zombie_spawn_locations: " + i + "\n"; + logprint( logline11 ); + } + spots[ spots.size ] = level.zombie_spawn_locations[ i ]; + i++; } } /* @@ -2892,50 +2951,76 @@ do_zombie_spawn() //checked changed to match cerberus output self.script_parameters = spot.script_parameters; } tokens = strtok( spot.script_noteworthy, " " ); - foreach ( token in tokens ) + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 1 ) && level.debugLogging_zm_spawner ) + { + if ( !isDefined( tokens ) ) + { + logline9 = "ERROR: _zm_spawner.gsc do_zombie_spawn() tokens is not defined! " + "\n"; + logprint( logline9 ); + return; + } + else + { + logline10 = "INFO: _zm_spawner.gsc do_zombie_spawn() has this many tokens: " + tokens.size + "\n"; + logprint( logline10 ); + } + } + i = 0; + while ( i < tokens.size ) { if ( isdefined( self.spawn_point_override ) ) { spot = self.spawn_point_override; - token = spot.script_noteworthy; + tokens[ i ] = spot.script_noteworthy; } - if ( token == "custom_spawner_entry" ) + if ( tokens[ i ] == "custom_spawner_entry" ) { - next_token = index + 1; - if ( isdefined( tokens[ next_token ] ) ) + if ( isdefined( tokens[ i ] ) ) { - str_spawn_entry = tokens[ next_token ]; + str_spawn_entry = tokens[ i ]; if ( isdefined( level.custom_spawner_entry ) && isdefined( level.custom_spawner_entry[ str_spawn_entry ] ) ) { self thread [[ level.custom_spawner_entry[ str_spawn_entry ] ]](spot); + i++; continue; } } } - if ( token == "riser_location" ) + if ( tokens[ i ] == "riser_location" ) { self thread do_zombie_rise( spot ); + i++; continue; } - if ( token == "faller_location" ) + if ( tokens[ i ] == "faller_location" ) { self thread maps/mp/zombies/_zm_ai_faller::do_zombie_fall( spot ); + i++; continue; } - if ( token == "dog_location" ) + if ( tokens[ i ] == "dog_location" ) { + i++; continue; } - if ( token == "screecher_location" ) + if ( tokens[ i ] == "screecher_location" ) { + i++; continue; } - if ( token == "leaper_location" ) + if ( tokens[ i ] == "leaper_location" ) { + i++; continue; } if ( isdefined(self.anchor ) ) { + i++; + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline4 = "INFO: _zm_spawner.gsc do_zombie_spawn() self.anchor is defined; returning" + "\n"; + logprint( logline4 ); + } return; } self.anchor = spawn( "script_origin", self.origin ); @@ -2965,7 +3050,13 @@ do_zombie_spawn() //checked changed to match cerberus output self.anchor delete(); } self show(); - self notify( "risen" ); + self notify( "risen", spot.script_string ); + i++; + } + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline4 = "INFO: _zm_spawner.gsc do_zombie_spawn() has completed its operation" + "\n"; + logprint( logline4 ); } } @@ -3025,6 +3116,11 @@ do_zombie_rise( spot ) //checked changed to match cerberus output spot notify( "stop_zombie_rise_fx" ); self.in_the_ground = 0; self notify( "risen", spot.script_string ); + if ( ( level.errorDisplayLevel == 0 || level.errorDisplayLevel == 3 ) && level.debugLogging_zm_spawner ) + { + logline5 = "INFO: _zm_spawner.gsc do_zombie_rise() has completed its operation" + "\n"; + logprint( logline5 ); + } } hide_pop() //checked matches cerberus output @@ -3269,3 +3365,4 @@ zombie_free_cam_allowed() //checked matches cerberus output self setfreecameralockonallowed( 1 ); } + diff --git a/patch_zm/maps/mp/zombies/_zm_turned.gsc b/patch_zm/maps/mp/zombies/_zm_turned.gsc index 4a8660f..aa2106c 100644 --- a/patch_zm/maps/mp/zombies/_zm_turned.gsc +++ b/patch_zm/maps/mp/zombies/_zm_turned.gsc @@ -7,7 +7,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { level.turnedmeleeweapon = "zombiemelee_zm"; level.turnedmeleeweapon_dw = "zombiemelee_dw"; @@ -31,24 +31,24 @@ init() thread setup_zombie_exerts(); } -setup_zombie_exerts() +setup_zombie_exerts() //checked matches cerberus output { - wait 0,05; + wait 0.05; level.exert_sounds[ 1 ][ "burp" ] = "null"; level.exert_sounds[ 1 ][ "hitmed" ] = "null"; level.exert_sounds[ 1 ][ "hitlrg" ] = "null"; } -delay_turning_on_eyes() +delay_turning_on_eyes() //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); wait_network_frame(); - wait 0,1; + wait 0.1; self setclientfield( "player_has_eyes", 1 ); } -turn_to_zombie() +turn_to_zombie() //checked changed to match cerberus output { if ( self.sessionstate == "playing" && isDefined( self.is_zombie ) && self.is_zombie && isDefined( self.laststand ) && !self.laststand ) { @@ -60,7 +60,7 @@ turn_to_zombie() } while ( isDefined( self.is_in_process_of_humanify ) && self.is_in_process_of_humanify ) { - wait 0,1; + wait 0.1; } if ( !flag( "pregame" ) ) { @@ -150,17 +150,14 @@ turn_to_zombie() { self freezecontrols( level.player_movement_suppressed ); } - else + else if ( isDefined( self.hostmigrationcontrolsfrozen ) && !self.hostmigrationcontrolsfrozen ) { - if ( isDefined( self.hostmigrationcontrolsfrozen ) && !self.hostmigrationcontrolsfrozen ) - { - self freezecontrols( 0 ); - } + self freezecontrols( 0 ); } self.is_in_process_of_zombify = 0; } -turn_to_human() +turn_to_human() //checked changed to match cerberus output { if ( self.sessionstate == "playing" && isDefined( self.is_zombie ) && !self.is_zombie && isDefined( self.laststand ) && !self.laststand ) { @@ -172,7 +169,7 @@ turn_to_human() } while ( isDefined( self.is_in_process_of_zombify ) && self.is_in_process_of_zombify ) { - wait 0,1; + wait 0.1; } self playsoundtoplayer( "evt_spawn", self ); playsoundatposition( "evt_disappear_3d", self.origin ); @@ -233,27 +230,21 @@ turn_to_human() { self freezecontrols( level.player_movement_suppressed ); } - else + else if ( isDefined( self.hostmigrationcontrolsfrozen ) && !self.hostmigrationcontrolsfrozen ) { - if ( isDefined( self.hostmigrationcontrolsfrozen ) && !self.hostmigrationcontrolsfrozen ) - { - self freezecontrols( 0 ); - } + self freezecontrols( 0 ); } self show(); playsoundatposition( "evt_appear_3d", self.origin ); self.is_in_process_of_humanify = 0; } -deletezombiesinradius( origin ) +deletezombiesinradius( origin ) //checked changed to match cerberus output { zombies = get_round_enemy_array(); maxradius = 128; - _a328 = zombies; - _k328 = getFirstArrayKey( _a328 ); - while ( isDefined( _k328 ) ) + foreach ( zombie in zombies ) { - zombie = _a328[ _k328 ]; if ( isDefined( zombie ) && isalive( zombie ) && isDefined( zombie.is_being_used_as_spawner ) && !zombie.is_being_used_as_spawner ) { if ( distancesquared( zombie.origin, origin ) < ( maxradius * maxradius ) ) @@ -261,20 +252,21 @@ deletezombiesinradius( origin ) playfx( level._effect[ "wood_chunk_destory" ], zombie.origin ); zombie thread silentlyremovezombie(); } - wait 0,05; + wait 0.05; } - _k328 = getNextArrayKey( _a328, _k328 ); } } -turned_give_melee_weapon() +turned_give_melee_weapon() //checked matches cerberus output { + /* /# assert( isDefined( self.turnedmeleeweapon ) ); #/ /# assert( self.turnedmeleeweapon != "none" ); #/ + */ self.turned_had_knife = self hasweapon( "knife_zm" ); if ( isDefined( self.turned_had_knife ) && self.turned_had_knife ) { @@ -288,45 +280,45 @@ turned_give_melee_weapon() self switchtoweapon( self.turnedmeleeweapon ); } -turned_player_buttons() +turned_player_buttons() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "humanify" ); level endon( "end_game" ); while ( isDefined( self.is_zombie ) && self.is_zombie ) { - while ( !self attackbuttonpressed() || self adsbuttonpressed() && self meleebuttonpressed() ) + if ( self attackbuttonpressed() || self adsbuttonpressed() || self meleebuttonpressed() ) { if ( cointoss() ) { self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "attack", undefined ); } - while ( !self attackbuttonpressed() || self adsbuttonpressed() && self meleebuttonpressed() ) + while ( self attackbuttonpressed() || self adsbuttonpressed() || self meleebuttonpressed() ) { - wait 0,05; + wait 0.05; } } - while ( self usebuttonpressed() ) + if ( self usebuttonpressed() ) { self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "taunt", undefined ); while ( self usebuttonpressed() ) { - wait 0,05; + wait 0.05; } } - while ( self issprinting() ) + if ( self issprinting() ) { while ( self issprinting() ) { self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "sprint", undefined ); - wait 0,05; + wait 0.05; } } - wait 0,05; + wait 0.05; } } -turned_disable_player_weapons() +turned_disable_player_weapons() //checked matches cerberus output { if ( isDefined( self.is_zombie ) && self.is_zombie ) { @@ -349,7 +341,7 @@ turned_disable_player_weapons() self disableweaponcycling(); } -turned_enable_player_weapons() +turned_enable_player_weapons() //checked changed to match cerberus output { self takeallweapons(); self enableweaponcycling(); @@ -360,13 +352,10 @@ turned_enable_player_weapons() self thread [[ level.humanify_custom_loadout ]](); return; } - else + else if ( !self hasweapon( "rottweil72_zm" ) ) { - if ( !self hasweapon( "rottweil72_zm" ) ) - { - self giveweapon( "rottweil72_zm" ); - self switchtoweapon( "rottweil72_zm" ); - } + self giveweapon( "rottweil72_zm" ); + self switchtoweapon( "rottweil72_zm" ); } if ( isDefined( self.is_zombie ) && !self.is_zombie && !self hasweapon( level.start_weapon ) ) { @@ -396,13 +385,12 @@ turned_enable_player_weapons() self setweaponammoclip( self get_player_lethal_grenade(), 2 ); } -get_farthest_available_zombie( player ) +get_farthest_available_zombie( player ) //checked changed to match cerberus output { while ( 1 ) { zombies = get_array_of_closest( player.origin, getaiarray( level.zombie_team ) ); - x = 0; - while ( x < zombies.size ) + for ( x = 0; x < zombies.size; x++ ) { zombie = zombies[ x ]; if ( isDefined( zombie ) && isalive( zombie ) && isDefined( zombie.in_the_ground ) && !zombie.in_the_ground && isDefined( zombie.gibbed ) && !zombie.gibbed && isDefined( zombie.head_gibbed ) && !zombie.head_gibbed && isDefined( zombie.is_being_used_as_spawnpoint ) && !zombie.is_being_used_as_spawnpoint && zombie in_playable_area() ) @@ -410,29 +398,24 @@ get_farthest_available_zombie( player ) zombie.is_being_used_as_spawnpoint = 1; return zombie; } - x++; } - wait 0,05; + wait 0.05; } } -get_available_human() +get_available_human() //checked changed to match cerberus output { players = get_players(); - _a539 = players; - _k539 = getFirstArrayKey( _a539 ); - while ( isDefined( _k539 ) ) + foreach ( player in players ) { - player = _a539[ _k539 ]; if ( isDefined( player.is_zombie ) && !player.is_zombie ) { return player; } - _k539 = getNextArrayKey( _a539, _k539 ); } } -silentlyremovezombie() +silentlyremovezombie() //checked matches cerberus output { self.skip_death_notetracks = 1; self.nodeathragdoll = 1; @@ -440,8 +423,9 @@ silentlyremovezombie() self self_delete(); } -getspawnpoint() +getspawnpoint() //checked matches cerberus output { spawnpoint = self maps/mp/gametypes_zm/_spawnlogic::getspawnpoint_dm( level._turned_zombie_respawnpoints ); return spawnpoint; } + diff --git a/patch_zm/readme.md b/patch_zm/readme.md index 2d59316..84624c2 100644 --- a/patch_zm/readme.md +++ b/patch_zm/readme.md @@ -50,7 +50,11 @@ 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_game_module.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_traps.gsc +patch_zm/maps/mp/zombies/_zm_turned.gsc patch_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc ``` ### The following scripts are not checked yet, uploaded to setup a baseline: @@ -59,12 +63,8 @@ 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_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_turned.gsc patch_zm/maps/mp/zombies/_zm_unitrigger.gsc patch_zm/maps/mp/zombies/_zm_utility.gsc ```