Cooperative Victory System- How To Do It

Stormcaller3801

L5: Dapper Member
Jul 5, 2009
249
28
Okay folks, I've a conundrum for you.

I want to set up a victory condition on a map so that it requires a joint effort by both teams for either side to win.

The long version: As a side project I'm working on a map made specifically to allow screwing around with things like rocket tennis and so forth. No timers, just screw around until you decide you want to do something more serious and then you move on. However, I don't want one person to be able to force the rest to do what they want- I want a victory condition that requires both teams to essentially agree to move to the next map.

Obvious answer is something like Rock The Vote, but I want this to be incorporated into the map itself.

So how would you do this?

I've been thinking about several options, but I know that there are people here who are better at this than I am. It's important that no single person can do this, but at the same time, no single person can prevent it either.
 

UKCS-Alias

Mann vs Machine... or... Mapper vs Meta?
aa
Sep 8, 2008
1,264
816
Sounds quite bad to me. What if the map is at such area that generaly isnt that fun for a specific class. If there are alot of players on then it will change the area fast and get a better area for it. However, when people are starting a server (read 1 vs 1) then in such case they will just leave... and believe me, people do that fast. Thats why 2fort often works for starting a server, it allows all classes on low player counts (on high player counts its useless though).

If you want to force teamwork its often an objective that takes a long time (long caps like in gravelpit placed on a very balanced area).

However, only allowing teams with teamwork to win couse steamrolls. Thats never good.
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
logic_compare (votetally):
OnGreaterThan > use this to trigger whatever you want to win/move on/etc

math_remap (votepercentage):
min input - 0
max input - 32
output on min - 0
output on max - this will determine what percentage of players will count as a pass vote. If you set this to 24 then two-thirds of the players must agree, 16 and then it's half.
OutValue > votetally > SetCompareValue

math_counter (totalplayers):
OutValue > votepercentage > Invalue

trigger_multiple covering the whole area:
OnStartTouch > totalplayers > Add > 1
OnEndTouch > totalplayers > Subtract > 1

math_counter (voteplayers):
OutValue > votetally > SetValueCompare

trigger_multiple in your "voting zones", you can have one of these for each team both feeding in and it'll be fine. You could have ten if you wanted, doesn't matter.
OnStartTouch > voteplayers > Add > 1
OnEndTouch > voteplayers > Subtract > 1


aaand that's it off the top of my head. Should work how you need.
 

Delusibeta

L3: Member
Mar 21, 2009
100
14
I think he's referring to lolmaps and not proper maps.

I imagine the best you can get to this would be a very long capture time for a point that's out of the way, and make it so that anyone can cap the point.

That said, I can easily see it being overruled by various server settings (Rock The Vote, SetStatlemateOnServerTimeLimit, etc.)

[Edit] Eff... Ninja'd by the Snark!
 
Last edited:

Stormcaller3801

L5: Dapper Member
Jul 5, 2009
249
28
Sounds quite bad to me. What if the map is at such area that generaly isnt that fun for a specific class. If there are alot of players on then it will change the area fast and get a better area for it. However, when people are starting a server (read 1 vs 1) then in such case they will just leave... and believe me, people do that fast. Thats why 2fort often works for starting a server, it allows all classes on low player counts (on high player counts its useless though).

If you want to force teamwork its often an objective that takes a long time (long caps like in gravelpit placed on a very balanced area).

However, only allowing teams with teamwork to win couse steamrolls. Thats never good.

I don't think you quite understand what I'm talking about here: this would be a map set up with basically two spawns, each one leading to a hallway that in turn leads to several separate rooms. Each room is configured so that it's optimal for a particular game- whether that's Cloak & Dagger Spies playing Marco Polo or a Demoman launching Bonk!ed Scouts for distance. You can pick any room you want, based on what sort of screwing around you want to do, and there can be people in more than one room at a time.

Then when people get tired of playing, they can (via consensus) move on to a different map.
 

Stormcaller3801

L5: Dapper Member
Jul 5, 2009
249
28
aaand that's it off the top of my head. Should work how you need.

Apologies for bringing this up again, but on the trigger_multiple covering the whole area, is that meant to encompass the entire map?

And for the logic_compare, what should the OnGreaterThan > do, if I want it to declare game over with winner declared based on point totals?