Title : Threewave Capture Filename : 3wave32.zip Version : 3.20 Date : 96-11-21 Author : Dave 'Zoid' Kirsch Email : zoid@threewave.com Credits : John Spickes aka Guru for JTEAM Aegis - moral support and general overexcited Quake guy Beowulf - my cat who keeps getting me fragged when he jumps on my keyboard or starts chasing my mouse "Mike" for Morning Star (Hook) Tom "Bjorn" Klok for original ideas such as the runes and capture games, various suggestions and bug fixes. Check his server at quake.mindlink.net, 204.174.17.22 Kevin "Trojan[CampQ]" Hodgson for modifing e4m5. Byron "Wonko" Long for adding Flag Status reports via impulse 23. Michael "McBain" Peckman for the PreviousWeaponCommand (impulse 69) The level editing team for the 3.0 custom release: ctf1 McKinley Base Dave 'Zoid' Kirsch ctf2 The Kiln Brian Wight ctf3 DySpHoRiA Chris 'b0rt' Thibodeaux ctf4 The Forgotten Mines Brian Wight ctf5 Da Ancient War Grounds Matthew 'DaBug' Hooper ctf6 Vertigo Dale 'Midiguy' B. ctf7 Tale of Two Cities Jamie Mactaggart ctf8 The StrongBox Brent '[Drizzt]' Mcleod The custom Skin man: Ryan 'Grey_Ghost' Lacouture +---------- The ThreeWave Web Dudes ----------+ | Blake 'Coder' Winton | | Synthesizer Punk | +---------------------------------------------+ - And Special Thanks To - Brian 'Whaleboy' Cozzens - of - QuakeX The Quake Expansion Group http://www.planetquake.com/quakex/ For his work on the Team Logo textures And the Flag models Type of Mod ----------- Quake C : yes Sound : yes MDL : yes Format of QuakeC ---------------- unified diff : yes context diff : no .qc files : yes progs.dat : yes QUICKSTART ---------- 1. This patch supports serveral modes of operating all related to Capture the Flag. It can also provide an enhanced form of normal DeathMatch as well. In the default configuration, it is set up for using the custom CTF maps 50% of the time and the specially modify id levels the other 50%. In order to use the default configuration, you must perform steps 6 through 10 in order to modify the existing id levels for CTF support. NOTE: For custom CTF support, you need this server side package AND the client side one for the special levels. In other words, to install this on a server you need 3wave30.zip and 3wctfc30.zip (server side and client side). See step 5 for more information. Even though this is a Quickstart, I really, really recommend one reads this entire file. 2. This file assumes you are running Linux. Windows 95 or NT operators will have to replace the / characters with backslash (\) and stuff like xquake with q95.bat or winded.exe. Major differences will be noted. 3. Go into your central Quake directory and make a subdirectory called "ctf" cd quake mkdir ctf 4. Unzip this file into that directory (pkunzip users, make sure you use -d). You should have progs.dat, server.txt (this file), a subdirectory called src that contains the Quake-C source, a subdirectory called maps that contains several *.ent files for adding CTF support to id's levels and autoexec.cfg (load time server settings). 5. Download the client patch (3wctfc30.zip) and unzip it into this directory as well. It should add pak0.pak and readme.txt. DO NOT OVERWRITE YOUR EXISTING pak0.pak FILE IN THE id1 DIRECTORY. 6. Steps 7 through 10 are only needed if you are going to support id's levels. If you are going only use the custom levels, set the temp1 variable to 100 in the autoexec.cfg file and skip to step 11. 7. Unpack the pak0.pak and pak1.pak files from the id1 subdirectory. Linux users can use ftp://ftp.cdrom.com/pub/quake/utils/bsp_pak_tools/wreckdum.tar.gz and Windows 95/NT users can use ftp://ftp.cdrom.com/pub/quake/utils/bsp_pak_tools/winpak12.zip [Be certain to check for newer versions there as well]. 8. Copy the *.bsp files you extracted from id's pak0.pak and pak1.pak in step 7 to quake/ctf/maps: Linux: cp quake/id1/maps/*.bsp quake/ctf/maps DOS/Win: copy \quake\id1\maps\*.bsp \quake\ctf\maps 9. Get a copy of qbsp in order to modify the id's bsp files that you copied in step 8 for CTF support. Win95/NT users can get qbsp.exe from ftp://ftp.idsoftware.com/idstuff/source/qutils.zip. Linux users can look around or email me for a qbsp Linux binary I compiled myself. 10. Make sure that qbsp is in your path, then: Windows 95/NT users should do this following: cd \quake\ctf\maps dobsp.bat Linux users should do this: cd quake/ctf/maps sh dobsp.sh This will use qbsp to modify the *.bsp files you cpied in step 8 with the *.ent files that come with the server kit. It shouldn't take more than a minute to do them all. [NOTE: This would be a bit easier if I could distribute the already modified bsp files, but id's licensing does not permit that. I emailed Jay Wilbur (the biz guy) about this and his response was: There is no problem in what you intend to do if the file you intend to distribute is nothing more then a glorified text file that registered server running users use to modify their maps. So that's the official party line]. 11. Load the autoexec.cfg file in the ctf directory into your favorite text editor (NOTE to Win95/NT users. Notepad will barf on this file because it is in Unix text format. Use the DOS based EDIT to work on it). The default one looks like this: sys_ticrate 0.1 teamplay 995 hostname Noname-CTF timelimit 35 fraglimit 100 noexit 1 pausable 0 map ctf1 temp1 50 Detailed description follows: sys_ticrate 0.1 This sets the update frequency of the server to remote players. The default is 0.05. Modem players will be a lot happier if its set to 0.1 teamplay 995 The teamplay variable has been overloaded a lot. It's a set of bit flags that indicate the team configuration options. See the section on the teamplay variable below. Essentially, you figure out which options you want enabled, add them all together and set the teamplay variable to that value. A significant value added to this is 512: it controls whether the custom CTF stuff is enabled or not. If it is not enabled, your clients do not have to download any files to play on the server. If it is, they have to download the special client pak from the ThreeWave home page at http://quake.threewave.com/ hostname Noname-CTF This is the hostname of your Quake server that people see when they query it. I recommend you use something that identifies it as your server. It is best to leave CTF in the title so people know your server is running CTF. timelimit 35 If no one gets to the fraglimit in 35 minutes, change levels anyway. fraglimit 100 Change levels when someone gets to 100 frags. noexit 1 Exits on CTF really really, don't make sense. pausable 0 Stop those annoying people from playing pause games. map ctf1 Start on custom map 1. If you aren't using custom maps, change this to e1m1 temp1 50 This is new in 3.0. 50 indicates that 50% of the time, select a CTF level as the next level or and id level the remain 50%. If you set it to 100%, you will only get custom levels. If you set it to 0%, you get nothing but id levels. This is ignored if custom CTF is not enabled in the teamplay variable (value 512). 12. You will probably want to modify the message of the day displayed upon connection, or enable the remote adminstration functions in admin.qc. To do this, you must edit the files client.qc for the MOTD and admin.qc to enter an admin code. After you have made the changes, you must compile the Quake-C source. qcc comes with the qutils package mentioned in 9. Just run qcc in the quake/ctf/src directory. Assuming a succesful compile, copy the new progs.dat to quake/ctf. 13. Run the server. Linux: cd quake ./xquake -dedicated 16 -game ctf Windows 95/NT: cd \quake q95 -dedicated 16 -game ctf - or - cd \quake winded -dedicated 16 -game ctf 14. Enjoy! [What's new section moved near the end] ------------------------------------------------------------------------------ Description of the Modification ------------------------------- Teamplay (much of this documentation comes from John Spickes Complete Enhanced Teamplay Patches). The Complete Enhanced Teamplay is a QuakeC mod which is intended to provide a great deal of flexibility in teamplay settings. I've retained all of the original functionality of Quake v1.01 and my previous Enhanced Teamplay, and added many more features. My aim is to have lots of useful teamplay options which the server can select at will, while minimizing my modification to the original QuakeC code. The options included in this release are: * Players' health can be protected from friendly fire damage * Players' armor can be protected from friendly fire damage * Damage inflicted to teammates can be mirrored on the attacker * Frags can be deducted for the killing of teammates * Players can be killed for killing their teammates * Players can be required to use only colors specified by the server * Players can be prohibited from changing teams * Players can be allowed to drop ammo and weapons All these options can be turned on and off individually. Teamplay feature use: A lot of options can be configured with this mod. The majority of these options are configurable using the teamplay variable. This mod uses the teamplay variable as a bitfield, with each bit associated with a different teamplay option. The bits 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 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. 256 Capture the Flag This enables Capture the Flag support. 512 Custom Capture the Flag The enables the use of new sounds, models, maps and skins for Capture the Flag. If you enable this, your clients must download the CTF custom pak file and install it. Obviously, not all these options make sense together. teamplay 9 doesn't really make sense, because you couldn't ever kill a teammate, and thus you could never incur the one frag penalty. 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 not allowed to change 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 teamplay 355 Static Teams, Color Lock, Health Protect, Armour Protect, Capture the Flag teamplay 483 Static Teams, Color Lock, Health Protect, Armour Protect, Capture the Flag, Drop Items teamplay 419 Color Lock, Health Protect, Armour Protect, Capture the Flag, Drop Items teamplay 995 Static Teams, Color Lock, Health Protect, Armour Protect, Capture the Flag, CUSTOM Capture the Flag, Drop Items teamplay 931 Color Lock, Health Protect, Armour Protect, Capture the Flag, CUSTOM Capture the Flag, Drop Items [I use teamplay 995 on my server. You must have team color lock for capture the flag. Anything else is very confusing. Another common setting is 931, which is the same except players are allowed to switch between teams. -Zoid] Besides the teamplay setting, there are some other options that can be modified by editing the source. These options are constants at the beginning of teamplay.qc and are marked so you can find them. One option specifies the default frag penalty. This is the number of frags that will be deducted by the bit-field Frag Penalty setting. There are four constants in teamplay.qc which allow configuration of the teamlock settings. TEAM_COLOR1 thru TEAM_COLOR4 have values indicating a legal team color, or -1. A value of -1 indicates that this team is not used. Thus, the number of teams is adjustable from 1 to 4. Example: float TEAM_COLOR1 = 4; float TEAM_COLOR2 = 13; float TEAM_COLOR3 = -1; float TEAM_COLOR4 = -1; This setting indicates that there should be two teams. Team 1's color is red and team 2's color is blue. Teams 3 & 4 are not used and thus have a value of -1. NOTE: If you enable Capture the Flag, you MUST HAVE ONLY TWO TEAMS defined. TEAM_COLOR3 and TEAM_COLOR4 MUST be set to -1. If you don't, results are unpredictable. If you change any of the constant values, you must recompile before your changes will take effect. THE COMPLETE ENHANCED TEAMPLAY Programming by John Spickes aka Guru jspickes@eng.umd.edu [Please direct any comments about this package to *me*, Zoid at zoid@mindlink.net. Don't bug John about my mods]. Capture the Flag Capture the flag offers an exciting variation on team play. It gives meaning to base defense along with offensive positioning and strikes. The implementation is an extension of John Spickes JTEAM patches. The basic premise is: attack the enemy base, grab their flag than take it back to your base. In the variation I've written into Quake, you must touch your base flag when carrying the enemy flag in order to score. Map modifications have to be done in order to enable Capture the Flag play on a map. See the accompaning file capture.txt for information on how to modify maps for flag support. Rules: - Two sections of the map are designated as base encampments. - When you join the game (or enter the level) you are assigned to a team (Using John Spickes JTEAM patches, with many modifications). Changing teams may or may not be allowed depending on the setting of the teamplay variable. You are spawned at the base (this is were my map mods come in). If you die, you are not spawned at the base, but at one of the deathmatch start spots. This way, you don't kill a guy trying to get the flag at the base and he comes back to life immediately there. - The flags are based on the key models. If you pick up the enemy flag, you must touch your flag in order to win. Note that if you get back to the base, your flag might not be there if the other team has it! Get the rest of your team to go get their flag back! The player who touches his base flag when carrying the other team's gets 20 frags, and everyone on his team gets 10 frags. Also, when you get a flag, you have that nice glow around you (such as when you get the quad damage.) If you kill an opposing team player who has your flag, he drops it. If you touch your flag, it will teleport back to your base. - Since everyone starts at their base after level change, or joining the game, the team will have to work out who is going to go and try to get the enemy flag (offensive strike), and who will stay to defend. Yes, this is camping, but its camping with a cause! Remember, you can communicate only with teammates by using messagemode2. Put this in your id1\autoexec.cfg file bind r "messagemode2" When you hit "r", you will get the usually talk prompt, except your message will only go to your teammates. Runes The rune game (several functions near the end of items.qc). Runes are spawned randomly, one of each with an unique power. Currently there are four: - Earth (resistance, half damage) - Black (strength, double damage) - Hell (haste, double fire rate) - Elder (regeneration) When someone dies, the rune pops out and can be picked up. You can only carry one rune at a time. MOTD MOTD (Message of the day) function added. To change it edit client.qc and edit the text near the top. There are different messages for regular deathmatch, team mode and capture the flag mode. Suicide protection. A person can suicide four times, then can't suicide anymore. Resets after level change (there are legitmate reasons to suicide, but rarely more than four times in a level). Telefrag Delay When telefragged, the person who was killed stays dead for two to five seconds. This is needed to get rid of the "frag snowball" effect one sees at the beginning of a new level, when 16 players try to fit into five deathmatch spots. The telefrags would snowball and eventually crash the server. With this delay, its eliminated. Server Logging Server logging. This is really useful in for a Linux server, since I save the log files. Reports on why a client connects, how they died, etc. This is still being fine tuned. Windows 95/NT server operators: use the -condebug Quake command line paramter to dump the log to a file. Grappling Hook New weapon added. "Mike" Morning Star, renamed to grappling hook. Changed to use existing models (vore ball for hook, spikes for the chain links). This weapon lets you hook the ceiling and get pulled toward it (think of Batman's grapple in the movies). You can also hang from the ceiling and snipe at people. Don't worry, its doesn't make camping any more effective, as a rocket at the ceiling usually deals with anyone handing around. :) IMPULSE 22 or select axe twice. Redundant Message Removal Removed redundant messages such as "You got the shells" or "You got the armor." This was just cluttering up the message stream and isn't needed since pickups are already signified by a flash and an audio cue. What's new in 3.20 ------------------ - Flag now appears on the flag carrier. This looks very cool. - Expert CTF patch by Chrles Kendrick . This adds stuff such as capture assists, bonuses for flag and flag carrier defense. Gives credit to the team members that work together in getting and protecting the flags. What's new in 3.00 ------------------ Custom Capture the Flag! What's new in 2.51 ------------------ - Oops. Fixed a bug where the flag dropped by fragging an enemy carrier would fall through the floor has been fixed. I hate it when that happens. What's new in 2.50 ------------------ This is the last release before the custom stuff will be the standard. This should hold you over until the custom stuff is finished and ready to go soon. I know you are all dying to see the cool flag models, but just hold your horses. It'll be out soon. - Remote Adminstration There is a new remote adminstration function. It is enabled by sending three 'secret' impulses in a specific order. BY DEFAULT ADMIN ACCESS IS DISABLED. In order to enable it, edit the file admin.qc to enter a password impulse sequence and recompile with qcc. Currently, the admin functions are a simple remote client kick, and the ability to change someone from one team to another. Please read admin.qc for more details. - Version number is now printed upon connect - Flamethrower removed. Main reason was it was mostly useless. I've put a lot of consideration about adding weapon patches to the ThreeWave CTF pack. My conclusion (with the exception of the hook) is that they don't belong there. The ThreeWave mods is about teamplay and fun. It's not about way cool weapon patches. Server adminstrators are quite welcome to hack in other patches into the code if they wish. - New maps: e4m4, e4m5, e4m6, dm3 and dm6. Server operators by sure to copy over the new bsp files for this maps and run dobsp.bat Oh, e1m8 was modified to be more fair. - Better logging The server logging is now seperated by tabs. BE WARNED that the source contains embedded tabs in some strings now (mostly in log.qc); be careful with editors that strip out tabs. Real men who use vi will not have a problem. :) The logging can be parsed easy by programs such as perl or awk for statistic generation. If you want to turn off logging, comment out the bodies of the functions in log.qc and recompile. - Significant changes to the internal handling of team colors. Trying to change your team colors will instantly gib you, in both static color and non-static modes. The reason for this is before they could would just send the server a command to change color and the server would change your color back. People were constantly sending color commands repeatedly (a macro, causing lag, too) to appear as another color. In 2.3, you will be on the other "team" for a second cause the enemy team to not be able to damage you. Enough of that crap. Change colors and you get gibbed. Change colors five times and you get kicked from the server. Goodbye. - Proper messages for explaining why the losers suddenly gibbed when trying to change team colors. - Earth Rune This rune was changed so it only protects health. It no longer causes half damage to armour. So, the damage goes through your armor at full strength, then the remaining is halved and then your health is removed. A guy with the Earth Rune, 200% armor and a grenade launcher could literally go berzerk and cause lots of mayhem and not die! - McBain's Previous Weapon Impulse. Impulse 69 (seemed appropirate) will toggle between your last two weapons. Nice for switching to the RL and then switching back. Makes binding stuff like quick rocket keys very easy since you can just do: bind q "impulse 7;wait;+attack;wait;-attack;impulse 69" - Hook velocity lowered to 800 from 1000. - Various team bonus variables added to teamplay.qc. If you want to tune the CTF scoring on your server, just edit the TEAM_CAPTURE_..._BONUS variables in teamplay.qc and recompile. - Capture the Flag Status report from Wonko, Impulse 23. Very handy command Wonko gave to me. Impulse 23 will tell your the status of the flags: if they are at base, lying about, or who is carrying them. - Bug in the Impulse 21 for weapon drop where if you have a weapon from a previous level that doesn't exist on the current level (for example, the lightning gun going from a registered to a shareware level) and tried to drop it, the server would crash. - Impulse 11 server crash bug fix. What's new in 2.30 ------------------ - The team you are joined to upon connection is now printed in the MOTD. - Message changes: changed a lot of the messages printed to include the flag colour. Also changed much of the important text to the alternate color font. This makes it *much* easier to quickly scan the incoming messages and see what's going on. - New map e2m5: The Wizard's Manse. This level rocks for CTF play. The bases are pretty well balanced. NOTE TO ADMINS: Make sure you copy over the *.bsp files and use dobsp to modify the new maps included in this release. - Color switching cheating has been greatly reduced, if not removed. This is where the client would stuff a bunch of commands to change color while attacking. The color check is now done *before* attack checks so your color gets 'fixed' before you have a chance to hurt a (previous) teammate. Cheaters never prosper. Besides, stuffing tons of color commands causes lag. Excellent target for the new 1.06 ban command. - Bug in the sound generated in by the Earth Rune has been fixed. - Possible lag problem with the grappling hook has been greatly reduced. Turns out the think time on the chain links was 0.01, which is 100 times a second (ouch!). It's now 0.1 which cuts it in ten. - Sound changes for grappling hook: the sound when the hook makes contact with a wall is now the axe 'clang'. Makes it much more obvious someone is hooking and makes more sense as the hook embeds itself in the wall with a nice satisfying sound. Also, a small puff sound [Hell Knight missile fire] is played on launching the grapple. - Fixed it so that if you pick up a weapon while using the grapple, it is *not* made the new weapon. This was very annoying on levels such as e1m8 where you'd grapple yourself to a rocket launcher suddenly to have it as the selected weapon and you start immediately firing into a nearby wall and usually frag yourself. I'm sure many people will appreciate this fix. - Fixed it so that user dropped backpacks (impulse 20) don't immediately get picked up again by the same player. - Default autoexec.cfg changed to teamplay 483. This allows impulse 20 and 21 to drop backpacks or weapons to teammates. Very handy for helping out base defenders, "Get me some rockets!" - Scoring has changed. After a lot of testing, the following scoring values have been choosen as the defaults. Note that you can change them in teamplay.qc if you feel necessary. But they've been through a month of testing and are pretty balanced. The scores are [from teamplay.qc]: float TEAM_CAPTURE_CAPTURE_BONUS = 12; // what you get for capture float TEAM_CAPTURE_TEAM_BONUS = 12; // what your team gets for capture float TEAM_CAPTURE_RECOVERY_BONUS = 1; // what you get for recovery float TEAM_CAPTURE_FLAG_BONUS = 1; // what you get for picking up enemy flag float TEAM_CAPTURE_FRAG_CARRIER_BONUS = 3; // what you get for fragging //enemy flag carrier - Self dropped weapons via impulse 21 weren't being removed properly. - You can't drop a hook with impulse 21 (doing so would crash the server). - Fixed it so that if Static Teams is not enabled (players can changed teams) and someone changed teams while carrying a flag, the correct flag is dropped. Before, it would drop the other flag (possibly creating two flags for the team the player was originally on). Very messy. What's new in 2.20 ------------------ Well, the telefrag fixes Cash doesn't work the way I want it to. It causes repeated telefrags on the "last" spawn spot. The one from ServerModules was a lot nicer. I've put that one back in and removed Cash's code. Also, in 2.1 the server would crash (runaway loop error) if you loaded a map without flag support but TEAM_CAPTURE_FLAG was enabled. Fixed it where people could cheat if Static Teams was set (this is usually set like teamplay = 355). The player could change his color to the other team while touching his flag and he would pick the flag up (!!) then change back. 30 seconds later my SanityCheck routines we notice that there is no flag (must be at base or enemy player) and return it. This player could then capture his own flag. It was very ugly. This wasn't a problem if you didn't have static teams enabled (eg. teamplay 291), since players get gibbed if they change teams. If you don't have static teams, when a player changes teams and gets gibbed, the obituary messages is "Player changed teams" instead of the "bored with life". What's new in 2.10 ------------------ Ok, the code is now integrated with id's 1.06 Quake-C code. Minor fixes. Oh, at end of the level the team totals are counted up and then everyone's frag value is set to the team total. This way you cleary see which team won. Probably a few other fixes here and there. It's just better, ok? Copyright and Distribution Permissions -------------------------------------- Authors MAY use these modifications as a basis for other publically available work. ^^^^^^^^^^ Use this in a commercial endevour and become a friend of Satan. Talk to me first, ok? DISCLAIMER: Dave 'Zoid' Kirsch is not responsible for any harm or psychological affects, loss of sleep, fatigue or general irresponsibility from playing this patch. If you put this on a CD, you owe me three free copies of the CD. You also owe a free copy of the CD to all the contributed authors listed at the top of the document. At last count, that's ten CDs. You pay postage, too. Don't like this? Don't put it on a CD! If you take my work and rip my name off, you will burn in hell. Availability ------------ This modification is available from the following places: WWW : http://quake.threewave.com/