Basics of UMS Mapping

So, you want to get into Starcraft mapping, but don’t have any idea what all those words in the Triggers box mean? Well, before you go spamming the UMS Map Making Assistance forum with “OMFG HELP HOW DO I MAKE A MAP”, read this tutorial.


First, open up your Starcraft Campaign Editor (or StarEdit, as we like to call it). From there, go into ‘Scenario’ then ‘Triggers’ (or press Ctrl + Shift + T if you like hotkeys). You’ll see this:


I’m guessing you’re not making a melee map since you’re reading this, so delete all of those triggers that are already there. Now, press ‘New’ and we can get started!

Players:


• If you select Player 1 – 8, the trigger will ONLY work for the player(s) selected when the conditions are met (if you don’t know what a condition is, that’s next). You can select multiple options.
• If you select All Players, the trigger will run for – that’s right – all players when the conditions are met.
• If you select Force 1 – 4, the trigger will run for players in the selected force when the conditions are met. You can change the forces in Scenario > Forces, or by pressing Ctrl + Shift + F.

Select the “All Players” option and click “Next.”

Conditions:


Conditions are the things that have to happen for a trigger’s actions to start.

There’re a lot of conditions, and I’m going to go through all the ones available for basic StarEdit (there are better mapping programs out there, such as SCM Draft, for more advanced users), so if you’re looking for one specific condition, you might just want to Ctrl + F it in your internet browser. I have the variables for each example trigger underlined.
ACCUMULATE: Causes the trigger to fire when the selected player gathers an amount of resources (minerals and/or gas) that you choose. (Ex. Player 1 accumulates at least 50 ore. Trigger fires when player one passes the 50 mineral mark.)
ALWAYS: This pretty much means there is no condition, it’ll happen ASAP. If you put ‘Always’ in a trigger with other conditions, it’s pointless. (Ex. Always. Trigger fires.)
BRING: Causes the trigger to fire when a certain unit, or group of units is brought to a location. (Ex. Player 1 brings at least 2 Terran Marine to ‘Location 0.’) NOTE: ‘Anywhere’ means anywhere on the map, not just any location. Also, there are some units that bring doesn't work with, like map revealers, and some that you might be surprised that it works on, like dark swarm (although you can't detect dark swarm with basic StarEdit).
COMMAND: Causes the trigger to fire when the player owns the number of units specified. (Ex. Player 1 commands at least 2 Terran Marine. Trigger fires when player 1 has at least two marines somewhere on the map.)
COMMAND THE LEAST: Causes the trigger to fire when the current player (that’s technical jargon for the player you first selected before going into conditions, ‘All Players’ in our case) is the player who owns the least of a type of unit (Ex. Current player commands the least Terran Marine. Trigger fires when the current player has the least marines out of anyone else.) NOTE: If you try to use this condition with ‘All Players’ it won’t work how you want it to.
COMMAND THE LEAST AT: The same as COMMAND THE LEAST, but more specific. This causes the trigger to fire if the current player has the least units at a certain location. (Ex. Current player commands the least Terran Marine at ‘Location 0’. Trigger fires when someone else has more marines in Location 0 than the current player.) NOTE: This also won’t work how you want it to if ‘All Players’ is selected.
COMMAND THE MOST: The opposite of COMMAND THE LEAST. Causes the trigger to fire when the players owns more of a certain type of unit than anyone else. (Ex. Current player commands the most Terran Marine. Trigger fires when the current player has more marines than anyone.) NOTE: See above note.
COMMAND THE MOST AT: The opposite of COMMAND THE LEAST AT. I think you get the idea with these COMMAND conditions.
COUNTDOWN TIMER: Causes the trigger to fire when the countdown timer (a little timer that you can make appear at the top of the screen with the SET COUNTDOWN TIMER action) reaches a certain amount of time left. (Ex. Countdown timer is at least 10 game seconds. Trigger fires when there’s 10 game seconds left until the timer runs out.) NOTE: You can’t put in values like 1:12, instead you have to use the number of seconds, so 1:12 would be 72. Also, game seconds are different from real seconds, so if you think that your triggers are off, don’t get irritated, because they aren’t.
DEATHS: Causes the trigger to fire when the player has lost X number of a type of unit. (Ex. Player 1 has suffered at least 2 deaths of Terran Marine. Trigger fires when two of Player 1’s marines die.) NOTE: Deaths is one of the most useful conditions next to Bring, read Falkoner’s “Death Counts” tutorial to find out how to best utilize them.
ELAPSED TIME: Causes the trigger to fire after X number of game seconds from the beginning of the game. Keep in mind that this is completely independent of COUNTDOWN TIMER. (Ex. Elapsed scenario time is at least 10 game seconds. Trigger fires after the game has been going for 10 seconds.)
HIGHEST SCORE: This condition is a bit confusing. You know the debriefing screen that shows up after your game that has the lists of points? Well, this relates to it. Causes the trigger to fire when the player has the highest amount of points of a certain type. (Ex. Current player has highest score Kills and Razings. Trigger fires when the player has the most points from killing units and destroying buildings.)
KILL: Causes a trigger to fire when a player kills X number of a certain type of unit. (Ex. Player 1 kills at least 2 Terran Marine. Trigger fires when player 1 has killed two or more marines.)
LEAST KILLS: Causes the trigger to fire when the current player has killed the least of a certain type of unit. (Ex. Current player has least kills of Terran Marine. Trigger fires when player is the most friendly to marines.)
LOWEST RESOURCES: Causes the trigger to fire when the current player has the least minerals and/or gas. (Ex. Current player has least minerals. Trigger fires when the player is the poorest on the map.)
LOWEST SCORE: The opposite of HIGHEST SCORE. Causes the trigger to fire when the player has the least points. (Ex. Current player has lowest score Units and Buildings. Trigger fires when current player has the least points from making buildings and training units.)
MOST KILLS: The opposite of LEAST KILLS. Causes the trigger to fire when the current player has killed the most of a certain unit type. (Ex. Current player has most kills of Terran Marine. Trigger fires when player has been the least kind to marines.)
MOST RESOURCES: The opposite of LOWEST RESOURCES. I think you can take a guess at this one.
NEVER: Causes the trigger to never fire. Ever. In case you’re wondering what the point of NEVER is, it’s good for testing when you want a certain trigger to not run, but you don’t want to delete the whole thing. (Ex. Never. Trigger doesn’t fire.)
OPPONENTS: Causes the trigger to fire when the selected player has a certain number of people unallied with them. (Ex. Player 1 has at least 7 opponents remaining in the game. Trigger fires when there are at least 7 players who aren’t allied with player 1, although it would be hard to get more than 7 opponents.)
SCORE: Causes the trigger to fire when a player has a certain amount of points of a specified type. (Ex. Player 1 Kills score is at least 9000. Trigger fires when player 1 has OVER NINE THOUUUSAAAAAND points from killing units.)
SWITCH: Causes the trigger to fire when the selected switch is cleared or set (if you don’t know what a switch is, read Falkoner's tutorial on switches). (Ex. Switch 1 is set. Trigger fires when switch 1 is in set status.)
That’s all the conditions! Now, go back up to COMMAND and use:
Current player commands at least 2 Terran Marine.
And click ‘Next.’

A NOTE ON CONDITIONS:


If you have multiple conditions in a trigger, the trigger will only fire if every condition is fulfilled, not just one. If you want something to happen from only one condition, but you want multiple things to set it off, make the trigger with one condition and use the ‘Copy’ button to make a copy of the trigger, and the ‘Modify’ button to change the condition of the new copy. This technique is useful for whenever you need to make a lot of very similar triggers.

Actions:


Actions are (obviously) what a trigger does once the conditions are met.

Once again, I’ll be going through all of them, so if you’re looking for a specific action, use Ctrl + F.
CENTER VIEW: Centers the selected player’s on a specified location.
COMMENT: Gives the trigger a label so, when viewing the trigger in the main trigger window, it doesn’t display the actual trigger information, but instead the comment. Ex.:


Useful for quick reference when searching through a massive list of triggers for a certain one.
CREATE UNITS: Creates an exact number of units at a location for the specified player.
CREATE UNITS WITH PROPERTIES: The same as CREATE UNITS, but you can change the units that come out a little. You can make them cloaked (if they can have the Cloak ability), invincible, burrowed (if they can have the Burrow ability), hallucinated (as in the High Templar ability), or In-Transit (if they are buildings with the Lift-Off ability, i.e. Barracks, Factory). You can also change the percentage of remaining hit points, shields and energy. If you create a mineral field or vespene geyser, you can change the amount of minerals or gas in it by changing the number in the ‘Resources’ field. If you create a carrier or reaver, you can change the number of interceptors or scarabs (respectively) it spawns with by changing the number in the ‘In Hangar’ field. In Hanger doesn't work on Vulture spider mines.
DEFEAT: Exactly what it sounds like, it makes the current player lose.
DISPLAY TEXT MESSAGE: Causes the player to see a message on the left side of the screen, as they would in chat. NOTE: Remember to have the ‘Always display’ box checked.
• DRAW: The game ends in a tie for everyone.
• GIVE UNITS TO PLAYER: Gives an exact number of units owned by a specified player at a location to another specified player. (Ex.: Give 2 Terran Marine owned by player 1 at 'location 0' to player 2. This takes player 1’s two marines and makes them belong to player 2.) NOTE: The ‘All units’ checkbox starts out checked. Uncheck it to change the number of units that are given.
KILL UNIT: Kills every unit of a certain type owned by the specified player, no matter where they are, or their properties. Yes, this even kills invincible units.
KILL UNITS AT LOCATION: Kills an exact number of units owned by a player at a specified location. Like KILL UNIT, but with a sniper rifle.
LEADER BOARD: There’s a lot of different types of leader board, but they all do the same thing, they show little colored boxes in the top left corner and a number, and that number is whatever it’s tracking. With a leader board, you can track:
  • Units of a type owned at a location (CONTROL AT LOCATION)
  • Units of a type owned (CONTROL)
  • Minerals and gas (GREED)
  • Kills of a unit type (KILLS)
  • Points (POINTS)
  • Minerals OR gas (RESOURCES)
Also, a leader board with a set goal can be made using LEADER BOARD GOAL. This is especially useful when you want the leader to be the one with the lowest number. To do that, set the goal as something low, like zero.
LEADERBOARD COMPUTER PLAYERS: Changes whether or not computer players are shown on the leader board.
MINIMAP PING: Makes a ping on the minimap (those little lines that form a square around something) at a location for the selected player.
MODIFY UNIT: This action modifies the same numbers you can change if you use CREATE UNITS WITH PROPERTIES. These are hit points, energy, shields, hangar count, and resources. NOTE: CREATE UNIT WITH PROPERTIES is for making modified units, while MODIFY UNIT is for changing existing ones.
CENTER LOCATION: This moves a location to a specific unit owned by the selected player. (Ex. Center location labeled 'location 0' on Jim Raynor (Marine) owned by player 1 at 'Anywhere'. This will move center Location 0 on player 1’s Jim Raynor.) NOTE: This doesn’t work very well if a player owns more than one of the type of unit you’re trying to center the location on. It can work, but you have to make sure that another unit of the same type of the one that you want to track NEVER enters the tracking location, or it might get mixed up and start tracking the wrong unit.
MOVE UNITS: This teleports units owned by the selected player from one location to another.
MUTE UNIT SPEECH: This silences all the sound except for .wavs you might be playing using PLAY WAV.
ORDER: Tells all units of a type at a location belonging to the specified player to do something (move, patrol, or attack) to another location. (Ex. Issue order to all Terran Marine owned by player 1 at 'Location 0': Attack to 'Location 1'. All of player 1’s marines at location 0 will attack to location 1.)
PAUSE GAME: Pauses the game for everyone.
PAUSE TIMER: Pauses the countdown timer for everyone.
PLAY WAV: Plays a selected .wav file for the selected player. A .wav file is a low-quality, old sound file that was popular when Starcraft came out. Before you can play a .wav in a map, you have to import it using Scenario > Sounds, or Ctrl + Shift + S. NOTE: Having just a few .wav files can really jack up your file size, therefore making the download longer. People don’t typically like long downloads, so be careful what you use!
PRESERVE TRIGGER: Makes the trigger fire whenever the conditions are fulfilled. Be careful with these and always put a WAIT before them unless you want a constantly running trigger (which will really lag things down).
REMOVE UNIT: Removes all of a player’s units of a certain type without killing them; more or less makes them disappear forever. Good if you need to get rid of a unit, but you have a trigger that will go off if you kill it.
REMOVE UNITS AT LOCATION: Just like KILL UNITS AT LOCATION, but removing instead of killing.
RUN AI SCRIPT: This is basically useless with just StarEdit. Ignore it.
RUN AI SCRIPT AT LOCATION: This, however, is very useful. Enter Bunker and Enter Transport are fairly self-explanatory. Using the scripts labeled with a race and difficulty level at a location over a computer player’s base will make them use their units and buildings as if they were playing a melee. Using ‘Value this area higher’ will give a location priority to attack and keep. NOTE: If you're running an AI script at a CPU base to make it play like it's in a melee, make sure you match up the race with the race of the CPU (i.e. Zerg scripts won't work with a Terran player).
SET: There’s a lot of things that can be set using triggers. They are:
  • Allying and Allied Victory (ALLIANCE STATUS)
  • The amount of time on the countdown timer (COUNTDOWN TIMER)
  • The death count of a unit for a player (DEATHS)
  • Doodad state (DOODAD STATE)
  • Invincibility of units at a location (INVINCIBILITY)
  • Mission objectives, accessed through the main menu (MISSION OBJECTIVES)
  • A map to start after the current one is completed, for if you’re making a custom campaign (NEXT SCENARIO)
  • Amount of minerals or gas (RESOURCES)
  • Amount of points of a type (POINTS)
  • Switch status, set or cleared (SWITCH)
TALKING PORTRAIT: This shows a portrait of a unit of your choice doing it’s talking animation for the amount of time you set. This is what was used in the campaigns’ in-game cutscenes.
TRANSMISSION: This simply combines TALKING PORTRAIT, PLAY WAV, and DISPLAY TEXT MESSAGE into one.
UNMUTE UNIT SPEECH: Undoes the MUTE UNIT SPEECH action
UNPAUSE GAME: Undoes the PAUSE GAME action.
UNPAUSE TIMER: Undoes the PAUSE TIMER action.
VICTORY: The opposite of DEFEAT, makes the current player win.
WAIT: Stops the trigger from carrying on to the next action for the amount of time set. NOTE: If making a map that uses a lot of waits that run around the same time, use hypertriggers. If you don’t know what a hypertrigger is, be sure to read Falkoner’s tutorial on them.


Now, go back to DISPLAY TEXT MESSAGE and use:
Display text for current player:
FATALEXCEPTION PWNS HARDCORE!
Then:
Wait for 1000 milliseconds.
And lastly:
Preserve trigger.
Now click ‘Finish,’ and you’ve completed the trigger! That wasn’t so hard, was it? Now hit Ctrl + S and save your map as “ROFLCOPTERS” and do what you want with it.

A NOTE ON ACTIONS:


Actions always fire in the order that you put them into a trigger, they don't all go off at once, so don't put a "Kill Units at Location" before a "Create Units" and expect the units you made to die. Also, the delay between the actions will be minimal unless you put in a Wait.

Frequently Asked Questions:


Can I change unit stats like firing range and rate with triggers?
In short, no. That requires changing things that are hardcoded into the game. For that, you need a program like DatEdit, and you need to know how to mod.

How do the people who make bounds do that thing where there’s all the explosions and then your zergling dies if it goes in?
I bet the trigger is something VERY close to this:

Quote:
Players:
-All Players
Conditions:
-Always.
Actions:
-Create 10 Protoss Dark Archon at ‘DIE DIE DIE.’
-Kill all [any unit] at ‘DIE DIE DIE’ for All players.
-Wait 1000 milliseconds.
-Preserve trigger.

How do the people who make RPGs make the healing beacons?
Like this:

Quote:
Players:
Force 1
Conditions:
-Current player brings at least 1 [men] to ‘Heal.’
Actions:
-Set hit points for all [men] owned by Current Player at ‘Heal’ to 100%.
-Wait 3000 milliseconds.
-Preserve trigger.

What better mapping programs are out there, and how can I get my dirty little hands on them?
There’s X-tra Editor, which is best for beginners, SCMDraft 2, StarForge, and StarFire (just for those Mac-using hipsters). Search for those on, say, StarCraft.org and you’ll get what you want.

What’s the easiest kind of map to make?
The kind that doesn’t have a point.

What’s the easiest kind of map to make that has a point?
A bound, although they’re borderline on the purpose-having aspect.

How do I fix bugs?
Take a very systematic approach: Isolate the system (or individual trigger, if you can), look very carefully at what your map is doing, then at what you have in your trigger. Many bugs come from simple typing errors. If you can't see what's wrong after that, start turning off conditions and/or actions one at a time and look at the effects. If you still can't see what's wrong with your trigger, then it's entirely ok to make a workaround (i.e. you have no idea why your trigger is creating too many units, so just make another trigger that fires at the same time that removes all the extra units). It may be a messy way of doing things, but as long as it works and you get it, is there really anything else that matters?

How do I stack in-editor, and how do I make a trigger that lets a person stack in game?
To do either, you need a better editor like SCMDraft or StarForge. The trigger that “turns off the lights” in-game looks like this (from SCMDraft 2 beta 0.6.0):

Quote:
Players:
-Player 1
Conditions:
-Current player brings exactly 1 Terran Civilian to ‘Lights out.’
Actions:
-Execute AI script ‘Turn OFF Shared Vision with Player 1’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 2’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 3’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 4’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 5’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 6’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 7’ at ‘Lights out.’
-Execute AI script ‘Turn OFF Shared Vision with Player 8’ at ‘Lights out.’
-Move all Terran Civilian for Player 1 at ‘Lights out’ to ‘Civ reset.’
-Display text message:
Lights are off!
-Wait 3000 milliseconds.
-Preserve trigger.

How do I further my learning, sensei?
Just mess around in the editor, make weird triggers and look at what they do, figure things out for yourself. Experimental maps are the way to go. That’s how I learned.
Even when you're a bigshot mapper, test maps are still a useful tool for when you come up with a new idea that you want to test before implementing in your big project.

And what if I need help?
Check the other tutorials in the database, then ask about your problem in the shoutbox (if you think it will be fast), and if all else fails, post a topic in UMS Map Making Assistance with all the details you think are relevant, including the entire trigger that isn’t working. Use good grammar and spelling, too!

FatalException
September, 2008

Navigation Panel

» General Directory
- News and Updates
- Forum
- Articles
- Podcast
- FAQ
- Legal and Privacy Info
- Staff Roster
- Contact Us
- Affiliates and Links

» Starcraft II Directory
 ° Legacy of the ConFed
  - Galaxy of Fire
 ° The Bunker

» Starcraft Directory
 ° Ascending Projects
  - Armageddon Onslaught
  - Life of a Marine
  - Flame Knives
  - Aeon of the Hawk
  - StarCraft Team Fortress
  - Iskatumesk's Realm
 ° Ascension of Duran
  - Ascension of Duran
  - Dark Purposes
 ° Vision of the Future
  - Vision of the Future
  - Black Dream
  - Prophecy
  - Final Destiny
  - Zeji Conversion
 ° Legacy of the ConFed
  - Past Purposes
  - Dawn of Darkness
  - Fallen Angel
 ° Celestial Stories
  - Fall From Grace
  - E.D.A.S.T.
  - Celestial Irruption
  - The Gallantry
 ° Classics
  - The Fenix
  - CC 2000
  - New Avalon II
  - The Bob Levels
  - War of the Tribes
  - Resurgence
  - Reclamation of Aiur
  - PalinchronConcordance

» WarCraft Directory
 ° Wanderers of Sorceria
 ° Keys of Sealing

» Resource Directory
 ° StarCraft
  - Programs
  - Modding Tutorials
  - StarEdit Tutorials
  - Customs
 ° WarCraft
  - Programs
  - Modding Tutorials
  - WorldEdit Tutorials
  - Customs

Campaign Creations RSS Feed

Campaign Creations Twitter Feed