module Content.ItemKind
( content, items, otherItemContent
) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Content.ItemKindActor
import Content.ItemKindBlast
import Content.ItemKindEmbed
import Content.ItemKindOrgan
import Content.ItemKindTemporary
import Content.RuleKind
import Game.LambdaHack.Content.ItemKind
import Game.LambdaHack.Content.RuleKind
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
content :: [ItemKind]
content = items ++ otherItemContent
otherItemContent :: [ItemKind]
otherItemContent = embeds ++ actors ++ organs ++ blasts ++ temporaries
items :: [ItemKind]
items =
[sandstoneRock, dart, spike, spike2, slingStone, slingBullet, paralizingProj, harpoon, harpoon2, net, light1, light2, light3, blanket, flaskTemplate, flask1, flask2, flask3, flask4, flask5, flask6, flask7, flask8, flask9, flask10, flask11, flask12, flask13, flask14, flask15, flask16, flask17, potionTemplate, potion1, potion2, potion3, potion4, potion5, potion6, potion7, potion8, potion9, potion10, potion11, potion12, fragmentationBomb, concussionBomb, flashBomb, firecrackerBomb, ediblePlantTemplate, ediblePlant1, ediblePlant2, ediblePlant3, ediblePlant4, ediblePlant5, ediblePlant6, ediblePlant7, scrollTemplate, scroll1, scroll2, scroll3, scroll4, scroll5, scroll6, scroll7, scroll8, scroll9, scroll10, scroll11, scroll12, scroll13, jumpingPole, sharpeningTool, seeingItem, motionScanner, gorget, necklaceTemplate, necklace1, necklace2, necklace3, necklace4, necklace5, necklace6, necklace7, necklace8, necklace9, necklace10, imageItensifier, sightSharpening, ringTemplate, ring1, ring2, ring3, ring4, ring5, ring6, ring7, ring8, armorLeather, armorMail, gloveFencing, gloveGauntlet, gloveJousting, hatUshanka, capReinforced, helmArmored, buckler, shield, shield2, shield3, dagger, daggerDropBestWeapon, hammerTemplate, hammer1, hammer2, hammer3, hammerParalyze, hammerSpark, sword, swordImpress, swordNullify, halberd, halberd2, halberd3, halberdPushActor, wandTemplate, wand1, gemTemplate, gem1, gem2, gem3, gem4, gem5, currencyTemplate, currency, smokingJacket]
sandstoneRock, dart, spike, spike2, slingStone, slingBullet, paralizingProj, harpoon, harpoon2, net, light1, light2, light3, blanket, flaskTemplate, flask1, flask2, flask3, flask4, flask5, flask6, flask7, flask8, flask9, flask10, flask11, flask12, flask13, flask14, flask15, flask16, flask17, potionTemplate, potion1, potion2, potion3, potion4, potion5, potion6, potion7, potion8, potion9, potion10, potion11, potion12, fragmentationBomb, concussionBomb, flashBomb, firecrackerBomb, ediblePlantTemplate, ediblePlant1, ediblePlant2, ediblePlant3, ediblePlant4, ediblePlant5, ediblePlant6, ediblePlant7, scrollTemplate, scroll1, scroll2, scroll3, scroll4, scroll5, scroll6, scroll7, scroll8, scroll9, scroll10, scroll11, scroll12, scroll13, jumpingPole, sharpeningTool, seeingItem, motionScanner, gorget, necklaceTemplate, necklace1, necklace2, necklace3, necklace4, necklace5, necklace6, necklace7, necklace8, necklace9, necklace10, imageItensifier, sightSharpening, ringTemplate, ring1, ring2, ring3, ring4, ring5, ring6, ring7, ring8, armorLeather, armorMail, gloveFencing, gloveGauntlet, gloveJousting, hatUshanka, capReinforced, helmArmored, buckler, shield, shield2, shield3, dagger, daggerDropBestWeapon, hammerTemplate, hammer1, hammer2, hammer3, hammerParalyze, hammerSpark, sword, swordImpress, swordNullify, halberd, halberd2, halberd3, halberdPushActor, wandTemplate, wand1, gemTemplate, gem1, gem2, gem3, gem4, gem5, currencyTemplate, currency, smokingJacket :: ItemKind
symbolProjectile, _symbolLauncher, symbolLight, symbolTool, symbolSpecial, symbolGold, symbolNecklace, symbolRing, symbolPotion, symbolFlask, symbolScroll, symbolTorsoArmor, symbolMiscArmor, symbolClothes, symbolShield, symbolPolearm, symbolEdged, symbolHafted, symbolWand, _symbolStaff, symbolFood :: Char
symbolProjectile = rsymbolProjectile standardRules
_symbolLauncher = '}'
symbolLight = '('
symbolTool = '('
symbolSpecial = '*'
symbolGold = '$'
symbolNecklace = '"'
symbolRing = '='
symbolPotion = '!'
symbolFlask = '!'
symbolScroll = '?'
symbolTorsoArmor = '['
symbolMiscArmor = '['
symbolClothes = '['
symbolShield = ']'
symbolPolearm = ')'
symbolEdged = ')'
symbolHafted = ')'
symbolWand = '/'
_symbolStaff = '_'
symbolFood = ','
sandstoneRock = ItemKind
{ isymbol = symbolProjectile
, iname = "sandstone rock"
, ifreq = [ ("sandstone rock", 1)
, ("unreported inventory", 1) ]
, iflavour = zipPlain [Green]
, icount = 1 + 1 `d` 2
, irarity = [(1, 50), (10, 1)]
, iverbHit = "hit"
, iweight = 300
, idamage = 1 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ -16 * 5
, SetFlag Fragile
, toVelocity 70 ]
, ieffects = []
, idesc = "A lump of brittle sandstone rock."
, ikit = []
}
dart = ItemKind
{ isymbol = symbolProjectile
, iname = "dart"
, ifreq = [("common item", 100), ("any arrow", 50), ("weak arrow", 50)]
, iflavour = zipPlain [BrRed]
, icount = 1 + 4 `dL` 5
, irarity = [(1, 15), (10, 5)]
, iverbHit = "prick"
, iweight = 40
, idamage = 1 `d` 1
, iaspects = [AddSkill SkHurtMelee $ (-15 + 1 `d` 2 + 1 `dL` 3) * 5]
, ieffects = []
, idesc = "A sharp delicate dart with fins."
, ikit = []
}
spike = ItemKind
{ isymbol = symbolProjectile
, iname = "spike"
, ifreq = [("common item", 100), ("any arrow", 50), ("weak arrow", 50)]
, iflavour = zipPlain [Cyan]
, icount = 1 + 4 `dL` 5
, irarity = [(1, 10), (10, 8)]
, iverbHit = "nick"
, iweight = 150
, idamage = 2 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ (-10 + 1 `d` 2 + 1 `dL` 3) * 5
, SetFlag MinorEffects
, toVelocity 70 ]
, ieffects = [ Explode "single spark"
, OnSmash (Explode "single spark") ]
, idesc = "A cruel long nail with small head."
, ikit = []
}
spike2 = spike
{ ifreq = [("common item", 2), ("any arrow", 1), ("weak arrow", 1)]
, icount = 6 `dL` 5
, iverbHit = "penetrate"
, iweight = 200
, idamage = 4 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ (-10 + 1 `d` 2 + 1 `dL` 3) * 5
, SetFlag MinorEffects
, Odds (10 * 1 `dL` 10) [] [toVelocity 70] ]
, idesc = "A jagged skewer of rusty metal."
}
slingStone = ItemKind
{ isymbol = symbolProjectile
, iname = "sling stone"
, ifreq = [("common item", 5), ("any arrow", 100)]
, iflavour = zipPlain [Blue]
, icount = 1 + 3 `dL` 4
, irarity = [(1, 1), (10, 20)]
, iverbHit = "batter"
, iweight = 200
, idamage = 1 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ (-10 + 1 `d` 2 + 1 `dL` 3) * 5
, SetFlag MinorEffects
, toVelocity 150 ]
, ieffects = [ Explode "single spark"
, OnSmash (Explode "single spark") ]
, idesc = "A round stone, carefully sized and smoothed to fit the pouch of a standard string and cloth sling."
, ikit = []
}
slingBullet = ItemKind
{ isymbol = symbolProjectile
, iname = "sling bullet"
, ifreq = [("common item", 5), ("any arrow", 100)]
, iflavour = zipPlain [BrBlack]
, icount = 1 + 6 `dL` 4
, irarity = [(1, 1), (10, 15)]
, iverbHit = "slug"
, iweight = 28
, idamage = 1 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ (-17 + 1 `d` 2 + 1 `dL` 3) * 5
, ToThrow $ ThrowMod 200 100 2 ]
, ieffects = []
, idesc = "Small almond-shaped leaden projectile that weighs more than the sling used to tie the bag. It doesn't drop out of the sling's pouch when swung and doesn't snag when released. Known to pierce through flesh, at least at maximum speed."
, ikit = []
}
paralizingProj = ItemKind
{ isymbol = symbolProjectile
, iname = "bolas set"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [BrGreen]
, icount = 1 `dL` 4
, irarity = [(5, 5), (10, 5)]
, iverbHit = "entangle"
, iweight = 500
, idamage = 1 `d` 1
, iaspects = [AddSkill SkHurtMelee $ -14 * 5]
, ieffects = [Paralyze 15, DropBestWeapon]
, idesc = "Wood balls tied with hemp rope. The target enemy is tripped and bound to drop the main weapon, while fighting for balance."
, ikit = []
}
harpoon = ItemKind
{ isymbol = symbolProjectile
, iname = "harpoon"
, ifreq = [("common item", 100), ("harpoon", 100)]
, iflavour = zipPlain [Brown]
, icount = 1 `dL` 5
, irarity = [(10, 10)]
, iverbHit = "hook"
, iweight = 750
, idamage = 5 `d` 1
, iaspects = [AddSkill SkHurtMelee $ (-10 + 1 `d` 2 + 1 `dL` 3) * 5]
, ieffects = [ PullActor (ThrowMod 200 50 1)
, Yell ]
, idesc = "The cruel, barbed head lodges in its victim so painfully that the weakest tug of the thin line sends the victim flying."
, ikit = []
}
harpoon2 = harpoon
{ iname = "whaling harpoon"
, ifreq = [("common item", 5), ("harpoon", 2)]
, icount = 2 `dL` 5
, iweight = 1000
, idamage = 10 `d` 1
, idesc = "With a brittle, barbed head and thick cord, this ancient weapon is designed for formidable prey."
}
net = ItemKind
{ isymbol = symbolProjectile
, iname = "net"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [BrGreen]
, icount = 1 `dL` 3
, irarity = [(5, 5), (10, 7)]
, iverbHit = "entangle"
, iweight = 1000
, idamage = 2 `d` 1
, iaspects = [AddSkill SkHurtMelee $ -14 * 5]
, ieffects = [ toOrganBad "slowed" (3 + 1 `d` 3)
, DropItem maxBound 1 CEqp "torso armor"
, SendFlying (ThrowMod 100 50 1) ]
, idesc = "A wide net with weights along the edges. Entangles armor and restricts movement."
, ikit = []
}
light1 = ItemKind
{ isymbol = symbolLight
, iname = "wooden torch"
, ifreq = [ ("common item", 100), ("light source", 100)
, ("wooden torch", 1) ]
, iflavour = zipPlain [Brown]
, icount = 1 `dL` 4
, irarity = [(1, 40), (4, 1)]
, iverbHit = "scorch"
, iweight = 1000
, idamage = 0
, iaspects = [ AddSkill SkShine 3, AddSkill SkSight (-2)
, SetFlag Lobable, SetFlag Equipable
, EqpSlot EqpSlotShine ]
, ieffects = [Burn 1]
, idesc = "A heavy smoking wooden torch, improvised using a cloth soaked in tar, burning in an unsteady glow."
, ikit = []
}
light2 = ItemKind
{ isymbol = symbolLight
, iname = "oil lamp"
, ifreq = [("common item", 100), ("light source", 100)]
, iflavour = zipPlain [BrYellow]
, icount = 1 `dL` 2
, irarity = [(4, 10)]
, iverbHit = "burn"
, iweight = 1500
, idamage = 1 `d` 1
, iaspects = [ AddSkill SkShine 3, AddSkill SkSight (-1)
, SetFlag Lobable, SetFlag Fragile, SetFlag Equipable
, EqpSlot EqpSlotShine ]
, ieffects = [ Burn 1
, toOrganBad "pacified" (2 + 1 `d` 2)
, OnSmash (Explode "burning oil 2") ]
, idesc = "A clay lamp filled with plant oil feeding a tiny wick."
, ikit = []
}
light3 = ItemKind
{ isymbol = symbolLight
, iname = "brass lantern"
, ifreq = [("common item", 100), ("light source", 100)]
, iflavour = zipPlain [Red]
, icount = 1
, irarity = [(10, 6)]
, iverbHit = "burn"
, iweight = 3000
, idamage = 2 `d` 1
, iaspects = [ AddSkill SkShine 4, AddSkill SkSight (-1)
, SetFlag Lobable, SetFlag Fragile, SetFlag Equipable
, EqpSlot EqpSlotShine ]
, ieffects = [ Burn 1
, toOrganBad "pacified" (4 + 1 `d` 2)
, OnSmash (Explode "burning oil 4") ]
, idesc = "Very bright and very heavy brass lantern."
, ikit = []
}
blanket = ItemKind
{ isymbol = symbolLight
, iname = "wool blanket"
, ifreq = [("common item", 100), ("light source", 100), ("blanket", 1)]
, iflavour = zipPlain [BrBlack]
, icount = 1
, irarity = [(1, 1)]
, iverbHit = "swoosh"
, iweight = 1000
, idamage = 0
, iaspects = [ AddSkill SkShine (-10)
, AddSkill SkArmorMelee 2, AddSkill SkMaxCalm 5
, SetFlag Lobable, SetFlag Equipable ]
, ieffects = []
, idesc = "Warm, comforting, and concealing, woven from soft wool."
, ikit = []
}
flaskTemplate = ItemKind
{ isymbol = symbolFlask
, iname = "flask"
, ifreq = [("flask unknown", 1)]
, iflavour = zipGlassPlain darkCol ++ zipGlassFancy darkCol
++ zipLiquid darkCol
, icount = 1 `dL` 3
, irarity = [(1, 7), (10, 3)]
, iverbHit = "splash"
, iweight = 500
, idamage = 0
, iaspects = [ HideAs "flask unknown", SetFlag Lobable, SetFlag Fragile
, toVelocity 50 ]
, ieffects = []
, idesc = "A flask of oily liquid of a suspect color. Something seems to be moving inside. Double dose causes twice longer effect."
, ikit = []
}
flask1 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, icount = 1 `dL` 5
, irarity = [(10, 10)]
, iaspects = ELabel "of strength renewal brew"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "strengthened" (20 + 1 `d` 5)
, toOrganNoTimer "regenerating"
, OnSmash (Explode "dense shower") ]
}
flask2 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of weakness brew"
: iaspects flaskTemplate
, ieffects = [ toOrganBad "weakened" (20 + 1 `d` 5)
, OnSmash (Explode "sparse shower") ]
}
flask3 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of melee protective balm"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "protected from melee" (20 + 1 `d` 5)
, OnSmash (Explode "melee protective balm") ]
}
flask4 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of ranged protective balm"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "protected from ranged" (20 + 1 `d` 5)
, OnSmash (Explode "ranged protective balm") ]
}
flask5 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of PhD defense questions"
: iaspects flaskTemplate
, ieffects = [ toOrganBad "defenseless" (20 + 1 `d` 5)
, Impress
, Detect DetectExit 20
, OnSmash (Explode "PhD defense question") ]
}
flask6 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(1, 1)]
, iaspects = ELabel "of resolution"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "resolute" (500 + 1 `d` 200)
, RefillCalm 60
, OnSmash (Explode "resolution dust") ]
}
flask7 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, icount = 1
, iaspects = ELabel "of haste brew"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "hasted" (20 + 1 `d` 5)
, OnSmash (Explode "haste spray") ]
}
flask8 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of eye drops"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "far-sighted" (40 + 1 `d` 10)
, OnSmash (Explode "eye drop") ]
}
flask9 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(10, 2)]
, iaspects = ELabel "of smelly concoction"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "keen-smelling" (40 + 1 `d` 10)
, Detect DetectActor 10
, OnSmash (Explode "smelly droplet") ]
}
flask10 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(10, 2)]
, iaspects = ELabel "of cat tears"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "shiny-eyed" (40 + 1 `d` 10)
, OnSmash (Explode "eye shine") ]
}
flask11 = flaskTemplate
{ iname = "bottle"
, ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, icount = 1 `d` 3
, iaspects = ELabel "of whiskey"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "drunk" (20 + 1 `d` 5)
, Burn 1, RefillHP 3, Yell
, OnSmash (Explode "whiskey spray") ]
}
flask12 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, icount = 1
, iaspects = ELabel "of bait cocktail"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "drunk" (20 + 1 `d` 5)
, Burn 1, RefillHP 3
, Summon "mobile animal" 1
, OnSmash (Summon "mobile animal" 1)
, OnSmash Impress
, OnSmash (Explode "waste") ]
}
flask13 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(1, 2), (10, 12)]
, iaspects = ELabel "of regeneration brew"
: iaspects flaskTemplate
, ieffects = [ toOrganGood "rose-smelling" (80 + 1 `d` 20)
, toOrganNoTimer "regenerating"
, toOrganNoTimer "regenerating"
, OnSmash (Explode "youth sprinkle") ]
}
flask14 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of poison"
: iaspects flaskTemplate
, ieffects = [ toOrganNoTimer "poisoned", toOrganNoTimer "poisoned"
, OnSmash (Explode "poison cloud") ]
}
flask15 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(10, 4)]
, iaspects = ELabel "of slow resistance"
: iaspects flaskTemplate
, ieffects = [ toOrganNoTimer "slow resistant"
, OnSmash (Explode "anti-slow mist") ]
}
flask16 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, irarity = [(10, 4)]
, iaspects = ELabel "of poison resistance"
: iaspects flaskTemplate
, ieffects = [ toOrganNoTimer "poison resistant"
, OnSmash (Explode "antidote mist") ]
}
flask17 = flaskTemplate
{ ifreq = [("common item", 100), ("explosive", 100), ("any vial", 100)]
, iaspects = ELabel "of calamity"
: iaspects flaskTemplate
, ieffects = [ toOrganNoTimer "poisoned"
, toOrganBad "weakened" (20 + 1 `d` 5)
, toOrganBad "defenseless" (20 + 1 `d` 5)
, OnSmash (Explode "glass hail") ]
}
potionTemplate = ItemKind
{ isymbol = symbolPotion
, iname = "potion"
, ifreq = [("potion unknown", 1)]
, iflavour = zipLiquid brightCol ++ zipPlain brightCol ++ zipFancy brightCol
, icount = 1 `dL` 3
, irarity = [(1, 10), (10, 6)]
, iverbHit = "splash"
, iweight = 200
, idamage = 0
, iaspects = [ HideAs "potion unknown", SetFlag Lobable, SetFlag Fragile
, toVelocity 50 ]
, ieffects = []
, idesc = "A vial of bright, frothing concoction. The best that nature has to offer."
, ikit = []
}
potion1 = potionTemplate
{ iname = "vial"
, ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, icount = 3 `dL` 1
, iaspects = ELabel "of rose water"
: iaspects potionTemplate
, ieffects = [ Impress, toOrganGood "rose-smelling" (80 + 1 `d` 20)
, OnSmash ApplyPerfume, OnSmash (Explode "fragrance") ]
}
potion2 = potionTemplate
{ ifreq = [("treasure", 100), ("any vial", 100)]
, icount = 1
, irarity = [(5, 8), (10, 8)]
, iaspects = [ SetFlag Unique, ELabel "of Attraction"
, SetFlag Precious, SetFlag Lobable, SetFlag Fragile
, toVelocity 50 ]
, ieffects = [ Dominate
, toOrganGood "hasted" (20 + 1 `d` 5)
, OnSmash (Explode "pheromone")
, OnSmash (Explode "haste spray") ]
, idesc = "The liquid fizzes with energy."
}
potion3 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, ieffects = [ RefillHP 5, DropItem 1 maxBound COrgan "poisoned"
, OnSmash (Explode "healing mist") ]
}
potion4 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, irarity = [(1, 6), (10, 10)]
, ieffects = [ RefillHP 10, DropItem maxBound maxBound COrgan "condition"
, OnSmash (Explode "healing mist 2") ]
}
potion5 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, icount = 3 `dL` 1
, irarity = [(1, 12)]
, ieffects = [ OneOf [ RefillHP 10, RefillHP 5, Burn 5
, DropItem 1 maxBound COrgan "poisoned"
, toOrganGood "strengthened" (20 + 1 `d` 5) ]
, OnSmash (OneOf [ Explode "dense shower"
, Explode "sparse shower"
, Explode "melee protective balm"
, Explode "ranged protective balm"
, Explode "PhD defense question" ]) ]
}
potion6 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, icount = 3 `dL` 1
, irarity = [(10, 10)]
, ieffects = [ Impress
, OneOf [ RefillHP 20, RefillHP 10, Burn 10
, DropItem 1 maxBound COrgan "poisoned"
, toOrganGood "hasted" (20 + 1 `d` 5)
, toOrganBad "impatient" (2 + 1 `d` 2) ]
, OnSmash (OneOf [ Explode "healing mist 2"
, Explode "wounding mist"
, Explode "distressing odor"
, Explode "impatient mist"
, Explode "haste spray"
, Explode "slowness mist"
, Explode "fragrance"
, Explode "violent flash" ]) ]
}
potion7 = potionTemplate
{ iname = "ampoule"
, ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, icount = 3 `dL` 1
, ieffects = [ DropItem 1 maxBound COrgan "condition"
, OnSmash (Explode "violent concussion") ]
}
potion8 = potionTemplate
{ ifreq = [("treasure", 100), ("any vial", 100)]
, icount = 1
, irarity = [(10, 5)]
, iaspects = [ SetFlag Unique, ELabel "of Love"
, SetFlag Precious, SetFlag Lobable, SetFlag Fragile
, toVelocity 50 ]
, ieffects = [ RefillHP 60, RefillCalm (-60)
, toOrganGood "rose-smelling" (80 + 1 `d` 20)
, OnSmash (Explode "healing mist 2")
, OnSmash (Explode "distressing odor") ]
, idesc = "Perplexing swirls of intense, compelling colour."
}
potion9 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, irarity = [(10, 5)]
, iaspects = ELabel "of grenadier focus"
: iaspects potionTemplate
, ieffects = [ toOrganGood "more projecting" (40 + 1 `d` 10)
, toOrganBad "pacified" (5 + 1 `d` 3)
, OnSmash (Explode "more projecting dew")
, OnSmash (Explode "pacified mist") ]
, idesc = "Thick, sluggish fluid with violently-bursting bubbles."
}
potion10 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, irarity = [(10, 8)]
, iaspects = ELabel "of frenzy"
: iaspects potionTemplate
, ieffects = [ Yell
, toOrganGood "strengthened" (20 + 1 `d` 5)
, toOrganBad "retaining" (5 + 1 `d` 3)
, toOrganBad "frenzied" (40 + 1 `d` 10)
, OnSmash (Explode "dense shower")
, OnSmash (Explode "retaining mist")
, OnSmash (Explode "retaining mist") ]
}
potion11 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, irarity = [(10, 8)]
, iaspects = ELabel "of panic"
: iaspects potionTemplate
, ieffects = [ RefillCalm (-30)
, toOrganGood "hasted" (20 + 1 `d` 5)
, toOrganBad "weakened" (20 + 1 `d` 5)
, toOrganBad "withholding" (10 + 1 `d` 5)
, OnSmash (Explode "haste spray")
, OnSmash (Explode "sparse shower")
, OnSmash (Explode "withholding mist") ]
}
potion12 = potionTemplate
{ ifreq = [("common item", 100), ("potion", 100), ("any vial", 100)]
, irarity = [(10, 8)]
, iaspects = ELabel "of quicksilver"
: iaspects potionTemplate
, ieffects = [ toOrganGood "hasted" (20 + 1 `d` 5)
, toOrganBad "blind" (10 + 1 `d` 5)
, toOrganBad "immobile" (5 + 1 `d` 5)
, OnSmash (Explode "haste spray")
, OnSmash (Explode "iron filing")
, OnSmash (Explode "immobile mist") ]
}
fragmentationBomb = ItemKind
{ isymbol = symbolProjectile
, iname = "clay pot"
, ifreq = [("common item", 100), ("explosive", 200)]
, iflavour = zipPlain [Red]
, icount = 1 `dL` 5
, irarity = [(5, 8), (10, 5)]
, iverbHit = "thud"
, iweight = 3000
, idamage = 1 `d` 1
, iaspects = [ ELabel "of black powder"
, SetFlag Lobable, SetFlag Fragile ]
, ieffects = [ Explode "focused fragmentation"
, OnSmash (Explode "violent fragmentation") ]
, idesc = "The practical application of science."
, ikit = []
}
concussionBomb = fragmentationBomb
{ iname = "satchel"
, iflavour = zipPlain [Magenta]
, iverbHit = "flap"
, iweight = 400
, idamage = 0
, iaspects = [ ELabel "of mining charges"
, SetFlag Lobable, SetFlag Fragile
, toVelocity 70 ]
, ieffects = [ Explode "focused concussion"
, OnSmash (Explode "violent concussion") ]
, idesc = "Avoid sudden movements."
}
flashBomb = fragmentationBomb
{ iname = "magnesium ribbon"
, iflavour = zipPlain [BrYellow]
, iverbHit = "flash"
, iweight = 400
, idamage = 0
, iaspects = [ SetFlag Lobable, SetFlag Fragile
, toVelocity 70 ]
, ieffects = [Explode "focused flash", OnSmash (Explode "violent flash")]
, idesc = "For dramatic entrances and urgent exits."
}
firecrackerBomb = fragmentationBomb
{ iname = "roll"
, iflavour = zipPlain [BrMagenta]
, irarity = [(1, 5), (5, 6)]
, iverbHit = "crack"
, iweight = 1000
, idamage = 0
, iaspects = [SetFlag Lobable, SetFlag Fragile]
, ieffects = [Explode "firecracker", OnSmash (Explode "firecracker")]
, idesc = "String and paper, concealing a deadly surprise."
}
ediblePlantTemplate = ItemKind
{ isymbol = symbolFood
, iname = "edible plant"
, ifreq = [("edible plant unknown", 1)]
, iflavour = zipPlain stdCol
, icount = 1 `dL` 5
, irarity = [(1, 12), (10, 6)]
, iverbHit = "thump"
, iweight = 50
, idamage = 0
, iaspects = [ HideAs "edible plant unknown"
, toVelocity 30 ]
, ieffects = []
, idesc = "Withered but fragrant bits of a colorful plant. Taste tolerably and break down easily, but only eating may reveal the full effects."
, ikit = []
}
ediblePlant1 = ediblePlantTemplate
{ iname = "overripe berry"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [RefillHP 1, toOrganBad "immobile" (5 + 1 `d` 5)]
}
ediblePlant2 = ediblePlantTemplate
{ iname = "frayed fungus"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [toOrganNoTimer "poisoned"]
}
ediblePlant3 = ediblePlantTemplate
{ iname = "thick leaf"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [DropItem 1 maxBound COrgan "poisoned"]
}
ediblePlant4 = ediblePlantTemplate
{ iname = "shrunk fruit"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [toOrganBad "blind" (10 + 1 `d` 10)]
}
ediblePlant5 = ediblePlantTemplate
{ iname = "fragrant herb"
, ifreq = [("common item", 100), ("edible plant", 100)]
, icount = 1 `dL` 9
, irarity = [(1, 12), (10, 5)]
, iaspects = ELabel "of lethargy"
: iaspects ediblePlantTemplate
, ieffects = [ toOrganBad "slowed" (20 + 1 `d` 5)
, toOrganNoTimer "regenerating"
, toOrganNoTimer "regenerating"
, RefillCalm 5 ]
}
ediblePlant6 = ediblePlantTemplate
{ iname = "dull flower"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [PutToSleep]
}
ediblePlant7 = ediblePlantTemplate
{ iname = "spicy bark"
, ifreq = [("common item", 100), ("edible plant", 100)]
, ieffects = [InsertMove 20, toOrganBad "frenzied" (40 + 1 `d` 10)]
}
scrollTemplate = ItemKind
{ isymbol = symbolScroll
, iname = "scroll"
, ifreq = [("scroll unknown", 1)]
, iflavour = zipFancy stdCol ++ zipPlain stdCol
, icount = 1 `dL` 3
, irarity = [(1, 14), (10, 7)]
, iverbHit = "thump"
, iweight = 50
, idamage = 0
, iaspects = [ HideAs "scroll unknown"
, toVelocity 30 ]
, ieffects = []
, idesc = "Scraps of haphazardly scribbled mysteries from beyond. Is this equation an alchemical recipe? Is this diagram an extradimensional map? Is this formula a secret call sign?"
, ikit = []
}
scroll1 = scrollTemplate
{ ifreq = [("treasure", 100), ("any scroll", 100)]
, icount = 1
, irarity = [(5, 9), (10, 9)]
, iaspects = [SetFlag Unique, ELabel "of Reckless Beacon"]
++ iaspects scrollTemplate
, ieffects = [Summon "hero" 1, Summon "mobile animal" (2 + 1 `d` 2)]
, idesc = "The bright flame and sweet-smelling smoke of this heavily infused scroll should attract natural creatures inhabiting the area, including human survivors, if any."
}
scroll2 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(1, 6), (10, 2)]
, ieffects = [Ascend False]
}
scroll3 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, icount = 3 `dL` 1
, irarity = [(1, 14)]
, ieffects = [OneOf [ Teleport 5, Paralyze 10, InsertMove 30
, Detect DetectEmbed 12, Detect DetectHidden 20 ]]
}
scroll4 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, icount = 3 `dL` 1
, irarity = [(10, 14)]
, ieffects = [ Impress
, OneOf [ Teleport 20, Ascend False, Ascend True
, Summon "hero" 1, Summon "mobile animal" $ 1 `d` 2
, Detect DetectLoot 20
, CreateItem CGround "common item" timerNone ] ]
}
scroll5 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(1, 6)]
, ieffects = [InsertMove $ 20 + 1 `dL` 20]
}
scroll6 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, icount = 3 `dL` 1
, irarity = [(1, 20)]
, iaspects = ELabel "of scientific explanation"
: iaspects scrollTemplate
, ieffects = [Composite [Identify, RefillCalm 10]]
, idesc = "The most pressing existential concerns are met with a deeply satisfying scientific answer."
}
scroll7 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(10, 20)]
, iaspects = ELabel "of transmutation"
: iaspects scrollTemplate
, ieffects = [Composite [PolyItem, Explode "firecracker"]]
}
scroll8 = scrollTemplate
{ ifreq = [("treasure", 100), ("any scroll", 100)]
, icount = 1
, irarity = [(10, 12)]
, iaspects = [SetFlag Unique, ELabel "of Rescue Proclamation"]
++ iaspects scrollTemplate
, ieffects = [Summon "hero" 1]
, idesc = "A survivor of past exploration missions is found that enjoys, apparently, complete physiological integrity. We can pronounce him a comrade in arms and let him join our party."
}
scroll9 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(10, 4)]
, ieffects = [Detect DetectAll 20]
}
scroll10 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, iaspects = ELabel "of cue interpretation"
: iaspects scrollTemplate
, ieffects = [Detect DetectActor 20]
}
scroll11 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(10, 11)]
, ieffects = [PushActor (ThrowMod 400 200 1)]
}
scroll12 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(10, 15)]
, iaspects = ELabel "of similarity"
: iaspects scrollTemplate
, ieffects = [DupItem]
}
scroll13 = scrollTemplate
{ ifreq = [("common item", 100), ("any scroll", 100)]
, irarity = [(10, 15)]
, iaspects = ELabel "of transfiguration"
: iaspects scrollTemplate
, ieffects = [RerollItem]
}
jumpingPole = ItemKind
{ isymbol = symbolWand
, iname = "jumping pole"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [White]
, icount = 1
, irarity = [(1, 3)]
, iverbHit = "prod"
, iweight = 10000
, idamage = 0
, iaspects = [ Timeout $ (2 + 1 `d` 2 - 1 `dL` 2) * 5
, SetFlag Durable ]
, ieffects = [toOrganGood "hasted" 1]
, idesc = "Makes you vulnerable at take-off, but then you are free like a bird."
, ikit = []
}
sharpeningTool = ItemKind
{ isymbol = symbolTool
, iname = "whetstone"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [Blue]
, icount = 1
, irarity = [(10, 10)]
, iverbHit = "smack"
, iweight = 400
, idamage = 0
, iaspects = [ AddSkill SkHurtMelee $ (1 `dL` 7) * 5
, SetFlag Equipable, EqpSlot EqpSlotHurtMelee ]
, ieffects = []
, idesc = "A portable sharpening stone for keeping your weapons keen and true, without the need to set up camp, fish out tools and assemble a proper sharpening workshop."
, ikit = []
}
seeingItem = ItemKind
{ isymbol = symbolFood
, iname = "giant pupil"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [Red]
, icount = 1
, irarity = [(1, 2)]
, iverbHit = "gaze at"
, iweight = 100
, idamage = 0
, iaspects = [ Timeout 3
, AddSkill SkSight 10
, AddSkill SkMaxCalm 30
, AddSkill SkShine 2
, SetFlag Periodic ]
, ieffects = [ Detect DetectActor 20
, toOrganNoTimer "poisoned"
, Summon "mobile monster" 1 ]
, idesc = "A slimy, dilated green pupil torn out from some giant eye. Clear and focused, as if still alive."
, ikit = []
}
motionScanner = ItemKind
{ isymbol = symbolTool
, iname = "draft detector"
, ifreq = [("common item", 100), ("add nocto 1", 20)]
, iflavour = zipPlain [BrRed]
, icount = 1
, irarity = [(5, 2)]
, iverbHit = "jingle"
, iweight = 300
, idamage = 0
, iaspects = [ AddSkill SkNocto 1
, AddSkill SkArmorMelee (-15 + (1 `dL` 3) * 5)
, AddSkill SkArmorRanged (-15 + (1 `dL` 3) * 5)
, SetFlag Equipable, EqpSlot EqpSlotMiscBonus ]
, ieffects = []
, idesc = "A silk flag with a bell for detecting sudden draft changes. May indicate a nearby corridor crossing or a fast enemy approaching in the dark. Is also very noisy."
, ikit = []
}
iaspects_necklaceTemplate :: [Aspect]
iaspects_necklaceTemplate =
[ HideAs "necklace unknown"
, SetFlag Periodic, SetFlag Precious, SetFlag Equipable
, toVelocity 50 ]
gorget = necklaceTemplate
{ iname = "Old Gorget"
, ifreq = [("common item", 25), ("treasure", 25)]
, iflavour = zipFancy [BrCyan]
, iaspects = [ SetFlag Unique
, Timeout $ 5 - 1 `dL` 4
, AddSkill SkArmorMelee 3, AddSkill SkArmorRanged 2
, SetFlag Durable ]
++ iaspects_necklaceTemplate
, ieffects = [RefillCalm 1]
, idesc = "Highly ornamental, cold, large, steel medallion on a chain. Unlikely to offer much protection as an armor piece, but the old, worn engraving reassures you."
}
necklaceTemplate = ItemKind
{ isymbol = symbolNecklace
, iname = "necklace"
, ifreq = [("necklace unknown", 1)]
, iflavour = zipFancy stdCol ++ zipPlain brightCol
, icount = 1
, irarity = [(4, 3), (10, 6)]
, iverbHit = "whip"
, iweight = 30
, idamage = 0
, iaspects = Timeout 1000000
: iaspects_necklaceTemplate
, ieffects = []
, idesc = "Menacing Greek symbols shimmer with increasing speeds along a chain of fine encrusted links. After a tense build-up, a prismatic arc shoots towards the ground and the iridescence subdues, becomes ordered and resembles a harmless ornament again, for a time."
, ikit = []
}
necklace1 = necklaceTemplate
{ ifreq = [("treasure", 100), ("any jewelry", 100)]
, irarity = [(10, 3)]
, iaspects = [ SetFlag Unique, ELabel "of Aromata"
, Timeout $ (4 - 1 `dL` 3) * 10
, SetFlag Durable ]
++ iaspects_necklaceTemplate
, ieffects = [RefillHP 1]
, idesc = "A cord of freshly dried herbs and healing berries."
}
necklace2 = necklaceTemplate
{ ifreq = [("treasure", 100), ("any jewelry", 100)]
, irarity = [(10, 3)]
, iaspects = [ SetFlag Unique, ELabel "of Live Bait"
, Timeout 30
, AddSkill SkOdor 2
, SetFlag Durable ]
++ iaspects_necklaceTemplate
, ieffects = [ DropItem 1 1 COrgan "condition"
, Impress
, Summon "mobile animal" $ 1 `dL` 2
, Explode "waste" ]
, idesc = "A cord hung with lumps of decaying meat. It's better not to think about the source."
}
necklace3 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = [ ELabel "of fearful listening"
, Timeout ((1 + 1 `d` 2) * 10)
, AddSkill SkHearing 2 ]
++ iaspects_necklaceTemplate
, ieffects = [ Detect DetectActor 10
, RefillCalm (-40) ]
}
necklace4 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = Timeout ((3 + 1 `d` 3 - 1 `dL` 3) * 2)
: iaspects_necklaceTemplate
, ieffects = [Teleport $ 3 `d` 2]
}
necklace5 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = [ ELabel "of escape"
, Timeout $ (7 - 1 `dL` 5) * 10 ]
++ iaspects_necklaceTemplate
, ieffects = [ Teleport $ 14 + 3 `d` 3
, Detect DetectExit 20
, Yell ]
, idesc = "A supple chain that slips through your fingers."
}
necklace6 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = Timeout (1 + (1 `d` 3) * 2)
: iaspects_necklaceTemplate
, ieffects = [PushActor (ThrowMod 100 50 1)]
}
necklace7 = necklaceTemplate
{ ifreq = [("treasure", 100), ("any jewelry", 100)]
, irarity = [(10, 1)]
, iaspects = [ SetFlag Unique, ELabel "of Overdrive"
, Timeout 4
, AddSkill SkMaxHP 25
, SetFlag Durable ]
++ iaspects_necklaceTemplate
, ieffects = [ InsertMove $ 9 + 1 `d` 11
, toOrganBad "impatient" 4]
, idesc = "A string of beads in various colours, with no discernable pattern."
}
necklace8 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(4, 3)]
, iaspects = Timeout ((1 + 1 `d` 3) * 5)
: iaspects_necklaceTemplate
, ieffects = [Explode "spark"]
}
necklace9 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = Timeout ((1 + 1 `d` 3) * 5)
: iaspects_necklaceTemplate
, ieffects = [Explode "fragrance"]
}
necklace10 = necklaceTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, iaspects = [ ELabel "of greed"
, Timeout ((2 + 1 `d` 3) * 10) ]
++ iaspects_necklaceTemplate
, ieffects = [ Detect DetectLoot 20
, Teleport 40
, toOrganBad "parsimonious" (5 + 1 `d` 3) ]
}
imageItensifier = ItemKind
{ isymbol = symbolRing
, iname = "light cone"
, ifreq = [("treasure", 100), ("add nocto 1", 80)]
, iflavour = zipFancy [BrYellow]
, icount = 1
, irarity = [(5, 2)]
, iverbHit = "bang"
, iweight = 500
, idamage = 0
, iaspects = [ AddSkill SkNocto 1, AddSkill SkSight (-1)
, AddSkill SkArmorMelee $ (-1 + 1 `dL` 6) * 3
, SetFlag Precious, SetFlag Equipable
, EqpSlot EqpSlotMiscBonus ]
, ieffects = []
, idesc = "Contraption of lenses and mirrors on a polished brass headband for capturing and strengthening light in dark environment. Hampers vision in daylight. Stackable."
, ikit = []
}
sightSharpening = ringTemplate
{ iname = "sharp monocle"
, ifreq = [("treasure", 20), ("add sight", 1)]
, irarity = [(7, 1), (10, 12)]
, iweight = 50
, iaspects = [ AddSkill SkSight $ 1 + 1 `dL` 2
, AddSkill SkHurtMelee $ (-1 + 1 `d` 3) * 3
, EqpSlot EqpSlotSight ]
++ iaspects ringTemplate
, idesc = "Lets you better focus your weaker eye."
}
ringTemplate = ItemKind
{ isymbol = symbolRing
, iname = "ring"
, ifreq = [("ring unknown", 1)]
, iflavour = zipPlain stdCol ++ zipFancy darkCol
, icount = 1
, irarity = [(10, 2)]
, iverbHit = "knock"
, iweight = 15
, idamage = 0
, iaspects = [HideAs "ring unknown", SetFlag Precious, SetFlag Equipable]
, ieffects = []
, idesc = "It looks like an ordinary object, but it's in fact a generator of exceptional effects: adding to some of your natural qualities and subtracting from others."
, ikit = []
}
ring1 = ringTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(8, 4)]
, iaspects = [ AddSkill SkSpeed $ 1 `dL` 3, AddSkill SkMaxHP (-10)
, EqpSlot EqpSlotSpeed ]
++ iaspects ringTemplate
}
ring2 = ringTemplate
{ ifreq = [("treasure", 100), ("any jewelry", 100)]
, iaspects = [ SetFlag Unique, ELabel "of Rush"
, AddSkill SkSpeed $ (1 + 1 `dL` 2) * 2
, AddSkill SkMaxCalm (-40), AddSkill SkMaxHP (-20)
, SetFlag Durable, EqpSlot EqpSlotSpeed ]
++ iaspects ringTemplate
, idesc = "Roughly-shaped metal with shallow scratches marking it."
}
ring3 = ringTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(10, 8)]
, iaspects = [ AddSkill SkMaxHP $ 5 + (1 `d` 2 + 1 `dL` 2) * 5
, AddSkill SkMaxCalm $ -30 + (1 `dL` 3) * 5
, EqpSlot EqpSlotMaxHP ]
++ iaspects ringTemplate
}
ring4 = ringTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(5, 1), (10, 9)]
, iaspects = [ AddSkill SkMaxCalm $ 20 + (1 `dL` 4) * 5
, EqpSlot EqpSlotMiscBonus ]
++ iaspects ringTemplate
, idesc = "Cold, solid to the touch, perfectly round, engraved with solemn, strangely comforting, worn out words."
}
ring5 = ringTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(3, 4), (10, 8)]
, iaspects = [ AddSkill SkHurtMelee $ (2 + 1 `d` 2 + (1 `dL` 2) * 2 ) * 3
, AddSkill SkMaxHP $ (-3 + 1 `dL` 3) * 10
, EqpSlot EqpSlotHurtMelee ]
++ iaspects ringTemplate
}
ring6 = ringTemplate
{ ifreq = [("common item", 100), ("any jewelry", 100)]
, irarity = [(10, 3)]
, iaspects = [ AddSkill SkShine 1
, EqpSlot EqpSlotShine ]
++ iaspects ringTemplate
, idesc = "A sturdy ring with a large, shining stone."
}
ring7 = ringTemplate
{ ifreq = [("ring of opportunity sniper", 1) ]
, irarity = [(1, 1)]
, iaspects = [ ELabel "of opportunity sniper"
, AddSkill SkProject 8
, EqpSlot EqpSlotProject ]
++ iaspects ringTemplate
}
ring8 = ringTemplate
{ ifreq = [("ring of opportunity grenadier", 1) ]
, irarity = [(1, 1)]
, iaspects = [ ELabel "of opportunity grenadier"
, AddSkill SkProject 11
, EqpSlot EqpSlotProject ]
++ iaspects ringTemplate
}
armorLeather = ItemKind
{ isymbol = symbolTorsoArmor
, iname = "leather armor"
, ifreq = [("common item", 100), ("torso armor", 1)]
, iflavour = zipPlain [Brown]
, icount = 1
, irarity = [(1, 9), (10, 3)]
, iverbHit = "thud"
, iweight = 7000
, idamage = 0
, iaspects = [ AddSkill SkHurtMelee (-2)
, AddSkill SkArmorMelee $ (2 + 1 `dL` 4) * 5
, AddSkill SkArmorRanged $ (1 + 1 `dL` 2) * 3
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorMelee ]
, ieffects = []
, idesc = "A stiff jacket formed from leather boiled in bee wax, padded linen and horse hair. Protects from anything that is not too sharp. Smells much better than the rest of your garment."
, ikit = []
}
armorMail = armorLeather
{ iname = "ring armor"
, ifreq = [("common item", 100), ("torso armor", 1), ("armor ranged", 50)]
, iflavour = zipPlain [Cyan]
, irarity = [(6, 9), (10, 3)]
, iweight = 12000
, idamage = 0
, iaspects = [ AddSkill SkHurtMelee (-3)
, AddSkill SkArmorMelee $ (2 + 1 `dL` 4) * 5
, AddSkill SkArmorRanged $ (4 + 1 `dL` 2) * 3
, AddSkill SkOdor 2
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorRanged ]
, ieffects = []
, idesc = "A long shirt with tiny iron rings sewn into it. Discourages foes from attacking your torso, especially with ranged weapons, which can't pierce the rings nor aim between them. The stiff fabric is hard to wash, though."
}
gloveFencing = ItemKind
{ isymbol = symbolMiscArmor
, iname = "leather glove"
, ifreq = [("common item", 100), ("misc armor", 1), ("armor ranged", 50)]
, iflavour = zipPlain [White]
, icount = 1
, irarity = [(5, 9), (10, 9)]
, iverbHit = "flap"
, iweight = 100
, idamage = 1 `d` 1
, iaspects = [ AddSkill SkHurtMelee $ (2 + 1 `d` 2 + 1 `dL` 2) * 3
, AddSkill SkArmorRanged $ (1 `dL` 2) * 3
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotHurtMelee
, toVelocity 50 ]
, ieffects = []
, idesc = "A fencing glove from rough leather ensuring a good grip. Also quite effective in deflecting or even catching slow projectiles."
, ikit = []
}
gloveGauntlet = gloveFencing
{ iname = "steel gauntlet"
, ifreq = [("common item", 100), ("misc armor", 1)]
, iflavour = zipPlain [BrCyan]
, irarity = [(1, 9), (10, 3)]
, iweight = 300
, idamage = 2 `d` 1
, iaspects = [ AddSkill SkArmorMelee $ (1 + 1 `dL` 4) * 5
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorMelee
, toVelocity 50 ]
, idesc = "Long leather gauntlet covered in overlapping steel plates."
}
gloveJousting = gloveFencing
{ iname = "Tournament Gauntlet"
, ifreq = [("common item", 100), ("misc armor", 1)]
, iflavour = zipFancy [BrRed]
, irarity = [(1, 3), (10, 3)]
, iverbHit = "rasp"
, iweight = 3000
, idamage = 3 `d` 1
, iaspects = [ SetFlag Unique
, AddSkill SkHurtMelee $ (-7 + 1 `dL` 5) * 3
, AddSkill SkArmorMelee $ (2 + 1 `d` 2 + 1 `dL` 2) * 5
, AddSkill SkArmorRanged $ (1 + 1 `dL` 2) * 3
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorMelee
, toVelocity 50 ]
, idesc = "Rigid, steel jousting handgear. If only you had a lance. And a horse to carry it all."
}
hatUshanka = ItemKind
{ isymbol = symbolMiscArmor
, iname = "ushanka hat"
, ifreq = [("common item", 100), ("misc armor", 1)]
, iflavour = zipPlain [Brown]
, icount = 1
, irarity = [(1, 6), (10, 1)]
, iverbHit = "tickle"
, iweight = 500
, idamage = 0
, iaspects = [ Timeout $ (2 + 1 `d` 2) * 3
, AddSkill SkArmorMelee 5, AddSkill SkHearing (-10)
, SetFlag Periodic, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorMelee
, toVelocity 50 ]
, ieffects = [RefillCalm 1]
, idesc = "Soft and warm fur. It keeps your ears warm."
, ikit = []
}
capReinforced = ItemKind
{ isymbol = symbolMiscArmor
, iname = "leather cap"
, ifreq = [("common item", 100), ("misc armor", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 1
, irarity = [(6, 9), (10, 3)]
, iverbHit = "cut"
, iweight = 1000
, idamage = 0
, iaspects = [ AddSkill SkArmorMelee $ (1 `d` 2) * 5
, AddSkill SkProject 1
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotProject ]
, ieffects = []
, idesc = "Boiled leather with a wide brim. It might soften a blow."
, ikit = []
}
helmArmored = ItemKind
{ isymbol = symbolMiscArmor
, iname = "bucket helm"
, ifreq = [("common item", 100), ("misc armor", 1)]
, iflavour = zipPlain [BrCyan]
, icount = 1
, irarity = [(6, 9), (10, 3)]
, iverbHit = "bounce"
, iweight = 2000
, idamage = 0
, iaspects = [ AddSkill SkArmorMelee $ (1 + 1 `dL` 4) * 5
, AddSkill SkArmorRanged $ (2 + 1 `dL` 2) * 3
, AddSkill SkHearing (-7), AddSkill SkSight (-1)
, AddSkill SkSmell (-5)
, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotArmorRanged ]
, ieffects = []
, idesc = "Blocks out everything, including your senses."
, ikit = []
}
buckler = ItemKind
{ isymbol = symbolShield
, iname = "buckler"
, ifreq = [("common item", 100)]
, iflavour = zipPlain [Blue]
, icount = 1
, irarity = [(4, 5)]
, iverbHit = "bash"
, iweight = 2000
, idamage = 0
, iaspects = [ Timeout $ (3 + 1 `d` 3 - 1 `dL` 3) * 2
, AddSkill SkArmorMelee 40
, AddSkill SkHurtMelee (-30)
, SetFlag MinorEffects, SetFlag Durable, SetFlag Meleeable
, EqpSlot EqpSlotArmorMelee
, toVelocity 50 ]
, ieffects = [PushActor (ThrowMod 200 50 1)]
, idesc = "Heavy and unwieldy. Absorbs a percentage of melee damage, both dealt and sustained. Too small to intercept projectiles with. May serve as a counterweight to suddenly push forth."
, ikit = []
}
shield = buckler
{ iname = "shield"
, irarity = [(8, 4)]
, iflavour = zipPlain [Green]
, iweight = 4000
, idamage = 4 `d` 1
, iaspects = [ Timeout $ (3 + 1 `d` 3 - 1 `dL` 3) * 4
, AddSkill SkArmorMelee 80
, AddSkill SkHurtMelee (-70)
, SetFlag MinorEffects, SetFlag Durable, SetFlag Meleeable
, EqpSlot EqpSlotArmorMelee
, toVelocity 50 ]
, ieffects = [PushActor (ThrowMod 400 50 1)]
, idesc = "Large and unwieldy. Absorbs a percentage of melee damage, both dealt and sustained. Too heavy to intercept projectiles with. Useful to push foes out of the way."
}
shield2 = shield
{ ifreq = [("common item", 3 * 3)]
, iweight = 5000
, idamage = 8 `d` 1
, idesc = "A relic of long-past wars, heavy and with a central spike."
}
shield3 = shield2
{ ifreq = [("common item", 1 * 3)]
, iweight = 6000
, idamage = 12 `d` 1
}
dagger = ItemKind
{ isymbol = symbolEdged
, iname = "dagger"
, ifreq = [("common item", 100), ("starting weapon", 200)]
, iflavour = zipPlain [BrCyan]
, icount = 1
, irarity = [(1, 40), (4, 1)]
, iverbHit = "cut"
, iweight = 800
, idamage = 6 `d` 1
, iaspects = [ Timeout 2
, AddSkill SkHurtMelee $ (-1 + 1 `d` 2 + 1 `dL` 2) * 3
, AddSkill SkArmorMelee $ (1 `d` 2) * 5
, SetFlag Durable, SetFlag Meleeable
, EqpSlot EqpSlotWeaponFast
, toVelocity 40 ]
, ieffects = []
, idesc = "A short dagger for thrusting and parrying blows. Does not penetrate deeply, but is quick to move and hard to block. Especially useful in conjunction with a larger weapon."
, ikit = []
}
daggerDropBestWeapon = dagger
{ iname = "Double Dagger"
, ifreq = [("treasure", 20)]
, irarity = [(1, 3), (10, 3)]
, iaspects = [SetFlag Unique]
++ iaspects dagger
, ieffects = [DropBestWeapon, Yell]
, idesc = "A double dagger that a focused fencer can use to catch and twist away an opponent's blade."
}
hammerTemplate = ItemKind
{ isymbol = symbolHafted
, iname = "war hammer"
, ifreq = [("hammer unknown", 1)]
, iflavour = zipFancy [BrMagenta]
, icount = 1
, irarity = [(5, 20), (8, 1)]
, iverbHit = "club"
, iweight = 1600
, idamage = 8 `d` 1
, iaspects = [ HideAs "hammer unknown"
, SetFlag Durable, SetFlag Meleeable
, toVelocity 40 ]
, ieffects = []
, idesc = "It may not cause extensive wounds, but neither does it harmlessly glance off heavy armour as blades and polearms tend to. There are so many shapes and types, some looking more like tools than weapons, that at a glance you can't tell what a particular specimen does. It's obvious, though, that any of them requires some time to recover after a swing."
, ikit = []
}
hammer1 = hammerTemplate
{ ifreq = [("common item", 100), ("starting weapon", 70)]
, iaspects = [Timeout 5, EqpSlot EqpSlotWeaponBig]
++ iaspects hammerTemplate
}
hammer2 = hammerTemplate
{ ifreq = [("common item", 20), ("starting weapon", 7)]
, iverbHit = "gouge"
, iaspects = [Timeout 3, EqpSlot EqpSlotWeaponFast]
++ iaspects hammerTemplate
, idesc = "Upon closer inspection, this hammer turns out particularly handy and well balanced, with one thick and sturdy and two long and sharp points compensating the modest size."
}
hammer3 = hammerTemplate
{ ifreq = [("common item", 3), ("starting weapon", 1)]
, iverbHit = "puncture"
, iweight = 2400
, idamage = 12 `d` 1
, iaspects = [ Timeout 12
, EqpSlot EqpSlotWeaponBig]
++ delete (HideAs "hammer unknown") (iaspects hammerTemplate)
, idesc = "This hammer sports a long metal handle that increases the momentum of the sharpened head's swing, at the cost of long recovery."
}
hammerParalyze = hammerTemplate
{ iname = "Brute Hammer"
, ifreq = [("treasure", 20)]
, irarity = [(5, 1), (8, 6)]
, iaspects = [ SetFlag Unique
, Timeout 5
, EqpSlot EqpSlotWeaponBig ]
++ iaspects hammerTemplate
, ieffects = [Paralyze 10]
, idesc = "A huge shapeless lump of meteorite iron alloy on a sturdy pole. Nobody remains standing when this head connects."
}
hammerSpark = hammerTemplate
{ iname = "Grand Smithhammer"
, ifreq = [("treasure", 20)]
, irarity = [(5, 1), (8, 6)]
, iweight = 2400
, idamage = 12 `d` 1
, iaspects = [ SetFlag Unique
, Timeout 10
, EqpSlot EqpSlotWeaponBig
, AddSkill SkShine 3]
++ delete (HideAs "hammer unknown") (iaspects hammerTemplate)
, ieffects = [Explode "spark"]
, idesc = "Smiths of old wielded this heavy hammer and its sparks christened many a potent blade."
}
sword = ItemKind
{ isymbol = symbolEdged
, iname = "sword"
, ifreq = [("common item", 100), ("starting weapon", 30)]
, iflavour = zipPlain [BrBlue]
, icount = 1
, irarity = [(4, 1), (6, 20)]
, iverbHit = "slash"
, iweight = 2000
, idamage = 10 `d` 1
, iaspects = [ Timeout 7
, SetFlag Durable, SetFlag Meleeable
, EqpSlot EqpSlotWeaponBig
, toVelocity 40 ]
, ieffects = []
, idesc = "Difficult to master; deadly when used effectively. The steel is particularly hard and keen, but rusts quickly without regular maintenance."
, ikit = []
}
swordImpress = sword
{ iname = "Master's Sword"
, ifreq = [("treasure", 20)]
, irarity = [(5, 1), (8, 6)]
, iaspects = [SetFlag Unique]
++ iaspects sword
, ieffects = [Impress]
, idesc = "A particularly well-balance blade, lending itself to impressive shows of fencing skill."
}
swordNullify = sword
{ iname = "Gutting Sword"
, ifreq = [("treasure", 20)]
, iverbHit = "pierce"
, irarity = [(5, 1), (8, 6)]
, iaspects = [SetFlag Unique, Timeout 3, EqpSlot EqpSlotWeaponFast]
++ (iaspects sword \\ [Timeout 7, EqpSlot EqpSlotWeaponBig])
, ieffects = [ DropItem 1 maxBound COrgan "condition"
, RefillCalm (-10)
, Yell ]
, idesc = "Cold, thin blade that pierces deeply and sends its victim into abrupt, sobering shock."
}
halberd = ItemKind
{ isymbol = symbolPolearm
, iname = "war scythe"
, ifreq = [("common item", 100), ("starting weapon", 20)]
, iflavour = zipPlain [BrYellow]
, icount = 1
, irarity = [(5, 0), (8, 15)]
, iverbHit = "impale"
, iweight = 3000
, idamage = 12 `d` 1
, iaspects = [ Timeout 10
, AddSkill SkHurtMelee $ (-5 + 1 `dL` 3) * 5
, AddSkill SkArmorMelee 20
, SetFlag Durable, SetFlag Meleeable
, EqpSlot EqpSlotWeaponBig
, toVelocity 20 ]
, ieffects = []
, idesc = "An improvised weapon made of scythe's blade attached to a long pole. Not often one succeeds in making enough space to swing it freely, but even when stuck between terrain obstacles it blocks approaches effectively and makes using other weapons difficult, both by friends and foes."
, ikit = []
}
halberd2 = halberd
{ iname = "halberd"
, ifreq = [("common item", 3 * 2), ("starting weapon", 1)]
, iweight = 4000
, iaspects = [AddSkill SkHurtMelee $ (-6 + 1 `dL` 4) * 10]
++ (iaspects halberd
\\ [AddSkill SkHurtMelee $ (-6 + 1 `dL` 4) * 5])
, idamage = 18 `d` 1
, idesc = "A long haft with a sharp blade. Designed and refined for war."
}
halberd3 = halberd2
{ iname = "bardiche"
, ifreq = [("common item", 1 * 2)]
, iverbHit = "carve"
, iweight = 5000
, idamage = 24 `d` 1
, idesc = "The reach of a spear but the edge of an axe."
}
halberdPushActor = halberd
{ iname = "Swiss Halberd"
, ifreq = [("treasure", 20)]
, irarity = [(7, 0), (9, 15)]
, iaspects = [SetFlag Unique]
++ iaspects halberd
, ieffects = [PushActor (ThrowMod 200 100 1)]
, idesc = "A versatile polearm, with great reach and leverage. Foes are held at a distance."
}
wandTemplate = ItemKind
{ isymbol = symbolWand
, iname = "wand"
, ifreq = [("wand unknown", 1)]
, iflavour = zipFancy brightCol
, icount = 1
, irarity = []
, iverbHit = "club"
, iweight = 300
, idamage = 0
, iaspects = [ HideAs "wand unknown"
, AddSkill SkShine 1, AddSkill SkSpeed (-1)
, SetFlag Durable
, toVelocity 125 ]
, ieffects = []
, idesc = "Buzzing with dazzling light that shines even through appendages that handle it."
, ikit = []
}
wand1 = wandTemplate
{ ifreq = []
, ieffects = []
}
gemTemplate = ItemKind
{ isymbol = symbolGold
, iname = "gem"
, ifreq = [("gem unknown", 1), ("valuable", 100)]
, iflavour = zipPlain $ delete BrYellow brightCol
, icount = 1
, irarity = [(3, 0), (10, 24)]
, iverbHit = "tap"
, iweight = 50
, idamage = 0
, iaspects = [HideAs "gem unknown", SetFlag Precious]
, ieffects = []
, idesc = "Useless, and still worth around 100 gold each. Would gems of thought and pearls of artful design be valued that much in our age of Science and Progress!"
, ikit = []
}
gem1 = gemTemplate
{ ifreq = [ ("treasure", 100), ("gem", 100), ("any jewelry", 100)
, ("valuable", 100) ]
, irarity = [(3, 0), (6, 12), (10, 8)]
, iaspects = [AddSkill SkShine 1, AddSkill SkSpeed (-1)]
++ iaspects gemTemplate
}
gem2 = gem1
{ ifreq = [ ("treasure", 100), ("gem", 100), ("any jewelry", 100)
, ("valuable", 100) ]
, irarity = [(5, 0), (7, 25), (10, 8)]
}
gem3 = gem1
{ ifreq = [ ("treasure", 100), ("gem", 100), ("any jewelry", 100)
, ("valuable", 100) ]
, irarity = [(7, 0), (8, 20), (10, 8)]
}
gem4 = gem1
{ ifreq = [ ("treasure", 100), ("gem", 100), ("any jewelry", 100)
, ("valuable", 100) ]
, irarity = [(9, 0), (10, 70)]
}
gem5 = gem1
{ isymbol = symbolSpecial
, iname = "elixir"
, ifreq = [ ("treasure", 100), ("gem", 25), ("any jewelry", 10)
, ("valuable", 100) ]
, iflavour = zipPlain [BrYellow]
, irarity = [(1, 40), (10, 10)]
, iaspects = [ ELabel "of youth", SetFlag Precious
, AddSkill SkOdor (-1) ]
, ieffects = [RefillCalm 10, RefillHP 40]
, idesc = "A crystal vial of amber liquid, supposedly granting eternal youth and fetching 100 gold per piece. The main effect seems to be mild euphoria, but it admittedly smells good and heals minor ailments rather well."
}
currencyTemplate = ItemKind
{ isymbol = symbolGold
, iname = "gold piece"
, ifreq = [("currency unknown", 1), ("valuable", 1)]
, iflavour = zipPlain [BrYellow]
, icount = 10 + 1 `d` 20 + 1 `dL` 20
, irarity = [(1, 25), (10, 10)]
, iverbHit = "tap"
, iweight = 31
, idamage = 0
, iaspects = [HideAs "currency unknown", SetFlag Precious]
, ieffects = []
, idesc = "Reliably valuable in every civilized plane of existence."
, ikit = []
}
currency = currencyTemplate
{ ifreq = [("treasure", 100), ("currency", 100), ("valuable", 1)]
, iaspects = [AddSkill SkShine 1, AddSkill SkSpeed (-1)]
++ iaspects currencyTemplate
}
smokingJacket = ItemKind
{ isymbol = symbolClothes
, iname = "smoking jacket"
, ifreq = [("common item", 100), ("misc clothing", 1), ("chic gear", 100)]
, iflavour = zipFancy [BrGreen]
, icount = 1
, irarity = [(1, 9), (10, 3)]
, iverbHit = "stroke"
, iweight = 5000
, idamage = 0
, iaspects = [ Timeout $ (1 `d` 2) * 3
, AddSkill SkSpeed 2
, AddSkill SkOdor 2
, SetFlag Periodic, SetFlag Durable, SetFlag Equipable
, EqpSlot EqpSlotSpeed ]
, ieffects = [RefillCalm 1]
, idesc = "Wearing this velvet jacket, anyone would look dashing."
, ikit = []
}