sc2ai 0.7.0 → 0.8.0

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.
data/data/versions.json CHANGED
@@ -559,19 +559,30 @@
559
559
  "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
560
560
  "version": 92028
561
561
  },
562
+
562
563
  {
563
- "base-version": 93333,
564
- "data-hash": "446907060311fb1cc29eb31e547bb9fd",
565
- "fixed-hash": "BE86048D1DCE8650E1655D2FE2B665A8",
566
- "label": "5.0.14.93333",
564
+ "base-version": 94137,
565
+ "data-hash": "519EE8D06E384469C652DD58FC6016AC",
566
+ "fixed-hash": "B100C340B3D0797CBE914AE091A68653",
567
+ "label": "5.0.14",
567
568
  "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
568
- "version": 93333
569
+ "version": 94137
570
+ },
571
+ {
572
+ "base-version": 95248,
573
+ "data-hash": "D3BB9F619ADA87F2943384DAF437EA32",
574
+ "fixed-hash": "17DA25BB12C6372C4E5944B5E4303906",
575
+ "label": "5.0.15",
576
+ "replay-hash": "5563DC35EC51D0464DC16B56B424C9DF",
577
+ "version": 95248
569
578
  },
579
+
580
+
570
581
  {
571
582
  "base-version": 94137,
572
583
  "data-hash": "519EE8D06E384469C652DD58FC6016AC",
573
584
  "fixed-hash": "B100C340B3D0797CBE914AE091A68653",
574
- "label": "5.0.14.94137",
585
+ "label": "ladder",
575
586
  "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5",
576
587
  "version": 94137
577
588
  }
@@ -4,7 +4,7 @@ LABEL service="bot-ruby-local"
4
4
  USER root
5
5
  WORKDIR /root/ruby-builder
6
6
 
7
- ARG RUBY_VERSION=3.4.4
7
+ ARG RUBY_VERSION=3.4.6
8
8
  ARG DEBIAN_DISABLE_RUBYGEMS_INTEGRATION=true
9
9
 
10
10
  # Deps - Ruby build
@@ -119,6 +119,7 @@ module Api
119
119
  LOAD_BUNKER = 407
120
120
  UNLOADALL_BUNKER = 408
121
121
  UNLOADUNIT_BUNKER = 410
122
+ COMMANDCENTERTRANSPORT_COMMANDCENTERTRANSPORT = 412
122
123
  UNLOADALL_COMMANDCENTER = 413
123
124
  UNLOADUNIT_COMMANDCENTER = 415
124
125
  LOADALL_COMMANDCENTER = 416
@@ -146,6 +147,7 @@ module Api
146
147
  BARRACKSTRAIN_REAPER = 561
147
148
  BARRACKSTRAIN_GHOST = 562
148
149
  BARRACKSTRAIN_MARAUDER = 563
150
+ FACTORYTRAIN_FACTORYTRAIN = 590
149
151
  FACTORYTRAIN_SIEGETANK = 591
150
152
  FACTORYTRAIN_THOR = 594
151
153
  FACTORYTRAIN_HELLION = 595
@@ -410,9 +412,11 @@ module Api
410
412
  TRAINQUEEN_QUEEN = 1632
411
413
  BURROWCREEPTUMORDOWN_BURROWDOWN = 1662
412
414
  TRANSFUSION_TRANSFUSION = 1664
415
+ TECHLABMORPH_TECHLABMORPH = 1666
413
416
  BARRACKSTECHLABMORPH_TECHLABBARRACKS = 1668
414
417
  FACTORYTECHLABMORPH_TECHLABFACTORY = 1670
415
418
  STARPORTTECHLABMORPH_TECHLABSTARPORT = 1672
419
+ REACTORMORPH_REACTORMORPH = 1674
416
420
  BARRACKSREACTORMORPH_REACTOR = 1676
417
421
  FACTORYREACTORMORPH_REACTOR = 1678
418
422
  STARPORTREACTORMORPH_REACTOR = 1680
@@ -440,17 +444,23 @@ module Api
440
444
  BUILD_NYDUSWORM = 1768
441
445
  BUILDNYDUSCANAL_SUMMONNYDUSCANALATTACKER = 1769
442
446
  BUILDNYDUSCANAL_CANCEL = 1798
447
+ BROODLORDHANGAR_BROODLORDHANGAR = 1799
443
448
  EFFECT_CHARGE = 1819
449
+ TOWERCAPTURE_TOWERCAPTURE = 1820
444
450
  HERDINTERACT_HERD = 1821
445
451
  CONTAMINATE_CONTAMINATE = 1825
452
+ SHATTER_SHATTER = 1827
446
453
  CANCEL_QUEUEPASIVE = 1831
447
454
  CANCELSLOT_QUEUEPASSIVE = 1832
448
455
  CANCEL_QUEUEPASSIVECANCELTOSELECTION = 1833
449
456
  CANCELSLOT_QUEUEPASSIVECANCELTOSELECTION = 1834
450
457
  MORPHTOGHOSTNOVA_MOVE = 1837
451
458
  DIGESTERCREEPSPRAY_DIGESTERCREEPSPRAY = 1839
459
+ MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS_MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS = 1841
452
460
  MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS_CANCEL = 1842
461
+ MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT_MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT = 1843
453
462
  MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT_CANCEL = 1844
463
+ MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT_MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT = 1845
454
464
  MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT_CANCEL = 1846
455
465
  MORPH_MOTHERSHIP = 1847
456
466
  CANCEL_MORPHMOTHERSHIP = 1848
@@ -458,6 +468,7 @@ module Api
458
468
  NEXUSINVULNERABILITY_NEXUSINVULNERABILITY = 1930
459
469
  EFFECT_MASSRECALL_MOTHERSHIPCORE = 1974
460
470
  MORPH_HELLION = 1978
471
+ MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS_MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS = 1996
461
472
  MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS_CANCEL = 1997
462
473
  MORPH_HELLBAT = 1998
463
474
  BURROWDOWN_SWARMHOST = 2014
@@ -473,6 +484,7 @@ module Api
473
484
  BLINDINGCLOUD_BLINDINGCLOUD = 2063
474
485
  EFFECT_ABDUCT = 2067
475
486
  VIPERCONSUMESTRUCTURE_VIPERCONSUME = 2073
487
+ TESTZERG_TESTZERG = 2079
476
488
  TESTZERG_CANCEL = 2080
477
489
  BEHAVIOR_BUILDINGATTACKON = 2081
478
490
  BEHAVIOR_BUILDINGATTACKOFF = 2082
@@ -493,7 +505,9 @@ module Api
493
505
  HALLUCINATION_ORACLE = 2114
494
506
  EFFECT_MEDIVACIGNITEAFTERBURNERS = 2116
495
507
  ORACLEREVELATION_ORACLEREVELATION = 2146
508
+ MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT = 2152
496
509
  MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT_CANCEL = 2153
510
+ MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT = 2154
497
511
  MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT_CANCEL = 2155
498
512
  ULTRALISKWEAPONCOOLDOWN_ULTRALISKWEAPONCOOLDOWN = 2158
499
513
  EFFECT_PHOTONOVERCHARGE = 2162
@@ -505,6 +519,22 @@ module Api
505
519
  XELNAGA_CAVERNS_DOORSWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN = 2190
506
520
  XELNAGA_CAVERNS_DOORWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN = 2194
507
521
  EFFECT_TIMEWARP = 2244
522
+ TARSONIS_DOORN_TARSONIS_DOORN = 2262
523
+ TARSONIS_DOORNLOWERED_TARSONIS_DOORNLOWERED = 2264
524
+ TARSONIS_DOORNE_TARSONIS_DOORNE = 2266
525
+ TARSONIS_DOORNELOWERED_TARSONIS_DOORNELOWERED = 2268
526
+ TARSONIS_DOORE_TARSONIS_DOORE = 2270
527
+ TARSONIS_DOORELOWERED_TARSONIS_DOORELOWERED = 2272
528
+ TARSONIS_DOORNW_TARSONIS_DOORNW = 2274
529
+ TARSONIS_DOORNWLOWERED_TARSONIS_DOORNWLOWERED = 2276
530
+ COMPOUNDMANSION_DOORN_COMPOUNDMANSION_DOORN = 2278
531
+ COMPOUNDMANSION_DOORNLOWERED_COMPOUNDMANSION_DOORNLOWERED = 2280
532
+ COMPOUNDMANSION_DOORNE_COMPOUNDMANSION_DOORNE = 2282
533
+ COMPOUNDMANSION_DOORNELOWERED_COMPOUNDMANSION_DOORNELOWERED = 2284
534
+ COMPOUNDMANSION_DOORE_COMPOUNDMANSION_DOORE = 2286
535
+ COMPOUNDMANSION_DOORELOWERED_COMPOUNDMANSION_DOORELOWERED = 2288
536
+ COMPOUNDMANSION_DOORNW_COMPOUNDMANSION_DOORNW = 2290
537
+ COMPOUNDMANSION_DOORNWLOWERED_COMPOUNDMANSION_DOORNWLOWERED = 2292
508
538
  CAUSTICSPRAY_CAUSTICSPRAY = 2324
509
539
  MORPHTORAVAGER_RAVAGER = 2330
510
540
  CANCEL_MORPHRAVAGER = 2331
@@ -533,6 +563,7 @@ module Api
533
563
  HALLUCINATION_DISRUPTOR = 2389
534
564
  HALLUCINATION_ADEPT = 2391
535
565
  EFFECT_VOIDRAYPRISMATICALIGNMENT = 2393
566
+ SEEKERDUMMYCHANNEL_SEEKERDUMMYCHANNEL = 2395
536
567
  VOIDMPIMMORTALREVIVEREBUILD_IMMORTAL = 2469
537
568
  ARBITERMPSTASISFIELD_ARBITERMPSTASISFIELD = 2473
538
569
  ARBITERMPRECALL_ARBITERMPRECALL = 2475
@@ -566,6 +597,7 @@ module Api
566
597
  CANCEL_ADEPTPHASESHIFT = 2594
567
598
  CANCEL_ADEPTSHADEPHASESHIFT = 2596
568
599
  SLAYNELEMENTALGRAB_SLAYNELEMENTALGRAB = 2598
600
+ MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS_MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS = 2600
569
601
  MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS_CANCEL = 2601
570
602
  EFFECT_SHADOWSTRIDE = 2700
571
603
  EFFECT_SPAWNLOCUSTS = 2704
@@ -640,8 +672,11 @@ module Api
640
672
  MOVE = 3794
641
673
  PATROL = 3795
642
674
  UNLOADUNIT = 3796
675
+ MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 3966
643
676
  MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN_CANCEL = 3967
677
+ MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN_MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 3969
644
678
  MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN_CANCEL = 3970
679
+ HYDRALISKFRENZY_HYDRALISKFRENZY = 4109
645
680
  AMORPHOUSARMORCLOUD_AMORPHOUSARMORCLOUD = 4111
646
681
  SHIELDBATTERYRECHARGEEX5_SHIELDBATTERYRECHARGE = 4113
647
682
  SHIELDBATTERYRECHARGEEX5_STOP = 4114
@@ -651,12 +686,11 @@ module Api
651
686
  ENERGYRECHARGE_ENERGYRECHARGE = 4126
652
687
  SALVAGEEFFECT_SALVAGE = 4128
653
688
  WORKERSTOPIDLEABILITYVESPENE_GATHER = 4132
654
- FRENZY = 4109
655
689
 
656
690
  # Returns an array of all constants
657
691
  # @return [Array<Integer>]
658
692
  def self.ids
659
- @ids ||= [1, 2, 4, 5, 6, 7, 16, 17, 18, 19, 20, 23, 24, 25, 26, 28, 30, 36, 38, 40, 42, 45, 46, 47, 48, 49, 74, 76, 78, 110, 140, 142, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 167, 171, 173, 174, 175, 181, 195, 199, 203, 207, 211, 212, 216, 217, 218, 245, 249, 250, 251, 253, 255, 263, 265, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 312, 313, 314, 315, 316, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 331, 333, 348, 380, 382, 383, 386, 388, 390, 392, 393, 394, 396, 397, 399, 401, 403, 405, 407, 408, 410, 413, 415, 416, 417, 419, 421, 422, 451, 452, 454, 455, 484, 485, 487, 488, 517, 518, 520, 522, 524, 554, 556, 558, 560, 561, 562, 563, 591, 594, 595, 596, 597, 614, 620, 621, 622, 623, 624, 626, 650, 651, 652, 653, 654, 655, 656, 657, 658, 710, 730, 731, 732, 761, 763, 764, 765, 766, 767, 768, 769, 770, 790, 793, 796, 797, 799, 800, 802, 803, 806, 807, 820, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 880, 881, 882, 883, 884, 885, 886, 887, 889, 890, 891, 892, 893, 894, 895, 910, 911, 912, 913, 914, 916, 917, 919, 920, 921, 922, 946, 948, 950, 954, 955, 976, 977, 978, 979, 994, 1006, 1036, 1038, 1039, 1040, 1041, 1042, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1093, 1094, 1097, 1099, 1126, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, 1182, 1183, 1184, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1216, 1217, 1218, 1219, 1220, 1221, 1223, 1224, 1225, 1252, 1253, 1282, 1283, 1284, 1312, 1313, 1314, 1315, 1316, 1317, 1342, 1343, 1344, 1345, 1346, 1348, 1351, 1352, 1353, 1354, 1356, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380, 1382, 1383, 1384, 1386, 1387, 1388, 1390, 1391, 1392, 1394, 1396, 1406, 1408, 1409, 1411, 1412, 1413, 1414, 1416, 1417, 1418, 1419, 1433, 1434, 1435, 1437, 1438, 1440, 1442, 1444, 1445, 1446, 1448, 1449, 1450, 1451, 1455, 1456, 1457, 1482, 1512, 1514, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1524, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1571, 1592, 1593, 1594, 1595, 1596, 1597, 1622, 1623, 1628, 1632, 1662, 1664, 1668, 1670, 1672, 1676, 1678, 1680, 1682, 1683, 1684, 1691, 1692, 1693, 1694, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1763, 1764, 1766, 1767, 1768, 1769, 1798, 1819, 1821, 1825, 1831, 1832, 1833, 1834, 1837, 1839, 1842, 1844, 1846, 1847, 1848, 1928, 1930, 1974, 1978, 1997, 1998, 2014, 2015, 2016, 2048, 2049, 2050, 2057, 2058, 2059, 2060, 2063, 2067, 2073, 2080, 2081, 2082, 2083, 2085, 2087, 2089, 2091, 2093, 2095, 2096, 2097, 2099, 2101, 2108, 2109, 2110, 2114, 2116, 2146, 2153, 2155, 2158, 2162, 2172, 2174, 2178, 2184, 2186, 2190, 2194, 2244, 2324, 2330, 2331, 2332, 2333, 2338, 2340, 2341, 2342, 2344, 2346, 2350, 2354, 2358, 2362, 2363, 2364, 2365, 2370, 2371, 2375, 2376, 2383, 2385, 2387, 2389, 2391, 2393, 2469, 2473, 2475, 2477, 2479, 2480, 2481, 2482, 2483, 2485, 2487, 2489, 2490, 2491, 2493, 2495, 2497, 2505, 2535, 2536, 2542, 2544, 2548, 2550, 2552, 2554, 2556, 2558, 2560, 2588, 2594, 2596, 2598, 2601, 2700, 2704, 2706, 2708, 2709, 2714, 2715, 2716, 2718, 2720, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3707, 3709, 3710, 3739, 3741, 3743, 3745, 3747, 3751, 3753, 3755, 3757, 3763, 3771, 3772, 3773, 3776, 3777, 3778, 3779, 3780, 3783, 3784, 3785, 3786, 3789, 3791, 3793, 3794, 3795, 3796, 3967, 3970, 4111, 4113, 4114, 4121, 4122, 4124, 4126, 4128, 4132, 4109]
693
+ @ids ||= [1, 2, 4, 5, 6, 7, 16, 17, 18, 19, 20, 23, 24, 25, 26, 28, 30, 36, 38, 40, 42, 45, 46, 47, 48, 49, 74, 76, 78, 110, 140, 142, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 167, 171, 173, 174, 175, 181, 195, 199, 203, 207, 211, 212, 216, 217, 218, 245, 249, 250, 251, 253, 255, 263, 265, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 312, 313, 314, 315, 316, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 331, 333, 348, 380, 382, 383, 386, 388, 390, 392, 393, 394, 396, 397, 399, 401, 403, 405, 407, 408, 410, 412, 413, 415, 416, 417, 419, 421, 422, 451, 452, 454, 455, 484, 485, 487, 488, 517, 518, 520, 522, 524, 554, 556, 558, 560, 561, 562, 563, 590, 591, 594, 595, 596, 597, 614, 620, 621, 622, 623, 624, 626, 650, 651, 652, 653, 654, 655, 656, 657, 658, 710, 730, 731, 732, 761, 763, 764, 765, 766, 767, 768, 769, 770, 790, 793, 796, 797, 799, 800, 802, 803, 806, 807, 820, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 880, 881, 882, 883, 884, 885, 886, 887, 889, 890, 891, 892, 893, 894, 895, 910, 911, 912, 913, 914, 916, 917, 919, 920, 921, 922, 946, 948, 950, 954, 955, 976, 977, 978, 979, 994, 1006, 1036, 1038, 1039, 1040, 1041, 1042, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1093, 1094, 1097, 1099, 1126, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167, 1182, 1183, 1184, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1216, 1217, 1218, 1219, 1220, 1221, 1223, 1224, 1225, 1252, 1253, 1282, 1283, 1284, 1312, 1313, 1314, 1315, 1316, 1317, 1342, 1343, 1344, 1345, 1346, 1348, 1351, 1352, 1353, 1354, 1356, 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1380, 1382, 1383, 1384, 1386, 1387, 1388, 1390, 1391, 1392, 1394, 1396, 1406, 1408, 1409, 1411, 1412, 1413, 1414, 1416, 1417, 1418, 1419, 1433, 1434, 1435, 1437, 1438, 1440, 1442, 1444, 1445, 1446, 1448, 1449, 1450, 1451, 1455, 1456, 1457, 1482, 1512, 1514, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1524, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1571, 1592, 1593, 1594, 1595, 1596, 1597, 1622, 1623, 1628, 1632, 1662, 1664, 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1683, 1684, 1691, 1692, 1693, 1694, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1763, 1764, 1766, 1767, 1768, 1769, 1798, 1799, 1819, 1820, 1821, 1825, 1827, 1831, 1832, 1833, 1834, 1837, 1839, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1928, 1930, 1974, 1978, 1996, 1997, 1998, 2014, 2015, 2016, 2048, 2049, 2050, 2057, 2058, 2059, 2060, 2063, 2067, 2073, 2079, 2080, 2081, 2082, 2083, 2085, 2087, 2089, 2091, 2093, 2095, 2096, 2097, 2099, 2101, 2108, 2109, 2110, 2114, 2116, 2146, 2152, 2153, 2154, 2155, 2158, 2162, 2172, 2174, 2178, 2184, 2186, 2190, 2194, 2244, 2262, 2264, 2266, 2268, 2270, 2272, 2274, 2276, 2278, 2280, 2282, 2284, 2286, 2288, 2290, 2292, 2324, 2330, 2331, 2332, 2333, 2338, 2340, 2341, 2342, 2344, 2346, 2350, 2354, 2358, 2362, 2363, 2364, 2365, 2370, 2371, 2375, 2376, 2383, 2385, 2387, 2389, 2391, 2393, 2395, 2469, 2473, 2475, 2477, 2479, 2480, 2481, 2482, 2483, 2485, 2487, 2489, 2490, 2491, 2493, 2495, 2497, 2505, 2535, 2536, 2542, 2544, 2548, 2550, 2552, 2554, 2556, 2558, 2560, 2588, 2594, 2596, 2598, 2600, 2601, 2700, 2704, 2706, 2708, 2709, 2714, 2715, 2716, 2718, 2720, 3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3707, 3709, 3710, 3739, 3741, 3743, 3745, 3747, 3751, 3753, 3755, 3757, 3763, 3771, 3772, 3773, 3776, 3777, 3778, 3779, 3780, 3783, 3784, 3785, 3786, 3789, 3791, 3793, 3794, 3795, 3796, 3966, 3967, 3969, 3970, 4109, 4111, 4113, 4114, 4121, 4122, 4124, 4126, 4128, 4132]
660
694
  end
661
695
  end
662
696
  end
@@ -737,6 +771,8 @@ module Api
737
771
  Api::AbilityId::LOAD_BUNKER => Api::AbilityId::LOAD,
738
772
  Api::AbilityId::UNLOADALL_BUNKER => Api::AbilityId::UNLOADALL,
739
773
  Api::AbilityId::UNLOADUNIT_BUNKER => Api::AbilityId::UNLOADUNIT,
774
+ Api::AbilityId::COMMANDCENTERTRANSPORT_COMMANDCENTERTRANSPORT =>
775
+ Api::AbilityId::LOAD,
740
776
  Api::AbilityId::UNLOADALL_COMMANDCENTER => Api::AbilityId::UNLOADALL,
741
777
  Api::AbilityId::UNLOADUNIT_COMMANDCENTER => Api::AbilityId::UNLOADUNIT,
742
778
  Api::AbilityId::LOADALL_COMMANDCENTER => Api::AbilityId::LOADALL,
@@ -305,12 +305,10 @@ module Api
305
305
  TAKENDAMAGE = 299
306
306
  RAVENSCRAMBLERMISSILECARRIER = 300
307
307
  BATTERYOVERCHARGE = 301
308
- LOADOUTSPRAYTRACKER = 302
309
- HYDRALISKFRENZY = 303
310
- DUMMYBUFF002 = 304
311
- DUMMYBUFF001 = 305
312
- DUMMYBUFF003 = 306
313
- DUMMYBUFF004 = 307
314
- DUMMYBUFF005 = 308
308
+ DUMMYBUFF002 = 302
309
+ DUMMYBUFF001 = 303
310
+ DUMMYBUFF003 = 304
311
+ DUMMYBUFF004 = 305
312
+ DUMMYBUFF005 = 306
315
313
  end
316
314
  end
@@ -418,10 +418,6 @@ module Api
418
418
  Api::UnitTypeId::CREEPTUMORBURROWED =>
419
419
  {Api::UnitTypeId::CREEPTUMOR =>
420
420
  {ability: Api::AbilityId::BUILD_CREEPTUMOR,
421
- requires_placement_position: true}},
422
- Api::UnitTypeId::CREEPTUMORQUEEN =>
423
- {Api::UnitTypeId::CREEPTUMOR =>
424
- {ability: Api::AbilityId::BUILD_CREEPTUMOR_TUMOR,
425
421
  requires_placement_position: true}},
426
422
  Api::UnitTypeId::LARVA =>
427
423
  {Api::UnitTypeId::DRONE => {ability: Api::AbilityId::LARVATRAIN_DRONE},
@@ -932,9 +928,7 @@ module Api
932
928
  Api::UnitTypeId::BROODLORD => [Api::UnitTypeId::CORRUPTOR],
933
929
  Api::UnitTypeId::CREEPTUMORQUEEN => [Api::UnitTypeId::QUEEN],
934
930
  Api::UnitTypeId::CREEPTUMOR =>
935
- [Api::UnitTypeId::QUEEN,
936
- Api::UnitTypeId::CREEPTUMORBURROWED,
937
- Api::UnitTypeId::CREEPTUMORQUEEN],
931
+ [Api::UnitTypeId::QUEEN, Api::UnitTypeId::CREEPTUMORBURROWED],
938
932
  Api::UnitTypeId::CHANGELING =>
939
933
  [Api::UnitTypeId::OVERSEER, Api::UnitTypeId::OVERSEERSIEGEMODE],
940
934
  Api::UnitTypeId::DRONE => [Api::UnitTypeId::LARVA],
@@ -1772,7 +1766,7 @@ module Api
1772
1766
  Api::AbilityId::SMART,
1773
1767
  Api::AbilityId::BURROWDOWN_HYDRALISK,
1774
1768
  Api::AbilityId::MORPH_LURKER,
1775
- Api::AbilityId::FRENZY],
1769
+ Api::AbilityId::HYDRALISKFRENZY_HYDRALISKFRENZY],
1776
1770
  Api::UnitTypeId::MUTALISK =>
1777
1771
  [Api::AbilityId::STOP_STOP,
1778
1772
  Api::AbilityId::MOVE_MOVE,
@@ -1916,8 +1910,7 @@ module Api
1916
1910
  [Api::AbilityId::BUILD_CREEPTUMOR_TUMOR,
1917
1911
  Api::AbilityId::SMART,
1918
1912
  Api::AbilityId::BUILD_CREEPTUMOR],
1919
- Api::UnitTypeId::CREEPTUMORQUEEN =>
1920
- [Api::AbilityId::BUILD_CREEPTUMOR_TUMOR, Api::AbilityId::SMART],
1913
+ Api::UnitTypeId::CREEPTUMORQUEEN => [],
1921
1914
  Api::UnitTypeId::SPINECRAWLERUPROOTED =>
1922
1915
  [Api::AbilityId::STOP_STOP,
1923
1916
  Api::AbilityId::MOVE_MOVE,
@@ -2023,52 +2023,26 @@ module Api
2023
2023
  MECHABATTLECARRIERLORDACGLUESCREENDUMMY_2 = 2007
2024
2024
  MECHASPINECRAWLERACGLUESCREENDUMMY_2 = 2008
2025
2025
  MECHASPORECRAWLERACGLUESCREENDUMMY_2 = 2009
2026
- TROOPERMENGSKACGLUESCREENDUMMY_2 = 2010
2027
- MEDIVACMENGSKACGLUESCREENDUMMY_2 = 2011
2028
- BLIMPMENGSKACGLUESCREENDUMMY_2 = 2012
2029
- MARAUDERMENGSKACGLUESCREENDUMMY_2 = 2013
2030
- GHOSTMENGSKACGLUESCREENDUMMY_2 = 2014
2031
- SIEGETANKMENGSKACGLUESCREENDUMMY_2 = 2015
2032
- THORMENGSKACGLUESCREENDUMMY_2 = 2016
2033
- VIKINGMENGSKACGLUESCREENDUMMY_2 = 2017
2034
- BATTLECRUISERMENGSKACGLUESCREENDUMMY_2 = 2018
2035
- BUNKERDEPOTMENGSKACGLUESCREENDUMMY_2 = 2019
2036
- MISSILETURRETMENGSKACGLUESCREENDUMMY_2 = 2020
2037
- ARTILLERYMENGSKACGLUESCREENDUMMY_2 = 2021
2038
- LOADOUTSPRAY1_2 = 2022
2039
- LOADOUTSPRAY2_2 = 2023
2040
- LOADOUTSPRAY3_2 = 2024
2041
- LOADOUTSPRAY4_2 = 2025
2042
- LOADOUTSPRAY5_2 = 2026
2043
- LOADOUTSPRAY6_2 = 2027
2044
- LOADOUTSPRAY7_2 = 2028
2045
- LOADOUTSPRAY8_2 = 2029
2046
- LOADOUTSPRAY9_2 = 2030
2047
- LOADOUTSPRAY10_2 = 2031
2048
- LOADOUTSPRAY11_2 = 2032
2049
- LOADOUTSPRAY12_2 = 2033
2050
- LOADOUTSPRAY13_2 = 2034
2051
- LOADOUTSPRAY14_2 = 2035
2052
- COLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 2036
2053
- COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 2037
2054
- COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFTGREEN = 2038
2055
- COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHTGREEN = 2039
2056
- COLLAPSIBLEROCKTOWERRAMPLEFTGREEN = 2040
2057
- COLLAPSIBLEROCKTOWERRAMPRIGHTGREEN = 2041
2058
- DUMMYUNIT000 = 2042
2059
- DUMMYUNIT001 = 2043
2060
- DUMMYUNIT002 = 2044
2061
- DUMMYUNIT003 = 2045
2062
- DUMMYUNIT004 = 2046
2063
- DUMMYUNIT005 = 2047
2064
- DUMMYUNIT006 = 2048
2065
- DUMMYUNIT007 = 2049
2066
- DUMMYUNIT008 = 2050
2067
- DUMMYUNIT009 = 2051
2068
- DUMMYUNIT010 = 2052
2069
- DUMMYUNIT011 = 2053
2070
- DUMMYUNIT012 = 2054
2071
- DUMMYUNIT013 = 2055
2072
- DUMMYUNIT014 = 2056
2026
+ COLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN = 2010
2027
+ COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN = 2011
2028
+ COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFTGREEN = 2012
2029
+ COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHTGREEN = 2013
2030
+ COLLAPSIBLEROCKTOWERRAMPLEFTGREEN = 2014
2031
+ COLLAPSIBLEROCKTOWERRAMPRIGHTGREEN = 2015
2032
+ DUMMYUNIT000 = 2016
2033
+ DUMMYUNIT001 = 2017
2034
+ DUMMYUNIT002 = 2018
2035
+ DUMMYUNIT003 = 2019
2036
+ DUMMYUNIT004 = 2020
2037
+ DUMMYUNIT005 = 2021
2038
+ DUMMYUNIT006 = 2022
2039
+ DUMMYUNIT007 = 2023
2040
+ DUMMYUNIT008 = 2024
2041
+ DUMMYUNIT009 = 2025
2042
+ DUMMYUNIT010 = 2026
2043
+ DUMMYUNIT011 = 2027
2044
+ DUMMYUNIT012 = 2028
2045
+ DUMMYUNIT013 = 2029
2046
+ DUMMYUNIT014 = 2030
2073
2047
  end
2074
2048
  end
data/lib/sc2ai/cli/cli.rb CHANGED
@@ -19,22 +19,23 @@ module Sc2
19
19
  register(Sc2::Cli::Ladderzip, "ladderzip", "ladderzip BOTNAME", "Prepares a zip via docker for supplied aiarena bot name")
20
20
  register(Sc2::Cli::VersusBot, "vsbot", "vsbot FILENAME", "Copies target zip to docker and starts a match")
21
21
 
22
- # TODO: Use thor's #ask and other methods helpers of raw $stdin and puts.
23
- desc "setup410", "Downloads and install SC2 v4.10"
24
- # downloads and install SC2 v4.10
22
+ desc "setup410", "alias of download_ladder_version"
25
23
  def setup410
24
+ download_ladder_version
25
+ end
26
+
27
+ desc "download_ladder_version", "Downloads and install SC2 at the patch used for ladder"
28
+ # downloads and install SC2 "ladder" as pinned in versions.json
29
+ def download_ladder_version
26
30
  require "sc2ai"
27
31
  Async do
28
32
  Sc2.logger.level = :fatal
29
33
  say " "
30
- say "This script sets up SC2 at version 4.10, which we use competitively."
34
+ say "This script sets up SC2 at the same version use competitively."
31
35
  say "SC2 will launch a blank window, be unresponsive, but download about 100mb in the background."
32
36
  say ""
33
37
  say "It will appear to hang as it updates. This is normal."
34
38
  say "Let it finish and close itself."
35
- say "Press any key to continue..."
36
- ask ""
37
-
38
39
  say ""
39
40
  say ""
40
41
  say "This will only take a minute..."
@@ -53,7 +54,14 @@ module Sc2
53
54
  )
54
55
 
55
56
  # Auto-detect executable path and ensure it matched exactly
56
- base_build = "75689"
57
+ base_build = ""
58
+ Sc2::Client.versions_json.each do |node|
59
+ if node["label"] == "ladder"
60
+ base_build = node["base-version"].to_s
61
+ break
62
+ end
63
+ end
64
+
57
65
  path = Sc2::Paths.executable(base_build: base_build)
58
66
  if path.include?(base_build) && Pathname(path).exist?
59
67
  say " "
@@ -69,13 +77,13 @@ module Sc2
69
77
 
70
78
  observer.api.quit
71
79
  observer.disconnect
72
- say "Generating sc2ai.yml to always use 4.10..."
73
- Sc2.config.config_file.write({"version" => "4.10"}.to_yaml.to_s)
80
+ say "Generating sc2ai.yml to always use version 'ladder'..."
81
+ Sc2.config.config_file.write({"version" => "ladder"}.to_yaml.to_s)
74
82
  say ""
75
83
  say "Done. You're good to go."
76
84
  say "To run an example match, execute:"
77
85
  say ""
78
- say "ruby run_example_match.rb", :green
86
+ say "ruby run_example_match.rb", :cyan
79
87
  say ""
80
88
  ensure
81
89
  Sc2::ClientManager.stop(0)
data/lib/sc2ai/cli/new.rb CHANGED
@@ -5,6 +5,7 @@ module Sc2
5
5
  class Cli < Thor
6
6
  class New < Thor::Group
7
7
  include Thor::Actions
8
+
8
9
  desc "Creates a new bot"
9
10
 
10
11
  # Define arguments and options
@@ -76,11 +77,13 @@ module Sc2
76
77
  say ""
77
78
  say "Bot generated, next steps:"
78
79
  say ""
79
- say "cd #{@directory} && bundle install", :green
80
+ say "cd #{@directory} && bundle install", :cyan
81
+ say ""
82
+ say "Afterwards, it is recommended to setup SC2 to match the ladder version with:"
80
83
  say ""
81
- say "Once your project is ready, if you haven't done so, setup SC2 v4.10 with:"
84
+ say "bundle exec sc2ai download_ladder_version", :cyan
82
85
  say ""
83
- say "bundle exec sc2ai setup410", :green
86
+ say "Refer to the docs to get the 'AI Edition' maps or further help: https://sc2ai.pages.dev/"
84
87
  say ""
85
88
  end
86
89
  end
@@ -57,7 +57,7 @@ module Sc2
57
57
  show_cloaked: true,
58
58
  show_burrowed_shadows: true,
59
59
  show_placeholders: true,
60
- raw_affects_selection: Sc2.ladder?,
60
+ raw_affects_selection: enable_feature_layer || Sc2.ladder?,
61
61
  raw_crop_to_playable_area: true, **interface_options
62
62
  )
63
63
  )
@@ -207,8 +207,13 @@ module Sc2
207
207
  @_cached_request_observation ||= Api::Request.new(
208
208
  observation: Api::RequestObservation.new
209
209
  ).to_proto
210
+
211
+ time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
210
212
  @websocket.send_binary(@_cached_request_observation)
211
- response = Api::Response.decode(@websocket.read.to_str)
213
+ response = @websocket.read.to_str
214
+ @external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
215
+
216
+ response = Api::Response.decode(response)
212
217
 
213
218
  if @status != response.status
214
219
  @status = response.status
@@ -11,6 +11,11 @@ module Sc2
11
11
  # Api requests
12
12
  include Sc2::Connection::Requests
13
13
 
14
+ # @private
15
+ # Total milliseconds spent waiting on SC2 responses
16
+ # @return [Float]
17
+ attr_accessor :external_time
18
+
14
19
  attr_accessor :host, :port, :websocket
15
20
 
16
21
  # Last known game status, i.e. :launched, :ended, :unknown
@@ -37,6 +42,7 @@ module Sc2
37
42
  @listeners = {}
38
43
  @websocket = nil
39
44
  @status = :unknown
45
+ @external_time = 0.0
40
46
  # Only allow one request at a time.
41
47
  # TODO: Since it turns out the client websocket can only handle 1 request at a time, we don't stricly need Async
42
48
  @scheduler = Async::Semaphore.new(1)
@@ -94,19 +100,20 @@ module Sc2
94
100
  # @return [Api::Response] response
95
101
  def send_request(request)
96
102
  @scheduler.async do |_task|
97
- # r = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) #debug
98
- # name = request.is_a?(String) ? request : request.request #debug
99
103
  request = request.to_proto unless request.is_a?(String)
104
+
105
+ time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
100
106
  @websocket.send_binary(request)
101
- response = Api::Response.decode(@websocket.read.to_str)
107
+ response = @websocket.read.to_str
108
+ @external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
109
+
110
+ response = Api::Response.decode(response)
102
111
 
103
112
  if @status != response.status
104
113
  @status = response.status
105
114
  @listeners[StatusListener.name]&.each { _1.on_status_change(@status) }
106
115
  end
107
116
 
108
- # Sc2.logger.debug { response }
109
- # puts "#{(::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - r) * 1000} - #{name}" #debug
110
117
  response
111
118
  end.wait
112
119
  rescue EOFError => e
@@ -121,6 +128,7 @@ module Sc2
121
128
  # @return [void]
122
129
  def send_request_and_ignore(request)
123
130
  @scheduler.async do |_task|
131
+ time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
124
132
  @websocket.send_binary(request)
125
133
  while @websocket.read_frame
126
134
  if @websocket.frames.last&.finished?
@@ -128,6 +136,7 @@ module Sc2
128
136
  break
129
137
  end
130
138
  end
139
+ @external_time += Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - time
131
140
  end.wait
132
141
 
133
142
  nil
@@ -82,7 +82,7 @@ module Sc2
82
82
  attr_accessor :windowy # -windowy
83
83
 
84
84
  # @!attribute version
85
- # Version number such as "4.10". Leave blank to use latest
85
+ # Version number such as "ladder" or "4.10". Leave blank to use latest
86
86
  # @return [String,nil]
87
87
  attr_accessor :version
88
88
 
@@ -5,6 +5,27 @@ require_relative "client/configurable_options"
5
5
  module Sc2
6
6
  # Manages client connection to the Api
7
7
  class Client
8
+ class << self
9
+ # @private
10
+ # Reads bundled versions.json
11
+ # See tact archive or blizztrack for update config file
12
+ # https://github.com/mdX7/tact_configs/blob/77ecc4176689ab6c50be342e1ad73127ffe358d7/tpr/sc2/config/08/b3/08b331b39d9fbe95c338ec370e63f2e2#L4
13
+ # https://blizztrack.com/config/s2/bc/8453c2f1c98b955334c7284215429c36
14
+ # @example
15
+ # {
16
+ # "base-version": 92028, # <- from "build-name" [1..-1] = "B92028"
17
+ # "data-hash": "2B7746A6706F919775EF1BADFC95EA1C", # <- from "root"
18
+ # "fixed-hash": "163B1CDF46F09B621F6312CD6901228E", # <- from "build-fixed-hash"
19
+ # "label": "5.0.13", # <- check game client
20
+ # "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5", # <- from "build-replay-hash"
21
+ # "version": 92028 <- always same as base-version these days
22
+ # },
23
+ # @return [Array] JSON contents of versions.json
24
+ def versions_json
25
+ JSON.load_file(Paths.gem_data_versions_path)
26
+ end
27
+ end
28
+
8
29
  include Sc2::Client::ConfigurableOptions
9
30
 
10
31
  # @!attribute port
@@ -92,7 +113,7 @@ module Sc2
92
113
  def use_version(version)
93
114
  found_base_build = nil
94
115
  found_data_version = nil
95
- versions_json.each do |node|
116
+ Sc2::Client.versions_json.each do |node|
96
117
  if version == node["label"]
97
118
  found_base_build = node["base-version"]
98
119
  found_data_version = node["data-hash"]
@@ -121,7 +142,11 @@ module Sc2
121
142
  # Takes all configuration and Sc2 executable string with arguments
122
143
  # @return [String] command to launch Sc2
123
144
  def command_string
124
- command = "\"#{Sc2::Paths.executable(base_build: @base_build)}\" "
145
+ command = ""
146
+ if Paths.platform == Paths::PF_WINE
147
+ command = "#{ENV["WINE"] || "wine"} "
148
+ end
149
+ command += "\"#{Sc2::Paths.executable(base_build: @base_build)}\" "
125
150
  command += " -port #{@port}"
126
151
  if Paths.platform == Paths::PF_WSL2
127
152
  # For WSL2, always let windows listen on all 0.0.0.0
@@ -147,24 +172,5 @@ module Sc2
147
172
 
148
173
  command
149
174
  end
150
-
151
- # @private
152
- # Reads bundled versions.json
153
- # See tact archive or blizztrack for update config file
154
- # https://github.com/mdX7/tact_configs/blob/77ecc4176689ab6c50be342e1ad73127ffe358d7/tpr/sc2/config/08/b3/08b331b39d9fbe95c338ec370e63f2e2#L4
155
- # https://blizztrack.com/config/s2/bc/8453c2f1c98b955334c7284215429c36return
156
- # @example
157
- # {
158
- # "base-version": 92028, # <- from "build-name" [1..-1] = "B92028"
159
- # "data-hash": "2B7746A6706F919775EF1BADFC95EA1C", # <- from "root"
160
- # "fixed-hash": "163B1CDF46F09B621F6312CD6901228E", # <- from "build-fixed-hash"
161
- # "label": "5.0.13", # <- check game client
162
- # "replay-hash": "BE64E420B329BD2A7D10EEBC0039D6E5", # <- from "build-replay-hash"
163
- # "version": 92028 <- always same as base-version these days
164
- # },
165
- # @return [Array] JSON contents of versions.json
166
- def versions_json
167
- JSON.load_file(Paths.gem_data_versions_path)
168
- end
169
175
  end
170
176
  end
@@ -10,6 +10,7 @@ module Sc2
10
10
 
11
11
  class << self
12
12
  extend Forwardable
13
+
13
14
  def_delegators :instance, :obtain, :get, :start, :stop, :stop_all, :host
14
15
  end
15
16
 
@@ -29,6 +29,9 @@ module Sc2
29
29
  @path = Pathname(Paths.maps_dir).glob("**/#{name}").first.to_s
30
30
  if Paths.wsl?
31
31
  @path = Paths.wsl_to_win(path: @path)
32
+ elsif Paths.platform == Paths::PF_WINE
33
+ # Get relative path based on Maps folder
34
+ @path = Pathname(@path.gsub(Pathname(Paths.maps_dir).to_s, "")).to_s
32
35
  end
33
36
  end
34
37