```   1: /*
2:  * Copyright (c) 1980 Regents of the University of California.
4:  * specifies the terms and conditions for redistribution.
5:  */
6:
7: #ifndef lint
8: static char sccsid[] = "@(#)nova.c	5.1 (Berkeley) 5/30/85";
9: #endif not lint
10:
11: # include   "trek.h"
12:
13: /*
14: **  CAUSE A NOVA TO OCCUR
15: **
16: **	A nova occurs.  It is the result of having a star hit with
17: **	a photon torpedo.  There are several things which may happen.
18: **	The star may not be affected.  It may go nova.  It may turn
19: **	into a black hole.  Any (yummy) it may go supernova.
20: **
21: **	Stars that go nova cause stars which surround them to undergo
22: **	the same probabilistic process.  Klingons next to them are
23: **	destroyed.  And if the starship is next to it, it gets zapped.
24: **	If the zap is too much, it gets destroyed.
25: */
26:
27: nova(x, y)
28: int x, y;
29: {
30:     register int        i, j;
31:     register int        se;
32:
34:         return;
35:     if (ranf(100) < 15)
36:     {
37:         printf("Spock: Star at %d,%d failed to nova.\n", x, y);
38:         return;
39:     }
40:     if (ranf(100) < 5)
41:         return (snova(x, y));
42:     printf("Spock: Star at %d,%d gone nova\n", x, y);
43:
44:     if (ranf(4) != 0)
45:         Sect[x][y] = EMPTY;
46:     else
47:     {
48:         Sect[x][y] = HOLE;
50:     }
52:     Game.kills += 1;
53:     for (i = x - 1; i <= x + 1; i++)
54:     {
55:         if (i < 0 || i >= NSECTS)
56:             continue;
57:         for (j = y - 1; j <= y + 1; j++)
58:         {
59:             if (j < 0 || j >= NSECTS)
60:                 continue;
61:             se = Sect[i][j];
62:             switch (se)
63:             {
64:
65:               case EMPTY:
66:               case HOLE:
67:                 break;
68:
69:               case KLINGON:
70:                 killk(i, j);
71:                 break;
72:
73:               case STAR:
74:                 nova(i, j);
75:                 break;
76:
77:               case INHABIT:
78:                 kills(i, j, -1);
79:                 break;
80:
81:               case BASE:
82:                 killb(i, j);
83:                 Game.killb += 1;
84:                 break;
85:
86:               case ENTERPRISE:
87:               case QUEENE:
88:                 se = 2000;
89:                 if (Ship.shldup)
90:                     if (Ship.shield >= se)
91:                     {
92:                         Ship.shield -= se;
93:                         se = 0;
94:                     }
95:                     else
96:                     {
97:                         se -= Ship.shield;
98:                         Ship.shield = 0;
99:                     }
100:                 Ship.energy -= se;
101:                 if (Ship.energy <= 0)
102:                     lose(L_SUICID);
103:                 break;
104:
105:               default:
106:                 printf("Unknown object %c at %d,%d destroyed\n",
107:                     se, i, j);
108:                 Sect[i][j] = EMPTY;
109:                 break;
110:             }
111:         }
112:     }
113:     return;
114: }
```

#### Defined functions

nova defined in line 27; used 2 times

#### Defined variables

sccsid defined in line 8; never used
 Last modified: 1985-05-30 Generated: 2016-12-26 Generated by src2html V0.67 page hit count: 1978