Add rooms, placements and room positions

This commit is contained in:
2022-03-08 22:57:58 +00:00
parent 2e1c7f2687
commit ff6064a3b6
14 changed files with 315 additions and 138 deletions
+29 -9
View File
@@ -24,32 +24,52 @@ itemRooms :: RandomGen g => [(CombineType, State g (SubCompTree Room))]
itemRooms =
[ (LAUNCHER , join $ takeOne
[corridorBoss launcherCrit
,roomsContaining $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
, rc $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
]
)
, (MINIGUN , join $ takeOne [roomMiniIntro, minigunFakeout] )
, (LASGUN , join $ takeOne
[roomsContaining $ map makeTypeCraft [PRISM,PIPE,PIPE,HARDWARE]
[rc $ map makeTypeCraft [PRISM,PIPE,PIPE,HARDWARE]
]
)
, (SPARKGUN , join $ takeOne
[roomsContaining $ map makeTypeCraft [TRANSFORMER,CAN,CAN]
[rc $ map makeTypeCraft [TRANSFORMER,CAN,CAN]
]
)
, (FLATSHIELD , join $ takeOne
[roomsContaining $ map makeTypeCraft [PLATE,PLATE]
,roomsContaining $ map makeTypeCraft [DRUM,DRUM,PLATE]
[rc $ map makeTypeCraft [PLATE,PLATE]
,rc $ map makeTypeCraft [DRUM,DRUM,PLATE]
]
)
, (SNIPERRIFLE , join $ takeOne
[roomsContaining [sniperRifle]
[rc [sniperRifle]
]
)
]
where
rc its = do
sc <- someCrits
roomsContaining sc its
roomsContaining :: RandomGen g => [Item] -> State g (SubCompTree Room)
roomsContaining its = do
endroom <- randomFourCornerRoom its
someCrits :: RandomGen g => State g [Creature]
someCrits = do
nCrits <- state $ randomR (1,3)
fmap (take nCrits) . shuffle $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
++ replicate 20 chaseCrit
--addcrits :: RandomGen g => [Item] -> State g (SubCompTree Room)
--addcrits its = do
-- nCrits <- state $ randomR (1,3)
-- crits <- takeN nCrits <=< shuffle $ fmap PutCrit $ [spreadGunCrit,pistolCrit,autoCrit,armourChaseCrit]
-- return $ roomsContaining crits its
roomsContaining :: RandomGen g => [Creature] -> [Item] -> State g (SubCompTree Room)
roomsContaining crs its = do
endroom <- join $ takeOne
[ randomFourCornerRoomCrsIts crs its
, tanksRoom crs its
]
return $ treeFromPost [] $ PassDown endroom
corridorBoss :: RandomGen g => Creature -> State g (SubCompTree Room)