INFORM 6: Having trouble with getting reactions to verbs

Okay, I’m not here to bore you with a description of the game I’m working on or any other irrelevent stuff. Here’s the situation:

I’ve got a couch, right? A particularly squeaky one, that squeaks whenever you sit down on it or stand up from it. Therefore, I put in an “after” routine to illustrate this squeakitude to the player. Sitting down on the couch (entering it) produces the desired message (“the couch makes a squeak as you sit down”, basically). However, when I tell it to do pretty much the same thing with getting off the couch (or exiting it), I run into an annoying snag: when the player types “stand”, “stand up”, “out”, “exit”, “get off”, or “get up”, the game simply says the default “You get off the couch.” Only when he/she types “exit couch” is the desired response (“the couch squeaks as you get up”) printed.

So, yeah, what do I do? Normally I’d let this slide, but I intend to add several different puzzle-important phrases related to entering/exiting the couch, and the standard “you get off the couch” just won’t do.

Here’s the code, if anyone would be so kind as to point out my (likely very glaring) mistake:

Object  couch_breakroom "couch" breakroom
  with  name 'couch' 'sofa',
	  "The break room's new couch sits, squat and utilitarian, against the wall.",
	  "This particular couch isn't really anything special, and in truth, has a long way to go before it can live up to the legacy of the break room's
	  previous couch. It's way too squeaky, constantly moaning and groaning whenever anyone sits on it.",
	after [;
	    "The couch makes a nauseating, high-pitched groan as you sit down.^";
	    return true;
	    "The couch makes a disquieting groan as you stand up from it.^";
	    return true;
  has   static supporter transparent enterable;

Massive, massive props to any and everyone who helps me out here; this is my first true Inform 6 game.

Using “react_after” instead of “after” is likely to help. I copied your object code and it worked.

react_after will be called whenever the player successfully exits any container/supporter, so you will have to put a check such as if (noun == self).

It worked! Thanks, guys!

A harder way is to separate “stand” from “exit”, and then recode “stand” to do whatever you want on a class basis. If you do this, you can also forbid the room description from displaying when the character gets up. (The latter has always annoyed the poop out of me.)