} else {
DESTROY(BLOOD);
game.prop[DRAGON] = 2;
- OBJSND[BIRD] = OBJSND[BIRD] + 3;
+ game.blooded = true;
spk = HEAD_BUZZES;
}
rspeak(spk);
for (int i = 1; i <= NOBJECTS; i++) {
if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0)
continue;
- pspeak(i, OBJSND[i] + game.prop[i], game.zzword);
+ int mi = OBJSND[i] + game.prop[i];
+ if (i == BIRD)
+ /* FIXME: Arithmetic on state values */
+ mi += 3 * game.blooded;
+ pspeak(i, mi, game.zzword);
spk = NO_MESSAGE;
if (i == BIRD && OBJSND[i] + game.prop[i] == 8)
DESTROY(BIRD);
long turns;
bool wzdark; /* whether the loc he's leaving was dark */
long zzword;
+ bool blooded; /* has player drunk of dragon's blood? */
long abbrev[LOCSIZ + 1];
long atloc[LOCSIZ + 1];
long dseen[NDWARVES + 1];
save.mode = -1;
save.version = VRSION;
memcpy(&save.game, &game, sizeof(struct game_t));
- save.bird = OBJSND[BIRD];
save.bivalve = OBJTXT[OYSTER];
IGNORE(fwrite(&save, sizeof(struct save_t), 1, fp));
fclose(fp);
rspeak(VERSION_SKEW, save.version / 10, MOD(save.version, 10), VRSION / 10, MOD(VRSION, 10));
} else {
memcpy(&game, &save.game, sizeof(struct game_t));
- OBJSND[BIRD] = save.bird;
OBJTXT[OYSTER] = save.bivalve;
game.zzword = RNDVOC(3, game.zzword);
}