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;
* 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;
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_STOP
default:
game.fixed[BEAR] = IS_FREE;
}
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;
game.prop[i] < 0)
continue;
int mi = game.prop[i];
- /* FIXME: Weird magic on object states */
+ /* (ESR) Some unpleasant magic on object states here. Ideally
+ * we'd have liked the bird to be a normal object that we can
+ * use state_change() on; can't do it, because there are
+ * actually two different series of per-state birdsounds
+ * depending on whether player has drunk dragon's blood. */
if (i == BIRD)
mi += 3 * game.blooded;
long packed_zzword = token_to_packed(game.zzword);
{
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);