* // begin locking automatic doors se->nw #Door_NW = #Position.X,#Position.Y * // note: is also RoomTriggerEnter position #Door_SE = #Position.X,#Position.Y * // note: is also RoomFurrePosition #HallFurrePosition = #Position.X,#Position.Y #RoomTriggerExit = #Position.X,#Position.Y #LockTrigger = #Position.X,#Position.Y #LockPosition = #Position.X,#Position.Y #LockedIndicator = #ObjectType #UnLockedIndicator = #ObjectType #Nothing = #ObjectType #OpenedDoorType = #ObjectType #LockedDoorType = #ObjectType #UnLockedDoorType = #ObjectType * // toggle the lock, only if door is closed * // we test this real simply by checking the hall door. (0:7) When somebody moves into position (#LockTrigger), (1:1014) and position (#Door_NW) is not object type #Nothing, (3:2) at position (#LockPosition) on the map, (5:6) swap object types #UnLockedIndicator and #LockedIndicator. * // unlock the doors (0:7) When somebody moves into position (#LockTrigger), (1:54) and 2 step(s) NE & 1 step(s) NW from the triggering furre is object #UnLockedIndicator, (3:2) at position (#Door_SE) on the map, (5:5) change object type #LockedDoorType to type #UnLockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #LockedDoorType to type #UnLockedDoorType. * // lock the doors (0:7) When somebody moves into position (#LockTrigger), (1:54) and 2 step(s) NE & 1 step(s) NW from the triggering furre is object #LockedIndicator, (3:2) at position (#Door_SE) on the map, (5:5) change object type #UnLockedDoorType to type #LockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #UnLockedDoorType to type #LockedDoorType. * // if door is locked and trying to get out, unlock the door if needed, * // then switch to opened door state (0:7) When somebody moves into position (#Door_SE), (1:16) and the triggering furre is facing northwest (up and left), (3:2) at position (#LockPosition) on the map, (5:5) change object type #LockedIndicator to type #UnLockedIndicator. (3:2) at position (#Door_SE) on the map, (5:5) change object type #LockedDoorType to type #OpenedDoorType. (5:5) change object type #UnLockedDoorType to type #OpenedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #LockedDoorType to type #Nothing. (5:5) change object type #UnLockedDoorType to type #Nothing. * // when inside the room, bump the furre back if they walk into the open door, * // then close the door. (0:1) Whenever somebody moves, (1:19) and they (moved from/are standing at) position (#Door_SE), (1:13) and the triggering furre is facing northeast (up and right), (1:1013) and position (#Door_SE) is object type #OpenedDoorType, (5:18) move the triggering furre back where they came from. (3:2) at position (#Door_SE) on the map, (5:5) change object type #OpenedDoorType to type #UnLockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #Nothing to type #UnLockedDoorType. * // open the door only if a furre appoaches the door straight on, * // prevents doors from popping open as furres pass them (0:7) When somebody moves into position (#HallFurrePosition), (1:14) and the triggering furre is facing southeast (down and right), (1:1101) and there's no furre at (#Door_SE), (1:1013) and position (#LockPosition) is object type #UnLockedIndicator, (3:2) at position (#Door_SE) on the map, (5:5) change object type #UnLockedDoorType to type #OpenedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #UnLockedDoorType to type #Nothing. * // only if the is door open, allow a furre to exit the room. * // note that the design of this code, prevents a furre from leaving * // if the space outside in the hall is occupied, * // but will attempt to clear the hallway square of any furres. (0:7) When somebody moves into position (#RoomTriggerExit), (1:1013) and position (#Door_SE) is object type #OpenedDoorType, (5:14) move the triggering furre to (#HallFurrePosition) if there's nobody already there. (0:7) When somebody moves into position (#RoomTriggerExit), (1:1013) and position (#Door_SE) is object type #OpenedDoorType, (1:1100) and there's a furre at (#Door_SE), (3:2) at position (#HallFurrePosition) on the map, (5:83) move any furre present 1 step(s) northwest (up and left) if there's nobody already there. (5:80) move any furre present 1 step(s) northeast (up and right) if there's nobody already there. (5:82) move any furre present 1 step(s) southwest (down and left) if there's nobody already there. * // otherwise open the door * // if door is locked, unlock and open (0:7) When somebody moves into position (#RoomTriggerExit), (1:16) and the triggering furre is facing northwest (up and left), (3:2) at position (#LockPosition) on the map, (5:5) change object type #LockedIndicator to type #UnLockedIndicator. (3:2) at position (#Door_SE) on the map, (5:5) change object type #LockedDoorType to type #UnLockedDoorType. (5:5) change object type #UnLockedDoorType to type #OpenedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #LockedDoorType to type #UnLockedDoorType. (5:5) change object type #UnLockedDoorType to type #Nothing. * // enter the room if door is unlocked, * // can always enter without throwing door open first. * // again, code design is to prevent a furre from entering * // if the space just inside the door occupied, * // code attempts to clear space. (0:7) When somebody moves into position (#Door_NW), (1:1013) and position (#LockPosition) is object type #UnLockedIndicator, (5:14) move the triggering furre to (#Door_SE) if there's nobody already there. (3:2) at position (#Door_NW) on the map, (5:5) change object type #UnLockedDoorType to type #Nothing. (3:2) at position (#Door_SE) on the map, (5:5) change object type #UnLockedDoorType to type #OpenedDoorType. (0:7) When somebody moves into position (#Door_NW), (1:1013) and position (#LockPosition) is object type #UnLockedIndicator, (1:1100) and there's a furre at (#HallFurrePosition), (3:2) at position (#Door_SE) on the map, (5:81) move any furre present 1 step(s) southeast (down and right) if there's nobody already there. (5:82) move any furre present 1 step(s) southwest (down and left) if there's nobody already there. * // here for completeness, not possible in the test dream for this door, * // but this closes the inside door if run into from the opposite side. (0:7) When somebody moves into position (#Door_SE), (1:15) and the triggering furre is facing southwest (down and left), (1:5) and they successfully moved, (3:2) at position (#Door_SE) on the map, (5:5) change object type #OpenedDoorType to type #UnLockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #Nothing to type #UnLockedDoorType. * // close the door, furre leaves the target area on inside, * // not going through the door, not running into door. (0:1) Whenever somebody moves, (1:19) and they (moved from/are standing at) position (#Door_SE), (1:113) and the triggering furre is not facing northeast (up and right), (1:116) and the triggering furre is not facing northwest (up and left), (1:1101) and there's no furre at (#HallFurrePosition), (3:2) at position (#Door_SE) on the map, (5:5) change object type #OpenedDoorType to type #UnLockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #Nothing to type #UnLockedDoorType. * // close the door, when the furre leaves the target area out in the hallway. * // note that neither section will trigger if another furre steps * // into the trigger square on the other side of the door. (0:1) Whenever somebody moves, (1:19) and they (moved from/are standing at) position (#HallFurrePosition), (1:114) and the triggering furre is not facing southeast (down and right), (1:1101) and there's no furre at (#Door_SE), (3:2) at position (#Door_SE) on the map, (5:5) change object type #OpenedDoorType to type #UnLockedDoorType. (3:2) at position (#Door_NW) on the map, (5:5) change object type #Nothing to type #UnLockedDoorType. * // end locking automatic doors