Zerstörer: Testament of the Destroyer -- quake.zone browser build Repacked for browser play from: ftp://ftp.fu-berlin.de/pc/games/idgames2/partial_conversions/zerstoerer/zer.zip ftp://ftp.fu-berlin.de/pc/games/idgames2/partial_conversions/zerstoerer/zer11.zip Only runtime files are included in the game package; the original documentation is reproduced below. All rights remain with the original authors. Runs on LibreQuake (../../librequake/NOTICES.txt) and FTEQW (GPL-2.0, ../../licenses/gpl-2.0.txt). ===== zer.zip/DEVKIT.TXT ===== Cut-scene Construction Kit by Darin McNeil 1/15/97 Zerst÷rer enhancements v.090 1/20/97 v.092 - 1/26/97, v.095 - 2/2/97, v.098 - 2/10/97 - never released, v.099 - 2/15/97 (1 month anniversary of 'Vision of Hatred'!), v.100 - 2/21/97, v.101 - 2/26/97, v.105 - 3/5/97, v.110 - 3/13/97, v.111 - 3/15/97, v.115 - 3/21/97, v.120 - 3/31/97, v.125 - 4/6/97, v.127 - 4/12/97, v.130 - 5/15/97, v.135 - 5/17/97, v.138 - 5/29/97 v.140 - 6/7/97, v.145 - 6/15/97, v.170 - 7/27/97, v.999 - 9/27/97 =================================================================== Zerst÷rer QuakeC Development Kit =================================================================== What's New - v.999 - 9/27/97 ---------------------------- 1. Well, two months of hard work and nothing new to show for it, except a finished product of course. :) Now I know why games are delayed often, it takes a whole lot of work after you finish making cool new things to make it into a fun game. A million and one little things have to be dealth with, decided upon, fixed, etc. before you have a clean polished product. That's what I've learned the last 2 months, I suppose. 2. I was going to document the code more thoroughly, and comment more about the way things work ... but a couple things have changed my mind. One being that I'm tired, out of time, and just don't feel like it right now. Two, Quake2 is coming out very soon, and QuakeC will quickly die off ... so this code is not terribly useful to anyone. If anyone has any questions, after thoroughly reviewing the code, feel free to send me some mail and I'll try and help you out. 3. I've left in all the diary entries into this document mainly just for educational and entertainment value. A lot of the stuff mentioned is no longer valid, or just wrong now. Please look at the END of the document for correct entity descriptions, etc. ------------------------------------------------------------------ What's New - v.170 - 7/27/97 ---------------------------- 1. Ugh. There's been a million changes. I don't think I'll try and list everything, just since the last progs update. 2. Chaingun is getting pretty cool. New name??? I put in tracer shots that are dynamic lights, and was able to make it so that it doesn't drastically slow down Quake. You may not all like the effect, but I think it's pretty cool. I also made it a bit stronger in DM. oh yeah, and I also fixed other little things, like it aiming too high, no kickback, etc. Feedback? 3. Tweaked bloodcube for DM, it does a lot less damage now. The bloodcube also now sucks in gibs from the gib_fountain. :) 4. Debugged chain-lightning gun. Almost done with this one. It is a little less powerful in DM, and the double-hit bug (which is why it was REALLY too powerful) is gone. 5. When you hit someone with the chainsaw, it slows them down to 2/3 speed ... not sure if this will work well, lemme know. 6. Courage armor doesn't offer 100% protection anymore, just 90%. I didn't get around to reflecting other weapons yet, waiting for more feedback. 7. Fixed up the actor. I'll document using him a little later. 8. Randomly selected spawn-spots in DM!!! YAY! 9. Fixed up some of the messages, let me know if I missed some. 10. I'm sure I've done more in the last few days, but that's the important stuff. This is a pretty substantial update. :) ------------------------------------------------------------------ What's New - v.145 - 6/15/97 ---------------------------- 1. The new ME model is great. His particle cannon is faster now, and he uses it a bit more often. I achieved my goal of making a guy that you can't just circle strafe around picking off. "monster_me" 2. The chainsaw gibs zombies, 'nuff said. "weapon_chainsaw" 3. The laser turret is deadly, shooting a logical spread of lasers that are sure to peg you. Neat. The classname is now "monster_lt"! Kandyman needs small names to keep his entity size down. 4. All the sound code is in there, you'll get lots of errors until Ratmonkey gets the new sounds out. 5. The Actor (misc_hostage) is 'sf64' compliant now. 6. Lots of little bug fixes/tweaks. (No more WMIW errors, bloodcube, death messages, etc.) ------------------------------------------------------------------ What's New - v.140 - 6/7/97 ---------------------------- 1. The Mega-enforcer is here for you guys to check out. To put him in a map, use "monster_me". His tracking side-winder missile is pretty cool, if I do say so myself. It will not make 180 degree turns, so if you are able to dodge it then it will lose 'sight' of you when it passes and continue in a straight line. He should also use his Particle-cannon occasionally when you are in range. The force-field is as good as I can get it with particles. The model could be edited to produce some other effect if you guys don't think the particles cut it. Also, I removed the dynamic light from the missile and explosion, which makes for almost NO slowdown while fighting these guys. But, should I try putting it back in on the explosion? 2. The chainsaw animates all the time and plays an idle sound. Pretty nice. I also fixed the bug where picking up a backpack caused it to play the startup sound again. Please report any other bugs or suggestions. 3. You can put nice looking trees in your level. Use "item_tree" and select a skin using a "wait" of 0 or 1. 4. When you press '1' to abort a cut-scene, it now immediately tells you, "Aborting cut-scene...", and returns you to the game 1.5 seconds later. Much nicer. I also applied the optimizations to the Zerstorer code base, man is it smooth. ------------------------------------------------------------------ What's New - v.138 - 5/29/97 ---------------------------- 1. Fixed up fish, now gibable and they become SOLID_NOT sooner during their normal death. 2. New enforcer attack. Use a "wait" "1", just like for the Ogre. It is an Ion-splitter Model 31337. ;) Blue and Yellow particle beam, 20 points damage. They have perfect aim, but their reflexes are .1 seconds slow. So you better circle strafe like a madman, you can actually also just run backwards to evade it. I may have to fix that. Let me know what you think. 3. Second brik_hit sound for exploding walls. These are getting less cheesy, and pretty cool in SMALL quantities. Yes Dave, you may have to cut back. :) 4. The actor is a little more scriptable, take a look at the demo map and dk.bsp for examples of what you can do. 5. The Chainsaw! '1' toggles between axe and chainsaw after you get it. 'weapon_chainsaw' is the classname, after we get a 'g_saw.mdl' to go with it. It needs 3 sounds, 'sawidle.wav', 'sawatck.wav', and 'sawguts.wav'. The last is played when ripping into flesh. Yummy! 6. Camera points trigger targets when you get to them in a cut-scene. See the new demo map for an example, listen for kandyman's voice. This took me way longer then it should have, and then I thought, "Hey, if I would have made it so that a script-item can trigger a target, it would have been SOOOO much easier, and actually more useful since the scripts can be timed however you want." Ugh. I need to think before I code. :( I may go back and do it that way later. What do you think? 7. I can detect if the player is using glquake, and am fixing the rain sprites to fit which game is playing. This really made me smile. :) Has anyone ever used the console command 'gl_cull'? I'm counting on noone changing it from the default value, because that's how I check if glquake is running. I may try and find an even more obscure glquake-only console command to do the check with. Any suggestions? 8. New trog magic-ball-explosion model. I love the swirl of small fire around the ball, in fact, I wish it was all a swirl of small fire pieces. heh, Ok, so maybe not ALL, but at least some more. Please Rig, pretty please? 9. I feel like I'm forgetting something. I'm sure there are a few bugs to be found, and lots of tweaking, so let me know what you think. ------------------------------------------------------------------ What's New - v.135 - 5/17/97 ---------------------------- 1. Added all the new stuff that Rig has been doing. There are now real entities for the chain-lightning gun and the stun_gun. (weapon_chainlightning, weapon_stunner) I also tightened up the code integrating them into id's weapon system, but I'm not completely finished just yet. I'm still fine-tuning the weapons so suggestions are extremely welcome. 2. I included the new models and sound, just to make sure everyone has the same copies and stuff. Put 'stunfire.wav' in './sound/weapons/'. 3. The troglodyte is expecting to use his own sounds, so you'll get lots of errors until Ratmonkey sends them out. I hear he's working on them now. ------------------------------------------------------------------ What's New - v.130 - 5/15/97 ---------------------------- 1. SF64 monsters are finished, and pretty damn good if I can take a minute to toot my own horn. :) Only change: if you want the monster to simulate teleporting in, put a "style" "1". 2. Buzzsaw Ogre! Give a normal Ogre a "wait" "1" and he will shoot three blades at you instead of a grenade. Play around him and see if he is accurate enough, or too accurate. Suggestions are also welcome, and he could use a modified skin also. 3. Actor-bot. A very basic bot whose actions are scriptable. He was designed for cut-scenes, but will be used by Killme in 'MM'. When triggered, the bot's behavior will cease to be scripted, and it will become an enemy. A mindless Quake enemy (id AI), not a ReaperBot or anything. I'll save my attempt at AI for a real monster that we'll add, like that wizard guy Rig got from qtest. I'll provide instructions on using the Actor-bot after he is more complete, for now just see 'DK.bsp'. 4. The troglodyte is here in pre-alpha form. His AI is stolen from the 'wizard/scrag' so he is pretty stupid right now. But you can check out my first attempts at his attacks. I'm sure Rig will want to make a cool animated flaming fireball to replace my eyeball, and perhaps other things as well. Ratmonkey needs to get cranking on some killer sounds, evil chanting and magical effect sounds. 5. The chain-lightning gun has been tweaked a bit. Give it a run. 6. There's a new map, DK.bsp, to showcase some of the new stuff in the devkit. I was really sick of seeing acs.bsp, so I made this one a little prettier. It has some actor/drones and a couple troglodytes. 7. There are some things I did specifically for MM, like the teleporter that sends monsters and players to different places, and the actor AI, which shouldn't be needed in other maps. Let me know if you have any questions. ------------------------------------------------------------------ What's New - v.127 - 4/12/97 ---------------------------- 1. The stun gun plasma projectile now bounces off walls and will explode when it hits something after 5 seconds have passed, or when it hits a living object. Neato. 2. SF64 monsters!! Replaces teleporting monsters. Just put a monster where you would like it to eventually show up, and give it a "spawnflags" "64", and a targetname. When it is triggered it will magically appear. It is silent by default, but if you want the teleport flash and noise, give it a "dmg" "1". 3. I increased the Bloodcubes attack rate when you're running around. It is much more helpful against the Shamblers at the bottom of GYG now. ------------------------------------------------------------------ What's New - v.125 - 4/6/97 ---------------------------- 1. The Stun-Gun!! There are a couple ways you can test this new weapon. You can use it as a normal weapon, by binding '9' to "impulse 254" (console> bind 9 "impulse 254"). This will make the number '9' select the stun gun, like all other weapons. The Stun-gun currently uses rockets for some reason. You can also bind a key to "impulse 41", and that will fire a stun plasma. When the plasma ball hits a monster, it will freeze in it's tracks until it is attacked. It will stay frozen forever if you like, I could have also made it so that it just froze for 5-seconds, and then contiunued what it was doing. Which is better?? To see what happens when a player gets hit, walk up to a wall and shoot it. :) If you are in developer mode, or playing with an old version of Quake (older than 1.07), you will get some debug messages while playing with the stun gun. 2. func_frames are back in for Ace_Dave. 3. That's it, hot dammit! ------------------------------------------------------------------ What's New - v.120 - 3/31/97 ---------------------------- 1. Silent teleporting: if a teleporter is given a "spawnflags" "8" then it will transport the entity to the destination without making a sound or a particle flash. Good for placing monsters somewhere without it seeming like they teleported in. 2. Particle Streams! Watch the statues when you push the button in that room, I put some streams above them. Docs are at the END of the entity list at the bottom of this document. 3. Increased range of chained lightning, and tweaked the lightning positioning. 4. Learned how to use Hipnotic rotation. Put new stuff in Acs.bsp. 5. uhm...I'm pretty sure I tweaked other stuff, I think I rewrote some of the bloodcube timing stuff that was left over from the old gameplay type. So if you notice anything weird, let me know. ------------------------------------------------------------------ What's New - v.115 - 3/21/97 ---------------------------- 1. A trigger_quake can now be started by triggering it. Thanks to Kandyman for the suggestion. 2. Hipnotic triggerable sound entities. Documented below. 3. Monster statues! courtesy of Ace_Dave! There are three statues right now, Fiend, Shambler, and Hellknight (2 poses). To make a monster a statue, give it a "spawnflags" "2", and for the second Hellknight pose use "4". You may target a statue, and when it is triggered the monster will come to life. 4. A bit of bug fixing and stuff thoughout code base. ------------------------------------------------------------------ What's New - v.111 - 3/15/97 ---------------------------- 1. Hipnotic Rotation! Be cautious with the power you now wield. The trigger_hurt is also from Hipnotic now as well. Please read Hipnotic's instructions on these things, for I have not had time to play with them. 2. The trigger_quake will trigger all targets when a level starts during Deathmatch play. For an example of why this is important play ACS.bsp in Deathmatch with a previous devkit. ------------------------------------------------------------------ What's New - v.110 - 3/13/97 ---------------------------- 1. For Dave: Zombie spawnflags "8" will spawn a crucified zombie that does not move around, and also, if you have a sleeping zombie that you want to stay asleep until triggered, add a "wait" "1" to it, and of course give it a targetname to be triggered. There is an example in the gravity room of acs.bsp. 2. Chain-Lightning Gun! You get one when you pick up a normal lightning gun (for now), or do an Impulse 9 (Dr. Rig should know about that :). Press '8' a second time to select the chain-gun. If someone wants to make a new model or something, do it. You shoot out a 50 Volt charge, and it loses 5 Volts every time it chains to an enemy. So you have the potential to harm 10 enemies per shot, with the last enemy taking 5 damage points. Comments? 3. Tele-attack testing. The shambler has the ability to detect incoming projectiles, and teleport directly behind you, or in front of you. The shambler is not a good monster to have done this to, because it has long attack sequences, and it won't teleport in the middle of an attack. I think it would be cool to have an end boss like this, but have the attack sequence be shorter. That way, you'd have to time it perfectly to hit the boss just as he was attacking, and if you were too late or early, he would teleport right behind you. That would (finally) be a challenging boss. One bad mofo. 4. The func_frames have the same sound support that the func_trains have. Much better, but I'm thinking func_frames may be obselete. I am okay with putting a SMALL bit of rotating doors, etc. in ACS, but not continuous rotating trains, etc. So if you want rotation merged in, and improved, let me know. You guys are the boss. I'm not putting in bobbing water though, I have to draw the line on wasted cycles somewhere. :) 5. I'm pretty sure I did other things, (oh yeah, the bloodcube has totally reworked gameplay), but I can't remember anything else right now. Enjoy. ------------------------------------------------------------------- What's New - v.105 - 3/5/97 ---------------------------- 1. For Killme: Zombie spawnflags "4" will spawn a dead zombie, and a 'misc_hostage' spawnflags "1" will spawn a player character that will stand in place. Neither can be damaged/killed. 2. Dark-angel Wings! The ogre head near the hostage is the .mdl right now for the wings. Press spacebar to flap them. You fly in the direction you are looking, so look up to fly high. It'll need a .mdl. Impulse 40 to cheat. 3. Courage Armor! 100% protection from damage while it lasts. Rockets give half-damage on impact, grenades bounce off, nail reflect right back at you -> if you are hit in the chest. If you are shot in the back, it is like you're not even wearing armor. This is all subject to change. Try it, let me know what you think. Needs a .mdl. Impulse 41 to cheat. 4. The trigger_push can be targeted. If targeted, it will start out OFF, and will turn ON after being triggered. The trigger_gravity works the same way, and they both will TOGGLE if triggered repeatedly. 5. For Kandy: Implemented Newton's Laws of Motion. If you shoot while in the air, you are pushed back a little. It varies depending on what you are shooting. Kandy also suggested that the amount that a creature is pushed back by getting shot should be increased, but I haven't done it yet. What is you guys opinion on that? 6. The bloodcube should work properly with levels with more than one bloodcube in them now. It used to get confused about sucking the gibs. I think I fixed it. ------------------------------------------------------------------ What's New - v.101 - 2/26/97 ---------------------------- 1. You may change the speed of a func_train after each path_corner in its path. The train reads the "speed" value of the corner it is about to go to. Place the speed value on the corner that the train will be APPROACHING. Geez, what a redundant explanation. 2. The gib_fountain! Most of the work was done by Ace_Dave. You place a misc_fireball, and give it a "spawnflags" of "2". Also, if targeted the fountain won't start until triggered. 3. The exploding wall will now explode when triggered. I don't feel so bad about using the exploding wall anymore, for I went through and rewrote most of it. :) 4. Fixed one of Kandyman's problems with the CCK. I will probably do a full-scale professional rewrite of the CCK before we are through. It is good right now, but I want it bullet-proof. (since writing the above, I have started the rewrite of the CCK, and it is much more solid now.) 5. Fixed up some of the entity documentation. Make sure you read it, because some things may have changed and not been mentioned up here. 6. I almost forgot, the bloodcube teleports with you (sorta) so you don't lose the poor fellow anymore. He will also stay with you through cut-scenes, but I haven't suspended time for him (like I did for the other power-ups) yet. I had a good birthday: good mexican food, spent some time with my family and girlfriend, and did some QuakeC coding - all in one day. Who could ask for anything more? 7. Oh yeah, I'm scrapping the spear. It will never work perfectly with Quake. You'd need perfect collision detection for it to look good, and we just don't have that in Quake. It's one of the VERY FEW things I can gripe about. :) ------------------------------------------------------------------ What's New - v.100 - 2/21/97 ---------------------------- 1. Updated documentation with list of all modified entities. 2. Triggers that must be triggered before they are triggerable. ("spawnflags" "2") 3. New sounds for func_train. Sounds 2-5 correspond with the sounds for func_door sounds 1-4. 4. func_train hurt-on-touch now hurts player even if he isn't moving. A consequence of this is that the func_train is not solid, so you may need me to put it back to the old way. If the "dmg" is high, then the player is repelled from func_train when hit, and will die before ever being able to tell that the train is not solid. Play with it. ("spawnflags" "1") 5. Teleporters can be made to teleport you to random locations! See end of document for instructions. 6. func_train can be a teleporter! You may either target a teleport destination using the "netname" field, or it can be a random teleporter. 7. The spear is included in this devkit. You must have rockets, and the nailgun to use it. Press '4' twice to activate it. There are serious bugs, so don't expect much. ------------------------------------------------------------------- What's New - v.099 - 2/15/97 ---------------------------- 1. BloodCube has a bit of intelligence when moving now. It won't go through walls quite as much now, not perfect, but a lot better. 2. BloodCube has a whole new Attack method. No more lightning. I wrote a brand new effect, the particle stream, just for this. Cool. 3. If a func_train hits a corner with a "wait" of "-1", it will stop and wait to be triggered. When triggered, it will continue to the next corner point. Killme, go make your elevator. :) 4. Check out the ACS map for examples of almost everything. 5. Coming soon - The crucify spear! ----------------------------------------------------------------------- What's New - v.098 - 2/10/97 ---------------------------- 1. Ace_Dave added the following: a. Silent push brush ("spawnflags" "2") b. Lightning styles (Light styles 15,16,17) and a good random thunder sound effect. ("ambient_thunder") c. Rain Mod from QuakeX ("func_rain" and "ambient_rain") d. Sleeping zombies ("spawnflags" "2") e. Exploding walls ("exploding_wall") Give the wall a "health" that you want it take to destroy it, and you may target other things to happen when the wall breaks. Please direct any questions about these mods to Ace_Dave, as I have not had time to adequately test them. 2. "trigger_gravity": I wasn't happy with the gravity change code, it just wasn't good enough. But it did get me thinking, and convinced me that there had to be a better way. Of course there was, now you place a trigger like a water brush. If you want a room to have a different gravity, fill the ENTIRE room with the "trigger_gravity" brush. To specify the gravity, just put a "gravity" field in the trigger with the value you want. It should work well in both single and multi-player games now. :) 3. The BloodCube: The cube is now up to a solid BETA status. Most of the code has been rewritten since the demo I gave all of you. I will talk later about the specifics of the Cube, which are always in motion. 4. ACS.BSP has been updated with examples of the lightning light and sound (we need a more menacing thunder sound), an exploding wall, the Bloodcube (no, it won't go through the teleporter), it is now multi-player friendly. ----------------------------------------------------------------- What's New - v.095 - 2/2/97 -------------------- 1. func_train can now take a spawnflag of '1'. This will make the train hurt you on 'touch'. The player must be moving towards the train for it to hurt them. 2. func_plat can now take a spawnflag of '2'. This will make it a toggle-only platform. You must trigger the platform for it to move, I used a shootable button in my test-level. The platform will stay in it's current state (UP or DOWN) until triggered. 3. You can now link a trigger_camera to a couple of trigger_cvarsets. The CVARs will change for the cut-scene, and then automatically go back to their original values at the end of the cut-scene. I used this to change 'fov' and 'v_idlescale' on one of the cut-scenes in the test-level to produce a nightmare like vision. Yes, the trigger_camera is also linked to the first camera of the CS. 4. True gib physics!!!!! Inspired by Hipnotic, and prodded by Killme, I set out to put realistic physics into the gib code, and about 15 minutes later, voila! A truly satisfying experience. I spent the next hour and a half just blowing up the new respawning hostage I stuck in the test level. ;) It is so cool to toss a grenade behind him, and have the gibs come flying at you like they should. (make sure you hit the player/hostage with a few shotgun blasts first, so that you get a high-velocity gib) ----------------------------------------------------------------------- What's New - v.092 - 1/26/97 -------------------- If you add a 'delay' field to cameras with a value of "1", the camera will not track the focal_point while moving. (You can set a new focal point for that camera however, see the 3rd scene in acs.map) I added support for func_frame animation, using Matt Houser's rip- off of dimensionality's frames. I modified it just slightly to fix a bug or two. I put a VERY nice looking rotating door in acs.map! Look at acs.map and frames.qc for instructions. One of the fixes I did was to make the final animation frame NOT solid, so now you can use the func_frames as a door, and not worry about the screwed up bounding box. You will have to make sure the final animation frame (the one that you want it stop at) is not in a place that the player would walk through. --------------------------------------------------------------------- * Overview * First, cut-scenes will only activate in single-player. During multiplayer, the triggers are removed. A level made with cut-scenes will play fine without the progs.dat, but the player will receive a bunch of errors when starting the level. Similar to starting a CTF map without running its progs.dat. The progs.dat included allows for cut-scenes to be designed into custom levels. The level-designer places a trigger in the level, and when the player touches it he/she is transported to a camera entity in the level. Multiple cameras can be placed, and linked to form a moving camera. Each camera in the chain can have a 'wait' and 'speed'. 'wait' is how long the camera will remain still at that point, and 'speed' is the speed of the camera as it APPROACHES THIS point. You now also place a focal point that you want the camera to face. Each camera that you place in a chain can have a different focal point that it will face as it APPROACHES THAT point. You may also specify that a camera NOT focus on the focal point while moving. You may now also change any CVAR that you want to for the cut-scene. Script entities are placed in the level and their message keys are displayed during the cut-scene. The player remains in camera mode until the last script is displayed. The player then returns to the game in the same condition as they were when they left. This comes straight from acs.map: ------------------------------------------------------------------- // *** Scripts remain the same. { "classname" "info_script" "origin" "316 -28 0" "script_num" "1" "next_script" "0" "script_delay" "10" "message" "The downward spiral.\n" } { "classname" "info_script" "origin" "316 -28 0" "script_num" "2" "next_script" "3" "script_delay" "6" "message" "The shambler awaits your doom.\n" } { "classname" "info_script" "origin" "316 -28 0" "script_num" "3" "next_script" "4" "script_delay" "6" "message" "He sits there.\n" } { "classname" "info_script" "origin" "316 -28 0" "script_num" "4" "next_script" "0" "script_delay" "15" "message" "Dramatic cut.\n" } // ***** The second cut-scene ***** { "classname" "trigger_camera" "script" "2" "script_delay" "5" "focal_point" "focal2" "target" "target25" { //brush data } } { "classname" "info_focal_point" "origin" "992 -680 -4" "targetname" "focal2" } { "classname" "info_movie_camera" "origin" "460 -536 148" "targetname" "target25" "target" "target27" "wait" "2" } { "classname" "info_movie_camera" "origin" "884 -652 28" "targetname" "target27" "target" "target32" "speed" "50" // *** new: speed is for the approach to this spot "wait" "5" } { "classname" "info_movie_camera" "origin" "556 -672 108" "targetname" "target32" "speed" "2000" // *** new: change of speed "focal_point" "focal3" // *** new: each camera can change focal point } { "classname" "info_focal_point" "origin" "440 -672 116" "targetname" "focal3" } { "classname" "trigger_cvarset" "netname" "fov" // CVAR you want to change. "message" "150" // the value to change it to. "targetname" "target25" // linked to the trigger_camera { // brush data } } { "classname" "trigger_cvarset" "netname" "v_idlescale" // CVAR you want to change. "message" "40" // the value to change it to. "targetname" "target25" // linked to the trigger_camera { // brush data } } ------------------------------------------------------------------- * General Operating Instructions * The trigger_camera and the info_movie_camera are linked just as you would normally link objects, such as teleports with their destination. If you link the first camera to another camera, the camera will move to that point at the 'speed' you gave on the second camera. You can string as many cameras along as you wish, and the camera will automatically stop when it hits the last one. You can change the speed at each camera, or if you don't put a 'speed' on consecutive cameras it will keep its current speed. If you place a "delay" field with a value of "1", the camera will not track the focal-point while moving. See third cut-scene in the acs.map. You can also target any number of 'trigger_cvarset' entities to take effect during the cut-scene. The original values of the CVARs will be returned at the end of the cut-scene automatically. The view tracking can be a bit jerky if the camera is moving slowly and perpindicular to the focal-point. You'll have to fool around with directions and 'speed' to find a good smooth path. The trigger_camera also starts the script sequence, by naming the first script and the duration to display it (in seconds). The cut-scene is exited only by reaching a script with a '0' in the "next_script" field. If you want no scripts during the scene, or want to pause with a blank screen between scripts, just put a info_script in the sequence that has a "message" as "". The operation is pretty straight-forward. No model is placed where the player was, it would be simple to do, but I didn't need to. It only would be needed if you wanted a cut-scene that showed the main character standing in place. :) If monsters are attacking the player when he hits the trigger_camera they will continue to move towards him as a camera, but they will not attack it. They will just run around it looking kind of nervous. You can link a monster to the trigger, and the trigger will not work until the monster has been killed. I placed my cameras in areas that the player had not been to already to make extra certain that no leftover monsters were running towards the camera. Monsters that have not seen you already will NOT mistakingly target the camera during a cut-scene. ----------------------------------------------------------------- * New and Modified Entities * Listed here are the entity descriptions taken straight from the source code. I'm not going to repeat the cut-scene entities, because they have already been addressed in this document. These descriptions are in Carmack's QuakeEd format, so if you are using that editor (or Thunder - the editor I'm waiting for), then you get all of this within the editor. :) If you are unfamiliar with the format, let me go through an example: /*QUAKED entity_classname (.5 .5 .5) (-8 -8 -8) (8 8 32) ? SF1 SF2 SF4 SF8 SF16 Description, along with "field" listing. The entity_classname is what you put in the "classname" field when placing the entity. The numbers in parentheses have to do with the size, and may be used by QuakeEd when drawing a box to represent the entity, ignore them. There is sometimes a question mark after the last set of numbers, I don't know why, ignore it. After that are a list of SPAWNFLAGS options. The first one listed is selected by placing a value of "1" in the "spawnflags" field when placing an entity. Each subsequent option number is an appropriate multiple of 2. So the sixth option would be "spawnflags" "32". You can select multiple spawn functions by adding up the numbers, so if you want SF2 and SF8, then you would place a "spawnflags" "10" in the entity. */ Now to the real entities: /* ------------------------------ */ /* | trigger_cvarset | */ /* ------------------------------ */ /*QUAKED trigger_cvarset (.5 .5 .5) (-8 -8 -8) (8 8 32) You can set any CVAR in a cutscene with this trigger. Put the CVAR name in "netname", the value in "message", and the ORIGINAL value in "script". Useful CVAR's are sv_gravity, sv_friction, fov, and v_idlescale. */ /* ------------------------------ */ /* | trigger_gravity | */ /* ------------------------------ */ /*QUAKED trigger_gravity (.5 .5 .5) (-8 -8 -8) (8 8 32) This will change the gravity for objects that are inside it. Put the value to change gravity to in the "gravity" field. Ziggurat Vertigo used '100' for its low gravity. */ /* ------------------------------ */ /* | trigger_quake | */ /* ------------------------------ */ /*QUAKED trigger_quake (.5 .5 .5) (-8 -8 -8) (8 8 32) Starts an earthquake. Players view will shake for amount of time you put in "wait". Place the richter scale of the quake in the "dmg" field. It will also trigger all targets like a 'trigger_once'. */ /* ------------------------------ */ /* | item_bloodcube | */ /* ------------------------------ */ /*QUAKED item_bloodcube (0 .5 .8) (-16 -16 -24) (16 16 32) A New powerup! */ ---------------------- /*QUAKED misc_fireball (0 .5 .8) (-8 -8 -8) (8 8 8) NOTHING GIB_FOUNTAIN Lava Balls and Gib Fountain. "speed" field for vertical velocity. If a "targetname" is given, the fountain/fireball will remain dormant until it is triggered. GIB_FOUNTAIN(2) causes the fireball to be a random gib piece, and occasionally it will spit out an entire player amount of gibs. */ ------------ /*QUAKED func_rain (0.3 0.1 0.6) (-10 -10 -8) (10 10 8) ambient rain effect */ ------------ /*QUAKED ambient_rain (0.3 0.1 0.6) (-10 -10 -8) (10 10 8) Use this for the rain sound */ ------------ /*QUAKED ambient_thunder (0.3 0.1 0.6) (-10 -10 -8) (10 10 8) A random thunder clap */ /*QUAKED exploding_wall When the exploding wall is shot, it "gibs" into rubble. "target" all entities with a matching targetname will be used when killed. "targetname" , the wall will explode when triggered. "health" the amount of damage needed to destroy the wall - default "100" */ ----------------------- /*QUAKED monster_zombie (1 0 0) (-16 -16 -24) (16 16 32) Crucified ambush/sleeping If crucified, stick the bounding box 12 pixels back into a wall to look right. ambush/sleeping (2) is Ace_Dave's sleeping zombie mod. */ ----------------------------------------------------------- /*QUAKED func_plat (0 .5 .8) ? PLAT_LOW_TRIGGER PLAT_TOGGLE speed default 150 Plats are always drawn in the extended position, so they will light correctly. If the plat is the target of another trigger or button, it will start out disabled in the extended position until it is trigger, when it will lower and become a normal plat. If the "height" key is set, that will determine the amount the plat moves, instead of being implicitly determined by the model's height. PLAT_TOGGLE(2) will force the platform to be triggered to move between states. Set "sounds" to one of the following: 1) base fast 2) chain slow */ --------------------- /*** func_train ***/ --------------------- /*QUAKED func_train (0 .5 .8) ? TRAIN_TOUCH TRAIN_TELEPORTER Trains are moving platforms that players can ride. The targets origin specifies the min point of the train at each corner. The train spawns at the first target it is pointing at. If the train is the target of a button or trigger, it will not begin moving until activated. You may now also put a "speed" field on a path_corner, and the train will travel that speed when APPROACHING that point. TRAIN_TOUCH(1) will cause the train to hurt the player on touch. TRAIN_TELEPORTER(2) will make a teleporter out of the train. If you want to target a specific destination, use the "netname" field to target it. Or, if you want to use random teleport destinations, you MUST USE a "spawnflags" of "6" on the func_train. This will make it a random teleporter. speed: default 100 dmg: default 2 sounds: 0) None 1) ratchet metal 2) stone 3) base 4) stone chain 5) screechy metal */ -------------------------------------------------------- /*QUAKED trigger_multiple (.5 .5 .5) ? NOTOUCH TRIGGERED Variable sized repeatable trigger. Must be targeted at one or more entities. If "health" is set, the trigger must be killed to activate each time. If "delay" is set, the trigger waits some time after activating before firing. "wait" : Seconds between triggerings. (.2 default) If notouch is set, the trigger is only fired by other entities, not by touching. NOTOUCH(1) has been obsoleted by trigger_relay! TRIGGERED(2) causes the trigger to be inactive until it is triggered by another entity. sounds 1) secret 2) beep beep 3) large switch 4) set "message" to text string */ /*----------------------------------*/ /*| info_teleport_random |*/ /*----------------------------------*/ /*QUAKED info_teleport_random (.5 .5 .5) (-8 -8 -8) (8 8 32) This is a random destination marker for a RANDOM teleporter. */ ------------------------- /*QUAKED trigger_teleport (.5 .5 .5) ? PLAYER_ONLY SILENT RANDOM STEALTH Any object touching this will be transported to the corresponding info_teleport_destination entity. You must set the "target" field, and create an object with a "targetname" field that matches. If the trigger_teleport has a targetname, it will only teleport entities when it has been fired. SILENT(2) eliminates the teleporter ambient noise (good for hidden monster teleporters. RANDOM(4) causes the teleporter to send the player to a random destination among the info_teleport_random markers in the level. You MUST place a "count" field that is the number of info_teleport_random entities you placed. STEALTH(8) eliminates the particle flash and noise when an entity is teleported. */ /*QUAKED play_sound_triggered (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) toggle play a sound when it is used "toggle" determines whether sound should be stopped when triggered again "volume" how loud (1 default full volume) "noise" sound to play "impulse" channel on which to play sound (0-7) (0 automatic is default) "speed" attenuation factor -1 - no attenuation 1 - normal 2 - idle 3 - static */ /*QUAKED play_sound (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) play a sound on a periodic basis "volume" how loud (1 default full volume) "noise" sound to play "wait" random time between sounds (default 20) "delay" minimum delay between sounds (default 2) "impulse" channel on which to play sound (0-7) (0 automatic is default) "speed" attenuation factor -1 - no attenuation 1 - normal 2 - idle 3 - static */ /*QUAKED misc_particle_stream (0 .5 .8) (-8 -8 -8) (8 8 8) A particle stream! It appears when triggered, like event_lightning. This entity is one end of the stream, target another entity as the other end-point. I used the info_notnull, but you should be able to target anything (like monsters). You'll have to play around with the colors, the bloodcube uses 73 and 225. "target" This entities origin is the end-point of the stream "dmg" 1st Color - Use if you want a single color stream "cnt" 2nd Color - Mixes particles of both colors "noise" Sound to play when triggered, none if blank. */ ===== zer.zip/ZER.TXT ===== *** Zerst÷rer - Testament of the Destroyer *** ******* Introduction ******* Nihilism Unlimited is proud to present a new experience for Quake... Zerst÷rer - Testament of the Destroyer! A new single-player experience will draw you into a demented world like never before. All new professional quality levels make up the Single-player episode, complete with cut-scenes to further the story. You'll wield some fantastic weapons and discover amazing artifacts to help you on your journey into the Zerst÷rer's realm. We haven't forgotten the Multi-player game though, as all single-player maps make great deathmatch maps as well ... PLUS you'll have another entire episode of deathmatch-only maps to frag in. Many fast-paced and frag-friendly levels have been play-tested to perfection for your enjoyment. Not only that, but you can play them all on QuakeWorld. ******* Story ******* He took you from the streets and gave you all that you could have asked for. He spoke with eloquence of the dreams which he would share with you. In return you ran special missions for him, some mundane and some bizarre. It was not long before you noticed things around you were not always as they seemed, but you were well taken care of. What did it matter anyway? Things have steadily gotten worse, and you are starting to see him in your dreams. Nightmares haunt your slumber and leave you with visions you'd kill to forget. It is time to get out of this place while you still can. Perhaps you won't return from the mission tonight. It all seemed right before the blood stained your hands. The mission did not go as planned, and now you are left with the cold chill of murder under your skin. There wasn't supposed to be anyone here. You were supposed to find medical supplies, but in fact, all you found was a crazed man with a knife. Did you just hear laughter? No, must have been the wind. How could you have done this? What kind of monster have you become? His words all seem twisted now, and you begin to see through his infectious lies. He has controlled and manipulated you from the start. No one will believe your story, and as the blood drips from your clenched fists you realize there is no one who can help you now. You've got to keep moving, you've got to get out of here. Your only choice is to right your wrongs, rewrite what has been written. You must make weapons out of his corruption, and use this strength he has given you to turn these mistakes against him. There is no other choice. The final chapter must be written... Zerst÷rer - Testament of the Destroyer ******* Installation ******* Unzip into a directory beneath the Quake directory. (Ex: c:\quake\zer) Start by typing: quake -winmem 12 -game zer ** The '-winmem 12' is needed to force some versions of Quake to ** allocate enough memory for the massive levels in Zerst÷rer. ** You can substitute bigger numbers for the '12' if you have ** lots of RAM. - Single-player Games You should automatically start in the new start map. If you don't, start a new single player game using the menu. You can now pick your skill level and enter the realm of the Zerst÷rer. I recommend playing on the 'Hard' skill level for maximum enjoyment. - Deathmatch Games You have two choices of level sequences that you can play. You may choose to play the single-player episode (all maps have been designed for DM play - with weapons, powerups, teleporters, and even new architecture to make the maps suitable for great deathmatch action). To play the single-player episode, start on the level 'zer1m1' and the maps will cycle through the single-player episode. You may also choose the play the deathmatch specific set of maps. To play these maps, start on the level 'start' and the maps will cycle through the deathmatch-only episode. ******* Technical Notes ******* 1. If you have already seen a cut-scene, and would like to stop it, any impulse will abort. You may bind a key to an unused impulse, like 100, or you could just press any number key. I recommend pressing the key to select the weapon you are carrying. 2. glQuake is supported and recommended. Transparent water is supported in the Deathmatch Levels Only. Much of the single player episode was designed before glQuake made transparent water a possibility, so there are areas that suffer from high r_speed values if the levels are compiled with transparent water. We are not willing to trade framerate for gee-whiz effects. 3. It is possible to double the amount of ammo that is contained inside all weapons. This is useful for certain modes of deathmatch. To turn this feature on in normal Quake, set the 'temp1' CVAR to '22'. (Go to the console and type: temp1 22) To set this feature in QuakeWorld, you must type: "serverinfo temp1 22" on the server. 4. There is a file, devkit.zip, which includes all the source code and documentation that we accumulated over the course of the project. Make sure you use the unzip option to recreate the directory structure (pkunzip -d). 5. The new impulses for weapon selection are as follows: - New melee weapon == impulse 252 (impulse 1 will also toggle select) - Chain-lightning gun == impulse 253 (impulse 8 will also toggle select) - ScREw Cannon == impulse 254 (automatically bound to '9') 6. If you are playing 'zer1m3' and must start over, please use the console command 'map zer1m3' to start over. Do not use 'restart', because an entity will not spawn properly on its bmodel. ******* Weapons ******* (1) Toggles between AXE and a NEW melee weapon. (2) SHOTGUN - standard issue, but with beefed up cartridges. (3) RIOT CONTROLLER - Fires two heavy duty cartridges one after another. (4) CHAINGUN - Unload quite a bit of lead, quickly. (5) SUPER NAILGUN - standard issue. (6) GRENADE LAUNCHER - standard issue. (7) ROCKET LAUNCHER - standard issue. (8) Toggles between the normal LIGHTNING GUN and the new CHAIN-LIGHTNING GUN. (9) ScREw CANNON - Fires a plasma charge with an embedded detonator. While the 'attack' button is held down, the projectile will continue flying until it has bounced twice off solid objects. Any time during its flight, you may release the 'attack' button to detonate the plasma for the maximum blast damage. ******* Powerups ******* The Sanguinoch - You'll see. The Dark-Angel Wings - These take a while to master, but are very useful once you get used to them. Look in the direction you'd like to go, and press jump to flap your wings. The Courage Armor - A breastplate that will reflect some enemy fire away from you. Just don't get shot in the back. ******* Levels ******* start 'Another Perfect Day' - Kandyman zer1m1 'Shipping Complex' - Manzer zer1m2 'Deceit' - Manzer(level) and Darin(cut-scene) zer1m3 'Among the Dead' - Ace_Dave zer1m4 'Organ Grinder' - Midiguy zer1m5 'Blutsturz' - Kandyman and Manzer zer1m6 'True Love Waits' - Kandyman zer1m7 'Bunker' - Kandyman zer1m8 'The Destroyer' - Ace_Dave(level) and Darin(cut-scene) zerdm1 'Brainwash' - Manzer zerdm2 'Sparsatorium' - Dr. Rigormortis zerdm3 'Utera' - Dr. Rigormortis zerdm4 'Brutalizer' - Kandyman zerdm5 'Blood Base' - Manzer ******* Credits ******* Every team member contributed greatly in every aspect of the conversion, so it seems almost a disservice to label each person with a task. The following is only what a persons main responsibility was on the project and does not accurately reflect who did what for Zerst÷rer. Brandon 'Killme' James - (bjames@idsoftware.com) ........ Founder/Support/Inspiration Marin 'Kandyman' Gazzari - (kandyman@ims.at) .............. Level Design/models * Kandyman wishes to thank Lilgirl, Zlatko, Qphi and Flood, Clan QL, and Bunny[med] for help with betatesting." * Kandyman uses Quest and Ed3d for making levels. Dave 'Ace_Dave' Weiden - (weiden@tcnj.edu) .............. Level Design/Programming - (http://www.tcnj.edu/~weiden/quake) * Ace_Dave wishes to thank this incredible team, the almighty id(!), Brandon James for starting this whole thing many months ago, Quest, WorldCraft, QBSP256c, RVis, and all those who have contributed SO MUCH to the Quake community, making it such a great place to be. And of course, our supporters! Cole 'Manzer' Savage - (cole@dodgenet.com) ............ Level Design * Manzer would like to thank id Software for Quake, Ben Morris for Worldcraft, and all the people who have supported Zerst÷rer over the months. * Manzer would like to congratulate KillMe for getting that job at that one place :) * Manzer used WC1.1 to make his zer maps and now uses WC1.5 Dale 'Midiguy' Bertheola - (midiguy@crl.com) .............. Level Design Scott 'Dr. Rigormortis' Dalton - (s975020@obirin.ac.jp) ......... Art/Models/Level Design * Dr. Rigormortis would like to thank Darin for making all my nightmares reality; the whole level-design team for giving me new nightmares; Kandy for the weapon models that always looked cooler than mine; the impulse 9 clan bunker crew for inspiration, criticism, and beta testing; id software for Quake; Rene Post and Ben Morris for making this kind of editing possible; and all the people who have made Quake what it is. Ratmonkey - (yagyu@falcon.cc.ukans.edu) ..... Sound Effects/Art Darin McNeil - (darin@usl.edu) ................. Programming/Cinematics * Darin would like to thank the entire team for making this project the most amazing experience I've ever had; id Software for giving us the power to create new worlds; Brandon James for bringing us all together and inspiring us to do wonderful things; and most of all, everyone out there in the Quake community for making it worth our while. ******* Disclaimers ******* * This product is property and is copyrighted by Nihilism Unlimited. * If this product appears on any medium/media without the consent of Nihilism Unlimited, full legal action will be taken. * Some music samples from Zerst÷rer are snipped from: 'The Perfect Drug' by Nine Inch Nails, appearing on the 'Lost Highway' soundtrack - copyright 1997 Nothing Records. And.. 'The Perfect Drug' by Nine Inch Nails, appearing on 'The Perfect Drug Remixes' - copyright 1997 Nothing Records. * A small amount of code is borrowed from 'Quake Mission Pack No. 1' by Ritual. A BIG thanks to Ritual for their contributions to the Quake community. * Rain code and graphics adapted from the patch originally released by Brian Cozzens. * func_frame code adapted from the patch by Matt Houser, who was inspired by Dimensionality. * exploding_wall code adapted from the patch by Ben Lehman. * A special thank-you goes to id Software, who with their tireless commitment to the genre and to the Quake community, have given us the tools and engine to make our ideas and dreams a reality. - Nihilism Unlimited.