// ***** Level builder, look here! *****
//
// Look for the line below that contains "new ScriptObject(MissionInfo) {", and
// the nextmost line with just "};".
//
// Between these lines are the key level properties you can change!
//
// To change a property's value, change ONLY the text inside a line's pair of quotes.
// For example, to change the level's name to My Great Level, change:
//    name = "Mission Template";
// to
//    name = "My Great Level";
//
// Below are descriptions of each of the possible properties you can change:
//    name             - your level's name on the level selection screen
//    type             - leave this
//    level            - the nth level in the level selection screen, eg. 5
//    desc             - a brief description shown on the level selection screen
//    startHelpText    - the text displayed when you initially spawn
//    artist           - your name shown on the level selection screen
//    music            - which .ogg file to play for your level (blank = random)
//    gamemode         - must be "hunt" for hunt levels, or "free" for free world levels
//    game             - leave this
//    time             - the level's play time in milliseconds (1000ms = 1 second)
//    maxGemsPerSpawn  - the maximum number of gems to spawn for a GemSpawn
//    radiusFromGem    - the maximum radius for spawned gems from the center gem
//    score[0]         - the level's qualify/par score for versus mode (more than 1 player)
//    score[1]         - the level's qualify/par score for practice mode (1 player)
//    platinumScore[0] - the level's platinum score for versus mode
//    platinumScore[1] - the level's platinum score for practice mode
//    ultimateScore[0] - the level's ultimate score for versus mode
//    ultimateScore[1] - the level's ultimate score for practice mode
//    alarmStartTime   - when the "you have xx seconds left" alert appears
//    overviewHeight   - an adjustment to the height of the pregame overview screen
//
// One last thing (before the actual level code starts) - if you're releasing your level, feel free to delete
// this section of lines prefixed with // (so don't delete the '//--- OBJECT WRITE BEGIN ---' line).
//
// Have fun creating your level!
// - the Platinum Team

//--- OBJECT WRITE BEGIN ---
new SimGroup(MissionGroup) {

   new ScriptObject(MissionInfo) {
         game = "Custom";
         radiusFromGem = "20";
         time = "180000";
         platinumScore1 = "0";
         type = "Custom";
         platinumScore0 = "0";
         maxGemsPerSpawn = "6";
         startHelpText = "Press F11 to open the level editor. Select any item to read notes on how to use it.";
         ultimateScore0 = "0";
         gameMode = "Hunt";
         score0 = "0";
         alarmStartTime = "15";
         desc = "An example level which includes notes on all the ingame elements added in MultiPlayer.";
         score1 = "0";
         music = "Tim Trance.ogg";
         level = "1";
         name = "Example Mission";
         overviewHeight = "5";
         artist = "Threefolder / Notes by HiGuy";
         ultimateScore1 = "0";
   };
   new SimGroup(PathNodeGroup) {

      new StaticShape(CameraPath1) {
         position = "11.14561 10.51068 7.271091";
         rotation = "0.3183884 0.03316036 -0.9473803 12.54727";
         scale = "1 1 1";
         dataBlock = "PathNode";
            useRotation = "1";
            reverseRotation = "0";
            timeToNext = "4000";
            placed = "1";
            usePosition = "1";
            nextNode = "CameraPath2";
            useScale = "0";
      };
      new StaticShape(CameraPath2) {
         position = "15.29992 -0.6516206 9.517296";
         rotation = "0.4932966 0.108213 -0.8631039 28.52078";
         scale = "1 1 1";
         dataBlock = "PathNode";
            useRotation = "1";
            reverseRotation = "0";
            timeToNext = "4000";
            placed = "1";
            usePosition = "1";
            nextNode = "CameraPath3";
            useScale = "0";
      };
      new StaticShape(CameraPath3) {
         position = "23.66645 -10.18092 13.81318";
         rotation = "0.5234573 0.1709466 -0.8347273 42.73405";
         scale = "1 1 1";
         dataBlock = "PathNode";
            useRotation = "1";
            reverseRotation = "0";
            timeToNext = "4000";
            placed = "1";
            usePosition = "1";
            nextNode = "CameraPath4";
            useScale = "0";
      };
      new StaticShape(CameraPath4) {
         position = "35.42636 -16.24292 19.64289";
         rotation = "0.4965587 0.2058133 -0.84325 52.35062";
         scale = "1 1 1";
         dataBlock = "PathNode";
            useRotation = "1";
            reverseRotation = "0";
            timeToNext = "3000";
            placed = "1";
            usePosition = "1";
            nextNode = "CameraPath0";
            useScale = "0";
      };
   };
   new Item() {
      position = "25 5 5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "1 -5 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "5 -7 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new SimGroup(Skies) {
         note = "These SimGroups are not required, I just added them to create a nice level hierarchy tree.";
   };
   new MissionArea(MissionArea) {
      area = "-360 -648 720 1296";
      flightCeiling = "300";
      flightCeilingRange = "20";
         locked = "true";
   };
   new Sky(Sky) {
      position = "336 136 0";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      cloudHeightPer[0] = "0";
      cloudHeightPer[1] = "0";
      cloudHeightPer[2] = "0";
      cloudSpeed1 = "0.0001";
      cloudSpeed2 = "0.0002";
      cloudSpeed3 = "0.0003";
      visibleDistance = "10000";
      useSkyTextures = "1";
      renderBottomTexture = "1";
      SkySolidColor = "0.600000 0.600000 0.600000 1.000000";
      fogDistance = "300";
      fogColor = "0.600000 0.600000 0.600000 1.000000";
      fogVolume1 = "-1 7.45949e-31 1.3684e-38";
      fogVolume2 = "-1 1.07208e-14 8.756e-14";
      fogVolume3 = "-1 5.1012e-10 2.05098e-08";
      materialList = "~/data/skies/Cloudy/cloudy.dml";
      windVelocity = "1 0 0";
      windEffectPrecipitation = "0";
      noRenderBans = "1";
      fogVolumeColor1 = "128.000000 128.000000 128.000000 0.000000";
      fogVolumeColor2 = "128.000000 128.000000 128.000000 0.000004";
      fogVolumeColor3 = "128.000000 128.000000 128.000000 14435505.000000";
   };
   new Sun(Sun) {
      direction = "0.638261 0.459006 -0.61801";
      color = "1.400000 1.200000 0.400000 1.000000";
      ambient = "0.300000 0.300000 0.400000 1.000000";
   };
   new StaticShape(ExampleSky) {
      position = "0 0 0";
      rotation = "1 0 0 0";
      scale = "1000 1000 1000";
      dataBlock = "clear";
         note = "These example SkySpheres are the three official skies you can choose from. Simply place one at the origin with a scale of \\\"1000 1000 1000\\\" to make it your SkySphere.";
   };
   new Trigger(stayHere) {
      position = "-38 59.5 2.5";
      rotation = "1 0 0 0";
      scale = "100 100 1000";
      dataBlock = "InBoundsTrigger";
      polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
         note = "Bounds triggers generally have a height of 1000 (virtually unlimited) to replicate MBUltra\'s bounds triggers.";
   };
   new SimGroup(SpawnTriggers) {
         note = "These SimGroups are not required, I just added them to create a nice level hierarchy tree.";

      new Trigger(BasicSpawnTrigger) {
         position = "-9 25 8.5";
         rotation = "1 0 0 0";
         scale = "1 1 1";
         dataBlock = "SpawnTrigger";
         polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
            note = "For a spawn point, just place a basic spawn trigger. Players will spawn 3 units above the trigger\'s (+x, -y, -z) corner.";
      };
      new Trigger(CenterSpawnTrigger) {
         position = "-1.5 -12.5 8.5";
         rotation = "1 0 0 0";
         scale = "1 1 1";
         dataBlock = "SpawnTrigger";
         polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
            note = "Defining the \"center\" field as 1 will spawn the player in the trigger\'s wiremesh center, rather than in the corner.";
            center = "1";
      };
      new Trigger(AddSpawnTrigger) {
         position = "29 -1 4.5";
         rotation = "1 0 0 0";
         scale = "1 1 1";
         dataBlock = "SpawnTrigger";
         polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
            add = "0 0 3";
            note = "The \"add\" parameter allows you to customize where the player will spawn in relation to the triggers (+x, -y, -z) corner";
      };
   };
   new InteriorInstance() {
      position = "0 0 0";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      interiorFile = "~/data/multiplayer/interiors/custom/exampleMission.dif";
      showTerrainInside = "0";
   };
   new Item() {
      position = "23 31 13.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemYellow";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed.";
   };
   new Trigger(CenterSpawnTrigger) {
      position = "18.5 37.5 12.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "SpawnTrigger";
      polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
         note = "Defining the \"center\" field as 1 will spawn the player in the trigger\'s wiremesh center, rather than in the corner.";
         center = "1";
   };
   new Item() {
      position = "19 20 6.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "MegaMarbleItem";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Mega marbles are just simple PowerUp items like any other.";
   };
   new Item() {
      position = "4 8 6.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "BlastItem";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Blast items are basic PowerUps and can be placed like any other PowerUp.";
   };
   new Item() {
      position = "12 -8 6.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "BlastItem";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Blast items are basic PowerUps and can be placed like any other PowerUp.";
   };
   new Item() {
      position = "18 0 4.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "MegaMarbleItem";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Mega marbles are just simple PowerUp items like any other.";
   };
   new Item() {
      position = "28 36 12.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "BlastItem";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Blast items are basic PowerUps and can be placed like any other PowerUp.";
   };
   new Item() {
      position = "10 14 6.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemBlue";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "Blue gems (5 points) are placed in the same way as a yellow gem, but with GemItemBlue instead of GemItemYellow.";
   };
   new Item() {
      position = "1 -9 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "3 -7 9.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "3 -9 9.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemYellow";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed.";
   };
   new Item() {
      position = "3 -11 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 1 5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-7 17 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-7 19 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-7 21 9.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-5 21 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-5 23 9";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "-5 19 9.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 33 13.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "21 33 13";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "21 31 13";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 29 13";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "25 29 13";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "25 31 13";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "13 23 7.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemYellow";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "For a yellow (2 point) gem, use GemItemYellow instead of GemItemRed.";
   };
   new Item() {
      position = "11 21 7";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "13 21 7";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "13 25 7";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "11 23 7";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "9 23 7.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 7 5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "21 7 5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "21 5 5.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 5 5.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "21 3 5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new Item() {
      position = "23 3 5.5";
      rotation = "1 0 0 0";
      scale = "1 1 1";
      dataBlock = "GemItemRed";
      collideable = "0";
      static = "1";
      rotate = "1";
         note = "To place a red gem spawnpoint, simply place a GemItemRed where you want the gem to spawn. Spawns are randomly generated.";
   };
   new AudioProfile(MusicProfile) {
      fileName = "~/data/sound/music/Pianoforte (Guitar Remix).ogg";
      description = "AudioMusic";
      preload = "0";
   };
};
//--- OBJECT WRITE END ---
