After going rules occur after the movement but before the new location description is shown (and by default will prevent the description being shown, as you’ve discovered).
This is fine if something is happening as a result of the movement itself, but usually when I think I want to write an
after going rule it’s because I want something to happen shortly after the player has arrived in the new location, and I think it’s better to show that by printing the location description first and then the consequences afterwards. The simplest method I’ve found to do this is to use an
every turn rule instead:
Every turn when the location is Boat Dock:
if the player is wearing Maintenance Jumpsuit and Maintenance Worker is carrying the Maintenance Key:
now the player carries the Maintenance Key;
say "The Worker looks at you and says 'Hey new guy, go fix the vending machine over by the gift shop.'[paragraph break]He tosses you a key."
This also forces you to remember to write the conditions such that it will only happen once (or however often you actually want it to happen), which can be easy to forget in an
(You can actually combine all the conditions into the header of the rule, which is actually slightly better if you use
rules tracing, but otherwise doesn’t make any real difference – although it does have an effect on the order that rules execute.)
Incidentally, when you want to post code snippets you should surround the code block with three backticks (```); this preserves the spacing and prevents quotes from being changed, keeping the proper formatting as above.