Custom Campaigns

It is entirely possible to make your own version of Overthrow for whatever map you want (vanilla or modded) and using any assets, weapons, vehicles you want. This article will guide you in how to do that.

And yes, we give you permission to upload your created campaigns to the Steam Workshop. We recommend and support it. Just make "Overthrow" a required dependancy and if possible please use the naming convention of "Overthrow: <Map Name>". If you are creating a different version of a vanilla overthrow map then add something in brackets to discern it. (for example "Overthrow: Tanoa (RHS edition)". Please just release it as a mission (or mod containing missions). We do NOT give permission to release an edited version of Overthrow itself, if you require changes to make your mission work please get in contact with us via the #dev-support channel on Discord or submit a Pull Request to Github.

The base Overthrow mod will always include campaigns for every vanilla + DLC map (but not community DLC), however you are free to make your own flavoured versions of them if you want, using whatever assets from whatever mods you want (dont forget to add them as dependancies if you upload to steam workshop)

Any updates to the main mod will be backwards-compatible with your custom mission. Any vars that are added will be defined as a "base var" and not required by missions, but can be overridden by you later.

## Contents

* 1 The Basics
	+ 1.1 Which Map?
	+ 1.2 Getting started
	+ 1.3 Getting help
	+ 1.4 Mod or Mission?
* 2 Players
* 3 Markers
	+ 3.1 Regions
	+ 3.2 Checkpoints
	+ 3.3 Ports
* 4 Vars
	+ 4.1 initVar.sqf
	+ 4.2 data/objectives.sqf
	+ 4.3 data/airports.sqf
	+ 4.4 data/comms.sqf
	+ 4.5 data/towns.sqf
	+ 4.6 data/economy.sqf
	+ 4.7 data/names.sqf
	+ 4.8 description.ext
	+ 4.9 initServer.sqf and initPlayerLocal.sqf
* 5 Versioning
* 6 Testing
* 7 Publishing

## The Basics

### Which Map?

Most maps are fine. However the following is recommended:

* At least one airfield (for NATO HQ + scrambling jets)
* Plenty of enterable houses (for player homes)
* Plenty of shops (however you can add your own)
* Plenty of military bases (however you can add your own + buildings/towers/etc to the mission file)

### Getting started

Overthrow is designed to be a platform, much like "ALiVE", however requires a little bit of basic SQF knowledge unlike ALiVE (for now). All the logic is in compiled functions and the mission just needs to define a bunch of markers + variables in the mission and then call Overthrow functions in initPlayerLocal.sqf and initServer.sqf. The easiest way to get started is:

1. Unpack the Overthrow PBO somewhere on your hard drive
2. Copy the *campaign/missions/OverthrowMpLivonia.Enoch* folder into your *My Documents/Arma 3/mpmissions* folder
3. Rename the folder to *OverthrowMp<mapname>.<mapname>* (this name must be unique, cannot be the same as an existing Overthrow campaign, add whatever is required to make it unique ie OverthrowMpTanoaRHS.Tanoa)
4. Open Arma 3 (with Overthrow/ACE/CBA mods loaded) and go into the editor
5. Load your renamed folder in the editor
6. Move/create markers and edit the sqf files as required (see below for more info)
7. Click "play in multiplayer" to test
8. You do not need to restart Arma when SQF files are changed, just exit to editor and click Play again

**Pro-tip**: We recommend copying the Livonia mission because that is the best current example of a "third-party" campaign that doesnt require any config changes. It also includes more commenting in places to help you generate your campaign.

### Getting help

Feel free to ask us any questions in #support on discord. We want people to create their own campaigns and will gladly help you. It's a good idea to put your campaign on Github so we can easily look at your code and so we (or anyone) can generate "Pull Requests" to offer change suggestions. If you create and release your own campaign we will gladly give you a discord role that gives you access to the private Dev channel as well so you can be notified of mod changes and be involved in design discussions.

### Mod or Mission?

You can make your campaign either a mod OR a mission. Creating a mod will give you some further options, including being able to have multiple missions/campaigns, defining your own Overthrow "Jobs" or overriding Arma 3/ACE configs. Some experience in creating Arma 3 mods might be required.

## Players

In the editor you will see the 32 players and their groups, select them and drag them to somewhere out of the way where they will be safe as people load in. A small island is good, or somewhere "off-map" if its landlocked. If you want more (or less) player slots then just go ahead and copy them, but not "bigboss" (the host). Currently each player works best in their own group (for recruiting/squads) but feel free to experiment with that if you like. High Command module is not required (they are generated for each player)

## Markers

The mission requires a few markers with special names to work. You add these in the Arma 3 editor.

### Regions

These are called "island\_1", "island\_2" etc. and affect how NATO responds to QRFs as well as fast-travel. NATO will not send ground vehicles between regions unless those regions are defined as "connected" in the vars (see below). You can also not fast-travel between regions unless connected or travelling to an airfield. Use any type of "area" marker (rectangle, circle). Set "opacity" to 0 so they are not shown on the map. If there are no "islands" on your map or you don't want any regions, you still need to define "island\_1" and make it cover the whole map.

### Checkpoints

These are any markers named "control\_1", "control\_2" etc. NATO checkpoints will spawn here. They must be point markers (ie triangle, not an area/box) and must be on or close to a road. Set the "opacity" to 0 so they don't show on the map.

### Ports

Not required, however players may complain if there isnt a port and you won't be able to import/export. Landlocked maps can still have a "port" (just a building) where import/export occurs. Just place any kind of point marker and call it "port\_1", "port\_2" etc. You can have as many as you want. The closest town to the port will need to be controlled by the resistance to unlock illegal export/import. We recommend adding any towns with ports to the "OT\_NATO\_priority" list in objectives.sqf below. Set marker opacity to 100% so this marker is shown and players know where to go.

## Vars

In the mission folder you will see a bunch of sqf files, these are how you define what assets NATO use, where towns/bases/businesses are and more.

### initVar.sqf

The main file, in here you can define what faction "NATO" is (can be any BLUFOR faction you want, this requirement may change later) as well as what vehicles spawn at bases, are used in QRFs etc. These should be pretty self-explanatory and there are comments explaining some of them, Feel free to ask us what they do in #support on discord as well.

**Important** You need a unique value for "OT\_saveName" to ensure that persistent saves are not overwriting other mission saves

### data/objectives.sqf

The location, name and priority of each NATO base. Best way to get a location is to find bases and right-click the ground in editor. The flag will be placed at that exact location and vehicles/static weapons will spawn around it, so pick somewhere with a bit of room. HMGs will garrison any nearby towers, posts and HQs (including those added by you). If the base has a helipad nearby then helicopters will also spawn there.

Format is: [pos, name, priority]

(Higher priority = more garrisoned troops, larger QRF, more chance of counter-attack)

This file also contains:

* **OT\_NATO\_HQ**: The name of the base that is NATOs "HQ". This base should be an airfield and will get a much stronger garrison.
* **OT\_NATO\_priority**: A list of bases, radio towers and towns that NATO considers "high priority". Priority bases will get a larger "restricted area", more garrison etc.
* **OT\_NATO\_Navy\_HQ**: Where boats can spawn, can be blank for no boats
* **OT\_NATO\_JetPos**: Where scrambling jets should spawn (on a taxiway at NATO HQ)
* **OT\_NATO\_JetDir**: Direction for jets on spawn (ideally facing the way they will taxi)
* **OT\_NATO\_JetLandPos**: A position where jets will go to before landing, should be a fair distance out and in the direction of the runway

Air vehicles (jets, helicopters) that spawn at airfields (and HQ) will look for a hangar to spawn in front of (you can define hangar building types in initVar.sqf). If there are no hangars you can add one, or define the following for the HQ:

* **OT\_NATO\_HQ\_garrisonPos**: Position where to start spawning vehicles
* **OT\_NATO\_HQ\_garrisonDir**: Direction to spawn vehicles in

(you can see an example of this in the default Altis mission)

**Pro-tip**: If you want to test your jet scrambling positions, just run **[player, getpos player] spawn OT\_fnc\_NATOScrambleJet** (you can make sure it taxis/takes off/lands correctly using Zeus, dont worry he wont shoot you if you're not wanted, they will land after 10 mins)

### data/airports.sqf

The location, name and priority of each NATO airfield.

Format is: [pos, name, priority]

(Higher priority = more garrisoned troops, larger QRF, more chance of counter-attack)

### data/comms.sqf

The location and name of each radio tower.

Format is: [pos, name]

### data/towns.sqf

The location and name of each town. Population of towns is detected at game start according to how many houses are in the area. Population can be tweaked using the **OT\_populationMultiplier** variable in initVar.sqf if they are too high/low

Format is: [pos, name]

This file also includes:

* **OT\_spawnTowns**: A list of towns where players will spawn (one is chosen randomly at start, if that gets full it changes to the nearest town)
* **OT\_capitals**: List of towns considered the "capital" of each region (just makes the stability circle larger atm)
* **OT\_sprawling**: List of towns that require a larger search radius for houses when detecting population (add them in here if the population seems a bit low)

### data/economy.sqf

The location, name and input/output of each business on the map.

Format is: [pos, name, input, output]

* If there is no input, that business will just generate the output.
* If there is no output, that business will generate money according to the input.
* If there is no output, or input, that business will just generate money.

This file also contains the Factory position (there can be only one factory atm), where vehicles from the factory should spawn, what direction they should be at spawn, and which "regions" are connected (see above).

**Pro-tip:** Input and output can be any inventory item (including weapons, but not vehicles). Just provide any valid arma 3 class name from CfgWeapons. If you want a specific resource added for businesses to generate, ask us on Discord and we can add one for you, or you can make your campaign a "mod" and add it yourself.

### data/names.sqf

A list of first names and last names that is used to generate civilian names.

### description.ext

Here is where you put your mission name, description, and a picture. Note that required elements are included at the top from the Overthrow mod, so don't remove the #include line unless you know what you're doing

### initServer.sqf and initPlayerLocal.sqf

Best not to touch these, unless you know what you're doing and wish to add some further initialization code to server/player. If you need to alter the map (ie removing/adding things) using code, do it BEFORE the OT\_fnc\_initOverthrow in initServer.sqf

## Versioning

In initVar.sqf are 3 variables to allow you to update the mission without losing save compatability. When a number increases, Overthrow will initialize that section again on next load and save the new version number in the persistent save so it won't happen again until you change the number again.

* **OT\_economyVersion**: Add to this number if any businesses are added/removed from economy.sqf
* **OT\_NATOversion**: Add to this number if any bases/airfields are added/removed in objectives.sqf and airports.sqf, or if garrison vehicles change
* **OT\_CRIMversion**: Not used atm but may be in future

To start with, set all of these to 1 (not 0)

## Testing

You can test in the editor, running **OT\_adminMode=true** in console will give you some special powers (such as free fast travel to anywhere) so you can move around and test everything works/things spawn correctly etc. It will also log more things to the .rpt file.

Check your .rpt log file often to make sure theres no errors due to missing/incorrect vars. If your mission doesnt start (stuck on loading scene) then there's likely an error in rpt.

## Publishing

You can publish your mission (or mod) to Steam Workshop using the Arma 3 Tools (Change to tools section of Steam library to install/run) and the "Publisher" tool.