Files
loop/src/Dodge/Item/Held/Utility.hs
T
2023-01-06 12:17:34 +00:00

68 lines
2.0 KiB
Haskell

module Dodge.Item.Held.Utility where
import Dodge.Default.Item
import Color
import Control.Lens
import Dodge.Data.Item
flatShield :: Item
flatShield =
defaultHeldItem
& itEffect . ieInv .~ EffectIfHeld CreateShieldWall RemoveShieldWall
& itUse . heldAim
.~ AimParams
{ _aimWeight = 5
, _aimRange = 0
, _aimZoom = ItZoom 20 0.2 1
, _aimStance = TwoHandFlat
, _aimHandlePos = 0
, _aimMuzPos = 0
}
& itInvSize .~ 3
& itType . iyBase .~ HELD FLATSHIELD
keyCard :: Int -> Item
keyCard n =
defaultHeldItem
& itInvColor .~ aquamarine
& itType . iyBase .~ HELD (KEYCARD n)
latchkey :: Int -> Item
latchkey _ =
defaultHeldItem
& itInvColor .~ yellow
torch :: Item
torch =
defaultHeldItem
& itEffect . ieInv .~ EffectWhileHeld CreateHeldLight
& itType . iyBase .~ HELD TORCH
& itUse . heldAim . aimHandlePos .~ 5
& itUse . heldAim . aimMuzPos .~ 10
forceFieldGun :: Item
forceFieldGun =
defaultWeapon
& itUse . useTargeting ?~ TargetRBLine
& itParams .~ ParamMID Nothing
& itUse . heldUse .~ HeldForceField --useForceFieldGun
& itUse . heldDelay .~ NoDelay
& itUse . heldMods .~ AmmoHammerTimeUseOneMod -- this is slightly different
-- than the list below
--[ hammerCheckI , ammoCheckI , useAmmoAmount 1]
& itType . iyBase .~ HELD FORCEFIELDGUN
& itUse . heldConsumption .~ (defaultLoadable & laAmmoType .~ ForceFieldAmmo DefaultForceField)
{- |
Sends out pulses that display walls.
-}
clickDetector :: Detector -> Item
clickDetector dt =
defaultWeapon
& itUse . heldDelay . rateMax .~ 20
& itUse . heldUse .~ HeldDetectorEffect dt --detectorEffect dt
& itUse . heldMods .~ AmmoUseCheckMod
& itUse . heldAim . aimRange .~ 1
& itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1}
& itType . iyBase .~ HELD (HELDDETECTOR dt)