@pkmn/sim 0.10.1 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/config/formats.js +97 -108
  3. package/build/cjs/config/formats.js.map +1 -1
  4. package/build/cjs/data/abilities.js +23 -23
  5. package/build/cjs/data/abilities.js.map +1 -1
  6. package/build/cjs/data/aliases.js +12 -3
  7. package/build/cjs/data/aliases.js.map +1 -1
  8. package/build/cjs/data/formats-data.js +6 -6
  9. package/build/cjs/data/formats-data.js.map +1 -1
  10. package/build/cjs/data/items.js +179 -179
  11. package/build/cjs/data/items.js.map +1 -1
  12. package/build/cjs/data/learnsets.js +47 -9
  13. package/build/cjs/data/learnsets.js.map +1 -1
  14. package/build/cjs/data/legality.js +9 -0
  15. package/build/cjs/data/legality.js.map +1 -1
  16. package/build/cjs/data/mods/gen2/items.js +2 -2
  17. package/build/cjs/data/mods/gen2/items.js.map +1 -1
  18. package/build/cjs/data/mods/gen3/formats-data.js +5 -5
  19. package/build/cjs/data/mods/gen3/formats-data.js.map +1 -1
  20. package/build/cjs/data/mods/gen4/abilities.js +1 -1
  21. package/build/cjs/data/mods/gen4/abilities.js.map +1 -1
  22. package/build/cjs/data/mods/gen4/moves.js +1 -1
  23. package/build/cjs/data/mods/gen4/moves.js.map +1 -1
  24. package/build/cjs/data/mods/gen5/moves.js +8 -8
  25. package/build/cjs/data/mods/gen5/moves.js.map +1 -1
  26. package/build/cjs/data/mods/gen8bdsp/formats-data.js +1 -1
  27. package/build/cjs/data/mods/gen8bdsp/formats-data.js.map +1 -1
  28. package/build/cjs/data/mods/gen8legends/formats-data.js +0 -3
  29. package/build/cjs/data/mods/gen8legends/formats-data.js.map +1 -1
  30. package/build/cjs/data/moves.js +144 -143
  31. package/build/cjs/data/moves.js.map +1 -1
  32. package/build/cjs/data/pokedex.js +2 -2
  33. package/build/cjs/data/text/items.js +52 -52
  34. package/build/cjs/data/text/items.js.map +1 -1
  35. package/build/cjs/data/text/moves.js +41 -41
  36. package/build/cjs/data/text/moves.js.map +1 -1
  37. package/build/cjs/sim/tools/random-player-ai.js +1 -1
  38. package/build/cjs/sim/tools/random-player-ai.js.map +1 -1
  39. package/build/esm/config/formats.mjs +97 -108
  40. package/build/esm/config/formats.mjs.map +1 -1
  41. package/build/esm/data/abilities.mjs +23 -23
  42. package/build/esm/data/abilities.mjs.map +1 -1
  43. package/build/esm/data/aliases.mjs +12 -3
  44. package/build/esm/data/aliases.mjs.map +1 -1
  45. package/build/esm/data/formats-data.mjs +6 -6
  46. package/build/esm/data/formats-data.mjs.map +1 -1
  47. package/build/esm/data/items.mjs +179 -179
  48. package/build/esm/data/items.mjs.map +1 -1
  49. package/build/esm/data/learnsets.mjs +47 -9
  50. package/build/esm/data/learnsets.mjs.map +1 -1
  51. package/build/esm/data/legality.mjs +9 -0
  52. package/build/esm/data/legality.mjs.map +1 -1
  53. package/build/esm/data/mods/gen2/items.mjs +2 -2
  54. package/build/esm/data/mods/gen2/items.mjs.map +1 -1
  55. package/build/esm/data/mods/gen3/formats-data.mjs +5 -5
  56. package/build/esm/data/mods/gen3/formats-data.mjs.map +1 -1
  57. package/build/esm/data/mods/gen4/abilities.mjs +1 -1
  58. package/build/esm/data/mods/gen4/abilities.mjs.map +1 -1
  59. package/build/esm/data/mods/gen4/moves.mjs +1 -1
  60. package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
  61. package/build/esm/data/mods/gen5/moves.mjs +8 -8
  62. package/build/esm/data/mods/gen5/moves.mjs.map +1 -1
  63. package/build/esm/data/mods/gen8bdsp/formats-data.mjs +1 -1
  64. package/build/esm/data/mods/gen8bdsp/formats-data.mjs.map +1 -1
  65. package/build/esm/data/mods/gen8legends/formats-data.mjs +0 -3
  66. package/build/esm/data/mods/gen8legends/formats-data.mjs.map +1 -1
  67. package/build/esm/data/moves.mjs +144 -143
  68. package/build/esm/data/moves.mjs.map +1 -1
  69. package/build/esm/data/pokedex.mjs +2 -2
  70. package/build/esm/data/text/items.mjs +52 -52
  71. package/build/esm/data/text/items.mjs.map +1 -1
  72. package/build/esm/data/text/moves.mjs +41 -41
  73. package/build/esm/data/text/moves.mjs.map +1 -1
  74. package/build/esm/sim/tools/random-player-ai.mjs +1 -1
  75. package/build/esm/sim/tools/random-player-ai.mjs.map +1 -1
  76. package/package.json +2 -2
@@ -706,6 +706,18 @@ export const Items = {
706
706
  gen: 5,
707
707
  isNonstandard: "Past",
708
708
  },
709
+ buginiumz: {
710
+ name: "Buginium Z",
711
+ spritenum: 642,
712
+ onPlate: 'Bug',
713
+ onTakeItem: false,
714
+ zMove: true,
715
+ zMoveType: "Bug",
716
+ forcedForme: "Arceus-Bug",
717
+ num: 787,
718
+ gen: 7,
719
+ isNonstandard: "Past",
720
+ },
709
721
  bugmemory: {
710
722
  name: "Bug Memory",
711
723
  spritenum: 673,
@@ -722,18 +734,6 @@ export const Items = {
722
734
  gen: 7,
723
735
  isNonstandard: "Past",
724
736
  },
725
- buginiumz: {
726
- name: "Buginium Z",
727
- spritenum: 642,
728
- onPlate: 'Bug',
729
- onTakeItem: false,
730
- zMove: true,
731
- zMoveType: "Bug",
732
- forcedForme: "Arceus-Bug",
733
- num: 787,
734
- gen: 7,
735
- isNonstandard: "Past",
736
- },
737
737
  burndrive: {
738
738
  name: "Burn Drive",
739
739
  spritenum: 54,
@@ -1297,6 +1297,18 @@ export const Items = {
1297
1297
  gen: 5,
1298
1298
  isNonstandard: "Past",
1299
1299
  },
1300
+ darkiniumz: {
1301
+ name: "Darkinium Z",
1302
+ spritenum: 646,
1303
+ onPlate: 'Dark',
1304
+ onTakeItem: false,
1305
+ zMove: true,
1306
+ zMoveType: "Dark",
1307
+ forcedForme: "Arceus-Dark",
1308
+ num: 791,
1309
+ gen: 7,
1310
+ isNonstandard: "Past",
1311
+ },
1300
1312
  darkmemory: {
1301
1313
  name: "Dark Memory",
1302
1314
  spritenum: 683,
@@ -1313,18 +1325,6 @@ export const Items = {
1313
1325
  gen: 7,
1314
1326
  isNonstandard: "Past",
1315
1327
  },
1316
- darkiniumz: {
1317
- name: "Darkinium Z",
1318
- spritenum: 646,
1319
- onPlate: 'Dark',
1320
- onTakeItem: false,
1321
- zMove: true,
1322
- zMoveType: "Dark",
1323
- forcedForme: "Arceus-Dark",
1324
- num: 791,
1325
- gen: 7,
1326
- isNonstandard: "Past",
1327
- },
1328
1328
  dawnstone: {
1329
1329
  name: "Dawn Stone",
1330
1330
  spritenum: 92,
@@ -1524,31 +1524,6 @@ export const Items = {
1524
1524
  gen: 5,
1525
1525
  isNonstandard: "Past",
1526
1526
  },
1527
- dragonmemory: {
1528
- name: "Dragon Memory",
1529
- spritenum: 682,
1530
- onMemory: 'Dragon',
1531
- onTakeItem(item, pokemon, source) {
1532
- if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
1533
- return false;
1534
- }
1535
- return true;
1536
- },
1537
- forcedForme: "Silvally-Dragon",
1538
- itemUser: ["Silvally-Dragon"],
1539
- num: 918,
1540
- gen: 7,
1541
- isNonstandard: "Past",
1542
- },
1543
- dragonscale: {
1544
- name: "Dragon Scale",
1545
- spritenum: 108,
1546
- fling: {
1547
- basePower: 30,
1548
- },
1549
- num: 235,
1550
- gen: 2,
1551
- },
1552
1527
  dragoninite: {
1553
1528
  name: "Dragoninite",
1554
1529
  spritenum: 547,
@@ -1576,6 +1551,31 @@ export const Items = {
1576
1551
  gen: 7,
1577
1552
  isNonstandard: "Past",
1578
1553
  },
1554
+ dragonmemory: {
1555
+ name: "Dragon Memory",
1556
+ spritenum: 682,
1557
+ onMemory: 'Dragon',
1558
+ onTakeItem(item, pokemon, source) {
1559
+ if ((source && source.baseSpecies.num === 773) || pokemon.baseSpecies.num === 773) {
1560
+ return false;
1561
+ }
1562
+ return true;
1563
+ },
1564
+ forcedForme: "Silvally-Dragon",
1565
+ itemUser: ["Silvally-Dragon"],
1566
+ num: 918,
1567
+ gen: 7,
1568
+ isNonstandard: "Past",
1569
+ },
1570
+ dragonscale: {
1571
+ name: "Dragon Scale",
1572
+ spritenum: 108,
1573
+ fling: {
1574
+ basePower: 30,
1575
+ },
1576
+ num: 235,
1577
+ gen: 2,
1578
+ },
1579
1579
  drampanite: {
1580
1580
  name: "Drampanite",
1581
1581
  spritenum: 569,
@@ -2244,7 +2244,7 @@ export const Items = {
2244
2244
  megaEvolves: "Floette-Eternal",
2245
2245
  itemUser: ["Floette-Eternal"],
2246
2246
  onTakeItem(item, source) {
2247
- if (item.megaEvolves === source.baseSpecies.name)
2247
+ if ([item.megaEvolves, item.megaStone].includes(source.baseSpecies.name))
2248
2248
  return false;
2249
2249
  return true;
2250
2250
  },
@@ -2523,6 +2523,18 @@ export const Items = {
2523
2523
  gen: 5,
2524
2524
  isNonstandard: "Past",
2525
2525
  },
2526
+ ghostiumz: {
2527
+ name: "Ghostium Z",
2528
+ spritenum: 644,
2529
+ onPlate: 'Ghost',
2530
+ onTakeItem: false,
2531
+ zMove: true,
2532
+ zMoveType: "Ghost",
2533
+ forcedForme: "Arceus-Ghost",
2534
+ num: 789,
2535
+ gen: 7,
2536
+ isNonstandard: "Past",
2537
+ },
2526
2538
  ghostmemory: {
2527
2539
  name: "Ghost Memory",
2528
2540
  spritenum: 674,
@@ -2539,18 +2551,6 @@ export const Items = {
2539
2551
  gen: 7,
2540
2552
  isNonstandard: "Past",
2541
2553
  },
2542
- ghostiumz: {
2543
- name: "Ghostium Z",
2544
- spritenum: 644,
2545
- onPlate: 'Ghost',
2546
- onTakeItem: false,
2547
- zMove: true,
2548
- zMoveType: "Ghost",
2549
- forcedForme: "Arceus-Ghost",
2550
- num: 789,
2551
- gen: 7,
2552
- isNonstandard: "Past",
2553
- },
2554
2554
  glalitite: {
2555
2555
  name: "Glalitite",
2556
2556
  spritenum: 623,
@@ -2590,6 +2590,18 @@ export const Items = {
2590
2590
  gen: 5,
2591
2591
  isNonstandard: "Past",
2592
2592
  },
2593
+ grassiumz: {
2594
+ name: "Grassium Z",
2595
+ spritenum: 635,
2596
+ onPlate: 'Grass',
2597
+ onTakeItem: false,
2598
+ zMove: true,
2599
+ zMoveType: "Grass",
2600
+ forcedForme: "Arceus-Grass",
2601
+ num: 780,
2602
+ gen: 7,
2603
+ isNonstandard: "Past",
2604
+ },
2593
2605
  grassmemory: {
2594
2606
  name: "Grass Memory",
2595
2607
  spritenum: 678,
@@ -2606,18 +2618,6 @@ export const Items = {
2606
2618
  gen: 7,
2607
2619
  isNonstandard: "Past",
2608
2620
  },
2609
- grassiumz: {
2610
- name: "Grassium Z",
2611
- spritenum: 635,
2612
- onPlate: 'Grass',
2613
- onTakeItem: false,
2614
- zMove: true,
2615
- zMoveType: "Grass",
2616
- forcedForme: "Arceus-Grass",
2617
- num: 780,
2618
- gen: 7,
2619
- isNonstandard: "Past",
2620
- },
2621
2621
  grassyseed: {
2622
2622
  name: "Grassy Seed",
2623
2623
  spritenum: 667,
@@ -2737,6 +2737,18 @@ export const Items = {
2737
2737
  gen: 5,
2738
2738
  isNonstandard: "Past",
2739
2739
  },
2740
+ groundiumz: {
2741
+ name: "Groundium Z",
2742
+ spritenum: 639,
2743
+ onPlate: 'Ground',
2744
+ onTakeItem: false,
2745
+ zMove: true,
2746
+ zMoveType: "Ground",
2747
+ forcedForme: "Arceus-Ground",
2748
+ num: 784,
2749
+ gen: 7,
2750
+ isNonstandard: "Past",
2751
+ },
2740
2752
  groundmemory: {
2741
2753
  name: "Ground Memory",
2742
2754
  spritenum: 671,
@@ -2753,18 +2765,6 @@ export const Items = {
2753
2765
  gen: 7,
2754
2766
  isNonstandard: "Past",
2755
2767
  },
2756
- groundiumz: {
2757
- name: "Groundium Z",
2758
- spritenum: 639,
2759
- onPlate: 'Ground',
2760
- onTakeItem: false,
2761
- zMove: true,
2762
- zMoveType: "Ground",
2763
- forcedForme: "Arceus-Ground",
2764
- num: 784,
2765
- gen: 7,
2766
- isNonstandard: "Past",
2767
- },
2768
2768
  gyaradosite: {
2769
2769
  name: "Gyaradosite",
2770
2770
  spritenum: 589,
@@ -3150,6 +3150,21 @@ export const Items = {
3150
3150
  gen: 6,
3151
3151
  isNonstandard: "Past",
3152
3152
  },
3153
+ kangaskhanite: {
3154
+ name: "Kangaskhanite",
3155
+ spritenum: 592,
3156
+ megaStone: "Kangaskhan-Mega",
3157
+ megaEvolves: "Kangaskhan",
3158
+ itemUser: ["Kangaskhan"],
3159
+ onTakeItem(item, source) {
3160
+ if (item.megaEvolves === source.baseSpecies.baseSpecies)
3161
+ return false;
3162
+ return true;
3163
+ },
3164
+ num: 675,
3165
+ gen: 6,
3166
+ isNonstandard: "Past",
3167
+ },
3153
3168
  kasibberry: {
3154
3169
  name: "Kasib Berry",
3155
3170
  spritenum: 233,
@@ -3231,21 +3246,6 @@ export const Items = {
3231
3246
  num: 170,
3232
3247
  gen: 3,
3233
3248
  },
3234
- kangaskhanite: {
3235
- name: "Kangaskhanite",
3236
- spritenum: 592,
3237
- megaStone: "Kangaskhan-Mega",
3238
- megaEvolves: "Kangaskhan",
3239
- itemUser: ["Kangaskhan"],
3240
- onTakeItem(item, source) {
3241
- if (item.megaEvolves === source.baseSpecies.baseSpecies)
3242
- return false;
3243
- return true;
3244
- },
3245
- num: 675,
3246
- gen: 6,
3247
- isNonstandard: "Past",
3248
- },
3249
3249
  kingsrock: {
3250
3250
  name: "King's Rock",
3251
3251
  spritenum: 236,
@@ -4735,6 +4735,18 @@ export const Items = {
4735
4735
  gen: 5,
4736
4736
  isNonstandard: "Past",
4737
4737
  },
4738
+ poisoniumz: {
4739
+ name: "Poisonium Z",
4740
+ spritenum: 638,
4741
+ onPlate: 'Poison',
4742
+ onTakeItem: false,
4743
+ zMove: true,
4744
+ zMoveType: "Poison",
4745
+ forcedForme: "Arceus-Poison",
4746
+ num: 783,
4747
+ gen: 7,
4748
+ isNonstandard: "Past",
4749
+ },
4738
4750
  poisonmemory: {
4739
4751
  name: "Poison Memory",
4740
4752
  spritenum: 670,
@@ -4751,18 +4763,6 @@ export const Items = {
4751
4763
  gen: 7,
4752
4764
  isNonstandard: "Past",
4753
4765
  },
4754
- poisoniumz: {
4755
- name: "Poisonium Z",
4756
- spritenum: 638,
4757
- onPlate: 'Poison',
4758
- onTakeItem: false,
4759
- zMove: true,
4760
- zMoveType: "Poison",
4761
- forcedForme: "Arceus-Poison",
4762
- num: 783,
4763
- gen: 7,
4764
- isNonstandard: "Past",
4765
- },
4766
4766
  pokeball: {
4767
4767
  name: "Poke Ball",
4768
4768
  spritenum: 345,
@@ -5312,6 +5312,18 @@ export const Items = {
5312
5312
  gen: 4,
5313
5313
  isNonstandard: "Past",
5314
5314
  },
5315
+ rockiumz: {
5316
+ name: "Rockium Z",
5317
+ spritenum: 643,
5318
+ onPlate: 'Rock',
5319
+ onTakeItem: false,
5320
+ zMove: true,
5321
+ zMoveType: "Rock",
5322
+ forcedForme: "Arceus-Rock",
5323
+ num: 788,
5324
+ gen: 7,
5325
+ isNonstandard: "Past",
5326
+ },
5315
5327
  rockmemory: {
5316
5328
  name: "Rock Memory",
5317
5329
  spritenum: 672,
@@ -5328,18 +5340,6 @@ export const Items = {
5328
5340
  gen: 7,
5329
5341
  isNonstandard: "Past",
5330
5342
  },
5331
- rockiumz: {
5332
- name: "Rockium Z",
5333
- spritenum: 643,
5334
- onPlate: 'Rock',
5335
- onTakeItem: false,
5336
- zMove: true,
5337
- zMoveType: "Rock",
5338
- forcedForme: "Arceus-Rock",
5339
- num: 788,
5340
- gen: 7,
5341
- isNonstandard: "Past",
5342
- },
5343
5343
  rockyhelmet: {
5344
5344
  name: "Rocky Helmet",
5345
5345
  spritenum: 417,
@@ -6093,21 +6093,6 @@ export const Items = {
6093
6093
  num: 1114,
6094
6094
  gen: 8,
6095
6095
  },
6096
- steelixite: {
6097
- name: "Steelixite",
6098
- spritenum: 621,
6099
- megaStone: "Steelix-Mega",
6100
- megaEvolves: "Steelix",
6101
- itemUser: ["Steelix"],
6102
- onTakeItem(item, source) {
6103
- if (item.megaEvolves === source.baseSpecies.baseSpecies)
6104
- return false;
6105
- return true;
6106
- },
6107
- num: 761,
6108
- gen: 6,
6109
- isNonstandard: "Past",
6110
- },
6111
6096
  steelgem: {
6112
6097
  name: "Steel Gem",
6113
6098
  spritenum: 473,
@@ -6123,6 +6108,33 @@ export const Items = {
6123
6108
  gen: 5,
6124
6109
  isNonstandard: "Past",
6125
6110
  },
6111
+ steeliumz: {
6112
+ name: "Steelium Z",
6113
+ spritenum: 647,
6114
+ onPlate: 'Steel',
6115
+ onTakeItem: false,
6116
+ zMove: true,
6117
+ zMoveType: "Steel",
6118
+ forcedForme: "Arceus-Steel",
6119
+ num: 792,
6120
+ gen: 7,
6121
+ isNonstandard: "Past",
6122
+ },
6123
+ steelixite: {
6124
+ name: "Steelixite",
6125
+ spritenum: 621,
6126
+ megaStone: "Steelix-Mega",
6127
+ megaEvolves: "Steelix",
6128
+ itemUser: ["Steelix"],
6129
+ onTakeItem(item, source) {
6130
+ if (item.megaEvolves === source.baseSpecies.baseSpecies)
6131
+ return false;
6132
+ return true;
6133
+ },
6134
+ num: 761,
6135
+ gen: 6,
6136
+ isNonstandard: "Past",
6137
+ },
6126
6138
  steelmemory: {
6127
6139
  name: "Steel Memory",
6128
6140
  spritenum: 675,
@@ -6139,18 +6151,6 @@ export const Items = {
6139
6151
  gen: 7,
6140
6152
  isNonstandard: "Past",
6141
6153
  },
6142
- steeliumz: {
6143
- name: "Steelium Z",
6144
- spritenum: 647,
6145
- onPlate: 'Steel',
6146
- onTakeItem: false,
6147
- zMove: true,
6148
- zMoveType: "Steel",
6149
- forcedForme: "Arceus-Steel",
6150
- num: 792,
6151
- gen: 7,
6152
- isNonstandard: "Past",
6153
- },
6154
6154
  stick: {
6155
6155
  name: "Stick",
6156
6156
  fling: {
@@ -7585,6 +7585,18 @@ export const Items = {
7585
7585
  gen: 5,
7586
7586
  isNonstandard: "Past",
7587
7587
  },
7588
+ wateriumz: {
7589
+ name: "Waterium Z",
7590
+ spritenum: 633,
7591
+ onPlate: 'Water',
7592
+ onTakeItem: false,
7593
+ zMove: true,
7594
+ zMoveType: "Water",
7595
+ forcedForme: "Arceus-Water",
7596
+ num: 778,
7597
+ gen: 7,
7598
+ isNonstandard: "Past",
7599
+ },
7588
7600
  watermemory: {
7589
7601
  name: "Water Memory",
7590
7602
  spritenum: 677,
@@ -7610,18 +7622,6 @@ export const Items = {
7610
7622
  num: 84,
7611
7623
  gen: 1,
7612
7624
  },
7613
- wateriumz: {
7614
- name: "Waterium Z",
7615
- spritenum: 633,
7616
- onPlate: 'Water',
7617
- onTakeItem: false,
7618
- zMove: true,
7619
- zMoveType: "Water",
7620
- forcedForme: "Arceus-Water",
7621
- num: 778,
7622
- gen: 7,
7623
- isNonstandard: "Past",
7624
- },
7625
7625
  watmelberry: {
7626
7626
  name: "Watmel Berry",
7627
7627
  spritenum: 530,
@@ -7903,21 +7903,6 @@ export const Items = {
7903
7903
  isNonstandard: "Future",
7904
7904
  },
7905
7905
  // Gen 2 items
7906
- berserkgene: {
7907
- name: "Berserk Gene",
7908
- spritenum: 388,
7909
- onUpdate(pokemon) {
7910
- if (pokemon.useItem()) {
7911
- pokemon.addVolatile('confusion');
7912
- }
7913
- },
7914
- boosts: {
7915
- atk: 2,
7916
- },
7917
- num: 0,
7918
- gen: 2,
7919
- isNonstandard: "Past",
7920
- },
7921
7906
  berry: {
7922
7907
  name: "Berry",
7923
7908
  spritenum: 319,
@@ -7943,6 +7928,21 @@ export const Items = {
7943
7928
  gen: 2,
7944
7929
  isNonstandard: "Past",
7945
7930
  },
7931
+ berserkgene: {
7932
+ name: "Berserk Gene",
7933
+ spritenum: 388,
7934
+ onUpdate(pokemon) {
7935
+ if (pokemon.useItem()) {
7936
+ pokemon.addVolatile('confusion');
7937
+ }
7938
+ },
7939
+ boosts: {
7940
+ atk: 2,
7941
+ },
7942
+ num: 0,
7943
+ gen: 2,
7944
+ isNonstandard: "Past",
7945
+ },
7946
7946
  bitterberry: {
7947
7947
  name: "Bitter Berry",
7948
7948
  spritenum: 334,