about summary refs log tree commit diff stats
path: root/data/maps/daedalus/rooms/Hotel.txtpb
blob: d2a05db55b2f0ed5e4caa84d8480fb09963d44aa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
from typing import TYPE_CHECKING

from BaseClasses import Region
from .locations import Lingo2Location
from .player_logic import AccessRequirements
from .rules import make_location_lambda

if TYPE_CHECKING:
    from . import Lingo2World


def create_region(room, world: "Lingo2World") -> Region:
    new_region = Region(world.static_logic.get_room_region_name(room.id), world.player, world.multiworld)

    for location in world.player_logic.locations_by_room.get(room.id, {}):
        new_location = Lingo2Location(world.player, world.static_logic.location_id_to_name[location.code],
                                      location.code, new_region)
        new_location.access_rule = make_location_lambda(location.reqs, world)
        new_region.locations.append(new_location)

    return new_region


def create_regions(world: "Lingo2World"):
    regions = {
        "Menu": Region("Menu", world.player, world.multiworld)
    }

    for room in world.static_logic.objects.rooms:
        region = create_region(room, world)
        regions[region.name] = region

    regions["Menu"].connect(regions["The Entry - Starting Room"], "Start Game")

    # TODO: The requirements of the opposite trigger also matter.
    for connection in world.static_logic.objects.connections:
        from_region = world.static_logic.get_room_region_name(connection.from_room)
        to_region = world.static_logic.get_room_region_name(connection.to_room)
        connection_name = f"{from_region} -> {to_region}"

        reqs = AccessRequirements()

        if connection.HasField("required_door"):
            reqs.merge(world.player_logic.get_door_open_reqs(connection.required_door))

            door pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
name: "Hotel"
panel_display_name: "Southwest Area"
# TODO: Something has to be changed in-game so that the puzzles don't disappear
# and thus cause them to become unsolvable.
panels {
  name: "MARLIN"
  path: "Panels/Connections/connections_2"
  clue: "marlin"
  answer: "fish"
  symbols: QUESTION
}
panels {
  name: "WHO"
  path: "Panels/Connections/connections_3"
  clue: "who"
  answer: "question"
  symbols: QUESTION
}
panels {
  name: "MANE"
  path: "Panels/Connections/connections_5"
  clue: "mane"
  answer: "lion"
  symbols: QUESTION
}
panels {
  name: "WHAT"
  path: "Panels/Connections/connections_6"
  clue: "what"
  answer: "question"
  symbols: QUESTION
}
panels {
  name: "BLAZER"
  path: "Panels/Connections/connections_7"
  clue: "blazer"
  answer: "coat"
  symbols: QUESTION
}
panels {
  name: "WHERE"
  path: "Panels/Connections/connections_8"
  clue: "where"
  answer: "question"
  symbols: QUESTION
}
panels {
  name: "JACKET"
  path: "Panels/Connections/connections_10"
  clue: "jacket"
  answer: "coat"
  symbols: QUESTION
}
panels {
  name: "TAIL"
  path: "Panels/Connections/connections_11"
  clue: "tail"
  answer: "lion"
  symbols: QUESTION
}
panels {
  name: "FLOUNDER"
  path: "Panels/Connections/connections_13"
  clue: "flounder"
  answer: "fish"
  symbols: QUESTION
}
panels {
  name: "BRUCE"
  path: "Panels/Connections/connections_16"
  clue: "bruce"
  answer: "fish"
  symbols: QUESTION
}
panels {
  name: "SALAD"
  path: "Panels/Connections/connections_18"
  clue: "salad"
  answer: "fork"
  symbols: QUESTION
}
panels {
  name: "BATHING"
  path: "Panels/Connections/connections_19"
  clue: "bathing"
  answer: "suit"
  symbols: QUESTION
}
panels {
  name: "BUSINESS"
  path: "Panels/Connections/connections_21"
  clue: "business"
  answer: "suit"
  symbols: QUESTION
}
panels {
  name: "WEDDING"
  path: "Panels/Connections/connections_22"
  clue: "wedding"
  answer: "ring"
  symbols: QUESTION
}
panels {
  name: "TREE"
  path: "Panels/Connections/connections_23"
  clue: "tree"
  answer: "ring"
  symbols: QUESTION
}
panels {
  name: "RIVER"
  path: "Panels/Connections/connections_24"
  clue: "river"
  answer: "fork"
  symbols: QUESTION
}
panels {
  name: "BOXING"
  path: "Panels/Connections/connections_26"
  clue: "boxing"
  answer: "ring"
  symbols: QUESTION
}
panels {
  name: "TELEPHONE"
  path: "Panels/Connections/connections_27"
  clue: "telephone"
  answer: "ring"
  symbols: QUESTION
}
panels {
  name: "POKER"
  path: "Panels/Connections/connections_29"
  clue: "poker"
  answer: "chip"
  symbols: QUESTION
}
panels {
  name: "CHOCOLATE"
  path: "Panels/Connections/connections_32"
  clue: "chocolate"
  answer: "chip"
  symbols: QUESTION
}
panels {
  name: "WITHDRAW"
  path: "Panels/Connections/connections_34"
  clue: "withdraw"
  answer: "exit"
  symbols: QUESTION
}
panels {
  name: "QUIT"
  path: "Panels/Connections/connections_35"
  clue: "quit"
  answer: "exit"
  symbols: QUESTION
}
panels {
  name: "PALE"
  path: "Panels/Connections/connections_37"
  clue: "pale"
  answer: "fair"
  symbols: QUESTION
}
panels {
  name: "JUST"
  path: "Panels/Connections/connections_38"
  clue: "just"
  answer: "fair"
  symbols: QUESTION
}
panels {
  name: "NEW"
  path: "Panels/Connections/connections_39"
  clue: "new"
  answer: "moon"
  symbols: QUESTION
}
panels {
  name: "UNTALENTED"
  path: "Panels/Connections/connections_40"
  clue: "untalented"
  answer: "good"
  symbols: QUESTION
}
panels {
  name: "FULL"
  path: "Panels/Connections/connections_42"
  clue: "full"
  answer: "moon"
  symbols: QUESTION
}
panels {
  name: "EVIL"
  path: "Panels/Connections/connections_43"
  clue: "evil"
  answer: "good"
  symbols: QUESTION
}
panels {
  name: "CRESCENT"
  path: "Panels/Connections/connections_45"
  clue: "crescent"
  answer: "moon"
  symbols: QUESTION
}
panels {
  name: "BEAUTIFUL"
  path: "Panels/Connections/connections_48"
  clue: "beautiful"
  answer: "fair"
  symbols: QUESTION
}
panels {
  name: "DROOPED"
  path: "Panels/Connections/connections_50"
  clue: "drooped"
  answer: "withered"
  symbols: QUESTION
}
panels {
  name: "FADED"
  path: "Panels/Connections/connections_51"
  clue: "faded"
  answer: "withered"
  symbols: QUESTION
}
panels {
  name: "TALL"
  path: "Panels/Connections/connections_53"
  clue: "tall"
  answer: "football"
  symbols: QUESTION
}
panels {
  name: "CANVAS"
  path: "Panels/Connections/connections_54"
  clue: "canvas"
  answer: "painting"
  symbols: QUESTION
}
panels {
  name: "LEVER"
  path: "Panels/Connections/connections_55"
  clue: "lever"
  answer: "leverage"
  symbols: QUESTION
}
panels {
  name: "SCULPTURE"
  path: "Panels/Connections/connections_56"
  clue: "sculpture"
  answer: "painting"
  symbols: QUESTION
}
panels {
  name: "BALL"
  path: "Panels/Connections/connections_58"
  clue: "ball"
  answer: "football"
  symbols: QUESTION
}
panels {
  name: "FOOL"
  path: "Panels/Connections/connections_59"
  clue: "fool"
  answer: "football"
  symbols: QUESTION
}
panels {
  name: "ART"
  path: "Panels/Connections/connections_61"
  clue: "art"
  answer: "painting"
  symbols: QUESTION
}
panels {
  name: "FOOT"
  path: "Panels/Connections/connections_64"
  clue: "foot"
  answer: "football"
  symbols: QUESTION
}
panels {
  name: "PARKA"
  path: "Panels/Connections Off/connections_1"
  clue: "parka"
  answer: "coat"
  symbols: QUESTION
}
panels {
  name: "CLOAK"
  path: "Panels/Connections Off/connections_4"
  clue: "cloak"
  answer: "coat"
  symbols: QUESTION
}
panels {
  name: "DOROTHY"
  path: "Panels/Connections Off/connections_9"
  clue: "dorothy"
  answer: "fish"
  symbols: QUESTION
}
panels {
  name: "JAWS"
  path: "Panels/Connections Off/connections_12"
  clue: "jaws"
  answer: "lion"
  symbols: QUESTION
}
panels {
  name: "WHEN"
  path: "Panels/Connections Off/connections_14"
  clue: "when"
  answer: "question"
  symbols: QUESTION
}
panels {
  name: "CLAWS"
  path: "Panels/Connections Off/connections_15"
  clue: "claws"
  answer: "lion"
  symbols: QUESTION
}
panels {
  name: "POTATO"
  path: "Panels/Connections Off/connections_17"
  clue: "potato"
  answer: "chip"
  symbols: QUESTION
}
panels {
  name: "MICRO"
  path: "Panels/Connections Off/connections_20"
  clue: "micro"
  answer: "chip"
  symbols: QUESTION
}
panels {
  name: "TUNING"
  path: "Panels/Connections Off/connections_25"
  clue: "tuning"
  answer: "fork"
  symbols: QUESTION
}
panels {
  name: "LAW"
  path: "Panels/Connections Off/connections_28"
  clue: "law"
  answer: "suit"
  symbols: QUESTION
}
panels {
  name: "CARD"
  path: "Panels/Connections Off/connections_30"
  clue: "card"
  answer: "suit"
  symbols: QUESTION
}
panels {
  name: "ROAD"
  path: "Panels/Connections Off/connections_31"
  clue: "road"
  answer: "fork"
  symbols: QUESTION
}
panels {
  name: "DEPART"
  path: "Panels/Connections Off/connections_33"
  clue: "depart"
  answer: "exit"
  symbols: QUESTION
}
panels {
  name: "LEAVE"
  path: "Panels/Connections Off/connections_36"
  clue: "leave"
  answer: "exit"
  symbols: QUESTION
}
panels {
  name: "SERVICE"
  path: "Panels/Connections Off/connections_41"
  clue: "service"
  answer: "good"
  symbols: QUESTION
}
panels {
  name: "HONEY"
  path: "Panels/Connections Off/connections_44"
  clue: "honey"
  answer: "moon"
  symbols: QUESTION
}
panels {
  name: "INVALID"
  path: "Panels/Connections Off/connections_46"
  clue: "invalid"
  answer: "good"
  symbols: QUESTION
}
panels {
  name: "FESTIVAL"
  path: "Panels/Connections Off/connections_47"
  clue: "festival"
  answer: "fair"
  symbols: QUESTION
}
panels {
  name: "WILTED"
  path: "Panels/Connections Off/connections_49"
  clue: "wilted"
  answer: "withered"
  symbols: QUESTION
}
panels {
  name: "WANED"
  path: "Panels/Connections Off/connections_52"
  clue: "waned"
  answer: "withered"
  symbols: QUESTION
}
panels {
  name: "RAGE"
  path: "Panels/Connections Off/connections_57"
  clue: "rage"
  answer: "leverage"
  symbols: QUESTION
}
panels {
  name: "VERGE"
  path: "Panels/Connections Off/connections_60"
  clue: "verge"
  answer: "leverage"
  symbols: QUESTION
}
panels {
  name: "EVER"
  path: "Panels/Connections Off/connections_62"
  clue: "ever"
  answer: "leverage"
  symbols: QUESTION
}
panels {
  name: "PAIN"
  path: "Panels/Connections Off/connections_63"
  clue: "pain"
  answer: "painting"
  symbols: QUESTION
}