diff --git a/src/brogue/Architect.c b/src/brogue/Architect.c index 7ffccf49..0b448692 100644 --- a/src/brogue/Architect.c +++ b/src/brogue/Architect.c @@ -1506,6 +1506,7 @@ boolean buildAMachine(enum machineTypes bp, while ((theItem->flags & ITEM_CURSED) || ((feature->flags & MF_REQUIRE_GOOD_RUNIC) && (!(theItem->flags & ITEM_RUNIC))) // runic if requested || ((feature->flags & MF_NO_THROWING_WEAPONS) && theItem->category == WEAPON && theItem->quantity > 1) // no throwing weapons if prohibited + || ((feature->flags & MF_REQUIRE_HEAVY_WEAPON) && !itemIsHeavyWeapon(theItem)) // must be a heavy weapon || itemIsADuplicate(theItem, p->spawnedItems, itemCount)) { // don't want to duplicates of rings, staffs, etc. deleteItem(theItem); theItem = generateItem(feature->itemCategory, feature->itemKind); @@ -1734,6 +1735,15 @@ static void addMachines() { analyzeMap(true); + // For bullet brogue, add a guaranteed weapon vault on l1 + if (gameVariant == VARIANT_BULLET_BROGUE && rogue.depthLevel == 1) { + for (failsafe = 50; failsafe; failsafe--) { + if (buildAMachine(MT_REWARD_HEAVY_OR_RUNIC_WEAPON, -1, -1, 0, NULL, NULL, NULL)) { + break; + } + } + } + // Add the amulet holder if it's depth 26: if (rogue.depthLevel == gameConst->amuletLevel) { for (failsafe = 50; failsafe; failsafe--) { diff --git a/src/brogue/Items.c b/src/brogue/Items.c index 51cd501f..e2a827d6 100644 --- a/src/brogue/Items.c +++ b/src/brogue/Items.c @@ -163,6 +163,14 @@ static boolean itemIsThrowingWeapon(const item *theItem) { return false; } +boolean itemIsHeavyWeapon(const item *theItem) { + if (theItem && theItem->category == WEAPON && !itemIsThrowingWeapon(theItem) + && weaponTable[theItem->kind].strengthRequired >= 15) { + return true; + } + return false; +} + // Sets an item to the given type and category (or chooses randomly if -1) with all other stats item *makeItemInto(item *theItem, unsigned long itemCategory, short itemKind) { const itemTable *theEntry = NULL; @@ -683,10 +691,6 @@ void populateItems(pos upstairs) { } } else if (rogue.depthLevel > gameConst->amuletLevel) { theCategory = GEM; - } else if (gameVariant == VARIANT_BULLET_BROGUE && rogue.depthLevel < 3 && rogue.bonusWeaponsSpawned < rogue.depthLevel) { - theCategory = WEAPON; - rogue.bonusWeaponsSpawned++; - if (D_MESSAGE_ITEM_GENERATION) printf("\n(!l) Depth %i: spawning bonus weapon", rogue.depthLevel); } else { for (int j = 0; j < gameConst->numberMeteredItems; j++) { // Create any metered items that reach generation thresholds diff --git a/src/brogue/Rogue.h b/src/brogue/Rogue.h index 6f5c8e45..efd74ac5 100644 --- a/src/brogue/Rogue.h +++ b/src/brogue/Rogue.h @@ -2525,7 +2525,6 @@ typedef struct playerCharacter { // metered items long long foodSpawned; // amount of nutrition units spawned so far this game meteredItem *meteredItems; - int bonusWeaponsSpawned; // BULLET_BROGUE only // ring bonuses: short clairvoyance; @@ -2596,7 +2595,7 @@ enum machineFeatureFlags { MF_ALTERNATIVE_2 = Fl(17), // same as MF_ALTERNATIVE, but provides for a second set of alternatives of which only one will be chosen MF_REQUIRE_GOOD_RUNIC = Fl(18), // generated item must be uncursed runic MF_MONSTERS_DORMANT = Fl(19), // monsters are dormant, and appear when a dungeon feature with DFF_ACTIVATE_DORMANT_MONSTER spawns on their tile - // unused = Fl(20), // + MF_REQUIRE_HEAVY_WEAPON = Fl(20), // requires a heavy weapon MF_BUILD_IN_WALLS = Fl(21), // build in an impassable tile that is adjacent to the interior MF_BUILD_ANYWHERE_ON_LEVEL = Fl(22), // build anywhere on the level that is not inside the machine MF_REPEAT_UNTIL_NO_PROGRESS = Fl(23), // keep trying to build this feature set until no changes are made @@ -2666,6 +2665,7 @@ enum machineTypes { MT_REWARD_CONSUMABLES, MT_REWARD_PEDESTALS_PERMANENT, MT_REWARD_PEDESTALS_CONSUMABLE, + MT_REWARD_HEAVY_OR_RUNIC_WEAPON, MT_REWARD_COMMUTATION_ALTARS, MT_REWARD_RESURRECTION_ALTAR, MT_REWARD_ADOPTED_ITEM, @@ -3308,6 +3308,7 @@ extern "C" { item *generateItem(unsigned short theCategory, short theKind); short chooseKind(const itemTable *theTable, short numKinds); item *makeItemInto(item *theItem, unsigned long itemCategory, short itemKind); + boolean itemIsHeavyWeapon(const item *theItem); void updateEncumbrance(void); short displayedArmorValue(void); short armorValueIfUnenchanted(item *theItem); diff --git a/src/variants/GlobalsBulletBrogue.c b/src/variants/GlobalsBulletBrogue.c index 13973537..b83dd1d1 100644 --- a/src/variants/GlobalsBulletBrogue.c +++ b/src/variants/GlobalsBulletBrogue.c @@ -140,7 +140,7 @@ const autoGenerator autoGeneratorCatalog_BulletBrogue[] = { {NET_TRAP_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 100, 0, 3}, {0, 0, 0, MT_PARALYSIS_TRAP_HIDDEN_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 100, 0, 3}, {ALARM_TRAP_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 100, 0, 2}, - {TRAP_DOOR_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 100, 0, 2}, + {TRAP_DOOR_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 0, 0, 2}, {GAS_TRAP_CONFUSION_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 20, 100, 0, 3}, {FLAMETHROWER_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 3, DEEPEST_LEVEL, 20, 100, 0, 3}, {FLOOD_TRAP_HIDDEN, DUNGEON,0, 0, FLOOR, NOTHING, 3, DEEPEST_LEVEL, 20, 100, 0, 3}, @@ -158,15 +158,15 @@ const autoGenerator autoGeneratorCatalog_BulletBrogue[] = { // Flavor machines {0, 0, DF_LUMINESCENT_FUNGUS, 0, FLOOR, NOTHING, DEEPEST_LEVEL,DEEPEST_LEVEL,100,0, 0, 200}, - {0, 0, 0, MT_BLOODFLOWER_AREA, FLOOR, NOTHING, 1, 7, 25, 160, -20, 3}, - {0, 0, 0, MT_SHRINE_AREA, FLOOR, NOTHING, 1, AMULET_LEVEL, 7, 0, 0, 1}, + {0, 0, 0, MT_BLOODFLOWER_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 25, 160, -20, 3}, + {0, 0, 0, MT_SHRINE_AREA, FLOOR, NOTHING, 1, AMULET_LEVEL, 15, 0, 0, 1}, {0, 0, 0, MT_IDYLL_AREA, FLOOR, NOTHING, 1, 2, 15, 0, 0, 1}, - {0, 0, 0, MT_REMNANT_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 15, 0, 0, 2}, - {0, 0, 0, MT_DISMAL_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 12, 0, 0, 5}, - {0, 0, 0, MT_BRIDGE_TURRET_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 6, 0, 0, 2}, - {0, 0, 0, MT_LAKE_PATH_TURRET_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 6, 0, 0, 2}, - {0, 0, 0, MT_TRICK_STATUE_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 15, 0, 0, 3}, - {0, 0, 0, MT_SENTINEL_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 10, 0, 0, 2}, + {0, 0, 0, MT_REMNANT_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 15, 0, 0, 2}, + {0, 0, 0, MT_DISMAL_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 15, 0, 0, 5}, + {0, 0, 0, MT_BRIDGE_TURRET_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 15, 0, 0, 2}, + {0, 0, 0, MT_LAKE_PATH_TURRET_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 15, 0, 0, 2}, + {0, 0, 0, MT_TRICK_STATUE_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 15, 0, 0, 3}, + {0, 0, 0, MT_SENTINEL_AREA, FLOOR, NOTHING, 1, DEEPEST_LEVEL, 10, 0, 0, 2}, {0, 0, 0, MT_WORM_AREA, FLOOR, NOTHING, 2, DEEPEST_LEVEL, 12, 0, 0, 3}, }; @@ -197,7 +197,7 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, ALTAR_CAGE_OPEN,DUNGEON, {4,5}, 4, (STAFF), -1, 0, 2, 0, (ITEM_IS_KEY | ITEM_KIND_AUTO_ID | ITEM_MAX_CHARGES_KNOWN | ITEM_PLAYER_AVOIDS), (MF_GENERATE_ITEM | MF_TREAT_AS_BLOCKING | MF_ALTERNATIVE | MF_IMPREGNABLE)}, {0, STATUE_INERT,DUNGEON, {2,3}, 0, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_BUILD_IN_WALLS | MF_IMPREGNABLE)}}}, {"Treasure room -- apothecary or archive (potions or scrolls)", - {2, DEEPEST_LEVEL-1}, {20, 40}, 20, 6, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { + {1, DEEPEST_LEVEL-1}, {20, 40}, 20, 6, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { {0, CARPET, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, 0, 0, {5,7}, 2, (POTION), -1, 0, 2, 0, 0, (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_TREAT_AS_BLOCKING)}, {0, 0, 0, {4,6}, 2, (SCROLL), -1, 0, 2, 0, 0, (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_TREAT_AS_BLOCKING)}, @@ -213,12 +213,19 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, PEDESTAL, DUNGEON, {2,2}, 2, (STAFF), -1, 0, 2, 0, (ITEM_KIND_AUTO_ID | ITEM_MAX_CHARGES_KNOWN), (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_TREAT_AS_BLOCKING)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_BUILD_VESTIBULE)}}}, {"Guaranteed good consumable item on glowing pedestals (scrolls of enchanting, potion of life)", - {2, DEEPEST_LEVEL-1},{10, 30}, 30, 5, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { + {1, DEEPEST_LEVEL-1},{10, 30}, 30, 5, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { {0, CARPET, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, STATUE_INERT,DUNGEON, {1,3}, 0, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_BUILD_IN_WALLS | MF_IMPREGNABLE)}, {0, PEDESTAL, DUNGEON, {1,1}, 1, (SCROLL), SCROLL_ENCHANTING, 0, 2, 0, (ITEM_KIND_AUTO_ID), (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_TREAT_AS_BLOCKING)}, {0, PEDESTAL, DUNGEON, {1,1}, 1, (POTION), POTION_LIFE,0, 2, 0, (ITEM_KIND_AUTO_ID), (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_TREAT_AS_BLOCKING)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_BUILD_VESTIBULE)}}}, + {"Guaranteed good runic or heavy weapon", + {1, DEEPEST_LEVEL-1}, {10, 30}, 5, 5, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { + {0, CARPET, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, + {0, STATUE_INERT,DUNGEON, {2,3}, 0, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_BUILD_IN_WALLS | MF_IMPREGNABLE)}, + {0, PEDESTAL, DUNGEON, {1,1}, 1, (WEAPON), -1, 0, 2, 0, ITEM_IDENTIFIED,(MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_REQUIRE_GOOD_RUNIC | MF_NO_THROWING_WEAPONS | MF_TREAT_AS_BLOCKING)}, + {0, PEDESTAL, DUNGEON, {1,1}, 1, (WEAPON), -1, 0, 2, 0, ITEM_IDENTIFIED,(MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_REQUIRE_HEAVY_WEAPON | MF_NO_THROWING_WEAPONS | MF_TREAT_AS_BLOCKING)}, + {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_BUILD_VESTIBULE)}}}, {"Commutation altars", {2, DEEPEST_LEVEL-1},{10, 30}, 50, 4, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_IMPREGNABLE | BP_REWARD), { {0, CARPET, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, @@ -232,13 +239,13 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {DF_MACHINE_FLOOR_TRIGGER_REPEATING, RESURRECTION_ALTAR,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_FAR_FROM_ORIGIN)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_BUILD_VESTIBULE)}}}, {"Outsourced item -- same item possibilities as in the good permanent item reward room (plus charms), but directly adopted by 1-2 key machines.", - {2, 3}, {0, 0}, 20, 4, 0, (BP_REWARD | BP_NO_INTERIOR_FLAG), { + {2, 3}, {0, 0}, 50, 4, 0, (BP_REWARD | BP_NO_INTERIOR_FLAG), { {0, 0, 0, {1,1}, 1, (WEAPON), -1, 0, 0, 0, ITEM_IDENTIFIED,(MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_REQUIRE_GOOD_RUNIC | MF_NO_THROWING_WEAPONS | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_BUILD_ANYWHERE_ON_LEVEL)}, {0, 0, 0, {1,1}, 1, (ARMOR), -1, 0, 0, 0, ITEM_IDENTIFIED,(MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_REQUIRE_GOOD_RUNIC | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_BUILD_ANYWHERE_ON_LEVEL)}, {0, 0, 0, {2,2}, 2, (STAFF), -1, 0, 0, 0, ITEM_KIND_AUTO_ID, (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_BUILD_ANYWHERE_ON_LEVEL)}, {0, 0, 0, {1,2}, 1, (CHARM), -1, 0, 0, 0, ITEM_KIND_AUTO_ID, (MF_GENERATE_ITEM | MF_ALTERNATIVE | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_BUILD_ANYWHERE_ON_LEVEL)}}}, {"Dungeon -- two allies chained up for the taking", - {1, DEEPEST_LEVEL-1}, {30, 80}, 12, 5, 0, (BP_ROOM | BP_REWARD), { + {1, DEEPEST_LEVEL-1}, {30, 80}, 25, 5, 0, (BP_ROOM | BP_REWARD), { {0, VOMIT, SURFACE, {2,2}, 2, 0, -1, 0, 2, (HORDE_MACHINE_CAPTIVE | HORDE_LEADER_CAPTIVE), 0, (MF_GENERATE_HORDE | MF_TREAT_AS_BLOCKING)}, {DF_AMBIENT_BLOOD,MANACLE_T,SURFACE, {1,2}, 1, 0, -1, 0, 1, 0, 0, 0}, {DF_AMBIENT_BLOOD,MANACLE_L,SURFACE, {1,2}, 1, 0, -1, 0, 1, 0, 0, 0}, @@ -246,14 +253,14 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {DF_VOMIT, 0, 0, {2,3}, 1, 0, -1, 0, 1, 0, 0, 0}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_BUILD_VESTIBULE)}}}, {"Kennel -- allies locked in cages in an open room; choose one or two to unlock and take with you.", - {1, DEEPEST_LEVEL-1}, {30, 80}, 12, 4, 0, (BP_ROOM | BP_REWARD), { + {1, DEEPEST_LEVEL-1}, {30, 80}, 25, 4, 0, (BP_ROOM | BP_REWARD), { {0, MONSTER_CAGE_CLOSED,DUNGEON,{3,5}, 3, 0, -1, 0, 2, (HORDE_MACHINE_KENNEL | HORDE_LEADER_CAPTIVE), 0, (MF_GENERATE_HORDE | MF_TREAT_AS_BLOCKING | MF_IMPREGNABLE)}, {0, 0, 0, {1,2}, 1, KEY, KEY_CAGE, 0, 1, 0, (ITEM_IS_KEY | ITEM_PLAYER_AVOIDS),(MF_PERMIT_BLOCKING | MF_GENERATE_ITEM | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_SKELETON_KEY | MF_KEY_DISPOSABLE)}, {DF_AMBIENT_BLOOD, 0, 0, {3,5}, 3, 0, -1, 0, 1, 0, 0, 0}, {DF_BONES, 0, 0, {3,5}, 3, 0, -1, 0, 1, 0, 0, 0}, {0, TORCH_WALL, DUNGEON, {2,3}, 2, 0, 0, 0, 1, 0, 0, (MF_BUILD_IN_WALLS)}}}, {"Vampire lair -- allies locked in cages and chained in a hidden room with a vampire in a coffin; vampire has one cage key.", - {3, DEEPEST_LEVEL-1},{50, 80}, 5, 4, 0, (BP_ROOM | BP_REWARD | BP_SURROUND_WITH_WALLS | BP_PURGE_INTERIOR), { + {2, DEEPEST_LEVEL-1},{50, 80}, 15, 4, 0, (BP_ROOM | BP_REWARD | BP_SURROUND_WITH_WALLS | BP_PURGE_INTERIOR), { {DF_AMBIENT_BLOOD,0, 0, {1,2}, 1, 0, -1, 0, 2, (HORDE_MACHINE_CAPTIVE | HORDE_LEADER_CAPTIVE), 0, (MF_GENERATE_HORDE | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {DF_AMBIENT_BLOOD,MONSTER_CAGE_CLOSED,DUNGEON,{2,4},2, 0, -1, 0, 2, (HORDE_VAMPIRE_FODDER | HORDE_LEADER_CAPTIVE), 0, (MF_GENERATE_HORDE | MF_TREAT_AS_BLOCKING | MF_IMPREGNABLE | MF_NOT_IN_HALLWAY)}, {DF_TRIGGER_AREA,COFFIN_CLOSED,0, {1,1}, 1, KEY, KEY_CAGE, MK_VAMPIRE, 1, 0, (ITEM_IS_KEY | ITEM_PLAYER_AVOIDS),(MF_GENERATE_ITEM | MF_SKELETON_KEY | MF_MONSTER_TAKE_ITEM | MF_MONSTERS_DORMANT | MF_FAR_FROM_ORIGIN | MF_KEY_DISPOSABLE)}, @@ -288,7 +295,7 @@ const blueprint blueprintCatalog_BulletBrogue[] = { // -- AMULET HOLDER -- {"Statuary -- key on an altar, area full of statues; take key to cause statues to burst and reveal monsters", - {2, DEEPEST_LEVEL-1},{35, 40}, 0, 4, 0, (BP_PURGE_INTERIOR | BP_OPEN_INTERIOR), { + {2, DEEPEST_LEVEL-1},{35, 40}, 15, 4, 0, (BP_PURGE_INTERIOR | BP_OPEN_INTERIOR), { {DF_LUMINESCENT_FUNGUS, AMULET_SWITCH, DUNGEON, {1,1}, 1, AMULET, -1, 0, 2, 0, 0, (MF_GENERATE_ITEM | MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, FUNGUS_FOREST,SURFACE, {2,3}, 0, 0, -1, 0, 2, 0, 0, MF_NOT_IN_HALLWAY}, {0, STATUE_INSTACRACK,DUNGEON, {1,1}, 1, 0, -1, MK_WARDEN_OF_YENDOR,1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_MONSTERS_DORMANT | MF_FAR_FROM_ORIGIN | MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_IMPREGNABLE)}, @@ -300,44 +307,44 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {1, DEEPEST_LEVEL-1}, {1, 1}, 100, 1, 0, (BP_VESTIBULE), { {0, LOCKED_DOOR, DUNGEON, {1,1}, 1, KEY, KEY_DOOR, 0, 1, 0, (ITEM_IS_KEY | ITEM_PLAYER_AVOIDS), (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_GENERATE_ITEM | MF_OUTSOURCE_ITEM_TO_MACHINE | MF_KEY_DISPOSABLE | MF_IMPREGNABLE)}}}, {"Plain secret door", - {1, DEEPEST_LEVEL-1}, {1, 1}, 1, 1, 0, (BP_VESTIBULE), { + {1, DEEPEST_LEVEL-1}, {1, 1}, 10, 1, 0, (BP_VESTIBULE), { {0, SECRET_DOOR, DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING)}}}, {"Lever and either an exploding wall or a portcullis", - {1, DEEPEST_LEVEL-1}, {1, 1}, 8, 3, 0, (BP_VESTIBULE), { + {1, DEEPEST_LEVEL-1}, {1, 1}, 25, 3, 0, (BP_VESTIBULE), { {0, WORM_TUNNEL_OUTER_WALL,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_IMPREGNABLE | MF_ALTERNATIVE)}, {0, PORTCULLIS_CLOSED,DUNGEON, {1,1}, 1, 0, 0, 0, 3, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_IMPREGNABLE | MF_ALTERNATIVE)}, {0, WALL_LEVER_HIDDEN,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_IN_WALLS | MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_BUILD_ANYWHERE_ON_LEVEL)}}}, {"Flammable barricade in the doorway -- burn the wooden barricade to enter", - {1, 2}, {1, 1}, 10, 3, 0, (BP_VESTIBULE), { + {1, 2}, {1, 1}, 25, 3, 0, (BP_VESTIBULE), { {0, WOODEN_BARRICADE,DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}, {0, 0, 0, {1,1}, 1, WEAPON, INCENDIARY_DART, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}, {0, 0, 0, {1,1}, 1, POTION, POTION_INCINERATION, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}}}, {"Statue in the doorway -- use a scroll of shattering to enter", - {1, DEEPEST_LEVEL-1}, {1, 1}, 6, 2, 0, (BP_VESTIBULE), { + {1, DEEPEST_LEVEL-1}, {1, 1}, 25, 2, 0, (BP_VESTIBULE), { {0, STATUE_INERT_DOORWAY,DUNGEON, {1,1},1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}, {0, 0, 0, {1,1}, 1, SCROLL, SCROLL_SHATTERING, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY)}}}, {"Statue in the doorway -- bursts to reveal monster", - {2, DEEPEST_LEVEL-1}, {2, 2}, 6, 2, 0, (BP_VESTIBULE), { + {2, DEEPEST_LEVEL-1}, {2, 2}, 20, 2, 0, (BP_VESTIBULE), { {0, STATUE_DORMANT_DOORWAY,DUNGEON, {1, 1}, 1, 0, -1, 0, 1, HORDE_MACHINE_STATUE,0, (MF_PERMIT_BLOCKING | MF_GENERATE_HORDE | MF_MONSTERS_DORMANT | MF_BUILD_AT_ORIGIN | MF_ALTERNATIVE)}, {0, MACHINE_TRIGGER_FLOOR,DUNGEON,{0,0}, 1, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}}}, {"Throwing tutorial -- toss an item onto the pressure plate to retract the portcullis", - {1, 1}, {70, 70}, 8, 3, 0, (BP_VESTIBULE), { + {1, 1}, {70, 70}, 10, 3, 0, (BP_VESTIBULE), { {DF_MEDIUM_HOLE, MACHINE_PRESSURE_PLATE, LIQUID, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, PORTCULLIS_CLOSED,DUNGEON, {1,1}, 1, 0, 0, 0, 3, 0, 0, (MF_IMPREGNABLE | MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN | MF_ALTERNATIVE)}, {0, WORM_TUNNEL_OUTER_WALL,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_IMPREGNABLE | MF_ALTERNATIVE)}}}, {"Pit traps -- area outside entrance is full of pit traps", - {1, DEEPEST_LEVEL-1}, {30, 60}, 8, 3, 0, (BP_VESTIBULE | BP_OPEN_INTERIOR | BP_NO_INTERIOR_FLAG), { + {1, DEEPEST_LEVEL-1}, {30, 60}, 4, 3, 0, (BP_VESTIBULE | BP_OPEN_INTERIOR | BP_NO_INTERIOR_FLAG), { {0, DOOR, DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN | MF_ALTERNATIVE)}, {0, SECRET_DOOR,DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_IMPREGNABLE | MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN | MF_ALTERNATIVE)}, {0, TRAP_DOOR_HIDDEN,DUNGEON, {60, 60}, 1, 0, -1, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}}}, {"Beckoning obstacle -- a mirrored totem guards the door, and glyph are around the doorway.", - {2, DEEPEST_LEVEL-1}, {15, 30}, 8, 3, 0, (BP_VESTIBULE | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR), { + {2, DEEPEST_LEVEL-1}, {15, 30}, 15, 3, 0, (BP_VESTIBULE | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR), { {0, DOOR, DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}, {0, MACHINE_GLYPH,DUNGEON, {1,1}, 0, 0, -1, 0, 1, 0, 0, (MF_NEAR_ORIGIN | MF_EVERYWHERE)}, {0, 0, 0, {1,1}, 1, 0, -1, MK_MIRRORED_TOTEM,3, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_IN_VIEW_OF_ORIGIN | MF_BUILD_ANYWHERE_ON_LEVEL)}, {0, MACHINE_GLYPH,DUNGEON, {3,5}, 2, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING)}}}, {"Guardian obstacle -- a guardian is in the door on a glyph, with other glyphs scattered around.", - {2, DEEPEST_LEVEL-1}, {25, 25}, 8, 4, 0, (BP_VESTIBULE | BP_OPEN_INTERIOR), { + {2, DEEPEST_LEVEL-1}, {25, 25}, 15, 4, 0, (BP_VESTIBULE | BP_OPEN_INTERIOR), { {0, DOOR, DUNGEON, {1,1}, 1, 0, 0, MK_GUARDIAN, 2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_ALTERNATIVE)}, {0, DOOR, DUNGEON, {1,1}, 1, 0, 0, MK_WINGED_GUARDIAN,2, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING | MF_ALTERNATIVE)}, {0, MACHINE_GLYPH,DUNGEON, {10,10}, 3, 0, -1, 0, 1, 0, 0, (MF_PERMIT_BLOCKING| MF_NEAR_ORIGIN)}, @@ -355,20 +362,20 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, ALTAR_CAGE_OPEN,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, (ITEM_IS_KEY | ITEM_PLAYER_AVOIDS | ITEM_MAX_CHARGES_KNOWN), (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_IMPREGNABLE)}, {0, STATUE_INERT,DUNGEON, {1,3}, 0, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_BUILD_IN_WALLS | MF_IMPREGNABLE)}}}, {"Secret room -- key on an altar in a secret room", - {1, DEEPEST_LEVEL-1}, {15, 100}, 1, 2, 0, (BP_ROOM | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {15, 100}, 10, 2, 0, (BP_ROOM | BP_ADOPT_ITEM), { {0, ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, ITEM_PLAYER_AVOIDS, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, SECRET_DOOR,DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}}}, {"Throwing tutorial -- toss an item onto the pressure plate to retract the cage and reveal the key", - {1, 1}, {70, 80}, 8, 2, 0, (BP_ADOPT_ITEM), { + {1, 1}, {70, 80}, 15, 2, 0, (BP_ADOPT_ITEM), { {0, ALTAR_CAGE_RETRACTABLE,DUNGEON,{1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_IMPREGNABLE | MF_NOT_IN_HALLWAY)}, {DF_MEDIUM_HOLE, MACHINE_PRESSURE_PLATE, LIQUID, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}}}, {"Rat trap -- getting the key triggers paralysis vents nearby and also causes rats to burst out of the walls", - {1,1}, {30, 70}, 7, 3, 0, (BP_ADOPT_ITEM | BP_ROOM), { + {1,1}, {30, 70}, 15, 3, 0, (BP_ADOPT_ITEM | BP_ROOM), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, MACHINE_PARALYSIS_VENT_HIDDEN,DUNGEON,{1,1},1, 0, -1, 0, 2, 0, 0, (MF_FAR_FROM_ORIGIN | MF_NOT_IN_HALLWAY)}, {0, RAT_TRAP_WALL_DORMANT,DUNGEON,{10,20}, 5, 0, -1, MK_RAT, 1, 0, 0, (MF_MONSTERS_DORMANT | MF_BUILD_IN_WALLS | MF_NOT_ON_LEVEL_PERIMETER)}}}, {"Fun with fire -- trigger the fire trap and coax the fire over to the wooden barricade surrounding the altar and key", - {1, 2}, {80, 100}, 10, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR), { + {1, 2}, {80, 100}, 15, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR), { {DF_SURROUND_WOODEN_BARRICADE,ALTAR_INERT,DUNGEON,{1,1},1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, GRASS, SURFACE, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE | MF_ALTERNATIVE)}, {DF_SWAMP, 0, 0, {4,4}, 2, 0, -1, 0, 2, 0, 0, (MF_ALTERNATIVE | MF_FAR_FROM_ORIGIN)}, @@ -376,34 +383,34 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, GAS_TRAP_POISON_HIDDEN,DUNGEON,{3, 3}, 1, 0, -1, 0, 5, 0, 0, (MF_TREAT_AS_BLOCKING | MF_ALTERNATIVE)}, {0, 0, 0, {2,2}, 1, POTION, POTION_LICHEN, 0, 3, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}}}, {"Flood room -- key on an altar in a room with pools of eel-infested waters; take key to flood room with shallow water", - {1, DEEPEST_LEVEL-1}, {80, 180}, 10, 4, 0, (BP_ROOM | BP_SURROUND_WITH_WALLS | BP_PURGE_LIQUIDS | BP_PURGE_PATHING_BLOCKERS | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {80, 180}, 15, 4, 0, (BP_ROOM | BP_SURROUND_WITH_WALLS | BP_PURGE_LIQUIDS | BP_PURGE_PATHING_BLOCKERS | BP_ADOPT_ITEM), { {0, FLOOR_FLOODABLE,LIQUID, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 5, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {DF_SPREADABLE_WATER_POOL,0,0, {2, 4}, 1, 0, -1, 0, 5, HORDE_MACHINE_WATER_MONSTER,0,MF_GENERATE_HORDE}, {DF_GRASS, FOLIAGE, SURFACE, {3, 4}, 3, 0, -1, 0, 1, 0, 0, 0}}}, {"Fire trap room -- key on an altar, pools of water, fire traps all over the place.", - {2, DEEPEST_LEVEL-1}, {80, 180}, 6, 5, 0, (BP_ROOM | BP_SURROUND_WITH_WALLS | BP_PURGE_LIQUIDS | BP_PURGE_PATHING_BLOCKERS | BP_ADOPT_ITEM), { + {2, DEEPEST_LEVEL-1}, {80, 180}, 15, 5, 0, (BP_ROOM | BP_SURROUND_WITH_WALLS | BP_PURGE_LIQUIDS | BP_PURGE_PATHING_BLOCKERS | BP_ADOPT_ITEM), { {0, ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, 0, 0, {1, 1}, 1, 0, -1, 0, 4, 0, 0, MF_BUILD_AT_ORIGIN}, {0, FLAMETHROWER_HIDDEN,DUNGEON,{40, 60}, 20, 0, -1, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING)}, {DF_DEEP_WATER_POOL,0, 0, {4, 4}, 1, 0, -1, 0, 4, HORDE_MACHINE_WATER_MONSTER,0,MF_GENERATE_HORDE}, {DF_GRASS, FOLIAGE, SURFACE, {3, 4}, 3, 0, -1, 0, 1, 0, 0, 0}}}, {"Thief area -- empty altar, monster with item, permanently fleeing.", - {1, DEEPEST_LEVEL-1}, {15, 20}, 10, 2, 0, (BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {15, 20}, 15, 2, 0, (BP_ADOPT_ITEM), { {DF_LUMINESCENT_FUNGUS, ALTAR_INERT,DUNGEON,{1,1}, 1, 0, -1, 0, 2, HORDE_MACHINE_THIEF,0, (MF_ADOPT_ITEM | MF_BUILD_AT_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_GENERATE_HORDE | MF_MONSTER_TAKE_ITEM | MF_MONSTER_FLEEING)}, {0, STATUE_INERT,0, {3, 5}, 2, 0, -1, 0, 2, 0, 0, (MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}}}, {"Collapsing floor area -- key on an altar in an area; take key to cause the floor of the area to collapse", - {1, DEEPEST_LEVEL-1}, {45, 65}, 13, 3, 0, (BP_ADOPT_ITEM | BP_TREAT_AS_BLOCKING), { + {1, DEEPEST_LEVEL-1}, {45, 65}, 15, 3, 0, (BP_ADOPT_ITEM | BP_TREAT_AS_BLOCKING), { {0, FLOOR_FLOODABLE,DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, ALTAR_SWITCH_RETRACTING,DUNGEON,{1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {DF_ADD_MACHINE_COLLAPSE_EDGE_DORMANT,0,0,{3, 3}, 2, 0, -1, 0, 3, 0, 0, (MF_FAR_FROM_ORIGIN | MF_NOT_IN_HALLWAY)}}}, {"Pit traps -- key on an altar, room full of pit traps", - {1, DEEPEST_LEVEL-1}, {30, 100}, 10, 3, 0, (BP_ROOM | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {30, 100}, 5, 3, 0, (BP_ROOM | BP_ADOPT_ITEM), { {0, ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, TRAP_DOOR_HIDDEN,DUNGEON, {30, 40}, 1, 0, -1, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}, {0, SECRET_DOOR,DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}}}, {"Levitation challenge -- key on an altar, room filled with pit, levitation or lever elsewhere on level, bridge appears when you grab the key/lever.", - {1, 1}, {75, 120}, 10, 9, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { + {1, 1}, {75, 120}, 15, 9, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, TORCH_WALL, DUNGEON, {1,4}, 0, 0, 0, 0, 1, 0, 0, (MF_BUILD_IN_WALLS)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 3, 0, 0, MF_BUILD_AT_ORIGIN}, @@ -412,14 +419,14 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, 0, 0, {1,1}, 1, POTION, POTION_LEVITATION, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}, {0, WALL_LEVER_HIDDEN,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_IN_WALLS | MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_BUILD_ANYWHERE_ON_LEVEL | MF_ALTERNATIVE)}}}, {"Web climbing -- key on an altar, room filled with pit, spider at altar to shoot webs, bridge appears when you grab the key", - {2, DEEPEST_LEVEL-1}, {55, 90}, 10, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { + {2, DEEPEST_LEVEL-1}, {55, 90}, 15, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, MK_SPIDER, 3, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_IN_VIEW_OF_ORIGIN)}, {0, TORCH_WALL, DUNGEON, {1,4}, 0, 0, 0, 0, 1, 0, 0, (MF_BUILD_IN_WALLS)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 3, 0, 0, MF_BUILD_AT_ORIGIN}, {DF_ADD_DORMANT_CHASM_HALO, CHASM,LIQUID, {120, 120}, 1, 0, -1, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}, {DF_ADD_DORMANT_CHASM_HALO, CHASM_WITH_HIDDEN_BRIDGE,LIQUID,{1,1},1,0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_EVERYWHERE)}}}, {"Lava moat room -- key on an altar, room filled with lava, levitation/fire immunity/lever elsewhere on level, lava retracts when you grab the key/lever", - {2, DEEPEST_LEVEL-1}, {75, 120}, 7, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR), { + {1, DEEPEST_LEVEL-1}, {75, 120}, 15, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, 0, 0, {1,1}, 1, 0, 0, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN)}, {0, LAVA, LIQUID, {60,60}, 1, 0, 0, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}, @@ -428,14 +435,14 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, 0, 0, {1,1}, 1, POTION, POTION_FIRE_IMMUNITY, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}, {0, WALL_LEVER_HIDDEN,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_IN_WALLS | MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_BUILD_ANYWHERE_ON_LEVEL | MF_ALTERNATIVE)}}}, {"Lava moat area -- key on an altar, surrounded with lava, levitation/fire immunity elsewhere on level, lava retracts when you grab the key", - {2, DEEPEST_LEVEL-1}, {40, 60}, 3, 5, 0, (BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_TREAT_AS_BLOCKING), { + {1, DEEPEST_LEVEL-1}, {40, 60}, 15, 5, 0, (BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_TREAT_AS_BLOCKING), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_BUILD_AT_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, LAVA, LIQUID, {60,60}, 1, 0, 0, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}, {DF_LAVA_RETRACTABLE, LAVA_RETRACTABLE, LIQUID, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_EVERYWHERE)}, {0, 0, 0, {1,1}, 1, POTION, POTION_LEVITATION, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}, {0, 0, 0, {1,1}, 1, POTION, POTION_FIRE_IMMUNITY, 0, 1, 0, 0, (MF_GENERATE_ITEM | MF_BUILD_ANYWHERE_ON_LEVEL | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}}}, {"Poison gas -- key on an altar; take key to cause a caustic gas vent to appear and the door to be blocked; there is a hidden trapdoor or an escape item somewhere inside", - {2, DEEPEST_LEVEL-1}, {35, 60}, 7, 7, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {35, 60}, 15, 7, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING)}, {0, MACHINE_POISON_GAS_VENT_HIDDEN,DUNGEON,{1,2}, 1, 0, -1, 0, 2, 0, 0, 0}, {0, TRAP_DOOR_HIDDEN,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, MF_ALTERNATIVE}, @@ -444,14 +451,14 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, WALL_LEVER_HIDDEN_DORMANT,DUNGEON,{1,1},1, 0, -1, 0, 1, 0, 0, (MF_BUILD_IN_WALLS)}, {0, PORTCULLIS_DORMANT,DUNGEON,{1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING)}}}, {"Explosive situation -- key on an altar; take key to cause a methane gas vent to appear and a pilot light to ignite", - {3, DEEPEST_LEVEL-1}, {80, 90}, 10, 5, 0, (BP_ROOM | BP_PURGE_LIQUIDS | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { + {2, DEEPEST_LEVEL-1}, {80, 90}, 15, 5, 0, (BP_ROOM | BP_PURGE_LIQUIDS | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { {0, DOOR, DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN)}, {0, FLOOR, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_FAR_FROM_ORIGIN)}, {0, MACHINE_METHANE_VENT_HIDDEN,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, MF_NEAR_ORIGIN}, {0, PILOT_LIGHT_DORMANT,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_FAR_FROM_ORIGIN | MF_BUILD_IN_WALLS)}}}, {"Burning grass -- key on an altar; take key to cause pilot light to ignite grass in room", - {1, 2}, {40, 110}, 10, 6, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM | BP_OPEN_INTERIOR), { + {1, 2}, {40, 110}, 15, 6, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM | BP_OPEN_INTERIOR), { {DF_SMALL_DEAD_GRASS,ALTAR_SWITCH_RETRACTING,DUNGEON,{1,1},1, 0, -1, 0, 1, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_FAR_FROM_ORIGIN)}, {DF_DEAD_FOLIAGE,0, SURFACE, {2,3}, 0, 0, -1, 0, 1, 0, 0, 0}, {0, FOLIAGE, SURFACE, {1,4}, 0, 0, -1, 0, 1, 0, 0, 0}, @@ -459,17 +466,17 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, DEAD_GRASS, SURFACE, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, PILOT_LIGHT_DORMANT,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, MF_NEAR_ORIGIN | MF_BUILD_IN_WALLS}}}, {"Statuary -- key on an altar, area full of statues; take key to cause statues to burst and reveal monsters", - {2, DEEPEST_LEVEL-1},{35, 90}, 10, 2, 0, (BP_ADOPT_ITEM | BP_NO_INTERIOR_FLAG), { + {2, DEEPEST_LEVEL-1},{35, 90}, 15, 2, 0, (BP_ADOPT_ITEM | BP_NO_INTERIOR_FLAG), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, STATUE_DORMANT,DUNGEON, {3,5}, 3, 0, -1, 0, 2, HORDE_MACHINE_STATUE,0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_GENERATE_HORDE | MF_MONSTERS_DORMANT | MF_FAR_FROM_ORIGIN)}}}, {"Guardian water puzzle -- key held by a guardian, flood trap in the room, glyphs scattered. Lure the guardian into the water to have him drop the key.", - {2, DEEPEST_LEVEL-1}, {35, 70}, 8, 4, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { + {12, DEEPEST_LEVEL-1}, {35, 70}, 15, 4, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_ADOPT_ITEM), { {0, 0, 0, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN)}, {0, 0, 0, {1,1}, 1, 0, -1, MK_GUARDIAN, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_MONSTER_TAKE_ITEM)}, {0, FLOOD_TRAP,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, MACHINE_GLYPH,DUNGEON, {1,1}, 4, 0, -1, 0, 2, 0, 0, (MF_EVERYWHERE | MF_NOT_IN_HALLWAY)}}}, {"Guardian gauntlet -- key in a room full of guardians, glyphs scattered and unavoidable.", - {2, DEEPEST_LEVEL-1}, {50, 95}, 10, 6, 0, (BP_ROOM | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {50, 95}, 15, 6, 0, (BP_ROOM | BP_ADOPT_ITEM), { {DF_GLYPH_CIRCLE,ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_FAR_FROM_ORIGIN)}, {0, DOOR, DUNGEON, {1,1}, 1, 0, 0, 0, 3, 0, 0, (MF_PERMIT_BLOCKING | MF_BUILD_AT_ORIGIN)}, {0, 0, 0, {3,6}, 3, 0, -1, MK_GUARDIAN, 2, 0, 0, (MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_ALTERNATIVE)}, @@ -477,7 +484,7 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, MACHINE_GLYPH,DUNGEON, {10,15}, 10, 0, -1, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, MACHINE_GLYPH,DUNGEON, {1,1}, 0, 0, -1, 0, 2, 0, 0, (MF_EVERYWHERE | MF_PERMIT_BLOCKING | MF_NOT_IN_HALLWAY)}}}, {"Guardian corridor -- key in a small room, with a connecting corridor full of glyphs, one guardian blocking the corridor.", - {2, DEEPEST_LEVEL-1}, {85, 100}, 5, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { + {1, DEEPEST_LEVEL-1}, {85, 100}, 15, 7, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { {DF_GLYPH_CIRCLE,ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, MK_GUARDIAN, 3, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_ALTERNATIVE)}, {DF_GLYPH_CIRCLE,ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, MK_WINGED_GUARDIAN,3, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_ALTERNATIVE)}, {0, MACHINE_GLYPH,DUNGEON, {3,5}, 2, 0, 0, 0, 2, 0, 0, MF_NEAR_ORIGIN | MF_NOT_IN_HALLWAY}, @@ -486,7 +493,7 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, MACHINE_GLYPH,DUNGEON, {1,1}, 1, 0, 0, 0, 1, 0, 0, (MF_PERMIT_BLOCKING | MF_EVERYWHERE)}, {0, MACHINE_GLYPH,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_NOT_IN_HALLWAY | MF_BUILD_ANYWHERE_ON_LEVEL)}}}, {"Sacrifice altar -- lure the chosen monster from elsewhere on the level onto the altar to release the key.", - {2, DEEPEST_LEVEL-1}, {20, 60}, 12, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { + {1, DEEPEST_LEVEL-1}, {20, 60}, 15, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_OPEN_INTERIOR | BP_SURROUND_WITH_WALLS), { {DF_BONES, 0, 0, {3,4}, 2, 0, -1, 0, 1, 0, 0, 0}, {0, 0, 0, {1,1}, 0, 0, -1, 0, 2, 0, 0, (MF_BUILD_IN_WALLS | MF_EVERYWHERE)}, {DF_TRIGGER_AREA,SACRIFICE_ALTAR_DORMANT,DUNGEON,{1,1},1, 0, -1, 0, 2, 0, 0, (MF_FAR_FROM_ORIGIN | MF_NOT_IN_HALLWAY)}, @@ -498,13 +505,13 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {DF_GLYPH_CIRCLE,ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_FAR_FROM_ORIGIN)}, {DF_GLYPH_CIRCLE,0, 0, {1,1}, 1, 0, -1, MK_ELDRITCH_TOTEM,3, 0, 0, (MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}}}, {"Beckoning obstacle -- key surrounded by glyphs in a room with a mirrored totem.", - {2, DEEPEST_LEVEL-1}, {60, 100}, 10, 4, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_ADOPT_ITEM), { + {1, DEEPEST_LEVEL-1}, {60, 100}, 15, 4, 0, (BP_ROOM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_ADOPT_ITEM), { {DF_GLYPH_CIRCLE,ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_FAR_FROM_ORIGIN | MF_IN_VIEW_OF_ORIGIN)}, {0, 0, 0, {1,1}, 1, 0, -1, MK_MIRRORED_TOTEM,3, 0, 0, (MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_IN_VIEW_OF_ORIGIN)}, {0, 0, 0, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_BUILD_AT_ORIGIN)}, {0, MACHINE_GLYPH,DUNGEON, {3,5}, 2, 0, -1, 0, 2, 0, 0, (MF_TREAT_AS_BLOCKING)}}}, {"Worms in the walls -- key on altar; take key to cause underworms to burst out of the walls", - {2,DEEPEST_LEVEL-1}, {7, 7}, 7, 2, 0, (BP_ADOPT_ITEM), { + {2,DEEPEST_LEVEL-1}, {7, 7}, 10, 2, 0, (BP_ADOPT_ITEM), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY)}, {0, WALL_MONSTER_DORMANT,DUNGEON,{5,8}, 5, 0, -1, MK_UNDERWORM, 1, 0, 0, (MF_MONSTERS_DORMANT | MF_BUILD_IN_WALLS | MF_NOT_ON_LEVEL_PERIMETER)}}}, {"Mud pit -- key on an altar, room full of mud, take key to cause bog monsters to spawn in the mud", @@ -513,14 +520,14 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {DF_SWAMP, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {DF_MUD_DORMANT,0, 0, {3,4}, 3, 0, -1, 0, 1, HORDE_MACHINE_MUD,0, (MF_GENERATE_HORDE | MF_MONSTERS_DORMANT)}}}, {"Electric crystals -- key caged on an altar, darkened crystal globes around the room, lightning the globes to release the key.", - {2, DEEPEST_LEVEL-1},{40, 60}, 10, 5, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_PURGE_INTERIOR), { + {1, DEEPEST_LEVEL-1},{40, 60}, 15, 5, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_SURROUND_WITH_WALLS | BP_OPEN_INTERIOR | BP_PURGE_INTERIOR), { {0, CARPET, DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, ELECTRIC_CRYSTAL_OFF,DUNGEON,{3,4}, 3, 0, -1, 0, 3, 0, 0, (MF_NOT_IN_HALLWAY | MF_IMPREGNABLE)}, {0, SACRED_GLYPH, DUNGEON, {1, 1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN)}, {0, ALTAR_CAGE_RETRACTABLE,DUNGEON,{1,1}, 1, 0, -1, 0, 3, 0, 0, (MF_ADOPT_ITEM | MF_IMPREGNABLE | MF_NOT_IN_HALLWAY | MF_FAR_FROM_ORIGIN)}, {0, TURRET_LEVER, DUNGEON, {7,9}, 4, 0, -1, MK_SPARK_TURRET,3, 0, 0, (MF_BUILD_IN_WALLS | MF_MONSTERS_DORMANT)}}}, {"Zombie crypt -- key on an altar; coffins scattered around; brazier in the room; take key to cause zombies to burst out of all of the coffins", - {2, DEEPEST_LEVEL-1},{60, 90}, 10, 8, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_SURROUND_WITH_WALLS | BP_PURGE_INTERIOR), { + {2, DEEPEST_LEVEL-1},{60, 90}, 15, 8, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_SURROUND_WITH_WALLS | BP_PURGE_INTERIOR), { {0, DOOR, DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN)}, {DF_BONES, 0, 0, {3,4}, 2, 0, -1, 0, 1, 0, 0, 0}, {DF_ASH, 0, 0, {3,4}, 2, 0, -1, 0, 1, 0, 0, 0}, @@ -530,13 +537,13 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {0, BRAZIER, DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_NEAR_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, COFFIN_CLOSED, DUNGEON, {6,8}, 1, 0, 0, MK_ZOMBIE, 2, 0, 0, (MF_TREAT_AS_BLOCKING | MF_NOT_IN_HALLWAY | MF_MONSTERS_DORMANT)}}}, {"Haunted house -- key on an altar; take key to cause the room to darken, ectoplasm to cover everything and phantoms to appear", - {3, DEEPEST_LEVEL-1},{45, 150}, 10, 4, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS), { + {3, DEEPEST_LEVEL-1},{45, 150}, 15, 4, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_SURROUND_WITH_WALLS), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, DARK_FLOOR_DORMANT,DUNGEON, {0,0}, 0, 0, -1, 0, 0, 0, 0, (MF_EVERYWHERE)}, {0, DARK_FLOOR_DORMANT,DUNGEON, {4,5}, 4, 0, -1, MK_PHANTOM, 1, 0, 0, (MF_MONSTERS_DORMANT)}, {0, HAUNTED_TORCH_DORMANT,DUNGEON,{5,10}, 3, 0, -1, 0, 2, 0, 0, (MF_BUILD_IN_WALLS)}}}, {"Worm tunnels -- hidden lever causes tunnels to open up revealing worm areas and a key", - {2, DEEPEST_LEVEL-1},{80, 175}, 10, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_MAXIMIZE_INTERIOR | BP_SURROUND_WITH_WALLS), { + {2, DEEPEST_LEVEL-1},{80, 175}, 15, 6, 0, (BP_ROOM | BP_ADOPT_ITEM | BP_PURGE_INTERIOR | BP_MAXIMIZE_INTERIOR | BP_SURROUND_WITH_WALLS), { {0, ALTAR_INERT,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_FAR_FROM_ORIGIN | MF_TREAT_AS_BLOCKING)}, {0, 0, 0, {3,6}, 3, 0, -1, MK_UNDERWORM, 1, 0, 0, 0}, {0, GRANITE, DUNGEON, {150,150}, 1, 0, -1, 0, 1, 0, 0, (MF_TREAT_AS_BLOCKING | MF_REPEAT_UNTIL_NO_PROGRESS)}, @@ -544,7 +551,7 @@ const blueprint blueprintCatalog_BulletBrogue[] = { {DF_TUNNELIZE,WORM_TUNNEL_OUTER_WALL,DUNGEON,{1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_AT_ORIGIN | MF_PERMIT_BLOCKING)}, {0, WALL_LEVER_HIDDEN,DUNGEON, {1,1}, 1, 0, -1, 0, 1, 0, 0, (MF_BUILD_IN_WALLS | MF_IN_PASSABLE_VIEW_OF_ORIGIN | MF_BUILD_ANYWHERE_ON_LEVEL)}}}, {"Gauntlet -- key on an altar; take key to cause turrets to emerge", - {2, DEEPEST_LEVEL-1}, {35, 90}, 10, 2, 0, (BP_ADOPT_ITEM | BP_NO_INTERIOR_FLAG), { + {2, DEEPEST_LEVEL-1}, {35, 90}, 15, 2, 0, (BP_ADOPT_ITEM | BP_NO_INTERIOR_FLAG), { {0, ALTAR_SWITCH,DUNGEON, {1,1}, 1, 0, -1, 0, 2, 0, 0, (MF_ADOPT_ITEM | MF_NEAR_ORIGIN | MF_NOT_IN_HALLWAY | MF_TREAT_AS_BLOCKING)}, {0, TURRET_DORMANT,DUNGEON, {4,6}, 4, 0, -1, 0, 2, HORDE_MACHINE_TURRET,0, (MF_TREAT_AS_BLOCKING | MF_GENERATE_HORDE | MF_MONSTERS_DORMANT | MF_BUILD_IN_WALLS | MF_IN_VIEW_OF_ORIGIN)}}}, {"Boss -- key is held by a boss atop a pile of bones in a secret room. A few fungus patches light up the area.",