124 lines
3.1 KiB
Haskell
124 lines
3.1 KiB
Haskell
module Dodge.Default.Weapon where
|
|
|
|
import Control.Lens
|
|
import qualified Data.Map.Strict as M
|
|
import Dodge.Data.Ammo
|
|
import Dodge.Data.Hammer
|
|
import Dodge.Data.Item
|
|
import Dodge.Default.AimParams
|
|
import Dodge.Default.Item
|
|
import Dodge.Item.Weapon.Bullet
|
|
import Dodge.Reloading.Action
|
|
import Picture
|
|
|
|
defaultLeftLoadable :: LeftConsumption
|
|
defaultLeftLoadable = AutoRecharging 10 10 100 100
|
|
|
|
defaultLoadable :: HeldConsumption
|
|
defaultLoadable =
|
|
LoadableAmmo
|
|
{ _laAmmoType = GenericAmmo
|
|
, _laMax = 15
|
|
, _laLoaded = 0
|
|
, _laPrimed = True
|
|
, _laCycle = [loadEject 10, loadInsert 10, loadPrime 10]
|
|
, _laProgress = Nothing
|
|
}
|
|
|
|
defaultBulletLoadable :: HeldConsumption
|
|
defaultBulletLoadable = defaultLoadable & laAmmoType .~ basicBullet
|
|
|
|
defaultChargeable :: LeftConsumption
|
|
defaultChargeable = ChargeableAmmo 100 100
|
|
|
|
defaultrUse :: ItemUse
|
|
defaultrUse =
|
|
RightUse
|
|
{ _rUse = HeldDoNothing
|
|
, _useDelay = FixedRate{_rateMax = 8, _rateTime = 0}
|
|
, _useMods = HeldModNothing
|
|
, _useHammer = HammerUp
|
|
, _useAim = defaultAimParams
|
|
, _heldScroll = HeldScrollDoNothing
|
|
, _heldConsumption = defaultLoadable
|
|
}
|
|
|
|
defaultlUse :: ItemUse
|
|
defaultlUse =
|
|
LeftUse
|
|
{ _lUse = LDoNothing
|
|
, _useDelay = FixedRate{_rateMax = 8, _rateTime = 0}
|
|
, _useHammer = HammerUp
|
|
, _eqEq = defaultEquip
|
|
, _leftConsumption = defaultLeftLoadable
|
|
}
|
|
|
|
defaultEquip :: Equipment
|
|
defaultEquip =
|
|
Equipment
|
|
{ _eqSite = GoesOnSpecial
|
|
, _eqUse = EDoNothing
|
|
, _eqOnEquip = EDoNothing
|
|
, _eqOnRemove = EDoNothing
|
|
, _eqParams = NoEquipParams
|
|
, _eqViewDist = Nothing
|
|
}
|
|
|
|
luseInstantNoH :: Luse -> ItemUse
|
|
luseInstantNoH f =
|
|
defaultlUse
|
|
& lUse .~ f
|
|
& useDelay .~ NoDelay
|
|
|
|
-- TODO change this
|
|
defaultLeftItem :: Item
|
|
defaultLeftItem =
|
|
defaultWeapon
|
|
& itUse .~ defaultlUse
|
|
|
|
defaultWeapon :: Item
|
|
defaultWeapon =
|
|
defaultItem
|
|
& itUse .~ defaultrUse
|
|
& itInvColor .~ white
|
|
& itType . iyModules
|
|
.~ M.fromList
|
|
[ (ModTarget, EMPTYMODULE)
|
|
, (ModTeleport, EMPTYMODULE)
|
|
]
|
|
|
|
defaultBulletWeapon :: Item
|
|
defaultBulletWeapon =
|
|
defaultWeapon
|
|
& itUse . heldConsumption .~ defaultBulletLoadable
|
|
& itUse . rUse .~ HeldUseAmmoParams -- useAmmoParams
|
|
& itType . iyModules . at ModBullet ?~ EMPTYMODULE
|
|
& itType . iyModules . at ModBulletSpawn ?~ EMPTYMODULE
|
|
& itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE
|
|
|
|
defaultItemValue :: ItemValue
|
|
defaultItemValue = ItemValue 10 MundaneItem
|
|
|
|
defaultCraftable :: Item
|
|
defaultCraftable =
|
|
defaultItem
|
|
{ _itInvColor = green
|
|
}
|
|
|
|
defBulletShooter :: ItemParams
|
|
defBulletShooter =
|
|
BulletShooter
|
|
{ _muzVel = 1
|
|
, _rifling = 0.8
|
|
, _bore = 2
|
|
, _gunBarrels = SingleBarrel 0
|
|
, _recoil = 0
|
|
, _torqueAfter = 0
|
|
, _randomOffset = 0
|
|
}
|
|
|
|
defaultAutoGun :: Item
|
|
defaultAutoGun =
|
|
defaultBulletWeapon
|
|
& itUse . useAim . aimStance .~ TwoHandTwist
|