module Dodge.LockAndKey where import Dodge.Data import Dodge.Tree import Dodge.LevelGen.Data import Dodge.Room import Dodge.RandomHelp import Dodge.Creature --import Dodge.Item.Equipment import System.Random import Control.Monad.State -- (const $ return $ chainUses $ map singleUseAll [door,lasTunnel,door] , return FlatShield ) -- , lockRoomKeyItems :: RandomGen g => [ (Int -> State g (SubCompTree Room) , State g CombineType ) ] lockRoomKeyItems = [(lasCenSensEdge, takeOne [LAUNCHER] ) ,(const slowDoorRoomRunPast, return MINIGUN) ] itemRooms :: RandomGen g => [(CombineType, State g (SubCompTree Room))] itemRooms = [ (LAUNCHER , corridorBoss launcherCrit ) , (MINIGUN , join $ takeOne [roomMiniIntro, minigunFakeout] ) ] corridorBoss :: RandomGen g => Creature -> State g (SubCompTree Room) corridorBoss cr = do endroom <- bossRoom cr return $ treeFromPost (replicate 5 $ PassDown corridor) (PassDown endroom)