Allow for bullet drag
This commit is contained in:
@@ -3,21 +3,24 @@ import Dodge.Data
|
||||
import Dodge.Picture.Layer
|
||||
import Dodge.Default
|
||||
import Dodge.SoundLogic
|
||||
import Dodge.Inventory
|
||||
import Shape
|
||||
--import ShapePicture
|
||||
import Dodge.Item.Draw
|
||||
import Picture
|
||||
|
||||
import Data.Maybe
|
||||
import Control.Lens
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
|
||||
medkit :: Int -> Item
|
||||
medkit i = defaultConsumable
|
||||
{ _itIdentity = Medkit25
|
||||
, _itName = "MEDKIT" ++ show i
|
||||
, _itMaxStack = 9
|
||||
, _itAmount = 1
|
||||
, _cnEffect = heal i
|
||||
{ _itName = "MEDKIT" ++ show i
|
||||
, _itUse = LeftUse
|
||||
{_lUse = \cr invid w -> fromMaybe w (heal 25 (_crID cr) $ rmInvItem (_crID cr) invid w)
|
||||
,_useDelay = NoDelay
|
||||
,_useHammer = HasHammer HammerUp
|
||||
}
|
||||
, _itFloorPict = \_ -> (,) emptySH $ setLayer 0 . onLayer FlItLayer . color blue $ circleSolid 3
|
||||
, _itEquipPict = pictureItem $ (,) emptySH $ color blue $ circleSolid 3
|
||||
, _itID = Nothing
|
||||
@@ -31,4 +34,3 @@ heal hp n w | _crHP (_creatures w IM.! n) >= 10000 = Nothing
|
||||
& creatures . ix n . crHP %~ min 10000 . (+ hp)
|
||||
where
|
||||
cr = _creatures w IM.! n
|
||||
|
||||
|
||||
+11
-17
@@ -1,23 +1,17 @@
|
||||
module Dodge.Item.Craftable where
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Weapon
|
||||
import Dodge.Picture.Layer
|
||||
import Picture
|
||||
import Geometry
|
||||
--import Dodge.Picture.Layer
|
||||
--import Picture
|
||||
--import Geometry
|
||||
|
||||
pipe :: Item
|
||||
pipe = Craftable
|
||||
{ _itIdentity = Generic
|
||||
, _itInvSize = 1
|
||||
, _itDimension = defaultItemDimension
|
||||
makeTypeCraft :: CombineType -> Item
|
||||
makeTypeCraft ct = defaultCraftable
|
||||
{ _itInvSize = 1
|
||||
, _itCurseStatus = Uncursed
|
||||
, _itName = "PIPE"
|
||||
, _itMaxStack = 3
|
||||
, _itAmount = 3
|
||||
, _itFloorPict = \_ -> (,) mempty
|
||||
$ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
|
||||
, _itEquipPict = \_ _ -> mempty
|
||||
, _itID = Nothing
|
||||
, _itInvDisplay = (:[]) . _itName
|
||||
, _itInvColor = green
|
||||
, _itName = show ct
|
||||
, _itCombineType = ct
|
||||
, _itConsumption = ItemItselfConsumable 3 3
|
||||
}
|
||||
pipe :: Item
|
||||
pipe = makeTypeCraft PIPE
|
||||
|
||||
+35
-35
@@ -13,40 +13,40 @@ data HammerPosition
|
||||
| HammerUp
|
||||
deriving
|
||||
(Eq, Ord, Show)
|
||||
data ItemIdentity
|
||||
= Pistol
|
||||
| SpreadGun
|
||||
| MultGun
|
||||
| HvAutoGun
|
||||
| AutoGun
|
||||
| LtAutoGun
|
||||
| MiniGun
|
||||
| Medkit25
|
||||
| MagShield
|
||||
| FrontArmour
|
||||
| JetPack
|
||||
| FlameShield
|
||||
| Generic
|
||||
| SparkGun
|
||||
| ShatterGun
|
||||
| LongGun
|
||||
| Flamethrower
|
||||
| Blinker
|
||||
| Rewinder
|
||||
| Grenade
|
||||
| RemoteBomb
|
||||
| TeslaGun
|
||||
| LasGun
|
||||
| ForceFieldGun
|
||||
| GrapGun
|
||||
| TractorGun
|
||||
| Launcher
|
||||
| RemoteLauncher
|
||||
| LightningGun
|
||||
| PoisonSprayer
|
||||
| FlatShield
|
||||
deriving
|
||||
(Eq,Show,Ord,Enum)
|
||||
--data ItemIdentity
|
||||
-- = Pistol
|
||||
-- | SpreadGun
|
||||
-- | MultGun
|
||||
-- | HvAutoGun
|
||||
-- | AutoGun
|
||||
-- | LtAutoGun
|
||||
-- | MiniGun
|
||||
-- | Medkit25
|
||||
-- | MagShield
|
||||
-- | FrontArmour
|
||||
-- | JetPack
|
||||
-- | FlameShield
|
||||
-- | Generic
|
||||
-- | SparkGun
|
||||
-- | ShatterGun
|
||||
-- | LongGun
|
||||
-- | Flamethrower
|
||||
-- | Blinker
|
||||
-- | Rewinder
|
||||
-- | Grenade
|
||||
-- | RemoteBomb
|
||||
-- | TeslaGun
|
||||
-- | LasGun
|
||||
-- | ForceFieldGun
|
||||
-- | GrapGun
|
||||
-- | TractorGun
|
||||
-- | Launcher
|
||||
-- | RemoteLauncher
|
||||
-- | LightningGun
|
||||
-- | PoisonSprayer
|
||||
-- | FlatShield
|
||||
-- deriving
|
||||
-- (Eq,Show,Ord,Enum)
|
||||
data AimStance
|
||||
= TwoHandTwist
|
||||
| TwoHandFlat
|
||||
@@ -85,7 +85,7 @@ data UseDelay -- should just be Delay
|
||||
data BarrelSpread
|
||||
= AlignedBarrels
|
||||
| SpreadBarrels {_spreadAngle :: Float}
|
||||
| RotatingBarrels {_rotatingBarrelAccuracy :: Float}
|
||||
| RotatingBarrels {_rotatingBarrelInaccuracy :: Float}
|
||||
makeLenses ''BarrelSpread
|
||||
makeLenses ''HammerType
|
||||
makeLenses ''ItZoom
|
||||
|
||||
@@ -18,7 +18,7 @@ import Control.Lens
|
||||
|
||||
magShield :: Item
|
||||
magShield = defaultEquipment
|
||||
{ _itIdentity = MagShield
|
||||
{ _itCombineType = MAGSHIELD
|
||||
, _itName = "MAGSHIELD"
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
|
||||
, _itEquipPict = \_ _ -> (,) emptySH blank
|
||||
@@ -26,7 +26,7 @@ magShield = defaultEquipment
|
||||
}
|
||||
flameShield :: Item
|
||||
flameShield = defaultEquipment
|
||||
{ _itIdentity = FlameShield
|
||||
{ _itCombineType = FLAMESHIELD
|
||||
, _itName = "FLAMESHIELD"
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
|
||||
, _itEquipPict = \cr _ -> (,) emptySH $ onLayer CrLayer $ pictures [color cyan $ circle (_crRad cr+2)]
|
||||
@@ -35,7 +35,7 @@ flameShield = defaultEquipment
|
||||
{- | Slows you down, blocks forward projectiles. -}
|
||||
frontArmour :: Item
|
||||
frontArmour = defaultEquipment
|
||||
{ _itIdentity = FrontArmour
|
||||
{ _itCombineType = FRONTARMOUR
|
||||
, _itName = "FARMOUR"
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ translate 0 (-5) $ pictures
|
||||
[color (greyN 0.1) $ thickArc 0 (pi/2) 10 5
|
||||
@@ -53,7 +53,7 @@ flatShield = defaultEquipment
|
||||
{ _itEquipPict = pictureWeaponOnAim' flatShieldEquipSPic -- this will not work any more because the shield has no aim stance
|
||||
, _itEffect = effectOnOffEquip createShieldWall removeShieldWall
|
||||
, _itName = "SHIELD"
|
||||
, _itIdentity = FlatShield
|
||||
, _itCombineType = FLATSHIELD
|
||||
}
|
||||
flatShieldEquipSPic :: Item -> SPic
|
||||
flatShieldEquipSPic _ =
|
||||
@@ -131,7 +131,7 @@ effectOnOffEquip f f' = ItInvEffectID
|
||||
{- | Increases speed, reduces friction, cannot only move forwards. -}
|
||||
jetPack :: Item
|
||||
jetPack = defaultEquipment
|
||||
{ _itIdentity = JetPack
|
||||
{ _itCombineType = JETPACK
|
||||
, _itName = "JETPACK"
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ color yellow $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
|
||||
, _itEquipPict = \_ _ -> (,) emptySH $ onLayer CrLayer
|
||||
|
||||
@@ -9,8 +9,9 @@ module Dodge.Item.Weapon.AmmoParams
|
||||
import Dodge.Data
|
||||
import Dodge.Particle.Bullet.Spawn
|
||||
import Geometry
|
||||
import LensHelp
|
||||
|
||||
import Control.Lens
|
||||
--import Control.Lens
|
||||
|
||||
useAmmoParamsRate :: Int
|
||||
-> HammerType
|
||||
@@ -32,28 +33,30 @@ defaultAimParams = AimParams
|
||||
}
|
||||
|
||||
useAmmoParams :: Item -> Creature -> World -> World
|
||||
useAmmoParams it = withVelWthHiteff (muzvel *.* _amBulVel b) (_amBulWth b) (_amBulEff b)
|
||||
useAmmoParams it = withVelWthHiteff (muzvel *.* _amBulVel b) (_rifling $ _itParams it) (_amBulWth b) (_amBulEff b)
|
||||
where
|
||||
muzvel = _muzVel $ _itParams it
|
||||
b = _aoType $ _itConsumption it
|
||||
|
||||
useAmmoParamsVelMod :: Float -> Item -> Creature -> World -> World
|
||||
useAmmoParamsVelMod vfact it = withDelayedVelWthHiteff vfact (_amBulVel b) (_amBulWth b) (_amBulEff b)
|
||||
useAmmoParamsVelMod vfact it = withDelayedVelWthHiteff vfact (_amBulVel b) (_rifling $ _itParams it)
|
||||
(_amBulWth b) (_amBulEff b)
|
||||
where
|
||||
b = _aoType $ _itConsumption it
|
||||
|
||||
{- | Creates a bullet with a given velocity, width, and 'HitEffect' -}
|
||||
withVelWthHiteff
|
||||
:: Point2 -- ^ Velocity, x direction is forward with respect to the creature
|
||||
-> Float -- ^ drag
|
||||
-> Float -- ^ Bullet width
|
||||
-> HitEffect -- ^ Bullet effect when hitting creature, wall etc
|
||||
-> Creature
|
||||
-> World
|
||||
-> World
|
||||
withVelWthHiteff vel width hiteff cr = over particles (newbul : )
|
||||
withVelWthHiteff vel drag width hiteff cr = particles .:~ newbul
|
||||
where
|
||||
cid = _crID cr
|
||||
newbul = aGenBulAt (Just cid) pos (rotateV dir vel) hiteff width
|
||||
newbul = aGenBulAt (Just cid) pos (rotateV dir vel) drag hiteff width
|
||||
dir = _crDir cr
|
||||
pos = _crPos cr +.+ _crRad cr *.* unitVectorAtAngle (_crDir cr)
|
||||
|
||||
@@ -61,15 +64,16 @@ withVelWthHiteff vel width hiteff cr = over particles (newbul : )
|
||||
withDelayedVelWthHiteff
|
||||
:: Float -- ^ Velocity factor for first step
|
||||
-> Point2 -- ^ Velocity, x direction is forward with respect to the creature
|
||||
-> Float -- ^ Drag
|
||||
-> Float -- ^ Bullet width
|
||||
-> HitEffect -- ^ Bullet effect when hitting creature, wall etc
|
||||
-> Creature -- ^ Creature id
|
||||
-> World
|
||||
-> World
|
||||
withDelayedVelWthHiteff vfact vel width hiteff cr = over particles (newbul : )
|
||||
withDelayedVelWthHiteff vfact vel drag width hiteff cr = particles .:~ newbul
|
||||
where
|
||||
cid = _crID cr
|
||||
newbul = aDelayedBulAt vfact (Just cid) pos (rotateV dir vel) hiteff width
|
||||
newbul = aDelayedBulAt vfact (Just cid) pos (rotateV dir vel) drag hiteff width
|
||||
dir = _crDir cr
|
||||
pos = _crPos cr +.+ _crRad cr *.* unitVectorAtAngle (_crDir cr)
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@ import qualified Data.IntMap.Strict as IM
|
||||
teslaGun :: Item
|
||||
teslaGun = defaultGun
|
||||
{ _itName = "TESLA"
|
||||
, _itIdentity = TeslaGun
|
||||
, _itCombineType = TESLAGUN
|
||||
-- , _itIdentity = TeslaGun
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 200
|
||||
, _ammoLoaded = 200
|
||||
@@ -63,7 +64,7 @@ teslaGunPic _ = noPic $ colorSH blue $
|
||||
lasGun :: Item
|
||||
lasGun = defaultAutoGun
|
||||
{ _itName = "LASGUN ////"
|
||||
, _itIdentity = LasGun
|
||||
, _itCombineType = LASGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 200
|
||||
, _ammoLoaded = 200
|
||||
@@ -119,7 +120,7 @@ lasGunPic it =
|
||||
tractorGun :: Item
|
||||
tractorGun = defaultAutoGun
|
||||
{ _itName = "TRACTORGUN"
|
||||
, _itIdentity = TractorGun
|
||||
, _itCombineType = TRACTORGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 10000
|
||||
, _ammoLoaded = 10000
|
||||
|
||||
@@ -112,7 +112,7 @@ maxT = 20
|
||||
boosterGun :: Item
|
||||
boosterGun = defaultGun
|
||||
{ _itName = "BOOSTER"
|
||||
, _itIdentity = Blinker
|
||||
, _itCombineType = BOOSTER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
|
||||
@@ -37,7 +37,7 @@ bounceBullet = BulletAmmo
|
||||
{ _amString = "BOUNCING"
|
||||
, _amBulEff = destroyOnImpact bulHitCr bulBounceWall
|
||||
, _amBulWth = 2
|
||||
, _amBulVel = V2 10 0
|
||||
, _amBulVel = V2 40 0
|
||||
}
|
||||
ltBullet :: AmmoType
|
||||
ltBullet = BulletAmmo
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
module Dodge.Item.Weapon.BulletGuns
|
||||
( pistol
|
||||
, bangStick
|
||||
, bangRod
|
||||
, bangCane
|
||||
, autoGun
|
||||
, multGun
|
||||
, miniGun
|
||||
@@ -36,7 +39,7 @@ import Control.Lens
|
||||
autoGun :: Item
|
||||
autoGun = defaultAutoGun
|
||||
{ _itName = "AUTOGUN"
|
||||
, _itIdentity = AutoGun
|
||||
, _itCombineType = AUTOGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 30
|
||||
@@ -72,6 +75,7 @@ autoGun = defaultAutoGun
|
||||
, _itInvDisplay = basicWeaponDisplay
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 1
|
||||
, _rifling = 0.9
|
||||
, _bore = 2
|
||||
, _gunBarrels = SingleBarrel 0.1
|
||||
}
|
||||
@@ -86,11 +90,48 @@ autoGunPic it = noPic $
|
||||
<> translateSHf 0 (-1) (rotateSHx (negate $ pi/4) . upperPrismPoly 2 $ rectNESW (negate $ 3 + 0.25 * x) 0 3 (-5))
|
||||
where
|
||||
x = fromIntegral $ _ammoLoaded $ _itConsumption it
|
||||
bangStick :: Item
|
||||
bangStick = defaultGun
|
||||
{ _itName = "BANGSTICK"
|
||||
, _itCombineType = BANGSTICK
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 1
|
||||
, _ammoLoaded = 1
|
||||
, _reloadTime = 20
|
||||
, _reloadType = ActivePartial 1
|
||||
}
|
||||
, _itUse = useAmmoParamsRate 8 upHammer
|
||||
[ ammoCheckI
|
||||
, hammerCheckI
|
||||
, useTimeCheck
|
||||
, withSoundStart tap3S
|
||||
, useAmmoAmount 1
|
||||
, applyInaccuracy
|
||||
, withMuzFlareI
|
||||
]
|
||||
, _itFloorPict = pistolPic
|
||||
-- , _itZoom = defaultItZoom
|
||||
, _itEquipPict = pictureWeaponAim pistolPic
|
||||
, _itID = Nothing
|
||||
, _itInvDisplay = basicWeaponDisplay
|
||||
, _itInvColor = white
|
||||
, _itTargeting = Nothing
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 0.8
|
||||
, _rifling = 0.8
|
||||
, _bore = 2
|
||||
, _gunBarrels = SingleBarrel 0.05
|
||||
}
|
||||
, _itTweaks = defaultBulletSelTweak
|
||||
}
|
||||
bangCane = bangStick
|
||||
bangRod = bangCane
|
||||
|
||||
pistol :: Item
|
||||
pistol = defaultGun
|
||||
{ _itName = "PISTOL"
|
||||
, _itIdentity = Pistol
|
||||
, _itCombineType = PISTOL
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 15
|
||||
@@ -116,6 +157,7 @@ pistol = defaultGun
|
||||
, _itTargeting = Nothing
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 0.8
|
||||
, _rifling = 0.8
|
||||
, _bore = 2
|
||||
, _gunBarrels = SingleBarrel 0.05
|
||||
}
|
||||
@@ -138,7 +180,7 @@ bulletClip x = rotateSHx (negate $ pi/4) . upperPrismPoly 2 $ rectNESW 3 0 (3 -
|
||||
hvAutoGun :: Item
|
||||
hvAutoGun = defaultAutoGun
|
||||
{ _itName = "AUTO-HV"
|
||||
, _itIdentity = HvAutoGun
|
||||
, _itCombineType = HVAUTOGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = hvBullet
|
||||
, _ammoMax = 100
|
||||
@@ -178,7 +220,7 @@ hvAutoGunPic it =
|
||||
ltAutoGun :: Item
|
||||
ltAutoGun = defaultAutoGun
|
||||
{ _itName = "AUTO-LT"
|
||||
, _itIdentity = LtAutoGun
|
||||
, _itCombineType = LTAUTOGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = ltBullet
|
||||
, _ammoMax = 25
|
||||
@@ -198,6 +240,7 @@ ltAutoGun = defaultAutoGun
|
||||
, _itFloorPict = ltAutoGunPic
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 1
|
||||
, _rifling = 0.8
|
||||
, _bore = 2
|
||||
, _gunBarrels = SingleBarrel autogunSpread
|
||||
}
|
||||
@@ -217,7 +260,7 @@ ltAutoGunPic it =
|
||||
miniGun :: Item
|
||||
miniGun = defaultAutoGun
|
||||
{ _itName = "MINI-G"
|
||||
, _itIdentity = MiniGun
|
||||
, _itCombineType = MINIGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 1500
|
||||
@@ -262,6 +305,14 @@ miniGun = defaultAutoGun
|
||||
& useAim . aimStance .~ TwoHandTwist
|
||||
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||
, _itFloorPict = miniGunPictItem
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 1
|
||||
, _rifling = 0.9
|
||||
, _bore = 2
|
||||
, _gunBarrels = MultiBarrel
|
||||
{_brlSpread = RotatingBarrels 0.01
|
||||
,_brlNum = 4}
|
||||
}
|
||||
, _itEquipPict = pictureWeaponAim miniGunPictItem
|
||||
, _itTweaks = defaultBulletSelTweak
|
||||
, _itInvSize = 4
|
||||
@@ -316,7 +367,7 @@ miniGunPict spin am =
|
||||
spreadGun :: Item
|
||||
spreadGun = defaultGun
|
||||
{ _itName = "SPREAD"
|
||||
, _itIdentity = SpreadGun
|
||||
, _itCombineType = SPREADGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 5
|
||||
@@ -335,6 +386,7 @@ spreadGun = defaultGun
|
||||
]
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 0.7
|
||||
, _rifling = 0.8
|
||||
, _bore = 2
|
||||
, _gunBarrels = MultiBarrel
|
||||
{_brlNum = 5
|
||||
@@ -355,7 +407,7 @@ spreadGunPic it =
|
||||
multGun :: Item
|
||||
multGun = defaultGun
|
||||
{ _itName = "MULTGUN"
|
||||
, _itIdentity = MultGun
|
||||
, _itCombineType = MULTGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = basicBullet
|
||||
, _ammoMax = 5
|
||||
@@ -380,6 +432,7 @@ multGun = defaultGun
|
||||
, _itFloorPict = multGunSPic
|
||||
, _itParams = BulletShooter
|
||||
{ _muzVel = 1
|
||||
, _rifling = 0.9
|
||||
, _bore = 3
|
||||
, _gunBarrels = MultiBarrel
|
||||
{_brlNum = 5
|
||||
@@ -406,7 +459,7 @@ multGunSPic it =
|
||||
longGun :: Item
|
||||
longGun = defaultGun
|
||||
{ _itName = "LONGGUN"
|
||||
, _itIdentity = LongGun
|
||||
, _itCombineType = LONGGUN
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = hvBullet
|
||||
, _ammoMax = 1
|
||||
|
||||
@@ -21,7 +21,7 @@ import Control.Lens
|
||||
lasDrones :: Item
|
||||
lasDrones = defaultGun
|
||||
{ _itName = "DRONES"
|
||||
, _itIdentity = Generic
|
||||
, _itCombineType = DRONELAUNCHER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = DroneAmmo { _amString = "LASDRONE" }
|
||||
, _ammoMax = 2
|
||||
|
||||
@@ -25,10 +25,10 @@ import Control.Lens
|
||||
grenade :: Item
|
||||
grenade = Throwable
|
||||
{ _itName = "GRENADE " ++ show fuseTime
|
||||
, _itCombineType = GRENADE
|
||||
, _itInvSize = 1
|
||||
, _itDimension = defaultItemDimension
|
||||
, _itCurseStatus = Uncursed
|
||||
, _itIdentity = Grenade
|
||||
, _itMaxStack = 8
|
||||
, _itAmount = 1
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
|
||||
@@ -213,7 +213,7 @@ defaultThrowable = grenade
|
||||
remoteBomb :: Item
|
||||
remoteBomb = defaultThrowable
|
||||
{ _itName = "REMOTEBOMB"
|
||||
, _itIdentity = RemoteBomb
|
||||
, _itCombineType = REMOTEBOMB
|
||||
, _itMaxStack = 1
|
||||
, _itAmount = 1
|
||||
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2
|
||||
|
||||
@@ -23,6 +23,7 @@ basicWeaponDisplay it = [midPadL 10 ' ' thename (' ' : thenumber) ++ theparam]
|
||||
Just' x -> show x ++ "R" ++ show (_ammoLoaded am)
|
||||
Just am@ChargeableAmmo{} -> show $ _wpCharge am
|
||||
Just x@ItemItselfConsumable{} -> show $ _itMaxStack' x
|
||||
Just NoConsumption -> "NOCONSUMPTION"
|
||||
Nothing -> ""
|
||||
theparam = fromMaybe []
|
||||
. listToMaybe
|
||||
|
||||
@@ -37,7 +37,7 @@ import System.Random
|
||||
launcher :: Item
|
||||
launcher = defaultGun
|
||||
{ _itName = "ROCKO"
|
||||
, _itIdentity = Launcher
|
||||
, _itCombineType = LAUNCHER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = defaultShellAmmo
|
||||
{ _amPayload = makeExplosionAt
|
||||
@@ -260,7 +260,7 @@ trySpinByCID cid i pj w = w & props . ix pjid . pjSpin .~ newSpin
|
||||
remoteLauncher :: Item
|
||||
remoteLauncher = defaultGun
|
||||
{ _itName = "ROCKO-REM"
|
||||
, _itIdentity = RemoteLauncher
|
||||
, _itCombineType = LAUNCHER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _aoType = defaultShellAmmo
|
||||
{ _amPayload = makeExplosionAt
|
||||
|
||||
@@ -20,7 +20,7 @@ Sends out pulses that display walls. -}
|
||||
radar :: Item
|
||||
radar = defaultGun
|
||||
{ _itName = "RADAR"
|
||||
, _itIdentity = Generic
|
||||
, _itCombineType = RADAR
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
@@ -40,7 +40,7 @@ Sends out pulses that display creatures. -}
|
||||
sonar :: Item
|
||||
sonar = defaultGun
|
||||
{ _itName = "SONAR"
|
||||
, _itIdentity = Generic
|
||||
, _itCombineType = RADAR
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
@@ -59,7 +59,7 @@ sonar = defaultGun
|
||||
Automatically sends out pulses that display creatures. -}
|
||||
autoSonar :: Item
|
||||
autoSonar = defaultEquipment
|
||||
{ _itIdentity = Generic
|
||||
{ _itCombineType = RADAR
|
||||
, _itName = "AUTOSONAR"
|
||||
, _itMaxStack = 1
|
||||
, _itAmount = 1
|
||||
@@ -73,7 +73,7 @@ autoSonar = defaultEquipment
|
||||
Automatically sends out pulses that display walls. -}
|
||||
autoRadar :: Item
|
||||
autoRadar = defaultEquipment
|
||||
{ _itIdentity = Generic
|
||||
{ _itCombineType = RADAR
|
||||
, _itName = "AUTORADAR"
|
||||
, _itMaxStack = 1
|
||||
, _itAmount = 1
|
||||
|
||||
@@ -33,7 +33,7 @@ import System.Random
|
||||
poisonSprayer :: Item
|
||||
poisonSprayer = defaultAutoGun
|
||||
{ _itName = "POISON"
|
||||
, _itIdentity = PoisonSprayer
|
||||
, _itCombineType = SPRAYER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 500
|
||||
, _ammoLoaded = 500
|
||||
@@ -57,7 +57,7 @@ poisonSprayer = defaultAutoGun
|
||||
flamer :: Item
|
||||
flamer = defaultAutoGun
|
||||
{ _itName = "FLAMER"
|
||||
, _itIdentity = Flamethrower
|
||||
, _itCombineType = SQUIRTER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 250
|
||||
, _ammoLoaded = 250
|
||||
|
||||
@@ -19,7 +19,7 @@ import Control.Lens
|
||||
rewindGun :: Item
|
||||
rewindGun = defaultGun
|
||||
{ _itName = "REWINDER"
|
||||
, _itIdentity = Rewinder
|
||||
, _itCombineType = REWINDER
|
||||
, _itConsumption = ChargeableAmmo
|
||||
{ _wpMaxCharge = 250
|
||||
, _wpCharge = 0
|
||||
@@ -55,7 +55,7 @@ useRewindGun _ _ w = case _rewindWorlds w of
|
||||
shrinkGun :: Item
|
||||
shrinkGun = defaultGun
|
||||
{ _itName = "SHRINKER"
|
||||
, _itIdentity = Generic
|
||||
, _itCombineType = SHRINKER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
@@ -85,7 +85,7 @@ useShrinkGun cr invid w = if _itBool $ _itAttachment it
|
||||
blinkGun :: Item
|
||||
blinkGun = defaultGun
|
||||
{ _itName = "BLINKER"
|
||||
, _itIdentity = Blinker
|
||||
, _itCombineType = BLINKER
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
@@ -117,7 +117,7 @@ autoEffectGun name eff = defaultAutoGun
|
||||
forceFieldGun :: Item
|
||||
forceFieldGun = defaultGun
|
||||
{ _itName = "FORCEFIELD"
|
||||
, _itIdentity = ForceFieldGun
|
||||
, _itCombineType = FORCEFIELD
|
||||
, _itConsumption = defaultAmmo
|
||||
{ _ammoMax = 100
|
||||
, _ammoLoaded = 100
|
||||
|
||||
Reference in New Issue
Block a user