module Content.ItemKindBlast
( 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.Flavour
blasts :: [ItemKind]
blasts =
[burningOil2, burningOil3, burningOil4, firecracker1, firecracker2, firecracker3, firecracker4, firecracker5, spreadFragmentation, spreadFragmentation8, focusedFragmentation, spreadConcussion, spreadConcussion8, focusedConcussion, spreadFlash, spreadFlash8, focusedFlash, singleSpark, glassPiece, focusedGlass, fragrance, pheromone, mistCalming, odorDistressing, mistHealing, mistHealing2, mistWounding, distortion, smoke, boilingWater, glue, waste, mistAntiSlow, mistAntidote, mistSleep, denseShower, sparseShower, protectingBalmMelee, protectingBalmRanged, vulnerabilityBalm, resolutionDust, hasteSpray, slownessMist, eyeDrop, ironFiling, smellyDroplet, eyeShine, whiskeySpray, youthSprinkle, poisonCloud, blastNoSkMove, blastNoSkMelee, blastNoSkDisplace, blastNoSkAlter, blastNoSkWait, blastNoSkMoveItem, blastNoSkProject, blastNoSkApply, blastBonusSkMove, blastBonusSkMelee, blastBonusSkDisplace, blastBonusSkAlter, blastBonusSkWait, blastBonusSkMoveItem, blastBonusSkProject, blastBonusSkApply]
++ [cruiseAdHologram, outerAdHologram, victoriaClassHologram, allureIntroHologram]
burningOil2, burningOil3, burningOil4, firecracker1, firecracker2, firecracker3, firecracker4, firecracker5, spreadFragmentation, spreadFragmentation8, focusedFragmentation, spreadConcussion, spreadConcussion8, focusedConcussion, spreadFlash, spreadFlash8, focusedFlash, singleSpark, glassPiece, focusedGlass, fragrance, pheromone, mistCalming, odorDistressing, mistHealing, mistHealing2, mistWounding, distortion, smoke, boilingWater, glue, waste, mistAntiSlow, mistAntidote, mistSleep, denseShower, sparseShower, protectingBalmMelee, protectingBalmRanged, vulnerabilityBalm, resolutionDust, hasteSpray, slownessMist, eyeDrop, ironFiling, smellyDroplet, eyeShine, whiskeySpray, youthSprinkle, poisonCloud, blastNoSkMove, blastNoSkMelee, blastNoSkDisplace, blastNoSkAlter, blastNoSkWait, blastNoSkMoveItem, blastNoSkProject, blastNoSkApply, blastBonusSkMove, blastBonusSkMelee, blastBonusSkDisplace, blastBonusSkAlter, blastBonusSkWait, blastBonusSkMoveItem, blastBonusSkProject, blastBonusSkApply :: ItemKind
cruiseAdHologram, outerAdHologram, victoriaClassHologram, allureIntroHologram :: ItemKind
burningOil :: Int -> ItemKind
burningOil n = ItemKind
{ isymbol = '*'
, iname = "burning oil"
, ifreq = [(toGroupName $ "burning oil" <+> tshow n, 1)]
, iflavour = zipPlain [BrYellow]
, icount = intToDice (4 + n * 4)
, irarity = [(1, 1)]
, iverbHit = "sear"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity (min 100 $ n `div` 2 * 10)
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 2 ]
, ieffects = [ Burn 1
, toOrganBad "pacified" (1 `d` 2) ]
, idesc = "Sticky oil, burning brightly."
, ikit = []
}
burningOil2 = burningOil 2
burningOil3 = burningOil 3
burningOil4 = burningOil 4
firecracker :: Int -> ItemKind
firecracker n = ItemKind
{ isymbol = '*'
, iname = "firecracker"
, ifreq = [(toGroupName $ if n == 5
then "firecracker"
else "firecracker" <+> tshow n, 1)]
, iflavour = zipPlain [brightCol !! ((n + 2) `mod` length brightCol)]
, icount = if n <= 3 then 1 `d` min 2 n else 2 + 1 `d` 2
, irarity = [(1, 1)]
, iverbHit = if n >= 4 then "singe" else "crack"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine $ intToDice $ 1 + n `div` 2 ]
, ieffects = [if n >= 4 then Burn 1 else RefillCalm (-2)]
++ [DropBestWeapon | n >= 4]
++ [ OnSmash $ Explode
$ toGroupName $ "firecracker" <+> tshow (n - 1)
| n >= 2 ]
, idesc = "Scraps of burnt paper, covering little pockets of black powder, buffeted by colorful explosions."
, ikit = []
}
firecracker5 = firecracker 5
firecracker4 = firecracker 4
firecracker3 = firecracker 3
firecracker2 = firecracker 2
firecracker1 = firecracker 1
spreadFragmentation = ItemKind
{ isymbol = '*'
, iname = "fragmentation burst"
, ifreq = [("violent fragmentation", 1)]
, iflavour = zipPlain [Red]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "tear apart"
, iweight = 1
, idamage = 3 `d` 1
, iaspects = [ ToThrow $ ThrowMod 100 20 4
, SetFlag Lobable, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 3, AddSkill SkHurtMelee $ -12 * 5 ]
, ieffects = [DropItem 1 1 COrgan "condition"]
, idesc = "Flying shards, flame and smoke."
, ikit = []
}
spreadFragmentation8 = spreadFragmentation
{ iname = "fragmentation burst"
, ifreq = [("fragmentation", 1)]
, icount = 8
, iaspects = [ ToThrow $ ThrowMod 100 10 2
, SetFlag Lobable, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 3, AddSkill SkHurtMelee $ -12 * 5 ]
}
focusedFragmentation = ItemKind
{ isymbol = '`'
, iname = "deflagration ignition"
, ifreq = [("focused fragmentation", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 4
, irarity = [(1, 1)]
, iverbHit = "ignite"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 0
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [OnSmash $ Explode "fragmentation"]
, idesc = idesc spreadFragmentation
, ikit = []
}
spreadConcussion = ItemKind
{ isymbol = '*'
, iname = "concussion blast"
, ifreq = [("violent concussion", 1)]
, iflavour = zipPlain [Magenta]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "shock"
, iweight = 1
, idamage = 1 `d` 1
, iaspects = [ ToThrow $ ThrowMod 100 20 4
, SetFlag Lobable, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 3, AddSkill SkHurtMelee $ -8 * 5 ]
, ieffects = [ DropItem maxBound 1 CEqp "misc armor"
, PushActor (ThrowMod 400 25 1)
, toOrganBad "immobile" 3
, toOrganBad "deafened" 23 ]
, idesc = "Shock wave, hot gases, some fire and smoke."
, ikit = []
}
spreadConcussion8 = spreadConcussion
{ iname = "concussion blast"
, ifreq = [("concussion", 1)]
, icount = 8
, iaspects = [ ToThrow $ ThrowMod 100 10 2
, SetFlag Lobable, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 3, AddSkill SkHurtMelee $ -8 * 5 ]
}
focusedConcussion = ItemKind
{ isymbol = '`'
, iname = "detonation ignition"
, ifreq = [("focused concussion", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 4
, irarity = [(1, 1)]
, iverbHit = "ignite"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 0
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [OnSmash $ Explode "concussion"]
, idesc = idesc spreadConcussion
, ikit = []
}
spreadFlash = ItemKind
{ isymbol = '`'
, iname = "magnesium flash"
, ifreq = [("violent flash", 1)]
, iflavour = zipPlain [BrWhite]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "dazzle"
, iweight = 1
, idamage = 0
, iaspects = [ ToThrow $ ThrowMod 100 20 4
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 5 ]
, ieffects = [toOrganBad "blind" 5, toOrganBad "weakened" 20]
, idesc = "A very bright flash of fire."
, ikit = []
}
spreadFlash8 = spreadFlash
{ iname = "spark"
, ifreq = [("spark", 1)]
, icount = 8
, iverbHit = "blind"
, iaspects = [ ToThrow $ ThrowMod 100 10 2
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 5 ]
}
focusedFlash = ItemKind
{ isymbol = '`'
, iname = "magnesium ignition"
, ifreq = [("focused flash", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 4
, irarity = [(1, 1)]
, iverbHit = "ignite"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 0
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [OnSmash $ Explode "spark"]
, idesc = idesc spreadFlash
, ikit = []
}
singleSpark = spreadFlash
{ iname = "single spark"
, ifreq = [("single spark", 1)]
, icount = 1
, iverbHit = "spark"
, iaspects = [ toLinger 5
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 3 ]
, ieffects = []
, idesc = "A glowing ember."
, ikit = []
}
glassPiece = ItemKind
{ isymbol = '*'
, iname = "glass piece"
, ifreq = [("glass hail", 1)]
, iflavour = zipPlain [Blue]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "cut"
, iweight = 1
, idamage = 2 `d` 1
, iaspects = [ ToThrow $ ThrowMod 100 20 4
, SetFlag Fragile, SetFlag Blast
, AddSkill SkHurtMelee $ -15 * 5 ]
, ieffects = []
, idesc = "Swift, sharp edges."
, ikit = []
}
focusedGlass = glassPiece
{ ifreq = [("focused glass hail", 1)]
, icount = 4
, iaspects = [ toLinger 0
, SetFlag Fragile, SetFlag Blast
, AddSkill SkHurtMelee $ -15 * 5 ]
, ieffects = [OnSmash $ Explode "glass hail"]
}
fragrance = ItemKind
{ isymbol = '`'
, iname = "fragrance"
, ifreq = [("fragrance", 1)]
, iflavour = zipPlain [Magenta]
, icount = 12
, irarity = [(1, 1)]
, iverbHit = "engulf"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 10
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [Impress, toOrganGood "rose-smelling" 45]
, idesc = "A pleasant scent."
, ikit = []
}
pheromone = ItemKind
{ isymbol = '`'
, iname = "musky whiff"
, ifreq = [("pheromone", 1)]
, iflavour = zipPlain [BrMagenta]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "tempt"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 10
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [Dominate]
, idesc = "A sharp, strong scent."
, ikit = []
}
mistCalming = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("calming mist", 1)]
, iflavour = zipPlain [BrGreen]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "sooth"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [RefillCalm 2]
, idesc = "A soothing, gentle cloud."
, ikit = []
}
odorDistressing = ItemKind
{ isymbol = '`'
, iname = "distressing whiff"
, ifreq = [("distressing odor", 1)]
, iflavour = zipFancy [BrRed]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "distress"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 10
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [ RefillCalm (-10)
, toOrganBad "foul-smelling" (20 + 1 `d` 5)
, toOrganBad "impatient" (2 + 1 `d` 2) ]
, idesc = "It turns the stomach."
, ikit = []
}
mistHealing = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("healing mist", 1)]
, iflavour = zipFancy [BrGreen]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "revitalize"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 1 ]
, ieffects = [RefillHP 2]
, idesc = "It fills the air with light and life. And lots of organic chemicals."
, ikit = []
}
mistHealing2 = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("healing mist 2", 1)]
, iflavour = zipPlain [Green]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "revitalize"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast
, AddSkill SkShine 2 ]
, ieffects = [RefillHP 4]
, idesc = "At its touch, wounds close and bruises fade. Not the most frugal way to apply nanobots, though."
, ikit = []
}
mistWounding = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("wounding mist", 1)]
, iflavour = zipPlain [BrRed]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "devitalize"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [RefillHP (-2)]
, idesc = "The air itself stings and itches."
, ikit = []
}
distortion = ItemKind
{ isymbol = 'v'
, iname = "vortex"
, ifreq = [("distortion", 1)]
, iflavour = zipPlain [White]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "engulf"
, iweight = 1
, idamage = 0
, iaspects = [ toLinger 10
, SetFlag Lobable, SetFlag Fragile, SetFlag Blast ]
, ieffects = [Teleport $ 15 + 1 `d` 10]
, idesc = "The air shifts oddly, as though light is being warped."
, ikit = []
}
smoke = ItemKind
{ isymbol = '`'
, iname = "smoke fume"
, ifreq = [("smoke", 1)]
, iflavour = zipPlain [BrBlack]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "choke"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 20
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [toOrganBad "withholding" (5 + 1 `d` 3)]
, idesc = "Twirling clouds of grey smoke."
, ikit = []
}
boilingWater = ItemKind
{ isymbol = '*'
, iname = "boiling water"
, ifreq = [("boiling water", 1)]
, iflavour = zipPlain [White]
, icount = 18
, irarity = [(1, 1)]
, iverbHit = "boil"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 30
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [Burn 1]
, idesc = "It bubbles and hisses."
, ikit = []
}
glue = ItemKind
{ isymbol = '*'
, iname = "glue droplet"
, ifreq = [("glue", 1)]
, iflavour = zipPlain [Cyan]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "glue"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 20
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [Paralyze 10]
, idesc = "Thick and clinging."
, ikit = []
}
waste = ItemKind
{ isymbol = '*'
, iname = "waste piece"
, ifreq = [("waste", 1)]
, iflavour = zipPlain [Brown]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "splosh"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [ toOrganBad "foul-smelling" (30 + 1 `d` 10)
, toOrganBad "dispossessed" (10 + 1 `d` 5) ]
, idesc = "Sodden and foul-smelling."
, ikit = []
}
mistAntiSlow = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("anti-slow mist", 1)]
, iflavour = zipFancy [BrYellow]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "propel"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [DropItem 1 1 COrgan "slowed"]
, idesc = "A cleansing rain."
, ikit = []
}
mistAntidote = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("antidote mist", 1)]
, iflavour = zipFancy [BrBlue]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "cure"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [DropItem 1 maxBound COrgan "poisoned"]
, idesc = "Washes away death's dew."
, ikit = []
}
mistSleep = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [("sleep mist", 1)]
, iflavour = zipFancy [BrMagenta]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "put to sleep"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [PutToSleep]
, idesc = "Lulls weary warriors."
, ikit = []
}
denseShower = ItemKind
{ isymbol = '`'
, iname = "dense shower"
, ifreq = [("dense shower", 1)]
, iflavour = zipFancy [Green]
, icount = 12
, irarity = [(1, 1)]
, iverbHit = "strengthen"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "strengthened" 5]
, idesc = "A thick rain of droplets."
, ikit = []
}
sparseShower = ItemKind
{ isymbol = '`'
, iname = "sparse shower"
, ifreq = [("sparse shower", 1)]
, iflavour = zipFancy [Red]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "weaken"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganBad "weakened" 7]
, idesc = "Light droplets that cling to clothing."
, ikit = []
}
protectingBalmMelee = ItemKind
{ isymbol = '`'
, iname = "balm droplet"
, ifreq = [("melee protective balm", 1)]
, iflavour = zipFancy [Brown]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "balm"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "protected from melee" (3 + 1 `d` 3)]
, idesc = "A thick ointment that hardens the skin."
, ikit = []
}
protectingBalmRanged = ItemKind
{ isymbol = '`'
, iname = "balm droplet"
, ifreq = [("ranged protective balm", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "balm"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "protected from ranged" (3 + 1 `d` 3)]
, idesc = "Grease that protects from flying death."
, ikit = []
}
vulnerabilityBalm = ItemKind
{ isymbol = '`'
, iname = "fluorescent paint"
, ifreq = [("fluorescent paint", 1)]
, iflavour = zipPlain [BrRed]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "paint"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganBad "painted" (3 + 1 `d` 3)]
, idesc = "Softly glowing red pain that marks a target."
, ikit = []
}
resolutionDust = ItemKind
{ isymbol = '`'
, iname = "resolution dust"
, ifreq = [("resolution dust", 1)]
, iflavour = zipPlain [Brown]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "calm"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "resolute" (3 + 1 `d` 3)]
, idesc = "A handful of honest earth, to strengthen the soul."
, ikit = []
}
hasteSpray = ItemKind
{ isymbol = '`'
, iname = "haste spray"
, ifreq = [("haste spray", 1)]
, iflavour = zipFancy [BrYellow]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "haste"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "hasted" (3 + 1 `d` 3)]
, idesc = "A quick spurt."
, ikit = []
}
slownessMist = ItemKind
{ isymbol = '`'
, iname = "slowness mist"
, ifreq = [("slowness mist", 1)]
, iflavour = zipPlain [BrBlue]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "slow"
, iweight = 0
, idamage = 0
, iaspects = [toVelocity 5, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganBad "slowed" (3 + 1 `d` 3)]
, idesc = "Clammy fog, making each movement an effort."
, ikit = []
}
eyeDrop = ItemKind
{ isymbol = '`'
, iname = "eye drop"
, ifreq = [("eye drop", 1)]
, iflavour = zipFancy [BrCyan]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "cleanse"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "far-sighted" (3 + 1 `d` 3)]
, idesc = "Not to be taken orally."
, ikit = []
}
ironFiling = ItemKind
{ isymbol = '`'
, iname = "iron filing"
, ifreq = [("iron filing", 1)]
, iflavour = zipPlain [Red]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "blind"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganBad "blind" (10 + 1 `d` 10)]
, idesc = "A shaving of bright metal."
, ikit = []
}
smellyDroplet = ItemKind
{ isymbol = '`'
, iname = "smelly droplet"
, ifreq = [("smelly droplet", 1)]
, iflavour = zipFancy [Blue]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "sensitize"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "keen-smelling" (5 + 1 `d` 3)]
, idesc = "A viscous lump that stains the skin."
, ikit = []
}
eyeShine = ItemKind
{ isymbol = '`'
, iname = "eye shine"
, ifreq = [("eye shine", 1)]
, iflavour = zipFancy [Cyan]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "smear"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "shiny-eyed" (3 + 1 `d` 3)]
, idesc = "They almost glow in the dark."
, ikit = []
}
whiskeySpray = ItemKind
{ isymbol = '`'
, iname = "whiskey spray"
, ifreq = [("whiskey spray", 1)]
, iflavour = zipFancy [Brown]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "inebriate"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [toOrganGood "drunk" (3 + 1 `d` 3)]
, idesc = "It burns in the best way."
, ikit = []
}
youthSprinkle = ItemKind
{ isymbol = '`'
, iname = "youth sprinkle"
, ifreq = [("youth sprinkle", 1)]
, iflavour = zipFancy [BrGreen]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "sprinkle"
, iweight = 1
, idamage = 0
, iaspects = [toLinger 10, SetFlag Fragile, SetFlag Blast]
, ieffects = [ toOrganGood "rose-smelling" (40 + 1 `d` 20)
, toOrganNoTimer "regenerating" ]
, idesc = "Bright and smelling of the Spring."
, ikit = []
}
poisonCloud = ItemKind
{ isymbol = '`'
, iname = "poison cloud"
, ifreq = [("poison cloud", 1)]
, iflavour = zipFancy [BrMagenta]
, icount = 16
, irarity = [(1, 1)]
, iverbHit = "poison"
, iweight = 0
, idamage = 0
, iaspects = [ ToThrow $ ThrowMod 10 100 2
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [toOrganNoTimer "poisoned"]
, idesc = "Choking gas that stings the eyes."
, ikit = []
}
blastNoStat :: Text -> ItemKind
blastNoStat grp = ItemKind
{ isymbol = '`'
, iname = "mist"
, ifreq = [(toGroupName $ grp <+> "mist", 1)]
, iflavour = zipFancy [White]
, icount = 12
, irarity = [(1, 1)]
, iverbHit = "drain"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 10
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [toOrganBad (toGroupName grp) (3 + 1 `d` 3)]
, idesc = "Completely disables one personal faculty."
, ikit = []
}
blastNoSkMove = blastNoStat "immobile"
blastNoSkMelee = blastNoStat "pacified"
blastNoSkDisplace = blastNoStat "irreplaceable"
blastNoSkAlter = blastNoStat "retaining"
blastNoSkWait = blastNoStat "impatient"
blastNoSkMoveItem = blastNoStat "dispossessed"
blastNoSkProject = blastNoStat "withholding"
blastNoSkApply = blastNoStat "parsimonious"
blastBonusStat :: Text -> ItemKind
blastBonusStat grp = ItemKind
{ isymbol = '`'
, iname = "dew"
, ifreq = [(toGroupName $ grp <+> "dew", 1)]
, iflavour = zipFancy [White]
, icount = 12
, irarity = [(1, 1)]
, iverbHit = "elevate"
, iweight = 1
, idamage = 0
, iaspects = [ toVelocity 10
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [toOrganGood (toGroupName grp) (20 + 1 `d` 5)]
, idesc = "Temporarily enhances the given personal faculty."
, ikit = []
}
blastBonusSkMove = blastBonusStat "more mobile"
blastBonusSkMelee = blastBonusStat "more combative"
blastBonusSkDisplace = blastBonusStat "more displacing"
blastBonusSkAlter = blastBonusStat "more altering"
blastBonusSkWait = blastBonusStat "more patient"
blastBonusSkMoveItem = blastBonusStat "more tidy"
blastBonusSkProject = blastBonusStat "more projecting"
blastBonusSkApply = blastBonusStat "more practical"
cruiseAdHologram = ItemKind
{ isymbol = '`'
, iname = "cruise ad hologram"
, ifreq = [("cruise ad hologram", 1), ("advertisement", 10)]
, iflavour = zipFancy [BrMagenta]
, icount = 8
, irarity = [(1, 1)]
, iverbHit = "excite"
, iweight = 0
, idamage = 0
, iaspects = [ toVelocity 5
, SetFlag Fragile, SetFlag Blast ]
, ieffects = [toOrganGood "resolute" (5 + 1 `d` 2), DropBestWeapon]
, idesc = "The fitful holographic clip shows a couple that laughs, watches in silence Saturn's rings through a huge window, throws treats to a little rhino frolicking in reduced gravity, runs through corridors wearing alien masks in a mock chase. An exited female voice proclaims: \"...safety, security and comfort...for each of your senses...personalized life support zones...robot servants...guessing your every wish...\""
, ikit = []
}
outerAdHologram = cruiseAdHologram
{ iname = "cruise ad hologram"
, ifreq = [("advertisement", 20)]
, icount = 4
, ieffects = []
, idesc = "A composed young man in a hat looks straight into your eyes with unwavering stare and extols the opportunities, freedom and excitement of the outer Solar System frontier life with unshakable conviction. Names of Neptune-area realtors scroll at the bottom in small font with oversize serifs."
}
victoriaClassHologram = outerAdHologram
{ iname = "space fleet hologram"
, ifreq = [("story-telling", 20)]
, iflavour = zipFancy [BrBlue]
, icount = 1
, iverbHit = "bore"
, idesc = "A series of huge spaceships zoom in and out of view in a solemn procession. Male voice drones over crackling static: Victoria-class cruise liners are the largest passenger ships ever serially manufactured and the third largest in general, including transport vessel series. Bigger ships are sometimes cobbled ad-hoc, by wiring together cheap modules and primitive cargo hulls welded in space, but they are rarely certified for public commercial operation. Victoria-class passenger cruisers are produced for over three decades now, in slowly evolving configurations, one every two years on average. The design is as conservative, as possible. A disc large enough for comfortable artificial gravity through constant spinning. Fusion reactor in the middle of the axle powering engines protruding far back from the rear plane. Meteor shield at the front. Numerous redundant rechargeable power sources and autonomous life support areas within several independently pressurized slices of the disc, eliminating the \"all locked in a single can, breathing the same air\" space travel grievance. Actually, everything is redundant twice over, due to strict regulations. To sum it up, these are the most boring spaceships in the galaxy."
}
allureIntroHologram = victoriaClassHologram
{ iname = "spaceship hologram"
, ifreq = [("story-telling", 10)]
, idesc = "A wavy 3D wireframe of a spaceship rotates ponderously. Male voice drones: Allure of the Stars belongs to a long line of luxurious orbit-to-orbit cruise liners, the Victoria-class. The ship is named after the largest passenger sea vessel of the early 21st century, with which it shares the grandeur and extravagance. This particular Victoria-class specimen has been designed for long cruises to gas giants, their moons and the moon cities (with their notorious saloons and night life). It has a meteor shield in the form of a flat, multi-layer. unpressurized cargo bay covering the front plane. Such extra cargo capacity enables long space journeys with no limits on resource usage. On shorter legs of the journeys it also enables opportunistic mass cargo transport (in accordance to strictest regulations and completely isolated from the airflow on passenger decks), which is always in demand at the profusely productive, but scarcely populated Solar System frontier. It also makes the unit much thicker than usual: the length from the tip of the cargo bay to the engines' exhausts is almost two thirds of the diameter of the disk. All in all, it is a particularly sturdy and self-sufficient member of a class famed for exceptional resilience and safety."
}