Global Before Enter Script

I need to add player.lastroom = player.parent to all room's 'before enter script'
at one time.
Is there a room list saved by Quest?
oh wait...
In Start Script I add:

foreach (obj, AllRooms ()) {
  obj.beforeenter => {
    player.lastroom = player.parent
  }
}

I know we've hashed this out years ago but I can't find it.
Isn't this the easiest way to store the last room the player was in?


Just put it in the player.changedparent script. Something like:

player.lastroom = oldvalue

Then, every time the player moves, player.lastroom will automatically record the previous room (oldvalue contains the change script's previous object value).


I saw the changedparent script but still didn't understand exactly what it was doing. I will try it.
EDIT: Indeed that works.
Thanks


So if I want the last value of any object.attribute that changed in the game I can add a "changedwhatever" attribute to that object and store that value? I understood that Quest recognized any attribute that started with "changed", but never new exactly what it did.
Simply saves old values...Hmm


Might be worth noting that there is a script game.roomenter which is run whenever the player changes room. It triggers after the room description, but before the room's enter script.

However, in this case changedparent is a lot better because that script has access to the previous value of the variable.

(Actually, that's something I should suggest for the next version of Quest: the old and new rooms should be passed to any scripts that are run. It would be extremely simple to do, and make it a lot easier to do stuff like this)


@Forgewright -
A change script just kicks in immediately whenever its underlying attribute changes values, e.g., when the value of player.parent changes, then the player.changedparent script automatically runs. oldvalue is a Quest special variable that temporarily (within that change script) records the value of that attribute before the change.


This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums