68 lines
2.0 KiB
Haskell
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)
|