diff --git a/README.md b/README.md index 90fee45e..4a669fde 100644 --- a/README.md +++ b/README.md @@ -61,8 +61,8 @@ * Decreased minimum number of melees to kill from 5 to 3 * Decreased minimum number of melees to kill with Bowie Knife from 3 to 2 * Decreased minimum number of melees to kill with Galvaknuckles from 2 to 1 -* No longer automatically runs away when player is first attacked on solo -* Removed hint when player is first attacked on solo +* No longer automatically runs away when player is first attacked in solo +* Removed hint when player is first attacked in solo ## Weapons * Switch to melee weapon by pressing the new melee weapon button (same button as the Maxis Drone on Origins) @@ -280,6 +280,7 @@ * Navcard table automatically crafted ### Mob of the Dead +* 1 afterlife max in solo * Acid Trap kills on any round (normally stops killing after round 158 on PC) * Tower Trap kills on any round in 1 shot * Upgraded Tower Trap kills on any round in 1-2 shots diff --git a/scripts/zm/replaced/_zm_afterlife.gsc b/scripts/zm/replaced/_zm_afterlife.gsc new file mode 100644 index 00000000..998b2208 --- /dev/null +++ b/scripts/zm/replaced/_zm_afterlife.gsc @@ -0,0 +1,63 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; +#include maps/mp/zombies/_zm_afterlife; + +init_player() +{ + flag_wait( "initial_players_connected" ); + self.lives = 1; + self setclientfieldtoplayer( "player_lives", self.lives ); + self.afterlife = 0; + self.afterliferound = level.round_number; + self.afterlifedeaths = 0; + self thread afterlife_doors_close(); + self thread afterlife_player_refill_watch(); +} + +afterlife_add() +{ + if ( self.lives < 1 ) + { + self.lives++; + self thread afterlife_add_fx(); + } + self playsoundtoplayer( "zmb_afterlife_add", self ); + self setclientfieldtoplayer( "player_lives", self.lives ); +} + +afterlife_start_zombie_logic() +{ + flag_wait( "start_zombie_round_logic" ); + wait 0.5; + b_everyone_alive = 0; + while ( isDefined( b_everyone_alive ) && !b_everyone_alive ) + { + b_everyone_alive = 1; + a_players = getplayers(); + _a192 = a_players; + _k192 = getFirstArrayKey( _a192 ); + while ( isDefined( _k192 ) ) + { + player = _a192[ _k192 ]; + if ( isDefined( player.afterlife ) && player.afterlife ) + { + b_everyone_alive = 0; + wait 0.05; + break; + } + else + { + _k192 = getNextArrayKey( _a192, _k192 ); + } + } + } + wait 0.5; + while ( level.intermission ) + { + wait 0.05; + } + flag_set( "afterlife_start_over" ); + wait 2; + array_func( getplayers(), ::afterlife_add ); +} \ No newline at end of file diff --git a/scripts/zm/replaced/zm_alcatraz_classic.gsc b/scripts/zm/replaced/zm_alcatraz_classic.gsc new file mode 100644 index 00000000..438eb454 --- /dev/null +++ b/scripts/zm/replaced/zm_alcatraz_classic.gsc @@ -0,0 +1,23 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; +#include maps/mp/zm_alcatraz_classic; + +#include scripts/zm/replaced/_zm_afterlife; + +give_afterlife() +{ + onplayerconnect_callback( scripts/zm/replaced/_zm_afterlife::init_player ); + flag_wait( "initial_players_connected" ); + wait 0.5; + n_start_pos = 1; + a_players = getplayers(); + foreach ( player in a_players ) + { + if ( isDefined( player.afterlife ) && !player.afterlife ) + { + player thread fake_kill_player( n_start_pos ); + n_start_pos++; + } + } +} \ No newline at end of file diff --git a/scripts/zm/zm_prison/zm_prison_reimagined.gsc b/scripts/zm/zm_prison/zm_prison_reimagined.gsc index 97382054..697ff120 100644 --- a/scripts/zm/zm_prison/zm_prison_reimagined.gsc +++ b/scripts/zm/zm_prison/zm_prison_reimagined.gsc @@ -2,16 +2,22 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +#include scripts/zm/replaced/zm_alcatraz_classic; +#include scripts/zm/replaced/_zm_afterlife; #include scripts/zm/replaced/_zm_ai_brutus; main() { + replaceFunc(maps/mp/zm_alcatraz_classic::give_afterlife, scripts/zm/replaced/zm_alcatraz_classic::give_afterlife); + replaceFunc(maps/mp/zombies/_zm_afterlife::afterlife_add, scripts/zm/replaced/_zm_afterlife::afterlife_add); replaceFunc(maps/mp/zombies/_zm_ai_brutus::brutus_health_increases, scripts/zm/replaced/_zm_ai_brutus::brutus_health_increases); replaceFunc(maps/mp/zombies/_zm_ai_brutus::brutus_cleanup_at_end_of_grief_round, scripts/zm/replaced/_zm_ai_brutus::brutus_cleanup_at_end_of_grief_round); } init() { + level.round_prestart_func = scripts/zm/replaced/_zm_afterlife::afterlife_start_zombie_logic; + remove_acid_trap_player_spawn(); tower_trap_changes();