diff --git a/README.md b/README.md index a33285ce..2deaa5f5 100644 --- a/README.md +++ b/README.md @@ -127,12 +127,13 @@ ### Brutus * Smoke Grenade kills zombies +* Decreased footstep screen shake by 25% * Increased player damage from 99 to 100 * No longer receives additional damage from Ray Gun Mark 2 * Teleports away less frequently -* Grief: spawns every 4-6 minutes ### Panzersoldat +* Decreased footstep screen shake by 25% * No longer receives additional damage from Boomhilda or Ray Gun Mark 2 ## Weapons @@ -954,10 +955,11 @@ ### Encounter * Group of competitive game modes * Unlimited zombies -* 2500 health zombies (25000 health Brutus) +* 2500 health zombies (25000 health boss zombies) * 0.5 second zombie spawn rate * Only sprinting zombies * Crawlers bleed out if they have not dealt or taken damage within 30 seconds +* Boss zombies spawn every 4-6 minutes (on maps that have them) * Unlimited powerups * Unlimited barrier rebuild points * Unupgraded weapons stun enemy players for 0.5 seconds diff --git a/scripts/zm/replaced/_zm_ai_brutus.csc b/scripts/zm/replaced/_zm_ai_brutus.csc new file mode 100644 index 00000000..d212e7ff --- /dev/null +++ b/scripts/zm/replaced/_zm_ai_brutus.csc @@ -0,0 +1,39 @@ +#include clientscripts\mp\zombies\_zm_ai_brutus; +#include clientscripts\mp\_utility; +#include clientscripts\mp\zombies\_zm_utility; + +brutusfootstepcbfunc(localclientnum, pos, surface, notetrack, bone) +{ + players = getlocalplayers(); + + for (i = 0; i < players.size; i++) + { + if (!players[i] isplayer()) + continue; + + n_distance = distance2d(self.origin, players[i].origin); + + if (abs(self.origin[2] - players[i].origin[2]) < 100 && n_distance < 1500) + { + if (!is_true(players[i].brutus_camshake)) + { + players[i] earthquake(0.375, 0.1, self.origin, 1500); + players[i] thread prevent_camshake_stacking(); + } + + playerlocalclientnum = players[i] getlocalclientnumber(); + + if (isdefined(playerlocalclientnum)) + playrumbleonposition(playerlocalclientnum, "brutus_footsteps", self.origin); + } + } + + footstepdoeverything(); +} + +prevent_camshake_stacking() +{ + self.brutus_camshake = 1; + wait 0.1; + self.brutus_camshake = 0; +} \ No newline at end of file diff --git a/scripts/zm/replaced/_zm_ai_mechz.csc b/scripts/zm/replaced/_zm_ai_mechz.csc new file mode 100644 index 00000000..426bda86 --- /dev/null +++ b/scripts/zm/replaced/_zm_ai_mechz.csc @@ -0,0 +1,44 @@ +#include clientscripts\mp\zombies\_zm_ai_mechz; +#include clientscripts\mp\_utility; +#include clientscripts\mp\zombies\_zm_utility; + +mechzfootstepcbfunc(localclientnum, pos, surface, notetrack, bone) +{ + players = getlocalplayers(); + + for (i = 0; i < players.size; i++) + { + if (!players[i] isplayer()) + continue; + + n_distance = distance2d(self.origin, players[i].origin); + + if (abs(self.origin[2] - players[i].origin[2]) < 100 && n_distance < 1500) + { + rumble = "shotgun_fire"; + + if (n_distance <= 750) + { + rumble = "mechz_footsteps"; + } + + if (!is_true(players[i].mechz_camshake)) + { + players[i] earthquake(0.25, 0.1, self.origin, 1500); + players[i] thread prevent_camshake_stacking(); + } + + playerlocalclientnum = players[i] getlocalclientnumber(); + + if (isdefined(playerlocalclientnum)) + playrumbleonposition(playerlocalclientnum, rumble, self.origin); + } + } + + if (bone == "j_ball_ri") + playfxontag(localclientnum, level._effect["mech_footstep_steam"], self, "tag_foot_steam_RI"); + else if (bone == "j_ball_le") + playfxontag(localclientnum, level._effect["mech_footstep_steam"], self, "tag_foot_steam_LE"); + + footstepdoeverything(); +} \ No newline at end of file diff --git a/scripts/zm/zm_prison/zm_prison_reimagined.csc b/scripts/zm/zm_prison/zm_prison_reimagined.csc index 76e39142..b9fe6f89 100644 --- a/scripts/zm/zm_prison/zm_prison_reimagined.csc +++ b/scripts/zm/zm_prison/zm_prison_reimagined.csc @@ -3,6 +3,8 @@ main() { + replaceFunc(clientscripts\mp\zombies\_zm_ai_brutus::brutusfootstepcbfunc, scripts\zm\replaced\_zm_ai_brutus::brutusfootstepcbfunc); + if (is_gametype_active("zstandard")) { level.zombiemode_using_additionalprimaryweapon_perk = 1; diff --git a/scripts/zm/zm_tomb/zm_tomb_reimagined.csc b/scripts/zm/zm_tomb/zm_tomb_reimagined.csc new file mode 100644 index 00000000..88e03c95 --- /dev/null +++ b/scripts/zm/zm_tomb/zm_tomb_reimagined.csc @@ -0,0 +1,7 @@ +#include clientscripts\mp\_utility; +#include clientscripts\mp\zombies\_zm_utility; + +main() +{ + replaceFunc(clientscripts\mp\zombies\_zm_ai_mechz::mechzfootstepcbfunc, scripts\zm\replaced\_zm_ai_mechz::mechzfootstepcbfunc); +} \ No newline at end of file diff --git a/zone_source/includes/clientscripts.zone b/zone_source/includes/clientscripts.zone index 3259b796..368814b6 100644 --- a/zone_source/includes/clientscripts.zone +++ b/zone_source/includes/clientscripts.zone @@ -1,9 +1,12 @@ script,scripts/zm/_zm_reimagined.csc script,scripts/zm/zm_nuked/zm_nuked_reimagined.csc -script,scripts/zm/zm_buried/zm_buried_reimagined.csc script,scripts/zm/zm_prison/zm_prison_reimagined.csc +script,scripts/zm/zm_buried/zm_buried_reimagined.csc +script,scripts/zm/zm_tomb/zm_tomb_reimagined.csc script,scripts/zm/zgrief/zgrief_reimagined.csc script,scripts/zm/replaced/_zm.csc +script,scripts/zm/replaced/_zm_ai_brutus.csc +script,scripts/zm/replaced/_zm_ai_mechz.csc script,scripts/zm/replaced/_zm_weapons.csc script,scripts/zm/replaced/zm_nuked.csc script,scripts/zm/replaced/zm_buried.csc