@@ -91,6 +91,11 @@ function requireNoCache(pathSpec) {
91
91
index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9rebalanced' ) . data . Moves ) . map ( x => x + ' move' ) ) ;
92
92
index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9rebalanced' ) . data . Items ) . map ( x => x + ' item' ) ) ;
93
93
index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9rebalanced' ) . data . Abilities ) . map ( x => x + ' ability' ) ) ;
94
+ // Gen 9 GPT
95
+ index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Pokedex ) . map ( x => x + ' pokemon' ) ) ;
96
+ index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Moves ) . map ( x => x + ' move' ) ) ;
97
+ index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Items ) . map ( x => x + ' item' ) ) ;
98
+ index = index . concat ( Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Abilities ) . map ( x => x + ' ability' ) ) ;
94
99
// Remove dupes
95
100
index = [ ...new Set ( index ) ] ;
96
101
@@ -365,7 +370,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
365
370
const LC = GENS . map ( num => num + 0.7 ) ;
366
371
const STADIUM = [ 2.04 , 1.04 ] ;
367
372
const NATDEX = [ 9.1 , 8.1 ] ;
368
- const OTHER = [ 9.9 , 9.69 , 9.68 , 9.67 , 9.66 , 9.65 , 9.411 , 9.41 , 9.401 , 9.4 , 9.2 , - 9.4 , - 9.401 , 8.6 , 8.4 , 8.2 , 8.1 , - 8.4 , - 8.6 , 7.1 ] ;
373
+ const OTHER = [ 9.9 , 9.69 , 9.68 , 9.67 , 9.66 , 9.65 , 9.64 , 9. 411, 9.41 , 9.401 , 9.4 , 9.2 , - 9.4 , - 9.401 , 8.6 , 8.4 , 8.2 , 8.1 , - 8.4 , - 8.6 , 7.1 ] ;
369
374
370
375
// process.stdout.write("\n ");
371
376
for ( const genIdent of [ ...GENS , ...DOUBLES , ...VGC , ...NFE , ...STADIUM , ...OTHER , ...NATDEX , ...LC ] ) {
@@ -376,6 +381,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
376
381
const isOmnifield = ( genIdent === 9.67 ) ;
377
382
const isEspionage = ( genIdent === 9.66 ) ;
378
383
const isRebalanced = ( genIdent === 9.65 ) ;
384
+ const isGPT = ( genIdent === 9.64 ) ;
379
385
const isMetBattle = ( '' + genIdent ) . endsWith ( '.2' ) ;
380
386
const isNFE = ( '' + genIdent ) . endsWith ( '.3' ) ;
381
387
const isLC = ( '' + genIdent ) . endsWith ( '.7' ) ;
@@ -405,12 +411,14 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
405
411
const OmnifieldPokemon = Object . keys ( DawnDex . mod ( 'omnifield' ) . data . Pokedex ) ;
406
412
const EspionagePokemon = Object . keys ( DawnDex . mod ( 'gen9espionage' ) . data . Pokedex ) ;
407
413
const RebalancedPokemon = Object . keys ( DawnDex . mod ( 'gen9rebalanced' ) . data . Pokedex ) ;
414
+ const GPTPokemon = Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Pokedex ) ;
408
415
pokemon . sort ( ) ;
409
416
SanctifiedPokemon . sort ( ) ;
410
417
UniversalPokemon . sort ( ) ;
411
418
OmnifieldPokemon . sort ( ) ;
412
419
EspionagePokemon . sort ( ) ;
413
420
RebalancedPokemon . sort ( ) ;
421
+ GPTPokemon . sort ( ) ;
414
422
const tierTable = { } ;
415
423
const overrideTier = { } ;
416
424
const ubersUUBans = { } ;
@@ -425,6 +433,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
425
433
if ( isOmnifield ) continue ;
426
434
if ( isEspionage ) continue ;
427
435
if ( isRebalanced ) continue ;
436
+ if ( isGPT ) continue ;
428
437
const tier = ( ( ) => {
429
438
if ( isMetBattle ) {
430
439
let tier = species . tier ;
@@ -607,6 +616,20 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
607
616
tierTable [ tier ] . push ( id ) ;
608
617
}
609
618
619
+ const GPTFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/formats-data.js' ) . FormatsData ;
620
+ for ( const id of GPTFormatsData ) {
621
+ const species = DawnDex . mod ( 'gen9gpt' ) . species . get ( id ) ;
622
+ if ( ! isGPT ) continue ;
623
+ let tier = species . tier ;
624
+ const entry = GPTFormatsData [ id ] ;
625
+ if ( entry && entry . tier && typeof entry . tier === "string" ) {
626
+ tier = entry . tier ;
627
+ }
628
+ overrideTier [ species . id ] = tier ;
629
+ if ( ! tierTable [ tier ] ) tierTable [ tier ] = [ ] ;
630
+ tierTable [ tier ] . push ( id ) ;
631
+ }
632
+
610
633
nonstandardMoves . push ( ...Object . keys ( Dex . data . Moves ) . filter ( id => {
611
634
const move = Dex . mod ( isSSDLC1 ? 'gen8dlc1' : isPreDLC ? 'gen9predlc' : 'gen9dlc1' ) . moves . get ( id ) ;
612
635
const bMove = Dex . mod ( isSSDLC1 ? 'gen8' : 'gen9' ) . moves . get ( id ) ;
@@ -688,6 +711,13 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
688
711
BattleTeambuilderTable [ 'gen9universal' ] . tiers = tiers ;
689
712
BattleTeambuilderTable [ 'gen9universal' ] . overrideTier = overrideTier ;
690
713
BattleTeambuilderTable [ 'gen9universal' ] . formatSlices = formatSlices ;
714
+ } else if ( isGPT ) {
715
+ BattleTeambuilderTable [ 'gen9gpt' ] = { } ;
716
+ BattleTeambuilderTable [ 'gen9gpt' ] . learnsets = { } ;
717
+ BattleTeambuilderTable [ 'gen9gpt' ] . items = items ;
718
+ BattleTeambuilderTable [ 'gen9gpt' ] . tiers = tiers ;
719
+ BattleTeambuilderTable [ 'gen9gpt' ] . overrideTier = overrideTier ;
720
+ BattleTeambuilderTable [ 'gen9gpt' ] . formatSlices = formatSlices ;
691
721
} else if ( isVGC ) {
692
722
BattleTeambuilderTable [ gen + 'vgc' ] = { } ;
693
723
BattleTeambuilderTable [ gen + 'vgc' ] . tiers = tiers ;
@@ -725,7 +755,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
725
755
}
726
756
727
757
const tierOrder = ( ( ) => {
728
- if ( isSanctified || isUniversal || isRebalanced ) {
758
+ if ( isSanctified || isUniversal || isRebalanced || isGPT ) {
729
759
return [ "AG" , "Uber" , "(Uber)" , "OUBL" , "OU" , "(OU)" , "UUBL" , "UU" , "RUBL" , "RU" , 'HUBL' , 'HU' , "NUBL" , "NU" , "AUBL" , "AU" , "PUBL" , "PU" , "ZUBL" , "ZU" , "FUBL" , "FU" , "NFE" , "LC" ] ;
730
760
}
731
761
if ( isVGC || isGen9BH ) {
@@ -785,7 +815,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
785
815
continue ;
786
816
}
787
817
if ( item . isNonstandard && ! isMetBattle ) {
788
- if ( isNatDex || isSanctified || isOmnifield || isUniversal || isEspionage || isRebalanced ) {
818
+ if ( isNatDex || isSanctified || isOmnifield || isUniversal || isEspionage || isRebalanced || isGPT ) {
789
819
let curItem = item ;
790
820
let curGen = genNum ;
791
821
while ( item . isNonstandard && curGen >= 7 ) {
@@ -992,11 +1022,13 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
992
1022
const UniversalItemList = Object . keys ( DawnDex . mod ( 'gen9universal' ) . data . Items ) ;
993
1023
const OmnifieldItemList = Object . keys ( DawnDex . mod ( 'omnifield' ) . data . Items ) ;
994
1024
const RebalancedItemList = Object . keys ( DawnDex . mod ( 'gen9rebalanced' ) . data . Items ) ;
1025
+ const GPTItemList = Object . keys ( DawnDex . mod ( 'gen9gpt' ) . data . Items ) ;
995
1026
EspionageItemList . sort ( ) ;
996
1027
SanctifiedItemList . sort ( ) ;
997
1028
UniversalItemList . sort ( ) ;
998
1029
OmnifieldItemList . sort ( ) ;
999
1030
RebalancedItemList . sort ( ) ;
1031
+ GPTItemList . sort ( ) ;
1000
1032
for ( const id of EspionageItemList ) {
1001
1033
if ( itemList . includes ( id ) ) continue ;
1002
1034
if ( ! isEspionage ) continue ;
@@ -1022,6 +1054,11 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
1022
1054
if ( ! isRebalanced ) continue ;
1023
1055
greatItems . push ( id ) ;
1024
1056
}
1057
+ for ( const id of GPTItemList ) {
1058
+ if ( itemList . includes ( id ) ) continue ;
1059
+ if ( ! isGPT ) continue ;
1060
+ greatItems . push ( id ) ;
1061
+ }
1025
1062
items . push ( ...greatItems ) ;
1026
1063
items . push ( ...goodItems ) ;
1027
1064
items . push ( ...specificItems ) ;
@@ -1318,6 +1355,18 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
1318
1355
}
1319
1356
}
1320
1357
1358
+ const GPTLearnsets = DawnDex . mod ( 'gen9gpt' ) . data . Learnsets ;
1359
+ for ( const id in GPTLearnsets ) {
1360
+ const learnset = GPTLearnsets [ id ] . learnset ;
1361
+ if ( ! learnset ) continue ;
1362
+ BattleTeambuilderTable [ 'gen9gpt' ] . learnsets [ id ] = { } ;
1363
+ for ( const moveid in learnset ) {
1364
+ const gens = learnset [ moveid ] . map ( x => Number ( x [ 0 ] ) ) ;
1365
+ const minGen = Math . min ( ...gens ) ;
1366
+ BattleTeambuilderTable [ 'gen9gpt' ] . learnsets [ id ] [ moveid ] = '0123456789' . slice ( minGen ) + 'a' ;
1367
+ }
1368
+ }
1369
+
1321
1370
// Client relevant data that should be overriden by past gens and mods
1322
1371
const overrideSpeciesKeys = [ 'abilities' , 'baseStats' , 'cosmeticFormes' , 'isNonstandard' , 'requiredItems' , 'types' , 'unreleasedHidden' ] ;
1323
1372
const overrideMoveKeys = [ 'accuracy' , 'basePower' , 'category' , 'desc' , 'flags' , 'isNonstandard' , 'noSketch' , 'pp' , 'priority' , 'shortDesc' , 'target' , 'type' ] ;
@@ -1406,7 +1455,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... ");
1406
1455
// Mods
1407
1456
//
1408
1457
1409
- for ( const mod of [ 'gen7letsgo' , 'gen8bdsp' , 'gen9sanctified' , 'gen9universal' , 'omnifield' , 'gen9espionage' , 'gen9rebalanced' ] ) {
1458
+ for ( const mod of [ 'gen7letsgo' , 'gen8bdsp' , 'gen9sanctified' , 'gen9universal' , 'omnifield' , 'gen9espionage' , 'gen9rebalanced' , 'gen9gpt' ] ) {
1410
1459
const modDex = DawnDex . mod ( mod ) ;
1411
1460
const modData = modDex . data ;
1412
1461
const parentDex = DawnDex . forGen ( modDex . gen ) ;
@@ -1478,16 +1527,20 @@ process.stdout.write("Building `data/pokedex.js`... ");
1478
1527
const EspionageFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9espionage/formats-data.js' ) . FormatsData ;
1479
1528
const RebalancedDex = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/pokedex.js' ) . Pokedex ;
1480
1529
const RebalancedFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/formats-data.js' ) . FormatsData ;
1530
+ const GPTDex = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/pokedex.js' ) . Pokedex ;
1531
+ const GPTFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/formats-data.js' ) . FormatsData ;
1481
1532
DawnDex . data . FormatsData = Object . assign ( SanctifiedFormatsData , DawnDex . data . FormatsData ) ;
1482
1533
DawnDex . data . FormatsData = Object . assign ( UniversalFormatsData , DawnDex . data . FormatsData ) ;
1483
1534
DawnDex . data . FormatsData = Object . assign ( OmnifieldFormatsData , DawnDex . data . FormatsData ) ;
1484
1535
DawnDex . data . FormatsData = Object . assign ( EspionageFormatsData , DawnDex . data . FormatsData ) ;
1485
1536
DawnDex . data . FormatsData = Object . assign ( RebalancedFormatsData , DawnDex . data . FormatsData ) ;
1537
+ DawnDex . data . FormatsData = Object . assign ( GPTFormatsData , DawnDex . data . FormatsData ) ;
1486
1538
Pokedex = Object . assign ( SanctifiedDex , Pokedex ) ;
1487
1539
Pokedex = Object . assign ( UniversalDex , Pokedex ) ;
1488
1540
Pokedex = Object . assign ( OmnifieldDex , Pokedex ) ;
1489
1541
Pokedex = Object . assign ( EspionageDex , Pokedex ) ;
1490
1542
Pokedex = Object . assign ( RebalancedDex , Pokedex ) ;
1543
+ Pokedex = Object . assign ( GPTDex , Pokedex ) ;
1491
1544
for ( const id in Pokedex ) {
1492
1545
const entry = Pokedex [ id ] ;
1493
1546
if ( DawnDex . data . FormatsData [ id ] ) {
@@ -1518,10 +1571,12 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1518
1571
const UniversalMoves = requireNoCache ( dawnPath + 'dist/data/mods/gen9universal/moves.js' ) . Moves ;
1519
1572
const OmnifieldMoves = requireNoCache ( dawnPath + 'dist/data/mods/omnifield/moves.js' ) . Moves ;
1520
1573
const RebalancedMoves = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/moves.js' ) . Moves ;
1574
+ const GPTMoves = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/moves.js' ) . Moves ;
1521
1575
Moves = Object . assign ( SanctifiedMoves , Moves ) ;
1522
1576
Moves = Object . assign ( UniversalMoves , Moves ) ;
1523
1577
Moves = Object . assign ( OmnifieldMoves , Moves ) ;
1524
1578
Moves = Object . assign ( RebalancedMoves , Moves ) ;
1579
+ Moves = Object . assign ( GPTMoves , Moves ) ;
1525
1580
1526
1581
for ( const id in Moves ) {
1527
1582
let move = Dex . moves . get ( Moves [ id ] . name ) ;
@@ -1535,6 +1590,9 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1535
1590
move = DawnDex . mod ( 'gen9espionage' ) . moves . get ( id ) ;
1536
1591
if ( ! move ) {
1537
1592
move = DawnDex . mod ( 'gen9rebalanced' ) . moves . get ( id ) ;
1593
+ if ( ! move ) {
1594
+ move = DawnDex . mod ( 'gen9gpt' ) . moves . get ( id ) ;
1595
+ }
1538
1596
}
1539
1597
}
1540
1598
}
@@ -1562,11 +1620,13 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1562
1620
const OmnifieldItems = requireNoCache ( dawnPath + 'dist/data/mods/omnifield/items.js' ) . Items ;
1563
1621
const EspionageItems = requireNoCache ( dawnPath + 'dist/data/mods/gen9espionage/items.js' ) . Items ;
1564
1622
const RebalancedItems = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/items.js' ) . Items ;
1623
+ const GPTItems = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/items.js' ) . Items ;
1565
1624
Items = Object . assign ( SanctifiedItems , Items ) ;
1566
1625
Items = Object . assign ( UniversalItems , Items ) ;
1567
1626
Items = Object . assign ( OmnifieldItems , Items ) ;
1568
1627
Items = Object . assign ( EspionageItems , Items ) ;
1569
1628
Items = Object . assign ( RebalancedItems , Items ) ;
1629
+ Items = Object . assign ( GPTItems , Items ) ;
1570
1630
for ( const id in Items ) {
1571
1631
let item = DawnDex . items . get ( Items [ id ] . name ) ;
1572
1632
if ( ! item ) {
@@ -1579,6 +1639,9 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1579
1639
item = DawnDex . mod ( 'gen9espionage' ) . items . get ( id ) ;
1580
1640
if ( ! item ) {
1581
1641
item = DawnDex . mod ( 'gen9rebalanced' ) . items . get ( id ) ;
1642
+ if ( ! item ) {
1643
+ item = DawnDex . mod ( 'gen9gpt' ) . items . get ( id ) ;
1644
+ }
1582
1645
}
1583
1646
}
1584
1647
}
@@ -1604,10 +1667,12 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1604
1667
const UniversalAbilities = requireNoCache ( dawnPath + 'dist/data/mods/gen9universal/abilities.js' ) . Abilities ;
1605
1668
const OmnifieldAbilities = requireNoCache ( dawnPath + 'dist/data/mods/omnifield/abilities.js' ) . Abilities ;
1606
1669
const RebalancedAbilities = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/abilities.js' ) . Abilities ;
1670
+ const GPTAbilities = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/abilities.js' ) . Abilities ;
1607
1671
Abilities = Object . assign ( SanctifiedAbilities , Abilities ) ;
1608
1672
Abilities = Object . assign ( UniversalAbilities , Abilities ) ;
1609
1673
Abilities = Object . assign ( OmnifieldAbilities , Abilities ) ;
1610
1674
Abilities = Object . assign ( RebalancedAbilities , Abilities ) ;
1675
+ Abilities = Object . assign ( GPTAbilities , Abilities ) ;
1611
1676
1612
1677
for ( const id in Abilities ) {
1613
1678
let ability = DawnDex . abilities . get ( Abilities [ id ] . name ) ;
@@ -1621,6 +1686,9 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1621
1686
ability = DawnDex . mod ( 'gen9espionage' ) . abilities . get ( id ) ;
1622
1687
if ( ! ability ) {
1623
1688
ability = DawnDex . mod ( 'gen9rebalanced' ) . abilities . get ( id ) ;
1689
+ if ( ! ability ) {
1690
+ ability = DawnDex . mod ( 'gen9gpt' ) . abilities . get ( id ) ;
1691
+ }
1624
1692
}
1625
1693
}
1626
1694
}
@@ -1670,11 +1738,13 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1670
1738
const OmnifieldFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/omnifield/formats-data.js' ) . FormatsData ;
1671
1739
const EspionageFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9espionage/formats-data.js' ) . FormatsData ;
1672
1740
const RebalancedFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/formats-data.js' ) . FormatsData ;
1741
+ const GPTFormatsData = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/formats-data.js' ) . FormatsData ;
1673
1742
FormatsData = Object . assign ( SanctifiedFormatsData , FormatsData ) ;
1674
1743
FormatsData = Object . assign ( UniversalFormatsData , FormatsData ) ;
1675
1744
FormatsData = Object . assign ( OmnifieldFormatsData , FormatsData ) ;
1676
1745
FormatsData = Object . assign ( EspionageFormatsData , FormatsData ) ;
1677
1746
FormatsData = Object . assign ( RebalancedFormatsData , FormatsData ) ;
1747
+ FormatsData = Object . assign ( GPTFormatsData , FormatsData ) ;
1678
1748
const buf = 'exports.BattleFormatsData = ' + es3stringify ( FormatsData ) + ';' ;
1679
1749
fs . writeFileSync ( 'play.pokemonshowdown.com/data/formats-data.js' , buf ) ;
1680
1750
}
@@ -1700,11 +1770,13 @@ process.stdout.write("Building `data/moves,items,abilities,typechart,learnsets.j
1700
1770
const OmnifieldLearnsets = requireNoCache ( dawnPath + 'dist/data/mods/omnifield/learnsets.js' ) . Learnsets ;
1701
1771
const EspionageLearnsets = requireNoCache ( dawnPath + 'dist/data/mods/gen9espionage/learnsets.js' ) . Learnsets ;
1702
1772
const RebalancedLearnsets = requireNoCache ( dawnPath + 'dist/data/mods/gen9rebalanced/learnsets.js' ) . Learnsets ;
1773
+ const GPTLearnsets = requireNoCache ( dawnPath + 'dist/data/mods/gen9gpt/learnsets.js' ) . Learnsets ;
1703
1774
Learnsets = Object . assign ( SanctifiedLearnsets , Learnsets ) ;
1704
1775
Learnsets = Object . assign ( UniversalLearnsets , Learnsets ) ;
1705
1776
Learnsets = Object . assign ( OmnifieldLearnsets , Learnsets ) ;
1706
1777
Learnsets = Object . assign ( EspionageLearnsets , Learnsets ) ;
1707
1778
Learnsets = Object . assign ( RebalancedLearnsets , Learnsets ) ;
1779
+ Learnsets = Object . assign ( GPTLearnsets , Learnsets ) ;
1708
1780
const buf = 'exports.BattleLearnsets = ' + es3stringify ( Learnsets ) + ';' ;
1709
1781
fs . writeFileSync ( 'play.pokemonshowdown.com/data/learnsets.js' , buf ) ;
1710
1782
fs . writeFileSync ( 'play.pokemonshowdown.com/data/learnsets.json' , JSON . stringify ( Learnsets ) ) ;
0 commit comments