X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=2d02595cf305c3e83e39066f4688c332e7e8f6eb;hp=5f6f670c8861f29d5f81d8edf6183d778d0389fd;hb=21c36003cdd1bae2291311d5e2bc6d98383f72fa;hpb=8f5c262e6dc953447f1a47b45aa045353d97f765 diff --git a/actions.c b/actions.c index 5f6f670..2d02595 100644 --- a/actions.c +++ b/actions.c @@ -121,10 +121,10 @@ static int attack(struct command_t *command) move(DRAGON, LOC_SECRET5); move(RUG, LOC_SECRET5); drop(BLOOD, LOC_SECRET5); - for (obj = 1; obj <= NOBJECTS; obj++) { - if (game.place[obj] == objects[DRAGON].plac || - game.place[obj] == objects[DRAGON].fixd) - move(obj, LOC_SECRET5); + for (obj_t i = 1; i <= NOBJECTS; i++) { + if (game.place[i] == objects[DRAGON].plac || + game.place[i] == objects[DRAGON].fixd) + move(i, LOC_SECRET5); } game.loc = LOC_SECRET5; return GO_MOVE; @@ -205,11 +205,13 @@ static int bigwords(long id) * crossing. */ if (game.place[EGGS] == LOC_NOWHERE && game.place[TROLL] == LOC_NOWHERE && game.prop[TROLL] == TROLL_UNPAID) game.prop[TROLL] = TROLL_PAIDONCE; - int k = EGGS_DONE; + int k; if (HERE(EGGS)) k = EGGS_VANISHED; - if (game.loc == objects[EGGS].plac) + else if (game.loc == objects[EGGS].plac) k = EGGS_HERE; + else + k = EGGS_DONE; move(EGGS, objects[EGGS].plac); pspeak(EGGS, look, k, true); return GO_CLEAROBJ; @@ -417,8 +419,13 @@ static int chain(verb_t verb) switch (game.prop[BEAR]) { case BEAR_DEAD: + // LCOV_EXCL_START + /* Can't be reached as long as the only way for the bear to die + * is from a bridge collapse. Leave in in case this changes, but + * exclude from coverage testing. */ game.fixed[BEAR] = IS_FIXED; break; + // LCOV_EXCL_END default: game.fixed[BEAR] = IS_FREE; } @@ -470,11 +477,13 @@ static int discard(verb_t verb, obj_t obj) game.prop[CAVITY] = CAVITY_FULL; if (HERE(RUG) && ((obj == EMERALD && game.prop[RUG] != RUG_HOVER) || (obj == RUBY && game.prop[RUG] == RUG_HOVER))) { - int spk = RUG_RISES; - if (TOTING(RUG)) - spk = RUG_WIGGLES; + int spk; if (obj == RUBY) spk = RUG_SETTLES; + else if (TOTING(RUG)) + spk = RUG_WIGGLES; + else + spk = RUG_RISES; rspeak(spk); if (spk != RUG_WIGGLES) { int k = (game.prop[RUG] == RUG_HOVER) ? RUG_FLOOR : RUG_HOVER; @@ -1110,7 +1119,7 @@ static int say(struct command_t *command) { if (command->wd2 > 0) { command->wd1 = command->wd2; - strcpy(command->raw1, command->raw2); + strncpy(command->raw1, command->raw2, LINESIZE - 1); } char word1[TOKLEN + 1]; packed_to_token(command->wd1, word1);