Quake Voting Booth v2.7 - Allows players to vote on game settings such
 as noexit and teamplay.

When a Quakematch is being played over ethernet by a group of friends or
coworkers on an office or school network, agreeing on settings generally
isn't that big of a problem. But when playing over the internet with 15
people you've never met in person, it's often difficult to agree on how
the server should be set up, especially since the server, being dedicated
(your server *is* dedicated *isn't it* ? ) can't have it's settings changed
by players. Enter Qvote. Just install this utility on your server (no, the
players don't have to have it) and the players will be able to decide
democratically how they want the server configured. So far the only topics
on the ballot are noexit and teamplay, but more are on the way (suggestions
welcome).

HOW TO USE QVOTE

  Server admins - Put this progs.dat in a subdirectory of your Quake
    directory (c:\quake\vote\progs.dat) and start quake with the command
    line option "-game vote" or whatever you called your subdirectory.
    If you need to recompile the progs.dat from source, see below.

  Players - From the console, type "voteexit" to vote for noexit = 0, or
    "votenoexit" for noexit = 1. "voteteams" votes for teamplay 1,
    "votenoteams" for teamplay 0. "votestats" shows the current voting
    status. You don't have to memorize these, however: just type "votehelp"
    at any time for a summary of these commands.

SERVER DEFAULTS

 Qvote 2.7 utilizes server specified defaults in a different manner than
previous versions. Players no longer automatically vote for the defaults on
server connect, as this was causing gameplay problems. Instead, these default
values for noexit and teamplay are used when not enough votes have yet been
registered to constitute a majority. Tie votes are now resolved simply by
leaving the setting at its current value. To change these defaults, you will
have to modify the constants "noexitdefault" and "teamplaydefault" in vote.qc
and then recompile the .qc files with Qcc. You can download and read
instructions for use of Qcc at http://www.stomped.com.

TEAMPLAY CVAR vs ACTUAL TEAMPLAY

 Keep in mind, the teamplay which you are voting on with Qvote does not
actually enforce teamplay, it just turns on the teamplay cvar, which really
only turns friendly fire on/off. If you have teamplay on, but everyone is a
different color, not much is going to happen, except that people who happen
to have the same color pants cannot damage each other. And even if you have
gotten everyone to switch to team colors, you don't necessarily need to have
the teamplay cvar on; personally, I like playing team games with teamplay set
to 0 : it adds an extra element of strategy to the game, in that you can't
just shoot first and ask questions later.

CHANGES SINCE 2.6

 I totally recoded the major algorithims, no longer basing counting off of
player names but off of their actual entities ( I finally figured out how
to do this.) Now players with the same name, and changing names durring the
game shouldn't cause problems. Also, looking through my old code, I noticed
some errors that seem to me like they should have kept the thing from working
at all, strange, I received alot of feedback, but nobody told me it didn't
work at all, which I now suspect. Anyway, it now *should* work.

CHANGES SINCE 2.2

 I finally started getting some user feedback on Qvote, and most of it was
negative. Up until now, I've been receiving feedback mostly from fellow
QuakeC coders commenting on my code, but not until recently did many servers
actually start using Qvote, and therefore I wasn't getting much input on
Qvote's interface and gameplay potential. Apparently the general consensus
is that in it's current form, Qvote was really getting in the way, not just
because of the info screens, but because of the automatic voting for defaults.
Apparently, in large games, the noexit and teamplay settings were constantly
getting set back and forth, and users were spending more time voting than
gibbing each other. So in 2.5 I have attempted to make Qvote much more
inobtrusive to gameplay. Autovoting has been nuked, and tie votes are resolved
by keeping the setting at whatever it currently is, not by returning to
deafult. And the command help display is no longer displayed every time you
die, only when you connect and if you type "votehelp" (I still put in a
reminder that "votehelp" shows commands each time a player dies, the reason
being I want it to be fair - If some of the players missed the server connect
message and don't know about voting then they don't have a say in anything,
which sucks. The new message, however, is only one line, so it should be
better. The reason I put in autovoting in the first place is because I didn't
want one person to constitute a majority simply because he was the only one
who had gotten around to voting. I've solved this in 2.5 by making a majority
mean not just a majority over the opposition, but over everyone on the server,
even those who haven't voted. If this has confused you, forget about it, just
try out the new version, and I guarantee you it won't get in the way as much
as previous versions.

BUGS/CAVEATS

 My other QuakeC patch, Blood!, which makes Quake slightly bloodier (although
realistically so, unlike the "violence" and "gore" patches, which are funny,
but get old quick and take away from the suspension of disbelief) is included
in this patch ( I didn't feel like editing it out of weapons.qc, if you want
to, go ahead. )
 Teamplay can only be voted to 1 or 0, so it won't work with enhanced teamplay
patches which are activated by "teamplay x". Working on this.

NOTE TO SERVER OPS

 If you're running a dedicated, up-most-of-the-time quakeserver and are
using this patch on it, let me know; if I don't get any feedback I'll assume
nobody's using it and quit working on it.

THINGS TO LOOK FOR IN VERSION 3

 More voting topics, such as : gravity, go to a specific map (not sure if
this will be possible), kicking players who are being annoying (same here).
Suggestions welcome.

 I recently saw (but haven't tried) a patch which forces teamplay, killing
people who aren't obeying team rules. Sounds pretty cool; with the author's
permission, I might include his code, enableable/disableable by user voting.

LEGAL CRAP

 This patch may be freely distributed as long as no charge is made for it,
(including CDROM or other for-profit compilation distributions) or for use of
a server on which it is being run (which I don't think is legal anyway). I'd
really rather you didn't use this as a base for your own patch, but I really
can't stop you without going through even more legal BS, so go ahead if you
feel the need. This is freeware, so no registration fee is required for it's
use, but if you'd like to make a donation to a poor boy with a 486/66 8mb 14.4
machine, email me, I will be forever in your debt (I will also have more time
and motivation to make more cool patches for you.)

Kevin Bowen
Lunatik
flame@pacbell.net
