Attack / Defense Pass Time Prefab - A setup of entities that enable a 3cp attack/defense map using the passtime jack to score
Download is a .zip with a fast compile bsp, and a vmf for inspection or copy/pasting needs
R E A D M E and E L A B O R A T I O N
To help better explain the setup of the prefab and mode, heres a general rundown of what is inside the prefab
The prefab was slapped together in like 3 hours so if you have any issues or questions let me know and I'll see what I can do to help you troubleshoot
Images:
Download is a .zip with a fast compile bsp, and a vmf for inspection or copy/pasting needs
R E A D M E and E L A B O R A T I O N
To help better explain the setup of the prefab and mode, heres a general rundown of what is inside the prefab
- 3 blue spawns / 3 red spawns correlating to each current CP
- 3 goals and matching relays to be run on a scored goal
- The only output on goals right now is to run the relay, all intended outputs can be seen by checking the relays
- 3 ball 'spawns' and a ball spawn station outside the standard map
- Its important to note, multiple ball spawn entities does not seem to function at all, so to get around that a ball spawns outside in a box and a trigger_teleport sends it to the desired location
- Janky path_tracks for tracking the balls progress in the map for each point
- Instead of standard capture triggers matched up with a team_control_point, passtime_goal entities are used to control capturing
- Given the attack/defense setup, each passtime_goal uses an OnScoreBlu to run a relay which SetsOwner, disables the current goal brush / spawns, and enables the next goal / spawns.
- You ABSOLUTELY have to ensure you disabled old goal triggers after they have been captured
- Likewise, if you are changing where you want the ball to spawn, you should disable the old teleport and enable the new teleport trigger
- For the last goal, you simply need to run the effects and capture the final CP / send a RoundWin to the proper entity to end the round.
- VEEEERY IMPORTANTLY you need to have a passtime_goal set for RED TEAM ONLY that coveres the entirety of your active playspace (how you fit it is up to you, I was lazy for the prefab and just made a big box around everything) and set it for 0 POINTS / BALL HOLDING PLAYERS
- If you fail to do this, red team can grab the ball and run away completely breaking the entire match. Adding this trigger instantly caps the ball for 0 points when red team grabs it, respawning it for blue team.
- A knock on effect of this trigger is red team getting crits for ~5 seconds when grabbing the ball. I theorize you could counteract this with a add_player_condition trigger to disable crits on a red capture, but I worry this might interfere with pre-existing crit conditions like frontier justices / kritzkriegs. Experiment with it if you wish
- Also make sure that wherever the ball respawns is easily defended by blue team and that your ball respawn time is greater than 5 seconds. Otherwise a red player can stand on the ball spawn and have infinite crits.
- Lastly you'll notice the path tracks around the map branching to each goal. These are how the gamemode determines how far along the path a ball is for the next goal. I only used 4 nodes to demonstrate the concept, but it is a bit jank and could do with refinement in your own use cases. It would work better in a linear progressive map rather than this small square with all the goals next to each-other in space.
- The documentation for how to use these paths is a bit jank so ill give it a quick explenation
- Set the number of paths / sections you want in the passtime_logic entity.
- For 3 cps, set sections to 2. (section 0, section 1, and section 2)
- When you want to switch what section is being actively tracked, you send a SetSection input to passtime_logic
- the syntax is <section number> <starting path track name> <ending path track name> seperated by spaces
- the VDC recommends that you have all your path_tracks in a section connected, though technically you dont need to this.
- I think the respawnroomvisualisers used to stop players from entering the goal areas are set to improper respawn rooms right now and dont function? It *should* work but if it doesent for you I recommend experimenting around with what respawnroom they are tied to so that neither team may enter.
- Very importantly, you have to use visualiers to stop players from entering goal zones since any other type of clip will ALSO block the ball
- This may not be necessary depending on how you set up your map, but I recommend adding blockers (just a door or something) infront of inactive goals to avoid someone throwing the ball and nobody being able to reach it until its auto reset.
- If you are going to make a pass a/d map, I recommend trying a more linear progression through the map instead of having some sort of branching paths middle. Passtime will have a much clearer progression if the map continues on linearly because only the person holding the ball is given a visual showing where the goal is.
- Feel free to add capture points to the map to represent each point, but if you do a linear map you dont need to have a hud element to convey what point you are currently working toward.
- If you want to do 2 cp instead of 3 cp, adjust the relays on the first capture point to enable point 3 / respawns 3 instead of point 2 / respawns 2. I did 3 CP for this because I felt 2 CP may go by too fast unless youre doing a multi stage experience.
The prefab was slapped together in like 3 hours so if you have any issues or questions let me know and I'll see what I can do to help you troubleshoot
Images: