Add generic item placement rooms

This commit is contained in:
2022-03-03 22:13:15 +00:00
parent fd622b4b80
commit 2a3c001a53
8 changed files with 64 additions and 56 deletions
+20 -2
View File
@@ -5,6 +5,7 @@ import Dodge.LevelGen.Data
import Dodge.Room
import Dodge.RandomHelp
import Dodge.Creature
import Dodge.Item.Craftable
--import Dodge.Item.Equipment
import System.Random
@@ -15,16 +16,33 @@ import Control.Monad.State
lockRoomKeyItems :: RandomGen g => [ (Int -> State g (SubCompTree Room) , State g CombineType ) ]
lockRoomKeyItems =
[(lasCenSensEdge, takeOne [LAUNCHER] )
[(lasCenSensEdge, takeOne [LAUNCHER,LASGUN,SPARKGUN] )
,(const slowDoorRoomRunPast, return MINIGUN)
]
itemRooms :: RandomGen g => [(CombineType, State g (SubCompTree Room))]
itemRooms =
[ (LAUNCHER , corridorBoss launcherCrit )
[ (LAUNCHER , join $ takeOne
[corridorBoss launcherCrit
,roomsContaining $ map makeTypeCraft [TUBE,TUBE,HARDWARE]
]
)
, (MINIGUN , join $ takeOne [roomMiniIntro, minigunFakeout] )
, (LASGUN , join $ takeOne
[roomsContaining $ map makeTypeCraft [PRISM,PIPE,PIPE,HARDWARE]
]
)
, (SPARKGUN , join $ takeOne
[roomsContaining $ map makeTypeCraft [TRANSFORMER,CAN,CAN]
]
)
]
roomsContaining :: RandomGen g => [Item] -> State g (SubCompTree Room)
roomsContaining its = do
endroom <- randomFourCornerRoom its
return $ treeFromPost [] $ PassDown endroom
corridorBoss :: RandomGen g => Creature -> State g (SubCompTree Room)
corridorBoss cr = do
endroom <- bossRoom cr