module Game.LambdaHack.Content.ItemKind
( ItemKind(..), toVelocity, toLinger
, validateSingleItemKind, validateAllItemKind
) where
import Data.Text (Text)
import qualified Data.Text as T
import qualified NLP.Miniutter.English as MU
import qualified Game.LambdaHack.Common.Dice as Dice
import qualified Game.LambdaHack.Common.Effect as Effect
import Game.LambdaHack.Common.Flavour
import Game.LambdaHack.Common.Misc
data ItemKind = ItemKind
{ isymbol :: !Char
, iname :: !Text
, ifreq :: !Freqs
, iflavour :: ![Flavour]
, icount :: !Dice.Dice
, irarity :: !Rarity
, iverbHit :: !MU.Part
, iweight :: !Int
, iaspects :: ![Effect.Aspect Dice.Dice]
, ieffects :: ![Effect.Effect Dice.Dice]
, ifeature :: ![Effect.Feature]
, idesc :: !Text
, ikit :: ![(GroupName, CStore)]
}
deriving Show
toVelocity :: Int -> Effect.Feature
toVelocity n = Effect.ToThrow $ Effect.ThrowMod n 100
toLinger :: Int -> Effect.Feature
toLinger n = Effect.ToThrow $ Effect.ThrowMod 100 n
validateSingleItemKind :: ItemKind -> [Text]
validateSingleItemKind ItemKind{..} =
[ "iname longer than 23" | T.length iname > 23 ]
++ validateRarity irarity
validateAllItemKind :: [ItemKind] -> [Text]
validateAllItemKind _ = []