Refactor, try to limit dependencies
This commit is contained in:
+116
-85
@@ -1,93 +1,125 @@
|
||||
--{-# LANGUAGE TupleSections #-}
|
||||
module Dodge.LockAndKey where
|
||||
|
||||
import Dodge.Cleat
|
||||
import Dodge.Data
|
||||
import Dodge.Tree
|
||||
--import Dodge.LevelGen.Data
|
||||
import Dodge.Room
|
||||
import RandomHelp
|
||||
import Dodge.Creature
|
||||
import Dodge.Item.Craftable
|
||||
import Dodge.Item.Weapon.BulletGun.Rod
|
||||
import Dodge.Data.GenWorld
|
||||
import Dodge.Item
|
||||
--import LensHelp
|
||||
--import Dodge.Item.Equipment
|
||||
import Dodge.Room
|
||||
import Dodge.Tree
|
||||
import RandomHelp
|
||||
|
||||
bossKeyItems :: RandomGen g => [(State g (Tree Room), State g ItemBaseType)]
|
||||
bossKeyItems = [(return . cleatOnward <$> bossRoom autoCrit, takeOne [HELD PISTOL])]
|
||||
|
||||
bossKeyItems :: RandomGen g => [ (State g (Tree Room), State g ItemBaseType) ]
|
||||
bossKeyItems = [(return . cleatOnward <$> bossRoom autoCrit, takeOne [HELD PISTOL]) ]
|
||||
|
||||
lockRoomMultiItems :: RandomGen g => [ ( State g (MetaTree Room String) , State g [ItemBaseType] ) ]
|
||||
lockRoomMultiItems =
|
||||
[ (blinkAcrossChallenge, takeOne [[LEFT BLINKERUNSAFE,EQUIP $ AUTODETECTOR WALLDETECTOR]
|
||||
,[LEFT BLINKERUNSAFE,HELD $ HELDDETECTOR WALLDETECTOR]
|
||||
]
|
||||
lockRoomMultiItems :: RandomGen g => [(State g (MetaTree Room String), State g [ItemBaseType])]
|
||||
lockRoomMultiItems =
|
||||
[
|
||||
( blinkAcrossChallenge
|
||||
, takeOne
|
||||
[ [LEFT BLINKERUNSAFE, EQUIP $ AUTODETECTOR WALLDETECTOR]
|
||||
, [LEFT BLINKERUNSAFE, HELD $ HELDDETECTOR WALLDETECTOR]
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
lockRoomKeyItems :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
|
||||
lockRoomKeyItems =
|
||||
[(lasCenSensEdge, takeOne [HELD LAUNCHER,HELD LASGUN,HELD SPARKGUN,HELD FLATSHIELD,HELD FORCEFIELDGUN] )
|
||||
,(sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE,HELD SPARKGUN] )
|
||||
,(sensorRoomRunPast FLAMING, takeOne [HELD FLAMESPITTER, CRAFT INCENDIARYMODULE] )
|
||||
,(sensorRoomRunPast LASERING, return $ HELD LASGUN )
|
||||
,(const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
|
||||
,(const longRoomRunPast, takeOne [HELD SNIPERRIFLE,HELD FLATSHIELD])
|
||||
,(const glassLessonRunPast, takeOne [HELD LASGUN])
|
||||
,(const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD,HELD FORCEFIELDGUN])
|
||||
,(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))
|
||||
lockRoomKeyItems :: RandomGen g => [(Int -> State g (MetaTree Room String), State g ItemBaseType)]
|
||||
lockRoomKeyItems =
|
||||
[ (lasCenSensEdge, takeOne [HELD LAUNCHER, HELD LASGUN, HELD SPARKGUN, HELD FLATSHIELD, HELD FORCEFIELDGUN])
|
||||
, (sensorRoomRunPast ELECTRICAL, takeOne [CRAFT STATICMODULE, HELD SPARKGUN])
|
||||
, (sensorRoomRunPast FLAMING, takeOne [HELD FLAMESPITTER, CRAFT INCENDIARYMODULE])
|
||||
, (sensorRoomRunPast LASERING, return $ HELD LASGUN)
|
||||
, (const slowDoorRoomRunPast, return $ HELD (MINIGUNX 3))
|
||||
, (const longRoomRunPast, takeOne [HELD SNIPERRIFLE, HELD FLATSHIELD])
|
||||
, (const glassLessonRunPast, takeOne [HELD LASGUN])
|
||||
, (const $ lasTunnelRunPast 400, takeOne [HELD FLATSHIELD, HELD FORCEFIELDGUN])
|
||||
, (keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))
|
||||
]
|
||||
keyCardRunPastRand :: RandomGen g => [ (Int -> State g (MetaTree Room String) , State g ItemBaseType ) ]
|
||||
keyCardRunPastRand = [(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0)) ]
|
||||
|
||||
keyCardRunPastRand :: RandomGen g => [(Int -> State g (MetaTree Room String), State g ItemBaseType)]
|
||||
keyCardRunPastRand = [(keyCardRoomRunPast 0, return (HELD $ KEYCARD 0))]
|
||||
|
||||
itemRooms :: RandomGen g => [(ItemBaseType, State g (MetaTree Room String))]
|
||||
itemRooms =
|
||||
[ (HELD LAUNCHER , join $ takeOne
|
||||
[corridorBoss launcherCrit
|
||||
, rc $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
|
||||
]
|
||||
)
|
||||
, (HELD (MINIGUNX 3) , join $ takeOne
|
||||
[roomMiniIntro
|
||||
, rc $ map makeTypeCraft ([MOTOR,HARDWARE] ++ replicate 6 PIPE)
|
||||
] )
|
||||
, (HELD LASGUN , join $ takeOne
|
||||
[rc $ map makeTypeCraft [PRISM,TRANSFORMER,PIPE]
|
||||
]
|
||||
)
|
||||
, (HELD SPARKGUN , join $ takeOne
|
||||
[rc $ map makeTypeCraft [TRANSFORMER,CAN,CAN]
|
||||
]
|
||||
)
|
||||
, (HELD FLAMESPITTER , join $ takeOne
|
||||
[rc $ map makeTypeCraft [LIGHTER,PUMP,CAN]
|
||||
]
|
||||
)
|
||||
, (HELD FLATSHIELD , join $ takeOne
|
||||
[rc $ map makeTypeCraft [PLATE,PLATE]
|
||||
,rc $ map makeTypeCraft [DRUM,DRUM,PLATE]
|
||||
]
|
||||
)
|
||||
, (HELD SNIPERRIFLE , join $ takeOne
|
||||
[rc [sniperRifle]
|
||||
]
|
||||
)
|
||||
, (HELD FORCEFIELDGUN , join $ takeOne
|
||||
[rc [forceFieldGun]
|
||||
]
|
||||
)
|
||||
, (HELD $ KEYCARD 0 , join $ takeOne
|
||||
[rc [keyCard 0]
|
||||
]
|
||||
)
|
||||
, (CRAFT INCENDIARYMODULE , join $ takeOne
|
||||
[rc [incendiaryModule]
|
||||
]
|
||||
)
|
||||
, (CRAFT STATICMODULE , join $ takeOne
|
||||
[rc [makeTypeCraft STATICMODULE]
|
||||
]
|
||||
)
|
||||
itemRooms =
|
||||
[
|
||||
( HELD LAUNCHER
|
||||
, join $
|
||||
takeOne
|
||||
[ corridorBoss launcherCrit
|
||||
, rc $ map makeTypeCraft [TUBE, TUBE, HARDWARE]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD (MINIGUNX 3)
|
||||
, join $
|
||||
takeOne
|
||||
[ roomMiniIntro
|
||||
, rc $ map makeTypeCraft ([MOTOR, HARDWARE] ++ replicate 6 PIPE)
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD LASGUN
|
||||
, join $
|
||||
takeOne
|
||||
[ rc $ map makeTypeCraft [PRISM, TRANSFORMER, PIPE]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD SPARKGUN
|
||||
, join $
|
||||
takeOne
|
||||
[ rc $ map makeTypeCraft [TRANSFORMER, CAN, CAN]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD FLAMESPITTER
|
||||
, join $
|
||||
takeOne
|
||||
[ rc $ map makeTypeCraft [LIGHTER, PUMP, CAN]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD FLATSHIELD
|
||||
, join $
|
||||
takeOne
|
||||
[ rc $ map makeTypeCraft [PLATE, PLATE]
|
||||
, rc $ map makeTypeCraft [DRUM, DRUM, PLATE]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD SNIPERRIFLE
|
||||
, join $
|
||||
takeOne
|
||||
[ rc [sniperRifle]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD FORCEFIELDGUN
|
||||
, join $
|
||||
takeOne
|
||||
[ rc [forceFieldGun]
|
||||
]
|
||||
)
|
||||
,
|
||||
( HELD $ KEYCARD 0
|
||||
, join $
|
||||
takeOne
|
||||
[ rc [keyCard 0]
|
||||
]
|
||||
)
|
||||
,
|
||||
( CRAFT INCENDIARYMODULE
|
||||
, join $
|
||||
takeOne
|
||||
[ rc [incendiaryModule]
|
||||
]
|
||||
)
|
||||
,
|
||||
( CRAFT STATICMODULE
|
||||
, join $
|
||||
takeOne
|
||||
[ rc [makeTypeCraft STATICMODULE]
|
||||
]
|
||||
)
|
||||
]
|
||||
where
|
||||
rc its = do
|
||||
@@ -96,10 +128,10 @@ itemRooms =
|
||||
|
||||
someCrits :: RandomGen g => State g [Creature]
|
||||
someCrits = do
|
||||
nCrits <- state $ randomR (1,3)
|
||||
fmap (take nCrits) . shuffle $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
|
||||
++ replicate 20 chaseCrit
|
||||
|
||||
nCrits <- state $ randomR (1, 3)
|
||||
fmap (take nCrits) . shuffle $
|
||||
[spreadGunCrit, pistolCrit, autoCrit, armourChaseCrit]
|
||||
++ replicate 20 chaseCrit
|
||||
|
||||
--addcrits :: RandomGen g => [Item] -> State g (Tree Room)
|
||||
--addcrits its = do
|
||||
@@ -107,9 +139,8 @@ someCrits = do
|
||||
-- crits <- takeN nCrits <=< shuffle $ fmap PutCrit $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
|
||||
-- return $ roomsContaining crits its
|
||||
|
||||
|
||||
corridorBoss :: RandomGen g => Creature -> State g (MetaTree Room String)
|
||||
corridorBoss cr = do
|
||||
endroom <- bossRoom cr
|
||||
rToOnward ("corridorBoss-"++_crName cr)
|
||||
$ treeFromPost (replicate 5 corridor) endroom
|
||||
rToOnward ("corridorBoss-" ++ _crName cr) $
|
||||
treeFromPost (replicate 5 corridor) endroom
|
||||
|
||||
Reference in New Issue
Block a user