49 lines
1.2 KiB
Haskell
49 lines
1.2 KiB
Haskell
module Dodge.Item.Craftable where
|
|
|
|
import Dodge.Default.Item
|
|
import Control.Lens
|
|
import Dodge.Data.Item
|
|
|
|
makeTypeCraftNum :: Int -> CraftType -> [Item]
|
|
makeTypeCraftNum i ct = replicate i $
|
|
defaultCraftItem
|
|
& itInvSize .~ 0.5
|
|
& itCurseStatus .~ Uncursed
|
|
-- & itUse . useAmount .~ fromIntegral i
|
|
& itType . iyBase .~ CRAFT ct
|
|
|
|
makeTypeCraft :: CraftType -> Item
|
|
makeTypeCraft = head . makeTypeCraftNum 1
|
|
|
|
energyBallCraft :: EnergyBallType -> Item
|
|
energyBallCraft ebt = makeTypeCraft (ENERGYBALLCRAFT ebt) & itInvSize .~ 1
|
|
|
|
incendiaryModule :: Item
|
|
incendiaryModule = energyBallCraft IncBall
|
|
|
|
bulletBodyCraft :: BulletEffect -> Item
|
|
bulletBodyCraft ebt =
|
|
makeTypeCraft (BULBODYCRAFT ebt)
|
|
& itInvSize .~ 1
|
|
|
|
bounceModule :: Item
|
|
bounceModule = bulletBodyCraft BounceBullet
|
|
|
|
teleportModule :: Item
|
|
teleportModule = makeTypeCraft TELEPORTMODULE & itInvSize .~ 1
|
|
|
|
timeModule :: Item
|
|
timeModule = makeTypeCraft TIMEMODULE & itInvSize .~ 1
|
|
|
|
sizeModule :: Item
|
|
sizeModule = makeTypeCraft SIZEMODULE & itInvSize .~ 1
|
|
|
|
gravityModule :: Item
|
|
gravityModule = makeTypeCraft GRAVITYMODULE & itInvSize .~ 1
|
|
|
|
pipe :: Item
|
|
pipe = makeTypeCraft PIPE
|
|
|
|
plateCraft :: Item
|
|
plateCraft = makeTypeCraft PLATE
|