- if (i == PIRATE) {
- /* The pirate's spotted him. He leaves him alone once we've
- * found chest. K counts if a treasure is here. If not, and
- * tally=1 for an unseen chest, let the pirate be spotted.
- * Note that game.place(CHEST)=0 might mean that he's thrown
- * it to the troll, but in that case he's seen the chest
- * (game.prop=0). */
- if (game.loc == game.chloc || game.prop[CHEST] >= 0)
- continue;
- k=0;
- for (int j=MINTRS; j<=MAXTRS; j++) {
- /* Pirate won't take pyramid from plover room or dark
- * room (too easy!). */
- if (j == PYRAM && (game.loc == PLAC[PYRAM] || game.loc == PLAC[EMRALD])) {
- if (HERE(j))
- k=1;
- continue;
- }
- if (TOTING(j)) {
- if (game.place[CHEST] == 0) {
- /* Install chest only once, to insure it is
- * the last treasure in the list. */
- MOVE(CHEST,game.chloc);
- MOVE(MESSAG,game.chloc2);
- }
- RSPEAK(128);
- for (int j=MINTRS; j<=MAXTRS; j++) {
- if (!(j == PYRAM && (game.loc == PLAC[PYRAM] || game.loc == PLAC[EMRALD]))) {
- if (AT(j) && game.fixed[j] == 0)
- CARRY(j,game.loc);
- if (TOTING(j))
- DROP(j,game.chloc);
- }
- }
- game.dloc[PIRATE]=game.chloc;
- game.odloc[PIRATE]=game.chloc;
- game.dseen[PIRATE]=false;
- goto jumpout;
- }
- if (HERE(j))
- k=1;
- }
- /* Force chest placement before player finds last treasure */
- if (game.tally == 1 && k == 0 && game.place[CHEST] == 0 && HERE(LAMP) && game.prop[LAMP] == 1) {
- RSPEAK(186);
- MOVE(CHEST,game.chloc);
- MOVE(MESSAG,game.chloc2);
- game.dloc[PIRATE]=game.chloc;
- game.odloc[PIRATE]=game.chloc;
- game.dseen[PIRATE]=false;
- continue;
- }
- if (game.odloc[PIRATE] != game.dloc[PIRATE] && PCT(20))
- RSPEAK(127);