Add generic item placement rooms
This commit is contained in:
+20
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user