173 lines
5.6 KiB
Haskell
173 lines
5.6 KiB
Haskell
module Dodge.Item.Held.BatteryGuns where
|
|
|
|
import Dodge.Data.Beam
|
|
import Dodge.Default.Item
|
|
import Color
|
|
import Control.Lens
|
|
import qualified Data.Map.Strict as M
|
|
import Dodge.Data.Item
|
|
import Dodge.Reloading.Action
|
|
import Dodge.Tesla.ItemParams
|
|
import Geometry.Data
|
|
import qualified IntMapHelp as IM
|
|
|
|
sparkGun :: Item
|
|
sparkGun =
|
|
teslaGun
|
|
& itType . iyBase .~ HELD SPARKGUN
|
|
& itParams . arcSize .~ 10
|
|
|
|
teslaGun :: Item
|
|
teslaGun =
|
|
defaultBatteryGun
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 200
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaCycle .~ [loadEject 10, loadInsert 10, loadPrime 60]
|
|
& itDimension . dimRad .~ 9
|
|
& itDimension . dimCenter .~ V3 4 0 0
|
|
& itParams .~ teslaParams
|
|
& itUse . heldUse .~ HeldTeslaArc --shootTeslaArc
|
|
& itUse . heldDelay .~ NoDelay
|
|
& itUse . heldMods .~ TeslaMod
|
|
& itUse . heldAim . aimWeight .~ 6
|
|
& itUse . heldAim . aimStance .~ TwoHandFlat
|
|
& itUse . heldAim . aimHandlePos .~ 4
|
|
-- & itUse . heldAim . aimMuzPos .~ 4
|
|
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 4 0) 0 0]
|
|
& itType . iyBase .~ HELD TESLAGUN
|
|
|
|
lasGun :: Item
|
|
lasGun =
|
|
defaultAutoBatteryGun
|
|
& itUse . heldConsumption
|
|
.~ ( defaultLoadable
|
|
& laSource . _InternalSource . iaMax .~ 200
|
|
& laSource . _InternalSource . iaCycle .~ [loadEject 10, loadInsert 10, loadPrime 60]
|
|
)
|
|
& itParams
|
|
.~ Refracting
|
|
{ _phaseV = 1
|
|
, _lasColor = yellow
|
|
, _lasColor2 = yellow
|
|
, _lasCycle = 0
|
|
, _lasDamage = 11
|
|
}
|
|
& itTweaks
|
|
.~ Tweakable
|
|
{ _tweakParams = IM.fromList [(0, lasGunTweak)]
|
|
}
|
|
& itDimension . dimRad .~ 10
|
|
& itDimension . dimCenter .~ V3 15 0 0
|
|
& itUse . heldUse .~ HeldLaser --shootLaser
|
|
& itUse . heldDelay .~ NoDelay
|
|
& itUse . heldMods .~ LasMod
|
|
& itUse . heldAim . aimWeight .~ 6
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ TwoHandTwist
|
|
& itUse . heldAim . aimHandlePos .~ 5
|
|
-- & itUse . heldAim . aimMuzPos .~ 30
|
|
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0]
|
|
& itType . iyBase .~ HELD LASGUN
|
|
|
|
lasGunTweak :: TweakParam
|
|
lasGunTweak =
|
|
TweakParam
|
|
{ _tweakType = TweakPhaseV
|
|
, _tweakVal = 1
|
|
, _tweakMax = 3
|
|
}
|
|
|
|
tractorGun :: Item
|
|
tractorGun =
|
|
lasGun
|
|
& itUse . heldConsumption
|
|
.~ ( defaultLoadable
|
|
& laSource . _InternalSource . iaMax .~ 10000
|
|
& laSource . _InternalSource . iaCycle .~ [loadEject 10, loadInsert 10, loadPrime 60]
|
|
)
|
|
& itParams .~ Attracting{_attractionPower = 1}
|
|
& itTweaks
|
|
.~ Tweakable
|
|
{ _tweakParams = IM.fromList [(0, tractorGunTweak)]
|
|
}
|
|
& itUse . heldUse .~ HeldTractor --aTractorBeam
|
|
& itUse . heldDelay .~ NoDelay
|
|
& itUse . heldMods .~ AmmoCheckMod
|
|
& itUse . heldAim . aimWeight .~ 6
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ TwoHandTwist
|
|
& itUse . heldAim . aimHandlePos .~ 5
|
|
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0]
|
|
& itType . iyBase .~ HELD TRACTORGUN
|
|
|
|
tractorGunTweak :: TweakParam
|
|
tractorGunTweak =
|
|
TweakParam
|
|
{ _tweakType = TweakTractionPower
|
|
, _tweakVal = 1
|
|
, _tweakMax = 4
|
|
}
|
|
|
|
lasWide :: Int -> Item
|
|
lasWide n =
|
|
lasGun
|
|
& itType . iyBase .~ HELD (LASWIDE n)
|
|
& itParams . lasColor .~ yellow
|
|
& itParams . lasDamage .~ 2
|
|
& itUse . heldMods .~ LasWideMod n
|
|
|
|
defaultBatteryGun :: Item
|
|
defaultBatteryGun =
|
|
defaultHeldItem
|
|
& itType . iyModules .~ batteryModules
|
|
|
|
batteryModules :: M.Map ModuleSlot ItemModuleType
|
|
batteryModules =
|
|
M.fromList
|
|
[ (ModBattery, EMPTYMODULE)
|
|
, (ModTeleport, EMPTYMODULE)
|
|
]
|
|
|
|
defaultAutoBatteryGun :: Item
|
|
defaultAutoBatteryGun =
|
|
defaultHeldItem
|
|
& itType . iyModules .~ batteryModules
|
|
|
|
lasCircle :: Item
|
|
lasCircle =
|
|
lasGun
|
|
& itType . iyBase .~ HELD LASCIRCLE
|
|
& itParams . lasColor .~ orange
|
|
& itParams . lasDamage .~ 2
|
|
& itUse . heldConsumption . laSource . _InternalSource . iaMax .~ 10000
|
|
& itUse . heldUse .~ HeldLaser --shootLaser
|
|
& itUse . heldDelay .~ NoDelay
|
|
& itUse . heldUse .~ HeldCircleLaser --circleLaser
|
|
& itUse . heldMods .~ CircleLaserMod
|
|
& itUse . heldAim . aimWeight .~ 6
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ TwoHandTwist
|
|
|
|
dualBeam :: Item
|
|
dualBeam =
|
|
lasGun
|
|
& itType . iyBase .~ HELD DUALBEAM
|
|
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0]
|
|
& itParams
|
|
.~ DualBeam
|
|
{ _phaseV = 1
|
|
, _lasColor = red
|
|
, _lasColor2 = green
|
|
, _lasCycle = 0
|
|
, _lasDamage = 11
|
|
, _lasBeam = BeamCombine LasBeamCombine
|
|
, _subParams = Nothing
|
|
, _dbGap = 20
|
|
}
|
|
& itUse . heldUse .~ HeldDualLaser --shootDualLaser
|
|
& itUse . heldDelay .~ NoDelay
|
|
& itUse . heldMods .~ DualBeamMod
|
|
& itUse . heldAim . aimWeight .~ 6
|
|
& itUse . heldAim . aimRange .~ 1
|
|
& itUse . heldAim . aimStance .~ TwoHandFlat
|
|
& itType . iyModules . at ModDualBeam ?~ EMPTYMODULE
|