    -- | 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 $mS_FIRECRACKER :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FIRECRACKER :: GroupName ItemKind
    S_FIRECRACKER = GroupName "firecracker"
    pattern $mS_VIOLENT_FRAGMENTATION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_FRAGMENTATION :: GroupName ItemKind
    S_VIOLENT_FRAGMENTATION = GroupName "violent fragmentation"
    pattern $mS_FRAGMENTATION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FRAGMENTATION :: GroupName ItemKind
    S_FRAGMENTATION = GroupName "fragmentation"
    pattern $mS_FOCUSED_FRAGMENTATION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_FRAGMENTATION :: GroupName ItemKind
    S_FOCUSED_FRAGMENTATION = GroupName "focused fragmentation"
    pattern $mS_VIOLENT_CONCUSSION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_CONCUSSION :: GroupName ItemKind
    S_VIOLENT_CONCUSSION = GroupName "violent concussion"
    pattern $mS_CONCUSSION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_CONCUSSION :: GroupName ItemKind
    S_CONCUSSION = GroupName "concussion"
    pattern $mS_FOCUSED_CONCUSSION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_CONCUSSION :: GroupName ItemKind
    S_FOCUSED_CONCUSSION = GroupName "focused concussion"
    pattern $mS_VIOLENT_FLASH :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_FLASH :: GroupName ItemKind
    S_VIOLENT_FLASH = GroupName "violent flash"
    pattern $mS_FOCUSED_FLASH :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_FLASH :: GroupName ItemKind
    S_FOCUSED_FLASH = GroupName "focused flash"
    pattern $mS_GLASS_HAIL :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_GLASS_HAIL :: GroupName ItemKind
    S_GLASS_HAIL = GroupName "glass hail"
    pattern $mS_FOCUSED_GLASS_HAIL :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_GLASS_HAIL :: GroupName ItemKind
    S_FOCUSED_GLASS_HAIL = GroupName "focused glass hail"
    pattern $mS_PHEROMONE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_PHEROMONE :: GroupName ItemKind
    S_PHEROMONE = GroupName "pheromone"
    pattern $mS_CALMING_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_CALMING_MIST :: GroupName ItemKind
    S_CALMING_MIST = GroupName "calming mist"
    pattern $mS_DISTRESSING_ODOR :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_DISTRESSING_ODOR :: GroupName ItemKind
    S_DISTRESSING_ODOR = GroupName "distressing odor"
    pattern $mS_HEALING_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_HEALING_MIST :: GroupName ItemKind
    S_HEALING_MIST = GroupName "healing mist"
    pattern $mS_HEALING_MIST_2 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_HEALING_MIST_2 :: GroupName ItemKind
    S_HEALING_MIST_2 = GroupName "strong healing mist"
    pattern $mS_WOUNDING_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_WOUNDING_MIST :: GroupName ItemKind
    S_WOUNDING_MIST = GroupName "wounding mist"
    pattern $mS_DISTORTION :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_DISTORTION :: GroupName ItemKind
    S_DISTORTION = GroupName "distortion"
    pattern $mS_SMOKE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_SMOKE :: GroupName ItemKind
    S_SMOKE = GroupName "smoke"
    pattern $mS_BOILING_WATER :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_BOILING_WATER :: GroupName ItemKind
    S_BOILING_WATER = GroupName "boiling water"
    pattern $mS_GLUE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_GLUE :: GroupName ItemKind
    S_GLUE = GroupName "glue"
    pattern $mS_WASTE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_WASTE :: GroupName ItemKind
    S_WASTE = GroupName "waste"
    pattern $mS_ANTI_SLOW_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_ANTI_SLOW_MIST :: GroupName ItemKind
    S_ANTI_SLOW_MIST = GroupName "anti-slow mist"
    pattern $mS_ANTIDOTE_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_ANTIDOTE_MIST :: GroupName ItemKind
    S_ANTIDOTE_MIST = GroupName "antidote mist"
    pattern $mS_SLEEP_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_SLEEP_MIST :: GroupName ItemKind
    S_SLEEP_MIST = GroupName "sleep mist"
    pattern $mS_DENSE_SHOWER :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_DENSE_SHOWER :: GroupName ItemKind
    S_DENSE_SHOWER = GroupName "dense shower"
    pattern $mS_SPARSE_SHOWER :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_SPARSE_SHOWER :: GroupName ItemKind
    S_SPARSE_SHOWER = GroupName "sparse shower"
    pattern $mS_MELEE_PROTECTIVE_BALM :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_MELEE_PROTECTIVE_BALM :: GroupName ItemKind
    S_MELEE_PROTECTIVE_BALM = GroupName "melee protective balm"
    pattern $mS_RANGE_PROTECTIVE_BALM :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_RANGE_PROTECTIVE_BALM :: GroupName ItemKind
    S_RANGE_PROTECTIVE_BALM = GroupName "ranged protective balm"
    pattern $mS_DEFENSELESSNESS_RUNOUT :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_DEFENSELESSNESS_RUNOUT :: GroupName ItemKind
    S_DEFENSELESSNESS_RUNOUT = GroupName "PhD defense question"
    pattern $mS_RESOLUTION_DUST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_RESOLUTION_DUST :: GroupName ItemKind
    S_RESOLUTION_DUST = GroupName "resolution dust"
    pattern $mS_HASTE_SPRAY :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_HASTE_SPRAY :: GroupName ItemKind
    S_HASTE_SPRAY = GroupName "haste spray"
    pattern $mS_VIOLENT_SLOWNESS_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_SLOWNESS_MIST :: GroupName ItemKind
    S_VIOLENT_SLOWNESS_MIST = GroupName "violent nitrogen mist"
    pattern $mS_SLOWNESS_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_SLOWNESS_MIST :: GroupName ItemKind
    S_SLOWNESS_MIST = GroupName "nitrogen mist"
    pattern $mS_FOCUSED_SLOWNESS_MIST :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_SLOWNESS_MIST :: GroupName ItemKind
    S_FOCUSED_SLOWNESS_MIST = GroupName "focused nitrogen mist"
    pattern $mS_EYE_DROP :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_EYE_DROP :: GroupName ItemKind
    S_EYE_DROP = GroupName "eye drop"
    pattern $mS_IRON_FILING :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_IRON_FILING :: GroupName ItemKind
    S_IRON_FILING = GroupName "iron filing"
    pattern $mS_SMELLY_DROPLET :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_SMELLY_DROPLET :: GroupName ItemKind
    S_SMELLY_DROPLET = GroupName "smelly droplet"
    pattern $mS_EYE_SHINE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_EYE_SHINE :: GroupName ItemKind
    S_EYE_SHINE = GroupName "eye shine"
    pattern $mS_WHISKEY_SPRAY :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_WHISKEY_SPRAY :: GroupName ItemKind
    S_WHISKEY_SPRAY = GroupName "whiskey spray"
    pattern $mS_YOUTH_SPRINKLE :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_YOUTH_SPRINKLE :: GroupName ItemKind
    S_YOUTH_SPRINKLE = GroupName "youth sprinkle"
    pattern $mS_POISON_CLOUD :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_POISON_CLOUD :: GroupName ItemKind
    S_POISON_CLOUD = GroupName "poison cloud"
    pattern $mS_PING_PLASH :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_PING_PLASH :: GroupName ItemKind
    S_PING_PLASH = GroupName "ping and flash"
    pattern $mS_VIOLENT_BURNING_OIL_2 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_BURNING_OIL_2 :: GroupName ItemKind
    S_VIOLENT_BURNING_OIL_2 = GroupName "violent burning oil 2"
    pattern $mS_VIOLENT_BURNING_OIL_3 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_BURNING_OIL_3 :: GroupName ItemKind
    S_VIOLENT_BURNING_OIL_3 = GroupName "violent burning oil 3"
    pattern $mS_VIOLENT_BURNING_OIL_4 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_VIOLENT_BURNING_OIL_4 :: GroupName ItemKind
    S_VIOLENT_BURNING_OIL_4 = GroupName "violent burning oil 4"
    pattern $mS_BURNING_OIL_2 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_BURNING_OIL_2 :: GroupName ItemKind
    S_BURNING_OIL_2 = GroupName "burning oil 2"
    pattern $mS_BURNING_OIL_3 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_BURNING_OIL_3 :: GroupName ItemKind
    S_BURNING_OIL_3 = GroupName "burning oil 3"
    pattern $mS_BURNING_OIL_4 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_BURNING_OIL_4 :: GroupName ItemKind
    S_BURNING_OIL_4 = GroupName "burning oil 4"
    pattern $mS_FOCUSED_BURNING_OIL_2 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_BURNING_OIL_2 :: GroupName ItemKind
    S_FOCUSED_BURNING_OIL_2 = GroupName "focused burning oil 2"
    pattern $mS_FOCUSED_BURNING_OIL_3 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_BURNING_OIL_3 :: GroupName ItemKind
    S_FOCUSED_BURNING_OIL_3 = GroupName "focused burning oil 3"
    pattern $mS_FOCUSED_BURNING_OIL_4 :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bS_FOCUSED_BURNING_OIL_4 :: GroupName ItemKind
    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 $mARMOR_MISC :: forall {r}. GroupName ItemKind -> ((# #) -> r) -> ((# #) -> r) -> r
    $bARMOR_MISC :: GroupName ItemKind
    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
      { 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   = 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
      { 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
      { 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. HasCallStack => [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
      { 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    = [(S_FRAGMENTATION, 1)]
      , icount   = 5
      , iaspects = [ ToThrow $ ThrowMod 100 10 2  -- 2 steps, 1 turn
                   , SetFlag Lobable, SetFlag Fragile, SetFlag Blast
                   , AddSkill SkShine 3, AddSkill SkHurtMelee $ -12 * 5 ]
          -- smaller radius, so worse for area effect, but twice the direct damage
      }
    focusedFragmentation :: ItemKind
    focusedFragmentation = 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
      { 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    = [(S_CONCUSSION, 1)]
      , icount   = 6
      , iaspects = [ ToThrow $ ThrowMod 100 10 2  -- 2 steps, 1 turn
                   , SetFlag Lobable, SetFlag Fragile, SetFlag Blast
                   , AddSkill SkShine 3, AddSkill SkHurtMelee $ -8 * 5 ]
      }
    focusedConcussion :: ItemKind
    focusedConcussion = 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
      { 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    = "spark"
      , ifreq    = [(S_SPARK, 1)]
      , icount   = 5
      , iverbHit = "singe"
      , iaspects = [ ToThrow $ ThrowMod 100 10 2  -- 2 steps, 1 turn
                   , SetFlag Fragile, SetFlag Blast
                   , AddSkill SkShine 5 ]
      }
    focusedFlash :: ItemKind
    focusedFlash = 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    = "single spark"
      , ifreq    = [(S_SINGLE_SPARK, 1)]  -- too weak to start a fire
      , icount   = 1
      , iverbHit = "spark"
      , iaspects = [ toLinger 5  -- 1 step, 1 turn
                   , SetFlag Fragile, SetFlag Blast
                   , AddSkill SkShine 3 ]
      , ieffects = []
      , idesc    = "A glowing ember."
      , ikit     = []
      }
    glassPiece :: ItemKind
    glassPiece = 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    = [(S_FOCUSED_GLASS_HAIL, 1)]
      , icount   = 2
      , iaspects = [ toLinger 0  -- 0 steps, 1 turn
                   , SetFlag Fragile, SetFlag Blast
                   , AddSkill SkHurtMelee $ -15 * 5 ]
      , ieffects = [OnSmash $ Explode S_GLASS_HAIL]
      }

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

    fragrance :: ItemKind
    fragrance = 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
      { 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  -- 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
      { 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
      { 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
      { 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
      { 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
      { 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  -- 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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    = [(S_SLOWNESS_MIST, 1)]
      , icount   = 7
      , iaspects = [ toVelocity 5  -- 1 step, 1 turn, mist, slow
                   , SetFlag Fragile, SetFlag Blast ]
      }
    focusedNitrogen :: ItemKind
    focusedNitrogen = 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
      { 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  -- 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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
      { 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