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