@pkmn/engine 0.1.0-dev.f3aaee39 → 0.1.0-dev.f3b63b86
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 +77 -23
- package/build/pkg/addon/browser.d.ts +3 -0
- package/build/pkg/addon/browser.js +47 -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 +110 -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 +26 -4
- package/build/pkg/addon.js +39 -71
- package/build/pkg/addon.js.map +1 -1
- package/build/pkg/data/ids.json +12 -12
- package/build/pkg/data/layout.json +17 -4
- package/build/pkg/data/protocol.json +84 -13
- package/build/pkg/data.d.ts +27 -5
- package/build/pkg/data.js.map +1 -1
- package/build/pkg/gen1.d.ts +15 -18
- package/build/pkg/gen1.js +30 -21
- package/build/pkg/gen1.js.map +1 -1
- package/build/pkg/index.d.ts +42 -91
- package/build/pkg/index.js +23 -70
- package/build/pkg/index.js.map +1 -1
- package/build/pkg/protocol.d.ts +20 -1
- package/build/pkg/protocol.js +123 -102
- package/build/pkg/protocol.js.map +1 -1
- package/build/tools/debug.js +69 -74
- package/build/tools/debug.js.map +1 -1
- package/build/tools/display/debug.jsx +152 -0
- package/build/tools/display/debug.jsx.map +1 -0
- package/build/tools/display/index.js +152 -0
- package/build/tools/display/index.js.map +1 -0
- package/build/tools/display/ui.jsx +359 -0
- package/build/tools/display/ui.jsx.map +1 -0
- package/build/tools/display/util.js +33 -0
- package/build/tools/display/util.js.map +1 -0
- package/build.zig +273 -120
- package/package.json +64 -123
- package/src/bin/install-pkmn-engine +47 -21
- package/src/bin/pkmn-debug +1 -1
- package/src/lib/bindings/c.zig +200 -0
- package/src/lib/{binding → bindings}/node.zig +15 -32
- package/src/lib/bindings/wasm.zig +50 -0
- package/src/lib/common/array.zig +70 -0
- package/src/lib/common/data.zig +12 -24
- package/src/lib/common/debug.zig +32 -11
- package/src/lib/common/js.zig +3 -7
- package/src/lib/common/optional.zig +19 -18
- package/src/lib/common/options.zig +6 -0
- package/src/lib/common/protocol.zig +919 -430
- package/src/lib/common/rational.zig +341 -254
- package/src/lib/common/rng.zig +22 -15
- package/src/lib/common/util.zig +33 -1
- package/src/lib/gen1/calc.zig +706 -177
- package/src/lib/gen1/chance.zig +428 -302
- package/src/lib/gen1/data/moves.zig +193 -183
- package/src/lib/gen1/data/species.zig +4 -6
- package/src/lib/gen1/data/types.zig +9 -10
- package/src/lib/gen1/data.zig +60 -75
- package/src/lib/gen1/helpers.zig +90 -563
- package/src/lib/gen1/mechanics.zig +682 -600
- package/src/lib/gen2/calc.zig +150 -0
- package/src/lib/gen2/chance.zig +896 -0
- package/src/lib/gen2/data/items.zig +13 -21
- package/src/lib/gen2/data/moves.zig +664 -572
- package/src/lib/gen2/data/species.zig +2 -4
- package/src/lib/gen2/data/types.zig +139 -34
- package/src/lib/gen2/data.zig +121 -96
- package/src/lib/gen2/generated.zig +801 -0
- package/src/lib/gen2/helpers.zig +53 -38
- package/src/lib/gen2/mechanics.zig +3580 -29
- package/src/lib/napi.h +2 -0
- package/src/lib/node.zig +14 -0
- package/src/lib/pkmn.zig +125 -29
- package/src/lib/wasm.zig +13 -0
- package/src/tools/display/dom.ts +93 -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 -892
- package/src/lib/gen2/README.md +0 -308
- package/src/test/display/pkmn.html.tmpl +0 -368
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//! Code generated by `tools/generate` - manual edits will be overwritten
|
|
2
|
-
|
|
3
|
-
const std = @import("std");
|
|
1
|
+
//! Code generated by `tools/generate` - manual edits will be overwritten.
|
|
4
2
|
|
|
5
3
|
const gen2 = @import("../../gen2/data.zig");
|
|
4
|
+
const rng = @import("../../common/rng.zig");
|
|
5
|
+
const std = @import("std");
|
|
6
6
|
|
|
7
7
|
const assert = std.debug.assert;
|
|
8
|
-
|
|
8
|
+
const percent = rng.Gen12.percent;
|
|
9
9
|
const Type = gen2.Type;
|
|
10
10
|
|
|
11
11
|
/// Representation of a Generation II Pokémon move.
|
|
@@ -271,17 +271,35 @@ pub const Move = enum(u8) {
|
|
|
271
271
|
bp: u8,
|
|
272
272
|
/// The move's type.
|
|
273
273
|
type: Type,
|
|
274
|
-
/// The move's base PP.
|
|
275
|
-
pp: u8,
|
|
276
274
|
/// The move's accuracy percentage.
|
|
277
275
|
accuracy: u8,
|
|
278
276
|
/// The move's targeting behavior.
|
|
279
277
|
target: Target,
|
|
280
278
|
/// The chance of the move's secondary effect occurring.
|
|
281
279
|
chance: u8 = 0,
|
|
280
|
+
/// The priority of the move.
|
|
281
|
+
priority: i8 = 0,
|
|
282
|
+
/// Miscellaneous extra data/flags.
|
|
283
|
+
extra: Extra = .{},
|
|
284
|
+
|
|
285
|
+
/// Miscellaneous extra move related data/flags.
|
|
286
|
+
const Extra = packed struct(u8) {
|
|
287
|
+
/// Whether this move can be called via Metronome.
|
|
288
|
+
metronome: bool = true,
|
|
289
|
+
/// Whether this move can be called via Sleep Talk.
|
|
290
|
+
sleep_talk: bool = true,
|
|
291
|
+
/// Whether this move is considered to be "continuous".
|
|
292
|
+
continuous: bool = false,
|
|
293
|
+
/// Whether this move can hit a flying target.
|
|
294
|
+
flying: bool = false,
|
|
295
|
+
/// Whether this move can hit an underground target.
|
|
296
|
+
underground: bool = false,
|
|
297
|
+
/// Protocol reason offset associated with this move.
|
|
298
|
+
protocol: u3 = 0,
|
|
299
|
+
};
|
|
282
300
|
|
|
283
301
|
comptime {
|
|
284
|
-
assert(@sizeOf(Data) ==
|
|
302
|
+
assert(@sizeOf(Data) == 8);
|
|
285
303
|
}
|
|
286
304
|
};
|
|
287
305
|
|
|
@@ -291,8 +309,7 @@ pub const Move = enum(u8) {
|
|
|
291
309
|
.effect = .None,
|
|
292
310
|
.bp = 40,
|
|
293
311
|
.type = .Normal,
|
|
294
|
-
.
|
|
295
|
-
.accuracy = 100,
|
|
312
|
+
.accuracy = percent(100),
|
|
296
313
|
.target = .Other,
|
|
297
314
|
},
|
|
298
315
|
// KarateChop
|
|
@@ -300,8 +317,7 @@ pub const Move = enum(u8) {
|
|
|
300
317
|
.effect = .HighCritical,
|
|
301
318
|
.bp = 50,
|
|
302
319
|
.type = .Fighting,
|
|
303
|
-
.
|
|
304
|
-
.accuracy = 100,
|
|
320
|
+
.accuracy = percent(100),
|
|
305
321
|
.target = .Other,
|
|
306
322
|
},
|
|
307
323
|
// DoubleSlap
|
|
@@ -309,8 +325,7 @@ pub const Move = enum(u8) {
|
|
|
309
325
|
.effect = .MultiHit,
|
|
310
326
|
.bp = 15,
|
|
311
327
|
.type = .Normal,
|
|
312
|
-
.
|
|
313
|
-
.accuracy = 85,
|
|
328
|
+
.accuracy = percent(85),
|
|
314
329
|
.target = .Other,
|
|
315
330
|
},
|
|
316
331
|
// CometPunch
|
|
@@ -318,8 +333,7 @@ pub const Move = enum(u8) {
|
|
|
318
333
|
.effect = .MultiHit,
|
|
319
334
|
.bp = 18,
|
|
320
335
|
.type = .Normal,
|
|
321
|
-
.
|
|
322
|
-
.accuracy = 85,
|
|
336
|
+
.accuracy = percent(85),
|
|
323
337
|
.target = .Other,
|
|
324
338
|
},
|
|
325
339
|
// MegaPunch
|
|
@@ -327,8 +341,7 @@ pub const Move = enum(u8) {
|
|
|
327
341
|
.effect = .None,
|
|
328
342
|
.bp = 80,
|
|
329
343
|
.type = .Normal,
|
|
330
|
-
.
|
|
331
|
-
.accuracy = 85,
|
|
344
|
+
.accuracy = percent(85),
|
|
332
345
|
.target = .Other,
|
|
333
346
|
},
|
|
334
347
|
// PayDay
|
|
@@ -336,8 +349,7 @@ pub const Move = enum(u8) {
|
|
|
336
349
|
.effect = .PayDay,
|
|
337
350
|
.bp = 40,
|
|
338
351
|
.type = .Normal,
|
|
339
|
-
.
|
|
340
|
-
.accuracy = 100,
|
|
352
|
+
.accuracy = percent(100),
|
|
341
353
|
.target = .Other,
|
|
342
354
|
},
|
|
343
355
|
// FirePunch
|
|
@@ -345,38 +357,34 @@ pub const Move = enum(u8) {
|
|
|
345
357
|
.effect = .BurnChance,
|
|
346
358
|
.bp = 75,
|
|
347
359
|
.type = .Fire,
|
|
348
|
-
.
|
|
349
|
-
.accuracy = 100,
|
|
360
|
+
.accuracy = percent(100),
|
|
350
361
|
.target = .Other,
|
|
351
|
-
.chance =
|
|
362
|
+
.chance = percent(10),
|
|
352
363
|
},
|
|
353
364
|
// IcePunch
|
|
354
365
|
.{
|
|
355
366
|
.effect = .FreezeChance,
|
|
356
367
|
.bp = 75,
|
|
357
368
|
.type = .Ice,
|
|
358
|
-
.
|
|
359
|
-
.accuracy = 100,
|
|
369
|
+
.accuracy = percent(100),
|
|
360
370
|
.target = .Other,
|
|
361
|
-
.chance =
|
|
371
|
+
.chance = percent(10),
|
|
362
372
|
},
|
|
363
373
|
// ThunderPunch
|
|
364
374
|
.{
|
|
365
375
|
.effect = .ParalyzeChance,
|
|
366
376
|
.bp = 75,
|
|
367
377
|
.type = .Electric,
|
|
368
|
-
.
|
|
369
|
-
.accuracy = 100,
|
|
378
|
+
.accuracy = percent(100),
|
|
370
379
|
.target = .Other,
|
|
371
|
-
.chance =
|
|
380
|
+
.chance = percent(10),
|
|
372
381
|
},
|
|
373
382
|
// Scratch
|
|
374
383
|
.{
|
|
375
384
|
.effect = .None,
|
|
376
385
|
.bp = 40,
|
|
377
386
|
.type = .Normal,
|
|
378
|
-
.
|
|
379
|
-
.accuracy = 100,
|
|
387
|
+
.accuracy = percent(100),
|
|
380
388
|
.target = .Other,
|
|
381
389
|
},
|
|
382
390
|
// ViseGrip
|
|
@@ -384,8 +392,7 @@ pub const Move = enum(u8) {
|
|
|
384
392
|
.effect = .None,
|
|
385
393
|
.bp = 55,
|
|
386
394
|
.type = .Normal,
|
|
387
|
-
.
|
|
388
|
-
.accuracy = 100,
|
|
395
|
+
.accuracy = percent(100),
|
|
389
396
|
.target = .Other,
|
|
390
397
|
},
|
|
391
398
|
// Guillotine
|
|
@@ -393,8 +400,7 @@ pub const Move = enum(u8) {
|
|
|
393
400
|
.effect = .OHKO,
|
|
394
401
|
.bp = 0,
|
|
395
402
|
.type = .Normal,
|
|
396
|
-
.
|
|
397
|
-
.accuracy = 30,
|
|
403
|
+
.accuracy = percent(30),
|
|
398
404
|
.target = .Other,
|
|
399
405
|
},
|
|
400
406
|
// RazorWind
|
|
@@ -402,17 +408,16 @@ pub const Move = enum(u8) {
|
|
|
402
408
|
.effect = .RazorWind,
|
|
403
409
|
.bp = 80,
|
|
404
410
|
.type = .Normal,
|
|
405
|
-
.
|
|
406
|
-
.accuracy = 75,
|
|
411
|
+
.accuracy = percent(75),
|
|
407
412
|
.target = .Foes,
|
|
413
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
408
414
|
},
|
|
409
415
|
// SwordsDance
|
|
410
416
|
.{
|
|
411
417
|
.effect = .AttackUp2,
|
|
412
418
|
.bp = 0,
|
|
413
419
|
.type = .Normal,
|
|
414
|
-
.
|
|
415
|
-
.accuracy = 100,
|
|
420
|
+
.accuracy = percent(100),
|
|
416
421
|
.target = .Self,
|
|
417
422
|
},
|
|
418
423
|
// Cut
|
|
@@ -420,8 +425,7 @@ pub const Move = enum(u8) {
|
|
|
420
425
|
.effect = .None,
|
|
421
426
|
.bp = 50,
|
|
422
427
|
.type = .Normal,
|
|
423
|
-
.
|
|
424
|
-
.accuracy = 95,
|
|
428
|
+
.accuracy = percent(95),
|
|
425
429
|
.target = .Other,
|
|
426
430
|
},
|
|
427
431
|
// Gust
|
|
@@ -429,17 +433,16 @@ pub const Move = enum(u8) {
|
|
|
429
433
|
.effect = .Gust,
|
|
430
434
|
.bp = 40,
|
|
431
435
|
.type = .Flying,
|
|
432
|
-
.
|
|
433
|
-
.accuracy = 100,
|
|
436
|
+
.accuracy = percent(100),
|
|
434
437
|
.target = .Any,
|
|
438
|
+
.extra = .{ .flying = true },
|
|
435
439
|
},
|
|
436
440
|
// WingAttack
|
|
437
441
|
.{
|
|
438
442
|
.effect = .None,
|
|
439
443
|
.bp = 60,
|
|
440
444
|
.type = .Flying,
|
|
441
|
-
.
|
|
442
|
-
.accuracy = 100,
|
|
445
|
+
.accuracy = percent(100),
|
|
443
446
|
.target = .Any,
|
|
444
447
|
},
|
|
445
448
|
// Whirlwind
|
|
@@ -447,35 +450,35 @@ pub const Move = enum(u8) {
|
|
|
447
450
|
.effect = .ForceSwitch,
|
|
448
451
|
.bp = 0,
|
|
449
452
|
.type = .Normal,
|
|
450
|
-
.
|
|
451
|
-
.accuracy = 100,
|
|
453
|
+
.accuracy = percent(100),
|
|
452
454
|
.target = .Other,
|
|
455
|
+
.priority = -1,
|
|
456
|
+
.extra = .{ .flying = true },
|
|
453
457
|
},
|
|
454
458
|
// Fly
|
|
455
459
|
.{
|
|
456
|
-
.effect = .
|
|
460
|
+
.effect = .FlyDig,
|
|
457
461
|
.bp = 70,
|
|
458
462
|
.type = .Flying,
|
|
459
|
-
.
|
|
460
|
-
.accuracy = 95,
|
|
463
|
+
.accuracy = percent(95),
|
|
461
464
|
.target = .Any,
|
|
465
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
462
466
|
},
|
|
463
467
|
// Bind
|
|
464
468
|
.{
|
|
465
469
|
.effect = .Binding,
|
|
466
470
|
.bp = 15,
|
|
467
471
|
.type = .Normal,
|
|
468
|
-
.
|
|
469
|
-
.accuracy = 75,
|
|
472
|
+
.accuracy = percent(75),
|
|
470
473
|
.target = .Other,
|
|
474
|
+
.extra = .{ .protocol = 1 },
|
|
471
475
|
},
|
|
472
476
|
// Slam
|
|
473
477
|
.{
|
|
474
478
|
.effect = .None,
|
|
475
479
|
.bp = 80,
|
|
476
480
|
.type = .Normal,
|
|
477
|
-
.
|
|
478
|
-
.accuracy = 75,
|
|
481
|
+
.accuracy = percent(75),
|
|
479
482
|
.target = .Other,
|
|
480
483
|
},
|
|
481
484
|
// VineWhip
|
|
@@ -483,8 +486,7 @@ pub const Move = enum(u8) {
|
|
|
483
486
|
.effect = .None,
|
|
484
487
|
.bp = 35,
|
|
485
488
|
.type = .Grass,
|
|
486
|
-
.
|
|
487
|
-
.accuracy = 100,
|
|
489
|
+
.accuracy = percent(100),
|
|
488
490
|
.target = .Other,
|
|
489
491
|
},
|
|
490
492
|
// Stomp
|
|
@@ -492,18 +494,16 @@ pub const Move = enum(u8) {
|
|
|
492
494
|
.effect = .Stomp,
|
|
493
495
|
.bp = 65,
|
|
494
496
|
.type = .Normal,
|
|
495
|
-
.
|
|
496
|
-
.accuracy = 100,
|
|
497
|
+
.accuracy = percent(100),
|
|
497
498
|
.target = .Other,
|
|
498
|
-
.chance =
|
|
499
|
+
.chance = percent(30),
|
|
499
500
|
},
|
|
500
501
|
// DoubleKick
|
|
501
502
|
.{
|
|
502
503
|
.effect = .DoubleHit,
|
|
503
504
|
.bp = 30,
|
|
504
505
|
.type = .Fighting,
|
|
505
|
-
.
|
|
506
|
-
.accuracy = 100,
|
|
506
|
+
.accuracy = percent(100),
|
|
507
507
|
.target = .Other,
|
|
508
508
|
},
|
|
509
509
|
// MegaKick
|
|
@@ -511,8 +511,7 @@ pub const Move = enum(u8) {
|
|
|
511
511
|
.effect = .None,
|
|
512
512
|
.bp = 120,
|
|
513
513
|
.type = .Normal,
|
|
514
|
-
.
|
|
515
|
-
.accuracy = 75,
|
|
514
|
+
.accuracy = percent(75),
|
|
516
515
|
.target = .Other,
|
|
517
516
|
},
|
|
518
517
|
// JumpKick
|
|
@@ -520,8 +519,7 @@ pub const Move = enum(u8) {
|
|
|
520
519
|
.effect = .JumpKick,
|
|
521
520
|
.bp = 70,
|
|
522
521
|
.type = .Fighting,
|
|
523
|
-
.
|
|
524
|
-
.accuracy = 95,
|
|
522
|
+
.accuracy = percent(95),
|
|
525
523
|
.target = .Other,
|
|
526
524
|
},
|
|
527
525
|
// RollingKick
|
|
@@ -529,18 +527,16 @@ pub const Move = enum(u8) {
|
|
|
529
527
|
.effect = .FlinchChance,
|
|
530
528
|
.bp = 60,
|
|
531
529
|
.type = .Fighting,
|
|
532
|
-
.
|
|
533
|
-
.accuracy = 85,
|
|
530
|
+
.accuracy = percent(85),
|
|
534
531
|
.target = .Other,
|
|
535
|
-
.chance =
|
|
532
|
+
.chance = percent(30),
|
|
536
533
|
},
|
|
537
534
|
// SandAttack
|
|
538
535
|
.{
|
|
539
536
|
.effect = .AccuracyDown1,
|
|
540
537
|
.bp = 0,
|
|
541
538
|
.type = .Ground,
|
|
542
|
-
.
|
|
543
|
-
.accuracy = 100,
|
|
539
|
+
.accuracy = percent(100),
|
|
544
540
|
.target = .Other,
|
|
545
541
|
},
|
|
546
542
|
// Headbutt
|
|
@@ -548,18 +544,16 @@ pub const Move = enum(u8) {
|
|
|
548
544
|
.effect = .FlinchChance,
|
|
549
545
|
.bp = 70,
|
|
550
546
|
.type = .Normal,
|
|
551
|
-
.
|
|
552
|
-
.accuracy = 100,
|
|
547
|
+
.accuracy = percent(100),
|
|
553
548
|
.target = .Other,
|
|
554
|
-
.chance =
|
|
549
|
+
.chance = percent(30),
|
|
555
550
|
},
|
|
556
551
|
// HornAttack
|
|
557
552
|
.{
|
|
558
553
|
.effect = .None,
|
|
559
554
|
.bp = 65,
|
|
560
555
|
.type = .Normal,
|
|
561
|
-
.
|
|
562
|
-
.accuracy = 100,
|
|
556
|
+
.accuracy = percent(100),
|
|
563
557
|
.target = .Other,
|
|
564
558
|
},
|
|
565
559
|
// FuryAttack
|
|
@@ -567,8 +561,7 @@ pub const Move = enum(u8) {
|
|
|
567
561
|
.effect = .MultiHit,
|
|
568
562
|
.bp = 15,
|
|
569
563
|
.type = .Normal,
|
|
570
|
-
.
|
|
571
|
-
.accuracy = 85,
|
|
564
|
+
.accuracy = percent(85),
|
|
572
565
|
.target = .Other,
|
|
573
566
|
},
|
|
574
567
|
// HornDrill
|
|
@@ -576,8 +569,7 @@ pub const Move = enum(u8) {
|
|
|
576
569
|
.effect = .OHKO,
|
|
577
570
|
.bp = 0,
|
|
578
571
|
.type = .Normal,
|
|
579
|
-
.
|
|
580
|
-
.accuracy = 30,
|
|
572
|
+
.accuracy = percent(30),
|
|
581
573
|
.target = .Other,
|
|
582
574
|
},
|
|
583
575
|
// Tackle
|
|
@@ -585,8 +577,7 @@ pub const Move = enum(u8) {
|
|
|
585
577
|
.effect = .None,
|
|
586
578
|
.bp = 35,
|
|
587
579
|
.type = .Normal,
|
|
588
|
-
.
|
|
589
|
-
.accuracy = 95,
|
|
580
|
+
.accuracy = percent(95),
|
|
590
581
|
.target = .Other,
|
|
591
582
|
},
|
|
592
583
|
// BodySlam
|
|
@@ -594,27 +585,25 @@ pub const Move = enum(u8) {
|
|
|
594
585
|
.effect = .ParalyzeChance,
|
|
595
586
|
.bp = 85,
|
|
596
587
|
.type = .Normal,
|
|
597
|
-
.
|
|
598
|
-
.accuracy = 100,
|
|
588
|
+
.accuracy = percent(100),
|
|
599
589
|
.target = .Other,
|
|
600
|
-
.chance =
|
|
590
|
+
.chance = percent(30),
|
|
601
591
|
},
|
|
602
592
|
// Wrap
|
|
603
593
|
.{
|
|
604
594
|
.effect = .Binding,
|
|
605
595
|
.bp = 15,
|
|
606
596
|
.type = .Normal,
|
|
607
|
-
.
|
|
608
|
-
.accuracy = 85,
|
|
597
|
+
.accuracy = percent(85),
|
|
609
598
|
.target = .Other,
|
|
599
|
+
.extra = .{ .protocol = 2 },
|
|
610
600
|
},
|
|
611
601
|
// TakeDown
|
|
612
602
|
.{
|
|
613
603
|
.effect = .Recoil,
|
|
614
604
|
.bp = 90,
|
|
615
605
|
.type = .Normal,
|
|
616
|
-
.
|
|
617
|
-
.accuracy = 85,
|
|
606
|
+
.accuracy = percent(85),
|
|
618
607
|
.target = .Other,
|
|
619
608
|
},
|
|
620
609
|
// Thrash
|
|
@@ -622,17 +611,16 @@ pub const Move = enum(u8) {
|
|
|
622
611
|
.effect = .Thrashing,
|
|
623
612
|
.bp = 90,
|
|
624
613
|
.type = .Normal,
|
|
625
|
-
.
|
|
626
|
-
.accuracy = 100,
|
|
614
|
+
.accuracy = percent(100),
|
|
627
615
|
.target = .RandomFoe,
|
|
616
|
+
.extra = .{ .continuous = true },
|
|
628
617
|
},
|
|
629
618
|
// DoubleEdge
|
|
630
619
|
.{
|
|
631
620
|
.effect = .Recoil,
|
|
632
621
|
.bp = 120,
|
|
633
622
|
.type = .Normal,
|
|
634
|
-
.
|
|
635
|
-
.accuracy = 100,
|
|
623
|
+
.accuracy = percent(100),
|
|
636
624
|
.target = .Other,
|
|
637
625
|
},
|
|
638
626
|
// TailWhip
|
|
@@ -640,8 +628,7 @@ pub const Move = enum(u8) {
|
|
|
640
628
|
.effect = .DefenseDown1,
|
|
641
629
|
.bp = 0,
|
|
642
630
|
.type = .Normal,
|
|
643
|
-
.
|
|
644
|
-
.accuracy = 100,
|
|
631
|
+
.accuracy = percent(100),
|
|
645
632
|
.target = .Foes,
|
|
646
633
|
},
|
|
647
634
|
// PoisonSting
|
|
@@ -649,28 +636,25 @@ pub const Move = enum(u8) {
|
|
|
649
636
|
.effect = .PoisonChance,
|
|
650
637
|
.bp = 15,
|
|
651
638
|
.type = .Poison,
|
|
652
|
-
.
|
|
653
|
-
.accuracy = 100,
|
|
639
|
+
.accuracy = percent(100),
|
|
654
640
|
.target = .Other,
|
|
655
|
-
.chance =
|
|
641
|
+
.chance = percent(30),
|
|
656
642
|
},
|
|
657
643
|
// Twineedle
|
|
658
644
|
.{
|
|
659
645
|
.effect = .Twineedle,
|
|
660
646
|
.bp = 25,
|
|
661
647
|
.type = .Bug,
|
|
662
|
-
.
|
|
663
|
-
.accuracy = 100,
|
|
648
|
+
.accuracy = percent(100),
|
|
664
649
|
.target = .Other,
|
|
665
|
-
.chance =
|
|
650
|
+
.chance = percent(20),
|
|
666
651
|
},
|
|
667
652
|
// PinMissile
|
|
668
653
|
.{
|
|
669
654
|
.effect = .MultiHit,
|
|
670
655
|
.bp = 14,
|
|
671
656
|
.type = .Bug,
|
|
672
|
-
.
|
|
673
|
-
.accuracy = 85,
|
|
657
|
+
.accuracy = percent(85),
|
|
674
658
|
.target = .Other,
|
|
675
659
|
},
|
|
676
660
|
// Leer
|
|
@@ -678,8 +662,7 @@ pub const Move = enum(u8) {
|
|
|
678
662
|
.effect = .DefenseDown1,
|
|
679
663
|
.bp = 0,
|
|
680
664
|
.type = .Normal,
|
|
681
|
-
.
|
|
682
|
-
.accuracy = 100,
|
|
665
|
+
.accuracy = percent(100),
|
|
683
666
|
.target = .Foes,
|
|
684
667
|
},
|
|
685
668
|
// Bite
|
|
@@ -687,18 +670,16 @@ pub const Move = enum(u8) {
|
|
|
687
670
|
.effect = .FlinchChance,
|
|
688
671
|
.bp = 60,
|
|
689
672
|
.type = .Dark,
|
|
690
|
-
.
|
|
691
|
-
.accuracy = 100,
|
|
673
|
+
.accuracy = percent(100),
|
|
692
674
|
.target = .Other,
|
|
693
|
-
.chance =
|
|
675
|
+
.chance = percent(30),
|
|
694
676
|
},
|
|
695
677
|
// Growl
|
|
696
678
|
.{
|
|
697
679
|
.effect = .AttackDown1,
|
|
698
680
|
.bp = 0,
|
|
699
681
|
.type = .Normal,
|
|
700
|
-
.
|
|
701
|
-
.accuracy = 100,
|
|
682
|
+
.accuracy = percent(100),
|
|
702
683
|
.target = .Foes,
|
|
703
684
|
},
|
|
704
685
|
// Roar
|
|
@@ -706,17 +687,16 @@ pub const Move = enum(u8) {
|
|
|
706
687
|
.effect = .ForceSwitch,
|
|
707
688
|
.bp = 0,
|
|
708
689
|
.type = .Normal,
|
|
709
|
-
.
|
|
710
|
-
.accuracy = 100,
|
|
690
|
+
.accuracy = percent(100),
|
|
711
691
|
.target = .Other,
|
|
692
|
+
.priority = -1,
|
|
712
693
|
},
|
|
713
694
|
// Sing
|
|
714
695
|
.{
|
|
715
696
|
.effect = .Sleep,
|
|
716
697
|
.bp = 0,
|
|
717
698
|
.type = .Normal,
|
|
718
|
-
.
|
|
719
|
-
.accuracy = 55,
|
|
699
|
+
.accuracy = percent(55),
|
|
720
700
|
.target = .Other,
|
|
721
701
|
},
|
|
722
702
|
// Supersonic
|
|
@@ -724,8 +704,7 @@ pub const Move = enum(u8) {
|
|
|
724
704
|
.effect = .Confusion,
|
|
725
705
|
.bp = 0,
|
|
726
706
|
.type = .Normal,
|
|
727
|
-
.
|
|
728
|
-
.accuracy = 55,
|
|
707
|
+
.accuracy = percent(55),
|
|
729
708
|
.target = .Other,
|
|
730
709
|
},
|
|
731
710
|
// SonicBoom
|
|
@@ -733,8 +712,7 @@ pub const Move = enum(u8) {
|
|
|
733
712
|
.effect = .FixedDamage,
|
|
734
713
|
.bp = 0,
|
|
735
714
|
.type = .Normal,
|
|
736
|
-
.
|
|
737
|
-
.accuracy = 90,
|
|
715
|
+
.accuracy = percent(90),
|
|
738
716
|
.target = .Other,
|
|
739
717
|
},
|
|
740
718
|
// Disable
|
|
@@ -742,8 +720,7 @@ pub const Move = enum(u8) {
|
|
|
742
720
|
.effect = .Disable,
|
|
743
721
|
.bp = 0,
|
|
744
722
|
.type = .Normal,
|
|
745
|
-
.
|
|
746
|
-
.accuracy = 55,
|
|
723
|
+
.accuracy = percent(55),
|
|
747
724
|
.target = .Other,
|
|
748
725
|
},
|
|
749
726
|
// Acid
|
|
@@ -751,38 +728,34 @@ pub const Move = enum(u8) {
|
|
|
751
728
|
.effect = .DefenseDownChance,
|
|
752
729
|
.bp = 40,
|
|
753
730
|
.type = .Poison,
|
|
754
|
-
.
|
|
755
|
-
.accuracy = 100,
|
|
731
|
+
.accuracy = percent(100),
|
|
756
732
|
.target = .Foes,
|
|
757
|
-
.chance =
|
|
733
|
+
.chance = percent(10),
|
|
758
734
|
},
|
|
759
735
|
// Ember
|
|
760
736
|
.{
|
|
761
737
|
.effect = .BurnChance,
|
|
762
738
|
.bp = 40,
|
|
763
739
|
.type = .Fire,
|
|
764
|
-
.
|
|
765
|
-
.accuracy = 100,
|
|
740
|
+
.accuracy = percent(100),
|
|
766
741
|
.target = .Other,
|
|
767
|
-
.chance =
|
|
742
|
+
.chance = percent(10),
|
|
768
743
|
},
|
|
769
744
|
// Flamethrower
|
|
770
745
|
.{
|
|
771
746
|
.effect = .BurnChance,
|
|
772
747
|
.bp = 95,
|
|
773
748
|
.type = .Fire,
|
|
774
|
-
.
|
|
775
|
-
.accuracy = 100,
|
|
749
|
+
.accuracy = percent(100),
|
|
776
750
|
.target = .Other,
|
|
777
|
-
.chance =
|
|
751
|
+
.chance = percent(10),
|
|
778
752
|
},
|
|
779
753
|
// Mist
|
|
780
754
|
.{
|
|
781
755
|
.effect = .Mist,
|
|
782
756
|
.bp = 0,
|
|
783
757
|
.type = .Ice,
|
|
784
|
-
.
|
|
785
|
-
.accuracy = 100,
|
|
758
|
+
.accuracy = percent(100),
|
|
786
759
|
.target = .Self,
|
|
787
760
|
},
|
|
788
761
|
// WaterGun
|
|
@@ -790,8 +763,7 @@ pub const Move = enum(u8) {
|
|
|
790
763
|
.effect = .None,
|
|
791
764
|
.bp = 40,
|
|
792
765
|
.type = .Water,
|
|
793
|
-
.
|
|
794
|
-
.accuracy = 100,
|
|
766
|
+
.accuracy = percent(100),
|
|
795
767
|
.target = .Other,
|
|
796
768
|
},
|
|
797
769
|
// HydroPump
|
|
@@ -799,8 +771,7 @@ pub const Move = enum(u8) {
|
|
|
799
771
|
.effect = .None,
|
|
800
772
|
.bp = 120,
|
|
801
773
|
.type = .Water,
|
|
802
|
-
.
|
|
803
|
-
.accuracy = 80,
|
|
774
|
+
.accuracy = percent(80),
|
|
804
775
|
.target = .Other,
|
|
805
776
|
},
|
|
806
777
|
// Surf
|
|
@@ -808,8 +779,7 @@ pub const Move = enum(u8) {
|
|
|
808
779
|
.effect = .None,
|
|
809
780
|
.bp = 95,
|
|
810
781
|
.type = .Water,
|
|
811
|
-
.
|
|
812
|
-
.accuracy = 100,
|
|
782
|
+
.accuracy = percent(100),
|
|
813
783
|
.target = .Foes,
|
|
814
784
|
},
|
|
815
785
|
// IceBeam
|
|
@@ -817,58 +787,52 @@ pub const Move = enum(u8) {
|
|
|
817
787
|
.effect = .FreezeChance,
|
|
818
788
|
.bp = 95,
|
|
819
789
|
.type = .Ice,
|
|
820
|
-
.
|
|
821
|
-
.accuracy = 100,
|
|
790
|
+
.accuracy = percent(100),
|
|
822
791
|
.target = .Other,
|
|
823
|
-
.chance =
|
|
792
|
+
.chance = percent(10),
|
|
824
793
|
},
|
|
825
794
|
// Blizzard
|
|
826
795
|
.{
|
|
827
796
|
.effect = .FreezeChance,
|
|
828
797
|
.bp = 120,
|
|
829
798
|
.type = .Ice,
|
|
830
|
-
.
|
|
831
|
-
.accuracy = 70,
|
|
799
|
+
.accuracy = percent(70),
|
|
832
800
|
.target = .Foes,
|
|
833
|
-
.chance =
|
|
801
|
+
.chance = percent(10),
|
|
834
802
|
},
|
|
835
803
|
// Psybeam
|
|
836
804
|
.{
|
|
837
805
|
.effect = .ConfusionChance,
|
|
838
806
|
.bp = 65,
|
|
839
807
|
.type = .Psychic,
|
|
840
|
-
.
|
|
841
|
-
.accuracy = 100,
|
|
808
|
+
.accuracy = percent(100),
|
|
842
809
|
.target = .Other,
|
|
843
|
-
.chance =
|
|
810
|
+
.chance = percent(10),
|
|
844
811
|
},
|
|
845
812
|
// BubbleBeam
|
|
846
813
|
.{
|
|
847
814
|
.effect = .SpeedDownChance,
|
|
848
815
|
.bp = 65,
|
|
849
816
|
.type = .Water,
|
|
850
|
-
.
|
|
851
|
-
.accuracy = 100,
|
|
817
|
+
.accuracy = percent(100),
|
|
852
818
|
.target = .Other,
|
|
853
|
-
.chance =
|
|
819
|
+
.chance = percent(10),
|
|
854
820
|
},
|
|
855
821
|
// AuroraBeam
|
|
856
822
|
.{
|
|
857
823
|
.effect = .AttackDownChance,
|
|
858
824
|
.bp = 65,
|
|
859
825
|
.type = .Ice,
|
|
860
|
-
.
|
|
861
|
-
.accuracy = 100,
|
|
826
|
+
.accuracy = percent(100),
|
|
862
827
|
.target = .Other,
|
|
863
|
-
.chance =
|
|
828
|
+
.chance = percent(10),
|
|
864
829
|
},
|
|
865
830
|
// HyperBeam
|
|
866
831
|
.{
|
|
867
832
|
.effect = .HyperBeam,
|
|
868
833
|
.bp = 150,
|
|
869
834
|
.type = .Normal,
|
|
870
|
-
.
|
|
871
|
-
.accuracy = 90,
|
|
835
|
+
.accuracy = percent(90),
|
|
872
836
|
.target = .Other,
|
|
873
837
|
},
|
|
874
838
|
// Peck
|
|
@@ -876,8 +840,7 @@ pub const Move = enum(u8) {
|
|
|
876
840
|
.effect = .None,
|
|
877
841
|
.bp = 35,
|
|
878
842
|
.type = .Flying,
|
|
879
|
-
.
|
|
880
|
-
.accuracy = 100,
|
|
843
|
+
.accuracy = percent(100),
|
|
881
844
|
.target = .Any,
|
|
882
845
|
},
|
|
883
846
|
// DrillPeck
|
|
@@ -885,8 +848,7 @@ pub const Move = enum(u8) {
|
|
|
885
848
|
.effect = .None,
|
|
886
849
|
.bp = 80,
|
|
887
850
|
.type = .Flying,
|
|
888
|
-
.
|
|
889
|
-
.accuracy = 100,
|
|
851
|
+
.accuracy = percent(100),
|
|
890
852
|
.target = .Any,
|
|
891
853
|
},
|
|
892
854
|
// Submission
|
|
@@ -894,8 +856,7 @@ pub const Move = enum(u8) {
|
|
|
894
856
|
.effect = .Recoil,
|
|
895
857
|
.bp = 80,
|
|
896
858
|
.type = .Fighting,
|
|
897
|
-
.
|
|
898
|
-
.accuracy = 80,
|
|
859
|
+
.accuracy = percent(80),
|
|
899
860
|
.target = .Other,
|
|
900
861
|
},
|
|
901
862
|
// LowKick
|
|
@@ -903,27 +864,26 @@ pub const Move = enum(u8) {
|
|
|
903
864
|
.effect = .FlinchChance,
|
|
904
865
|
.bp = 50,
|
|
905
866
|
.type = .Fighting,
|
|
906
|
-
.
|
|
907
|
-
.accuracy = 90,
|
|
867
|
+
.accuracy = percent(90),
|
|
908
868
|
.target = .Other,
|
|
909
|
-
.chance =
|
|
869
|
+
.chance = percent(30),
|
|
910
870
|
},
|
|
911
871
|
// Counter
|
|
912
872
|
.{
|
|
913
873
|
.effect = .Counter,
|
|
914
874
|
.bp = 0,
|
|
915
875
|
.type = .Fighting,
|
|
916
|
-
.
|
|
917
|
-
.accuracy = 100,
|
|
876
|
+
.accuracy = percent(100),
|
|
918
877
|
.target = .Depends,
|
|
878
|
+
.priority = -1,
|
|
879
|
+
.extra = .{ .metronome = false },
|
|
919
880
|
},
|
|
920
881
|
// SeismicToss
|
|
921
882
|
.{
|
|
922
883
|
.effect = .LevelDamage,
|
|
923
884
|
.bp = 0,
|
|
924
885
|
.type = .Fighting,
|
|
925
|
-
.
|
|
926
|
-
.accuracy = 100,
|
|
886
|
+
.accuracy = percent(100),
|
|
927
887
|
.target = .Other,
|
|
928
888
|
},
|
|
929
889
|
// Strength
|
|
@@ -931,8 +891,7 @@ pub const Move = enum(u8) {
|
|
|
931
891
|
.effect = .None,
|
|
932
892
|
.bp = 80,
|
|
933
893
|
.type = .Normal,
|
|
934
|
-
.
|
|
935
|
-
.accuracy = 100,
|
|
894
|
+
.accuracy = percent(100),
|
|
936
895
|
.target = .Other,
|
|
937
896
|
},
|
|
938
897
|
// Absorb
|
|
@@ -940,8 +899,7 @@ pub const Move = enum(u8) {
|
|
|
940
899
|
.effect = .DrainHP,
|
|
941
900
|
.bp = 20,
|
|
942
901
|
.type = .Grass,
|
|
943
|
-
.
|
|
944
|
-
.accuracy = 100,
|
|
902
|
+
.accuracy = percent(100),
|
|
945
903
|
.target = .Other,
|
|
946
904
|
},
|
|
947
905
|
// MegaDrain
|
|
@@ -949,8 +907,7 @@ pub const Move = enum(u8) {
|
|
|
949
907
|
.effect = .DrainHP,
|
|
950
908
|
.bp = 40,
|
|
951
909
|
.type = .Grass,
|
|
952
|
-
.
|
|
953
|
-
.accuracy = 100,
|
|
910
|
+
.accuracy = percent(100),
|
|
954
911
|
.target = .Other,
|
|
955
912
|
},
|
|
956
913
|
// LeechSeed
|
|
@@ -958,8 +915,7 @@ pub const Move = enum(u8) {
|
|
|
958
915
|
.effect = .LeechSeed,
|
|
959
916
|
.bp = 0,
|
|
960
917
|
.type = .Grass,
|
|
961
|
-
.
|
|
962
|
-
.accuracy = 90,
|
|
918
|
+
.accuracy = percent(90),
|
|
963
919
|
.target = .Other,
|
|
964
920
|
},
|
|
965
921
|
// Growth
|
|
@@ -967,8 +923,7 @@ pub const Move = enum(u8) {
|
|
|
967
923
|
.effect = .SpAtkUp1,
|
|
968
924
|
.bp = 0,
|
|
969
925
|
.type = .Normal,
|
|
970
|
-
.
|
|
971
|
-
.accuracy = 100,
|
|
926
|
+
.accuracy = percent(100),
|
|
972
927
|
.target = .Self,
|
|
973
928
|
},
|
|
974
929
|
// RazorLeaf
|
|
@@ -976,26 +931,24 @@ pub const Move = enum(u8) {
|
|
|
976
931
|
.effect = .HighCritical,
|
|
977
932
|
.bp = 55,
|
|
978
933
|
.type = .Grass,
|
|
979
|
-
.
|
|
980
|
-
.accuracy = 95,
|
|
934
|
+
.accuracy = percent(95),
|
|
981
935
|
.target = .Foes,
|
|
982
936
|
},
|
|
983
937
|
// SolarBeam
|
|
984
938
|
.{
|
|
985
|
-
.effect = .
|
|
939
|
+
.effect = .SolarBeam,
|
|
986
940
|
.bp = 120,
|
|
987
941
|
.type = .Grass,
|
|
988
|
-
.
|
|
989
|
-
.accuracy = 100,
|
|
942
|
+
.accuracy = percent(100),
|
|
990
943
|
.target = .Other,
|
|
944
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
991
945
|
},
|
|
992
946
|
// PoisonPowder
|
|
993
947
|
.{
|
|
994
948
|
.effect = .Poison,
|
|
995
949
|
.bp = 0,
|
|
996
950
|
.type = .Poison,
|
|
997
|
-
.
|
|
998
|
-
.accuracy = 75,
|
|
951
|
+
.accuracy = percent(75),
|
|
999
952
|
.target = .Other,
|
|
1000
953
|
},
|
|
1001
954
|
// StunSpore
|
|
@@ -1003,8 +956,7 @@ pub const Move = enum(u8) {
|
|
|
1003
956
|
.effect = .Paralyze,
|
|
1004
957
|
.bp = 0,
|
|
1005
958
|
.type = .Grass,
|
|
1006
|
-
.
|
|
1007
|
-
.accuracy = 75,
|
|
959
|
+
.accuracy = percent(75),
|
|
1008
960
|
.target = .Other,
|
|
1009
961
|
},
|
|
1010
962
|
// SleepPowder
|
|
@@ -1012,8 +964,7 @@ pub const Move = enum(u8) {
|
|
|
1012
964
|
.effect = .Sleep,
|
|
1013
965
|
.bp = 0,
|
|
1014
966
|
.type = .Grass,
|
|
1015
|
-
.
|
|
1016
|
-
.accuracy = 75,
|
|
967
|
+
.accuracy = percent(75),
|
|
1017
968
|
.target = .Other,
|
|
1018
969
|
},
|
|
1019
970
|
// PetalDance
|
|
@@ -1021,17 +972,16 @@ pub const Move = enum(u8) {
|
|
|
1021
972
|
.effect = .Thrashing,
|
|
1022
973
|
.bp = 70,
|
|
1023
974
|
.type = .Grass,
|
|
1024
|
-
.
|
|
1025
|
-
.accuracy = 100,
|
|
975
|
+
.accuracy = percent(100),
|
|
1026
976
|
.target = .RandomFoe,
|
|
977
|
+
.extra = .{ .continuous = true },
|
|
1027
978
|
},
|
|
1028
979
|
// StringShot
|
|
1029
980
|
.{
|
|
1030
981
|
.effect = .SpeedDown1,
|
|
1031
982
|
.bp = 0,
|
|
1032
983
|
.type = .Bug,
|
|
1033
|
-
.
|
|
1034
|
-
.accuracy = 95,
|
|
984
|
+
.accuracy = percent(95),
|
|
1035
985
|
.target = .Foes,
|
|
1036
986
|
},
|
|
1037
987
|
// DragonRage
|
|
@@ -1039,8 +989,7 @@ pub const Move = enum(u8) {
|
|
|
1039
989
|
.effect = .FixedDamage,
|
|
1040
990
|
.bp = 0,
|
|
1041
991
|
.type = .Dragon,
|
|
1042
|
-
.
|
|
1043
|
-
.accuracy = 100,
|
|
992
|
+
.accuracy = percent(100),
|
|
1044
993
|
.target = .Other,
|
|
1045
994
|
},
|
|
1046
995
|
// FireSpin
|
|
@@ -1048,37 +997,34 @@ pub const Move = enum(u8) {
|
|
|
1048
997
|
.effect = .Binding,
|
|
1049
998
|
.bp = 15,
|
|
1050
999
|
.type = .Fire,
|
|
1051
|
-
.
|
|
1052
|
-
.accuracy = 70,
|
|
1000
|
+
.accuracy = percent(70),
|
|
1053
1001
|
.target = .Other,
|
|
1002
|
+
.extra = .{ .protocol = 3 },
|
|
1054
1003
|
},
|
|
1055
1004
|
// ThunderShock
|
|
1056
1005
|
.{
|
|
1057
1006
|
.effect = .ParalyzeChance,
|
|
1058
1007
|
.bp = 40,
|
|
1059
1008
|
.type = .Electric,
|
|
1060
|
-
.
|
|
1061
|
-
.accuracy = 100,
|
|
1009
|
+
.accuracy = percent(100),
|
|
1062
1010
|
.target = .Other,
|
|
1063
|
-
.chance =
|
|
1011
|
+
.chance = percent(10),
|
|
1064
1012
|
},
|
|
1065
1013
|
// Thunderbolt
|
|
1066
1014
|
.{
|
|
1067
1015
|
.effect = .ParalyzeChance,
|
|
1068
1016
|
.bp = 95,
|
|
1069
1017
|
.type = .Electric,
|
|
1070
|
-
.
|
|
1071
|
-
.accuracy = 100,
|
|
1018
|
+
.accuracy = percent(100),
|
|
1072
1019
|
.target = .Other,
|
|
1073
|
-
.chance =
|
|
1020
|
+
.chance = percent(10),
|
|
1074
1021
|
},
|
|
1075
1022
|
// ThunderWave
|
|
1076
1023
|
.{
|
|
1077
1024
|
.effect = .Paralyze,
|
|
1078
1025
|
.bp = 0,
|
|
1079
1026
|
.type = .Electric,
|
|
1080
|
-
.
|
|
1081
|
-
.accuracy = 100,
|
|
1027
|
+
.accuracy = percent(100),
|
|
1082
1028
|
.target = .Other,
|
|
1083
1029
|
},
|
|
1084
1030
|
// Thunder
|
|
@@ -1086,18 +1032,17 @@ pub const Move = enum(u8) {
|
|
|
1086
1032
|
.effect = .Thunder,
|
|
1087
1033
|
.bp = 120,
|
|
1088
1034
|
.type = .Electric,
|
|
1089
|
-
.
|
|
1090
|
-
.accuracy = 70,
|
|
1035
|
+
.accuracy = percent(70),
|
|
1091
1036
|
.target = .Other,
|
|
1092
|
-
.chance =
|
|
1037
|
+
.chance = percent(30),
|
|
1038
|
+
.extra = .{ .flying = true },
|
|
1093
1039
|
},
|
|
1094
1040
|
// RockThrow
|
|
1095
1041
|
.{
|
|
1096
1042
|
.effect = .None,
|
|
1097
1043
|
.bp = 50,
|
|
1098
1044
|
.type = .Rock,
|
|
1099
|
-
.
|
|
1100
|
-
.accuracy = 90,
|
|
1045
|
+
.accuracy = percent(90),
|
|
1101
1046
|
.target = .Other,
|
|
1102
1047
|
},
|
|
1103
1048
|
// Earthquake
|
|
@@ -1105,35 +1050,34 @@ pub const Move = enum(u8) {
|
|
|
1105
1050
|
.effect = .Earthquake,
|
|
1106
1051
|
.bp = 100,
|
|
1107
1052
|
.type = .Ground,
|
|
1108
|
-
.
|
|
1109
|
-
.accuracy = 100,
|
|
1053
|
+
.accuracy = percent(100),
|
|
1110
1054
|
.target = .AllOthers,
|
|
1055
|
+
.extra = .{ .underground = true },
|
|
1111
1056
|
},
|
|
1112
1057
|
// Fissure
|
|
1113
1058
|
.{
|
|
1114
1059
|
.effect = .OHKO,
|
|
1115
1060
|
.bp = 0,
|
|
1116
1061
|
.type = .Ground,
|
|
1117
|
-
.
|
|
1118
|
-
.accuracy = 30,
|
|
1062
|
+
.accuracy = percent(30),
|
|
1119
1063
|
.target = .Other,
|
|
1064
|
+
.extra = .{ .underground = true },
|
|
1120
1065
|
},
|
|
1121
1066
|
// Dig
|
|
1122
1067
|
.{
|
|
1123
|
-
.effect = .
|
|
1068
|
+
.effect = .FlyDig,
|
|
1124
1069
|
.bp = 60,
|
|
1125
1070
|
.type = .Ground,
|
|
1126
|
-
.
|
|
1127
|
-
.accuracy = 100,
|
|
1071
|
+
.accuracy = percent(100),
|
|
1128
1072
|
.target = .Other,
|
|
1073
|
+
.extra = .{ .sleep_talk = false },
|
|
1129
1074
|
},
|
|
1130
1075
|
// Toxic
|
|
1131
1076
|
.{
|
|
1132
1077
|
.effect = .Toxic,
|
|
1133
1078
|
.bp = 0,
|
|
1134
1079
|
.type = .Poison,
|
|
1135
|
-
.
|
|
1136
|
-
.accuracy = 85,
|
|
1080
|
+
.accuracy = percent(85),
|
|
1137
1081
|
.target = .Other,
|
|
1138
1082
|
},
|
|
1139
1083
|
// Confusion
|
|
@@ -1141,28 +1085,25 @@ pub const Move = enum(u8) {
|
|
|
1141
1085
|
.effect = .ConfusionChance,
|
|
1142
1086
|
.bp = 50,
|
|
1143
1087
|
.type = .Psychic,
|
|
1144
|
-
.
|
|
1145
|
-
.accuracy = 100,
|
|
1088
|
+
.accuracy = percent(100),
|
|
1146
1089
|
.target = .Other,
|
|
1147
|
-
.chance =
|
|
1090
|
+
.chance = percent(10),
|
|
1148
1091
|
},
|
|
1149
1092
|
// Psychic
|
|
1150
1093
|
.{
|
|
1151
1094
|
.effect = .SpDefDownChance,
|
|
1152
1095
|
.bp = 90,
|
|
1153
1096
|
.type = .Psychic,
|
|
1154
|
-
.
|
|
1155
|
-
.accuracy = 100,
|
|
1097
|
+
.accuracy = percent(100),
|
|
1156
1098
|
.target = .Other,
|
|
1157
|
-
.chance =
|
|
1099
|
+
.chance = percent(10),
|
|
1158
1100
|
},
|
|
1159
1101
|
// Hypnosis
|
|
1160
1102
|
.{
|
|
1161
1103
|
.effect = .Sleep,
|
|
1162
1104
|
.bp = 0,
|
|
1163
1105
|
.type = .Psychic,
|
|
1164
|
-
.
|
|
1165
|
-
.accuracy = 60,
|
|
1106
|
+
.accuracy = percent(60),
|
|
1166
1107
|
.target = .Other,
|
|
1167
1108
|
},
|
|
1168
1109
|
// Meditate
|
|
@@ -1170,8 +1111,7 @@ pub const Move = enum(u8) {
|
|
|
1170
1111
|
.effect = .AttackUp1,
|
|
1171
1112
|
.bp = 0,
|
|
1172
1113
|
.type = .Psychic,
|
|
1173
|
-
.
|
|
1174
|
-
.accuracy = 100,
|
|
1114
|
+
.accuracy = percent(100),
|
|
1175
1115
|
.target = .Self,
|
|
1176
1116
|
},
|
|
1177
1117
|
// Agility
|
|
@@ -1179,8 +1119,7 @@ pub const Move = enum(u8) {
|
|
|
1179
1119
|
.effect = .SpeedUp2,
|
|
1180
1120
|
.bp = 0,
|
|
1181
1121
|
.type = .Psychic,
|
|
1182
|
-
.
|
|
1183
|
-
.accuracy = 100,
|
|
1122
|
+
.accuracy = percent(100),
|
|
1184
1123
|
.target = .Self,
|
|
1185
1124
|
},
|
|
1186
1125
|
// QuickAttack
|
|
@@ -1188,17 +1127,16 @@ pub const Move = enum(u8) {
|
|
|
1188
1127
|
.effect = .Priority,
|
|
1189
1128
|
.bp = 40,
|
|
1190
1129
|
.type = .Normal,
|
|
1191
|
-
.
|
|
1192
|
-
.accuracy = 100,
|
|
1130
|
+
.accuracy = percent(100),
|
|
1193
1131
|
.target = .Other,
|
|
1132
|
+
.priority = 1,
|
|
1194
1133
|
},
|
|
1195
1134
|
// Rage
|
|
1196
1135
|
.{
|
|
1197
1136
|
.effect = .Rage,
|
|
1198
1137
|
.bp = 20,
|
|
1199
1138
|
.type = .Normal,
|
|
1200
|
-
.
|
|
1201
|
-
.accuracy = 100,
|
|
1139
|
+
.accuracy = percent(100),
|
|
1202
1140
|
.target = .Other,
|
|
1203
1141
|
},
|
|
1204
1142
|
// Teleport
|
|
@@ -1206,8 +1144,7 @@ pub const Move = enum(u8) {
|
|
|
1206
1144
|
.effect = .Teleport,
|
|
1207
1145
|
.bp = 0,
|
|
1208
1146
|
.type = .Psychic,
|
|
1209
|
-
.
|
|
1210
|
-
.accuracy = 100,
|
|
1147
|
+
.accuracy = percent(100),
|
|
1211
1148
|
.target = .Self,
|
|
1212
1149
|
},
|
|
1213
1150
|
// NightShade
|
|
@@ -1215,8 +1152,7 @@ pub const Move = enum(u8) {
|
|
|
1215
1152
|
.effect = .LevelDamage,
|
|
1216
1153
|
.bp = 0,
|
|
1217
1154
|
.type = .Ghost,
|
|
1218
|
-
.
|
|
1219
|
-
.accuracy = 100,
|
|
1155
|
+
.accuracy = percent(100),
|
|
1220
1156
|
.target = .Other,
|
|
1221
1157
|
},
|
|
1222
1158
|
// Mimic
|
|
@@ -1224,17 +1160,16 @@ pub const Move = enum(u8) {
|
|
|
1224
1160
|
.effect = .Mimic,
|
|
1225
1161
|
.bp = 0,
|
|
1226
1162
|
.type = .Normal,
|
|
1227
|
-
.
|
|
1228
|
-
.accuracy = 100,
|
|
1163
|
+
.accuracy = percent(100),
|
|
1229
1164
|
.target = .Other,
|
|
1165
|
+
.extra = .{ .metronome = false },
|
|
1230
1166
|
},
|
|
1231
1167
|
// Screech
|
|
1232
1168
|
.{
|
|
1233
1169
|
.effect = .DefenseDown2,
|
|
1234
1170
|
.bp = 0,
|
|
1235
1171
|
.type = .Normal,
|
|
1236
|
-
.
|
|
1237
|
-
.accuracy = 85,
|
|
1172
|
+
.accuracy = percent(85),
|
|
1238
1173
|
.target = .Other,
|
|
1239
1174
|
},
|
|
1240
1175
|
// DoubleTeam
|
|
@@ -1242,8 +1177,7 @@ pub const Move = enum(u8) {
|
|
|
1242
1177
|
.effect = .EvasionUp1,
|
|
1243
1178
|
.bp = 0,
|
|
1244
1179
|
.type = .Normal,
|
|
1245
|
-
.
|
|
1246
|
-
.accuracy = 100,
|
|
1180
|
+
.accuracy = percent(100),
|
|
1247
1181
|
.target = .Self,
|
|
1248
1182
|
},
|
|
1249
1183
|
// Recover
|
|
@@ -1251,8 +1185,7 @@ pub const Move = enum(u8) {
|
|
|
1251
1185
|
.effect = .Heal,
|
|
1252
1186
|
.bp = 0,
|
|
1253
1187
|
.type = .Normal,
|
|
1254
|
-
.
|
|
1255
|
-
.accuracy = 100,
|
|
1188
|
+
.accuracy = percent(100),
|
|
1256
1189
|
.target = .Self,
|
|
1257
1190
|
},
|
|
1258
1191
|
// Harden
|
|
@@ -1260,8 +1193,7 @@ pub const Move = enum(u8) {
|
|
|
1260
1193
|
.effect = .DefenseUp1,
|
|
1261
1194
|
.bp = 0,
|
|
1262
1195
|
.type = .Normal,
|
|
1263
|
-
.
|
|
1264
|
-
.accuracy = 100,
|
|
1196
|
+
.accuracy = percent(100),
|
|
1265
1197
|
.target = .Self,
|
|
1266
1198
|
},
|
|
1267
1199
|
// Minimize
|
|
@@ -1269,8 +1201,7 @@ pub const Move = enum(u8) {
|
|
|
1269
1201
|
.effect = .EvasionUp1,
|
|
1270
1202
|
.bp = 0,
|
|
1271
1203
|
.type = .Normal,
|
|
1272
|
-
.
|
|
1273
|
-
.accuracy = 100,
|
|
1204
|
+
.accuracy = percent(100),
|
|
1274
1205
|
.target = .Self,
|
|
1275
1206
|
},
|
|
1276
1207
|
// Smokescreen
|
|
@@ -1278,8 +1209,7 @@ pub const Move = enum(u8) {
|
|
|
1278
1209
|
.effect = .AccuracyDown1,
|
|
1279
1210
|
.bp = 0,
|
|
1280
1211
|
.type = .Normal,
|
|
1281
|
-
.
|
|
1282
|
-
.accuracy = 100,
|
|
1212
|
+
.accuracy = percent(100),
|
|
1283
1213
|
.target = .Other,
|
|
1284
1214
|
},
|
|
1285
1215
|
// ConfuseRay
|
|
@@ -1287,8 +1217,7 @@ pub const Move = enum(u8) {
|
|
|
1287
1217
|
.effect = .Confusion,
|
|
1288
1218
|
.bp = 0,
|
|
1289
1219
|
.type = .Ghost,
|
|
1290
|
-
.
|
|
1291
|
-
.accuracy = 100,
|
|
1220
|
+
.accuracy = percent(100),
|
|
1292
1221
|
.target = .Other,
|
|
1293
1222
|
},
|
|
1294
1223
|
// Withdraw
|
|
@@ -1296,8 +1225,7 @@ pub const Move = enum(u8) {
|
|
|
1296
1225
|
.effect = .DefenseUp1,
|
|
1297
1226
|
.bp = 0,
|
|
1298
1227
|
.type = .Water,
|
|
1299
|
-
.
|
|
1300
|
-
.accuracy = 100,
|
|
1228
|
+
.accuracy = percent(100),
|
|
1301
1229
|
.target = .Self,
|
|
1302
1230
|
},
|
|
1303
1231
|
// DefenseCurl
|
|
@@ -1305,8 +1233,7 @@ pub const Move = enum(u8) {
|
|
|
1305
1233
|
.effect = .DefenseCurl,
|
|
1306
1234
|
.bp = 0,
|
|
1307
1235
|
.type = .Normal,
|
|
1308
|
-
.
|
|
1309
|
-
.accuracy = 100,
|
|
1236
|
+
.accuracy = percent(100),
|
|
1310
1237
|
.target = .Self,
|
|
1311
1238
|
},
|
|
1312
1239
|
// Barrier
|
|
@@ -1314,8 +1241,7 @@ pub const Move = enum(u8) {
|
|
|
1314
1241
|
.effect = .DefenseUp2,
|
|
1315
1242
|
.bp = 0,
|
|
1316
1243
|
.type = .Psychic,
|
|
1317
|
-
.
|
|
1318
|
-
.accuracy = 100,
|
|
1244
|
+
.accuracy = percent(100),
|
|
1319
1245
|
.target = .Self,
|
|
1320
1246
|
},
|
|
1321
1247
|
// LightScreen
|
|
@@ -1323,8 +1249,7 @@ pub const Move = enum(u8) {
|
|
|
1323
1249
|
.effect = .LightScreen,
|
|
1324
1250
|
.bp = 0,
|
|
1325
1251
|
.type = .Psychic,
|
|
1326
|
-
.
|
|
1327
|
-
.accuracy = 100,
|
|
1252
|
+
.accuracy = percent(100),
|
|
1328
1253
|
.target = .AllySide,
|
|
1329
1254
|
},
|
|
1330
1255
|
// Haze
|
|
@@ -1332,8 +1257,7 @@ pub const Move = enum(u8) {
|
|
|
1332
1257
|
.effect = .Haze,
|
|
1333
1258
|
.bp = 0,
|
|
1334
1259
|
.type = .Ice,
|
|
1335
|
-
.
|
|
1336
|
-
.accuracy = 100,
|
|
1260
|
+
.accuracy = percent(100),
|
|
1337
1261
|
.target = .All,
|
|
1338
1262
|
},
|
|
1339
1263
|
// Reflect
|
|
@@ -1341,8 +1265,7 @@ pub const Move = enum(u8) {
|
|
|
1341
1265
|
.effect = .Reflect,
|
|
1342
1266
|
.bp = 0,
|
|
1343
1267
|
.type = .Psychic,
|
|
1344
|
-
.
|
|
1345
|
-
.accuracy = 100,
|
|
1268
|
+
.accuracy = percent(100),
|
|
1346
1269
|
.target = .AllySide,
|
|
1347
1270
|
},
|
|
1348
1271
|
// FocusEnergy
|
|
@@ -1350,8 +1273,7 @@ pub const Move = enum(u8) {
|
|
|
1350
1273
|
.effect = .FocusEnergy,
|
|
1351
1274
|
.bp = 0,
|
|
1352
1275
|
.type = .Normal,
|
|
1353
|
-
.
|
|
1354
|
-
.accuracy = 100,
|
|
1276
|
+
.accuracy = percent(100),
|
|
1355
1277
|
.target = .Self,
|
|
1356
1278
|
},
|
|
1357
1279
|
// Bide
|
|
@@ -1359,26 +1281,25 @@ pub const Move = enum(u8) {
|
|
|
1359
1281
|
.effect = .Bide,
|
|
1360
1282
|
.bp = 0,
|
|
1361
1283
|
.type = .Normal,
|
|
1362
|
-
.
|
|
1363
|
-
.accuracy = 100,
|
|
1284
|
+
.accuracy = percent(100),
|
|
1364
1285
|
.target = .Self,
|
|
1286
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
1365
1287
|
},
|
|
1366
1288
|
// Metronome
|
|
1367
1289
|
.{
|
|
1368
1290
|
.effect = .Metronome,
|
|
1369
1291
|
.bp = 0,
|
|
1370
1292
|
.type = .Normal,
|
|
1371
|
-
.
|
|
1372
|
-
.accuracy = 100,
|
|
1293
|
+
.accuracy = percent(100),
|
|
1373
1294
|
.target = .Self,
|
|
1295
|
+
.extra = .{ .metronome = false },
|
|
1374
1296
|
},
|
|
1375
1297
|
// MirrorMove
|
|
1376
1298
|
.{
|
|
1377
1299
|
.effect = .MirrorMove,
|
|
1378
1300
|
.bp = 0,
|
|
1379
1301
|
.type = .Flying,
|
|
1380
|
-
.
|
|
1381
|
-
.accuracy = 100,
|
|
1302
|
+
.accuracy = percent(100),
|
|
1382
1303
|
.target = .Self,
|
|
1383
1304
|
},
|
|
1384
1305
|
// SelfDestruct
|
|
@@ -1386,8 +1307,7 @@ pub const Move = enum(u8) {
|
|
|
1386
1307
|
.effect = .Explode,
|
|
1387
1308
|
.bp = 200,
|
|
1388
1309
|
.type = .Normal,
|
|
1389
|
-
.
|
|
1390
|
-
.accuracy = 100,
|
|
1310
|
+
.accuracy = percent(100),
|
|
1391
1311
|
.target = .AllOthers,
|
|
1392
1312
|
},
|
|
1393
1313
|
// EggBomb
|
|
@@ -1395,8 +1315,7 @@ pub const Move = enum(u8) {
|
|
|
1395
1315
|
.effect = .None,
|
|
1396
1316
|
.bp = 100,
|
|
1397
1317
|
.type = .Normal,
|
|
1398
|
-
.
|
|
1399
|
-
.accuracy = 75,
|
|
1318
|
+
.accuracy = percent(75),
|
|
1400
1319
|
.target = .Other,
|
|
1401
1320
|
},
|
|
1402
1321
|
// Lick
|
|
@@ -1404,58 +1323,52 @@ pub const Move = enum(u8) {
|
|
|
1404
1323
|
.effect = .ParalyzeChance,
|
|
1405
1324
|
.bp = 20,
|
|
1406
1325
|
.type = .Ghost,
|
|
1407
|
-
.
|
|
1408
|
-
.accuracy = 100,
|
|
1326
|
+
.accuracy = percent(100),
|
|
1409
1327
|
.target = .Other,
|
|
1410
|
-
.chance =
|
|
1328
|
+
.chance = percent(30),
|
|
1411
1329
|
},
|
|
1412
1330
|
// Smog
|
|
1413
1331
|
.{
|
|
1414
1332
|
.effect = .PoisonChance,
|
|
1415
1333
|
.bp = 20,
|
|
1416
1334
|
.type = .Poison,
|
|
1417
|
-
.
|
|
1418
|
-
.accuracy = 70,
|
|
1335
|
+
.accuracy = percent(70),
|
|
1419
1336
|
.target = .Other,
|
|
1420
|
-
.chance =
|
|
1337
|
+
.chance = percent(40),
|
|
1421
1338
|
},
|
|
1422
1339
|
// Sludge
|
|
1423
1340
|
.{
|
|
1424
1341
|
.effect = .PoisonChance,
|
|
1425
1342
|
.bp = 65,
|
|
1426
1343
|
.type = .Poison,
|
|
1427
|
-
.
|
|
1428
|
-
.accuracy = 100,
|
|
1344
|
+
.accuracy = percent(100),
|
|
1429
1345
|
.target = .Other,
|
|
1430
|
-
.chance =
|
|
1346
|
+
.chance = percent(30),
|
|
1431
1347
|
},
|
|
1432
1348
|
// BoneClub
|
|
1433
1349
|
.{
|
|
1434
1350
|
.effect = .FlinchChance,
|
|
1435
1351
|
.bp = 65,
|
|
1436
1352
|
.type = .Ground,
|
|
1437
|
-
.
|
|
1438
|
-
.accuracy = 85,
|
|
1353
|
+
.accuracy = percent(85),
|
|
1439
1354
|
.target = .Other,
|
|
1440
|
-
.chance =
|
|
1355
|
+
.chance = percent(10),
|
|
1441
1356
|
},
|
|
1442
1357
|
// FireBlast
|
|
1443
1358
|
.{
|
|
1444
1359
|
.effect = .BurnChance,
|
|
1445
1360
|
.bp = 120,
|
|
1446
1361
|
.type = .Fire,
|
|
1447
|
-
.
|
|
1448
|
-
.accuracy = 85,
|
|
1362
|
+
.accuracy = percent(85),
|
|
1449
1363
|
.target = .Other,
|
|
1450
|
-
.chance =
|
|
1364
|
+
.chance = percent(10),
|
|
1451
1365
|
},
|
|
1452
1366
|
// Waterfall
|
|
1453
1367
|
.{
|
|
1454
1368
|
.effect = .None,
|
|
1455
1369
|
.bp = 80,
|
|
1456
1370
|
.type = .Water,
|
|
1457
|
-
.
|
|
1458
|
-
.accuracy = 100,
|
|
1371
|
+
.accuracy = percent(100),
|
|
1459
1372
|
.target = .Other,
|
|
1460
1373
|
},
|
|
1461
1374
|
// Clamp
|
|
@@ -1463,17 +1376,16 @@ pub const Move = enum(u8) {
|
|
|
1463
1376
|
.effect = .Binding,
|
|
1464
1377
|
.bp = 35,
|
|
1465
1378
|
.type = .Water,
|
|
1466
|
-
.
|
|
1467
|
-
.accuracy = 75,
|
|
1379
|
+
.accuracy = percent(75),
|
|
1468
1380
|
.target = .Other,
|
|
1381
|
+
.extra = .{ .protocol = 4 },
|
|
1469
1382
|
},
|
|
1470
1383
|
// Swift
|
|
1471
1384
|
.{
|
|
1472
1385
|
.effect = .AlwaysHit,
|
|
1473
1386
|
.bp = 60,
|
|
1474
1387
|
.type = .Normal,
|
|
1475
|
-
.
|
|
1476
|
-
.accuracy = 100,
|
|
1388
|
+
.accuracy = percent(100),
|
|
1477
1389
|
.target = .Foes,
|
|
1478
1390
|
},
|
|
1479
1391
|
// SkullBash
|
|
@@ -1481,17 +1393,16 @@ pub const Move = enum(u8) {
|
|
|
1481
1393
|
.effect = .SkullBash,
|
|
1482
1394
|
.bp = 100,
|
|
1483
1395
|
.type = .Normal,
|
|
1484
|
-
.
|
|
1485
|
-
.accuracy = 100,
|
|
1396
|
+
.accuracy = percent(100),
|
|
1486
1397
|
.target = .Other,
|
|
1398
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
1487
1399
|
},
|
|
1488
1400
|
// SpikeCannon
|
|
1489
1401
|
.{
|
|
1490
1402
|
.effect = .MultiHit,
|
|
1491
1403
|
.bp = 20,
|
|
1492
1404
|
.type = .Normal,
|
|
1493
|
-
.
|
|
1494
|
-
.accuracy = 100,
|
|
1405
|
+
.accuracy = percent(100),
|
|
1495
1406
|
.target = .Other,
|
|
1496
1407
|
},
|
|
1497
1408
|
// Constrict
|
|
@@ -1499,18 +1410,16 @@ pub const Move = enum(u8) {
|
|
|
1499
1410
|
.effect = .SpeedDownChance,
|
|
1500
1411
|
.bp = 10,
|
|
1501
1412
|
.type = .Normal,
|
|
1502
|
-
.
|
|
1503
|
-
.accuracy = 100,
|
|
1413
|
+
.accuracy = percent(100),
|
|
1504
1414
|
.target = .Other,
|
|
1505
|
-
.chance =
|
|
1415
|
+
.chance = percent(10),
|
|
1506
1416
|
},
|
|
1507
1417
|
// Amnesia
|
|
1508
1418
|
.{
|
|
1509
1419
|
.effect = .SpDefUp2,
|
|
1510
1420
|
.bp = 0,
|
|
1511
1421
|
.type = .Psychic,
|
|
1512
|
-
.
|
|
1513
|
-
.accuracy = 100,
|
|
1422
|
+
.accuracy = percent(100),
|
|
1514
1423
|
.target = .Self,
|
|
1515
1424
|
},
|
|
1516
1425
|
// Kinesis
|
|
@@ -1518,8 +1427,7 @@ pub const Move = enum(u8) {
|
|
|
1518
1427
|
.effect = .AccuracyDown1,
|
|
1519
1428
|
.bp = 0,
|
|
1520
1429
|
.type = .Psychic,
|
|
1521
|
-
.
|
|
1522
|
-
.accuracy = 80,
|
|
1430
|
+
.accuracy = percent(80),
|
|
1523
1431
|
.target = .Other,
|
|
1524
1432
|
},
|
|
1525
1433
|
// SoftBoiled
|
|
@@ -1527,8 +1435,7 @@ pub const Move = enum(u8) {
|
|
|
1527
1435
|
.effect = .Heal,
|
|
1528
1436
|
.bp = 0,
|
|
1529
1437
|
.type = .Normal,
|
|
1530
|
-
.
|
|
1531
|
-
.accuracy = 100,
|
|
1438
|
+
.accuracy = percent(100),
|
|
1532
1439
|
.target = .Self,
|
|
1533
1440
|
},
|
|
1534
1441
|
// HighJumpKick
|
|
@@ -1536,8 +1443,7 @@ pub const Move = enum(u8) {
|
|
|
1536
1443
|
.effect = .JumpKick,
|
|
1537
1444
|
.bp = 85,
|
|
1538
1445
|
.type = .Fighting,
|
|
1539
|
-
.
|
|
1540
|
-
.accuracy = 90,
|
|
1446
|
+
.accuracy = percent(90),
|
|
1541
1447
|
.target = .Other,
|
|
1542
1448
|
},
|
|
1543
1449
|
// Glare
|
|
@@ -1545,8 +1451,7 @@ pub const Move = enum(u8) {
|
|
|
1545
1451
|
.effect = .Paralyze,
|
|
1546
1452
|
.bp = 0,
|
|
1547
1453
|
.type = .Normal,
|
|
1548
|
-
.
|
|
1549
|
-
.accuracy = 75,
|
|
1454
|
+
.accuracy = percent(75),
|
|
1550
1455
|
.target = .Other,
|
|
1551
1456
|
},
|
|
1552
1457
|
// DreamEater
|
|
@@ -1554,8 +1459,7 @@ pub const Move = enum(u8) {
|
|
|
1554
1459
|
.effect = .DreamEater,
|
|
1555
1460
|
.bp = 100,
|
|
1556
1461
|
.type = .Psychic,
|
|
1557
|
-
.
|
|
1558
|
-
.accuracy = 100,
|
|
1462
|
+
.accuracy = percent(100),
|
|
1559
1463
|
.target = .Other,
|
|
1560
1464
|
},
|
|
1561
1465
|
// PoisonGas
|
|
@@ -1563,8 +1467,7 @@ pub const Move = enum(u8) {
|
|
|
1563
1467
|
.effect = .Poison,
|
|
1564
1468
|
.bp = 0,
|
|
1565
1469
|
.type = .Poison,
|
|
1566
|
-
.
|
|
1567
|
-
.accuracy = 55,
|
|
1470
|
+
.accuracy = percent(55),
|
|
1568
1471
|
.target = .Other,
|
|
1569
1472
|
},
|
|
1570
1473
|
// Barrage
|
|
@@ -1572,8 +1475,7 @@ pub const Move = enum(u8) {
|
|
|
1572
1475
|
.effect = .MultiHit,
|
|
1573
1476
|
.bp = 15,
|
|
1574
1477
|
.type = .Normal,
|
|
1575
|
-
.
|
|
1576
|
-
.accuracy = 85,
|
|
1478
|
+
.accuracy = percent(85),
|
|
1577
1479
|
.target = .Other,
|
|
1578
1480
|
},
|
|
1579
1481
|
// LeechLife
|
|
@@ -1581,8 +1483,7 @@ pub const Move = enum(u8) {
|
|
|
1581
1483
|
.effect = .DrainHP,
|
|
1582
1484
|
.bp = 20,
|
|
1583
1485
|
.type = .Bug,
|
|
1584
|
-
.
|
|
1585
|
-
.accuracy = 100,
|
|
1486
|
+
.accuracy = percent(100),
|
|
1586
1487
|
.target = .Other,
|
|
1587
1488
|
},
|
|
1588
1489
|
// LovelyKiss
|
|
@@ -1590,8 +1491,7 @@ pub const Move = enum(u8) {
|
|
|
1590
1491
|
.effect = .Sleep,
|
|
1591
1492
|
.bp = 0,
|
|
1592
1493
|
.type = .Normal,
|
|
1593
|
-
.
|
|
1594
|
-
.accuracy = 75,
|
|
1494
|
+
.accuracy = percent(75),
|
|
1595
1495
|
.target = .Other,
|
|
1596
1496
|
},
|
|
1597
1497
|
// SkyAttack
|
|
@@ -1599,17 +1499,16 @@ pub const Move = enum(u8) {
|
|
|
1599
1499
|
.effect = .SkyAttack,
|
|
1600
1500
|
.bp = 140,
|
|
1601
1501
|
.type = .Flying,
|
|
1602
|
-
.
|
|
1603
|
-
.accuracy = 90,
|
|
1502
|
+
.accuracy = percent(90),
|
|
1604
1503
|
.target = .Any,
|
|
1504
|
+
.extra = .{ .sleep_talk = false, .continuous = true },
|
|
1605
1505
|
},
|
|
1606
1506
|
// Transform
|
|
1607
1507
|
.{
|
|
1608
1508
|
.effect = .Transform,
|
|
1609
1509
|
.bp = 0,
|
|
1610
1510
|
.type = .Normal,
|
|
1611
|
-
.
|
|
1612
|
-
.accuracy = 100,
|
|
1511
|
+
.accuracy = percent(100),
|
|
1613
1512
|
.target = .Other,
|
|
1614
1513
|
},
|
|
1615
1514
|
// Bubble
|
|
@@ -1617,28 +1516,25 @@ pub const Move = enum(u8) {
|
|
|
1617
1516
|
.effect = .SpeedDownChance,
|
|
1618
1517
|
.bp = 20,
|
|
1619
1518
|
.type = .Water,
|
|
1620
|
-
.
|
|
1621
|
-
.accuracy = 100,
|
|
1519
|
+
.accuracy = percent(100),
|
|
1622
1520
|
.target = .Foes,
|
|
1623
|
-
.chance =
|
|
1521
|
+
.chance = percent(10),
|
|
1624
1522
|
},
|
|
1625
1523
|
// DizzyPunch
|
|
1626
1524
|
.{
|
|
1627
1525
|
.effect = .ConfusionChance,
|
|
1628
1526
|
.bp = 70,
|
|
1629
1527
|
.type = .Normal,
|
|
1630
|
-
.
|
|
1631
|
-
.accuracy = 100,
|
|
1528
|
+
.accuracy = percent(100),
|
|
1632
1529
|
.target = .Other,
|
|
1633
|
-
.chance =
|
|
1530
|
+
.chance = percent(20),
|
|
1634
1531
|
},
|
|
1635
1532
|
// Spore
|
|
1636
1533
|
.{
|
|
1637
1534
|
.effect = .Sleep,
|
|
1638
1535
|
.bp = 0,
|
|
1639
1536
|
.type = .Grass,
|
|
1640
|
-
.
|
|
1641
|
-
.accuracy = 100,
|
|
1537
|
+
.accuracy = percent(100),
|
|
1642
1538
|
.target = .Other,
|
|
1643
1539
|
},
|
|
1644
1540
|
// Flash
|
|
@@ -1646,8 +1542,7 @@ pub const Move = enum(u8) {
|
|
|
1646
1542
|
.effect = .AccuracyDown1,
|
|
1647
1543
|
.bp = 0,
|
|
1648
1544
|
.type = .Normal,
|
|
1649
|
-
.
|
|
1650
|
-
.accuracy = 70,
|
|
1545
|
+
.accuracy = percent(70),
|
|
1651
1546
|
.target = .Other,
|
|
1652
1547
|
},
|
|
1653
1548
|
// Psywave
|
|
@@ -1655,8 +1550,7 @@ pub const Move = enum(u8) {
|
|
|
1655
1550
|
.effect = .Psywave,
|
|
1656
1551
|
.bp = 0,
|
|
1657
1552
|
.type = .Psychic,
|
|
1658
|
-
.
|
|
1659
|
-
.accuracy = 80,
|
|
1553
|
+
.accuracy = percent(80),
|
|
1660
1554
|
.target = .Other,
|
|
1661
1555
|
},
|
|
1662
1556
|
// Splash
|
|
@@ -1664,8 +1558,7 @@ pub const Move = enum(u8) {
|
|
|
1664
1558
|
.effect = .Splash,
|
|
1665
1559
|
.bp = 0,
|
|
1666
1560
|
.type = .Normal,
|
|
1667
|
-
.
|
|
1668
|
-
.accuracy = 100,
|
|
1561
|
+
.accuracy = percent(100),
|
|
1669
1562
|
.target = .Self,
|
|
1670
1563
|
},
|
|
1671
1564
|
// AcidArmor
|
|
@@ -1673,8 +1566,7 @@ pub const Move = enum(u8) {
|
|
|
1673
1566
|
.effect = .DefenseUp2,
|
|
1674
1567
|
.bp = 0,
|
|
1675
1568
|
.type = .Poison,
|
|
1676
|
-
.
|
|
1677
|
-
.accuracy = 100,
|
|
1569
|
+
.accuracy = percent(100),
|
|
1678
1570
|
.target = .Self,
|
|
1679
1571
|
},
|
|
1680
1572
|
// Crabhammer
|
|
@@ -1682,8 +1574,7 @@ pub const Move = enum(u8) {
|
|
|
1682
1574
|
.effect = .HighCritical,
|
|
1683
1575
|
.bp = 90,
|
|
1684
1576
|
.type = .Water,
|
|
1685
|
-
.
|
|
1686
|
-
.accuracy = 85,
|
|
1577
|
+
.accuracy = percent(85),
|
|
1687
1578
|
.target = .Other,
|
|
1688
1579
|
},
|
|
1689
1580
|
// Explosion
|
|
@@ -1691,8 +1582,7 @@ pub const Move = enum(u8) {
|
|
|
1691
1582
|
.effect = .Explode,
|
|
1692
1583
|
.bp = 250,
|
|
1693
1584
|
.type = .Normal,
|
|
1694
|
-
.
|
|
1695
|
-
.accuracy = 100,
|
|
1585
|
+
.accuracy = percent(100),
|
|
1696
1586
|
.target = .AllOthers,
|
|
1697
1587
|
},
|
|
1698
1588
|
// FurySwipes
|
|
@@ -1700,8 +1590,7 @@ pub const Move = enum(u8) {
|
|
|
1700
1590
|
.effect = .MultiHit,
|
|
1701
1591
|
.bp = 18,
|
|
1702
1592
|
.type = .Normal,
|
|
1703
|
-
.
|
|
1704
|
-
.accuracy = 80,
|
|
1593
|
+
.accuracy = percent(80),
|
|
1705
1594
|
.target = .Other,
|
|
1706
1595
|
},
|
|
1707
1596
|
// Bonemerang
|
|
@@ -1709,8 +1598,7 @@ pub const Move = enum(u8) {
|
|
|
1709
1598
|
.effect = .DoubleHit,
|
|
1710
1599
|
.bp = 50,
|
|
1711
1600
|
.type = .Ground,
|
|
1712
|
-
.
|
|
1713
|
-
.accuracy = 90,
|
|
1601
|
+
.accuracy = percent(90),
|
|
1714
1602
|
.target = .Other,
|
|
1715
1603
|
},
|
|
1716
1604
|
// Rest
|
|
@@ -1718,8 +1606,7 @@ pub const Move = enum(u8) {
|
|
|
1718
1606
|
.effect = .Heal,
|
|
1719
1607
|
.bp = 0,
|
|
1720
1608
|
.type = .Psychic,
|
|
1721
|
-
.
|
|
1722
|
-
.accuracy = 100,
|
|
1609
|
+
.accuracy = percent(100),
|
|
1723
1610
|
.target = .Self,
|
|
1724
1611
|
},
|
|
1725
1612
|
// RockSlide
|
|
@@ -1727,28 +1614,25 @@ pub const Move = enum(u8) {
|
|
|
1727
1614
|
.effect = .FlinchChance,
|
|
1728
1615
|
.bp = 75,
|
|
1729
1616
|
.type = .Rock,
|
|
1730
|
-
.
|
|
1731
|
-
.accuracy = 90,
|
|
1617
|
+
.accuracy = percent(90),
|
|
1732
1618
|
.target = .Foes,
|
|
1733
|
-
.chance =
|
|
1619
|
+
.chance = percent(30),
|
|
1734
1620
|
},
|
|
1735
1621
|
// HyperFang
|
|
1736
1622
|
.{
|
|
1737
1623
|
.effect = .FlinchChance,
|
|
1738
1624
|
.bp = 80,
|
|
1739
1625
|
.type = .Normal,
|
|
1740
|
-
.
|
|
1741
|
-
.accuracy = 90,
|
|
1626
|
+
.accuracy = percent(90),
|
|
1742
1627
|
.target = .Other,
|
|
1743
|
-
.chance =
|
|
1628
|
+
.chance = percent(10),
|
|
1744
1629
|
},
|
|
1745
1630
|
// Sharpen
|
|
1746
1631
|
.{
|
|
1747
1632
|
.effect = .AttackUp1,
|
|
1748
1633
|
.bp = 0,
|
|
1749
1634
|
.type = .Normal,
|
|
1750
|
-
.
|
|
1751
|
-
.accuracy = 100,
|
|
1635
|
+
.accuracy = percent(100),
|
|
1752
1636
|
.target = .Self,
|
|
1753
1637
|
},
|
|
1754
1638
|
// Conversion
|
|
@@ -1756,8 +1640,7 @@ pub const Move = enum(u8) {
|
|
|
1756
1640
|
.effect = .Conversion,
|
|
1757
1641
|
.bp = 0,
|
|
1758
1642
|
.type = .Normal,
|
|
1759
|
-
.
|
|
1760
|
-
.accuracy = 100,
|
|
1643
|
+
.accuracy = percent(100),
|
|
1761
1644
|
.target = .Self,
|
|
1762
1645
|
},
|
|
1763
1646
|
// TriAttack
|
|
@@ -1765,18 +1648,16 @@ pub const Move = enum(u8) {
|
|
|
1765
1648
|
.effect = .TriAttack,
|
|
1766
1649
|
.bp = 80,
|
|
1767
1650
|
.type = .Normal,
|
|
1768
|
-
.
|
|
1769
|
-
.accuracy = 100,
|
|
1651
|
+
.accuracy = percent(100),
|
|
1770
1652
|
.target = .Other,
|
|
1771
|
-
.chance =
|
|
1653
|
+
.chance = percent(20),
|
|
1772
1654
|
},
|
|
1773
1655
|
// SuperFang
|
|
1774
1656
|
.{
|
|
1775
1657
|
.effect = .SuperFang,
|
|
1776
1658
|
.bp = 0,
|
|
1777
1659
|
.type = .Normal,
|
|
1778
|
-
.
|
|
1779
|
-
.accuracy = 90,
|
|
1660
|
+
.accuracy = percent(90),
|
|
1780
1661
|
.target = .Other,
|
|
1781
1662
|
},
|
|
1782
1663
|
// Slash
|
|
@@ -1784,8 +1665,7 @@ pub const Move = enum(u8) {
|
|
|
1784
1665
|
.effect = .HighCritical,
|
|
1785
1666
|
.bp = 70,
|
|
1786
1667
|
.type = .Normal,
|
|
1787
|
-
.
|
|
1788
|
-
.accuracy = 100,
|
|
1668
|
+
.accuracy = percent(100),
|
|
1789
1669
|
.target = .Other,
|
|
1790
1670
|
},
|
|
1791
1671
|
// Substitute
|
|
@@ -1793,8 +1673,7 @@ pub const Move = enum(u8) {
|
|
|
1793
1673
|
.effect = .Substitute,
|
|
1794
1674
|
.bp = 0,
|
|
1795
1675
|
.type = .Normal,
|
|
1796
|
-
.
|
|
1797
|
-
.accuracy = 100,
|
|
1676
|
+
.accuracy = percent(100),
|
|
1798
1677
|
.target = .Self,
|
|
1799
1678
|
},
|
|
1800
1679
|
// Struggle
|
|
@@ -1802,26 +1681,25 @@ pub const Move = enum(u8) {
|
|
|
1802
1681
|
.effect = .Recoil,
|
|
1803
1682
|
.bp = 50,
|
|
1804
1683
|
.type = .Normal,
|
|
1805
|
-
.
|
|
1806
|
-
.accuracy = 100,
|
|
1684
|
+
.accuracy = percent(100),
|
|
1807
1685
|
.target = .RandomFoe,
|
|
1686
|
+
.extra = .{ .metronome = false },
|
|
1808
1687
|
},
|
|
1809
1688
|
// Sketch
|
|
1810
1689
|
.{
|
|
1811
1690
|
.effect = .Sketch,
|
|
1812
1691
|
.bp = 0,
|
|
1813
1692
|
.type = .Normal,
|
|
1814
|
-
.
|
|
1815
|
-
.accuracy = 100,
|
|
1693
|
+
.accuracy = percent(100),
|
|
1816
1694
|
.target = .Other,
|
|
1695
|
+
.extra = .{ .metronome = false },
|
|
1817
1696
|
},
|
|
1818
1697
|
// TripleKick
|
|
1819
1698
|
.{
|
|
1820
1699
|
.effect = .TripleKick,
|
|
1821
1700
|
.bp = 10,
|
|
1822
1701
|
.type = .Fighting,
|
|
1823
|
-
.
|
|
1824
|
-
.accuracy = 90,
|
|
1702
|
+
.accuracy = percent(90),
|
|
1825
1703
|
.target = .Other,
|
|
1826
1704
|
},
|
|
1827
1705
|
// Thief
|
|
@@ -1829,18 +1707,17 @@ pub const Move = enum(u8) {
|
|
|
1829
1707
|
.effect = .Thief,
|
|
1830
1708
|
.bp = 40,
|
|
1831
1709
|
.type = .Dark,
|
|
1832
|
-
.
|
|
1833
|
-
.accuracy = 100,
|
|
1710
|
+
.accuracy = percent(100),
|
|
1834
1711
|
.target = .Other,
|
|
1835
|
-
.chance =
|
|
1712
|
+
.chance = percent(100),
|
|
1713
|
+
.extra = .{ .metronome = false },
|
|
1836
1714
|
},
|
|
1837
1715
|
// SpiderWeb
|
|
1838
1716
|
.{
|
|
1839
1717
|
.effect = .MeanLook,
|
|
1840
1718
|
.bp = 0,
|
|
1841
1719
|
.type = .Bug,
|
|
1842
|
-
.
|
|
1843
|
-
.accuracy = 100,
|
|
1720
|
+
.accuracy = percent(100),
|
|
1844
1721
|
.target = .Other,
|
|
1845
1722
|
},
|
|
1846
1723
|
// MindReader
|
|
@@ -1848,8 +1725,7 @@ pub const Move = enum(u8) {
|
|
|
1848
1725
|
.effect = .LockOn,
|
|
1849
1726
|
.bp = 0,
|
|
1850
1727
|
.type = .Normal,
|
|
1851
|
-
.
|
|
1852
|
-
.accuracy = 100,
|
|
1728
|
+
.accuracy = percent(100),
|
|
1853
1729
|
.target = .Other,
|
|
1854
1730
|
},
|
|
1855
1731
|
// Nightmare
|
|
@@ -1857,8 +1733,7 @@ pub const Move = enum(u8) {
|
|
|
1857
1733
|
.effect = .Nightmare,
|
|
1858
1734
|
.bp = 0,
|
|
1859
1735
|
.type = .Ghost,
|
|
1860
|
-
.
|
|
1861
|
-
.accuracy = 100,
|
|
1736
|
+
.accuracy = percent(100),
|
|
1862
1737
|
.target = .Other,
|
|
1863
1738
|
},
|
|
1864
1739
|
// FlameWheel
|
|
@@ -1866,28 +1741,25 @@ pub const Move = enum(u8) {
|
|
|
1866
1741
|
.effect = .FlameWheel,
|
|
1867
1742
|
.bp = 60,
|
|
1868
1743
|
.type = .Fire,
|
|
1869
|
-
.
|
|
1870
|
-
.accuracy = 100,
|
|
1744
|
+
.accuracy = percent(100),
|
|
1871
1745
|
.target = .Other,
|
|
1872
|
-
.chance =
|
|
1746
|
+
.chance = percent(10),
|
|
1873
1747
|
},
|
|
1874
1748
|
// Snore
|
|
1875
1749
|
.{
|
|
1876
1750
|
.effect = .Snore,
|
|
1877
1751
|
.bp = 40,
|
|
1878
1752
|
.type = .Normal,
|
|
1879
|
-
.
|
|
1880
|
-
.accuracy = 100,
|
|
1753
|
+
.accuracy = percent(100),
|
|
1881
1754
|
.target = .Other,
|
|
1882
|
-
.chance =
|
|
1755
|
+
.chance = percent(30),
|
|
1883
1756
|
},
|
|
1884
1757
|
// Curse
|
|
1885
1758
|
.{
|
|
1886
1759
|
.effect = .Curse,
|
|
1887
1760
|
.bp = 0,
|
|
1888
1761
|
.type = .@"???",
|
|
1889
|
-
.
|
|
1890
|
-
.accuracy = 100,
|
|
1762
|
+
.accuracy = percent(100),
|
|
1891
1763
|
.target = .Other,
|
|
1892
1764
|
},
|
|
1893
1765
|
// Flail
|
|
@@ -1895,8 +1767,7 @@ pub const Move = enum(u8) {
|
|
|
1895
1767
|
.effect = .Reversal,
|
|
1896
1768
|
.bp = 0,
|
|
1897
1769
|
.type = .Normal,
|
|
1898
|
-
.
|
|
1899
|
-
.accuracy = 100,
|
|
1770
|
+
.accuracy = percent(100),
|
|
1900
1771
|
.target = .Other,
|
|
1901
1772
|
},
|
|
1902
1773
|
// Conversion2
|
|
@@ -1904,8 +1775,7 @@ pub const Move = enum(u8) {
|
|
|
1904
1775
|
.effect = .Conversion2,
|
|
1905
1776
|
.bp = 0,
|
|
1906
1777
|
.type = .Normal,
|
|
1907
|
-
.
|
|
1908
|
-
.accuracy = 100,
|
|
1778
|
+
.accuracy = percent(100),
|
|
1909
1779
|
.target = .Other,
|
|
1910
1780
|
},
|
|
1911
1781
|
// Aeroblast
|
|
@@ -1913,8 +1783,7 @@ pub const Move = enum(u8) {
|
|
|
1913
1783
|
.effect = .HighCritical,
|
|
1914
1784
|
.bp = 100,
|
|
1915
1785
|
.type = .Flying,
|
|
1916
|
-
.
|
|
1917
|
-
.accuracy = 95,
|
|
1786
|
+
.accuracy = percent(95),
|
|
1918
1787
|
.target = .Any,
|
|
1919
1788
|
},
|
|
1920
1789
|
// CottonSpore
|
|
@@ -1922,8 +1791,7 @@ pub const Move = enum(u8) {
|
|
|
1922
1791
|
.effect = .SpeedDown2,
|
|
1923
1792
|
.bp = 0,
|
|
1924
1793
|
.type = .Grass,
|
|
1925
|
-
.
|
|
1926
|
-
.accuracy = 85,
|
|
1794
|
+
.accuracy = percent(85),
|
|
1927
1795
|
.target = .Other,
|
|
1928
1796
|
},
|
|
1929
1797
|
// Reversal
|
|
@@ -1931,8 +1799,7 @@ pub const Move = enum(u8) {
|
|
|
1931
1799
|
.effect = .Reversal,
|
|
1932
1800
|
.bp = 0,
|
|
1933
1801
|
.type = .Fighting,
|
|
1934
|
-
.
|
|
1935
|
-
.accuracy = 100,
|
|
1802
|
+
.accuracy = percent(100),
|
|
1936
1803
|
.target = .Other,
|
|
1937
1804
|
},
|
|
1938
1805
|
// Spite
|
|
@@ -1940,8 +1807,7 @@ pub const Move = enum(u8) {
|
|
|
1940
1807
|
.effect = .Spite,
|
|
1941
1808
|
.bp = 0,
|
|
1942
1809
|
.type = .Ghost,
|
|
1943
|
-
.
|
|
1944
|
-
.accuracy = 100,
|
|
1810
|
+
.accuracy = percent(100),
|
|
1945
1811
|
.target = .Other,
|
|
1946
1812
|
},
|
|
1947
1813
|
// PowderSnow
|
|
@@ -1949,36 +1815,35 @@ pub const Move = enum(u8) {
|
|
|
1949
1815
|
.effect = .FreezeChance,
|
|
1950
1816
|
.bp = 40,
|
|
1951
1817
|
.type = .Ice,
|
|
1952
|
-
.
|
|
1953
|
-
.accuracy = 100,
|
|
1818
|
+
.accuracy = percent(100),
|
|
1954
1819
|
.target = .Foes,
|
|
1955
|
-
.chance =
|
|
1820
|
+
.chance = percent(10),
|
|
1956
1821
|
},
|
|
1957
1822
|
// Protect
|
|
1958
1823
|
.{
|
|
1959
1824
|
.effect = .Protect,
|
|
1960
1825
|
.bp = 0,
|
|
1961
1826
|
.type = .Normal,
|
|
1962
|
-
.
|
|
1963
|
-
.accuracy = 100,
|
|
1827
|
+
.accuracy = percent(100),
|
|
1964
1828
|
.target = .Self,
|
|
1829
|
+
.priority = 2,
|
|
1830
|
+
.extra = .{ .metronome = false },
|
|
1965
1831
|
},
|
|
1966
1832
|
// MachPunch
|
|
1967
1833
|
.{
|
|
1968
1834
|
.effect = .Priority,
|
|
1969
1835
|
.bp = 40,
|
|
1970
1836
|
.type = .Fighting,
|
|
1971
|
-
.
|
|
1972
|
-
.accuracy = 100,
|
|
1837
|
+
.accuracy = percent(100),
|
|
1973
1838
|
.target = .Other,
|
|
1839
|
+
.priority = 1,
|
|
1974
1840
|
},
|
|
1975
1841
|
// ScaryFace
|
|
1976
1842
|
.{
|
|
1977
1843
|
.effect = .SpeedDown2,
|
|
1978
1844
|
.bp = 0,
|
|
1979
1845
|
.type = .Normal,
|
|
1980
|
-
.
|
|
1981
|
-
.accuracy = 90,
|
|
1846
|
+
.accuracy = percent(90),
|
|
1982
1847
|
.target = .Other,
|
|
1983
1848
|
},
|
|
1984
1849
|
// FeintAttack
|
|
@@ -1986,8 +1851,7 @@ pub const Move = enum(u8) {
|
|
|
1986
1851
|
.effect = .AlwaysHit,
|
|
1987
1852
|
.bp = 60,
|
|
1988
1853
|
.type = .Dark,
|
|
1989
|
-
.
|
|
1990
|
-
.accuracy = 100,
|
|
1854
|
+
.accuracy = percent(100),
|
|
1991
1855
|
.target = .Other,
|
|
1992
1856
|
},
|
|
1993
1857
|
// SweetKiss
|
|
@@ -1995,8 +1859,7 @@ pub const Move = enum(u8) {
|
|
|
1995
1859
|
.effect = .Confusion,
|
|
1996
1860
|
.bp = 0,
|
|
1997
1861
|
.type = .Normal,
|
|
1998
|
-
.
|
|
1999
|
-
.accuracy = 75,
|
|
1862
|
+
.accuracy = percent(75),
|
|
2000
1863
|
.target = .Other,
|
|
2001
1864
|
},
|
|
2002
1865
|
// BellyDrum
|
|
@@ -2004,8 +1867,7 @@ pub const Move = enum(u8) {
|
|
|
2004
1867
|
.effect = .BellyDrum,
|
|
2005
1868
|
.bp = 0,
|
|
2006
1869
|
.type = .Normal,
|
|
2007
|
-
.
|
|
2008
|
-
.accuracy = 100,
|
|
1870
|
+
.accuracy = percent(100),
|
|
2009
1871
|
.target = .Self,
|
|
2010
1872
|
},
|
|
2011
1873
|
// SludgeBomb
|
|
@@ -2013,38 +1875,34 @@ pub const Move = enum(u8) {
|
|
|
2013
1875
|
.effect = .PoisonChance,
|
|
2014
1876
|
.bp = 90,
|
|
2015
1877
|
.type = .Poison,
|
|
2016
|
-
.
|
|
2017
|
-
.accuracy = 100,
|
|
1878
|
+
.accuracy = percent(100),
|
|
2018
1879
|
.target = .Other,
|
|
2019
|
-
.chance =
|
|
1880
|
+
.chance = percent(30),
|
|
2020
1881
|
},
|
|
2021
1882
|
// MudSlap
|
|
2022
1883
|
.{
|
|
2023
1884
|
.effect = .AccuracyDownChance,
|
|
2024
1885
|
.bp = 20,
|
|
2025
1886
|
.type = .Ground,
|
|
2026
|
-
.
|
|
2027
|
-
.accuracy = 100,
|
|
1887
|
+
.accuracy = percent(100),
|
|
2028
1888
|
.target = .Other,
|
|
2029
|
-
.chance =
|
|
1889
|
+
.chance = percent(100),
|
|
2030
1890
|
},
|
|
2031
1891
|
// Octazooka
|
|
2032
1892
|
.{
|
|
2033
1893
|
.effect = .AccuracyDownChance,
|
|
2034
1894
|
.bp = 65,
|
|
2035
1895
|
.type = .Water,
|
|
2036
|
-
.
|
|
2037
|
-
.accuracy = 85,
|
|
1896
|
+
.accuracy = percent(85),
|
|
2038
1897
|
.target = .Other,
|
|
2039
|
-
.chance =
|
|
1898
|
+
.chance = percent(50),
|
|
2040
1899
|
},
|
|
2041
1900
|
// Spikes
|
|
2042
1901
|
.{
|
|
2043
1902
|
.effect = .Spikes,
|
|
2044
1903
|
.bp = 0,
|
|
2045
1904
|
.type = .Ground,
|
|
2046
|
-
.
|
|
2047
|
-
.accuracy = 100,
|
|
1905
|
+
.accuracy = percent(100),
|
|
2048
1906
|
.target = .FoeSide,
|
|
2049
1907
|
},
|
|
2050
1908
|
// ZapCannon
|
|
@@ -2052,18 +1910,16 @@ pub const Move = enum(u8) {
|
|
|
2052
1910
|
.effect = .ParalyzeChance,
|
|
2053
1911
|
.bp = 100,
|
|
2054
1912
|
.type = .Electric,
|
|
2055
|
-
.
|
|
2056
|
-
.accuracy = 50,
|
|
1913
|
+
.accuracy = percent(50),
|
|
2057
1914
|
.target = .Other,
|
|
2058
|
-
.chance =
|
|
1915
|
+
.chance = percent(100),
|
|
2059
1916
|
},
|
|
2060
1917
|
// Foresight
|
|
2061
1918
|
.{
|
|
2062
1919
|
.effect = .Foresight,
|
|
2063
1920
|
.bp = 0,
|
|
2064
1921
|
.type = .Normal,
|
|
2065
|
-
.
|
|
2066
|
-
.accuracy = 100,
|
|
1922
|
+
.accuracy = percent(100),
|
|
2067
1923
|
.target = .Other,
|
|
2068
1924
|
},
|
|
2069
1925
|
// DestinyBond
|
|
@@ -2071,17 +1927,16 @@ pub const Move = enum(u8) {
|
|
|
2071
1927
|
.effect = .DestinyBond,
|
|
2072
1928
|
.bp = 0,
|
|
2073
1929
|
.type = .Ghost,
|
|
2074
|
-
.
|
|
2075
|
-
.accuracy = 100,
|
|
1930
|
+
.accuracy = percent(100),
|
|
2076
1931
|
.target = .Self,
|
|
1932
|
+
.extra = .{ .metronome = false },
|
|
2077
1933
|
},
|
|
2078
1934
|
// PerishSong
|
|
2079
1935
|
.{
|
|
2080
1936
|
.effect = .PerishSong,
|
|
2081
1937
|
.bp = 0,
|
|
2082
1938
|
.type = .Normal,
|
|
2083
|
-
.
|
|
2084
|
-
.accuracy = 100,
|
|
1939
|
+
.accuracy = percent(100),
|
|
2085
1940
|
.target = .All,
|
|
2086
1941
|
},
|
|
2087
1942
|
// IcyWind
|
|
@@ -2089,27 +1944,26 @@ pub const Move = enum(u8) {
|
|
|
2089
1944
|
.effect = .SpeedDownChance,
|
|
2090
1945
|
.bp = 55,
|
|
2091
1946
|
.type = .Ice,
|
|
2092
|
-
.
|
|
2093
|
-
.accuracy = 95,
|
|
1947
|
+
.accuracy = percent(95),
|
|
2094
1948
|
.target = .Foes,
|
|
2095
|
-
.chance =
|
|
1949
|
+
.chance = percent(100),
|
|
2096
1950
|
},
|
|
2097
1951
|
// Detect
|
|
2098
1952
|
.{
|
|
2099
1953
|
.effect = .Protect,
|
|
2100
1954
|
.bp = 0,
|
|
2101
1955
|
.type = .Fighting,
|
|
2102
|
-
.
|
|
2103
|
-
.accuracy = 100,
|
|
1956
|
+
.accuracy = percent(100),
|
|
2104
1957
|
.target = .Self,
|
|
1958
|
+
.priority = 2,
|
|
1959
|
+
.extra = .{ .metronome = false },
|
|
2105
1960
|
},
|
|
2106
1961
|
// BoneRush
|
|
2107
1962
|
.{
|
|
2108
1963
|
.effect = .MultiHit,
|
|
2109
1964
|
.bp = 25,
|
|
2110
1965
|
.type = .Ground,
|
|
2111
|
-
.
|
|
2112
|
-
.accuracy = 80,
|
|
1966
|
+
.accuracy = percent(80),
|
|
2113
1967
|
.target = .Other,
|
|
2114
1968
|
},
|
|
2115
1969
|
// LockOn
|
|
@@ -2117,8 +1971,7 @@ pub const Move = enum(u8) {
|
|
|
2117
1971
|
.effect = .LockOn,
|
|
2118
1972
|
.bp = 0,
|
|
2119
1973
|
.type = .Normal,
|
|
2120
|
-
.
|
|
2121
|
-
.accuracy = 100,
|
|
1974
|
+
.accuracy = percent(100),
|
|
2122
1975
|
.target = .Other,
|
|
2123
1976
|
},
|
|
2124
1977
|
// Outrage
|
|
@@ -2126,17 +1979,16 @@ pub const Move = enum(u8) {
|
|
|
2126
1979
|
.effect = .Thrashing,
|
|
2127
1980
|
.bp = 90,
|
|
2128
1981
|
.type = .Dragon,
|
|
2129
|
-
.
|
|
2130
|
-
.accuracy = 100,
|
|
1982
|
+
.accuracy = percent(100),
|
|
2131
1983
|
.target = .RandomFoe,
|
|
1984
|
+
.extra = .{ .continuous = true },
|
|
2132
1985
|
},
|
|
2133
1986
|
// Sandstorm
|
|
2134
1987
|
.{
|
|
2135
1988
|
.effect = .Sandstorm,
|
|
2136
1989
|
.bp = 0,
|
|
2137
1990
|
.type = .Rock,
|
|
2138
|
-
.
|
|
2139
|
-
.accuracy = 100,
|
|
1991
|
+
.accuracy = percent(100),
|
|
2140
1992
|
.target = .All,
|
|
2141
1993
|
},
|
|
2142
1994
|
// GigaDrain
|
|
@@ -2144,8 +1996,7 @@ pub const Move = enum(u8) {
|
|
|
2144
1996
|
.effect = .DrainHP,
|
|
2145
1997
|
.bp = 60,
|
|
2146
1998
|
.type = .Grass,
|
|
2147
|
-
.
|
|
2148
|
-
.accuracy = 100,
|
|
1999
|
+
.accuracy = percent(100),
|
|
2149
2000
|
.target = .Other,
|
|
2150
2001
|
},
|
|
2151
2002
|
// Endure
|
|
@@ -2153,17 +2004,17 @@ pub const Move = enum(u8) {
|
|
|
2153
2004
|
.effect = .Endure,
|
|
2154
2005
|
.bp = 0,
|
|
2155
2006
|
.type = .Normal,
|
|
2156
|
-
.
|
|
2157
|
-
.accuracy = 100,
|
|
2007
|
+
.accuracy = percent(100),
|
|
2158
2008
|
.target = .Self,
|
|
2009
|
+
.priority = 2,
|
|
2010
|
+
.extra = .{ .metronome = false },
|
|
2159
2011
|
},
|
|
2160
2012
|
// Charm
|
|
2161
2013
|
.{
|
|
2162
2014
|
.effect = .AttackDown2,
|
|
2163
2015
|
.bp = 0,
|
|
2164
2016
|
.type = .Normal,
|
|
2165
|
-
.
|
|
2166
|
-
.accuracy = 100,
|
|
2017
|
+
.accuracy = percent(100),
|
|
2167
2018
|
.target = .Other,
|
|
2168
2019
|
},
|
|
2169
2020
|
// Rollout
|
|
@@ -2171,17 +2022,16 @@ pub const Move = enum(u8) {
|
|
|
2171
2022
|
.effect = .Rollout,
|
|
2172
2023
|
.bp = 30,
|
|
2173
2024
|
.type = .Rock,
|
|
2174
|
-
.
|
|
2175
|
-
.accuracy = 90,
|
|
2025
|
+
.accuracy = percent(90),
|
|
2176
2026
|
.target = .Other,
|
|
2027
|
+
.extra = .{ .continuous = true },
|
|
2177
2028
|
},
|
|
2178
2029
|
// FalseSwipe
|
|
2179
2030
|
.{
|
|
2180
2031
|
.effect = .FalseSwipe,
|
|
2181
2032
|
.bp = 40,
|
|
2182
2033
|
.type = .Normal,
|
|
2183
|
-
.
|
|
2184
|
-
.accuracy = 100,
|
|
2034
|
+
.accuracy = percent(100),
|
|
2185
2035
|
.target = .Other,
|
|
2186
2036
|
},
|
|
2187
2037
|
// Swagger
|
|
@@ -2189,8 +2039,7 @@ pub const Move = enum(u8) {
|
|
|
2189
2039
|
.effect = .Swagger,
|
|
2190
2040
|
.bp = 0,
|
|
2191
2041
|
.type = .Normal,
|
|
2192
|
-
.
|
|
2193
|
-
.accuracy = 90,
|
|
2042
|
+
.accuracy = percent(90),
|
|
2194
2043
|
.target = .Other,
|
|
2195
2044
|
},
|
|
2196
2045
|
// MilkDrink
|
|
@@ -2198,8 +2047,7 @@ pub const Move = enum(u8) {
|
|
|
2198
2047
|
.effect = .Heal,
|
|
2199
2048
|
.bp = 0,
|
|
2200
2049
|
.type = .Normal,
|
|
2201
|
-
.
|
|
2202
|
-
.accuracy = 100,
|
|
2050
|
+
.accuracy = percent(100),
|
|
2203
2051
|
.target = .Self,
|
|
2204
2052
|
},
|
|
2205
2053
|
// Spark
|
|
@@ -2207,18 +2055,16 @@ pub const Move = enum(u8) {
|
|
|
2207
2055
|
.effect = .ParalyzeChance,
|
|
2208
2056
|
.bp = 65,
|
|
2209
2057
|
.type = .Electric,
|
|
2210
|
-
.
|
|
2211
|
-
.accuracy = 100,
|
|
2058
|
+
.accuracy = percent(100),
|
|
2212
2059
|
.target = .Other,
|
|
2213
|
-
.chance =
|
|
2060
|
+
.chance = percent(30),
|
|
2214
2061
|
},
|
|
2215
2062
|
// FuryCutter
|
|
2216
2063
|
.{
|
|
2217
2064
|
.effect = .FuryCutter,
|
|
2218
2065
|
.bp = 10,
|
|
2219
2066
|
.type = .Bug,
|
|
2220
|
-
.
|
|
2221
|
-
.accuracy = 95,
|
|
2067
|
+
.accuracy = percent(95),
|
|
2222
2068
|
.target = .Other,
|
|
2223
2069
|
},
|
|
2224
2070
|
// SteelWing
|
|
@@ -2226,18 +2072,16 @@ pub const Move = enum(u8) {
|
|
|
2226
2072
|
.effect = .DefenseUpChance,
|
|
2227
2073
|
.bp = 70,
|
|
2228
2074
|
.type = .Steel,
|
|
2229
|
-
.
|
|
2230
|
-
.accuracy = 90,
|
|
2075
|
+
.accuracy = percent(90),
|
|
2231
2076
|
.target = .Other,
|
|
2232
|
-
.chance =
|
|
2077
|
+
.chance = percent(10),
|
|
2233
2078
|
},
|
|
2234
2079
|
// MeanLook
|
|
2235
2080
|
.{
|
|
2236
2081
|
.effect = .MeanLook,
|
|
2237
2082
|
.bp = 0,
|
|
2238
2083
|
.type = .Normal,
|
|
2239
|
-
.
|
|
2240
|
-
.accuracy = 100,
|
|
2084
|
+
.accuracy = percent(100),
|
|
2241
2085
|
.target = .Other,
|
|
2242
2086
|
},
|
|
2243
2087
|
// Attract
|
|
@@ -2245,8 +2089,7 @@ pub const Move = enum(u8) {
|
|
|
2245
2089
|
.effect = .Attract,
|
|
2246
2090
|
.bp = 0,
|
|
2247
2091
|
.type = .Normal,
|
|
2248
|
-
.
|
|
2249
|
-
.accuracy = 100,
|
|
2092
|
+
.accuracy = percent(100),
|
|
2250
2093
|
.target = .Other,
|
|
2251
2094
|
},
|
|
2252
2095
|
// SleepTalk
|
|
@@ -2254,17 +2097,16 @@ pub const Move = enum(u8) {
|
|
|
2254
2097
|
.effect = .SleepTalk,
|
|
2255
2098
|
.bp = 0,
|
|
2256
2099
|
.type = .Normal,
|
|
2257
|
-
.
|
|
2258
|
-
.accuracy = 100,
|
|
2100
|
+
.accuracy = percent(100),
|
|
2259
2101
|
.target = .Self,
|
|
2102
|
+
.extra = .{ .metronome = false },
|
|
2260
2103
|
},
|
|
2261
2104
|
// HealBell
|
|
2262
2105
|
.{
|
|
2263
2106
|
.effect = .HealBell,
|
|
2264
2107
|
.bp = 0,
|
|
2265
2108
|
.type = .Normal,
|
|
2266
|
-
.
|
|
2267
|
-
.accuracy = 100,
|
|
2109
|
+
.accuracy = percent(100),
|
|
2268
2110
|
.target = .Self,
|
|
2269
2111
|
},
|
|
2270
2112
|
// Return
|
|
@@ -2272,8 +2114,7 @@ pub const Move = enum(u8) {
|
|
|
2272
2114
|
.effect = .Return,
|
|
2273
2115
|
.bp = 0,
|
|
2274
2116
|
.type = .Normal,
|
|
2275
|
-
.
|
|
2276
|
-
.accuracy = 100,
|
|
2117
|
+
.accuracy = percent(100),
|
|
2277
2118
|
.target = .Other,
|
|
2278
2119
|
},
|
|
2279
2120
|
// Present
|
|
@@ -2281,8 +2122,7 @@ pub const Move = enum(u8) {
|
|
|
2281
2122
|
.effect = .Present,
|
|
2282
2123
|
.bp = 0,
|
|
2283
2124
|
.type = .Normal,
|
|
2284
|
-
.
|
|
2285
|
-
.accuracy = 90,
|
|
2125
|
+
.accuracy = percent(90),
|
|
2286
2126
|
.target = .Other,
|
|
2287
2127
|
},
|
|
2288
2128
|
// Frustration
|
|
@@ -2290,8 +2130,7 @@ pub const Move = enum(u8) {
|
|
|
2290
2130
|
.effect = .Frustration,
|
|
2291
2131
|
.bp = 0,
|
|
2292
2132
|
.type = .Normal,
|
|
2293
|
-
.
|
|
2294
|
-
.accuracy = 100,
|
|
2133
|
+
.accuracy = percent(100),
|
|
2295
2134
|
.target = .Other,
|
|
2296
2135
|
},
|
|
2297
2136
|
// Safeguard
|
|
@@ -2299,8 +2138,7 @@ pub const Move = enum(u8) {
|
|
|
2299
2138
|
.effect = .Safeguard,
|
|
2300
2139
|
.bp = 0,
|
|
2301
2140
|
.type = .Normal,
|
|
2302
|
-
.
|
|
2303
|
-
.accuracy = 100,
|
|
2141
|
+
.accuracy = percent(100),
|
|
2304
2142
|
.target = .AllySide,
|
|
2305
2143
|
},
|
|
2306
2144
|
// PainSplit
|
|
@@ -2308,8 +2146,7 @@ pub const Move = enum(u8) {
|
|
|
2308
2146
|
.effect = .PainSplit,
|
|
2309
2147
|
.bp = 0,
|
|
2310
2148
|
.type = .Normal,
|
|
2311
|
-
.
|
|
2312
|
-
.accuracy = 100,
|
|
2149
|
+
.accuracy = percent(100),
|
|
2313
2150
|
.target = .Other,
|
|
2314
2151
|
},
|
|
2315
2152
|
// SacredFire
|
|
@@ -2317,37 +2154,34 @@ pub const Move = enum(u8) {
|
|
|
2317
2154
|
.effect = .SacredFire,
|
|
2318
2155
|
.bp = 100,
|
|
2319
2156
|
.type = .Fire,
|
|
2320
|
-
.
|
|
2321
|
-
.accuracy = 95,
|
|
2157
|
+
.accuracy = percent(95),
|
|
2322
2158
|
.target = .Other,
|
|
2323
|
-
.chance =
|
|
2159
|
+
.chance = percent(50),
|
|
2324
2160
|
},
|
|
2325
2161
|
// Magnitude
|
|
2326
2162
|
.{
|
|
2327
2163
|
.effect = .Magnitude,
|
|
2328
2164
|
.bp = 0,
|
|
2329
2165
|
.type = .Ground,
|
|
2330
|
-
.
|
|
2331
|
-
.accuracy = 100,
|
|
2166
|
+
.accuracy = percent(100),
|
|
2332
2167
|
.target = .AllOthers,
|
|
2168
|
+
.extra = .{ .underground = true },
|
|
2333
2169
|
},
|
|
2334
2170
|
// DynamicPunch
|
|
2335
2171
|
.{
|
|
2336
2172
|
.effect = .ConfusionChance,
|
|
2337
2173
|
.bp = 100,
|
|
2338
2174
|
.type = .Fighting,
|
|
2339
|
-
.
|
|
2340
|
-
.accuracy = 50,
|
|
2175
|
+
.accuracy = percent(50),
|
|
2341
2176
|
.target = .Other,
|
|
2342
|
-
.chance =
|
|
2177
|
+
.chance = percent(100),
|
|
2343
2178
|
},
|
|
2344
2179
|
// Megahorn
|
|
2345
2180
|
.{
|
|
2346
2181
|
.effect = .None,
|
|
2347
2182
|
.bp = 120,
|
|
2348
2183
|
.type = .Bug,
|
|
2349
|
-
.
|
|
2350
|
-
.accuracy = 85,
|
|
2184
|
+
.accuracy = percent(85),
|
|
2351
2185
|
.target = .Other,
|
|
2352
2186
|
},
|
|
2353
2187
|
// DragonBreath
|
|
@@ -2355,18 +2189,16 @@ pub const Move = enum(u8) {
|
|
|
2355
2189
|
.effect = .ParalyzeChance,
|
|
2356
2190
|
.bp = 60,
|
|
2357
2191
|
.type = .Dragon,
|
|
2358
|
-
.
|
|
2359
|
-
.accuracy = 100,
|
|
2192
|
+
.accuracy = percent(100),
|
|
2360
2193
|
.target = .Other,
|
|
2361
|
-
.chance =
|
|
2194
|
+
.chance = percent(30),
|
|
2362
2195
|
},
|
|
2363
2196
|
// BatonPass
|
|
2364
2197
|
.{
|
|
2365
2198
|
.effect = .BatonPass,
|
|
2366
2199
|
.bp = 0,
|
|
2367
2200
|
.type = .Normal,
|
|
2368
|
-
.
|
|
2369
|
-
.accuracy = 100,
|
|
2201
|
+
.accuracy = percent(100),
|
|
2370
2202
|
.target = .Self,
|
|
2371
2203
|
},
|
|
2372
2204
|
// Encore
|
|
@@ -2374,8 +2206,7 @@ pub const Move = enum(u8) {
|
|
|
2374
2206
|
.effect = .Encore,
|
|
2375
2207
|
.bp = 0,
|
|
2376
2208
|
.type = .Normal,
|
|
2377
|
-
.
|
|
2378
|
-
.accuracy = 100,
|
|
2209
|
+
.accuracy = percent(100),
|
|
2379
2210
|
.target = .Other,
|
|
2380
2211
|
},
|
|
2381
2212
|
// Pursuit
|
|
@@ -2383,8 +2214,7 @@ pub const Move = enum(u8) {
|
|
|
2383
2214
|
.effect = .Pursuit,
|
|
2384
2215
|
.bp = 40,
|
|
2385
2216
|
.type = .Dark,
|
|
2386
|
-
.
|
|
2387
|
-
.accuracy = 100,
|
|
2217
|
+
.accuracy = percent(100),
|
|
2388
2218
|
.target = .Other,
|
|
2389
2219
|
},
|
|
2390
2220
|
// RapidSpin
|
|
@@ -2392,8 +2222,7 @@ pub const Move = enum(u8) {
|
|
|
2392
2222
|
.effect = .RapidSpin,
|
|
2393
2223
|
.bp = 20,
|
|
2394
2224
|
.type = .Normal,
|
|
2395
|
-
.
|
|
2396
|
-
.accuracy = 100,
|
|
2225
|
+
.accuracy = percent(100),
|
|
2397
2226
|
.target = .Other,
|
|
2398
2227
|
},
|
|
2399
2228
|
// SweetScent
|
|
@@ -2401,8 +2230,7 @@ pub const Move = enum(u8) {
|
|
|
2401
2230
|
.effect = .EvasionDown1,
|
|
2402
2231
|
.bp = 0,
|
|
2403
2232
|
.type = .Normal,
|
|
2404
|
-
.
|
|
2405
|
-
.accuracy = 100,
|
|
2233
|
+
.accuracy = percent(100),
|
|
2406
2234
|
.target = .Foes,
|
|
2407
2235
|
},
|
|
2408
2236
|
// IronTail
|
|
@@ -2410,37 +2238,34 @@ pub const Move = enum(u8) {
|
|
|
2410
2238
|
.effect = .DefenseDownChance,
|
|
2411
2239
|
.bp = 100,
|
|
2412
2240
|
.type = .Steel,
|
|
2413
|
-
.
|
|
2414
|
-
.accuracy = 75,
|
|
2241
|
+
.accuracy = percent(75),
|
|
2415
2242
|
.target = .Other,
|
|
2416
|
-
.chance =
|
|
2243
|
+
.chance = percent(30),
|
|
2417
2244
|
},
|
|
2418
2245
|
// MetalClaw
|
|
2419
2246
|
.{
|
|
2420
2247
|
.effect = .AttackUpChance,
|
|
2421
2248
|
.bp = 50,
|
|
2422
2249
|
.type = .Steel,
|
|
2423
|
-
.
|
|
2424
|
-
.accuracy = 95,
|
|
2250
|
+
.accuracy = percent(95),
|
|
2425
2251
|
.target = .Other,
|
|
2426
|
-
.chance =
|
|
2252
|
+
.chance = percent(10),
|
|
2427
2253
|
},
|
|
2428
2254
|
// VitalThrow
|
|
2429
2255
|
.{
|
|
2430
2256
|
.effect = .AlwaysHit,
|
|
2431
2257
|
.bp = 70,
|
|
2432
2258
|
.type = .Fighting,
|
|
2433
|
-
.
|
|
2434
|
-
.accuracy = 100,
|
|
2259
|
+
.accuracy = percent(100),
|
|
2435
2260
|
.target = .Other,
|
|
2261
|
+
.priority = -1,
|
|
2436
2262
|
},
|
|
2437
2263
|
// MorningSun
|
|
2438
2264
|
.{
|
|
2439
2265
|
.effect = .MorningSun,
|
|
2440
2266
|
.bp = 0,
|
|
2441
2267
|
.type = .Normal,
|
|
2442
|
-
.
|
|
2443
|
-
.accuracy = 100,
|
|
2268
|
+
.accuracy = percent(100),
|
|
2444
2269
|
.target = .Self,
|
|
2445
2270
|
},
|
|
2446
2271
|
// Synthesis
|
|
@@ -2448,8 +2273,7 @@ pub const Move = enum(u8) {
|
|
|
2448
2273
|
.effect = .Synthesis,
|
|
2449
2274
|
.bp = 0,
|
|
2450
2275
|
.type = .Grass,
|
|
2451
|
-
.
|
|
2452
|
-
.accuracy = 100,
|
|
2276
|
+
.accuracy = percent(100),
|
|
2453
2277
|
.target = .Self,
|
|
2454
2278
|
},
|
|
2455
2279
|
// Moonlight
|
|
@@ -2457,8 +2281,7 @@ pub const Move = enum(u8) {
|
|
|
2457
2281
|
.effect = .Moonlight,
|
|
2458
2282
|
.bp = 0,
|
|
2459
2283
|
.type = .Normal,
|
|
2460
|
-
.
|
|
2461
|
-
.accuracy = 100,
|
|
2284
|
+
.accuracy = percent(100),
|
|
2462
2285
|
.target = .Self,
|
|
2463
2286
|
},
|
|
2464
2287
|
// HiddenPower
|
|
@@ -2466,8 +2289,7 @@ pub const Move = enum(u8) {
|
|
|
2466
2289
|
.effect = .HiddenPower,
|
|
2467
2290
|
.bp = 0,
|
|
2468
2291
|
.type = .Normal,
|
|
2469
|
-
.
|
|
2470
|
-
.accuracy = 100,
|
|
2292
|
+
.accuracy = percent(100),
|
|
2471
2293
|
.target = .Other,
|
|
2472
2294
|
},
|
|
2473
2295
|
// CrossChop
|
|
@@ -2475,8 +2297,7 @@ pub const Move = enum(u8) {
|
|
|
2475
2297
|
.effect = .HighCritical,
|
|
2476
2298
|
.bp = 100,
|
|
2477
2299
|
.type = .Fighting,
|
|
2478
|
-
.
|
|
2479
|
-
.accuracy = 80,
|
|
2300
|
+
.accuracy = percent(80),
|
|
2480
2301
|
.target = .Other,
|
|
2481
2302
|
},
|
|
2482
2303
|
// Twister
|
|
@@ -2484,18 +2305,17 @@ pub const Move = enum(u8) {
|
|
|
2484
2305
|
.effect = .Twister,
|
|
2485
2306
|
.bp = 40,
|
|
2486
2307
|
.type = .Dragon,
|
|
2487
|
-
.
|
|
2488
|
-
.accuracy = 100,
|
|
2308
|
+
.accuracy = percent(100),
|
|
2489
2309
|
.target = .Foes,
|
|
2490
|
-
.chance =
|
|
2310
|
+
.chance = percent(20),
|
|
2311
|
+
.extra = .{ .flying = true },
|
|
2491
2312
|
},
|
|
2492
2313
|
// RainDance
|
|
2493
2314
|
.{
|
|
2494
2315
|
.effect = .RainDance,
|
|
2495
2316
|
.bp = 0,
|
|
2496
2317
|
.type = .Water,
|
|
2497
|
-
.
|
|
2498
|
-
.accuracy = 100,
|
|
2318
|
+
.accuracy = percent(100),
|
|
2499
2319
|
.target = .All,
|
|
2500
2320
|
},
|
|
2501
2321
|
// SunnyDay
|
|
@@ -2503,8 +2323,7 @@ pub const Move = enum(u8) {
|
|
|
2503
2323
|
.effect = .SunnyDay,
|
|
2504
2324
|
.bp = 0,
|
|
2505
2325
|
.type = .Fire,
|
|
2506
|
-
.
|
|
2507
|
-
.accuracy = 100,
|
|
2326
|
+
.accuracy = percent(100),
|
|
2508
2327
|
.target = .All,
|
|
2509
2328
|
},
|
|
2510
2329
|
// Crunch
|
|
@@ -2512,27 +2331,26 @@ pub const Move = enum(u8) {
|
|
|
2512
2331
|
.effect = .SpDefDownChance,
|
|
2513
2332
|
.bp = 80,
|
|
2514
2333
|
.type = .Dark,
|
|
2515
|
-
.
|
|
2516
|
-
.accuracy = 100,
|
|
2334
|
+
.accuracy = percent(100),
|
|
2517
2335
|
.target = .Other,
|
|
2518
|
-
.chance =
|
|
2336
|
+
.chance = percent(20),
|
|
2519
2337
|
},
|
|
2520
2338
|
// MirrorCoat
|
|
2521
2339
|
.{
|
|
2522
2340
|
.effect = .MirrorCoat,
|
|
2523
2341
|
.bp = 0,
|
|
2524
2342
|
.type = .Psychic,
|
|
2525
|
-
.
|
|
2526
|
-
.accuracy = 100,
|
|
2343
|
+
.accuracy = percent(100),
|
|
2527
2344
|
.target = .Depends,
|
|
2345
|
+
.priority = -1,
|
|
2346
|
+
.extra = .{ .metronome = false },
|
|
2528
2347
|
},
|
|
2529
2348
|
// PsychUp
|
|
2530
2349
|
.{
|
|
2531
2350
|
.effect = .PsychUp,
|
|
2532
2351
|
.bp = 0,
|
|
2533
2352
|
.type = .Normal,
|
|
2534
|
-
.
|
|
2535
|
-
.accuracy = 100,
|
|
2353
|
+
.accuracy = percent(100),
|
|
2536
2354
|
.target = .Other,
|
|
2537
2355
|
},
|
|
2538
2356
|
// ExtremeSpeed
|
|
@@ -2540,37 +2358,34 @@ pub const Move = enum(u8) {
|
|
|
2540
2358
|
.effect = .Priority,
|
|
2541
2359
|
.bp = 80,
|
|
2542
2360
|
.type = .Normal,
|
|
2543
|
-
.
|
|
2544
|
-
.accuracy = 100,
|
|
2361
|
+
.accuracy = percent(100),
|
|
2545
2362
|
.target = .Other,
|
|
2363
|
+
.priority = 1,
|
|
2546
2364
|
},
|
|
2547
2365
|
// AncientPower
|
|
2548
2366
|
.{
|
|
2549
2367
|
.effect = .AllStatUpChance,
|
|
2550
2368
|
.bp = 60,
|
|
2551
2369
|
.type = .Rock,
|
|
2552
|
-
.
|
|
2553
|
-
.accuracy = 100,
|
|
2370
|
+
.accuracy = percent(100),
|
|
2554
2371
|
.target = .Other,
|
|
2555
|
-
.chance =
|
|
2372
|
+
.chance = percent(10),
|
|
2556
2373
|
},
|
|
2557
2374
|
// ShadowBall
|
|
2558
2375
|
.{
|
|
2559
2376
|
.effect = .SpDefDownChance,
|
|
2560
2377
|
.bp = 80,
|
|
2561
2378
|
.type = .Ghost,
|
|
2562
|
-
.
|
|
2563
|
-
.accuracy = 100,
|
|
2379
|
+
.accuracy = percent(100),
|
|
2564
2380
|
.target = .Other,
|
|
2565
|
-
.chance =
|
|
2381
|
+
.chance = percent(20),
|
|
2566
2382
|
},
|
|
2567
2383
|
// FutureSight
|
|
2568
2384
|
.{
|
|
2569
2385
|
.effect = .FutureSight,
|
|
2570
2386
|
.bp = 80,
|
|
2571
2387
|
.type = .Psychic,
|
|
2572
|
-
.
|
|
2573
|
-
.accuracy = 90,
|
|
2388
|
+
.accuracy = percent(90),
|
|
2574
2389
|
.target = .Other,
|
|
2575
2390
|
},
|
|
2576
2391
|
// RockSmash
|
|
@@ -2578,27 +2393,25 @@ pub const Move = enum(u8) {
|
|
|
2578
2393
|
.effect = .DefenseDownChance,
|
|
2579
2394
|
.bp = 20,
|
|
2580
2395
|
.type = .Fighting,
|
|
2581
|
-
.
|
|
2582
|
-
.accuracy = 100,
|
|
2396
|
+
.accuracy = percent(100),
|
|
2583
2397
|
.target = .Other,
|
|
2584
|
-
.chance =
|
|
2398
|
+
.chance = percent(50),
|
|
2585
2399
|
},
|
|
2586
2400
|
// Whirlpool
|
|
2587
2401
|
.{
|
|
2588
2402
|
.effect = .Binding,
|
|
2589
2403
|
.bp = 15,
|
|
2590
2404
|
.type = .Water,
|
|
2591
|
-
.
|
|
2592
|
-
.accuracy = 70,
|
|
2405
|
+
.accuracy = percent(70),
|
|
2593
2406
|
.target = .Other,
|
|
2407
|
+
.extra = .{ .protocol = 5 },
|
|
2594
2408
|
},
|
|
2595
2409
|
// BeatUp
|
|
2596
2410
|
.{
|
|
2597
2411
|
.effect = .BeatUp,
|
|
2598
2412
|
.bp = 10,
|
|
2599
2413
|
.type = .Dark,
|
|
2600
|
-
.
|
|
2601
|
-
.accuracy = 100,
|
|
2414
|
+
.accuracy = percent(100),
|
|
2602
2415
|
.target = .Other,
|
|
2603
2416
|
},
|
|
2604
2417
|
};
|
|
@@ -2651,7 +2464,7 @@ pub const Move = enum(u8) {
|
|
|
2651
2464
|
FixedDamage,
|
|
2652
2465
|
FlameWheel,
|
|
2653
2466
|
FlinchChance,
|
|
2654
|
-
|
|
2467
|
+
FlyDig,
|
|
2655
2468
|
FocusEnergy,
|
|
2656
2469
|
ForceSwitch,
|
|
2657
2470
|
Foresight,
|
|
@@ -2714,7 +2527,7 @@ pub const Move = enum(u8) {
|
|
|
2714
2527
|
Sleep,
|
|
2715
2528
|
SleepTalk,
|
|
2716
2529
|
Snore,
|
|
2717
|
-
|
|
2530
|
+
SolarBeam,
|
|
2718
2531
|
SpAtkUp1,
|
|
2719
2532
|
SpDefDownChance,
|
|
2720
2533
|
SpDefUp2,
|
|
@@ -2745,6 +2558,11 @@ pub const Move = enum(u8) {
|
|
|
2745
2558
|
comptime {
|
|
2746
2559
|
assert(@sizeOf(Effect) == 1);
|
|
2747
2560
|
}
|
|
2561
|
+
|
|
2562
|
+
/// Whether this effect has a high critical rate.
|
|
2563
|
+
pub fn isHighCritical(effect: Effect) bool {
|
|
2564
|
+
return effect == .HighCritical or effect == .RazorWind;
|
|
2565
|
+
}
|
|
2748
2566
|
};
|
|
2749
2567
|
|
|
2750
2568
|
const Target = enum(u8) {
|
|
@@ -2768,17 +2586,291 @@ pub const Move = enum(u8) {
|
|
|
2768
2586
|
RandomFoe,
|
|
2769
2587
|
};
|
|
2770
2588
|
|
|
2589
|
+
const PP = [_]u8{
|
|
2590
|
+
35, // Pound
|
|
2591
|
+
25, // KarateChop
|
|
2592
|
+
10, // DoubleSlap
|
|
2593
|
+
15, // CometPunch
|
|
2594
|
+
20, // MegaPunch
|
|
2595
|
+
20, // PayDay
|
|
2596
|
+
15, // FirePunch
|
|
2597
|
+
15, // IcePunch
|
|
2598
|
+
15, // ThunderPunch
|
|
2599
|
+
35, // Scratch
|
|
2600
|
+
30, // ViseGrip
|
|
2601
|
+
5, // Guillotine
|
|
2602
|
+
10, // RazorWind
|
|
2603
|
+
30, // SwordsDance
|
|
2604
|
+
30, // Cut
|
|
2605
|
+
35, // Gust
|
|
2606
|
+
35, // WingAttack
|
|
2607
|
+
20, // Whirlwind
|
|
2608
|
+
15, // Fly
|
|
2609
|
+
20, // Bind
|
|
2610
|
+
20, // Slam
|
|
2611
|
+
10, // VineWhip
|
|
2612
|
+
20, // Stomp
|
|
2613
|
+
30, // DoubleKick
|
|
2614
|
+
5, // MegaKick
|
|
2615
|
+
25, // JumpKick
|
|
2616
|
+
15, // RollingKick
|
|
2617
|
+
15, // SandAttack
|
|
2618
|
+
15, // Headbutt
|
|
2619
|
+
25, // HornAttack
|
|
2620
|
+
20, // FuryAttack
|
|
2621
|
+
5, // HornDrill
|
|
2622
|
+
35, // Tackle
|
|
2623
|
+
15, // BodySlam
|
|
2624
|
+
20, // Wrap
|
|
2625
|
+
20, // TakeDown
|
|
2626
|
+
20, // Thrash
|
|
2627
|
+
15, // DoubleEdge
|
|
2628
|
+
30, // TailWhip
|
|
2629
|
+
35, // PoisonSting
|
|
2630
|
+
20, // Twineedle
|
|
2631
|
+
20, // PinMissile
|
|
2632
|
+
30, // Leer
|
|
2633
|
+
25, // Bite
|
|
2634
|
+
40, // Growl
|
|
2635
|
+
20, // Roar
|
|
2636
|
+
15, // Sing
|
|
2637
|
+
20, // Supersonic
|
|
2638
|
+
20, // SonicBoom
|
|
2639
|
+
20, // Disable
|
|
2640
|
+
30, // Acid
|
|
2641
|
+
25, // Ember
|
|
2642
|
+
15, // Flamethrower
|
|
2643
|
+
30, // Mist
|
|
2644
|
+
25, // WaterGun
|
|
2645
|
+
5, // HydroPump
|
|
2646
|
+
15, // Surf
|
|
2647
|
+
10, // IceBeam
|
|
2648
|
+
5, // Blizzard
|
|
2649
|
+
20, // Psybeam
|
|
2650
|
+
20, // BubbleBeam
|
|
2651
|
+
20, // AuroraBeam
|
|
2652
|
+
5, // HyperBeam
|
|
2653
|
+
35, // Peck
|
|
2654
|
+
20, // DrillPeck
|
|
2655
|
+
25, // Submission
|
|
2656
|
+
20, // LowKick
|
|
2657
|
+
20, // Counter
|
|
2658
|
+
20, // SeismicToss
|
|
2659
|
+
15, // Strength
|
|
2660
|
+
20, // Absorb
|
|
2661
|
+
10, // MegaDrain
|
|
2662
|
+
10, // LeechSeed
|
|
2663
|
+
40, // Growth
|
|
2664
|
+
25, // RazorLeaf
|
|
2665
|
+
10, // SolarBeam
|
|
2666
|
+
35, // PoisonPowder
|
|
2667
|
+
30, // StunSpore
|
|
2668
|
+
15, // SleepPowder
|
|
2669
|
+
20, // PetalDance
|
|
2670
|
+
40, // StringShot
|
|
2671
|
+
10, // DragonRage
|
|
2672
|
+
15, // FireSpin
|
|
2673
|
+
30, // ThunderShock
|
|
2674
|
+
15, // Thunderbolt
|
|
2675
|
+
20, // ThunderWave
|
|
2676
|
+
10, // Thunder
|
|
2677
|
+
15, // RockThrow
|
|
2678
|
+
10, // Earthquake
|
|
2679
|
+
5, // Fissure
|
|
2680
|
+
10, // Dig
|
|
2681
|
+
10, // Toxic
|
|
2682
|
+
25, // Confusion
|
|
2683
|
+
10, // Psychic
|
|
2684
|
+
20, // Hypnosis
|
|
2685
|
+
40, // Meditate
|
|
2686
|
+
30, // Agility
|
|
2687
|
+
30, // QuickAttack
|
|
2688
|
+
20, // Rage
|
|
2689
|
+
20, // Teleport
|
|
2690
|
+
15, // NightShade
|
|
2691
|
+
10, // Mimic
|
|
2692
|
+
40, // Screech
|
|
2693
|
+
15, // DoubleTeam
|
|
2694
|
+
20, // Recover
|
|
2695
|
+
30, // Harden
|
|
2696
|
+
20, // Minimize
|
|
2697
|
+
20, // Smokescreen
|
|
2698
|
+
10, // ConfuseRay
|
|
2699
|
+
40, // Withdraw
|
|
2700
|
+
40, // DefenseCurl
|
|
2701
|
+
30, // Barrier
|
|
2702
|
+
30, // LightScreen
|
|
2703
|
+
30, // Haze
|
|
2704
|
+
20, // Reflect
|
|
2705
|
+
30, // FocusEnergy
|
|
2706
|
+
10, // Bide
|
|
2707
|
+
10, // Metronome
|
|
2708
|
+
20, // MirrorMove
|
|
2709
|
+
5, // SelfDestruct
|
|
2710
|
+
10, // EggBomb
|
|
2711
|
+
30, // Lick
|
|
2712
|
+
20, // Smog
|
|
2713
|
+
20, // Sludge
|
|
2714
|
+
20, // BoneClub
|
|
2715
|
+
5, // FireBlast
|
|
2716
|
+
15, // Waterfall
|
|
2717
|
+
10, // Clamp
|
|
2718
|
+
20, // Swift
|
|
2719
|
+
15, // SkullBash
|
|
2720
|
+
15, // SpikeCannon
|
|
2721
|
+
35, // Constrict
|
|
2722
|
+
20, // Amnesia
|
|
2723
|
+
15, // Kinesis
|
|
2724
|
+
10, // SoftBoiled
|
|
2725
|
+
20, // HighJumpKick
|
|
2726
|
+
30, // Glare
|
|
2727
|
+
15, // DreamEater
|
|
2728
|
+
40, // PoisonGas
|
|
2729
|
+
20, // Barrage
|
|
2730
|
+
15, // LeechLife
|
|
2731
|
+
10, // LovelyKiss
|
|
2732
|
+
5, // SkyAttack
|
|
2733
|
+
10, // Transform
|
|
2734
|
+
30, // Bubble
|
|
2735
|
+
10, // DizzyPunch
|
|
2736
|
+
15, // Spore
|
|
2737
|
+
20, // Flash
|
|
2738
|
+
15, // Psywave
|
|
2739
|
+
40, // Splash
|
|
2740
|
+
40, // AcidArmor
|
|
2741
|
+
10, // Crabhammer
|
|
2742
|
+
5, // Explosion
|
|
2743
|
+
15, // FurySwipes
|
|
2744
|
+
10, // Bonemerang
|
|
2745
|
+
10, // Rest
|
|
2746
|
+
10, // RockSlide
|
|
2747
|
+
15, // HyperFang
|
|
2748
|
+
30, // Sharpen
|
|
2749
|
+
30, // Conversion
|
|
2750
|
+
10, // TriAttack
|
|
2751
|
+
10, // SuperFang
|
|
2752
|
+
20, // Slash
|
|
2753
|
+
10, // Substitute
|
|
2754
|
+
1, // Struggle
|
|
2755
|
+
1, // Sketch
|
|
2756
|
+
10, // TripleKick
|
|
2757
|
+
10, // Thief
|
|
2758
|
+
10, // SpiderWeb
|
|
2759
|
+
5, // MindReader
|
|
2760
|
+
15, // Nightmare
|
|
2761
|
+
25, // FlameWheel
|
|
2762
|
+
15, // Snore
|
|
2763
|
+
10, // Curse
|
|
2764
|
+
15, // Flail
|
|
2765
|
+
30, // Conversion2
|
|
2766
|
+
5, // Aeroblast
|
|
2767
|
+
40, // CottonSpore
|
|
2768
|
+
15, // Reversal
|
|
2769
|
+
10, // Spite
|
|
2770
|
+
25, // PowderSnow
|
|
2771
|
+
10, // Protect
|
|
2772
|
+
30, // MachPunch
|
|
2773
|
+
10, // ScaryFace
|
|
2774
|
+
20, // FeintAttack
|
|
2775
|
+
10, // SweetKiss
|
|
2776
|
+
10, // BellyDrum
|
|
2777
|
+
10, // SludgeBomb
|
|
2778
|
+
10, // MudSlap
|
|
2779
|
+
10, // Octazooka
|
|
2780
|
+
20, // Spikes
|
|
2781
|
+
5, // ZapCannon
|
|
2782
|
+
40, // Foresight
|
|
2783
|
+
5, // DestinyBond
|
|
2784
|
+
5, // PerishSong
|
|
2785
|
+
15, // IcyWind
|
|
2786
|
+
5, // Detect
|
|
2787
|
+
10, // BoneRush
|
|
2788
|
+
5, // LockOn
|
|
2789
|
+
15, // Outrage
|
|
2790
|
+
10, // Sandstorm
|
|
2791
|
+
5, // GigaDrain
|
|
2792
|
+
10, // Endure
|
|
2793
|
+
20, // Charm
|
|
2794
|
+
20, // Rollout
|
|
2795
|
+
40, // FalseSwipe
|
|
2796
|
+
15, // Swagger
|
|
2797
|
+
10, // MilkDrink
|
|
2798
|
+
20, // Spark
|
|
2799
|
+
20, // FuryCutter
|
|
2800
|
+
25, // SteelWing
|
|
2801
|
+
5, // MeanLook
|
|
2802
|
+
15, // Attract
|
|
2803
|
+
10, // SleepTalk
|
|
2804
|
+
5, // HealBell
|
|
2805
|
+
20, // Return
|
|
2806
|
+
15, // Present
|
|
2807
|
+
20, // Frustration
|
|
2808
|
+
25, // Safeguard
|
|
2809
|
+
20, // PainSplit
|
|
2810
|
+
5, // SacredFire
|
|
2811
|
+
30, // Magnitude
|
|
2812
|
+
5, // DynamicPunch
|
|
2813
|
+
10, // Megahorn
|
|
2814
|
+
20, // DragonBreath
|
|
2815
|
+
40, // BatonPass
|
|
2816
|
+
5, // Encore
|
|
2817
|
+
20, // Pursuit
|
|
2818
|
+
40, // RapidSpin
|
|
2819
|
+
20, // SweetScent
|
|
2820
|
+
15, // IronTail
|
|
2821
|
+
35, // MetalClaw
|
|
2822
|
+
10, // VitalThrow
|
|
2823
|
+
5, // MorningSun
|
|
2824
|
+
5, // Synthesis
|
|
2825
|
+
5, // Moonlight
|
|
2826
|
+
15, // HiddenPower
|
|
2827
|
+
5, // CrossChop
|
|
2828
|
+
20, // Twister
|
|
2829
|
+
5, // RainDance
|
|
2830
|
+
5, // SunnyDay
|
|
2831
|
+
15, // Crunch
|
|
2832
|
+
20, // MirrorCoat
|
|
2833
|
+
10, // PsychUp
|
|
2834
|
+
5, // ExtremeSpeed
|
|
2835
|
+
5, // AncientPower
|
|
2836
|
+
15, // ShadowBall
|
|
2837
|
+
15, // FutureSight
|
|
2838
|
+
15, // RockSmash
|
|
2839
|
+
15, // Whirlpool
|
|
2840
|
+
10, // BeatUp,
|
|
2841
|
+
};
|
|
2842
|
+
|
|
2771
2843
|
comptime {
|
|
2772
2844
|
assert(@sizeOf(Move) == 1);
|
|
2773
|
-
assert(@sizeOf(@TypeOf(DATA)) ==
|
|
2845
|
+
assert(@sizeOf(@TypeOf(DATA)) == 2008);
|
|
2774
2846
|
}
|
|
2775
2847
|
|
|
2776
2848
|
/// The number of Pokémon moves in this generation.
|
|
2777
2849
|
pub const size = 251;
|
|
2778
2850
|
|
|
2851
|
+
/// Pokémon moves that can be called by Metronome in this generation.
|
|
2852
|
+
pub const METRONOME = init: {
|
|
2853
|
+
var num = 0;
|
|
2854
|
+
var moves: [239]Move = undefined;
|
|
2855
|
+
for (1..Move.size + 1) |i| {
|
|
2856
|
+
if (Move.get(@enumFromInt(i)).extra.metronome) {
|
|
2857
|
+
moves[num] = @enumFromInt(i);
|
|
2858
|
+
num += 1;
|
|
2859
|
+
}
|
|
2860
|
+
}
|
|
2861
|
+
assert(num == moves.len);
|
|
2862
|
+
break :init moves;
|
|
2863
|
+
};
|
|
2864
|
+
|
|
2779
2865
|
/// Returns the `Data` corresponding to the move.
|
|
2780
|
-
pub
|
|
2866
|
+
pub fn get(id: Move) Data {
|
|
2781
2867
|
assert(id != .None);
|
|
2782
2868
|
return DATA[@intFromEnum(id) - 1];
|
|
2783
2869
|
}
|
|
2870
|
+
|
|
2871
|
+
/// Returns the base PP of the move.
|
|
2872
|
+
pub fn pp(id: Move) u8 {
|
|
2873
|
+
assert(id != .None);
|
|
2874
|
+
return PP[@intFromEnum(id) - 1];
|
|
2875
|
+
}
|
|
2784
2876
|
};
|