101 lines
3.1 KiB
Haskell
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
|