This page was created by lifting all the still-relevant tidbits I could from the Internet Archive's last copy of DyerMaker's BluePrints Archive. I'm not in any way trying to pretend any of this is mine - or that I'm continuing the BluePrints site - just creating another instance of the wisdom that was within it on the Internet so that it is more accessible and that we never lose it.
DyerMaker, if you ever come across this, please give a shout-out to us - this was preserved out of love for MegaTF only, not to steal.
Read Ambush's MegaEnts.Txt file for further information.
What is Mega-TF?
Mega-TF is a modified version of Team Fortress Quake. Included in many of the changes made, there is also added map code support to please MapMakers such as myself. Since these wonderful additions are in Mega, I feel it necessary to share this information so that other MapMakers may have the option of customizing their maps for Mega, as well.
Q: Are Mega-TF and classic TF Maps interchangeable?
Classic maps work on Mega-TF servers, but not always the other way around. TF servers will run MegaTF maps, however the Mega additions will not work, unless they were originally TF's changes and Mega is compliant with them.
The code for Mega-TF started as Team Fortress's version 2.5. Some map code changes happened in TF version 2.6, subtle changes in the coding occurred in 2.65, but none occured in 2.7 (and, as far as I know, 2.8+) Those changes are listed here. These do not work in any other mod based on TF version 2.5 code. Support for some of the changes in Mega are specified where necessary:
Changes in Map Code in TF v2.6:
Goal_Result
Goal_Activation
NOTICE: Goal_min and goal_max variables are now supported by Mega-TF as of 07.07.98: Goal's surface area can be changed with goal_min and goal_max variables. This way you could use the goal itself to block an entire doorway or hallway to ensure a player would not miss activating the goal by slipping past it because of its (small) default size.
NOTICE: These strings are now supported by Mega-TF as of 07.07.98: More entity strings have been compressed because of Quake's limitations:
New variable for entities called "ex_skill_min" and "ex_skill_max" which will set what skill level in which the entity exists. As an example: An entity with "ex_skill_min" "-1" "ex_skill_max" "2" Would only exist at skill 0, 1, or 2. Easy, Normal, Hard, but not Nightmare, I'm guessing. Never heard of a Nightmare TF level :}
Changes in Map Code in TF v2.65:
List of Custom Mega Ambients
Use these as "classname" "ambient_ambientname" (such as "ambient_meadow").
Custom Ambients:
How to get your OWN Custom Ambients to work.
{
"classname" "ambient_sound"
"origin" "-3560 816 -100"
"noise" "misc/mysound.wav"
//wave file MUST be LOOPING wave file
"volume" "0.5"
//half volume. Volume is from 0.0 to 1.
//must include the 0.# for less-than full volumes)
}
{
"classname" "effect_random_sound"
"origin" "-3560 816 -100"
"noise" "misc/mysound.wav"
//name of NON-LOOPING WAV file
"volume" "0.5"
//half volume. Volume is from 0.0 to 1.
//must include the 0.# for less-than full volumes)
"option" "5"
//minimum delay to wait before replaying sound (in seconds)
"option2" "10"
//maximuim delay to wait before replaying sound (in seconds)
}
Custom Mega Effects
EFFECT_SNOW: Snowfall. Place one or more in open areas outside up high. Note: This creates a high number of entities so do not use in levels with many entities. Also noteworthy: EFFECT_SNOW produces a set amount of snowflakes - thereby if you add set its size smaller, more snowflakes will be notably present than if you covered a wider area (spawnflag setting).
{
"classname" "effect_snow"
"origin" "470 -1200 700"
"spawnflags" "64"
}
Spawnflags of 64 is the range the snow will cover... ie: 64x64.
EFFECT_RAIN: Rainfall. Same as snow, but faster falling. Place one or more in open areas outside up high. Note: This creates a high number of entities so do not use in levels with many entities. Also noteworthy: EFFECT_RAIN produces a set amount of raindrops - thereby if you add set its size smaller, more raindrops will be notably present than if you covered a wider area (spawnflag setting).
{
"classname" "effect_rain"
"origin" "470 -1200 700"
"spawnflags" "64"
}
Spawnflags of 64 is the range the rain will cover... ie: 64x64.
TRAP_SPIKESHOOTER: Standard laser or nail shooting trap except when used with Spawnflags of 4 it shoots rockets. It also takes an angle value so you can aim it better. Targetname allows this entity to be activated by another goal. The best example of this entity in use is in Frontline: it is what fires rockets when the tank is activated on the red's side.
{
"classname" "trap_spikeshooter"
"origin" "-969 -1734 -281"
"targetname" "shoot"
"spawnflags" "4"
"angle" "19"
}
EFFECT_LIGHTNING: Random flashes of lightning accompanied by the sound of thunder. Place one or more in open areas outside up high and maybe near walls so the lightning will reflect off surfaces. Examples of this are in Unholy Kingdoms and Haloween.
{
"classname" "effect_lightning"
"origin" "470 -1200 700"
"spawnflags" "512"
}
Spawnflags of 512 (or 100, or 256, etc) is the range the lightning will cover... ie: 512x512.
*** NOTE *** You can get an entity like this in your map and not have to edit the mapfile to change the range. Use any entity at all - like a light. Change the word 'light' to 'effect_lightning' and with SmartEdit off, add Key 'spawnflags' and Value '100' or whatever you want your range to be.
EFFECT_BURNER: A pulsing set of mild explosions and flames with randomization for burns.
{
"classname" "effect_burner"
"origin" "214 1035 -260"
}
EFFECT_AIRBURST: Explosions in the air (or ground) at randomized locations on a horizontal plane within 300 Quake units in any and all directions.
{
"classname" "effect_airburst"
"origin" "470 -1200 700"
}
EFFECT_STROBE: A quick flashing strobe light like airport runways have lined up on the sides. Flashes every 2 + 'height' seconds. The example below would actually flash every 5 seconds.
{
"classname" "effect_strobe"
"origin" "470 -1200 700"
"height" "3"
}
EFFECT_ROCKFALL: A trigger entity which plays the sound of loose rocks falling. If a 'height' is specified, a water splash will follow. Height of 120 is a one-second delay. The rockfalls in FrontLine are set at 400. Leave 'height' null for no splash sound.
{
"classname" "effect_rockfall"
"origin" "470 -1200 700"
"height" "120"
}
Mega Monsters:
NOTE: Monsters are currently disabled (Sept. 25 2000).
Ambush has reinstated many of the entities that were taken out of Team Fortress Internet play.
Turrets can be added to your map by first using the monster_dog entity. Place this underneath a solid surface; it will attach itself automatically. In Worldcraft, click on your monster_dog entity and hit ALT+ENTER. turn "smartedit" OFF and replace the word dog with monster. Add Key team_no and Value 1 (blue team) or 2 (red team). On the Flags tab, click the box UNDER "Ambush" for the turret to retract into the ceiling. Click the box BETWEEN "Ambush" and "Not in Easy" for the turret to fire rockets. The box UNDER that one makes it fire Lasers. Add bitfields together when needed.
Spawnflags:
2 = Retracts into ceiling
16 = Fires Rockets
32 = Fires Lasers
34 = Retracts & Fire Lasers
I'm unsure of any other settings at this time.
Bubbles can be placed anywhere, but look better in or nearby water. They produce an ambient sound of bubbling wherever you place an air bubble entity in your map.
Dogs are not only used by police but also by many branches of the Armed Forces, so the re-addition of dogs in Mega-TF is realistic. You can add dogs to your maps by placing one in from the entity list in your editor. Dogs, unlike the other creatures in Mega-TF, can be made team-loyal the same way a door is made to open only for a specific team. Give the dog a "team_no" and fill the field with the integer to which team he belongs, such as "team_no" "2" for a red-team-loyal dog. Leaving this setting (team_no) out will make the dog aggressive to all players.
Fish are also another element added to Mega-TF. Are Army men in the bush always going to come across a stream, pond, or swamp that doesn't have living things in it? I doubt it. Unlike dogs, you cannot make the fish team-loyal. It's very hard to train fish, you see. :}
Zombies are a not-so-realistic addition to Mega-TF, but upon my request, they were added into Mega-TF so that I could use them as decorative entities in my map, Unholy Kingdoms. With the Zombie's spawnflag set to crucified ("spawnflags" "1"), you can have a very nice wall decoration in the skankiest of dungeons. They wiggle around and make a hauntingly pleasant moaning sound.
Ducks will be able to be placed in a map. They are affected by touch and health. When a grenade goes off near a duck or when one is 'ran into' it quacks noisily and flies away. After some time, the duck will return, and quack quietly every so often.
Otis was one of the last things Ambush was working on adding. More info will be posted here as soon as it's available.
Mega Doors:
Tired of those same-ol' same-ol' door sounds that we were bored of after playing a single month of Quake? Now you have three more sounds from which you may choose, by giving your doors an armorclass value:
"armorclass" "1" - Creaky Door
"armorclass" "2" - Heavy Metal Door
"armorclass" "3" - Electric Door
Mega BSP Additions:
"func_glass" Tie to a brush for a solid glass pane.
"health" If greater than 0 the glass is breakable by damage.
"target" Can be moveable like a train.
"noise" Start motion sound if moveable.
"noise1" End of motion sound if moveable.
"func_bobbingwater" Tie to a brush with a water texture.
"speed" "3" How fast the water bobs.
Mega MapMaking Q&A
Can we make "soccer" maps with the kickable heads?
No, but Ambush has added code that allows us to use the round globe (light) sprite as a ball like in Sandball. These new goals are not TF goals - they're actually Ambush goals. :} Here are the goals you need and what they are used for:
{
"classname" "ball"
"origin" "0 0 80"
}
//puts the ball in the map
{
"classname" "ballstart"
"origin" "0 0 80"
}
//this is where the ball respawns to after someone scored and when map starts
{
"classname" "sandball_goal"
"origin" "-816 0 -102"
"team_no" "1"
"frags" "5"
}
//blue team's scoring goal
{
"classname" "sandball_goal"
"origin" "816 0 -102"
"team_no" "2"
"frags" "5"
}
//red team's scoring goal
Q: What do you think are good ideas for a map?
Another good question. I don't by any means expect mapmakers everywhere to start building maps like I describe in this section but I suppose I can offer up some of my own findings here. Every time I see someone yell "this level sucks!" or "this level rocks!" on our server, I ask why. The players are, figuratively speaking, the buyers of our products. If enough of them like our maps, they will get server admins to put them on rotation, or they will go to a server that has that map. Server admins don't want empty servers!
The players seem to like these things:
Q: What Rules of Thumb do you use?
Many!
1. Never carve unless absolutely required. Even then, I often carve in a new map and paste the object within the one I'm working on. Sometimes this reduces problems with carving, and at other times it increases them. I just have to try both methods each time and see which one doesn't present any problems. Pasting intricate objects has proven disasterous a couple times, too.
2. Make Backups. I usually save versions of my file sequencially, such as mymap1, mymap2, mymap3. I always save to a new file name just before carving, if I plan to carve at all. After I've settled on a room or new addition, I make a new file before starting on a new area.
3. Run QBSP and VIS often. I run them just to make sure the map will compile (I watch for errors while QBSP and VIS run). Most of the time I have "Don't run the game" checked. If ever an error is generated, there are 2 things I can do: 1) I have a backup of the map that did compile, so I may start from there if I need to. 2) I usually know what I did most recently and I can delete or fix the offending object as needed. Once VIS -FAST generates the "leaf portals saw into leaf" error, you will have to begin using VIS -LEVEL 1 to continue seeing your map with the benefits from VIS. At this point you may decide to keep working with QBSP and wait to apply VIS -LEVEL 1 when you are closer to being finished.
4. Never manipulate vertexes unless necessary. Some of the simplest vertex manipulations just fill a map with problems. If this happens, I'd rather create a new brush and manipulate the new brush's vertexes, or go without an unmanipulated brush, than to suffer with the map's potential for problems. Jim Kaufman AKA Sgt. Thundercok, (the author of Rock1, Well6, and SpazBall) gave some me good advice on this issue, also: never drag a vertex on a vertex, and save as a .map file after doing a new manipulation.
5. Build the Hard Way. Instead of making a hollow box (room), then creating a block brush, carving with the block brush to make a doorway and using the block as the door, I do this instead: Ungroup the box (room) and make one side of the room smaller. Copy and paste another one of those smaller sides to make the other side of the door. Create a new brush to use as a door. Why? Refer to Rule of Thumb #1 - never carve unless absolutely required! I automatically ungroup my room walls after I'm fairly certain of the size I need. Re-grouping them for whatever reason is easily done later. To make hallways, I make a long block brush, hollow it out, ungroup it, and then delete the ends. Regroup it, and position it where it needs to go. It takes less time than typing this did, and I type 60 WPM on a good day.
A model can be given to an info_TFgoal as well as an item_TFgoal. A resupplying bag, commonly called a backpack, is an info_TFgoal, whereas the "key" or "flag" is predominantly an itemTFgoal.
"origin" "1192 -12 -366"
"mdl" progs/shambler.mdl"
"frame" "39"
"angle" "180"
"classname" "info_tfgoal"
InfoTFGoal: This is a very unique beast, he's used for all sorts of things. He's invisible *unless* you give him a model, then people can see him. This makes it easy for MapMakers to use him for different operations such as removing all your gear, activating other goals, hurting someone, or giving an entire team Quad damage for five seconds. Fun with this goal is the "failed critera" check. Take some time to learn about that. Here is an example of a resupplying bag, or Backpack:
"g_e" "1"
"wait" "3"
"noise" "weapons/lock4.wav"
"ammo_medikit" "50"
"ammo_shells" "200"
"ammo_nails" "200"
"ammo_cells" "200"
"ammo_rockets" "150"
"armorvalue" "300"
"armortype" "0.8"
"armorclass" "2"
"no_grenades_2" "5"
"no_grenades_1" "5"
"health" "100"
"g_a" "1"
"mdl" "progs/backpack.mdl"
"netname" "team_1_ammo_lower"
"team_no" "1"
"classname" "info_tfgoal"
Some of the values are self-explanatory, but I will run through them really quick. Keep in mind there are many more values that apply to the info_tfgoal:
ItemTFGoal: This is the guy usually used for keys and flags. Item and Info goals share some values, but not all! Here is one of the Crystals from ICELAND3:
"delay" "30"
"non_team_broadcast" "blue's crystal has been taken!\n"
"team_broadcast" "red's have blue's crystal!\n"
"goal_no" "1"
"items" "131072"
"team_no" "2"
"noise4" "Their Crystal has Returned!\n"
"noise3" "Your Crystal has Returned!\n"
"skin" "1"
"group_no" "1"
"g_a" "693"
"noise" "items/inv1.wav"
"message" "you've got Blue's Crystal!\n"
"mdl" "progs/crystal.mdl"
"owned_by" "1"
"netname" "BluKey"
"classname" "item_tfgoal"
I'll run through the variables quickly, but remember there are many more than just these that apply to item goals:
ROTATOR - This is ROTATOR, an example map I created for people to better understand rotating brushes in Mega. Read the Textfile for more info.
EXAMPLE1 - Example map of a detpackable wall. Comes with text, map, and BSP.
FACESHOT - Animated face texture example map from Armin Rigo. Comes with text, map and BSP.
Quake.FGD with Mega TF Entities - This is a copy of DyerMaker's Quake.FGD file (be sure to save a copy of your old one). Put this in your Worldcraft directory, and WC will list TF ambients as well as Mega-TF ambients in the entity box. (If you've modified your FGD then you know how to extract the Mega ambients from this file.)
The original preserved copy of BluePrints is still at:
https://web.archive.org/web/20050904174741/http://www.backblast.com:80/blueprints/