# FarBlazer levels file
#
# must use spaces for indents
# time is ticks * 100, roughly equal to seconds

# debug: 1 means print parse errors
# debug: 0 means be silent
debug: 0

# 
# Let's define some actors... these are the objects in the game.
#
# first argument is a sprite constructor
# second argument is a tuple of parameters...
#  if one of the tuple arguments is a string, it is eval'd and the result is used in place of the string.
#     (note that self refers to the Levels object)
#

actors:

# these ones are simple, things to bomb and shoot.

  st0: ['objstoragetank0.Storagetank0', [] ]
  st1: ['objstoragetank1.Storagetank1', [] ]  
  tow: ['objtower.Tower', [] ]
  hse: ['objhouse.House', [] ]
  bld: ['objbuilding.Building', [] ]
  cac: ['objcactus.Cactus', [] ]
  tr0: ['objtree0.Tree0', [] ]
  rad: ['objradar.Radar', [] ]
  pl0: ['objplane0.Plane0', [] ]
  pl1: ['objplane1.Plane1', ['self.airobjs'] ]
  tk0: ['objtank0.Tank0', [] ]

  icb: ['objicbm.ICBM', [] ]
  hq0: ['objheadquarters.Headquarters', [] ]

  fs0: ['objfuelship.FuelShip', ['self.airobjs'] ]

#
# RocketLauncher parameter cheat sheet:
#
#  objrocketlauncher.RocketLauncher 
#
# ['self.airobjs', 'self.exhaust', launch_percent , start_seq, lock_on, fuel, thrust_multiplier]
#
# Required parameters:
#  'self.airobjs', 'self.exhaust'
#
# Extra parameters:
#  launch_percent    = +/-float  (how far before or after do we launch, as % of screen width)
#                                (- means after player, + means before player)
#  start_seq         = integer   (# of thrust intervals [roughly 1/20 sec] before targeting player)
#  lock_on           = 0,1       (1 means the missile speeds up when it's close to player)
#  fuel              = integer   (units of fuel rocket has - uses 1 unit per thrust interval)
#  thrust_multiplier = float     (how much boost does a rocket have as compared with default)
#
# Note that if you use the extra parameters, you have to supply the parameters in order!
#

# Now let's define some Rocket Launchers, in order of nastiness...

  rl0: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust'] ]
  rl1: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust', -0.1, 10, 1, 150, 1.0] ]
  rl2: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust', -0.1, 10, 0, 150, 2.0] ]
  rl3: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust', -0.1, 10, 1, 150, 2.0] ]
  rl4: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust',  0.9, 10, 1, 150, 1.0] ]
  rl5: ['objrocketlauncher.RocketLauncher', ['self.airobjs','self.exhaust',  0.5, 1,  2, 300, 2.0] ]

#
# Rocket Launching Tank parameter cheat sheet:
#
#  objtank1.Tank1
# 
# ['self.airobjs', 'self.exhaust', launch_interval, num_rockets , start_seq, lock_on, fuel, thrust_multiplier]
#
# Required parameters:
#  'self.airobjs', 'self.exhaust'
#
# Extra parameters:
#  launch_interval   = integer   (# of ticks between rocket launching. Defaults to 300.)
#  num_rockets       = integer   (# of rockets available to fire before supply runs out. Defaults to 5.)
#
#  start_seq         = integer   (# of thrust intervals [roughly 1/20 sec] before targeting player)
#  lock_on           = 0,1       (1 means the missile speeds up when it's close to player)
#  fuel              = integer   (units of fuel rocket has - uses 1 unit per thrust interval)
#  thrust_multiplier = float     (how much boost does a rocket have as compared with default)
#
# Note that if you use the extra parameters, you have to supply the parameters in order!
#

# Now let's define some Rocket Launching Tanks, in order of nastiness:

  tk1: ['objtank1.Tank1', ['self.airobjs','self.exhaust'] ]
  tk2: ['objtank1.Tank1', ['self.airobjs','self.exhaust', 300, 10, 10, 1, 150, 1.0] ]
  tk3: ['objtank1.Tank1', ['self.airobjs','self.exhaust', 300, 5,  20, 1, 150, 1.0] ]


#
# Now we define the missions... 
#   Each mission needs an order, an objective, and can optionally have a refuel ship.
#
# Each mission has several parts.
# For each part:
#  actor: probability [max_instances]
# (max_instances is optional; if omitted, will use the default of the actor's class)
#
missions:
  mission1:
    description: Bomb the Radar
    order: 1
    objective: rad
    refuel: fs0 50
    default:
      st0:  0.001   2 
      st1:  0.001   2
      cac:  0.001   2
      rad:  0.001   1
    part1:
      time: 30
      hse:  0.002   2
      bld:  0.002   2
      tow:  0.05    1
      tr0:  0.001   2
      rad:  0.0     1
    part2:
      time: 60
      hse:  0.002   2
      bld:  0.002   2
      tr0:  0.002   2
      cac:  0.001   1
      rad:  0.005   1
    part3:
      time: 120
      st1:  0.003   1
      rl0:  0.005   3
      hse:  0.0     1
      rad:  0.005   1
    part4:
      time: 240
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
  mission2:
    description: Bomb the Robot Tank
    order: 2
    objective: tk0
    default:
      st0:  0.0
      st1:  0.0
      cac:  0.01   2
      tk0:  0.05   1
      pl0:  0.05   7
    part1:
      time: 30
  mission3:
    description: Bomb the ICBM
    order: 3
    objective: icb
    refuel: fs0 60
    default:
      st0:  0.001   2 
      st1:  0.001   2
      cac:  0.001   2
    part1:
      time: 30
      hse:  0.002   2
      bld:  0.002   2
      tow:  0.05    1
      tr0:  0.001   2
      icb:  0.0     1
    part2:
      time: 60
      hse:  0.002   2
      bld:  0.002   2
      tr0:  0.002   2
      pl1:  0.001   1
      icb:  0.0     1
      rl1:  0.005   1
    part3:
      time: 90
      st1:  0.003   1
      hse:  0.0     1
      tow:  0.005   1
      icb:  0.001   1
      pl1:  0.005   3
    part4:
      time: 120
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      icb:  0.001   1
      pl1:  0.004   3
      rl1:  0.005   1
    part5:
      time: 180
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   2
      icb:  0.001   1
      rl1:  0.005   2
  mission4:
    description: Bomb the Robot Tank
    order: 4
    objective: tk1
    default:
      st0:  0.0
      st1:  0.0
      cac:  0.01    2
      tk1:  0.05    1
      pl0:  0.05    7
    part1:
      time: 30
  mission5:
    description: Bomb the A.I. Base
    order: 5
    objective: hq0
    refuel: fs0 60
    default:
      st0:  0.001   2 
      st1:  0.001   2
      cac:  0.001   2
      hq0:  0.001   1
    part1:
      time: 30
      hse:  0.002   2
      bld:  0.002   2
      tow:  0.05    1
      tr0:  0.001   2
      rl1:  0.003   1
    part2:
      time: 60
      hse:  0.002   2
      bld:  0.002   2
      tr0:  0.002   2
      cac:  0.001   1
      rl1:  0.005   1
    part3:
      time: 90
      st1:  0.003   1
      rl1:  0.005   2
      hse:  0.0     1
      cac:  0.005   2
      tow:  0.05    1
    part4:
      time: 120
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      tow:  0.05    1
      pl1:  0.005   1
      rl1:  0.003   1
      rl2:  0.005   1
    part5:
      time: 150
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      pl1:  0.005   1
      rl2:  0.005   1
    part6:
      time: 180
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      tow:  0.05    1
      pl1:  0.005   1
      rl2:  0.005   2
    part7:
      time: 200
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      pl1:  0.005   1
      rl3:  0.005   2
      hq0:  0.005   1
    part8:
      time: 230
      st0:  0.0     2
      st1:  0.0     2
      cac:  0.003   3
      tow:  0.05    1
      pl1:  0.005   2
      rl4:  0.005   2
      hq0:  0.001   1
