94 lines
3.2 KiB
Haskell
94 lines
3.2 KiB
Haskell
module Dodge.Item.Held.Rod (
|
|
bangRod,
|
|
elephantGun,
|
|
amr,
|
|
autoAmr,
|
|
sniperRifle,
|
|
machineGun,
|
|
) where
|
|
|
|
import Dodge.Item.Held.SingleBarrel
|
|
import Dodge.Data.Item
|
|
import Dodge.Default
|
|
import Dodge.Item.Weapon.Bullet
|
|
import Dodge.Reloading.Action
|
|
import Geometry
|
|
import LensHelp
|
|
|
|
bangRod :: Item
|
|
bangRod =
|
|
defaultBulletWeapon
|
|
& itParams
|
|
.~ BulletShooter
|
|
{ _muzVel = 0.8
|
|
, _rifling = 1
|
|
, _bore = 2
|
|
, _gunBarrels = singleBarrel 0.1
|
|
, _recoil = 50
|
|
, _torqueAfter = 0.3
|
|
, _randomOffset = 0
|
|
}
|
|
& itUse . heldDelay . rateMax .~ 12
|
|
& itUse . heldMods .~ BangRodMod
|
|
& itDimension . dimRad .~ 12
|
|
& itDimension . dimCenter .~ V3 5 0 0
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 1
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 5, loadInsert 10, loadPrime 5]
|
|
& itType . iyBase .~ HELD BANGROD
|
|
& itUse . heldAim . aimWeight .~ 8
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ OneHand
|
|
& itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1.5}
|
|
& itUse . heldAim . aimHandlePos .~ 5
|
|
& itUse . heldAim . aimMuzPos .~ 30
|
|
& itUse . heldConsumption . laAmmoType .~ hvBulletAmmo
|
|
|
|
elephantGun :: Item
|
|
elephantGun =
|
|
bangRod
|
|
& itType . iyBase .~ HELD ELEPHANTGUN
|
|
& itUse . heldAim . aimStance .~ TwoHandTwist
|
|
& itParams . gunBarrels .~ singleBarrel 0.05
|
|
& itUse . heldMods .~ ElephantGunMod
|
|
& itParams . recoil .~ 50
|
|
& itParams . torqueAfter .~ 0.1
|
|
|
|
amr :: Item
|
|
amr =
|
|
elephantGun
|
|
& itType . iyBase .~ HELD AMR
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 15
|
|
|
|
autoAmr :: Item
|
|
autoAmr =
|
|
amr
|
|
& itType . iyBase .~ HELD AUTOAMR
|
|
& itUse . heldMods .~ AutoAmrMod
|
|
|
|
sniperRifle :: Item
|
|
sniperRifle =
|
|
elephantGun
|
|
& itType . iyBase .~ HELD SNIPERRIFLE
|
|
& itParams . gunBarrels .~ singleBarrel 0
|
|
& itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 0.5, _izMin = 0.5,_izFac = 1}
|
|
& itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun
|
|
& itScope .~ ZoomScope (V2 0 0) 1 0.5 False
|
|
& itType . iyModules . at ModTarget ?~ TARGET TargetLaser
|
|
-- & itUse . useTargeting ?~ TargetLaser
|
|
|
|
machineGun :: Item
|
|
machineGun =
|
|
bangRod
|
|
& itType . iyBase .~ HELD MACHINEGUN
|
|
& itUse . heldDelay . rateMax .~ 25
|
|
& itUse . heldMods .~ MachineGunMod
|
|
& itUse . heldAim . aimWeight .~ 8
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ TwoHandTwist
|
|
& itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1.5}
|
|
& itUse . heldDelay .~ VariableRate{_rateMax = 25, _rateMaxMax = 24, _rateMinMax = 7, _rateTime = 0}
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 100
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 10, loadInsert 40, loadPrime 10]
|
|
& itInvSize .~ 3
|
|
& itParams . torqueAfter .~ 0.2 -- not sure if this is necessary?
|