@fnndsc/brasa 0.43.0 → 0.43.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/games/trek.d.ts +8 -0
  3. package/dist/builtins/games/trek.js +50 -0
  4. package/dist/builtins/games/trek.js.map +1 -0
  5. package/dist/core/coreCommands.js +1 -1
  6. package/dist/core/coreCommands.js.map +1 -1
  7. package/dist/notes.json +1 -1
  8. package/package.json +3 -3
  9. package/NOTICE +0 -48
  10. package/dist/builtins/games/trek/abandon.d.ts +0 -3
  11. package/dist/builtins/games/trek/abandon.js +0 -159
  12. package/dist/builtins/games/trek/abandon.js.map +0 -1
  13. package/dist/builtins/games/trek/attack.d.ts +0 -3
  14. package/dist/builtins/games/trek/attack.js +0 -185
  15. package/dist/builtins/games/trek/attack.js.map +0 -1
  16. package/dist/builtins/games/trek/autover.d.ts +0 -3
  17. package/dist/builtins/games/trek/autover.js +0 -79
  18. package/dist/builtins/games/trek/autover.js.map +0 -1
  19. package/dist/builtins/games/trek/capture.d.ts +0 -3
  20. package/dist/builtins/games/trek/capture.js +0 -117
  21. package/dist/builtins/games/trek/capture.js.map +0 -1
  22. package/dist/builtins/games/trek/check_out.d.ts +0 -3
  23. package/dist/builtins/games/trek/check_out.js +0 -67
  24. package/dist/builtins/games/trek/check_out.js.map +0 -1
  25. package/dist/builtins/games/trek/checkcond.d.ts +0 -3
  26. package/dist/builtins/games/trek/checkcond.js +0 -101
  27. package/dist/builtins/games/trek/checkcond.js.map +0 -1
  28. package/dist/builtins/games/trek/compkl.d.ts +0 -8
  29. package/dist/builtins/games/trek/compkl.js +0 -66
  30. package/dist/builtins/games/trek/compkl.js.map +0 -1
  31. package/dist/builtins/games/trek/computer.d.ts +0 -3
  32. package/dist/builtins/games/trek/computer.js +0 -310
  33. package/dist/builtins/games/trek/computer.js.map +0 -1
  34. package/dist/builtins/games/trek/consts.d.ts +0 -109
  35. package/dist/builtins/games/trek/consts.js +0 -159
  36. package/dist/builtins/games/trek/consts.js.map +0 -1
  37. package/dist/builtins/games/trek/context.d.ts +0 -27
  38. package/dist/builtins/games/trek/context.js +0 -2
  39. package/dist/builtins/games/trek/context.js.map +0 -1
  40. package/dist/builtins/games/trek/damage.d.ts +0 -3
  41. package/dist/builtins/games/trek/damage.js +0 -87
  42. package/dist/builtins/games/trek/damage.js.map +0 -1
  43. package/dist/builtins/games/trek/damaged.d.ts +0 -3
  44. package/dist/builtins/games/trek/damaged.js +0 -58
  45. package/dist/builtins/games/trek/damaged.js.map +0 -1
  46. package/dist/builtins/games/trek/dcrept.d.ts +0 -3
  47. package/dist/builtins/games/trek/dcrept.js +0 -86
  48. package/dist/builtins/games/trek/dcrept.js.map +0 -1
  49. package/dist/builtins/games/trek/destruct.d.ts +0 -3
  50. package/dist/builtins/games/trek/destruct.js +0 -114
  51. package/dist/builtins/games/trek/destruct.js.map +0 -1
  52. package/dist/builtins/games/trek/dock.d.ts +0 -5
  53. package/dist/builtins/games/trek/dock.js +0 -133
  54. package/dist/builtins/games/trek/dock.js.map +0 -1
  55. package/dist/builtins/games/trek/dumpgame.d.ts +0 -15
  56. package/dist/builtins/games/trek/dumpgame.js +0 -29
  57. package/dist/builtins/games/trek/dumpgame.js.map +0 -1
  58. package/dist/builtins/games/trek/dumpme.d.ts +0 -3
  59. package/dist/builtins/games/trek/dumpme.js +0 -81
  60. package/dist/builtins/games/trek/dumpme.js.map +0 -1
  61. package/dist/builtins/games/trek/dumpssradio.d.ts +0 -6
  62. package/dist/builtins/games/trek/dumpssradio.js +0 -72
  63. package/dist/builtins/games/trek/dumpssradio.js.map +0 -1
  64. package/dist/builtins/games/trek/events.d.ts +0 -3
  65. package/dist/builtins/games/trek/events.js +0 -407
  66. package/dist/builtins/games/trek/events.js.map +0 -1
  67. package/dist/builtins/games/trek/getcodi.d.ts +0 -14
  68. package/dist/builtins/games/trek/getcodi.js +0 -24
  69. package/dist/builtins/games/trek/getcodi.js.map +0 -1
  70. package/dist/builtins/games/trek/getpar.d.ts +0 -40
  71. package/dist/builtins/games/trek/getpar.js +0 -174
  72. package/dist/builtins/games/trek/getpar.js.map +0 -1
  73. package/dist/builtins/games/trek/help.d.ts +0 -3
  74. package/dist/builtins/games/trek/help.js +0 -155
  75. package/dist/builtins/games/trek/help.js.map +0 -1
  76. package/dist/builtins/games/trek/impulse.d.ts +0 -6
  77. package/dist/builtins/games/trek/impulse.js +0 -85
  78. package/dist/builtins/games/trek/impulse.js.map +0 -1
  79. package/dist/builtins/games/trek/initquad.d.ts +0 -17
  80. package/dist/builtins/games/trek/initquad.js +0 -79
  81. package/dist/builtins/games/trek/initquad.js.map +0 -1
  82. package/dist/builtins/games/trek/io.d.ts +0 -102
  83. package/dist/builtins/games/trek/io.js +0 -216
  84. package/dist/builtins/games/trek/io.js.map +0 -1
  85. package/dist/builtins/games/trek/kill.d.ts +0 -21
  86. package/dist/builtins/games/trek/kill.js +0 -194
  87. package/dist/builtins/games/trek/kill.js.map +0 -1
  88. package/dist/builtins/games/trek/klmove.d.ts +0 -3
  89. package/dist/builtins/games/trek/klmove.js +0 -181
  90. package/dist/builtins/games/trek/klmove.js.map +0 -1
  91. package/dist/builtins/games/trek/lose.d.ts +0 -9
  92. package/dist/builtins/games/trek/lose.js +0 -36
  93. package/dist/builtins/games/trek/lose.js.map +0 -1
  94. package/dist/builtins/games/trek/lrscan.d.ts +0 -3
  95. package/dist/builtins/games/trek/lrscan.js +0 -96
  96. package/dist/builtins/games/trek/lrscan.js.map +0 -1
  97. package/dist/builtins/games/trek/main.d.ts +0 -24
  98. package/dist/builtins/games/trek/main.js +0 -37
  99. package/dist/builtins/games/trek/main.js.map +0 -1
  100. package/dist/builtins/games/trek/move.d.ts +0 -3
  101. package/dist/builtins/games/trek/move.js +0 -229
  102. package/dist/builtins/games/trek/move.js.map +0 -1
  103. package/dist/builtins/games/trek/nova.d.ts +0 -3
  104. package/dist/builtins/games/trek/nova.js +0 -135
  105. package/dist/builtins/games/trek/nova.js.map +0 -1
  106. package/dist/builtins/games/trek/out.d.ts +0 -3
  107. package/dist/builtins/games/trek/out.js +0 -52
  108. package/dist/builtins/games/trek/out.js.map +0 -1
  109. package/dist/builtins/games/trek/phaser.d.ts +0 -3
  110. package/dist/builtins/games/trek/phaser.js +0 -341
  111. package/dist/builtins/games/trek/phaser.js.map +0 -1
  112. package/dist/builtins/games/trek/play.d.ts +0 -3
  113. package/dist/builtins/games/trek/play.js +0 -112
  114. package/dist/builtins/games/trek/play.js.map +0 -1
  115. package/dist/builtins/games/trek/printf.d.ts +0 -31
  116. package/dist/builtins/games/trek/printf.js +0 -157
  117. package/dist/builtins/games/trek/printf.js.map +0 -1
  118. package/dist/builtins/games/trek/ram.d.ts +0 -3
  119. package/dist/builtins/games/trek/ram.js +0 -97
  120. package/dist/builtins/games/trek/ram.js.map +0 -1
  121. package/dist/builtins/games/trek/rand.d.ts +0 -29
  122. package/dist/builtins/games/trek/rand.js +0 -109
  123. package/dist/builtins/games/trek/rand.js.map +0 -1
  124. package/dist/builtins/games/trek/rest.d.ts +0 -3
  125. package/dist/builtins/games/trek/rest.js +0 -76
  126. package/dist/builtins/games/trek/rest.js.map +0 -1
  127. package/dist/builtins/games/trek/schedule.d.ts +0 -23
  128. package/dist/builtins/games/trek/schedule.js +0 -55
  129. package/dist/builtins/games/trek/schedule.js.map +0 -1
  130. package/dist/builtins/games/trek/score.d.ts +0 -8
  131. package/dist/builtins/games/trek/score.js +0 -61
  132. package/dist/builtins/games/trek/score.js.map +0 -1
  133. package/dist/builtins/games/trek/setup.d.ts +0 -18
  134. package/dist/builtins/games/trek/setup.js +0 -251
  135. package/dist/builtins/games/trek/setup.js.map +0 -1
  136. package/dist/builtins/games/trek/setwarp.d.ts +0 -8
  137. package/dist/builtins/games/trek/setwarp.js +0 -28
  138. package/dist/builtins/games/trek/setwarp.js.map +0 -1
  139. package/dist/builtins/games/trek/shield.d.ts +0 -3
  140. package/dist/builtins/games/trek/shield.js +0 -139
  141. package/dist/builtins/games/trek/shield.js.map +0 -1
  142. package/dist/builtins/games/trek/snova.d.ts +0 -3
  143. package/dist/builtins/games/trek/snova.js +0 -156
  144. package/dist/builtins/games/trek/snova.js.map +0 -1
  145. package/dist/builtins/games/trek/srscan.d.ts +0 -3
  146. package/dist/builtins/games/trek/srscan.js +0 -176
  147. package/dist/builtins/games/trek/srscan.js.map +0 -1
  148. package/dist/builtins/games/trek/state.d.ts +0 -190
  149. package/dist/builtins/games/trek/state.js +0 -84
  150. package/dist/builtins/games/trek/state.js.map +0 -1
  151. package/dist/builtins/games/trek/style.d.ts +0 -7
  152. package/dist/builtins/games/trek/style.js +0 -93
  153. package/dist/builtins/games/trek/style.js.map +0 -1
  154. package/dist/builtins/games/trek/systemname.d.ts +0 -10
  155. package/dist/builtins/games/trek/systemname.js +0 -12
  156. package/dist/builtins/games/trek/systemname.js.map +0 -1
  157. package/dist/builtins/games/trek/torped.d.ts +0 -3
  158. package/dist/builtins/games/trek/torped.js +0 -232
  159. package/dist/builtins/games/trek/torped.js.map +0 -1
  160. package/dist/builtins/games/trek/trek.d.ts +0 -27
  161. package/dist/builtins/games/trek/trek.js +0 -96
  162. package/dist/builtins/games/trek/trek.js.map +0 -1
  163. package/dist/builtins/games/trek/visual.d.ts +0 -3
  164. package/dist/builtins/games/trek/visual.js +0 -87
  165. package/dist/builtins/games/trek/visual.js.map +0 -1
  166. package/dist/builtins/games/trek/warp.d.ts +0 -5
  167. package/dist/builtins/games/trek/warp.js +0 -173
  168. package/dist/builtins/games/trek/warp.js.map +0 -1
  169. package/dist/builtins/games/trek/win.d.ts +0 -12
  170. package/dist/builtins/games/trek/win.js +0 -34
  171. package/dist/builtins/games/trek/win.js.map +0 -1
@@ -1,36 +0,0 @@
1
- import { L_NOTIME } from './consts.js';
2
- import { skiptonl } from './getpar.js';
3
- import { TrekReset } from './io.js';
4
- import { score } from './score.js';
5
- /** The loser messages, by the L_* code less one. */
6
- const Losemsg = [
7
- 'You ran out of time',
8
- 'You ran out of energy',
9
- 'You have been destroyed',
10
- 'You ran into the negative energy barrier',
11
- "You destroyed yourself by nova'ing that star",
12
- 'You have been caught in a supernova',
13
- 'You just suffocated in outer space',
14
- 'You could not be rematerialized',
15
- "\n\x1a\x0c ***\x07 Ship's hull has imploded\x07 ***",
16
- 'You have burned up in a star',
17
- "Well, you destroyed yourself, but it didn't do any good",
18
- 'You have been captured by Klingons and mercilessly tortured',
19
- 'Your last crew member died',
20
- ];
21
- /** PRINT OUT LOSER MESSAGES, then the score, and the game is restarted. */
22
- export async function lose(t, why) {
23
- t.s.Game.killed = 1;
24
- await t.io.sleep(1);
25
- t.io.printf('\n%s\n', Losemsg[why - 1]);
26
- switch (why) {
27
- case L_NOTIME:
28
- t.s.Game.killed = 0;
29
- break;
30
- }
31
- t.s.Move.endgame = -1;
32
- score(t);
33
- await skiptonl(t, 0);
34
- throw new TrekReset();
35
- }
36
- //# sourceMappingURL=lose.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lose.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/lose.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,oDAAoD;AACpD,MAAM,OAAO,GAA0B;IACrC,qBAAqB;IACrB,uBAAuB;IACvB,yBAAyB;IACzB,0CAA0C;IAC1C,8CAA8C;IAC9C,qCAAqC;IACrC,oCAAoC;IACpC,iCAAiC;IACjC,qDAAqD;IACrD,8BAA8B;IAC9B,yDAAyD;IACzD,6DAA6D;IAC7D,4BAA4B;CAC7B,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,CAAO,EAAE,GAAW;IAC7C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAW,CAAC,CAAC;IAClD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,MAAM;IACV,CAAC;IACD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACtB,KAAK,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,SAAS,EAAE,CAAC;AACxB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Trek } from './context.js';
2
- /** LONG RANGE OF SCANNERS */
3
- export declare function lrscan(t: Trek, _v: number): Promise<void>;
@@ -1,96 +0,0 @@
1
- /*
2
- * lrscan.ts: a TypeScript port of BSD trek(6), from lrscan.c.
3
- * Ported from NetBSD src/games/trek (trunk 7a9ca154a8f6144307865f23390a3c63b400b801): lrscan.c 1.10 2009/05/24.
4
- *
5
- * Copyright (c) 1980, 1993
6
- * The Regents of the University of California. All rights reserved.
7
- *
8
- * Redistribution and use in source and binary forms, with or without
9
- * modification, are permitted provided that the following conditions
10
- * are met:
11
- * 1. Redistributions of source code must retain the above copyright
12
- * notice, this list of conditions and the following disclaimer.
13
- * 2. Redistributions in binary form must reproduce the above copyright
14
- * notice, this list of conditions and the following disclaimer in the
15
- * documentation and/or other materials provided with the distribution.
16
- * 3. Neither the name of the University nor the names of its contributors
17
- * may be used to endorse or promote products derived from this software
18
- * without specific prior written permission.
19
- *
20
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
- * SUCH DAMAGE.
31
- *
32
- */
33
- /**
34
- * @file The long range scan: the eight quadrants around the ship and its
35
- * own, each as klingons, bases and stars in one three-digit number.
36
- *
37
- * @module
38
- */
39
- import { LRSCAN, NQUADS } from './consts.js';
40
- import { check_out } from './check_out.js';
41
- /*
42
- ** LONG RANGE OF SCANNERS
43
- **
44
- ** A summary of the quadrants that surround you is printed. The
45
- ** hundreds digit is the number of Klingons in the quadrant,
46
- ** the tens digit is the number of starbases, and the units digit
47
- ** is the number of stars. If the printout is "///" it means
48
- ** that that quadrant is rendered uninhabitable by a supernova.
49
- ** It also updates the "scanned" field of the quadrants it scans,
50
- ** for future use by the "chart" option of the computer.
51
- */
52
- /** LONG RANGE OF SCANNERS */
53
- export async function lrscan(t, _v) {
54
- let q;
55
- if (check_out(t, LRSCAN)) {
56
- return;
57
- }
58
- t.io.printf('Long range scan for quadrant %d,%d\n\n', t.s.Ship.quadx, t.s.Ship.quady);
59
- /* print the header on top */
60
- for (let j = t.s.Ship.quady - 1; j <= t.s.Ship.quady + 1; j++) {
61
- if (j < 0 || j >= NQUADS)
62
- t.io.printf(' ');
63
- else
64
- t.io.printf(' %1d', j);
65
- }
66
- /* scan the quadrants */
67
- for (let i = t.s.Ship.quadx - 1; i <= t.s.Ship.quadx + 1; i++) {
68
- t.io.printf('\n -------------------\n');
69
- if (i < 0 || i >= NQUADS) {
70
- /* negative energy barrier */
71
- t.io.printf(' ! * ! * ! * !');
72
- continue;
73
- }
74
- /* print the left hand margin */
75
- t.io.printf('%1d !', i);
76
- for (let j = t.s.Ship.quady - 1; j <= t.s.Ship.quady + 1; j++) {
77
- if (j < 0 || j >= NQUADS) {
78
- /* negative energy barrier again */
79
- t.io.printf(' * !');
80
- continue;
81
- }
82
- q = t.s.Quad[i][j];
83
- if (q.stars < 0) {
84
- /* supernova */
85
- t.io.printf(' /// !');
86
- q.scanned = 1000;
87
- continue;
88
- }
89
- q.scanned = q.klings * 100 + q.bases * 10 + q.stars;
90
- t.io.printf(' %3d !', q.scanned);
91
- }
92
- }
93
- t.io.printf('\n -------------------\n');
94
- return;
95
- }
96
- //# sourceMappingURL=lrscan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lrscan.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/lrscan.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * @file The game's entry: the banner, then games until the captain asks
3
- * for no more. setjmp(env) is the catch of TrekReset; exit() the catch of
4
- * TrekExit.
5
- *
6
- * Deviation: the random seed, fast mode and trace come in as options
7
- * rather than from time(NULL) and the command line.
8
- *
9
- * C version by Eric P. Allman 5/76 (U.C. Berkeley) with help from Jeff
10
- * Poskanzer and Pete Rubinstein; the full credits are kept in main.c of
11
- * the original and reproduced in this package's NOTICE.
12
- *
13
- * @module
14
- */
15
- import type { Trek } from './context.js';
16
- /** How a game is started: the C's command line. */
17
- export interface TrekOptions {
18
- /** Etc.fast: 0 slow (-s), 1 default, 2 and up with -f. */
19
- fast: number;
20
- /** Trace: on with -t. */
21
- trace: number;
22
- }
23
- /** main(): the exit status the game ends with. */
24
- export declare function trek_main(t: Trek, options: TrekOptions): Promise<number>;
@@ -1,37 +0,0 @@
1
- import { getynpar } from './getpar.js';
2
- import { TrekExit, TrekReset } from './io.js';
3
- import { play } from './play.js';
4
- import { setup } from './setup.js';
5
- /** main(): the exit status the game ends with. */
6
- export async function trek_main(t, options) {
7
- // Default to fast mode
8
- t.s.Etc.fast = options.fast;
9
- t.s.Trace = options.trace;
10
- t.io.printf('\n * * * S T A R T R E K * * *\n\nPress return to continue.\n');
11
- let reset = false;
12
- while (true) {
13
- try {
14
- if (reset) {
15
- reset = false;
16
- if (!(await getynpar(t, 'Another game')))
17
- t.io.exit(0);
18
- }
19
- do {
20
- await setup(t);
21
- await play(t);
22
- } while (await getynpar(t, 'Another game'));
23
- t.io.fflush();
24
- return 0;
25
- }
26
- catch (caught) {
27
- if (caught instanceof TrekReset) {
28
- reset = true;
29
- continue;
30
- }
31
- if (caught instanceof TrekExit)
32
- return caught.code;
33
- throw caught;
34
- }
35
- }
36
- }
37
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/main.ts"],"names":[],"mappings":"AA+CA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAUnC,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,CAAO,EAAE,OAAoB;IAC3D,uBAAuB;IACvB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE1B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,uEAAuE,CAAC,CAAC;IAErF,IAAI,KAAK,GAAY,KAAK,CAAC;IAC3B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,GAAG,KAAK,CAAC;gBACd,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,GAAG,CAAC;gBACF,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;gBACf,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC,QAAQ,MAAM,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE;YAC5C,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,MAAe,EAAE,CAAC;YACzB,IAAI,MAAM,YAAY,SAAS,EAAE,CAAC;gBAChC,KAAK,GAAG,IAAI,CAAC;gBACb,SAAS;YACX,CAAC;YACD,IAAI,MAAM,YAAY,QAAQ;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC;YACnD,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Trek } from './context.js';
2
- /** Moves the ship; returns the time the move actually took. */
3
- export declare function move(t: Trek, ramflag: number, course: number, time: number, speed: number): Promise<number>;
@@ -1,229 +0,0 @@
1
- /*
2
- * move.ts: a TypeScript port of BSD trek(6), from move.c.
3
- * Ported from NetBSD src/games/trek (trunk 7a9ca154a8f6144307865f23390a3c63b400b801): move.c 1.11 2011/07/03.
4
- *
5
- * Copyright (c) 1980, 1993
6
- * The Regents of the University of California. All rights reserved.
7
- *
8
- * Redistribution and use in source and binary forms, with or without
9
- * modification, are permitted provided that the following conditions
10
- * are met:
11
- * 1. Redistributions of source code must retain the above copyright
12
- * notice, this list of conditions and the following disclaimer.
13
- * 2. Redistributions in binary form must reproduce the above copyright
14
- * notice, this list of conditions and the following disclaimer in the
15
- * documentation and/or other materials provided with the distribution.
16
- * 3. Neither the name of the University nor the names of its contributors
17
- * may be used to endorse or promote products derived from this software
18
- * without specific prior written permission.
19
- *
20
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
- * SUCH DAMAGE.
31
- *
32
- */
33
- /**
34
- * @file Moving under warp or impulse power: the course through the
35
- * current quadrant, leaving it, ramming, black holes and the long range
36
- * tractor beam that cuts a move short.
37
- *
38
- * @module
39
- */
40
- import { attack } from './attack.js';
41
- import { checkcond } from './checkcond.js';
42
- import { compkldist } from './compkl.js';
43
- import { COMPUTER, E_LRTB, EMPTY, HOLE, L_NEGENB, NQUADS, NSECTS, SINS } from './consts.js';
44
- import { damaged } from './damaged.js';
45
- import { dumpme } from './dumpme.js';
46
- import { initquad } from './initquad.js';
47
- import { lose } from './lose.js';
48
- import { ram } from './ram.js';
49
- import { franf } from './rand.js';
50
- /** float.h's DBL_MIN: the smallest normalized double (not Number.MIN_VALUE, which is subnormal). */
51
- const DBL_MIN = 2.2250738585072014e-308;
52
- /*
53
- ** Move Under Warp or Impulse Power
54
- **
55
- ** `Ramflag' is set if we are to be allowed to ram stars,
56
- ** Klingons, etc. This is passed from warp(), which gets it from
57
- ** either play() or ram(). Course is the course (0 -> 360) at
58
- ** which we want to move. `Speed' is the speed we
59
- ** want to go, and `time' is the expected time. It
60
- ** can get cut short if a long range tractor beam is to occur. We
61
- ** cut short the move so that the user doesn't get docked time and
62
- ** energy for distance which he didn't travel.
63
- **
64
- ** We check the course through the current quadrant to see that he
65
- ** doesn't run into anything. After that, though, space sort of
66
- ** bends around him. Note that this puts us in the awkward posi-
67
- ** tion of being able to be dropped into a sector which is com-
68
- ** pletely surrounded by stars. Oh Well.
69
- **
70
- ** If the SINS (Space Inertial Navigation System) is out, we ran-
71
- ** domize the course accordingly before ever starting to move.
72
- ** We will still move in a straight line.
73
- **
74
- ** Note that if your computer is out, you ram things anyway. In
75
- ** other words, if your computer and sins are both out, you're in
76
- ** potentially very bad shape.
77
- **
78
- ** Klingons get a chance to zap you as you leave the quadrant.
79
- ** By the way, they also try to follow you (heh heh).
80
- **
81
- ** Return value is the actual amount of time used.
82
- **
83
- **
84
- ** Uses trace flag 4.
85
- */
86
- /** Moves the ship; returns the time the move actually took. */
87
- export async function move(t, ramflag, course, time, speed) {
88
- const { Ship, Param, Move, Etc } = t.s;
89
- let angle;
90
- let x;
91
- let y;
92
- let dx;
93
- let dy;
94
- let ix = 0;
95
- let iy = 0;
96
- let bigger;
97
- let n;
98
- let i;
99
- let dist;
100
- let evtime;
101
- if (t.s.Trace) {
102
- t.io.printf('move: ramflag %d course %d time %.2f speed %.2f\n', ramflag, course, time, speed);
103
- }
104
- const sectsize = NSECTS;
105
- /* initialize delta factors for move */
106
- angle = course * 0.0174532925;
107
- if (damaged(t, SINS)) {
108
- angle += Param.navigcrud[1] * (franf(t.rnd) - 0.5);
109
- }
110
- else if (Ship.sinsbad) {
111
- angle += Param.navigcrud[0] * (franf(t.rnd) - 0.5);
112
- }
113
- dx = -Math.cos(angle);
114
- dy = Math.sin(angle);
115
- bigger = Math.abs(dx);
116
- dist = Math.abs(dy);
117
- if (dist > bigger)
118
- bigger = dist;
119
- dx /= bigger;
120
- dy /= bigger;
121
- /* check for long range tractor beams */
122
- /**** TEMPORARY CODE == DEBUGGING ****/
123
- evtime = t.s.Event[t.s.Now.eventptr[E_LRTB]].date - t.s.Now.date;
124
- if (t.s.Trace) {
125
- // the C prints the event pointer with %p; the port prints its index
126
- t.io.printf('E.ep = %d, ->evcode = %d, ->date = %.2f, ' +
127
- 'evtime = %.2f\n', t.s.Now.eventptr[E_LRTB], t.s.Event[t.s.Now.eventptr[E_LRTB]].evcode, t.s.Event[t.s.Now.eventptr[E_LRTB]].date, evtime);
128
- }
129
- if (time > evtime && Etc.nkling < 3) {
130
- /* then we got a LRTB */
131
- evtime += 0.005;
132
- time = evtime;
133
- }
134
- else {
135
- evtime = DBL_MIN;
136
- }
137
- dist = time * speed;
138
- /* move within quadrant */
139
- t.s.Sect[Ship.sectx][Ship.secty] = EMPTY;
140
- x = Ship.sectx + 0.5;
141
- y = Ship.secty + 0.5;
142
- const xn = NSECTS * dist * bigger;
143
- n = Math.trunc(xn + 0.5);
144
- if (t.s.Trace) {
145
- t.io.printf('dx = %.2f, dy = %.2f, xn = %.2f, n = %d\n', dx, dy, xn, n);
146
- }
147
- Move.free = 0;
148
- for (i = 0; i < n; i++) {
149
- ix = Math.trunc(x += dx);
150
- iy = Math.trunc(y += dy);
151
- if (t.s.Trace) {
152
- t.io.printf('ix = %d, x = %.2f, iy = %d, y = %.2f\n', ix, x, iy, y);
153
- }
154
- if (x < 0.0 || y < 0.0 || x >= sectsize || y >= sectsize) {
155
- /* enter new quadrant */
156
- dx = Ship.quadx * NSECTS + Ship.sectx + dx * xn;
157
- dy = Ship.quady * NSECTS + Ship.secty + dy * xn;
158
- if (dx < 0.0)
159
- ix = -1;
160
- else
161
- ix = Math.trunc(dx + 0.5);
162
- if (dy < 0.0)
163
- iy = -1;
164
- else
165
- iy = Math.trunc(dy + 0.5);
166
- if (t.s.Trace)
167
- t.io.printf('New quad: ix = %d, iy = %d\n', ix, iy);
168
- Ship.sectx = Math.trunc(x);
169
- Ship.secty = Math.trunc(y);
170
- compkldist(t, 0);
171
- Move.newquad = 2;
172
- await attack(t, 0);
173
- await checkcond(t);
174
- Ship.quadx = Math.trunc(ix / NSECTS);
175
- Ship.quady = Math.trunc(iy / NSECTS);
176
- Ship.sectx = ix % NSECTS;
177
- Ship.secty = iy % NSECTS;
178
- if (ix < 0 || Ship.quadx >= NQUADS || iy < 0 ||
179
- Ship.quady >= NQUADS) {
180
- if (!damaged(t, COMPUTER)) {
181
- await dumpme(t, 0);
182
- }
183
- else {
184
- await lose(t, L_NEGENB);
185
- }
186
- }
187
- await initquad(t, 0);
188
- n = 0;
189
- break;
190
- }
191
- if (t.s.Sect[ix][iy] !== EMPTY) {
192
- /* we just hit something */
193
- if (!damaged(t, COMPUTER) && ramflag <= 0) {
194
- ix = Math.trunc(x - dx);
195
- iy = Math.trunc(y - dy);
196
- t.io.printf('Computer reports navigation error; ' +
197
- '%s stopped at %d,%d\n', Ship.shipname, ix, iy);
198
- Ship.energy = Math.trunc(Ship.energy - Param.stopengy * speed);
199
- break;
200
- }
201
- /* test for a black hole */
202
- if (t.s.Sect[ix][iy] === HOLE) {
203
- /* get dumped elsewhere in the galaxy */
204
- await dumpme(t, 1);
205
- await initquad(t, 0);
206
- n = 0;
207
- break;
208
- }
209
- await ram(t, ix, iy);
210
- break;
211
- }
212
- }
213
- if (n > 0) {
214
- dx = Ship.sectx - ix;
215
- dy = Ship.secty - iy;
216
- dist = Math.sqrt(dx * dx + dy * dy) / NSECTS;
217
- time = dist / speed;
218
- if (evtime > time) {
219
- /* spring the LRTB trap */
220
- time = evtime;
221
- }
222
- Ship.sectx = ix;
223
- Ship.secty = iy;
224
- }
225
- t.s.Sect[Ship.sectx][Ship.secty] = Ship.ship;
226
- compkldist(t, 0);
227
- return time;
228
- }
229
- //# sourceMappingURL=move.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"move.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/move.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5F,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,oGAAoG;AACpG,MAAM,OAAO,GAAW,uBAAuB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCE;AAEF,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,CAAO,EAAE,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,KAAa;IAC9F,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,KAAa,CAAC;IAClB,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,EAAE,GAAW,CAAC,CAAC;IACnB,IAAI,EAAE,GAAW,CAAC,CAAC;IACnB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IACd,IAAI,IAAY,CAAC;IACjB,IAAI,MAAc,CAAC;IAEnB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,mDAAmD,EAC7D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,QAAQ,GAAW,MAAM,CAAC;IAChC,uCAAuC;IACvC,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;IAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACrB,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrD,CAAC;IACD,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,IAAI,IAAI,GAAG,MAAM;QAAE,MAAM,GAAG,IAAI,CAAC;IACjC,EAAE,IAAI,MAAM,CAAC;IACb,EAAE,IAAI,MAAM,CAAC;IAEb,wCAAwC;IACxC,yCAAyC;IACzC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACjE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACd,oEAAoE;QACpE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,2CAA2C;YACrD,iBAAiB,EACnB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACpE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,wBAAwB;QACxB,MAAM,IAAI,KAAK,CAAC;QAChB,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAEpB,0BAA0B;IAC1B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,MAAM,EAAE,GAAW,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,2CAA2C,EACrD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAEd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACd,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAClD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzD,wBAAwB;YACxB,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;YAChD,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;YAChD,IAAI,EAAE,GAAG,GAAG;gBAAE,EAAE,GAAG,CAAC,CAAC,CAAC;;gBACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,GAAG,GAAG;gBAAE,EAAE,GAAG,CAAC,CAAC,CAAC;;gBACjB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;YACzB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,EAAE,GAAG,CAAC;gBACxC,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC1B,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC;YACN,MAAM;QACR,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YAC/B,2BAA2B;YAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC1C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,qCAAqC;oBAC/C,uBAAuB,EACzB,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;gBAC/D,MAAM;YACR,CAAC;YACD,2BAA2B;YAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9B,wCAAwC;gBACxC,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnB,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,CAAC,GAAG,CAAC,CAAC;gBACN,MAAM;YACR,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACrB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACrB,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;QAC7C,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;YAClB,0BAA0B;YAC1B,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IACD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7C,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Trek } from './context.js';
2
- /** Cause a nova to occur. */
3
- export declare function nova(t: Trek, x: number, y: number): Promise<void>;
@@ -1,135 +0,0 @@
1
- /*
2
- * nova.ts: a TypeScript port of BSD trek(6), from nova.c.
3
- * Ported from NetBSD src/games/trek (trunk 7a9ca154a8f6144307865f23390a3c63b400b801): nova.c 1.8 2009/05/24.
4
- *
5
- * Copyright (c) 1980, 1993
6
- * The Regents of the University of California. All rights reserved.
7
- *
8
- * Redistribution and use in source and binary forms, with or without
9
- * modification, are permitted provided that the following conditions
10
- * are met:
11
- * 1. Redistributions of source code must retain the above copyright
12
- * notice, this list of conditions and the following disclaimer.
13
- * 2. Redistributions in binary form must reproduce the above copyright
14
- * notice, this list of conditions and the following disclaimer in the
15
- * documentation and/or other materials provided with the distribution.
16
- * 3. Neither the name of the University nor the names of its contributors
17
- * may be used to endorse or promote products derived from this software
18
- * without specific prior written permission.
19
- *
20
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
- * SUCH DAMAGE.
31
- *
32
- */
33
- /**
34
- * @file A nova: a star hit by a photon torpedo may fail, go nova, turn
35
- * into a black hole or go supernova; a nova takes its neighbours with it.
36
- *
37
- * Deviation: a starbase caught in a nova is the one in this quadrant; the
38
- * C passed the sector coordinates to killb() as a quadrant's.
39
- *
40
- * @module
41
- */
42
- import { BASE, EMPTY, ENTERPRISE, HOLE, INHABIT, KLINGON, L_SUICID, NSECTS, QUEENE, STAR } from './consts.js';
43
- import { killb, killk, kills } from './kill.js';
44
- import { lose } from './lose.js';
45
- import { ranf } from './rand.js';
46
- import { snova } from './snova.js';
47
- /*
48
- ** CAUSE A NOVA TO OCCUR
49
- **
50
- ** A nova occurs. It is the result of having a star hit with
51
- ** a photon torpedo. There are several things which may happen.
52
- ** The star may not be affected. It may go nova. It may turn
53
- ** into a black hole. Any (yummy) it may go supernova.
54
- **
55
- ** Stars that go nova cause stars which surround them to undergo
56
- ** the same probabilistic process. Klingons next to them are
57
- ** destroyed. And if the starship is next to it, it gets zapped.
58
- ** If the zap is too much, it gets destroyed.
59
- */
60
- /** Cause a nova to occur. */
61
- export async function nova(t, x, y) {
62
- const { Sect, Quad, Ship, Game } = t.s;
63
- if (Sect[x][y] !== STAR || Quad[Ship.quadx][Ship.quady].stars < 0)
64
- return;
65
- if (ranf(t.rnd, 100) < 15) {
66
- t.io.printf('Spock: Star at %d,%d failed to nova.\n', x, y);
67
- return;
68
- }
69
- if (ranf(t.rnd, 100) < 5) {
70
- await snova(t, x, y);
71
- return;
72
- }
73
- t.io.printf('Spock: Star at %d,%d gone nova\n', x, y);
74
- if (ranf(t.rnd, 4) !== 0) {
75
- Sect[x][y] = EMPTY;
76
- }
77
- else {
78
- Sect[x][y] = HOLE;
79
- Quad[Ship.quadx][Ship.quady].holes += 1;
80
- }
81
- Quad[Ship.quadx][Ship.quady].stars -= 1;
82
- Game.kills += 1;
83
- for (let i = x - 1; i <= x + 1; i++) {
84
- if (i < 0 || i >= NSECTS)
85
- continue;
86
- for (let j = y - 1; j <= y + 1; j++) {
87
- if (j < 0 || j >= NSECTS)
88
- continue;
89
- const se = Sect[i][j];
90
- switch (se) {
91
- case EMPTY:
92
- case HOLE:
93
- break;
94
- case KLINGON:
95
- await killk(t, i, j);
96
- break;
97
- case STAR:
98
- await nova(t, i, j);
99
- break;
100
- case INHABIT:
101
- await kills(t, i, j, -1);
102
- break;
103
- case BASE:
104
- // Deviation: the C passes the sector (i, j) as a quadrant, reading past Quad (a crash, or a
105
- // stray base killed); the base hit is the one in this quadrant.
106
- await killb(t, Ship.quadx, Ship.quady);
107
- Game.killb += 1;
108
- break;
109
- case ENTERPRISE:
110
- case QUEENE: {
111
- let zap = 2000;
112
- if (Ship.shldup) {
113
- if (Ship.shield >= zap) {
114
- Ship.shield -= zap;
115
- zap = 0;
116
- }
117
- else {
118
- zap -= Ship.shield;
119
- Ship.shield = 0;
120
- }
121
- }
122
- Ship.energy -= zap;
123
- if (Ship.energy <= 0)
124
- await lose(t, L_SUICID);
125
- break;
126
- }
127
- default:
128
- t.io.printf('Unknown object %c at %d,%d destroyed\n', se, i, j);
129
- Sect[i][j] = EMPTY;
130
- break;
131
- }
132
- }
133
- }
134
- }
135
- //# sourceMappingURL=nova.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nova.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/nova.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Trek } from './context.js';
2
- /** Says a device is damaged. */
3
- export declare function out(t: Trek, dev: number): Promise<void>;