Files
loop/src/Dodge/Combine/Combinations.hs
T

217 lines
6.7 KiB
Haskell

{-# LANGUAGE TupleSections #-}
module Dodge.Combine.Combinations where
--import Geometry
import Dodge.Data
--import Dodge.WorldEvent.SpawnParticle
--import Dodge.Particle.HitEffect.ExpireAndDamage
--import Dodge.Particle.Damage
import Dodge.Item.Equipment
import Dodge.Item.Craftable
import Dodge.Item.Weapon
--import Dodge.Combine.Module
--import Dodge.Base
import LensHelp
--import Data.Maybe
itemCombinations :: [([(IcAmount,ItemBaseType)],Item)]
itemCombinations =
[ 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 [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 $ 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 $ 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 $ 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 [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 $ 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 $ 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 $ cr TRANSFORMER,p 2 $ cr CAN] sparkGun
, p [o SPARKGUN,p 2 $ cr PIPE] teslaGun
, p [o $ cr TELEPORTMODULE,p 2 $ cr MICROCHIP] blinkGun
, p [o BLINKER, p 2 $ cr MICROCHIP] unsafeBlinkGun
, po [cr MAGNET,cr TIN] magShield
, p [p 2 $ cr PIPE,o $ cr PLATE,o $ cr MOTOR] powerLegs
, p [p 4 $ cr CAN] plateCraft
, p [p 3 $ cr TIN] plateCraft
, p [p 2 $ cr DRUM] plateCraft
, p [p 2 $ cr PLATE] flatShield
]
++ 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
| (modtype,is,ms) <- moduleCombinations
, it <- is
, (mtype,m) <- ms
]
where
p = (,)
po xs it = (map o xs,it)
o = (1,)
cr = CRAFT
moduleCombinations :: [( ModuleSlot, [Item], [([ItemBaseType],ItemModuleType)] )]
moduleCombinations =
[ ( ModRifleMag
, [repeater
,autoRifle
,burstRifle
,fastBurstRifle
]
, [amod [cr DRUM,cr HARDWARE] DRUMMAG
,amod [cr MOTOR,cr HARDWARE] BELTMAG
]
)
, ( ModAutoMag
, [autoRifle
,autoPistol
,smg
]
, [amod [cr MAGNET,cr HARDWARE] MAGNETMAG
]
)
, ( ModBullet
, bulletWeapons
, [amod [cr INCENDIARYMODULE] INCENDBUL
,amod [cr BOUNCEMODULE] BOUNCEBUL
,amod [cr STATICMODULE] STATICBUL
,amod [cr CONCUSSMODULE] CONCUSBUL
]
)
, ( ModTarget
, homingLaunchers ++ bulletWeapons
, [amod [cr MICROCHIP,cr CREATURESENSOR] TARGCR
,amod [cr MICROCHIP,cr PRISM] TARGLAS
,amod [cr MICROCHIP,cr TIN] TARGPOS
]
)
, ( ModBulletTrajectory
, bulletWeapons
, [amod [cr MAGNET, cr MICROCHIP,cr HARDWARE] MAGNETTRAJ
,amod [cr MICROCHIP, cr HARDWARE] FLECHETRAJ
,amod [cr ANTIMATTER,cr HARDWARE] BEZIERTRAJ
]
)
, ( ModDualBeam
, [lasDual]
, [amod [cr INCENDIARYMODULE] INCENDLAS
,amod [cr TRANSFORMER] SPLITLAS
,amod [cr STATICMODULE] STATICLAS
]
)
, ( ModTeleport
, teleportableWeapons
, [amod [cr TELEPORTMODULE,cr MICROCHIP] WEPTELE
]
)
, ( ModLauncherHoming
, homingLaunchers
, [ amod [cr MICROCHIP,cr TRANSMITTER] LAUNCHHOME
]
)
, ( ModBattery
, batteryGuns
, [amod [cr BATTERY] EXTRABATTERY
]
)
]
where
amod = (,)
cr = CRAFT
homingLaunchers :: [Item]
homingLaunchers = launcher : [launcherX i | i <- [2..10]]
batteryGuns :: [Item]
batteryGuns =
[ teslaGun
, sparkGun
, lasGun
, lasSway
, lasSwing
] ++
[ lasWide i | i <- [1..10]
] ++
[ lasFocus i | i <- [1..10]]
teleportableWeapons :: [Item]
teleportableWeapons = bulletWeapons ++ batteryGuns ++ homingLaunchers
bulletWeapons :: [Item]
bulletWeapons = [bangStick i | i <- [1..9] ]
++ [bangCaneX i | i <- [1..6] ]
++ [revolverX i | i <- [1..5] ]
++ [miniGunX i | i <- [3..16] ]
++ [bangCane
,pistol
,autoPistol
,smg
,machinePistol
,revolver
,rifle
,repeater
,autoRifle
,burstRifle
,fastBurstRifle
,completeBurstRifle
,bangCone
,blunderbuss
,bigBlunderbuss
,biggerBlunderbuss
,biggestBlunderbuss
]