OW2 New Game mode Flashpoint in TF2?

tosm

L1: Registered
Sep 5, 2023
1
0
Overwatch recently added a new game mode called flashpoint. Flashpoint is a symmetrical map where it seems 5 points are across the map and each team fights for 1 chosen point by random. After that point is captured, it randomly picks a different point and both teams need to travel to it and fight over the new objective. The team that captures 3 points first wins. I was wondering if something like this is currently possible to make in hammer logic wise.

kinda like a mix of koth and maybe 5cp

I think this game mode could be interesting in competitive tf2 if designed correctly.
 

Tiftid

the Embodiment of Scarlet Devil
aa
Sep 10, 2016
613
476
A simple way to do it would be to make it multi-stage (have 5 team_control_point_round entities with equal priority and a different capture point for each). That would also eliminate the awkward period where both teams have to walk sideways (and probably half the players have no idea they have to walk sideways and will just approach the enemy spawn to camp it).

If you didn't want to do that cause it wouldn't be accurate to Overwatch, you could:
  • Set the "Start Locked?" property on each team_control_point to "Yes"
  • Create a logic_case and name it cp_picker
  • Create a logic_auto with an output - OnMapSpawn cp_picker PickRandomShuffle
  • Add an OnCase01 output to cp_picker which targets cp1 (our first point) and sends a SetLocked 0 or SetUnlockTime X output to it
  • Do the same with OnCase02 and cp2, OnCase03 and cp3, etc...
  • Give the trigger_capture_area for each point an output - OnEndCap cp_picker PickRandomShuffle
For making it so that the team who owns 3 points first wins, you would need to:
  • Create two math_counter entities
  • Name one "logic_cpcounter_red" and the other "logic_cpcounter_blu"
  • Set the "Maximum Legal Value" property of both to 3
  • Create two game_round_win entities
  • Name one "logic_win_red" and the other "logic_win_blu"
  • Set the "Team" property of logic_win_red to 1 (or RED), and set it to 2 (or BLU) for logic_win_blu
  • Give logic_cpcounter_red an output - OnHitMax logic_win_red RoundWin
  • Give logic_cpcounter_blu an output - OnHitMax logic_win_blu RoundWin
  • Give each trigger_capture_area two outputs - OnCapTeam1 logic_cpcounter_red Add 1 and OnCapTeam2 logic_cpcounter_blu Add 1
I've heard things about the SetLocked 0 output not working properly, and I've also heard that you need to have at least one team_control_point_round entity in your map for it to work properly.

There are also some other neat things you can do:
  • You can set the "Win Reason" property in game_round_win to say "<TEAM> was ahead by the required difference to win", but I think this is difficult to do without downloading a custom FGD like this one
  • You can place a tf_logic_player_destruction entity in your map, name it "logic_pd", set the "Minimum Points" to 0 and "Maximum Points" to 3, set the "Max Points/Player" to 0, set the "Finale Length" to 0, and use the "ScoreRedPoints" and "ScoreBluePoints" inputs to it instead of the counter system I detailed earlier
  • To make the tf_logic_player_destruction entity work for this purpose, you'll need to add a few inputs to your logic_auto:
    • OnMapSpawn logic_pd EnableMaxScoreUpdating (with delay of 0)
    • OnMapSpawn logic_pd SetPointsOnPlayerDeath 0 (with delay of 0)
    • OnMapSpawn logic_pd DisableMaxScoreUpdating (with delay of 0.01)
  • All this labour will result in a cooler-looking HUD which will better explain to players why they win when they capture just three points instead of all of them
Hope this helps!