Move toward data-ifying item SPics
This commit is contained in:
@@ -17,6 +17,7 @@ import qualified Data.IntMap.Strict as IM
|
||||
import Control.Lens
|
||||
import Data.Maybe
|
||||
|
||||
|
||||
itemEquipPict :: Creature -> Item -> SPic
|
||||
itemEquipPict cr it = case it ^?! itUse of
|
||||
RightUse {} -> pictureWeaponOnAim cr it
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
module Dodge.Item.Draw.SPic where
|
||||
|
||||
itemSPic :: Item -> SPic
|
||||
itemSPic it = modulesSPic it <> case it ^. itType . iyBase of
|
||||
HELD ht -> heldItemSPic ht it
|
||||
_ -> mempty
|
||||
-- NOTDEFINED ->
|
||||
-- EFFGUN _ ->
|
||||
-- AUTOEFFGUN _ ->
|
||||
--
|
||||
--
|
||||
-- BOOSTER
|
||||
-- REWINDER
|
||||
-- BLINKER
|
||||
-- BLINKERUNSAFE
|
||||
-- FORCEFIELDGUN
|
||||
-- SHRINKER
|
||||
-- SPAWNER
|
||||
--
|
||||
-- CLICKDETECTOR Detector
|
||||
-- AUTODETECTOR Detector
|
||||
-- MAGSHIELD
|
||||
-- FLAMESHIELD
|
||||
-- FRONTARMOUR
|
||||
-- WRISTARMOUR
|
||||
-- INVISIBILITYEQUIPMENT EquipSite
|
||||
-- BRAINHAT
|
||||
-- HEADLAMP
|
||||
-- HEADLAMP1
|
||||
-- POWERLEGS
|
||||
-- SPEEDLEGS
|
||||
-- JUMPLEGS
|
||||
-- FLATSHIELD
|
||||
-- JETPACK
|
||||
--
|
||||
-- KEYCARD Int
|
||||
--
|
||||
-- MEDKIT Int
|
||||
-- CRAFT CraftType
|
||||
|
||||
heldItemSPic ht it = case ht of
|
||||
BANGSTICK i -> noPic & baseStickShapeX i <> stickClip it
|
||||
-- PISTOL ->
|
||||
-- REVOLVER ->
|
||||
-- REVOLVERX i ->
|
||||
-- MACHINEPISTOL ->
|
||||
-- AUTOPISTOL ->
|
||||
-- SMG ->
|
||||
-- BANGCONE ->
|
||||
-- BLUNDERBUSS ->
|
||||
-- GRAPECANNON i ->
|
||||
-- MINIGUNX i ->
|
||||
-- VOLLEYGUN i ->
|
||||
-- RIFLE ->
|
||||
-- REPEATER ->
|
||||
-- AUTORIFLE ->
|
||||
-- BURSTRIFLE ->
|
||||
-- BANGROD ->
|
||||
-- ELEPHANTGUN ->
|
||||
-- AMR ->
|
||||
-- AUTOAMR ->
|
||||
-- SNIPERRIFLE ->
|
||||
-- MACHINEGUN ->
|
||||
-- FLAMESPITTER ->
|
||||
-- FLAMETHROWER ->
|
||||
-- FLAMETORRENT ->
|
||||
-- FLAMEWALL ->
|
||||
-- BLOWTORCH ->
|
||||
-- AUTOGUN ->
|
||||
-- SPARKGUN ->
|
||||
-- TESLAGUN ->
|
||||
-- LASGUN ->
|
||||
-- LASCIRCLE ->
|
||||
-- DUALBEAM ->
|
||||
-- LASWIDE i ->
|
||||
-- SONICGUN ->
|
||||
-- TRACTORGUN ->
|
||||
-- LAUNCHER ->
|
||||
-- LAUNCHERX i ->
|
||||
-- REMOTELAUNCHER ->
|
||||
-- POISONSPRAYER ->
|
||||
-- DRONELAUNCHER ->
|
||||
-- SHATTERGUN ->
|
||||
|
||||
modulesSPic :: Item -> SPic
|
||||
modulesSPic it = mempty
|
||||
|
||||
baseStickShapeX :: Int -> Shape
|
||||
baseStickShapeX i = foldMap f [0..i-1]
|
||||
where
|
||||
f j = rotateSH ang baseStickShape
|
||||
where
|
||||
ang = fromIntegral j * baseStickSpread - (fromIntegral i - 1) * baseStickSpread * 0.5
|
||||
baseStickSpread :: Float
|
||||
baseStickSpread = 0.2
|
||||
|
||||
stickClip :: Item -> Shape
|
||||
stickClip it = case it ^? itConsumption . laLoaded of
|
||||
Just x | x > 0 -> foldMap f [0..x-1]
|
||||
_ -> mempty
|
||||
where
|
||||
f i = rotateSH ang $ translateSH (V3 5 0 3) $ upperPrismPoly 2 $ square 1.5
|
||||
where
|
||||
ang = baseStickSpread * fromIntegral i
|
||||
- 0.5 * baseStickSpread * fromIntegral (_brlNum (_gunBarrels (_itParams it))-1)
|
||||
@@ -5,9 +5,9 @@ module Dodge.Item.Weapon.BatteryGuns
|
||||
, lasWide
|
||||
-- , lasWidePulse
|
||||
--, lasSway
|
||||
, lasSwing
|
||||
-- , lasSwing
|
||||
--, lasFocus
|
||||
, lasPulse
|
||||
-- , lasPulse
|
||||
, sparkGun
|
||||
, teslaGun
|
||||
, teslaParams
|
||||
@@ -70,7 +70,7 @@ defaultAutoBatteryGun = defaultAutoGun
|
||||
|
||||
sparkGun :: Item
|
||||
sparkGun = teslaGun
|
||||
& itType . iyBase .~ SPARKGUN
|
||||
& itType . iyBase .~ HELD SPARKGUN
|
||||
& itParams . arcSize .~ 10
|
||||
teslaGun :: Item
|
||||
teslaGun = defaultBatteryGun
|
||||
@@ -96,7 +96,7 @@ teslaGun = defaultBatteryGun
|
||||
& itUse . useAim . aimStance .~ TwoHandFlat
|
||||
& itUse . useAim . aimHandlePos .~ 4
|
||||
& itUse . useAim . aimMuzPos .~ 4
|
||||
& itType . iyBase .~ TESLAGUN
|
||||
& itType . iyBase .~ HELD TESLAGUN
|
||||
teslaGunPic :: Item -> SPic
|
||||
teslaGunPic _ = noPic $ colorSH blue $
|
||||
upperPrismPoly 5 (rectNESW xb 8 xa 0)
|
||||
@@ -104,27 +104,27 @@ teslaGunPic _ = noPic $ colorSH blue $
|
||||
where
|
||||
xa = 1
|
||||
xb = 9
|
||||
lasPulse :: Item
|
||||
lasPulse = lasGun
|
||||
& itType . iyBase .~ LASPULSE
|
||||
& itUse . useMods .~
|
||||
[ ammoCheckI
|
||||
, withItem $ \it -> withTempLight 1 (100 * frac it) (xyzV4 (_lasColor $ _itParams it))
|
||||
, withItem $ \it -> withSoundForVol (frac it) tone440sawtoothquietS 2
|
||||
, withItemUpdate itup
|
||||
$ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) (frac it * 0.8)
|
||||
, useAmmoAmount 1
|
||||
]
|
||||
where
|
||||
itup it = it
|
||||
& itParams . lasCycle %~ (\i -> (i+1) `mod` 20)
|
||||
& itParams . lasDamage .~ ceiling ((22 :: Float) * frac it)
|
||||
& itParams . lasColor .~ frac it * orange
|
||||
frac it = 0.5 * (1 + sin (pi * fromIntegral (_lasCycle $ _itParams it) * 0.1))
|
||||
--lasPulse :: Item
|
||||
--lasPulse = lasGun
|
||||
-- & itType . iyBase .~ LASPULSE
|
||||
-- & itUse . useMods .~
|
||||
-- [ ammoCheckI
|
||||
-- , withItem $ \it -> withTempLight 1 (100 * frac it) (xyzV4 (_lasColor $ _itParams it))
|
||||
-- , withItem $ \it -> withSoundForVol (frac it) tone440sawtoothquietS 2
|
||||
-- , withItemUpdate itup
|
||||
-- $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) (frac it * 0.8)
|
||||
-- , useAmmoAmount 1
|
||||
-- ]
|
||||
-- where
|
||||
-- itup it = it
|
||||
-- & itParams . lasCycle %~ (\i -> (i+1) `mod` 20)
|
||||
-- & itParams . lasDamage .~ ceiling ((22 :: Float) * frac it)
|
||||
-- & itParams . lasColor .~ frac it * orange
|
||||
-- frac it = 0.5 * (1 + sin (pi * fromIntegral (_lasCycle $ _itParams it) * 0.1))
|
||||
|
||||
lasCircle :: Item
|
||||
lasCircle = lasGun
|
||||
& itType . iyBase .~ LASCIRCLE
|
||||
& itType . iyBase .~ HELD LASCIRCLE
|
||||
& itParams . lasColor .~ orange
|
||||
& itParams . lasDamage .~ 2
|
||||
& itConsumption . laMax .~ 10000
|
||||
@@ -150,7 +150,7 @@ lasCircle = lasGun
|
||||
|
||||
lasWide :: Int -> Item
|
||||
lasWide n = lasGun
|
||||
& itType . iyBase .~ LASWIDE n
|
||||
& itType . iyBase .~ HELD (LASWIDE n)
|
||||
& itParams . lasColor .~ yellow
|
||||
& itParams . lasDamage .~ 2
|
||||
& itUse . useMods .~
|
||||
@@ -238,7 +238,7 @@ lasWide n = lasGun
|
||||
|
||||
dualBeam :: Item
|
||||
dualBeam = lasGun
|
||||
& itType . iyBase .~ DUALBEAM
|
||||
& itType . iyBase .~ HELD DUALBEAM
|
||||
& itUse . useAim . aimMuzPos .~ 0
|
||||
& itDimension .dimSPic .~ dualBeamPic
|
||||
& itParams .~ DualBeam
|
||||
@@ -266,24 +266,24 @@ dualBeam = lasGun
|
||||
& itType . iyModules . at ModDualBeam ?~ EMPTYMODULE
|
||||
where
|
||||
thegap = _dbGap . _itParams
|
||||
lasSwing :: Item
|
||||
lasSwing = lasGun
|
||||
& itType . iyBase .~ LASGUNSWING
|
||||
& itParams . lasColor .~ orange
|
||||
& itUse . useMods .~
|
||||
[ ammoCheckI
|
||||
, withItem $ \it -> withTempLight 1 100 (xyzV4 (_lasColor $ _itParams it))
|
||||
, withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8
|
||||
, withSoundForI tone440sawtoothquietS 2
|
||||
, useAmmoAmount 1
|
||||
, withItemUpdate itup $ \it -> duplicateOffsetsFocus (x it)
|
||||
]
|
||||
where
|
||||
itup = itParams . lasCycle %~ (\i -> (i+1) `mod` 200)
|
||||
x it = [-y,y]
|
||||
where
|
||||
y = 15 * sin (pi * fromIntegral x' * 0.01)
|
||||
x' = _lasCycle $ _itParams it
|
||||
--lasSwing :: Item
|
||||
--lasSwing = lasGun
|
||||
-- & itType . iyBase .~ LASGUNSWING
|
||||
-- & itParams . lasColor .~ orange
|
||||
-- & itUse . useMods .~
|
||||
-- [ ammoCheckI
|
||||
-- , withItem $ \it -> withTempLight 1 100 (xyzV4 (_lasColor $ _itParams it))
|
||||
-- , withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8
|
||||
-- , withSoundForI tone440sawtoothquietS 2
|
||||
-- , useAmmoAmount 1
|
||||
-- , withItemUpdate itup $ \it -> duplicateOffsetsFocus (x it)
|
||||
-- ]
|
||||
-- where
|
||||
-- itup = itParams . lasCycle %~ (\i -> (i+1) `mod` 200)
|
||||
-- x it = [-y,y]
|
||||
-- where
|
||||
-- y = 15 * sin (pi * fromIntegral x' * 0.01)
|
||||
-- x' = _lasCycle $ _itParams it
|
||||
lasGun :: Item
|
||||
lasGun = defaultAutoBatteryGun
|
||||
& itConsumption .~ ( defaultLoadable
|
||||
@@ -321,7 +321,7 @@ lasGun = defaultAutoBatteryGun
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 30
|
||||
& itType . iyBase .~ LASGUN
|
||||
& itType . iyBase .~ HELD LASGUN
|
||||
|
||||
lasGunPic :: Item -> SPic
|
||||
lasGunPic it =
|
||||
@@ -392,7 +392,7 @@ tractorGun = lasGun
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 30
|
||||
& itType . iyBase .~ TRACTORGUN
|
||||
& itType . iyBase .~ HELD TRACTORGUN
|
||||
|
||||
tractorGunTweak :: TweakParam
|
||||
tractorGunTweak = TweakParam
|
||||
@@ -437,7 +437,6 @@ shootTeslaArc it cr w = w'
|
||||
shootLaser :: Item -> Creature -> World -> World
|
||||
shootLaser it cr = instantParticles .:~ lasRayAt (_lasColor $ _itParams it) dam phasev pos dir
|
||||
where
|
||||
--pos = _crPos cr +.+ aimingMuzzlePos cr it *.* unitVectorAtAngle dir
|
||||
pos = _crPos cr
|
||||
dir = _crDir cr
|
||||
phasev = _phaseV . _itParams $ _crInv cr IM.! crSel cr
|
||||
|
||||
@@ -115,7 +115,7 @@ volleyGun i = defaultBulletWeapon
|
||||
,_brlInaccuracy = 0.1
|
||||
}
|
||||
& itParams . torqueAfter .~ 0.48 + 0.2 * fromIntegral i
|
||||
& itType . iyBase .~ VOLLEYGUN i
|
||||
& itType . iyBase .~ HELD (VOLLEYGUN i)
|
||||
caneStickSoundChoice :: Item -> SoundID
|
||||
caneStickSoundChoice it
|
||||
| _laLoaded (_itConsumption it) < 2 = tap3S
|
||||
@@ -137,7 +137,7 @@ rifle = defaultBangCane
|
||||
}
|
||||
}
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itType . iyBase .~ RIFLE
|
||||
& itType . iyBase .~ HELD RIFLE
|
||||
& itConsumption . laMax .~ 1
|
||||
& itConsumption . laCycle .~ [loadEject 5, loadInsert 5 ,loadPrime 5]
|
||||
& itUse . useAim . aimWeight .~ 6
|
||||
@@ -147,7 +147,7 @@ rifle = defaultBangCane
|
||||
repeater :: Item
|
||||
repeater = rifle
|
||||
& itType . iyModules . at ModRifleMag ?~ EMPTYMODULE
|
||||
& itType . iyBase .~ REPEATER
|
||||
& itType . iyBase .~ HELD REPEATER
|
||||
& itConsumption . laCycle .~ [loadEject 50, loadInsert 40 ,loadPrime 20]
|
||||
& itConsumption . laMax .~ 15
|
||||
& itDimension . dimSPic .~ (\it -> noPic $ baseRifleShape
|
||||
@@ -162,13 +162,13 @@ baseRifleShape = colorSH red $ upperPrismPoly 3 $ rectXH 25 2
|
||||
|
||||
autoRifle :: Item
|
||||
autoRifle = repeater
|
||||
& itType . iyBase .~ AUTORIFLE
|
||||
& itType . iyBase .~ HELD AUTORIFLE
|
||||
& itUse . useMods %~ ((ammoCheckI :) . tail)
|
||||
& itType . iyModules . at ModAutoMag ?~ EMPTYMODULE
|
||||
-- & itUse . useDelay . rateMax .~ 6
|
||||
burstRifle :: Item
|
||||
burstRifle = repeater
|
||||
& itType . iyBase .~ BURSTRIFLE
|
||||
& itType . iyBase .~ HELD BURSTRIFLE
|
||||
& itParams . gunBarrels . brlInaccuracy .~ 0.05
|
||||
& itUse . useDelay . rateMax .~ 18
|
||||
& itUse . useMods .~
|
||||
@@ -282,7 +282,7 @@ miniGunX i = defaultAutoGun
|
||||
, _dimSPic = miniGunXPictItem i
|
||||
}
|
||||
}
|
||||
& itType . iyBase .~ MINIGUNX i
|
||||
& itType . iyBase .~ HELD (MINIGUNX i)
|
||||
& itUse . useAim . aimMuzPos .~ 40
|
||||
miniGunXPictItem :: Int -> Item -> SPic
|
||||
miniGunXPictItem i it = miniGunXPict i spin (_laLoaded $ _itConsumption it)
|
||||
|
||||
@@ -65,7 +65,7 @@ bangRod = defaultBulletWeapon
|
||||
}
|
||||
& itConsumption . laMax .~ 1
|
||||
& itConsumption . laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 5]
|
||||
& itType . iyBase .~ BANGROD
|
||||
& itType . iyBase .~ HELD BANGROD
|
||||
& itUse . useAim . aimWeight .~ 8
|
||||
& itUse . useAim . aimRange .~ 1
|
||||
& itUse . useAim . aimStance .~ OneHand
|
||||
@@ -79,7 +79,7 @@ baseAMRShape :: Shape
|
||||
baseAMRShape = colorSH orange $ upperPrismPoly 3 $ rectXH 30 2
|
||||
elephantGun :: Item
|
||||
elephantGun = bangRod
|
||||
& itType . iyBase .~ ELEPHANTGUN
|
||||
& itType . iyBase .~ HELD ELEPHANTGUN
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itParams . gunBarrels .~ SingleBarrel 0.05
|
||||
& itDimension . dimSPic .~ (\it -> noPic $ baseAMRShape
|
||||
@@ -100,7 +100,7 @@ elephantGun = bangRod
|
||||
& itParams . torqueAfter .~ 0.1
|
||||
amr :: Item
|
||||
amr = elephantGun
|
||||
& itType . iyBase .~ AMR
|
||||
& itType . iyBase .~ HELD AMR
|
||||
& itConsumption . laMax .~ 15
|
||||
& itDimension . dimSPic .~ (\it -> noPic $ baseAMRShape
|
||||
<> makeTinClipAt 0 (V3 10 (-2) 0) it
|
||||
@@ -108,12 +108,12 @@ amr = elephantGun
|
||||
|
||||
autoAmr :: Item
|
||||
autoAmr = amr
|
||||
& itType . iyBase .~ AUTOAMR
|
||||
& itType . iyBase .~ HELD AUTOAMR
|
||||
& itUse . useMods %~ ((ammoCheckI :) . tail)
|
||||
|
||||
sniperRifle :: Item
|
||||
sniperRifle = elephantGun
|
||||
& itType . iyBase .~ SNIPERRIFLE
|
||||
& itType . iyBase .~ HELD SNIPERRIFLE
|
||||
& itParams . gunBarrels .~ SingleBarrel 0
|
||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomMax = 0.5, _itZoomMin = 0.5}
|
||||
& itUse . heldScroll .~ zoomLongGun
|
||||
@@ -122,7 +122,7 @@ sniperRifle = elephantGun
|
||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1}
|
||||
machineGun :: Item
|
||||
machineGun = bangRod
|
||||
& itType . iyBase .~ MACHINEGUN
|
||||
& itType . iyBase .~ HELD MACHINEGUN
|
||||
& itUse . useDelay . rateMax .~ 25
|
||||
& itUse . useMods .~
|
||||
[ ammoCheckI
|
||||
|
||||
@@ -75,7 +75,7 @@ bangStick i = defaultBulletWeapon
|
||||
<> stickClip it
|
||||
}
|
||||
}
|
||||
& itType . iyBase .~ BANGSTICK i
|
||||
& itType . iyBase .~ HELD (BANGSTICK i)
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 10
|
||||
& itConsumption . laMax .~ i
|
||||
@@ -111,7 +111,7 @@ revolver = pistol
|
||||
& laMax .~ 6
|
||||
& laCycle .~ [loadPartialInsert 10 1] )
|
||||
& itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> revolverClip it)
|
||||
& itType . iyBase .~ REVOLVER
|
||||
& itType . iyBase .~ HELD REVOLVER
|
||||
|
||||
revolverClip :: Item -> Shape
|
||||
revolverClip it = case it ^? itConsumption . laLoaded of
|
||||
@@ -170,23 +170,23 @@ pistol = bangStick 1
|
||||
. ( recoil .~ 10 )
|
||||
. ( torqueAfter .~ 0.2 )
|
||||
)
|
||||
& itType . iyBase .~ PISTOL
|
||||
& itType . iyBase .~ HELD PISTOL
|
||||
autoPistol :: Item
|
||||
autoPistol = pistol
|
||||
& itUse . useMods .~ (ammoCheckI : pistolAfterHamMods)
|
||||
& itType . iyBase .~ AUTOPISTOL
|
||||
& itType . iyBase .~ HELD AUTOPISTOL
|
||||
& itType . iyModules . at ModAutoMag ?~ EMPTYMODULE
|
||||
machinePistol :: Item
|
||||
machinePistol = autoPistol
|
||||
& itUse . useDelay . rateMax .~ 2
|
||||
& itUse . useMods .~ (ammoCheckI : machinePistolAfterHamMods)
|
||||
& itType . iyBase .~ MACHINEPISTOL
|
||||
& itType . iyBase .~ HELD MACHINEPISTOL
|
||||
& itType . iyModules . at ModAutoMag .~ Nothing
|
||||
& itParams . recoil .~ 20
|
||||
smg :: Item
|
||||
smg = autoPistol -- & some parameter affecting stability
|
||||
& itUse . useMods .~ (ammoCheckI : smgAfterHamMods)
|
||||
& itType . iyBase .~ SMG
|
||||
& itType . iyBase .~ HELD SMG
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimHandlePos .~ 2
|
||||
& itParams . torqueAfter .~ 0.05
|
||||
@@ -211,4 +211,4 @@ revolverX i = revolver
|
||||
, withRecoil
|
||||
]
|
||||
& itConsumption . laMax .~ i * 6
|
||||
& itType . iyBase .~ REVOLVERX i
|
||||
& itType . iyBase .~ HELD (REVOLVERX i)
|
||||
|
||||
@@ -78,7 +78,7 @@ autoGun = defaultAutoGun
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||
& itUse . heldScroll .~ scrollCharMode
|
||||
& itType . iyBase .~ AUTOGUN
|
||||
& itType . iyBase .~ HELD AUTOGUN
|
||||
autoGunPic :: Item -> SPic
|
||||
autoGunPic it = noPic $
|
||||
colorSH red (prismPoly
|
||||
@@ -125,7 +125,7 @@ bangCone = defaultBulletWeapon
|
||||
]
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 15
|
||||
& itType . iyBase .~ BANGCONE
|
||||
& itType . iyBase .~ HELD BANGCONE
|
||||
& itConsumption . laMax .~ 5
|
||||
& itConsumption . laCycle .~ [loadEject 5, loadInsert 20 , loadPrime 5]
|
||||
coneRandItemUpdate :: State StdGen (Item -> Item)
|
||||
@@ -156,10 +156,10 @@ blunderbuss = bangCone
|
||||
& itUse . useAim . aimWeight .~ 6
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 30
|
||||
& itType . iyBase .~ BLUNDERBUSS
|
||||
& itType . iyBase .~ HELD BLUNDERBUSS
|
||||
grapeCannon :: Int -> Item
|
||||
grapeCannon i = blunderbuss
|
||||
& itType . iyBase .~ GRAPECANNON i
|
||||
& itType . iyBase .~ HELD (GRAPECANNON i)
|
||||
& itConsumption . laMax .~ 25 + 25 * i
|
||||
& itConsumption . laCycle .~ [loadEject 5, loadInsert (30 + i * 10) , loadPrime 5]
|
||||
& itParams . recoil .~ (150 + fromIntegral i * 50)
|
||||
|
||||
@@ -33,7 +33,7 @@ droneLauncher = defaultWeapon
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itConsumption . laAmmoType .~ DroneAmmo { _amString = "LASDRONE" }
|
||||
& itConsumption . laMax .~ 2
|
||||
& itType . iyBase .~ DRONELAUNCHER
|
||||
& itType . iyBase .~ HELD DRONELAUNCHER
|
||||
|
||||
lasDronesPic :: Item -> SPic
|
||||
lasDronesPic _ =
|
||||
|
||||
@@ -77,12 +77,12 @@ launcher = defaultWeapon
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimHandlePos .~ 5
|
||||
& itUse . useAim . aimMuzPos .~ 20
|
||||
& itType . iyBase .~ LAUNCHER
|
||||
& itType . iyBase .~ HELD LAUNCHER
|
||||
& itType . iyModules . at ModLauncherHoming ?~ EMPTYMODULE
|
||||
|
||||
launcherX :: Int -> Item
|
||||
launcherX i = launcher
|
||||
& itType . iyBase .~ LAUNCHERX i
|
||||
& itType . iyBase .~ HELD (LAUNCHERX i)
|
||||
& itConsumption . laMax .~ i
|
||||
& itConsumption . laLoaded .~ i
|
||||
& itUse . rUse .~ usePjCreationX i
|
||||
@@ -278,7 +278,7 @@ trySpinByCID cid i pj w = w & props . ix pjid . pjSpin .~ newSpin
|
||||
|
||||
remoteLauncher :: Item
|
||||
remoteLauncher = launcher
|
||||
& itType . iyBase .~ REMOTELAUNCHER
|
||||
& itType . iyBase .~ HELD REMOTELAUNCHER
|
||||
& itUse . rUse .~ fireRemoteShell
|
||||
& itScope .~ RemoteScope (V2 0 0) 1 True
|
||||
& itConsumption . laAmmoType . amPjDraw .~ drawRemoteShell
|
||||
|
||||
@@ -28,7 +28,7 @@ import LensHelp
|
||||
|
||||
shatterGun :: Item
|
||||
shatterGun = defaultWeapon
|
||||
& itType . iyBase .~ SHATTERGUN
|
||||
& itType . iyBase .~ HELD SHATTERGUN
|
||||
& itUse . useDelay . rateMax .~ 10
|
||||
& itUse . rUse .~ shootShatter
|
||||
& itUse . useMods .~
|
||||
|
||||
@@ -53,7 +53,7 @@ sonicGun = defaultAutoGun
|
||||
& itUse . useAim . aimRange .~ 1
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimMuzPos .~ 25
|
||||
& itType . iyBase .~ SONICGUN
|
||||
& itType . iyBase .~ HELD SONICGUN
|
||||
baseSonicShape :: Shape
|
||||
baseSonicShape = colorSH rose $ upperPrismPoly 3 $ rectXH 25 2
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ import Control.Monad.State
|
||||
import System.Random
|
||||
poisonSprayer :: Item
|
||||
poisonSprayer = flameThrower
|
||||
& itType . iyBase .~ POISONSPRAYER
|
||||
& itType . iyBase .~ HELD POISONSPRAYER
|
||||
& itConsumption . laAmmoType .~ GasAmmo
|
||||
{ _amString = "POISONGAS"
|
||||
, _amCreateGas = aGasCloud
|
||||
@@ -67,7 +67,7 @@ flamerPic it =
|
||||
am = fractionLoadedAmmo2 it
|
||||
flameSpitter :: Item
|
||||
flameSpitter = flameThrower
|
||||
& itType . iyBase .~ FLAMESPITTER
|
||||
& itType . iyBase .~ HELD FLAMESPITTER
|
||||
& itConsumption . laMax .~ 10
|
||||
& itConsumption . laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 20]
|
||||
& itParams . sprayNozzles . ix 0 . nzPressure .~ 4
|
||||
@@ -90,7 +90,7 @@ flameSpitter = flameThrower
|
||||
|
||||
flameTorrent :: Item
|
||||
flameTorrent = flameThrower
|
||||
& itType . iyBase .~ FLAMETORRENT
|
||||
& itType . iyBase .~ HELD FLAMETORRENT
|
||||
& itUse . useAim . aimZoom .~ defaultItZoom
|
||||
& itParams . sprayNozzles . ix 0 %~
|
||||
( (nzPressure .~ 10)
|
||||
@@ -100,10 +100,10 @@ flameTorrent = flameThrower
|
||||
|
||||
blowTorch :: Item
|
||||
blowTorch = flameThrower
|
||||
& itType . iyBase .~ BLOWTORCH
|
||||
& itType . iyBase .~ HELD BLOWTORCH
|
||||
flameWall :: Item
|
||||
flameWall = flameThrower
|
||||
& itType . iyBase .~ FLAMEWALL
|
||||
& itType . iyBase .~ HELD FLAMEWALL
|
||||
& itParams . sprayNozzles .~ zipWith makeNozzle [0,0.6,-0.6] [2,2.5,2.5]
|
||||
where
|
||||
makeNozzle dir pres = Nozzle
|
||||
@@ -157,7 +157,7 @@ flameThrower = defaultAutoGun
|
||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||
& itUse . useAim . aimHandlePos .~ 0
|
||||
& itUse . useAim . aimMuzPos .~ 18
|
||||
& itType . iyBase .~ FLAMETHROWER
|
||||
& itType . iyBase .~ HELD FLAMETHROWER
|
||||
|
||||
aGasCloud :: Float -> Point2 -> Float -> Creature -> World -> World
|
||||
aGasCloud pressure pos dir cr = makeGasCloud pos
|
||||
|
||||
@@ -124,7 +124,7 @@ forceFieldGun = defaultWeapon
|
||||
& itUse . useDelay .~ NoDelay
|
||||
& itUse . useMods .~
|
||||
[ hammerCheckI , ammoCheckI , useAmmoAmount 1]
|
||||
& itType . iyBase .~ FORCEFIELDGUN
|
||||
& itType . iyBase .~ HELD FORCEFIELDGUN
|
||||
-- I believe because the targeting returns to nothing straight after you release
|
||||
-- the rmb, it is possible for this to do nothing
|
||||
-- TODO investigate more and fix
|
||||
|
||||
Reference in New Issue
Block a user