- Is there a way to change how teams score points i.e. make CP captures add up to a team total, with different control points being worth different amounts of points?
Since that can theoretically take an inifinite amount of time, there is supposed to be a score CAP. The team who reaches that cap first, wins no matter what.
Under the
team_control_point_master entity, setting the scoring style to "Add team score for each captured point" should do it, if that's not already what it's set to. Unfortunately, AFAIK there is not a way to set a different point value for each control point.
Can I specify multiple win scenarios based on a score total? To clarify: The idea is to grant a team the victory as soon as it has reached a score target AND then continued to capture it's opponent's last.
Yes. For a conditional win scenario, such as the one you described above where you need to meet a certain condition and then perform an action to win, you'd use a
logic_relay set up to fire the win input to a
game_round_win entity when triggered. Set the logic_relay to start disabled (unless the win condition is already met at the start of each round), enable it when the win condition is met (a certain number of points being reached), and if applicable, disable it if the win condition is no longer met. Trigger the relay when the win action is performed (capturing the final control point). If the win condition has been met and the relay is enabled, the team will win. If the win condition has not been met, nothing will happen because the relay is disabled and therefore can't be triggered. Note that you'll need to set the Restrict Team from Winning keyvalue to Both to prevent teams from winning automatically when they cap last. Unfortunately, there is no way to detect the number of points a team has. Fortunately, we can overcome this.
math_counter is an entity that stores a value that can be adjusted via inputs. It can be used for many things; in this case, we can use it to track points behind-the-scenes. Simply create two counters (one per team), and set up each control point to fire the Add input when it is captured to add 1 point to the proper team's counter. To detect when a team has reached a certain point value, we would ordinarily set a maximum value and use the OnHitMax output; however, you want to continue tracking points so that you can have a score cap upon which a team wins immediately, so we'll be using the max value method to detect that. Set the maximum value to your score cap and fire OnHitMax to the win entity. To detect when a team has reached the score condition, we'll need a
logic_compare. Set the compare value to the min point value. Fire the OutValue output from the counter to the SetValueCompare input on the comparer. Leave the parameter field alone to automatically pass the counter's value as the parameter. In the comparer, the OnEqualTo output will fire to enable the win condition relay. Note that you'll need to duplicate all this logic for the other team.
Now, about your idea itself. I don't think it will work as well as you want it to. What happens if a team hasn't met the required number of points and captures the final CP? Now they're holding all CPs, so they can't cap any more, and they have to purposely let Blu cap some points so they can retake them and score more points until they reach the required number. Having a score cap seems like a neat idea to prevent stalemates (in addition to the timer), but a score requirement to win seems like it would be weird, especially if there was nothing to explain how this score requirement works.