You've been here before many times. You know every twist, every turn of these halls by heart. Yet, something is not quite right - you definately remember that there should have been a nailgun in that secret room, but all that was there was a health box. No problem, just around the corner is a rocket lau- Whaa!?! Two Shamblers? ---------------------------------- Scramble - Copyright 1997-1998 Wes Morrison, original QuakeC codebase copyright id Software Title : Scramble Filename : scramble.zip Version : .01a (first release, no plans for future releases) Date : 4/23/98 Author : Wes Morrison Email : wesmorrison@juno.com Credit : id Software Type of QC Mod ----------- Bot : no Compilation : no Deathmatch : no Teamplay : no Monster : no skin : no Sound : no Weapon : no Utilities : no Other : yes Format of QuakeC ---------------- unified diff : no context diff : no .qc files : yes progs.dat : yes Construction ---------------- Base : original QuakeC codebase Build Time : ? Editor(s) used : various text editors Known Bugs : monsters "stuck" in too-small areas, floating items Impulses : none Description of the Modification ------------------------------- Scramble "scrambles" monsters and items upon starting a new map, making it a new challenge each time you play Quake. By simply scrambling the existing entities instead of creating new ones, each level stays overall as "balanced" as it was originally, although it often creates situations much more difficult than or easier than the original. If a level maintains an overall theme, (for instance, base with only soldiers, enforcers, and dogs) this is also preserved. Also, when you die, you come back with all your weapons and ammo, which encourages you to "play through" instead of saving/restoring frequently. How to Install the Modification ------------------------------- Unzip with directories to your Quake directory. This will create a directory called "scramble" and a subdirectory called "qc" with the source code. (If you don't plan to use the source you can safely delete the "qc" directory.) Start up Quake with the "-game scramble" option and start a new game like normal. Technical Details ----------------- Instead of just swapping anything for anything, Scramble swaps certain types of entities in multiple passes so as to minimize "dead ends" (impossible to complete) or unrealistic situations, like fish in the air and grunts underwater. (Although it is not bug-free, and I suspect it can never truly be. More on this later.) Here are the passes Scramble takes: 1. Scramble all items in level, minus keys and sigils (no monsters yet) Keys should not move or else they could end up behind the door they unlock. Sigils are the goal of the id maps they are in, and so should not be moved to a potentially easy location to get. Other items, both above and underwater, may be moved. This could get some interesting items hidden underwater. 2. Scramble all underwater entities (monsters and items, again excluding keys and sigils) This scrambles any underwater monsters (in id levels, only fish and zombies) with underwater items. This is so they get scrambled without bringing them above water. 3. Scramble above water monsters and items (minus keys and sigils) Same purpose as step 2, to keep "breathing" monsters above water where they belong. "Fish in air" and other "bugs": If you run "Azure Agony", and you go into the first room where normally zombies drop from the holes in the ceiling into the water below, you may notice that fish now appear in the air. Why? Because the little box the zombies were in waiting to be teleported was filled with water, so Scramble thinks it's OK to put fish there. Then they get teleported into the open air. I could have come up with an elaborate scheme to get around this, but there would have been more situations like it. That's why I think this patch could never be "bug-free" (although technically that's not a real "bug"). Also, occasionally items get stuck in the air or monsters will be swapped into a location where they cannot move (stuck in wall or trapped in area with too-small doors). Quake has a runaway loop counter that kills the server after too many statements have been executed. The term "loop" is a little misleading: it doesn't matter whether your code is a loop or not, or how many subroutines it's divided into, Quake will quit after a while. Scramble normally executes many times the threshold to scramble a map, so to defeat this, I keep a count of how many statements have been executed, and quit before it gets too high. The way I resume the routines is to have them run by think functions of an entity, which quits before Quake has a chance to crash and resumes the next time the entities think function is called. This seems to work on all the id levels, but it is possible that this patch will crash on some maps. Because of this, sometimes the scrambling goes on for a second or so after you are in the level, so you may actually see that health box in front of you suddenly transform into an ogre. :) I actually wrote this just before Quake II was released. Once I got Quake II this project was temporarily abandoned. :) Now I am releasing it in its current state just because it is still interesting and entertaining even with its defects. It is released on an as-is basis. I do not plan to modify it further. Copyright and Distribution Permissions -------------------------------------- The modifications and new source files included in this archive are Copyright 1997-1998, Wes Morrison. The original QuakeC source is Copyright 1996, id software. Anyone may use this Quake modification for their own personal enjoyment. (Duh. What else is it for?) Authors may use these modifications as a basis for other non-profit work, as long as I am given credit for Scramble. You may distribute this Quake modification in any electronic format as long as all the files in this archive remain intact and unmodified and are distributed together. You may not distribute this Quake patch or any derivative thereof for profit without my express written permission. (Template QuakeC description provided by Kyle 'ObserveR' Lemke of http://www.planetquake.com/future/)