There is no spoon
Legacy:Mapping For Flag Domination
Flag Domination: Like a cross between CTF and Domination, FD starts out with two or three flags in the center of the map, and teams score points by capturing the flags at their designated locations.
Be sure to look at the flags and monitors in the existing maps to make sure you understand how all this stuff works. If you have any questions, visit my forums, or just add comments to this Wiki page :)
This document covers mapping for the UT2003 version of Flag Domination. Mapping for the UT version is similar.
A map can have either two or three flags. For each flag, there must be one FDBase, and one FDCapture per team. The inheritance chain for both is:
Keep in mind that, as in CTF, the visible flag base decoration will be created at run time, so it's normal for the flag not to touch the ground in UnrealEd.
You can also use the AFlagBase, BFlagBase, and CFlagBase classes, especially if you don't plan to have custom names and symbols. They were created for use by the automatic flag placement in Vehicle Flag Domination, but they're also convenient for mapping. The come with their skin, index, capture event, name, and symbol pre-set.
- The name of the flag. This will be used in HUD messages, as well as for matching the flag base up with capture points, banners and monitors.
- The symbol that appears on the flag and in the HUD, monitors and banners. The default A, B and C symbols are in FDFlags.utx: FDFlags.Symbol.A_Logo, etc. Custom symbols can be either masked or alpha. Don't forget to set UClamp and VClamp to TC_Clamp after importing them, and try to keep the symbols a good distance from the edges or the clamping effect will become noticeable at smaller sizes.
- Triggered whenever a flag is captured or stolen. This is the event used by the monitors.
- Controls the order in which flags are displayed in the HUD: use the values 0, 1 and 2. If left at -1, the flags will be displayed in the order in which they were placed in the map. The A/B/CFlagBase classes have this set appropriately by default.
- Each FDBase must have a different skin (otherwise they won't show different symbols). FDFlags.utx has three versions of the black skin, plus orange, magenta, and cyan skins. Be sure to use the FinalBlend versions. You can also, of course, use a custom skin. Just make sure a white flag symbol will show against your skin.
- Can be set to a value higher than 1; this will be used in Timed scoring as the number of points scored at every interval.
- Set this to the same name as the corresponding FDBase.
- 0 for Red and 1 for Blue.
- See Defense, below.
- Triggered when a flag is captured at this point.
- Triggered when a flag is stolen from this point. Added in version 3.3.
- The skin will be set at run time, but you may want to set it in the map just so it looks better while you're editing it.
The original UT Flag Domination had a special FDDefensePoint; this is not needed in UT2003/2004, which has a built-in mechanism for associating a defense point with a particular GameObjective. Set the FDCapture's GameObjective->DefenseScriptTags to something unique, like 'BlueMooseFlag', and then add UnrealScriptedSequences (Actor->KeyPoint->AIScript) where you want the bots to stand. Set the Tag of each one to the same value as the FDCapture's DefenseScriptTags. Don't forget to point them in the right direction.
Banners and Monitors (look under Decoration)
Like the flags, banners and monitors must have a skin that corresponds to their flag. The skins are in FDBanners.utx, and they're numbered. It doesn't matter which skin number goes with which flag, as long as you're consistent. Remember to go by flag, not by team. There are also additional numbered versions of each banner/monitor with the corresponding skins set by default.
As with flags, the thing to remember is that two objects with the same skin will always look the same. They don't have copies of the same skin, they actually share one skin between them. That's why FDBanners.utx has three copies of each.
FDMonitor is just like xDOMMonitor, showing the capture status of a flag. Set the FlagName to match the ObjectiveName of the FDBase, and make sure each FDBase's CaptureEvent is unique (normally FDCap1, 2 or 3). Set xDOMMonitor->ActiveShader, BlueShader and RedShader to the appropriate skin for the flag (ie FDBanners.Monitor.GrayScreen1, GrayScreen2, etc). The other shader fields are not used. The monitor will automatically pick up the flag's symbol based on the FlagName.
(Note that FDCapture also has a CaptureEvent field. This event is triggered when the flag is captured at that point, whereas the FDBase's CaptureEvent is triggered when the flag is captured, or picked up, by *any* team.)
- FDxTeamBanner actually works like a monitor (as does xTeamBanner, though their neutral skin is broken). If you don't want it to change, just set the Tag to None, set the skin to whichever for the team and flag (use gray to mark the flag's home base area), and set the Team value to 0 or 1. If you do want it to change, set the BlueSkin, RedSkin, and GraySkin fields as needed, in addition to the Tag.
- FDBlueBanner and FDRedBanner are the hanging banners as seen in FD-Canyon. Again, set the skin number as necessary. These banners don't change, so the Tag doesn't matter.