Company of Heroes 2

Company of Heroes 2

674 ratings
(WIP) World Builder Beginner-to-Veteran Training
By «Dracus Aearius»
The purpose of this guide is to offer simple, clear and powerful explanations, tips and tricks as to how the CoH2 World Builder functions in order to help mappers or content creators in general create high quality maps for CoH2. These maps can then be shared with the rest of the CoH2 community to enjoy in multiplayer/comp-stomp matches or they can be used to create compelling custom single-player or multiplayer scenarios. This guide should also be a solid introduction to beginners, or even present a good source of information for more advanced mappers.


The content of this guide is offered to the community with no legal restrictions. However, if you wish to use/publish any content present in this guide in your own work, please inform the author. If you wish to use this material without contacting the author, please consider giving them credit for it.
COPYRIGHT NOTICE: Any and all present copyrighted material and/or content are property of their respective owners. The author(s) claim(s) absolutely no ownership to that material and/or content, unless stated otherwise.
Introduction/Author's Note

Alright, I think that is enough serious/sophisticated talk to begin with, let's get down to business! My name is Leonidas and I am an avid CoH1 and CoH2 player and follower of the franchise; I have put many hours into both games (I have only played CoH1 non-Steam, however, - just a note) and, of course, just as many into the World Builder (abbrev. as WB from this point on) - for the original CoH at least, and I intend to put even more into the WB for CoH2.

The World Builder executable file WorldBuilder_CoH_2.exe is located in the Company of Heroes 2 game installation root folder in your Steam directory:
  • 32-bit Windows:
    C:\Program Files\Steam\SteamApps\common\Company of Heroes 2
  • 64-bit Windows:
    C:\Program Files (x86)\Steam\SteamApps\common\Company of Heroes 2
  • For those who have a custom Steam Library folder in which Company of Heroes 2 has been installed, they may find it in that folder. Specifically, they may find it in:
    [CUSTOM LIBRARY DIRECTORY]\SteamApps\common\Company of Heroes 2
Once you have located the WorldBuilder_CoH_2.exe file, double-click it to launch the Company of Heroes 2 World Builder and proceed with map creation and map design/editing.

The Company of Heroes 2 World Builder has arrived. OORAH!

2.000+ views as of 23:00, December 9th 2013! Thank you all and I hope you keep reading! ~Leonidas
Function Manual Pt. 01
UI Element (Number/Icon/Name)
01. New SPCreates a new single-player scenario (map).
02. New MPCreates a new multiplayer scenario (map).
03. OpenOpens a Windows Explorer instance to select and load an .sgb file.
04. SaveSaves current scenario (map).
05. Cut[1] The usual cut option. (e.g. cut text and store in clipboard)
06. Copy[1] The usual copy option. (e.g. copy text and store in clipboard)
07. Paste[1] The usual paste option. (e.g. paste text stored in clipboard)
08. DeleteDelete selected entities/squads.
09. UndoUndo the previous action.
10. RedoRedo the previous action.
11. SelectSelect map objects (click to select a single object - click and drag or hold shift key and drag to select multiple objects)[/b]
12. Object Placement[2] Select an object from the object list on the right pane, and right click anywhere on the map to place the object. (object controls apply)
13. Render Marker Prox.[3] Select, place, or edit SCAR and Action markers. (object controls apply)
14. Heightmap EditorEdit the map terrain height. (in additive, subtractive, set value or smoothing modes)
15. Impass Map Editor[4] Edit the impassability map of your scenario. (left-click and hold to paint impassable terrain, right-click and hold to remove impassability)
16. Texture Tile Painting Editor[5] Select texture maps with which to paint the terrain of your scenario. (select a texture map from the pane on the right, set a layer slot for it and right-click and hold on the map to paint your texture)
17. Splat Placement[6] Select texture maps to place in your scenario (as if they were objects). (select a texture map from the pane on the right and right click anywhere on your map to place it) - object controls apply
18. Spline Placement[7] Create and edit "texture", "object" and "deform" splines.
19. Water PlacementPlace water in your scenario. (set water depth in the right pane, and right-click on lowered terrain to place water renderer/spawner)
20. NIS Animation Tool[8] Create NIS (i.e. in-game) animations/cinematics.
21. Ruler Mode[9] Measures virtual distance between objects.
22. Stamp Placement[10] Creates back-ups/copies of a selection of any type of map object(s) (splines, splats, squads, entities, etc.) to use in (i.e. import to) other scenarios, or for mass-redesign of a map.
23. Grass Editor[11] Paint grass in your scenario. (select painting mode, type for kind of grass, height for changing the grass blade height, select grass type or configure grass settings, and left-click and hold to paint grass, or right-click/left-click to perform set action for the grass height)
24. Ice Editor[12] Places ice in winter scenarios.
25. Waypoint Placement[13] Used for setting waypoints (i.e. paths), that can be used in SCAR scripts to program a squad's (or squads') movement.
26. Territory Mapping Tool[14] Configures territory sectors of your scenario.
27. Interactivity Stage Editor[15] Sets different interactivity stages (i.e. custom map boundaries), primarily for use with SCAR scripting in mission scenarios (as seen in the CoH2 campaign).
28. View Error Messages[16] Displays program error log for troubleshooting of your scenario.
29. Previous Error[16] Move to the location of the previous error.
30. Next Error[16] Move to the location of the next error.
31. Memory Dump Tool[16] Memory dump debugging tool for developers.
32. Memory Statistics Tool[16] Displays memory usage statistics for use in optimization of memory performance of your scenario.
Function Manual Pt. 02
Continuation of the Function Manual table in Pt. 01.
References and explanations:
[1]: The most frequently used method for copying any objects in W.B. is by holding down the "c" key, lef-clicking the object (or group of selected objects) we wish to copy, dragging in a different location in W.B. and by releasing the mouse button: The copies of that object (or objects) are placed in that location.
[2]: Object controls - While you have an object selected, you may:
  • Left-click, hold and drag to move objects - Release the left mouse button to exit this mode.
  • Hold "Shift" key, left-click and hold, then drag to the left or right to rotate the object in that direction - Release the "Shift" key to exit this mode.
  • Hold the "H" key on your keyboard, and pan your mouse up to elevate the object, or pan it down to lower the object - Release the "H" key to exit this mode.
[3]: More info. on SCAR markers found in "Scenario Creation Pt. 02" section of this guide, under the "Basic level SCAR coding" feature. - More info. on Action Markers found in the "Level Design" section of this guide.
[4]: More info. on terrain impassability and movement/LOS/shot blocking found in the "Level Design" section of this guide.
[5]: More info. on texture tile painting found in the "Level Design" section of this guide.
[6]: More info. on texture splat placement found in the "Level Design" section of this guide.
[7]: More info. on the spline placement tool found in the "Level Design" section of this guide.
[8]: AUTHOR'S NOTE: Little is known by the author as far as NIS animation is concerned. Though the author will attempt to research the NIS animations included in the Campaign and Theater of War missions for pertaining information, it is kindly requested that anyone who has any knowledge regarding the matter share it with the community. Once reasonable information has been gathered for the tool, it will probably be published under the "Scenario Creation" section of this guide.
[9]: More info. regarding virtual distance measurement found in the "Level Design" section of this guide.
[10]: More info. on stamps found in the "Level Design" section of this guide.
[11]: More info. on grass editing found in the "Level Design" section of this guide.
[12]: More info. on winter battlefield design found in the "Level Design" section of this guide.
[13]: More info. on waypoint placement and use found in the "Scenario Creation" section of this guide.
[14]: More info. on territory mapping found in the "Level Design" section of this guide.
[15]: Basic info. on interactivity stages found in the "Level Design" section of this guide. - Advanced info. on interactivity stages found in the "Scenario Creation" section of this guide.
[16]: Currently deactivated/unavailable. (requires more research)
Level Design Pt. 01
Map designing involves a lot of work. The trick is to start out tough, then as you gain more experience and learn new stuff you will be able to do more impressive work, getting ever closer to the most perfect rendering of your ideas.
So, if we wanted to translate the overall creative process into a list of steps, the first one would be:
- Start sketching.
Really. If you ever want to get a map designed the way you initially wanted, I would strongly advise you to make quick (very low detail) sketches of your maps, preferrably by pencil and paper (or even MS Paint, if wanna be that sloppy), and keep those sketches on your desk or under your keyboard while designing at all times. Really - it helps that much.
  • Tip: Try to work out your own set of global symbols to use on your sketch to help you out: e.g. a blown-out, large, circled "S" for strategic points or a similarly drawn "M" for munition points and an "F" for fuel points - anything that suits your style best.
Once you've sketched your map out a couple of times and you've decided which design you like best, then it's time to go digital.

Now, I will be honest with you. As far as basic map settings are concerned, OnkelSam from has devoted a lot of effort in creating quality tutorial videos for the subject. Click here to view them first[] and we'll continue from where he leaves off in the video. This is for saving some resources for this guide to progress in content, so we can advance further into map making. If I have more time in the future, I might write about these basic map settings by myself. As of now, please consider the option above, as the most viable one to date.
Create your map, set it's size and playable area, mark its boundaries for your convenience, set teams, place starting positions, shared starting position territory, map entry points (and optionally bunker markers), and assign the last 3 (and the bunker markers, should they exist) to the teams/players they belong to. Place the 4 territory points, and then define the territory sectors using the "Calculate Voronoi" function of the Territory tool.

Once you've reached the point that the above images illustrate, we are ready to move on to one last technical detail and start placing objects, splats, painting texture tiles, and much, much more. So what we have to do to make our map in terms of basic gameplay functional, is to define the interactivity stage of 50. That is the interactivity stage from which units are called in, i.e. that is where the map_entry_point object should normally be placed, for the unit off map call-ins (=call-in commander abilities) to work properly.
To do this, we are going to use the Interactivity Stage Editor tool (see Function Manual). Let us get started: First, select the tool by clicking on its icon in the W.B. taskbar (see image below). Then set the Interactivity Stage to 50. Make sure it is 50, as that is very important. After that, right-click, hold and drag outside of the grid lines you set in your map, to paint that interactivity stage. See example image:
Here is a comparison (from top to bottom) of a plain map overlay, territory sector map overlay and interactivity stage 50 map overlay:
  • Tip: To sample an interactivity stage that is already painted on the map and paint it somewhere else too, hold down the Ctrl key, and left-click on the area painted with the interactivity stage that you want to sample. Then you can paint normally by clicking and holding the left mouse button.
Once you've completed these steps, we are ready to get down to the exciting part of map designing.

In this section we will be covering basic object placement. First things first, before we get down to what an object is (although quite obvious) we must find out how to place (or "spawn") one. To place an object, you must first select the Object Placement tool. That opens up a new panel on the right side of the W.B.
  • Explanation: Every tool uses the panel on the right side of the W.B. application window, to display its settings and configurable options, which can be modified by the user to suit their current needs. Its layout changes automatically, based on which tool is selected.
In the panel that opens when you select the Object Placement tool, there are many options to choose from. Right now, you need to scroll down and find the "Objects" rollout.
You should see three expandable/collapsible tree lists, which can be expanded or collapsed, as in the image below:
The lists are "ebps", "sbps" and "visuals". The first are entity blueprints, which are mostly world/nature/NPC objects (squads or entities). The second are squad blueprints, which are playable/controllable squads. The last one is mainly used for NIS animations [more information required]. We are first going to place a World-owned building, as an example.

Since we are going for a world-owned object, we expand the "ebps" tree as such: ebps > environment > art_ambient > buildings > eastern_rural > log_wooden_2x3x1_cottage_01
Select the log_wooden_2x3x1_cottage_01 object by left-clicking its entry in the list (it will be highlighted until placed in the map), and right-click anywhere on the map to place the object. Follow the steps in the image for a better explanation:
And now, add in a bit of rotation. To rotate and object, left-click it to select it, then left-click and drag from right to left or from left to right to rotate the selected object. See the following image:
You can also change the object's height, i.e. elevate or lower it. To change an object's height, left-click on the object you want to elevate/lower to select it, and then, while holding down the H key on your keyboard, left-click and drag up/down to elevate/lower (respectively) the selected object. See the following example image for details:
Level Design Pt. 02
Another very important function of the World Builder, is aligning objects to uneven surfaces (uneven terrain), such as hills, slopes, etc. When an object is positioned in sloped terrain, it usually seems to float above the surface, which is aesthetically unappealing for the map. Such an example can be seen below:

Scenario Creation Pt. 01
SCAR (SCripting At Relic) is a very powerful, and at the same time very understandable scripting language, based on a modified version of the LUA programming language[]. It can be used to implement additional gameplay functionality to your maps (e.g. a classic “King of the Hill” multiplayer/co-op mission) or a full-blown, compelling single-player scenario or series of scenarios – a campaign (think CoH2, or even CoH1, single-player campaigns). Just imagine recreating the Battle of Stalingrad – your own version, with your own hero units, or a more historically accurate one.

SCAR, being based on LUA, does present identical, or at least similar, syntax and structure.
Once again, both SCAR and LUA are very easy to comprehend, fun to use and slightly challenging, yet quite tempting, to master. That simply would mean that using SCAR in Company of Heroes 2 makes the whole scenario creation process extremely interesting and very, very exciting. Note that very limited basic knowledge of programming and programming languages is needed (hence the ease), as the basics will be covered within this section of the guide.

The next subsection will cover the application types/categories required for SCAR scripting (as well as specific applications of each type preferred by the author), sources for SCAR (/LUA) functions and information, i.e. where and how to get it, and some miscellaneous notes and information.

SCAR is a scripting language, which would mean that a SCAR script is comprised of numerous lines of code.
In order to manage those lines of code (=text), we need a versatile and powerful “text editor”. Now, for a start, we could work with MS Notepad; however, as pointed out earlier in this guide (specifically in “Design Introduction”), we need to start out tough and organized, in order to effectively produce high quality work. A far more dynamic text editor and counterpart to MS Notepad (and the tool preferred by the author) is the free, open-source "Notepad++".
These are the download locations for the application:
  • Notepad++ Portable[] (ADVANCED USERS ONLY - portable - can run on any PC whilst preserving settings and has the same functionality, but is more difficult to install and run for less experienced PC users)
Once you've downloaded and installed the application, you're ready to do a little bit of configuring. This is how Notepad++ looks like:
(click image to enlarge)
Now we are going to make one small, but very important and helpful modification to the settings. Simply click Language > L > LUA. That configures Notepad++ to recognize LUA syntax and structure characteristics and transform the text layout accordingly. See image tutorial:
(click image to enlarge)
Now check out a little comparison of the text editor with the setting on (left image) and off (right image):
(click images to enlarge)
Once we've configured those settings, we are ready to begin SCAR coding.
Coding complex and captivating scenarios is not always a matter of being a coding expert. It usually comes down to how well you understand the basic, fundamental commands and functions of the programming language. If you know the basics (and some more advanced stuff here and there, i.e. some tips and tricks) then you can easily build upon that knowledge and accomplish even more goals in your code.

Theoretically, there are probably tens (or even hundreds) of pre-programmed SCAR functions, for example: SGroup_CreateIfNotFound() or Util_CreateSquads(). However, very few of them are commonly used. That does not mean, though, that the rest are useless. Usually they serve a very specific purpose, or are technically a combination of different functions into one, to facilitate the coding of a specific operation to be performed.

  • All of this information can be extracted from the CoH2 game archives (.sga files) using tools and tutorials hosted in the CoH2 Arsenal sub-forum of the Relicnews Forums.[]
    (Note: The above SCAR documentation files already contain references to the source .lua files from which the functions where extracted, which are listed under each function's description.)

  • It is a good thing to know that there is actually a way to study Relic's own SCAR files (and maps) for the ToW and the single-player campaigns by extracting the .sga packages that contain the according files, and opening the .scar files with any text editor and the .sgb map files with the World Builder (you may read numerous tutorials on how to do that in the CoH2 Arsenal sub-forum of the Relicnews Forums[]). It is recommended, however, that you backup any files you are trying to modify or read/extract information from, because you can never know whether the integrity of those files is manipulated in the process or not. Otherwise you run the risk of encountering stability problems or problems with integrity checks from the game (in order to fix those problems, you'll have to verify the CoH2 game files through Steam).

  • IMPORTANT: Lastly, the format of SCAR code in this guide, i.e. how it will be presented/displayed. Complete parts of code will be presented as such:
    function mytestfunction1() --Code is placed here end
    However, whenever a small extract of code, e.g. a simple command or function, is presented, it will be so in italic type. For instance: Util_CreateEntities()

Alright, closing up with this subsection of the guide, we have the miscellaneous stuff. I would like to point out that any tools used in this guide are only the recommended/preferred/tested-and-working ones. If you have a text editor or any other program that you like using and would also like to use in this case, there will be no objection. If you, however, encounter any problems regarding how the application handles SCAR code, that may be an obstruction to your work.

Should you encounter any such problems with SCAR coding, map editing, or modding of the game in general, it is suggested that you should ask for help in the comments of this guide, if your query is simple enough, or in the CoH2 Arsenal sub-forum of the Relicnews Forums[]. Other than that, I guess we can safely say we are all set and ready to go.
Scenario Creation Pt. 02

— SCAR script and World Builder integration

In order for a scenario to be fully functional, there must be something that the code can use to execute its commands in the right place and the right time, somewhere in the map (i.e. the "playing field"). Something that links SCAR scripts with parts of the map the scenario is using. The means for accomplishing this is referred to as "SCAR markers" (not to be confused with the "Action Markers" that are used for visual FX elements, e.g. a fire or smoke rising from debris - more details in the Level Design section). They are WB objects/elements that can be placed anywhere on the map, and they are not rendered in the scenario (i.e. they are invisible) when they are loaded into the game, and by themselves as map elements do not affect gameplay at all. They only represent positions on the map (i.e. they represent XYZ coordinates for a specific, unique location) which essentially tells the code where the actions it is programmed to execute should take place.

I would recommend creating your own set of generic SCAR marker names, preferrably short, and very descriptive. Examples would contain s_forestnorth1, where "s" stands for "spawn", and the part on the right of the underscore would represent the map-specific location, along with additional information, which should be helpful for you in your scripting, without having to switch back and forth from the text editor to the WB. The number "1" is used just in case there are other markers with the same name. To place a SCAR marker in your map, simply use the Render Marker Prox. tool, and select SCAR markers in the right pane. The ones we will be using for now will be the three Ally and three Enemy markers. For now, you may select the Ally Spawn marker, and right click anywhere in your scenario to place one. Then double click its name to change it to s_pathfield1. Explanation image:

— Function structure and basic functions

It is time to start with our very first SCAR function (advanced coders: notice the LUA-similar syntax):
function OnGameSetup() player1 = World_GetPlayerAt(1) player2 = World_GetPlayerAt(2) end
This is what we call a "function". Functions in SCAR always start with function, followed by a space, and the name of the function - in this case OnGameSetup() (PLEASE NOTE the two parentheses "()" are essential and must always be there) - and must end with end. The function part tells the game that we want to create a new function. The OnGameSetup() is the name of the function, which is unique for every function, and is associated with what each function does. The end part tells the game that the function is complete, and that only the code between the beginning and the end of the function is to be executed.

Specifically for this example:
The OnGameSetup() (case sensitive!) is a very basic and special function; it is ran automatically upon loading the map/scenario, and it must be present in all SCAR scripts for their proper functioning. This is where we place all the commands that configure basic settings for the players of the map/scenario, such as: 1. The name of each player (human or AI) 2. The choice of army (e.g. Soviet, German - or even custom armies for mods) It also provides the capability for coders to run desired commands at the start of the map (we will get to that later on).

Now then, the player1 = World_GetPlayerAt(1) for player 1 (and player2 = World_GetPlayerAt(2) for player 2, and so on for any other player) are essential for EVERY map. Simply put, they tell the game that player 1 and 2, for example, exist, and we wish to include them in the map. They tell the game the location of those players in the map, as defined in the WB.
The actual function that's important is World_GetPlayerAt(N), where N is an integer, starting from 1. We place it in a variable (player = ...), i.e. a custom name for it, so we can refer to it more easily, without having to type it all over again.

Now, the World_GetPlayerAt() function does not change any settings for the target player. If we wish to change any settings for a player, we do the following:
function OnGameSetup() player1 = World_GetPlayerAt(1) player2 = World_GetPlayerAt(2) player2name = Player_GetDisplayName(1) Setup_Player(player2, player2name, "german", 2) --We can also use 2 instead of player2, to directly define the map location. end
In this example we keep all the settings for player one, stating only his position in our scenario. Now for the second player, we use the Setup_Player() function. The first argument we use defines which player we want to change the settings for. The second defines the player name (in this case we use a function, stored in a variable, that retrieves the current name of the player, so that they have their in-game username). The third defines the player race, and is either "soviet" for Soviets, or "german" for Germans, including quotes(!). The last defines the player's team. (in this case player one is on team one by default in W.B., and we set player two to team two). You will see more complex examples as we move on to create some basic missions, however, if you wish, you can view OnGameSetup() examples here (download them, and open them with MS Notepad or Notepad++).

Do not worry, however; all this trouble just for the basic function that will always be pretty much be the same. It is only this function (as well as one more) that are all the trouble for SCAR scripting. The rest are much more enjoyable, and it is where you will truly experience the true capabilites of SCAR.

— Final explanations

We managed to create our very first function. Now, if we were to place it in a SCAR file for our maps to use, we would notice an error upon execution. That is because, our overall SCAR script is not functional yet.
We are missing one very important command. At the very start of EVERY SCAR file, we have to place the import("ScarUtil.scar") command. This command is extremely important, as it tells the game to import the complete code library from Relic, which contains all commands and game functions, and instructions on how they should run. Note that it is possible to set it up at the beginning of every SCAR file we make (or even import one of our own), but it is preferred to use the one provided by Relic, mainly because it is global, meaning it will work for every unmodified copy of the game.
If your SCAR file is missing this single command, it will simply not work.
Scenario Creation Pt. 03
— First working example

After this introduction to SCAR coding, we are able to put together our first working SCAR script:
import("ScarUtil.scar") function OnGameSetup() --Player locations player1 = World_GetPlayerAt(1) player2 = World_GetPlayerAt(2) --Player setup (only player two, we keep the player 1 settings unchanged, except for race) --Valid races are: soviet german aef west_german and they must always be put in quotation marks when they are used as arguments in our commands, e.g. "soviet", because they are considered text strings Setup_SetPlayerRace(player1, "soviet") Setup_Player(player2, "German Waffen SS", "german", 2) end
Finally, note the lines that begin with double dashes " -- ". The double dashes denote comment lines, which do not affect the code at all, and are only used for directions or to make notes, for the developers. Generally, in a large script, it is recommended to place explanations before every command, to avoid confusion.
Project Roadmap
Development Status
Introduction/Author's NoteComplete?
Function ManualComplete
Level Design
  • Design Introduction
  • Basics
  • Object Placement
  • Heightmap Editing
  • Texture Placement
  • Territory Mapping
  • Exporting the map/scenario
  • Distributing
  • Balancing and player feedback analysis
In Progress
  • Complete
  • Complete
  • In Progress
  • Not started yet
  • Not started yet
  • Not started yet
  • Not started yet
  • Not started yet
  • Not started yet
Scenario Creation
  • Introduction to SCAR coding
  • Resources and tools
  • Basic level SCAR coding
  • Intermediate level SCAR coding
  • Advanced level SCAR coding
  • Troubleshooting and bug-squashing
In Progress
  • Complete
  • Complete
  • In Progress
  • Not started yet
  • Not started yet
  • Not started yet
To-Do List
To-Do tasks will be added after reasonable completion ratio has been achieved for the aforementioned upcoming features, and new suggestions have been made or new content ideas have been conceived.
< >
«Dracus Aearius»  [author] Feb 5 @ 12:09pm 
I believe you cannot move objects back and forth between the playable and non-playable area. (or just from the non- to the playable area)

Either way, I think you'll need to respawn them in the playable area from scratch.
-=D-Man=- Feb 5 @ 11:52am 
Hi, I placed objects in the "non-playable" area so that I can see the variety of available objects. Now, Id like to drag them into the playable area but I am not able to get them over the border and the objects hitbox is colored in red and not white as usual. What can I do here? Need help please..
郑琦V突击队 Dec 11, 2016 @ 5:08am 
郑琦V突击队 Dec 11, 2016 @ 5:07am 
郑琦V突击队 Dec 11, 2016 @ 5:05am 
郑琦V突击队 Dec 11, 2016 @ 5:04am 
SuddenDeath Nov 14, 2016 @ 8:06am 
made a map, cant find it in game 10/10
Richi Jun 1, 2016 @ 1:05am 
hi, can you help me with nis? i dont understand how to add this in game
Richi Jun 1, 2016 @ 1:05am 
hi, can you help me with nis? i dont understand how to add this in game
Rucks Apr 14, 2015 @ 1:53pm 
So I just made a map, and for some reason troops can run through the buildings and cannot fortify in them. Some buildings do have a pre-capacity for foritication of troops, but I noticed other buildings do not. Is there a way to make every building be capable of fortifying troops?