packages feed

SpacePrivateers-0.1.0.0: GameDefinition/Content/ItemKindActor.hs

-- | Actor (or rather actor body trunk) definitions.
module Content.ItemKindActor ( actors ) where

import qualified Data.EnumMap.Strict as EM

import Game.LambdaHack.Common.Ability
import Game.LambdaHack.Common.Color
import Game.LambdaHack.Common.Effect
import Game.LambdaHack.Common.Flavour
import Game.LambdaHack.Common.Misc
import Game.LambdaHack.Content.ItemKind

actors :: [ItemKind]
actors = privateers ++ merchants ++ forcesOfChaos ++ spawns ++ animals

privateers, merchants, forcesOfChaos, spawns, animals :: [ItemKind]

privateers    = [warrior, scout]
merchants     = [merchant, merchantSgt]
forcesOfChaos = [chaosWarrior, chaosLord]
spawns        = [warpBeast]
animals       = [ventLizard]

warrior, scout :: ItemKind
merchant, merchantSgt :: ItemKind
chaosWarrior, chaosLord :: ItemKind
warpBeast :: ItemKind
ventLizard :: ItemKind

-- * Heroes (hero)

warrior = ItemKind
  { isymbol  = '@'
  , iname    = "warrior"
  , ifreq    = [("hero", 100)]
  , iflavour = zipPlain [BrBlack]
  , icount   = 1
  , irarity  = [(1, 5)]
  , iverbHit = "thud"
  , iweight  = 80000
  , iaspects = [ AddMaxHP 50, AddMaxCalm 60, AddSpeed 20
               , AddSight 3 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = "PBI, ready to take the next city vessel."
  , ikit     = [("fist", COrgan), ("foot", COrgan), ("eye 4", COrgan),
                ("starting weapon", CEqp)]
  }

scout = warrior
  { iname    = "scout"
  , iaspects = [ AddMaxHP 40, AddMaxCalm 60, AddSpeed 25
               , AddSight 4 ]
  , idesc    = "Fast and keen scouts are essential any fighting force."
  , ikit     = [("fist", COrgan), ("foot", COrgan), ("eye 5", COrgan),
                ("any arrow", CInv), ("any vial", CInv), ("any vial", CInv)]
  }

-- * Merchant Mariners (merchant)

merchant = ItemKind
  { isymbol  = '@'
  , iname    = "merchant mariner"
  , ifreq    = [("merchant", 100)]
  , iflavour = zipPlain [Blue]
  , icount   = 1
  , irarity  = [(1, 10)]
  , iverbHit = "thud"
  , iweight  = 80000
  , iaspects = [ AddMaxHP 30, AddMaxCalm 40, AddSpeed 20
               , AddSight 3 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = "Merchant mariners are operating city vessels on their endless journey to stars."
  , ikit     = [("fist", COrgan), ("foot", COrgan), ("eye 4", COrgan)]
  }

merchantSgt = merchant
  { iname    = "merchant mariner sgt"
  , ifreq    = [("merchant", 100)]
  , iflavour = zipPlain [BrBlue]
  , icount   = 1
  , irarity  = [(1, 1), (10, 3)]
  , iverbHit = "thud"
  , iweight  = 80000
  , iaspects = [ AddMaxHP 40, AddMaxCalm 60, AddSpeed 20
               , AddSight 3 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = "Squad leader for merchant mariners"
  , ikit     = [("fist", COrgan), ("foot", COrgan), ("eye 4", COrgan),
                ("starting weapon", CEqp)]
  }

-- * Forces of Chaos (chaos)

chaosWarrior = ItemKind
  { isymbol  = 'c'
  , iname    = "chaos warrior"
  , ifreq    = [("chaos", 100)]
  , iflavour = zipPlain [BrBlack]
  , icount   = 1
  , irarity  = [(1, 5)]
  , iverbHit = "thud"
  , iweight  = 100000
  , iaspects = [ AddMaxHP 40, AddMaxCalm 70, AddSpeed 20
               , AddSight 3 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = "Warrior of Chaos, ready to wreck havoc."
  , ikit     = [("fist", COrgan), ("foot", COrgan), ("eye 4", COrgan),
                ("starting weapon", CEqp)]
  }

chaosLord    = chaosWarrior
  { isymbol  = 'c'
  , iname    = "chaos lord"
  , ifreq    = [("chaos", 100)]
  , irarity  = [(5, 1), (10, 3)]
  , iflavour = zipPlain [BrRed]
  , iaspects = [ AddMaxHP 60, AddMaxCalm 70, AddSpeed 20
               , AddSight 3 ]
  , idesc    = "Lord of Chaos, leader of warriors"
  }

-- * Horrors (spawn)

warpBeast    = ItemKind
  { isymbol  = 'w'
  , iname    = "warp beast"
  , ifreq    = [("spawn", 100)]
  , iflavour = zipPlain [BrRed]
  , icount   = 1
  , irarity  = [(1, 5)]
  , iverbHit = "thud"
  , iweight  = 40000
  , iaspects = [ AddMaxHP 20, AddMaxCalm 30, AddSpeed 20
               , AddSight 1 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = "Shambling beast of warp has phased into this corporeal realm."
  , ikit     = [("small claw", COrgan), ("foot", COrgan), ("eye 2", COrgan),
                ("nostril", COrgan)]
  }

-- * Animals

ventLizard = ItemKind
  { isymbol  = ':'
  , iname    = "vent lizard"
  , ifreq    = [("summonable animal", 100)]
  , iflavour = zipPlain [Green]
  , icount   = 1
  , irarity  = [(1, 5)]
  , iverbHit = "thud"
  , iweight  = 25000
  , iaspects = [ AddMaxHP 15, AddMaxCalm 30, AddSpeed 18
               , AddSkills $ EM.singleton AbAlter (-1)
               , AddSight 3 ]
  , ieffects = []
  , ifeature = [Durable, Identified]
  , idesc    = ""
  , ikit     = [ ("claw", COrgan), ("snout", COrgan), ("armored skin", COrgan)
               , ("nostril", COrgan) ]
  }