-- | Blast definitions.
module Content.ItemKindBlast
  ( -- * Group name patterns
    pattern S_FIRECRACKER, pattern S_VIOLENT_FRAGMENTATION, pattern S_FRAGMENTATION, pattern S_FOCUSED_FRAGMENTATION, pattern S_VIOLENT_CONCUSSION, pattern S_CONCUSSION, pattern S_FOCUSED_CONCUSSION, pattern S_VIOLENT_FLASH, pattern S_FOCUSED_FLASH, pattern S_GLASS_HAIL, pattern S_FOCUSED_GLASS_HAIL, pattern S_PHEROMONE, pattern S_CALMING_MIST, pattern S_DISTRESSING_ODOR, pattern S_HEALING_MIST, pattern S_HEALING_MIST_2, pattern S_WOUNDING_MIST, pattern S_DISTORTION, pattern S_SMOKE, pattern S_BOILING_WATER, pattern S_GLUE, pattern S_WASTE, pattern S_ANTI_SLOW_MIST, pattern S_ANTIDOTE_MIST, pattern S_SLEEP_MIST, pattern S_DENSE_SHOWER, pattern S_SPARSE_SHOWER, pattern S_MELEE_PROTECTIVE_BALM, pattern S_RANGE_PROTECTIVE_BALM, pattern S_DEFENSELESSNESS_RUNOUT, pattern S_RESOLUTION_DUST, pattern S_HASTE_SPRAY, pattern S_VIOLENT_SLOWNESS_MIST, pattern S_SLOWNESS_MIST, pattern S_FOCUSED_SLOWNESS_MIST, pattern S_EYE_DROP, pattern S_IRON_FILING, pattern S_SMELLY_DROPLET, pattern S_EYE_SHINE, pattern S_WHISKEY_SPRAY, pattern S_YOUTH_SPRINKLE, pattern S_POISON_CLOUD, pattern S_PING_PLASH, pattern S_VIOLENT_BURNING_OIL_2, pattern S_VIOLENT_BURNING_OIL_3, pattern S_VIOLENT_BURNING_OIL_4, pattern S_BURNING_OIL_2, pattern S_BURNING_OIL_3, pattern S_BURNING_OIL_4, pattern S_FOCUSED_BURNING_OIL_2, pattern S_FOCUSED_BURNING_OIL_3, pattern S_FOCUSED_BURNING_OIL_4
  , blastNoStatOf, blastBonusStatOf
  , pattern ARMOR_MISC
  , blastsGNSingleton, blastsGN
  , -- * Content
    blasts
  ) where

import Prelude ()

import Game.LambdaHack.Core.Prelude

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

import Content.ItemKindTemporary

-- * Group name patterns

blastsGNSingleton :: [GroupName ItemKind]
blastsGNSingleton :: [GroupName ItemKind]
blastsGNSingleton =
       [GroupName ItemKind
S_FIRECRACKER, GroupName ItemKind
S_VIOLENT_FRAGMENTATION, GroupName ItemKind
S_FRAGMENTATION, GroupName ItemKind
S_FOCUSED_FRAGMENTATION, GroupName ItemKind
S_VIOLENT_CONCUSSION, GroupName ItemKind
S_CONCUSSION, GroupName ItemKind
S_FOCUSED_CONCUSSION, GroupName ItemKind
S_VIOLENT_FLASH, GroupName ItemKind
S_FOCUSED_FLASH, GroupName ItemKind
S_GLASS_HAIL, GroupName ItemKind
S_FOCUSED_GLASS_HAIL, GroupName ItemKind
S_PHEROMONE, GroupName ItemKind
S_CALMING_MIST, GroupName ItemKind
S_DISTRESSING_ODOR, GroupName ItemKind
S_HEALING_MIST, GroupName ItemKind
S_HEALING_MIST_2, GroupName ItemKind
S_WOUNDING_MIST, GroupName ItemKind
S_DISTORTION, GroupName ItemKind
S_SMOKE, GroupName ItemKind
S_BOILING_WATER, GroupName ItemKind
S_GLUE, GroupName ItemKind
S_WASTE, GroupName ItemKind
S_ANTI_SLOW_MIST, GroupName ItemKind
S_ANTIDOTE_MIST, GroupName ItemKind
S_SLEEP_MIST, GroupName ItemKind
S_DENSE_SHOWER, GroupName ItemKind
S_SPARSE_SHOWER, GroupName ItemKind
S_MELEE_PROTECTIVE_BALM, GroupName ItemKind
S_RANGE_PROTECTIVE_BALM, GroupName ItemKind
S_DEFENSELESSNESS_RUNOUT, GroupName ItemKind
S_RESOLUTION_DUST, GroupName ItemKind
S_HASTE_SPRAY, GroupName ItemKind
S_VIOLENT_SLOWNESS_MIST, GroupName ItemKind
S_SLOWNESS_MIST, GroupName ItemKind
S_FOCUSED_SLOWNESS_MIST, GroupName ItemKind
S_EYE_DROP, GroupName ItemKind
S_IRON_FILING, GroupName ItemKind
S_SMELLY_DROPLET, GroupName ItemKind
S_EYE_SHINE, GroupName ItemKind
S_WHISKEY_SPRAY, GroupName ItemKind
S_YOUTH_SPRINKLE, GroupName ItemKind
S_POISON_CLOUD, GroupName ItemKind
S_PING_PLASH, GroupName ItemKind
S_VIOLENT_BURNING_OIL_2, GroupName ItemKind
S_VIOLENT_BURNING_OIL_3, GroupName ItemKind
S_VIOLENT_BURNING_OIL_4, GroupName ItemKind
S_BURNING_OIL_2, GroupName ItemKind
S_BURNING_OIL_3, GroupName ItemKind
S_BURNING_OIL_4, GroupName ItemKind
S_FOCUSED_BURNING_OIL_2, GroupName ItemKind
S_FOCUSED_BURNING_OIL_3, GroupName ItemKind
S_FOCUSED_BURNING_OIL_4]
  [GroupName ItemKind]
-> [GroupName ItemKind] -> [GroupName ItemKind]
forall a. [a] -> [a] -> [a]
++ (Int -> GroupName ItemKind) -> [Int] -> [GroupName ItemKind]
forall a b. (a -> b) -> [a] -> [b]
map Int -> GroupName ItemKind
firecrackerAt [Int
1..Int
4]
  [GroupName ItemKind]
-> [GroupName ItemKind] -> [GroupName ItemKind]
forall a. [a] -> [a] -> [a]
++ (GroupName ItemKind -> GroupName ItemKind)
-> [GroupName ItemKind] -> [GroupName ItemKind]
forall a b. (a -> b) -> [a] -> [b]
map GroupName ItemKind -> GroupName ItemKind
blastNoStatOf [GroupName ItemKind]
noStatGN
  [GroupName ItemKind]
-> [GroupName ItemKind] -> [GroupName ItemKind]
forall a. [a] -> [a] -> [a]
++ (GroupName ItemKind -> GroupName ItemKind)
-> [GroupName ItemKind] -> [GroupName ItemKind]
forall a b. (a -> b) -> [a] -> [b]
map GroupName ItemKind -> GroupName ItemKind
blastBonusStatOf [GroupName ItemKind]
bonusStatGN

pattern S_FIRECRACKER, S_VIOLENT_FRAGMENTATION, S_FRAGMENTATION, S_FOCUSED_FRAGMENTATION, S_VIOLENT_CONCUSSION, S_CONCUSSION, S_FOCUSED_CONCUSSION, S_VIOLENT_FLASH, S_FOCUSED_FLASH, S_GLASS_HAIL, S_FOCUSED_GLASS_HAIL, S_PHEROMONE, S_CALMING_MIST, S_DISTRESSING_ODOR, S_HEALING_MIST, S_HEALING_MIST_2, S_WOUNDING_MIST, S_DISTORTION, S_SMOKE, S_BOILING_WATER, S_GLUE, S_WASTE, S_ANTI_SLOW_MIST, S_ANTIDOTE_MIST, S_SLEEP_MIST, S_DENSE_SHOWER, S_SPARSE_SHOWER, S_MELEE_PROTECTIVE_BALM, S_RANGE_PROTECTIVE_BALM, S_DEFENSELESSNESS_RUNOUT, S_RESOLUTION_DUST, S_HASTE_SPRAY, S_VIOLENT_SLOWNESS_MIST, S_SLOWNESS_MIST, S_FOCUSED_SLOWNESS_MIST, S_EYE_DROP, S_IRON_FILING, S_SMELLY_DROPLET, S_EYE_SHINE, S_WHISKEY_SPRAY, S_YOUTH_SPRINKLE, S_POISON_CLOUD, S_PING_PLASH, S_VIOLENT_BURNING_OIL_2, S_VIOLENT_BURNING_OIL_3, S_VIOLENT_BURNING_OIL_4, S_BURNING_OIL_2, S_BURNING_OIL_3, S_BURNING_OIL_4, S_FOCUSED_BURNING_OIL_2, S_FOCUSED_BURNING_OIL_3, S_FOCUSED_BURNING_OIL_4 :: GroupName ItemKind

blastsGN :: [GroupName ItemKind]
blastsGN :: [GroupName ItemKind]
blastsGN =
       [GroupName ItemKind
ARMOR_MISC]

pattern ARMOR_MISC :: GroupName ItemKind

pattern $bS_FIRECRACKER :: GroupName ItemKind
$mS_FIRECRACKER :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FIRECRACKER = GroupName "firecracker"
pattern $bS_VIOLENT_FRAGMENTATION :: GroupName ItemKind
$mS_VIOLENT_FRAGMENTATION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_FRAGMENTATION = GroupName "violent fragmentation"
pattern $bS_FRAGMENTATION :: GroupName ItemKind
$mS_FRAGMENTATION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FRAGMENTATION = GroupName "fragmentation"
pattern $bS_FOCUSED_FRAGMENTATION :: GroupName ItemKind
$mS_FOCUSED_FRAGMENTATION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_FRAGMENTATION = GroupName "focused fragmentation"
pattern $bS_VIOLENT_CONCUSSION :: GroupName ItemKind
$mS_VIOLENT_CONCUSSION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_CONCUSSION = GroupName "violent concussion"
pattern $bS_CONCUSSION :: GroupName ItemKind
$mS_CONCUSSION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_CONCUSSION = GroupName "concussion"
pattern $bS_FOCUSED_CONCUSSION :: GroupName ItemKind
$mS_FOCUSED_CONCUSSION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_CONCUSSION = GroupName "focused concussion"
pattern $bS_VIOLENT_FLASH :: GroupName ItemKind
$mS_VIOLENT_FLASH :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_FLASH = GroupName "violent flash"
pattern $bS_FOCUSED_FLASH :: GroupName ItemKind
$mS_FOCUSED_FLASH :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_FLASH = GroupName "focused flash"
pattern $bS_GLASS_HAIL :: GroupName ItemKind
$mS_GLASS_HAIL :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_GLASS_HAIL = GroupName "glass hail"
pattern $bS_FOCUSED_GLASS_HAIL :: GroupName ItemKind
$mS_FOCUSED_GLASS_HAIL :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_GLASS_HAIL = GroupName "focused glass hail"
pattern $bS_PHEROMONE :: GroupName ItemKind
$mS_PHEROMONE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_PHEROMONE = GroupName "pheromone"
pattern $bS_CALMING_MIST :: GroupName ItemKind
$mS_CALMING_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_CALMING_MIST = GroupName "calming mist"
pattern $bS_DISTRESSING_ODOR :: GroupName ItemKind
$mS_DISTRESSING_ODOR :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_DISTRESSING_ODOR = GroupName "distressing odor"
pattern $bS_HEALING_MIST :: GroupName ItemKind
$mS_HEALING_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_HEALING_MIST = GroupName "healing mist"
pattern $bS_HEALING_MIST_2 :: GroupName ItemKind
$mS_HEALING_MIST_2 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_HEALING_MIST_2 = GroupName "strong healing mist"
pattern $bS_WOUNDING_MIST :: GroupName ItemKind
$mS_WOUNDING_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_WOUNDING_MIST = GroupName "wounding mist"
pattern $bS_DISTORTION :: GroupName ItemKind
$mS_DISTORTION :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_DISTORTION = GroupName "distortion"
pattern $bS_SMOKE :: GroupName ItemKind
$mS_SMOKE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_SMOKE = GroupName "smoke"
pattern $bS_BOILING_WATER :: GroupName ItemKind
$mS_BOILING_WATER :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_BOILING_WATER = GroupName "boiling water"
pattern $bS_GLUE :: GroupName ItemKind
$mS_GLUE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_GLUE = GroupName "glue"
pattern $bS_WASTE :: GroupName ItemKind
$mS_WASTE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_WASTE = GroupName "waste"
pattern $bS_ANTI_SLOW_MIST :: GroupName ItemKind
$mS_ANTI_SLOW_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_ANTI_SLOW_MIST = GroupName "anti-slow mist"
pattern $bS_ANTIDOTE_MIST :: GroupName ItemKind
$mS_ANTIDOTE_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_ANTIDOTE_MIST = GroupName "antidote mist"
pattern $bS_SLEEP_MIST :: GroupName ItemKind
$mS_SLEEP_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_SLEEP_MIST = GroupName "sleep mist"
pattern $bS_DENSE_SHOWER :: GroupName ItemKind
$mS_DENSE_SHOWER :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_DENSE_SHOWER = GroupName "dense shower"
pattern $bS_SPARSE_SHOWER :: GroupName ItemKind
$mS_SPARSE_SHOWER :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_SPARSE_SHOWER = GroupName "sparse shower"
pattern $bS_MELEE_PROTECTIVE_BALM :: GroupName ItemKind
$mS_MELEE_PROTECTIVE_BALM :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_MELEE_PROTECTIVE_BALM = GroupName "melee protective balm"
pattern $bS_RANGE_PROTECTIVE_BALM :: GroupName ItemKind
$mS_RANGE_PROTECTIVE_BALM :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_RANGE_PROTECTIVE_BALM = GroupName "ranged protective balm"
pattern $bS_DEFENSELESSNESS_RUNOUT :: GroupName ItemKind
$mS_DEFENSELESSNESS_RUNOUT :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_DEFENSELESSNESS_RUNOUT = GroupName "PhD defense question"
pattern $bS_RESOLUTION_DUST :: GroupName ItemKind
$mS_RESOLUTION_DUST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_RESOLUTION_DUST = GroupName "resolution dust"
pattern $bS_HASTE_SPRAY :: GroupName ItemKind
$mS_HASTE_SPRAY :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_HASTE_SPRAY = GroupName "haste spray"
pattern $bS_VIOLENT_SLOWNESS_MIST :: GroupName ItemKind
$mS_VIOLENT_SLOWNESS_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_SLOWNESS_MIST = GroupName "violent nitrogen mist"
pattern $bS_SLOWNESS_MIST :: GroupName ItemKind
$mS_SLOWNESS_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_SLOWNESS_MIST = GroupName "nitrogen mist"
pattern $bS_FOCUSED_SLOWNESS_MIST :: GroupName ItemKind
$mS_FOCUSED_SLOWNESS_MIST :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_SLOWNESS_MIST = GroupName "focused nitrogen mist"
pattern $bS_EYE_DROP :: GroupName ItemKind
$mS_EYE_DROP :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_EYE_DROP = GroupName "eye drop"
pattern $bS_IRON_FILING :: GroupName ItemKind
$mS_IRON_FILING :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_IRON_FILING = GroupName "iron filing"
pattern $bS_SMELLY_DROPLET :: GroupName ItemKind
$mS_SMELLY_DROPLET :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_SMELLY_DROPLET = GroupName "smelly droplet"
pattern $bS_EYE_SHINE :: GroupName ItemKind
$mS_EYE_SHINE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_EYE_SHINE = GroupName "eye shine"
pattern $bS_WHISKEY_SPRAY :: GroupName ItemKind
$mS_WHISKEY_SPRAY :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_WHISKEY_SPRAY = GroupName "whiskey spray"
pattern $bS_YOUTH_SPRINKLE :: GroupName ItemKind
$mS_YOUTH_SPRINKLE :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_YOUTH_SPRINKLE = GroupName "youth sprinkle"
pattern $bS_POISON_CLOUD :: GroupName ItemKind
$mS_POISON_CLOUD :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_POISON_CLOUD = GroupName "poison cloud"
pattern $bS_PING_PLASH :: GroupName ItemKind
$mS_PING_PLASH :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_PING_PLASH = GroupName "ping and flash"
pattern $bS_VIOLENT_BURNING_OIL_2 :: GroupName ItemKind
$mS_VIOLENT_BURNING_OIL_2 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_BURNING_OIL_2 = GroupName "violent burning oil 2"
pattern $bS_VIOLENT_BURNING_OIL_3 :: GroupName ItemKind
$mS_VIOLENT_BURNING_OIL_3 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_BURNING_OIL_3 = GroupName "violent burning oil 3"
pattern $bS_VIOLENT_BURNING_OIL_4 :: GroupName ItemKind
$mS_VIOLENT_BURNING_OIL_4 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_VIOLENT_BURNING_OIL_4 = GroupName "violent burning oil 4"
pattern $bS_BURNING_OIL_2 :: GroupName ItemKind
$mS_BURNING_OIL_2 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_BURNING_OIL_2 = GroupName "burning oil 2"
pattern $bS_BURNING_OIL_3 :: GroupName ItemKind
$mS_BURNING_OIL_3 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_BURNING_OIL_3 = GroupName "burning oil 3"
pattern $bS_BURNING_OIL_4 :: GroupName ItemKind
$mS_BURNING_OIL_4 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_BURNING_OIL_4 = GroupName "burning oil 4"
pattern $bS_FOCUSED_BURNING_OIL_2 :: GroupName ItemKind
$mS_FOCUSED_BURNING_OIL_2 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_BURNING_OIL_2 = GroupName "focused burning oil 2"
pattern $bS_FOCUSED_BURNING_OIL_3 :: GroupName ItemKind
$mS_FOCUSED_BURNING_OIL_3 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_BURNING_OIL_3 = GroupName "focused burning oil 3"
pattern $bS_FOCUSED_BURNING_OIL_4 :: GroupName ItemKind
$mS_FOCUSED_BURNING_OIL_4 :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
S_FOCUSED_BURNING_OIL_4 = GroupName "focused burning oil 4"

firecrackerAt :: Int -> GroupName ItemKind
firecrackerAt :: Int -> GroupName ItemKind
firecrackerAt Int
n = Text -> GroupName ItemKind
forall c. Text -> GroupName c
GroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ Text
"firecracker" Text -> Text -> Text
<+> Int -> Text
forall a. Show a => a -> Text
tshow Int
n

blastNoStatOf :: GroupName ItemKind -> GroupName ItemKind
blastNoStatOf :: GroupName ItemKind -> GroupName ItemKind
blastNoStatOf GroupName ItemKind
grp = Text -> GroupName ItemKind
forall c. Text -> GroupName c
GroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Text
forall c. GroupName c -> Text
fromGroupName GroupName ItemKind
grp Text -> Text -> Text
<+> Text
"mist"

blastBonusStatOf :: GroupName ItemKind -> GroupName ItemKind
blastBonusStatOf :: GroupName ItemKind -> GroupName ItemKind
blastBonusStatOf GroupName ItemKind
grp = Text -> GroupName ItemKind
forall c. Text -> GroupName c
GroupName (Text -> GroupName ItemKind) -> Text -> GroupName ItemKind
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Text
forall c. GroupName c -> Text
fromGroupName GroupName ItemKind
grp Text -> Text -> Text
<+> Text
"dew"

pattern $bARMOR_MISC :: GroupName ItemKind
$mARMOR_MISC :: forall r. GroupName ItemKind -> (Void# -> r) -> (Void# -> r) -> r
ARMOR_MISC = GroupName "miscellaneous armor"

-- * Content

blasts :: [ItemKind]
blasts :: [ItemKind]
blasts =
  [ItemKind
spreadBurningOil2, ItemKind
spreadBurningOil3, ItemKind
spreadBurningOil4, ItemKind
spreadBurningOil82, ItemKind
spreadBurningOil83, ItemKind
spreadBurningOil84, ItemKind
focusedBurningOil2, ItemKind
focusedBurningOil3, ItemKind
focusedBurningOil4, 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
defenselessnessRunout, ItemKind
resolutionDust, ItemKind
hasteSpray, ItemKind
spreadNitrogen, ItemKind
spreadNitrogen8, ItemKind
focusedNitrogen, ItemKind
eyeDrop, ItemKind
ironFiling, ItemKind
smellyDroplet, ItemKind
eyeShine, ItemKind
whiskeySpray, ItemKind
youthSprinkle, ItemKind
poisonCloud, ItemKind
pingFlash, 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]

spreadBurningOil2,    spreadBurningOil3, spreadBurningOil4, spreadBurningOil82, spreadBurningOil83, spreadBurningOil84, focusedBurningOil2, focusedBurningOil3, focusedBurningOil4, 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, defenselessnessRunout, resolutionDust, hasteSpray, spreadNitrogen, spreadNitrogen8, focusedNitrogen,  eyeDrop, ironFiling, smellyDroplet, eyeShine, whiskeySpray, youthSprinkle, poisonCloud, pingFlash, 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

spreadBurningOil :: Int -> GroupName ItemKind -> ItemKind
spreadBurningOil :: Int -> GroupName ItemKind -> ItemKind
spreadBurningOil Int
n GroupName ItemKind
grp = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"burning oil"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
grp, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Int -> Dice
intToDice (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2)
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"sear"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
10 (Int -> Int) -> Int -> Int
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int
forall a. Ord a => a -> a -> a
min Int
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` Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
10)
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
2 ]
  , ieffects :: [Effect]
ieffects = [ Dice -> Effect
Burn Dice
1
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_PACIFIED (Dice
2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
2) ]
                   -- slips and frantically puts out fire
  , idesc :: Text
idesc    = Text
"Sticky oil, burning brightly."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadBurningOil2 :: ItemKind
spreadBurningOil2 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil Int
2 GroupName ItemKind
S_VIOLENT_BURNING_OIL_2
                      -- 2 steps, 2 turns
spreadBurningOil3 :: ItemKind
spreadBurningOil3 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil Int
3 GroupName ItemKind
S_VIOLENT_BURNING_OIL_3
                      -- 2 steps, 2 turns
spreadBurningOil4 :: ItemKind
spreadBurningOil4 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil Int
4 GroupName ItemKind
S_VIOLENT_BURNING_OIL_4
                      -- 4 steps, 2 turns
spreadBurningOil8 :: Int -> GroupName ItemKind -> ItemKind
spreadBurningOil8 :: Int -> GroupName ItemKind -> ItemKind
spreadBurningOil8 Int
n GroupName ItemKind
grp = (Int -> GroupName ItemKind -> ItemKind
spreadBurningOil (Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2) GroupName ItemKind
grp)
  { icount :: Dice
icount   = Dice
7  -- 8 was too deadly
  }
spreadBurningOil82 :: ItemKind
spreadBurningOil82 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil8 Int
2 GroupName ItemKind
S_BURNING_OIL_2
spreadBurningOil83 :: ItemKind
spreadBurningOil83 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil8 Int
3 GroupName ItemKind
S_BURNING_OIL_3
spreadBurningOil84 :: ItemKind
spreadBurningOil84 = Int -> GroupName ItemKind -> ItemKind
spreadBurningOil8 Int
4 GroupName ItemKind
S_BURNING_OIL_4
focusedBurningOil :: Int -> GroupName ItemKind -> GroupName ItemKind -> ItemKind
focusedBurningOil :: Int -> GroupName ItemKind -> GroupName ItemKind -> ItemKind
focusedBurningOil Int
n GroupName ItemKind
grp GroupName ItemKind
grpExplode = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"igniting oil"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
grp, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]  -- all ignitions yellow to avoid appearing
                                    -- as a small vial explosion
  , icount :: Dice
icount   = Int -> Dice
intToDice Int
n
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"ignite"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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 GroupName ItemKind
grpExplode]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadBurningOil2
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
focusedBurningOil2 :: ItemKind
focusedBurningOil2 = Int -> GroupName ItemKind -> GroupName ItemKind -> ItemKind
focusedBurningOil Int
2 GroupName ItemKind
S_FOCUSED_BURNING_OIL_2 GroupName ItemKind
S_BURNING_OIL_2
focusedBurningOil3 :: ItemKind
focusedBurningOil3 = Int -> GroupName ItemKind -> GroupName ItemKind -> ItemKind
focusedBurningOil Int
3 GroupName ItemKind
S_FOCUSED_BURNING_OIL_3 GroupName ItemKind
S_BURNING_OIL_3
focusedBurningOil4 :: ItemKind
focusedBurningOil4 = Int -> GroupName ItemKind -> GroupName ItemKind -> ItemKind
focusedBurningOil Int
4 GroupName ItemKind
S_FOCUSED_BURNING_OIL_4 GroupName ItemKind
S_BURNING_OIL_4
firecracker :: Int -> ItemKind
firecracker :: Int -> ItemKind
firecracker Int
n = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"firecracker"
  , ifreq :: Freqs ItemKind
ifreq    = [(if Int
n Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
5
                 then GroupName ItemKind
S_FIRECRACKER
                 else Int -> GroupName ItemKind
firecrackerAt Int
n, Int
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
+ Int
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
<= Int
3 then Int
1 Int -> Int -> Dice
`d` Int -> Int -> Int
forall a. Ord a => a -> a -> a
min Int
2 Int
n else Dice
2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
2
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
4 then Text
"singe" else Text
"crack"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , 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
$ Int
1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2 ]
  , ieffects :: [Effect]
ieffects = [if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
4 then Dice -> Effect
Burn Dice
1 else Int -> Effect
RefillCalm (-Int
2)]
               [Effect] -> [Effect] -> [Effect]
forall a. [a] -> [a] -> [a]
++ [Int -> Dice -> Effect
Discharge Int
1 Dice
30 | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
3]
               [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
$ Int -> GroupName ItemKind
firecrackerAt (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
2]
  , idesc :: Text
idesc    = Text
"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 Int
5
firecracker4 :: ItemKind
firecracker4 = Int -> ItemKind
firecracker Int
4
firecracker3 :: ItemKind
firecracker3 = Int -> ItemKind
firecracker Int
3
firecracker2 :: ItemKind
firecracker2 = Int -> ItemKind
firecracker Int
2
firecracker1 :: ItemKind
firecracker1 = Int -> ItemKind
firecracker Int
1

-- * Focused blasts

spreadFragmentation :: ItemKind
spreadFragmentation = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"fragmentation burst"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_VIOLENT_FRAGMENTATION, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Red]
  , icount :: Dice
icount   = Dice
8  -- strong but few, so not always hits target
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"tear apart"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Int
3 Int -> Int -> Dice
`d` Int
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 Int
100 Int
20 Int
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 Dice
3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -Dice
12 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
5 ]
  , ieffects :: [Effect]
ieffects = [Int -> Int -> CStore -> GroupName ItemKind -> Effect
DropItem Int
1 Int
1 CStore
COrgan GroupName ItemKind
CONDITION]
  , idesc :: Text
idesc    = Text
"Flying shards, flame and smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFragmentation8 :: ItemKind
spreadFragmentation8 = ItemKind
spreadFragmentation
  { ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FRAGMENTATION, Int
1)]
  , icount :: Dice
icount   = Dice
5
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
100 Int
10 Int
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 Dice
3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -Dice
12 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
5 ]
      -- smaller radius, so worse for area effect, but twice the direct damage
  }
focusedFragmentation :: ItemKind
focusedFragmentation = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"deflagration ignition"  -- black powder
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FOCUSED_FRAGMENTATION, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Dice
3  -- 15 in total vs 8, higher spread
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"ignite"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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 GroupName ItemKind
S_FRAGMENTATION]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadFragmentation
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadConcussion :: ItemKind
spreadConcussion = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"concussion blast"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_VIOLENT_CONCUSSION, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Magenta]
  , icount :: Dice
icount   = Dice
12  -- pushing sometimes gets the victim out of attacker range,
                   -- but also sometimes moves to a position hit again later
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"shock"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Int
1 Int -> Int -> Dice
`d` Int
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 Int
100 Int
20 Int
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 Dice
3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -Dice
8 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
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 Int
1 CStore
CEqp GroupName ItemKind
ARMOR_MISC
               , ThrowMod -> Effect
PushActor (Int -> Int -> Int -> ThrowMod
ThrowMod Int
400 Int
25 Int
1)  -- 1 step, fast; after DropItem
                   -- this produces spam for braced actors; too bad
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_IMMOBILE Dice
1  -- no balance
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_DEAFENED Dice
23 ]
  , idesc :: Text
idesc    = Text
"Shock wave, hot gases, some fire and smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadConcussion8 :: ItemKind
spreadConcussion8 = ItemKind
spreadConcussion
  { ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_CONCUSSION, Int
1)]
  , icount :: Dice
icount   = Dice
6
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
100 Int
10 Int
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 Dice
3, Skill -> Dice -> Aspect
AddSkill Skill
SkHurtMelee (Dice -> Aspect) -> Dice -> Aspect
forall a b. (a -> b) -> a -> b
$ -Dice
8 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
5 ]
  }
focusedConcussion :: ItemKind
focusedConcussion = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"detonation ignition"  -- nitroglycerine
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FOCUSED_CONCUSSION, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Dice
4  -- 24 in total vs 12, higher spread, less harm from pushing
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"ignite"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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 GroupName ItemKind
S_CONCUSSION]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadConcussion
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFlash :: ItemKind
spreadFlash = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"magnesium flash"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_VIOLENT_FLASH, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrWhite]
  , icount :: Dice
icount   = Dice
13
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"dazzle"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
100 Int
20 Int
4  -- 4 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
5 ]
  , ieffects :: [Effect]
ieffects = [ GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_BLIND Dice
5
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_WEAKENED Dice
20 ]
                 -- Wikipedia says: blind for five seconds and afterimage
                 -- for much longer, harming aim
  , idesc :: Text
idesc    = Text
"A very bright flash of fire, causing long-lasting afterimages."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadFlash8 :: ItemKind
spreadFlash8 = ItemKind
spreadFlash
  { iname :: Text
iname    = Text
"spark"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SPARK, Int
1)]
  , icount :: Dice
icount   = Dice
5
  , iverbHit :: Text
iverbHit = Text
"singe"
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
100 Int
10 Int
2  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
5 ]
  }
focusedFlash :: ItemKind
focusedFlash = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"magnesium ignition"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FOCUSED_FLASH, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Dice
5  -- 25 in total vs 13, higher spread
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"ignite"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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 GroupName ItemKind
S_SPARK]
  , idesc :: Text
idesc    = ItemKind -> Text
idesc ItemKind
spreadFlash
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
singleSpark :: ItemKind
singleSpark = ItemKind
spreadFlash
  { iname :: Text
iname    = Text
"single spark"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SINGLE_SPARK, Int
1)]  -- too weak to start a fire
  , icount :: Dice
icount   = Dice
1
  , iverbHit :: Text
iverbHit = Text
"spark"
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
3 ]
  , ieffects :: [Effect]
ieffects = []
  , idesc :: Text
idesc    = Text
"A glowing ember."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
glassPiece :: ItemKind
glassPiece = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"glass piece"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_GLASS_HAIL, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Blue]
  , icount :: Dice
icount   = Dice
6
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"cut"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Int
2 Int -> Int -> Dice
`d` Int
1
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
100 Int
10 Int
4  -- 2 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
$ -Dice
15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
5 ]
                 -- brittle, not too dense; armor blocks
  , ieffects :: [Effect]
ieffects = []
  , idesc :: Text
idesc    = Text
"Swift, sharp edges."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
focusedGlass :: ItemKind
focusedGlass = ItemKind
glassPiece  -- when blowing up windows
  { ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FOCUSED_GLASS_HAIL, Int
1)]
  , icount :: Dice
icount   = Dice
2
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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
$ -Dice
15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
* Dice
5 ]
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash (Effect -> Effect) -> Effect -> Effect
forall a b. (a -> b) -> a -> b
$ GroupName ItemKind -> Effect
Explode GroupName ItemKind
S_GLASS_HAIL]
  }

-- * Assorted blasts that don't induce conditions or not used mainly for them

fragrance :: ItemKind
fragrance = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"fragrance"  -- instant, fast fragrance
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FRAGRANCE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Magenta]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"engulf"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
200 Int
5 Int
1  -- 2 steps, .5 turn (necklaces)
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
Impress, GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_ROSE_SMELLING Dice
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    = Text
"A pleasant scent."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
pheromone :: ItemKind
pheromone = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"musky whiff"  -- a kind of mist rather than fragrance
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_PHEROMONE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrMagenta]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"tempt"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
Dominate]
  , idesc :: Text
idesc    = Text
"A sharp, strong scent."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistCalming :: ItemKind
mistCalming = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind  -- unused
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_CALMING_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrGreen]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"sooth"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillCalm Int
2]
  , idesc :: Text
idesc    = Text
"A soothing, gentle cloud."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
odorDistressing :: ItemKind
odorDistressing = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"distressing whiff"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_DISTRESSING_ODOR, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrRed]  -- salmon
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"distress"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
10  -- 2 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [ Int -> Effect
RefillCalm (-Int
10)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_FOUL_SMELLING (Dice
20 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
5)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_IMPATIENT (Dice
2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
2) ]
  , idesc :: Text
idesc    = Text
"It turns the stomach."  -- and so can't stand still
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistHealing :: ItemKind
mistHealing = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"  -- powerful, so slow and narrow
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_HEALING_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrGreen]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"revitalize"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
1 ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP Int
2]
  , idesc :: Text
idesc    = Text
"It fills the air with light and life."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistHealing2 :: ItemKind
mistHealing2 = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_HEALING_MIST_2, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Green]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"revitalize"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
2 ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP Int
4]
  , idesc :: Text
idesc    = Text
"At its touch, wounds close and bruises fade."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistWounding :: ItemKind
mistWounding = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_WOUNDING_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrRed]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"devitalize"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Int -> Effect
RefillHP (-Int
2)]
  , idesc :: Text
idesc    = Text
"The air itself stings and itches."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
distortion :: ItemKind
distortion = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'v'
  , iname :: Text
iname    = Text
"vortex"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_DISTORTION, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
White]
  , icount :: Dice
icount   = Dice
8  -- braced are immune to Teleport; avoid failure messages
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"engulf"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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
$ Dice
15 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
10]
  , idesc :: Text
idesc    = Text
"The air shifts oddly, as though light is being warped."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
smoke :: ItemKind
smoke = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind  -- when stuff burns out  -- unused
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"smoke fume"  -- pluralizes better than 'smokes'
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SMOKE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrBlack]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"choke"  -- or "obscure"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
20  -- 4 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_WITHHOLDING (Dice
5 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
                  -- choking and tears, can roughly see, but not aim
  , idesc :: Text
idesc    = Text
"Twirling clouds of grey smoke."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
boilingWater :: ItemKind
boilingWater = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"boiling water"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_BOILING_WATER, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
White]
  , icount :: Dice
icount   = Dice
17  -- 18 causes 3 particles to hit the same actor 3 tiles away
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"boil"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
30  -- 6 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Dice -> Effect
Burn Dice
1]
  , idesc :: Text
idesc    = Text
"It bubbles and hisses."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
glue :: ItemKind
glue = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"hoof glue"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_GLUE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Cyan]
  , icount :: Dice
icount   = Dice
8  -- Paralyze doesn't stack; avoid failure messages
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"glue"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Dice -> Effect
Paralyze Dice
10]
  , idesc :: Text
idesc    = Text
"Thick and clinging."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
waste :: ItemKind
waste = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'*'
  , iname :: Text
iname    = Text
"waste piece"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_WASTE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Brown]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"splosh"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [ GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_FOUL_SMELLING (Dice
30 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
10)
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_DISPOSSESSED (Dice
10 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
5) ]
  , idesc :: Text
idesc    = Text
"Sodden and foul-smelling."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistAntiSlow :: ItemKind
mistAntiSlow = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_ANTI_SLOW_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrYellow]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"propel"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
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 Int
1 Int
1 CStore
COrgan GroupName ItemKind
S_SLOWED]
  , idesc :: Text
idesc    = Text
"A cleansing rain."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistAntidote :: ItemKind
mistAntidote = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_ANTIDOTE_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrBlue]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"cure"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
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 Int
1 Int
forall a. Bounded a => a
maxBound CStore
COrgan GroupName ItemKind
S_POISONED]
  , idesc :: Text
idesc    = Text
"Washes away death's dew."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
mistSleep :: ItemKind
mistSleep = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SLEEP_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrMagenta]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"put to sleep"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [Effect
PutToSleep]
  , idesc :: Text
idesc    = Text
"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 = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"dense shower"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_DENSE_SHOWER, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Green]
  , icount :: Dice
icount   = Dice
12
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"strengthen"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_STRENGTHENED Dice
5]
  , idesc :: Text
idesc    = Text
"A thick rain of droplets."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
sparseShower :: ItemKind
sparseShower = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"sparse shower"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SPARSE_SHOWER, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Red]
  , icount :: Dice
icount   = Dice
8
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"weaken"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_WEAKENED Dice
7]
  , idesc :: Text
idesc    = Text
"Light droplets that cling to clothing."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
protectingBalmMelee :: ItemKind
protectingBalmMelee = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"balm droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_MELEE_PROTECTIVE_BALM, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Brown]
  , icount :: Dice
icount   = Dice
6
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"balm"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
0  -- 0 steps, 1 turn
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_PROTECTED_FROM_MELEE (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"A thick ointment that hardens the skin."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
protectingBalmRanged :: ItemKind
protectingBalmRanged = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"balm droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_RANGE_PROTECTIVE_BALM, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrYellow]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"balm"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_PROTECTED_FROM_RANGED (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"Grease that protects from flying death."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
defenselessnessRunout :: ItemKind
defenselessnessRunout = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'?'
  , iname :: Text
iname    = Text
"PhD defense question"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_DEFENSELESSNESS_RUNOUT, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrRed]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"nag"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_DEFENSELESS (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"Only the most learned make use of this."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
resolutionDust :: ItemKind
resolutionDust = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"resolution dust"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_RESOLUTION_DUST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Brown]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"calm"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_RESOLUTE (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
                 -- short enough duration that @calmEnough@ not a big problem
  , idesc :: Text
idesc    = Text
"A handful of honest earth, to strengthen the soul."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
hasteSpray :: ItemKind
hasteSpray = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"haste spray"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_HASTE_SPRAY, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrYellow]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"haste"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_HASTED (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"A quick spurt."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadNitrogen :: ItemKind
spreadNitrogen = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"slowness mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_VIOLENT_SLOWNESS_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
BrBlack]
  , icount :: Dice
icount   = Dice
15
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"freeze"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
10  -- 2 steps, 2 turns, mist, slow
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_SLOWED (Dice
2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"Colourless cold clammy fog, making each movement an effort."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
spreadNitrogen8 :: ItemKind
spreadNitrogen8 = ItemKind
spreadNitrogen
  { ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SLOWNESS_MIST, Int
1)]
  , icount :: Dice
icount   = Dice
7
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
5  -- 1 step, 1 turn, mist, slow
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  }
focusedNitrogen :: ItemKind
focusedNitrogen = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"slowness mist droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_FOCUSED_SLOWNESS_MIST, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
White]
  , icount :: Dice
icount   = Dice
4 -- 28 in total vs 15, higher spread
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"freeze"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toLinger Int
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 GroupName ItemKind
S_SLOWNESS_MIST
               , GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_SLOWED (Dice
2 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3) ]
  , idesc :: Text
idesc    = Text
"Colourless and colder than ice."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
eyeDrop :: ItemKind
eyeDrop = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"eye drop"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_EYE_DROP, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrCyan]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"cleanse"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_FAR_SIGHTED (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"Not to be taken orally."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
ironFiling :: ItemKind
ironFiling = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind  -- fast, short, strongly blinding blast
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"iron filing"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_IRON_FILING, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipPlain [Color
Red]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"blind"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
S_BLIND (Dice
10 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
10)]
  , idesc :: Text
idesc    = Text
"A shaving of bright metal."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
smellyDroplet :: ItemKind
smellyDroplet = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"smelly droplet"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_SMELLY_DROPLET, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Blue]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"sensitize"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_KEEN_SMELLING (Dice
5 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"A viscous lump that stains the skin."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
eyeShine :: ItemKind
eyeShine = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"eye shine"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_EYE_SHINE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Cyan]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"smear"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_SHINY_EYED (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"They almost glow in the dark."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
whiskeySpray :: ItemKind
whiskeySpray = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"whiskey spray"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_WHISKEY_SPRAY, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Brown]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"inebriate"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_DRUNK (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"It burns in the best way."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
youthSprinkle :: ItemKind
youthSprinkle = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"youth sprinkle"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_YOUTH_SPRINKLE, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrGreen]
  , icount :: Dice
icount   = Dice
16
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"sprinkle"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [Int -> Aspect
toLinger Int
10, Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast]
  , ieffects :: [Effect]
ieffects = [ GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
S_ROSE_SMELLING (Dice
40 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
20)
               , GroupName ItemKind -> Effect
toOrganNoTimer GroupName ItemKind
S_REGENERATING ]
  , idesc :: Text
idesc    = Text
"Bright and smelling of the Spring."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
poisonCloud :: ItemKind
poisonCloud = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"poison cloud"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_POISON_CLOUD, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
BrMagenta]
  , icount :: Dice
icount   = Dice
11  -- low, to be less deadly in a tunnel, compared to single hit
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"poison"
  , iweight :: Int
iweight  = Int
0  -- lingers, blocking path
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
10 Int
100 Int
2  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Effect
toOrganNoTimer GroupName ItemKind
S_POISONED]
  , idesc :: Text
idesc    = Text
"Choking gas that stings the eyes."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
pingFlash :: ItemKind
pingFlash = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"flash"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind
S_PING_PLASH, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
Green]
  , icount :: Dice
icount   = Dice
1
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"ping"
  , iweight :: Int
iweight  = Int
1  -- to prevent blocking the way
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ ThrowMod -> Aspect
ToThrow (ThrowMod -> Aspect) -> ThrowMod -> Aspect
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int -> ThrowMod
ThrowMod Int
200 Int
0 Int
1  -- 1 step, .5 turn (necklaces)
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast
               , Skill -> Dice -> Aspect
AddSkill Skill
SkShine Dice
2 ]
  , ieffects :: [Effect]
ieffects = [Effect -> Effect
OnSmash Effect
Yell]
  , idesc :: Text
idesc    = Text
"A ping and a display flash from an echolocator out of sync momentarily."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastNoStat :: GroupName ItemKind -> ItemKind
blastNoStat :: GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
grp = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"mist"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind -> GroupName ItemKind
blastNoStatOf GroupName ItemKind
grp, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
White]
  , icount :: Dice
icount   = Dice
12
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"drain"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganBad GroupName ItemKind
grp (Dice
3 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
3)]
  , idesc :: Text
idesc    = Text
"Completely disables one personal faculty."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastNoSkMove :: ItemKind
blastNoSkMove = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_IMMOBILE
blastNoSkMelee :: ItemKind
blastNoSkMelee = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_PACIFIED
blastNoSkDisplace :: ItemKind
blastNoSkDisplace = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_IRREPLACEABLE
blastNoSkAlter :: ItemKind
blastNoSkAlter = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_RETAINING
blastNoSkWait :: ItemKind
blastNoSkWait = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_IMPATIENT
blastNoSkMoveItem :: ItemKind
blastNoSkMoveItem = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_DISPOSSESSED
blastNoSkProject :: ItemKind
blastNoSkProject = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_WITHHOLDING
blastNoSkApply :: ItemKind
blastNoSkApply = GroupName ItemKind -> ItemKind
blastNoStat GroupName ItemKind
S_PARSIMONIOUS
blastBonusStat :: GroupName ItemKind -> ItemKind
blastBonusStat :: GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
grp = ItemKind :: ContentSymbol ItemKind
-> Text
-> Freqs ItemKind
-> [Flavour]
-> Dice
-> Rarity
-> Text
-> Int
-> Dice
-> [Aspect]
-> [Effect]
-> [(GroupName ItemKind, CStore)]
-> Text
-> ItemKind
ItemKind
  { isymbol :: ContentSymbol ItemKind
isymbol  = ContentSymbol ItemKind -> ContentSymbol ItemKind
forall c. ContentSymbol ItemKind -> ContentSymbol ItemKind
toContentSymbol ContentSymbol ItemKind
'`'
  , iname :: Text
iname    = Text
"dew"
  , ifreq :: Freqs ItemKind
ifreq    = [(GroupName ItemKind -> GroupName ItemKind
blastBonusStatOf GroupName ItemKind
grp, Int
1)]
  , iflavour :: [Flavour]
iflavour = [Color] -> [Flavour]
zipFancy [Color
White]
  , icount :: Dice
icount   = Dice
12
  , irarity :: Rarity
irarity  = [(Double
1, Int
1)]
  , iverbHit :: Text
iverbHit = Text
"elevate"
  , iweight :: Int
iweight  = Int
1
  , idamage :: Dice
idamage  = Dice
0
  , iaspects :: [Aspect]
iaspects = [ Int -> Aspect
toVelocity Int
10  -- 2 steps, 2 turns
               , Flag -> Aspect
SetFlag Flag
Fragile, Flag -> Aspect
SetFlag Flag
Blast ]
  , ieffects :: [Effect]
ieffects = [GroupName ItemKind -> Dice -> Effect
toOrganGood GroupName ItemKind
grp (Dice
20 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ Int
1 Int -> Int -> Dice
`d` Int
5)]
  , idesc :: Text
idesc    = Text
"Temporarily enhances the given personal faculty."
  , ikit :: [(GroupName ItemKind, CStore)]
ikit     = []
  }
blastBonusSkMove :: ItemKind
blastBonusSkMove = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_MOBILE
blastBonusSkMelee :: ItemKind
blastBonusSkMelee = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_COMBATIVE
blastBonusSkDisplace :: ItemKind
blastBonusSkDisplace = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_DISPLACING
blastBonusSkAlter :: ItemKind
blastBonusSkAlter = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_MODIFYING
blastBonusSkWait :: ItemKind
blastBonusSkWait = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_PATIENT
blastBonusSkMoveItem :: ItemKind
blastBonusSkMoveItem = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_TIDY
blastBonusSkProject :: ItemKind
blastBonusSkProject = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_PROJECTING
blastBonusSkApply :: ItemKind
blastBonusSkApply = GroupName ItemKind -> ItemKind
blastBonusStat GroupName ItemKind
S_MORE_PRACTICAL