@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,407 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* events.ts: a TypeScript port of BSD trek(6), from events.c.
|
|
3
|
+
* Ported from NetBSD src/games/trek (trunk 7a9ca154a8f6144307865f23390a3c63b400b801): events.c 1.11 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 Causing time to elapse: energy eaten and regenerated, and every
|
|
35
|
+
* event that falls due processed in date order: supernovas, tractor beams,
|
|
36
|
+
* attacks on starbases, distress calls, enslavement, Klingon
|
|
37
|
+
* reproduction, galaxy snapshots, attacks during a rest, and repairs.
|
|
38
|
+
*
|
|
39
|
+
* Deviation: the snapshot is a copy of the state (state.ts), not a block
|
|
40
|
+
* of bytes.
|
|
41
|
+
*
|
|
42
|
+
* @module
|
|
43
|
+
*/
|
|
44
|
+
import { attack } from './attack.js';
|
|
45
|
+
import { compkldist } from './compkl.js';
|
|
46
|
+
import { Device, DOCKED, E_ATTACK, E_ENSLV, E_EVENT, E_FIXDV, E_GHOST, E_HIDDEN, E_ISSUE, E_KATSB, E_KDESB, E_LRTB, E_REPRO, E_SNAP, E_SNOVA, KLINGON, L_NOTIME, LIFESUP, MAXDISTR, MAXEVENTS, MAXKLQUAD, NQUADS, NSECTS, Q_DISTRESSED, Q_SYSTEM, SINS, SSRADIO, Systemname, } from './consts.js';
|
|
47
|
+
import { damaged } from './damaged.js';
|
|
48
|
+
import { dumpssradio } from './dumpssradio.js';
|
|
49
|
+
import { getynpar } from './getpar.js';
|
|
50
|
+
import { initquad, sector } from './initquad.js';
|
|
51
|
+
import { killb } from './kill.js';
|
|
52
|
+
import { lose } from './lose.js';
|
|
53
|
+
import { franf, ranf } from './rand.js';
|
|
54
|
+
import { reschedule, schedule, unschedule, xresched, xsched } from './schedule.js';
|
|
55
|
+
import { snova } from './snova.js';
|
|
56
|
+
import { snapshot_take } from './state.js';
|
|
57
|
+
/** CAUSE TIME TO ELAPSE: 'timewarp' is set if called in a time warp. */
|
|
58
|
+
export async function events(t, timewarp) {
|
|
59
|
+
const s = t.s;
|
|
60
|
+
const { Move, Now, Ship, Param, Etc, Game } = s;
|
|
61
|
+
const quad = (x, y) => s.Quad[x][y];
|
|
62
|
+
const event = (n) => s.Event[n];
|
|
63
|
+
let i;
|
|
64
|
+
let j = 0;
|
|
65
|
+
let rtime;
|
|
66
|
+
let xdate;
|
|
67
|
+
let ev = -1;
|
|
68
|
+
let ix = 0;
|
|
69
|
+
let iy = 0;
|
|
70
|
+
let q;
|
|
71
|
+
let e;
|
|
72
|
+
let evnum;
|
|
73
|
+
let restcancel;
|
|
74
|
+
// if nothing happened, just allow for any Klingons killed
|
|
75
|
+
if (Move.time <= 0.0) {
|
|
76
|
+
Now.time = Now.resource / Now.klings;
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
// indicate that the cloaking device is now working
|
|
80
|
+
Ship.cloakgood = 1;
|
|
81
|
+
// idate is the initial date
|
|
82
|
+
const idate = Now.date;
|
|
83
|
+
// schedule attacks if resting too long
|
|
84
|
+
if (Move.time > 0.5 && Move.resting)
|
|
85
|
+
schedule(t, E_ATTACK, 0.5, 0, 0, 0);
|
|
86
|
+
// scan the event list
|
|
87
|
+
while (true) {
|
|
88
|
+
restcancel = 0;
|
|
89
|
+
evnum = -1;
|
|
90
|
+
// xdate is the date of the current event
|
|
91
|
+
xdate = idate + Move.time;
|
|
92
|
+
// find the first event that has happened
|
|
93
|
+
for (i = 0; i < MAXEVENTS; i++) {
|
|
94
|
+
const one = event(i);
|
|
95
|
+
if (one.evcode === 0 || one.evcode & E_GHOST)
|
|
96
|
+
continue;
|
|
97
|
+
if (one.date < xdate) {
|
|
98
|
+
xdate = one.date;
|
|
99
|
+
ev = i;
|
|
100
|
+
evnum = i;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
e = ev;
|
|
104
|
+
// find the time between events
|
|
105
|
+
rtime = xdate - Now.date;
|
|
106
|
+
// decrement the magic "Federation Resources" pseudo-variable
|
|
107
|
+
Now.resource -= Now.klings * rtime;
|
|
108
|
+
// and recompute the time left
|
|
109
|
+
Now.time = Now.resource / Now.klings;
|
|
110
|
+
// move us up to the next date
|
|
111
|
+
Now.date = xdate;
|
|
112
|
+
// check for out of time
|
|
113
|
+
if (Now.time <= 0.0)
|
|
114
|
+
await lose(t, L_NOTIME);
|
|
115
|
+
if (evnum >= 0 && s.Trace) {
|
|
116
|
+
const one = event(e);
|
|
117
|
+
t.io.printf('xdate = %.2f, evcode %d params %d %d %d\n', xdate, one.evcode, one.x, one.y, one.systemname);
|
|
118
|
+
}
|
|
119
|
+
// if evnum < 0, no events occurred
|
|
120
|
+
if (evnum < 0)
|
|
121
|
+
break;
|
|
122
|
+
// otherwise one did. Find out what it is
|
|
123
|
+
switch (event(e).evcode & E_EVENT) {
|
|
124
|
+
case E_SNOVA: // supernova
|
|
125
|
+
// cause the supernova to happen
|
|
126
|
+
await snova(t, -1, 0);
|
|
127
|
+
// and schedule the next one
|
|
128
|
+
xresched(t, e, E_SNOVA, 1);
|
|
129
|
+
break;
|
|
130
|
+
case E_LRTB: // long range tractor beam
|
|
131
|
+
// schedule the next one
|
|
132
|
+
xresched(t, e, E_LRTB, Now.klings);
|
|
133
|
+
// LRTB cannot occur if we are docked
|
|
134
|
+
if (Ship.cond !== DOCKED) {
|
|
135
|
+
// pick a new quadrant
|
|
136
|
+
i = ranf(t.rnd, Now.klings) + 1;
|
|
137
|
+
for (ix = 0; ix < NQUADS; ix++) {
|
|
138
|
+
for (iy = 0; iy < NQUADS; iy++) {
|
|
139
|
+
q = quad(ix, iy);
|
|
140
|
+
if (q.stars >= 0)
|
|
141
|
+
if ((i -= q.klings) <= 0)
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
if (i <= 0)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
// test for LRTB to same quadrant
|
|
148
|
+
if (Ship.quadx === ix && Ship.quady === iy)
|
|
149
|
+
break;
|
|
150
|
+
// nope, dump him in the new quadrant
|
|
151
|
+
Ship.quadx = ix;
|
|
152
|
+
Ship.quady = iy;
|
|
153
|
+
t.io.printf('\n%s caught in long range tractor beam\n', Ship.shipname);
|
|
154
|
+
t.io.printf('*** Pulled to quadrant %d,%d\n', Ship.quadx, Ship.quady);
|
|
155
|
+
Ship.sectx = ranf(t.rnd, NSECTS);
|
|
156
|
+
Ship.secty = ranf(t.rnd, NSECTS);
|
|
157
|
+
await initquad(t, 0);
|
|
158
|
+
// truncate the move time
|
|
159
|
+
Move.time = xdate - idate;
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
case E_KATSB: // Klingon attacks starbase
|
|
163
|
+
// if out of bases, forget it
|
|
164
|
+
if (Now.bases <= 0) {
|
|
165
|
+
unschedule(t, e);
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
// check for starbase and Klingons in same quadrant
|
|
169
|
+
for (i = 0; i < Now.bases; i++) {
|
|
170
|
+
ix = Now.base[i].x;
|
|
171
|
+
iy = Now.base[i].y;
|
|
172
|
+
// see if a Klingon exists in this quadrant
|
|
173
|
+
q = quad(ix, iy);
|
|
174
|
+
if (q.klings <= 0)
|
|
175
|
+
continue;
|
|
176
|
+
// see if already distressed
|
|
177
|
+
for (j = 0; j < MAXEVENTS; j++) {
|
|
178
|
+
const one = event(j);
|
|
179
|
+
if ((one.evcode & E_EVENT) !== E_KDESB)
|
|
180
|
+
continue;
|
|
181
|
+
if (one.x === ix && one.y === iy)
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
if (j < MAXEVENTS)
|
|
185
|
+
continue;
|
|
186
|
+
// got a potential attack
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
e = ev;
|
|
190
|
+
if (i >= Now.bases) {
|
|
191
|
+
// not now; wait a while and see if some Klingons move in
|
|
192
|
+
reschedule(t, e, 0.5 + 3.0 * franf(t.rnd));
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
// schedule a new attack, and a destruction of the base
|
|
196
|
+
xresched(t, e, E_KATSB, 1);
|
|
197
|
+
e = xsched(t, E_KDESB, 1, ix, iy, 0);
|
|
198
|
+
// report it if we can
|
|
199
|
+
if (!damaged(t, SSRADIO)) {
|
|
200
|
+
t.io.printf('\nUhura: Captain, we have received a distress signal\n');
|
|
201
|
+
t.io.printf(' from the starbase in quadrant %d,%d.\n', ix, iy);
|
|
202
|
+
restcancel++;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// SSRADIO out, make it so we can't see the distress call but it's still there!!!
|
|
206
|
+
event(e).evcode |= E_HIDDEN;
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
case E_KDESB: { // Klingon destroys starbase
|
|
210
|
+
unschedule(t, e);
|
|
211
|
+
const one = event(e);
|
|
212
|
+
q = quad(one.x, one.y);
|
|
213
|
+
// if the base has mysteriously gone away, or if the Klingon got tired and went home, ignore this event
|
|
214
|
+
if (q.bases <= 0 || q.klings <= 0)
|
|
215
|
+
break;
|
|
216
|
+
// are we in the same quadrant?
|
|
217
|
+
if (one.x === Ship.quadx && one.y === Ship.quady) {
|
|
218
|
+
// yep, kill one in this quadrant
|
|
219
|
+
t.io.printf('\nSpock: ');
|
|
220
|
+
await killb(t, Ship.quadx, Ship.quady);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// kill one in some other quadrant
|
|
224
|
+
await killb(t, one.x, one.y);
|
|
225
|
+
}
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case E_ISSUE: // issue a distress call
|
|
229
|
+
xresched(t, e, E_ISSUE, 1);
|
|
230
|
+
// if we already have too many, throw this one away
|
|
231
|
+
if (Ship.distressed >= MAXDISTR)
|
|
232
|
+
break;
|
|
233
|
+
// try a bunch of times to find something suitable
|
|
234
|
+
q = quad(0, 0);
|
|
235
|
+
for (i = 0; i < 100; i++) {
|
|
236
|
+
ix = ranf(t.rnd, NQUADS);
|
|
237
|
+
iy = ranf(t.rnd, NQUADS);
|
|
238
|
+
q = quad(ix, iy);
|
|
239
|
+
// need a quadrant which is not the current one, which has some inhabited stars which are not
|
|
240
|
+
// already under attack, which is not supernova'ed, and which has some Klingons in it
|
|
241
|
+
if (!((ix === Ship.quadx && iy === Ship.quady) || q.stars < 0 || q.qsystemname & Q_DISTRESSED || (q.qsystemname & Q_SYSTEM) === 0 || q.klings <= 0))
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
// can't seem to find one; ignore this call
|
|
245
|
+
if (i >= 100)
|
|
246
|
+
break;
|
|
247
|
+
// got one!! Schedule its enslavement
|
|
248
|
+
Ship.distressed++;
|
|
249
|
+
e = xsched(t, E_ENSLV, 1, ix, iy, q.qsystemname);
|
|
250
|
+
q.qsystemname = e | Q_DISTRESSED;
|
|
251
|
+
// tell the captain about it if we can
|
|
252
|
+
if (!damaged(t, SSRADIO)) {
|
|
253
|
+
t.io.printf('\nUhura: Captain, starsystem %s in quadrant %d,%d is under attack\n', Systemname[event(e).systemname], ix, iy);
|
|
254
|
+
restcancel++;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
// if we can't tell him, make it invisible
|
|
258
|
+
event(e).evcode |= E_HIDDEN;
|
|
259
|
+
}
|
|
260
|
+
break;
|
|
261
|
+
case E_ENSLV: { // starsystem is enslaved
|
|
262
|
+
unschedule(t, e);
|
|
263
|
+
// see if current distress call still active
|
|
264
|
+
const one = event(e);
|
|
265
|
+
q = quad(one.x, one.y);
|
|
266
|
+
if (q.klings <= 0) {
|
|
267
|
+
// no Klingons, clean up
|
|
268
|
+
// restore the system name
|
|
269
|
+
q.qsystemname = one.systemname;
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
// play stork and schedule the first baby
|
|
273
|
+
e = schedule(t, E_REPRO, Param.eventdly[E_REPRO] * franf(t.rnd), one.x, one.y, one.systemname);
|
|
274
|
+
// report the disaster if we can
|
|
275
|
+
const baby = event(e);
|
|
276
|
+
if (!damaged(t, SSRADIO)) {
|
|
277
|
+
t.io.printf("\nUhura: We've lost contact with starsystem %s\n", Systemname[baby.systemname]);
|
|
278
|
+
t.io.printf(' in quadrant %d,%d.\n', baby.x, baby.y);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
baby.evcode |= E_HIDDEN;
|
|
282
|
+
}
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
case E_REPRO: { // Klingon reproduces
|
|
286
|
+
// see if distress call is still active
|
|
287
|
+
const one = event(e);
|
|
288
|
+
q = quad(one.x, one.y);
|
|
289
|
+
if (q.klings <= 0) {
|
|
290
|
+
unschedule(t, e);
|
|
291
|
+
q.qsystemname = one.systemname;
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
xresched(t, e, E_REPRO, 1);
|
|
295
|
+
// reproduce one Klingon
|
|
296
|
+
ix = one.x;
|
|
297
|
+
iy = one.y;
|
|
298
|
+
if (Now.klings === 127) {
|
|
299
|
+
// full right now
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
if (q.klings >= MAXKLQUAD) {
|
|
303
|
+
// this quadrant not ok, pick an adjacent one
|
|
304
|
+
for (i = ix - 1; i <= ix + 1; i++) {
|
|
305
|
+
if (i < 0 || i >= NQUADS)
|
|
306
|
+
continue;
|
|
307
|
+
for (j = iy - 1; j <= iy + 1; j++) {
|
|
308
|
+
if (j < 0 || j >= NQUADS)
|
|
309
|
+
continue;
|
|
310
|
+
q = quad(i, j);
|
|
311
|
+
// check for this quad ok (not full & no snova)
|
|
312
|
+
if (q.klings >= MAXKLQUAD || q.stars < 0)
|
|
313
|
+
continue;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
if (j <= iy + 1)
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
// cannot create another yet
|
|
320
|
+
if (j > iy + 1)
|
|
321
|
+
break;
|
|
322
|
+
ix = i;
|
|
323
|
+
iy = j;
|
|
324
|
+
}
|
|
325
|
+
// deliver the child
|
|
326
|
+
q.klings++;
|
|
327
|
+
Now.klings++;
|
|
328
|
+
if (ix === Ship.quadx && iy === Ship.quady) {
|
|
329
|
+
// we must position Klingon
|
|
330
|
+
const r = sector(t);
|
|
331
|
+
ix = r.x;
|
|
332
|
+
iy = r.y;
|
|
333
|
+
s.Sect[ix][iy] = KLINGON;
|
|
334
|
+
const k = Etc.klingon[Etc.nkling++];
|
|
335
|
+
k.x = ix;
|
|
336
|
+
k.y = iy;
|
|
337
|
+
k.power = Param.klingpwr;
|
|
338
|
+
k.srndreq = 0;
|
|
339
|
+
const first = Etc.klingon[0];
|
|
340
|
+
compkldist(t, first.dist === first.avgdist ? 0 : 1);
|
|
341
|
+
}
|
|
342
|
+
// recompute time left
|
|
343
|
+
Now.time = Now.resource / Now.klings;
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
case E_SNAP: // take a snapshot of the galaxy
|
|
347
|
+
xresched(t, e, E_SNAP, 1);
|
|
348
|
+
Etc.snapshot = snapshot_take(s);
|
|
349
|
+
Game.snap = 1;
|
|
350
|
+
break;
|
|
351
|
+
case E_ATTACK: // Klingons attack during rest period
|
|
352
|
+
if (!Move.resting) {
|
|
353
|
+
unschedule(t, e);
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
await attack(t, 1);
|
|
357
|
+
reschedule(t, e, 0.5);
|
|
358
|
+
break;
|
|
359
|
+
case E_FIXDV: {
|
|
360
|
+
i = event(e).systemname;
|
|
361
|
+
unschedule(t, e);
|
|
362
|
+
// de-damage the device
|
|
363
|
+
const device = Device[i];
|
|
364
|
+
t.io.printf('%s reports repair work on the %s finished.\n', device.person, device.name);
|
|
365
|
+
// handle special processing upon fix
|
|
366
|
+
switch (i) {
|
|
367
|
+
case LIFESUP:
|
|
368
|
+
Ship.reserves = Param.reserves;
|
|
369
|
+
break;
|
|
370
|
+
case SINS:
|
|
371
|
+
if (Ship.cond === DOCKED)
|
|
372
|
+
break;
|
|
373
|
+
t.io.printf('Spock has tried to recalibrate your Space Internal Navigation System,\n');
|
|
374
|
+
t.io.printf(' but he has no standard base to calibrate to. Suggest you get\n');
|
|
375
|
+
t.io.printf(' to a starbase immediately so that you can properly recalibrate.\n');
|
|
376
|
+
Ship.sinsbad = 1;
|
|
377
|
+
break;
|
|
378
|
+
case SSRADIO:
|
|
379
|
+
restcancel = dumpssradio(t);
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
default:
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
if (restcancel && Move.resting && (await getynpar(t, 'Spock: Shall we cancel our rest period')))
|
|
388
|
+
Move.time = xdate - idate;
|
|
389
|
+
}
|
|
390
|
+
// unschedule an attack during a rest period
|
|
391
|
+
if ((e = Now.eventptr[E_ATTACK]) !== -1)
|
|
392
|
+
unschedule(t, e);
|
|
393
|
+
if (!timewarp) {
|
|
394
|
+
// eat up energy if cloaked
|
|
395
|
+
if (Ship.cloaked)
|
|
396
|
+
Ship.energy = Math.trunc(Ship.energy - Param.cloakenergy * Move.time);
|
|
397
|
+
// regenerate resources
|
|
398
|
+
rtime = 1.0 - Math.exp(-Param.regenfac * Move.time);
|
|
399
|
+
Ship.shield = Math.trunc(Ship.shield + (Param.shield - Ship.shield) * rtime);
|
|
400
|
+
Ship.energy = Math.trunc(Ship.energy + (Param.energy - Ship.energy) * rtime);
|
|
401
|
+
// decrement life support reserves
|
|
402
|
+
if (damaged(t, LIFESUP) && Ship.cond !== DOCKED)
|
|
403
|
+
Ship.reserves -= Move.time;
|
|
404
|
+
}
|
|
405
|
+
return 0;
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Asking for a course and a distance.
|
|
3
|
+
*
|
|
4
|
+
* Deviation: the C returned 1 for an invalid input and filled its out
|
|
5
|
+
* parameters; the port returns null, or the course and distance.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { Trek } from './context.js';
|
|
10
|
+
/** Asks the course and distance; null for an invalid input. */
|
|
11
|
+
export declare function getcodi(t: Trek): Promise<{
|
|
12
|
+
co: number;
|
|
13
|
+
value: number;
|
|
14
|
+
} | null>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getfltpar, getintpar } from './getpar.js';
|
|
2
|
+
/*
|
|
3
|
+
** get course and distance
|
|
4
|
+
**
|
|
5
|
+
** The user is asked for a course and distance. This is used by
|
|
6
|
+
** move, impulse, and some of the computer functions.
|
|
7
|
+
**
|
|
8
|
+
** The return value is zero for success, one for an invalid input
|
|
9
|
+
** (meaning to drop the request).
|
|
10
|
+
*/
|
|
11
|
+
/** Asks the course and distance; null for an invalid input. */
|
|
12
|
+
export async function getcodi(t) {
|
|
13
|
+
const co = await getintpar(t, 'Course');
|
|
14
|
+
/* course must be in the interval [0, 360] */
|
|
15
|
+
if (co < 0 || co > 360)
|
|
16
|
+
return null;
|
|
17
|
+
const di = await getfltpar(t, 'Distance');
|
|
18
|
+
/* distance must be in the interval [0, 15] */
|
|
19
|
+
if (di <= 0.0 || di > 15.0)
|
|
20
|
+
return null;
|
|
21
|
+
/* good return */
|
|
22
|
+
return { co, value: di };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=getcodi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getcodi.js","sourceRoot":"","sources":["../../../../src/builtins/games/trek/getcodi.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;EAQE;AAEF,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,CAAO;IACnC,MAAM,EAAE,GAAW,MAAM,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEhD,6CAA6C;IAC7C,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,EAAE,GAAW,MAAM,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAElD,8CAA8C;IAC9C,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC;IAExC,iBAAiB;IACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Reading a parameter: an integer, a double, yes or no, a code from a
|
|
3
|
+
* table, a string; and the stream tests the rest of the game reads with.
|
|
4
|
+
*
|
|
5
|
+
* As the C: a prompt is printed only when the next character is a
|
|
6
|
+
* newline, so parameters typed ahead on the command line are taken
|
|
7
|
+
* without being asked for.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { CmdFun, Trek } from './context.js';
|
|
12
|
+
/** One entry of a conversion table: an abbreviation, the rest of the word, what it does, a value. */
|
|
13
|
+
export interface Cvntab {
|
|
14
|
+
abbrev: string;
|
|
15
|
+
full: string;
|
|
16
|
+
value: CmdFun | null;
|
|
17
|
+
value2: number;
|
|
18
|
+
}
|
|
19
|
+
/** get integer parameter */
|
|
20
|
+
export declare function getintpar(t: Trek, s: string | null): Promise<number>;
|
|
21
|
+
/** get floating parameter */
|
|
22
|
+
export declare function getfltpar(t: Trek, s: string | null): Promise<number>;
|
|
23
|
+
/** get yes/no parameter */
|
|
24
|
+
export declare function getynpar(t: Trek, s: string): Promise<number>;
|
|
25
|
+
/**
|
|
26
|
+
* get coded parameter: a word matched against a table by its abbreviation
|
|
27
|
+
* and as much of the rest as was typed; `?` lists the table.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getcodpar(t: Trek, s: string, tab: ReadonlyArray<Cvntab>): Promise<Cvntab>;
|
|
30
|
+
/** get string parameter: up to l characters, ended by any of t (default white space and ;). */
|
|
31
|
+
export declare function getstrpar(t: Trek, s: string | null, l: number, terminators: string | null): Promise<string>;
|
|
32
|
+
/** test if newline is next valid character */
|
|
33
|
+
export declare function testnl(t: Trek): Promise<boolean>;
|
|
34
|
+
/** scan for newline */
|
|
35
|
+
export declare function skiptonl(t: Trek, c: number): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* TEST FOR SPECIFIED DELIMITER: the input is scanned for the delimiter;
|
|
38
|
+
* found, it is thrown away and true is returned; not found, false.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readdelim(t: Trek, d: number): Promise<boolean>;
|