class Labyrinth {
    + void shake()
    + void split(room room)
    + void merge(room src, room dst)
    + void teleport(Player player, room room)
}

class room {
    int capacity
    boolean poisonous
    + void setPoisonous(Time duration)
    + void onEnter(Student student)
    + void onEnter(Professor professor)
    + void onEnter(Player player)
    + void onLeave(Player player)
    + void addActiveItem(Item item)
    + void deleteActiveItem(Item item) 
}
class Door {
    room to
    boolean visible
    boolean cursed
    boolean canGoThrough() 
}
Labyrinth *-- Door
Labyrinth *-- room
Labyrinth *-- Hallgato
Labyrinth *-- Oktato

room o-- "*"  Player
room *-- "items"  Item
room *-- "activeItems"  Item