<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE doc
  SYSTEM '../../clonk.dtd'>
<?xml-stylesheet type="text/xsl" href="../../clonk.xsl"?>
<doc>
  <title>Scenario.txt</title>
  <h>Scenario.txt</h>
  <text>In Scenario.txt you can define basic scenario settings including simple dynamic maps, player presets and starting material, game goals, weather conditions etc. Most of these settings can also be made in the scenario properties of the menu system. For more complex settings and mission sequences you will have to write a <emlink href="scenario/script.html">script</emlink>.</text>
  <text>Some of the values require four numbers which specify mean, deviation, minimum and maximum. The value which is actually used is computed by <code>BoundBy(mean+Random(2*deviation+1)-deviation,minimum,maximum);</code>.</text>
  <text>
    <table>
      <caption id="SektionHead">Section [Head]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>Icon</col>
        <col>Integer</col>
        <col>Default icon for the scenario. See the scenario options in the menu system.</col>
      </row>
      <row>
        <col>Title</col>
        <col>String (max 512)</col>
        <col>Title for the scenario. Entries in Title.txt will override this value.</col>
      </row>
      <row>
        <col>Version</col>
        <col>4 integers</col>
        <col>Engine version required by the scenario.</col>
      </row>
      <row>
        <col>MinPlayer</col>
        <col>Integer</col>
        <col>Minimum player count</col>
      </row>
      <row>
        <col>MaxPlayer</col>
        <col>Integer</col>
        <col>Maximum player count</col>
      </row>
      <row>
        <col>MaxPlayerLeague</col>
        <col>Integer</col>
        <col>Maximum players for the league, default is MaxPlayerLeague = MaxPlayer.</col>
      </row>
      <row>
        <col>Loaders</col>
        <col>String</col>
        <col>File name (without extension) of the desired loader screen.</col>
      </row>
      <row>
        <col>Font</col>
        <col>String</col>
        <col>Name of the font to be used for this scenario (replacing the default font).</col>
      </row>
      <row>
        <col>Difficulty</col>
        <col>Integer</col>
        <col>Difficulty of the scenario. Scenarios in a folder are sorted ascendingly by difficulty if specified or by the alphabet otherwise.</col>
      </row>
      <row>
        <col>NoInitialize</col>
        <col>Integer</col>
        <col>0 or 1. If 1, basic startup objects as defined in Scenario.txt (player material and buildings, animals, vegetation) are not placed. This flag is automatically set in savegaes and is used to avoid duplication by repeated scenario initialization. The flag ignores among others the values Buildings, Vehicles, Material, Vegetation, InEarth, and Animals.</col>
      </row>
      <row>
        <col>MissionAccess</col>
        <col>String</col>
        <col>The scenario will only load if the player gained this password in another scenario. See script function <funclink>GainMissionAccess</funclink>().</col>
      </row>
      <row>
        <col>Secret</col>
        <col>Bool</col>
        <col>If true and MissionAccess is set, the scenario is invisible in the scenario selection list if the player does not have the required password access.</col>
      </row>
      <row>
        <col>ForcedFairCrew</col>
        <col>Integer</col>
        <col>0 or 1. If 1, fair crew is always used in this scenario.</col>
      </row>
      <row>
        <col>FairCrewStrength</col>
        <col>Integer</col>
        <col>Strength of the fair crew.</col>
      </row>
      <row>
        <col>Film</col>
        <col>Integer</col>
        <col>0 or 1 und only valid for records. If 1, the view always follows the first player and all player controls are invisible.</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionGame">Section [Game]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>Mode</col>
        <col>String</col>
        <col>General game mode of this scenario. Used by network and league servers to determine which league to host the game in. Currently suggested identifiers are: Melee, Parkour, Settlement, Defense. Strings should be valid identifiers.</col>
      </row>
      <row>
        <col>Rules</col>
        <col>ID list</col>
        <col>Game rules.</col>
      </row>
      <row>
        <col>Goals</col>
        <col>ID list</col>
        <col>Game goals.</col>
      </row>
      <row>
        <col>ValueOverloads</col>
        <col>ID list</col>
        <col>List of definitions for which the values should be overridden. The amount will be the new value.</col>
      </row>
      <row>
        <col>FoWEnabled</col>
        <col>Integer</col>
        <col>0 or 1. If 0, FoW is disabled, and the whole landscape is visible. Default 1.</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionenPlayer1Player2Player3Player4">Sections [Player1] [Player2] [Player3] [Player4]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <literal_col>Wealth</literal_col>
        <col>4 integers</col>
        <col>Seed capital.</col>
      </row>
      <row>
        <literal_col>Position</literal_col>
        <col>2 Integer</col>
        <col>Start position as coordinates for the un-zoomed landscape. Both -1: Random position.</col>
      </row>
      <row>
        <literal_col>Crew</literal_col>
        <col>ID list</col>
        <col>Type and count of initial crew members.</col>
      </row>
      <row>
        <literal_col>Buildings</literal_col>
        <col>ID list</col>
        <col>Buildings available at game start.</col>
      </row>
      <row>
        <literal_col>Vehicles</literal_col>
        <col>ID list</col>
        <col>Vehicles available at game start.</col>
      </row>
      <row>
        <literal_col>Material</literal_col>
        <col>ID list</col>
        <col>Materials available at game start</col>
      </row>
      <row>
        <literal_col>Knowledge</literal_col>
        <col>ID list</col>
        <col>Objects the player should initially be able to create.</col>
      </row>
      <row>
        <literal_col>BaseMaterial</literal_col>
        <col>ID list</col>
        <col>Materials available to buy at game start.</col>
      </row>
      <row>
        <literal_col>BaseProduction</literal_col>
        <col>ID list</col>
        <col>Additional supply of materials to buy.</col>
      </row>
      <row>
        <literal_col>Magic</literal_col>
        <col>ID list</col>
        <col>Available spells. If the list is empty, all spells are available (backwards compatibility).</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionLandscape">Section [Landscape]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <literal_col>Vegetation</literal_col>
        <col>ID list</col>
        <col>Vegetation types and ratio.</col>
      </row>
      <row>
        <literal_col>VegetationLevel</literal_col>
        <col>4 integers</col>
        <col>0-100. Vegetation amount.</col>
      </row>
      <row>
        <literal_col>InEarth</literal_col>
        <col>ID list</col>
        <col>Types and proportionate shares of buried objects.</col>
      </row>
      <row>
        <literal_col>InEarthLevel</literal_col>
        <col>4 integers</col>
        <col>0-100. Amount of buried objects.</col>
      </row>
      <row>
        <literal_col>Sky</literal_col>
        <col>String</col>
        <col>Sky texture from Graphics.ocg (without filename extension)</col>
      </row>
      <row>
        <literal_col>SkyFade</literal_col>
        <col>6 integers</col>
        <col>Sky color gradient (RGB to RGB). Values 0-255. With all values 0, the default blue background will be used.</col>
      </row>
      <row>
        <literal_col>BottomOpen</literal_col>
        <col>Integer</col>
        <col>0, 1 or 2. Determines wether the bottom of the game world should be open. 0=Bottom is closed, 1=Bottom is open, 2=Bottom is closed if the corresponding map pixel in the bottom row has tunnel background and open otherwise.</col>
      </row>
      <row>
        <literal_col>TopOpen</literal_col>
        <col>Integer</col>
        <col>0, 1 or 2. Determines wether the top of the game world should be open. Values analogous to BottomOpen.</col>
      </row>
      <row>
        <literal_col>LeftOpen</literal_col>
        <col>Integer</col>
        <col>Height until which the left side of the game world is open.</col>
      </row>
      <row>
        <literal_col>RightOpen</literal_col>
        <col>Integer</col>
        <col>Height until which the right side of the game world is open.</col>
      </row>
      <row>
        <literal_col>AutoScanSideOpen</literal_col>
        <col>Integer</col>
        <col>0, 1, or 2. If 1, the left and right borders are closed if the corresponding map pixel in the left or right row has non-sky foreground or background and open otherwise. If 2, it only checks the background.</col>
      </row>
      <row>
        <literal_col>MapWidth</literal_col>
        <col>4 integers</col>
        <col>Base width of the dynamic map.</col>
      </row>
      <row>
        <literal_col>MapHeight</literal_col>
        <col>4 integers</col>
        <col>Base height of the dynamic map.</col>
      </row>
      <row>
        <literal_col>MapZoom</literal_col>
        <col>4 integers</col>
        <col>Factor for zooming the map to the real game world. Default is 8.</col>
      </row>
      <row>
        <literal_col>Amplitude</literal_col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Hill height for dynamic maps.</col>
      </row>
      <row>
        <literal_col>Phase</literal_col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Hill offset for dynamic maps.</col>
      </row>
      <row>
        <literal_col>Period</literal_col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Hill interval for dynamic maps.</col>
      </row>
      <row>
        <literal_col>Random</literal_col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Random deviance for dynamic maps.</col>
      </row>
      <row>
        <literal_col>Material</literal_col>
        <col>String</col>
        <col>Material-texture definition of the base material for dynamic maps.</col>
      </row>
      <row>
        <literal_col>Liquid</literal_col>
        <col>String</col>
        <col>Material-texture definition of the liquid material for dynamic maps.</col>
      </row>
      <row>
        <literal_col>LiquidLevel</literal_col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Liquid level for dynamic maps.</col>
      </row>
      <row>
        <literal_col>MapPlayerExtend</literal_col>
        <col>Integer</col>
        <col>0 or 1. Determines wether the dynamic map will be extended for every player activated at game start.</col>
      </row>
      <row>
        <literal_col>Layers</literal_col>
        <col>Material list</col>
        <col>Additional material layers in earth for dynamic maps.</col>
      </row>
      <row>
        <literal_col>ExactLandscape</literal_col>
        <col>1 Integer</col>
        <col>0 or 1. Specifies wether the Landscape.bmp is an actual game landscape.</col>
      </row>
      <row>
        <literal_col>Gravity</literal_col>
        <col>4 integers</col>
        <col>10-200: Gravity. Default 100.</col>
      </row>
      <row>
        <literal_col>NoScan</literal_col>
        <col>Integer</col>
        <col>0 or 1. If 1, some ingame landscape checks will be turned of, such as freezing, melting or material counting.</col>
      </row>
      <row>
        <literal_col>KeepMapCreator</literal_col>
        <col>Integer</col>
        <col>0 or 1. If 1, the internal MapCreater won't unload after game start, so functions like <funclink>DrawDefMap</funclink> still work.</col>
      </row>
      <row>
        <literal_col>SkyScrollMode</literal_col>
        <col>Integer</col>
        <col>0 to 2. 0: Static sky, 1: The sky moves with the wind, 2: The sky is drawn half-parallax.</col>
      </row>
      <row>
        <literal_col>FoWRes</literal_col>
        <col>Integer</col>
        <col>Granularity of the Fog of War. Default: 64. Warning: smaller values will improve the looks of the FoW but will also severely increase processing times.</col>
      </row>
      <row>
        <literal_col>FlatChunkShapes</literal_col>
        <col>Integer</col>
        <col>0 or 1. If 1, all landscape chunks are drawn flat when the map is zoomed to draw the landscape. Set this while drawing a static map in console mode to fix small gaps of lower order materials hidden behind materials of chunky shape.</col>
      </row>
      <row>
        <literal_col>Secret</literal_col>
        <col>Bool</col>
        <col>Whether to hide the map from <code><funclink>NO_OWNER</funclink></code> viewports (e.g. observers not following a player in network rounds)</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionAnimals">Section [Animals]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>Animals</col>
        <col>ID list</col>
        <col>Freewheeling creatures.</col>
      </row>
      <row>
        <col>Nest</col>
        <col>ID list</col>
        <col>Buried nests.</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionWeather">Section [Weather]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>Climate</col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Average temperature. 0 warm, 100 cold.</col>
      </row>
      <row>
        <col>StartSeason</col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Season at game start.</col>
      </row>
      <row>
        <col>YearSpeed</col>
        <col>4 integers</col>
        <col>0-100 with tolerance. Speed of season change.</col>
      </row>
      <row>
        <col>Wind</col>
        <col>4 integers</col>
        <col>-100-100 with tolerance. Wind direction and strength.</col>
      </row>
      <row>
        <col>NoGamma</col>
        <col>Integer</col>
        <col>0 or 1. If 1, the current season won't cause a small global color change.</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionEnvironment">Section [Environment]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <literal_col>Objects</literal_col>
        <col>ID list</col>
        <col>Environment control objects that are placed at game start.</col>
      </row>
    </table>
  </text>
  <text>
    <table>
      <caption id="SektionDefinitions">Section [Definitions]</caption>
      <rowh>
        <col>Value</col>
        <col>Data type</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>LocalOnly</col>
        <col>Integer</col>
        <col>If LocalOnly is 1, only definitions local to the scenario file will be load.</col>
      </row>
      <row>
        <col>Definition1 to 9</col>
        <col>String(s)</col>
        <col>With Definition<em>x</em> entries you can specify which object definition packs (ocd) are to be loaded with this scenario. The specified files must be available in the Clonk directory. If files are specified here, manual pack selection in the menu system is disabled.</col>
      </row>
      <row>
        <col>SkipDefs</col>
        <col>ID list</col>
        <col>List of object definitions (C4IDs) which are not to be loaded with this scenario. This can be used to prevent researching certain object types in the game.</col>
      </row>
    </table>
  </text>
  <author>Sven2</author><date>2002-04</date>
  <author>Newton</author><date>2010-02</date>
</doc>
