home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume4 / sail / part03 / pl_4.c < prev    next >
C/C++ Source or Header  |  1988-04-13  |  2KB  |  109 lines

  1. /*
  2.  * Copyright (c) 1983 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that this notice is preserved and that due credit is given
  7.  * to the University of California at Berkeley. The name of the University
  8.  * may not be used to endorse or promote products derived from this
  9.  * software without specific prior written permission. This software
  10.  * is provided ``as is'' without express or implied warranty.
  11.  */
  12.  
  13. #ifndef lint
  14. static char sccsid[] = "@(#)pl_4.c    5.2 (Berkeley) 3/9/88";
  15. #endif /* not lint */
  16.  
  17. #include "player.h"
  18.  
  19. changesail()
  20. {
  21.     int rig, full;
  22.  
  23.     rig = mc->rig1;
  24.     full = mf->FS;
  25.     if (windspeed == 6 || windspeed == 5 && mc->class > 4)
  26.         rig = 0;
  27.     if (mc->crew3 && rig) {
  28.         if (!full) {
  29.             if (sgetch("Increase to Full sails? ",
  30.                 (struct ship *)0, 1) == 'y') {
  31.                 changed = 1;
  32.                 Write(W_FS, ms, 0, 1, 0, 0, 0);
  33.             }
  34.         } else {
  35.             if (sgetch("Reduce to Battle sails? ",
  36.                 (struct ship *)0, 1) == 'y') {
  37.                 Write(W_FS, ms, 0, 0, 0, 0, 0);
  38.                 changed = 1;
  39.             }
  40.         }
  41.     } else if (!rig)
  42.         Signal("Sails rent to pieces", (struct ship *)0);
  43. }
  44.  
  45. acceptsignal()
  46. {
  47.     char buf[60];
  48.     register char *p = buf;
  49.  
  50.     *p++ = '"';
  51.     sgetstr("Message? ", p, sizeof buf - 2);
  52.     while (*p++)
  53.         ;
  54.     p[-1] = '"';
  55.     *p = 0;
  56.     Write(W_SIGNAL, ms, 1, (int)buf, 0, 0, 0);
  57. }
  58.  
  59. lookout()
  60. {
  61.     register struct ship *sp;
  62.     char buf[3];
  63.     register char c;
  64.  
  65.     sgetstr("What ship? ", buf, sizeof buf);
  66.     foreachship(sp) {
  67.         c = *countryname[sp->nationality];
  68.         if ((c == *buf || tolower(c) == *buf || colours(sp) == *buf)
  69.             && (sp->file->stern == buf[1] || sterncolour(sp) == buf[1]
  70.             || buf[1] == '?')) {
  71.             eyeball(sp);
  72.         }
  73.     }
  74. }
  75.  
  76. char *
  77. saywhat(sp, flag)
  78. register struct ship *sp;
  79. char flag;
  80. {
  81.     if (sp->file->captain[0])
  82.         return sp->file->captain;
  83.     else if (sp->file->struck)
  84.         return "(struck)";
  85.     else if (sp->file->captured != 0)
  86.         return "(captured)";
  87.     else if (flag)
  88.         return "(available)";
  89.     else
  90.         return "(computer)";
  91. }
  92.  
  93. eyeball(ship)
  94. register struct ship *ship;
  95. {
  96.     int i;
  97.  
  98.     if (ship->file->dir != 0) {
  99.         Signal("Sail ho! (range %d, %s)",
  100.             (struct ship *)0, range(ms, ship), saywhat(ship, 0));
  101.         i = portside(ms, ship, 1) - mf->dir;
  102.         if (i <= 0)
  103.             i += 8;
  104.         Signal("%s (%c%c) %s %s %s.",
  105.             ship, countryname[ship->nationality],
  106.             classname[ship->specs->class], directionname[i]);
  107.     }
  108. }
  109.