import json

data = {}  
data['rooms'] = []  
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins with a gong',
    'flavor': 'The smell of pungent rotting vegetation overwhelms your senses as you step into a room thick with moss. \
    Across the room, a large, gleaming gong hangs on a stand.  Next to it a goblin grins wickedly and smacks it with a \
    club.  The sound of the gong reverberates throughout the room and down the halls.  With a snarl, the remaining \
    goblins grab weapons and turn to attack.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 1, 'Goblin Warrior': 1},
    'minXP': 270,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'Generate a squad of three goblin warriors who arrive two rounds after each round the gong is sounded.'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins with a horn',
    'flavor': 'Footsteps echo eerily as you enter the room.  The stone is well worn, but the hallway has been littered \
    with bits of bones, stones, and small bits of debris.  As you enter this room, a goblin looks up hurriedly and \
    brings a dingy horn to its lips.  The horn makes a horrible sound, but it’s loud and it’s clear.  The remaining \
    goblins in the room take up arms and turn to attack.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 2, 'Giant Centipede': 2},
    'minXP': 600,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'Goblins blow a horn summoning swarms of centipedes that move in to eat the intruders alive.'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins who send a runner',
    'flavor': 'The passageway you\'ve been following widens into a small room, full of large pieces of rotting lumber.  \
    The lumber causes the light to bounce at odd angles, and within the debris, you can hear the whispers of rodents \
    scurrying out of the way.  A goblin head pops up, and on seeing you shouts a command.   On the far side of the \
    room, a shadow quickly detached and runs towards the exit.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 1, 'Goblin Warrior': 1},
    'minXP': 270,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'If the runner gets away, send in reiforcements in three rounds.  Use the initial goblin monsters as the \
                reinforcements (Double the monsters).'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Slime Crawlers',
    'flavor': 'Slime Crawlers kept in the locked covered pit.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2},
    'minXP': 600,
    'monsters': 'Vermin',
    'notes': 'When the characters look to open the pit, they release these fiends.'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Rust Monster',
    'flavor': 'Rust Monster isn’t able to get out of the trench where the goblins lured it to.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'C': 1},
    'seedMonster': {'Rust Monster': 1},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'Rust Monster isn\'t able to get out of the trench where the goblins lured it to.  They had meant to starve\
                it, but enjoy too much pushing in captives with cheap weapons and watching their fear when the Rust \
                Monster eats the weapon and then turns on the captive.'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblin slave pits',
    'flavor': 'When the goblins see the players, they move to kill the slaves.',
    'type': 'Setback',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Warrior': 3, 'Goblin Slave': 6},
    'minXP': 600,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'Free the slaves before they are killed off.  Every three rounds they kill off another slave.'
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Goblins behind a portcullis with bows',
    'flavor': 'Goblin guards shoot at the characters who try to raise the portcullis.',
    'type': 'Entry',
    'map': [[-1, 0, -1, 0, 99, 99, 99, 99, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [101, 99, 102, 99, 99, 99, 99, 99, 103, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 104, 0, 0, 0],
            [-1, 0, 0, 0, 99, 99, 104, 99, 0, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 4},
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Slide down to the goblins',
    'flavor': 'Floor gets slippery and the characters fall and slide down a ramp into a pit where the goblin guards \
                are ready with bows.',
    'type': 'Entry',
    'map': [[-1, 0, -1, 0, 99, 99, 99, 99, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [99, 101, 101, 105, 99, 99, 99, 99, 103, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, 0, 0, 99, 99, 99, 99, 0, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'B': 1, 'A': 1},
    'seedMonster': {'Goblin Archer': 4},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': '<b>Pit Trap CR1:</b> Type: Mechanical; Perception DC 20; Disable Device DC 20 Trigger location; Reset \
                manual Effect 20-ft.-deep pit (2d6 falling damage); DC 20 Reflex avoids; multiple targets (all targets \
                in a 10-ft.-square area)'
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Goblins in trees with bows guarding entrance',
    'flavor': 'Sniper time.  Maybe the entrance is also locked to keep them out in the open longer',
    'type': 'Entry2',
    'map': [[116, 116, 116, 117, 116, 116, 116, -1, 0, -1, 0, 99, 99,  -1, 0, -1],
            [117, 116, 116, 116, 116, 116, 116, 0, -1, 0, 99, 99, 99,  0, -1, 0],
            [116, 116, 117, 116, 116, 116, 116, 106, 101, 101, 99, 99,  99, 103, 0, 0],
            [116, 116, 116, 116, 116, 116, 116, 0, 0, 0, 99, 99, 99,  0, 0, 0],
            [-1, 116, 116, 116, 116, 116, 116, 0, 0, 99, 99, 99, 99,  0, 0, 0],
            [0, 116, 116, 116, 116, 116, 116, 0, 0, 99, 99, 99, 99,  0, 0, 0],
            [116, 116, 116, 116, 116, 116, 116, 0, 0, 99, 99, 99, 99,  99, 0, 0],
            [116, 116, 116, 117, 116, 116, 116, 0, 0, 0, 99, 99, 99,  99, 0, 0],
            [116, 117, 117, 116, 116, 116, 116, 0, 0, 0, 99, 99, 99,  99, 0, 0],
            [-1, 116, 117, 116, 116, 116, 116, 0, 0, 0, 99, 99, 99,  0, 0, 0],
            [0, -1, 116, 116, 117, -1, 0, -1, 0, 0, 0, 99, 99,  0, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2},
    'seedMonster': {'Goblin Archer': 3},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Giant pet spiders with webs guarding entrance',
    'flavor': 'Lots of spider webs.  Goblin shoot with bows while the spiders try to trip up the melee characters',
    'seedMonster': {'Goblin Archer': 1, 'Giant Spider': 1},
    'type': 'Entry',
    'map': [[-1, 0, -1, 0, 99, 99, 111, 111, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 111, 0, -1, 0],
            [99, 101, 101, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 111, 111, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 111, 111, 99, 99, 99, 0, 0, 0],
            [0, 0, 111, 111, 99, 99, 99, 99, 111, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 111, 111, 0],
            [0, 0, 111, 99, 99, 99, 99, 111, 111, 0, 0],
            [0, 0, 0, 111, 111, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 111, 99, 99, 0, 0, 0],
            [-1, 0, 0, 0, 99, 111, 111, 99, 0, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2},
    'minXP': 600,
    'monsters': 'Vermin',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Goblin guards ready for battle',
    'flavor': 'Goblin guards ready for battle and will engage the intruders.',
    'type': 'Entry',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 3, 'Goblin Rogue': 1},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Goblin guards playing a dare game',
    'flavor': 'Goblins should be guarding but instead they are taking turns daring each other to step into the fire.',
    'type': 'Entry',
    'map': [[0, 101, 101, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, -1, 0, 99, 0],
            [0, -1, 99, 108, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, -1, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 99, 99, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Warrior': 4},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Entry with Pit',
    'flavor': 'Pit filled with something fun.  Hungry rats, centipede swarms, spikes.',
    'type': 'Entry',
    'map': [[-1, 0, -1, 0, 99, 99, 99, 99, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [99, 101, 101, 105, 99, 99, 99, 99, 103, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, 0, 0, 99, 99, 99, 99, 0, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Vermin',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Entry with suspended weighted net',
    'flavor': 'Net drops from the ceiling and makes noise to alert the goblins.',
    'type': 'Entry',
    'map': [[0, 101, 101, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 99, -1, 0, -1, 0],
            [0, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, -1, 0, 99, 0],
            [0, -1, 99, 108, 99, 0, -1, 99, 0],
            [0, -1, 99, 99, 99, -1, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Entry with locked barred door',
    'flavor': 'An obviously locked is in your path',
    'type': 'Entry',
    'map': [[-1, 0, -1, 0, 99, 99, 99, 99, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [99, 99, 106, 99, 99, 99, 99, 99, 103, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 0, 99, 99, 99, 99, 0, 0, 0]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'Door is set so that without a successful rogue check, it makes a lot of noise and the goblins are ready.'
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Entry with wall of heads',
    'flavor': 'One of the heads is actually a goblin watching for intruders.',
    'type': 'Entry',
    'map': [[0, 101, 101, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 99, -1, 0, -1, 0],
            [0, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, -1, 0, 99, 0],
            [0, -1, 99, 108, 99, 0, -1, 99, 0],
            [0, -1, 99, 99, 99, -1, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 3},
    'seedMonster': {'Goblin Barbarian': 1},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Entry to Lair',
    'subHead': 'Entry with invitation to dinner',
    'flavor': 'Goblins eagerly get skewers of meat from fire to offer to their \"guest\", then try to stab them.',
    'type': 'Entry',
    'map': [[0, 101, 101, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 99, -1, 0, -1, 0],
            [0, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, -1, 0, 99, 0],
            [0, -1, 99, 108, 99, 0, -1, 99, 0],
            [0, -1, 99, 99, 99, -1, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'D': 1, 'A': 1},
    'seedMonster': {'Goblin Warrior': 4},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King is bored',
    'flavor': 'Goblin king is sitting bored on his \"throne\" while goblins tries out new songs to impress him.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'seedMonster': {'Goblin Warrior': 6},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King in midst of feasting',
    'flavor': 'Goblin king is surrounded by his loyal subjects all having a feast of giant insects.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King ready to receive',
    'flavor': 'Goblin king is on his throne and assumes the party is the next royal appointment.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King sleeping',
    'flavor': 'Goblin king is sleeping surrounded by goblin females.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1000,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King prepared for battle',
    'flavor': 'Goblin King takes shelter behind his throne and coordinates his troops.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King settling an argument',
    'flavor': 'Goblin King is seated on his throne and is listening to two goblins argue over a large beetle.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King presiding over sacrifice',
    'flavor': 'Goblin King is watching as a slave is brought in for a sacrifice.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6, 'Goblin Slave': 1},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King is praying to dark gods',
    'flavor': 'Goblin King is in the middle of praying to a dark and forbidding god.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 4, 'Goblin Cleric': 1},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King is being wooed by females',
    'flavor': 'Goblin King is seated on his throne looking proud of himself while five females all try to ply him with \
                compliments and by showing him shiny rocks',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 1200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King demands tribute',
    'flavor': 'The Goblin King is on his throne, sees the PCs and demands from them a tribute of \"many shiny coins!\"',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 6, 'Goblin Lieutenant': 1},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Throne Room',
    'subHead': 'Goblin King watching a play for his amusement',
    'flavor': 'Goblin King is watching some goblins reenact a raid on a human farm.  \
            The play seems quite over dramatic.',
    'type': 'King',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 2},
    'treasureRoll': {'H': 1, 'A': 3, 'D': 1},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': '<ul><li>The throne room is filled with furs, laid out on the ground.</li><li>The goblins performing the \
            play are decorated with a variety of shoddily made costumes.</li><li>Any goblins spectating will initially \
            think the player entrance is part of the performance.</li><li>Parts of an unfinished goblin meal of lizards\
            and insects is nearby the goblin king.</li><li>The goblin king sits on a throne that has a chest as a \
            base.</li></ul><p>The initial reaction to the players will be one of confusion.  The goblins will expect \
            that this is part of the play.  Only when the fighting starts will they turn their attention to combat.</p>\
            <p>When combat starts, goblins who do damage will yell out for their king to notice and tell them that \
            they did a good job.  Goblins here are fanatical and will fight to the death.</p>'
})
data['rooms'].append({  
    'titleText': 'Sorting Room',
    'subHead': 'Goblin Moneychanger',
    'flavor': 'This goblin is charged with being able to appraise and give value to the variety of things that goblins\
            think are valuable.  He will be seated on a mat while the other goblins are lined up with their things \
            like strings, colored rocks, and shiny things.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 110, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 110, 110, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2, 'D': 1},
    'seedMonster': {'Goblin Lieutenant': 1, 'Goblin Warrior': 6},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': '<ul><li>This room is littered with piles of broken wood and metal objects.</li><li>There are goblins \
            sitting on mats watching another goblin sort through the pieces looking for the bits he wants.</li>\
            <li>Some goblins are sitting with their backs to the party.</li><li>The largest goblin is treated with \
            respect from the others.</li><li>Bits of metal and wood piled into hides for a goblin to sort for things \
            that he thinks are worth saving.</li></ul><p>The goblins will sprint up and attack the party.  They fight \
            until they have taken over half damage, at that point fleeing out of whichever entry looks more \
            accessible.  If cornered however, they will fight to the death.</p><p>While there is a fair quantity of \
            parts here, all of it is worthless except for a small pouch under the goblin boss mat where he has been \
            secretly stashing little bits of chipped gemstones from a piece of ruined jewelry.  (Pouch, 3 chipped gems \
            worth 20gp each.)</p>'
})
data['rooms'].append({  
    'titleText': 'Zoo',
    'subHead': 'Goblin Zoo',
    'flavor': 'Goblins keep a variety of animals and insects penned up in this \"zoo\".  Freeing some animals will help\
                the characters, others will turn on whomever sets them free.',
    'type': 'Basic',
    'minX': 12,
    'maxX': 26,
    'minY': 14,
    'maxY': 16,
    'chanceToStartAlive': .95,
    'treasureRoll': {'D': 1},
    'seedMonster': {'Giant Spider': 1, 'Giant Centipede': 1, 'Rat Swarm': 1},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Slave Pit',
    'subHead': 'Goblin Slave Pit',
    'flavor': 'Goblins keep a variety of slaves here working on mining out more minerals for the tribe.  This is where \
            the goblins keep the slaves when they aren\'t working.',
    'type': 'Basic',
    'minX': 18,
    'maxX': 25,
    'minY': 18,
    'maxY': 36,
    'chanceToStartAlive': .95,
    'treasureRoll': {'D': 1},
    'seedMonster': {'Goblin Slave': 8, 'Goblin Captain': 1, 'Goblin Warrior': 2},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Common room',
    'subHead': 'Goblin Common room',
    'flavor': 'Goblin common room.  This is where the goblin females, young and males who aren\'t on guard duty \
                remain.',
    'type': 'Basic',
    'minX': 12,
    'maxX': 17,
    'minY': 14,
    'maxY': 16,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Commoner': 12},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Food Storage',
    'subHead': 'Goblin Food storage',
    'flavor': 'Goblin foodstuffs aren\'t that interesting for humans.  Maybe something good for goblins might be worth \
                a little something.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 8,
    'maxY': 12,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1, 'D': 1},
    'maxXP': 0,
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins playing cards',
    'flavor': 'Goblins playing cards on a rickety table.  They are totally engrossed in their card game and all of \
                them appear to be cheating.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 110, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 110, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Warrior': 4},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins returning from a raid',
    'flavor': 'Goblins loaded with treasure after a successful raid on a human settlement or caravan.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 7,
    'maxY': 11,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1, 'B': 1},
    'seedMonster': {'Goblin Archer': 1, 'Goblin Warrior': 4, 'Goblin Captain': 1},
    'minXP': 600,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins arguing over a meal',
    'flavor': 'Goblins trying to decide who gets to eat the chicken that they have put in the pot and are cooking.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 108, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Commoner': 3, 'Goblin Warrior': 2},
    'treasureRoll': {'A': 1, 'B': 1},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins trying to set each other on fire',
    'flavor': 'Something has gone really wrong for these goblins and there is one actively trying to splash oil on \
                his friends with one hand, while he waves a torch in the other.  As the characters arrive, he will \
                trip and fall and light himself on fire.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 108, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'seedMonster': {'Goblin Warrior': 5},
    'treasureRoll': {'B': 1},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins ready for battle',
    'flavor': 'Goblins have heard the party coming and are behind cover and ready to let loose with arrows.',
    'type': 'Basic',
    'minX': 12,
    'maxX': 15,
    'minY': 5,
    'maxY': 9,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 4},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblin shaman whipping up his followers',
    'flavor': 'Goblin preacher whipping up his followers to follow some dark goblin god and kill all long shanks.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 3, 'D': 1},
    'seedMonster': {'Goblin Warrior': 2, 'Goblin Cleric': 1, 'Goblin Rogue': 1},
    'minXP': 600,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Cooking Room',
    'subHead': 'Goblins cooking a meal',
    'flavor': 'Goblins all with sticks over a fire.  Most are cooking lizards, one has an apple.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 108, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Warrior': 5},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Ogre Room',
    'subHead': 'Goblins keep an Ogre',
    'flavor': 'This tribe of goblins keeps an ogre happy enough to lair and help with any unwanted guests..',
    'type': 'Basic',
    'minX': 12,
    'maxX': 15,
    'minY': 9,
    'maxY': 13,
    'chanceToStartAlive': .95,
    'treasureRoll': {'H': 1, 'A': 3},
    'seedMonster': {'Ogre': 1},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'The ogre is lying on a pile of parasite ridden furs.  He will look over and yawn at the PCs if he \
                notices them.'
})
data['rooms'].append({  
    'titleText': 'Cooking Room',
    'subHead': 'Three dead poisoned goblins',
    'flavor': 'Three poisoned goblins, something in the pot smells delicious',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 108, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Vermin',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins playing a game',
    'flavor': 'Goblins playing a weird game that looks like duck, duck, grey duck, but with a club to touch the \
                players heads.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Commoner': 4, 'Goblin Warrior': 3},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins sleeping',
    'flavor': 'Goblins sleeping on guard duty.  One of them is snoring.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 6,
    'maxY': 9,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 3},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Shrine',
    'subHead': 'Goblin shrine',
    'flavor': 'Goblin cleric is at a small shrine, saying prayers.  Will attack the party when he sees them.',
    'type': 'Basic',
    'map': [[-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 99, 99, 113, 99, 112, 99, 99, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 6,
    'maxY': 9,
    'chanceToStartAlive': .95,
    'treasureRoll': {'D': 1, 'A': 1},
    'seedMonster': {'Goblin Cleric': 1},
    'minXP': 400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Shrine',
    'subHead': 'Goblin shrine (abandoned)',
    'flavor': 'Goblin shrine to a dark god, there is no one here.',
    'type': 'Basic',
    'map': [[-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 99, 99, 113, 99, 112, 99, 99, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Temple',
    'subHead': 'Goblin temple',
    'flavor': 'Goblin cleric and acolytes are here, preparing for a sacrifice to a dark goblin god.',
    'type': 'Basic',
    'map': [[-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 99, 99, 113, 99, 112, 99, 99, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2, 'D': 1},
    'seedMonster': {'Goblin Cleric': 3},
    'minXP': 800,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Temple',
    'subHead': 'Goblin temple (abandoned)',
    'flavor': 'Large room.  Temple is empty.',
    'type': 'Vermin',
    'map': [[-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1],
            [0, -1, 0, 99, 99, 99, 99, 99, 0, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 99, 99, 113, 99, 112, 99, 99, 0, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, 0, 99, 99, 99, 99, 99, 99, 99, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [0, 0, 0, 99, 99, 99, 99, 99, 0, 0, 0],
            [-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins attacking another creature',
    'flavor': 'Goblins have cornered a large bear and are busy trying to take it down.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 8,
    'maxY': 12,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2},
    'seedMonster': {'Goblin Warrior': 3, 'Grizzly Bear': 1},
    'minXP': 1400,
    'monsters': 'Humanoid (goblinoid)',
    'notes': '<ul><li>There are a fair number of dead goblins in here.</li><li>The bear looks wounded (half \
                hitpoints)</li></ul>'
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins behind cover raining arrows',
    'flavor': 'Goblins have cover behind turned over tables, and are prepared to rain arrows down on the party.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 6,
    'maxY': 9,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Archer': 4},
    'minXP': 500,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Goblins over a pit throwing javelins',
    'flavor': 'From the far side of a pit, goblins are throwing javelins at the party',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 105, 105, 105, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, 105, 105, 105, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 0, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'seedMonster': {'Goblin Javelin': 4},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Mushroom Room',
    'subHead': 'Mushroom Room',
    'flavor': 'This is a food source from the goblins, a series of small rooms with moisture dripping from the \
                ceiling.  All along the floor there are small edible (for goblins anyway) mushrooms growing.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 115, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 115, 115, 99, 99, -1, 0, 115, 99],
            [0, 99, 115, 99, 99, 99, 115, 99, 99, 115, -1, 99, 99],
            [0, -1, 99, 99, 99, 99, 100, 99, 99, 115, 99, 99, 0],
            [0, -1, 99, 99, 99, 115, 99, 99, 99, 99, 115, 99, 0],
            [0, -1, 0, 99, 99, -1, 115, 115, 99, 115, 115, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Animal',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Mushroom Room',
    'subHead': 'Mushroom Room',
    'flavor': 'This is a food source for the goblins, a small room with some stagnant water in the corner.  Mushrooms \
                grow freely along the dirt floor towards the water.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 115, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 115, 115, 99, 99, -1, 0, 115, 99],
            [0, 99, 115, 99, 99, 99, 115, 99, 99, 115, -1, 99, 99],
            [0, -1, 99, 99, 99, -1, 100, 100, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 100, 99, 99, 115, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 115, 99, 99, 99, 99, 115, 99, 0],
            [0, -1, 0, 99, 99, -1, 115, 115, 99, 115, 115, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 100,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Mushroom Room',
    'subHead': 'Mushroom Room',
    'flavor': 'High ceiling with a drops of water falling irregularly from the ceiling and down the walls.  Giant \
                mushroom grow amongst the smaller edible (for goblins anyway) mushrooms.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 115, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 115, 115, 99, 99, -1, 0, 115, 99],
            [0, 99, 115, 99, 99, 99, 115, 99, 99, 115, -1, 99, 99],
            [0, -1, 99, 99, 99, -1, 100, 100, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 100, 99, 99, 115, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 115, 99, 99, 99, 99, 115, 99, 0],
            [0, -1, 0, 99, 99, -1, 115, 115, 99, 115, 115, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Pig Pit',
    'subHead': 'Goblin pig pit',
    'flavor': 'Goblins keep some pigs in these pits.  They are entertained by how they will eat just about anything.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 3},
    'minXP': 300,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Chicken Pen',
    'subHead': 'Goblin chicken pen',
    'flavor': 'Goblins keep chicken in these pens.  They like the eggs',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Lizard Pen',
    'subHead': 'Goblin lizard pen',
    'flavor': 'Goblins keep lizards in these pens.  They are foodstuffs and pets.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Goblin Insect Pen',
    'subHead': 'Goblin insect pen',
    'flavor': 'Goblins keep insects in these pens.  They are foodstuffs.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Guard Room',
    'subHead': 'Abandoned Battle',
    'flavor': 'Broken weapons and armor are scattered around the floor here.  It\'s obvious that this was where a \
                battle had been fought.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 2},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Underground Creek',
    'subHead': 'Underground creek',
    'flavor': 'Water source.  This is where a small underground creek runs through the passageway.',
    'type': 'Basic',
    'map': [[0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, -1, 0],
            [100, 99, 99, 99, 99, -1, 0, 99, 99],
            [100, 100, 100, 100, 100, 100, 100, 99, 99],
            [0, -1, 99, 99, 99, -1, 100, 100, 0],
            [0, -1, 99, 99, 99, 99, 0, 100, 100],
            [0, -1, 0, 99, 99, -1, 0, -1, 0],
            [0, -1, 0, -1, 99, 99, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Underground Well Room',
    'subHead': 'Underground well room',
    'flavor': 'Water source.  Small room with a primitive well and a couple of leaky buckets.',
    'type': 'Basic',
    'map': [[0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, -1, 0, 99, 99],
            [0, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99],
            [0, -1, 99, 99, 99, -1, 99, 114, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, -1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0],
            [0, -1, 0, 99, 99, -1, 0, 99, 99, 99, 99, -1, 0],
            [0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
data['rooms'].append({  
    'titleText': 'Underground Small Lake',
    'subHead': 'Underground small lake',
    'flavor': 'This small underground lake full of stagnant water and small sightless fish.',
    'type': 'Basic',
    'map': [[-1,  0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0, -1],
            [-1,  0,  -1,   0,  99,  99,  99,  99,  99,   0,  -1,   0,  -1,   0, -1],
            [0,  0,  -1,   0,  99,  99,  99,  99,  99,  99,  99,  99,  -1,   0, -1],
            [-1,  0,  99,  99, 100, 100, 100,  99, 100, 100, 100,  99,  99,  99, 99],
            [99, 99,  99,  99, 100, 100, 100, 100, 100, 100, 100, 100,  99, 100, -1],
            [99, 99,  99,  99, 100, 100, 100, 100, 100, 100, 100, 100,  99, 99, -1],
            [-1, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,  99, 99, -1],
            [0, 99,  99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1],
            [-1, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, -1],
            [0, 99, 99, 99, 99, 99, 100, 99, 99, 100, 99, 100, 99, 99, -1],
            [-1,  0,  -1,   0,  99,  99,  99,  99,  99,   0,  -1,   0,  -1,   0, -1],
            [-1,  0,  -1,  0,  -1,   0,  -1,   0,  -1,   0,  -1,  0,  -1,  0, -1]],
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'A': 1},
    'minXP': 0,
    'maxXP': 0,
    'seedMonster': {'Stirge': 3},
    'monsters': 'Humanoid (goblinoid)',
    'notes': 'The lake serves as a water source for the goblin tribe.  It is fairly shallow, it is three feet deep \
                at it\'s deepest, but is also very slick with algae and counts as difficult terrain. '
})
data['rooms'].append({  
    'titleText': 'Extradimensional Garbage Dump',
    'subHead': 'Extradimensional garbage dump',
    'flavor': 'A wizard somewhere has an extra dimensional garbage chute.  This is apparently where it exits.  The \
                goblins worship it as a source of food and material from the heavens above.',
    'type': 'Basic',
    'minX': 8,
    'maxX': 15,
    'minY': 4,
    'maxY': 6,
    'chanceToStartAlive': .95,
    'treasureRoll': {'D': 1},
    'seedMonster': {'Goblin Sorcerer': 1, 'Goblin Warrior': 1},
    'minXP': 200,
    'monsters': 'Humanoid (goblinoid)',
    'notes': ''
})
with open('rooms.json', 'w') as outfile:  
    json.dump(data, outfile)
