@rpgm-tools/neo-angband-content 0.11.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/LICENSE.md +43 -0
- package/README.md +65 -0
- package/dist/compile.d.ts +10 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +42 -0
- package/dist/compile.js.map +1 -0
- package/dist/data-exactness.reader.d.ts +105 -0
- package/dist/data-exactness.reader.d.ts.map +1 -0
- package/dist/data-exactness.reader.js +547 -0
- package/dist/data-exactness.reader.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +70 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +365 -0
- package/dist/parser.js.map +1 -0
- package/dist/records.d.ts +101 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +244 -0
- package/dist/records.js.map +1 -0
- package/dist/specs/generate.d.ts +12 -0
- package/dist/specs/generate.d.ts.map +1 -0
- package/dist/specs/generate.js +57 -0
- package/dist/specs/generate.js.map +1 -0
- package/dist/specs/index.d.ts +9 -0
- package/dist/specs/index.d.ts.map +1 -0
- package/dist/specs/index.js +60 -0
- package/dist/specs/index.js.map +1 -0
- package/dist/specs/init.d.ts +23 -0
- package/dist/specs/init.d.ts.map +1 -0
- package/dist/specs/init.js +305 -0
- package/dist/specs/init.js.map +1 -0
- package/dist/specs/misc.d.ts +33 -0
- package/dist/specs/misc.d.ts.map +1 -0
- package/dist/specs/misc.js +146 -0
- package/dist/specs/misc.js.map +1 -0
- package/dist/specs/mon-init.d.ts +22 -0
- package/dist/specs/mon-init.d.ts.map +1 -0
- package/dist/specs/mon-init.js +157 -0
- package/dist/specs/mon-init.js.map +1 -0
- package/dist/specs/obj-init.d.ts +19 -0
- package/dist/specs/obj-init.d.ts.map +1 -0
- package/dist/specs/obj-init.js +219 -0
- package/dist/specs/obj-init.js.map +1 -0
- package/dist/specs/ui-entry.d.ts +22 -0
- package/dist/specs/ui-entry.d.ts.map +1 -0
- package/dist/specs/ui-entry.js +69 -0
- package/dist/specs/ui-entry.js.map +1 -0
- package/dist/specs/visuals.d.ts +26 -0
- package/dist/specs/visuals.d.ts.map +1 -0
- package/dist/specs/visuals.js +35 -0
- package/dist/specs/visuals.js.map +1 -0
- package/pack/activation.json +3340 -0
- package/pack/artifact.json +5146 -0
- package/pack/blow_effects.json +370 -0
- package/pack/blow_methods.json +286 -0
- package/pack/body.json +59 -0
- package/pack/brand.json +100 -0
- package/pack/chest_trap.json +117 -0
- package/pack/class.json +5501 -0
- package/pack/constants.json +470 -0
- package/pack/curse.json +580 -0
- package/pack/dungeon_profile.json +836 -0
- package/pack/ego_item.json +2900 -0
- package/pack/flavor.json +1541 -0
- package/pack/hints.json +303 -0
- package/pack/history.json +1656 -0
- package/pack/manifest.json +52 -0
- package/pack/monster.json +29392 -0
- package/pack/monster_base.json +688 -0
- package/pack/monster_spell.json +2735 -0
- package/pack/names.json +1204 -0
- package/pack/object.json +11877 -0
- package/pack/object_base.json +364 -0
- package/pack/object_property.json +2034 -0
- package/pack/p_race.json +447 -0
- package/pack/pain.json +150 -0
- package/pack/pit.json +617 -0
- package/pack/player_property.json +519 -0
- package/pack/player_timed.json +1321 -0
- package/pack/projection.json +664 -0
- package/pack/quest.json +18 -0
- package/pack/realm.json +34 -0
- package/pack/room_template.json +9571 -0
- package/pack/shape.json +263 -0
- package/pack/slay.json +116 -0
- package/pack/store.json +675 -0
- package/pack/summon.json +143 -0
- package/pack/terrain.json +511 -0
- package/pack/trap.json +1483 -0
- package/pack/ui_entry.json +382 -0
- package/pack/ui_entry_base.json +60 -0
- package/pack/ui_entry_renderer.json +43 -0
- package/pack/ui_knowledge.json +302 -0
- package/pack/vault.json +4355 -0
- package/pack/visuals.json +680 -0
- package/pack/world.json +1030 -0
- package/package.json +67 -0
- package/src/compile.ts +55 -0
- package/src/data-exactness.reader.ts +559 -0
- package/src/index.ts +31 -0
- package/src/parser.ts +406 -0
- package/src/records.ts +341 -0
- package/src/specs/generate.ts +61 -0
- package/src/specs/index.ts +103 -0
- package/src/specs/init.ts +322 -0
- package/src/specs/misc.ts +153 -0
- package/src/specs/mon-init.ts +165 -0
- package/src/specs/obj-init.ts +230 -0
- package/src/specs/ui-entry.ts +74 -0
- package/src/specs/visuals.ts +37 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Neo Angband is a derivative work of Angband and retains upstream's dual
|
|
4
|
+
license, as the Angband project asks of its variants (see
|
|
5
|
+
`reference/docs/copying.rst`, which remains the authoritative statement for
|
|
6
|
+
the original code and its assets).
|
|
7
|
+
|
|
8
|
+
Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke, and the
|
|
9
|
+
Angband contributors; port code copyright (c) 2026 the Neo Angband
|
|
10
|
+
contributors.
|
|
11
|
+
|
|
12
|
+
This work is free software; you can redistribute it and/or modify it under
|
|
13
|
+
the terms of either:
|
|
14
|
+
|
|
15
|
+
a) the GNU General Public License as published by the Free Software
|
|
16
|
+
Foundation, version 2, or
|
|
17
|
+
|
|
18
|
+
b) the "Angband licence":
|
|
19
|
+
This software may be copied and distributed for educational, research,
|
|
20
|
+
and not for profit purposes provided that this copyright and statement
|
|
21
|
+
are included in all such copies. Other copyrights may also apply.
|
|
22
|
+
|
|
23
|
+
## Assets
|
|
24
|
+
|
|
25
|
+
Asset licenses under `reference/` vary and are NOT all dual-licensed as
|
|
26
|
+
above; see `reference/docs/copying.rst` for the full statements, and
|
|
27
|
+
`packages/web/public/tiles/CREDITS.md` for the four tile packs this port
|
|
28
|
+
actually bundles and the terms each one is bundled under.
|
|
29
|
+
|
|
30
|
+
The Adam Bolt tiles (any purpose, with or without modification) and David
|
|
31
|
+
Gervais tiles (CC BY 3.0, attribution given in that CREDITS.md) are available
|
|
32
|
+
to tile packs under their own terms. The Shockbolt tile set is a distinct
|
|
33
|
+
case and is **not** bundled: its license grants fee-free distribution *with*
|
|
34
|
+
Angband but withholds modification without the author's permission, and
|
|
35
|
+
withholds use with "other games or projects" absent explicit permission —
|
|
36
|
+
so whether this port may carry it turns on a question only the author can
|
|
37
|
+
settle. CREDITS.md states the grants and the prohibitions in full.
|
|
38
|
+
|
|
39
|
+
## Mods
|
|
40
|
+
|
|
41
|
+
Declarative content packs and tile packs are independent works and may be
|
|
42
|
+
licensed as their authors choose. Distributed scripted plugins are safest
|
|
43
|
+
treated as GPLv2 derivatives. See `docs/MODS.md`.
|
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# @rpgm-tools/neo-angband-content
|
|
2
|
+
|
|
3
|
+
Angband 4.2.6's gamedata, compiled to the schema-validated pack format
|
|
4
|
+
[Neo Angband](https://github.com/neostryder/neo-angband) boots from — plus the
|
|
5
|
+
compiler that produced it.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @rpgm-tools/neo-angband-content
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
`@rpgm-tools/neo-angband-core` is the rules and holds no content: it can roll dice, run
|
|
12
|
+
the effect interpreter and read a save, but it cannot generate a populated level
|
|
13
|
+
without a pack handed to it. This is that pack.
|
|
14
|
+
|
|
15
|
+
## The base game is pack zero
|
|
16
|
+
|
|
17
|
+
The gamedata is not special-cased anywhere. `monster.txt`, `object.txt`,
|
|
18
|
+
`terrain.txt` and the rest go through the **same pipeline any mod's content goes
|
|
19
|
+
through**, and come out as the same JSON records with the same schema. That is
|
|
20
|
+
what makes a total conversion possible by construction rather than by permission:
|
|
21
|
+
a mod that replaces every record is doing what the base game already does.
|
|
22
|
+
|
|
23
|
+
## What is in the tarball
|
|
24
|
+
|
|
25
|
+
| Path | What it holds |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `pack/` | 45 compiled JSON files — the content itself, which is what most consumers want |
|
|
28
|
+
| `dist/` | The compiler: `compileGamedata`, the line parser, and the per-file specs |
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import monsters from "@rpgm-tools/neo-angband-content/pack/monster.json" with { type: "json" };
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
To recompile from upstream's text files — which needs an Angband checkout, not
|
|
35
|
+
shipped here:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { compileGamedata, gamedataSpecs } from "@rpgm-tools/neo-angband-content";
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Exactness is the whole point
|
|
42
|
+
|
|
43
|
+
The compiler is not a convenient reader. It is checked against upstream's own
|
|
44
|
+
parser (`reference/src/parser.c`) directive by directive, and the pack is checked
|
|
45
|
+
back against the text it came from — a field the compiler drops silently is the
|
|
46
|
+
failure mode that matters, because the game then plays subtly differently with
|
|
47
|
+
nothing to see. Those checks are `data-exactness.test.ts` and the
|
|
48
|
+
`*.upstream.test.ts` files in `src/`.
|
|
49
|
+
|
|
50
|
+
## Versioning
|
|
51
|
+
|
|
52
|
+
The pack moves with the engine and carries the game's version, not Angband's.
|
|
53
|
+
`PARITY_BASELINE` in `@rpgm-tools/neo-angband-core` is the upstream release this content
|
|
54
|
+
was compiled from and moves independently.
|
|
55
|
+
|
|
56
|
+
## Licence
|
|
57
|
+
|
|
58
|
+
Neo Angband keeps Angband's dual licence, as the Angband project asks of its
|
|
59
|
+
variants: **GNU GPL v2, or the Angband licence**, at your option. npm can only
|
|
60
|
+
carry one SPDX identifier, so the manifest says `GPL-2.0-only` — the more
|
|
61
|
+
restrictive of the two. The full text of both is in [LICENSE.md](LICENSE.md).
|
|
62
|
+
|
|
63
|
+
The gamedata in `pack/` is Angband's, by Ben Harrison, James E. Wilson, Robert A.
|
|
64
|
+
Koeneke and the Angband contributors. The compiler and the pack format are by
|
|
65
|
+
neostryder / RPGM Tools.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gamedata compiler CLI.
|
|
3
|
+
*
|
|
4
|
+
* Reads reference/lib/gamedata/<file>.txt (Angband 4.2.6, the read-only
|
|
5
|
+
* source of truth) and emits packages/content/pack/<file>.json plus a
|
|
6
|
+
* pack manifest. Run from the built output: `pnpm --filter
|
|
7
|
+
* @rpgm-tools/neo-angband-content compile` (or `node dist/compile.js`).
|
|
8
|
+
*/
|
|
9
|
+
export declare function main(): void;
|
|
10
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,wBAAgB,IAAI,IAAI,IAAI,CA4B3B"}
|
package/dist/compile.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gamedata compiler CLI.
|
|
3
|
+
*
|
|
4
|
+
* Reads reference/lib/gamedata/<file>.txt (Angband 4.2.6, the read-only
|
|
5
|
+
* source of truth) and emits packages/content/pack/<file>.json plus a
|
|
6
|
+
* pack manifest. Run from the built output: `pnpm --filter
|
|
7
|
+
* @rpgm-tools/neo-angband-content compile` (or `node dist/compile.js`).
|
|
8
|
+
*/
|
|
9
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { fileURLToPath } from "node:url";
|
|
12
|
+
import { compileGamedata } from "./records.js";
|
|
13
|
+
import { gamedataSpecs } from "./specs/index.js";
|
|
14
|
+
export function main() {
|
|
15
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const contentRoot = path.resolve(here, "..");
|
|
17
|
+
const repoRoot = path.resolve(contentRoot, "..", "..");
|
|
18
|
+
const gamedataDir = path.join(repoRoot, "reference", "lib", "gamedata");
|
|
19
|
+
const packDir = path.join(contentRoot, "pack");
|
|
20
|
+
mkdirSync(packDir, { recursive: true });
|
|
21
|
+
const files = [];
|
|
22
|
+
for (const spec of gamedataSpecs) {
|
|
23
|
+
const sourcePath = path.join(gamedataDir, `${spec.name}.txt`);
|
|
24
|
+
const text = readFileSync(sourcePath, "utf8");
|
|
25
|
+
const compiled = compileGamedata(text, spec);
|
|
26
|
+
const outName = `${spec.name}.json`;
|
|
27
|
+
writeFileSync(path.join(packDir, outName), `${JSON.stringify(compiled, null, 2)}\n`);
|
|
28
|
+
files.push(outName);
|
|
29
|
+
console.log(`${outName}: ${compiled.records.length} records`);
|
|
30
|
+
}
|
|
31
|
+
const manifest = {
|
|
32
|
+
id: "core",
|
|
33
|
+
name: "Angband",
|
|
34
|
+
version: "4.2.6",
|
|
35
|
+
engine: ">=0.1.0",
|
|
36
|
+
files,
|
|
37
|
+
};
|
|
38
|
+
writeFileSync(path.join(packDir, "manifest.json"), `${JSON.stringify(manifest, null, 2)}\n`);
|
|
39
|
+
console.log(`manifest.json: ${files.length} files`);
|
|
40
|
+
}
|
|
41
|
+
main();
|
|
42
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUjD,MAAM,UAAU,IAAI;IAClB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAa;QACzB,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,SAAS;QACjB,KAAK;KACN,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Independent gamedata re-parser for W5 data-exactness.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately does NOT import packages/content's parseLine / compileGamedata.
|
|
5
|
+
* Line-level semantics follow reference/src/parser.c (Angband 4.2.6);
|
|
6
|
+
* record assembly follows the C init parsers' attach/repeat idioms as
|
|
7
|
+
* documented in reference/src/{parser,parse,init,mon-init,obj-init}.c.
|
|
8
|
+
*
|
|
9
|
+
* Format registration data (parser_reg format strings + which directives
|
|
10
|
+
* repeat / nest) is supplied by the caller so this module stays free of
|
|
11
|
+
* packages/content's parser implementation. Because that metadata is itself
|
|
12
|
+
* port-supplied, extractParserRegFormats() below lets the caller check the
|
|
13
|
+
* format strings back against reference/src/*.c rather than trusting them.
|
|
14
|
+
*/
|
|
15
|
+
export type FieldType = "int" | "uint" | "sym" | "str" | "char" | "rand";
|
|
16
|
+
export interface FieldSpec {
|
|
17
|
+
readonly type: FieldType;
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly optional: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface DirectiveSignature {
|
|
22
|
+
readonly directive: string;
|
|
23
|
+
readonly fields: readonly FieldSpec[];
|
|
24
|
+
}
|
|
25
|
+
export interface DirectiveDef {
|
|
26
|
+
readonly fmt: string;
|
|
27
|
+
readonly repeat?: boolean;
|
|
28
|
+
readonly childOf?: readonly string[];
|
|
29
|
+
/**
|
|
30
|
+
* Synthetic key that records the file order of a cross-directive repeat
|
|
31
|
+
* group. C keeps such groups in one linked list (e.g. monster_drop, built by
|
|
32
|
+
* prepending in parse_monster_drop / parse_monster_drop_base), so splitting
|
|
33
|
+
* them into per-directive arrays would lose the interleaving. There is no
|
|
34
|
+
* upstream directive of this name; the key is generated, and every generated
|
|
35
|
+
* key must be declared here so the coverage guard can see it.
|
|
36
|
+
*/
|
|
37
|
+
readonly orderKey?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface FileSpec {
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly recordStart: string | null;
|
|
42
|
+
readonly header?: readonly string[];
|
|
43
|
+
readonly directives: readonly DirectiveDef[];
|
|
44
|
+
}
|
|
45
|
+
export type JsonPrimitive = string | number | boolean;
|
|
46
|
+
export type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
47
|
+
[key: string]: JsonValue;
|
|
48
|
+
};
|
|
49
|
+
export type JsonObject = {
|
|
50
|
+
[key: string]: JsonValue;
|
|
51
|
+
};
|
|
52
|
+
export interface CompiledFile {
|
|
53
|
+
file: string;
|
|
54
|
+
source: string;
|
|
55
|
+
header?: JsonObject;
|
|
56
|
+
records: JsonObject[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Faithful reimplementation of parse_random() from reference/src/parser.c.
|
|
60
|
+
* Validity only; the raw dice string is what gets stored.
|
|
61
|
+
*/
|
|
62
|
+
export declare function independentIsValidRandom(s: string): boolean;
|
|
63
|
+
export declare function independentParseSignature(fmt: string): DirectiveSignature;
|
|
64
|
+
interface LineValues {
|
|
65
|
+
directive: string;
|
|
66
|
+
values: Record<string, string | number>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parse one physical line. Returns null for blanks/comments.
|
|
70
|
+
* Tokenizer mirrors strtok(":") for non-str/char and rest-of-line for str.
|
|
71
|
+
*/
|
|
72
|
+
export declare function independentParseLine(line: string, lookup: (directive: string) => DirectiveSignature | undefined): LineValues | null;
|
|
73
|
+
/** Split a flags: payload the way C does: strtok(flags, " |"). */
|
|
74
|
+
export declare function splitFlagList(raw: string): string[];
|
|
75
|
+
/**
|
|
76
|
+
* Compile one gamedata file text into the same JSON shape as pack/*.json.
|
|
77
|
+
* Engine is independent of packages/content/src/{parser,records}.ts.
|
|
78
|
+
*/
|
|
79
|
+
export declare function independentCompile(text: string, spec: FileSpec): CompiledFile;
|
|
80
|
+
/**
|
|
81
|
+
* The directive of every data line in a gamedata file, in file order.
|
|
82
|
+
*
|
|
83
|
+
* Mirrors the front of parser_parse(): skip leading isspace, drop blank and '#'
|
|
84
|
+
* lines, then take the first strtok(line, ":") token (strtok skips a run of
|
|
85
|
+
* leading delimiters). Deliberately does no field parsing, so it is an
|
|
86
|
+
* independent check on the record splitter and the directive table.
|
|
87
|
+
*/
|
|
88
|
+
export declare function extractDirectiveSequence(text: string): string[];
|
|
89
|
+
/** Every directive key that occurs in a gamedata file, with its line count. */
|
|
90
|
+
export declare function extractDirectiveKeys(text: string): Map<string, number>;
|
|
91
|
+
/**
|
|
92
|
+
* parse_specs() tokenizes the format string with strtok(fmt, " "), so runs of
|
|
93
|
+
* whitespace collapse and leading/trailing whitespace is insignificant.
|
|
94
|
+
*/
|
|
95
|
+
export declare function normalizeFormat(fmt: string): string;
|
|
96
|
+
/**
|
|
97
|
+
* Every format string handed to parser_reg() in a C source file, normalized.
|
|
98
|
+
*
|
|
99
|
+
* Adjacent string literals are concatenated the way the C compiler does, so
|
|
100
|
+
* registrations wrapped across source lines (e.g. init.c's melee-critical-level)
|
|
101
|
+
* come back as the single format string parse_specs() actually sees.
|
|
102
|
+
*/
|
|
103
|
+
export declare function extractParserRegFormats(source: string): string[];
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=data-exactness.reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-exactness.reader.d.ts","sourceRoot":"","sources":["../src/data-exactness.reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;CAC9C;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AA+DD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CA6D3D;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAoBzE;AAED,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,GAC5D,UAAU,GAAG,IAAI,CAsEnB;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWnD;AA0ED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,CA0F7E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiB/D;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA8BhE"}
|