gelat door detail (Gelat Door)



Gelatinous Door / DoorExit Reference

    This topic preserves the original Gelatinous concrete-door help.

    These are physical:

        typeclasses.doors.DoorExit

    doors using:

        world.access

    This is separate from TBG property-door runtime.

    Current TBG help remains available through:

        help door
        help @door

    This donor reference intentionally does NOT take either of those names.


    ORIGINAL GELAT DOOR VERBS

    Door verbs (verticality §2.1) — all real player commands, and the
    same verbs NPCs use (the level-playing-field mandate).

        open <door>
            Open it. A locked door needs your sleeve granted;
            opening it when granted UNLOCKS it for real.

        close <door>
            Shut it.

        lock <door>
            Shut and seal it. Granted sleeves only.

        unlock <door>
            Release the lock. Granted sleeves only.

        knock <door>
            Heard on the far side, attributed by sound only.


    OPEN

        open <door>

    A locked door reads your sleeve: granted, it unlocks and opens;
    otherwise the reader blinks red.

    With one Gelat door in the Room:

        open door

    is sufficient.

    If the door is already open, nothing changes.


    CLOSE

        close <door>

    Anyone may close an ordinary door.

    If the door has:

        db.door_autolock = True

    closing it also re-engages the lock.

    A broken Gelat door cannot be closed normally.


    LOCK

        lock <door>

    Locks the door and closes it first if necessary.

    The current donor implementation requires the current sleeve to appear
    in that door's access-grant file.


    UNLOCK

        unlock <door>

    Releases the lock but leaves the door closed.

    The current donor implementation requires the current sleeve to appear
    in the access-grant file.


    KNOCK

        knock <door>

    A closed door produces sound on both sides.

    The caller receives:

        You knock on the door.

    The far side hears a knock without magically learning the caller's
    identity.

    If the door is already open, the donor response is:

        It's open — just walk through.


    BUILDER GRANT FILE — ORIGINAL GELAT @DOOR

    Builders manage the §2.2 grant file with:

        @door <exit>

            Hang a Gelat door on an existing Exit pair.

        @door/grant <door> = <char>

            Add <char>'s sleeve to the grant file.

        @door/revoke <door> = <char>

            Remove <char>'s sleeve from the grant file.

        @door/list <door>

            Read the grant file.

        @door/lock <door>

            Force-lock with no sleeve check.

        @door/unlock <door>

            Force-unlock with no sleeve check.

        @door/open <door>

            Force-open with no sleeve check.

        @door/close <door>

            Force-close with no sleeve check.


    HANGING A DOOR

    The donor builder workflow starts with an existing Exit pair.

    Stand on one side and use:

        @door <exit>

    The command converts the matching Exit and, when found, its return Exit
    into:

        typeclasses.doors.DoorExit

    The two leaves are linked through:

        db.door_twin

    A newly hung Gelat door starts:

        closed
        unlocked

    The donor then expects staff to establish its grant file and lock state.


    GRANT FILE

    Inspect:

        @door/list <door>

    Grant:

        @door/grant <door> = <character>

    Revoke:

        @door/revoke <door> = <character>

    Access is physical-body-specific in the current donor implementation.

    Current persisted terminology is:

        sleeve
        sleeve_uid

    This wording is intentionally preserved here because that is what the
    current mechanics still store.

    The locked future terminology migration is:

        sleeve      -> clone
        sleeve_uid  -> clone_id

    Do NOT manually rename access-grant Attributes ahead of that migration.


    FORCED BUILDER STATE

    Staff may bypass ordinary authorization when administering a fixture:

        @door/lock <door>
        @door/unlock <door>
        @door/open <door>
        @door/close <door>

    These mutate both sides of a paired Gelat door through its mirrored
    physical state.


    RESIDENCE USE

    Gelat residence Rooms use the same physical DoorExit system.

    A rentable/assigned unit normally records its hall-side door as:

        room.db.cube_door

    Residence assignment through:

        world.rental.assign_cube(...)

    installs the appropriate access grant.

    See:

        help gelat residence builder


    FACTION / ORGANIZATION USE

    The concrete Gelat door itself is not inherently a residence.

    The same physical door/grant mechanism may therefore be useful for
    faction, organization, restricted-workspace, armory, clinic, barracks,
    locker-room, or similar persistent spaces.

    Any future faction/organization authorization integration should remain
    outside the DoorExit command UI and use an audited access-service seam.


    RELATED HELP

        help door
        help @door
        help gelat residence builder
        help gelat locker reference