<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.galaxywiki.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.galaxywiki.net/index.php?title=Special:NewPages&amp;feed=atom&amp;hideliu=&amp;hidepatrolled=&amp;hidebots=&amp;hideredirs=1&amp;limit=50&amp;namespace=0</id>
		<title>GalaxyWiki - New pages [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.galaxywiki.net/index.php?title=Special:NewPages&amp;feed=atom&amp;hideliu=&amp;hidepatrolled=&amp;hidebots=&amp;hideredirs=1&amp;limit=50&amp;namespace=0"/>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Special:NewPages"/>
		<updated>2012-05-19T16:46:18Z</updated>
		<subtitle>From GalaxyWiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://www.galaxywiki.net/Modifying_Model_Skins</id>
		<title>Modifying Model Skins</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Modifying_Model_Skins"/>
				<updated>2012-04-06T19:47:58Z</updated>
		
		<summary type="html">&lt;p&gt;Malpheus: Created page with &amp;quot;=Modifying Model Skins to Improve Graphical Performance= &amp;lt;youtube&amp;gt;WrNqtJq3nKM&amp;lt;/youtube&amp;gt; ''Video tutorial by Fockewulf''   Category:StarCraft II Category:Tutorials [[Categ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Modifying Model Skins to Improve Graphical Performance=&lt;br /&gt;
&amp;lt;youtube&amp;gt;WrNqtJq3nKM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
''Video tutorial by Fockewulf''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Triggers]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;/div&gt;</summary>
		<author><name>Malpheus</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Unit_Conversion_Trigger</id>
		<title>Unit Conversion Trigger</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Unit_Conversion_Trigger"/>
				<updated>2012-04-06T19:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;Malpheus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=The Unit Conversion Video Tutorial=&lt;br /&gt;
&amp;lt;youtube&amp;gt;X25BbwpOuao&amp;lt;/youtube&amp;gt;&lt;br /&gt;
''Video tutorial by ZightFear''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Triggers]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;/div&gt;</summary>
		<author><name>Malpheus</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Broken_Alliances</id>
		<title>Broken Alliances</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Broken_Alliances"/>
				<updated>2012-04-06T08:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: Created page with &amp;quot;[http://www.brokenalliances.com/ Broken Alliances]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.brokenalliances.com/ Broken Alliances]&lt;/div&gt;</summary>
		<author><name>DevliN</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Collision_Detection</id>
		<title>Collision Detection</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Collision_Detection"/>
				<updated>2011-08-20T17:50:37Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Collision Detection is a technique to decide when two objects (in SC2 most propably units) occupy the same space, which can be used for example by [[Physics engine|physics engines]]. There are several methods, if you know any other, please add it here.&lt;br /&gt;
==Simple trigger method==&lt;br /&gt;
This method simply compares all units to each other and calculates their distances. Works fine for ~200 units (no FPS drop on 4 cores, 2.8 MHz).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lv_unitGroup = (All units); //group of units tested for collision between each other&lt;br /&gt;
&lt;br /&gt;
//we go through all units and compare them to all units with higher ID in group (if we compared each unit to each other, we would calculate each PAIR twice)&lt;br /&gt;
for( I from 0 tp (Count units in lv_unitGroup)-1 )&lt;br /&gt;
    for (J from I+1 to (Count units in lv_unitGroup) )&lt;br /&gt;
        x1, y1 = X and Y of (position of (unit I from lv_unitGroup ))&lt;br /&gt;
        x2, y2 = X and Y of (position of (unit J from lv_unitGroup ))&lt;br /&gt;
        // r1, r2 are radiuses of the two units&lt;br /&gt;
        if( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) &amp;lt; (r1+r2)*(r1+r2) )&lt;br /&gt;
                COLLISSION( unit I, unit J)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Data editor method==&lt;br /&gt;
Other, much faster method is using in-built search effects. They are faster then the trigger method, because the engine already contains some optimalization. Basically what you need to do is create a buff that periodically launches a search effect. The search effect will have a radius of 0, &amp;quot;Extend by unit radius&amp;quot; and launches a dummy damage effect. The dummy effect is then hooked onto a trigger. This will create an universal buff that can be applied to any unit, to include it into collision detection. This method works fine for ~500 units (no FPS drop on 4 cores, 2.8 MHz).&lt;br /&gt;
&lt;br /&gt;
==Advanced trigger method==&lt;br /&gt;
To improve performace of the trigger method, the map can be divided into multiple squares (a 10x10 grid for example). The units will then be assigned to according units groups, and only need to be checked against units from adjacent squares.&lt;br /&gt;
&lt;br /&gt;
==Absolutely best method==&lt;br /&gt;
The fastest method possible would be hooking onto the already present collision detector, that the game engine uses, as that would add zero CPU load. {{NeedResearch|problem=So far there is no way on how to do that}}&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Triggers]][[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/How_to_make_StarCraft_II_Assets</id>
		<title>How to make StarCraft II Assets</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/How_to_make_StarCraft_II_Assets"/>
				<updated>2011-07-19T04:59:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial doesn't show detailed artistic processes for whichever art programs you use. You can find out how to make 3D and 2D artwork through experimentation and other tutorials online, but that is beyond the scope of this article. It does, however, show in detail how to get your [[Models|model]] into [[StarCraft II]]'s model format, and have it textured and complete. It doesn't show sound creation, as that will be covered in [[How to make StarCraft II Sounds]]. &lt;br /&gt;
&lt;br /&gt;
= What You Need =&lt;br /&gt;
Currently, you need to have [http://students.autodesk.com/ 3D Studio Max], and [http://www.sc2mapster.com/assets/m3-export-plugin-3ds-max/ NiNtoxicated's .m3 import/export plugin]. You also need a 2D image editing program, such as [http://www.gimp.org GIMP] or [http://www.photoshop.com PhotoShop], and its corresponding [[DDS_(File_Format)|.DDS]] plugin. And, of course, you'll need StarCraft II, and you'll need to know how to use the basics of [[GalaxyEdit]].&lt;br /&gt;
&lt;br /&gt;
You can get a full student edition of 3D Studio Max if you don't use it for commercial purposes and are currently studying. You do not need an .edu email address for it. It will last for 3 years before expiring, by which time there will probably be several new versions to get student editions of; this is the only limitation, although I doubt you get customer support either.&lt;br /&gt;
&lt;br /&gt;
= What You Could Have =&lt;br /&gt;
Alternative 3D modeling programs which you may find easier to use, but which can't currently export to .m3, exist.&lt;br /&gt;
*[http://www.blender.org Blender 3D (Free)] - Blender is the most powerful free 3D modeling program available. It can also import .m3 models, although it can't export them.&lt;br /&gt;
*[http://students.autodesk.com/ Maya] - Maya is an industry standard, often used in the movies and games industries. It's also very expensive, but you can get a student edition for free, same as 3D Studio Max. &lt;br /&gt;
*[http://www.newtek.com/lightwave/ LightWave] - LightWave has a thirty-day trial, and is relatively cheap at $895 USD. &lt;br /&gt;
&lt;br /&gt;
And there are many others, which you can find out more about yourself.&lt;br /&gt;
&lt;br /&gt;
You could also do with a normal mapping program. GIMP and PhotoShop both have normal map plugins, and there are also two other normal map programs commonly used:&lt;br /&gt;
*[http://www.xnormal.net/1.aspx XNormal] - XNormal is a free normal mapping program with 3D Studio Max and Maya support.&lt;br /&gt;
*[http://www.crazybump.com/ CrazyBump] - CrazyBump is not free, but it's quite well featured and you can get a trial version for free.&lt;br /&gt;
&lt;br /&gt;
And for high polygon sculpting, you can use Blender's sculpt, or one of these programs:&lt;br /&gt;
*[http://www.sculptrist.com Sculptris] - Sculptris is a free sculpting program&lt;br /&gt;
*[http://usa.autodesk.com/adsk/servlet/pc/index?id=13565063&amp;amp;siteID=123112 Mudbox] - Mudbox is a professional tool which has a trial version.&lt;br /&gt;
*[http://www.pixologic.com/home.php ZBrush] - Zbrush is made by the same makes of sculptrist, and is their professional scultping program. It's the industry standard at the moment.&lt;br /&gt;
&lt;br /&gt;
= Models =&lt;br /&gt;
As previously said, we won't cover the artistic process in detail as the process varies from tool to tool and books can and have been written on the subject. However, there are a few things to keep in mind when you do create your models.&lt;br /&gt;
&lt;br /&gt;
*Don't go overboard with polygon amount. StarCraft II models are generally less than 10000 polygons. You can go higher for models which are rarely on screen, and in small numbers, but keep in mind that people may not have as nice a computer as you. For doodads and units, try keep it under 3000 or so.&lt;br /&gt;
&lt;br /&gt;
*If you're making models for RTS maps, don't bother with much detail on the underside of the model. And keep in mind that if it's RTS, the players probably won't get close in much, so texturing individual pores on that orc is totally unnecessary.&lt;br /&gt;
&lt;br /&gt;
*StarCraft II only supports triangle and quad polygons. Try to model using only one or the other. I find triangles are great for organic surfaces, and quads are best for inorganic shapes.&lt;br /&gt;
&lt;br /&gt;
== Getting your model into 3D Studio Max ==&lt;br /&gt;
Currently the only working method to get custom models into StarCraft II is to convert them using 3D Studio Max's .m3 plugin. This step assumes you have access to 3D Studio Max. If you created your model in 3D Studio Max, you don't need to follow this step.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Convert your model to a format 3D Studio Max supports. These include .3DS, .FBX, .DAE, .LS, .OBJ, and .WRL, among others. If your chosen modeling program doesn't support exporting to any of these formats, you can use programs such as Blender to convert your model. I recommend COLLADA (.DAE), as it's fairly universally supported. &lt;br /&gt;
&lt;br /&gt;
*Step 2: Import your model into 3D Studio Max. &lt;br /&gt;
[[File:Assets tutorial 1.png|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Prepare for Export ==&lt;br /&gt;
This is where the fun stuff starts. We need to make sure your materials are applied to the model correctly. For the most part, this is the main preparation you need to do.&lt;br /&gt;
&lt;br /&gt;
=== Step 1 === &lt;br /&gt;
Open the Slate Material Editor. It's found at Rendering-&amp;gt;Material Editor-&amp;gt;Slate Material Editor. Now, the Slate Material Editor is fairly similar to Blender's node editor, although more limited. The basic system is that you have a final material which is composed of numerous maps. You link the maps together and finally into the material, using the little circles on the sides of the maps. The system is fairly easy to get used to and quite powerful. If you need more explanation you can check out this video:&lt;br /&gt;
&amp;lt;youtube&amp;gt;xnjozpKK7Fg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2 === &lt;br /&gt;
Using the Slate Material Editor, we'll make our StarCraft II Bitmap, composed of our [[Custom Unit Textures|previously created textures]]. First, double click the StarCraft II material on the left.&lt;br /&gt;
[[File:Assets tutorial 2.png|800px|center]]&lt;br /&gt;
&lt;br /&gt;
As you can see, a new material has been added, called Material #74 (StarCraft II). To the left of it, there's a linked map called a Composite Texture Map. This takes two inputs and outputs one image, which then continues into the StarCraft II material in the CompMap slot.&lt;br /&gt;
&lt;br /&gt;
=== Step 3 ===&lt;br /&gt;
Next we're going to add a diffuse map, a normal map, and an specular map. We'll then link these into the StarCraft II material. On the left again, open up the Maps tree by hitting the + sign next to it. Then double-click the StarCraft II Bitmap entry. You will be prompted to locate an image. Choose your previously created diffuse map. A new map is then added to the area in the centre. Do this two more times, but choosing your normal map and specular map instead.  ''(Note: We don't use the Normal Bump option because the StarCraft II material lets us use a bitmap instead. The only advantage I know of for using a StarCraft II Bitmap over a standard Bitmap is that you can use OGV videos as textures; in fact, in this screenshot I actually used standard bitmaps.)''&lt;br /&gt;
&lt;br /&gt;
Then drag the output nodes to the corresponding input nodes. The only exception is the diffuse map, which you drag to the Composite Texture Map input node.&lt;br /&gt;
&lt;br /&gt;
[[File:Assets tutorial 3.png|800px|center|Drag the output nodes to the corresponding input nodes. The only exception is the diffuse map, which you drag to the Composite Texture Map input node.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 4 ===&lt;br /&gt;
We're almost done. When you double-click the StarCraft II Material, over on the right, there are numerous options related to exactly how the material will apply to the model. A few important ones are the blend mode, the specularity amount, and the HDR multipliers. Blend mode should generally be set to opaque for most units. If you want to make a ghost unit, change this to Add. Specularity amount may need a bit of testing to get it just right for your texture. You may need to put it up quite high to get the correct amount of &amp;quot;shine&amp;quot; on your texture. And the HDR multipliers control how bright the lights and reflection and flashy annoying stuff will be. Mostly you'll leave these the same but in case you're a fan of crazy unrealistic but flashy effects, you'll want to throw these up a bit.&lt;br /&gt;
&lt;br /&gt;
Finally, you need to apply the texture to your model. Go back to the 3D viewport by minimizing the Slate Material Editor, and select your model. Then go back to the Slate Material Editor and right-click the StarCraft II Material. In the box that pops up, choose Assign Material to Selection. Go back to the 3D viewport and give it a test render. If everything was done correctly, you should now have a textured model. Keep in mind that what you see in the render may not be exactly what you see in StarCraft II, so you'll need to do a final test in game before releasing your model.&lt;br /&gt;
&lt;br /&gt;
Finally, select the model, right click it, and go to Convert To:-&amp;gt;Convert to Editable Mesh.&lt;br /&gt;
&lt;br /&gt;
[[File:Assets tutorial 4.png|800px|center|Yay! A sucky temple, fully textured!]]&lt;br /&gt;
&lt;br /&gt;
Note that in this case I had already UV mapped the model to a certain extent. If you haven't done the same, your texture may look weird. Don't worry, if UV unwrapping is too difficult for you at the moment, you can use one of the default UV mapping methods 3D Studio Max has. &lt;br /&gt;
[[File:Assets tutorial 5.png||left]][[File:Assets tutorial 6.png||center]]&lt;br /&gt;
&lt;br /&gt;
== Exporting ==&lt;br /&gt;
Finally after making sure 3D Studio Max imported everything correctly, and applying the materials correctly, you can export the model into .m3 format and get it into StarCraft II! Happily, this step is easy enough, as long as everything goes according to plan. (NOTE: This assumes you've already installed NiNToxicated's m3 plugin for 3D Studio Max, as per the instructions included with the plugin. If you haven't already got it, you can grab it [http://www.sc2mapster.com/assets/m3-export-plugin-3ds-max/ here].&lt;br /&gt;
&lt;br /&gt;
=== Step 1 ===&lt;br /&gt;
Over on the right side of the screen, there's a hammer icon. Click it, and on the pane that appears, choose MAXScript. In the dropdown box called Utilities, choose M3 - Export.&lt;br /&gt;
&lt;br /&gt;
[[File:Assets tutorial 7.png||center]]&lt;br /&gt;
&lt;br /&gt;
The texture path is where your model will look in the map for its textures. By default, you need to import your textures into /Assets/Textures/ using the [[Import|Import Module]]. If you like you can change this to a different folder, or erase it so you can import your textures into the map without moving them into a different folder. Anyway, hit Export, and if everything works properly, your model should soon be exported. To find out how to import it into StarCraft II and use it, check out [[Importing Custom Artwork#Importing Custom Models|Importing Custom Models]].&lt;br /&gt;
&lt;br /&gt;
= Textures =&lt;br /&gt;
We also won't cover this step in detail in terms of artwork. However, the technical details are simple enough to remember.&lt;br /&gt;
&lt;br /&gt;
*In general, use a maximum texture size of 1024x1024.&lt;br /&gt;
&lt;br /&gt;
*Textures have to be a power of two for compression to work. [NOTE: Non-power of two textures may work in StarCraft II; needs testing.]&lt;br /&gt;
&lt;br /&gt;
*Use the .DDS format, rather than the TGA format, as TGAs are generally larger than DDSs.&lt;br /&gt;
&lt;br /&gt;
*Use DXT5 compression for DDSs with alpha maps; use DXT1 for DDSs without alpha maps. This is because DXT5 has the best alpha map quality preservation of all the compression methods, whereas DXT1 doesn't have alpha maps, and is the best compression method for non-alpha maps.&lt;br /&gt;
&lt;br /&gt;
== Normal Maps ==&lt;br /&gt;
StarCraft II uses a fairly odd version of the normal map, which is orange tinted rather than blue. To convert your normal map to the orange SC2 normal map, you have to edit the channels. In PhotoShop, select the red channel, copy it, and paste it into the alpha channel. Then fill the red channel with white, and the blue channel with black.&lt;br /&gt;
&lt;br /&gt;
The process is slightly more difficult in GIMP. First, add an alpha channel if one doesn't already exist. Second, select the entire image; then go to Colors-&amp;gt;Components-&amp;gt;Decompose. In the box that pops up, choose RGB and press OK. This then places the channels into separate layers. Select the red layer, copy it, and paste it into the alpha layer. Then fill the red layer with white, and the blue layer with black. Finally select all the layers and go to Colors-&amp;gt;Components-&amp;gt;Recompose. This then places the layers back into one layer on your original image. It should be orange-tinted if you did it correctly. [NOTE: there's an alternate and more official method for GIMP as shown [http://gimpforums.com/thread-can-i-do-this-with-channels here].&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Art]][[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Sharing_Units</id>
		<title>Sharing Units</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Sharing_Units"/>
				<updated>2011-07-17T02:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's very simple to have shared unit control between two or more players. Create your trigger, with whatever events and conditions you desire. Then, add the following action:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Player - Make player 1 and player 2 treat each other as Ally With Shared Vision And Control&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow players 1 and 2 control each others' units.&lt;br /&gt;
&lt;br /&gt;
You can turn off control of your own units, so that, say, Player 1 can't control his own units.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
You can't share unit control of a single unit; only all units may be shared, or none. A workaround is to have a third player, and give the single (or more) unit to that player. Then share control of that player; however, this requires having a spare player used for essentially nothing else.&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Importing_Custom_Artwork</id>
		<title>Importing Custom Artwork</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Importing_Custom_Artwork"/>
				<updated>2011-06-30T21:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: /* Importing Custom Terrain Textures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating custom artwork is all very well, but if you can't actually use it in [[StarCraft II]], it's useless. &lt;br /&gt;
&lt;br /&gt;
= Importing Custom Models =&lt;br /&gt;
&lt;br /&gt;
The following tutorial is a quick explanation for how to import custom models into your StarCraft 2 map.&lt;br /&gt;
&lt;br /&gt;
First, you will need an '''.m3''' model to import (and corresponding textures). For this tutorial, I've chosen a model of Garrosh from World of WarCraft. You can download this model from [http://www.megaupload.com/?d=PYJOYMPV here].&lt;br /&gt;
&lt;br /&gt;
This is also written assuming you have the &amp;quot;Show Table View&amp;quot; button pressed next to the right &amp;quot;Search&amp;quot; bar in the [[Data Editor]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing the Model ===&lt;br /&gt;
#Under &amp;quot;Modules,&amp;quot; select '''&amp;quot;[[Starter_Guide#Import_.28F9.29|Import]]&amp;quot;''' (F9). A new window will pop up that will list all imported files in your map.&lt;br /&gt;
#In this new window, select '''&amp;quot;Import Files...&amp;quot;''' (Ctrl+I) from the &amp;quot;Data&amp;quot; menu. Another window will open.&lt;br /&gt;
#Click on the &amp;quot;Browse...&amp;quot; button on the right to find the folder that contains your model (in this case, we're selecting &amp;quot;Garrosh&amp;quot;). A list of files should appear in the box on the left. Check the boxes next to all the files having to do with the model you want to import:&lt;br /&gt;
#*'''Garrosh.m3'''&lt;br /&gt;
#*'''GARROSHARMOR.tga'''&lt;br /&gt;
#*'''GARROSHBODY.tga'''&lt;br /&gt;
#Click &amp;quot;Ok&amp;quot; and they will now appear in a new folder under &amp;quot;Document Files&amp;quot;. Now select the three files you just imported. Right-click on one of them (with all 3 selected) and select '''&amp;quot;Move Files...&amp;quot;''' (Ctrl+M). A new window will pop up with two options. Select '''&amp;quot;Existing Path: (Root)&amp;quot;''' and click &amp;quot;Ok.&amp;quot;&lt;br /&gt;
#Unfortunately for the textures to show up properly on the model, you will have to close and re-open the '''editor''' (not just your map). Save your map and close the editor, then start it up again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Applying the Model to a Unit ===&lt;br /&gt;
[[File:OmniGarrosh.png|200px|thumb|right|Garrosh from World of WarCraft with a blue [[OmniLight]] attached to him.]]&lt;br /&gt;
#Once the map has reopened, go to the '''&amp;quot;[[Data Editor]]&amp;quot;''' (F7). Next to &amp;quot;Data Type,&amp;quot; select '''&amp;quot;[[Models]].&amp;quot;''' Find whatever unit you want to look like Garrosh. In this case, I've chosen a Zealot.&lt;br /&gt;
#After selecting Zealot, the box on the right will fill up will all sorts of information. We will only focus on three of these fields.&lt;br /&gt;
##Find &amp;quot;Model&amp;quot; and double-click on the field next to it. A new window will pop up with a preview of the existing model. Click &amp;quot;Browse...&amp;quot; to open a list of all the .m3 files in the editor. Either search for &amp;quot;Garrosh&amp;quot; or scroll down to the bottom to find the model. Once '''Garrosh.m3''' is selected, click &amp;quot;Ok.&amp;quot; The preview should now show you the model of Garrosh. Click &amp;quot;Ok.&amp;quot;&lt;br /&gt;
##Find &amp;quot;Scale Maximum&amp;quot; and double-click on the field next to it. Set each of these values to 1.5 and click &amp;quot;Ok.&amp;quot;&lt;br /&gt;
##Find &amp;quot;Scale Minimum&amp;quot; and double-click on the field next to it. Set each of these values to 1.5 and click &amp;quot;Ok.&amp;quot;&lt;br /&gt;
#Save your map and close the Data Editor. Now just place the Zealot unit on the map, and you'll notice it now looks and acts like Garrosh.&lt;br /&gt;
&lt;br /&gt;
= Importing Custom Icons =&lt;br /&gt;
You can watch this video (NOTE: Made during beta) or read the following text on how to import and use custom icons.&lt;br /&gt;
&amp;lt;youtube&amp;gt;AsolKlqrD6I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create the Icon ===&lt;br /&gt;
[[Designing Custom Icons]] is fairly difficult, but once you have designed and finished your icon, you need to save it as a [[DDS (File Format)]]. When your chosen program comes up with the options on how to save it, choose BC3/DXT5 for the compression method, and don't choose Create Mipmaps. The reason you use BC3/DXT5 for the compression method is because that method allows use of interpolated alphas, and retains a high quality. As for mipmaps, they are unnecessary, as StarCraft II automatically creates mipmaps for you.&lt;br /&gt;
&lt;br /&gt;
=== Import the Icon ===&lt;br /&gt;
The procedure is the same as any other import. &lt;br /&gt;
#Under &amp;quot;Modules,&amp;quot; select '''&amp;quot;[[Starter_Guide#Import_.28F9.29|Import]]&amp;quot;''' (F9). A new window will pop up that will list all imported files in your map.&lt;br /&gt;
#In this new window, select '''&amp;quot;Import Files...&amp;quot;''' (Ctrl+I) from the &amp;quot;Data&amp;quot; menu. Another window will open.&lt;br /&gt;
#Click on the &amp;quot;Browse...&amp;quot; button on the right to find the folder that contains your icon. A list of files should appear in the box on the left. Check the box next to the icon you want to import.&lt;br /&gt;
#Click &amp;quot;OK&amp;quot; and they will now appear in a new folder under &amp;quot;Document Files&amp;quot;. If you wish, you can move them to a more appropriate place, such as \Assets\Textures\.&lt;br /&gt;
&lt;br /&gt;
=== Use the Icon ===&lt;br /&gt;
Most probably, you will want to [[Creating a custom button|create a custom button]] for your icon, or replace an existing button icon with yours. Go to the [[Data Editor]] module, choose [[Buttons]] from the dropdown menu, and navigate to your button. Then change the icon.&lt;br /&gt;
&lt;br /&gt;
= Importing Custom Terrain Textures =&lt;br /&gt;
[[Custom Terrain Textures|Designing custom terrain textures]] is easy enough; happily, so is importing them and using them. &lt;br /&gt;
&lt;br /&gt;
=== Importing the Terrain ===&lt;br /&gt;
You should have two .DDS files ready to import; one diffuse map, and one normal map. &lt;br /&gt;
#Under &amp;quot;Modules,&amp;quot; select '''&amp;quot;[[Starter_Guide#Import_.28F9.29|Import]]&amp;quot;''' (F9). A new window will pop up that will list all imported files in your map.&lt;br /&gt;
#In this new window, select '''&amp;quot;Import Files...&amp;quot;''' (Ctrl+I) from the &amp;quot;Data&amp;quot; menu. Another window will open.&lt;br /&gt;
#Click on the &amp;quot;Browse...&amp;quot; button on the right to find the folder that contains your terrain files. A list of files should appear in the box on the left. Check the box next to the files you want to import.&lt;br /&gt;
#Click &amp;quot;OK&amp;quot; and they will now appear in a new folder under &amp;quot;Document Files&amp;quot;. Next, move them to \Assets\Textures\. You may have to create those folders in your map.&lt;br /&gt;
&lt;br /&gt;
=== Using the Terrain ===&lt;br /&gt;
Screen shot goes here of le terrain area of the data editor. plus infos. I'll do later.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
#[[User:DevliN|DevliN]] at Staredit Network has a thread of WoW models ready for import found [http://www.staredit.net/topic/12925/ here].&lt;br /&gt;
#Zarakk at SC2Mapster has a thread of WoW models ready for import found [http://forums.sc2mapster.com/resources/art-assets/8347-wow-model-pack-requests/ here].&lt;br /&gt;
#There are models, icons, and custom terrain textures on StarEdit Network [http://www.staredit.net/galaxyedit here]&lt;br /&gt;
#There are models, icons, and custom terrain textures on UDMod [http://www.udmod.com/downloads.php here]&lt;br /&gt;
#There are models, icons, and custom terrain textures on HiveWorkshop [http://www.hiveworkshop.com/forums/sc2res.php here]&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Tutorials]][[Category:Data Editor]][[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Variable</id>
		<title>Variable</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Variable"/>
				<updated>2011-05-19T07:43:43Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: /* Complex */  spelling check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each [[Variables|variable]] has a type, which indicates what type of data is beeing stored inside it.&lt;br /&gt;
&lt;br /&gt;
There are two categories of variable types: primitive and complex. Primitive are simple data types, such as numbers, that contain small amount of data (1-4 B). Complex types take up much more space (for example point: it has 3 coordinates and facing angle, which are 4 numbers).&lt;br /&gt;
==Primitive==&lt;br /&gt;
Primitive variables are created and deleted as you use them dynamically (e.g. when a function/trigger with local variables is executed, all variables are created and given initial values), and their value is stored directly in their memory space.&lt;br /&gt;
List of primitive variable types:&lt;br /&gt;
*'''int''' (Integer) - an integer number, max. value +- 2 billion&lt;br /&gt;
*'''fixed''' (real) - a real number with fixed point. Max. value +-500k, maximum precision 1/4096&lt;br /&gt;
*'''byte''' (byte) - unsigned integer of 1KB size - values 0-255&lt;br /&gt;
*'''color''' (color) - collection of 3 colors (RGB) and alpha value&lt;br /&gt;
&lt;br /&gt;
==Complex==&lt;br /&gt;
Complex variables also require 4B of space, but this space is filled only with a pointer (a reference) to another space in memory, which contains the actual data. This means that every time you set a '''new value''' for this variable, a '''new memory''' is taken up and the pointer is pointed there. The old data space is then deleted automatically. This however creates unnecessary load for CPU, which can be avoided by intelligent design. (e.g. if you are updating a dialog for a player, do not call ''(Player group containing (Player X))'' in each line, but just once at the beginning and save it in a variable. For each use a new player group is created in memory, and a milisecond later deleted.)&lt;br /&gt;
&lt;br /&gt;
Another problem with complex types is the way operator == (comparsion) works. If you, for example, compare two timers, == will return true if both values are link to the '''same timer''', not if the timers have same time left. There are few exceptions (abilcmd, point, string, unitfilter, unitref).&lt;br /&gt;
&lt;br /&gt;
List of complex variable types (first are script names, second trigger names):&lt;br /&gt;
*'''abilcmd''' (Ability command)&lt;br /&gt;
*'''bank''' (Bank)&lt;br /&gt;
*'''camerainfo''' (Camera)&lt;br /&gt;
*'''marker'''&lt;br /&gt;
*'''order''' (Order)&lt;br /&gt;
*'''playergroup''' (Player Group)&lt;br /&gt;
*'''point''' (Point)&lt;br /&gt;
*'''region''' (Region)&lt;br /&gt;
*'''soundlink''' (Sound link)&lt;br /&gt;
*'''string''' (String)&lt;br /&gt;
*'''text''' (Text)&lt;br /&gt;
*'''timer''' (Timer)&lt;br /&gt;
*'''transmissionsource''' (Transmission source)&lt;br /&gt;
*'''unitfilter''' (Unit filter)&lt;br /&gt;
*'''unitgroup''' (Unit group)&lt;br /&gt;
*'''unitref''' &lt;br /&gt;
*'''waveinfo''' &lt;br /&gt;
*'''wavetarget'''&lt;br /&gt;
&lt;br /&gt;
==Fake==&lt;br /&gt;
Some variable types are present only in trigger editor (in GUI), in script they are represented by a variable of other, usually primitive, type.&lt;br /&gt;
List of trigger-only variable types:&lt;br /&gt;
*'''-Preset''' - individually set for each preset, but mostly int&lt;br /&gt;
*'''-Game link''' - always string&lt;br /&gt;
*'''-File''' - always string&lt;br /&gt;
*'''Actor Message''' - string&lt;br /&gt;
*'''Animation Name''' - string&lt;br /&gt;
*'''Attribute ID'''(both) - string&lt;br /&gt;
*'''Attribute value''' - string&lt;br /&gt;
*'''Cinematic''' - int&lt;br /&gt;
*'''Conversation''' - int&lt;br /&gt;
*'''Conversation reply''' - int&lt;br /&gt;
*'''Conversation state''' - string&lt;br /&gt;
*'''Dialog''' - int&lt;br /&gt;
*'''Dialog item''' - int&lt;br /&gt;
*'''Difficulty''' - int&lt;br /&gt;
*'''Leaderboad''' - int&lt;br /&gt;
*'''Mercenary''' - int&lt;br /&gt;
*'''Mission archive''' - int&lt;br /&gt;
*'''Model Camera''' - string&lt;br /&gt;
*'''Objective''' - int&lt;br /&gt;
*'''Ping''' - int&lt;br /&gt;
*'''Planet''' - int&lt;br /&gt;
*'''Player Color''' - int&lt;br /&gt;
*'''Purchase item''' - int&lt;br /&gt;
*'''Research''' (all three) - int&lt;br /&gt;
*'''Unit type''' - string&lt;br /&gt;
*'''Water''' - string&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Triggers]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Models_(Catalog)</id>
		<title>Models (Catalog)</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Models_(Catalog)"/>
				<updated>2011-05-17T07:22:22Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: Created page with &amp;quot;Models are catalog objects that wrap up actual 3D models. They contain a various number of settings, but generally only the ''Model'' field is important (link to t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Models are [[catalog]] objects that wrap up actual [[Models|3D models]]. They contain a various number of settings, but generally only the ''Model'' field is important (link to the model file).&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
There are two types: Generic and Foliage. Foliage contains a number of additional settings concerning the foliage generator, for anything else use Generic.&lt;br /&gt;
&lt;br /&gt;
===Fields===&lt;br /&gt;
{{Stub}}&lt;br /&gt;
*'''Model''' - as said before, most important field, linking to the [[Models|model]] file.&lt;br /&gt;
*'''Scale min/max''' - allows for random scale, or complete rescale of a model (this scale is applied together with any possible actor scale, e.g. 0.5 model scale and 0.5 actor scale will result in 0.25 result)&lt;br /&gt;
*'''Selection radius''' - the size of selection circle, if it is used as unit model. This is affected by the model scale.&lt;br /&gt;
*'''Selection offset''' - allows to offset the selection circle&lt;br /&gt;
*'''Variation count''' - unless it's set to 1, random model file will be chosen (the given name in the '''Model''' field is a template, the actual name of the used model will be name_00.m3 to name_xx.m3)&lt;br /&gt;
&lt;br /&gt;
These fields are sufficient for regular use (e.g. creating a unit model from any model in game).&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Data Editor]][[Category:Catalogs]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Creating_complex_abilities</id>
		<title>Creating complex abilities</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Creating_complex_abilities"/>
				<updated>2011-05-16T15:06:22Z</updated>
		
		<summary type="html">&lt;p&gt;Payne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial shows how to link multiple [[effects]], [[behaviors]], [[units]] and [[abilities]] together, to create an ability with a very complex effect, stretching the data editor to it's maximum.&lt;br /&gt;
&lt;br /&gt;
===General tips and tricks===&lt;br /&gt;
[[File:Complex.gif|400px|thumb|Diagram of the links between catalog types and triggers. Red links are broken]]&lt;br /&gt;
If you want to create more interesting abiltities than just &amp;quot;+X bonus for Y seconds&amp;quot;, you will need to use multiple effects, and some other catalog types as well. The most common effect you will use is [[Effects#Create persistent|create persistent]], that allows you to offset or delay effects, and, most important, to launch multiple effects from it. You can &amp;quot;schedule&amp;quot; multiple other effects to happen in precise times at any place.&lt;br /&gt;
&lt;br /&gt;
A useful technique is using &amp;quot;hidden&amp;quot; abilties: any ability that doesn't have a command button can't be used by player, but can be ordered to by [[triggers]]/[[Effect#Issue Order|appropriate effect]]. For example [[changeling]] uses this technique: It has three hidden morph abilities (for the three units it can change to), and his ability simply determines which one to use and orders the changeling to use it.&lt;br /&gt;
&lt;br /&gt;
===Example: Air strike===&lt;br /&gt;
In this example we will try to create an Air Strike ability: Three banshees will apper, fly by the give location and release couple of missiles. Completely with the data editor, of course.&lt;br /&gt;
&amp;lt;youtube&amp;gt;vT2PKHGprSc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, what do we need to do:&lt;br /&gt;
* Spawn banshees&lt;br /&gt;
* Make them move&lt;br /&gt;
* Launch the bombs&lt;br /&gt;
* Remove them&lt;br /&gt;
So the first effect, that will wrap the entire ability up, will be a persistent effect, that spawns banshees and launches missiles. Move order will be administered by the Create unit effect, removing bashees by a behavior they have.&lt;br /&gt;
&lt;br /&gt;
* AirStrike Main (Effect - Create Persistent)&lt;br /&gt;
** Spawn Banshee (Effect - Create Unit)&lt;br /&gt;
*** Banshee - airstrike (Unit)&lt;br /&gt;
**** Banshee timed death (Buff)&lt;br /&gt;
*** Banshee Airstrike order offset (create persistent)&lt;br /&gt;
**** Banshee Airstrike order (Issue order) &lt;br /&gt;
** AirStrike bombard persistent&lt;br /&gt;
*** Airstrike search (search area)&lt;br /&gt;
**** Airstrike Launch (launch missile)&lt;br /&gt;
***** Airstrike damage&lt;br /&gt;
(The purpose of adding ''AirStrike persistent'' is to randomize impact locations.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we have the main effect tree, we can start creating them. Start by duplicating banshee (check only the unit actor, launch and damage effects). Then modify the banshee by adding untargetable, unselectable and invulnerable flags. Remove weapons, the launch missile effects will be done by other effects. The ''timed death'' is extremely easy. Create a new buff, set duration to 10 seconds and Final effect to ''suicide (remove)'', then just add this buff to the duplicate banshee's starting behaviors.&lt;br /&gt;
&lt;br /&gt;
Then, we start with the spawning and moving. Create the AirStrike main persistent, leaving all settings as they are for now. Then create a ''Create unit'' effect that creates the new, duplicate banshee (''Spawn Unit''' field). Now just change the &amp;quot;Location&amp;quot; to Target point and uncheck the &amp;quot;Uses food&amp;quot; flag (either that, or change the duplicate banshee's ''supply use''' to 0).&lt;br /&gt;
&lt;br /&gt;
The move order uses an advanced effect targeting technique. What we want is to order the banshee to fly over the target point. Start by creating the order offset effect (persistent). Set Location, Location offset end and Location offset start to Target Unit (this effect will be cast by the &amp;quot;Create unit effect&amp;quot; directly on the banshee). Then set ''Offset facing fallback'' to Target Unit of the Airstike main effect (the field should read ''Airstrike main: target unit''). This will make sure the offset is calculated using the casting unit's facing, same as the offset calculated for spawn (we will add it later). Then set Period count to 1, period duration to 1 and periodic offset to 20,20.&lt;br /&gt;
&lt;br /&gt;
Finally create an Issue order effect, that orders the Move ability (order ID 0). Target is target point, Player should be ''Caster'' and Unit is ''Banshee Airstrike order offset:Target unit''' ( the issue order is executed upon a location, so we need to determine the unit this way ). That is all for the order effect, so just add it as periodic effect of the ''Banshee Airstrike order offset'', and add the ''Banshee Airstrike order offset'' as ''Effect - spawn'' of the Create Unit effect.&lt;br /&gt;
&lt;br /&gt;
To link all this to the main effect, create a new persistent effect, set it's period count to 3, periodic effect to &amp;quot;Spawn banshee&amp;quot; and periodic offsets to someting around -10,-10 (In the video I used -10,-10; -10,-12; and -12,10 - this way banshees fly in a formation).&lt;br /&gt;
&lt;br /&gt;
That concludes the move part. To test it out, create new Effect - Target ability, set the effect to Airstike main, Default button for Excecute command to anything and add the ability to some unit to test it out. It should create banshees, that fly over targeted point and then disappear.&lt;br /&gt;
&lt;br /&gt;
The bombardment part is trickier. There are multiple ways to achieve this effect, I have chosen following: one main persistent effect will launch missiles from a random banshee to a random point, multiple times.&lt;br /&gt;
&lt;br /&gt;
Start by creating the Airstrike bombard persistent. That effect will randomize impact locations. Set it's period count to 15 (this is the number of bombs), periodic durations to 0.1 (this executes the entire bombardment in 1.5 seconds), periodic offset to a couple of random offsets (from -1,-1 to +1,+1), and check &amp;quot;Random offset&amp;quot; flag. The periodic effect will be empty for now, we will make that in a while.&lt;br /&gt;
&lt;br /&gt;
Second part is the Search Area effect, which will randomize which banshee releases the current bomb. Set are to 5, effect to Banshee backslash rocket launch (the one you duplicated with banshee). Maximum count will be 1, and Target Sorts ''TSRandom'' - this will select one random banshee. Then add this effect as periodic effect of Airstike persistent.&lt;br /&gt;
&lt;br /&gt;
Lastly, modify Banshee backslash rockets launch: ''Launch location''' will be ''Target unit'' (this effect is used by the &amp;quot;Seach area&amp;quot; effect, so the found banshee is marked as target) and ''Impact Location'' is Airstike Search:Target point. (Airstike search is executed with random offset by the airstike bombard persistent - it's target marks the bomb target), and Validators to a new validator (''Unit type'' that checks whether the target is the duplicate Banshee).&lt;br /&gt;
Also make Banshee backslash rockers damage cause area effect (add something in the &amp;quot;'''Area+'''&amp;quot; field).&lt;br /&gt;
&lt;br /&gt;
The final change is incorporating Airstrike bombard peristent in the main effect. Change the period count to 4, period effects to 3x''Spawn banshee'' and 1x''Airstrike bombard''(first theree are spawn, the last effect is bombard), period durations to 3x0 and 1x5 (first three instanteniously, the last one with a delay) and add one 0,0 offset (there are three already).&lt;br /&gt;
&lt;br /&gt;
Congratulations, if you did everything right, artillery strike should look like the one in video.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''(The attack actor is not working, if someone find a fix that would be appreciated)'' &lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Data Editor]][[Category:Tutorials]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Interact</id>
		<title>Interact</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Interact"/>
				<updated>2011-05-16T08:30:42Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: /* Fields */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Interact is a type of [[ability]] that allows unit to be used by other players than the owner.&lt;br /&gt;
&lt;br /&gt;
Interact usually works on auto-cast, although it can be used as manually-cast ability. Casting this ability on a unit gives control of the ''casting'' unit to the target's unit controller. (e.g. an item shop cast this ability to grant control to the heroes standing nearby).&lt;br /&gt;
&lt;br /&gt;
===Fields===&lt;br /&gt;
Apart from standard fields, this ability has just some specific flags.&lt;br /&gt;
*'''Share control''' - gives control to target unit, allowing use of abilities. If a [[Abilities#Train|Train]] ability is used through Interact and trains an [[Items|item]] unit, the item is given in target unit's [[inventory]].&lt;br /&gt;
*'''Share vision''' - gives the vision of the interacting unit with target unit's controller. (This is used for melee Xel'Naga towers)&lt;br /&gt;
*'''Exclusive''' - as long as one unit is targeted, no other can be. ''(needs confirmation: stops only autocast, it can still be manually changed)''&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Data Editor]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Dependencies</id>
		<title>Dependencies</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Dependencies"/>
				<updated>2011-05-14T02:33:42Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dependencies are Mod files that your map loads when you start the map. They contain information which your map then uses, e.g. models, artwork, and data. &lt;br /&gt;
&lt;br /&gt;
= Default Dependencies =&lt;br /&gt;
[[StarCraft II]] comes with several default dependencies which are normally used as starting points for maps. You add them via File -&amp;gt; Map Dependencies.&lt;br /&gt;
&lt;br /&gt;
[[File:DefaultDependencies.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The campaign dependencies contain the most resources, as they contain all the unit information from the entire Wings of Liberty single-player campaign. The melee dependencies only contain the unit information from the online ladder melee. You can also add mod files from Battle.net 2.0, or from your computer, as dependencies.&lt;br /&gt;
&lt;br /&gt;
[[File:CampaignDependencies.png]]&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Map_Obfuscation</id>
		<title>Map Obfuscation</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Map_Obfuscation"/>
				<updated>2011-05-14T00:50:54Z</updated>
		
		<summary type="html">&lt;p&gt;Payne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map Obfuscation is a method in which you make it hard for people who open your map to understand what everything is and does. Generally, this is in an attempt to make your map more Closed Source, rather than Open Source (See [[Open Source and Closed Source]]. Note: Don't obfuscate your version of the map that you edit, or you'll end up being really confused. Alternatively, write in a text file what each changed name means, and refer to that.&lt;br /&gt;
&lt;br /&gt;
== Manual Obfuscation ==&lt;br /&gt;
Manual obfuscation is basically manually making variable names, object names, unit names, etc. hard to understand, either by typing random letters (dgfgsdgergsdgd) for each name, or unexplanatory names (v1, v2, v3, v4 etc.). While it may take some time, this method is quite solid.&lt;br /&gt;
&lt;br /&gt;
=== Small example ===&lt;br /&gt;
Rodrigo, the maker of Nexus Word War and Debates, has been using quite a clever method to protect its [[Banks|SC2Bank]] files: he mixes lower-case 'L', capital 'i', and possibly the character '|' (to verify), to protect his banks.&lt;br /&gt;
&lt;br /&gt;
For example, try to determine the difference between: llIIlIlll and IlIIllllI. It is pretty hard, indeed. Of course, you could start copy-pasting every single code in a text-editor program and change their font, but you are kind of forced to admit it could discourage quite a few people.&lt;br /&gt;
&lt;br /&gt;
== Program Obfuscation ==&lt;br /&gt;
You can use programs to automatically obfuscate your map data. Currently only one exists: [http://www.sc2mapster.com/assets/map-obfuscation/ StragusMapster's Data Obfuscation Tool].&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Stubs]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Open_Source_and_Closed_Source</id>
		<title>Open Source and Closed Source</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Open_Source_and_Closed_Source"/>
				<updated>2011-05-14T00:36:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TutorialsBox&lt;br /&gt;
|contents  = [[Unlocking Locked Maps]]&lt;br /&gt;
[[Map Obfuscation]]&lt;br /&gt;
}}&lt;br /&gt;
This page is here to document the debate between Open Source and Closed Source. '''Keep this article neutral, it is not here to convince anyone of one side or the other; instead, it is here to show the two sides' arguments and allow readers to make their own choice.'''&lt;br /&gt;
&lt;br /&gt;
== Arguments for Open Source ==&lt;br /&gt;
*Open Source allows users to learn from the map's design. They can open up the map and directly see how something was done, and duplicate that in their map or add to their knowledge.&lt;br /&gt;
*Open Source maps don't become stale and undeveloped, as anyone can open them up, make new changes and improvements, and continue the development after the original author has moved on.&lt;br /&gt;
*Closed Source maps can't be stolen on Battle.Net 2.0, as Blizzard actively polices maps and will act on any reports of stolen maps.&lt;br /&gt;
&lt;br /&gt;
== Arguments for Closed Source ==&lt;br /&gt;
*Closed Source prevents people from stealing maps and map assets. The original author retains the credit of making the map. &lt;br /&gt;
*Closed Source doesn't prevent people from learning about the map's design; people can contact the author to find out how he did something.&lt;br /&gt;
*Blizzard won't always actively police maps and act on reports of stolen maps on Battle.Net.&lt;br /&gt;
*Open Source doesn't teach you anything unless you already know enough about mapping to understand what you're seeing; if you understand that much, you should understand how to emulate the desired effect yourself.&lt;br /&gt;
*Open Source lets people see how to cheat and break your map.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Whichever you choose, remember to be helpful to any mappers that want to learn from you, and remember to credit original authors and people who helped you out with something you wanted to know.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
*http://www.staredit.net/topic/12889/0/&lt;br /&gt;
*http://forums.sc2mapster.com/general/general-chat/13581-sot-is-unlocked/&lt;br /&gt;
*http://en.wikipedia.org/wiki/Comparison_of_open_source_and_closed_source&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Detecting_units_in_line</id>
		<title>Detecting units in line</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Detecting_units_in_line"/>
				<updated>2011-05-13T09:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial solves a common issue in FPS maps: detecting the first unit in a line (usually in line of a shot).&lt;br /&gt;
&lt;br /&gt;
You may have heard about the [[traceline]] algorithm; it is not recommended to use traceline, as it is inefficient. This algorithm uses vectors to make the calculations much simpler.&lt;br /&gt;
&lt;br /&gt;
=Mathematics of this algorithm=&lt;br /&gt;
Feel free to skip this paragraph over, if you don't/can't understand mathematics.&lt;br /&gt;
This algorithm uses [http://en.wikipedia.org/wiki/Vector_projection vector projection] and [http://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line distance of a point from a line]. Vector projection uses the formula ''A*B / |B|'' for projecting vector A into vector B. We use a vector of length 1 for B, so it becomes a very simple ''A*B'' formula.&lt;br /&gt;
Distance from a point to a line is ''(Px*Bx + Py*By)/|B|'' for distance between point P and line with ''normal'' B. Again, B will have length of 1, making this a very simple formula.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
The main goal of developing this algorithm was to limit calling of '''Units in Range''' function, because it is very slow. Therefore, a single call of this function is executed on entire area, where the shot goes. '''(image will be uploaded soon)''' Then, all units found by this function are compared againts the point-to-line distance formula, to see whether they are in the line or not.&lt;br /&gt;
&lt;br /&gt;
=Pseudocode for 2D=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lv_range = 10; //This is an example value, it can be set differently&lt;br /&gt;
lv_attacker = (Triggering Unit); //depends on implementation&lt;br /&gt;
&lt;br /&gt;
lv_x1 = -Cos( Facing of lv_attacker) );&lt;br /&gt;
lv_y1 = Sin( Facing of lv_attacker) ); // vector perpendicular to the direction of shot&lt;br /&gt;
&lt;br /&gt;
lv_unitGroup = Unit in Range (lv_range/2) of Point( X of lv_attacker + lv_x1*lv_range/2,X of lv_attacker + lv_x1*lv_range/2 ); //the center is in half of the maximum distance&lt;br /&gt;
&lt;br /&gt;
Pick Each Unit in lv_unitGroup&lt;br /&gt;
    lv_tmpX = X of (Picked unit) - X of (lv_attacker)&lt;br /&gt;
    lv_tmpY = Y of (Picked unit) - Y of (lv_attacker)&lt;br /&gt;
    lv_dst = ABS ( lv_tmpX*lv_x1     +   lv_tmpY*lv_y1 ); //distance to line calculation&lt;br /&gt;
    if( lv_dst &amp;lt; UnitGetProperty( (Picked unit), Radius) ) //in line of shot&lt;br /&gt;
        AddUnitToUnitGroup( (Picked Unit), lv_possibleTargets );&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
lv_target = UnitFromGroupClosestToPoint( lv_possibleTargets, Position of(attacker) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Pseudocode for 3D=&lt;br /&gt;
To make the algorithm work in 3D, simply add height check. There is no point making 3D version for units, this example will use camera values to determine the coordinates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//position of camera eye&lt;br /&gt;
lv_x1 = X of (Camera target) + Sin( camera yaw )*Cos( camera pitch )*(Distance of camera)&lt;br /&gt;
lv_y1 = Y of (Camera target) + Cos( camera yaw )*Cos( camera pitch )*(Distance of camera)&lt;br /&gt;
lv_z1 = Height of (camera target) + Sin(camera pitch)*(Distance of camera) + (Camera height offset)&lt;br /&gt;
&lt;br /&gt;
// vector perpendicular to the direction of shot&lt;br /&gt;
lv_dx = -Cos( camera yaw );&lt;br /&gt;
lv_dy = Sin( camera yaw );&lt;br /&gt;
&lt;br /&gt;
//we are tracking FROM eye TOWARDS target -&amp;gt; the angle needs to be reversed&lt;br /&gt;
lv_tan = Tan( 90 - camera pitch );&lt;br /&gt;
&lt;br /&gt;
lv_range = 10 * Cos(camera pitch) + 1; //10 is an example for maximum shot range, 1 is a reserve.&lt;br /&gt;
&lt;br /&gt;
lv_unitGroup = Unit in Range (lv_range/2) of Point( X of lv_attacker + lv_x1*lv_range/2,X of lv_attacker + lv_x1*lv_range/2 ); &lt;br /&gt;
&lt;br /&gt;
Pick Each Unit in lv_unitGroup&lt;br /&gt;
    lv_tmpX = X of (Picked unit) - lv_x1&lt;br /&gt;
    lv_tmpY = Y of (Picked unit) - lv_x2&lt;br /&gt;
&lt;br /&gt;
    // HH is height of unit - either create a lookup table for different units, or use units of same constant height&lt;br /&gt;
    lv_tmpZ = Height of (position of picked unit) + Flying height of (picked unit) + HH/2&lt;br /&gt;
&lt;br /&gt;
    lv_dst = ABS ( lv_tmpX*lv_x1     +   lv_tmpY*lv_y1 ); //distance to line calculation - 2D&lt;br /&gt;
    lv_heightDif = ABS( lv_tmpZ - lv_z1 - lv_tan*(distance between (x1,y1) and position of picked unit ) )&lt;br /&gt;
    if( lv_dst &amp;lt; UnitGetProperty( (Picked unit), Radius) &amp;amp;&amp;amp; //in line of shot&lt;br /&gt;
        lv_heigthDif &amp;lt; HH ) //in proper height&lt;br /&gt;
        AddUnitToUnitGroup( (Picked Unit), lv_possibleTargets );&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
lv_target = UnitFromGroupClosestToPoint( lv_possibleTargets, Position of(attacker) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Triggers]][[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Custom_UI</id>
		<title>Custom UI</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Custom_UI"/>
				<updated>2011-05-13T08:13:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: /* Hiding Frames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A custom user interface can be created to give a custom map a new look. There are two methods one can use to customize the UI of [[StarCraft II]], and they are not mutually exclusive. &lt;br /&gt;
&lt;br /&gt;
=SC2Layout - Custom Layout Files=&lt;br /&gt;
The first method is overriding the core UI code by importing custom SC2Layout files into your map that will modify it. This method is useful when one wants to make a brand new UI from scratch, repositioning all the built-in elements on the screen. The major downside to this is that the layout cannot be changed in game, other than being able to show and hide elements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you can start modifying frames, you will need to know what frame to modify in the first place. The default UI .SC2Layout files can be found in the following areas using an [[MPQ]] editor. Note that GameUI.SC2Layout contains the data for the default UI, so most of the time that's what you'll be referring to.&lt;br /&gt;
*[SC2InstallationDir]\Mods\Core.SC2Mod\Base.SC2Data (core file)&lt;br /&gt;
**path: UI/Layout&lt;br /&gt;
*[SC2InstallationDir]\Versions\Base######\patch.SC2Archive (latest patch file)&lt;br /&gt;
**path: Mods/Core.SC2Mod/Base.SC2Data/UI/Layout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a structured list of all Game UI frames, check out [http://109.71.49.81/SC2LayoutFrames.html Helral's list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To add your customized SC2Layout file to your map, first import the file in the '''Import''' (F9) window and save. Then go into the Data Editor (F7) and under &amp;quot;Data Type:&amp;quot; select &amp;quot;Game UI Data.&amp;quot; Now find &amp;quot;Default SC2 UI Settings&amp;quot; and select it. On the right, find &amp;quot;UI - Custom Layout Files&amp;quot; and double-click the field next to it to open an &amp;quot;Object Values&amp;quot; window. In this window, click the green X on the right, search for your newly imported SC2Layout file, and then click &amp;quot;Ok&amp;quot; a few times on the various open windows. Save and test your map.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your SC2 crashes, that means your SC2Layout file has an error in it somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Most frames mentioned in the default UI link to a template, and have paths seen as &amp;quot;File/Template.&amp;quot;&lt;br /&gt;
*&amp;quot;File&amp;quot; is the file (without the .SC2Layout extension) in which the template can be found.&lt;br /&gt;
*&amp;quot;Template&amp;quot; is the Template which is listed as a name of a frame in the file mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, the MinimapPanel looks like this:&lt;br /&gt;
 &amp;lt;Frame type=&amp;quot;MinimapPanel&amp;quot; name=&amp;quot;MinimapPanel&amp;quot; template=&amp;quot;MinimapPanel/MinimapPanelTemplate&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sometimes you don't need to include the path to the template when overriding a frame. Instead, you would just refer to the position of the frame on the GameUI.SC2Layout file. Therefore, if you wanted to override the MinimapPanel, it would look like:&lt;br /&gt;
 &amp;lt;Frame type=&amp;quot;MinimapPanel&amp;quot; name=&amp;quot;GameUI/UIContainer/ConsoleUIContainer/MinimapPanel&amp;quot; file=&amp;quot;GameUI&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Keep in mind that '''file=&amp;quot;GameUI&amp;quot;''' must be included as you are overriding an element in the GameUI.SC2Layout file. If you were to modify an element in another SC2Layout file, you would then change the '''file=''' to reflect this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Frame Position==&lt;br /&gt;
Positioning a frame on the screen requires the use of an '''&amp;lt;Anchor&amp;gt;''' tag.&lt;br /&gt;
&lt;br /&gt;
Anchor tags can be modified with the following settings:&lt;br /&gt;
*'''side''' - ''Left'', ''Right'', ''Top'', ''Bottom''&lt;br /&gt;
**Determines the side of the frame you want to position.&lt;br /&gt;
*'''relative''' - ''$this'', ''$parent''&lt;br /&gt;
**Determines what this anchor is attached to.&lt;br /&gt;
***''$parent'' refers to the &amp;quot;parent&amp;quot; frame which it would be connected to. Most of the time, this will be the value you use.&lt;br /&gt;
***''$this'' resets the anchor.&lt;br /&gt;
*'''pos''' - ''Min'', ''Mid'', ''Max''&lt;br /&gt;
**Determines where the frame will connect to on the parent frame.&lt;br /&gt;
***''Min'' refers to the minimum point&lt;br /&gt;
***''Mid'' refers to the center point&lt;br /&gt;
***''Max'' refers to the maximum point&lt;br /&gt;
*'''offset''' - #&lt;br /&gt;
**Determines the number of pixels that the frame should be adjusted in relation to the &amp;quot;pos.&amp;quot; This can be a negative number as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, take a look at the base code for the Minimap:&lt;br /&gt;
 &amp;lt;Frame type=&amp;quot;MinimapPanel&amp;quot; name=&amp;quot;MinimapPanel&amp;quot; template=&amp;quot;MinimapPanel/MinimapPanelTemplate&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Frame&amp;gt;&lt;br /&gt;
*The first &amp;quot;Anchor&amp;quot; is basically managing where the Minimap is set horizontally. It is set to the ''Left'' side, connected to the &amp;quot;$parent&amp;quot; frame (in this case, $parent refers to the entire game's window), positioned at the &amp;quot;Min&amp;quot; point (so it sits on the left of the screen), and has no offset.&lt;br /&gt;
*The second &amp;quot;Anchor&amp;quot; is basically managing where the Minimap is set vertically It is set to the ''Bottom'' side, connected to the &amp;quot;$parent&amp;quot; frame again, positioned at the &amp;quot;Max&amp;quot; point (so it appears at the bottom of the screen, and actually on screen for that matter), and has no offset.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you wanted to override this and move it to the top right of the frame instead, you would include the following:&lt;br /&gt;
 &amp;lt;Frame type=&amp;quot;MinimapPanel&amp;quot; name=&amp;quot;GameUI/UIContainer/ConsoleUIContainer/MinimapPanel&amp;quot; file=&amp;quot;GameUI&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Anchor side=&amp;quot;Top&amp;quot; offset=&amp;quot;0&amp;quot; pos=&amp;quot;Min&amp;quot; relative=&amp;quot;$parent&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Anchor side=&amp;quot;Right&amp;quot; offset=&amp;quot;0&amp;quot; pos=&amp;quot;Max&amp;quot; relative=&amp;quot;$parent&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Anchor side=&amp;quot;Left&amp;quot; offset=&amp;quot;0&amp;quot; pos=&amp;quot;Min&amp;quot; relative=&amp;quot;$this&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; offset=&amp;quot;0&amp;quot; pos=&amp;quot;Max&amp;quot; relative=&amp;quot;$this&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/Frame&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may be wondering why you have to include '''&amp;lt;Anchors /&amp;gt;''' for each side. This is because you are not only adding Anchors to move it to ''side=Top'' and ''side=Right'', but also changing the existing ''side='' Anchors included in the GameUI file. If you don't add the ''side=Left'' and ''side=Bottom'' Anchors to override the base settings, then your MinimapPanel will not be where you want it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Offsets===&lt;br /&gt;
You will need to use ''offsets'' to set the position of a frame at a specific point on the screen.&lt;br /&gt;
*If you want to move it towards the left, decrease the offset of the left or right anchor.&lt;br /&gt;
*If you want to move it towards the right, increase the offset of the left or right anchor.&lt;br /&gt;
*If you want to move it towards the top, decrease the offset of the top or bottom anchor.&lt;br /&gt;
*If you want to move it towards the bottom, increase the offset of the top or bottom anchor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, to move the Minimap up 50 pixels and 30 pixels to the right, you would use the following:&lt;br /&gt;
 &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Hiding Frames==&lt;br /&gt;
To hide a frame using the override method (rather than hiding it via [[Triggers]]), just include the following:&lt;br /&gt;
 &amp;lt;Visible val='False'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, it is that simple. Place that between the '''&amp;lt;Frame name=&amp;quot;...&amp;quot; type=&amp;quot;...&amp;quot;&amp;gt;''' and '''&amp;lt;/Frame&amp;gt;''' tags and you should be good to go.&lt;br /&gt;
&lt;br /&gt;
Note: You can't hide the friends button with this method. However, you can offset it until it's offscreen, if it is necessary to not have it visible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===World Console (Black Bar)===&lt;br /&gt;
If you are hiding or moving elements on the bottom of the UI (i.e. the info panel) and notice that there is a lingering black bar on the bottom of the screen, this can be changed in the [[Data Editor]]. Select Type: '''Game UI Data''' and find '''Default SC2 UI Settings'''. Now find &amp;quot;World Console Bottom&amp;quot; and set that to 0. Any of the &amp;quot;World Console...&amp;quot; options add black space to their respective sides.&lt;br /&gt;
&lt;br /&gt;
==Adding an Image Frame==&lt;br /&gt;
If you want to further customize the frames you move, you can add new borders to them.&lt;br /&gt;
&lt;br /&gt;
{{Stub|section}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Samples==&lt;br /&gt;
Here are a few samples of common UI modifications.&lt;br /&gt;
&lt;br /&gt;
===Centered Inventory Buttons===&lt;br /&gt;
[[File:CenterInventory.png|600px]]&lt;br /&gt;
&lt;br /&gt;
This will center the [[Inventory]] buttons on the screen, and place them above the Info Panel.&lt;br /&gt;
{| class=&amp;quot;collapsible collapsed&amp;quot;&lt;br /&gt;
!style=&amp;quot;border: 1px solid #000; background: #333;&amp;quot; width=&amp;quot;875pt&amp;quot;|Copy the following code into a new SC2Layout file&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;Desc&amp;gt;&lt;br /&gt;
    &amp;lt;Frame type=&amp;quot;InventoryPanel&amp;quot; name=&amp;quot;GameUI/UIContainer/ConsoleUIContainer/InventoryPanel&amp;quot; file=&amp;quot;GameUI&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;CommandTooltip&amp;quot; name=&amp;quot;InventoryTooltip&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;-330&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;InventoryContainer&amp;quot; name=&amp;quot;InventoryButtons&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;-210&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button05&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;-28&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button04&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button03&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button02&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button01&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;Button00&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Width val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Height val=&amp;quot;50&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;Frame&amp;quot; name=&amp;quot;ContainerSizeFrame&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Top&amp;quot; relative=&amp;quot;$parent/Button00&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;-18&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent/Button00&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;28&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent/Button00&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;-20&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent/Button05&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;20&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;Frame type=&amp;quot;Image&amp;quot; name=&amp;quot;BackgroundImage&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Top&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;Texture val=&amp;quot;@@UI/RevealPanelBorder&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;TextureType val=&amp;quot;Border&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;RenderPriority val=&amp;quot;500&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Frame&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
    &amp;lt;/Frame&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
 &amp;lt;/Desc&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOBA Command Card===&lt;br /&gt;
[[File:MOBA CommandPanel.png|600px]]&lt;br /&gt;
&lt;br /&gt;
It is common to see MOBA games (League of Legends, Heroes of Newerth, etc.) center 4 or 5 buttons near the bottom of the screen. This SC2Layout file will move the first 5 buttons on the command card to the center of the screen, and position them near the bottom.&lt;br /&gt;
&lt;br /&gt;
Note that to get the full effect, you would either need to move around or use Triggers to hide the following panels:&lt;br /&gt;
*UI - Hide Info Panel for (All players)&lt;br /&gt;
*UI - Hide Control Group Panel for (All players)&lt;br /&gt;
*UI - Hide Console Panel for (All players)&lt;br /&gt;
*UI - Hide Inventory Panel for (All players) (Optional)&lt;br /&gt;
*UI - Hide Mission Time Panel for (All players) (Optional)&lt;br /&gt;
*UI - Hide Minimap Panel for (All players) (Optional)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;collapsible collapsed&amp;quot;&lt;br /&gt;
!style=&amp;quot;border: 1px solid #000; background: #333;&amp;quot; width=&amp;quot;875pt&amp;quot;|Copy the following code into a new SC2Layout file&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;Desc&amp;gt;    &lt;br /&gt;
   &amp;lt;Frame type=&amp;quot;CommandPanel&amp;quot; name=&amp;quot;GameUI/UIContainer/ConsoleUIContainer/CommandPanel&amp;quot; file=&amp;quot;GameUI&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;BatchImages val=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;BatchText val=&amp;quot;true&amp;quot;/&amp;gt;         &lt;br /&gt;
     &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;-600&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;600&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Width val=&amp;quot;390&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;Height val=&amp;quot;130&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;CommandTooltip&amp;quot; name=&amp;quot;CommandTooltip&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Bottom&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;-130&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Right&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Mid&amp;quot; offset=&amp;quot;220&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;CommandButton00&amp;quot; template=&amp;quot;CommandButton/CommandButtonTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Top&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;#CommandButtonGap&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;CommandButton05&amp;quot; template=&amp;quot;CommandButton/CommandButtonTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Visible val='False'/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Top&amp;quot; relative=&amp;quot;$parent/CommandButton04&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent/CommandButton04&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;#CommandButtonGap&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
        &amp;lt;Frame type=&amp;quot;CommandButton&amp;quot; name=&amp;quot;CommandButton10&amp;quot; template=&amp;quot;CommandButton/CommandButtonTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Visible val='False'/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Top&amp;quot; relative=&amp;quot;$parent/CommandButton09&amp;quot; pos=&amp;quot;Min&amp;quot; offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;Anchor side=&amp;quot;Left&amp;quot; relative=&amp;quot;$parent/CommandButton09&amp;quot; pos=&amp;quot;Max&amp;quot; offset=&amp;quot;#CommandButtonGap&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Frame&amp;gt;&lt;br /&gt;
   &amp;lt;/Frame&amp;gt;&lt;br /&gt;
 &amp;lt;/Desc&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Dialogs=&lt;br /&gt;
{{Stub|section}}&lt;br /&gt;
&lt;br /&gt;
Work in progress.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&amp;lt;youtube&amp;gt;1s-fhLc1Ekg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
''Video tutorial by Helral''&lt;br /&gt;
*[http://forums.sc2mapster.com/resources/tutorials/20323-sc2layout-files-override-method-aiurchef-method Helral's very complete original tutorial for SC2Layout files]&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Triggers]]&lt;/div&gt;</summary>
		<author><name>DevliN</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Train,_Build,_Research_abilities</id>
		<title>Train, Build, Research abilities</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Train,_Build,_Research_abilities"/>
				<updated>2011-05-12T13:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: /* Buildable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article covers multiple very similar abilities: [[Abilities#Train|Train]], [[Abilities#Build|Build]], [[Abilities#Research|Research]], [[Abilities#Learn|Learn]], [[Abilities#Warp Train|Warp Train]] and [[Abilities#Specialize|Specialize]]. They are used to buy [[units]], buildings (technically also units), [[upgrades]], abilities, effects etc... (the ''goods'')&lt;br /&gt;
All these abilities are created the same way: they have an ''Info+'' field, in which you define the ''goods'' this ability allows you to create. Each of these abilities has 30 ''slots'' which can be filled with different ''goods'', their cost, build time, etc... If you need more, you can use multiple abilities (of the same type) on one unit.&lt;br /&gt;
&lt;br /&gt;
Each ''slot'' contains three main setting categories:&lt;br /&gt;
*''Default Button'' - as any other ability command, this also needs a default [[button|button]] in order to work. Doesn't matter which one you choose. You can also add a [[Requirements|requirement]] here (such as &amp;quot;Tech Lab addon&amp;quot;).&lt;br /&gt;
*''Cost'' - standard [[ability cost]] setting. By default, this is ''additional'' cost to the base cost of the unit/research (defined in their entries), but you can set a flag (for the whole ability) to ignore base cost.&lt;br /&gt;
*''Info - Time'' - construction time&lt;br /&gt;
*''Unit/Reseach/Ability/Effect'' - sets what unit/research is created through this command. The ''Train'' ability allows you to set a list of units, effectively allowing creation of entire squads.&lt;br /&gt;
*''Effect'' (Train) - effect that is used on trained units. (This is an extra field, Specialize also has Effect, but in that case it's the main product)&lt;br /&gt;
&lt;br /&gt;
There are, however, differences between these abilities:&lt;br /&gt;
==Build==&lt;br /&gt;
Build is (obviously) targeted, while the others are instant abilties. Also build requires the built units to have the ''[[Ability#Buildable|Buildable]]'' ability that defines how the unit behaves while beeing built (for normal structures, there is already one ''Buildable'' ability, called ''Build in Progress'', that should work fine). If the construction time is 0, ''Buildable'' ability is not required.&lt;br /&gt;
It also has quite a lot of other settings, mostly related to addons, or [[Worker|worker]] behavior (there are about 7 worker flags, but they are mostly self-explanatory)&lt;br /&gt;
===Buildable===&lt;br /&gt;
Apart from '''Command+''' field, which you propably want to leave as it is (both commands are enabled - if you don't want them on ''specific'' buildings, you can not place them in command card), there are four fields you can change.&lt;br /&gt;
*'''Starting vitals''' - sets the fraction of '''[[vital]] start''', which the unit will have at the start of the construction (default it 0.1, e.g. unit with ''Life starting amount'' 100 will start with 10 HP).&lt;br /&gt;
*'''Maximum builders''' - allows power-building (using multiple workers to work on the same building. Needs the following two fields.&lt;br /&gt;
*'''Power Build Bonus Rate''' - the bonus fraction to the build speed (''1'' would be +100% build speed for each worker)&lt;br /&gt;
*'''Power Build Cost Factor''' - the bonus fraction to the cost of strucure&lt;br /&gt;
{{NeedResearch|problem=What about vitals cost, ability charges, if they are set as cost etc...)?}}&lt;br /&gt;
&lt;br /&gt;
==Train==&lt;br /&gt;
The train ability requires the training unit to have a [[Ability#Queue|queue]] ability, which allows queuing units (otherwise only one order can be issued at one time), displaying the queue and canceling training. Again, there are a couple of pre-defined queue abilities that should work fine with any new train abilities.&lt;br /&gt;
Train can also be used to create item shops, in classic WarCraft III style. If the training unit has the [[Abilities#Interact|Interact]] ability, the trained units (items) will be placed in interact-target's inventory.&lt;br /&gt;
&lt;br /&gt;
==Research==&lt;br /&gt;
Research is very simple, it doesn't have any extra options.&lt;br /&gt;
&lt;br /&gt;
==Specialize==&lt;br /&gt;
Specialize executes an [[effect]] on the buying unit when it's done. The difference between [[Ability#Effect - Instant|instant-effect ability]] with cast time and Specialize is that specializing is displayed in progress bar below, while the unit moves and fights (Vulture mine replenishment in campaign is done with Specialize). Also note that in the ''Info+'' overview (the window that shows all the slots), it says ''Behavior'' in one column, while the ability buys an effect.&lt;br /&gt;
&lt;br /&gt;
==Warp Train==&lt;br /&gt;
This is a hybrid combination of Train and Build. It does't require a Queue ability, as it can be warping in any number of units at one time (it's not possible in melee, as there is a cooldown). It however does require a Warpeable ability (not really, but if the unit doesnt't have one, it will always be warped in instantly, anywhere on map).&lt;br /&gt;
&lt;br /&gt;
[[Ability#Warpeable|Warpeable]] contains numerous setting, of which the '''Power user behavior''' is the most important one, as it defines whether or not the unit requires power to be warped in.&lt;br /&gt;
&lt;br /&gt;
==Learn==&lt;br /&gt;
Learn's '''Info+''' setting dialog looks a little bit different than the other ones, but it contains the exact same fields, in different order. What is a main difference is the field &amp;quot;points&amp;quot;, which sets how many abilities can be bought, and can automatically award points per level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Data Editor]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Dialog_Background</id>
		<title>Dialog Background</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Dialog_Background"/>
				<updated>2011-05-12T07:48:26Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Border-type images are used as the backgrounds of [[Dialogs]] or Dialog Buttons. If you change the background image of a Dialog or Button to what seems to be a normal image, you will notice that the image gets cut up. This is because the Dialogs are structured in such a way that it takes all the elements of a frame from a sliced up image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Border-type images are split into 4 columns with an equal width, and 8 rows with an equal height (despite it only looking like we need 6 rows). Using the default Terran Dialog frame below as an example, we see all 4 corners take up the first row, followed by the Top, Bottom, Right, and Left bars underneath it. The &amp;quot;Filler&amp;quot; rectangle on the bottom is the same height and width as the corner sections, but will ultimately get stretched to become the background between all the separate pieces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ui_frame_default_terran_base.png|border]] [[File:Ui_frame_default_terran.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The dimensions for the default dialog frames are 300 pixels wide by 496 pixel high, therefore:&lt;br /&gt;
*Corner pieces and filler are:&lt;br /&gt;
**Width: 75 pixels&lt;br /&gt;
**Height: 62 pixels&lt;br /&gt;
&lt;br /&gt;
*Side bars are:&lt;br /&gt;
**Width: 300 pixels&lt;br /&gt;
**Height: 62 pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theoretically you don't need to follow these guidelines, as long as each section is proportional. For example, if your image was 200 pixels wide and 400 pixels long, then each column would be 50 pixels wide and each row would be 50 pixels high. No matter what, you need to have that 4 column by 8 row layout.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
*[http://www.staredit.net/galaxyedit/gui/ StarEdit.Net GUI Database] - Has Dialog Background images for download.&lt;br /&gt;
*[http://www.udmod.com/downloads.php?do=listings&amp;amp;catid=1 UDMod Textures Database] - Has Dialog Background images for download, among other textures.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Art]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Triggers]]&lt;/div&gt;</summary>
		<author><name>DevliN</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Item_containers</id>
		<title>Item containers</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Item_containers"/>
				<updated>2011-05-11T10:35:15Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: Changed headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Item containers are [[catalog]] objects, that represent bags, enabling to carry items. They are used either by [[Ability#Inventory|inventory]] or [[items]], that can be equipped to provide heroes with an item bag. (In the end, the unit has to have the inventory ability to manipulate items).&lt;br /&gt;
&lt;br /&gt;
[[File:ItemContainer.png|200px|thumb|An example of item container with background model. The name (Attack) is set in Inventory ability, not in the container.]]&lt;br /&gt;
[[File:ItemContainerRows.png|thumb|right|The Column and Row values act as a grid when you open your Item Container. Both values start at &amp;quot;0&amp;quot; and at the top left of the in-game window.]]&lt;br /&gt;
&lt;br /&gt;
==Types==&lt;br /&gt;
There are no container types, all are ''Generic''.&lt;br /&gt;
&lt;br /&gt;
==Fields==&lt;br /&gt;
There are two important fields, model and slots.&lt;br /&gt;
*'''Model''' (along with ''Model width'' and ''Model height'') define the background model of the bag dialog window.&lt;br /&gt;
*'''Slots''' is a complex field that contains all settings for each items slot. Each slot is on different coordinates (0-7 in both directions), and has a list of allowed [[item classes]]. Also each slot has ''Equipped'' option. Items in equipped slots provide their ''equip'' bonuses, otherwise they only provide ''carry'' bonuses (more info on [[items]] page). The ''empty face'' doesn't work, so far I know.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
There is a set of item classes, containers, items and inventory ability is already created by Blizzard and can be used as point of reference. To access them, one must activate the ''campaign'' [[dependency]].&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Map_Publishing_Tutorial</id>
		<title>Map Publishing Tutorial</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Map_Publishing_Tutorial"/>
				<updated>2011-05-10T10:47:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: /* Publishing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general tutorial for all the small things you need to do, before you can publish maps. For each of these things you could find a more complex tutorial, but here you will learn what basic settings to use for most common scenarios. You can find all of this in video tutorial below, but some things changed since the version used in that tutorial.&lt;br /&gt;
&lt;br /&gt;
===Setting up players===&lt;br /&gt;
[[File:PublishTutorial1.png|400px|thumb]]&lt;br /&gt;
First thing you need to do is choose the number of players that will be able to play your map. Go to '''Map -&amp;gt; Player properties''' and set the ''Controller'' field to ''User'', for each player you want in the game (don't change players 0 and 15), even for computer players, that will be set somewhere else. If you are creating a melee map, you are done and you can skip right to publish step. Otherwise keep reading.&lt;br /&gt;
&lt;br /&gt;
===Game variants===&lt;br /&gt;
The [[Game Variants|game variants]] function allows you to configure different game modes of your map in the lobby. Even if you want just one game, you still need to configure a default variant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open the '''Map -&amp;gt; Game variants''' dialog window. On the left side, there is a list of game variants you have in your map (now it's empty). Uncheck ''Use default variants'' (that is for melee maps). Now click '''Add''' to add a new variant. (Now if you right-click the variant in the list, you can make it ''Default'', but if you only have one, it doesn't matter.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now go to the first tab (Game type) and fill in names of Category and Mode ( if you are creating a TD or Tug of War, you can choose it from the dropdown menu, otherwise leave it on Custom and type in your description, such as ''RPG'' or ''Survival'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Second tab lets you set overall game attributes. I suggest leaving them on defaults and hiding them (on the right side, it's the ''Access'' option, set it to hidden).&lt;br /&gt;
[[File:PublishTutorial2.png|400px|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Third tab lets you set individual player settings and, more important, teams. First select the number of teams at the very top. Choosing &amp;quot;Locked teams&amp;quot; will prevent game host from modifying teams (number of teams and number of players on each team will be locked), so that is probably what you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next is adding players to teams. When you choose a player in the list, you can edit all of his options. Set player's teams so that there is the correct number of players in each team (player numbers don't matter). Choosing ''Lock players on team'' will make sure that players with correct player IDs will be on selected teams (useful if you have preplaced units on map, and need to make sure that player near each other are allies). If you detect teams using triggers, or don't have any units on map (they are after the game starts), you can leave them unlocked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, if you have a computer player that needs to be on a team, lock him on team. Also, to make sure that he is played by a computer, choose ''Computer'' in the ''Controller'' attribute, and lock the setting (in ''Access'' option.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to lock a player to a specific race, choose the race in the ''race'' attribute and lock it (or, if everyone has the same race, hide it). You can also hide all other attributes you don't use, such as handicap and difficulty (unless you use default AI, it won't do anything anyway).&lt;br /&gt;
&lt;br /&gt;
===Publishing===&lt;br /&gt;
Now that you have set everything, you can publish the map. Go to '''File -&amp;gt; Publish''', and log in to battle.net. Here you can set a couple more options:&lt;br /&gt;
*'''Locked/Unlocked''' - Locked maps can't be easily opened by other users, so check this if you worry about someone stealing your map (if this is your first map, you really don't need to worry about that).&lt;br /&gt;
&lt;br /&gt;
Note: It is possible to unlock locked maps using map cache editing. Don't rely on this method to protect anything. See [[Unlocking Locked Maps]] for more information, and Map Obfuscation for different ways to protect your map, if you so desire.&lt;br /&gt;
*'''Private/Public''' - Private maps can only hosted by you, so this is a useful option if this is a test version of the map&lt;br /&gt;
*'''Major/Minor release''' - affects only version number of the map, which is generated automatically.&lt;br /&gt;
&lt;br /&gt;
After you set these three options, just click upload and you just published your first map!&lt;br /&gt;
&lt;br /&gt;
==Video tutorial==&lt;br /&gt;
&lt;br /&gt;
Credits for this video goes to '''OneTwo'''.&lt;br /&gt;
&amp;lt;youtube&amp;gt;aQp3irTx25o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Item_classes</id>
		<title>Item classes</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Item_classes"/>
				<updated>2011-05-09T13:22:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: Added categories, minor grammatical improvements. Screenshots need adding.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Item classes are trivial [[catalog]] objects, as they contain no fields at all, except for their names (and editor comments, but those aren't real fields).&lt;br /&gt;
&lt;br /&gt;
Item classes are used by [[Item containers|item containers]] and items, to simulate different inventory &amp;quot;slots&amp;quot; and limit placing items in them. Each item has '''exactly one''' class, while each container slot can be able to contain any number of different item classes.&lt;br /&gt;
(For example, a ''hand'' slot could be set to allow ''sword'', ''axe'' and ''staff'' item classes.)&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Data Editor]][[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Creating_a_weapon_item</id>
		<title>Creating a weapon item</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Creating_a_weapon_item"/>
				<updated>2011-05-09T12:57:30Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For this tutorial, we will create an item that will attach a Marauder's &amp;quot;Punisher Grenades&amp;quot; to a Marine.&lt;br /&gt;
&lt;br /&gt;
Open up the Data Editor by going to &amp;quot;Modules &amp;gt; Data&amp;quot; (F7). Before we begin, make you have the &amp;quot;Show Table View&amp;quot; button pressed next to the right &amp;quot;Search&amp;quot; bar.&lt;br /&gt;
&lt;br /&gt;
=Creating the Item Class=&lt;br /&gt;
Before we can create our item, we need to decide what type of item this will be. This '''Item Class''' will ultimately coincide with your [[Inventory]]. Item Classes are basically customized item types that will be attached to the item units. Under &amp;quot;Data Type:&amp;quot; select &amp;quot;Item Classes.&amp;quot;&lt;br /&gt;
#In the box on the left, right-click and select &amp;quot;Add Object&amp;quot; (Ctrl+=). Name this new object &amp;quot;WeaponClass,&amp;quot; click &amp;quot;Suggest&amp;quot; for the ID, and then click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
&lt;br /&gt;
That's all you have to do here, since we're only making a weapon item.&lt;br /&gt;
&lt;br /&gt;
=Creating the Item's Button=&lt;br /&gt;
We will need a button to asociate the item with, so you'll need to make a custom one next. Under &amp;quot;Data Type:&amp;quot; select &amp;quot;Buttons.&amp;quot; In the box on the left, right-click and select &amp;quot;Add Object&amp;quot; (Ctrl+=). Name this new object &amp;quot;Punisher Grenade Launcher,&amp;quot; click &amp;quot;Suggest&amp;quot; for the ID, and then click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#In the box on the right, find &amp;quot;Icon&amp;quot; and change that to &amp;quot;'''btn-terran-experiencedplasmagun.dds.'''&amp;quot; You can change this to whatever you would like, but I randomly chose an image of a weapon.&lt;br /&gt;
#Find &amp;quot;Tooltip&amp;quot; and change that to something along the lines of &amp;quot;'''Equip a &amp;quot;Punisher Grenade Launcher.&amp;quot;'''&amp;quot; You could add details about the weapon if you'd like, as well.&lt;br /&gt;
&lt;br /&gt;
=Creating the Item=&lt;br /&gt;
Now we need to create our basic &amp;quot;Item.&amp;quot; Under &amp;quot;Data Type:&amp;quot; select &amp;quot;Items.&amp;quot; In the box on the left, right-click and select &amp;quot;Add Object&amp;quot; (Ctrl+=). Name this new object &amp;quot;Punisher Grenade Launcher,&amp;quot; click &amp;quot;Suggest&amp;quot; for the ID, set the &amp;quot;Type&amp;quot; to &amp;quot;Generic,&amp;quot; and then click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#In the box on the right, find &amp;quot;Class&amp;quot; and change that to &amp;quot;WeaponClass.&amp;quot;&lt;br /&gt;
#Now find &amp;quot;Equip Weapons+&amp;quot; and double-click the space to the right of it to open an &amp;quot;Object Values&amp;quot; window. Click the green X on the right of the box to add a line to it. Select the blank line and change the &amp;quot;Weapon&amp;quot; to &amp;quot;'''Marauder - Punisher Grenades.'''&amp;quot; Click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#Find &amp;quot;Face&amp;quot; and change that to our custom button, &amp;quot;'''Punisher Grenade Launcher'''.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Creating the Item's Unit=&lt;br /&gt;
Now that the basic &amp;quot;Item&amp;quot; is done, we need to make a [[Unit]] for it. Under &amp;quot;Data Type:&amp;quot; select &amp;quot;Units.&amp;quot; In the box on the left, right-click and select &amp;quot;Add Object&amp;quot; (Ctrl+=). Name this new object &amp;quot;Punisher Grenade Launcher,&amp;quot; click &amp;quot;Suggest&amp;quot; for the ID, set the &amp;quot;Based On&amp;quot; to &amp;quot;Default Settings (Item),&amp;quot; and then click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#In the box on the right, find &amp;quot;Stats - Item&amp;quot; and set that to &amp;quot;Punisher Grenade Launcher.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Creating the Item's Actor=&lt;br /&gt;
Unfortunately without an [[Actor]] the Unit will show up with a missing model, so we'll create one for the item. Under &amp;quot;Data Type:&amp;quot; select &amp;quot;Actors.&amp;quot; In the box on the left, right-click and select &amp;quot;Add Object&amp;quot; (Ctrl+=). Name this new object &amp;quot;Punisher Grenade Launcher,&amp;quot; click &amp;quot;Suggest&amp;quot; for the ID, set the &amp;quot;Type&amp;quot; to &amp;quot;Unit,&amp;quot; and Based On &amp;quot;GenericUnitStandard.&amp;quot; Click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#Above the box on the right, find &amp;quot;Unit Name&amp;quot; and set that to &amp;quot;Punisher Grenade Launcher.&amp;quot;&lt;br /&gt;
#Now in the box on the right, find &amp;quot;Art - Model&amp;quot; and set that to &amp;quot;Crate.&amp;quot; It will default to a non-existent &amp;quot;Punisher Grenade Launcher&amp;quot; [[Model|model]] otherwise, and will show up as a white blob if this isn't changed. You could also create a &amp;quot;Punisher Grenade Launcher&amp;quot; model if you wanted, but for something like this it isn't necessary.&lt;br /&gt;
#Find &amp;quot;Art - Scale&amp;quot; and set each value to &amp;quot;'''0.5'''.&amp;quot; This will reduce the size of the Cargo model by 50% so it isn't as huge.&lt;br /&gt;
#Now find &amp;quot;Event - Events+&amp;quot; and double-click the space on the right of it to open an &amp;quot;Object Values&amp;quot; window.&lt;br /&gt;
##Right click the space on the left and select &amp;quot;'''Add Event.'''&amp;quot;&lt;br /&gt;
##*Set the &amp;quot;Msg Type:&amp;quot; to &amp;quot;'''Unit Birth'''.&amp;quot;&lt;br /&gt;
##*Set the &amp;quot;Source Name:&amp;quot; to &amp;quot;'''Punisher Grenade Launcher'''.&amp;quot;&lt;br /&gt;
##*Set the &amp;quot;Sub Name:&amp;quot; to &amp;quot;'''(Any)'''.&amp;quot;&lt;br /&gt;
##Now click the &amp;quot;ActionImpact&amp;quot; under the &amp;quot;UnitBirth.PunisherGrenadeLauncher&amp;quot; Event. Set the &amp;quot;Msg Type:&amp;quot; to &amp;quot;'''Create'''.&amp;quot;&lt;br /&gt;
##Click &amp;quot;OK&amp;quot; to close the window.&lt;br /&gt;
#Find &amp;quot;UI - Unit Icon&amp;quot; and set that to &amp;quot;'''decalhazard03_diffuse.dds'''.&amp;quot; ''Note: If you have the [[Dependencies|Campaign Dependencies]], you can find a better selection to choose from.&lt;br /&gt;
#Find &amp;quot;UI - Wireframe&amp;quot; and set it to the same image as above, &amp;quot;'''decalhazard03_diffuse.dds'''.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you place the Unit on the map, it will look like a crate. When you pick it up, it will automatically be added to your '''Item Container''' and equip the &amp;quot;Punisher Grenade Launcher.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:ItemWeapon.png]]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
*[[Inventory]]&lt;br /&gt;
&lt;br /&gt;
==Video Tutorial==&lt;br /&gt;
Credits for this video goes to '''OneTwo'''.&lt;br /&gt;
&amp;lt;youtube&amp;gt;0ZH8Bx9jtcs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Upgrades</id>
		<title>Upgrades</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Upgrades"/>
				<updated>2011-05-09T10:27:41Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: minor edit, spelling, interpunction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upgrades are [[catalog]] objects, that modify other catalog entries for one player. As the name indicates, they are usually used for ugrading unit properities in game, but they can also be used by [[requirements]]. Upgrades can modify catalogs in a very limited way (only numeric fields, and not all of them).&lt;br /&gt;
&lt;br /&gt;
Upgrades can be granted via triggers, or researched with the [[Ability#Research|research ability]]. (There is no way to ''remove'' them with data editor, that is possible only with trigger.)&lt;br /&gt;
&lt;br /&gt;
==Types==&lt;br /&gt;
Upgrades have no types, they are all ''Generic''.&lt;br /&gt;
&lt;br /&gt;
==Fields==&lt;br /&gt;
*'''UI'''&lt;br /&gt;
Specifies how the research is displayed when researched (Alert can be set to none to disable).&lt;br /&gt;
*'''Affected units'''&lt;br /&gt;
List of all units that can take advantage of this upgrade. ''(Needs research: does it actually do something, or is it only for display?)''&lt;br /&gt;
*'''Effects+'''&lt;br /&gt;
This field sets the catalog changes. An upgrade can change several other catalog's (units, behaviors, effects, weapons...) fields (for example unit HP, buff duration, effect damage, etc.).&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Data Editor]][[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Effect_target_reference</id>
		<title>Effect target reference</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Effect_target_reference"/>
				<updated>2011-05-09T09:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: Added categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;During execution of effects, a list of references is passed between various [[effects]], [[behaviors]], [[abilities]] and [[validators]]. These references point to units, locations and players, that should be affected. Later, they are used in effects and validators, to specify which unit to modify/validate.&lt;br /&gt;
Unit/point and player list are separate.&lt;br /&gt;
Unit list contains following references:&lt;br /&gt;
*Caster&lt;br /&gt;
*Origin&lt;br /&gt;
*Outer&lt;br /&gt;
*Source&lt;br /&gt;
*Target&lt;br /&gt;
For example, when a unit uses [[Ability#Effect - Instant|instant ability]] (such as stimpack), this ability's effect will get this list, with all references pointing to the caster of the ability.&lt;br /&gt;
&lt;br /&gt;
These list are mainly used in effects or validators, behaviors and abilities just carry them on. In both effect and validator, there is a Target+ field, that is used to select ''which'' of these references is to be tested. For example it is possible to create a [[Ability#Effect - Target|targeted ability]], that will have different effects, depending on the casters current health.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
I would like to create a complete reference here for each ''list transition'', that will state how the effects are transferred. (list transitions happen when any of above mentioned objects creates a new object. (e.g. Apply Behavior effect creates a behavior, which then copies it's target list from the effect).&lt;br /&gt;
'''If a reference is not mentioned, it is propably carried over from creator.'''&lt;br /&gt;
===Behaviors===&lt;br /&gt;
Propably applies only to buffs, other behaviors maybe don't carry target list.&lt;br /&gt;
*'''[[Units]] - Behaviors+''' field&lt;br /&gt;
:All references to this unit&lt;br /&gt;
*'''[[Effects#Apply Behavior|Effect - Apply Behavior]]&lt;br /&gt;
:''Target'' set to the unit that recieves behavior&lt;br /&gt;
*'''[[Ability#Behavior|Ability - behavior]]&lt;br /&gt;
:All references to caster&lt;br /&gt;
*'''[[Abilities#Transport|Ability-transport]]'''&lt;br /&gt;
**Load/Unload Cargo behavior&lt;br /&gt;
::Target is the cargo unit, caster is the transport&lt;br /&gt;
**Load/Unload Transport behavior&lt;br /&gt;
::Target is the transport, caster it the cargo&lt;br /&gt;
===Effects===&lt;br /&gt;
*'''[[Behavior]]''' - any executed effects&lt;br /&gt;
:All references same as the behavior (note: ''Target'' points to the unit carrying the behavior)&lt;br /&gt;
*'''[[Effects#Set]]'''&lt;br /&gt;
:All references are copied&lt;br /&gt;
*'''[[Ability#Effect - Instant|Ability - Effect Instant]&lt;br /&gt;
:All references to the caster&lt;br /&gt;
*'''[[Ability#Effect - Target|Ability - Effect Target]&lt;br /&gt;
:Target is the target, others to the caster&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Data Editor]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Validators</id>
		<title>Validators</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Validators"/>
				<updated>2011-05-09T09:20:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Validators are [[catalog]] objects, representing boolean functions (they validate whether given conditions apply or not). They are used by other catalog objects, such as abilities (for auto-cast validation), behaviors (to decide whether the behavior works or not) or effects. Each validator entry is one condition, that can be tested by incuding this validator in appropriate field.&lt;br /&gt;
&lt;br /&gt;
Validators inherit the [[Effect target reference|target references]] form whatever object used them.&lt;br /&gt;
&lt;br /&gt;
==Types==&lt;br /&gt;
===Wrapup===&lt;br /&gt;
Wrapup validators work only with other validators, they are used to construct more complex conditions.&lt;br /&gt;
====Combine====&lt;br /&gt;
Simplest wrapup validator, it combines multiple other validators with AND/OR logic function. It can also be used to negate other validator.&lt;br /&gt;
====Condition====&lt;br /&gt;
Condition validator first test one helper validator, and then, regarding the helper's outcome, decide which of the two validators to use. (If-then-else equivalent)&lt;br /&gt;
====Function====&lt;br /&gt;
Simillar to condition, but allows for more complex conditions (switch equivalent).&lt;br /&gt;
===Generic===&lt;br /&gt;
Generic validators don't belong to any other category.&lt;br /&gt;
====Enumerate area====&lt;br /&gt;
Counts all units in area that fulfill given condition (=validator). Then compares the count to a give value.&lt;br /&gt;
====Terrain====&lt;br /&gt;
Compares the Terrain texture set of the map.&lt;br /&gt;
====Time of Day====&lt;br /&gt;
Compares the time of day, propably in-game time.&lt;br /&gt;
===Unit===&lt;br /&gt;
Most of unit validators are self-explanaory, I would like to point out:&lt;br /&gt;
====Unit filter====&lt;br /&gt;
This applies the standard filter (attributes, unit state, invulnerability....)&lt;br /&gt;
&lt;br /&gt;
===Location===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Player===&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Data Editor]][[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Buff</id>
		<title>Buff</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Buff"/>
				<updated>2011-05-09T08:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A buff is a type of [[behavior]], the most commonly used one. It can have a duration, can stack, execute effects and can be displayed in the buff bar (technically it is called behavior bar, but it can only show buffs).&lt;br /&gt;
&lt;br /&gt;
=Fields=&lt;br /&gt;
*'''[[Attribute_Behavior_Modification|Behavior - modifications]]'''&lt;br /&gt;
The list of all modifications to the unit, that has the buff.&lt;br /&gt;
*'''Duration'''&lt;br /&gt;
Duration of the buff, 0 stands for infinite. It can be modified further by Duration - random fields.&lt;br /&gt;
*'''Effect - ...'''&lt;br /&gt;
Effects executed on application, removal and expiration (remove effects are applied every time, even when the buff expires (in that case, both expire and remove effects are applied)).&lt;br /&gt;
*'''Period -'''&lt;br /&gt;
Affects execution of periodic effect. Period count sets a maximum number of effect executions. Note that the effect '''will not be removed''' due to period count running out - it has to have a duration set, too.&lt;br /&gt;
*'''Stack count'''&lt;br /&gt;
The maximum number of stacks this buff have on a single unit.&lt;br /&gt;
*'''Flags'''&lt;br /&gt;
There is only a single flag, ''hidden''. Hidden buffs are not displayed on behavior bar.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]][[Category:Data Editor]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Traceline</id>
		<title>Traceline</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Traceline"/>
				<updated>2011-05-08T21:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: added link to the new tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TutorialsBox|contents=[[Detecting units in line]]}}&lt;br /&gt;
Traceline is an algorithm that finds closest unit in a line. It is used for FPS, to determine whether a fired bullet has hit any units. The algorith is '''HORRIBLY INEFFICIENT''' and should '''NEVER BE USED''' under any circumstances.&lt;br /&gt;
&lt;br /&gt;
==Short overview==&lt;br /&gt;
Traceline algorithm is very simple. It establishes a small round region and direction, and then periodically shifts the region in given direction and searches it's area for any units.&lt;br /&gt;
&lt;br /&gt;
==Why is it so inefficient==&lt;br /&gt;
The problem lies in the fact that searching for units in region is slow. This action has to go through all units on the map, and test their position against the region bounds. This is done usually ~50 times (50 region positions), each time going through all units.&lt;br /&gt;
&lt;br /&gt;
==What should be used==&lt;br /&gt;
Much more efficient algorithm uses a single unit seach, and then compares all the units found against a line (using [[http://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line]] calculation). See tutorial above.&lt;br /&gt;
&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Triggers]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Catalog"/>
				<updated>2011-05-08T20:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Catalogs.png|400px|thumb]]&lt;br /&gt;
&lt;br /&gt;
Catalogs are containers for objects created in data editor. Each object created by the data editor belongs to one of the catalogs, which are distinguished by their function. These objects, or ''catalog entries'', have a type, a parent and fields.&lt;br /&gt;
&lt;br /&gt;
=Type=&lt;br /&gt;
Each catalog has a set of types its entries can have, and each entry must have one type (for example [[Weapons]] can be [[Weapon#Generic|Generic]], [[Weapon#Legacy|Legacy]] or [[Weapon#Strafe|Strafe]]). Type defines how the entry is used, and what fields it has.&lt;br /&gt;
&lt;br /&gt;
=Parent=&lt;br /&gt;
Each entry can have a parent entry. The entry then inherits it's parent's field values for all the fields it doesn't have specified itself. This helps to save space in map files, as most of the fields will remain unchanged in many cases (for example units have ~100 of fields, of which ~15 are changed. The remaining 85 don't need to be specified, they are inherited from the parent, which is ''generic unit'')&lt;br /&gt;
&lt;br /&gt;
=Fields=&lt;br /&gt;
Depending on type and catalog, each entry has several fields that can be set. Fields are displayed in different colors, depending on where was their values set (gray are inherited from core entries, blue are inherited from Liberty entries, light green are inherited from other entries of current map, dark green are defined by this entry). Most of the fields can be read and changed with triggers.&lt;br /&gt;
Regardless of catalog, each entry has several fields prefixed with ''Editor-''. All of these fields are editor-only notes for you or anyone else, who might use your resources.&lt;br /&gt;
&lt;br /&gt;
=The list=&lt;br /&gt;
Below is the list of most important catalogs (most used): ''(should be expanded to list of all catalogs in the future)''&lt;br /&gt;
*[[Units]]&lt;br /&gt;
*[[Actors]]&lt;br /&gt;
*[[Effects]]&lt;br /&gt;
*[[Behaviors]]&lt;br /&gt;
*[[Abilities]]&lt;br /&gt;
*[[Validators]]&lt;br /&gt;
*[[Buttons]]&lt;br /&gt;
*[[Requirements]]&lt;br /&gt;
*[[Weapons]]&lt;br /&gt;
*[[Upgrades]]&lt;br /&gt;
*[[Items]]&lt;br /&gt;
More advanced&lt;br /&gt;
*[[Movers]]&lt;br /&gt;
*[[Footprints]]&lt;br /&gt;
*[[Turrets]]&lt;br /&gt;
*[[Item classes]]&lt;br /&gt;
*[[Item containers]]&lt;br /&gt;
*[[Models (Catalog)|Models]]&lt;br /&gt;
There are many others, but they are either rarely modified, or contain just few entries.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>M0rt</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Decal</id>
		<title>Decal</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Decal"/>
				<updated>2011-04-29T02:45:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Decals are the &amp;quot;Armbands&amp;quot; every unit has. May it be on it's shoulder, or as an aura around your Hive.&lt;br /&gt;
&lt;br /&gt;
Decals in Multiplayer are chosen by you, by selecting a decal on your battle.net profile. It is possible to change it inside the Galaxy Editor for a map, so it's pretty obvious what you can do if you change the decal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Decals.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]][[Category:Reference]]&lt;/div&gt;</summary>
		<author><name>Statharas</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/The_Hive_Workshop</id>
		<title>The Hive Workshop</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/The_Hive_Workshop"/>
				<updated>2011-04-26T16:10:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.hiveworkshop.com/ The Hive Workshop]&lt;/div&gt;</summary>
		<author><name>DevliN</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Requirements</id>
		<title>Requirements</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Requirements"/>
				<updated>2011-04-25T04:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;M0rt: /* Requirement Comparisons List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Requirements are used by the [[Data Editor]] to hide or show abilities, units, and upgrades based on whether the requirement is met or not. &lt;br /&gt;
[[File:Requirements1.png]]&lt;br /&gt;
&lt;br /&gt;
== Requirement Nodes ==&lt;br /&gt;
Requirement nodes are the editor's way of displaying the different requirements. The Use node enables an ability, unit, or upgrade if the requirement is true. The Show node only displays the ability, unit, or upgrade.&lt;br /&gt;
&lt;br /&gt;
[[File:Requirements2.PNG]]&lt;br /&gt;
Here you can see the requirements editor. &lt;br /&gt;
There are two views you can use to look at your requirements: Tree view, and Expression view. In tree view, you can see there is one main folder, which has the same name as your requirement. This is in fact the requirement. Underneath it, there are the Use and Show nodes. You can add new requirement nodes within those nodes, which will be what actually do the requirements.&lt;br /&gt;
&lt;br /&gt;
== Requirement Comparisons List ==&lt;br /&gt;
[[File:Requirements3.PNG|300px|thumb]]&lt;br /&gt;
This dropdown box contains the possible comparisons to use for your requirements. There are several categories.&lt;br /&gt;
=== Allowed category ===&lt;br /&gt;
'''Ability Allowed''', '''Behaviour Allowed''', '''Unit Allowed''', '''Upgrade Allowed'''&lt;br /&gt;
&lt;br /&gt;
These simply return true if the given [[catalog]] object is ''allowed''. This has nothing to do with research/tech tree progress, it simply tests whether the unit isn't disabled (via [[triggers]]) for this map.&lt;br /&gt;
&lt;br /&gt;
=== Count category ===&lt;br /&gt;
'''Count Ability''', '''Count Behavior''', '''Count Unit''', '''Count Upgrade'''&lt;br /&gt;
&lt;br /&gt;
Generally it counts a number of occurences of given object for current player (the one on whom this requirement is tested). If this is put directly as condition, 0 means false, anything higher than 0 is true.&lt;br /&gt;
&lt;br /&gt;
There are a number of suboptions, specifying which objects to count. This list is same for all 4 count nodes, some combinations doesn't make sense (like count queued behaviors). All '''on unit''' nodes specify to count objects belonging to the current unit (the one on which the requirement is tested).&lt;br /&gt;
&lt;br /&gt;
=== Mathematical operations ===&lt;br /&gt;
These nodes allow for simple mathematical operations. Mostly, they require two sub-nodes to perform the operation on. Following operations are avaiable:&lt;br /&gt;
*'''Sum'''&lt;br /&gt;
*'''Modulus'''&lt;br /&gt;
*'''Division'''&lt;br /&gt;
And following comparsions:&lt;br /&gt;
*'''Equals'''&lt;br /&gt;
*'''Not equal to'''&lt;br /&gt;
*'''Less than'''&lt;br /&gt;
*'''Less than or equal to'''&lt;br /&gt;
*'''Greater than'''&lt;br /&gt;
*'''Greater than or equal to'''&lt;br /&gt;
*'''Odd number''' (uses only one sub-node)&lt;br /&gt;
And one special:&lt;br /&gt;
*'''Constant''' - usually used in comparsion nodes&lt;br /&gt;
&lt;br /&gt;
=== Logical operations ===&lt;br /&gt;
Logical operations allow to build more complex conditions.&lt;br /&gt;
'''And''' - true only if '''both''' sub-nodes are true&lt;br /&gt;
'''Or''' - true if '''at least one''' sub-node is true&lt;br /&gt;
'''Not''' - true if the sub-node is false&lt;br /&gt;
'''Exclusive Or''' (XOR) - true if '''exactly one''' of the subnodes is true &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Wiki_Discussion</id>
		<title>Wiki Discussion</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Wiki_Discussion"/>
				<updated>2011-04-23T02:23:24Z</updated>
		
		<summary type="html">&lt;p&gt;125.16.69.114: cladding&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; hi there gerry  here is the site   details, they have a deal on at the mo ,say H teatem told you to ring&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Designing_an_Ability</id>
		<title>Designing an Ability</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Designing_an_Ability"/>
				<updated>2011-04-21T18:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Creating an [[Ability|ability]] from scratch may seem like a daunting task, but it gets easier the more you see it as a small interwoven puzzle. Pretty much every ability consists of linear [[Effect|effects]] that trigger in order. At the core nearly every ability acts like this, so you generally need to work backwards to construct an ability from the finishing point to the beginning.&lt;br /&gt;
&lt;br /&gt;
=What is the point of your ability?=&lt;br /&gt;
Start by figuring out what you want your ability to ultimately do. There are seemingly endless possibilities for what can be accomplished with the Galaxy Editor through Data or Triggers, so don't feel limited by what you think can't be done. You could easily create a simple [[Creating a Missile Ability|missile ability]] that arcs to its target with a massive explosion. You could create an ability that [[Creating Zealot Charge as an Instant Effect|instantly boosts your unit's speed]]. You can even create an ability that [[Morph|morphs]] a Zergling into a Battlecruiser. Figure out what you want to do first, and then figure out how to accomplish the task from the end point.&lt;br /&gt;
&lt;br /&gt;
=A Simple Explanation of a Missile Ability=&lt;br /&gt;
Let's say you want to create an ability that fires a missile at your target and deals damage when it reaches that target. Here is the order in which that would occur:&lt;br /&gt;
# Create a '''&amp;quot;Damage&amp;quot;''' effect. This will dictate how much damage your ability will deal when it hits your target.&lt;br /&gt;
# Create a '''&amp;quot;Launch Missile&amp;quot;''' effect. This will set a couple of things. First, it will let you set what missile unit is fired when the ability is used. Second, it will let you decide what effect occurs when the missile hits its target (this would be the Damage effect above).&lt;br /&gt;
# Create an '''&amp;quot;Effect - Target&amp;quot;''' ability. This will let you control a few specific details for your ability. First, it will let you set which effect is triggered when the ability is used (this would be the Launch Missile effect above). Secondarily, it will let you set the range of the ability and the cost to use the ability.&lt;br /&gt;
&lt;br /&gt;
Though the process can get a lot more complex with more complicated abilities, the idea remains the same either way. For a detailed explanation of how to create a missile ability, see [[Creating a Missile Ability]].&lt;br /&gt;
&lt;br /&gt;
=A Simple Explanation of an Instant Ability=&lt;br /&gt;
Work in progress. -DevliN&lt;br /&gt;
&lt;br /&gt;
=A Simple Explanation of a Morph Ability=&lt;br /&gt;
Work in progress. -DevliN&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;/div&gt;</summary>
		<author><name>DevliN</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Advanced_Scripting</id>
		<title>Advanced Scripting</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Advanced_Scripting"/>
				<updated>2011-04-17T10:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With galaxy code you can do much more than just simply execute small actions.&lt;br /&gt;
Although the time a trigger is allowed to execute is rather short (eg. you cannot just loop through a huge array and do stuff), it is still very powerful.&lt;br /&gt;
&lt;br /&gt;
= Some Keypoints =&lt;br /&gt;
&lt;br /&gt;
Code must be &amp;quot;short&amp;quot;: If you try looping over an array of 128 integers and do an action for each of them, you will very likely get an error that the trigger&lt;br /&gt;
execution time is too long... (Silly, for such a short period, one might think, but reasonable when considering the purpose of triggers...)&lt;br /&gt;
&lt;br /&gt;
Code can still be executed over a longer period of time: You can put together multiple actions in triggers, by having one start a timer for the next one.&lt;br /&gt;
(Although to allow the trigger to be executed in parallel you'll have to dynamically create triggers.)&lt;br /&gt;
&lt;br /&gt;
= How to learn the language, and why? =&lt;br /&gt;
&lt;br /&gt;
== How ==&lt;br /&gt;
It is very useful to be able to write custom-scripts, and it is not even that hard. The language uses a very restricted C-like syntax.&lt;br /&gt;
If you go through some hello-world C tutorials, you have nearly everything you need to start coding your own custom scripts.&lt;br /&gt;
What you then still need to &amp;quot;learn&amp;quot; is the functions available to you. You can always use the non-custom-script version, and then look&lt;br /&gt;
at the generated code in the code-viewer, or you can look at the library description in the trigger editor.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
There are some things you cannot do without Custom-Script elements. One such thing includes the dynamic generation and destruction of triggers.&lt;br /&gt;
&lt;br /&gt;
For example: Consider a towerdefense game that consists of several smaller parts you have to beat before you can proceed to the next part.&lt;br /&gt;
Let us consider 3 such parts. Now the mapper creates 3 regions, in each region there will be some point the creep has to move to, and some spawning points.&lt;br /&gt;
Now for each of the 3 parts, he'd create a trigger to spawn the creep, to make them move, and to remove them when they reach the base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Dynamic Trigger Creation =&lt;br /&gt;
With dynamic trigger creation, the process would look as follows: The mapper still creates the 3 regions in the Terrain editor of course, but decides on some convention of &lt;br /&gt;
what a spawn point, and a target point looks like. For example, a beacon (or just an invisible unit), to spawn creep at, and a &amp;quot;TD Base&amp;quot; unit the creep has to move to.&lt;br /&gt;
Now, the triggers are created once, but as &amp;quot;Function Definitions&amp;quot;, with the trigger function signature, that is, return type = boolean, and 2 boolean parameters (testConds and runActions).&lt;br /&gt;
&lt;br /&gt;
Additionally, there's a trigger to setup the map, which assigns the global variables referring to the current map region, and with that region, finds the current Base and SpawnPoints. The SpawnPoints can be&lt;br /&gt;
put into a unit group, and the spawn-trigger can then loop through that unit group and spawn creep at each spawn-point. For each &amp;quot;wave&amp;quot; that should spawn, the mapper creates a Function Definition, named &amp;quot;Map_X_Wave_Y&amp;quot;, with X and Y being the map-sub-part ID and the wave number respectively, and while the player is fighting in a map, dynamic wave-spawning triggers are created using:&lt;br /&gt;
&lt;br /&gt;
 wavetrigger = TriggerCreate(&amp;quot;gf_Map_&amp;quot; + IntToString(gv_currentMap) + &amp;quot;_Wave_&amp;quot; + IntToString(gv_currentWave));&lt;br /&gt;
 TriggerAddEventTimeElapsed(wavetrigger, 0.1, c_timeGame);&lt;br /&gt;
&lt;br /&gt;
This can only be done in a Custom-Script, and creates a new trigger, which will look for a function named &amp;quot;gf_Map_&amp;lt;X&amp;gt;_Wave_&amp;lt;Y&amp;gt;&amp;quot;, and then add a &amp;quot;Time-Elapsed&amp;quot; trigger event, to be executed at &amp;quot;0.1&amp;quot; seconds game-time, which essentially means the trigger will just fire right away.&lt;br /&gt;
Now all there's to do is create the desired Function Definitions Map_X_Wave_Y, with return type boolean, and 2 boolean parameters (so it matches the trigger-signature), which sets up the next wave, and then does:&lt;br /&gt;
&lt;br /&gt;
 TriggerDestroy(TriggerGetCurrent()); // Do not leak triggers.&lt;br /&gt;
&lt;br /&gt;
TriggerDestroy() is important, otherwise the map would leak triggers for each wave...&lt;br /&gt;
&lt;br /&gt;
If you set everything up well, the only thing you need to do, is define somewhere how man waves each map has, and create a Function for each wave. This is much more comfortable than the huge &amp;quot;If-Then-Else&amp;quot; combinations found in various Tower-Defense tutorials, where you essentially have a huge &amp;quot;if wave = 1 then &amp;lt;blah&amp;gt; else if wave = 2 then &amp;lt;blah&amp;gt; else...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
== There's a reason why these functions are hidden ==&lt;br /&gt;
&lt;br /&gt;
The reason for &amp;quot;TriggerCreate()&amp;quot; and &amp;quot;TriggerDestroy()&amp;quot; and all the &amp;quot;TriggerAddEvent***&amp;quot; functions to be hidden is simply: If you need to manage the amount of triggers yourself, and need to carefully destroy all the unused ones, otherwise your map will keep creating more and more triggers until SC2 eventually eats up all your memory...&lt;br /&gt;
&lt;br /&gt;
== Powerful Triggers ==&lt;br /&gt;
&lt;br /&gt;
Just think about this: GalaxyCode allows you to put together function-names at runtime, using variables and constant strings, and then allows you to have these functions executed.&lt;br /&gt;
This means Galaxy Code is much more powerful than it first appears to be. If you're a C/C++ coder, and have ever thought how cool it would be to have function-pointers and objects, &lt;br /&gt;
then this information will put a big smile on your face :)&lt;br /&gt;
&lt;br /&gt;
=== Some more ideas ===&lt;br /&gt;
&lt;br /&gt;
This, in conjunction with unit's custom-values, even allows you to link abilities for players to different functions. Use a custom value of the player as a function ID, and make triggers&lt;br /&gt;
for when a certain ability is executed, create new triggers to call &amp;quot;gf_AbilityFunction_&amp;lt;custom value&amp;gt;&amp;quot;... You can have 1 ability which does different things each time it is cast...&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Triggers]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Blub</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/How_to_give_a_unit_detection</id>
		<title>How to give a unit detection</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/How_to_give_a_unit_detection"/>
				<updated>2011-04-07T22:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This mini-tutorial will show you how to give a unit detection of a cloaked unit.&lt;br /&gt;
&lt;br /&gt;
==Adding Detection==&lt;br /&gt;
First, open up the Data Editor. Select the unit you want to give detection. Over on the right, there should be several tabs. Click the one that says Behaviours. Then hit the green button to add a new behaviour. A box will appear; select from the dropdown list one of these three behaviours: Detection(10), Detection(11), or Detection(12). The numbers refer to how much detection range the unit will have.&lt;br /&gt;
[[File:Detection tutorial 1.PNG|600px|center|Example Screenshot]]&lt;br /&gt;
&lt;br /&gt;
==Modifying Detection==&lt;br /&gt;
If you wish to have other distances as the range, go to the Behaviours tab at the top right of the Data Editor. Search for Detector. Here you can either duplicate an existing Detector behaviour, or edit an existing one. In this case, we'll edit an existing one. Select Detection(10). On the right, click the Unit tab. Change the Modification - Detect number to whatever distance you'd like to have your unit detect to. In this case, we'll use 3. &lt;br /&gt;
[[File:Detection tutorial 2.PNG|600px|center|Example Screenshot]]&lt;br /&gt;
&lt;br /&gt;
==Removing Detection==&lt;br /&gt;
To remove detection from a unit that already has it, select the unit in the Unit section of the Data Editor. Go to Behaviours, select the Detector behaviour, and click the red button on the right to remove it. The unit will no longer be able to detect.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Data Editor]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Custom_Unit_Textures</id>
		<title>Custom Unit Textures</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Custom_Unit_Textures"/>
				<updated>2011-04-06T21:55:40Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this tutorial, we're going to be covering a couple of ways you can replace a unit's texture. The first way simply replaces the texture with another one. The second method points the data editor at a differently named texture to use for that model.&lt;br /&gt;
&lt;br /&gt;
= Replacement Method =&lt;br /&gt;
First, export the texture from the [[MPQ Exporting|MPQ]]. In this case, we'll be using the Protoss Dark Templar textures, and we'll be editing the diffuse map, and the emissive map. This is found in the Liberty.SC2Mod folder, in the base.SC2Assets MPQ. Navigate into Assets/Textures/ and put a search mask for dark*. As you should be able to see, there's a .dds called darktemplar_diffuse.dds. So, of course, we export that, edit it, and place it into our map, right? WRONG. If you tried this, nothing would change. Now, open up the [[Previewer]] (Ctrl-Shift-V in GalaxyEdit). Navigate to the Dark Templar unit, and take a look at the materials the .m3 looks for. As seen in the screenshot, it looks for the DarkTemplarSilver_Diffuse.dds! Not all units are like this, but it's a good idea to make sure you're trying to replace the correct file.&lt;br /&gt;
[[File:Custom unit textures 1.PNG|600px|center|WHY IS IT SILVER]]&lt;br /&gt;
&lt;br /&gt;
Now, back in your MPQ editor, export DarkTemplarSilver_Diffuse.dds, and DarkTemplar_emissive.dds. Open them up in your image editor, and modify it however you want. In this case, I've made the blades glow red, by editing the emissive map. I've also edited the diffuse map to make other parts of the templar redder.&lt;br /&gt;
[[File:Custom unit textures 2.PNG|600px|center|Are you reddy?]]&lt;br /&gt;
&lt;br /&gt;
Finally we will replace the texture in GalaxyEdit. Open up the [[GalaxyEdit#Import_Module|Import module]] (F9), and go to Data-&amp;gt;Import Files (Ctrl-I). Navigate to your textures, select them, and import them. Make sure they're in Assets/Textures/ inside the map. Save the map, and exit the importer. Place a dark templar or three in the terrain module, and go test them out! (Note:The changes won't show up in the editor with this method, as the editor seems to look in the Liberty mod for this information when you use the replacement method. However, they should show up fine ingame).&lt;br /&gt;
[[File:Custom unit textures 3.PNG|600px|center|Looking good]]&lt;br /&gt;
&lt;br /&gt;
= Data Editor Method =&lt;br /&gt;
PSGMud from HiveWorkShop has created this tutorial about the data editor method:&lt;br /&gt;
&amp;lt;youtube&amp;gt;zaIJ_LKijuU&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Creating_Custom_Terrain_Textures</id>
		<title>Creating Custom Terrain Textures</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Creating_Custom_Terrain_Textures"/>
				<updated>2011-04-06T11:55:02Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this tutorial, we'll be creating a custom terrain texture using existing online images. However, you can create your own, using your chosen photo editing application, or photographs you take yourself. While the program used is [http://www.gimp.org/ GIMP], you can also use other applications such as Photoshop.&lt;br /&gt;
&lt;br /&gt;
= Finding a Base Image =&lt;br /&gt;
The easiest way to find a good stock photo to convert into a terrain texture is via google. In this case, while we're going to be making a rocky snow texture, I search for concrete in google image search. I then save the highlighted image onto my computer.&lt;br /&gt;
[[File:Terrain tutorial 1.PNG|800px|center|Google Image Search]]&lt;br /&gt;
&lt;br /&gt;
= Editing the Image =&lt;br /&gt;
Next, open up the image in your photo editing application. Crop the image until it is square. Then increase the brightness and contrast until it looks a lot whiter, and less colorful. I managed to get mine looking like this:&lt;br /&gt;
[[File:Terrain tutorial 2.PNG|800px|center|Snowy Concrete]]&lt;br /&gt;
&lt;br /&gt;
= Making the Texture Tile Correctly =&lt;br /&gt;
There's a problem with the image as it currently is. If you have several of these placed next to each other, you may notice something. There's a large white patch that stands out quite a lot. If you have this plastered all over a [[StarCraft II]] map, these white patches will be quite obvious. To fix that, we're going to be using the Clone tool.&lt;br /&gt;
[[File:Terrain tutorial 3.PNG|800px|center|Large White Patches]]&lt;br /&gt;
&lt;br /&gt;
= Cloning =&lt;br /&gt;
Cloning is fairly simple. You select a part of the image to clone from, then you click all over the large white patches, replacing wherever you click with the part of the image you previously selected. In GIMP, you hold down Ctrl and click on an area that looks quite bland and not too bright. Then, without holding down Ctrl, click on the large white patches. Once I finished, when tiled my image had no patches that stood out noticeably. For this kind of texture, that's the effect you want. (Note: other terrain textures may look better with large patches. Don't always clone out the patches unless the texture needs it.)&lt;br /&gt;
[[File:Terrain tutorial 4.PNG|800px|center|Kaminoans...them be CLONERS...]]&lt;br /&gt;
&lt;br /&gt;
= Make it Tile =&lt;br /&gt;
This texture doesn't really need this, as it already tiles quite well. However, for textures such as wooden planks, bricks, and other textures which require parts that stand out, you'll need to run a Make Tileable filter on the image, or manually tile them yourself. There are tutorials on the internet about this, I won't go into more detail.&lt;br /&gt;
&lt;br /&gt;
= Alpha Mapping =&lt;br /&gt;
StarCraft II uses the alpha map of the diffuse (color) map, aka your texture, to define how the texture is affected by global illumination. If you have a bright alpha map, the texture will appear to be bright when hit by ingame lighting; dark alpha maps means the texture will appear dark. The texture will look the same regardless of alpha mapping when it is under a shadow. You can make half an alpha map bright and half dark, or make cracks in the texture dark and the rest bright.&lt;br /&gt;
&lt;br /&gt;
= Normal Mapping =&lt;br /&gt;
To finish off, we're going to create a normal map for this image. First off, save your image as something like snow_texture.dds. Then save a copy of it called snow_texture_normal.dds. We'll be working on this copy now. Normal maps are oddly colored images that StarCraft II uses to add detail to a texture that the model itself doesn't possess. It does this with shaders, which are more complicated. You don't need to know a whole lot about how they work, all you need to know is that with normal maps you can make bricks look like they're actually standing out of the ground, define the gaps inbetween planks, and make rocks in the snow stand out more. There's a great tutorial [http://www.cgtextures.com/content.php?action=tutorial&amp;amp;name=normalmap here] on how to make a normal map out of your texture. After following it, here is my result:&lt;br /&gt;
[[File:Terrain tutorial 5.PNG|800px|center|Looks normal to me...]]&lt;br /&gt;
&lt;br /&gt;
Now, StarCraft II uses a fairly odd version of the normal map, which is orange tinted rather than blue. To convert your normal map to the orange SC2 normal map, you have to edit the channels. In PhotoShop, select the red channel, copy it, and paste it into the alpha channel. Then fill the red channel with white, and the blue channel with black.&lt;br /&gt;
&lt;br /&gt;
The process is slightly more difficult in GIMP. First, add an alpha channel if one doesn't already exist. Second, select the entire image; then go to Colors-&amp;gt;Components-&amp;gt;Decompose. In the box that pops up, choose RGB and press OK. This then places the channels into separate layers. Select the red layer, copy it, and paste it into the alpha layer. Then fill the red layer with white, and the blue layer with black. Finally select all the layers and go to Colors-&amp;gt;Components-&amp;gt;Recompose. This then places the layers back into one layer on your original image. It should be orange-tinted if you did it correctly. [NOTE: there's an alternate and more official method for GIMP as shown [http://gimpforums.com/thread-can-i-do-this-with-channels here].&lt;br /&gt;
[[File:Terrain tutorial 6.PNG|800px|center|Oranges and lemons, say the bells of Saint Clemens]]&lt;br /&gt;
&lt;br /&gt;
Finally, save as .DDS (or .TGA if you prefer). You can use Nvidia's DDS PhotoShop plugin, or GIMP's DDS plugin, or alternatively use [http://sourceforge.net/projects/aorta/ Aorta], a 3rd party DDS tool which works on Windows, Linux, and Macintosh. Of course, you then import your finished diffuse and normal map textures into GalaxyEdit, using this method: [[Importing Custom Artwork#Importing Custom Terrain Textures|Importing Custom Terrain Textures.]]&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Terrain]]&lt;br /&gt;
[[Category:Art]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Actors</id>
		<title>Actors</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Actors"/>
				<updated>2011-04-02T10:04:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Actors are GalaxyEdit's data editor's way of linking graphics and sounds together to form what you can see and hear on the map. They include units, attacks, models, text, sounds, range indicators, terrain deformations, and more. They are possibly the most important thing in the data editor, but also one of the most complicated things.&lt;br /&gt;
&lt;br /&gt;
=== Actor Events ===&lt;br /&gt;
Actors don't do anything unless you have events. Events are like triggers; you need a condition, and if the condition is met, an action happens. For example, on unit birth, you want the unit model to be created. When the unit is ordered to move, you want it to stop playing its idle animation or firing animation before it starts walking. When the unit attacks, you want to have it use a specific attack animation depending on what it attacks, and perhaps a particular sound played. All this is controlled with actor events.&lt;br /&gt;
&lt;br /&gt;
MORE TO COME, WIP.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Catalogs]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/Static_Command_Card</id>
		<title>Static Command Card</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/Static_Command_Card"/>
				<updated>2011-03-06T00:57:14Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Editor note: This is a stub and should be added to the Command Card article when it is created)&lt;br /&gt;
&lt;br /&gt;
Command Cards currently only allow certain things to be edited in the editor without changing the layout, and even less when using GUI.  In this wiki stub, the ability to make a command card sticky (Static, or non moving when you click an ability) will be demonstrated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to find it ==&lt;br /&gt;
First you need to open the unit in the Data Editor.  A few options must be selected.  View Raw Data (CTRL + D) which is located in the top right area of the left side pane.  Show table view (1st button) should be pressed on the right side pane and Combine Structure Values should be unpressed (5th button).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Value ==&lt;br /&gt;
[[File:SubmenuSticky.gif|350px|thumb|Screenshot of the data editor with SubmenuIsSticky value selected]]&lt;br /&gt;
You now need to find &amp;quot;CUnit_CardLayouts_LayoutButtons_SubmenuIsSticky&amp;quot;.  This value is the one needed to be changed.  The first thing you need to do is find the right value to change.  It should look something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CUnit_CardLayouts_LayoutButtons_SubmenuIsSticky  |  ((0|0|0|0|0|0|0))((0|0|0|0|0))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What to edit ===&lt;br /&gt;
Each set of parentheses is each command card that is created in the editor for that unit.  Each 0 is every button created for the unit from top left to bottom right. If all 15 button slots were used, the first 0 would be the top left slot, the sixth would be the middle left, eleventh would be the bottom left and fifteenth is the bottom right.  The button you use to switch to another command card needs to have its value set to 1.  When you use an ability in that second command card it will remain on that card and not return to the first card.&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Stubs]]&lt;/div&gt;</summary>
		<author><name>Riney</name></author>	</entry>

	<entry>
		<id>http://www.galaxywiki.net/UI_Editing</id>
		<title>UI Editing</title>
		<link rel="alternate" type="text/html" href="http://www.galaxywiki.net/UI_Editing"/>
				<updated>2011-02-23T02:07:19Z</updated>
		
		<summary type="html">&lt;p&gt;DevliN: Fixed list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UI or User Interface editing is done by editing .SC2Layout files. SC2Layout files are renamed XML files, and can be found in /.../StarCraft II/Mods/Core.SC2Mod/Base.SC2Data&lt;br /&gt;
Base.SC2Data is an [[MPQ (File Format)]] file. You'll need to [[MPQ_Exporting|learn how to edit MPQ files]] to extract the .SC2Layout files. Inside the MPQ, they're found at UI/Layout/UI. &lt;br /&gt;
&lt;br /&gt;
Extract all the files you find inside that folder into a folder on your computer. It's probably a good idea to make duplicates, and have one folder filled with the original .SC2Layout files, and one folder filled with the ones you're currently editing. The SC2Layout files can be opened with any text editor, such as Notepad, Notepad++, gedit (Linux), etc.&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the current .SC2Layout files included with a default StarCraft II install:&lt;br /&gt;
*AchievementPanel&lt;br /&gt;
*AIFrames&lt;br /&gt;
*AlertPanel&lt;br /&gt;
*AlliancePanel&lt;br /&gt;
*BattleReportPanel&lt;br /&gt;
*BehaviourBar&lt;br /&gt;
*CampaignTemplates&lt;br /&gt;
*CashPanel&lt;br /&gt;
*CharacterSheetPanel&lt;br /&gt;
*ChatBar&lt;br /&gt;
*CommandButton&lt;br /&gt;
*CommandPanel&lt;br /&gt;
*ConsolePanel&lt;br /&gt;
*ControlGroupPanel&lt;br /&gt;
*ConversationPanel&lt;br /&gt;
*GameButton&lt;br /&gt;
*GameMenuDialog&lt;br /&gt;
*GameUI&lt;br /&gt;
*HelpMenuDialog&lt;br /&gt;
*HelpPanel&lt;br /&gt;
*HeroPanel&lt;br /&gt;
*InfoPaneCargo&lt;br /&gt;
*InfoPaneGroup&lt;br /&gt;
*InfoPaneHero&lt;br /&gt;
*InfoPanel&lt;br /&gt;
*InfoPaneProgress&lt;br /&gt;
*InfoPaneQueue&lt;br /&gt;
*InfoPaneUnit&lt;br /&gt;
*InventoryPanel&lt;br /&gt;
*LeaderPanel&lt;br /&gt;
*MenuBar&lt;br /&gt;
*MercenaryPanel&lt;br /&gt;
*MessageLogDialog&lt;br /&gt;
*MiniMapPanel&lt;br /&gt;
*ObjectivePanel&lt;br /&gt;
*ObserverPanel&lt;br /&gt;
*PausePanel&lt;br /&gt;
*PlanetPanel&lt;br /&gt;
*PortraitPanel&lt;br /&gt;
*PurchasePanel&lt;br /&gt;
*ReplayPanel&lt;br /&gt;
*ResearchPanel&lt;br /&gt;
*ResourcePanel&lt;br /&gt;
*ResourceRequestAlertPanel&lt;br /&gt;
*RevealPanel&lt;br /&gt;
*SubtitlePanel&lt;br /&gt;
*SystemAlertPanel&lt;br /&gt;
*TeamResourcePanel&lt;br /&gt;
*TechGlossaryPanel&lt;br /&gt;
*TechTreePanel&lt;br /&gt;
*TimePanel&lt;br /&gt;
*TipAlertPanel&lt;br /&gt;
*TriggerDialogFrame&lt;br /&gt;
*TriggerWindowPanel&lt;br /&gt;
*UnitButton&lt;br /&gt;
*UnitWireframe&lt;br /&gt;
*VictoryPanel&lt;br /&gt;
*WaitingForPlayersDialog&lt;br /&gt;
*WorldTooltip&lt;br /&gt;
&lt;br /&gt;
=== TODO: Stuff about editing them ===&lt;br /&gt;
&lt;br /&gt;
=== Finishing Up ===&lt;br /&gt;
To add your edited .SC2Layout files to your map, there are two things you can do. One is to open your map in an MPQ editor, and place the edited .SC2Layout files into a new folder located at [yourmaphere.sc2m]/UI/Layout/UI&lt;br /&gt;
The other way is  to add your .SC2Layout files by opening your map in the Editor, opening the [[Data Editor]], and navigating to UI - Custom Layout Files at Data Editor - Game UI Data. Then add your files, and save the map.&lt;br /&gt;
&lt;br /&gt;
Note: You can import your .SC2Layout files using GalaxyEdit's default Importer, but you have to save the map after everything you do. If you want to change your .SC2Layout files, you need to remove all of the imported ones, save, import the new ones, and then save again.&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
&amp;lt;youtube&amp;gt;8-MwK7Racv4&amp;lt;/youtube&amp;gt;&lt;br /&gt;
A tutorial by OneTwoSC about editing .SC2Layout files and importing them into your map&lt;br /&gt;
&lt;br /&gt;
[[Category:StarCraft II]]&lt;br /&gt;
[[Category:Reference]]&lt;br /&gt;
[[Category:Data Editor]]&lt;br /&gt;
[[Category:Video Tutorials]]&lt;/div&gt;</summary>
		<author><name>Jack</name></author>	</entry>

	</feed>
