<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ssbd.a000ff.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scratch</id>
		<title>Serious Sam's Bogus Detour - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ssbd.a000ff.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Scratch"/>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/Special:Contributions/Scratch"/>
		<updated>2026-04-25T22:12:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Main_Page&amp;diff=615</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Main_Page&amp;diff=615"/>
				<updated>2017-08-21T14:35:49Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Logo.png|link=]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box|Welcome!|&lt;br /&gt;
Welcome to the Serious Sam's Bogus Detour wiki. We are currently actively working on adding articles and information, and you're free to help out!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{{Box|Getting started|&lt;br /&gt;
Guides on getting started with Serious Sam's Bogus Detour modding.&lt;br /&gt;
* [[Using the editor]]&lt;br /&gt;
** [[:Category:Editor layer|Editor Layers]]&lt;br /&gt;
** [[Editor Shortcuts]]&lt;br /&gt;
* [[Creating a scenario]]&lt;br /&gt;
** [[Creating a Campaign level]]&lt;br /&gt;
** [[Creating a Survival level]]&lt;br /&gt;
** [[Creating a Versus level]]&lt;br /&gt;
* [[Sharing your scenario]]&lt;br /&gt;
* [[Adding custom sounds and music]]&lt;br /&gt;
* [[Scripting]]&lt;br /&gt;
** [[Creating a GameMode]]&lt;br /&gt;
** [[Creating a WorldScript]]&lt;br /&gt;
** [[Creating a Behavior]]&lt;br /&gt;
** [[Creating an interface]]&lt;br /&gt;
** [[Network code]]&lt;br /&gt;
** [[Rewriting Classes]]&lt;br /&gt;
}}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{{Box|About|2=&lt;br /&gt;
* [http://store.steampowered.com/app/272620/Serious_Sams_Bogus_Detour/ Serious Sam's Bogus Detour on Steam]&lt;br /&gt;
* [https://www.gog.com/game/serious_sams_bogus_detour Serious Sam's Bogus Detour on GOG.com]&lt;br /&gt;
* [http://steamcommunity.com/games/272620/announcements/ Announcements and update news]&lt;br /&gt;
* [http://steamcommunity.com/app/272620/workshop/ Steam Workshop]&lt;br /&gt;
* [http://steamcommunity.com/workshop/discussions/18446744073709551615/?appid=272620 Steam Workshop discussions]&lt;br /&gt;
}}&lt;br /&gt;
{{Box|Scripting references|&lt;br /&gt;
* [http://ssbd.a000ff.com/docs/engine/ Engine API documentation]&lt;br /&gt;
* [http://ssbd.a000ff.com/docs/engine/ Script API documentation]&lt;br /&gt;
}}&lt;br /&gt;
{{Box|References|&lt;br /&gt;
* [[Extracting game files]]&lt;br /&gt;
* [[:Category:WorldScripts|WorldScripts]]&lt;br /&gt;
* [[:Category:File type|File types]]&lt;br /&gt;
* [[Console]]&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=User:Hipshot&amp;diff=614</id>
		<title>User:Hipshot</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=User:Hipshot&amp;diff=614"/>
				<updated>2017-08-21T14:22:25Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the most basic parts of the editor, from first setup to launching a smaller test level ingame.&lt;br /&gt;
&lt;br /&gt;
=Preparation=&lt;br /&gt;
Before you start using the editor, you need to setup a working directory for your level, campaign, or mod. You will also need an &amp;lt;code&amp;gt;[[info.xml]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
Navigate to your SSBD directory, then go into the folder &amp;lt;code&amp;gt;scenarios&amp;lt;/code&amp;gt;. Inside here, create a new folder called &amp;lt;code&amp;gt;mycampaign&amp;lt;/code&amp;gt; or whatever you feel like calling it. Inside &amp;lt;code&amp;gt;mycampaign&amp;lt;/code&amp;gt; create yet another folder called &amp;lt;code&amp;gt;levels&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now you need to set up an &amp;lt;code&amp;gt;[[info.xml]]&amp;lt;/code&amp;gt; file. This file contains important information about the scenario. Open your favorite text editor (like Notepad), and paste the following text inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;info&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;My cool campaign&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;tag&amp;gt;This is the best campaign&amp;lt;/tag&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;The end is near, or perhaps not! In any case, this is a really fun level!&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;players min=&amp;quot;1&amp;quot; max=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;start&amp;gt;&lt;br /&gt;
		&amp;lt;level name=&amp;quot;The Pride of Memphis&amp;quot; lvl=&amp;quot;levels/level1.lvl&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/start&amp;gt;&lt;br /&gt;
&amp;lt;/info&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the file inside of the &amp;lt;code&amp;gt;mycampaign&amp;lt;/code&amp;gt; folder as &amp;lt;code&amp;gt;info.xml&amp;lt;/code&amp;gt;. (Make sure it's .xml, and not .txt!)&lt;br /&gt;
&lt;br /&gt;
==Starting the editor==&lt;br /&gt;
The editor can be found inside the SSBD install directory, called &amp;lt;code&amp;gt;EDITOR.exe&amp;lt;/code&amp;gt;, or as a launch option in Steam when you click the ''Play'' button.&lt;br /&gt;
&lt;br /&gt;
==Workspace==&lt;br /&gt;
The editor workspace consists of several parts: ''History'', ''Layers'', ''Properties'', ''Toolbar'', ''Menus'', and the ''Status Bar'', the picture below outlines these parts.&lt;br /&gt;
&lt;br /&gt;
[[File:Editor_guide_launch.png|thumb|left|175px|Workspace]]&lt;br /&gt;
&lt;br /&gt;
# '''Menu:''' In the menus you can find most basic functions, like testing the level from the editor and showing and changing the grid.&lt;br /&gt;
# '''Tool Bar:''' Quick shortcuts to functions like turn on the grid and simulate physics (it's recommended to turn simulate physics off).&lt;br /&gt;
# '''History:''' Saves your current work progrss so you can undo in steps, sometimes this function undoes twice, so be careful, it's better to not use it at all.&lt;br /&gt;
# '''Layers:''' Where you choose your work layer. If you have ''Global Selection'' on, you can work in multiple layers at the same time.&lt;br /&gt;
# '''Properties:''' Used to change properties of a selected unit or script, like what unit to spawn with a [[SpawnUnit WorldScript]].&lt;br /&gt;
# '''Status Bar:''' Shows the number of units selected, zoom grade, on what co-ordinates the mouse cursor is at, and the current level testing options.&lt;br /&gt;
&lt;br /&gt;
==Game mode==&lt;br /&gt;
[[File:Basics_gamemode.png|thumb|100px|GameMode settings]]&lt;br /&gt;
Before you start constructing a level, you need to decide what game mode it should have. You should always do this, since it contains important settings and information about the level.&lt;br /&gt;
&lt;br /&gt;
For this tutorial, we will choose '''Campaign''' under the tab '''GameMode''' in the '''Layers''' panel. The only thing we will change here is the '''MapName''' and the '''CreatorName'''.&lt;br /&gt;
&lt;br /&gt;
=Constructing=&lt;br /&gt;
Now we will start and produce a small playable level. We will place some tilesets, and then move on to building parts and finally some basic scripts to end and start the gameplay with.&lt;br /&gt;
&lt;br /&gt;
==Environment and tilesets==&lt;br /&gt;
[[File:Editor basics tiles.png|thumb|100px|Painting a tileset]]&lt;br /&gt;
The absolute first thing you want to do is set a default environmental light of the level, so you can actually see what you are doing (else everything will be black).&lt;br /&gt;
&lt;br /&gt;
Switch to the '''Lighting''' tab and look down a bit until you see '''Env:''', open that list and look close to the bottom, find the environment called '''egypt_outside.env'''.&lt;br /&gt;
&lt;br /&gt;
Now enter the '''Tilemap''' tab and scroll down the list until you find a tileset called &amp;lt;code&amp;gt;egypt_tile_inside_16.tileset&amp;lt;/code&amp;gt;. Start painting these ''(Add: Left Mouse Button. Remove: Right Mouse Button)'' tiles until you have a good and sturdy ground. There are a few settings in the '''Properties''' panel that you can change, like increase or decrease the size of the paintbrush, this can also be done with the shortcut '''CTRL+MWHEEL'''.&lt;br /&gt;
&lt;br /&gt;
==Walls==&lt;br /&gt;
[[File:Editor basics walls1.png|thumb|100px|Almost a room]]&lt;br /&gt;
[[File:Editor basics walls2.png|thumb|100px|Two rooms!]]&lt;br /&gt;
Before you start placing walls make sure you set the '''grid''' to '''16''' (either from the menu or by pressing '''&amp;quot;5&amp;quot;''' on the numpad), standard walls are 16 units thick and this will make sure they always follow that grid.&lt;br /&gt;
&lt;br /&gt;
Now, open the '''Doodads tab''' and in the '''search field,''' type '''egypt_fancy.''' This will list all units associated with this theme. We are going to use a few different building blocks here, the following is a list of the units we will be using right now:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_h.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_v.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_crn_ne.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_crn_nw.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_crn_se.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_crn_sw.unit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start by selecting &amp;lt;code&amp;gt;fancy_h.unit&amp;lt;/code&amp;gt; and place it down using the '''right mouse button'''. Place a couple of these to form a long wall. Then move on to the other units and shape a room with a gap, just like the image to the right.&lt;br /&gt;
&lt;br /&gt;
When that is done, continue and expand the level so you get two rooms and place a door in between them. Also, trim the tileset so it won't show outside the walls. Now, let's add some decoration and lamps!&lt;br /&gt;
&lt;br /&gt;
==Artpass and lighting==&lt;br /&gt;
The blue area around the walls are called the void, this is outside the level. You can walk there, but enemies and other things might start to act strange and it doesn't look too good either. Think of this as an area you should never see.&lt;br /&gt;
&lt;br /&gt;
The two basic ways to handle this is either to paint over tilesets there, like grass or something else, or as you can see when you play [[e1m1|the first level]] of the game you notice that there's roofing on top of the walls making it feel like you are actually inside a temple, which also covers the void. This is the method we will be using here. To achieve this, search the '''Doodads''' tab for '''color''' and you will find units called '''color_egypt_fancy_*.unit''', where '''*''' are different sizes. Pick the one called '''_512.unit''' and place them around, so they cover all the void around the walls.&lt;br /&gt;
&lt;br /&gt;
When that's done, let's place some decorative props around the two rooms, this is a list of units that I will be placing around (they are all found inside the Doodads tab):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;lamp_torch&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;china_*&amp;lt;/code&amp;gt; (different vases and things)&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_deco_pillar&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_deco_pillar_blank&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fancy_deco_pillar_large&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Creating_an_interface&amp;diff=608</id>
		<title>Creating an interface</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Creating_an_interface&amp;diff=608"/>
				<updated>2017-07-31T10:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Interfaces is what makes the HUD, Netricsa, etc. This means an interface can either be shown passively (without user input) or actively (with user input).&lt;br /&gt;
&lt;br /&gt;
== The gui file ==&lt;br /&gt;
&lt;br /&gt;
Let's start by creating a gui file. Let's call it &amp;lt;code&amp;gt;hello.gui&amp;lt;/code&amp;gt; and we'll put it inside of our scenario in a &amp;lt;code&amp;gt;gui&amp;lt;/code&amp;gt; folder. We will discuss its contents later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;&lt;br /&gt;
	&amp;lt;doc&amp;gt;&lt;br /&gt;
		&amp;lt;group&amp;gt;&lt;br /&gt;
			&amp;lt;text anchor=&amp;quot;0.5 0.5&amp;quot; font=&amp;quot;gui/fonts/font_agency16.fnt&amp;quot; text=&amp;quot;Hello, world!&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/group&amp;gt;&lt;br /&gt;
	&amp;lt;/doc&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drawing our interface ==&lt;br /&gt;
&lt;br /&gt;
To draw our interface, we need to add it to a place that draws stuff. A prime example of this is the &amp;lt;code&amp;gt;RenderWidgets&amp;lt;/code&amp;gt; function of a gamemode. But first, we need to instantiate a [[Widget Hoster]] which will do most of the hard work of interfaces for us. Here's how we would load the &amp;lt;code&amp;gt;hello.gui&amp;lt;/code&amp;gt; file inside of a gamemode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	IWidgetHoster@ m_interface;&lt;br /&gt;
&lt;br /&gt;
	BasicVersus(Scene@ scene)&lt;br /&gt;
	{&lt;br /&gt;
		super(scene);&lt;br /&gt;
&lt;br /&gt;
		// Create a widget hoster&lt;br /&gt;
		@m_interface = IWidgetHoster();&lt;br /&gt;
&lt;br /&gt;
		// Load hello.gui into it&lt;br /&gt;
		m_interface.LoadWidget(m_guiBuilder, &amp;quot;gui/hello.gui&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our gamemode constructor, we instantiate a basic &amp;lt;code&amp;gt;IWidgetHoster&amp;lt;/code&amp;gt;, put it in &amp;lt;code&amp;gt;m_interface&amp;lt;/code&amp;gt; and tell it to load our gui file.&lt;br /&gt;
&lt;br /&gt;
Now, to actually draw our interface to the screen, we override the &amp;lt;code&amp;gt;RenderWidgets&amp;lt;/code&amp;gt; function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	void RenderWidgets(PlayerRecord@ player, int idt, SpriteBatch&amp;amp; sb) override&lt;br /&gt;
	{&lt;br /&gt;
		// Draw our interface&lt;br /&gt;
		m_interface.Draw(sb, idt);&lt;br /&gt;
&lt;br /&gt;
		// Remember to call the base function from the inherited gamemode!&lt;br /&gt;
		VersusGameMode::RenderWidgets(player, idt, sb);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And, additionally, to make any sprite animations work, we also update the widget hoster inside of &amp;lt;code&amp;gt;UpdateWidgets&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	void UpdateWidgets(int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput) override&lt;br /&gt;
	{&lt;br /&gt;
		// Update our interface&lt;br /&gt;
		m_interface.Update(ms);&lt;br /&gt;
&lt;br /&gt;
		// Remember to call the base function from the inherited gamemode!&lt;br /&gt;
		VersusGameMode::UpdateWidgets(ms, gameInput, menuInput);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:GuiExample1.png]]&lt;br /&gt;
&lt;br /&gt;
== More about the gui file ==&lt;br /&gt;
&lt;br /&gt;
Gui files are formatted as basic XML. Here, the &amp;lt;code&amp;gt;gui&amp;lt;/code&amp;gt; tag is our root element, and is required for all interfaces. Inside of this, we have the &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt; tag, which is also required. Inside of that, we have our first widget, which will be the root widget. In this case, we use the &amp;lt;code&amp;gt;[[GroupWidget]]&amp;lt;/code&amp;gt; by using the &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt; tag. A group widget does not draw anything to the screen. Instead, it is simply a container. It has the special property that it will automatically take the width and height of its parent widget, or if there is no parent widget, the entire screen. This makes it perfect as a container for all other widgets.&lt;br /&gt;
&lt;br /&gt;
Inside of that, we have our first real widget, a &amp;lt;code&amp;gt;[[TextWidget]]&amp;lt;/code&amp;gt;, which we indicate by using the &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; tag. This widget is inside of the &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt; tag, which means that this text widget is a child of the group widget, and the group widget is its parent. Also note that we close the &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; tag immediately instead of opening it, since we don't need to have any child widgets inside of it.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;font&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; attributes speak for themselves, however the &amp;lt;code&amp;gt;anchor&amp;lt;/code&amp;gt; attribute in the above example is more interesting. This is a vector attribute, meaning it accepts 2 floating point numbers. The first is X, the second is Y. These values defines the scalar position of the widget within its parent's size (based on its own size). For example, if you set the anchor X to 0, the widget will be left-aligned. (0 is the default for both X and Y if you don't define the anchor.) If you se this value to 0.5, it will be aligned in the center of its parent. And if you set it to 1, it will be aligned on the right side. The same counts for Y, but then for the Y axis, where 0 would be the top and 1 would be the bottom. Thus, in our example above, &amp;lt;code&amp;gt;0.5 0.5&amp;lt;/code&amp;gt; means to put the widget exactly in the center.&lt;br /&gt;
&lt;br /&gt;
== Sprites ==&lt;br /&gt;
&lt;br /&gt;
Any sprites you want to display in your interface need to go into a &amp;lt;code&amp;gt;sprites&amp;lt;/code&amp;gt; tag. You can then display them with the &amp;lt;code&amp;gt;sprite&amp;lt;/code&amp;gt; widget. Sprites are defined globally in your .gui file, outside of the &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt; tag, like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;&lt;br /&gt;
	&amp;lt;sprites&amp;gt;&lt;br /&gt;
		&amp;lt;sprite name=&amp;quot;globe&amp;quot; texture=&amp;quot;gui/icons.png&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;frame&amp;gt;26 44 13 13&amp;lt;/frame&amp;gt;&lt;br /&gt;
		&amp;lt;/sprite&amp;gt;&lt;br /&gt;
	&amp;lt;/sprites&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;doc&amp;gt;&lt;br /&gt;
		&amp;lt;group&amp;gt;&lt;br /&gt;
			&amp;lt;sprite src=&amp;quot;globe&amp;quot; anchor=&amp;quot;0.5 0.5&amp;quot; offset=&amp;quot;0 -16&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;text anchor=&amp;quot;0.5 0.5&amp;quot; font=&amp;quot;gui/fonts/font_agency16.fnt&amp;quot; text=&amp;quot;Hello, world!&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/group&amp;gt;&lt;br /&gt;
	&amp;lt;/doc&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we take the &amp;quot;globe&amp;quot; sprite and put it in a sprite widget just above the text we created in the previous section. The globe sprite's frame is inside of the &amp;lt;code&amp;gt;gui/icons.png&amp;lt;/code&amp;gt; texture, where it is located at X 26 and Y 44. It also has a width and height of 13. This example looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:GuiExample2.png]]&lt;br /&gt;
&lt;br /&gt;
We can also define animating sprites, by adding more frames and an additional time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;sprite name=&amp;quot;block&amp;quot; texture=&amp;quot;gui/icons.png&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;0 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;10 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;20 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;30 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;40 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
			&amp;lt;frame time=&amp;quot;250&amp;quot;&amp;gt;30 57 10 10&amp;lt;/frame&amp;gt;&lt;br /&gt;
		&amp;lt;/sprite&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding interaction ==&lt;br /&gt;
&lt;br /&gt;
By default, interface interaction is disabled. You have to do the following to be able to interact with an interface:&lt;br /&gt;
&lt;br /&gt;
1. Place an interactable widget, such as a button.&lt;br /&gt;
2. Make sure you are calling &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; on the widget hoster and that you have added it to the list of widget roots.&lt;br /&gt;
3. Additionally, inherit from &amp;lt;code&amp;gt;IWidgetHoster&amp;lt;/code&amp;gt; so you can catch events in &amp;lt;code&amp;gt;OnFunc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Let's go through this step by step.&lt;br /&gt;
&lt;br /&gt;
=== Placing a button ===&lt;br /&gt;
&lt;br /&gt;
To place a button, the most convenient way is using the &amp;lt;code&amp;gt;scalebutton&amp;lt;/code&amp;gt; widget. An example would be this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;scalebutton spriteset=&amp;quot;scalebutton&amp;quot; anchor=&amp;quot;0.5 0.5&amp;quot; offset=&amp;quot;0 30&amp;quot; width=&amp;quot;90&amp;quot; font=&amp;quot;gui/fonts/font_msref10_bold.fnt&amp;quot; text=&amp;quot;Click me!&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the &amp;lt;code&amp;gt;spriteset&amp;lt;/code&amp;gt; here is set to &amp;lt;code&amp;gt;scalebutton&amp;lt;/code&amp;gt;. This means it will load several sprites prefixed by the string &amp;lt;code&amp;gt;scalebutton&amp;lt;/code&amp;gt;. A full list of this is:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-mid&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-right&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-hover-left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-hover-mid&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-hover-right&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-down-left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-down-mid&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scalebutton-down-right&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fortunately, you don't have to define these sprites yourself by hand. You can use the default &amp;lt;code&amp;gt;%include&amp;lt;/code&amp;gt; to automatically add all of these (including a disabled variation) to your .gui file. To use this, add the following line inside of your &amp;lt;code&amp;gt;sprites&amp;lt;/code&amp;gt; tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%include &amp;quot;gui/main_menu/scalablebutton_sprites.inc&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you save this and start the game now, you should see a nice blue button like this:&lt;br /&gt;
&lt;br /&gt;
[[File:GuiExample3.png]]&lt;br /&gt;
&lt;br /&gt;
=== Widget roots ===&lt;br /&gt;
&lt;br /&gt;
You'll notice that the button can't actually be clicked or hovered over. That's because the widget hoster is not configured to receive any user input, it's only being drawn to the screen. We can solve this by calling the gamemode's &amp;lt;code&amp;gt;AddWidgetRoot&amp;lt;/code&amp;gt; function somewhere. For example, directly in our &amp;lt;code&amp;gt;Start&amp;lt;/code&amp;gt; function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	void Start(uint8 peer, SValue@ save, StartMode sMode) override&lt;br /&gt;
	{&lt;br /&gt;
		// Handle all the main starting logic here&lt;br /&gt;
		VersusGameMode::Start(peer, save, sMode);&lt;br /&gt;
&lt;br /&gt;
		// Add our interface as a widget root&lt;br /&gt;
		AddWidgetRoot(m_interface);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you start your level now, you will be able to hover and click the button, but you will also be shooting your weapon and you can still walk around. To work around this, you can override &amp;lt;code&amp;gt;ShouldFreezeControls&amp;lt;/code&amp;gt; and return true when your interface has input focus. You'll have to work with some boolean, and do something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	bool m_isInterfaceVisible;&lt;br /&gt;
&lt;br /&gt;
	bool ShouldFreezeControls() override&lt;br /&gt;
	{&lt;br /&gt;
		return m_isInterfaceVisible&lt;br /&gt;
		    || VersusGameMode::ShouldFreezeControls();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next step we will put this boolean inside of its own class to clean up a bit.&lt;br /&gt;
&lt;br /&gt;
=== Inheriting from IWidgetHoster ===&lt;br /&gt;
&lt;br /&gt;
For the sake of simplicity, this guide started by having you instantiate a &amp;lt;code&amp;gt;IWidgetHoster&amp;lt;/code&amp;gt; directly. This is however not best practice in most cases, plus doing that won't let you catch events from user interaction on the interface. It also doesn't encapsulate everything very well, see for example that ugly loose &amp;lt;code&amp;gt;m_isInterfaceVisible&amp;lt;/code&amp;gt; boolean inside of our gamemode, which is less than ideal.&lt;br /&gt;
&lt;br /&gt;
The way interfaces are generally built in scripts, is by inheriting &amp;lt;code&amp;gt;IWidgetHoster&amp;lt;/code&amp;gt; and putting all interface logic inside of your class. The following example encapsulates our &amp;lt;code&amp;gt;gui/hello.gui&amp;lt;/code&amp;gt; logic inside of a new &amp;lt;code&amp;gt;HelloGui&amp;lt;/code&amp;gt; class that is in itself a widget hoster. For this example I've also added a few helpful things to this compared to the basic example above:&lt;br /&gt;
&lt;br /&gt;
* Loading the .gui (with filename) directly in the constructor of our class.&lt;br /&gt;
* Convenient &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Hide&amp;lt;/code&amp;gt; functions which will help us to easily toggle the visibility and interactability of the interface.&lt;br /&gt;
* A visibility boolean that we use to stop rendering and updating of the interface when hidden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
class HelloGui : IWidgetHoster&lt;br /&gt;
{&lt;br /&gt;
	// If visible this is true, otherwise false&lt;br /&gt;
	bool m_visible;&lt;br /&gt;
&lt;br /&gt;
	HelloGui(GUIBuilder@ b)&lt;br /&gt;
	{&lt;br /&gt;
		// Load the widget directly from hello.gui&lt;br /&gt;
		LoadWidget(b, &amp;quot;gui/hello.gui&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Show()&lt;br /&gt;
	{&lt;br /&gt;
		// Make visible, and add to widget roots&lt;br /&gt;
		m_visible = true;&lt;br /&gt;
		g_gameMode.AddWidgetRoot(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Hide()&lt;br /&gt;
	{&lt;br /&gt;
		// Make invisible, and remove from widget roots&lt;br /&gt;
		m_visible = false;&lt;br /&gt;
		g_gameMode.RemoveWidgetRoot(this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Update(int dt) override&lt;br /&gt;
	{&lt;br /&gt;
		// If not visible, don't bother updating&lt;br /&gt;
		if (!m_visible)&lt;br /&gt;
			return;&lt;br /&gt;
		IWidgetHoster::Update(dt);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void Draw(SpriteBatch&amp;amp; sb, int idt) override&lt;br /&gt;
	{&lt;br /&gt;
		// If not visible, don't bother drawing&lt;br /&gt;
		if (!m_visible)&lt;br /&gt;
			return;&lt;br /&gt;
		IWidgetHoster::Draw(sb, idt);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Catching events ===&lt;br /&gt;
&lt;br /&gt;
Events in interfaces are simple strings sent to the &amp;lt;code&amp;gt;OnFunc&amp;lt;/code&amp;gt; function of a widget hoster. To get an event when the user clicks the &amp;quot;Click me&amp;quot; button we made in the example above, we will need to add the &amp;lt;code&amp;gt;func&amp;lt;/code&amp;gt; attribute to the widget, like: &amp;lt;code&amp;gt;func=&amp;quot;click_me_was_clicked&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;scalebutton spriteset=&amp;quot;scalebutton&amp;quot; anchor=&amp;quot;0.5 0.5&amp;quot; offset=&amp;quot;0 30&amp;quot; width=&amp;quot;90&amp;quot; font=&amp;quot;gui/fonts/font_msref10_bold.fnt&amp;quot; text=&amp;quot;Click me!&amp;quot; func=&amp;quot;click_me_was_clicked&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in your class, override &amp;lt;code&amp;gt;OnFunc&amp;lt;/code&amp;gt; and look for the event string:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
	void OnFunc(Widget@ sender, string name) override&lt;br /&gt;
	{&lt;br /&gt;
		// If the button was clicked, &amp;quot;close&amp;quot; the interface&lt;br /&gt;
		if (name == &amp;quot;click_me_was_clicked&amp;quot;)&lt;br /&gt;
			Hide();&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_Behavior&amp;diff=607</id>
		<title>Creating a Behavior</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_Behavior&amp;diff=607"/>
				<updated>2017-07-31T10:34:11Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Behaviors are classes that control a [[Unit]]. For example, health items have the Pickup behavior. This pickup behavior responds to the &amp;lt;code&amp;gt;Collide&amp;lt;/code&amp;gt; function, so that it can perform an [[Effect]] when a [[Player]] touches the item.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Minimal behavior==&lt;br /&gt;
&lt;br /&gt;
The most basic behavior is one that does nothing and simply stores the [[UnitPtr]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
class MyBehavior&lt;br /&gt;
{&lt;br /&gt;
  UnitPtr m_unit;&lt;br /&gt;
&lt;br /&gt;
  MyBehavior(UnitPtr unit, SValue&amp;amp; params)&lt;br /&gt;
  {&lt;br /&gt;
    m_unit = unit;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
You can define parameters in your [[Unit file]], and then fetch them in your Behavior script. Take for example the following integer in the Behavior XML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;behavior class=&amp;quot;MyBehavior&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;int name=&amp;quot;move-time&amp;quot;&amp;gt;1000&amp;lt;/int&amp;gt;&lt;br /&gt;
&amp;lt;/behavior&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to get the value of &amp;lt;code&amp;gt;move-time&amp;lt;/code&amp;gt; in your script, you can do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
int m_moveTime;&lt;br /&gt;
&lt;br /&gt;
MyBehavior(UnitPtr unit, SValue&amp;amp; params)&lt;br /&gt;
{&lt;br /&gt;
  m_unit = unit;&lt;br /&gt;
  m_moveTime = GetParamInt(unit, params, &amp;quot;move-time&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the value optional instead of required, add the 4th optional argument &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, followed by an optional default value. For example, if you would like &amp;lt;code&amp;gt;move-time&amp;lt;/code&amp;gt; in the above example to be optional and default to 1000, you would do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
m_moveTime = GetParamInt(unit, params, &amp;quot;move-time&amp;quot;, false, 1000);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
Further, you can implement any function you'd like from the below list in your class, and they will be called as events.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void Update(int dt)&lt;br /&gt;
void QueuedPathfind(array&amp;lt;vec2&amp;gt;@ path)&lt;br /&gt;
void QueuedFetchActors(array&amp;lt;UnitPtr&amp;gt;@ actors)&lt;br /&gt;
void Collide(UnitPtr unit, vec2 pos, vec2 normal)&lt;br /&gt;
void Collide(UnitPtr unit, vec2 pos, vec2 normal, Fixture@ fxSelf, Fixture@ fxOther)&lt;br /&gt;
void EndCollision(UnitPtr unit)&lt;br /&gt;
void EndCollision(UnitPtr unit, Fixture@ fxSelf, Fixture@ fxOther)&lt;br /&gt;
void Destroyed()&lt;br /&gt;
vec4 GetOverlayColor()&lt;br /&gt;
SValue@ Save()&lt;br /&gt;
void Load(SValue@ save)&lt;br /&gt;
void PostLoad(SValue@ save)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_WorldScript&amp;diff=606</id>
		<title>Creating a WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_WorldScript&amp;diff=606"/>
				<updated>2017-07-31T10:34:02Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WorldScripts are units you can place inside of a level that perform some logic. Creating your own world scripts is useful for executing certain scripts in a level.&lt;br /&gt;
&lt;br /&gt;
== The setup ==&lt;br /&gt;
This is what the ScriptLink (a default script) looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
namespace WorldScript&lt;br /&gt;
{&lt;br /&gt;
	[WorldScript color=&amp;quot;176 196 222&amp;quot; icon=&amp;quot;system/icons.png;416;128;32;32&amp;quot;]&lt;br /&gt;
	class ScriptLink&lt;br /&gt;
	{&lt;br /&gt;
		SValue@ ServerExecute()&lt;br /&gt;
		{&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script essentially means: when triggered, do nothing. This is useful for the reason that this script will trigger other scripts that are targeted by this one, without performing any action. In other words, it links scripts together, hence its name.&lt;br /&gt;
&lt;br /&gt;
We store the class in a &amp;quot;WorldScript&amp;quot; namespace, as to not clutter the global namespace too much and to avoid name ambiguities. The name of the class will be the name of the script, as it will be shown in the editor and in the editor view. Use of capital letters is encouraged since in compact script mode, the editor will display the abbreviations of script names instead of their icon. For example, &amp;quot;ScriptLink&amp;quot; will show as &amp;quot;SL&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To indicate that the class is indeed a world script, we add the &amp;lt;code&amp;gt;[WorldScript ...]&amp;lt;/code&amp;gt; header, along with a color and an icon. This way the editor will be able to find and display the script. The color is a simple format of &amp;lt;code&amp;gt;r g b&amp;lt;/code&amp;gt;, so in the ScriptLink example above, this would be: &amp;lt;span style=&amp;quot;width: 1em; height: 1em; background: rgb(176, 196, 222); padding: 2px; border: 1px solid #999;&amp;quot;&amp;gt;176 196 222&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Order of execution ==&lt;br /&gt;
Script execution can only be initiated by the server. This means that &amp;lt;code&amp;gt;ServerExecute&amp;lt;/code&amp;gt; will be called first on the server, and after that &amp;lt;code&amp;gt;ClientExecute&amp;lt;/code&amp;gt; is called on the clients.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;ServerExecute&amp;lt;/code&amp;gt; method is not defined, the script can not be triggered, and you also will not be able to target it in the editor.&lt;br /&gt;
&lt;br /&gt;
== Network synchronization ==&lt;br /&gt;
The return value of &amp;lt;code&amp;gt;ServerExecute&amp;lt;/code&amp;gt; can be passed down to &amp;lt;code&amp;gt;ClientExecute&amp;lt;/code&amp;gt;, if necessary. You can build an &amp;lt;code&amp;gt;SValue&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;[[SValueBuilder]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
    void Initialize()&lt;br /&gt;
    void Update(int dt)&lt;br /&gt;
    SValue@ ServerExecute()&lt;br /&gt;
    void ClientExecute(SValue@)&lt;br /&gt;
    void OnEnabledChanged(bool enabled)&lt;br /&gt;
    void DebugDraw(vec2, SpriteBatch&amp;amp;)&lt;br /&gt;
    SValue@ Save()&lt;br /&gt;
    void Load(SValue@ save)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_GameMode&amp;diff=605</id>
		<title>Creating a GameMode</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Creating_a_GameMode&amp;diff=605"/>
				<updated>2017-07-31T10:33:49Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gamemodes define rules about what should happen on a level. They are set in a level file. Typically when making a gamemode, you'll want to inherit the class from either &amp;lt;code&amp;gt;BaseGameMode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VersusGameMode&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;TeamVersusGameMode&amp;lt;/code&amp;gt;. Or, if you're just adding something very simple to an existing gamemode, you can also inherit from &amp;lt;code&amp;gt;Campaign&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Survival&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Deathmatch&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
These scripts are typically saved in your scenario in a &amp;lt;code&amp;gt;scripts/gamemodes&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
= Base =&lt;br /&gt;
There are several ways you can set up the base of a gamemode.&lt;br /&gt;
&lt;br /&gt;
== Minimal gamemode ==&lt;br /&gt;
The most minimal gamemode you can make is this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
[GameMode]&lt;br /&gt;
class BasicGamemode : BaseGameMode&lt;br /&gt;
{&lt;br /&gt;
	BasicGamemode(Scene@ scene)&lt;br /&gt;
	{&lt;br /&gt;
		super(scene);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the &amp;lt;code&amp;gt;[GameMode]&amp;lt;/code&amp;gt; preprocessor that describes our &amp;lt;code&amp;gt;BasicGamemode&amp;lt;/code&amp;gt; class. This tells the engine that this class is a gamemode that should show up in the editor and be a playable gamemode.&lt;br /&gt;
&lt;br /&gt;
If we save this as &amp;lt;code&amp;gt;scripts/gamemodes/BasicGamemode.as&amp;lt;/code&amp;gt; in our scenario, we will be able to select it in the editor if we have the currently opened .lvl file saved inside of the scenario folder as well.&lt;br /&gt;
&lt;br /&gt;
The above will simply spawn the player in the map without any weapons or HUD. If we wanted to give the player a few weapons for example, we'd add an override for &amp;lt;code&amp;gt;SpawnPlayer&amp;lt;/code&amp;gt; provided by &amp;lt;code&amp;gt;BaseGameMode&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
void SpawnPlayer(int i, vec2 pos = vec2(), int unitId = 0, uint team = 0) override&lt;br /&gt;
{&lt;br /&gt;
	BaseGameMode::SpawnPlayer(i, pos, unitId, team);&lt;br /&gt;
&lt;br /&gt;
	// Give weapons&lt;br /&gt;
	g_players[i].AddWeapon(&amp;quot;weapons/smg.sval&amp;quot;);&lt;br /&gt;
	g_players[i].AddWeapon(&amp;quot;weapons/railgun.sval&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Give ammo&lt;br /&gt;
	g_players[i].GiveAmmo(&amp;quot;weapons/ammo/bolts.sval&amp;quot;, 30);&lt;br /&gt;
	g_players[i].GiveAmmo(&amp;quot;weapons/ammo/bullets.sval&amp;quot;, 500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Custom campaign ==&lt;br /&gt;
If you want to base your gamemode on the default &amp;lt;code&amp;gt;Campaign&amp;lt;/code&amp;gt; gamemode, setting it up is as smple as inheriting from &amp;lt;code&amp;gt;Campaign&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
[GameMode]&lt;br /&gt;
class MyOwnCampaign : Campaign&lt;br /&gt;
{&lt;br /&gt;
	MyOwnCampaign(Scene@ scene)&lt;br /&gt;
	{&lt;br /&gt;
		super(scene);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your gamemode will then work exactly like the official Campaign gamemode. You can then override methods to modify any of the gamemode behavior.&lt;br /&gt;
&lt;br /&gt;
== Versus ==&lt;br /&gt;
We provide a few base gamemodes for versus, in particular &amp;lt;code&amp;gt;VersusGameMode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TeamVersusGameMode&amp;lt;/code&amp;gt;. The former is for free-for-all based versus modes (like Deathmatch), and the latter is for team based versus modes (like Team Deathmatch).&lt;br /&gt;
&lt;br /&gt;
A very simple empty versus gamemode kind of resembling Deathmatch would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
[GameMode]&lt;br /&gt;
class BasicVersus : VersusGameMode&lt;br /&gt;
{&lt;br /&gt;
	BasicVersus(Scene@ scene)&lt;br /&gt;
	{&lt;br /&gt;
		super(scene);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Additions =&lt;br /&gt;
&lt;br /&gt;
== Default HUD ==&lt;br /&gt;
If you are using BaseGameMode, you probably also want to add a default HUD so you know what's happening. To do this, we have to do a few things:&lt;br /&gt;
&lt;br /&gt;
* Instantiate a &amp;lt;code&amp;gt;HUD&amp;lt;/code&amp;gt; object using the GUI builder&lt;br /&gt;
* Return the object in the gamemode's &amp;lt;code&amp;gt;GetHUD()&amp;lt;/code&amp;gt; method&lt;br /&gt;
* Update the HUD in the &amp;lt;code&amp;gt;UpdateWidgets(...)&amp;lt;/code&amp;gt; method&lt;br /&gt;
* Render the HUD in the &amp;lt;code&amp;gt;RenderWidgets(...)&amp;lt;/code&amp;gt; method&lt;br /&gt;
&lt;br /&gt;
This looks roughly like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
HUD@ m_hud;&lt;br /&gt;
&lt;br /&gt;
BasicGamemode(Scene@ scene)&lt;br /&gt;
{&lt;br /&gt;
	super(scene);&lt;br /&gt;
	@m_hud = HUD(m_guiBuilder, null);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
HUD@ GetHUD() override { return m_hud; }&lt;br /&gt;
&lt;br /&gt;
void UpdateWidgets(int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput) override&lt;br /&gt;
{&lt;br /&gt;
	m_hud.Update(ms);&lt;br /&gt;
	BaseGameMode::UpdateWidgets(ms, gameInput, menuInput);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void RenderWidgets(PlayerRecord@ player, int idt, SpriteBatch&amp;amp; sb) override&lt;br /&gt;
{&lt;br /&gt;
	m_hud.Draw(sb, idt);&lt;br /&gt;
	BaseGameMode::RenderWidgets(player, idt, sb);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, you can create a class that inherits from &amp;lt;code&amp;gt;HUD&amp;lt;/code&amp;gt; and use that instead, if you want to modify any behavior inside of the default HUD. '''Note''': This is not how you add new HUD elements. If you want to add new HUD elements, see [[Creating an interface]].&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Just like with worldscripts, you can have properties in your gamemode that you can modify per level. These are basically variables in your gamemode class with an &amp;lt;code&amp;gt;Editable&amp;lt;/code&amp;gt; attribute. Some examples include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
[Editable]&lt;br /&gt;
int TimeLimit;&lt;br /&gt;
&lt;br /&gt;
[Editable]&lt;br /&gt;
string AuthorName;&lt;br /&gt;
&lt;br /&gt;
[Editable default=10]&lt;br /&gt;
int SomeNumber;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:GamemodeProperties.png]]&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
Further, you can implement any function you'd like from the below list in your class, and they will be called as events.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void Start(uint8, SValue@, StartMode)&lt;br /&gt;
SValue@ Save()&lt;br /&gt;
&lt;br /&gt;
void AddPlayer(uint8)&lt;br /&gt;
void RemovePlayer(uint8, bool)&lt;br /&gt;
&lt;br /&gt;
void UpdateFrame(int, GameInput&amp;amp;, MenuInput&amp;amp;)&lt;br /&gt;
void UpdatePausedFrame(int, GameInput&amp;amp;, MenuInput&amp;amp;)&lt;br /&gt;
void PreRenderFrame(int)&lt;br /&gt;
void RenderFrame(int, SpriteBatch&amp;amp;)&lt;br /&gt;
&lt;br /&gt;
void ResizeWindow(int, int, float)&lt;br /&gt;
void Paused(bool)&lt;br /&gt;
&lt;br /&gt;
vec2 GetCameraPos(int)&lt;br /&gt;
vec4 GetVignette(int)&lt;br /&gt;
&lt;br /&gt;
// Advanced methods&lt;br /&gt;
void LobbyCreated(bool loadingSave)&lt;br /&gt;
void LobbyInviteAccepted()&lt;br /&gt;
void LobbyEntered()&lt;br /&gt;
&lt;br /&gt;
void LobbyDataUpdate()&lt;br /&gt;
void LobbyMemberDataUpdate(uint8)&lt;br /&gt;
void LobbyList(array&amp;lt;uint64&amp;gt;@)&lt;br /&gt;
&lt;br /&gt;
void SetMenuState(MenuState)&lt;br /&gt;
bool MenuBack()&lt;br /&gt;
void ShowMessage(MenuMessage)&lt;br /&gt;
&lt;br /&gt;
void OnBindingInput(ControllerType, int)&lt;br /&gt;
void ChatMessage(uint8, string)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Extracting_game_files&amp;diff=604</id>
		<title>Extracting game files</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Extracting_game_files&amp;diff=604"/>
				<updated>2017-07-31T10:25:21Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The packager tool allows you to [[Sharing your scenario|package a scenario]], but it also allows you to unpack or extract scenarios, as well as base the content from the &amp;lt;code&amp;gt;res/assets.bin&amp;lt;/code&amp;gt; file. This is useful if you want to use any of our base resources such as units and scripts, in your mod, or use them as reference material.&lt;br /&gt;
&lt;br /&gt;
== On Windows ==&lt;br /&gt;
First, navigate to your Bogus Detour installation folder. In this folder, hold down Shift and F10 at the same time to open the advanced shortcut menu. From here, select &amp;quot;Open command prompt here.&amp;quot; (On Windows 10 this is Powershell.) You should now see the Windows command prompt in front of you, in the current folder. Then, run the following command, which will extract all files from &amp;lt;code&amp;gt;res/assets.bin&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PACKAGER.exe --unpack=res/assets.bin --destination=assets&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Powershell, you need to call it like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.\PACKAGER.exe --unpack=res/assets.bin --destination=assets&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Extracted.png]]&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
The same process works for scenarios, except you pass the .bds file to the /u parameter. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PACKAGER.exe --unpack=scenarios/payload.bds --destination=scenarios/payload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NewBuild|The --sval option currently does not exist, and info.xml is currently not extracted from scenarios.}}&lt;br /&gt;
&lt;br /&gt;
Depending on when the scenario was packaged, you will not get an &amp;lt;code&amp;gt;info.xml&amp;lt;/code&amp;gt; file. This is the case for scenarios packaged at or before build 181.&lt;br /&gt;
&lt;br /&gt;
In such cases where you don't have the &amp;lt;code&amp;gt;info.xml&amp;lt;/code&amp;gt; file but you do need to know its contents, you can get a read-only approximation of this file by passing &amp;lt;code&amp;gt;--sval&amp;lt;/code&amp;gt; while unpacking. This will write a serialized &amp;lt;code&amp;gt;info.sval&amp;lt;/code&amp;gt; file into the destination folder. This file is not very useful if you intend to take it and modify it, as it's only an approximation.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=603</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=603"/>
				<updated>2017-07-31T08:40:55Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is an attempt at listing useful resources that the community has created that can be useful.&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/codecat/ssbd-payload Source code] for the [http://steamcommunity.com/sharedfiles/filedetails/?id=800695063 Payload] multiplayer scenario.&lt;br /&gt;
* [https://github.com/codecat/ssbd-prophunt Source code] for an unfinished Prophunt scenario.&lt;br /&gt;
&lt;br /&gt;
== Resource packs ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B90aki4w25SCRHZrN0hJekNIdzg Source code] for [http://steamcommunity.com/sharedfiles/filedetails/?id=923700789 Ammo Crate Resource Pack].&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Crackshell/NBogus NBogus], a C# library for generating levels.&lt;br /&gt;
* [https://github.com/Crackshell/hw2a000ff hw2a000ff], for converting Hammerwatch campaigns to Bogus Detour scenarios.&lt;br /&gt;
* [http://ssbd.a000ff.com/files/fmod_framework.zip Fmod Studio skeleton project], a skeleton project for making Fmod Studio soundbanks for scenarios.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Adding_custom_sounds_and_music&amp;diff=602</id>
		<title>Adding custom sounds and music</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Adding_custom_sounds_and_music&amp;diff=602"/>
				<updated>2017-07-31T08:39:41Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adding in custom sounds and music to your scenarios requires the usage of '''.sbnk''' files. While your computer likely doesn't recognize this file type, it is really a glorified text file and can be opened with any simple text editor, such as [https://notepad-plus-plus.org/ Notepad++].&lt;br /&gt;
&lt;br /&gt;
The sound files themselves must be presented in any of the following formats: '''.wav, .ogg, .mp3, .mod, .it, .s3d, .xm'''. Each file format has its own benefits: .ogg files are relatively small, at the cost of some audio quality, while .wav files will take up more space but with good amount of quality. In the end, it is recommended to use .ogg for music, and .wav for sounds. An audio editing program such as [http://www.audacityteam.org/ Audacity] can convert most common audio filetypes into most of these formats.&lt;br /&gt;
&lt;br /&gt;
You can also use Fmod Studio to build your soundbank, that way you're not limited to the features of text-file sbnk files. This also allows you to add dynamic music, and add other kinds of effects to your sounds. See further in this article for more information.&lt;br /&gt;
&lt;br /&gt;
== Exporting sound files to .ogg ==&lt;br /&gt;
If your sound file is not already in any of the supported file formats, follow these steps to do so. Using ''Audacity'', drag the sound file of your choice into the gray area. If successful, you will see the audio channel appear. You may now edit the sound file if you wish, otherwise, click the &amp;quot;File&amp;quot; tab and then the &amp;quot;Export&amp;quot; button. Select the file type you wish to use and export it to anywhere in your scenario folder, preferablly a dedicated folder called &amp;quot;sound&amp;quot;. Continue to do this for all the sound files you need.&lt;br /&gt;
&lt;br /&gt;
== Creating the .sbnk file ==&lt;br /&gt;
With your sound files ready, you must now create an .sbnk file at which you can configure some parameters. Simply open a text editor like Notepad++, then copy the [[SoundBank file|example code on this page]]. You can edit the following parameters:&lt;br /&gt;
*''name'': The name that the sound will appear in while using the editor.&lt;br /&gt;
*''volume'': The volume of the sound file. 1 is the standard volume, but you can only make it quieter.&lt;br /&gt;
*''is3d'': boolean. If set to true, the sound will only play in an area around the PlaySound WorldScript that it is assigned to. If false, it will play across the entire level.&lt;br /&gt;
*''looping'': boolean. If set to true, the sound file will keep playing everytime it finishes. If false, it will only play once.&lt;br /&gt;
If you wish to add in more sound files, simply copy and paste the &amp;lt;sound&amp;gt; parameters and edit them accordingly. You can use as many as needed.&lt;br /&gt;
When done, save the file as .sbnk.&lt;br /&gt;
&lt;br /&gt;
== Using the sound files in the editor ==&lt;br /&gt;
Open up a level, and navigate to the WorldScripts tab. Spawn in a PlaySound WorldScript. Select it, then in the &amp;quot;Sound&amp;quot; parameter, type in the name of your .sbnk file, or the name you gave the sound, and it will show up. You can do the same for the PlayMusic WorldScript.&lt;br /&gt;
&lt;br /&gt;
== Alternatively - use Fmod ==&lt;br /&gt;
The game uses Fmod internally to do all of its sounds. These kinds of sound effects start with the &amp;lt;code&amp;gt;event:/&amp;lt;/code&amp;gt; prefix instead of directly pointing to an .sbnk file. They are therefore found within a .bank file instead. It is possible to create your own Fmod Studio soundbanks for your scenarios.&lt;br /&gt;
&lt;br /&gt;
Download Fmod Studio 1.09.xx from [http://www.fmod.org/download/ this page]. Then, download [http://ssbd.a000ff.com/files/fmod_framework.zip this Fmod skeleton project] to get your started. The reason this skeleton project is needed is because your settings must match ours exactly, which is what this does. Once you export your Fmod soundbank file, you will be able to play each of the sounds or music you've added in Fmod Studio, from within your scenario.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Adding_custom_sounds_and_music&amp;diff=601</id>
		<title>Adding custom sounds and music</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Adding_custom_sounds_and_music&amp;diff=601"/>
				<updated>2017-07-31T08:36:20Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adding in custom sounds and music to your scenarios requires the usage of '''.sbnk''' files. While your computer likely doesn't recognize this file type, it is really a glorified text file and can be opened with any simple text editor, such as [https://notepad-plus-plus.org/ Notepad++]. &lt;br /&gt;
&lt;br /&gt;
The sound files themselves must be presented in any of the following formats: '''.wav, .ogg, .mp3, .mod, .it, .s3d, .xm'''. Each file format has its own benefits: .ogg files are relatively small, at the cost of some audio quality, while .wav files will take up more space but with good amount of quality. In the end, it is recommended to use .ogg for music, and .wav for sounds. An audio editing program such as [http://www.audacityteam.org/ Audacity] can convert most common audio filetypes into most of these formats.&lt;br /&gt;
&lt;br /&gt;
== Exporting sound files to .ogg ==&lt;br /&gt;
If your sound file is not already in any of the supported file formats, follow these steps to do so. Using ''Audacity'', drag the sound file of your choice into the gray area. If successful, you will see the audio channel appear. You may now edit the sound file if you wish, otherwise, click the &amp;quot;File&amp;quot; tab and then the &amp;quot;Export&amp;quot; button. Select the file type you wish to use and export it to anywhere in your scenario folder, preferablly a dedicated folder called &amp;quot;sound&amp;quot;. Continue to do this for all the sound files you need.&lt;br /&gt;
&lt;br /&gt;
== Creating the .sbnk file ==&lt;br /&gt;
With your sound files ready, you must now create an .sbnk file at which you can configure some parameters. Simply open a text editor like Notepad++, then copy the [[SoundBank file|example code on this page]]. You can edit the following parameters:&lt;br /&gt;
*''name'': The name that the sound will appear in while using the editor.&lt;br /&gt;
*''volume'': The volume of the sound file. 1 is the standard volume, but you can only make it quieter.&lt;br /&gt;
*''is3d'': boolean. If set to true, the sound will only play in an area around the PlaySound WorldScript that it is assigned to. If false, it will play across the entire level.&lt;br /&gt;
*''looping'': boolean. If set to true, the sound file will keep playing everytime it finishes. If false, it will only play once.&lt;br /&gt;
If you wish to add in more sound files, simply copy and paste the &amp;lt;sound&amp;gt; parameters and edit them accordingly. You can use as many as needed.&lt;br /&gt;
When done, save the file as .sbnk.&lt;br /&gt;
&lt;br /&gt;
== Using the sound files in the editor ==&lt;br /&gt;
Open up a level, and navigate to the WorldScripts tab. Spawn in a PlaySound WorldScript. Select it, then in the &amp;quot;Sound&amp;quot; parameter, type in the name of your .sbnk file, or the name you gave the sound, and it will show up. You can do the same for the PlayMusic WorldScript.&lt;br /&gt;
&lt;br /&gt;
== Alternatively - use Fmod ==&lt;br /&gt;
The game uses Fmod internally to do all of its sounds. These kinds of sound effects start with the &amp;lt;code&amp;gt;event:/&amp;lt;/code&amp;gt; prefix instead of directly pointing to an .sbnk file. They are therefore found within a .bank file instead.&lt;br /&gt;
&lt;br /&gt;
Download Fmod Studio 1.09.xx from [http://www.fmod.org/download/ this page]. Then, download [http://ssbd.a000ff.com/files/fmod_framework.zip this Fmod skeleton project] to get your started. The reason this skeleton project is needed is because your settings must match ours exactly, which is what this does. Once you export your Fmod soundbank file, you will be able to play each of the sounds or music you've added in Fmod Studio, from within your scenario.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=600</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=600"/>
				<updated>2017-07-27T11:15:09Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is an attempt at listing useful resources that the community has created that can be useful.&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/codecat/ssbd-payload Source code] for the [http://steamcommunity.com/sharedfiles/filedetails/?id=800695063 Payload] multiplayer scenario.&lt;br /&gt;
* [https://github.com/codecat/ssbd-prophunt Source code] for an unfinished Prophunt scenario.&lt;br /&gt;
&lt;br /&gt;
== Resource packs ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B90aki4w25SCRHZrN0hJekNIdzg Source code] for [http://steamcommunity.com/sharedfiles/filedetails/?id=923700789 Ammo Crate Resource Pack].&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Crackshell/NBogus NBogus], a C# library for generating levels.&lt;br /&gt;
* [https://github.com/Crackshell/hw2a000ff hw2a000ff], for converting Hammerwatch campaigns to Bogus Detour scenarios.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=599</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Resources&amp;diff=599"/>
				<updated>2017-07-27T11:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is an attempt at listing useful resources that the community has created that can be useful.&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/codecat/ssbd-payload Source code] for the [http://steamcommunity.com/sharedfiles/filedetails/?id=800695063 Payload] multiplayer scenario.&lt;br /&gt;
* [https://github.com/codecat/ssbd-prophunt Source code] for an unfinished Prophunt scenario.&lt;br /&gt;
&lt;br /&gt;
== Resource packs ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B90aki4w25SCRHZrN0hJekNIdzg Source code] for [http://steamcommunity.com/sharedfiles/filedetails/?id=923700789 Ammo Crate Resource Pack].&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/Crackshell/NBogus NBogus], a C# library for generating levels.&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Info.xml&amp;diff=598</id>
		<title>Info.xml</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Info.xml&amp;diff=598"/>
				<updated>2017-07-27T09:51:10Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: /* Includes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This XML file describes a scenario. All tags listed below must be within an &amp;lt;code&amp;gt;&amp;lt;info&amp;gt;&amp;lt;/info&amp;gt;&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
* '''Required''' &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; The name of the scenario that will show up in the scenario list.&lt;br /&gt;
* '''Required''' &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; The full description of the scenario that will show up when selecting the scenario in the scenario list.&lt;br /&gt;
* &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; A short tagline description of the scenario, which is shown above the description.&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
* &amp;lt;code&amp;gt;multiplayer&amp;lt;/code&amp;gt; Whether the scenario is multiplayer-only or not. Either &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;saving&amp;lt;/code&amp;gt; The save mode to use. Either &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; where there are no saves at all, &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; where the current level is saved, or &amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; which is like Hammerwatch, where you can go back to older levels without their progress getting reset. (Default: &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;players&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;min=&amp;quot;X&amp;quot; max=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; The amount of players allowed to play in multiplayer. (Default: unlimited)&lt;br /&gt;
&lt;br /&gt;
=== Modifiers ===&lt;br /&gt;
[[File:Modifiers.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;modifiers&amp;lt;/code&amp;gt; A collection of switches for the scenario.&lt;br /&gt;
** &amp;lt;code&amp;gt;modifier&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;forced=&amp;quot;X&amp;quot; id=&amp;quot;X&amp;quot; name=&amp;quot;X&amp;quot; tooltip=&amp;quot;X&amp;quot; locked-by=&amp;quot;X&amp;quot; default-on=&amp;quot;X&amp;quot; radio=&amp;quot;X&amp;quot; multiplayer=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; A modifier.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute is the modifier ID. When the switch is turned on, in content, a preprocessor define called &amp;lt;code&amp;gt;MOD_ID&amp;lt;/code&amp;gt; is defined. For more information, see [[Preprocessor]].&lt;br /&gt;
*** The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is the visible display name for the switch. It is displayed in the switches menu.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;tooltip&amp;lt;/code&amp;gt; attribute defines the text for an additional tooltip that should show when hovering over the switch in the switches menu. (Default: none)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;locked-by&amp;lt;/code&amp;gt; attribute defines which switches disable this one, separate by commas. (Default: none)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;default-on&amp;lt;/code&amp;gt; attribute sets this switch to be on by default. This value is either &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;radio&amp;lt;/code&amp;gt; attribute sets whether this switch is part of a group. Setting this value together with multiple switches turns them into a &amp;quot;radiobox&amp;quot; instead of a checkbox, where only 1 switch of a group can be selected at a time. (Default: none)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;forced&amp;lt;/code&amp;gt; attribute defines whether this switch is always defined, and isn't listed in the switches menu. This value is either &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If you set this to true, the only other attribute you need to set is &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;multiplayer&amp;lt;/code&amp;gt; attribute defines whether this switch is only available in multiplayer. This value is either &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;separator&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;multiplayer=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; A separator line for the switch menu. The &amp;lt;code&amp;gt;multiplayer&amp;lt;/code&amp;gt; attribute is the same as for the &amp;lt;code&amp;gt;modifier&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
** &amp;lt;code&amp;gt;header&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text=&amp;quot;X&amp;quot; tooltip=&amp;quot;X&amp;quot; multiplayer=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; A header text for the switch menu. The &amp;lt;code&amp;gt;multiplayer&amp;lt;/code&amp;gt; attribute is the same as for the &amp;lt;code&amp;gt;modifier&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
=== Levels ===&lt;br /&gt;
* &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; A collection of levels that the player will be able to start from.&lt;br /&gt;
** &amp;lt;code&amp;gt;level&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;name=&amp;quot;X&amp;quot; lvl=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; A level that the player will be able to start from. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is the name displayed in the list of levels, and the &amp;lt;code&amp;gt;lvl&amp;lt;/code&amp;gt; attribute is the filename to the level.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
* &amp;lt;code&amp;gt;classmaps&amp;lt;/code&amp;gt; A collection of script classes to rewrite to other class names. See [[Rewriting Classes]] for detailed information.&lt;br /&gt;
** &amp;lt;code&amp;gt;behavior&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;from=&amp;quot;X&amp;quot; to=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; Overwrites a unit's behavior class.&lt;br /&gt;
** &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;from=&amp;quot;X&amp;quot; to=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; Overwrites a class created in-script with &amp;lt;code&amp;gt;InstantiateClass()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;gamemode&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;from=&amp;quot;X&amp;quot; to=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; Overwrites a level's gamemode class.&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
* &amp;lt;code&amp;gt;includes&amp;lt;/code&amp;gt; A collection of scenarios that this scenario includes.&lt;br /&gt;
** &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;name=&amp;quot;X&amp;quot; modifiers=&amp;quot;X&amp;quot; levels=&amp;quot;X&amp;quot; classmaps=&amp;quot;X&amp;quot; final=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; An included scenario.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute defines the name of the scenario to include. Required.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;modifiers&amp;lt;/code&amp;gt; attribute defines whether to include any modifiers from this scenario. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;levels&amp;lt;/code&amp;gt; attribute defines whether to include any start levels from this scenario. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;classmaps&amp;lt;/code&amp;gt; attribute defines whether to include any class map rewrites from this scenario. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt; attribute defines whether inclusion shouldn't go any deeper than the one you're including. This means that any included scenarios in the scenario you're including will not be included if this is true. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;disable-include&amp;lt;/code&amp;gt; Set this to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; to disallow this scenario from getting included by other scenarios. (Default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the info.xml file for the Payload gamemode on the Workshop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;info&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Payload&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;Bring the payload to the other side.&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;multiplayer&amp;gt;true&amp;lt;/multiplayer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;players min=&amp;quot;2&amp;quot; max=&amp;quot;12&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;start&amp;gt;&lt;br /&gt;
    &amp;lt;level name=&amp;quot;Over the Mountain&amp;quot; lvl=&amp;quot;levels/payload01.lvl&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;level name=&amp;quot;That belongs in a Museum&amp;quot; lvl=&amp;quot;levels/payload02.lvl&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/start&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;modifiers&amp;gt;&lt;br /&gt;
    &amp;lt;modifier forced=&amp;quot;true&amp;quot; id=&amp;quot;VERSUS&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;modifier forced=&amp;quot;true&amp;quot; id=&amp;quot;PICKUP_RESPAWN&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/modifiers&amp;gt;&lt;br /&gt;
&amp;lt;/info&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=PlatformStat_WorldScript&amp;diff=596</id>
		<title>PlatformStat WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=PlatformStat_WorldScript&amp;diff=596"/>
				<updated>2017-07-26T14:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 195, 16)|224|352}}&lt;br /&gt;
&lt;br /&gt;
Sets a platform statistic. Does nothing in custom scenarios. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;ActionType&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;None&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;None&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;UnlockAchievement&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;SetStatInt&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;SetStatFloat&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;IncreaseStatInt&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;IncreaseStatFloat&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DecreaseStatInt&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DecreaseStatFloat&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;ValueInt&amp;lt;/code&amp;gt;&lt;br /&gt;
* Float &amp;lt;code&amp;gt;ValueFloat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;PlayerTarget&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SetUnitLayer_WorldScript&amp;diff=597</id>
		<title>SetUnitLayer WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SetUnitLayer_WorldScript&amp;diff=597"/>
				<updated>2017-07-26T14:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(205, 102, 218)|288|352}}&lt;br /&gt;
&lt;br /&gt;
Sets the layer of the targeted units. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Layer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ProjectileShooter_WorldScript&amp;diff=594</id>
		<title>ProjectileShooter WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ProjectileShooter_WorldScript&amp;diff=594"/>
				<updated>2017-07-26T14:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 0, 0)|416|160}}&lt;br /&gt;
&lt;br /&gt;
Spawns and shoots a projectile into a given direction. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;Projectile&amp;lt;/code&amp;gt;, unit producer&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Direction&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Spread&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=AddScreenShake_WorldScript&amp;diff=595</id>
		<title>AddScreenShake WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=AddScreenShake_WorldScript&amp;diff=595"/>
				<updated>2017-07-26T14:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(147, 77, 32)|32|32}}&lt;br /&gt;
&lt;br /&gt;
Makes the screen shake. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Time&amp;lt;/code&amp;gt;, default: 250&lt;br /&gt;
* Float &amp;lt;code&amp;gt;Amount&amp;lt;/code&amp;gt;, default: 5&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Range&amp;lt;/code&amp;gt;, default: -1&lt;br /&gt;
* Float &amp;lt;code&amp;gt;DurationFrom&amp;lt;/code&amp;gt;, default: 1&lt;br /&gt;
* Float &amp;lt;code&amp;gt;DurationTo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=TeamLevelStart_WorldScript&amp;diff=589</id>
		<title>TeamLevelStart WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=TeamLevelStart_WorldScript&amp;diff=589"/>
				<updated>2017-07-26T14:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(8, 147, 8)|96|32}}&lt;br /&gt;
&lt;br /&gt;
Same as &amp;lt;code&amp;gt;[[LevelStart WorldScript|LevelStart]]&amp;lt;/code&amp;gt;, but with a conditional check for which team to use in team versus modes. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;TeamIndex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ChangeVariables_WorldScript&amp;diff=590</id>
		<title>ChangeVariables WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ChangeVariables_WorldScript&amp;diff=590"/>
				<updated>2017-07-26T14:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(70, 128, 70)|32|384}}&lt;br /&gt;
&lt;br /&gt;
Changes the value of a &amp;lt;code&amp;gt;[[Variable WorldScript|Variable]]&amp;lt;/code&amp;gt;. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;Function&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Set&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Subtract&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Variables&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=UseTrigger_WorldScript&amp;diff=591</id>
		<title>UseTrigger WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=UseTrigger_WorldScript&amp;diff=591"/>
				<updated>2017-07-26T14:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(164, 36, 3)|96|96}}&lt;br /&gt;
&lt;br /&gt;
Triggered when the player presses the Use button in any of the targeted areas. This will automatically show a use icon for the player in these areas. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Areas&amp;lt;/code&amp;gt;, accepts colliders&lt;br /&gt;
&lt;br /&gt;
== Unit sources ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Variable_WorldScript&amp;diff=592</id>
		<title>Variable WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Variable_WorldScript&amp;diff=592"/>
				<updated>2017-07-26T14:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(70, 128, 70)|0|384}}&lt;br /&gt;
&lt;br /&gt;
Holds an integer value. Can be changed with &amp;lt;code&amp;gt;[[ChangeVariables WorldScript|ChangeVariables]]&amp;lt;/code&amp;gt; and checked for branched executions with &amp;lt;code&amp;gt;[[CheckVariables WorldScript|CheckVariables]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=TimerTrigger_WorldScript&amp;diff=593</id>
		<title>TimerTrigger WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=TimerTrigger_WorldScript&amp;diff=593"/>
				<updated>2017-07-26T14:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(164, 36, 3)|96|0}}&lt;br /&gt;
&lt;br /&gt;
Triggered automatically every &amp;lt;code&amp;gt;Frequency&amp;lt;/code&amp;gt; milliseconds. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Frequency&amp;lt;/code&amp;gt;, min: 1, max: 1000000, default: 1000&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=TeamVersusWin_WorldScript&amp;diff=584</id>
		<title>TeamVersusWin WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=TeamVersusWin_WorldScript&amp;diff=584"/>
				<updated>2017-07-26T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(218, 205, 102)|192|320}}&lt;br /&gt;
&lt;br /&gt;
This is a worldscript. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;TeamIndex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=LevelStart_WorldScript&amp;diff=585</id>
		<title>LevelStart WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=LevelStart_WorldScript&amp;diff=585"/>
				<updated>2017-07-26T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(32, 255, 32)|96|32}}&lt;br /&gt;
&lt;br /&gt;
Start position for players to spawn at. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;StartID&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ShowConceptArt_WorldScript&amp;diff=586</id>
		<title>ShowConceptArt WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ShowConceptArt_WorldScript&amp;diff=586"/>
				<updated>2017-07-26T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(83, 182, 255)|128|96}}&lt;br /&gt;
&lt;br /&gt;
Shows a concept screen and executes &amp;lt;code&amp;gt;OnClosed&amp;lt;/code&amp;gt; when the player closes it. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;gui/concepts/empty.gui&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;DisplayText&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;ButtonText&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;.levelend.ok&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnClosed&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=PlayMusic_WorldScript&amp;diff=587</id>
		<title>PlayMusic WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=PlayMusic_WorldScript&amp;diff=587"/>
				<updated>2017-07-26T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(125, 23, 94)|352|96}}&lt;br /&gt;
&lt;br /&gt;
Starts playing the given music. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;Music&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=RemoveNetricsaMessage_WorldScript&amp;diff=588</id>
		<title>RemoveNetricsaMessage WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=RemoveNetricsaMessage_WorldScript&amp;diff=588"/>
				<updated>2017-07-26T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(83, 0, 0)|32|288}}&lt;br /&gt;
&lt;br /&gt;
Removes a Netricsa message from all players. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Filename&amp;lt;/code&amp;gt;&lt;br /&gt;
* Boolean &amp;lt;code&amp;gt;OnlyOne&amp;lt;/code&amp;gt;, default: false&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=EndOfCampaign_WorldScript&amp;diff=579</id>
		<title>EndOfCampaign WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=EndOfCampaign_WorldScript&amp;diff=579"/>
				<updated>2017-07-26T14:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 32, 32)|192|288}}&lt;br /&gt;
&lt;br /&gt;
Signifies the end of the campaign, and presents the player with a concept screen and a button to exit to the main menu. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Background&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;gui/concepts/empty.gui&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=LevelExit_WorldScript&amp;diff=580</id>
		<title>LevelExit WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=LevelExit_WorldScript&amp;diff=580"/>
				<updated>2017-07-26T14:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(32, 255, 32)|192|288}}&lt;br /&gt;
&lt;br /&gt;
Ends the level and gets the player ready for the next level. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Level&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;levels/.lvl&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;StartID&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;Background&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;gui/concepts/empty.gui&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SetLight_WorldScript&amp;diff=581</id>
		<title>SetLight WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SetLight_WorldScript&amp;diff=581"/>
				<updated>2017-07-26T14:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(218, 205, 102)|160|288}}&lt;br /&gt;
&lt;br /&gt;
Shows or hides the targeted lights. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;State&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Hide&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Show&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Toggle&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;, accepts lights, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ToggleImmortality_WorldScript&amp;diff=582</id>
		<title>ToggleImmortality WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ToggleImmortality_WorldScript&amp;diff=582"/>
				<updated>2017-07-26T14:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(218, 205, 102)|64|64}}&lt;br /&gt;
&lt;br /&gt;
Enables or disables immortality on the targeted units. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;State&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Disable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Enable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Disable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Toggle&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ShowFloatingText_WorldScript&amp;diff=583</id>
		<title>ShowFloatingText WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ShowFloatingText_WorldScript&amp;diff=583"/>
				<updated>2017-07-26T14:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(205, 102, 218)|192|320}}&lt;br /&gt;
&lt;br /&gt;
Spawns a floating text at the location of this worldscript. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Text&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;FloatingType&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Pickup&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;PlayerHurt&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;PlayerHealed&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;PlayerArmor&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;PlayerAmmo&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;EnemyHurt&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;EnemyHealed&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;EnemyImmortal&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Pickup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=CheckActorHealth_WorldScript&amp;diff=577</id>
		<title>CheckActorHealth WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=CheckActorHealth_WorldScript&amp;diff=577"/>
				<updated>2017-07-26T14:03:42Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(125, 70, 70)|454|34}}&lt;br /&gt;
&lt;br /&gt;
Checks the health of an actor and triggers &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt; conditionally. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;Function&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Less&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Greater&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Less&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;GreaterOrEqual&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;LessOrEqual&amp;lt;/code&amp;gt;&lt;br /&gt;
* Float &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Actors&amp;lt;/code&amp;gt;, maximum 1 unit, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SetCollider_WorldScript&amp;diff=578</id>
		<title>SetCollider WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SetCollider_WorldScript&amp;diff=578"/>
				<updated>2017-07-26T14:03:42Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(218, 205, 102)|32|480}}&lt;br /&gt;
&lt;br /&gt;
Enables or disables the targeted colliders. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;State&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Disable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Disable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Enable&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Toggle&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;, accepts colliders, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=MenuAnchorPoint_WorldScript&amp;diff=574</id>
		<title>MenuAnchorPoint WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=MenuAnchorPoint_WorldScript&amp;diff=574"/>
				<updated>2017-07-26T14:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(4, 38, 92)|352|0}}&lt;br /&gt;
&lt;br /&gt;
Used for the main menu to locate backdrop positions.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;ScenarioID&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;LevelIndex&amp;lt;/code&amp;gt;&lt;br /&gt;
* Boolean &amp;lt;code&amp;gt;GraphicsOptions&amp;lt;/code&amp;gt;, default: false&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=Door_WorldScript&amp;diff=575</id>
		<title>Door WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=Door_WorldScript&amp;diff=575"/>
				<updated>2017-07-26T14:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(147, 32, 147)|128|32}}&lt;br /&gt;
&lt;br /&gt;
Mash up script made to make door openings simpler. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;UseAreas&amp;lt;/code&amp;gt;, accepts colliders&lt;br /&gt;
* String &amp;lt;code&amp;gt;KeyFlag&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;DoorUnits&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;OpenScene&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;open&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;SoundDenied&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;SoundGranted&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;SoundOpen&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;AnnounceDelay&amp;lt;/code&amp;gt;, default: 250&lt;br /&gt;
* String &amp;lt;code&amp;gt;AnnounceFont&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;&amp;quot;gui/fonts/font_hw8.fnt&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;AnnounceSound&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=CheckFlag_WorldScript&amp;diff=576</id>
		<title>CheckFlag WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=CheckFlag_WorldScript&amp;diff=576"/>
				<updated>2017-07-26T14:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(110, 140, 186)|128|32}}&lt;br /&gt;
&lt;br /&gt;
Checks whether a flag is set. If it's set, &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt; will be triggered, otherwise &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt;. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Flag&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=RandomCount_WorldScript&amp;diff=571</id>
		<title>RandomCount WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=RandomCount_WorldScript&amp;diff=571"/>
				<updated>2017-07-26T14:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(8, 8, 255)|224|288}}&lt;br /&gt;
&lt;br /&gt;
Executes a number of scripts from the targeted scripts, where the scripts are picked at random. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;ToExecute&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;NumToExecute&amp;lt;/code&amp;gt;, min: 1, default: -1&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=CheckVariables_WorldScript&amp;diff=572</id>
		<title>CheckVariables WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=CheckVariables_WorldScript&amp;diff=572"/>
				<updated>2017-07-26T14:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(70, 128, 70)|64|384}}&lt;br /&gt;
&lt;br /&gt;
Performs a comparison with the value of a &amp;lt;code&amp;gt;[[Variable WorldScript|Variable]]&amp;lt;/code&amp;gt;, and executes &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt; conditionally. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;Function&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;Greater&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Equal&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Greater&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Less&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;GreaterOrEqual&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;LessOrEqual&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;NotEqual&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Value&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Variable&amp;lt;/code&amp;gt;, maximum 1 unit, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnTrue&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnFalse&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=AttachNewUnit_WorldScript&amp;diff=573</id>
		<title>AttachNewUnit WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=AttachNewUnit_WorldScript&amp;diff=573"/>
				<updated>2017-07-26T14:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(125, 23, 166)|416|0}}&lt;br /&gt;
&lt;br /&gt;
Attaches a scene from a unit type to the targeted unit. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;UnitType&amp;lt;/code&amp;gt;, unit producer&lt;br /&gt;
* String &amp;lt;code&amp;gt;SceneName&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;AttachTo&amp;lt;/code&amp;gt;, maximum 1 unit&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;OffsetX&amp;lt;/code&amp;gt;&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;OffsetY&amp;lt;/code&amp;gt;&lt;br /&gt;
* Boolean &amp;lt;code&amp;gt;DestroyOnDestroy&amp;lt;/code&amp;gt;, default: true&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Layer&amp;lt;/code&amp;gt;, default: -1&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Duration&amp;lt;/code&amp;gt;, default: -1&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=GiveExperience_WorldScript&amp;diff=569</id>
		<title>GiveExperience WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=GiveExperience_WorldScript&amp;diff=569"/>
				<updated>2017-07-26T14:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(182, 116, 9)|453|2}}&lt;br /&gt;
&lt;br /&gt;
Gives experience to all players. If &amp;lt;code&amp;gt;Amount&amp;lt;/code&amp;gt; is 0, it will use &amp;lt;code&amp;gt;Scalar&amp;lt;/code&amp;gt;, which should be between 0 and 1. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Amount&amp;lt;/code&amp;gt;, default: 10&lt;br /&gt;
* Float &amp;lt;code&amp;gt;Scalar&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=BossBarCheckpoint_WorldScript&amp;diff=570</id>
		<title>BossBarCheckpoint WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=BossBarCheckpoint_WorldScript&amp;diff=570"/>
				<updated>2017-07-26T14:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 0, 0)|448|96}}&lt;br /&gt;
&lt;br /&gt;
Sets the boss bar's checkpoint, which changes the bar's sprite for blocks beyond the checkpoint. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Actors&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Boolean &amp;lt;code&amp;gt;OverActor&amp;lt;/code&amp;gt;, default: false&lt;br /&gt;
* Float &amp;lt;code&amp;gt;Factor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=ScratchTest_WorldScript&amp;diff=564</id>
		<title>ScratchTest WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=ScratchTest_WorldScript&amp;diff=564"/>
				<updated>2017-07-26T14:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(147, 77, 32)|32|32}}&lt;br /&gt;
&lt;br /&gt;
This is a worldscript that does nothing. It's used by one of the developers to test things. There's no reason for this page or this script to even exist. Do not use this script. Using this script will cause undefined behavior. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SpawnUnitAsLoot_WorldScript&amp;diff=565</id>
		<title>SpawnUnitAsLoot WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SpawnUnitAsLoot_WorldScript&amp;diff=565"/>
				<updated>2017-07-26T14:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(64, 58, 102)|256|0}}&lt;br /&gt;
&lt;br /&gt;
Spawns a unit on the position of another unit. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;UnitType&amp;lt;/code&amp;gt;, unit producer&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SpawnOn&amp;lt;/code&amp;gt;&lt;br /&gt;
* Float &amp;lt;code&amp;gt;JitterX&amp;lt;/code&amp;gt;&lt;br /&gt;
* Float &amp;lt;code&amp;gt;JitterY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unit sources ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;LastSpawned&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;AllSpawned&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SurvivalWave_WorldScript&amp;diff=566</id>
		<title>SurvivalWave WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SurvivalWave_WorldScript&amp;diff=566"/>
				<updated>2017-07-26T14:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 0, 255)|32|192}}&lt;br /&gt;
&lt;br /&gt;
Defines a wave in survival. See [[Creating a Survival level]] for more information. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnFinished&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;SubWaveDelay&amp;lt;/code&amp;gt;, default: 8000&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave0&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave1&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave2&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave3&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave4&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave5&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave6&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave7&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave8&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave9&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave10&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave11&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave12&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave13&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave14&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;SubWave15&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SecretFound_WorldScript.txt&amp;diff=567</id>
		<title>SecretFound WorldScript.txt</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SecretFound_WorldScript.txt&amp;diff=567"/>
				<updated>2017-07-26T14:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 255, 33)|352|32}}&lt;br /&gt;
&lt;br /&gt;
Tells the statistics that a secret has been found. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=DamageUnits_WorldScript&amp;diff=568</id>
		<title>DamageUnits WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=DamageUnits_WorldScript&amp;diff=568"/>
				<updated>2017-07-26T14:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 0, 0)|0|96}}&lt;br /&gt;
&lt;br /&gt;
Inflicts damage to the targeted units. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Integer &amp;lt;code&amp;gt;Damage&amp;lt;/code&amp;gt;, max: 1000000, default: 1000&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;DamageType&amp;lt;/code&amp;gt; as flags, defaults: &amp;lt;code&amp;gt;TRAP&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;TRAP&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;PIERCING&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;BLUNT&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;EXPLOSION&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;BIO&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;FIRE&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ENERGY&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;FROST&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;Buff&amp;lt;/code&amp;gt;&lt;br /&gt;
* Boolean &amp;lt;code&amp;gt;CanKill&amp;lt;/code&amp;gt;, default: true&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=SurvivalEnemySpawnPoint_WorldScript&amp;diff=560</id>
		<title>SurvivalEnemySpawnPoint WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=SurvivalEnemySpawnPoint_WorldScript&amp;diff=560"/>
				<updated>2017-07-26T14:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(0, 140, 77)|416|128}}&lt;br /&gt;
&lt;br /&gt;
Spawnpoint for enemies in survival. See [[Creating a Survival level]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* String &amp;lt;code&amp;gt;Filter&amp;lt;/code&amp;gt;&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;SpawnEffect&amp;lt;/code&amp;gt;, effect&lt;br /&gt;
* Resource &amp;lt;code&amp;gt;SpawnSound&amp;lt;/code&amp;gt;, sound&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=CheckUnitSlot_WorldScript&amp;diff=561</id>
		<title>CheckUnitSlot WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=CheckUnitSlot_WorldScript&amp;diff=561"/>
				<updated>2017-07-26T14:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(255, 45, 114)|452|63}}&lt;br /&gt;
&lt;br /&gt;
Checks if the targeted units are of the given slot and executes &amp;lt;code&amp;gt;OnEqual&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;OnUnequal&amp;lt;/code&amp;gt; conditionally. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;&lt;br /&gt;
* String &amp;lt;code&amp;gt;Slot&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;Type&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;And&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;And&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;Or&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnEqual&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;OnUnequal&amp;lt;/code&amp;gt;, validates&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	<entry>
		<id>https://ssbd.a000ff.com/wiki/index.php?title=JamTrigger_WorldScript&amp;diff=562</id>
		<title>JamTrigger WorldScript</title>
		<link rel="alternate" type="text/html" href="https://ssbd.a000ff.com/wiki/index.php?title=JamTrigger_WorldScript&amp;diff=562"/>
				<updated>2017-07-26T14:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Scratch: Text replacement - &amp;quot; This script can be enabled or disabled.&amp;quot; to &amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WorldscriptIcon|rgb(164, 36, 3)|32|32}}&lt;br /&gt;
&lt;br /&gt;
Triggered when the targeted jammable units are jammed or unjammed. This script can be executed by other scripts.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
* Enumeration &amp;lt;code&amp;gt;TriggerType&amp;lt;/code&amp;gt;, default: &amp;lt;code&amp;gt;OnUnjam&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;OnJam&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;OnUnjam&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;OnAnyJam&amp;lt;/code&amp;gt;&lt;br /&gt;
* Unit feed &amp;lt;code&amp;gt;Units&amp;lt;/code&amp;gt;, validates, responds to changes&lt;br /&gt;
&lt;br /&gt;
[[Category:WorldScripts]]&lt;/div&gt;</summary>
		<author><name>Scratch</name></author>	</entry>

	</feed>