@pkmn/engine 0.1.0-dev.29e0e9e1 → 0.1.0-dev.2b11d5c7
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 +1 -3
- package/README.md +46 -18
- package/build/pkg/addon/browser.d.ts +3 -0
- package/build/pkg/addon/browser.js +44 -0
- package/build/pkg/addon/browser.js.map +1 -0
- package/build/pkg/addon/node.d.ts +3 -0
- package/build/pkg/addon/node.js +97 -0
- package/build/pkg/addon/node.js.map +1 -0
- package/build/pkg/addon/wasm.d.ts +2 -0
- package/build/pkg/addon/wasm.js +53 -0
- package/build/pkg/addon/wasm.js.map +1 -0
- package/build/pkg/addon.d.ts +25 -3
- package/build/pkg/addon.js +39 -71
- package/build/pkg/addon.js.map +1 -1
- package/build/pkg/data/layout.json +15 -2
- package/build/pkg/data/protocol.json +23 -9
- package/build/pkg/data.d.ts +27 -5
- package/build/pkg/data.js.map +1 -1
- package/build/pkg/gen1.d.ts +13 -17
- package/build/pkg/gen1.js +6 -10
- package/build/pkg/gen1.js.map +1 -1
- package/build/pkg/index.d.ts +40 -91
- package/build/pkg/index.js +6 -63
- package/build/pkg/index.js.map +1 -1
- package/build/pkg/protocol.d.ts +20 -1
- package/build/pkg/protocol.js +109 -107
- package/build/pkg/protocol.js.map +1 -1
- package/build/tools/debug.js +36 -71
- package/build/tools/debug.js.map +1 -1
- package/build/tools/display/debug.jsx +141 -0
- package/build/tools/display/debug.jsx.map +1 -0
- package/build/tools/display/index.js +142 -0
- package/build/tools/display/index.js.map +1 -0
- package/build/tools/display/ui.jsx +349 -0
- package/build/tools/display/ui.jsx.map +1 -0
- package/build/tools/display/util.js +18 -0
- package/build/tools/display/util.js.map +1 -0
- package/build.zig +294 -90
- package/package.json +59 -132
- package/src/bin/install-pkmn-engine +30 -20
- package/src/bin/pkmn-debug +1 -1
- package/src/lib/bindings/c.zig +254 -0
- package/src/lib/{binding → bindings}/node.zig +8 -21
- package/src/lib/bindings/wasm.zig +59 -0
- package/src/lib/common/array.zig +77 -0
- package/src/lib/common/data.zig +4 -4
- package/src/lib/common/debug.zig +39 -8
- package/src/lib/common/js.zig +4 -2
- package/src/lib/common/optional.zig +14 -10
- package/src/lib/common/options.zig +6 -0
- package/src/lib/common/protocol.zig +77 -80
- package/src/lib/common/rational.zig +128 -32
- package/src/lib/common/rng.zig +7 -9
- package/src/lib/common/util.zig +50 -1
- package/src/lib/gen1/calc.zig +686 -159
- package/src/lib/gen1/chance.zig +405 -280
- package/src/lib/gen1/data/moves.zig +2 -4
- package/src/lib/gen1/data/species.zig +2 -4
- package/src/lib/gen1/data/types.zig +1 -2
- package/src/lib/gen1/data.zig +24 -27
- package/src/lib/gen1/helpers.zig +92 -548
- package/src/lib/gen1/mechanics.zig +379 -258
- package/src/lib/gen2/calc.zig +37 -27
- package/src/lib/gen2/chance.zig +84 -496
- package/src/lib/gen2/data/items.zig +1 -3
- package/src/lib/gen2/data/moves.zig +2 -4
- package/src/lib/gen2/data/species.zig +1 -3
- package/src/lib/gen2/data/types.zig +1 -2
- package/src/lib/gen2/data.zig +19 -22
- package/src/lib/gen2/generated.zig +19 -26
- package/src/lib/gen2/helpers.zig +46 -25
- package/src/lib/gen2/mechanics.zig +217 -163
- package/src/lib/node.zig +18 -0
- package/src/lib/pkmn.zig +37 -15
- package/src/lib/wasm.zig +17 -0
- package/src/tools/display/dom.ts +96 -0
- package/src/tools/display/ui.css +354 -0
- package/build/test/display.js +0 -400
- package/build/test/display.js.map +0 -1
- package/src/lib/binding/wasm.zig +0 -12
- package/src/lib/gen1/README.md +0 -894
- package/src/lib/gen2/README.md +0 -329
- package/src/test/display/pkmn.html.tmpl +0 -368
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
const std = @import("std");
|
|
2
1
|
const builtin = @import("builtin");
|
|
3
|
-
|
|
2
|
+
const data = @import("data.zig");
|
|
3
|
+
const options = @import("options.zig");
|
|
4
4
|
const pkmn = @import("../pkmn.zig");
|
|
5
|
-
|
|
6
|
-
const data = @import("./data.zig");
|
|
7
|
-
const options = @import("./options.zig");
|
|
5
|
+
const std = @import("std");
|
|
8
6
|
|
|
9
7
|
const assert = std.debug.assert;
|
|
8
|
+
const enabled = options.log;
|
|
9
|
+
const ID = data.ID;
|
|
10
|
+
const Player = data.Player;
|
|
10
11
|
const print = std.debug.print;
|
|
11
12
|
|
|
12
|
-
const
|
|
13
|
+
const endian = builtin.cpu.arch.endian();
|
|
14
|
+
const Endian = std.builtin.Endian;
|
|
15
|
+
const big = if (@hasField(Endian, "big")) Endian.big else Endian.Big;
|
|
16
|
+
const little = if (@hasField(Endian, "little")) Endian.little else Endian.Little;
|
|
13
17
|
|
|
14
|
-
const
|
|
15
|
-
const ID = data.ID;
|
|
18
|
+
const Int = if (@hasField(std.builtin.Type, "int")) .int else .Int;
|
|
16
19
|
|
|
17
20
|
pub const ArgType = enum(u8) {
|
|
18
21
|
None,
|
|
@@ -71,7 +74,7 @@ pub const ArgType = enum(u8) {
|
|
|
71
74
|
EndAbility,
|
|
72
75
|
ClearNegativeBoost,
|
|
73
76
|
FormeChange,
|
|
74
|
-
|
|
77
|
+
LastNoTarget, // FIXME
|
|
75
78
|
|
|
76
79
|
// Gen 4
|
|
77
80
|
SwapBoost,
|
|
@@ -218,6 +221,7 @@ pub const Activate = enum(u8) {
|
|
|
218
221
|
BeatUp, // FIXME of
|
|
219
222
|
|
|
220
223
|
Magnitude,
|
|
224
|
+
Spite,
|
|
221
225
|
};
|
|
222
226
|
|
|
223
227
|
pub const Start = enum(u8) {
|
|
@@ -359,8 +363,8 @@ pub fn Log(comptime Writer: type) type {
|
|
|
359
363
|
} else {
|
|
360
364
|
try self.writer.writeAll(&.{ @intFromEnum(args[1].species), args[1].level });
|
|
361
365
|
}
|
|
362
|
-
try self.writer.
|
|
363
|
-
try self.writer.
|
|
366
|
+
try self.writer.writeInt(u16, args[1].hp, endian);
|
|
367
|
+
try self.writer.writeInt(u16, args[1].stats.hp, endian);
|
|
364
368
|
try self.writer.writeAll(&.{args[1].status});
|
|
365
369
|
}
|
|
366
370
|
|
|
@@ -391,7 +395,7 @@ pub fn Log(comptime Writer: type) type {
|
|
|
391
395
|
if (!enabled) return;
|
|
392
396
|
|
|
393
397
|
try self.writer.writeByte(@intFromEnum(ArgType.Turn));
|
|
394
|
-
try self.writer.
|
|
398
|
+
try self.writer.writeInt(u16, args[0], endian);
|
|
395
399
|
try self.writer.writeByte(@intFromEnum(ArgType.None));
|
|
396
400
|
}
|
|
397
401
|
|
|
@@ -423,8 +427,8 @@ pub fn Log(comptime Writer: type) type {
|
|
|
423
427
|
@intFromEnum(ArgType.Damage),
|
|
424
428
|
@as(u8, @bitCast(args[0])),
|
|
425
429
|
});
|
|
426
|
-
try self.writer.
|
|
427
|
-
try self.writer.
|
|
430
|
+
try self.writer.writeInt(u16, args[1].hp, endian);
|
|
431
|
+
try self.writer.writeInt(u16, args[1].stats.hp, endian);
|
|
428
432
|
try self.writer.writeAll(&.{ args[1].status, @intFromEnum(@as(Damage, args[2])) });
|
|
429
433
|
if (args.len == 4) try self.writer.writeByte(@as(u8, @bitCast(args[3])));
|
|
430
434
|
}
|
|
@@ -436,8 +440,8 @@ pub fn Log(comptime Writer: type) type {
|
|
|
436
440
|
|
|
437
441
|
assert(args[2] != .Drain or args.len == 4);
|
|
438
442
|
try self.writer.writeAll(&.{ @intFromEnum(ArgType.Heal), @as(u8, @bitCast(args[0])) });
|
|
439
|
-
try self.writer.
|
|
440
|
-
try self.writer.
|
|
443
|
+
try self.writer.writeInt(u16, args[1].hp, endian);
|
|
444
|
+
try self.writer.writeInt(u16, args[1].stats.hp, endian);
|
|
441
445
|
try self.writer.writeAll(&.{ args[1].status, @intFromEnum(@as(Heal, args[2])) });
|
|
442
446
|
if (args.len == 4) try self.writer.writeByte(@as(u8, @bitCast(args[3])));
|
|
443
447
|
}
|
|
@@ -542,6 +546,7 @@ pub fn Log(comptime Writer: type) type {
|
|
|
542
546
|
// ident: ID, reason: Activate
|
|
543
547
|
// ident: ID, reason: .SubstituteBlock, m: <Move>
|
|
544
548
|
// ident: ID, reason: .Magnitude, num: u8
|
|
549
|
+
// ident: ID, reason: .Spite, m: <Move>, num: u8
|
|
545
550
|
pub fn activate(self: Self, args: anytype) Error!void {
|
|
546
551
|
if (!enabled) return;
|
|
547
552
|
|
|
@@ -559,6 +564,9 @@ pub fn Log(comptime Writer: type) type {
|
|
|
559
564
|
assert(reason == .Magnitude);
|
|
560
565
|
try self.writer.writeByte(args[2]);
|
|
561
566
|
}
|
|
567
|
+
} else if (args.len == 4) {
|
|
568
|
+
assert(reason == .Spite);
|
|
569
|
+
try self.writer.writeAll(&.{ @intFromEnum(args[2]), args[3] });
|
|
562
570
|
}
|
|
563
571
|
}
|
|
564
572
|
|
|
@@ -706,8 +714,8 @@ pub fn Log(comptime Writer: type) type {
|
|
|
706
714
|
if (!enabled) return;
|
|
707
715
|
|
|
708
716
|
try self.writer.writeAll(&.{ @intFromEnum(ArgType.SetHP), @as(u8, @bitCast(args[0])) });
|
|
709
|
-
try self.writer.
|
|
710
|
-
try self.writer.
|
|
717
|
+
try self.writer.writeInt(u16, args[1].hp, endian);
|
|
718
|
+
try self.writer.writeInt(u16, args[1].stats.hp, endian);
|
|
711
719
|
try self.writer.writeAll(&.{args[1].status});
|
|
712
720
|
try self.writer.writeByte(@intFromEnum(@as(SetHP, args[2])));
|
|
713
721
|
}
|
|
@@ -831,10 +839,10 @@ pub const ByteStream = struct {
|
|
|
831
839
|
try self.stream.writeByte(byte);
|
|
832
840
|
}
|
|
833
841
|
|
|
834
|
-
pub fn
|
|
842
|
+
pub fn writeInt(self: Writer, comptime T: type, v: T, end: std.builtin.Endian) Error!void {
|
|
835
843
|
// TODO: rework this to write directly to the buffer?
|
|
836
|
-
var bytes: [(@typeInfo(T)
|
|
837
|
-
std.mem.
|
|
844
|
+
var bytes: [@divExact(@field(@typeInfo(T), @tagName(Int)).bits, 8)]u8 = undefined;
|
|
845
|
+
std.mem.writeInt(std.math.ByteAlignedInt(@TypeOf(v)), &bytes, v, end);
|
|
838
846
|
return self.writeAll(&bytes);
|
|
839
847
|
}
|
|
840
848
|
};
|
|
@@ -857,7 +865,7 @@ pub const ByteStream = struct {
|
|
|
857
865
|
pub const Kind = enum { Move, Species, Type, Status, Item, Weather };
|
|
858
866
|
|
|
859
867
|
pub fn format(
|
|
860
|
-
|
|
868
|
+
gen: anytype,
|
|
861
869
|
a: []const u8,
|
|
862
870
|
b: ?[]const u8,
|
|
863
871
|
color: bool,
|
|
@@ -943,19 +951,19 @@ pub fn format(
|
|
|
943
951
|
if (a[i] == N(gen.Gender.Unknown)) {
|
|
944
952
|
i += 1;
|
|
945
953
|
} else {
|
|
946
|
-
|
|
954
|
+
const gender = if (a[i] == N(gen.Gender.Male)) "M" else "F";
|
|
947
955
|
printc(", {s}", .{gender}, a, b, &i, 1, color);
|
|
948
956
|
}
|
|
949
957
|
}
|
|
950
958
|
printc(" L{d}", .{a[i]}, a, b, &i, 1, color);
|
|
951
959
|
switch (endian) {
|
|
952
|
-
|
|
960
|
+
big => {
|
|
953
961
|
var hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
954
962
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
955
963
|
hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
956
964
|
printc("/{d}", .{hp}, a, b, &i, 2, color);
|
|
957
965
|
},
|
|
958
|
-
|
|
966
|
+
little => {
|
|
959
967
|
var hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
960
968
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
961
969
|
hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
@@ -986,8 +994,8 @@ pub fn format(
|
|
|
986
994
|
},
|
|
987
995
|
.Turn => {
|
|
988
996
|
const turn = switch (endian) {
|
|
989
|
-
|
|
990
|
-
|
|
997
|
+
big => @as(u16, a[i]) << 8 | @as(u16, a[i + 1]),
|
|
998
|
+
little => @as(u16, a[i + 1]) << 8 | @as(u16, a[i]),
|
|
991
999
|
};
|
|
992
1000
|
printc(" {d}", .{turn}, a, b, &i, 2, color);
|
|
993
1001
|
},
|
|
@@ -998,13 +1006,13 @@ pub fn format(
|
|
|
998
1006
|
var id = ID.from(@intCast(a[i]));
|
|
999
1007
|
printc(" {s}({d})", .{ @tagName(id.player), id.id }, a, b, &i, 1, color);
|
|
1000
1008
|
switch (endian) {
|
|
1001
|
-
|
|
1009
|
+
big => {
|
|
1002
1010
|
var hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
1003
1011
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
1004
1012
|
hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
1005
1013
|
printc("/{d}", .{hp}, a, b, &i, 2, color);
|
|
1006
1014
|
},
|
|
1007
|
-
|
|
1015
|
+
little => {
|
|
1008
1016
|
var hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
1009
1017
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
1010
1018
|
hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
@@ -1083,7 +1091,8 @@ pub fn format(
|
|
|
1083
1091
|
const reason = a[i];
|
|
1084
1092
|
printc(" {s}", .{@tagName(@as(Start, @enumFromInt(reason)))}, a, b, &i, 1, color);
|
|
1085
1093
|
if (@as(Start, @enumFromInt(reason)) == .TypeChange) {
|
|
1086
|
-
|
|
1094
|
+
// FIXME
|
|
1095
|
+
const types = @as(gen1.Types, @bitCast(a[i]));
|
|
1087
1096
|
const args = .{
|
|
1088
1097
|
formatter(gen, .Type, @intFromEnum(types.type1)),
|
|
1089
1098
|
formatter(gen, .Type, @intFromEnum(types.type2)),
|
|
@@ -1125,13 +1134,13 @@ pub fn format(
|
|
|
1125
1134
|
const id = ID.from(@intCast(a[i]));
|
|
1126
1135
|
printc(" {s}({d})", .{ @tagName(id.player), id.id }, a, b, &i, 1, color);
|
|
1127
1136
|
switch (endian) {
|
|
1128
|
-
|
|
1137
|
+
big => {
|
|
1129
1138
|
var hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
1130
1139
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
1131
1140
|
hp = @as(u16, a[i]) << 8 | @as(u16, a[i + 1]);
|
|
1132
1141
|
printc("/{d}", .{hp}, a, b, &i, 2, color);
|
|
1133
1142
|
},
|
|
1134
|
-
|
|
1143
|
+
little => {
|
|
1135
1144
|
var hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
1136
1145
|
printc(" {d}", .{hp}, a, b, &i, 2, color);
|
|
1137
1146
|
hp = @as(u16, a[i + 1]) << 8 | @as(u16, a[i]);
|
|
@@ -1199,14 +1208,11 @@ pub fn expectLog(
|
|
|
1199
1208
|
) !void {
|
|
1200
1209
|
if (!enabled) return;
|
|
1201
1210
|
|
|
1202
|
-
const color =
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
} else {
|
|
1208
|
-
break :color std.io.getStdErr().supportsAnsiEscapeCodes();
|
|
1209
|
-
}
|
|
1211
|
+
const color = if (std.process.hasEnvVarConstant("ZIG_DEBUG_COLOR"))
|
|
1212
|
+
true
|
|
1213
|
+
else switch (std.io.tty.detectConfig(std.io.getStdErr())) {
|
|
1214
|
+
.escape_codes => true,
|
|
1215
|
+
else => false,
|
|
1210
1216
|
};
|
|
1211
1217
|
|
|
1212
1218
|
expectEqualBytes(expected, actual, offset) catch |err| switch (err) {
|
|
@@ -1238,8 +1244,6 @@ fn expectEqualBytes(expected: []const u8, actual: []const u8, offset: usize) !vo
|
|
|
1238
1244
|
}
|
|
1239
1245
|
}
|
|
1240
1246
|
|
|
1241
|
-
const endian = builtin.target.cpu.arch.endian();
|
|
1242
|
-
|
|
1243
1247
|
fn N(e: anytype) u8 {
|
|
1244
1248
|
return @intFromEnum(e);
|
|
1245
1249
|
}
|
|
@@ -1247,20 +1251,13 @@ fn N(e: anytype) u8 {
|
|
|
1247
1251
|
const p1 = Player.P1;
|
|
1248
1252
|
const p2 = Player.P2;
|
|
1249
1253
|
|
|
1250
|
-
const gen1 = struct {
|
|
1251
|
-
pub usingnamespace @import("../gen1/data.zig");
|
|
1252
|
-
pub const helpers = @import("../gen1/helpers.zig");
|
|
1253
|
-
};
|
|
1254
|
-
|
|
1255
|
-
const gen2 = struct {
|
|
1256
|
-
pub usingnamespace @import("../gen2/data.zig");
|
|
1257
|
-
pub const helpers = @import("../gen2/helpers.zig");
|
|
1258
|
-
};
|
|
1259
|
-
|
|
1260
1254
|
var buf: [pkmn.LOGS_SIZE]u8 = undefined;
|
|
1261
1255
|
var stream: ByteStream = .{ .buffer = &buf };
|
|
1262
1256
|
var log: FixedLog = .{ .writer = stream.writer() };
|
|
1263
1257
|
|
|
1258
|
+
const gen1 = pkmn.gen1;
|
|
1259
|
+
const gen2 = pkmn.gen2;
|
|
1260
|
+
|
|
1264
1261
|
const M1 = gen1.Move;
|
|
1265
1262
|
const S1 = gen1.Species;
|
|
1266
1263
|
|
|
@@ -1349,8 +1346,8 @@ test "|switch|" {
|
|
|
1349
1346
|
try log.switched(.{ p2.ident(3), &snorlax });
|
|
1350
1347
|
const par = 0b1000000;
|
|
1351
1348
|
var expected: []const u8 = switch (endian) {
|
|
1352
|
-
|
|
1353
|
-
|
|
1349
|
+
big => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 91, 0, 200, 1, 144, par },
|
|
1350
|
+
little => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 91, 200, 0, 144, 1, par },
|
|
1354
1351
|
};
|
|
1355
1352
|
try expectLog1(expected, buf[0..9]);
|
|
1356
1353
|
stream.reset();
|
|
@@ -1360,8 +1357,8 @@ test "|switch|" {
|
|
|
1360
1357
|
snorlax.status = 0;
|
|
1361
1358
|
try log.switched(.{ p2.ident(3), &snorlax });
|
|
1362
1359
|
expected = switch (endian) {
|
|
1363
|
-
|
|
1364
|
-
|
|
1360
|
+
big => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 100, 0, 0, 1, 144, 0 },
|
|
1361
|
+
little => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 100, 0, 0, 144, 1, 0 },
|
|
1365
1362
|
};
|
|
1366
1363
|
try expectLog1(expected, buf[0..9]);
|
|
1367
1364
|
stream.reset();
|
|
@@ -1369,8 +1366,8 @@ test "|switch|" {
|
|
|
1369
1366
|
snorlax.hp = 400;
|
|
1370
1367
|
try log.switched(.{ p2.ident(3), &snorlax });
|
|
1371
1368
|
expected = switch (endian) {
|
|
1372
|
-
|
|
1373
|
-
|
|
1369
|
+
big => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 100, 1, 144, 1, 144, 0 },
|
|
1370
|
+
little => &.{ N(ArgType.Switch), 0b1011, N(S1.Snorlax), 100, 144, 1, 144, 1, 0 },
|
|
1374
1371
|
};
|
|
1375
1372
|
try expectLog1(expected, buf[0..9]);
|
|
1376
1373
|
stream.reset();
|
|
@@ -1388,8 +1385,8 @@ test "|switch|" {
|
|
|
1388
1385
|
N(gen2.Gender.Female),
|
|
1389
1386
|
91,
|
|
1390
1387
|
} ++ switch (endian) {
|
|
1391
|
-
|
|
1392
|
-
|
|
1388
|
+
big => .{ 0, 200, 1, 144, par },
|
|
1389
|
+
little => .{ 200, 0, 144, 1, par },
|
|
1393
1390
|
});
|
|
1394
1391
|
try expectLog2(expected, buf[0..10]);
|
|
1395
1392
|
stream.reset();
|
|
@@ -1417,9 +1414,9 @@ test "|faint|" {
|
|
|
1417
1414
|
|
|
1418
1415
|
test "|turn|" {
|
|
1419
1416
|
try log.turn(.{42});
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1417
|
+
const expected = switch (endian) {
|
|
1418
|
+
big => &.{ N(ArgType.Turn), 0, 42, N(ArgType.None) },
|
|
1419
|
+
little => &.{ N(ArgType.Turn), 42, 0, N(ArgType.None) },
|
|
1423
1420
|
};
|
|
1424
1421
|
try expectLog1(expected, buf[0..4]);
|
|
1425
1422
|
stream.reset();
|
|
@@ -1443,8 +1440,8 @@ test "|-damage|" {
|
|
|
1443
1440
|
chansey.status = gen1.Status.slp(1);
|
|
1444
1441
|
try log.damage(.{ p2.ident(2), &chansey, .None });
|
|
1445
1442
|
var expected: []const u8 = switch (endian) {
|
|
1446
|
-
|
|
1447
|
-
|
|
1443
|
+
big => &.{ N(ArgType.Damage), 0b1010, 2, 100, 2, 191, 1, N(Damage.None) },
|
|
1444
|
+
little => &.{ N(ArgType.Damage), 0b1010, 100, 2, 191, 2, 1, N(Damage.None) },
|
|
1448
1445
|
};
|
|
1449
1446
|
try expectLog1(expected, buf[0..8]);
|
|
1450
1447
|
stream.reset();
|
|
@@ -1454,8 +1451,8 @@ test "|-damage|" {
|
|
|
1454
1451
|
chansey.status = 0;
|
|
1455
1452
|
try log.damage(.{ p2.ident(2), &chansey, .Confusion });
|
|
1456
1453
|
expected = switch (endian) {
|
|
1457
|
-
|
|
1458
|
-
|
|
1454
|
+
big => &.{ N(ArgType.Damage), 0b1010, 0, 100, 1, 0, 0, N(Damage.Confusion) },
|
|
1455
|
+
little => &.{ N(ArgType.Damage), 0b1010, 100, 0, 0, 1, 0, N(Damage.Confusion) },
|
|
1459
1456
|
};
|
|
1460
1457
|
try expectLog1(expected, buf[0..8]);
|
|
1461
1458
|
stream.reset();
|
|
@@ -1463,8 +1460,8 @@ test "|-damage|" {
|
|
|
1463
1460
|
chansey.status = gen1.Status.init(.PSN);
|
|
1464
1461
|
try log.damage(.{ p2.ident(2), &chansey, .RecoilOf, p1.ident(1) });
|
|
1465
1462
|
expected = switch (endian) {
|
|
1466
|
-
|
|
1467
|
-
|
|
1463
|
+
big => &.{ N(ArgType.Damage), 0b1010, 0, 100, 1, 0, 0b1000, N(Damage.RecoilOf), 1 },
|
|
1464
|
+
little => &.{ N(ArgType.Damage), 0b1010, 100, 0, 0, 1, 0b1000, N(Damage.RecoilOf), 1 },
|
|
1468
1465
|
};
|
|
1469
1466
|
try expectLog1(expected, buf[0..9]);
|
|
1470
1467
|
stream.reset();
|
|
@@ -1476,8 +1473,8 @@ test "|-heal|" {
|
|
|
1476
1473
|
chansey.status = gen1.Status.slp(1);
|
|
1477
1474
|
try log.heal(.{ p2.ident(2), &chansey, .None });
|
|
1478
1475
|
var expected: []const u8 = switch (endian) {
|
|
1479
|
-
|
|
1480
|
-
|
|
1476
|
+
big => &.{ N(ArgType.Heal), 0b1010, 2, 100, 2, 191, 1, N(Heal.None) },
|
|
1477
|
+
little => &.{ N(ArgType.Heal), 0b1010, 100, 2, 191, 2, 1, N(Heal.None) },
|
|
1481
1478
|
};
|
|
1482
1479
|
try expectLog1(expected, buf[0..8]);
|
|
1483
1480
|
stream.reset();
|
|
@@ -1487,16 +1484,16 @@ test "|-heal|" {
|
|
|
1487
1484
|
chansey.status = 0;
|
|
1488
1485
|
try log.heal(.{ p2.ident(2), &chansey, .Silent });
|
|
1489
1486
|
expected = switch (endian) {
|
|
1490
|
-
|
|
1491
|
-
|
|
1487
|
+
big => &.{ N(ArgType.Heal), 0b1010, 0, 100, 1, 0, 0, N(Heal.Silent) },
|
|
1488
|
+
little => &.{ N(ArgType.Heal), 0b1010, 100, 0, 0, 1, 0, N(Heal.Silent) },
|
|
1492
1489
|
};
|
|
1493
1490
|
try expectLog1(expected, buf[0..8]);
|
|
1494
1491
|
stream.reset();
|
|
1495
1492
|
|
|
1496
1493
|
try log.heal(.{ p2.ident(2), &chansey, .Drain, p1.ident(1) });
|
|
1497
1494
|
expected = switch (endian) {
|
|
1498
|
-
|
|
1499
|
-
|
|
1495
|
+
big => &.{ N(ArgType.Heal), 0b1010, 0, 100, 1, 0, 0, N(Heal.Drain), 1 },
|
|
1496
|
+
little => &.{ N(ArgType.Heal), 0b1010, 100, 0, 0, 1, 0, N(Heal.Drain), 1 },
|
|
1500
1497
|
};
|
|
1501
1498
|
try expectLog1(expected, buf[0..9]);
|
|
1502
1499
|
stream.reset();
|
|
@@ -1739,8 +1736,8 @@ test "|drag|" {
|
|
|
1739
1736
|
N(gen2.Gender.Female),
|
|
1740
1737
|
91,
|
|
1741
1738
|
} ++ switch (endian) {
|
|
1742
|
-
|
|
1743
|
-
|
|
1739
|
+
big => .{ 0, 200, 1, 144, par },
|
|
1740
|
+
little => .{ 200, 0, 144, 1, par },
|
|
1744
1741
|
});
|
|
1745
1742
|
try expectLog2(expected, buf[0..10]);
|
|
1746
1743
|
stream.reset();
|
|
@@ -1772,9 +1769,9 @@ test "|-sethp|" {
|
|
|
1772
1769
|
var blissey = gen2.helpers.Pokemon.init(.{ .species = .Blissey, .moves = &.{.PainSplit} });
|
|
1773
1770
|
blissey.hp = 612;
|
|
1774
1771
|
try log.sethp(.{ p2.ident(2), &blissey, .Silent });
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1772
|
+
const expected: []const u8 = switch (endian) {
|
|
1773
|
+
big => &.{ N(ArgType.SetHP), 0b1010, 2, 100, 2, 201, 0, N(SetHP.Silent) },
|
|
1774
|
+
little => &.{ N(ArgType.SetHP), 0b1010, 100, 2, 201, 2, 0, N(SetHP.Silent) },
|
|
1778
1775
|
};
|
|
1779
1776
|
try expectLog2(expected, buf[0..8]);
|
|
1780
1777
|
stream.reset();
|