# 2.11BSD#431 - /usr/src/games/trek/shield.c

##### Functions

    shield            X

##### Variables

    Udtab             X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)shield.c	5.1 (Berkeley) 1/29/86";
       9: #endif not lint
      10:
      11: # include   "trek.h"
      12: # include   "getpar.h"
      13:
      14: /*
      15: **  SHIELD AND CLOAKING DEVICE CONTROL
      16: **
      17: **	'f' is one for auto shield up (in case of Condition RED),
      18: **	zero for shield control, and negative one for cloaking
      19: **	device control.
      20: **
      21: **	Called with an 'up' or 'down' on the same line, it puts
      22: **	the shields/cloak into the specified mode.  Otherwise it
      23: **	reports to the user the current mode, and asks if she wishes
      24: **	to change.
      25: **
      26: **	This is not a free move.  Hits that occur as a result of
      27: **	this move appear as though the shields are half up/down,
      28: **	so you get partial hits.
      29: */
      30:
      31: struct cvntab Udtab[] =
      32: {
      33:     "u",        "p",            (int (*)())1,       0,
      34:     "d",        "own",          0,      0,
      35:     0
      36: };
      37:
      38: shield(f)
      39: int f;
      40: {
      41:     register int        i;
      42:     char            c;
      43:     struct cvntab       *r;
      44:     char            s[100];
      45:     char            *device, *dev2, *dev3;
      46:     int         ind;
      47:     char            *stat;
      48:
      49:     if (f > 0 && (Ship.shldup || damaged(SRSCAN)))
      50:         return;
      51:     if (f < 0)
      52:     {
      53:         /* cloaking device */
      54:         if (Ship.ship == QUEENE)
      55:             return (printf("Ye Faire Queene does not have the cloaking device.\n"));
      56:         device = "Cloaking device";
      57:         dev2 = "is";
      58:         ind = CLOAK;
      59:         dev3 = "it";
      60:         stat = &Ship.cloaked;
      61:     }
      62:     else
      63:     {
      64:         /* shields */
      65:         device = "Shields";
      66:         dev2 = "are";
      67:         dev3 = "them";
      68:         ind = SHIELD;
      69:         stat = &Ship.shldup;
      70:     }
      71:     if (damaged(ind))
      72:     {
      73:         if (f <= 0)
      74:             out(ind);
      75:         return;
      76:     }
      77:     if (Ship.cond == DOCKED)
      78:     {
      79:         printf("%s %s down while docked\n", device, dev2);
      80:         return;
      81:     }
      82:     if (f <= 0 && !testnl())
      83:     {
      84:         r = getcodpar("Up or down", Udtab);
      85:         i = (int) r->value;
      86:     }
      87:     else
      88:     {
      89:         if (*stat)
      90:             sprintf(s, "%s %s up.  Do you want %s down", device, dev2, dev3);
      91:         else
      92:             sprintf(s, "%s %s down.  Do you want %s up", device, dev2, dev3);
      93:         if (!getynpar(s))
      94:             return;
      95:         i = !*stat;
      96:     }
      97:     if (*stat == i)
      98:     {
      99:         printf("%s already ", device);
     100:         if (i)
     101:             printf("up\n");
     102:         else
     103:             printf("down\n");
     104:         return;
     105:     }
     106:     if (i)
     107:         if (f >= 0)
     108:             Ship.energy -= Param.shupengy;
     109:         else
     110:             Ship.cloakgood = 0;
     111:     Move.free = 0;
     112:     if (f >= 0)
     113:         Move.shldchg = 1;
     114:     *stat = i;
     115:     return;
     116: }

#### Defined functions

shield defined in line 38; used 4 times

- in /usr/src/games/trek/initquad.c line 55
- in /usr/src/games/trek/play.c line 25, 34, 48

#### Defined variables

Udtab defined in line 31; used 1 times

- in line 84

sccsid defined in line 8; never used

Last modified: 1986-02-01 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 526 |