Erroneous I6 return value for "descend to specific action-processing rule"?

The versions of the DESCEND_TO_SPECIFIC_ACTION_R() routine in Glulx.i6t and ZMachine.i6t both end by returning true instead of false.

It is not clear that this is intentional, because this return value prevents execution of the end action-processing in success rule listed in Section SR2/10 - Action processing of the Standard Rules. If an author tries to insert a rule at the end of the action-processing rules, it will be difficult to understand why the newly-placed rule isn’t being run.

As an example, the following will produce no output:

This is the bing rule:
	say "Bing!"

The bing rule is listed after the descend to specific action-processing rule in the action-processing rules.

However, it will work as expected if the DESCEND_TO_SPECIFIC_ACTION_R() routine is replaced with a version that returns false.

Is there a good reason for the current return value that I’m not seeing? If so, is the end action-processing in success rule entirely superfluous?

4 Likes

I’m guessing this is in the “vestige of something that made sense at the time” category. end action-processing in success rule does look superfluous to me.

The fact that it always returns true means that the rule will always make a decision

I suppose it may be a belt-and-braces thing so that action-processing that has reached the Check stage returns by default as success even if the descend to specific action processing rule has been replaced with a version that doesn’t necessarily return true?