Commenting and cleanups

This commit is contained in:
Aaron Traas 2018-12-10 09:51:58 -05:00
parent e7dc3eab5d
commit 8c6593ad0c
2 changed files with 29 additions and 17 deletions

View file

@ -46,18 +46,24 @@
#define STASHED(obj) (-1 - game.prop[obj]) #define STASHED(obj) (-1 - game.prop[obj])
/* /*
* DESTROY(N) = Get rid of an item by putting it in LOC_NOWHERE
* MOD(N,M) = Arithmetic modulus * MOD(N,M) = Arithmetic modulus
* TOTING(OBJ) = true if the OBJ is being carried
* AT(OBJ) = true if on either side of two-placed object * AT(OBJ) = true if on either side of two-placed object
* CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit)
* DARK(LOC) = true if location "LOC" is dark
* FORCED(LOC) = true if LOC moves without asking for input (COND=2)
* FOREST(LOC) = true if LOC is part of the forest
* GSTONE(OBJ) = true if OBJ is a gemstone
* HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried) * HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried)
* CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit)
* LIQUID() = object number of liquid in bottle * LIQUID() = object number of liquid in bottle
* LIQLOC(LOC) = object number of liquid (if any) at LOC * LIQLOC(LOC) = object number of liquid (if any) at LOC
* FORCED(LOC) = true if LOC moves without asking for input (COND=2)
* DARK(LOC) = true if location "LOC" is dark
* PCT(N) = true N% of the time (N integer from 0 to 100) * PCT(N) = true N% of the time (N integer from 0 to 100)
* TOTING(OBJ) = true if the OBJ is being carried */ * GSTONE(OBJ) = true if OBJ is a gemstone
* FOREST(LOC) = true if LOC is part of the forest
* OUTSID(LOC) = true if locaiton not in the cave
* INSIDE(LOC) = true if locaiton is in the cave or the building at the beginning of the game
* INDEEP(LOC) = true if locaiton is in the Hall of Mists or deeper
* BUG(X) = report bug and exit
*/
#define DESTROY(N) move(N, LOC_NOWHERE) #define DESTROY(N) move(N, LOC_NOWHERE)
#define MOD(N,M) ((N) % (M)) #define MOD(N,M) ((N) % (M))
#define TOTING(OBJ) (game.place[OBJ] == CARRIED) #define TOTING(OBJ) (game.place[OBJ] == CARRIED)

28
main.c
View file

@ -217,8 +217,6 @@ static void checkhints(void)
} }
} }
} }
} }
static bool spotted_by_pirate(int i) static bool spotted_by_pirate(int i)
@ -458,20 +456,25 @@ static bool dwarfmove(void)
static void croak(void) static void croak(void)
/* Okay, he's dead. Let's get on with it. */ /* Okay, he's dead. Let's get on with it. */
{ {
if (game.numdie < 0)
game.numdie = 0; // LCOV_EXCL_LINE
const char* query = obituaries[game.numdie].query; const char* query = obituaries[game.numdie].query;
const char* yes_response = obituaries[game.numdie].yes_response; const char* yes_response = obituaries[game.numdie].yes_response;
++game.numdie; ++game.numdie;
if (game.closng) { if (game.closng) {
/* He died during closing time. No resurrection. Tally up a /* He died during closing time. No resurrection. Tally up a
* death and exit. */ * death and exit. */
rspeak(DEATH_CLOSING); rspeak(DEATH_CLOSING);
terminate(endgame); terminate(endgame);
} else if ( !yes(query, yes_response, arbitrary_messages[OK_MAN]) } else if (!yes(query, yes_response, arbitrary_messages[OK_MAN])
|| game.numdie == NDEATHS) || game.numdie == NDEATHS) {
/* Player is asked if he wants to try again. If not, or if
* he's already used all of his lives, we end the game */
terminate(endgame); terminate(endgame);
else { } else {
/* If player wishes to continue, we empty the liquids in the
* user's inventory, turn off the lamp, and drop all items
* where he died. */
game.place[WATER] = game.place[OIL] = LOC_NOWHERE; game.place[WATER] = game.place[OIL] = LOC_NOWHERE;
if (TOTING(LAMP)) if (TOTING(LAMP))
game.prop[LAMP] = LAMP_DARK; game.prop[LAMP] = LAMP_DARK;
@ -486,8 +489,11 @@ static void croak(void)
} }
} }
static void describe_location(void) { static void describe_location(void)
/* Describe the location to the user */
{
const char* msg = locations[game.loc].description.small; const char* msg = locations[game.loc].description.small;
if (MOD(game.abbrev[game.loc], game.abbnum) == 0 || if (MOD(game.abbrev[game.loc], game.abbnum) == 0 ||
msg == NO_MESSAGE) msg == NO_MESSAGE)
msg = locations[game.loc].description.big; msg = locations[game.loc].description.big;
@ -501,7 +507,7 @@ static void describe_location(void) {
speak(msg); speak(msg);
if (game.loc == LOC_Y2 && PCT(25) && !game.closng) // FIXME: magic number if (game.loc == LOC_Y2 && PCT(25) && !game.closng)
rspeak(SAYS_PLUGH); rspeak(SAYS_PLUGH);
} }
@ -736,7 +742,7 @@ static void playermove(int motion)
if (game.prop[TROLL] == TROLL_PAIDONCE) { if (game.prop[TROLL] == TROLL_PAIDONCE) {
pspeak(TROLL, look, true, TROLL_PAIDONCE); pspeak(TROLL, look, true, TROLL_PAIDONCE);
game.prop[TROLL] = TROLL_UNPAID; game.prop[TROLL] = TROLL_UNPAID;
move(TROLL2, LOC_NOWHERE); DESTROY(TROLL2);
move(TROLL2 + NOBJECTS, IS_FREE); move(TROLL2 + NOBJECTS, IS_FREE);
move(TROLL, objects[TROLL].plac); move(TROLL, objects[TROLL].plac);
move(TROLL + NOBJECTS, objects[TROLL].fixd); move(TROLL + NOBJECTS, objects[TROLL].fixd);
@ -865,7 +871,7 @@ static bool closecheck(void)
game.dseen[i] = false; game.dseen[i] = false;
game.dloc[i] = LOC_NOWHERE; game.dloc[i] = LOC_NOWHERE;
} }
move(TROLL, LOC_NOWHERE); DESTROY(TROLL);
move(TROLL + NOBJECTS, IS_FREE); move(TROLL + NOBJECTS, IS_FREE);
move(TROLL2, objects[TROLL].plac); move(TROLL2, objects[TROLL].plac);
move(TROLL2 + NOBJECTS, objects[TROLL].fixd); move(TROLL2 + NOBJECTS, objects[TROLL].fixd);