projects
/
open-adventure.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
e7dc3ea
)
Commenting and cleanups
277/head
author
Aaron Traas
<aaron@traas.org>
Mon, 10 Dec 2018 14:51:58 +0000
(09:51 -0500)
committer
Aaron Traas
<aaron@traas.org>
Mon, 10 Dec 2018 15:56:35 +0000
(10:56 -0500)
advent.h
patch
|
blob
|
history
main.c
patch
|
blob
|
history
diff --git
a/advent.h
b/advent.h
index dc81ed5fd55b6e9c625bfc281493ffc4c441f243..c2f473c4909e61bf456aa21a392e5cd9ffae5319 100644
(file)
--- a/
advent.h
+++ b/
advent.h
@@
-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
* LIQLOC(LOC) = object number of liquid (if any) at LOC
* LIQUID() = object number of liquid in bottle
* 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 MOD(N,M) ((N) % (M))
#define TOTING(OBJ) (game.place[OBJ] == CARRIED)
#define DESTROY(N) move(N, LOC_NOWHERE)
#define MOD(N,M) ((N) % (M))
#define TOTING(OBJ) (game.place[OBJ] == CARRIED)
diff --git
a/main.c
b/main.c
index 0ad375bfe22c5c2f45701f15904eca1245a6f58b..5bf7d9522a57e8d4c360a12791f3388c2fb0164f 100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-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)
/* Okay, he's dead. Let's get on with it. */
{
static void croak(void)
/* 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* yes_response = obituaries[game.numdie].yes_response;
const char* query = obituaries[game.numdie].query;
const char* yes_response = obituaries[game.numdie].yes_response;
+
++game.numdie;
++game.numdie;
+
if (game.closng) {
/* He died during closing time. No resurrection. Tally up a
* death and exit. */
rspeak(DEATH_CLOSING);
terminate(endgame);
if (game.closng) {
/* He died during closing time. No resurrection. Tally up a
* death and exit. */
rspeak(DEATH_CLOSING);
terminate(endgame);
- } else if ( !yes(query, yes_response, arbitrary_messages[OK_MAN])
- || game.numdie == NDEATHS)
+ } else if (!yes(query, yes_response, arbitrary_messages[OK_MAN])
+ || 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;
if (TOTING(LAMP))
game.prop[LAMP] = LAMP_DARK;
game.place[WATER] = game.place[OIL] = LOC_NOWHERE;
if (TOTING(LAMP))
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 ||
msg == NO_MESSAGE)
msg = locations[game.loc].description.big;
if (MOD(game.abbrev[game.loc], game.abbnum) == 0 ||
msg == NO_MESSAGE)
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) {
pspeak(TROLL, look, true, TROLL_PAIDONCE);
game.prop[TROLL] = TROLL_UNPAID;
if (game.prop[TROLL] == TROLL_PAIDONCE) {
pspeak(TROLL, look, true, TROLL_PAIDONCE);
game.prop[TROLL] = TROLL_UNPAID;
-
move(TROLL2, LOC_NOWHERE
);
+
DESTROY(TROLL2
);
move(TROLL2 + NOBJECTS, IS_FREE);
move(TROLL, objects[TROLL].plac);
move(TROLL + NOBJECTS, objects[TROLL].fixd);
move(TROLL2 + NOBJECTS, IS_FREE);
move(TROLL, objects[TROLL].plac);
move(TROLL + NOBJECTS, objects[TROLL].fixd);
@@
-865,7
+871,7
@@
static bool closecheck(void)
game.dseen[i] = false;
game.dloc[i] = LOC_NOWHERE;
}
game.dseen[i] = false;
game.dloc[i] = LOC_NOWHERE;
}
-
move(TROLL, LOC_NOWHERE
);
+
DESTROY(TROLL
);
move(TROLL + NOBJECTS, IS_FREE);
move(TROLL2, objects[TROLL].plac);
move(TROLL2 + NOBJECTS, objects[TROLL].fixd);
move(TROLL + NOBJECTS, IS_FREE);
move(TROLL2, objects[TROLL].plac);
move(TROLL2 + NOBJECTS, objects[TROLL].fixd);