module Dodge.Item.Held.Rod ( bangRod, elephantGun, amr, autoAmr, sniperRifle, machineGun, ) where 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 , _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 . aimMuzzles .~ [Muzzle (V2 30 0) 0 0.1] & itUse . heldConsumption . laAmmoType .~ hvBulletAmmo elephantGun :: Item elephantGun = bangRod & itType . iyBase .~ HELD ELEPHANTGUN & itUse . heldAim . aimStance .~ TwoHandUnder & itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0.05 & itUse . heldMods .~ ElephantGunMod & itParams . recoil .~ 50 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 & itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0 & itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 0.5, _izMin = 0.5,_izFac = 1} -- & itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun -- & itScope .~ ZoomScope -- { _scopePos = (V2 0 0) -- , _scopeZoom = 1 -- , _scopeDefaultZoom = 0.5 -- } -- & 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 .~ TwoHandUnder & 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?