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

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.
@@ -70,7 +70,8 @@
70
70
  "Burst",
71
71
  "ClearPositiveBoost",
72
72
  "CanDynamax",
73
- "SwapSideConditions"
73
+ "SwapSideConditions",
74
+ "Terastallize"
74
75
  ],
75
76
  "Move": [
76
77
  "None",
@@ -84,12 +85,14 @@
84
85
  "Flinch",
85
86
  "Disable",
86
87
  "Recharge",
87
- "PP"
88
+ "PP",
89
+ "Attract"
88
90
  ],
89
91
  "Heal": [
90
92
  "None",
91
93
  "Silent",
92
- "Drain"
94
+ "Drain",
95
+ "Leftovers"
93
96
  ],
94
97
  "Damage": [
95
98
  "None",
@@ -97,7 +100,13 @@
97
100
  "Burn",
98
101
  "Confusion",
99
102
  "LeechSeed",
100
- "RecoilOf"
103
+ "RecoilOf",
104
+ "Bind",
105
+ "Wrap",
106
+ "FireSpin",
107
+ "Clamp",
108
+ "Whirlpool",
109
+ "Spikes"
101
110
  ],
102
111
  "Status": [
103
112
  "None",
@@ -136,7 +145,15 @@
136
145
  "Mist",
137
146
  "Struggle",
138
147
  "Substitute",
139
- "Splash"
148
+ "Splash",
149
+ "Attract",
150
+ "LockOn",
151
+ "Bind",
152
+ "Wrap",
153
+ "FireSpin",
154
+ "Clamp",
155
+ "Whirlpool",
156
+ "BeatUp"
140
157
  ],
141
158
  "Start": [
142
159
  "Bide",
@@ -150,24 +167,64 @@
150
167
  "Substitute",
151
168
  "TypeChange",
152
169
  "Disable",
153
- "Mimic"
170
+ "Mimic",
171
+ "Nightmare",
172
+ "Curse",
173
+ "Foresight",
174
+ "Encore",
175
+ "FutureSight",
176
+ "PerishSong3Silent",
177
+ "PerishSong3",
178
+ "PerishSong2",
179
+ "PerishSong1",
180
+ "PerishSong0"
154
181
  ],
155
182
  "End": [
156
183
  "Disable",
157
184
  "Confusion",
158
185
  "Bide",
159
186
  "Substitute",
187
+ "Nightmare",
188
+ "Curse",
189
+ "Foresight",
190
+ "Encore",
191
+ "FutureSight",
192
+ "LeechSeed",
193
+ "Bind",
194
+ "Wrap",
195
+ "FireSpin",
196
+ "Clamp",
197
+ "Whirlpool",
160
198
  "DisableSilent",
161
199
  "ConfusionSilent",
162
- "Mist",
163
- "FocusEnergy",
164
- "LeechSeed",
165
- "Toxic",
166
- "LightScreen",
167
- "Reflect"
200
+ "MistSilent",
201
+ "FocusEnergySilent",
202
+ "LeechSeedSilent",
203
+ "ToxicSilent",
204
+ "LightScreenSilent",
205
+ "ReflectSilent",
206
+ "BideSilent"
168
207
  ],
169
208
  "Immune": [
170
209
  "None",
171
210
  "OHKO"
211
+ ],
212
+ "EndItem": [
213
+ "None",
214
+ "Eat"
215
+ ],
216
+ "SetHP": [
217
+ "None",
218
+ "Silent"
219
+ ],
220
+ "Side": [
221
+ "Safeguard",
222
+ "Reflect",
223
+ "LightScreen",
224
+ "Spikes"
225
+ ],
226
+ "Weather": [
227
+ "None",
228
+ "Upkeep"
172
229
  ]
173
230
  }
@@ -99,6 +99,7 @@ class Log {
99
99
  }
100
100
  }
101
101
  exports.Log = Log;
102
+ const GENDERS = ['M', 'F', 'N'];
102
103
  const CANT = new Array(data_1.PROTOCOL.Cant.length);
103
104
  CANT[data_1.PROTOCOL.Cant.Sleep] = 'slp';
104
105
  CANT[data_1.PROTOCOL.Cant.Freeze] = 'frz';
@@ -129,37 +130,51 @@ FAIL[data_1.PROTOCOL.Fail.Burn] = 'brn';
129
130
  FAIL[data_1.PROTOCOL.Fail.Freeze] = 'frz';
130
131
  FAIL[data_1.PROTOCOL.Fail.Paralysis] = 'par';
131
132
  FAIL[data_1.PROTOCOL.Fail.Toxic] = 'tox';
132
- const ACTIVATE = new Array(data_1.PROTOCOL.Activate.length);
133
- ACTIVATE[data_1.PROTOCOL.Activate.Bide] = 'Bide';
134
- ACTIVATE[data_1.PROTOCOL.Activate.Confusion] = 'confusion';
135
- ACTIVATE[data_1.PROTOCOL.Activate.Haze] = 'move: Haze';
136
- ACTIVATE[data_1.PROTOCOL.Activate.Mist] = 'move: Mist';
137
- ACTIVATE[data_1.PROTOCOL.Activate.Struggle] = 'move: Struggle';
138
- ACTIVATE[data_1.PROTOCOL.Activate.Substitute] = 'Substitute';
139
- ACTIVATE[data_1.PROTOCOL.Activate.Splash] = 'move: Splash';
140
- const START = new Array(data_1.PROTOCOL.Start.length);
141
- START[data_1.PROTOCOL.Start.Bide] = 'Bide';
142
- START[data_1.PROTOCOL.Start.Confusion] = 'confusion';
143
- START[data_1.PROTOCOL.Start.ConfusionSilent] = 'confusion';
144
- START[data_1.PROTOCOL.Start.FocusEnergy] = 'move: Focus Energy';
145
- START[data_1.PROTOCOL.Start.LeechSeed] = 'move: Leech Seed';
146
- START[data_1.PROTOCOL.Start.LightScreen] = 'Light Screen';
147
- START[data_1.PROTOCOL.Start.Mist] = 'Mist';
148
- START[data_1.PROTOCOL.Start.Reflect] = 'Reflect';
149
- START[data_1.PROTOCOL.Start.Substitute] = 'Substitute';
150
- const END = new Array(data_1.PROTOCOL.End.length);
151
- END[data_1.PROTOCOL.End.Disable] = 'Disable';
152
- END[data_1.PROTOCOL.End.Confusion] = 'confusion';
153
- END[data_1.PROTOCOL.End.Bide] = 'Bide';
154
- END[data_1.PROTOCOL.End.Substitute] = 'Substitute';
155
- END[data_1.PROTOCOL.End.DisableSilent] = 'Disable';
156
- END[data_1.PROTOCOL.End.ConfusionSilent] = 'confusion';
157
- END[data_1.PROTOCOL.End.Mist] = 'Mist';
158
- END[data_1.PROTOCOL.End.FocusEnergy] = 'move: Focus Energy';
159
- END[data_1.PROTOCOL.End.LeechSeed] = 'move: Leech Seed';
160
- END[data_1.PROTOCOL.End.Toxic] = 'Toxic counter';
161
- END[data_1.PROTOCOL.End.LightScreen] = 'Light Screen';
162
- END[data_1.PROTOCOL.End.Reflect] = 'Reflect';
133
+ const ACTIVATE = [new Array(data_1.PROTOCOL.Activate.length)];
134
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Bide] = 'Bide';
135
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Confusion] = 'confusion';
136
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Haze] = 'move: Haze';
137
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Mist] = 'move: Mist';
138
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Struggle] = 'move: Struggle';
139
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Substitute] = 'Substitute';
140
+ ACTIVATE[0][data_1.PROTOCOL.Activate.Splash] = 'move: Splash';
141
+ ACTIVATE[1] = ACTIVATE[0].slice(0);
142
+ ACTIVATE[1][data_1.PROTOCOL.Activate.Bide] = 'move: Bide';
143
+ const START = [new Array(data_1.PROTOCOL.Start.length)];
144
+ START[0][data_1.PROTOCOL.Start.Bide] = 'Bide';
145
+ START[0][data_1.PROTOCOL.Start.Confusion] = 'confusion';
146
+ START[0][data_1.PROTOCOL.Start.ConfusionSilent] = 'confusion';
147
+ START[0][data_1.PROTOCOL.Start.FocusEnergy] = 'move: Focus Energy';
148
+ START[0][data_1.PROTOCOL.Start.LeechSeed] = 'move: Leech Seed';
149
+ START[0][data_1.PROTOCOL.Start.LightScreen] = 'Light Screen';
150
+ START[0][data_1.PROTOCOL.Start.Mist] = 'Mist';
151
+ START[0][data_1.PROTOCOL.Start.Reflect] = 'Reflect';
152
+ START[0][data_1.PROTOCOL.Start.Substitute] = 'Substitute';
153
+ START[1] = START[0].slice(0);
154
+ START[1][data_1.PROTOCOL.Start.Bide] = 'move: Bide';
155
+ const END = [new Array(data_1.PROTOCOL.End.length)];
156
+ END[0][data_1.PROTOCOL.End.Disable] = 'Disable';
157
+ END[0][data_1.PROTOCOL.End.Confusion] = 'confusion';
158
+ END[0][data_1.PROTOCOL.End.Bide] = 'Bide';
159
+ END[0][data_1.PROTOCOL.End.Substitute] = 'Substitute';
160
+ END[0][data_1.PROTOCOL.End.DisableSilent] = 'Disable';
161
+ END[0][data_1.PROTOCOL.End.ConfusionSilent] = 'confusion';
162
+ END[0][data_1.PROTOCOL.End.MistSilent] = 'Mist';
163
+ END[0][data_1.PROTOCOL.End.FocusEnergySilent] = 'move: Focus Energy';
164
+ END[0][data_1.PROTOCOL.End.LeechSeedSilent] = 'move: Leech Seed';
165
+ END[0][data_1.PROTOCOL.End.ToxicSilent] = 'Toxic counter';
166
+ END[0][data_1.PROTOCOL.End.LightScreenSilent] = 'Light Screen';
167
+ END[0][data_1.PROTOCOL.End.ReflectSilent] = 'Reflect';
168
+ END[0][data_1.PROTOCOL.End.BideSilent] = 'move: Bide';
169
+ END[1] = END[0].slice(0);
170
+ END[1][data_1.PROTOCOL.End.Disable] = 'move: Disable';
171
+ END[1][data_1.PROTOCOL.End.Bide] = 'move: Bide';
172
+ END[1][data_1.PROTOCOL.End.LeechSeed] = 'Leech Seed';
173
+ const SIDE = new Array(data_1.PROTOCOL.Side.length);
174
+ SIDE[data_1.PROTOCOL.Side.Safeguard] = 'Safeguard';
175
+ SIDE[data_1.PROTOCOL.Side.Reflect] = 'Reflect';
176
+ SIDE[data_1.PROTOCOL.Side.LightScreen] = 'move: Light Screen';
177
+ SIDE[data_1.PROTOCOL.Side.Spikes] = 'Spikes';
163
178
  const DECODERS = new Array(ArgType.length);
164
179
  DECODERS[ArgType.Move] = function (offset, data) {
165
180
  const source = decodeIdent(this.info, data.getUint8(offset++));
@@ -179,7 +194,7 @@ DECODERS[ArgType.Move] = function (offset, data) {
179
194
  DECODERS[ArgType.Switch] = function (offset, data) {
180
195
  const ident = decodeIdent(this.info, data.getUint8(offset++));
181
196
  const details = decodeDetails(offset, data, this.gen, this.lookup);
182
- offset += 2;
197
+ offset += this.gen.num > 1 ? 3 : 2;
183
198
  const hpStatus = decodeHPStatus(offset, data);
184
199
  offset += 5;
185
200
  const args = ['switch', ident, details, hpStatus];
@@ -334,9 +349,10 @@ DECODERS[ArgType.Activate] = function (offset, data) {
334
349
  const ident = decodeIdent(this.info, data.getUint8(offset++));
335
350
  const reason = data.getUint8(offset++);
336
351
  const type = reason === data_1.PROTOCOL.Activate.Mist ? '-block' : '-activate';
352
+ const activate = ACTIVATE[this.gen.num - 1];
337
353
  const args = reason === data_1.PROTOCOL.Activate.Splash
338
- ? [type, '', ACTIVATE[reason]]
339
- : [type, ident, ACTIVATE[reason], ''];
354
+ ? [type, '', activate[reason]]
355
+ : [type, ident, activate[reason], ''];
340
356
  const kwArgs = reason === data_1.PROTOCOL.Activate.Substitute ? { damage: true } : {};
341
357
  return { offset, line: { args, kwArgs } };
342
358
  };
@@ -351,7 +367,7 @@ DECODERS[ArgType.Start] = function (offset, data) {
351
367
  let args;
352
368
  const kwArgs = {};
353
369
  if (reason < data_1.PROTOCOL.Start.TypeChange) {
354
- args = ['-start', ident, START[reason]];
370
+ args = ['-start', ident, START[this.gen.num - 1][reason]];
355
371
  if (reason === data_1.PROTOCOL.Start.ConfusionSilent)
356
372
  kwArgs.silent = true;
357
373
  }
@@ -372,7 +388,7 @@ DECODERS[ArgType.Start] = function (offset, data) {
372
388
  DECODERS[ArgType.End] = function (offset, data) {
373
389
  const ident = decodeIdent(this.info, data.getUint8(offset++));
374
390
  const reason = data.getUint8(offset++);
375
- const args = ['-end', ident, END[reason]];
391
+ const args = ['-end', ident, END[this.gen.num - 1][reason]];
376
392
  const kwArgs = reason >= data_1.PROTOCOL.End.DisableSilent ? { silent: true } : {};
377
393
  return { offset, line: { args, kwArgs } };
378
394
  };
@@ -411,8 +427,11 @@ function decodeIdent(info, byte) {
411
427
  }
412
428
  function decodeDetails(offset, data, gen, lookup) {
413
429
  const species = gen.species.get(lookup.speciesByNum(data.getUint8(offset++))).name;
430
+ const gender = gen.num > 1 ? GENDERS[data.getUint8(offset++)] : 'N';
414
431
  const level = data.getUint8(offset);
415
- return (level === 100 ? species : `${species}, L${level}`);
432
+ const mf = gender === 'N' ? '' : `, ${gender}`;
433
+ const lvl = level === 100 ? '' : `, L${level}`;
434
+ return `${species}${mf}${lvl}`;
416
435
  }
417
436
  function decodeHPStatus(offset, data) {
418
437
  const hp = data.getUint16(offset, data_1.LE);
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/pkg/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/pkg/protocol.ts"],"names":[],"mappings":"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"}
package/build.zig CHANGED
@@ -289,7 +289,7 @@ const TestStep = struct {
289
289
 
290
290
  const self = b.allocator.create(TestStep) catch @panic("OOM");
291
291
  const step = std.Build.Step.init(.{ .id = .custom, .name = "Run all tests", .owner = b });
292
- self.* = TestStep{ .step = step, .build = test_filter == null };
292
+ self.* = .{ .step = step, .build = test_filter == null };
293
293
 
294
294
  const path = test_file orelse "src/lib/test.zig";
295
295
  const tests = b.addTest(.{
@@ -358,7 +358,7 @@ const ToolsStep = struct {
358
358
  pub fn create(b: *std.Build, exes: *std.ArrayList(*std.Build.CompileStep)) *ToolsStep {
359
359
  const self = b.allocator.create(ToolsStep) catch @panic("OOM");
360
360
  const step = std.Build.Step.init(.{ .id = .custom, .name = "Install tools", .owner = b });
361
- self.* = ToolsStep{ .step = step };
361
+ self.* = .{ .step = step };
362
362
  for (exes.items) |t| self.step.dependOn(&b.addInstallArtifact(t, .{}).step);
363
363
  return self;
364
364
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pkmn/engine",
3
- "version": "0.1.0-dev.f3aaee39",
3
+ "version": "0.1.0-dev.f918c3bd",
4
4
  "description": "A minimal, complete, Pokémon battle simulation engine optimized for performance",
5
5
  "repository": "github:pkmn/engine",
6
6
  "license": "MIT",
@@ -73,30 +73,30 @@
73
73
  "access": "public"
74
74
  },
75
75
  "dependencies": {
76
- "@pkmn/data": "^0.7.46",
77
- "@pkmn/protocol": "^0.6.12"
76
+ "@pkmn/data": "^0.7.50",
77
+ "@pkmn/protocol": "^0.6.13"
78
78
  },
79
79
  "devDependencies": {
80
- "@pkmn/eslint-config": "^5.0.0",
81
- "@pkmn/img": "^0.2.13",
80
+ "@pkmn/eslint-config": "^5.2.0",
81
+ "@pkmn/img": "^0.2.15",
82
82
  "@pkmn/sets": "^5.0.4",
83
- "@pkmn/sim": "0.7.46",
83
+ "@pkmn/sim": "0.7.50",
84
84
  "@types/html-minifier": "^4.0.2",
85
- "@types/jest": "^29.5.3",
85
+ "@types/jest": "^29.5.4",
86
86
  "@types/minimist": "^1.2.2",
87
87
  "@types/mustache": "^4.2.2",
88
- "@types/node": "^20.4.2",
88
+ "@types/node": "^20.5.9",
89
89
  "@vitest/coverage-c8": "^0.33.0",
90
90
  "binaryen": "^114.0.0",
91
- "eslint": "^8.44.0",
91
+ "eslint": "^8.48.0",
92
92
  "html-minifier": "^4.0.0",
93
93
  "json-stringify-pretty-compact": "3.0.0",
94
94
  "minimist": "^1.2.8",
95
95
  "mustache": "^4.2.0",
96
96
  "source-map-support": "^0.5.21",
97
97
  "trakr": "^0.2.0",
98
- "typescript": "^5.1.6",
99
- "vitest": "^0.33.0"
98
+ "typescript": "^5.2.2",
99
+ "vitest": "^0.34.4"
100
100
  },
101
101
  "scripts": {
102
102
  "lint": "eslint --cache src --ext ts,js && eslint src/bin/*",
@@ -168,6 +168,15 @@
168
168
  "@typescript-eslint/no-redundant-type-constituents": "off"
169
169
  }
170
170
  },
171
+ {
172
+ "files": [
173
+ "src/pkg/protocol.test.ts"
174
+ ],
175
+ "rules": {
176
+ "jest/no-standalone-expect": "off",
177
+ "jest/no-conditional-expect": "off"
178
+ }
179
+ },
171
180
  {
172
181
  "files": [
173
182
  "src/test/*.test.ts",
@@ -88,7 +88,7 @@ fn update(gen: anytype) c.napi_callback {
88
88
  assert(data != null);
89
89
 
90
90
  var buf = @as([*]u8, @ptrCast(data.?))[0..gen.LOGS_SIZE];
91
- var stream = pkmn.protocol.ByteStream{ .buffer = buf };
91
+ var stream: pkmn.protocol.ByteStream = .{ .buffer = buf };
92
92
  // TODO: extract out
93
93
  var opts = pkmn.battle.options(
94
94
  pkmn.protocol.FixedLog{ .writer = stream.writer() },
@@ -27,17 +27,13 @@ test Player {
27
27
  }
28
28
 
29
29
  /// An identifier for a specific Pokémon in battle.
30
- pub const ID = packed struct {
30
+ pub const ID = packed struct(u8) {
31
31
  /// The one-indexed team slot of the Pokémon
32
32
  id: u3 = 0,
33
33
  /// The Pokémon's trainer.
34
34
  player: Player = .P1,
35
35
  _: u4 = 0,
36
36
 
37
- comptime {
38
- assert(@sizeOf(ID) == 1);
39
- }
40
-
41
37
  /// Converts the identifier into a number.
42
38
  pub inline fn int(self: ID) u4 {
43
39
  return @intCast(@as(u8, @bitCast(self)));
@@ -52,12 +48,12 @@ pub const ID = packed struct {
52
48
  test ID {
53
49
  try expectEqual(@as(u8, 0b0001), @as(u8, @bitCast(ID{ .player = .P1, .id = 1 })));
54
50
  try expectEqual(@as(u8, 0b1101), @as(u8, @bitCast(ID{ .player = .P2, .id = 5 })));
55
- const id = ID{ .player = .P2, .id = 4 };
51
+ const id: ID = .{ .player = .P2, .id = 4 };
56
52
  try expectEqual(id, ID.from(id.int()));
57
53
  }
58
54
 
59
55
  /// A choice made by a player during battle.
60
- pub const Choice = packed struct {
56
+ pub const Choice = packed struct(u8) {
61
57
  /// The choice type.
62
58
  type: Choice.Type = .Pass,
63
59
  /// The choice data:
@@ -73,10 +69,6 @@ pub const Choice = packed struct {
73
69
  Move,
74
70
  Switch,
75
71
  };
76
-
77
- comptime {
78
- assert(@sizeOf(Choice) == 1);
79
- }
80
72
  };
81
73
 
82
74
  test Choice {
@@ -89,7 +81,7 @@ test Choice {
89
81
  }
90
82
 
91
83
  /// The result of the battle - all results other than 'None' should be considered terminal.
92
- pub const Result = packed struct {
84
+ pub const Result = packed struct(u8) {
93
85
  /// The type of result from the perspective of Player 1.
94
86
  /// `Error` is not possible when in Pokémon Showdown compatibility mode.
95
87
  type: Result.Type = .None,
@@ -117,10 +109,6 @@ pub const Result = packed struct {
117
109
  pub const Error: Result = .{ .type = .Error };
118
110
  /// The default result.
119
111
  pub const Default: Result = .{ .p1 = .Move, .p2 = .Move };
120
-
121
- comptime {
122
- assert(@sizeOf(Result) == 1);
123
- }
124
112
  };
125
113
 
126
114
  test Result {