Files
loop/src/Dodge/Item/Held/BatteryGuns.hs
T

159 lines
4.9 KiB
Haskell

module Dodge.Item.Held.BatteryGuns where
import Dodge.Base
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
& 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 . aimMuzPos .~ 4
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 4 0) 0 0 0 DefaultFlareType]
& itType . iyBase .~ HELD TESLAGUN
lasGun :: Item
lasGun =
defaultAutoBatteryGun
& itUse . heldAmmoTypes .~ singleAmmo ElectricalAmmo
& 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 .~ TwoHandUnder
-- & itUse . heldAim . aimHandlePos .~ 5
-- & itUse . heldAim . aimMuzPos .~ 30
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0 0 DefaultFlareType]
& itType . iyBase .~ HELD LASGUN
lasGunTweak :: TweakParam
lasGunTweak =
TweakParam
{ _tweakType = TweakPhaseV
, _tweakVal = 1
, _tweakMax = 3
}
tractorGun :: Item
tractorGun =
lasGun
& itParams .~ Attracting{_attractionPower = 1}
& itTweaks
.~ Tweakable
{ _tweakParams = IM.fromList [(0, tractorGunTweak)]
}
-- & itUse . heldUse .~ HeldTractor --aTractorBeam
& itUse . heldDelay .~ NoDelay
-- & itUse . heldMods .~ AmmoCheckMod
& itUse . heldMods .~ TractorMod
& itUse . heldAim . aimWeight .~ 6
& itUse . heldAim . aimRange .~ 1
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0 0 DefaultFlareType]
& 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
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 y) 0 0 0 DefaultFlareType | y <- spreadFromCenter n 1]
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 . heldDelay .~ NoDelay
---- & itUse . heldUse .~ HeldCircleLaser --circleLaser
-- & itUse . heldMods .~ CircleLaserMod
-- & itUse . heldAim . aimWeight .~ 6
-- & itUse . heldAim . aimRange .~ 1
dualBeam :: Item
dualBeam =
lasGun
& itType . iyBase .~ HELD DUALBEAM
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0 0 DefaultFlareType]
& 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