44 lines
1.1 KiB
Haskell
44 lines
1.1 KiB
Haskell
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Effect (
|
|
module Dodge.Data.Item.Effect,
|
|
module Dodge.Data.BlBl,
|
|
) where
|
|
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
import Dodge.Data.BlBl
|
|
|
|
data ItEffect = ItEffect
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieOnInsert :: ItInvEffect
|
|
, _ieOnDrop :: ItInvEffect --Item -> Creature -> World -> World
|
|
}
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data ItInvEffect
|
|
= NoInvEffect
|
|
| EffectRootNotroot ItInvEffect ItInvEffect
|
|
| CreateShieldWall
|
|
| RemoveShieldWall
|
|
| EffectWhileRoot ItInvEffect
|
|
| EffectWhileAttached ItInvEffect
|
|
| ItemUseToggle BlBl
|
|
| ItemCancelExamineInventory
|
|
| ItemCopierUpdate
|
|
| ItemReduceWarmTime
|
|
| ItemSetWarmTime Int
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data ItDropEffect = NoDropEffect
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
makeLenses ''ItEffect
|
|
deriveJSON defaultOptions ''ItInvEffect
|
|
deriveJSON defaultOptions ''ItDropEffect
|
|
deriveJSON defaultOptions ''ItEffect
|