packages feed

Allure-0.4.6.5: src/Content/StrategyKind.hs

{-# LANGUAGE OverloadedStrings #-}
-- Copyright (c) 2008--2011 Andres Loeh, 2010--2012 Mikolaj Konarski
-- This file is a part of the computer game Allure of the Stars
-- and is released under the terms of the GNU Affero General Public License.
-- For license and copyright information, see the file LICENSE.
--
-- | AI strategies for Allure of the Stars.
module Content.StrategyKind ( cdefs ) where

import Game.LambdaHack.Ability
import Game.LambdaHack.CDefs
import Game.LambdaHack.Content.StrategyKind

cdefs :: CDefs StrategyKind
cdefs = CDefs
  { getSymbol = ssymbol
  , getName = sname
  , getFreq = sfreq
  , validate = svalidate
  , content =
      [noAbility, onlyFollowTrack, meleeAdjacent, meleeAndRanged, fullAbility]
  }
noAbility,        onlyFollowTrack, meleeAdjacent, meleeAndRanged, fullAbility :: StrategyKind

noAbility = StrategyKind  -- not even projectiles will fly
  { ssymbol    = '@'
  , sname      = "noAbility"
  , sfreq      = [("noAbility", 1)]
  , sabilities = []
  }

onlyFollowTrack = StrategyKind  -- projectiles enabled
  { ssymbol    = '@'
  , sname      = "onlyFollowTrack"
  , sfreq      = [("onlyFollowTrack", 1)]
  , sabilities = [Track]
  }

meleeAdjacent = StrategyKind
  { ssymbol    = '@'
  , sname      = "meleeAdjacent"
  , sfreq      = [("meleeAdjacent", 1)]
  , sabilities = [Melee, Track]
  }

meleeAndRanged = StrategyKind  -- melee and reaction fire
  { ssymbol    = '@'
  , sname      = "meleeAndRanged"
  , sfreq      = [("meleeAndRanged", 1)]
  , sabilities = [Melee, Ranged, Track]
  }

fullAbility = StrategyKind
  { ssymbol    = '@'
  , sname      = "fullAbility"
  , sfreq      = [("fullAbility", 1)]
  , sabilities = [minBound..maxBound]
  }