Make items recoverable from base type
This commit is contained in:
@@ -16,81 +16,81 @@ import LensHelp
|
|||||||
|
|
||||||
itemCombinations :: [([(IcAmount,ItemBaseType)],Item)]
|
itemCombinations :: [([(IcAmount,ItemBaseType)],Item)]
|
||||||
itemCombinations =
|
itemCombinations =
|
||||||
[ po [PIPE, HARDWARE] (bangStick 1)
|
[ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1)
|
||||||
, po [BANGSTICK 1, TIN] pistol
|
, po [BANGSTICK 1, CRAFT TIN] pistol
|
||||||
, po [PISTOL, SPRING, HARDWARE] autoPistol
|
, po [PISTOL, CRAFT SPRING, cr HARDWARE] autoPistol
|
||||||
, po [AUTOPISTOL, PLANK, HARDWARE] smg
|
, po [AUTOPISTOL, cr PLANK, cr HARDWARE] smg
|
||||||
, po [AUTOPISTOL, HARDWARE] machinePistol
|
, po [AUTOPISTOL, cr HARDWARE] machinePistol
|
||||||
, po [BANGSTICK 1,CAN] revolver
|
, po [BANGSTICK 1,cr CAN] revolver
|
||||||
, po [REVOLVER, SPRING, HARDWARE] $ revolverX 1
|
, po [REVOLVER, cr SPRING, cr HARDWARE] $ revolverX 1
|
||||||
|
|
||||||
, po [TUBE,HARDWARE] bangCone
|
, po [cr TUBE,cr HARDWARE] bangCone
|
||||||
, po [BANGCONE,PLANK] blunderbuss
|
, po [BANGCONE,cr PLANK] blunderbuss
|
||||||
, po [BLUNDERBUSS,TUBE] bigBlunderbuss
|
, po [BLUNDERBUSS,cr TUBE] bigBlunderbuss
|
||||||
, po [BIGBLUNDERBUSS,TUBE] biggerBlunderbuss
|
, po [BIGBLUNDERBUSS,cr TUBE] biggerBlunderbuss
|
||||||
, po [BIGGERBLUNDERBUSS,TUBE] biggestBlunderbuss
|
, po [BIGGERBLUNDERBUSS,cr TUBE] biggestBlunderbuss
|
||||||
, po [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
|
-- , po [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
|
||||||
, po [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
|
-- , po [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
|
||||||
|
|
||||||
, p [p 2 PIPE,o HARDWARE] bangCane
|
, p [p 2 $ cr PIPE,o $ cr HARDWARE] bangCane
|
||||||
, p [p 2 PIPE,o BANGCANE] (bangCaneX 2)
|
, p [p 2 $ cr PIPE,o BANGCANE] (bangCaneX 2)
|
||||||
, po [BANGCANE,TIN] rifle
|
, po [BANGCANE,cr TIN] rifle
|
||||||
, po [RIFLE,PLANK] repeater
|
, po [RIFLE,cr PLANK] repeater
|
||||||
, po [REPEATER,SPRING,HARDWARE] autoRifle
|
, po [REPEATER,cr SPRING,cr HARDWARE] autoRifle
|
||||||
, po [REPEATER,SPRING,CAN] burstRifle
|
, po [REPEATER,cr SPRING,cr CAN] burstRifle
|
||||||
, po [BURSTRIFLE,SPRING,HARDWARE] fastBurstRifle
|
, po [BURSTRIFLE,cr SPRING,cr HARDWARE] fastBurstRifle
|
||||||
, po [FASTBURSTRIFLE,SPRING,HARDWARE] completeBurstRifle
|
, po [FASTBURSTRIFLE,cr SPRING,cr HARDWARE] completeBurstRifle
|
||||||
, po [MOTOR,BANGCANEX 3] $ miniGunX 3
|
, po [cr MOTOR,BANGCANEX 3] $ miniGunX 3
|
||||||
, po [MOTOR,BANGCANEX 4] $ miniGunX 4
|
, po [cr MOTOR,BANGCANEX 4] $ miniGunX 4
|
||||||
, po [MOTOR,BANGCANEX 5] $ miniGunX 5
|
, po [cr MOTOR,BANGCANEX 5] $ miniGunX 5
|
||||||
, po [MOTOR,BANGCANEX 6] $ miniGunX 6
|
, po [cr MOTOR,BANGCANEX 6] $ miniGunX 6
|
||||||
|
|
||||||
, p [p 3 PIPE,o HARDWARE] bangRod
|
, p [p 3 $ cr PIPE,o $ cr HARDWARE] bangRod
|
||||||
, po [BANGROD,PLANK,HARDWARE] elephantGun
|
, po [BANGROD,cr PLANK,cr HARDWARE] elephantGun
|
||||||
, po [ELEPHANTGUN,HARDWARE,PRISM] sniperRifle
|
, po [ELEPHANTGUN,cr HARDWARE,cr PRISM] sniperRifle
|
||||||
, po [ELEPHANTGUN,HARDWARE,TIN] amr
|
, po [ELEPHANTGUN,cr HARDWARE,cr TIN] amr
|
||||||
, po [AMR,HARDWARE,SPRING] autoAmr
|
, po [AMR,cr HARDWARE,cr SPRING] autoAmr
|
||||||
, po [BANGROD,PLATE,DRUM,MOTOR] machineGun
|
, po [BANGROD,cr PLATE,cr DRUM,cr MOTOR] machineGun
|
||||||
|
|
||||||
, p [p 2 TUBE,o HARDWARE] launcher
|
, p [p 2 $ cr TUBE,o $ cr HARDWARE] launcher
|
||||||
, p [p 2 TUBE,o LAUNCHER] (launcherX 2)
|
, p [p 2 $ cr TUBE,o LAUNCHER] (launcherX 2)
|
||||||
] ++ [ p [p 2 TUBE,o $ LAUNCHERX i] (launcherX (i+1)) | i <- [2..9]]
|
] ++ [ p [p 2 $ cr TUBE,o $ LAUNCHERX i] (launcherX (i+1)) | i <- [2..9]]
|
||||||
++
|
++
|
||||||
[ po [LIGHTER,PUMP,CAN] flameSpitter
|
[ po [cr LIGHTER,cr PUMP,cr CAN] flameSpitter
|
||||||
, po [FLAMESPITTER,CAN,PUMP] blowTorch
|
, po [FLAMESPITTER,cr CAN,cr PUMP] blowTorch
|
||||||
, po [FLAMESPITTER,DRUM] flameThrower
|
, po [FLAMESPITTER,cr DRUM] flameThrower
|
||||||
, po [FLAMETHROWER,DRUM] flameWall
|
, po [FLAMETHROWER,cr DRUM] flameWall
|
||||||
, po [FLAMETHROWER,PUMP] flameTorrent
|
, po [FLAMETHROWER,cr PUMP] flameTorrent
|
||||||
|
|
||||||
, p [o PRISM,o TRANSFORMER,o PIPE] lasGun
|
, p [o $ cr PRISM,o $ cr TRANSFORMER,o $ cr PIPE] lasGun
|
||||||
, p [o LASGUN,o PRISM] lasGunSway
|
, p [o LASGUN,o $ cr PRISM] lasSway
|
||||||
, p [o LASGUN,o HARDWARE] lasGunSwing
|
, p [o LASGUN,o $ cr HARDWARE] lasSwing
|
||||||
-- , p [o LASGUN,o PIPE] lasGunPulse
|
-- , p [o LASGUN,o PIPE] lasGunPulse
|
||||||
, p [o LASGUN,p 2 PIPE] lasGunDual
|
, p [o LASGUN,p 2 $ cr PIPE] lasDual
|
||||||
, p [o LASGUN,o PIPE, o PRISM] lasGunWidePulse
|
, p [o LASGUN,o $ cr PIPE, o $ cr PRISM] lasWidePulse
|
||||||
, p [o LASGUN,o TRANSFORMER,o PRISM] (lasGunWide 2)
|
, p [o LASGUN,o $ cr TRANSFORMER,o $ cr PRISM] (lasWide 2)
|
||||||
|
|
||||||
, p [o TRANSFORMER,p 2 CAN] sparkGun
|
, p [o $ cr TRANSFORMER,p 2 $ cr CAN] sparkGun
|
||||||
, p [o SPARKGUN,p 2 PIPE] teslaGun
|
, p [o SPARKGUN,p 2 $ cr PIPE] teslaGun
|
||||||
|
|
||||||
, p [o TELEPORTMODULE,p 2 MICROCHIP] blinkGun
|
, p [o $ cr TELEPORTMODULE,p 2 $ cr MICROCHIP] blinkGun
|
||||||
, p [o BLINKER, p 2 MICROCHIP] unsafeBlinkGun
|
, p [o BLINKER, p 2 $ cr MICROCHIP] unsafeBlinkGun
|
||||||
|
|
||||||
, po [MAGNET,TIN] magShield
|
, po [cr MAGNET,cr TIN] magShield
|
||||||
|
|
||||||
, p [p 2 PIPE,o PLATE,o MOTOR] powerLegs
|
, p [p 2 $ cr PIPE,o $ cr PLATE,o $ cr MOTOR] powerLegs
|
||||||
|
|
||||||
, p [p 4 CAN] plateCraft
|
, p [p 4 $ cr CAN] plateCraft
|
||||||
, p [p 3 TIN] plateCraft
|
, p [p 3 $ cr TIN] plateCraft
|
||||||
, p [p 2 DRUM] plateCraft
|
, p [p 2 $ cr DRUM] plateCraft
|
||||||
|
|
||||||
, p [p 2 PLATE] flatShield
|
, p [p 2 $ cr PLATE] flatShield
|
||||||
]
|
]
|
||||||
++ map (\i -> po [LASGUNWIDE i,TRANSFORMER,PRISM] $ lasGunWide (i+1)) [1..9]
|
++ map (\i -> po [LASGUNWIDE i,cr TRANSFORMER,cr PRISM] $ lasWide (i+1)) [1..9]
|
||||||
++ map (\i -> po [LASGUNWIDE i,HARDWARE] $ lasGunFocus i) [1..10]
|
++ map (\i -> po [LASGUNWIDE i,cr HARDWARE] $ lasFocus i) [1..10]
|
||||||
++ map (\i -> po [PIPE,BANGSTICK i] $ bangStick (i+1)) [1..8]
|
++ map (\i -> po [cr PIPE,BANGSTICK i] $ bangStick (i+1)) [1..8]
|
||||||
++ map (\i -> po [REVOLVERX i,CAN] $ revolverX (i+1)) [1..5]
|
++ map (\i -> po [REVOLVERX i,cr CAN] $ revolverX (i+1)) [1..5]
|
||||||
++ map (\i -> p [o (BANGCANEX i),p 2 PIPE] $ bangCaneX (i+1)) [1..5]
|
++ map (\i -> p [o (BANGCANEX i),p 2 $ cr PIPE] $ bangCaneX (i+1)) [1..5]
|
||||||
++ map (\i -> po [MINIGUNX i,BANGCANE] $ miniGunX (i+1)) [3..15]
|
++ map (\i -> po [MINIGUNX i,BANGCANE] $ miniGunX (i+1)) [3..15]
|
||||||
|
|
||||||
++ [ po (_iyBase (_itType it):mtype) $ it & itType . iyModules . ix modtype .~ m
|
++ [ po (_iyBase (_itType it):mtype) $ it & itType . iyModules . ix modtype .~ m
|
||||||
@@ -102,6 +102,7 @@ itemCombinations =
|
|||||||
p = (,)
|
p = (,)
|
||||||
po xs it = (map o xs,it)
|
po xs it = (map o xs,it)
|
||||||
o = (1,)
|
o = (1,)
|
||||||
|
cr = CRAFT
|
||||||
|
|
||||||
moduleCombinations :: [( ModuleSlot, [Item], [([ItemBaseType],ItemModuleType)] )]
|
moduleCombinations :: [( ModuleSlot, [Item], [([ItemBaseType],ItemModuleType)] )]
|
||||||
moduleCombinations =
|
moduleCombinations =
|
||||||
@@ -111,8 +112,8 @@ moduleCombinations =
|
|||||||
,burstRifle
|
,burstRifle
|
||||||
,fastBurstRifle
|
,fastBurstRifle
|
||||||
]
|
]
|
||||||
, [amod [DRUM,HARDWARE] DRUMMAG
|
, [amod [cr DRUM,cr HARDWARE] DRUMMAG
|
||||||
,amod [MOTOR,HARDWARE] BELTMAG
|
,amod [cr MOTOR,cr HARDWARE] BELTMAG
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModAutoMag
|
, ( ModAutoMag
|
||||||
@@ -120,56 +121,57 @@ moduleCombinations =
|
|||||||
,autoPistol
|
,autoPistol
|
||||||
,smg
|
,smg
|
||||||
]
|
]
|
||||||
, [amod [MAGNET,HARDWARE] MAGNETMAG
|
, [amod [cr MAGNET,cr HARDWARE] MAGNETMAG
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModBullet
|
, ( ModBullet
|
||||||
, bulletWeapons
|
, bulletWeapons
|
||||||
, [amod [INCENDIARYMODULE] INCENDBUL
|
, [amod [cr INCENDIARYMODULE] INCENDBUL
|
||||||
,amod [BOUNCEMODULE] BOUNCEBUL
|
,amod [cr BOUNCEMODULE] BOUNCEBUL
|
||||||
,amod [STATICMODULE] STATICBUL
|
,amod [cr STATICMODULE] STATICBUL
|
||||||
,amod [CONCUSSMODULE] CONCUSBUL
|
,amod [cr CONCUSSMODULE] CONCUSBUL
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModTarget
|
, ( ModTarget
|
||||||
, homingLaunchers ++ bulletWeapons
|
, homingLaunchers ++ bulletWeapons
|
||||||
, [amod [MICROCHIP,CREATURESENSOR] TARGCR
|
, [amod [cr MICROCHIP,cr CREATURESENSOR] TARGCR
|
||||||
,amod [MICROCHIP,PRISM] TARGLAS
|
,amod [cr MICROCHIP,cr PRISM] TARGLAS
|
||||||
,amod [MICROCHIP,TIN] TARGPOS
|
,amod [cr MICROCHIP,cr TIN] TARGPOS
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModBulletTrajectory
|
, ( ModBulletTrajectory
|
||||||
, bulletWeapons
|
, bulletWeapons
|
||||||
, [amod [MAGNET,MICROCHIP,HARDWARE] MAGNETTRAJ
|
, [amod [cr MAGNET, cr MICROCHIP,cr HARDWARE] MAGNETTRAJ
|
||||||
,amod [MICROCHIP,HARDWARE] FLECHETRAJ
|
,amod [cr MICROCHIP, cr HARDWARE] FLECHETRAJ
|
||||||
,amod [ANTIMATTER,HARDWARE] BEZIERTRAJ
|
,amod [cr ANTIMATTER,cr HARDWARE] BEZIERTRAJ
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModDualBeam
|
, ( ModDualBeam
|
||||||
, [lasGunDual]
|
, [lasDual]
|
||||||
, [amod [INCENDIARYMODULE] INCENDLAS
|
, [amod [cr INCENDIARYMODULE] INCENDLAS
|
||||||
,amod [TRANSFORMER] SPLITLAS
|
,amod [cr TRANSFORMER] SPLITLAS
|
||||||
,amod [STATICMODULE] STATICLAS
|
,amod [cr STATICMODULE] STATICLAS
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModTeleport
|
, ( ModTeleport
|
||||||
, teleportableWeapons
|
, teleportableWeapons
|
||||||
, [amod [TELEPORTMODULE,MICROCHIP] WEPTELE
|
, [amod [cr TELEPORTMODULE,cr MICROCHIP] WEPTELE
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModLauncherHoming
|
, ( ModLauncherHoming
|
||||||
, homingLaunchers
|
, homingLaunchers
|
||||||
, [ amod [MICROCHIP,TRANSMITTER] LAUNCHHOME
|
, [ amod [cr MICROCHIP,cr TRANSMITTER] LAUNCHHOME
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, ( ModBattery
|
, ( ModBattery
|
||||||
, batteryGuns
|
, batteryGuns
|
||||||
, [amod [BATTERY] EXTRABATTERY
|
, [amod [cr BATTERY] EXTRABATTERY
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
amod = (,)
|
amod = (,)
|
||||||
|
cr = CRAFT
|
||||||
|
|
||||||
homingLaunchers :: [Item]
|
homingLaunchers :: [Item]
|
||||||
homingLaunchers = launcher : [launcherX i | i <- [2..10]]
|
homingLaunchers = launcher : [launcherX i | i <- [2..10]]
|
||||||
@@ -179,12 +181,12 @@ batteryGuns =
|
|||||||
[ teslaGun
|
[ teslaGun
|
||||||
, sparkGun
|
, sparkGun
|
||||||
, lasGun
|
, lasGun
|
||||||
, lasGunSway
|
, lasSway
|
||||||
, lasGunSwing
|
, lasSwing
|
||||||
] ++
|
] ++
|
||||||
[ lasGunWide i | i <- [1..10]
|
[ lasWide i | i <- [1..10]
|
||||||
] ++
|
] ++
|
||||||
[ lasGunFocus i | i <- [1..10]]
|
[ lasFocus i | i <- [1..10]]
|
||||||
|
|
||||||
teleportableWeapons :: [Item]
|
teleportableWeapons :: [Item]
|
||||||
teleportableWeapons = bulletWeapons ++ batteryGuns ++ homingLaunchers
|
teleportableWeapons = bulletWeapons ++ batteryGuns ++ homingLaunchers
|
||||||
|
|||||||
+101
-96
@@ -2,110 +2,23 @@
|
|||||||
module Dodge.Combine.Data
|
module Dodge.Combine.Data
|
||||||
where
|
where
|
||||||
import Dodge.Equipment.Data
|
import Dodge.Equipment.Data
|
||||||
|
import Dodge.Data.ItemAmount
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
|
|
||||||
-- this should probably store loaded ammo
|
-- this should probably store loaded ammo
|
||||||
data ItemType = ItemType
|
data ItemType = ItemType
|
||||||
{_iyBase :: ItemBaseType
|
{_iyBase :: ItemBaseType
|
||||||
,_iyModules :: M.Map ModuleSlot ItemModuleType
|
,_iyModules :: M.Map ModuleSlot ItemModuleType
|
||||||
|
,_iyStack :: Stack
|
||||||
}
|
}
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
-- TODO make this an enum somehow...?
|
data Stack = NoStack | Stack IcAmount
|
||||||
data ItemBaseType
|
deriving (Eq,Ord,Show)
|
||||||
= NOTDEFINED
|
|
||||||
| EFFGUN String
|
data CraftType
|
||||||
| AUTOEFFGUN String
|
= PIPE
|
||||||
-- Weapons
|
|
||||||
| BANGSTICK Int
|
|
||||||
| PISTOL
|
|
||||||
| REVOLVER
|
|
||||||
| REVOLVERX Int
|
|
||||||
| HVAUTOGUN
|
|
||||||
| LTAUTOGUN
|
|
||||||
| MACHINEPISTOL
|
|
||||||
| AUTOPISTOL
|
|
||||||
| SMG
|
|
||||||
| BANGCONE
|
|
||||||
| BLUNDERBUSS
|
|
||||||
| BIGBLUNDERBUSS
|
|
||||||
| BIGGERBLUNDERBUSS
|
|
||||||
| BIGGESTBLUNDERBUSS
|
|
||||||
| GRAPESHOTCANNON
|
|
||||||
| GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
|
||||||
-- | MORTARCONE / HANDMORTAR
|
|
||||||
| BANGCANE
|
|
||||||
| MINIGUN
|
|
||||||
| MINIGUNX Int
|
|
||||||
| BANGCANEX Int
|
|
||||||
| RIFLE
|
|
||||||
| REPEATER
|
|
||||||
| AUTORIFLE
|
|
||||||
| BURSTRIFLE
|
|
||||||
| FASTBURSTRIFLE
|
|
||||||
| COMPLETEBURSTRIFLE
|
|
||||||
| BANGROD
|
|
||||||
| ELEPHANTGUN
|
|
||||||
| AMR
|
|
||||||
| AUTOAMR
|
|
||||||
| SNIPERRIFLE
|
|
||||||
| MACHINEGUN
|
|
||||||
| FLAMESPITTER
|
|
||||||
| FLAMETHROWER
|
|
||||||
| FLAMETORRENT
|
|
||||||
| FLAMEWALL
|
|
||||||
| BLOWTORCH
|
|
||||||
| AUTOGUN
|
|
||||||
| SPREADGUN
|
|
||||||
| MULTGUN
|
|
||||||
| LONGGUN
|
|
||||||
| SPARKGUN
|
|
||||||
| TESLAGUN
|
|
||||||
| LASGUN
|
|
||||||
| LASPULSE
|
|
||||||
| LASGUNDUAL
|
|
||||||
| LASGUNSWING
|
|
||||||
| LASGUNSWAY
|
|
||||||
| LASGUNWIDEPULSE
|
|
||||||
| LASGUNWIDE Int
|
|
||||||
| LASGUNFOCUS Int
|
|
||||||
| SONICGUN
|
|
||||||
| TRACTORGUN
|
|
||||||
| LAUNCHER
|
|
||||||
| LAUNCHERX Int
|
|
||||||
-- | TRACKINGLAUNCHER
|
|
||||||
| REMOTELAUNCHER
|
|
||||||
| POISONSPRAYER
|
|
||||||
| DRONELAUNCHER
|
|
||||||
| GRENADE
|
|
||||||
| REMOTEBOMB
|
|
||||||
-- Utility items
|
|
||||||
| BOOSTER
|
|
||||||
| REWINDER
|
|
||||||
| BLINKER
|
|
||||||
| BLINKERUNSAFE
|
|
||||||
| FORCEFIELDGUN
|
|
||||||
| SHRINKER
|
|
||||||
| SPAWNER
|
|
||||||
-- Equipment
|
|
||||||
| CLICKDETECTOR Detector
|
|
||||||
| AUTODETECTOR Detector
|
|
||||||
| MAGSHIELD
|
|
||||||
| FLAMESHIELD
|
|
||||||
| FRONTARMOUR
|
|
||||||
| WRISTARMOUR
|
|
||||||
| INVISIBILITYEQUIPMENT EquipSite
|
|
||||||
| BRAINHAT
|
|
||||||
| HEADLAMP
|
|
||||||
| HEADLAMP1
|
|
||||||
| POWERLEGS
|
|
||||||
| SPEEDLEGS
|
|
||||||
| JUMPLEGS
|
|
||||||
| FLATSHIELD
|
|
||||||
| JETPACK
|
|
||||||
-- Crafting
|
|
||||||
| PIPE
|
|
||||||
| TUBE
|
| TUBE
|
||||||
| HARDWARE
|
| HARDWARE
|
||||||
| SPRING
|
| SPRING
|
||||||
@@ -151,12 +64,104 @@ data ItemBaseType
|
|||||||
| TIMEMODULE
|
| TIMEMODULE
|
||||||
| SIZEMODULE
|
| SIZEMODULE
|
||||||
| GRAVITYMODULE
|
| GRAVITYMODULE
|
||||||
|
deriving (Eq,Ord,Show,Enum)
|
||||||
|
|
||||||
|
-- TODO make this an enum somehow...?
|
||||||
|
data ItemBaseType
|
||||||
|
= NOTDEFINED
|
||||||
|
| EFFGUN String
|
||||||
|
| AUTOEFFGUN String
|
||||||
|
-- Weapons
|
||||||
|
| BANGSTICK Int
|
||||||
|
| PISTOL
|
||||||
|
| REVOLVER
|
||||||
|
| REVOLVERX Int
|
||||||
|
| MACHINEPISTOL
|
||||||
|
| AUTOPISTOL
|
||||||
|
| SMG
|
||||||
|
| BANGCONE
|
||||||
|
| BLUNDERBUSS
|
||||||
|
| BIGBLUNDERBUSS
|
||||||
|
| BIGGERBLUNDERBUSS
|
||||||
|
| BIGGESTBLUNDERBUSS
|
||||||
|
-- | GRAPESHOTCANNON
|
||||||
|
-- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
||||||
|
-- | MORTARCONE / HANDMORTAR
|
||||||
|
| BANGCANE
|
||||||
|
-- | MINIGUN
|
||||||
|
| MINIGUNX Int
|
||||||
|
| BANGCANEX Int
|
||||||
|
| RIFLE
|
||||||
|
| REPEATER
|
||||||
|
| AUTORIFLE
|
||||||
|
| BURSTRIFLE
|
||||||
|
| FASTBURSTRIFLE
|
||||||
|
| COMPLETEBURSTRIFLE
|
||||||
|
| BANGROD
|
||||||
|
| ELEPHANTGUN
|
||||||
|
| AMR
|
||||||
|
| AUTOAMR
|
||||||
|
| SNIPERRIFLE
|
||||||
|
| MACHINEGUN
|
||||||
|
| FLAMESPITTER
|
||||||
|
| FLAMETHROWER
|
||||||
|
| FLAMETORRENT
|
||||||
|
| FLAMEWALL
|
||||||
|
| BLOWTORCH
|
||||||
|
| AUTOGUN
|
||||||
|
-- | SPREADGUN
|
||||||
|
-- | MULTGUN
|
||||||
|
| LONGGUN
|
||||||
|
| SPARKGUN
|
||||||
|
| TESLAGUN
|
||||||
|
| LASGUN
|
||||||
|
| LASPULSE
|
||||||
|
| LASGUNDUAL
|
||||||
|
| LASGUNSWING
|
||||||
|
| LASGUNSWAY
|
||||||
|
| LASGUNWIDEPULSE
|
||||||
|
| LASGUNWIDE Int
|
||||||
|
| LASGUNFOCUS Int
|
||||||
|
| SONICGUN
|
||||||
|
| TRACTORGUN
|
||||||
|
| LAUNCHER
|
||||||
|
| LAUNCHERX Int
|
||||||
|
-- | TRACKINGLAUNCHER
|
||||||
|
| REMOTELAUNCHER
|
||||||
|
| POISONSPRAYER
|
||||||
|
| DRONELAUNCHER
|
||||||
|
-- | GRENADE
|
||||||
|
-- | REMOTEBOMB
|
||||||
|
-- Utility items
|
||||||
|
| BOOSTER
|
||||||
|
| REWINDER
|
||||||
|
| BLINKER
|
||||||
|
| BLINKERUNSAFE
|
||||||
|
| FORCEFIELDGUN
|
||||||
|
| SHRINKER
|
||||||
|
| SPAWNER
|
||||||
|
-- Equipment
|
||||||
|
| CLICKDETECTOR Detector
|
||||||
|
| AUTODETECTOR Detector
|
||||||
|
| MAGSHIELD
|
||||||
|
| FLAMESHIELD
|
||||||
|
| FRONTARMOUR
|
||||||
|
| WRISTARMOUR
|
||||||
|
| INVISIBILITYEQUIPMENT EquipSite
|
||||||
|
| BRAINHAT
|
||||||
|
| HEADLAMP
|
||||||
|
| HEADLAMP1
|
||||||
|
| POWERLEGS
|
||||||
|
| SPEEDLEGS
|
||||||
|
| JUMPLEGS
|
||||||
|
| FLATSHIELD
|
||||||
|
| JETPACK
|
||||||
--
|
--
|
||||||
| KEYCARD Int
|
| KEYCARD Int
|
||||||
--
|
--
|
||||||
| MEDKIT Int
|
| MEDKIT Int
|
||||||
|
| CRAFT CraftType
|
||||||
--
|
--
|
||||||
| NoCombineType
|
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
data ItemModuleType
|
data ItemModuleType
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import Dodge.Creature.State.Data
|
|||||||
import Dodge.Creature.Update
|
import Dodge.Creature.Update
|
||||||
import Dodge.Prop.Gib
|
import Dodge.Prop.Gib
|
||||||
--import Dodge.Item.Weapon.Grenade
|
--import Dodge.Item.Weapon.Grenade
|
||||||
import Dodge.Item.Weapon.Booster
|
import Dodge.Item.Equipment.Booster
|
||||||
import Dodge.Item.Weapon.Utility
|
import Dodge.Item.Weapon.Utility
|
||||||
import Dodge.Item.Weapon.Drone
|
import Dodge.Item.Weapon.Drone
|
||||||
import Dodge.Item.Craftable
|
import Dodge.Item.Craftable
|
||||||
@@ -253,9 +253,9 @@ testInventory = IM.fromList $ zip [0..]
|
|||||||
, flatShield
|
, flatShield
|
||||||
, sniperRifle
|
, sniperRifle
|
||||||
, makeTypeCraftNum 1 MOTOR
|
, makeTypeCraftNum 1 MOTOR
|
||||||
, makeModule INCENDIARYMODULE
|
, makeTypeCraft INCENDIARYMODULE
|
||||||
, makeModule STATICMODULE
|
, makeTypeCraft STATICMODULE
|
||||||
, makeModule CONCUSSMODULE
|
, makeTypeCraft CONCUSSMODULE
|
||||||
-- , bounceModule
|
-- , bounceModule
|
||||||
-- , medkit 50 & itConsumption . itAmount .~ 3
|
-- , medkit 50 & itConsumption . itAmount .~ 3
|
||||||
, teleportModule
|
, teleportModule
|
||||||
@@ -302,7 +302,7 @@ stackedInventory = IM.fromList $ zip [0..]
|
|||||||
,flameThrower
|
,flameThrower
|
||||||
,poisonSprayer
|
,poisonSprayer
|
||||||
,launcher
|
,launcher
|
||||||
,lasDrones
|
,droneLauncher
|
||||||
--,lasGun
|
--,lasGun
|
||||||
--,grenade
|
--,grenade
|
||||||
--,ltAutoGun,flamer,multGun,spreadGun,remoteLauncher
|
--,ltAutoGun,flamer,multGun,spreadGun,remoteLauncher
|
||||||
|
|||||||
@@ -85,5 +85,5 @@ maybeWarmupStatus it = case it ^? itUse . useDelay . warmMax of
|
|||||||
in Just $ Prelude.take (5 - Prelude.length n) "*WARM" ++ n
|
in Just $ Prelude.take (5 - Prelude.length n) "*WARM" ++ n
|
||||||
|
|
||||||
defaultItemType :: ItemType
|
defaultItemType :: ItemType
|
||||||
defaultItemType = ItemType NOTDEFINED mempty
|
defaultItemType = ItemType NOTDEFINED mempty NoStack
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ initialAnoTree = OnwardList
|
|||||||
, AnRoom pistolerRoom
|
, AnRoom pistolerRoom
|
||||||
, AnRoom doubleCorridorBarrels
|
, AnRoom doubleCorridorBarrels
|
||||||
, IntAnno $ PassthroughLockKeyLists
|
, IntAnno $ PassthroughLockKeyLists
|
||||||
[(sensorRoomRunPast ELECTRICAL, takeOne [STATICMODULE,SPARKGUN] )] itemRooms
|
[(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,SPARKGUN] )] itemRooms
|
||||||
, IntAnno $ PassthroughLockKeyLists keyCardRunPastRand itemRooms
|
, IntAnno $ PassthroughLockKeyLists keyCardRunPastRand itemRooms
|
||||||
, IntAnno $ AnTree . warningRooms
|
, IntAnno $ AnTree . warningRooms
|
||||||
, AnTree $ rToOnward "chaseCrit+armourChaseCrit rectRoom"
|
, AnTree $ rToOnward "chaseCrit+armourChaseCrit rectRoom"
|
||||||
|
|||||||
+247
-1
@@ -1,9 +1,255 @@
|
|||||||
module Dodge.Item
|
module Dodge.Item
|
||||||
( module Dodge.Item.Weapon
|
( module Dodge.Item.Weapon
|
||||||
, module Dodge.Item.Consumable
|
, module Dodge.Item.Consumable
|
||||||
|
, module Dodge.Item.Equipment
|
||||||
, module Dodge.Item.PassKey
|
, module Dodge.Item.PassKey
|
||||||
|
, module Dodge.Item.Craftable
|
||||||
|
, itemFromBase
|
||||||
|
, baseToFamily
|
||||||
) where
|
) where
|
||||||
--import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Item.Weapon
|
import Dodge.Item.Weapon
|
||||||
|
import Dodge.Item.Equipment
|
||||||
import Dodge.Item.Consumable
|
import Dodge.Item.Consumable
|
||||||
import Dodge.Item.PassKey
|
import Dodge.Item.PassKey
|
||||||
|
import Dodge.Item.Family
|
||||||
|
import Dodge.Item.Craftable
|
||||||
|
|
||||||
|
-- this is not ideal, should fold the itemtype into a stackable/unstackable type
|
||||||
|
itemFromBase :: ItemBaseType -> Item
|
||||||
|
itemFromBase ibt = case ibt of
|
||||||
|
NOTDEFINED -> error "cannot create undefined item"
|
||||||
|
EFFGUN _ -> undefined
|
||||||
|
AUTOEFFGUN _ -> undefined
|
||||||
|
-- Weapons
|
||||||
|
BANGSTICK i -> bangStick i
|
||||||
|
PISTOL -> pistol
|
||||||
|
REVOLVER -> revolver
|
||||||
|
REVOLVERX i -> revolverX i
|
||||||
|
MACHINEPISTOL -> machinePistol
|
||||||
|
AUTOPISTOL -> autoPistol
|
||||||
|
SMG -> smg
|
||||||
|
BANGCONE -> bangCone
|
||||||
|
BLUNDERBUSS -> blunderbuss
|
||||||
|
BIGBLUNDERBUSS -> bigBlunderbuss
|
||||||
|
BIGGERBLUNDERBUSS -> biggerBlunderbuss
|
||||||
|
BIGGESTBLUNDERBUSS -> biggestBlunderbuss
|
||||||
|
-- GRAPESHOTCANNON -> grapeShotCannon
|
||||||
|
--GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
||||||
|
-- --| MORTARCONE / HANDMORTAR
|
||||||
|
BANGCANE -> bangCane
|
||||||
|
MINIGUNX i -> miniGunX i
|
||||||
|
BANGCANEX i -> bangCaneX i
|
||||||
|
RIFLE -> rifle
|
||||||
|
REPEATER -> repeater
|
||||||
|
AUTORIFLE -> autoRifle
|
||||||
|
BURSTRIFLE -> burstRifle
|
||||||
|
FASTBURSTRIFLE -> fastBurstRifle
|
||||||
|
COMPLETEBURSTRIFLE -> completeBurstRifle
|
||||||
|
BANGROD -> bangRod
|
||||||
|
ELEPHANTGUN -> elephantGun
|
||||||
|
AMR -> amr
|
||||||
|
AUTOAMR -> autoAmr
|
||||||
|
SNIPERRIFLE -> sniperRifle
|
||||||
|
MACHINEGUN -> machineGun
|
||||||
|
FLAMESPITTER -> flameSpitter
|
||||||
|
FLAMETHROWER -> flameThrower
|
||||||
|
FLAMETORRENT -> flameTorrent
|
||||||
|
FLAMEWALL -> flameWall
|
||||||
|
BLOWTORCH -> blowTorch
|
||||||
|
AUTOGUN -> autoGun
|
||||||
|
-- SPREADGUN -> spreadGun
|
||||||
|
-- MULTGUN -> multGun
|
||||||
|
LONGGUN -> longGun
|
||||||
|
SPARKGUN -> sparkGun
|
||||||
|
TESLAGUN -> teslaGun
|
||||||
|
LASGUN -> lasGun
|
||||||
|
LASPULSE -> lasPulse
|
||||||
|
LASGUNDUAL -> lasDual
|
||||||
|
LASGUNSWING -> lasSwing
|
||||||
|
LASGUNSWAY -> lasSway
|
||||||
|
LASGUNWIDEPULSE -> lasWidePulse
|
||||||
|
LASGUNWIDE i -> lasWide i
|
||||||
|
LASGUNFOCUS i -> lasFocus i
|
||||||
|
SONICGUN -> sonicGun
|
||||||
|
TRACTORGUN -> tractorGun
|
||||||
|
LAUNCHER -> launcher
|
||||||
|
LAUNCHERX i -> launcherX i
|
||||||
|
-- --| TRACKINGLAUNCHER
|
||||||
|
REMOTELAUNCHER -> remoteLauncher
|
||||||
|
POISONSPRAYER -> poisonSprayer
|
||||||
|
DRONELAUNCHER -> droneLauncher
|
||||||
|
--GRENADE
|
||||||
|
--REMOTEBOMB
|
||||||
|
-- Utility items
|
||||||
|
BOOSTER -> boosterGun
|
||||||
|
REWINDER -> rewindGun
|
||||||
|
BLINKER -> blinkGun
|
||||||
|
BLINKERUNSAFE -> unsafeBlinkGun
|
||||||
|
FORCEFIELDGUN -> forceFieldGun
|
||||||
|
SHRINKER -> shrinkGun
|
||||||
|
SPAWNER -> error "need to datify creatures first"
|
||||||
|
-- Equipment
|
||||||
|
CLICKDETECTOR d -> clickDetector d
|
||||||
|
AUTODETECTOR d -> autoDetector d
|
||||||
|
MAGSHIELD -> magShield
|
||||||
|
FLAMESHIELD -> flameShield
|
||||||
|
FRONTARMOUR -> frontArmour
|
||||||
|
WRISTARMOUR -> wristArmour
|
||||||
|
INVISIBILITYEQUIPMENT GoesOnWrist -> wristInvisibility
|
||||||
|
INVISIBILITYEQUIPMENT _ -> error "need to define invisibility for more than wrist"
|
||||||
|
BRAINHAT -> brainHat
|
||||||
|
HEADLAMP -> headLamp
|
||||||
|
HEADLAMP1 -> headLamp1
|
||||||
|
POWERLEGS -> powerLegs
|
||||||
|
SPEEDLEGS -> speedLegs
|
||||||
|
JUMPLEGS -> jumpLegs
|
||||||
|
FLATSHIELD -> flatShield
|
||||||
|
JETPACK -> jetPack
|
||||||
|
CRAFT cr -> makeTypeCraft cr
|
||||||
|
KEYCARD i -> keyCard i
|
||||||
|
MEDKIT i -> medkit i
|
||||||
|
--
|
||||||
|
-- Crafting
|
||||||
|
--PIPE
|
||||||
|
--TUBE
|
||||||
|
--HARDWARE
|
||||||
|
--SPRING
|
||||||
|
--CAN
|
||||||
|
--TIN
|
||||||
|
--DRUM
|
||||||
|
--PLANK
|
||||||
|
--SHARDGLASS
|
||||||
|
--PUMP
|
||||||
|
--MOTOR
|
||||||
|
--TRANSFORMER
|
||||||
|
--PRISM
|
||||||
|
--LIGHTER
|
||||||
|
--MAGNET
|
||||||
|
--ANTIMATTER
|
||||||
|
--PLATE
|
||||||
|
--TRANSMITTER
|
||||||
|
--MICROCHIP
|
||||||
|
--AIUNIT
|
||||||
|
--CAMERA
|
||||||
|
--MINIDISPLAY -- visual display unit
|
||||||
|
--LED
|
||||||
|
--NAILBOX
|
||||||
|
--IRONBAR
|
||||||
|
--LIGHTSENSOR
|
||||||
|
--SOUNDSENSOR
|
||||||
|
--HEATSENSOR
|
||||||
|
--CREATURESENSOR
|
||||||
|
--WIRE
|
||||||
|
--BATTERY
|
||||||
|
--FUELCELL
|
||||||
|
--PORTABLEFUSION
|
||||||
|
-- Modules
|
||||||
|
-- bullet
|
||||||
|
--INCENDIARYMODULE
|
||||||
|
--STATICMODULE
|
||||||
|
--CONCUSSMODULE
|
||||||
|
--FRAGMODULE
|
||||||
|
--FLASHMODULE
|
||||||
|
--BOUNCEMODULE
|
||||||
|
--
|
||||||
|
--TELEPORTMODULE
|
||||||
|
--TIMEMODULE
|
||||||
|
--SIZEMODULE
|
||||||
|
--GRAVITYMODULE
|
||||||
|
--
|
||||||
|
--
|
||||||
|
--NoCombineType
|
||||||
|
--
|
||||||
|
baseToFamily :: ItemBaseType -> ItemFamily
|
||||||
|
baseToFamily ibt = case ibt of
|
||||||
|
NOTDEFINED -> undefined
|
||||||
|
EFFGUN _ -> HeldFamily
|
||||||
|
AUTOEFFGUN _ -> HeldFamily
|
||||||
|
BANGSTICK _ -> HeldFamily
|
||||||
|
PISTOL -> HeldFamily
|
||||||
|
REVOLVER -> HeldFamily
|
||||||
|
REVOLVERX _ -> HeldFamily
|
||||||
|
MACHINEPISTOL -> HeldFamily
|
||||||
|
AUTOPISTOL -> HeldFamily
|
||||||
|
SMG -> HeldFamily
|
||||||
|
BANGCONE -> HeldFamily
|
||||||
|
BLUNDERBUSS -> HeldFamily
|
||||||
|
BIGBLUNDERBUSS -> HeldFamily
|
||||||
|
BIGGERBLUNDERBUSS -> HeldFamily
|
||||||
|
BIGGESTBLUNDERBUSS -> HeldFamily
|
||||||
|
-- | GRAPESHOTCANNON -> HeldFamily
|
||||||
|
-- | GRENADELAUNCHER In-> HeldFamilyt -- number of chambers that can be reloaded
|
||||||
|
-- | MORTARCONE / HANDM-> HeldFamilyORTAR
|
||||||
|
BANGCANE -> HeldFamily
|
||||||
|
-- | MINIGUN -> HeldFamily
|
||||||
|
MINIGUNX _ -> HeldFamily
|
||||||
|
BANGCANEX _ -> HeldFamily
|
||||||
|
RIFLE -> HeldFamily
|
||||||
|
REPEATER -> HeldFamily
|
||||||
|
AUTORIFLE -> HeldFamily
|
||||||
|
BURSTRIFLE -> HeldFamily
|
||||||
|
FASTBURSTRIFLE -> HeldFamily
|
||||||
|
COMPLETEBURSTRIFLE -> HeldFamily
|
||||||
|
BANGROD -> HeldFamily
|
||||||
|
ELEPHANTGUN -> HeldFamily
|
||||||
|
AMR -> HeldFamily
|
||||||
|
AUTOAMR -> HeldFamily
|
||||||
|
SNIPERRIFLE -> HeldFamily
|
||||||
|
MACHINEGUN -> HeldFamily
|
||||||
|
FLAMESPITTER -> HeldFamily
|
||||||
|
FLAMETHROWER -> HeldFamily
|
||||||
|
FLAMETORRENT -> HeldFamily
|
||||||
|
FLAMEWALL -> HeldFamily
|
||||||
|
BLOWTORCH -> HeldFamily
|
||||||
|
AUTOGUN -> HeldFamily
|
||||||
|
-- | SPREADGUN -> HeldFamily
|
||||||
|
-- | MULTGUN -> HeldFamily
|
||||||
|
LONGGUN -> HeldFamily
|
||||||
|
SPARKGUN -> HeldFamily
|
||||||
|
TESLAGUN -> HeldFamily
|
||||||
|
LASGUN -> HeldFamily
|
||||||
|
LASPULSE -> HeldFamily
|
||||||
|
LASGUNDUAL -> HeldFamily
|
||||||
|
LASGUNSWING -> HeldFamily
|
||||||
|
LASGUNSWAY -> HeldFamily
|
||||||
|
LASGUNWIDEPULSE -> HeldFamily
|
||||||
|
LASGUNWIDE _ -> HeldFamily
|
||||||
|
LASGUNFOCUS _ -> HeldFamily
|
||||||
|
SONICGUN -> HeldFamily
|
||||||
|
TRACTORGUN -> HeldFamily
|
||||||
|
LAUNCHER -> HeldFamily
|
||||||
|
LAUNCHERX _ -> HeldFamily
|
||||||
|
-- | TRACKINGLAUNCHER -> HeldFamily
|
||||||
|
REMOTELAUNCHER -> HeldFamily
|
||||||
|
POISONSPRAYER -> HeldFamily
|
||||||
|
DRONELAUNCHER -> HeldFamily
|
||||||
|
-- | GRENADE
|
||||||
|
-- | REMOTEBOMB
|
||||||
|
BOOSTER -> LeftClickFamily
|
||||||
|
REWINDER -> LeftClickFamily
|
||||||
|
BLINKER -> LeftClickFamily
|
||||||
|
BLINKERUNSAFE -> LeftClickFamily
|
||||||
|
FORCEFIELDGUN -> LeftClickFamily
|
||||||
|
SHRINKER -> LeftClickFamily
|
||||||
|
SPAWNER -> LeftClickFamily
|
||||||
|
CLICKDETECTOR _ -> HeldFamily
|
||||||
|
AUTODETECTOR _ -> LeftClickFamily
|
||||||
|
MAGSHIELD -> EquipmentFamily
|
||||||
|
FLAMESHIELD -> EquipmentFamily
|
||||||
|
FRONTARMOUR -> EquipmentFamily
|
||||||
|
WRISTARMOUR -> EquipmentFamily
|
||||||
|
INVISIBILITYEQUIPMENT _ -> EquipmentFamily
|
||||||
|
BRAINHAT -> EquipmentFamily
|
||||||
|
HEADLAMP -> EquipmentFamily
|
||||||
|
HEADLAMP1 -> EquipmentFamily
|
||||||
|
POWERLEGS -> EquipmentFamily
|
||||||
|
SPEEDLEGS -> EquipmentFamily
|
||||||
|
JUMPLEGS -> EquipmentFamily
|
||||||
|
FLATSHIELD -> EquipmentFamily
|
||||||
|
JETPACK -> EquipmentFamily
|
||||||
|
CRAFT _ -> CraftingFamily
|
||||||
|
|
||||||
|
KEYCARD _ -> HeldFamily
|
||||||
|
|
||||||
|
MEDKIT _ -> ConsumableFamily
|
||||||
|
|||||||
@@ -9,22 +9,17 @@ import Color
|
|||||||
--import Geometry
|
--import Geometry
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
|
|
||||||
makeTypeCraftNum :: Int -> ItemBaseType -> Item
|
makeTypeCraftNum :: Int -> CraftType -> Item
|
||||||
makeTypeCraftNum i ct = defaultCraftable
|
makeTypeCraftNum i ct = defaultCraftable
|
||||||
{ _itInvSize = 0.5
|
{ _itInvSize = 0.5
|
||||||
, _itCurseStatus = Uncursed
|
, _itCurseStatus = Uncursed
|
||||||
, _itConsumption = ItemItselfConsumable $ IcAmount i
|
, _itConsumption = ItemItselfConsumable $ IcAmount i
|
||||||
}
|
}
|
||||||
& itType . iyBase .~ ct
|
& itType . iyBase .~ CRAFT ct
|
||||||
|
|
||||||
makeTypeCraft :: ItemBaseType -> Item
|
makeTypeCraft :: CraftType -> Item
|
||||||
makeTypeCraft = makeTypeCraftNum 1
|
makeTypeCraft = makeTypeCraftNum 1
|
||||||
|
|
||||||
makeModule :: ItemBaseType -> Item
|
|
||||||
makeModule ct = makeTypeCraft ct
|
|
||||||
& itInvSize .~ 1
|
|
||||||
& itInvColor .~ chartreuse
|
|
||||||
|
|
||||||
incendiaryModule :: Item
|
incendiaryModule :: Item
|
||||||
incendiaryModule = makeTypeCraft INCENDIARYMODULE
|
incendiaryModule = makeTypeCraft INCENDIARYMODULE
|
||||||
& itInvSize .~ 1
|
& itInvSize .~ 1
|
||||||
|
|||||||
+17
-12
@@ -1,7 +1,23 @@
|
|||||||
module Dodge.Item.Equipment where
|
module Dodge.Item.Equipment
|
||||||
|
( module Dodge.Item.Equipment.Booster
|
||||||
|
, magShield
|
||||||
|
, powerLegs
|
||||||
|
, flatShield
|
||||||
|
, wristInvisibility
|
||||||
|
, wristArmour
|
||||||
|
, brainHat
|
||||||
|
, frontArmour
|
||||||
|
, headLamp
|
||||||
|
, headLamp1
|
||||||
|
, jetPack
|
||||||
|
, speedLegs
|
||||||
|
, jumpLegs
|
||||||
|
, flameShield
|
||||||
|
) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Item.Draw
|
import Dodge.Item.Draw
|
||||||
import Dodge.Item.Equipment.Shape
|
import Dodge.Item.Equipment.Shape
|
||||||
|
import Dodge.Item.Equipment.Booster
|
||||||
import Dodge.LightSource
|
import Dodge.LightSource
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.Default.Wall
|
import Dodge.Default.Wall
|
||||||
@@ -134,17 +150,6 @@ flatShieldEquipSPic _ =
|
|||||||
( colorSH yellow $ upperPrismPoly 10 (rectWH 2 10)
|
( colorSH yellow $ upperPrismPoly 10 (rectWH 2 10)
|
||||||
, mempty
|
, mempty
|
||||||
)
|
)
|
||||||
effectOnEquip :: (Creature -> Item -> World -> World) -> ItEffect
|
|
||||||
effectOnEquip f = ItInvEffectID
|
|
||||||
{ _ieInv = g f
|
|
||||||
, _ieMID = Nothing
|
|
||||||
}
|
|
||||||
where
|
|
||||||
g f' itm cr w
|
|
||||||
| _crInvSel cr == invid = f' cr (_crInv (_creatures w IM.! _crID cr) IM.! invid) w
|
|
||||||
| otherwise = w
|
|
||||||
where
|
|
||||||
invid = fromJust $ _itInvPos itm
|
|
||||||
|
|
||||||
shieldWall :: Int -> Wall
|
shieldWall :: Int -> Wall
|
||||||
shieldWall crid = defaultWall
|
shieldWall crid = defaultWall
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
module Dodge.Item.Weapon.Booster
|
module Dodge.Item.Equipment.Booster
|
||||||
( boosterGun
|
( boosterGun
|
||||||
) where
|
) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
module Dodge.Item.Family where
|
||||||
|
|
||||||
|
data ItemFamily = HeldFamily
|
||||||
|
| CraftingFamily
|
||||||
|
| EquipmentFamily
|
||||||
|
| LeftClickFamily
|
||||||
|
| ConsumableFamily
|
||||||
@@ -13,8 +13,11 @@ module Dodge.Item.Weapon
|
|||||||
, module Dodge.Item.Weapon.SprayGuns
|
, module Dodge.Item.Weapon.SprayGuns
|
||||||
, module Dodge.Item.Weapon.BatteryGuns
|
, module Dodge.Item.Weapon.BatteryGuns
|
||||||
, module Dodge.Item.Weapon.Launcher
|
, module Dodge.Item.Weapon.Launcher
|
||||||
|
, module Dodge.Item.Weapon.Drone
|
||||||
) where
|
) where
|
||||||
|
import Dodge.Item.Weapon.Utility
|
||||||
import Dodge.Item.Weapon.BulletGuns
|
import Dodge.Item.Weapon.BulletGuns
|
||||||
|
import Dodge.Item.Weapon.Drone
|
||||||
import Dodge.Item.Weapon.TriggerType
|
import Dodge.Item.Weapon.TriggerType
|
||||||
import Dodge.Item.Weapon.SonicGuns
|
import Dodge.Item.Weapon.SonicGuns
|
||||||
import Dodge.Item.Weapon.ExtraEffect
|
import Dodge.Item.Weapon.ExtraEffect
|
||||||
@@ -22,7 +25,6 @@ import Dodge.Item.Weapon.UseEffect
|
|||||||
import Dodge.Item.Weapon.Remote
|
import Dodge.Item.Weapon.Remote
|
||||||
import Dodge.Item.Weapon.Grenade
|
import Dodge.Item.Weapon.Grenade
|
||||||
import Dodge.Item.Weapon.Spawn
|
import Dodge.Item.Weapon.Spawn
|
||||||
import Dodge.Item.Weapon.Utility
|
|
||||||
import Dodge.Item.Weapon.Radar
|
import Dodge.Item.Weapon.Radar
|
||||||
import Dodge.Item.Weapon.SprayGuns
|
import Dodge.Item.Weapon.SprayGuns
|
||||||
import Dodge.Item.Weapon.BatteryGuns
|
import Dodge.Item.Weapon.BatteryGuns
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
module Dodge.Item.Weapon.BatteryGuns
|
module Dodge.Item.Weapon.BatteryGuns
|
||||||
( lasGun
|
( lasGun
|
||||||
, lasGunDual
|
, lasDual
|
||||||
, lasGunWide
|
, lasWide
|
||||||
, lasGunWidePulse
|
, lasWidePulse
|
||||||
, lasGunSway
|
, lasSway
|
||||||
, lasGunSwing
|
, lasSwing
|
||||||
, lasGunFocus
|
, lasFocus
|
||||||
, lasGunPulse
|
, lasPulse
|
||||||
, sparkGun
|
, sparkGun
|
||||||
, teslaGun
|
, teslaGun
|
||||||
, teslaParams
|
, teslaParams
|
||||||
@@ -104,8 +104,8 @@ teslaGunPic _ = noPic $ colorSH blue $
|
|||||||
where
|
where
|
||||||
xa = 1
|
xa = 1
|
||||||
xb = 9
|
xb = 9
|
||||||
lasGunPulse :: Item
|
lasPulse :: Item
|
||||||
lasGunPulse = lasGun
|
lasPulse = lasGun
|
||||||
& itType . iyBase .~ LASPULSE
|
& itType . iyBase .~ LASPULSE
|
||||||
& itUse . useMods .~
|
& itUse . useMods .~
|
||||||
[ ammoCheckI
|
[ ammoCheckI
|
||||||
@@ -123,8 +123,8 @@ lasGunPulse = lasGun
|
|||||||
frac it = 0.5 * (1 + sin (pi * fromIntegral (_lasCycle $ _itParams it) * 0.1))
|
frac it = 0.5 * (1 + sin (pi * fromIntegral (_lasCycle $ _itParams it) * 0.1))
|
||||||
|
|
||||||
|
|
||||||
lasGunWide :: Int -> Item
|
lasWide :: Int -> Item
|
||||||
lasGunWide n = lasGun
|
lasWide n = lasGun
|
||||||
& itType . iyBase .~ LASGUNWIDE n
|
& itType . iyBase .~ LASGUNWIDE n
|
||||||
& itParams . lasColor .~ orange
|
& itParams . lasColor .~ orange
|
||||||
& itParams . lasDamage .~ 2
|
& itParams . lasDamage .~ 2
|
||||||
@@ -143,8 +143,8 @@ lasGunWide n = lasGun
|
|||||||
where
|
where
|
||||||
n' = 9 * n
|
n' = 9 * n
|
||||||
xs = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
xs = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
||||||
lasGunWidePulse :: Item
|
lasWidePulse :: Item
|
||||||
lasGunWidePulse = lasGun
|
lasWidePulse = lasGun
|
||||||
& itType . iyBase .~ LASGUNWIDEPULSE
|
& itType . iyBase .~ LASGUNWIDEPULSE
|
||||||
& itParams . lasColor .~ orange
|
& itParams . lasColor .~ orange
|
||||||
& itParams . lasDamage .~ 2
|
& itParams . lasDamage .~ 2
|
||||||
@@ -170,8 +170,8 @@ lasGunWidePulse = lasGun
|
|||||||
xs it = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
xs it = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
||||||
where
|
where
|
||||||
n' = (ceiling $ (150 :: Float) * frac it) :: Int
|
n' = (ceiling $ (150 :: Float) * frac it) :: Int
|
||||||
lasGunSway :: Item
|
lasSway :: Item
|
||||||
lasGunSway = lasGun
|
lasSway = lasGun
|
||||||
& itType . iyBase .~ LASGUNSWAY
|
& itType . iyBase .~ LASGUNSWAY
|
||||||
& itParams . lasColor .~ orange
|
& itParams . lasColor .~ orange
|
||||||
& itParams . lasDamage .~ 11
|
& itParams . lasDamage .~ 11
|
||||||
@@ -192,8 +192,8 @@ lasGunSway = lasGun
|
|||||||
x it = [ 15 * sin (pi * fromIntegral x' * 0.05) ]
|
x it = [ 15 * sin (pi * fromIntegral x' * 0.05) ]
|
||||||
where
|
where
|
||||||
x' = _lasCycle $ _itParams it
|
x' = _lasCycle $ _itParams it
|
||||||
lasGunFocus :: Int -> Item
|
lasFocus :: Int -> Item
|
||||||
lasGunFocus n = lasGunWide n
|
lasFocus n = lasWide n
|
||||||
& itType . iyBase .~ LASGUNFOCUS n
|
& itType . iyBase .~ LASGUNFOCUS n
|
||||||
& itParams . lasColor .~ red
|
& itParams . lasColor .~ red
|
||||||
& itUse . useMods .~
|
& itUse . useMods .~
|
||||||
@@ -208,8 +208,8 @@ lasGunFocus n = lasGunWide n
|
|||||||
n' = 9 * n
|
n' = 9 * n
|
||||||
xs = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
xs = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ]
|
||||||
|
|
||||||
lasGunDual :: Item
|
lasDual :: Item
|
||||||
lasGunDual = lasGun
|
lasDual = lasGun
|
||||||
& itType . iyBase .~ LASGUNDUAL
|
& itType . iyBase .~ LASGUNDUAL
|
||||||
& itParams .~ DualBeam
|
& itParams .~ DualBeam
|
||||||
{ _phaseV = 1
|
{ _phaseV = 1
|
||||||
@@ -233,8 +233,8 @@ lasGunDual = lasGun
|
|||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
)
|
)
|
||||||
& itType . iyModules . at ModDualBeam ?~ EMPTYMODULE
|
& itType . iyModules . at ModDualBeam ?~ EMPTYMODULE
|
||||||
lasGunSwing :: Item
|
lasSwing :: Item
|
||||||
lasGunSwing = lasGun
|
lasSwing = lasGun
|
||||||
& itType . iyBase .~ LASGUNSWING
|
& itType . iyBase .~ LASGUNSWING
|
||||||
& itParams . lasColor .~ orange
|
& itParams . lasColor .~ orange
|
||||||
& itUse . useMods .~
|
& itUse . useMods .~
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import Control.Lens
|
|||||||
--import Control.Monad.State
|
--import Control.Monad.State
|
||||||
--import System.Random
|
--import System.Random
|
||||||
|
|
||||||
lasDrones :: Item
|
droneLauncher :: Item
|
||||||
lasDrones = defaultGun
|
droneLauncher = defaultGun
|
||||||
{ _itConsumption = defaultAmmo
|
{ _itConsumption = defaultAmmo
|
||||||
{ _laType = DroneAmmo { _amString = "LASDRONE" }
|
{ _laType = DroneAmmo { _amString = "LASDRONE" }
|
||||||
, _laMax = 2
|
, _laMax = 2
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ lockRoomMultiItems =
|
|||||||
lockRoomKeyItems :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
|
lockRoomKeyItems :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
|
||||||
lockRoomKeyItems =
|
lockRoomKeyItems =
|
||||||
[(lasCenSensEdge, takeOne [LAUNCHER,LASGUN,SPARKGUN,FLATSHIELD,FORCEFIELDGUN] )
|
[(lasCenSensEdge, takeOne [LAUNCHER,LASGUN,SPARKGUN,FLATSHIELD,FORCEFIELDGUN] )
|
||||||
,(sensorRoomRunPast ELECTRICAL, takeOne [STATICMODULE,SPARKGUN] )
|
,(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,SPARKGUN] )
|
||||||
,(sensorRoomRunPast FLAMING, takeOne [FLAMESPITTER, INCENDIARYMODULE] )
|
,(sensorRoomRunPast FLAMING, takeOne [FLAMESPITTER, CRAFT INCENDIARYMODULE] )
|
||||||
,(sensorRoomRunPast LASERING, return LASGUN )
|
,(sensorRoomRunPast LASERING, return LASGUN )
|
||||||
,(const slowDoorRoomRunPast, return MINIGUN)
|
,(const slowDoorRoomRunPast, return $ MINIGUNX 3)
|
||||||
,(const longRoomRunPast, takeOne [SNIPERRIFLE,FLATSHIELD])
|
,(const longRoomRunPast, takeOne [SNIPERRIFLE,FLATSHIELD])
|
||||||
,(const glassLessonRunPast, takeOne [LASGUN])
|
,(const glassLessonRunPast, takeOne [LASGUN])
|
||||||
,(const $ lasTunnelRunPast 400, takeOne [FLATSHIELD,FORCEFIELDGUN])
|
,(const $ lasTunnelRunPast 400, takeOne [FLATSHIELD,FORCEFIELDGUN])
|
||||||
@@ -47,7 +47,7 @@ itemRooms =
|
|||||||
, rc $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
|
, rc $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (MINIGUN , join $ takeOne
|
, (MINIGUNX 3 , join $ takeOne
|
||||||
[roomMiniIntro
|
[roomMiniIntro
|
||||||
, rc $ map makeTypeCraft ([MOTOR,HARDWARE] ++ replicate 6 PIPE)
|
, rc $ map makeTypeCraft ([MOTOR,HARDWARE] ++ replicate 6 PIPE)
|
||||||
] )
|
] )
|
||||||
@@ -80,12 +80,12 @@ itemRooms =
|
|||||||
[rc [keyCard 0]
|
[rc [keyCard 0]
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (INCENDIARYMODULE , join $ takeOne
|
, (CRAFT INCENDIARYMODULE , join $ takeOne
|
||||||
[rc [incendiaryModule]
|
[rc [incendiaryModule]
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
, (STATICMODULE , join $ takeOne
|
, (CRAFT STATICMODULE , join $ takeOne
|
||||||
[rc [makeModule STATICMODULE]
|
[rc [makeTypeCraft STATICMODULE]
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
module Dodge.Room.Breather where
|
||||||
|
--import Dodge.Cleat
|
||||||
|
import Dodge.Combine.Data
|
||||||
|
import Dodge.Data
|
||||||
|
--import Dodge.PlacementSpot
|
||||||
|
--import Dodge.RoomLink
|
||||||
|
--import Dodge.Default.Room
|
||||||
|
import Dodge.Item
|
||||||
|
--import Dodge.Creature
|
||||||
|
--import Dodge.Room.Pillar
|
||||||
|
--import Dodge.Room.Girder
|
||||||
|
--import Dodge.Room.Modify.Girder
|
||||||
|
--import Dodge.LevelGen.Data
|
||||||
|
import RandomHelp
|
||||||
|
import Dodge.Tree
|
||||||
|
--import Dodge.Placement.Instance
|
||||||
|
--import Dodge.LevelGen.Data
|
||||||
|
--import Dodge.Room.Procedural
|
||||||
|
--import Dodge.Room.Corridor
|
||||||
|
--import Dodge.Room.Tanks
|
||||||
|
--import Dodge.Room.Link
|
||||||
|
--import Dodge.Room.Door
|
||||||
|
--import Dodge.Room.Airlock
|
||||||
|
import Dodge.Room.Containing
|
||||||
|
--import Geometry
|
||||||
|
--import MonadHelp
|
||||||
|
--import LensHelp
|
||||||
|
|
||||||
|
--import qualified Data.Set as S
|
||||||
|
|
||||||
|
firstBreather :: State StdGen (MetaTree Room String)
|
||||||
|
firstBreather = do
|
||||||
|
itms <- takeOne [[],[itemFromBase $ CRAFT TUBE]]
|
||||||
|
roomsContaining [] itms
|
||||||
Reference in New Issue
Block a user