-- | Blast definitions.
module Content.ItemKindBlast
  ( blasts
  ) where

import Prelude ()

import Game.LambdaHack.Core.Prelude

import Game.LambdaHack.Definition.Ability
import Game.LambdaHack.Definition.Color
import Game.LambdaHack.Definition.Defs
import Game.LambdaHack.Core.Dice
import Game.LambdaHack.Definition.Flavour
import Game.LambdaHack.Content.ItemKind

blasts :: [ItemKind]
blasts :: [ItemKind]
blasts =
  [ItemKind
burningOil2, ItemKind
burningOil3, ItemKind
burningOil4, ItemKind
firecracker1, ItemKind
firecracker2, ItemKind
firecracker3, ItemKind
firecracker4, ItemKind
firecracker5, ItemKind
spreadFragmentation, ItemKind
spreadFragmentation8, ItemKind
focusedFragmentation, ItemKind
spreadConcussion, ItemKind
spreadConcussion8, ItemKind
focusedConcussion, ItemKind
spreadFlash, ItemKind
spreadFlash8, ItemKind
focusedFlash, ItemKind
singleSpark, ItemKind
glassPiece, ItemKind
focusedGlass, ItemKind
fragrance, ItemKind
pheromone, ItemKind
mistCalming, ItemKind
odorDistressing, ItemKind
mistHealing, ItemKind
mistHealing2, ItemKind
mistWounding, ItemKind
distortion, ItemKind
smoke, ItemKind
boilingWater, ItemKind
glue, ItemKind
waste, ItemKind
mistAntiSlow, ItemKind
mistAntidote, ItemKind
mistSleep, ItemKind
denseShower, ItemKind
sparseShower, ItemKind
protectingBalmMelee, ItemKind
protectingBalmRanged, ItemKind
vulnerabilityBalm, ItemKind
resolutionDust, ItemKind
hasteSpray, ItemKind
slownessMist, ItemKind
eyeDrop, ItemKind
ironFiling, ItemKind
smellyDroplet, ItemKind
eyeShine, ItemKind
whiskeySpray, ItemKind
youthSprinkle, ItemKind
poisonCloud, ItemKind
blastNoSkMove, ItemKind
blastNoSkMelee, ItemKind
blastNoSkDisplace, ItemKind
blastNoSkAlter, ItemKind
blastNoSkWait, ItemKind
blastNoSkMoveItem, ItemKind
blastNoSkProject, ItemKind
blastNoSkApply, ItemKind
blastBonusSkMove, ItemKind
blastBonusSkMelee, ItemKind
blastBonusSkDisplace, ItemKind
blastBonusSkAlter, ItemKind
blastBonusSkWait, ItemKind
blastBonusSkMoveItem, ItemKind
blastBonusSkProject, ItemKind
blastBonusSkApply]

burningOil2,    burningOil3, burningOil4, firecracker1, firecracker2, firecracker3, firecracker4, firecracker5, spreadFragmentation, spreadFragmentation8, focusedFragmentation, spreadConcussion, spreadConcussion8, focusedConcussion, spreadFlash, spreadFlash8, focusedFlash, singleSpark, glassPiece, focusedGlass, fragrance, pheromone, mistCalming, odorDistressing, mistHealing, mistHealing2, mistWounding, distortion, smoke, boilingWater, glue, waste, mistAntiSlow, mistAntidote, mistSleep, denseShower, sparseShower, protectingBalmMelee, protectingBalmRanged, vulnerabilityBalm, resolutionDust, hasteSpray, slownessMist, eyeDrop, ironFiling, smellyDroplet, eyeShine, whiskeySpray, youthSprinkle, poisonCloud, blastNoSkMove, blastNoSkMelee, blastNoSkDisplace, blastNoSkAlter, blastNoSkWait, blastNoSkMoveItem, blastNoSkProject, blastNoSkApply, blastBonusSkMove, blastBonusSkMelee, blastBonusSkDisplace, blastBonusSkAlter, blastBonusSkWait, blastBonusSkMoveItem, blastBonusSkProject, blastBonusSkApply :: ItemKind

-- We take care (e.g., in burningOil below) that blasts are not faster
-- than 100% fastest natural speed, or some frames would be skipped,
-- which is a waste of perfectly good frames.

-- * Parameterized blasts

burningOil :: Int -> ItemKind
burningOil :: Int -> ItemKind
burningOil n :: Int
n = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "burning oil"
  , ifreq :: Freqs ItemKind
ifreq    = [(Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ "burning oil" Text -> Text -> Text
<+> Int -> Text
forall a. Show a => a -> Text
tshow Int
n, 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Int -> Dice
intToDice (4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
* 4)
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "sear"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity (Int -> Int -> Int
forall a. Ord a => a -> a -> a
min 100 (Int -> Int) -> Int -> Int
forall a b. (a -> b) -> a -> b
$ Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` 2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 10)
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 2 ]
  , ieffects :: [Effect]
ieffects = [ Dice -> Effect
Burn 1
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "pacified" (1 Int -> Int -> Dice
`d` 2) ]
                   -- slips and frantically puts out fire
  , idesc :: Text
idesc    = "Sticky oil, burning brightly."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
burningOil2 :: ItemKind
burningOil2 = Int -> ItemKind
burningOil 2  -- 2 steps, 2 turns
burningOil3 :: ItemKind
burningOil3 = Int -> ItemKind
burningOil 3  -- 3 steps, 2 turns
burningOil4 :: ItemKind
burningOil4 = Int -> ItemKind
burningOil 4  -- 4 steps, 2 turns
firecracker :: Int -> ItemKind
firecracker :: Int -> ItemKind
firecracker n :: Int
n = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "firecracker"
  , ifreq :: Freqs ItemKind
ifreq    = [(Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ if Int
n Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 5
                               then "firecracker"
                               else "firecracker" Text -> Text -> Text
<+> Int -> Text
forall a. Show a => a -> Text
tshow Int
n, 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [[Color]
brightCol [Color] -> Int -> Color
forall a. [a] -> Int -> a
!! ((Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
+ 2) Int -> Int -> Int
forall a. Integral a => a -> a -> a
`mod` [Color] -> Int
forall a. [a] -> Int
length [Color]
brightCol)]
  , icount :: Dice
icount   = if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= 3 then 1 Int -> Int -> Dice
`d` Int -> Int -> Int
forall a. Ord a => a -> a -> a
min 2 Int
n else 2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 2
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 4 then "singe" else "crack"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Dice
intToDice (Int -> Dice) -> Int -> Dice
forall a b. (a -> b) -> a -> b
$ 1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` 2 ]
  , ieffects :: [Effect]
ieffects = [if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 4 then Dice -> Effect
Burn 1 else Int -> Effect
RefillCalm (-2)]
               [Effect] -> [Effect] -> [Effect]
forall a. [a] -> [a] -> [a]
++ [Effect
DropBestWeapon | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 4]
               [Effect] -> [Effect] -> [Effect]
forall a. [a] -> [a] -> [a]
++ [ Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode
                    (GroupName ItemKind -> Effect) -> GroupName ItemKind -> Effect
forall a b. (a -> b) -> a -> b
$ Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ "firecracker" Text -> Text -> Text
<+> Int -> Text
forall a. Show a => a -> Text
tshow (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- 1)
                  | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 2 ]
  , idesc :: Text
idesc    = "Scraps of burnt paper, covering little pockets of black powder, buffeted by colorful explosions."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
firecracker5 :: ItemKind
firecracker5 = Int -> ItemKind
firecracker 5
firecracker4 :: ItemKind
firecracker4 = Int -> ItemKind
firecracker 4
firecracker3 :: ItemKind
firecracker3 = Int -> ItemKind
firecracker 3
firecracker2 :: ItemKind
firecracker2 = Int -> ItemKind
firecracker 2
firecracker1 :: ItemKind
firecracker1 = Int -> ItemKind
firecracker 1

-- * Focused blasts

spreadFragmentation :: ItemKind
spreadFragmentation = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "fragmentation burst"
  , ifreq :: Freqs ItemKind
ifreq    = [("violent fragmentation", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Red]
  , icount :: Dice
icount   = 16  -- strong but few, so not always hits target
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "tear apart"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 3 Int -> Int -> Dice
`d` 1  -- deadly and adjacent actor hit by 2 on average;
                        -- however, moderate armour blocks completely
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 20 4  -- 4 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Lobable, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -12 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
  , ieffects :: [Effect]
ieffects = [Int -> Int -> CStore -> GroupName ItemKind -> Effect
DropItem 1 1 CStore
COrgan "condition"]
  , idesc :: Text
idesc    = "Flying shards, flame and smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFragmentation8 :: ItemKind
spreadFragmentation8 = ItemKind
spreadFragmentation
  { iname :: Text
iname    = "fragmentation burst"
  , ifreq :: Freqs ItemKind
ifreq    = [("fragmentation", 1)]
  , icount :: Dice
icount   = 8
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 10 2  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Lobable, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -12 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
      -- smaller radius, so worse for area effect, but twice the direct damage
  }
focusedFragmentation :: ItemKind
focusedFragmentation = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "deflagration ignition"  -- black powder
  , ifreq :: Freqs ItemKind
ifreq    = [("focused fragmentation", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = 4  -- 32 in total vs 16; on average 4 hits
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "ignite"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 0  -- 0 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
      -- when the target position is occupied, the explosion starts one step
      -- away, hence we set range to 0 steps, to limit dispersal
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode "fragmentation"]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadFragmentation
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadConcussion :: ItemKind
spreadConcussion = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "concussion blast"
  , ifreq :: Freqs ItemKind
ifreq    = [("violent concussion", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Magenta]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "shock"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 1 Int -> Int -> Dice
`d` 1  -- only air pressure, so not as deadly as fragmentation,
                        -- but armour can't block completely that easily
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 20 4  -- 4 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Lobable, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -8 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
      -- outdoors it has short range, but we only model indoors in the game;
      -- it's much faster than black powder shock wave, but we are beyond
      -- human-noticeable speed differences on short distances anyway
  , ieffects :: [Effect]
ieffects = [ Int -> Int -> CStore -> GroupName ItemKind -> Effect
DropItem Int
forall a. Bounded a => a
maxBound 1 CStore
CEqp "misc armor"
               , ThrowMod -> Effect
PushActor (Int -> Int -> Int -> ThrowMod
ThrowMod 400 25 1)  -- 1 step, fast; after DropItem
                   -- this produces spam for braced actors; too bad
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "immobile" 3  -- no balance
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "deafened" 23 ]
  , idesc :: Text
idesc    = "Shock wave, hot gases, some fire and smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadConcussion8 :: ItemKind
spreadConcussion8 = ItemKind
spreadConcussion
  { iname :: Text
iname    = "concussion blast"
  , ifreq :: Freqs ItemKind
ifreq    = [("concussion", 1)]
  , icount :: Dice
icount   = 8
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 10 2  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Lobable, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -8 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
  }
focusedConcussion :: ItemKind
focusedConcussion = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "detonation ignition"  -- nitroglycerine
  , ifreq :: Freqs ItemKind
ifreq    = [("focused concussion", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = 4
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "ignite"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 0  -- 0 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode "concussion"]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadConcussion
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFlash :: ItemKind
spreadFlash = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "magnesium flash"
  , ifreq :: Freqs ItemKind
ifreq    = [("violent flash", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrWhite]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "dazzle"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 20 4  -- 4 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 5 ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "blind" 5, GroupName ItemKind -> Dice -> Effect
toOrganBad "weakened" 20]
                 -- Wikipedia says: blind for five seconds and afterimage
                 -- for much longer, harming aim
  , idesc :: Text
idesc    = "A very bright flash of fire."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFlash8 :: ItemKind
spreadFlash8 = ItemKind
spreadFlash
  { iname :: Text
iname    = "spark"
  , ifreq :: Freqs ItemKind
ifreq    = [("spark", 1)]
  , icount :: Dice
icount   = 8
  , iverbHit :: Text
iverbHit = "blind"
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 10 2  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 5 ]
  }
focusedFlash :: ItemKind
focusedFlash = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "magnesium ignition"
  , ifreq :: Freqs ItemKind
ifreq    = [("focused flash", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = 4
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "ignite"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 0  -- 0 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode "spark"]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadFlash
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
singleSpark :: ItemKind
singleSpark = ItemKind
spreadFlash
  { iname :: Text
iname    = "single spark"
  , ifreq :: Freqs ItemKind
ifreq    = [("single spark", 1)]
  , icount :: Dice
icount   = 1
  , iverbHit :: Text
iverbHit = "spark"
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 3 ]
  , ieffects :: [Effect]
ieffects = []
  , idesc :: Text
idesc    = "A glowing ember."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
glassPiece :: ItemKind
glassPiece = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "glass piece"
  , ifreq :: Freqs ItemKind
ifreq    = [("glass hail", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Blue]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "cut"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 2 Int -> Int -> Dice
`d` 1
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 100 20 4  -- 4 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
                 -- brittle, not too dense; armor blocks
  , ieffects :: [Effect]
ieffects = []
  , idesc :: Text
idesc    = "Swift, sharp edges."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
focusedGlass :: ItemKind
focusedGlass = ItemKind
glassPiece  -- when blowing up windows
  { ifreq :: Freqs ItemKind
ifreq    = [("focused glass hail", 1)]
  , icount :: Dice
icount   = 4
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 0  -- 0 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* 5 ]
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode "glass hail"]
  }

-- * Assorted blasts don't induce conditions or not mainly so

fragrance :: ItemKind
fragrance = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "fragrance"  -- instant, fast fragrance
  , ifreq :: Freqs ItemKind
ifreq    = [("fragrance", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Magenta]
  , icount :: Dice
icount   = 12
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "engulf"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 10  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
Impress, GroupName ItemKind -> Dice -> Effect
toOrganGood "rose-smelling" 45]
  -- Linger 10, because sometimes it takes 2 turns due to starting just
  -- before actor turn's end (e.g., via a necklace).
  , idesc :: Text
idesc    = "A pleasant scent."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
pheromone :: ItemKind
pheromone = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "musky whiff"  -- a kind of mist rather than fragrance
  , ifreq :: Freqs ItemKind
ifreq    = [("pheromone", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrMagenta]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "tempt"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
Dominate]
  , idesc :: Text
idesc    = "A sharp, strong scent."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistCalming :: ItemKind
mistCalming = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind  -- unused
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("calming mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrGreen]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "sooth"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillCalm 2]
  , idesc :: Text
idesc    = "A soothing, gentle cloud."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
odorDistressing :: ItemKind
odorDistressing = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "distressing whiff"
  , ifreq :: Freqs ItemKind
ifreq    = [("distressing odor", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrRed]  -- salmon
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "distress"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 10  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [ Int -> Effect
RefillCalm (-10)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "foul-smelling" (20 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 5)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "impatient" (2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 2) ]
  , idesc :: Text
idesc    = "It turns the stomach."  -- and so can't stand still
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistHealing :: ItemKind
mistHealing = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"  -- powerful, so slow and narrow
  , ifreq :: Freqs ItemKind
ifreq    = [("healing mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrGreen]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "revitalize"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 1 ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP 2]
  , idesc :: Text
idesc    = "It fills the air with light and life."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistHealing2 :: ItemKind
mistHealing2 = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("healing mist 2", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Green]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "revitalize"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine 2 ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP 4]
  , idesc :: Text
idesc    = "At its touch, wounds close and bruises fade."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistWounding :: ItemKind
mistWounding = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("wounding mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrRed]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "devitalize"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP (-2)]
  , idesc :: Text
idesc    = "The air itself stings and itches."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
distortion :: ItemKind
distortion = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = 'v'
  , iname :: Text
iname    = "vortex"
  , ifreq :: Freqs ItemKind
ifreq    = [("distortion", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
White]
  , icount :: Dice
icount   = 8  -- braced are immune to Teleport; avoid failure messages
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "engulf"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger 10  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Lobable, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Dice -> Effect
Teleport (Dice -> Effect) -> Dice -> Effect
forall a b. (a -> b) -> a -> b
$ 15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 10]
  , idesc :: Text
idesc    = "The air shifts oddly, as though light is being warped."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
smoke :: ItemKind
smoke = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind  -- when stuff burns out  -- unused
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "smoke fume"  -- pluralizes better than 'smokes'
  , ifreq :: Freqs ItemKind
ifreq    = [("smoke", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrBlack]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "choke"  -- or "obscure"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 20  -- 4 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "withholding" (5 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
                  -- choking and tears, can roughly see, but not aim
  , idesc :: Text
idesc    = "Twirling clouds of grey smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
boilingWater :: ItemKind
boilingWater = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "boiling water"
  , ifreq :: Freqs ItemKind
ifreq    = [("boiling water", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
White]
  , icount :: Dice
icount   = 18
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "boil"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 30  -- 6 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Dice -> Effect
Burn 1]
  , idesc :: Text
idesc    = "It bubbles and hisses."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
glue :: ItemKind
glue = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "hoof glue"
  , ifreq :: Freqs ItemKind
ifreq    = [("glue", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Cyan]
  , icount :: Dice
icount   = 8  -- Paralyze doesn't stack; avoid failure messages
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "glue"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 20  -- 4 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Dice -> Effect
Paralyze 10]
  , idesc :: Text
idesc    = "Thick and clinging."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
waste :: ItemKind
waste = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '*'
  , iname :: Text
iname    = "waste piece"
  , ifreq :: Freqs ItemKind
ifreq    = [("waste", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Brown]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "splosh"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [ GroupName ItemKind -> Dice -> Effect
toOrganBad "foul-smelling" (30 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 10)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad "dispossessed" (10 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 5) ]
  , idesc :: Text
idesc    = "Sodden and foul-smelling."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistAntiSlow :: ItemKind
mistAntiSlow = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("anti-slow mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrYellow]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "propel"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Int -> CStore -> GroupName ItemKind -> Effect
DropItem 1 1 CStore
COrgan "slowed"]
  , idesc :: Text
idesc    = "A cleansing rain."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistAntidote :: ItemKind
mistAntidote = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("antidote mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrBlue]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "cure"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Int -> CStore -> GroupName ItemKind -> Effect
DropItem 1 Int
forall a. Bounded a => a
maxBound CStore
COrgan "poisoned"]
  , idesc :: Text
idesc    = "Washes away death's dew."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistSleep :: ItemKind
mistSleep = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("sleep mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrMagenta]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "put to sleep"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
PutToSleep]
  , idesc :: Text
idesc    = "Lulls weary warriors."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }

-- * Condition-inducing blasts

-- Almost all have @toLinger 10@, that travels 2 steps in 1 turn.
-- These are very fast projectiles, not getting into the way of big
-- actors and not burdening the engine for long.
-- A few are slower 'mists'.

denseShower :: ItemKind
denseShower = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "dense shower"
  , ifreq :: Freqs ItemKind
ifreq    = [("dense shower", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Green]
  , icount :: Dice
icount   = 12
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "strengthen"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "strengthened" 5]
  , idesc :: Text
idesc    = "A thick rain of droplets."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
sparseShower :: ItemKind
sparseShower = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "sparse shower"
  , ifreq :: Freqs ItemKind
ifreq    = [("sparse shower", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Red]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "weaken"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "weakened" 7]
  , idesc :: Text
idesc    = "Light droplets that cling to clothing."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
protectingBalmMelee :: ItemKind
protectingBalmMelee = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "balm droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [("melee protective balm", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Brown]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "balm"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "protected from melee" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "A thick ointment that hardens the skin."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
protectingBalmRanged :: ItemKind
protectingBalmRanged = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "balm droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [("ranged protective balm", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "balm"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "protected from ranged" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "Grease that protects from flying death."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
vulnerabilityBalm :: ItemKind
vulnerabilityBalm = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '?'
  , iname :: Text
iname    = "PhD defense question"
  , ifreq :: Freqs ItemKind
ifreq    = [("PhD defense question", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrRed]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "nag"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "defenseless" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "Only the most learned make use of this."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
resolutionDust :: ItemKind
resolutionDust = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "resolution dust"
  , ifreq :: Freqs ItemKind
ifreq    = [("resolution dust", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Brown]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "calm"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "resolute" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
                 -- short enough duration that @calmEnough@ not a big problem
  , idesc :: Text
idesc    = "A handful of honest earth, to strengthen the soul."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
hasteSpray :: ItemKind
hasteSpray = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "haste spray"
  , ifreq :: Freqs ItemKind
ifreq    = [("haste spray", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrYellow]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "haste"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "hasted" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "A quick spurt."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
slownessMist :: ItemKind
slownessMist = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "slowness mist"
  , ifreq :: Freqs ItemKind
ifreq    = [("slowness mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrBlue]
  , icount :: Dice
icount   = 8
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "slow"
  , iweight :: Int
iweight  = 0
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toVelocity 5, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
                 -- 1 step, 1 turn, mist, slow
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "slowed" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "Clammy fog, making each movement an effort."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
eyeDrop :: ItemKind
eyeDrop = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "eye drop"
  , ifreq :: Freqs ItemKind
ifreq    = [("eye drop", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrCyan]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "cleanse"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "far-sighted" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "Not to be taken orally."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
ironFiling :: ItemKind
ironFiling = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "iron filing"
  , ifreq :: Freqs ItemKind
ifreq    = [("iron filing", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Red]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "blind"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad "blind" (10 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 10)]
  , idesc :: Text
idesc    = "A shaving of bright metal."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
smellyDroplet :: ItemKind
smellyDroplet = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "smelly droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [("smelly droplet", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Blue]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "sensitize"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "keen-smelling" (5 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "A viscous lump that stains the skin."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
eyeShine :: ItemKind
eyeShine = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "eye shine"
  , ifreq :: Freqs ItemKind
ifreq    = [("eye shine", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Cyan]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "smear"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "shiny-eyed" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "They almost glow in the dark."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
whiskeySpray :: ItemKind
whiskeySpray = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "whiskey spray"
  , ifreq :: Freqs ItemKind
ifreq    = [("whiskey spray", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Brown]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "inebriate"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood "drunk" (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "It burns in the best way."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
youthSprinkle :: ItemKind
youthSprinkle = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "youth sprinkle"
  , ifreq :: Freqs ItemKind
ifreq    = [("youth sprinkle", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrGreen]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "sprinkle"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger 10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [ GroupName ItemKind -> Dice -> Effect
toOrganGood "rose-smelling" (40 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 20)
               , GroupName ItemKind -> Effect
toOrganNoTimer "regenerating" ]
  , idesc :: Text
idesc    = "Bright and smelling of the Spring."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
poisonCloud :: ItemKind
poisonCloud = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "poison cloud"
  , ifreq :: Freqs ItemKind
ifreq    = [("poison cloud", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrMagenta]
  , icount :: Dice
icount   = 16
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "poison"
  , iweight :: Int
iweight  = 0
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod 10 100 2  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Effect
toOrganNoTimer "poisoned"]
  , idesc :: Text
idesc    = "Choking gas that stings the eyes."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastNoStat :: Text -> ItemKind
blastNoStat :: Text -> ItemKind
blastNoStat grp :: Text
grp = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ Text
grp Text -> Text -> Text
<+> "mist", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
White]
  , icount :: Dice
icount   = 12
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "drain"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad (Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName Text
grp) (3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 3)]
  , idesc :: Text
idesc    = "Completely disables one personal faculty."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastNoSkMove :: ItemKind
blastNoSkMove = Text -> ItemKind
blastNoStat "immobile"
blastNoSkMelee :: ItemKind
blastNoSkMelee = Text -> ItemKind
blastNoStat "pacified"
blastNoSkDisplace :: ItemKind
blastNoSkDisplace = Text -> ItemKind
blastNoStat "irreplaceable"
blastNoSkAlter :: ItemKind
blastNoSkAlter = Text -> ItemKind
blastNoStat "retaining"
blastNoSkWait :: ItemKind
blastNoSkWait = Text -> ItemKind
blastNoStat "impatient"
blastNoSkMoveItem :: ItemKind
blastNoSkMoveItem = Text -> ItemKind
blastNoStat "dispossessed"
blastNoSkProject :: ItemKind
blastNoSkProject = Text -> ItemKind
blastNoStat "withholding"
blastNoSkApply :: ItemKind
blastNoSkApply = Text -> ItemKind
blastNoStat "parsimonious"
blastBonusStat :: Text -> ItemKind
blastBonusStat :: Text -> ItemKind
blastBonusStat grp :: Text
grp = $WItemKind :: Char
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: Char
isymbol  = '`'
  , iname :: Text
iname    = "dew"
  , ifreq :: Freqs ItemKind
ifreq    = [(Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ Text
grp Text -> Text -> Text
<+> "dew", 1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
White]
  , icount :: Dice
icount   = 12
  , irarity :: Rarity
irarity  = [(1, 1)]
  , iverbHit :: Text
iverbHit = "elevate"
  , iweight :: Int
iweight  = 1
  , idamage :: Dice
idamage  = 0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity 10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood (Text -> GroupName ItemKind
forall a. Text -> GroupName a
toGroupName Text
grp) (20 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 5)]
  , idesc :: Text
idesc    = "Temporarily enhances the given personal faculty."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastBonusSkMove :: ItemKind
blastBonusSkMove = Text -> ItemKind
blastBonusStat "more mobile"
blastBonusSkMelee :: ItemKind
blastBonusSkMelee = Text -> ItemKind
blastBonusStat "more combative"
blastBonusSkDisplace :: ItemKind
blastBonusSkDisplace = Text -> ItemKind
blastBonusStat "more displacing"
blastBonusSkAlter :: ItemKind
blastBonusSkAlter = Text -> ItemKind
blastBonusStat "more altering"
blastBonusSkWait :: ItemKind
blastBonusSkWait = Text -> ItemKind
blastBonusStat "more patient"
blastBonusSkMoveItem :: ItemKind
blastBonusSkMoveItem = Text -> ItemKind
blastBonusStat "more tidy"
blastBonusSkProject :: ItemKind
blastBonusSkProject = Text -> ItemKind
blastBonusStat "more projecting"
blastBonusSkApply :: ItemKind
blastBonusSkApply = Text -> ItemKind
blastBonusStat "more practical"