User Tools

Site Tools


mr:sewers_level

Sewers Level - Code References

Sewers is the first level of Remixed Dungeon (depths 1-5). It serves as the tutorial area and introduces basic game mechanics.

Entity Type

Level/Dungeon Branch

Java Classes

Level Generation: SewerLevel.java

  • Package: `com.watabou.pixeldungeon.levels`
  • Extends: `RegularLevel` (which extends `Level`)
  • Features: Water pools, grass, rat/snail spawns, hidden doors

Level Transition: Dungeon.java

  • Line 322: `switchLevel()` - Level transitions
  • Depths 1-5: Sewers
  • Depth 5: Boss level (Goo)

Boss Level: SewerBossLevel.java

  • Depth 5
  • Goo boss arena
  • Special layout

Level Factory: Dungeon.java

  • `newLevel()` method creates level by depth
  • Depth 1-5: SewerLevel, depth 5: SewerBossLevel

JSON Configuration

Bestiary Spawns: Bestiary.json

"levels": {
  "1": { "mobs": {"Snail": 1} },
  "2": { "mobs": {"Snail": 1, "Rat": 1, "DeepSnail": 0.03} },
  "3": { "mobs": {"Rat": 1, "Gnoll": 1, "Crab": 0.5, "Albino": 0.03, "Swarm": 0.02} },
  "4": { "mobs": {"Rat": 1, "Gnoll": 2, "Crab": 1, "DeepSnail": 0.1, "Thief": 0.01} },
  "5": { "mobs": {"Goo": 1} } // Boss level
}

Level Objects: `assets/levelObjects/` - Pedestals, statues, wells, barricades, traps

String Resources

English (values/strings_all.xml):

<string name="Sewer_TileWater">Murky water</string>
<string name="Sewer_TileDescDeco">Wet yellowish moss covers the floor.</string>
<string name="Sewer_TileDescBookshelf">The bookshelf is packed with cheap useless books. Might it burn?</string>
<string name="WndStory_Sewers">The dungeon is located exactly under the city, the upper levels are effectively the city sewers. Being conditionally part of the city, these levels are not so dangerous. Of course they can't be called safe either, but at least here you don't have to worry about dark magic.</string>

Russian (values-ru/strings_all.xml):

<string name="Sewer_TileWater">Мутная вода</string>
<string name="Sewer_TileDescDeco">Влажный желтоватый мох растянулся по полу.</string>
<string name="Sewer_TileDescBookshelf">Полки заставлены дешёвыми бесполезными книгами. Интересно, загорится?</string>
<string name="WndStory_Sewers">Подземелье расположено точно под городом, верхние уровни фактически являются канализацией города. Будучи условно частью города, эти уровни не столь опасны. Конечно безопасными их тоже не назовёшь, но, по крайней мере, здесь не приходится волноваться о зловещей магии.</string>

Lua Scripts

  • Level Objects: `scripts/objects/pedestal.lua` - Pedestal puzzles
  • Level Objects: `scripts/objects/well.lua` - Well interaction
  • Level Objects: `scripts/objects/statue.lua` - Statue interaction
  • NPC: `scripts/npc/Innkeeper.lua` - Innkeeper NPC (in town, accessible from sewers)

Game Mechanics

  • Depth Range: 1-5 (5 is boss level)
  • Theme: Damp stone, water pools, grass patches
  • Hazards: Water (slows movement), hidden traps, gas traps
  • Special Features:
    • Hidden rooms behind secret doors
    • Pedestal puzzles for rewards
    • Wells for health restoration
  • Progression:
    • Depth 1: Snails (easy)
    • Depth 2: Snails, Rats, Deep Snails
    • Depth 3-4: Crabs, Deep Snails, Gnolls, Albino rats, Swarms
    • Depth 5: Goo Boss (required to proceed)
  • Shortcuts:
    • Sewer shortcut to Prison (unlocked after Goo)
    • Backtracking for missed items

Level Objects

  • Water Pools - Terrain feature, slows movement
  • Grass Patches - Tall grass, concealment
  • Pedestals - Item placement triggers
  • Statues - Decoration, sometimes interactive
  • Wells - Health restoration
  • Barricades - Destructible cover
  • Secret Doors - Hidden passages

Code Fragments

SewerLevel generation:

// SewerLevel.java
public class SewerLevel extends RegularLevel {
    @Override
    protected void createMap() {
        // Water pool generation
        // Grass patch placement
        // Standard room/corridor layout
    }
 
    @Override
    public String tilesTex() {
        return "tiles/sewer.png";
    }
}

Boss level check:

// Level.java
public boolean isBossLevel() {
    return false;
}
 
// Overridden in SewerBossLevel.java (which extends SewerLevel)
public boolean isBossLevel() {
    return true;
}

mr/sewers_level.txt · Last modified: by 127.0.0.1