Make items recoverable from base type

This commit is contained in:
2022-06-14 22:09:26 +01:00
parent f3e1a34164
commit 485c42eb24
15 changed files with 537 additions and 241 deletions
+87 -85
View File
@@ -16,81 +16,81 @@ import LensHelp
itemCombinations :: [([(IcAmount,ItemBaseType)],Item)]
itemCombinations =
[ po [PIPE, HARDWARE] (bangStick 1)
, po [BANGSTICK 1, TIN] pistol
, po [PISTOL, SPRING, HARDWARE] autoPistol
, po [AUTOPISTOL, PLANK, HARDWARE] smg
, po [AUTOPISTOL, HARDWARE] machinePistol
, po [BANGSTICK 1,CAN] revolver
, po [REVOLVER, SPRING, HARDWARE] $ revolverX 1
[ po [CRAFT PIPE, CRAFT HARDWARE] (bangStick 1)
, po [BANGSTICK 1, CRAFT TIN] pistol
, po [PISTOL, CRAFT SPRING, cr HARDWARE] autoPistol
, po [AUTOPISTOL, cr PLANK, cr HARDWARE] smg
, po [AUTOPISTOL, cr HARDWARE] machinePistol
, po [BANGSTICK 1,cr CAN] revolver
, po [REVOLVER, cr SPRING, cr HARDWARE] $ revolverX 1
, po [TUBE,HARDWARE] bangCone
, po [BANGCONE,PLANK] blunderbuss
, po [BLUNDERBUSS,TUBE] bigBlunderbuss
, po [BIGBLUNDERBUSS,TUBE] biggerBlunderbuss
, po [BIGGERBLUNDERBUSS,TUBE] biggestBlunderbuss
, po [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
, po [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
, po [cr TUBE,cr HARDWARE] bangCone
, po [BANGCONE,cr PLANK] blunderbuss
, po [BLUNDERBUSS,cr TUBE] bigBlunderbuss
, po [BIGBLUNDERBUSS,cr TUBE] biggerBlunderbuss
, po [BIGGERBLUNDERBUSS,cr TUBE] biggestBlunderbuss
-- , po [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
-- , po [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
, p [p 2 PIPE,o HARDWARE] bangCane
, p [p 2 PIPE,o BANGCANE] (bangCaneX 2)
, po [BANGCANE,TIN] rifle
, po [RIFLE,PLANK] repeater
, po [REPEATER,SPRING,HARDWARE] autoRifle
, po [REPEATER,SPRING,CAN] burstRifle
, po [BURSTRIFLE,SPRING,HARDWARE] fastBurstRifle
, po [FASTBURSTRIFLE,SPRING,HARDWARE] completeBurstRifle
, po [MOTOR,BANGCANEX 3] $ miniGunX 3
, po [MOTOR,BANGCANEX 4] $ miniGunX 4
, po [MOTOR,BANGCANEX 5] $ miniGunX 5
, po [MOTOR,BANGCANEX 6] $ miniGunX 6
, p [p 2 $ cr PIPE,o $ cr HARDWARE] bangCane
, p [p 2 $ cr PIPE,o BANGCANE] (bangCaneX 2)
, po [BANGCANE,cr TIN] rifle
, po [RIFLE,cr PLANK] repeater
, po [REPEATER,cr SPRING,cr HARDWARE] autoRifle
, po [REPEATER,cr SPRING,cr CAN] burstRifle
, po [BURSTRIFLE,cr SPRING,cr HARDWARE] fastBurstRifle
, po [FASTBURSTRIFLE,cr SPRING,cr HARDWARE] completeBurstRifle
, po [cr MOTOR,BANGCANEX 3] $ miniGunX 3
, po [cr MOTOR,BANGCANEX 4] $ miniGunX 4
, po [cr MOTOR,BANGCANEX 5] $ miniGunX 5
, po [cr MOTOR,BANGCANEX 6] $ miniGunX 6
, p [p 3 PIPE,o HARDWARE] bangRod
, po [BANGROD,PLANK,HARDWARE] elephantGun
, po [ELEPHANTGUN,HARDWARE,PRISM] sniperRifle
, po [ELEPHANTGUN,HARDWARE,TIN] amr
, po [AMR,HARDWARE,SPRING] autoAmr
, po [BANGROD,PLATE,DRUM,MOTOR] machineGun
, p [p 3 $ cr PIPE,o $ cr HARDWARE] bangRod
, po [BANGROD,cr PLANK,cr HARDWARE] elephantGun
, po [ELEPHANTGUN,cr HARDWARE,cr PRISM] sniperRifle
, po [ELEPHANTGUN,cr HARDWARE,cr TIN] amr
, po [AMR,cr HARDWARE,cr SPRING] autoAmr
, po [BANGROD,cr PLATE,cr DRUM,cr MOTOR] machineGun
, p [p 2 TUBE,o HARDWARE] launcher
, p [p 2 TUBE,o LAUNCHER] (launcherX 2)
] ++ [ p [p 2 TUBE,o $ LAUNCHERX i] (launcherX (i+1)) | i <- [2..9]]
, p [p 2 $ cr TUBE,o $ cr HARDWARE] launcher
, p [p 2 $ cr TUBE,o LAUNCHER] (launcherX 2)
] ++ [ p [p 2 $ cr TUBE,o $ LAUNCHERX i] (launcherX (i+1)) | i <- [2..9]]
++
[ po [LIGHTER,PUMP,CAN] flameSpitter
, po [FLAMESPITTER,CAN,PUMP] blowTorch
, po [FLAMESPITTER,DRUM] flameThrower
, po [FLAMETHROWER,DRUM] flameWall
, po [FLAMETHROWER,PUMP] flameTorrent
[ po [cr LIGHTER,cr PUMP,cr CAN] flameSpitter
, po [FLAMESPITTER,cr CAN,cr PUMP] blowTorch
, po [FLAMESPITTER,cr DRUM] flameThrower
, po [FLAMETHROWER,cr DRUM] flameWall
, po [FLAMETHROWER,cr PUMP] flameTorrent
, p [o PRISM,o TRANSFORMER,o PIPE] lasGun
, p [o LASGUN,o PRISM] lasGunSway
, p [o LASGUN,o HARDWARE] lasGunSwing
, p [o $ cr PRISM,o $ cr TRANSFORMER,o $ cr PIPE] lasGun
, p [o LASGUN,o $ cr PRISM] lasSway
, p [o LASGUN,o $ cr HARDWARE] lasSwing
-- , p [o LASGUN,o PIPE] lasGunPulse
, p [o LASGUN,p 2 PIPE] lasGunDual
, p [o LASGUN,o PIPE, o PRISM] lasGunWidePulse
, p [o LASGUN,o TRANSFORMER,o PRISM] (lasGunWide 2)
, p [o LASGUN,p 2 $ cr PIPE] lasDual
, p [o LASGUN,o $ cr PIPE, o $ cr PRISM] lasWidePulse
, p [o LASGUN,o $ cr TRANSFORMER,o $ cr PRISM] (lasWide 2)
, p [o TRANSFORMER,p 2 CAN] sparkGun
, p [o SPARKGUN,p 2 PIPE] teslaGun
, p [o $ cr TRANSFORMER,p 2 $ cr CAN] sparkGun
, p [o SPARKGUN,p 2 $ cr PIPE] teslaGun
, p [o TELEPORTMODULE,p 2 MICROCHIP] blinkGun
, p [o BLINKER, p 2 MICROCHIP] unsafeBlinkGun
, p [o $ cr TELEPORTMODULE,p 2 $ cr MICROCHIP] blinkGun
, 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 3 TIN] plateCraft
, p [p 2 DRUM] plateCraft
, p [p 4 $ cr CAN] plateCraft
, p [p 3 $ cr TIN] 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,HARDWARE] $ lasGunFocus i) [1..10]
++ map (\i -> po [PIPE,BANGSTICK i] $ bangStick (i+1)) [1..8]
++ map (\i -> po [REVOLVERX i,CAN] $ revolverX (i+1)) [1..5]
++ map (\i -> p [o (BANGCANEX i),p 2 PIPE] $ bangCaneX (i+1)) [1..5]
++ map (\i -> po [LASGUNWIDE i,cr TRANSFORMER,cr PRISM] $ lasWide (i+1)) [1..9]
++ map (\i -> po [LASGUNWIDE i,cr HARDWARE] $ lasFocus i) [1..10]
++ map (\i -> po [cr PIPE,BANGSTICK i] $ bangStick (i+1)) [1..8]
++ map (\i -> po [REVOLVERX i,cr CAN] $ revolverX (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]
++ [ po (_iyBase (_itType it):mtype) $ it & itType . iyModules . ix modtype .~ m
@@ -102,6 +102,7 @@ itemCombinations =
p = (,)
po xs it = (map o xs,it)
o = (1,)
cr = CRAFT
moduleCombinations :: [( ModuleSlot, [Item], [([ItemBaseType],ItemModuleType)] )]
moduleCombinations =
@@ -111,8 +112,8 @@ moduleCombinations =
,burstRifle
,fastBurstRifle
]
, [amod [DRUM,HARDWARE] DRUMMAG
,amod [MOTOR,HARDWARE] BELTMAG
, [amod [cr DRUM,cr HARDWARE] DRUMMAG
,amod [cr MOTOR,cr HARDWARE] BELTMAG
]
)
, ( ModAutoMag
@@ -120,56 +121,57 @@ moduleCombinations =
,autoPistol
,smg
]
, [amod [MAGNET,HARDWARE] MAGNETMAG
, [amod [cr MAGNET,cr HARDWARE] MAGNETMAG
]
)
, ( ModBullet
, bulletWeapons
, [amod [INCENDIARYMODULE] INCENDBUL
,amod [BOUNCEMODULE] BOUNCEBUL
,amod [STATICMODULE] STATICBUL
,amod [CONCUSSMODULE] CONCUSBUL
, [amod [cr INCENDIARYMODULE] INCENDBUL
,amod [cr BOUNCEMODULE] BOUNCEBUL
,amod [cr STATICMODULE] STATICBUL
,amod [cr CONCUSSMODULE] CONCUSBUL
]
)
, ( ModTarget
, homingLaunchers ++ bulletWeapons
, [amod [MICROCHIP,CREATURESENSOR] TARGCR
,amod [MICROCHIP,PRISM] TARGLAS
,amod [MICROCHIP,TIN] TARGPOS
, [amod [cr MICROCHIP,cr CREATURESENSOR] TARGCR
,amod [cr MICROCHIP,cr PRISM] TARGLAS
,amod [cr MICROCHIP,cr TIN] TARGPOS
]
)
, ( ModBulletTrajectory
, bulletWeapons
, [amod [MAGNET,MICROCHIP,HARDWARE] MAGNETTRAJ
,amod [MICROCHIP,HARDWARE] FLECHETRAJ
,amod [ANTIMATTER,HARDWARE] BEZIERTRAJ
, [amod [cr MAGNET, cr MICROCHIP,cr HARDWARE] MAGNETTRAJ
,amod [cr MICROCHIP, cr HARDWARE] FLECHETRAJ
,amod [cr ANTIMATTER,cr HARDWARE] BEZIERTRAJ
]
)
, ( ModDualBeam
, [lasGunDual]
, [amod [INCENDIARYMODULE] INCENDLAS
,amod [TRANSFORMER] SPLITLAS
,amod [STATICMODULE] STATICLAS
, [lasDual]
, [amod [cr INCENDIARYMODULE] INCENDLAS
,amod [cr TRANSFORMER] SPLITLAS
,amod [cr STATICMODULE] STATICLAS
]
)
, ( ModTeleport
, teleportableWeapons
, [amod [TELEPORTMODULE,MICROCHIP] WEPTELE
, [amod [cr TELEPORTMODULE,cr MICROCHIP] WEPTELE
]
)
, ( ModLauncherHoming
, homingLaunchers
, [ amod [MICROCHIP,TRANSMITTER] LAUNCHHOME
, [ amod [cr MICROCHIP,cr TRANSMITTER] LAUNCHHOME
]
)
, ( ModBattery
, batteryGuns
, [amod [BATTERY] EXTRABATTERY
, [amod [cr BATTERY] EXTRABATTERY
]
)
]
where
amod = (,)
cr = CRAFT
homingLaunchers :: [Item]
homingLaunchers = launcher : [launcherX i | i <- [2..10]]
@@ -179,12 +181,12 @@ batteryGuns =
[ teslaGun
, sparkGun
, lasGun
, lasGunSway
, lasGunSwing
, lasSway
, lasSwing
] ++
[ lasGunWide i | i <- [1..10]
[ lasWide i | i <- [1..10]
] ++
[ lasGunFocus i | i <- [1..10]]
[ lasFocus i | i <- [1..10]]
teleportableWeapons :: [Item]
teleportableWeapons = bulletWeapons ++ batteryGuns ++ homingLaunchers