Character.Walk(int x, int y, optional BlockingStyle, optional WalkWhere);
Statt cBernard.Walk(229, 129); schreibst Du cBernard.Walk(229, 129, eBlock);
Bernard läuft los, und erst, wenn er angekommen ist, wird der nächste Befehl im Skript ausgeführt. (RTFM!!)
Bezüglich des anderen Problems:
Die allererste Zahl im Funktionsaufruf von any_click_on_door() ist die GlobalInt der Tür, in diesem Fall 4, die zweite Zahl ist die Nummer des Objekts im betreffenden Raum.
Du musst also in die Player enters screen (before fadein)-Interaction des oberen Flurs folgendes schreiben:
Code: Alles auswählen
if (cBernard.PreviousRoom==[Raumnummer von Britneys Zimmer]) {
SetGlobalInt(4,2); // abschließen
ObjectOff(1); // offene Tür nicht mehr anzeigen
}