56 lines
1.5 KiB
Haskell
56 lines
1.5 KiB
Haskell
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Effect where
|
|
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
|
|
data ItEffect
|
|
= NoItEffect
|
|
| ItInvEffect
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieCounter :: Int
|
|
}
|
|
| ItRewindEffect
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
}
|
|
| ItEffect
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieFloor :: ItFloorEffect --Int -> World -> World
|
|
, _ieCounter :: Int
|
|
}
|
|
| ItInvEffectID
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieMID :: Maybe Int
|
|
} -- the duplication of ieMID may cause errors...
|
|
| ItInvEffectDrop
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieDrop :: ItDropEffect --Item -> Creature -> World -> World
|
|
, _ieMID :: Maybe Int
|
|
}
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data ItInvEffect
|
|
= NoInvEffect
|
|
| RewindEffect
|
|
| ResetAttachmentEffect
|
|
| OnOffHeldEffect ItInvEffect ItInvEffect
|
|
| CreateHeldLight
|
|
| CreateShieldWall
|
|
| RemoveShieldWall
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data ItFloorEffect = NoFloorEffect
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data ItDropEffect = NoDropEffect
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
makeLenses ''ItEffect
|
|
deriveJSON defaultOptions ''ItEffect
|
|
deriveJSON defaultOptions ''ItInvEffect
|
|
deriveJSON defaultOptions ''ItFloorEffect
|
|
deriveJSON defaultOptions ''ItDropEffect
|