Zombie Master 2 started out as an unofficial OB patch, there weren't any plans for adding features and content. Porting ZM took a month to do, manually porting at least 100 files to OB. By the time the port was completed, the idea of turning the patch into a mod was floating around and I finally did it. So here are a few of ZM2's newest features:
The modifications I did to point_viewcontrol were quite simple. When a point_viewcontrol is enabled, all players will have view entities set to it, acting as a cutscene. Each player can exit the cut scene whenever they want without interrupting the other players from watching. I may add an option so it would disable skipping the cutscene.
Winning/losing has an output now, allowing the mappers to do something special after the game.
Here's the new FGD entry:
@PointClass base(Targetname, Parentname, Origin, Angles) = func_win
Target for the Humans to win or lose the game
input Win(void) Human Win
input Lose(void) Zombie Master Win!
output Won(void) : Humans Won
output Lost(void) : Zombie Master Won!
With the way func_win_trigger is progressing, it could very well replace func_win. Here is a list of its current features:
- A completely modifiable timer
- Disallows NPCs in the trigger before winning
- Only players within the trigger will win
I plan on adding a hud element that displays the func_win_trigger's timer.
Here's the FGD Entry below:
@SolidClass base(Trigger, Targetname) = func_win_trigger :
"A trigger volume that only lets survivors within it win."
input Toggle(void) : "Toggles intial active state"
input Enable(void) : "Hides"
input Disable(void) : "Unhides"
input ChangeTimeLimit(float) : "Changes and resets the time limit"
input ModifyTime(float) : "Add or subtract time to the time limit"
input ResetTime(void) : "Resets the Timer"
input ToggleTimer(void) : "Toggles Timer"
input EnableTimer(void) : "Enables Timer"
input DisableTimer(void) : "Disables Timer"
input Win(void) : "Human Win"
output Won(void) : "Humans Won"
Active(integer) : "Active" : 1 : "Is this active on game load? 0 = false"
TimerOn(integer) : "Timer" : 0 : "Is the timer active? 0 = false"
Enemies(integer) : "Enemies" : 0 : "Disallow NPCs in area? 0 = false"
Timelimit(float) : "Time Limit" : 5 : "Time limit for survivors to get to destination ( In Minutes )"
Instead of making an input that would set the ZM's resources to zero, I thought it would be better if I made an input that sets the ZM's resources to whatever you want.
Here's the new FGD entry:
@PointClass base(Targetname, Parentname, Origin, Angles) = func_giveresources :
"Give or take resources from the ZM's stash"
input GiveResources(integer) : "Give/Take x resources"
input SetResources(integer) : "Set the ZM's resources"
Updated Stubborn Pathing
For those who don't know, stubborn pathing is a ZM feature that tries to fix disturbed paths by finding a new path to use. To improve the chance of finding a new path, I've made it so the new rerouting process repeats an adjusted number of times until it finds a new path to use. If the current path is blocked, the AI navigation will only try harder to find a new path.
Here are five shamblers walking from the train spawn site to selected point. Normally, they would stop a quarter way there.
Here I have ordered 35 shamblers to move from the spawn nearest to the concrete stairway over to the communications tower. A little bit after commanding, the shamblers found themselves stuck between the cargo container and the stairway itself. Rest assured, the stubborn pathing was able to command a portion of the shamblers around the container and up the stairs.
We'll reveal more in the next update!
ZM2 Team Leader and Lead Programmer