Hit me with a stick

I am trying to move my elevator between floors, which I have defined as regions (Underground, First Floor, Second Floor).

Here’s the code:

Carry out pressing button:
now the current level of the Left Elevator is the number understood;
say “You press button [the number understood]. The lift whirs into action and moves to the correct level.”; [if [the number understood] is 0] now player is in Basement; [otherwise [if [the number undertood] is 2]] now player is in Mezzanine; [otherwise [if [the number understood] is 1]] now player is in Hallway.

Howsomeever: I push a button, and the readout is always:

Basement
You can go west, east, northwest or northeast.

Mezzanine
You can go west, east, northwest or northeast.

Hallway
You can go south, west, east, northwest or northeast.

All the above in response to the one command: Press (whichever number I select).

All your if-statements are commented out (they have brackets around them and are not part of quoted text), so the net effect is to move the player to each floor in turn regardless of which button was selected.

This is probably what you want.

Carry out pressing button:
    now the current level of the left elevator is the number understood;
    say "Your description here...";
    if the number understood is:
        -- 0:
            now the player is in the Basement;
        -- 1:
            now the player is in the Mezzanine;
        -- 2:
            now the player is in the Hallway.

This construction is the Inform equivalent of a switch-case in C-like languages.

Thank you.