about summary refs log tree commit diff stats
path: root/data/maps/the_extravagant/rooms/X Minus Right Leg.txtpb
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-12 14:15:56 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-12 14:15:56 -0400
commit7a0ea73b99d767badea8f7a4c07011af7fcfe8df (patch)
tree8b9fc026a247f9a392c8d581a8b949c9e04f44f0 /data/maps/the_extravagant/rooms/X Minus Right Leg.txtpb
parent09bfb81070d6067abb6b7b4229d1d0ed62e806f9 (diff)
downloadlingo2-archipelago-7a0ea73b99d767badea8f7a4c07011af7fcfe8df.tar.gz
lingo2-archipelago-7a0ea73b99d767badea8f7a4c07011af7fcfe8df.tar.bz2
lingo2-archipelago-7a0ea73b99d767badea8f7a4c07011af7fcfe8df.zip
Released Apworld & Client v3.2
Diffstat (limited to 'data/maps/the_extravagant/rooms/X Minus Right Leg.txtpb')
0 files changed, 0 insertions, 0 deletions
nd-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 .generated import common_pb2 as common_pb2
from typing import TYPE_CHECKING, NamedTuple

if TYPE_CHECKING:
    from . import Lingo2World


class PlayerLocation(NamedTuple):
    code: int | None


class Lingo2PlayerLogic:
    locations_by_room: dict[int, list[PlayerLocation]]

    def __init__(self, world: "Lingo2World"):
        self.locations_by_room = {}

        for door in world.static_logic.objects.doors:
            if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.LOCATION_ONLY]:
                self.locations_by_room.setdefault(door.room_id, []).append(PlayerLocation(door.ap_id))