-- | The type of kinds of weapons and treasure. module Game.LambdaHack.Content.ItemKind ( ItemKind(..), ivalidate ) where import Game.LambdaHack.Effect import Game.LambdaHack.Flavour import Game.LambdaHack.Random import Game.LambdaHack.Misc -- TODO: ipower is out of place here. It doesn't make sense for all items, -- and will mean different things for different items. Perhaps it should -- be part of the Effect, but then we have to be careful to distinguish -- parts of the Effect that are rolled on item creation and those rolled -- at each use (e.g., sword magical +damage vs. sword damage dice). -- Another thing to keep in minds is that ipower will heavily determine -- the value of the item for shops, treasure chests, artifact set rebalancing, -- etc., so if we make ipower complex, the value computation gets complex too. -- | Item properties that are fixed for a given kind of items. data ItemKind = ItemKind { isymbol :: !Char -- ^ map symbol , iname :: !String -- ^ generic name , ifreq :: !Freqs -- ^ frequency within groups , iflavour :: ![Flavour] -- ^ possible flavours , ieffect :: !Effect -- ^ the effect when activated , icount :: !RollDeep -- ^ created in that quantify , ipower :: !RollDeep -- ^ created with that power , iverbApply :: !String -- ^ the verb for applying and possibly combat , iverbProject :: !String -- ^ the verb for projecting } deriving Show -- No Eq and Ord to make extending it logically sound, see #53 -- | No specific possible problems for the content of this kind, so far, -- so the validation function always returns the empty list of offending kinds. ivalidate :: [ItemKind] -> [ItemKind] ivalidate _ = []