Map Options

Mustafa Alperen Seki edited this page Mar 31, 2018 · 7 revisions

Teaser_Image
For custom maps there is the possibility to set lobby options like fog of war or shroud to be on or off.
This article shows how to set default options and lock options (option can't be changed by players in the lobby). Adding custom options important for singleplayer missions is covered in the "Advanced" section.

Simple

To set map options open your maps .oramap file and edit the map.yaml.
Add a line starting with Rules: at the end of the map file and copy-paste the appropriate options you want and set them to true or false.
Make sure the indentation is right (only tabs on line starts) and that the hierarchy is complete and every entry is unique!

Example:

Rules:
	Player:
		Shroud:
			ExploredMapCheckboxEnabled: true

sets the map shroud to off while

Rules:
Player: # 1) wrong indentation
		Shroud:
		Shroud: # 2) same entry twice
			ExploredMapCheckboxEnabled: true #hierarchy not complete, because of 1) and 2)

is not correct and causes an error ("This map is not compatible with this version of OpenRA.").

AVAILABLE OPTIONS

Rules: 
	World:
		MapOptions:
			TechLevelDropdownLocked: true
			TechLevel: unrestricted
			# other options are infonly, low, medium, nosuper (d2k also has: high)
			ShortGameCheckboxEnabled: true
			ShortGameCheckboxLocked: true
			GameSpeedDropdownLocked: true
			GameSpeed: default
			# other options are slower, fast, faster, fastest
		MapCreeps: #this is only relevant for d2k which has sand worm creeps
			CheckboxLocked: true
			CheckboxEnabled: true
		CrateSpawner: #random crates on/off
			CheckboxEnabled: true
			CheckboxLocked: true
		MapBuildRadius:
			AllyBuildRadiusCheckboxEnabled: true #can build in allies base
			AllyBuildRadiusCheckboxLocked: true
			BuildRadiusCheckboxEnabled: true #no build radius limitations
			BuildRadiusCheckboxLocked: true		
		SpawnMPUnits:
			DropdownLocked: true
			StartingUnitsClass: none #this means MCV only
			#other options are light, heavy  (light support and heavy support)
			
	Player:
		Shroud:
			ExploredMapCheckboxEnabled: true	
			ExploredMapCheckboxLocked: true
			FogCheckboxLocked: true
			FogCheckboxEnabled: true
		LobbyPrerequisiteCheckbox@GLOBALBOUNTY: #enable kill bounties (only RA)
			Enabled: true
			Locked: true
		LobbyPrerequisiteCheckbox@GLOBALFACTUNDEPLOY: #enable re-deployable MCV (only RA and CNC)
			Enabled: true
			Locked: true		
		PlayerResources:
			SelectableCash: 2500, 5000, 7500, 10000 
			#these are the defaults, make sure to add your desired value into this list!
			DefaultCash: 5000 
			#only set to something listed before (other players can't join your game if you don't)
			DefaultCashDropdownLocked: true

Advanced

In missions often the multiplayer starting units, starting spawn points or defeating players with no units on the map is not wanted. Remove those rules with:

Rules:
	World:
		-MPStartLocations:
		-SpawnMPUnits:
		-ConquestVictoryConditions: #disable defeating a player with no units/buildings
		MissionObjectives: 
			EarlyGameOver: true #this means that the game is over once one player is defeated. 
					#This has nothing to do with the short game lobby option.

Add a mission script lua file to your map to actually defeat someone if something happens. See Lua API for more information.

Rules:
	World:
		LuaScript:
			Scripts: Your_Mission_Script_file.lua

Add a mission briefing which can be read in the mission browser (singleplayer) or in the lobby chat (multiplayer) and ingame in the briefing tab.

Rules:
	World:
		MissionData:
			Briefing: \nThis is your mission!\n  * Go defeat our enemies!

You can define new dropdowns which you then can use in your mission script. Also custom checkboxes are possible and can be used in yaml files like any other prerequisites.

Rules:
	World:
		ScriptLobbyDropdown@Your_custom_dropdown: #do not use the same name twice after @
			ID: CustomDropdown
			Label: Cust. Drop
			Description: Select some custom option by dropdown!
			Default: entry_1
			Values:
				entry_1: First #doesn't have to be called entry_1 or First.
				entry_2: Second
				entry_3: Third
			Locked: false
			Visible: true 	
			DisplayOrder: 30
	Player:
		LobbyPrerequisiteCheckbox@Your_custom_checkbox: #do not use the same name twice after @
			ID: CustomCheckbox
			Label: Cust. Check
			Description: This is a custom option!
			Enabled: true
			Locked: true
			Visible: true
			DisplayOrder: 20
			Prerequisites: custom_enabled

This short lua script shows how to use the prerequisites of the checkbox and the selected entry of the dropdown in your mission script:

WorldLoaded = function() 
	--print "The host has selected <option>" to the global ingame chat
	Media.Debug("The host has selected "..Map.LobbyOption("CustomDropdown"))
	
 	mp0=Player.GetPlayer("Multi0")
	
	if mp0.HasPrerequisites({"custom_enabled"})
	then Media.Debug("Custom checkbox set") --print "Custom checkbox set" to the global ingame chat
	else Media.Debug("Custom checkbox NOT set")
	end
end

Tick = function()
end

To get more space for your own options you can hide the default ones like "Fog", "Shroud" or "Game Speed". Just add an entry called Visible: false or CheckboxVisible: false or <option>CheckBoxVisible: false. Test it out or see the traits wiki which one is correct.

For developing and testing your map faster, condsider enabling cheats by default:

Rules:
	Player:
		DeveloperMode:
			CheckboxEnabled: true 
			CheckboxLocked: true #these two are enough. Write /all ingame to activate all cheats.

Finally, also very helpful for missions is the option to keep a custom map preview after editing a map and the option to show the map in the mission browser instead of the multiplayer lobby.
Unlike the other options, those must not be preceded by Rules:, just paste them directly into the map.yaml

LockPreview: true #keep map preview
Visibility: MissionSelector #show only in the missions menu

Useful Links:

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.