Hi-Tags and Lo-Tags
These may seem complicated at first, but they are not. It is only the unfamiliar terms that cause confusion, so let's begin by clarifying the terms. There are only two kinds of tags: Hi-Tags, and Lo-Tags. A "tag" is simply a numerical value which can be assigned to any object (sprite, wall, or sector). An object can only be assigned one Hi-Tag, and one Lo-Tag. Every object that exists in the map will have a default Hi-Tag value of 0, and a default Lo-Tag value of 0. There is no such thing as floor or ceiling tags, so when you assign a tag to a floor or ceiling, it is actually being assigned to the entire sector.
Basically, you use a Hi-Tag and a Lo-Tag to tell an object what you want it to do. For example, if you give a sector a Lo-Tag of 2, you're telling it to act like water. This happens because 2 is the predefined numerical value for an underwater sector. There are a wide variety of predefined tag values to choose from, all of which are listed and explained throughout the guide. Another very common usage of tags is to establish a unique link or channel between objects, such as a door and the switch that activates it. The reason I'm referring to this link as a channel is because it wasn't until this term was introduced that I fully grasped the concept. A channel is simply a unique numerical value (of your choice) which two or more objects will share. For example, if this hypothetical door and switch were both assigned a channel value of 9, it would be said that they operate together on channel 9, and the switch would activate the door. No other functional object in the map should share this unique channel value or it will become part of the link.
Now, I must be very explicit here to avoid confusion. Predefined values and channels are two distinct and separate entities. Predefined tag values are hard-coded in the game, and they will never interfere with channels. For example, teleporters are created by assigning a predefined Lo-Tag value of 7 to a pair of special sprites. Then, both of those sprites must also share a unique channel Hi-Tag value in order to be linked together. Since the Lo-Tag value 7 is a predefined value, there is absolutely nothing wrong with also choosing to use a value of 7 as the unique channel value, because the predefined value and the channel value will not interfere with each other.
While predefined and channel values are the two most common scenarios, there are also many other specific uses for tags. The usage of the tag values varies depending on the circumstances. In the "Advanced FX" section, I will always let you know what the tags do and what values to assign to them, all you really need to know is how to assign the tags, and to choose your own unique channel values. As your maps grow in size, keeping track of which channel values are already in use becomes difficult. For this purpose, you can use the F6
key to display the next available channel value.
Assigning Tags
2D mode
Keypress | Function |
---|---|
T |
Used to enter a sector Lo-Tag. Place the mouse cursor inside the sector first. |
Alt + T |
Has the same function as T , except used for walls and sprites. Highlight the object with the mouse cursor first. |
H |
Used to enter a sector Hi-Tag. Place the mouse cursor inside the sector first. |
Alt + H |
Has the same function as H , except used for walls and sprites. Highlight the object with the mouse cursor first. |
3D mode
Keypress | Function |
---|---|
Apostrophe ( ' ) + H |
Sets the Hi-Tag of the current object (wall/sprite/sector). Aim at the floor or ceiling to set the sector Hi-Tag. |
Apostrophe ( ' ) + T |
Sets the Lo-Tag of the current object (wall/sprite/sector). Aim at the floor or ceiling to set the sector Lo-Tag. |
Special Sprites
These are the 10 'special sprites' that are used to construct the advanced effects in the game. They are simply placed in the sector to be affected, and then given tag values to determine how the sector should be affected. These sprites become intangible (invisible and unknown to the player) within the game. This list is cut-and-pasted directly from the "References - Special Textures" section, so don't be alarmed if it seems overdescriptive. You won't have to memorize or even read all of this (in fact, I fully encourage you to just skim through this section), but having at least a basic understanding of what these sprites are and what they do will help immensely.
TEXTURE# 1 SECTOREFFECTOR
The SectorEffector is used to manipulate sector attributes and create the game effects. Some SectorEffector functions can be combined.
Lo-Tag : A predefined number which tells a sector how to act. Check the "References - Sector/Effector Tags" section for the detailed list.
Hi-Tag : Channel
. Used to link another SectorEffector with the same Lo-Tag so they activate together.
Other : Set Palette, Shade, Angle, Height, etc, according to the rules of the selected effect.
TEXTURE# 2 ACTIVATOR
The Activator is used to activate the sector Lo-Tag function or SectorEffectors within the sector.
Lo-Tag : Channel
. Set equal to a sprite's Lo-Tag used to activate it (such as a Switch, Access Switch, or Touchplate).
Hi-Tag : [0] = Default. [1] = Open door only. [2] = Close door only. The latter two modes are only intended to work with vertical doors.
TEXTURE# 3 TOUCHPLATE
The Touchplate will activate an Activator, ActivatorLocked, or MasterSwitch when triggered by the player's presence.
Lo-Tag : Channel
. Set equal to an Activator, ActivatorLocked, or MasterSwitch Lo-Tag.
Hi-Tag : [0] = Activate every time the player triggers the Touchplate. [>0] = Activate this many times then never again.
Palette : [>0] = Single-Player-only (the only known sprite which does the exact opposite of the usual palette effect).
Angle : [Down] = Activate when the player enters the sector. [Up] = Activate only when the player steps on the floor of the sector.
Height : If the Touchplate is not at the same height as the floor of the sector, it will function as an "automatic floor rise/lower" effect. The Touchplate height determines the floor's initial height, and the sector floor height determines where it will raise/lower to when triggered. This does not require a Channel
value to work. However, "automatic floor rise/lower" Touchplates sharing a Channel
value will trigger each other, and you can even place more than one of them in the same sector to create a "springboard" floor function (although this effect isn't perfect and tends to get stuck). In the case of multiple Touchplates being in the same sector, the initial height of the floor is determined by the height of the Touchplate with the highest sprite number (i.e. newest by order of placement). The "automatic floor rise/lower" effect is silent, but the Channel
could be used to activate other effects with MusicAndSFX. All other attributes of the Touchplate will apply as usual. Note that an "automatic floor rise/lower" Touchplate effect will conflict with other effects which raise/lower the floor if they are located within the same sector. Many of them will react in unexpected and interesting ways, some of which are undoubtedly useful.
GPSpeed Lo-Tag : If the "automatic floor rise/lower" effect is used, this will determine its speed. The default speed of the effect is equivalent to using a GPSpeed with a value of 256.
TEXTURE# 4 ACTIVATORLOCKED
The ActivatorLocked locks a sector's Lo-Tag function until the player unlocks it with a trigger. Most triggers cause a "unlocked"/"locked" message to be displayed.
Lo-Tag : Channel
. Set equal to a sprite's Lo-Tag used to unlock it (such as a Switch, Access Switch, or Touchplate).
TEXTURE# 5 MUSICANDSFX
The MusicAndSFX sprite can be used in a few different ways:
- Activation Sound
When used in a sector with a Lo-Tag, the sound will play when the sector's Lo-Tag function is activated.
Lo-Tag : Primary sound number.
Hi-Tag : Secondary sound number.
Palette : [1] = Multiplayer-only. - Ambient Sound
When used in a sector without a Lo-Tag (although there are some exceptions), an ambient sound will be played.
Lo-Tag : Ambient sound number.
Hi-Tag : Maximum audible radius from center (1024 = The largest grid square).
Palette : [1] = Multiplayer-only. - Random-Ambient Sound
When used in a sector without a Lo-Tag (although there are some exceptions), and with a 'random-ambient' compatible sound, a user-determined range of sounds will be played in a random order at random intervals. The sound will be globally heard anywhere within the sector. A random sound will always be triggered immediately upon the player's first entry into the sector. If the player starts the game within the sector, the same initial sound will always be chosen (probably a byproduct of the methods used to randomize). Note that the range value is the consecutive range following the base sound, so a range value of 3 would actually include 4 sounds (the base sound, and the next 3 consecutive sounds).
Lo-Tag : Base sound.
Hi-Tag : Consecutive range of sounds (after the Base sound).
Palette : [1] = Multiplayer-only. - Echo Effect
When used in a sector without a Lo-Tag, all sounds will have an echo effect.
Lo-Tag : 1000 + the amount of echo from 0-255.
Hi-Tag : Maximum audible radius from center (1024 = The largest grid square).
Palette : [1] = Multiplayer-only.
TEXTURE# 6 LOCATORS
The Locator is used to define the series of points that a Recon Patrol Vehicle or a Subway Vehicle/Two-Way Train will follow. You can only have one Locator path set in a sector. You cannot have a Recon Patrol Vehicle and a Subway Vehicle/Two-Way Train in the same map.
Lo-Tag : Set in an increasing order beginning with 0. When the vehicle reaches the last point, it will loop back to the Locator with Lo-Tag 0. Two-Way Trains only use two Locators.
Hi-Tag : If set to 1, the Subway Vehicle will stop at that point for approximately 5 seconds, then continue. The Recon Patrol Vehicle and Two-Way Train are not affected.
TEXTURE# 7 CYCLER
The Cycler is used to make a sector pulsate in brightness. It is often used with a GPSpeed to set the pulsating speed.
Lo-Tag : Sets the initial brightness offset. To make a travelling light effect, use multiple Cyclers with incremental offset values, and multiple GPSpeed sprites with a constant pulse speed value.
Hi-Tag : Channel
. Set equal to a sprite's Lo-Tag used to activate it (such as a Switch, Access Switch, or Touchplate).
Palette : The Cycler palette has no effect. The sector palette will be permanent.
Shade : Set the Cycler shade to when the light is at its brightest point. Set the sector shade to when the light is at its darkest point.
Angle : [Down] = Begin in the 'disabled' state. [Up] = Begin in the 'enabled' state.
GPSpeed Lo-Tag : Sets the rate of the light pulse. Value ranges from 1 (roughly one cycle every 120 seconds) to 1023 (roughly eight cycles per second). The default speed of the effect is equivalent to using a GPSpeed with a value of 256.
TEXTURE# 8 MASTERSWITCH
The MasterSwitch activates Sector Lo-Tags or SectorEffectors. It is very similar to the Activator, except it has a time-delay ability and it only activates once (after which the player will have manual control, if feasible). It will also detonate any SEENINE
/OOZFILTER
explosives in the sector, regardless of their tag values.
Lo-Tag : Channel
. Set equal to a sprite's Lo-Tag used to activate it (such as a Switch, Access Switch, or Touchplate).
Hi-Tag : Set time-delay until action occurs (a value of 30 = 1 second).
TEXTURE# 9 RESPAWN
The Respawn is used to spawn an actor or an item when triggered by an action, or when the player kills an actor.
Lo-Tag : Channel
. Set equal to a sprite's Lo-Tag used to trigger it (Switch, Access Switch, Touchplate), or set equal to a FEM
actor's Hi-Tag. It can also be triggered directly by an Activator (this is a bit obscure though).
Hi-Tag : Set equal to the sprite number to spawn. Use any sprite number which has a name assigned to it (although many will not be compatible). Check the "References - Compatibility Listings" section for the complete list.
Palette : [>0] = Respawned Boss becomes Mini-Boss affected by palette value (21 is the standard choice) (only the Battlelord is usefully compatible with this feature). [1] = Multiplayer-only (has side-effect of making a Respawned Mini-Boss spawn with palette 1).
Angle : All sprites spawn with an angle value of 0 (facing East on the map grid), regardless of the Respawn sprite's angle.
TEXTURE# 10 GPSPEED
The General Purpose Speed is most commonly used to determine the speed of an effect.
Lo-Tag : Rate of movement.
Finishing Up
Unbelievably enough, Sector Effector is actually the appropriate spelling according to the dictionary, which is bollocks if you ask me. You don't Effect something, you Affect it! Anyway, back to business.
In the "Advanced FX" section, I will use the following format to describe any object:
texture[Hi-Tag,Lo-Tag]
Usually, I prefer to list textures by their actual name as given in the editor. However, since these 10 special sprites will be mentioned especially often, I'll be abbreviating them to match their appearance in the images. For example, instead of saying "place a SectorEffector", I'll just say "place an S
". So if I wanted to say "Place a SectorEffector with a Channel
Hi-Tag and a Lo-Tag of 11", I would say it simply and concisely like this: "Place an S[Channel,11]
". If any of these sprites are in brackets, it means that they are not mandatory, but are instead optional additions. For example, in "S[Channel,11]
(Speed[0,Speed]
)", the Speed
sprite is optional.
Sector and Wall Tags are referred to in the same format, although usually omitting the "texture
" part, since it rarely matters. So if I wanted to say "Give the sector a Hi-Tag of 1, and a Lo-Tag of 15", I would say it like this: "Tag the sector [1,15]
".
You may notice that when you assign tags to an object, the object displays those tags in 2D mode. Throughout the entire guide, I virtually always omit sprite tags from the images. I do this for two reasons: 1) Sprite tags add unnecessary clutter to the image, since the tag information would be a duplicate of what's already written above the image. The vast majority of the time, the sprites remain easily distinguishable from each other without their tags, 2) To discourage readers from ignoring the written tutorial and just copying what's shown in the images. Doing so would not only prevent them from using their brain and actually learning new things, it is also likely to result in malfunctioning effects due to overlapping channel values and differences in the physical map setup. The only sprite I make an exception for is the Locator, because it is easier to differentiate between multiple Locator sprites when they have visible tags. I also make an exception for sector tags, because otherwise it would be impossible to tell exactly which sectors are tagged.
At this point, I would like to provide a quick list of the text colour-coding used throughout the guide. This is only for the sake of completeness, since all of the colours are quite self-explanatory when seen in context, as you may have already noticed.
blue | Denotes a link. |
lime green | Denotes textures, and their tags if applicable. |
yellow | Denotes a keypress or combination of keypresses. |
cyan | Denotes some form of troubleshooting or a question. |
gray | Denotes prompt commands/output or configuration code. |
orange | Denotes a sound as being ambient compatible. |
magenta | Denotes a sound as being random-ambient compatible. |
red | Denotes an item as nonexistent or unavailable. |
Occasionally, I also use colour-coding in images, but it's always explained above the image. I also use a different style of text to denote filenames and tag names (such as Channel
).
Hopefully, you haven't been overly confused by Tags. I have tried to refine their description to a very concise but complete form, in such a way that I wish had been presented to me when I was first learning how to use the map editor. This stuff will come to you with practice. When you think you have a basic grasp of it, then it's time to learn some Tricks.