@fnndsc/brasa 0.37.0 → 0.38.0
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.
- package/NOTICE +48 -0
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/fs/cp.js +9 -5
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/destination.d.ts +15 -1
- package/dist/builtins/fs/destination.js +35 -2
- package/dist/builtins/fs/destination.js.map +1 -1
- package/dist/builtins/fs/mv.js +9 -5
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/rm.js +17 -1
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/games/lab.js +3 -1
- package/dist/builtins/games/lab.js.map +1 -1
- package/dist/builtins/games/shelf.js +1 -1
- package/dist/builtins/games/shelf.js.map +1 -1
- package/dist/builtins/games/stdin.d.ts +0 -13
- package/dist/builtins/games/stdin.js +9 -0
- package/dist/builtins/games/stdin.js.map +1 -1
- package/dist/builtins/games/trek/abandon.d.ts +3 -0
- package/dist/builtins/games/trek/abandon.js +159 -0
- package/dist/builtins/games/trek/abandon.js.map +1 -0
- package/dist/builtins/games/trek/attack.d.ts +3 -0
- package/dist/builtins/games/trek/attack.js +185 -0
- package/dist/builtins/games/trek/attack.js.map +1 -0
- package/dist/builtins/games/trek/autover.d.ts +3 -0
- package/dist/builtins/games/trek/autover.js +79 -0
- package/dist/builtins/games/trek/autover.js.map +1 -0
- package/dist/builtins/games/trek/capture.d.ts +3 -0
- package/dist/builtins/games/trek/capture.js +117 -0
- package/dist/builtins/games/trek/capture.js.map +1 -0
- package/dist/builtins/games/trek/check_out.d.ts +3 -0
- package/dist/builtins/games/trek/check_out.js +67 -0
- package/dist/builtins/games/trek/check_out.js.map +1 -0
- package/dist/builtins/games/trek/checkcond.d.ts +3 -0
- package/dist/builtins/games/trek/checkcond.js +101 -0
- package/dist/builtins/games/trek/checkcond.js.map +1 -0
- package/dist/builtins/games/trek/compkl.d.ts +8 -0
- package/dist/builtins/games/trek/compkl.js +66 -0
- package/dist/builtins/games/trek/compkl.js.map +1 -0
- package/dist/builtins/games/trek/computer.d.ts +3 -0
- package/dist/builtins/games/trek/computer.js +310 -0
- package/dist/builtins/games/trek/computer.js.map +1 -0
- package/dist/builtins/games/trek/consts.d.ts +109 -0
- package/dist/builtins/games/trek/consts.js +159 -0
- package/dist/builtins/games/trek/consts.js.map +1 -0
- package/dist/builtins/games/trek/context.d.ts +27 -0
- package/dist/builtins/games/trek/context.js +2 -0
- package/dist/builtins/games/trek/context.js.map +1 -0
- package/dist/builtins/games/trek/damage.d.ts +3 -0
- package/dist/builtins/games/trek/damage.js +87 -0
- package/dist/builtins/games/trek/damage.js.map +1 -0
- package/dist/builtins/games/trek/damaged.d.ts +3 -0
- package/dist/builtins/games/trek/damaged.js +58 -0
- package/dist/builtins/games/trek/damaged.js.map +1 -0
- package/dist/builtins/games/trek/dcrept.d.ts +3 -0
- package/dist/builtins/games/trek/dcrept.js +86 -0
- package/dist/builtins/games/trek/dcrept.js.map +1 -0
- package/dist/builtins/games/trek/destruct.d.ts +3 -0
- package/dist/builtins/games/trek/destruct.js +114 -0
- package/dist/builtins/games/trek/destruct.js.map +1 -0
- package/dist/builtins/games/trek/dock.d.ts +5 -0
- package/dist/builtins/games/trek/dock.js +133 -0
- package/dist/builtins/games/trek/dock.js.map +1 -0
- package/dist/builtins/games/trek/dumpgame.d.ts +15 -0
- package/dist/builtins/games/trek/dumpgame.js +29 -0
- package/dist/builtins/games/trek/dumpgame.js.map +1 -0
- package/dist/builtins/games/trek/dumpme.d.ts +3 -0
- package/dist/builtins/games/trek/dumpme.js +81 -0
- package/dist/builtins/games/trek/dumpme.js.map +1 -0
- package/dist/builtins/games/trek/dumpssradio.d.ts +6 -0
- package/dist/builtins/games/trek/dumpssradio.js +72 -0
- package/dist/builtins/games/trek/dumpssradio.js.map +1 -0
- package/dist/builtins/games/trek/events.d.ts +3 -0
- package/dist/builtins/games/trek/events.js +407 -0
- package/dist/builtins/games/trek/events.js.map +1 -0
- package/dist/builtins/games/trek/getcodi.d.ts +14 -0
- package/dist/builtins/games/trek/getcodi.js +24 -0
- package/dist/builtins/games/trek/getcodi.js.map +1 -0
- package/dist/builtins/games/trek/getpar.d.ts +40 -0
- package/dist/builtins/games/trek/getpar.js +174 -0
- package/dist/builtins/games/trek/getpar.js.map +1 -0
- package/dist/builtins/games/trek/help.d.ts +3 -0
- package/dist/builtins/games/trek/help.js +155 -0
- package/dist/builtins/games/trek/help.js.map +1 -0
- package/dist/builtins/games/trek/impulse.d.ts +6 -0
- package/dist/builtins/games/trek/impulse.js +85 -0
- package/dist/builtins/games/trek/impulse.js.map +1 -0
- package/dist/builtins/games/trek/initquad.d.ts +17 -0
- package/dist/builtins/games/trek/initquad.js +79 -0
- package/dist/builtins/games/trek/initquad.js.map +1 -0
- package/dist/builtins/games/trek/io.d.ts +102 -0
- package/dist/builtins/games/trek/io.js +216 -0
- package/dist/builtins/games/trek/io.js.map +1 -0
- package/dist/builtins/games/trek/kill.d.ts +21 -0
- package/dist/builtins/games/trek/kill.js +194 -0
- package/dist/builtins/games/trek/kill.js.map +1 -0
- package/dist/builtins/games/trek/klmove.d.ts +3 -0
- package/dist/builtins/games/trek/klmove.js +181 -0
- package/dist/builtins/games/trek/klmove.js.map +1 -0
- package/dist/builtins/games/trek/lose.d.ts +9 -0
- package/dist/builtins/games/trek/lose.js +36 -0
- package/dist/builtins/games/trek/lose.js.map +1 -0
- package/dist/builtins/games/trek/lrscan.d.ts +3 -0
- package/dist/builtins/games/trek/lrscan.js +96 -0
- package/dist/builtins/games/trek/lrscan.js.map +1 -0
- package/dist/builtins/games/trek/main.d.ts +24 -0
- package/dist/builtins/games/trek/main.js +37 -0
- package/dist/builtins/games/trek/main.js.map +1 -0
- package/dist/builtins/games/trek/move.d.ts +3 -0
- package/dist/builtins/games/trek/move.js +229 -0
- package/dist/builtins/games/trek/move.js.map +1 -0
- package/dist/builtins/games/trek/nova.d.ts +3 -0
- package/dist/builtins/games/trek/nova.js +135 -0
- package/dist/builtins/games/trek/nova.js.map +1 -0
- package/dist/builtins/games/trek/out.d.ts +3 -0
- package/dist/builtins/games/trek/out.js +52 -0
- package/dist/builtins/games/trek/out.js.map +1 -0
- package/dist/builtins/games/trek/phaser.d.ts +3 -0
- package/dist/builtins/games/trek/phaser.js +341 -0
- package/dist/builtins/games/trek/phaser.js.map +1 -0
- package/dist/builtins/games/trek/play.d.ts +3 -0
- package/dist/builtins/games/trek/play.js +112 -0
- package/dist/builtins/games/trek/play.js.map +1 -0
- package/dist/builtins/games/trek/printf.d.ts +31 -0
- package/dist/builtins/games/trek/printf.js +157 -0
- package/dist/builtins/games/trek/printf.js.map +1 -0
- package/dist/builtins/games/trek/ram.d.ts +3 -0
- package/dist/builtins/games/trek/ram.js +97 -0
- package/dist/builtins/games/trek/ram.js.map +1 -0
- package/dist/builtins/games/trek/rand.d.ts +29 -0
- package/dist/builtins/games/trek/rand.js +109 -0
- package/dist/builtins/games/trek/rand.js.map +1 -0
- package/dist/builtins/games/trek/rest.d.ts +3 -0
- package/dist/builtins/games/trek/rest.js +76 -0
- package/dist/builtins/games/trek/rest.js.map +1 -0
- package/dist/builtins/games/trek/schedule.d.ts +23 -0
- package/dist/builtins/games/trek/schedule.js +55 -0
- package/dist/builtins/games/trek/schedule.js.map +1 -0
- package/dist/builtins/games/trek/score.d.ts +8 -0
- package/dist/builtins/games/trek/score.js +61 -0
- package/dist/builtins/games/trek/score.js.map +1 -0
- package/dist/builtins/games/trek/setup.d.ts +18 -0
- package/dist/builtins/games/trek/setup.js +251 -0
- package/dist/builtins/games/trek/setup.js.map +1 -0
- package/dist/builtins/games/trek/setwarp.d.ts +8 -0
- package/dist/builtins/games/trek/setwarp.js +28 -0
- package/dist/builtins/games/trek/setwarp.js.map +1 -0
- package/dist/builtins/games/trek/shield.d.ts +3 -0
- package/dist/builtins/games/trek/shield.js +139 -0
- package/dist/builtins/games/trek/shield.js.map +1 -0
- package/dist/builtins/games/trek/snova.d.ts +3 -0
- package/dist/builtins/games/trek/snova.js +156 -0
- package/dist/builtins/games/trek/snova.js.map +1 -0
- package/dist/builtins/games/trek/srscan.d.ts +3 -0
- package/dist/builtins/games/trek/srscan.js +176 -0
- package/dist/builtins/games/trek/srscan.js.map +1 -0
- package/dist/builtins/games/trek/state.d.ts +190 -0
- package/dist/builtins/games/trek/state.js +84 -0
- package/dist/builtins/games/trek/state.js.map +1 -0
- package/dist/builtins/games/trek/style.d.ts +7 -0
- package/dist/builtins/games/trek/style.js +93 -0
- package/dist/builtins/games/trek/style.js.map +1 -0
- package/dist/builtins/games/trek/systemname.d.ts +10 -0
- package/dist/builtins/games/trek/systemname.js +12 -0
- package/dist/builtins/games/trek/systemname.js.map +1 -0
- package/dist/builtins/games/trek/torped.d.ts +3 -0
- package/dist/builtins/games/trek/torped.js +232 -0
- package/dist/builtins/games/trek/torped.js.map +1 -0
- package/dist/builtins/games/trek/trek.d.ts +27 -0
- package/dist/builtins/games/trek/trek.js +96 -0
- package/dist/builtins/games/trek/trek.js.map +1 -0
- package/dist/builtins/games/trek/visual.d.ts +3 -0
- package/dist/builtins/games/trek/visual.js +87 -0
- package/dist/builtins/games/trek/visual.js.map +1 -0
- package/dist/builtins/games/trek/warp.d.ts +5 -0
- package/dist/builtins/games/trek/warp.js +173 -0
- package/dist/builtins/games/trek/warp.js.map +1 -0
- package/dist/builtins/games/trek/win.d.ts +12 -0
- package/dist/builtins/games/trek/win.js +34 -0
- package/dist/builtins/games/trek/win.js.map +1 -0
- package/dist/builtins/help.js +36 -1
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/helpSections.d.ts +15 -0
- package/dist/builtins/helpSections.js +37 -2
- package/dist/builtins/helpSections.js.map +1 -1
- package/dist/builtins/net/query.js +11 -2
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/res/play.js +9 -0
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/chris/help.js +12 -0
- package/dist/chris/help.js.map +1 -1
- package/dist/core/cancellation.d.ts +7 -0
- package/dist/core/cancellation.js +18 -0
- package/dist/core/cancellation.js.map +1 -1
- package/dist/core/commandOrder.js +3 -3
- package/dist/core/commandOrder.js.map +1 -1
- package/dist/core/commandRegistry.d.ts +8 -0
- package/dist/core/commandRegistry.js.map +1 -1
- package/dist/core/coreCommands.js +3 -0
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/engine.d.ts +16 -0
- package/dist/core/engine.js +12 -2
- package/dist/core/engine.js.map +1 -1
- package/dist/core/listing.js +9 -0
- package/dist/core/listing.js.map +1 -1
- package/dist/core/turn.d.ts +50 -0
- package/dist/core/turn.js +60 -0
- package/dist/core/turn.js.map +1 -0
- package/dist/notes.json +1 -1
- package/dist/session/recorder.d.ts +0 -15
- package/dist/session/recorder.js +9 -0
- package/dist/session/recorder.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,36 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lrscan.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/lrscan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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>;
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/move.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nova.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/nova.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;;;;;;;;GAQG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9G,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;;;;;;;;EAYE;AAEF,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,CAAO,EAAE,CAAS,EAAE,CAAS;IACtD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO;IAC1E,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtD,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM;YAAE,SAAS;QACnC,KAAK,IAAI,CAAC,GAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,EAAE,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,IAAI;oBACP,MAAM;gBAER,KAAK,OAAO;oBACV,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrB,MAAM;gBAER,KAAK,IAAI;oBACP,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpB,MAAM;gBAER,KAAK,OAAO;oBACV,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM;gBAER,KAAK,IAAI;oBACP,4FAA4F;oBAC5F,gEAAgE;oBAChE,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;oBAChB,MAAM;gBAER,KAAK,UAAU,CAAC;gBAChB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,IAAI,GAAG,GAAW,IAAI,CAAC;oBACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAChB,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;4BACvB,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;4BACnB,GAAG,GAAG,CAAC,CAAC;wBACV,CAAC;6BAAM,CAAC;4BACN,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;4BACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;wBAClB,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;oBACnB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAAE,MAAM,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC9C,MAAM;gBACR,CAAC;gBAED;oBACE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,wCAAwC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACnB,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|