DROP DEAD v106b ADVANCED DEATHMATCH VARIATIONS FOR QUAKE By Walter Lord With Inspirations by Many PRELUDE: This is release eleven of a set of alternative Quake source devised to make deathmatch and teamplay more enjoyable. It will be updated with new features and will be recoded as dictated by each new version of Quake. This version should work fine with the 1.06 and previous releases of Quake. Future versions of this set of Quake source will have the following naming convention: DROPDEADqqqv.ZIP Where DD is the Drop Dead abbreviaion, qqq is the version of Quake for which it is coded, and v is the version of the source. The first release could have been aptly named DROPDEAD101A.ZIP, but I choose DROPDEAD.ZIP to better attract attention. A registered version of Quake is required along with the Quake C compiler. To use Drop Dead features, you must create the following directory structure: /QUAKE - The root Quake directory. /QUAKE/DD - The base directory for Drop Dead files. /QUAKE/DD/PROGS - The location of the all Quake and Drop Dead source. Copy all the Drop Dead source modules into the /QUAKE/DD/PROGS directory. Be sure to include the new .MDL files in this directory. Now compile the Quake source by typing QCCDOS or QCC (depending on whose Quake compiler you are using). Drop Dead should now be ready to go. Simply add "-game dd" to the command line when you run Quake (i.e. QUAKE -game dd). When running an internet server, I request that the server name include Drop Dead or DD to aid players in identifying use of this program. To report any bugs, make comments, or provide suggestions, please Email me at Lord@Brodart.com. HISTORY: As much as I love Quake, I was a little disappointed by its Deathmatch / Teamplay capabilities. Sure, you no longer get the lockups that were prevalent in Doom, but I missed the monsters in Deathmatch and found Teamplay allowed way too much cheating. I'm sick of some Joe belonging to the RED team temporarilly changing colors so he slip in amongst the ranks of the BLUE and then change back to RED and massacre the lot. Sure the carnage is neat, but the gameplay sucks! Then I recently came across some source written by Dennis Noordsij that offered skin textures for teamplay. It still linked each team to a color but definitely made it easier to tell friend from foe. Included amongst the textures are Duke 3d, Terminator, Stormtrooper, and about a dozen or so others. With keys linked to impulses, a player could select which texture he or she desired. Better yet, a player, without the source installed at his/her end, could still play but would only see the default Quake Guy. I took off with this concept and have added the features listed below. PREDEFINED LOCKED TEAMS: The server can now be easily configured for multi-team play. Up to four teams can be defined with each team having its own skin texture and its own color. The default teams include RED (Default Quake Skin), YELLOW (Duke 3d), WHITE (Stormtrooper), and GREEN (Toad Skin). By adding a line which reads teamplay followed by a 2, 3, or 4 to the CONFIG.CFG file, the server will track two to four teams. This line can also be typed in Quake's console which is displayed during gameplay by pressing the '~' key. Better yet, players CANNOT switch teams! When a new player enters the server, he is automatically assigned to the most needy team - the team with the fewest players. In case of ties, he is assigned to the team defined first. Using this logic, players on a local network can still choose sides. The default teams can be reconfigured by editing the WEAPONS.QC source - look for the section near the top dealing with teams. I pretty much leave editing the source up to experienced programmers adding that the actual_teamX variables, the DisplayTeam function, and the ConfigTeam function need only be changed. Note that the actual_teamX variables pertain to the team color plus one. Also note that there are 19 skins numbered 0 through 18 and listed in the DisplaySkin function. I would prefer to have placed all the teams options in variables, but the current version of the Quake compiler is not happy with string constants. : ( TEAMMATES NO, SELF YES! Teamplay has also been slightly altered. Teammates still cannot be hurt by other team players. However, a player can now injure himself - so beware of grenade and rocket blasts! GAME OF TAG: If teamplay is set to -1, Quake takes on a variation of tag. One player is IT and the other players must "tag" him. The player who frags the IT player gains three frags and becomes IT. If the IT player can survive, he will earn a bonus frag for each minute he remains alive. The IT player takes on the features (color and skin) of team two while the other players take on the the features of team one. By default, the IT player has a Duke 3d skin - thus everyone is out to get Duke! : ) However, note that team damage rules are turned off - any player can hurt any other player. For a different variation of tag, set teamplay to -2. This variation allows an IT player to tag another player IT by touch. Now the IT player can sneak up on another player, tag him IT, and gib him to earn three frags. Instead of fleeing, as in the first tag variation, the IT player tends to actively pursue. Note that, after becoming IT, a player cannot tag another for two seconds. WE HAVE A WINNER! For teamplay, at the start of each level, the winning team for the prior level is displayed. The winner is determined by a total frag count for each team. The team with the greatest total wins. In case of a tie, there is no winner. Should a team member leave before a level is completed, his or her frags are not included in the total - the moral of this story is that quitters never win! DEATHMATCH MONSTERS! Yes, one thing missing from a Quake deathmatch is monsters. Now the deathmatch variable can be set to 3 to indicate play with monsters. It can be added to the CONFIG.CFG file or entered at the console. Note that when a Quake server is configured from the menu, the deathmatch variable is ALWAYS reset to 1, so you must then manually rekey it to 3 at the console. You may also want to key "restart" to respawn the level and add monsters. SOLID, GIBBABLE CORPSES: Now anyone or anything that dies (but is not gibbed) can be blasted into pieces! This makes for some nice bonus carnage and some interesting piles of bodies. The corpses are also solid and serve as speed bumps and sometimes blockades. I do not claim to have originally penned this concept - merely refined it by including player corpses as gibbable and allowing jumps while standing on corpses. I also fixed a problem with corpses becoming suspended in mid-air when corpses beneath it are gibbed. If this option is not desired, it may be disabled by adding the line "temp1 4" in the CONFIG.CFG file or entering this line at the console and restarting the level. SKIN CHANGES ARE BACK: Skin changes can now be made on the fly in deathmatch and cooperative games. Simply bind a key to impulse 200 / 201 (or type the impulse at the console) to advance / retreat through the list of skins. Also an individual impulse has been added for each skin as follows: Default Quake 150 Duke Nukem 3d 151 Toad 152 Stormtrooper 153 Max 154 Terminator 155 Judge Dredd 156 Camo'd Soldier 157 Captain Picard 158 Wizard 159 Predator 160 Skeleton 161 Wan-Fu 162 Henry Rollins 163 He-Man 164 Boba 165 Superman 166 Cop 167 The Flash 168 If you want to automatically be configured for a specific skin, create a RUN.CFG file and add an impulse for the desired skin. This file must reside in the DD directory. When Quake is started, it will be executed after the player has fully entered the game. Other impulses can also be added to this file. BING! BING! BINNGGG! Each spike shot from a nailgun or super nailgun can now ricochet off walls, floors, ceiling, whatever. That enemy hiding around the corner can be easily targeted using a little geometry - bing, bing, splat! Spikes will only ricochet at angles notable lesser or greater than 90 degrees. Dead on shots will not deflect which helps prevent "ricochet suicide". However, each ricochet slows the spike and lessens its damage. To enable ricochets, add the line "temp1 1" to the CONFIG.CFG file or enter the line at the console and restart the level. To enable the morningstar as well, set temp1 to 3. BAR-B-QUE? ANYONE? ... BAR-B-QUE ANYONE!!! Courtesy of Steve Bond (Wedge) at nuc.net, a new weapon has been added to this version - a flamethrower! Now you can toggle between the grenade launcher and the flamethrower with whatever key you have bound to the launcher (impulse 6). You can also go directly to the flamethrower with impulse 50. It is powered by rocket fuel (rockets/grenades) and chews them up fairly quickly. This hardy consumption is counter-balanced by the fact that it delivers alot of damage and its targets ocassionally catch on fire! A lit target will even continue to burn after it collapses and until it gibs. How's that for well done!? MORNINGSTAR: Ever wish you could climb to the top of a teleporter and wait to frag an opponent attempting to leave the level? With the morningstar patch written by Mike (amichael@asu.alasu.edu), now you can! Simply select the morningstar by toggling the axe (impulse 1) or pressing a key bound to impulse 51, and then press the fire button. A spiked iron ball with a trailing chain shoots forth and plants itself in the selected target. Keep the fire button pressed, and you will be pulled to the ball. Select another weapon and you can actually attack while hanging suspended. With the morningstar selected, release the fire button and you will be dropped to the ground. The morningstar also makes a decent weapon. It does half the damage of an axe, but it can be thrown. However, unlike the original patch, the star will not stick in its target and continue to do damage. This was just far too nasty for deathmatch. There is one flaw with this weapon: It will often allow its user to pull himself up to the sky. In defense of the author, the patch code is not flawed but rather the Quake code for determining the content location of a point is. :( Hopefully the brain trust at id will cure this soon. To enable the morningstar, include the line "temp1 2" in the CONFIG.CFG file, or enter the line at the console and restart the level. I HEAR YOU! Now monsters won't stand around with their fingers up their asses while the sounds of combat resonate in the next room. They will respond to the sounds of weapon fire and will move to join the fray! Some weapons are also louder than others and will tend to attract more attention. For instance, a rocket being fired will certainly attract a mob more quickly than an axe thunking off some poor grunt's head. Also the higher the skill level the better the monsters' hearing. Please note that this source change does not take echoes into account. It does however attempt to consider walls, floors, ceiling, etc which tend to muffle the sound accordingly. KNOWN "BUGS": Currently, the only known bug is the occasional stuck fire button. This appears to take place when DD is doing a player color change, such as when assigning teams or when an IT player is tagging another player, and a weapon is being fired the exact same time. As soon as the fire button is pressed again, the stuck condition is relieved. I've spent a good deal of time trying to remedy this condition, and I've concluded that it is an internal problem in Quake and NOT my code. It appears that when a color change takes place Quake momentarily stops monitoring the fire button and sometimes loses the button state. It does not happen often, so the game play is rarely interrupted, but if anyone has a solution for this problem, I would like to hear from you. Please Email me at lord@brodart.com. A bug with morningstar allows its user to "kiss the sky". This is a Quake flaw that hopefully the id brain trust will soon solve. REVISION HISTORY: The games of tag are now turned on by setting teamplay to -1 or -2 instead of 5 or 6. This allows easier configuration of more than four teams. The suspended corpse problem was readdressed and corrected. It seems that the builtin function droptofloor() does not properly discern between a body and the ground, so when it lands, it always returns true. Sound effects were added for the bouncing gibbed head. Crucified zombies are no longer mere wall decorations. A player can change his skin during deathmatch by using impulse 200 / impulse 201 to advance / retreat through the skin list. Backpacks can be targeted. If destroyed and containing grenades... Boom! Also backpacks should never fall through the floor again. Nails can be optionally set up to ricochet. Bing! Bing! Binnggg! Bar-b-que? Anyone? Bar-b-que anyone!!! The first new weapon has been added courtesy of Steve Bond (wedge@nuc.net) - a flamethrower! For teamplay, at the start of a new level, the winning team is reported for the prior level. During teamplay, a player gets no frags for telefragging a teammate. The teammate, however, does still die. :) Admire the new sound effects of a burning victim. Added a more balanced variation of the morningstar weapon patch written by Mike (amichael@asu.alasu.edu). Made dead monster corpses shut up once and for all! Also solid corpses can now be disabled. Fixed a bug that sometimes left two players with the same IT color. However, now when an IT player dies, he keeps the IT color until he respawns. Improved spike ricochets. Now shots hitting a wall at a near perpendicular angle will not deflect. This lowers the odds of ricochet suicides. Monsters can now hear! This means that nearby sounds of battle will alert them to the intruder(s). In cooperative games, players can now change skins. A RUN.CFG file is executed AFTER a player has completely entered a game. Thus any impulses included in this file will be processed - A player's skin can be automatically set with an impulse! DD has been updated with all the 1.06 source changes except the teamplay 2 option which conflicts with a DD option. In a game of tag, sometimes players would maintain the IT color despite no longer being it. If ammo picked up for current weapon, it wasn't added to the displayed ammo total. A FINAL NOTE: To use this DD source, the server should be version 1.06 Quake or previous. Future versions may work with this source, but then again... The Quake compiler should be intended for the version of Quake being used. I do not know the memory requirements caused by the addition of several player skins, but I venture to guess that 10 MBs may be in order. If people report memory problems, I may simply reduce the number of available skins or may make a generic MDL and and extended MDL (a superset of the generic). Other than altering teams, I do not recommend changing the layout of the team code. Quake is rather particular about when certain functions and code can and can't be performed - especially during the think processes and level changes. I've taken alot of care and time in laying out this code. If you see any necessary improvements, have any useful suggestions, or find any bugs, please contact me (Walt) at lord@brodart.com.