diff --git a/Makefile b/Makefile index a435d07..c5ce654 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ newdb.c newdb.h: newdungeon.py adventure.yaml python3 newdungeon.py linenoise.o: linenoise/linenoise.h - $(CC) -c linenoise/linenoise.c + $(CC) $(CCFLAGS) -c linenoise/linenoise.c dungeon: dungeon.o common.o $(CC) $(CCFLAGS) -o $@ dungeon.o common.o diff --git a/actions.c b/actions.c index 5bb9555..87316e2 100644 --- a/actions.c +++ b/actions.c @@ -14,7 +14,7 @@ static int attack(FILE *input, struct command_t *command) { vocab_t verb = command->verb; vocab_t obj = command->obj; - int spk = actions[verb].message; + long spk = actions[verb].message; if (obj == 0 || obj == INTRANSITIVE) { if (atdwrf(game.loc) > 0) obj = DWARF; @@ -44,7 +44,7 @@ static int attack(FILE *input, struct command_t *command) DESTROY(BIRD); spk = BIRD_DEAD; } else if (obj == VEND) { - bool blocking = (game.prop[VEND] == VEND_BLOCKS); + bool blocking = (game.prop[VEND] == VEND_BLOCKS); game.prop[VEND] = blocking ? VEND_UNBLOCKS : VEND_BLOCKS; rspeak(blocking ? MACHINE_SWINGOUT : MACHINE_SWINGBACK); return GO_CLEAROBJ; @@ -246,7 +246,7 @@ static int vcarry(token_t verb, token_t obj) return (fill(verb, BOTTLE)); else { if (game.prop[BOTTLE] != EMPTY_BOTTLE) - spk = BOTTLE_FULL; + spk = BOTTLE_FULL; if (!TOTING(BOTTLE))spk = NO_CONTAINER; rspeak(spk); return GO_CLEAROBJ; @@ -385,12 +385,12 @@ static int discard(token_t verb, token_t obj, bool just_do_it) if (obj == BOTTLE && k != 0) game.place[k] = LOC_NOWHERE; if (obj == CAGE && game.prop[BIRD] == BIRD_CAGED) - drop(BIRD, game.loc); + drop(BIRD, game.loc); drop(obj, game.loc); if (obj != BIRD) return GO_CLEAROBJ; game.prop[BIRD] = BIRD_UNCAGED; if (FOREST(game.loc)) - game.prop[BIRD] = BIRD_FOREST_UNCAGED; + game.prop[BIRD] = BIRD_FOREST_UNCAGED; return GO_CLEAROBJ; } @@ -447,7 +447,7 @@ static int extinguish(token_t verb, int obj) int spk = actions[verb].message; if (obj == INTRANSITIVE) { if (HERE(LAMP) && game.prop[LAMP] == LAMP_BRIGHT) - obj = LAMP; + obj = LAMP; if (HERE(URN) && game.prop[URN] == 2)obj = obj * NOBJECTS + URN; if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN; } @@ -554,7 +554,7 @@ int fill(token_t verb, token_t obj) if (LIQUID() != 0) spk = BOTTLE_FULL; if (spk == BOTTLED_WATER) { - /* FIXME: Arithmetic on property values */ + /* FIXME: Arithmetic on property values */ game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2; k = LIQUID(); if (TOTING(BOTTLE)) @@ -640,7 +640,7 @@ static int light(token_t verb, token_t obj) int spk = actions[verb].message; if (obj == INTRANSITIVE) { if (HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0) - obj = LAMP; + obj = LAMP; if (HERE(URN) && game.prop[URN] == 1)obj = obj * NOBJECTS + URN; if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN; } @@ -681,20 +681,20 @@ static int listen(void) if (k != SILENT) { rspeak(k); if (locations[game.loc].loud) - return GO_CLEAROBJ; - else - spk = NO_MESSAGE; + return GO_CLEAROBJ; + else + spk = NO_MESSAGE; } for (int i = 1; i <= NOBJECTS; i++) { if (!HERE(i) || objects[i].sounds[0] == NULL || game.prop[i] < 0) continue; - int mi = game.prop[i]; - if (i == BIRD) - mi += 3 * game.blooded; + int mi = game.prop[i]; + if (i == BIRD) + mi += 3 * game.blooded; pspeak(i, hear, mi, game.zzword); spk = NO_MESSAGE; - /* FIXME: Magic number, sensitive to bird state logic */ - if (i == BIRD && game.prop[i] == 5) + /* FIXME: Magic number, sensitive to bird state logic */ + if (i == BIRD && game.prop[i] == 5) DESTROY(BIRD); } rspeak(spk); @@ -976,7 +976,7 @@ static int wave(token_t verb, token_t obj) } /* FIXME: Arithemetic on proprty values */ if (HERE(BIRD)) - spk = FREE_FLY + MOD(game.prop[BIRD], 2); + spk = FREE_FLY + MOD(game.prop[BIRD], 2); if (spk == FREE_FLY && game.loc == game.place[STEPS] && game.prop[JADE] < 0) { drop(JADE, game.loc); game.prop[JADE] = 0; @@ -1057,7 +1057,7 @@ int action(FILE *input, struct command_t *command) switch (command->part) { case intransitive: if (command->wd2 > 0 && command->verb != SAY) - return GO_WORD2; + return GO_WORD2; if (command->verb == SAY)command->obj = command->wd2; if (command->obj == 0 || command->obj == INTRANSITIVE) { /* Analyse an intransitive verb (ie, no object given yet). */ @@ -1121,7 +1121,7 @@ int action(FILE *input, struct command_t *command) case 25: /* BRIEF */ return brief(); case 26: /* READ */ - command->obj = INTRANSITIVE; + command->obj = INTRANSITIVE; return read(*command); case 27: /* BREAK */ return GO_UNKNOWN; @@ -1183,7 +1183,7 @@ int action(FILE *input, struct command_t *command) case 15: /* RUB */ return rub(command->verb, command->obj); case 16: /* TOSS */ - return throw(input, command); + return throw (input, command); case 17: { /* QUIT */ rspeak(spk); return GO_CLEAROBJ; diff --git a/cheat.c b/cheat.c index 844b66f..8ca8d8c 100644 --- a/cheat.c +++ b/cheat.c @@ -38,13 +38,12 @@ int main(int argc, char *argv[]) game.limit = GAMELIMIT; game.numdie = -1000; game.saved = 1; - + fp = fopen("cheat_numdie.adv", WRITE_MODE); - if (fp == NULL) - { + if (fp == NULL) { printf("Can't open file. Exiting.\n"); exit(0); - } + } savefile(fp); printf("cheat: tests/cheat_numdie.adv created.\n"); diff --git a/dungeon.c b/dungeon.c index a553147..1c847b5 100644 --- a/dungeon.c +++ b/dungeon.c @@ -198,7 +198,7 @@ static long GETNUM(FILE *source) * scanned). If we're at the end of the line or encounter an illegal * character (not a digit, hyphen, or blank), we return 0. */ - long DIGIT, GETNUM, sign; + long GETNUM, sign; if (source != NULL) MAPLIN(source); GETNUM = 0; @@ -215,7 +215,7 @@ static long GETNUM(FILE *source) LNPOSN = LNPOSN + 1; } while (!(LNPOSN > LNLENG || INLINE[LNPOSN] == 0)) { - DIGIT = INLINE[LNPOSN] - 64; + long DIGIT = INLINE[LNPOSN] - 64; if (DIGIT < 0 || DIGIT > 9) { GETNUM = 0; break; @@ -233,13 +233,13 @@ static long GETNUM(FILE *source) static void read_messages(FILE* database) { while (true) { - do { - if (NULL == fgets(INLINE + 1, sizeof(INLINE) - 1, database)) { - printf("Failed fgets()\n"); - } - } while (!feof(database) && INLINE[1] == '#'); - if (strncmp(INLINE + 1, "-1\n", 3) == 0) - break; + do { + if (NULL == fgets(INLINE + 1, sizeof(INLINE) - 1, database)) { + printf("Failed fgets()\n"); + } + } while (!feof(database) && INLINE[1] == '#'); + if (strncmp(INLINE + 1, "-1\n", 3) == 0) + break; } } @@ -289,7 +289,7 @@ static void read_initial_locations(FILE* database) { long OBJ; while ((OBJ = GETNUM(database)) != -1) { - /* all done from YAML now */ + /* all done from YAML now */ } } @@ -298,7 +298,7 @@ static void read_action_verb_message_nr(FILE* database) { long verb; while ((verb = GETNUM(database)) != -1) { - /* now declared in YAML */ + /* now declared in YAML */ } } @@ -309,7 +309,7 @@ static void read_conditions(FILE* database) while ((K = GETNUM(database)) != -1) { long loc; while ((loc = GETNUM(NULL)) != 0) { - continue; /* COND is no longer used */ + continue; /* COND is no longer used */ } } } @@ -321,7 +321,7 @@ static void read_hints(FILE* database) long K; while ((K = GETNUM(database)) != -1) { for (int I = 1; I <= 4; I++) { - /* consume - actual array-building now done in YAML. */ + /* consume - actual array-building now done in YAML. */ GETNUM(NULL); } /* end loop */ } @@ -332,7 +332,7 @@ static void read_sound_text(FILE* database) { long K; while ((K = GETNUM(database)) != -1) { - /* this stuff is in YAML now */ + /* this stuff is in YAML now */ } } diff --git a/init.c b/init.c index d3823db..0f56c13 100644 --- a/init.c +++ b/init.c @@ -26,7 +26,7 @@ void initialise(void) if (!(locations[i].description.big == 0 || TKEY[i] == 0)) { int k = TKEY[i]; if (MOD(labs(TRAVEL[k]), 1000) == 1) - conditions[i] |= (1 << COND_FORCED); + conditions[i] |= (1 << COND_FORCED); } game.atloc[i] = 0; } @@ -57,11 +57,11 @@ void initialise(void) * not yet found, so we know when to close the cave. */ game.tally = 0; for (int treasure = 1; treasure <= NOBJECTS; treasure++) { - if (objects[treasure].is_treasure) { - if (objects[treasure].inventory != 0) - game.prop[treasure] = -1; - game.tally = game.tally - game.prop[treasure]; - } + if (objects[treasure].is_treasure) { + if (objects[treasure].inventory != 0) + game.prop[treasure] = -1; + game.tally = game.tally - game.prop[treasure]; + } } /* Clear the hint stuff. game.hintlc[i] is how long he's been at LOC diff --git a/main.c b/main.c index f6209d4..f622530 100644 --- a/main.c +++ b/main.c @@ -291,8 +291,8 @@ static bool spotted_by_pirate(int i) int snarfed = 0; bool movechest = false, robplayer = false; for (int treasure = 1; treasure <= NOBJECTS; treasure++) { - if (!objects[treasure].is_treasure) - continue; + if (!objects[treasure].is_treasure) + continue; /* Pirate won't take pyramid from plover room or dark * room (too easy!). */ if (treasure == PYRAMID && (game.loc == objects[PYRAMID].plac || game.loc == objects[EMERALD].plac)) { @@ -326,9 +326,9 @@ static bool spotted_by_pirate(int i) } if (robplayer) { rspeak(PIRATE_POUNCES); - for (int treasure = 1; treasure <= NOBJECTS; treasure++) { - if (!objects[treasure].is_treasure) - continue; + for (int treasure = 1; treasure <= NOBJECTS; treasure++) { + if (!objects[treasure].is_treasure) + continue; if (!(treasure == PYRAMID && (game.loc == objects[PYRAMID].plac || game.loc == objects[EMERALD].plac))) { if (AT(treasure) && game.fixed[treasure] == 0) carry(treasure, game.loc); @@ -409,7 +409,7 @@ static bool dwarfmove(void) kk = TKEY[game.dloc[i]]; if (kk != 0) do { - game.newloc = T_DESTINATION(TRAVEL[kk]); + game.newloc = T_DESTINATION(TRAVEL[kk]); /* Have we avoided a dwarf encounter? */ bool avoided = (SPECIAL(game.newloc) || !INDEEP(game.newloc) || @@ -559,8 +559,8 @@ static bool playermove(token_t verb, int motion) ++kk; /* go to next travel entry for this location */ continue; } - /* we've reached the end of travel entries for game.loc */ - kk = k2; + /* we've reached the end of travel entries for game.loc */ + kk = k2; if (kk == 0) { rspeak(NOT_CONNECTED); return true; @@ -693,7 +693,7 @@ static bool playermove(token_t verb, int motion) * and block him. (standard travel entries check for * game.prop(TROLL)=0.) Special stuff for bear. */ if (game.prop[TROLL] == 1) { - pspeak(TROLL,look, 1); + pspeak(TROLL, look, 1); game.prop[TROLL] = 0; move(TROLL2, 0); move(TROLL2 + NOBJECTS, 0); @@ -723,7 +723,7 @@ static bool playermove(token_t verb, int motion) } } while (false); - + /* Execute a speak rule */ rspeak(L_SPEAK(game.newloc)); game.newloc = game.loc; @@ -872,7 +872,7 @@ static void lampcheck(void) int spk = GET_BATTERIES; if (game.place[BATTERY] == LOC_NOWHERE)spk = LAMP_DIM; if (game.prop[BATTERY] == DEAD_BATTERIES) - spk = MISSING_BATTERIES; + spk = MISSING_BATTERIES; rspeak(spk); } } @@ -1027,16 +1027,14 @@ L2607: game.foobar = (game.foobar > 0 ? -game.foobar : 0); ++game.turns; - /* If a turn threshold has been met, apply penalties and tell - * the player about it. */ - for (int i = 0; i < NTHRESHOLDS; ++i) - { - if (game.turns == turn_thresholds[i].threshold + 1) - { - game.trnluz += turn_thresholds[i].point_loss; - speak(turn_thresholds[i].message); - } - } + /* If a turn threshold has been met, apply penalties and tell + * the player about it. */ + for (int i = 0; i < NTHRESHOLDS; ++i) { + if (game.turns == turn_thresholds[i].threshold + 1) { + game.trnluz += turn_thresholds[i].point_loss; + speak(turn_thresholds[i].message); + } + } if (command.verb == SAY && command.wd2 > 0) command.verb = 0; diff --git a/misc.c b/misc.c index e7a0398..38ddaac 100644 --- a/misc.c +++ b/misc.c @@ -43,13 +43,12 @@ void packed_to_token(long packed, char token[6]) void token_to_packed(char token[6], long* packed) { - *packed = 0; - for (size_t i = 0; i < 5; ++i) - { - if (token[4 - i] == '\0') - continue; - char mapped = ascii_to_advent[(int) token[4 - i]]; - *packed |= (mapped << (6 * i)); + *packed = 0; + for (size_t i = 0; i < 5; ++i) { + if (token[4 - i] == '\0') + continue; + char mapped = ascii_to_advent[(int) token[4 - i]]; + *packed |= (mapped << (6 * i)); } } @@ -101,8 +100,8 @@ void vspeak(const char* msg, va_list ap) size--; } else { long arg = va_arg(ap, long); - if (arg == -1) - arg = 0; + if (arg == -1) + arg = 0; i++; // Integer specifier. In order to accommodate the fact that PARMS can have both legitimate integers *and* packed tokens, stringify everything. Future work may eliminate the need for this. if (msg[i] == 'd') { @@ -173,16 +172,16 @@ void pspeak(vocab_t msg, enum speaktype mode, int skip, ...) switch (mode) { case touch: vspeak(objects[msg].inventory, ap); - break; - case look: + break; + case look: vspeak(objects[msg].longs[skip], ap); - break; + break; case hear: vspeak(objects[msg].sounds[skip], ap); - break; + break; case study: vspeak(objects[msg].texts[skip], ap); - break; + break; } va_end(ap); } @@ -266,7 +265,7 @@ char* get_input() } if (input == NULL) // Got EOF; return with it. - return(input); + return (input); else if (input[0] == '#') // Ignore comments. continue; else // We have a 'normal' line; leave the loop. @@ -298,12 +297,12 @@ bool yes(const char* question, const char* yes_response, const char* no_response speak(question); reply = get_input(); - if (reply == NULL) { - linenoiseFree(reply); - exit(EXIT_SUCCESS); - } + if (reply == NULL) { + linenoiseFree(reply); + exit(EXIT_SUCCESS); + } - char* firstword = (char*) xmalloc(strlen(reply)+1); + char* firstword = (char*) xmalloc(strlen(reply) + 1); sscanf(reply, "%s", firstword); for (int i = 0; i < (int)strlen(firstword); ++i) @@ -538,7 +537,7 @@ long atdwrf(long where) long setbit(long bit) /* Returns 2**bit for use in constructing bit-masks. */ { - return (1 << bit); + return (1L << bit); } bool tstbit(long mask, int bit) diff --git a/saveresume.c b/saveresume.c index 3546378..fdba88b 100644 --- a/saveresume.c +++ b/saveresume.c @@ -28,7 +28,7 @@ struct save_t { struct save_t save; int savefile(FILE *fp) - /* Save game to file. No input or output from user. */ +/* Save game to file. No input or output from user. */ { long i, k; datime(&i, &k); @@ -38,7 +38,7 @@ int savefile(FILE *fp) save.version = VRSION; memcpy(&save.game, &game, sizeof(struct game_t)); IGNORE(fwrite(&save, sizeof(struct save_t), 1, fp)); - return(0); + return (0); } /* Suspend and resume */ diff --git a/score.c b/score.c index 4e72950..5ae2a9d 100644 --- a/score.c +++ b/score.c @@ -38,8 +38,8 @@ long score(enum termination mode) * Give the poor guy 2 points just for finding each treasure. */ mxscor = 0; for (int i = 1; i <= NOBJECTS; i++) { - if (!objects[i].is_treasure) - continue; + if (!objects[i].is_treasure) + continue; if (objects[i].inventory != 0) { long k = 12; if (i == CHEST)k = 14;