if (game.place[EGGS] == LOC_NOWHERE && game.place[TROLL] == LOC_NOWHERE && game.prop[TROLL] == TROLL_UNPAID)
game.prop[TROLL] = TROLL_PAIDONCE;
if (HERE(EGGS))
- pspeak(EGGS, look, EGGS_VANISHED, true);
+ pspeak(EGGS, look, true, EGGS_VANISHED);
else if (game.loc == objects[EGGS].plac)
- pspeak(EGGS, look, EGGS_HERE, true);
+ pspeak(EGGS, look, true, EGGS_HERE);
else
- pspeak(EGGS, look, EGGS_DONE, true);
+ pspeak(EGGS, look, true, EGGS_DONE);
move(EGGS, objects[EGGS].plac);
return GO_CLEAROBJ;
if (obj == COINS && HERE(VEND)) {
DESTROY(COINS);
drop(BATTERY, game.loc);
- pspeak(BATTERY, look, FRESH_BATTERIES, true);
+ pspeak(BATTERY, look, true, FRESH_BATTERIES);
return GO_CLEAROBJ;
}
if (game.prop[URN] != URN_EMPTY) {
state_change(URN, URN_DARK);
} else {
- pspeak(URN, change, URN_DARK, true);
+ pspeak(URN, change, true, URN_DARK);
}
break;
case LAMP:
rspeak(NOW_HOLDING);
empty = false;
}
- pspeak(i, touch, -1, false);
+ pspeak(i, touch, false, -1);
}
if (TOTING(BEAR))
rspeak(TAME_BEAR);
* depending on whether player has drunk dragon's blood. */
if (i == BIRD)
mi += 3 * game.blooded;
- pspeak(i, hear, mi, true, game.zzword);
+ pspeak(i, hear, true, mi, game.zzword);
rspeak(NO_MESSAGE);
if (i == BIRD && mi == BIRD_ENDSTATE)
DESTROY(BIRD);
game.prop[command.obj] == STATE_NOTFOUND) {
speak(actions[command.verb].message);
} else
- pspeak(command.obj, study, game.prop[command.obj], true);
+ pspeak(command.obj, study, true, game.prop[command.obj]);
return GO_CLEAROBJ;
}
extern bool get_command_input(command_t *);
extern void speak(const char*, ...);
extern void sspeak(int msg, ...);
-extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
+extern void pspeak(vocab_t, enum speaktype, bool, int, ...);
extern void rspeak(vocab_t, ...);
extern void echo_input(FILE*, const char*, const char*);
extern bool silent_yes(void);
* game.prop[TROLL]=TROLL_UNPAID.) Special stuff
* for bear. */
if (game.prop[TROLL] == TROLL_PAIDONCE) {
- pspeak(TROLL, look, TROLL_PAIDONCE, true);
+ pspeak(TROLL, look, true, TROLL_PAIDONCE);
game.prop[TROLL] = TROLL_UNPAID;
move(TROLL2, LOC_NOWHERE);
move(TROLL2 + NOBJECTS, IS_FREE);
kk = (game.loc == game.fixed[STEPS])
? STEPS_UP
: STEPS_DOWN;
- pspeak(obj, look, kk, true);
+ pspeak(obj, look, true, kk);
}
}
}
* separate from their respective piles. */
if (game.closed) {
if (game.prop[OYSTER] < 0 && TOTING(OYSTER))
- pspeak(OYSTER, look, 1, true);
+ pspeak(OYSTER, look, true, 1);
for (size_t i = 1; i <= NOBJECTS; i++) {
if (TOTING(i) && game.prop[i] < 0)
game.prop[i] = STASHED(i);
va_end(ap);
}
-void pspeak(vocab_t msg, enum speaktype mode, int skip, bool blank, ...)
+void pspeak(vocab_t msg, enum speaktype mode, bool blank, int skip, ...)
/* Find the skip+1st message from msg and print it. Modes are:
* feel = for inventory, what you can touch
* look = the full description for the state the object is in
* study = text on the object. */
{
va_list ap;
- va_start(ap, blank);
+ va_start(ap, skip);
switch (mode) {
case touch:
vspeak(objects[msg].inventory, blank, ap);
/* Object must have a change-message list for this to be useful; only some do */
{
game.prop[obj] = state;
- pspeak(obj, change, state, true);
+ pspeak(obj, change, true, state);
}
/* end */