(Recovered Goodies)

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.

What's New?!

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

    • NOTICE: New bit, 32, for Info Goals. This bit forces any players affected by the goal to respawn without dying. Now supported in Mega2K as of 06.07.00. N.B. Adding goal_result bitfields such as 2 and 32 would affect only the Activating Player and send him back to Respawn: "Goal_Result" "34"
    • New bit, 4096, for Item Goals. This is what allows players to use the "dropitems" command.

Goal_Activation

    • NOTICE: New bit, 2048, for Info Goals and Item Goals which force the goal / item to drop to the ground when it first spawned is now supported in Mega2K as of 06.09.00.
    • NOTICE: New bit, 8192, for Item Goals. This bit makes the Item Goal solid; which means it blocks bullets, grenades, even players who don't pass the Item Goal's criteria. Now supported in Mega2K as of 06.09.00.

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:

    • "h_i_g" for "has_item_from_group"
    • "r_i_g" for "remove_item_group"
    • "a_s" for "ammo_shells"
    • "a_n" for "ammo_nails"
    • "a_r" for "ammo_rockets"
    • "a_c" for "ammo_cells"
    • "rv_s_h" for "remove_spawngroup"
    • "rs_s_h" for "restore_spawngroup"
    • "rv_gr" for "remove_group_no"
    • "rs_gr" for "restore_group_no"
    • "rv_g" for "remove_goal_no"
    • "rs_g" for "restore_goal_no"

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:

  • Flaginfo now allows you to specify only some of the flaginfo strings.
  • GoalItem return messages appearing when Goal's force returns. Will fix "flag has returned" when capturing a flag.
  • GoalItem Drop initial origin changed.
  • Criteria for Spawnpoints working correctly now.
  • Activating Goals remove their model correctly again.
  • All abbreviations working correctly now.
  • Grenade removal goals remove primed grenades as well.

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.

  • Custom Ambient Sound:
{
"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)
}
  • Ambient Repeating Sound at a Random Range Interval:
{
"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

Sage mapmaking advice...

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:

  • Moving things. Trains are a big hit, especially complex ones. Platforms, doors, trigger_pushes, moving things.
  • Warps. Why are there hardly any warps in TF maps? I've been thinking how it's a nice way to keep enemies from ammo rooms, and it can also be used to cut down on r_speeds. If the ammo room doesn't connect to anything, a MapMaker can just go gung-ho in creating a very spectacular place to respawn to. It would be a safe place to type things like "Flag is outside our base!" or even "Hi Dyer!" as well. :}
  • Things they can make work, or disable. The cannons in Warships. The way The Rock's mine shaft can be fixed. The way Engineers can operate things in the 2Tech series. Disabling the elevators in Well6 (engineers can do this by building things half on and half off the elevators, ask one to show you).
  • New ways of scoring. Gold Rush (bringing gold to your bank's vault), Canalzon, The Border, Hunted President. The only problem with maps like Hunted is that the "guards" can kill the President, which makes the map woesome when people don't know how to play it. TF MapMakers are hoping TF2 will solve problems like this that MapMakers face.
  • Several ways into the key. Someone told me 3 ways in and 2 ways out are nice. Making a hole you can drop down into but never get back up would be a way to do this (Oppose1), or putting a trigger_push that only allows a player to go one direction (Oppose1 again). Three ways in allows the offense a good chance, and 2 ways out give the defense a good chance, too.
  • Make them work together at something besides scoring. For example, Gold Rush has banks in which the players work together to "buy" bank alarms. The first level of the bank's alarm sets off an audible alarm. The second causes a little pain to the enemy when he enters and leaves the bank (and the alarm goes off). The third and final level gives everyone on that bank's team Quad damage whenever an enemy enters or leaves the bank (as well as the first two alarms). The players are so busy bringing gold to upgrade their bank's alarm, its like a mad rush to the gold mines. Few shots are fired, and they don't much bother with scoring until their bank has been upgraded. Since the enemy team can rob their bank and score, they want protection. And besides, who doesn't love Quad damage? :} The fate of the game rests upon who's bank has been upgraded and to what level.
  • Architecture. Often a map becomes a favorite just because of it's beauty, but us TF MapMakers have to be so careful of the r_speeds. We need to counter one with the other.
  • Water ways in to the base is a big hit, in case the entire enemy team consists only of snipers.
  • Levels that allow each class to play their best. Engineers need places to put sentries. Snipers need places with shadows to hang out. In Iceland3 I've given snipers a team-only and class-only bag that restocks them slowly on the sniper ledge so they don't have to run back for ammo, health, or armor. They do like to be alone in their world. I've also given them illusionary burms in the snowfield to hide in. HWGuys like long-range line-of-sight so they can see an enemy coming and have time to spin up. Demomen like to have something to detpack. You get the idea. We won't be putting Sniper War on our server, sorry.

Intermediate MapMaking Issues

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.

Model issues, info TF goals and item TF goals

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.

  • Skins: You may choose which skin you want to use on a model by adding "skin" "X" where X is the number of skin you want.)
  • Frames: If the model has many frames (such as player.mdl) you may also choose which frame you want to use by adding "frame" "X" where X is the frame number. I've posted this on the Advice page but I think it will go well here, too: Here is the reference in my map for the Shambler (ICELAND3's Abominable Snowman):
"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:

  • g_e is Goal Effects. This setting (1) means that only the player is affected. According to TFENTREF, we could ammo up the whole team, now wouldn't that be sweet? :P This setting is not needed since it is default. However, if I took it out, I don't think we'd see the happy little background flash when you touch the bag.
  • Wait of 3 means the resupply bag will resupply someone else in 3 second (I hate waiting at resupply bags, myself!).
  • Noise is the sound you hear (a wave file) when the bag refills you. Ambush (of Ambushed! Mega-TF Mods) found this wav for me. Everyone already has it in their pak files. The next 11 items are of course how much ammo / armor / health / grenades to give. Remember that negative numbers actually take things away.
  • The g_a is Goal Activation, which is set to one: Activated when touched by a player.
  • The MDL as you can see is the backpack model. This particular model is already in Quake (less for players to have to download).. Notice the forward-leaning slash, that's very important!
  • Netname doesn't mean anything to the map. All it is there for is so that I know exactly what goal this is. It's evidently one of team one's lower ammo packs. :}
  • The team_no is set to team one because even if the Reds (team 2) get into the Blue's lower ammo room, they're not gonna get any goodies. And why should they! :P

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:

  • delay is how long to wait before returning if the key is dropped by a dying player, in seconds.
  • the broadcast messages are fairly self-explanatory. Be sure to put a carriage return (the "\n") after any messages you add to your goal.
  • Goal_no is the unique number of this goal. When captures happen, the capturing goal (info_tfgoal) references this unique number with the axhitme line, thereby removing the goal from the capturing party, such as: "axhitme" "1". If there is not goal_no on your item goal and you try to capture it, you will get "could not find a goal item with a goal number of 1" spammed across your screen, and you'll run around glowing like a banshee...
  • Items specifies which item to light up on the player's console. 131072 makes the silver key icon light up and 262144 is the gold key icon. Pretty cool, huh?
  • team_no means only one team can activate this goal, usually the enemy team.
  • skin is of course which skin of the crystal.mdl that this goal will use. This can be left out when using models with only one skin.
  • group_no: If the item belongs to a group, here is how you tell it which group it's in. Makes it handy when your info_tfgoal can "activate_group_no" "1" instead of having to reference a bunch of goals individually.
  • g_a: Goal activation of an item_tfgoal is different than that of an info_tfgoal. I use the TFENTREF file and just add up the bitfields:
      • 1 : Carrying Player glows.
      • 2 : Carrying Player moves at half speed.
      • 4 : Item is dropped when a player with it dies.
      • 8 : Item is returned when dropped.
      • 16 : Item is returned when removed from players by a Goal
      • 32 : Item is returned due to "pausetime" (see below)
      • 64 : Only activated (picked-up) if AP fails Criteria.
      • 128 : Enable "pausetime" removing.
      • 256 : Players keep this item when they die.
      • 512 : If this Item isn't being carried, it glows dimly.
      • 1024: Don't remove the results of this Item when it's removed from a player.
    • My Crystals, set for 693, means that the bits for this goal are 1010110101. 1 means the bit is used and 0 means it's not. Basically, I'm using bits 1, 4, 16, 32, 128 and 512 which adds up to 693. Here is how my Crystal behaves:
      • 1 : Carrying Player glows.
      • 4 : Item is dropped when a player with it dies.
      • 16 : Item is returned when removed from players by a Goal
      • 32 : Item is returned due to "pausetime"
      • 128 : Enable "pausetime" removing. (strange, I don't have a pausetime setting) hmmm
      • 512 : If this Item isn't being carried, it glows dimly.
  • Noise is the sound you hear when you grab the key, in the form of a wave file.
  • MDL is of course the model. Be sure to note the forward-leaning slash!

FILES ARCHIVE

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.)