                                 QTeam 1.50


Author       : Gary Griggs (ggriggs@gis.net)
Release Date : 9/17/96
Description  : QTeam is the most advanced teamplay addon available for 
               Quake! It provides a host of new and exciting capabilities
               such as dynamic team scoring, capture the flag and tag team 
               play, friendly fire penalties, restricted team colors, a 
               programming interface for map designers, and Ghost Morons
               for controlled player entry into the game.

               The QTeam 1.50 release comes with two superb maps by Giggler,
               QTAG.BSP for tag play (similar to U_DTAG of Doom2), and QFLAG
               for capture the flag play. Please refer to the documentation
               for those maps found in the files QFLAG.TXT and QTAG.TXT. 
               
               The programming interface allows map designers to support
               the new capture the flag and tag team modes of play, giving
               map designers full control over many aspects of these new 
               types of play. The two excellent maps included with this
               release only demonstrate a fraction of what can be
               accomplished with the interface. 

Other Works  : The Inner Circle Trinket (Latest release as of 9/16/96 is
               1.01, archive name is ICTRK101.ZIP)
     
Details:

   * Installing the patch

     To install the code create a directory named qteam under the main quake
     directory and copy the progs.dat from the QTeam archive there. The patch
     only needs to be installed on the server side; none of the client 
     machines need the patch installed.

   * Starting QTeam play

     If a map supports capture the flag or tag mode extensions of QTeam, 
     those features will be invoked automatically when starting quake with
     the -game qteam option, and running the map. If the map provides
     instructions for starting the game please follow those directions.

     The instructions below show how to enable the general QTeam options
     for Ghost Morons, dynamic team scoring, friendly fire penalties, and
     restricted team colors for generic maps.

     1) Set teamplay=2  
     2) Set temp1 to the maximum number of teams.
        The default value is 2 and the maximum is 8.
     3) Start a new deathmatch game

     The maximum number of teams and teamplay mode cannot be changed 
     during a game. 

     If teamplay is not 2 or the game is not set for deathmatch, none
     of the QTeam enhancements will be active.

     Here's an example of how a QTeam game can be started from the command
     prompt. This example will start up a dedicated server that runs 
     the QTeam enhancements, allows a maximum of 16 players, allows a 
     maximum of 4 teams, and uses old deathmatch mode.

          quake -dedicated 16 -game qteam +hostname "QTeam" +deathmatch 2 
             +teamplay 2 +temp1 4 +map e1m1


   * Ghost Morons - The limbo state
 
     Players initially start out as Ghost Morons, a limbo state in which they
     cannot harm other players, cannot be harmed, cannot pick up objects,
     float around instead of normal walking/running, and  cannot open doors
     or pass through teleporters. Ghost Morons get fragged every thirty
     seconds if they don't create or join a team. Ghost Morons appear in
     white but they are not considered a team.

     Ghost Morons are especially useful in tag and capture the flag modes,
     where having balanced teams and the same start time is critical for 
     fair gameplay. To do this, allow players to enter the game and have 
     them remain as Ghost Morons until all players have joined the game. At
     that point the teams can be created. 

   * Creating a new team

     Players create a new team by typing in the command create_team from the
     console or using the color command to select a color not in use.  
     the create_team command is preferred however since color selection for
     new teams is automatically chosen based on available colors and a color
     ranking. This allows for teams that stand out as much as possible.

   * Joining an existing team

     Players join an existing team by typing one of the following commands:
          join_red - Join the red team
          join_blue - Join the blue team
          join_yellow - Join the yellow team
          join_green - Join the green team
          join_purple - Join the purple team
          join_brown - Join the brown team
          join_gold - Join the gold team
          join_lblue - Join the light blue team
 
     The color command can also be used if the color specified is that of an
     existing team. The join_* commands are the recommended method of joining
     a team.

   * Scoring

     Team scores are displayed on the status bar and in the rankings screen. 
     Due to current deficiencies in the interface to or this programmer's 
     current knowledge of the Quake engine, there are some oddities in the
     way team scores are displayed. Only one player per team maintains the
     team score and all other players on the team display -99.

     Players lose their individual frags when they change teams. The new team 
     does not incorporate the new player's old score but the old team does 
     have that player's individual frag count removed. This means the old
     team's score may remain the same (if old player's individual score was
     0), increase (if old player's individual score was negative), or
     decrease (if old player's individual score was positive). The individual
     frag count for a player is displayed when he/she changes teams.

     Teams lose a frag when a team member is killed by friendly fire. The 
     killer's individual frag count is decreased by one.

     Individual scores for all players in the game (this does not include
     Ghost Morons) can be viewed by using the alias dump_iscores. 

   * Using fraglimit to end the game 
 
     The game will end if fraglimit is set and the team reaches the limit. 
     One player's individual count may exceed the limit without the game
     ending if other team member's individual score is negative thus driving
     down the team total below fraglimit.

Programming maps for QTeam :

   Defining global game parameters & game info :

     The following tags belong in the worldspawn section of your map file.

     qtmversion
       This defines the version of QTeam for which a map was designed. This 
       will allow all future versions of QTeam to continue working correctly
       with all maps.

     qtmgame
       This defines all the global gaming parameters for a non-frag central 
       game. 

       bits 0-6   = fraglimit used in game modes 1, 3, 4
                    If 0, game will not end because of the score
                    The fraglimit can be overridden using at the command line
                       or console, using the fraglimit variable.
       bit  7     = alt dm (0), old dm (1)
       bits 8-11  = Maximum # teams, 0 = no teams
       bits 12-15 = Game Type/Respawn type for score objects

           0 = Immediate score on score object pickup
               Objects use qtmrespawn to determine their respawn time
               Game ends at fraglimit, if fraglimit > 0

           1 = Immediate score on score object pickup
               Objects don't respawn
               Game ends when all objects retrieved

           2 = Objects picked up must be returned to a base
               Objects respawn only if the player carrying them dies but
                  not if the objects have been successfully returned to
                  the base. 
               Game ends when all the objects have been retrieved

           3 = Objects picked up must be returned to a base
               Objects use qtmrespawn to determine their respawn time
               Game ends at fraglimit, if fraglimit > 0

           4 = Objects picked up must be returned to a base
               Objects respawn when player carrying them returns them to 
                  the base or the player dies.
               Game ends at fraglimit, if fraglimit > 0

           All objects retrieved details: If objects are allocated to a team
           then the team has to retrieve all their objects. If scoring 
           objects are open (not tagged for specific team) then all the
           objects need to be retrieved. If there is a mix then all team
           objects must be retrieved as well as all open objects (which can
           be retrieved by any team).

     qtmintro1 ... qtmintro10
       These messages will display when a client first connects with the
       server. The messages are centerprinted and there is a two second 
       interval between each message.

     qtmdamageadj
       A multiplier that adjusts the damage for acid or slime. Fudging the
       damage is useful to ensure players without an environmental biosuit
       cannot reach a scoring object. Reminder: The biosuit does not fully
       protect player from lava but does protect fully from slime. 

       eg. A value of .33 does one-third the damage of regular slime or lava
           A value of 4   does four times damage of regular slime or lava
  
   Defining scoring object properties :

     The score object has a classname of item_score and supports the
     following tags. If the frags tag is missing then the object is worth one
     point. If the team tag is missing, the object can be picked up by
     any team. If the game mode specifies that objects respawn according to
     the qtmrespawn tag and this tag is not specified then the respawn time
     will be set at 5 seconds. Each map can support 1 or more scoring objects
     and they each can have different properties. Also, the number of scoring
     objects per team is not limited to one.

     team
       Team that touches this entity gets a point. Team = Color number + 1.
       No team tag or team = 0 means that any team can pick up the scoring
       object. See Team Color section below for more details.

     frags
       Number of points this entity is worth
 
     qtmrespawn
       Sets the respawn time of the object if the game play allows for
       respawning objects and the respawn countdown is supposed to occur when
       the object is picked up and not an immediate respawn in flag mode if
       the carrier dies or the flag is returned to the base. The granularity 
       of the respawn timer is 5 seconds. 

       bit  0    = Random? 0=No, 1=Yes
       bits 1-6  = Respawn time, or if random then beginning of range
                   Value must be >= 1
       bits 7-12 = Respawn time, or if random then end of range
                   Value must be >= 1

     model
       Chooses the model. You can use a built in model or supply
       your own along with map. The default model is progs/end1.mdl

     skin
       Chooses the skin for specified model. For example, if you use
       "model" "progs/armor.mdl" to select the armor model, then
       "skin" "2" will make it the red armor.

     noise
       Chooses the sound to be played on pickup. You can use a built in sound
       or supply your own with map. The default sound is misc/runekey.wav

   Defining the base for flag games :
	
     You need to define an entity with classname trigger_multiple and use
     the qtmmisc tag to mark it as a base when the map is for Capture the
     Flag type play.

     team
       Team that touches this entity gets a point.	Team = Color number + 1.
       No team tag or team = 0 means that any team can bring their flags 
       back to this base. See Team Color section below for more details.

     qtmmisc
       bit 0 = Must be set to 1 for a base

   Defining other objects for QTeam play :
       The team tag is supported for weapons, powerups, and
       info_player_deathmatch entities.
  
       weapons, powerups : If the team tag is specified, only players on the
          specified team can pick up the object.
    
       info_player_deathmatch : If the team tag is specified, only players
          on the specified team will respawn at this spot. The map maker must
          ensure that is at least one respawn spot for each team up to the 
          maximum number of teams allowed.

   Team Colors :

     Although Quake has built in support for 13 different colors which can be
     selected for shirts and pants, QTeam supports up to eight teams only and
     enforces team colors. QTeam teams are only solid colors and team colors
     are selected in a builtin order. This means that in a non-frag game
     where their are objects and bases specific to teams, and those items
     need to be marked by a color, you need to be aware of the order. It is
     as follows:

        Rank    Color #    Desciprition     

        1       4          Red
        2       13         Blue
        3       12         Yellow
        4       3          Green
        5       1          Brown
        6       8          Purple
        7       2          Light Blue
        8       5          Gold

Known problems :

     * Everyone reverts to Ghost Morons when the level changes.
     * Ghost Morons can telefrag players but noone receives points for this.
       Bad habits should not be rewarded!

Credits :
	QA    - Thanks to duke, metal, giggler, ern2, and dagger
	Bugs  - Mine, all mine!

Reporting problems or requesting enhancements :

	Please contact me via email at ggriggs@gis.net 




 
