module Dodge.Item.Held.Cone where import Dodge.Default.Item import Dodge.Data.Item import Dodge.Reloading.Action import Control.Lens import Geometry.Data bangCone :: Item bangCone = defaultBulletWeapon { _itParams = BulletShooter { _muzVel = 0.7 , _rifling = 0.8 , _bore = 5 , _gunBarrels = SingleBarrel 0.5 , _recoil = 150 , _torqueAfter = 0.1 , _randomOffset = 12 } } & itDimension . dimRad .~ 8 & itDimension . dimCenter .~ V3 5 0 0 & itUse . heldDelay . rateMax .~ 20 & itUse . heldMods .~ BangConeMod & itUse . heldAim . aimHandlePos .~ 5 & itUse . heldAim . aimMuzPos .~ 15 & itType . iyBase .~ HELD BANGCONE & itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 5 & itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 5, loadInsert 20, loadPrime 5] blunderbuss :: Item blunderbuss = bangCone & itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 25 & itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 5, loadInsert 30, loadPrime 5] & itUse . heldAim . aimStance .~ TwoHandTwist & itUse . heldAim . aimWeight .~ 6 & itUse . heldAim . aimHandlePos .~ 5 & itUse . heldAim . aimMuzPos .~ 30 & itType . iyBase .~ HELD BLUNDERBUSS grapeCannon :: Int -> Item grapeCannon i = blunderbuss & itType . iyBase .~ HELD (GRAPECANNON i) & itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 25 + 25 * i & itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 5, loadInsert (30 + i * 10), loadPrime 5] & itParams . recoil .~ (150 + fromIntegral i * 50) & itParams . torqueAfter .~ (0.1 + 0.2 * fromIntegral i) & itParams . randomOffset .~ (12 + 4 * fromIntegral i)