Improve documentation if the *most* obscure span of code.

This commit is contained in:
Eric S. Raymond 2017-06-28 20:24:29 -04:00
parent 6150e3be1f
commit 7281c39807
2 changed files with 12 additions and 7 deletions

16
main.c
View file

@ -625,20 +625,24 @@ static bool playermove(token_t verb, int motion)
for (;;) { /* L12 loop */ for (;;) { /* L12 loop */
for (;;) { for (;;) {
game.newloc = scratchloc / 1000; game.newloc = scratchloc / 1000;
motion = MOD(game.newloc, 100); long arg = MOD(game.newloc, 100);
if (!SPECIAL(game.newloc)) { if (!SPECIAL(game.newloc)) {
/* YAML N and [pct N] conditionals */
if (game.newloc <= 100) { if (game.newloc <= 100) {
if (game.newloc == 0 || PCT(game.newloc)) if (game.newloc == 0 || PCT(game.newloc))
break; break;
/* else fall through */ /* else fall through */
} }
/* handles the YAML "with" clause */ /* YAML [with OBJ] clause */
if (TOTING(motion) || (game.newloc > 200 && AT(motion))) if (TOTING(arg) || (game.newloc > 200 && AT(arg)))
break; break;
/* else fall through */ /* else fall through to check [not OBJ STATE] */
} else if (game.prop[motion] != game.newloc / 100 - 3) } else if (game.prop[arg] != game.newloc / 100 - 3)
break; break;
do {
/* We arrive here on conditional failure.
* Skip to next non-matching destination */
do {
if (travel[kk].stop) if (travel[kk].stop)
BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE
++kk; ++kk;

View file

@ -150,7 +150,8 @@ typedef struct {{
* encoding description for travel. * encoding description for travel.
*/ */
#define T_DESTINATION(entry) MOD((entry).dest, 1000) #define T_DESTINATION(entry) MOD((entry).dest, 1000)
#define T_NODWARVES(entry) ((entry).dest / 1000 == 100) #define T_CONDITION(entry) ((entry).dest / 1000)
#define T_NODWARVES(entry) (T_CONDITION(entry) == 100)
#define T_HIGH(entry) ((entry).dest) #define T_HIGH(entry) ((entry).dest)
#define T_TERMINATE(entry) ((entry).motion == 1) #define T_TERMINATE(entry) ((entry).motion == 1)
#define L_SPEAK(loc) ((loc) - 500) #define L_SPEAK(loc) ((loc) - 500)