Files
loop/src/Dodge/Item/Held/SprayGuns.hs
T

101 lines
3.1 KiB
Haskell

module Dodge.Item.Held.SprayGuns (
poisonSprayer,
flameSpitter,
blowTorch,
flameThrower,
flameTorrent,
flameWall,
) where
--import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Data.Item
import Dodge.Default.Item
--import Dodge.Reloading.Action
import Geometry
import LensHelp
poisonSprayer :: Item
poisonSprayer =
flameThrower
& itType .~ HELD POISONSPRAYER
& itAmmoSlots .~ singleAmmo GasAmmo
& itUse . heldParams . gasCreation .~ CreatePoisonGas --aGasCloud
-- & itUse . heldParams . recoil .~ 0
& itUse . heldParams . torqueAfter .~ 0
& itUse . heldParams . randomOffset .~ 0
& itUse . heldParams . sidePush .~ 0
-- & itUse . heldParams . bulGunSound ?~ (foamSprayLoopS,5)
flameSpitter :: Item
flameSpitter =
flameThrower
& itType .~ HELD FLAMESPITTER
& itUse . heldDelay .~ FixedRate{_rateMax = 3, _rateTimeLastUsed = 0}
& itUse . heldParams . weaponInvLock .~ 10
& itUse . heldParams . weaponRepeat .~ [1..9]
& itUse . heldAim . aimMuzzles . ix 0 . mzEffect . nzPressure .~ UniRandFloat 3 4
& itUse . heldTriggerType .~ HammerTrigger
flameTorrent :: Item
flameTorrent =
flameThrower
& itType .~ HELD FLAMETORRENT
-- & itUse . heldAim . aimZoom .~ defaultItZoom
-- & itParams . sprayNozzles . ix 0
-- %~ ( (nzPressure .~ 10)
-- . (nzMaxWalkAngle .~ 1.5)
-- . (nzWalkSpeed .~ 0.05)
-- )
blowTorch :: Item
blowTorch =
flameThrower
& itType .~ HELD BLOWTORCH
flameWall :: Item
flameWall =
flameThrower
& itType .~ HELD FLAMEWALL
-- & itParams . sprayNozzles .~ zipWith makeNozzle [0, 0.6, -0.6] [2, 2.5, 2.5]
-- where
-- makeNozzle dir pres =
-- Nozzle
-- { _nzPressure = pres
-- , _nzDir = dir
-- , _nzMaxWalkAngle = 0
-- , _nzWalkSpeed = 0
-- , _nzCurrentWalkAngle = 0
-- , _nzLength = 20
-- }
flameThrower :: Item
flameThrower =
defaultHeldItem
& itParams .~ NoParams
& itUse . heldDelay .~ NoDelay
& itUse . heldAim . aimWeight .~ 5
-- & itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 5, _izMin = 1.5}
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 18 0) 0 0 0 NoFlare
MuzzleNozzle
{ _nzPressure = ConstFloat 4
, _nzMaxWalkAngle = 0.2
, _nzWalkSpeed = 0.01
, _nzCurrentWalkAngle = 0
}
(UseExactly 1)
0
]
& itAmmoSlots .~ singleAmmo GasAmmo
& itType .~ HELD FLAMETHROWER
& itUse . heldParams .~ GasSprayParams
{_gasCreation = CreateFlame
-- , _recoil = 0
, _torqueAfter = 0
, _randomOffset = 0
, _sidePush = 25
-- , _bulGunSound = Nothing
, _weaponInvLock = 0
, _weaponRepeat = mempty
}
& itUse . heldTriggerType .~ AutoTrigger