{-# LANGUAGE OverloadedStrings #-} -- | Monsters and heroes for LambdaHack. module Content.ActorKind ( cdefs ) where import Game.LambdaHack.Ability import Game.LambdaHack.Color import Game.LambdaHack.CDefs import Game.LambdaHack.Content.ActorKind import Game.LambdaHack.Random import Game.LambdaHack.Time cdefs :: CDefs ActorKind cdefs = CDefs { getSymbol = asymbol , getName = aname , getFreq = afreq , validate = avalidate , content = [hero, projectile, eye, fastEye, nose] } hero, projectile, eye, fastEye, nose :: ActorKind hero = ActorKind { asymbol = '@' , aname = "hero" , afreq = [("hero", 1)] -- Does not appear randomly in the dungeon. , acolor = BrWhite -- Heroes white, monsters colorful. , ahp = RollDice 60 1 , aspeed = toSpeed 2 , asight = True , asmell = False , aiq = 13 -- Can see hidden doors, when he is under alien control. , aregen = 500 , acanDo = [minBound..maxBound] } projectile = ActorKind -- includes homing missiles { asymbol = '*' , aname = "projectile" , afreq = [("projectile", 1)] -- Does not appear randomly in the dungeon. , acolor = BrWhite , ahp = RollDice 0 0 , aspeed = toSpeed 0 , asight = False , asmell = False , aiq = 0 , aregen = maxBound , acanDo = [Track] } eye = ActorKind { asymbol = 'e' , aname = "reducible eye" , afreq = [("monster", 60), ("summon", 50)] , acolor = BrRed , ahp = RollDice 7 4 , aspeed = toSpeed 2 , asight = True , asmell = False , aiq = 8 , aregen = 100 , acanDo = [minBound..maxBound] } fastEye = ActorKind { asymbol = 'e' , aname = "super-fast eye" , afreq = [("monster", 15)] , acolor = BrBlue , ahp = RollDice 1 4 , aspeed = toSpeed 4 , asight = True , asmell = False , aiq = 12 , aregen = 5 -- Regenerates fast (at max HP most of the time!). , acanDo = [minBound..maxBound] } nose = ActorKind { asymbol = 'n' , aname = "point-free nose" , afreq = [("monster", 20), ("summon", 100)] , acolor = Green , ahp = RollDice 17 2 , aspeed = toSpeed 1.8 , asight = False , asmell = True , aiq = 0 , aregen = 100 , acanDo = [minBound..maxBound] }