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