Spread documentation from init.c It was empty without anything to document. Reindented, too
This commit is contained in:
parent
7f2c118e56
commit
0a87fc9f78
5 changed files with 95 additions and 101 deletions
64
advent.h
64
advent.h
|
@ -56,15 +56,15 @@
|
||||||
#define BUG(x) bug(x, #x)
|
#define BUG(x) bug(x, #x)
|
||||||
|
|
||||||
enum bugtype {
|
enum bugtype {
|
||||||
SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST,
|
SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST,
|
||||||
VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3,
|
VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3,
|
||||||
INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST,
|
INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST,
|
||||||
TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST,
|
TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST,
|
||||||
CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION,
|
CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION,
|
||||||
LOCATION_HAS_NO_TRAVEL_ENTRIES,
|
LOCATION_HAS_NO_TRAVEL_ENTRIES,
|
||||||
HINT_NUMBER_EXCEEDS_GOTO_LIST,
|
HINT_NUMBER_EXCEEDS_GOTO_LIST,
|
||||||
SPEECHPART_NOT_TRANSITIVE_OR_INTRANSITIVE_OR_UNKNOWN,
|
SPEECHPART_NOT_TRANSITIVE_OR_INTRANSITIVE_OR_UNKNOWN,
|
||||||
ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH,
|
ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum speaktype {touch, look, hear, study, change};
|
enum speaktype {touch, look, hear, study, change};
|
||||||
|
@ -78,19 +78,19 @@ enum speechpart {unknown, intransitive, transitive};
|
||||||
* The values don't matter, but perturb their order at your peril.
|
* The values don't matter, but perturb their order at your peril.
|
||||||
*/
|
*/
|
||||||
enum phase_codes {
|
enum phase_codes {
|
||||||
GO_TERMINATE,
|
GO_TERMINATE,
|
||||||
GO_MOVE,
|
GO_MOVE,
|
||||||
GO_TOP,
|
GO_TOP,
|
||||||
GO_CLEAROBJ,
|
GO_CLEAROBJ,
|
||||||
GO_CHECKHINT,
|
GO_CHECKHINT,
|
||||||
GO_CHECKFOO,
|
GO_CHECKFOO,
|
||||||
GO_DIRECTION,
|
GO_DIRECTION,
|
||||||
GO_LOOKUP,
|
GO_LOOKUP,
|
||||||
GO_WORD2,
|
GO_WORD2,
|
||||||
GO_SPECIALS,
|
GO_SPECIALS,
|
||||||
GO_UNKNOWN,
|
GO_UNKNOWN,
|
||||||
GO_ACTION,
|
GO_ACTION,
|
||||||
GO_DWARFWAKE,
|
GO_DWARFWAKE,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef long token_t; // word token - someday this will be char[TOKLEN+1]
|
typedef long token_t; // word token - someday this will be char[TOKLEN+1]
|
||||||
|
@ -110,7 +110,15 @@ struct game_t {
|
||||||
bool closng; // whether it's closing time yet
|
bool closng; // whether it's closing time yet
|
||||||
long conds; // min value for cond(loc) if loc has any hints
|
long conds; // min value for cond(loc) if loc has any hints
|
||||||
long detail;
|
long detail;
|
||||||
|
|
||||||
|
/* dflag controls the level of activation of dwarves:
|
||||||
|
* 0 No dwarf stuff yet (wait until reaches Hall Of Mists)
|
||||||
|
* 1 Reached Hall Of Mists, but hasn't met first dwarf
|
||||||
|
* 2 Met first dwarf, others start moving, no knives thrown yet
|
||||||
|
* 3 A knife has been thrown (first set always misses)
|
||||||
|
* 3+ Dwarves are mad (increases their accuracy) */
|
||||||
long dflag;
|
long dflag;
|
||||||
|
|
||||||
long dkill;
|
long dkill;
|
||||||
long dtotal;
|
long dtotal;
|
||||||
long foobar; // current progress in saying "FEE FIE FOE FOO".
|
long foobar; // current progress in saying "FEE FIE FOE FOO".
|
||||||
|
@ -136,16 +144,16 @@ struct game_t {
|
||||||
bool wzdark; // whether the loc he's leaving was dark
|
bool wzdark; // whether the loc he's leaving was dark
|
||||||
char zzword[6]; // randomly generated magic word from bird
|
char zzword[6]; // randomly generated magic word from bird
|
||||||
bool blooded; // has player drunk of dragon's blood?
|
bool blooded; // has player drunk of dragon's blood?
|
||||||
long abbrev[NLOCATIONS + 1];
|
long abbrev[NLOCATIONS + 1];
|
||||||
long atloc[NLOCATIONS + 1];
|
long atloc[NLOCATIONS + 1];
|
||||||
long dseen[NDWARVES + 1];
|
long dseen[NDWARVES + 1]; // true if dwarf has seen him
|
||||||
long dloc[NDWARVES + 1];
|
long dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in
|
||||||
long odloc[NDWARVES + 1];
|
long odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage
|
||||||
long fixed[NOBJECTS + 1];
|
long fixed[NOBJECTS + 1];
|
||||||
long link[NOBJECTS * 2 + 1];
|
long link[NOBJECTS * 2 + 1];
|
||||||
long place[NOBJECTS + 1];
|
long place[NOBJECTS + 1];
|
||||||
long hinted[NHINTS];
|
long hinted[NHINTS]; // hintlc[i] is how long he's been at LOC with cond bit i
|
||||||
long hintlc[NHINTS];
|
long hintlc[NHINTS]; // hinted[i] is true iff hint i has been used.
|
||||||
long prop[NOBJECTS + 1];
|
long prop[NOBJECTS + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
17
cheat.c
17
cheat.c
|
@ -8,18 +8,23 @@
|
||||||
#include "dungeon.h"
|
#include "dungeon.h"
|
||||||
|
|
||||||
struct game_t game = {
|
struct game_t game = {
|
||||||
.chloc = LOC_DEADEND12,
|
|
||||||
.chloc2 = LOC_DEADEND13,
|
|
||||||
.dloc[1] = LOC_KINGHALL,
|
.dloc[1] = LOC_KINGHALL,
|
||||||
.dloc[2] = LOC_WESTBANK,
|
.dloc[2] = LOC_WESTBANK,
|
||||||
.dloc[3] = LOC_Y2,
|
.dloc[3] = LOC_Y2,
|
||||||
.dloc[4] = LOC_ALIKE3,
|
.dloc[4] = LOC_ALIKE3,
|
||||||
.dloc[5] = LOC_COMPLEX,
|
.dloc[5] = LOC_COMPLEX,
|
||||||
|
|
||||||
|
/* Sixth dwarf is special (the pirate). He always starts at his
|
||||||
|
* chest's eventual location inside the maze. This loc is saved
|
||||||
|
* in chloc for ref. The dead end in the other maze has its
|
||||||
|
* loc stored in chloc2. */
|
||||||
.dloc[6] = LOC_DEADEND12,
|
.dloc[6] = LOC_DEADEND12,
|
||||||
.abbnum = 5,
|
.chloc = LOC_DEADEND12,
|
||||||
.clock1 = WARNTIME,
|
.chloc2 = LOC_DEADEND13,
|
||||||
.clock2 = FLASHTIME,
|
.abbnum = 5,
|
||||||
.blklin = true
|
.clock1 = WARNTIME,
|
||||||
|
.clock2 = FLASHTIME,
|
||||||
|
.blklin = true
|
||||||
};
|
};
|
||||||
|
|
||||||
FILE *logfp = NULL, *rfp = NULL;
|
FILE *logfp = NULL, *rfp = NULL;
|
||||||
|
|
31
init.c
31
init.c
|
@ -30,9 +30,8 @@ void initialise(void)
|
||||||
* We'll use the DROP subroutine, which prefaces new objects on the
|
* We'll use the DROP subroutine, which prefaces new objects on the
|
||||||
* lists. Since we want things in the other order, we'll run the
|
* lists. Since we want things in the other order, we'll run the
|
||||||
* loop backwards. If the object is in two locs, we drop it twice.
|
* loop backwards. If the object is in two locs, we drop it twice.
|
||||||
* This also sets up "game.place" and "fixed" as copies of "PLAC" and
|
* Also, since two-placed objects are typically best described
|
||||||
* "FIXD". Also, since two-placed objects are typically best
|
* last, we'll drop them first. */
|
||||||
* described last, we'll drop them first. */
|
|
||||||
for (int i = NOBJECTS; i >= 1; i--) {
|
for (int i = NOBJECTS; i >= 1; i--) {
|
||||||
if (objects[i].fixd > 0) {
|
if (objects[i].fixd > 0) {
|
||||||
drop(i + NOBJECTS, objects[i].fixd);
|
drop(i + NOBJECTS, objects[i].fixd);
|
||||||
|
@ -57,31 +56,5 @@ void initialise(void)
|
||||||
game.tally = game.tally - game.prop[treasure];
|
game.tally = game.tally - game.prop[treasure];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the hint stuff. game.hintlc[i] is how long he's been at LOC
|
|
||||||
* with cond bit i. game.hinted[i] is true iff hint i has been
|
|
||||||
* used. */
|
|
||||||
for (int i = 0; i < NHINTS; i++) {
|
|
||||||
game.hinted[i] = false;
|
|
||||||
game.hintlc[i] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialise the dwarves. game.dloc is loc of dwarves,
|
|
||||||
* hard-wired in. game.odloc is prior loc of each dwarf,
|
|
||||||
* initially garbage. DALTLC is alternate initial loc for dwarf,
|
|
||||||
* in case one of them starts out on top of the adventurer. (No
|
|
||||||
* 2 of the 5 initial locs are adjacent.) game.dseen is true if
|
|
||||||
* dwarf has seen him. game.dflag controls the level of
|
|
||||||
* activation of all this:
|
|
||||||
* 0 No dwarf stuff yet (wait until reaches Hall Of Mists)
|
|
||||||
* 1 Reached Hall Of Mists, but hasn't met first dwarf
|
|
||||||
* 2 Met first dwarf, others start moving, no knives thrown yet
|
|
||||||
* 3 A knife has been thrown (first set always misses)
|
|
||||||
* 3+ Dwarves are mad (increases their accuracy)
|
|
||||||
* Sixth dwarf is special (the pirate). He always starts at his
|
|
||||||
* chest's eventual location inside the maze. This loc is saved
|
|
||||||
* in game.chloc for ref. the dead end in the other maze has its
|
|
||||||
* loc stored in game.chloc2. */
|
|
||||||
|
|
||||||
game.conds = setbit(11);
|
game.conds = setbit(11);
|
||||||
}
|
}
|
||||||
|
|
24
main.c
24
main.c
|
@ -28,18 +28,23 @@
|
||||||
#define DIM(a) (sizeof(a)/sizeof(a[0]))
|
#define DIM(a) (sizeof(a)/sizeof(a[0]))
|
||||||
|
|
||||||
struct game_t game = {
|
struct game_t game = {
|
||||||
.chloc = LOC_DEADEND12,
|
|
||||||
.chloc2 = LOC_DEADEND13,
|
|
||||||
.dloc[1] = LOC_KINGHALL,
|
.dloc[1] = LOC_KINGHALL,
|
||||||
.dloc[2] = LOC_WESTBANK,
|
.dloc[2] = LOC_WESTBANK,
|
||||||
.dloc[3] = LOC_Y2,
|
.dloc[3] = LOC_Y2,
|
||||||
.dloc[4] = LOC_ALIKE3,
|
.dloc[4] = LOC_ALIKE3,
|
||||||
.dloc[5] = LOC_COMPLEX,
|
.dloc[5] = LOC_COMPLEX,
|
||||||
|
|
||||||
|
/* Sixth dwarf is special (the pirate). He always starts at his
|
||||||
|
* chest's eventual location inside the maze. This loc is saved
|
||||||
|
* in chloc for ref. The dead end in the other maze has its
|
||||||
|
* loc stored in chloc2. */
|
||||||
.dloc[6] = LOC_DEADEND12,
|
.dloc[6] = LOC_DEADEND12,
|
||||||
.abbnum = 5,
|
.chloc = LOC_DEADEND12,
|
||||||
.clock1 = WARNTIME,
|
.chloc2 = LOC_DEADEND13,
|
||||||
.clock2 = FLASHTIME,
|
.abbnum = 5,
|
||||||
.blklin = true
|
.clock1 = WARNTIME,
|
||||||
|
.clock2 = FLASHTIME,
|
||||||
|
.blklin = true
|
||||||
};
|
};
|
||||||
|
|
||||||
FILE *logfp = NULL, *rfp = NULL;
|
FILE *logfp = NULL, *rfp = NULL;
|
||||||
|
@ -384,9 +389,12 @@ static bool dwarfmove(void)
|
||||||
if (PCT(50))
|
if (PCT(50))
|
||||||
game.dloc[j] = 0;
|
game.dloc[j] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Alternate initial loc for dwarf, in case one of them
|
||||||
|
* starts out on top of the adventurer. */
|
||||||
for (int i = 1; i <= NDWARVES - 1; i++) {
|
for (int i = 1; i <= NDWARVES - 1; i++) {
|
||||||
if (game.dloc[i] == game.loc)
|
if (game.dloc[i] == game.loc)
|
||||||
game.dloc[i] = DALTLC;
|
game.dloc[i] = DALTLC; //
|
||||||
game.odloc[i] = game.dloc[i];
|
game.odloc[i] = game.dloc[i];
|
||||||
}
|
}
|
||||||
rspeak(DWARF_RAN);
|
rspeak(DWARF_RAN);
|
||||||
|
@ -1143,7 +1151,7 @@ Lookup:
|
||||||
rspeak(DONT_KNOW, command.wd1, command.wd1x);
|
rspeak(DONT_KNOW, command.wd1, command.wd1x);
|
||||||
goto L2600;
|
goto L2600;
|
||||||
}
|
}
|
||||||
/* FIXME: magic numbers related to vocabulary */
|
/* FIXME: magic numbers related to vocabulary */
|
||||||
kmod = MOD(defn, 1000);
|
kmod = MOD(defn, 1000);
|
||||||
switch (defn / 1000) {
|
switch (defn / 1000) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
60
misc.c
60
misc.c
|
@ -37,17 +37,17 @@ void* xmalloc(size_t size)
|
||||||
|
|
||||||
void packed_to_token(long packed, char token[6])
|
void packed_to_token(long packed, char token[6])
|
||||||
{
|
{
|
||||||
// The advent->ascii mapping.
|
// The advent->ascii mapping.
|
||||||
const char advent_to_ascii[] = {
|
const char advent_to_ascii[] = {
|
||||||
' ', '!', '"', '#', '$', '%', '&', '\'',
|
' ', '!', '"', '#', '$', '%', '&', '\'',
|
||||||
'(', ')', '*', '+', ',', '-', '.', '/',
|
'(', ')', '*', '+', ',', '-', '.', '/',
|
||||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
'0', '1', '2', '3', '4', '5', '6', '7',
|
||||||
'8', '9', ':', ';', '<', '=', '>', '?',
|
'8', '9', ':', ';', '<', '=', '>', '?',
|
||||||
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
|
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
|
||||||
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
|
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
|
||||||
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
|
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
|
||||||
'X', 'Y', 'Z', '\0', '\0', '\0', '\0', '\0',
|
'X', 'Y', 'Z', '\0', '\0', '\0', '\0', '\0',
|
||||||
};
|
};
|
||||||
|
|
||||||
// Unpack and map back to ASCII.
|
// Unpack and map back to ASCII.
|
||||||
for (int i = 0; i < 5; ++i) {
|
for (int i = 0; i < 5; ++i) {
|
||||||
|
@ -69,26 +69,26 @@ void packed_to_token(long packed, char token[6])
|
||||||
|
|
||||||
long token_to_packed(const char token[6])
|
long token_to_packed(const char token[6])
|
||||||
{
|
{
|
||||||
const char ascii_to_advent[] = {
|
const char ascii_to_advent[] = {
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7,
|
0, 1, 2, 3, 4, 5, 6, 7,
|
||||||
8, 9, 10, 11, 12, 13, 14, 15,
|
8, 9, 10, 11, 12, 13, 14, 15,
|
||||||
16, 17, 18, 19, 20, 21, 22, 23,
|
16, 17, 18, 19, 20, 21, 22, 23,
|
||||||
24, 25, 26, 27, 28, 29, 30, 31,
|
24, 25, 26, 27, 28, 29, 30, 31,
|
||||||
32, 33, 34, 35, 36, 37, 38, 39,
|
32, 33, 34, 35, 36, 37, 38, 39,
|
||||||
40, 41, 42, 43, 44, 45, 46, 47,
|
40, 41, 42, 43, 44, 45, 46, 47,
|
||||||
48, 49, 50, 51, 52, 53, 54, 55,
|
48, 49, 50, 51, 52, 53, 54, 55,
|
||||||
56, 57, 58, 59, 60, 61, 62, 63,
|
56, 57, 58, 59, 60, 61, 62, 63,
|
||||||
|
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
63, 63, 63, 63, 63, 63, 63, 63,
|
63, 63, 63, 63, 63, 63, 63, 63,
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t t_len = strlen(token);
|
size_t t_len = strlen(token);
|
||||||
long packed = 0;
|
long packed = 0;
|
||||||
|
@ -242,7 +242,7 @@ void vspeak(const char* msg, va_list ap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*renderp = 0;
|
*renderp = 0;
|
||||||
|
|
||||||
// Print the message.
|
// Print the message.
|
||||||
printf("%s\n", rendered);
|
printf("%s\n", rendered);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue