scriptname barredDoor extends objectReference {script which must be on any barred door} ;======================================================================================; ; PROPERTIES / ;=============/ bool property barred = true auto hidden {is this door barred? Controlled by linked DoorBar object. Default:true} bool property busy = false auto hidden {bool that tracks whether the BOLT is moving} message property BarredMSG auto {set the "door is barred from the other side" message here"} message property UnlockMeMSG auto {set the "must raise deadbolt" message here"} sound property barredSFX auto {set the "ker-clunk" sfx for a door that cannot open here} ; need to communicate with my bar's script doorBar barScript objectReference myLink EVENT onCellLoad() myLink = getLinkedRef() barScript = myLink as doorBar endEVENT EVENT onActivate(objectReference actronaut) ; ;debug.trace("bolt state is: " + barScript.getState() + "(" + barScript + ")") if busy == TRUE ; do nothing if the bolt is in motion else if barred == true && actronaut == game.getPlayer() if actronaut.getDistance(self) < actronaut.getDistance(myLink) ; I cannot be opened from this side! barredMSG.show() else ; player is closer to bar than the door, so must be on the "right" side UnlockMeMSG.show() endif ; either way, play a nice ker-chunk sound to feedback why door isn't opening if barredSFX barredSFX.play(self) endif ; add a tiny rumble bump for good measure game.shakeController(0.1, 0.1, 0.1) else ; do a redundant check here if getOpenState() == 3 || busy == TRUE ; ;debug.trace("Something is wrong, do nothing" + self) return else ; ;debug.trace("open " + self) ; not barred, so allow normal activation. endif endif endif endEVENT