@pkmn/engine 0.1.0-dev.f3aaee39 → 0.1.0-dev.f6545544

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE +1 -3
  2. package/README.md +51 -23
  3. package/build/pkg/addon/browser.d.ts +3 -0
  4. package/build/pkg/addon/browser.js +47 -0
  5. package/build/pkg/addon/browser.js.map +1 -0
  6. package/build/pkg/addon/node.d.ts +3 -0
  7. package/build/pkg/addon/node.js +110 -0
  8. package/build/pkg/addon/node.js.map +1 -0
  9. package/build/pkg/addon/wasm.d.ts +2 -0
  10. package/build/pkg/addon/wasm.js +53 -0
  11. package/build/pkg/addon/wasm.js.map +1 -0
  12. package/build/pkg/addon.d.ts +25 -3
  13. package/build/pkg/addon.js +39 -71
  14. package/build/pkg/addon.js.map +1 -1
  15. package/build/pkg/data/ids.json +12 -12
  16. package/build/pkg/data/layout.json +17 -4
  17. package/build/pkg/data/protocol.json +84 -13
  18. package/build/pkg/data.d.ts +27 -5
  19. package/build/pkg/data.js.map +1 -1
  20. package/build/pkg/gen1.d.ts +15 -18
  21. package/build/pkg/gen1.js +30 -21
  22. package/build/pkg/gen1.js.map +1 -1
  23. package/build/pkg/index.d.ts +42 -91
  24. package/build/pkg/index.js +23 -70
  25. package/build/pkg/index.js.map +1 -1
  26. package/build/pkg/protocol.d.ts +20 -1
  27. package/build/pkg/protocol.js +123 -102
  28. package/build/pkg/protocol.js.map +1 -1
  29. package/build/tools/debug.js +53 -76
  30. package/build/tools/debug.js.map +1 -1
  31. package/build/tools/display/debug.jsx +152 -0
  32. package/build/tools/display/debug.jsx.map +1 -0
  33. package/build/tools/display/index.js +152 -0
  34. package/build/tools/display/index.js.map +1 -0
  35. package/build/tools/display/ui.jsx +359 -0
  36. package/build/tools/display/ui.jsx.map +1 -0
  37. package/build/tools/display/util.js +33 -0
  38. package/build/tools/display/util.js.map +1 -0
  39. package/build.zig +347 -104
  40. package/package.json +62 -123
  41. package/src/bin/install-pkmn-engine +31 -20
  42. package/src/bin/pkmn-debug +1 -1
  43. package/src/lib/bindings/c.zig +255 -0
  44. package/src/lib/{binding → bindings}/node.zig +9 -22
  45. package/src/lib/bindings/wasm.zig +59 -0
  46. package/src/lib/common/array.zig +77 -0
  47. package/src/lib/common/data.zig +12 -24
  48. package/src/lib/common/debug.zig +39 -8
  49. package/src/lib/common/js.zig +4 -2
  50. package/src/lib/common/optional.zig +21 -10
  51. package/src/lib/common/options.zig +6 -0
  52. package/src/lib/common/protocol.zig +808 -332
  53. package/src/lib/common/rational.zig +132 -36
  54. package/src/lib/common/rng.zig +22 -15
  55. package/src/lib/common/util.zig +50 -1
  56. package/src/lib/gen1/calc.zig +688 -162
  57. package/src/lib/gen1/chance.zig +436 -295
  58. package/src/lib/gen1/data/moves.zig +193 -183
  59. package/src/lib/gen1/data/species.zig +4 -6
  60. package/src/lib/gen1/data/types.zig +8 -9
  61. package/src/lib/gen1/data.zig +55 -70
  62. package/src/lib/gen1/helpers.zig +91 -562
  63. package/src/lib/gen1/mechanics.zig +659 -579
  64. package/src/lib/gen2/calc.zig +153 -0
  65. package/src/lib/gen2/chance.zig +902 -0
  66. package/src/lib/gen2/data/items.zig +13 -21
  67. package/src/lib/gen2/data/moves.zig +664 -572
  68. package/src/lib/gen2/data/species.zig +2 -4
  69. package/src/lib/gen2/data/types.zig +135 -33
  70. package/src/lib/gen2/data.zig +115 -91
  71. package/src/lib/gen2/generated.zig +801 -0
  72. package/src/lib/gen2/helpers.zig +54 -37
  73. package/src/lib/gen2/mechanics.zig +3580 -29
  74. package/src/lib/node.zig +18 -0
  75. package/src/lib/pkmn.zig +37 -15
  76. package/src/lib/wasm.zig +17 -0
  77. package/src/tools/display/dom.ts +95 -0
  78. package/src/tools/display/ui.css +354 -0
  79. package/build/test/display.js +0 -400
  80. package/build/test/display.js.map +0 -1
  81. package/src/lib/binding/wasm.zig +0 -12
  82. package/src/lib/gen1/README.md +0 -892
  83. package/src/lib/gen2/README.md +0 -308
  84. package/src/test/display/pkmn.html.tmpl +0 -368
@@ -20,15 +20,15 @@
20
20
  },
21
21
  {
22
22
  "types": [
23
+ "Ground",
24
+ "Rock",
25
+ "Steel",
23
26
  "Normal",
24
27
  "Fighting",
25
28
  "Flying",
26
29
  "Poison",
27
- "Ground",
28
- "Rock",
29
30
  "Bug",
30
31
  "Ghost",
31
- "Steel",
32
32
  "???",
33
33
  "Fire",
34
34
  "Water",
@@ -40,15 +40,15 @@
40
40
  "Dark"
41
41
  ],
42
42
  "items": [
43
+ "softsand",
44
+ "hardstone",
45
+ "metalcoat",
43
46
  "pinkbow",
44
47
  "blackbelt",
45
48
  "sharpbeak",
46
49
  "poisonbarb",
47
- "softsand",
48
- "hardstone",
49
50
  "silverpowder",
50
51
  "spelltag",
51
- "metalcoat",
52
52
  "polkadotbow",
53
53
  "charcoal",
54
54
  "mysticwater",
@@ -65,21 +65,21 @@
65
65
  "stick",
66
66
  "thickclub",
67
67
  "focusband",
68
- "berryjuice",
69
68
  "scopelens",
70
69
  "leftovers",
71
70
  "berserkgene",
72
71
  "lightball",
72
+ "berry",
73
+ "berryjuice",
74
+ "goldberry",
75
+ "mintberry",
73
76
  "psncureberry",
74
77
  "przcureberry",
75
- "burntberry",
76
78
  "iceberry",
77
- "bitterberry",
78
- "mintberry",
79
+ "burntberry",
79
80
  "miracleberry",
81
+ "bitterberry",
80
82
  "mysteryberry",
81
- "berry",
82
- "goldberry",
83
83
  "masterball",
84
84
  "ultraball",
85
85
  "greatball",
@@ -6,6 +6,7 @@
6
6
  "Pokemon": 24,
7
7
  "ActivePokemon": 32,
8
8
  "Actions": 16,
9
+ "Durations": 8,
9
10
  "Summaries": 12
10
11
  },
11
12
  "offsets": {
@@ -79,8 +80,8 @@
79
80
  "state": 24,
80
81
  "substitute": 40,
81
82
  "transform": 48,
82
- "disabled_duration": 52,
83
- "disabled_move": 56,
83
+ "disable_duration": 52,
84
+ "disable_move": 56,
84
85
  "toxic": 59
85
86
  },
86
87
  "Action": {
@@ -92,12 +93,24 @@
92
93
  "confused": 16,
93
94
  "paralyzed": 18,
94
95
  "duration": 20,
95
- "durations": 24,
96
- "move_slot": 40,
96
+ "sleep": 24,
97
+ "confusion": 26,
98
+ "disable": 29,
99
+ "attacking": 31,
100
+ "binding": 33,
101
+ "move_slot": 36,
102
+ "pp": 40,
97
103
  "multi_hit": 44,
98
104
  "psywave": 48,
99
105
  "metronome": 56
100
106
  },
107
+ "Duration": {
108
+ "sleeps": 0,
109
+ "confusion": 18,
110
+ "disable": 21,
111
+ "attacking": 25,
112
+ "binding": 28
113
+ },
101
114
  "Damage": {
102
115
  "base": 0,
103
116
  "final": 2,
@@ -48,7 +48,7 @@
48
48
  "EndAbility",
49
49
  "ClearNegativeBoost",
50
50
  "FormeChange",
51
- "NoTarget",
51
+ "LastNoTarget",
52
52
  "SwapBoost",
53
53
  "FieldStart",
54
54
  "FieldEnd",
@@ -70,7 +70,9 @@
70
70
  "Burst",
71
71
  "ClearPositiveBoost",
72
72
  "CanDynamax",
73
- "SwapSideConditions"
73
+ "SwapSideConditions",
74
+ "UpdatePoke",
75
+ "Terastallize"
74
76
  ],
75
77
  "Move": [
76
78
  "None",
@@ -84,12 +86,17 @@
84
86
  "Flinch",
85
87
  "Disable",
86
88
  "Recharge",
87
- "PP"
89
+ "PP",
90
+ "Attract"
88
91
  ],
89
92
  "Heal": [
90
93
  "None",
91
94
  "Silent",
92
- "Drain"
95
+ "Drain",
96
+ "Leftovers",
97
+ "Berry",
98
+ "BerryJuice",
99
+ "GoldBerry"
93
100
  ],
94
101
  "Damage": [
95
102
  "None",
@@ -97,7 +104,16 @@
97
104
  "Burn",
98
105
  "Confusion",
99
106
  "LeechSeed",
100
- "RecoilOf"
107
+ "RecoilOf",
108
+ "Bind",
109
+ "Wrap",
110
+ "FireSpin",
111
+ "Clamp",
112
+ "Whirlpool",
113
+ "Spikes",
114
+ "Nightmare",
115
+ "Curse",
116
+ "Sandstorm"
101
117
  ],
102
118
  "Status": [
103
119
  "None",
@@ -136,7 +152,20 @@
136
152
  "Mist",
137
153
  "Struggle",
138
154
  "Substitute",
139
- "Splash"
155
+ "Splash",
156
+ "Rage",
157
+ "Attract",
158
+ "LockOn",
159
+ "Bind",
160
+ "Wrap",
161
+ "FireSpin",
162
+ "Clamp",
163
+ "Whirlpool",
164
+ "SubstituteBlock",
165
+ "DestinyBond",
166
+ "BeatUp",
167
+ "Magnitude",
168
+ "Spite"
140
169
  ],
141
170
  "Start": [
142
171
  "Bide",
@@ -150,24 +179,66 @@
150
179
  "Substitute",
151
180
  "TypeChange",
152
181
  "Disable",
153
- "Mimic"
182
+ "Mimic",
183
+ "Attract",
184
+ "Nightmare",
185
+ "Curse",
186
+ "Foresight",
187
+ "Encore",
188
+ "FutureSight",
189
+ "PerishSong0",
190
+ "PerishSong1",
191
+ "PerishSong2",
192
+ "PerishSong3",
193
+ "PerishSong3Silent"
154
194
  ],
155
195
  "End": [
156
196
  "Disable",
157
197
  "Confusion",
158
198
  "Bide",
159
199
  "Substitute",
200
+ "Nightmare",
201
+ "Curse",
202
+ "Foresight",
203
+ "Encore",
204
+ "FutureSight",
205
+ "LeechSeed",
206
+ "Bind",
207
+ "Wrap",
208
+ "FireSpin",
209
+ "Clamp",
210
+ "Whirlpool",
160
211
  "DisableSilent",
161
212
  "ConfusionSilent",
162
- "Mist",
163
- "FocusEnergy",
164
- "LeechSeed",
165
- "Toxic",
166
- "LightScreen",
167
- "Reflect"
213
+ "MistSilent",
214
+ "FocusEnergySilent",
215
+ "LeechSeedSilent",
216
+ "ToxicSilent",
217
+ "LightScreenSilent",
218
+ "ReflectSilent",
219
+ "BideSilent",
220
+ "LeechSeedFrom"
168
221
  ],
169
222
  "Immune": [
170
223
  "None",
171
224
  "OHKO"
225
+ ],
226
+ "EndItem": [
227
+ "None",
228
+ "Eat"
229
+ ],
230
+ "SetHP": [
231
+ "None",
232
+ "Silent"
233
+ ],
234
+ "Side": [
235
+ "Safeguard",
236
+ "Reflect",
237
+ "LightScreen",
238
+ "Spikes"
239
+ ],
240
+ "Weather": [
241
+ "None",
242
+ "Upkeep"
172
243
  ]
173
244
  }
@@ -1,12 +1,12 @@
1
- import { Generation, ID, TypeName } from '@pkmn/data';
1
+ import { GenerationNum, ID, TypeName } from '@pkmn/data';
2
2
  export declare const LE: boolean;
3
3
  export type IDs = [
4
4
  {
5
- types: TypeName[];
5
+ types: Exclude<TypeName, 'Dark' | 'Steel' | 'Fairy' | 'Stellar'>[];
6
6
  },
7
7
  {
8
8
  items: ID[];
9
- types: TypeName[];
9
+ types: Exclude<TypeName, 'Fairy' | 'Stellar'>[];
10
10
  }
11
11
  ];
12
12
  export declare const IDS: IDs;
@@ -15,7 +15,7 @@ export declare const PROTOCOL: {
15
15
  [name: string]: number;
16
16
  };
17
17
  };
18
- export declare const LAYOUT: {
18
+ export declare const LAYOUT: Array<{
19
19
  sizes: {
20
20
  [decl: string]: number;
21
21
  };
@@ -24,10 +24,31 @@ export declare const LAYOUT: {
24
24
  [field: string]: number;
25
25
  };
26
26
  };
27
- }[];
27
+ }>;
28
28
  export declare const Data: {
29
29
  view(buf: number[] | Buffer): DataView;
30
30
  };
31
+ interface Generation {
32
+ num: GenerationNum;
33
+ species: {
34
+ get(id: ID): {
35
+ num: number;
36
+ } | undefined;
37
+ [Symbol.iterator](): Generator<{
38
+ id: ID;
39
+ num: number;
40
+ }, void>;
41
+ };
42
+ moves: {
43
+ get(id: ID): {
44
+ num: number;
45
+ } | undefined;
46
+ [Symbol.iterator](): Generator<{
47
+ id: ID;
48
+ num: number;
49
+ }, void>;
50
+ };
51
+ }
31
52
  /**
32
53
  * Translation table for encoding/decoding Pokémon Showdown string identifiers
33
54
  * to the identifiers used internally by the pkmn engine.
@@ -89,3 +110,4 @@ export declare class Lookup {
89
110
  */
90
111
  itemByID(id: ID | undefined): number;
91
112
  }
113
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/pkg/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/pkg/data.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,20 @@
1
1
  import { BoostID, BoostsTable, Generation, ID, PokemonSet, StatID, StatsTable, StatusName, TypeName } from '@pkmn/data';
2
+ import { Choice, Player, Result } from './common';
2
3
  import { Lookup } from './data';
3
- import { Choice, CreateOptions, Data, Gen1, Player, RestoreOptions, Result, Slot } from '.';
4
+ import { CreateOptions, Data, Gen1, RestoreOptions, Slot } from '.';
4
5
  export declare class Battle implements Gen1.Battle {
5
6
  readonly config: CreateOptions | RestoreOptions;
6
7
  readonly log?: DataView;
8
+ readonly data: DataView;
7
9
  private readonly lookup;
8
- private readonly data;
9
- private readonly options;
10
- private readonly buf;
10
+ private readonly out;
11
11
  private readonly cache;
12
12
  constructor(lookup: Lookup, data: DataView, config: CreateOptions | RestoreOptions);
13
+ bytes(): DataView<ArrayBufferLike>;
13
14
  update(c1?: Choice, c2?: Choice): Result;
14
15
  choices(id: Player, result: Result): Choice[];
15
- choose(id: Player, result: Result, fn: (n: number) => number): Choice;
16
16
  get sides(): Generator<Side, void, unknown>;
17
- _sides(): Generator<Side, void, unknown>;
17
+ private _sides;
18
18
  side(id: Player): Side;
19
19
  foe(side: Player): Side;
20
20
  get turn(): number;
@@ -34,16 +34,16 @@ export declare class Side implements Gen1.Side {
34
34
  constructor(battle: Battle, lookup: Lookup, data: DataView, id: 'p1' | 'p2');
35
35
  get active(): Pokemon | undefined;
36
36
  get pokemon(): Generator<Pokemon, void, unknown>;
37
- _pokemon(): Generator<Pokemon, void, unknown>;
37
+ private _pokemon;
38
38
  slot(id: number): Slot | undefined;
39
39
  get(slot: Slot): Pokemon | undefined;
40
40
  get lastUsedMove(): ID | undefined;
41
41
  get lastSelectedMove(): ID | undefined;
42
42
  get lastMoveIndex(): 1 | 2 | 3 | 4 | undefined;
43
43
  get lastMoveCounterable(): boolean;
44
- toJSON(): Gen1.Side;
44
+ toJSON(): Data<Gen1.Side>;
45
45
  static init(gen: Generation, lookup: Lookup, team: Partial<PokemonSet>[], data: DataView, offset: number): void;
46
- static encode(gen: Generation, showdown: boolean, lookup: Lookup, battle: Data<Gen1.Battle>, side: Gen1.Side, data: DataView, offset: number): void;
46
+ static encode(gen: Generation, showdown: boolean, lookup: Lookup, battle: Data<Gen1.Battle>, side: Data<Gen1.Side>, data: DataView, offset: number): void;
47
47
  }
48
48
  export declare class Pokemon implements Gen1.Pokemon {
49
49
  static Volatiles: {
@@ -64,7 +64,7 @@ export declare class Pokemon implements Gen1.Pokemon {
64
64
  get volatiles(): Gen1.Volatiles;
65
65
  move(slot: 1 | 2 | 3 | 4): Gen1.MoveSlot | undefined;
66
66
  get moves(): Iterable<Gen1.MoveSlot>;
67
- _moves(): Generator<Gen1.MoveSlot, void, unknown>;
67
+ private _moves;
68
68
  boost(boost: BoostID): number;
69
69
  get boosts(): BoostsTable;
70
70
  get species(): ID;
@@ -80,10 +80,10 @@ export declare class Pokemon implements Gen1.Pokemon {
80
80
  private get sleep();
81
81
  private get ext();
82
82
  private get toxic();
83
- toJSON(): Gen1.Pokemon;
83
+ toJSON(): Data<Gen1.Pokemon>;
84
84
  static init(gen: Generation, lookup: Lookup, set: Partial<PokemonSet>, data: DataView, offset: number, index: number): void;
85
- static encodeStored(gen: Generation, showdown: boolean, lookup: Lookup, pokemon: Gen1.Pokemon, data: DataView, offset: number): void;
86
- static encodeActive(gen: Generation, lookup: Lookup, battle: Data<Gen1.Battle>, pokemon: Gen1.Pokemon | undefined, data: DataView, offset: number): void;
85
+ static encodeStored(gen: Generation, showdown: boolean, lookup: Lookup, pokemon: Data<Gen1.Pokemon>, data: DataView, offset: number): void;
86
+ static encodeActive(gen: Generation, lookup: Lookup, battle: Data<Gen1.Battle>, pokemon: Data<Gen1.Pokemon> | undefined, data: DataView, offset: number): void;
87
87
  }
88
88
  export declare class StoredPokemon {
89
89
  private readonly lookup;
@@ -100,11 +100,8 @@ export declare class StoredPokemon {
100
100
  id: ID;
101
101
  pp: number;
102
102
  }, void, unknown>;
103
- _moves(): Generator<{
104
- id: ID;
105
- pp: number;
106
- }, void, unknown>;
103
+ private _moves;
107
104
  get species(): ID;
108
105
  get types(): readonly [TypeName, TypeName];
109
- toJSON(): Gen1.Pokemon['stored'];
106
+ toJSON(): Data<Gen1.Pokemon['stored']>;
110
107
  }
package/build/pkg/gen1.js CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.StoredPokemon = exports.Pokemon = exports.Side = exports.Battle = void 0;
27
37
  const data_1 = require("@pkmn/data");
@@ -41,28 +51,27 @@ for (const v in OFFSETS.Volatiles) {
41
51
  class Battle {
42
52
  config;
43
53
  log;
44
- lookup;
45
54
  data;
46
- options;
47
- buf;
55
+ lookup;
56
+ out;
48
57
  cache;
49
58
  constructor(lookup, data, config) {
50
59
  this.config = config;
51
- this.lookup = lookup;
52
60
  this.data = data;
53
- this.options = new ArrayBuffer(addon.size(0, 'choices'));
54
- this.buf = config.log ? new ArrayBuffer(addon.size(0, 'log')) : undefined;
55
- this.log = config.log ? new DataView(this.buf) : undefined;
61
+ this.lookup = lookup;
62
+ this.out =
63
+ new Uint8Array(new ArrayBuffer('inert' in config ? 0 : addon.size(0, 'choices')));
64
+ this.log = config.log ? new DataView(new ArrayBuffer(addon.size(0, 'log'))) : undefined;
56
65
  this.cache = [undefined, undefined];
57
66
  }
67
+ bytes() {
68
+ return this.data;
69
+ }
58
70
  update(c1, c2) {
59
- return addon.update(0, !!this.config.showdown, this.data.buffer, c1, c2, this.buf);
71
+ return addon.update(0, !!this.config.showdown, this.data.buffer, c1, c2, this.log?.buffer);
60
72
  }
61
73
  choices(id, result) {
62
- return addon.choices(0, !!this.config.showdown, this.data.buffer, id, result[id], this.options);
63
- }
64
- choose(id, result, fn) {
65
- return addon.choose(0, !!this.config.showdown, this.data.buffer, id, result[id], this.options, fn);
74
+ return addon.choices(0, !!this.config.showdown, this.data.buffer, id, result[id], this.out);
66
75
  }
67
76
  get sides() {
68
77
  return this._sides();
@@ -378,11 +387,11 @@ class Pokemon {
378
387
  const pp = this.data.getUint8(off + ((slot << 1) - 1));
379
388
  const byte = this.data.getUint8(this.offset.active +
380
389
  OFFSETS.ActivePokemon.volatiles +
381
- (OFFSETS.Volatiles.disabled_move >> 3));
390
+ (OFFSETS.Volatiles.disable_move >> 3));
382
391
  const disabled = ((byte & 0b111) === slot)
383
392
  ? this.data.getUint8(this.offset.active +
384
393
  OFFSETS.ActivePokemon.volatiles +
385
- (OFFSETS.Volatiles.disabled_duration >> 3)) >> 4
394
+ (OFFSETS.Volatiles.disable_duration >> 3)) >> 4
386
395
  : undefined;
387
396
  return { id, pp, disabled };
388
397
  }