Game Constants (Menu: Advanced \ Gameplay Constants)

Q: How do I increase the level limit for heroes?
A: Go Advanced \ Gameplay Constants -Scroll down and you'll eventually find a data called "Hero Maximum Level - 10". Change the level limit to whatever you want.

Q: How do I change the food limit?
A: Go Advanced \ Gameplay Constants and find the "Food limit"

Q: The heroes stop gaining experience after level 5, how do I change that?
A: Go Advanced \ Gameplay Constants, find the "Hero XP gained - Creep reduction table". If you want heroes to always recieve 100% xp from creeps, remove all numers in the creep reduction table.

Q: How do I set the percentage damage each armortype recieves from different weapontypes?
A: Go Advanced \ Gameplay Constants and find "Combat - Damage Bonus Table". Remember "1" equals 100%

Game Interface (Menu: Advanced\Game Interface)

Q: How do I change the name of weapontypes and\or armortypes?
A: Go Advanced \ Game Interface and find "Text - General" and the desired weapontype\armortype

Q: How do I change the images of buttons like Attack, Stop, Build, Idle Peon etc?
A: Go Advanced \ Game Interface. The icon settings are in the upper part of the list.

Q: How do I change ingame texts like "user was defeated", "building completed", "player was victorious" etc?
A: Go Advanced \ Gameplay Constants, scroll down to "Text - General - "

Player settings and Loadingscreen

Q: How do I add a picture for the loading screen?
A: There are 2 ways of putting your custom picture into the loading screen. I'll teach you the easiest one:
1. Pick a picture you want to use in the loading screen. 2. Resize it to 800x600 or 1024x800. 3. Use an image program like for instance Photoshop or ULEAD and shrink the image unpropotionally to 512x512 so that it intentionally looks weird. 4. Save the new, shrinked image as TGA 5. Use Wc3 Image Extractor to save the image as BLP at image quality 75 6. Download a loadingscreen model 7. Open the import manager (f12) and import your BLP picture file and the loadingscreen(mdx) 8. Change the path of your picture file to "FullScreen.blp" and the path of the LoadingScreen to "loadingscreen.mdx" 9. Go Scenario \ Map loading screen and pick your image 10. Play
Notes: The map will easily get very big if you dont compress your image right. The most important way of reducing the size is setting the BLP image quality to 75 or less. If you set it to 100 or more, the picture will be alot bigger.
And dont worry that the image is 512x512, it will be returned to normal when you see the loading screen.

Q: How do I do so you cant choose race or team?
A: scenario properties->forces->use custom forces+fixed player settings

Various

Q: Do you use any other program than the World Editor that came with the game?
A: No, never, I dont need anything else

Q: How do I avoid creeps walking at certain places?
A: Use pathing blockers from the doodads palette and place them like a wall where you dont want units to cross.

Q: How do I change the text colors?
A: Use this program, it's very easy to use

Q: How do I protect my map?
A: Here's how you protect your map in a 99%* secure way, not even the blizzard team will be able to crack it!
All you need is the wc3 editor and an empty word file. Put the word file for instance on your desktop, just make sure you know where it is.
The reason why it has to be empty is that the file itself will not be used, and a file that is not empty will add extra "weight" on your map. Big maps is not a good thing, so use an empty file. (you can also use for instance paint files, just make sure it's as small as possible)
In the editor, editing your map, press f12. You will then enter the Import Manager. Right click in the window, choose "import file" and choose the empty word file. Then doubleclick the file you imported and "Imported File properties" pops up. Click the box for "use custom path", type in "war3map.wtg" in the path and click ok. Now comes the really important thing: Save the map in a NEW file! You wont be able to open this map after you've closed it!
If you save the map on top of your old map file and close the map editor, then you have my permission to go knock your head in a concrete wall. Been there done that!
When you edit your map, always save your map in 1 protected file and 1 unprotected file, use different file names and put them in different folders to tell them apart. Now always make sure you play the right map file on the battle.net, pick the right folder with the right filename so that you dont give away the unprotected one.
* I've just found out there really is a way to unprotect a map, nomatter how you protect it. However, very few people know how to unprotect maps, and this way of protecting it might be the most secure. Please do not ask me how to unprotect a map, I will not help anyone unprotecting other people's maps.
Personally I wish it was literally impossible to unprotect any protected map.

Objects Editor (units, items, destructibles, doodads, abilities, buffs\effects, upgrades)

Q: Ability stacking, what stacks?
A: I haven't done much testing with this, but I know that
These item types do stack with each other:
* Speed increasing items
* Damage increasing items
* Armor increasing items
* Stat point increasing items
* HP regeneratin items
* MP regenerating items
* Fire Orbs stack with themselves
* Warsong Battle Drums stack with the kodo's War Drums

While these do not stack:
* Item auras do not stack with hero auras, and auras of the same type do not stack
* Spell Damage Reductions do not stack
* Evasion, Drunken brawler and Talisman of Evasion do not stack
* Movement speed increasing items and abilities dont stack
* Life-Stealing items and abilities dont stack
* Immolation from items and abilities do not stack

In general it may look like only items with abilities have trouble stacking, while all kinds of unit stats-improving items do stack. A good example of this, is using orbs. The damage of all orbs in your inventory will stack, but the effects dont.



Q: How to make a builder summon or any other build type
A: If you want the builder to summon, then the buildings that should be summoned must be of undead race, and the builder must have the undead Restore ability. If you want the builder to build like a night elf, then the buildings must be night elf and the builder must have the night elf restore ability. The restore ability is called repairing for human builders.

Q: The unit\tower will not automatically attack as far as it can
A: The "Combat - Acquistition range" is too short. Acquistition range is how far the unit will shoot by it's own, while Range is how far it can maximum shoot.

Q: The unit\tower doesn't shoot as fast as it should
A: The "Combat - Animation backswing point" and "Combat - Animation damage point" are too slow. They decide how fast the unit\tower can maximum attack, while "Combat - Cooldown time" is how fast it will attack within the damage point value. The unit\tower can attack slower than the damage point, but not faster. Default damage point is 0,3, which means you'll have to edit it if you want the unit to attack faster than that.

Q: It's lagging when I create a new unit, copy a unit or change the tooptip of a unit
A: Choose the Terrain Layer, go to menu Windows and uncheck Brush List

Q: Lagg when unit is created\lagg loading hero map
A: This is a half-discovered, half-undiscovered bug as far as I know. Some people experience in-game lagg and\or long loading times for their maps when they make custom hero skills. Im having alot of trouble with this bug myself and I'll let you know if I find out how to fix it. The only thing I know for sure is that it has to do with hero skills.

Q: How do I make a unit unselectable so that it can't be commanded?
A: Give the unit the Locust ability

Q: How do I merge 2 units?
A: I haven't tried this myself, but try using the Mount Hippogryph ability, it should work in theory

Q: How do I set negative values for abilities?
A: File\Preferences\General tab -Check the box right above the Mouse Scroll bar. A message will appear that putting negative values at the wrong place can make the game screw up. I've never experienced that, click yes\ok

Q: How do I set the percentage movement decrease the Slow ability will give? \ How do I make a levelable skill that slows a unit more and more with each level? \ How do I make an aura that slows units?
A: One of the flaws with the wc3 editor is that you can't have several slow percentages for the slow abilities, there is only 1 global setting for all slowing abilities. This data is in the Advanced \ Gameplay Constants window and is called "Spells - Frost Movement Speed Reduction", set to 0.5 by default. There is 2 things you can do instead if you want a skill that reduces movement: 1. Do like I had to do in Massacre TD, increasing the area of effect of the freeze ability with each level instead of decreasing the movespeed more and more, or 2. Use a slow aura instead.
If you want an aura that slows units, then base it off Endurance Aura. Then set regeneration rate to 0 and change the move speed to a negative value. If you set it to -1 then the units affected will walk at half speed. Remember to set the right targets for the ability.

Q: I have a custom ability and the tooltips are showing the wrong values for the ability. It's actually showing the values for the ability I based it on. How do I fix this?
A: Press ctrl+D to see the raw datas of the ability. The name of the ability will be replaced with an ID. In the tooltips, replace the old <xxxx,DataA1> with <(rawdataID):xxxx,DataA1>.

Q: Incinerate doesn't work
A: The unit must be ranged

Q: How can I change normal units into heroes?
A: You can't

Q: How are damages and bounties calculated?
A: Minimum roll= Base+Number of Dice
     Maximum roll=Base+(Number of Dice*Sides per Die)

Q: Why do buildings just stay at 10% of their maximum HP after I place them, instead of being built normally?
A: Your builder has the wrong abilities, look at the default builders and copy them. If you want it to summon, use the acolyte summoning and restoring.

Q: What are the attachment points for ability effects?
A: overhead (floats over the unit's head, but doesn't sway with the head as it animates)
     head (sways with the unit's animation)
     chest
     origin (usually at the base of a unit's feet)
     hand
     foot


 

Trigger Editor

Q: How do I make player-message triggered actions?
A: Let's start wiht an example:

Add Gold to self
Events
  Player - Player 1 (Red) types a chat message containing addgold as A substring
Conditions
Actions
  Set Add_Gold_Amount[(Player number of (Triggering player))] = (Integer((Substring((Entered chat string), 9, 11))))
  Player - Add Add_Gold_Amt[(Player number of (Triggering player))] to (Triggering player) Current gold

In the action "  Set Add_Gold_Amount[(Player number of (Triggering player))] = (Integer((Substring((Entered chat string), 9, 11))))" We are using the numbers 9 and 11 because that's the three digits where the number of gold the player wants to add, is typed (a1d2d3g4o5l6d7 8x9x10x11). Let's say we want to make a kick trigger instead. That would be like

kicking triggered
Events
Player - Player 1 (Red) types a chat message containing -kick player as A substring
Conditions
Actions
Set kickplayer = (Integer((Substring((Entered chat string), 14, 15))))
Game - Defeat (Player(kickplayer)) with the message: You've been kicked!

See the numbers in the "integer((substrin((entered chat string)" thing are very important and has to be correct, for the triggers to work.
 


Q: How do I make a trigger delete\move\return value of a selected unit?
A: I think it's impossible... I tried several times myself, Ive asked several other map makers, and we couldn't find a solution to it. My experience is that using a trigger that deletes a selected unit, will actually delete any random unit on the map, while NOT deleting the selected one! Really bad bug indeed

Q: I want a trigger to check an item that has been pawned. How do I do it?
A: It's not possible actually, atleast not yet. It's one of the flaws in the editor:\

Q: I'm making a map where creeps will spawn in waves, and the next wave starts when all previous creeps are dead. But even when they're dead, it wont start. Why?
A: This editor bug can be very annoying. The thing is, that when a trigger checks how many creeps are still alive, it includes all the dead creeps on the ground... Which means the only way to get around this, is to enter Game Constants and set the Decay Times to something like 0-2 seconds. This is bad if you have a hero\unit ability that creates units out of skeletons, because that ability wont work if you want the trigger to work...

Q: How can I scan a region for certain items?
A: The "items in region" does only include items that lie on the ground. If you want the trigger to scan heroes in the region for the item too, then you would have to use an integer loop to check every item slot on every hero in the region, one at a time.

Q: I want a trigger to return the name of a certain unit, but it shows something like custom_xxxxx instead
A: Display the unit name, not the unit type name.

Q: What is Integer Loops, how do I use them?
A: Integer loops is a way to make consecutive triggers more compact, while decreasing the chance for bugs in the trigger as a side effect. This trigger below will show you how to use integer loops to give gold to the players:

For each (Integer A) from 1 to 5, do (Actions)
   Loop - Actions
      Player - Set (Player((Integer A))) Current gold to 100

While this trigger will show you how to make the work with updating multiboards much easier. I suppose you know how to use variable arrays while looking at it, or you should learn that first to understand this trigger.

For each (Integer A) from 1 to 5, do (Actions)
   Loop - Actions
      Multiboard - Set the text for (Last created multiboard) item in column 2, row (Integer A) to (String(Kills[(Integer A) ]))

If you have ever used a multiboard with more several rows and collumns before, then you know that it can be hard to keep track of all the rows, collumns and player values, and bugs might easily occour. By using integer loops you will only have 1 sentence for each variable to update for the players, instead of 1 sentence for each variable for each player.
Another tip for use of this kind of trigger, is when creating a starting unit(or more) for each player, at different positions for each player. Place all the Player Starting Positions at the places you want the units to appear, and then use integer loop to spawn units at the starting position for each player. I'll let you make that trigger yourself.


Q: Simple unit spawning, region-event related triggers
A: Spawning units always require a premade region, which you make in the Regions Layer. Always name regions in a way that you can easily figure where the region is located, and what it's ment for, so that you dont have to check the map all the time while making the triggers.
Let's say you want a trigger that, when somebody enter RegionA, creates creeps at RegionB.
Then you will use the event "Unit enters RegionA". Then make a condition that checks who enters the region (if you only want the creeps to appear if a certain unit, or a certain player, is entering). If you want it only to happen when a certain player enters, then use the condition "(owner of (triggering unit)) equal to (player x)". If you want it only to happen when a certain unique unit enters, then you must first make a variable. Let's this unit is a certain Footman, and we call the Unit Variable "Triggering_Unit". Then add the condition "(triggering unit) equal to Triggering_Unit". Or, you could use the condition "(unit-type of (triggering unit)) equal to Footman".

Q: I need help to find a bug
A: When I have trouble locating a bug, I use 2 methods: Exclutions and Checkpoint messages, which I like to call them.
Exclutions: If you have no idea at all where the bug is, then start with "exclutions". Save the map to a new file, call it (mapname) + "testing". Now select all triggers one by one and hit ctrl+f. You will then turn off the triggers. Now test the game. If the bug is gone, then you know the bug is caused by a trigger. If the bug is still there, turn on the triggers, save the map in a new file, delete all units in the map and then test again. Most bugs are caused by triggers, some by units, the rest is probably abilities. So if you still dont find the bug, try reloading mapfile Test, which still has all the units, remove all abilities and skills in the game, then save the map in new file again. After testing now you should have an idea where the bug is. Now reload mapfile Test again. If you know the bug is caused by a trigger, try having some triggers turned on and some turned off. If the bug is caused by a unit, try deleting half of the units in the game. If the bug is caused by an ability, try deleting half of the abilities in the game. When you know in what half of the triggers\units\abilities the bug is located, cut that half in two with disabling and deleting and try again. Bug disappeared? Try putting back a few things at a time till you find it.
Checkpoint messages: If you know the trigger has something to do with one or more triggers, use checkpoint messages. Checkpoint messages have 2 purposes: 1) Telling you that the trigger has been launched and 2) what parts of the trigger is working correctly. If you dont know what trigger(s) causes it, then start with "exclutions" till you know. When you know, or have a theory, what trigger(s) causes the bug, then start making "checkpoint messages" in those trigger(s). This means: If the trigger has an IF sentence, put a game message before and inside the IF sentence, both when the conditions are fulfilled and when they're not. In this message, just write something like "(triggername) has been launched". If the trigger's duty is to change a variable or two, then make a game message before and after the variable has been changed, and write something like "variable is set to: (variable)". Start the game and play as regularly. When the triggers are launched you will now see those messages, hopefully telling you what is wrong. If you miss any checkpoint messages or any of them give you another value than you were expecting, then you have partly located the bug. Bugs that often occour are IF sentences that don't work correctly, variables set to the wrong value or no value at all, unit actions with "triggering unit" instead of for instance "picked unit", "dying unit", "selling unit" or whatever, trigger actions that you have simply forgotten to make, bad trigger events or conditions, and lack of wait actions. I dont remember all trigger actions that require a "wait 2 seconds" in front of them to work at map initialization, but it's a good idea to always place a wait action before any other actions in a trigger launched at map initialization, in case any of the actions require it.

Q: How do I make a dialoge, like for difficulty voting?
A: I'll paste a part of the the dialoges I used in Massacre TD:
First you need a trigger like the one under(yellow). This trigger takes care of all the visual details of a dialoge, like what text will be in it, how many buttons will be in it, what the buttons should be called, a reference to each button, and last the action that shows the dialogue to the desired players. The last action MUST be last in the trigger, or the dialogue will be empty without any text or buttons.
 

Chosing lives(trigger name)
Events
Time - Elapsed game time is 2.00 seconds
Conditions
Actions
Dialog - Clear lives
(dialoge name)
Dialog - Change the title of lives to How many lives do y...
(Introduction text, "how many lives do you want?")
Dialog - Create a dialog button for lives labelled |c0000ff00Add 6 liv...
(button for choosing 6 lives)
Set lives6
(Dialogue button variable) = (Last created dialog Button)
Wait 0.01 seconds
Dialog - Create a dialog button for lives labelled |c00ffff00Add 4 Liv...
Set lives4 = (Last created dialog Button)
Wait 0.01 seconds
Dialog - Create a dialog button for lives labelled |c00ff8000Add 2 Liv...
Set lives2 = (Last created dialog Button)
Wait 0.01 seconds
Dialog - Create a dialog button for lives labelled |c00ff0000Add 0 liv...
Set lives0 = (Last created dialog Button)
Wait 0.01 seconds
Player Group - Pick every player in (All players controlled by a User player) and do (Dialog - Show lives for (Picked player))

Then you need a trigger for each button so that the chosen difficulty will be noted. You will need 1 trigger for each of all buttons in the first trigger above. This is how it goes:
 
Lives chosen 6(dialoge name)
Events
Dialog - A dialog button is clicked for lives
(the first dialog)
Conditions
(Clicked dialog button) Equal to lives6
(the name of the first button)
Actions
Set Lives = (Lives + 6)
Game - Display to (All players) the text: |c0000ff006 lives h...
(information message to all players about how many lives were chosen. You decide if you want such a message)
Leaderboard - Change the value for Player 8 (Pink) in (Last created leaderboard) to Lives
(This will show in the leaderboard how many lives have been added total with all votes)
Dialog - Show money for (Triggering player)
(launches the next dialoge if you want to have more than one. If so, you will have to create a new trigger like the first one, for that new dialoge, and then new triggers for all the buttons in the new dialoge.)

Q: How do I make a sell button?
A: Copied from Massacre TD:
Sell
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Sell (tower)
(This is the ability the user will click, all units with the sell option must have it. You make the ability by basing it off any ability that can only be cast on self and has to be clicked to be cast. In this case I based it off Windwalk. Set all data values to 0, change the name to Sell and change the tooltip to something like "click to sell")
Actions
Player - Add (Point-value of (Casting unit)) to (Owner of (Casting unit)) Current gold
(Note that this trigger gives back 100% of the gold cost)
Game - Display to (Player group((Owner of (Casting unit)))) the text: ((|c0000ff00You Recieved |r + (String((Point-value of (Casting unit))))) + (|c0000ff00 gold for selling a |r + (Name of (Casting unit))))
(This is the message that tells the player what unit was sold and how much gold was returned)
Special Effect - Create a special effect at (Position of (Casting unit)) using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl
(just to make it look nice)
Unit - Remove (Casting unit) from the game

Then change the point value for all units to (gold cost for building\buying the unit)+(all gold spent on upgrades, like Guardtower Level 2 or whatever). You do this in the unit editor, you'll find the point value where you find hitpoints, gold cost, mana etc.

Q: How do I make creeps drop random items on death?
A: Add this trigger:
 
creep dies
Events
Unit - A unit Dies
Conditions
(Owner of (Triggering unit)) Equal to Neutral Hostile
(Level of (Triggering unit)) Greater than or equal to 5 (This is so that low-level creeps dont drop items, I think that would be too many items)
Actions
Item - Create (Random level (Level of (Triggering unit)) item-type) at (Position of (Triggering unit))


Q: I'm using random numbers, but I still get the same number every time
A: File menu->Preferences->Test Map->check off "use fixed random seed"

Q: What is variables? \ How do I use variables?\What is arrays?\How do I use arrays?
A: Check this thread

Q: How do I make a trigger action that orders a unit to use a custom ability?
A: Order the unit to use the base ability of the custom ability. What actually determines issued orders is the orderstring of the ability. Custom abilities have the same orderstring as their base ability. Changing the orderstring field of an ability doesn't actually affect this.

Q: Why do some units use more than one ability when I order them to use only one?
A: If two abilities on the same unit have the same orderstring, the game gets confused and tries to use both of them whenever the unit is ordered to use one of them. The only way to fix this is to base the custom abilities off of different standard abilities. Changing the orderstring field of the ability doesn't affect anything.

Q: How do I add bounties to units?
A:
In a trigger that runs at map initialization, use the Player- Turn Player Flag On/Off action to turn on the Gives Bounty flag for the player whose units will give gold when they die. The Stats- Bounty fields for the units must also be set in the Unit Editor.

 

 

On this page you will find answers to various common questions. It's probably best for intermediates, but noobs, and even pros, can learn some too. The wc3 editor is so detailed, I very much doubt anyone knows it's full potential:)
Anyway, the questions are listed after what part of the editor they relate to. The categories are
Trigger Editor (creep spawning, game levels, difficulty voting, selling button, random values etc)
Object Editor (units, items, destructibles, doodads, abilities, buffs\effects, upgrades)
Game constants (hero levels, food limits, damage-armor table, experience distribution etc)
Gameplay Interface (weapon&armor names, weapon&armor images, game messages)
Player settings and Loadingscreen (player teams, player names, custom loadingscreen)
Various (text colors, protection, blocking off areas, editor programs)
I've also colored the Q and A in a color that can tell you very roughly what mapmaker stage it's ment for.
Green for total noob or very new, yellow for intermediate, and orange for experienced.
The mapmaker stages are measured about this way:
Noob: I would consider you a noob roughly until you've learned how to create new units by changing the default units, you have created heroes with non-default abilities, you know the difference between doodads and destructibles,you know how to make some simple, working triggers like victory and defeat condtions, time-related events, and you know how to create any amount of any unit at any place at any time, and you know how to increase the maximum hero level.
Intermediate: I would consider you an intermediate roughly until you've created atleast two maps with decent repuation (post them on worldofwar.net if you want ratings), you know how to create brand new units with any base unit without trouble, you feel comfertable with triggers and know how to use timers, variables, arrays, dialogs, player votings, random values, etc, you can easily create new abilities with custom sounds, effects and buffs, you know what base abilities to use, and you know how to change a unit or hero ability into an item ability to use for an item.
Expericened\Pro: You know the trigger- and object editor well enough to create small, decent maps within a week, you have atleast one map that has been popular and is well known, you are comfertable with arrays, dialogs, integer loops, and multiboards, and you cant "live" without variables, you dont have trouble locating trigger bugs, you know several possible causes when wc3 crashes during testing\playing, you are able to aid other map makers with triggers by playing their maps without looking at the triggers, you recognize bugs and might know the cause when you play others' maps, you know several of ways to balance an imbalanced map, and most importantly you are able to figure out new, useful triggers on your own, triggers that you've never or rarely seen before because they are original and perhaps complicated.

 

 

 

 

 

 

 

 











 

Map Making FAQ