- Expert Quake Version 1.0 - ---------------- Expert Quake Info ---------------- Expert Quake is a QW mod originally based on JTEAM, or "The Complete Enhanced Teamplay" by John Spickes. The goal of the Expert Quake patch is to turn Quake into the skillful combat game it can be, rather than the item fetching game it is. To that end, many previously unbalanced items in the game have been evened out. In Expert Quake, combatants are almost always even, and skill and teamwork are the only things that can make the difference in the outcome of combat. For a fuller discussion of the design behind Expert Quake, see the Designer's Guide to Multiplayer Gameplay at http://www.myrkul.org/qgame.html Expert Quake supports all the teamplay options of JTEAM, and all deathmatch enhancing behaviors can also be turned on and off individually. The Expert Team is: ------------------- Charles "Myrkul" Kendrick (myrkul@myrkul.org) DaScott (dascott@infi.net) Nelson "TheGriffin" Hicks (thegriffin@usa.net) Micheal "Smeagol" Buttrey Thanks go to: ------------- John "Guru" Spickes of course, for writing JTEAM and writing it well Mr. Peach, Spacetec Quake server admin, who came up with the idea behind the Expert Hook and implemented it on his server. All contributors to ThreeWave CTF for some of the CTF code, the custom models and sounds for the hook and flags, and the custom CTF levels. --------------------------- Basic Configuration and Use --------------------------- Unzip the contents of the zip file into your Quake directory, or if you have already unzipped the file, move the resulting folder called "expert" into your Quake directory. In the folder "expert", there is a batch file called "expert.bat" which can be run from your Quake directory. This batch file will start up a server using Expert Quake in teamplay mode with various options set. There are also a multitude of .cfg files in the "expert" folder, which can be used to start up servers with various options set. These config files are documented below, as are all the options you could possibly set if you made your own config file. If you already confused at this point, please DO NOT email the authors. There are instructions for basic server configuration posted several places on the web; a good place to start would be http://www.bluesnews.com/ If you run an Expert Quake server, please drop us a line! We try to keep track of the servers running our patch so that we can point to them from web pages. -------------------------------- Configuration for Veteran Admins *** IMPORTANT *** -------------------------------- Expert Quake makes use of the the same custom models and sounds for the hook as are used by Threewave CTF. If you plan to enable the grappling hook, you may want to set your servers "gamedir" to "ctf" rather than "expert", so that clients who have the client packs for Threewave CTF will not have to download the custom hook. This release of Expert Quake is also a beta of Expert CTF (same codebase). To enable Expert CTF, use the "ectf.cfg" file, set the gamedir to "ctf", and make sure you have all the server-side Threewave 3.0 and 4.0 level packs, along with all the id levels (e*m* dm*) with CTF entities. You will also need one additional sound.. sound/expert/flagwave.wav .. which is included with Expert Quake. -------------- Expert Configs -------------- The following .cfg files are provided with Expert Quake. To use any of these, either replace "ext.cfg" in the provided "expert.bat" batch file to the config you want to use, or whip up your own batch file. exdm.cfg----------------10 player enhanced deathmatch All deathmatch behavior set: item behavior similar to "deathmatch 3" mode from id, all balancing options and tweaks are active, Expert Hook enabled. This is the recommended Deathmatch mode. exdmi.cfg---------------10 player enhanced deathmatch, no LoadMod As exdm.cfg, but extra health and armor will not be added to the level. exdmh.cfg---------------10 player enhanced deathmatch, no Expert Hook As exdm.cfg, Expert Hook disabled. ext.cfg-----------------9 player, 3 team enforced teamplay As exdm.cfg, but teamplay enabled, with 3 teams of 3 players. Players can switch teams but only to a team with less players. This is the recommended teamplay mode. The included batch file uses this mode. exti.cfg----------------9 player, 3 team enforced teamplay, no LoadMod As ext.cfg, but extra health and armor will not be added to the level. exth.cfg----------------9 player, 3 team enforced teamplay, no Expert Hook As ext.cfg, Expert Hook disabled. It's easy to whip up your own configs for Expert Quake. The following section describes the options that are available, but to give a hint, you can quite easily enable tweaks like chain-suicide prevention, enable the Expert Hook, perhaps a few other features that tickle your fancy, and leave everything else untouched. If you are a programmer, or if you just know enough to twiddle some constants and recompile, be sure to check the last section. Expert Quake is well written and well commented code that is very easy to expand upon or modify. Write something cool.. we'd love to integrate your code into the next release. -------------------- Custom Configuration -------------------- Expert Quake is a highly configurable mod, with most features fully customizable from the console. Two internal variables (deathmatch and teamplay) and a serverinfo variable called "loadmod" are used to turn various options on and off. All these variables are bitfields, with each bit toggling an associated feature. ------------------------------ Deathmatch Feature Description ------------------------------ Deathmatch features enhance combat by balancing the game, and are meant to be used in both Deathmatch and Teamplay modes. The bits controlling deathmatch features are as follows: 1 Items Respawn When turned on, health and ammo will respawn after being collected. When off, health and ammo can be collected only once. 2 Weapons Stay (persistent weapons) When on, weapons remain in place after being collected, and cannot be picked up multiple times to stockpile ammo. When off, weapons respawn similarly to any other item, and can be grabbed multiple times. 4 Balanced Weapons All weapons are "equalized" so that every weapon is of roughly equal power, although each weapon is more or less effective in different combat circumstances. This adds more variety to weapon use, reduces weapon camping, and helps make skill determine combat outcome. Other assorted effects, see description below for more details. 8 Balanced Items The amount of armor given for each type is inversely proportional to the damage absorption. For instance, red armor has the highest absorption, and so the least amount of armor. Any armor remaining on dead players ends up in their backpacks, and supershotguns are given on spawn. See description below for more details. 16 Expert Hook Players are given a hook on spawn, which can be used by binding a key to the alias "+hook". Holding the button down extends the hook, while releasing the button releases the hook. No weapon switching is required, the Expert Hook fires with any weapon out and that weapon can be fired simultaneously. The hook bounces off other players, and can only hold to a surface for a little over 2 seconds before retracting. Can be used simultaneously with other weapons. If a player attempts to activate the hook through one of the methods used to activate the old-style hook, such as by sending impulse 22 or by sending impulse 1 with the axe selected, a message will be printed informing the player how to use the new hook. 32 Randomize Powerups Powerups, specifically the Quad Damage, Pentagram of Protection, and Ring of Invisibility, will randomly respawn as a different powerup. The probability of the Quad damage spawning is 40%, the Ring is 40%, and the Pentagram is 20%. This is for preventing optimal paths through levels, timed to pick up powerups. 64 Alternate Powerups An alternate set of powerups will be used. See below. 128 Expert Levels A loop of levels hand-selected from the four original Quake episodes and the DM levels will run. The list of maps can be changed in the file dm.qc (the DMNextLevel() function contains the listing). 256 Frag Minimum Players who attempt to exit the level with less than a certain number of frags are killed. 512 Armor Color Shirt colors will be forced to match the type of armor a player is wearing. 1024 Swinging Hook Changes the grappling hook into a swinging hook. This version of the swinging hook uses no extra impulses, and a simple physical model of acceleration toward the hook's anchor point. 2048 Performance Changes to improve the rendering performance on clients (not network performance). All flickering lights in a level are changed to non-flickering lights of medium brightness to reduce surface redraw. 4096 Realistic Physics More realistic physics are used, such as adding a player's velocity to the velocity of fired projectiles. This has fairly drastic effects that may be difficult to get used to. Recommended only when players are very aware that the physics have been are altered, such as in a LAN game. Balanced Weapons and Items Balanced weapons alters both the damage and armor-puncturing qualities of each weapon to try and even up the gaps in usefulness between each. - Modified weapon damages (especially explosives and axe) - Armor penetration for nails, buckshot and lightning - 50 Green armor given out on spawn (respawning players aren't as easy a target) - Super NailGun takes one nail per shot - Normal NailGun nails have higher airspeed - Less resistance to splash damage from one's own explosions - Less kickback on heavy weapons fire, but still full rocket jump height - Reduced lightning gun discharge damage Balanced items alters items other than weapons (such as armor) to achieve balance. - Armors with higher absorption have less amount: o Red armor 60% absorption, 100 amount o Yellow armor 45% absorption, 130 amount o Green armor 30% absorption, 160 amount - Remaining armor is placed in backpacks on death - Health gained from the 100 Health rots away at double the rate - Players are given the Super Shotgun on spawn in addition to the normal shotgun - Quad and Pentagram make sound periodically so they can be recognized Alternate Powerups are: o Quad becomes the Glyph of the Lich: you take back as health 1/2 of the health damage you do to other players. o Pentagram becomes the Fiend Glide: ability to jump like a fiend o Ring becomes the Ring of Will: weapon hits don't push you around None of the alternate powerups cause the user to glow. The alternate powerups are less inherently powerful in order to prevent them becoming focal points in a deathmatch, and less dangerous to other players so they don't require the warning glow. ---------------------------- Teamplay Feature Description ---------------------------- Teamplay features control team setup and enforcement, and how teammates can interact with each other. The bits controlling teamplay features are as follows: 1 Health Protect Players receive no health damage from teammates' attacks. 2 Armor Protect Players receive no armor damage from teammates' attacks. 4 Damage to Attacker A player who attacks his teammate will receive the same damage the teammate would have received, had he not been protected. 8 Frag Penalty Any player who kills his teammate will be penalized frags. The number of frags to penalize is adjustable by a simple edit in the teamplay.qc file. 16 Death Penalty Any player who kills his teammate will burst apart in a bloody mess. 32 Team Color Lock Players will only be allowed to be certain colors. Team colors can be specified for up to four teams in the teamplay.qc file. Players who have illegal colors when they enter will be put into the team with the fewest members. Any player who changes team (pants color) will be fragged and their frag count is reset to zero. 64 Static Teams Players will not be allowed to change teams. 128 Fair Teams Players are allowed to change to a team with fewer members than their current one. 256 Shirt Enforcement Player's shirt color must match pant color. 512 Drop Items Players will be allowed to drop ammo and weapons. IMPULSE 20 will drop a backpack and IMPULSE 21 will drop the current weapon. You can't drop the axe or single-shotgun. 1024 Boot Negs Boots players who get too many negative frags. Useful on servers that allow friendly fire with negative frags for killing teammates, to prevent server abuse. 2048 Friendly Fire Notification Players who shoot a teammate repeatedly will be informed that they are shooting a teammate. 4096 Team Score Printing The Team score, as the total number of frags for all players on each team, will be printed periodically, and will be the basis for fraglimit. This option is only valid with "Team Color Lock". --------------------------- LoadMod Feature Description --------------------------- LoadMod can be used to modify the items that appear on a level, including adding more items to the level. LoadMod options are set by defining a serverinfo variable "loadmod". For instance, placing the following in your server's .cfg file: serverinfo loadmod 17 .. will cause loadmod to be active, enabling the options listed below by 1 and 16. In the current release, LoadMod is severely under-utilized. LoadMod can do just about anything to the items that appear on a level, including, for instance, placing an entirely new kind of item evenly throughout the level (with minor code modification). The loadmod bits are as follows: 1 Quota Add Health and Armor are added dynamically to a level to meet the demand of the number of players allowed in the game. They will be spawned on top of other items as far from items of the same type as possible. 2 Quota Remove [NOT CURRENTLY IMPLEMENTED] Health and Armor are removed dynamically from a level where there are surpluses. They will be removed starting with those as close to other items of the same type as possible. This can have unexpected behavior on large maps with few players. 4 Redo Items [NOT CURRENTLY IMPLEMENTED] Health, Ammo, and Armor are completely replaced to redistribute these powerups amongst the map. 8 Remove Pentagram Removes any "Pentagram of Protection" artifacts from the current map. 16 Remove Ring Removes any "Ring of Invisibility" artifacts from the current map. (Useful for team games) 32 Remove Quad Removes any "Quad Damage" artifacts from the current map. ----------------- Selecting Options ----------------- To select multiple options, add the numbers of the options together. Examples: teamplay 96 Team Color Lock, Static Teams This results in players being automatically assigned to teams and being prevented from changing to other teams. teamplay 3 Health Protect, Armor Protect You can't hurt your teammates' health OR armor. teamplay 28 Mirror Damage, Frag Penalty, Death Penalty When you shoot your teammates, you take damage and so do they. If you kill a teammate, you'll take a frag penalty and you'll be killed. teamplay 120 Static Teams, Color Lock, Frag Penalty, Death Penalty ---------------- Conflicting Bits ---------------- Obviously, not all of the available options make sense together. Here is a listing of all conflicts between features, or features that nearly cancel each other's effect. Typically you don't want to use these together: Shirt Enforcement (teamplay) and Armor Color (deathmatch) Causes the shirt color to shift constantly between your armor color and your team color. Frag Penalty (teamplay) and Health Protect (teamplay) Death Penalty (teamplay) and Health Protect (teamplay) Other than telefrags, you won't be able to kill your teammate due to Health Protect. However, you probably _do_ want to set Frag Penalty with Health Protect, so that teammates can't get frags for telefragging each other. Static Teams (teamplay) and Team Color Lock **OFF** (teamplay) Players will end up stuck with whatever team they happened to be when they joined the server. Static Teams (teamplay) and Fair Teams (teamplay) Static teams overrides Fair Teams, so you won't be able to change teams. Period. Remove Powerup (loadmod) and Randomize Powerups (deathmatch) You can do some interesting things with combinations of "Remove Quad" (loadmod), "Remove Ring" (loadmod), "Remove Pentagrams" (loadmod), and "Randomize Powerups" (deathmatch). Essentially, any powerups you opt to remove will be gone, but the remaining powerups (if any) can still respawn as any other powerup, INCLUDING the ones you removed. Just be aware of this unusual condition. ------ Quirks ------ In the original QuakeWorld source, ammo respawns at different rates in "deathmatch 1" mode vs "deathmatch 3" mode. In this mod, ammo respawns at the faster rate whenever the Respawn Items bit is set. There is an engine-level bug in the current Quakeworld release (1.55 client) that causes a single "missile" (rocket, nail, grenade, or any other munition with hang time) to occasionally hit a target and do damage, and then somehow hit that target and do damage AGAIN before the missile is removed from the game. This is most obvious with rockets, but happens with other weapons as well. We've dubbed this bug the "Duplicate Missile Touch", and we have code in place to prevent more than one touch from counting. Take a close look at the "conflicting bits" listing above and be sure you know what you are doing before trying to use these features together. They can cause some REALLY bizarre effects if you don't. In order to change teams, players must attempt to change color. Attempting to change team name (by typing "team blah") will not have an effect, nor will attempting to change skin. -------- MOTD Use -------- Most of the MOTD functionality resides in motd.qc. If you want to change your MOTD, you can modify motd.qc. It's a simple matter of changing the print statements to say what you want. The MOTD is printed for players when they first join the server and after every level change. ------------ Future Plans ------------ Imagine CTF with the Expert Hook (optional), better balance, better scoring, and a hand-picked level set! This is coming soon. --------------- For Programmers --------------- Expert Quake adds several source files to the standard distribution: teamplay.qc All the team setup and enforcement code. dm.qc All the deathmatch enhancement code. loadmod.qc All the code for LoadMod, which can modify the list of items in a level at load time, fulfilling quotas for types of items, disabling certain items, or anything else you can think to use the code for. grapple.qc Grappling hook functions. [BETA CODE FILES] ctf.qc CTF control code. status.qc Status bar for CTF. ident.qc Player identify function, part of the status bar for CTF. Wherever possible, we have tried to minimize the changes to the original codebase (thank god for John Spickes starting this trend with JTEAM). For instance, LoadMod is only dependant upon a single small change in world.qc, so you could easily add it to another mod (if you do so please let us know). Wherever significant behavior needed to be added, there are calls out to functions defined in one of the added source files. When searching for changes, use these keys: Expert Should hit all Expert Quake related code in standard distribution files. DM_ Anything related to the "deathmatch" bitvector. TEAM_ Anything related to the "teamplay" bitvector The codebase for Expert Quake has been carefully factored and commented for easy modification and porting. If you make a good modification to Expert Quake, that is, a modification that adds to the game without destroying balance, we'd love to include it. Expert Quake is also the ideal base on which to build your own custom mods, whether the focus of the mod is balance or not. -------------------- Source Code Settings -------------------- Besides the teamplay, deathmatch and loadmod settings, there are some other options that can be modified by editing the source. These options are constants at the beginnings of teamplay.qc, dm.qc, and loadmod.qc and are marked so you can find them. One such option specifies the default frag penalty. This is the number of frags that will be deducted for killing a teammate when the Frag Penalty setting is enabled. There are four constants in teamplay.qc which allow configuration of the color that will be used for teams. Up to four teams can be enabled, so there are four colors: float COLOR1 = 4; // red float COLOR2 = 13; // blue float COLOR3 = 11; // green float COLOR4 = 12; // yellow By default, the server will enforce that all players are wearing skins that allow the players to be told apart by color. Alternately, teams can be told apart by the skin they are wearing. To set this up, go into teamplay.qc and edit the skin names in the function TeamSkinForTeam(). You may also want to edit the names of the teams in TeamNameForTeam(). No understanding of the code is required. The file dm.qc contains the damages of the equalized weapons and stats for the modified armors, splash damage, weapon kickback, and suicide delay. These constants are marked in dm.qc by the comment /** MODIFIABLE CONSTANTS **/ The file loadmod.qc contains the quotas for armor, health, and various ammos. The numbers are a per-player fraction. Again, look for the comment /** MODIFIABLE CONSTANTS **/ If you change any of the constant values, you must recompile before your changes will take effect.