53 lines
2.0 KiB
Haskell
53 lines
2.0 KiB
Haskell
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)
|