sc2ai 0.0.0.pre → 0.0.2
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.
- checksums.yaml +4 -4
- data/data/data.json +1 -0
- data/data/data_readable.json +22842 -0
- data/data/sc2ai/protocol/common.proto +59 -0
- data/data/sc2ai/protocol/data.proto +120 -0
- data/data/sc2ai/protocol/debug.proto +127 -0
- data/data/sc2ai/protocol/error.proto +221 -0
- data/data/sc2ai/protocol/query.proto +55 -0
- data/data/sc2ai/protocol/raw.proto +202 -0
- data/data/sc2ai/protocol/sc2api.proto +718 -0
- data/data/sc2ai/protocol/score.proto +108 -0
- data/data/sc2ai/protocol/spatial.proto +115 -0
- data/data/sc2ai/protocol/ui.proto +145 -0
- data/data/setup/setup.SC2Map +0 -0
- data/data/setup/setup.SC2Replay +0 -0
- data/data/stableid.json +35730 -0
- data/data/versions.json +554 -0
- data/exe/sc2ai +35 -0
- data/lib/docker_build/Dockerfile.ruby +74 -0
- data/lib/docker_build/docker-compose-base-image.yml +10 -0
- data/lib/docker_build/docker-compose-ladderzip.yml +9 -0
- data/lib/sc2ai/api/ability_id.rb +1644 -0
- data/lib/sc2ai/api/buff_id.rb +306 -0
- data/lib/sc2ai/api/data.rb +101 -0
- data/lib/sc2ai/api/effect_id.rb +20 -0
- data/lib/sc2ai/api/tech_tree.rb +83 -0
- data/lib/sc2ai/api/tech_tree_data.rb +2338 -0
- data/lib/sc2ai/api/unit_type_id.rb +2022 -0
- data/lib/sc2ai/api/upgrade_id.rb +310 -0
- data/lib/sc2ai/cli/cli.rb +175 -0
- data/lib/sc2ai/cli/ladderzip.rb +154 -0
- data/lib/sc2ai/cli/new.rb +88 -0
- data/lib/sc2ai/configuration.rb +145 -0
- data/lib/sc2ai/connection/connection_listener.rb +30 -0
- data/lib/sc2ai/connection/requests.rb +417 -0
- data/lib/sc2ai/connection/status_listener.rb +15 -0
- data/lib/sc2ai/connection.rb +146 -0
- data/lib/sc2ai/local_play/client/configurable_options.rb +115 -0
- data/lib/sc2ai/local_play/client.rb +159 -0
- data/lib/sc2ai/local_play/client_manager.rb +70 -0
- data/lib/sc2ai/local_play/map_file.rb +48 -0
- data/lib/sc2ai/local_play/match.rb +184 -0
- data/lib/sc2ai/overrides/array.rb +14 -0
- data/lib/sc2ai/overrides/async/process/child.rb +31 -0
- data/lib/sc2ai/overrides/kernel.rb +33 -0
- data/lib/sc2ai/paths.rb +294 -0
- data/lib/sc2ai/player/actions.rb +386 -0
- data/lib/sc2ai/player/debug.rb +224 -0
- data/lib/sc2ai/player/game_state.rb +131 -0
- data/lib/sc2ai/player/geometry.rb +766 -0
- data/lib/sc2ai/player/previous_state.rb +49 -0
- data/lib/sc2ai/player/units.rb +337 -0
- data/lib/sc2ai/player.rb +661 -0
- data/lib/sc2ai/ports.rb +152 -0
- data/lib/sc2ai/protocol/_meta_documentation.rb +39 -0
- data/lib/sc2ai/protocol/common_pb.rb +43 -0
- data/lib/sc2ai/protocol/data_pb.rb +47 -0
- data/lib/sc2ai/protocol/debug_pb.rb +56 -0
- data/lib/sc2ai/protocol/error_pb.rb +36 -0
- data/lib/sc2ai/protocol/extensions/color.rb +20 -0
- data/lib/sc2ai/protocol/extensions/point.rb +23 -0
- data/lib/sc2ai/protocol/extensions/point_2_d.rb +26 -0
- data/lib/sc2ai/protocol/extensions/position.rb +202 -0
- data/lib/sc2ai/protocol/extensions/power_source.rb +19 -0
- data/lib/sc2ai/protocol/extensions/unit.rb +489 -0
- data/lib/sc2ai/protocol/query_pb.rb +47 -0
- data/lib/sc2ai/protocol/raw_pb.rb +57 -0
- data/lib/sc2ai/protocol/sc2api_pb.rb +130 -0
- data/lib/sc2ai/protocol/score_pb.rb +40 -0
- data/lib/sc2ai/protocol/spatial_pb.rb +48 -0
- data/lib/sc2ai/protocol/ui_pb.rb +56 -0
- data/lib/sc2ai/unit_group/action_ext.rb +74 -0
- data/lib/sc2ai/unit_group/filter_ext.rb +379 -0
- data/lib/sc2ai/unit_group.rb +277 -0
- data/lib/sc2ai/version.rb +2 -1
- data/lib/sc2ai.rb +93 -2
- data/lib/templates/ladderzip/bin/ladder.tt +23 -0
- data/lib/templates/new/.ladderignore +20 -0
- data/lib/templates/new/Gemfile.tt +7 -0
- data/lib/templates/new/api/common.proto +59 -0
- data/lib/templates/new/api/data.proto +120 -0
- data/lib/templates/new/api/debug.proto +127 -0
- data/lib/templates/new/api/error.proto +221 -0
- data/lib/templates/new/api/query.proto +55 -0
- data/lib/templates/new/api/raw.proto +202 -0
- data/lib/templates/new/api/sc2api.proto +718 -0
- data/lib/templates/new/api/score.proto +108 -0
- data/lib/templates/new/api/spatial.proto +115 -0
- data/lib/templates/new/api/ui.proto +145 -0
- data/lib/templates/new/boot.rb.tt +6 -0
- data/lib/templates/new/my_bot.rb.tt +23 -0
- data/lib/templates/new/run_example_match.rb.tt +14 -0
- data/sc2ai.gemspec +80 -0
- metadata +344 -13
@@ -0,0 +1,306 @@
|
|
1
|
+
# Generated from stableid.json, do not edit.
|
2
|
+
|
3
|
+
module Api
|
4
|
+
# Constant reference of Buff ids
|
5
|
+
module BuffId
|
6
|
+
NULL = 0
|
7
|
+
RADAR25 = 1
|
8
|
+
TAUNTB = 2
|
9
|
+
DISABLEABILS = 3
|
10
|
+
TRANSIENTMORPH = 4
|
11
|
+
GRAVITONBEAM = 5
|
12
|
+
GHOSTCLOAK = 6
|
13
|
+
BANSHEECLOAK = 7
|
14
|
+
POWERUSERWARPABLE = 8
|
15
|
+
VORTEXBEHAVIORENEMY = 9
|
16
|
+
CORRUPTION = 10
|
17
|
+
QUEENSPAWNLARVATIMER = 11
|
18
|
+
GHOSTHOLDFIRE = 12
|
19
|
+
GHOSTHOLDFIREB = 13
|
20
|
+
LEECH = 14
|
21
|
+
LEECHDISABLEABILITIES = 15
|
22
|
+
EMPDECLOAK = 16
|
23
|
+
FUNGALGROWTH = 17
|
24
|
+
GUARDIANSHIELD = 18
|
25
|
+
SEEKERMISSILETIMEOUT = 19
|
26
|
+
TIMEWARPPRODUCTION = 20
|
27
|
+
ETHEREAL = 21
|
28
|
+
NEURALPARASITE = 22
|
29
|
+
NEURALPARASITEWAIT = 23
|
30
|
+
STIMPACKMARAUDER = 24
|
31
|
+
SUPPLYDROP = 25
|
32
|
+
def self._250MMSTRIKECANNONS = 26
|
33
|
+
STIMPACK = 27
|
34
|
+
PSISTORM = 28
|
35
|
+
CLOAKFIELDEFFECT = 29
|
36
|
+
CHARGING = 30
|
37
|
+
AIDANGERBUFF = 31
|
38
|
+
VORTEXBEHAVIOR = 32
|
39
|
+
SLOW = 33
|
40
|
+
TEMPORALRIFTUNIT = 34
|
41
|
+
SHEEPBUSY = 35
|
42
|
+
CONTAMINATED = 36
|
43
|
+
TIMESCALECONVERSIONBEHAVIOR = 37
|
44
|
+
BLINDINGCLOUDSTRUCTURE = 38
|
45
|
+
COLLAPSIBLEROCKTOWERCONJOINEDSEARCH = 39
|
46
|
+
COLLAPSIBLEROCKTOWERRAMPDIAGONALCONJOINEDSEARCH = 40
|
47
|
+
COLLAPSIBLETERRANTOWERCONJOINEDSEARCH = 41
|
48
|
+
COLLAPSIBLETERRANTOWERRAMPDIAGONALCONJOINEDSEARCH = 42
|
49
|
+
DIGESTERCREEPSPRAYVISION = 43
|
50
|
+
INVULNERABILITYSHIELD = 44
|
51
|
+
MINEDRONECOUNTDOWN = 45
|
52
|
+
MOTHERSHIPSTASIS = 46
|
53
|
+
MOTHERSHIPSTASISCASTER = 47
|
54
|
+
MOTHERSHIPCOREENERGIZEVISUAL = 48
|
55
|
+
ORACLEREVELATION = 49
|
56
|
+
GHOSTSNIPEDOT = 50
|
57
|
+
NEXUSPHASESHIFT = 51
|
58
|
+
NEXUSINVULNERABILITY = 52
|
59
|
+
ROUGHTERRAINSEARCH = 53
|
60
|
+
ROUGHTERRAINSLOW = 54
|
61
|
+
ORACLECLOAKFIELD = 55
|
62
|
+
ORACLECLOAKFIELDEFFECT = 56
|
63
|
+
SCRYERFRIENDLY = 57
|
64
|
+
SPECTRESHIELD = 58
|
65
|
+
VIPERCONSUMESTRUCTURE = 59
|
66
|
+
RESTORESHIELDS = 60
|
67
|
+
MERCENARYCYCLONEMISSILES = 61
|
68
|
+
MERCENARYSENSORDISH = 62
|
69
|
+
MERCENARYSHIELD = 63
|
70
|
+
SCRYER = 64
|
71
|
+
STUNROUNDINITIALBEHAVIOR = 65
|
72
|
+
BUILDINGSHIELD = 66
|
73
|
+
LASERSIGHT = 67
|
74
|
+
PROTECTIVEBARRIER = 68
|
75
|
+
CORRUPTORGROUNDATTACKDEBUFF = 69
|
76
|
+
BATTLECRUISERANTIAIRDISABLE = 70
|
77
|
+
BUILDINGSTASIS = 71
|
78
|
+
STASIS = 72
|
79
|
+
RESOURCESTUN = 73
|
80
|
+
MAXIMUMTHRUST = 74
|
81
|
+
CHARGEUP = 75
|
82
|
+
CLOAKUNIT = 76
|
83
|
+
NULLFIELD = 77
|
84
|
+
RESCUE = 78
|
85
|
+
BENIGN = 79
|
86
|
+
LASERTARGETING = 80
|
87
|
+
ENGAGE = 81
|
88
|
+
CAPRESOURCE = 82
|
89
|
+
BLINDINGCLOUD = 83
|
90
|
+
DOOMDAMAGEDELAY = 84
|
91
|
+
EYESTALK = 85
|
92
|
+
BURROWCHARGE = 86
|
93
|
+
HIDDEN = 87
|
94
|
+
MINEDRONEDOT = 88
|
95
|
+
MEDIVACSPEEDBOOST = 89
|
96
|
+
EXTENDBRIDGEEXTENDINGBRIDGENEWIDE8OUT = 90
|
97
|
+
EXTENDBRIDGEEXTENDINGBRIDGENWWIDE8OUT = 91
|
98
|
+
EXTENDBRIDGEEXTENDINGBRIDGENEWIDE10OUT = 92
|
99
|
+
EXTENDBRIDGEEXTENDINGBRIDGENWWIDE10OUT = 93
|
100
|
+
EXTENDBRIDGEEXTENDINGBRIDGENEWIDE12OUT = 94
|
101
|
+
EXTENDBRIDGEEXTENDINGBRIDGENWWIDE12OUT = 95
|
102
|
+
PHASESHIELD = 96
|
103
|
+
PURIFY = 97
|
104
|
+
VOIDSIPHON = 98
|
105
|
+
ORACLEWEAPON = 99
|
106
|
+
ANTIAIRWEAPONSWITCHCOOLDOWN = 100
|
107
|
+
ARBITERMPSTASISFIELD = 101
|
108
|
+
IMMORTALOVERLOAD = 102
|
109
|
+
CLOAKINGFIELDTARGETED = 103
|
110
|
+
LIGHTNINGBOMB = 104
|
111
|
+
ORACLEPHASESHIFT = 105
|
112
|
+
RELEASEINTERCEPTORSCOOLDOWN = 106
|
113
|
+
RELEASEINTERCEPTORSTIMEDLIFEWARNING = 107
|
114
|
+
RELEASEINTERCEPTORSWANDERDELAY = 108
|
115
|
+
RELEASEINTERCEPTORSBEACON = 109
|
116
|
+
ARBITERMPCLOAKFIELDEFFECT = 110
|
117
|
+
PURIFICATIONNOVA = 111
|
118
|
+
CORRUPTIONBOMBDAMAGE = 112
|
119
|
+
CORSAIRMPDISRUPTIONWEB = 113
|
120
|
+
DISRUPTORPUSH = 114
|
121
|
+
LIGHTOFAIUR = 115
|
122
|
+
LOCKON = 116
|
123
|
+
OVERCHARGE = 117
|
124
|
+
OVERCHARGEDAMAGE = 118
|
125
|
+
OVERCHARGESPEEDBOOST = 119
|
126
|
+
SEEKERMISSILE = 120
|
127
|
+
TEMPORALFIELD = 121
|
128
|
+
VOIDRAYSWARMDAMAGEBOOST = 122
|
129
|
+
VOIDMPIMMORTALREVIVESUPRESSED = 123
|
130
|
+
DEVOURERMPACIDSPORES = 124
|
131
|
+
DEFILERMPCONSUME = 125
|
132
|
+
DEFILERMPDARKSWARM = 126
|
133
|
+
DEFILERMPPLAGUE = 127
|
134
|
+
QUEENMPENSNARE = 128
|
135
|
+
ORACLESTASISTRAPTARGET = 129
|
136
|
+
SELFREPAIR = 130
|
137
|
+
AGGRESSIVEMUTATION = 131
|
138
|
+
PARASITICBOMB = 132
|
139
|
+
PARASITICBOMBUNITKU = 133
|
140
|
+
PARASITICBOMBSECONDARYUNITSEARCH = 134
|
141
|
+
ADEPTDEATHCHECK = 135
|
142
|
+
LURKERHOLDFIRE = 136
|
143
|
+
LURKERHOLDFIREB = 137
|
144
|
+
TIMESTOPSTUN = 138
|
145
|
+
SLAYNELEMENTALGRABSTUN = 139
|
146
|
+
PURIFICATIONNOVAPOST = 140
|
147
|
+
DISABLEINTERCEPTORS = 141
|
148
|
+
BYPASSARMORDEBUFFONE = 142
|
149
|
+
BYPASSARMORDEBUFFTWO = 143
|
150
|
+
BYPASSARMORDEBUFFTHREE = 144
|
151
|
+
CHANNELSNIPECOMBAT = 145
|
152
|
+
TEMPESTDISRUPTIONBLASTSTUNBEHAVIOR = 146
|
153
|
+
GRAVITONPRISON = 147
|
154
|
+
INFESTORDISEASE = 148
|
155
|
+
SS_LIGHTNINGPROJECTOR = 149
|
156
|
+
PURIFIERPLANETCRACKERCHARGE = 150
|
157
|
+
SPECTRECLOAKING = 151
|
158
|
+
WRAITHCLOAK = 152
|
159
|
+
PSYTROUSOXIDE = 153
|
160
|
+
BANSHEECLOAKCROSSSPECTRUMDAMPENERS = 154
|
161
|
+
SS_BATTLECRUISERHUNTERSEEKERTIMEOUT = 155
|
162
|
+
SS_STRONGERENEMYBUFF = 156
|
163
|
+
SS_TERRATRONARMMISSILETARGETCHECK = 157
|
164
|
+
SS_MISSILETIMEOUT = 158
|
165
|
+
SS_LEVIATHANBOMBCOLLISIONCHECK = 159
|
166
|
+
SS_LEVIATHANBOMBEXPLODETIMER = 160
|
167
|
+
SS_LEVIATHANBOMBMISSILETARGETCHECK = 161
|
168
|
+
SS_TERRATRONCOLLISIONCHECK = 162
|
169
|
+
SS_CARRIERBOSSCOLLISIONCHECK = 163
|
170
|
+
SS_CORRUPTORMISSILETARGETCHECK = 164
|
171
|
+
SS_INVULNERABLE = 165
|
172
|
+
SS_LEVIATHANTENTACLEMISSILETARGETCHECK = 166
|
173
|
+
SS_LEVIATHANTENTACLEMISSILETARGETCHECKINVERTED = 167
|
174
|
+
SS_LEVIATHANTENTACLETARGETDEATHDELAY = 168
|
175
|
+
SS_LEVIATHANTENTACLEMISSILESCANSWAPDELAY = 169
|
176
|
+
SS_POWERUPDIAGONAL2 = 170
|
177
|
+
SS_BATTLECRUISERCOLLISIONCHECK = 171
|
178
|
+
SS_TERRATRONMISSILESPINNERMISSILELAUNCHER = 172
|
179
|
+
SS_TERRATRONMISSILESPINNERCOLLISIONCHECK = 173
|
180
|
+
SS_TERRATRONMISSILELAUNCHER = 174
|
181
|
+
SS_BATTLECRUISERMISSILELAUNCHER = 175
|
182
|
+
SS_TERRATRONSTUN = 176
|
183
|
+
SS_VIKINGRESPAWN = 177
|
184
|
+
SS_WRAITHCOLLISIONCHECK = 178
|
185
|
+
SS_SCOURGEMISSILETARGETCHECK = 179
|
186
|
+
SS_SCOURGEDEATH = 180
|
187
|
+
SS_SWARMGUARDIANCOLLISIONCHECK = 181
|
188
|
+
SS_FIGHTERBOMBMISSILEDEATH = 182
|
189
|
+
SS_FIGHTERDRONEDAMAGERESPONSE = 183
|
190
|
+
SS_INTERCEPTORCOLLISIONCHECK = 184
|
191
|
+
SS_CARRIERCOLLISIONCHECK = 185
|
192
|
+
SS_MISSILETARGETCHECKVIKINGDRONE = 186
|
193
|
+
SS_MISSILETARGETCHECKVIKINGSTRONG1 = 187
|
194
|
+
SS_MISSILETARGETCHECKVIKINGSTRONG2 = 188
|
195
|
+
SS_POWERUPHEALTH1 = 189
|
196
|
+
SS_POWERUPHEALTH2 = 190
|
197
|
+
SS_POWERUPSTRONG = 191
|
198
|
+
SS_POWERUPMORPHTOBOMB = 192
|
199
|
+
SS_POWERUPMORPHTOHEALTH = 193
|
200
|
+
SS_POWERUPMORPHTOSIDEMISSILES = 194
|
201
|
+
SS_POWERUPMORPHTOSTRONGERMISSILES = 195
|
202
|
+
SS_CORRUPTORCOLLISIONCHECK = 196
|
203
|
+
SS_SCOUTCOLLISIONCHECK = 197
|
204
|
+
SS_PHOENIXCOLLISIONCHECK = 198
|
205
|
+
SS_SCOURGECOLLISIONCHECK = 199
|
206
|
+
SS_LEVIATHANCOLLISIONCHECK = 200
|
207
|
+
SS_SCIENCEVESSELCOLLISIONCHECK = 201
|
208
|
+
SS_TERRATRONSAWCOLLISIONCHECK = 202
|
209
|
+
SS_LIGHTNINGPROJECTORCOLLISIONCHECK = 203
|
210
|
+
SHIFTDELAY = 204
|
211
|
+
BIOSTASIS = 205
|
212
|
+
PERSONALCLOAKINGFREE = 206
|
213
|
+
EMPDRAIN = 207
|
214
|
+
MINDBLASTSTUN = 208
|
215
|
+
def self._330MMBARRAGECANNONS = 209
|
216
|
+
VOODOOSHIELD = 210
|
217
|
+
SPECTRECLOAKINGFREE = 211
|
218
|
+
ULTRASONICPULSESTUN = 212
|
219
|
+
IRRADIATE = 213
|
220
|
+
NYDUSWORMLAVAINSTANTDEATH = 214
|
221
|
+
PREDATORCLOAKING = 215
|
222
|
+
PSIDISRUPTION = 216
|
223
|
+
MINDCONTROL = 217
|
224
|
+
QUEENKNOCKDOWN = 218
|
225
|
+
SCIENCEVESSELCLOAKFIELD = 219
|
226
|
+
SPORECANNONMISSILE = 220
|
227
|
+
ARTANISTEMPORALRIFTUNIT = 221
|
228
|
+
ARTANISCLOAKINGFIELDEFFECT = 222
|
229
|
+
ARTANISVORTEXBEHAVIOR = 223
|
230
|
+
INCAPACITATED = 224
|
231
|
+
KARASSPSISTORM = 225
|
232
|
+
DUTCHMARAUDERSLOW = 226
|
233
|
+
JUMPSTOMPSTUN = 227
|
234
|
+
JUMPSTOMPFSTUN = 228
|
235
|
+
RAYNORMISSILETIMEDLIFE = 229
|
236
|
+
PSIONICSHOCKWAVEHEIGHTANDSTUN = 230
|
237
|
+
SHADOWCLONE = 231
|
238
|
+
AUTOMATEDREPAIR = 232
|
239
|
+
SLIMED = 233
|
240
|
+
RAYNORTIMEBOMBMISSILE = 234
|
241
|
+
RAYNORTIMEBOMBUNIT = 235
|
242
|
+
TYCHUSCOMMANDOSTIMPACK = 236
|
243
|
+
VIRALPLASMA = 237
|
244
|
+
NAPALM = 238
|
245
|
+
BURSTCAPACITORSDAMAGEBUFF = 239
|
246
|
+
COLONYINFESTATION = 240
|
247
|
+
DOMINATION = 241
|
248
|
+
EMPBURST = 242
|
249
|
+
HYBRIDCZERGYROOTS = 243
|
250
|
+
HYBRIDFZERGYROOTS = 244
|
251
|
+
LOCKDOWNB = 245
|
252
|
+
SPECTRELOCKDOWNB = 246
|
253
|
+
VOODOOLOCKDOWN = 247
|
254
|
+
ZERATULSTUN = 248
|
255
|
+
BUILDINGSCARAB = 249
|
256
|
+
VORTEXBEHAVIORERADICATOR = 250
|
257
|
+
GHOSTBLAST = 251
|
258
|
+
HEROICBUFF03 = 252
|
259
|
+
CANNONRADAR = 253
|
260
|
+
SS_MISSILETARGETCHECKVIKING = 254
|
261
|
+
SS_MISSILETARGETCHECK = 255
|
262
|
+
SS_MAXSPEED = 256
|
263
|
+
SS_MAXACCELERATION = 257
|
264
|
+
SS_POWERUPDIAGONAL1 = 258
|
265
|
+
WATER = 259
|
266
|
+
DEFENSIVEMATRIX = 260
|
267
|
+
TESTATTRIBUTE = 261
|
268
|
+
TESTVETERANCY = 262
|
269
|
+
SHREDDERSWARMDAMAGEAPPLY = 263
|
270
|
+
CORRUPTORINFESTING = 264
|
271
|
+
MERCGROUNDDROPDELAY = 265
|
272
|
+
MERCGROUNDDROP = 266
|
273
|
+
MERCAIRDROPDELAY = 267
|
274
|
+
SPECTREHOLDFIRE = 268
|
275
|
+
SPECTREHOLDFIREB = 269
|
276
|
+
ITEMGRAVITYBOMBS = 270
|
277
|
+
CARRYMINERALFIELDMINERALS = 271
|
278
|
+
CARRYHIGHYIELDMINERALFIELDMINERALS = 272
|
279
|
+
CARRYHARVESTABLEVESPENEGEYSERGAS = 273
|
280
|
+
CARRYHARVESTABLEVESPENEGEYSERGASPROTOSS = 274
|
281
|
+
CARRYHARVESTABLEVESPENEGEYSERGASZERG = 275
|
282
|
+
PERMANENTLYCLOAKED = 276
|
283
|
+
RAVENSCRAMBLERMISSILE = 277
|
284
|
+
RAVENSHREDDERMISSILETIMEOUT = 278
|
285
|
+
RAVENSHREDDERMISSILETINT = 279
|
286
|
+
RAVENSHREDDERMISSILEARMORREDUCTION = 280
|
287
|
+
CHRONOBOOSTENERGYCOST = 281
|
288
|
+
NEXUSSHIELDRECHARGEONPYLONBEHAVIOR = 282
|
289
|
+
NEXUSSHIELDRECHARGEONPYLONBEHAVIORSECONDARYONTARGET = 283
|
290
|
+
INFESTORENSNARE = 284
|
291
|
+
INFESTORENSNAREMAKEPRECURSORREHEIGHTSOURCE = 285
|
292
|
+
NEXUSSHIELDOVERCHARGE = 286
|
293
|
+
PARASITICBOMBDELAYTIMEDLIFE = 287
|
294
|
+
TRANSFUSION = 288
|
295
|
+
ACCELERATIONZONETEMPORALFIELD = 289
|
296
|
+
ACCELERATIONZONEFLYINGTEMPORALFIELD = 290
|
297
|
+
INHIBITORZONEFLYINGTEMPORALFIELD = 291
|
298
|
+
LOADOUTSPRAYTRACKER = 292
|
299
|
+
INHIBITORZONETEMPORALFIELD = 293
|
300
|
+
RESONATINGGLAIVESPHASESHIFT = 294
|
301
|
+
NEURALPARASITECHILDREN = 295
|
302
|
+
AMORPHOUSARMORCLOUD = 296
|
303
|
+
RAVENSHREDDERMISSILEARMORREDUCTIONUISUBTRUCT = 297
|
304
|
+
BATTERYOVERCHARGE = 298
|
305
|
+
end
|
306
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "ability_id"
|
4
|
+
require_relative "unit_type_id"
|
5
|
+
require_relative "upgrade_id"
|
6
|
+
require_relative "buff_id"
|
7
|
+
require_relative "effect_id"
|
8
|
+
require_relative "tech_tree"
|
9
|
+
|
10
|
+
module Sc2
|
11
|
+
# Holds game data from tech tree and Api::ResponseData
|
12
|
+
# Called once on game start
|
13
|
+
class Data
|
14
|
+
# @!attribute abilities
|
15
|
+
# @return [Hash<Integer, Api::AbilityData>] AbilityId => AbilityData
|
16
|
+
attr_accessor :abilities
|
17
|
+
# @!attribute units
|
18
|
+
# @return [Hash<Integer, Api::UnitTypeData>] UnitId => UnitData
|
19
|
+
attr_accessor :units
|
20
|
+
# @!attribute upgrades
|
21
|
+
# @return [Hash<Integer, Api::UnitTypeData>] UnitTypeId => UnitTypeData
|
22
|
+
attr_accessor :upgrades
|
23
|
+
# @!attribute buffs
|
24
|
+
# Not particularly useful data. Just use BuffId directly
|
25
|
+
# @return [Hash<Integer, Api::BuffData>] BuffId => BuffData
|
26
|
+
attr_accessor :buffs
|
27
|
+
# @!attribute effects
|
28
|
+
# Not particularly useful data. Just use EffectId directly
|
29
|
+
# @return [Hash<Integer, Api::EffectData>] EffectId => EffectData
|
30
|
+
attr_accessor :effects
|
31
|
+
|
32
|
+
# @param data [Api::ResponseData]
|
33
|
+
def initialize(data)
|
34
|
+
return unless data
|
35
|
+
|
36
|
+
@abilities = abilities_from_proto(data.abilities)
|
37
|
+
@units = units_from_proto(data.units)
|
38
|
+
@upgrades = upgrades_from_proto(data.upgrades)
|
39
|
+
@buffs = buffs_from_proto(data.buffs)
|
40
|
+
@effects = effects_from_proto(data.effects)
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
# Indexes ability data by ability id
|
46
|
+
# @param abilities [Array<Api::AbilityData>]
|
47
|
+
# @return [Hash<Integer, Api::AbilityData] indexed data
|
48
|
+
def abilities_from_proto(abilities)
|
49
|
+
result = {}
|
50
|
+
|
51
|
+
ability_ids = Api::AbilityId.constants.map { |c| Api::AbilityId.const_get(c) }
|
52
|
+
abilities.each do |a|
|
53
|
+
next if a.ability_id.zero?
|
54
|
+
next if ability_ids.delete(a.ability_id).nil?
|
55
|
+
|
56
|
+
result[a.ability_id] = a
|
57
|
+
end
|
58
|
+
result
|
59
|
+
end
|
60
|
+
|
61
|
+
# Indexes unit data by id
|
62
|
+
# @param units [Array<Api::UnitTypeData>]
|
63
|
+
# @return [Hash<Integer, Api::UnitTypeData] indexed data
|
64
|
+
def units_from_proto(units)
|
65
|
+
result = {}
|
66
|
+
units.each do |u|
|
67
|
+
next unless u.available
|
68
|
+
|
69
|
+
result[u.unit_id] = u
|
70
|
+
end
|
71
|
+
result
|
72
|
+
end
|
73
|
+
|
74
|
+
# Indexes upgrades data by id
|
75
|
+
# @param upgrades [Array<Api::UpgradeData>]
|
76
|
+
# @return [Hash<Integer, Api::UpgradeData] indexed data
|
77
|
+
def upgrades_from_proto(upgrades)
|
78
|
+
result = {}
|
79
|
+
upgrades.each do |u|
|
80
|
+
result[u.upgrade_id] = u
|
81
|
+
end
|
82
|
+
result
|
83
|
+
end
|
84
|
+
|
85
|
+
def effects_from_proto(effects)
|
86
|
+
result = {}
|
87
|
+
effects.each do |e|
|
88
|
+
result[e.effect_id] = e
|
89
|
+
end
|
90
|
+
result
|
91
|
+
end
|
92
|
+
|
93
|
+
def buffs_from_proto(buffs)
|
94
|
+
result = {}
|
95
|
+
buffs.each do |b|
|
96
|
+
result[b.buff_id] = b
|
97
|
+
end
|
98
|
+
result
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Generated from stableid.json, do not edit.
|
2
|
+
|
3
|
+
module Api
|
4
|
+
# Constant reference of Effect ids
|
5
|
+
module EffectId
|
6
|
+
NULL = 0
|
7
|
+
PSISTORMPERSISTENT = 1
|
8
|
+
GUARDIANSHIELDPERSISTENT = 2
|
9
|
+
TEMPORALFIELDGROWINGBUBBLECREATEPERSISTENT = 3
|
10
|
+
TEMPORALFIELDAFTERBUBBLECREATEPERSISTENT = 4
|
11
|
+
THERMALLANCESFORWARD = 5
|
12
|
+
SCANNERSWEEP = 6
|
13
|
+
NUKEPERSISTENT = 7
|
14
|
+
LIBERATORTARGETMORPHDELAYPERSISTENT = 8
|
15
|
+
LIBERATORTARGETMORPHPERSISTENT = 9
|
16
|
+
BLINDINGCLOUDCP = 10
|
17
|
+
RAVAGERCORROSIVEBILECP = 11
|
18
|
+
LURKERMP = 12
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require_relative "tech_tree_data"
|
2
|
+
|
3
|
+
|
4
|
+
module Api
|
5
|
+
# Provides helper functions which work with and rely on auto generated data in tech_tree_data.rb
|
6
|
+
# To lighten code generation, these methods live in a file of their own and may be modified.
|
7
|
+
module TechTree
|
8
|
+
class << self
|
9
|
+
# Get units can be created at source + the ability to trigger it. Optionally target a specific unit from source
|
10
|
+
# @example
|
11
|
+
# # The data we reference looks like this, unit_type_creation_abilities_data
|
12
|
+
# UnitTypeId.FACTORY: {
|
13
|
+
# UnitTypeId.CYCLONE: {
|
14
|
+
# 'ability': AbilityId.TRAIN_CYCLONE,
|
15
|
+
# 'requires_techlab': True
|
16
|
+
# },
|
17
|
+
# UnitTypeId.HELLION: {
|
18
|
+
# 'ability': AbilityId.FACTORYTRAIN_HELLION
|
19
|
+
# },
|
20
|
+
#
|
21
|
+
# Targeting only a source, i.e. factory, your results are all units
|
22
|
+
# {
|
23
|
+
# UnitTypeId.CYCLONE: {
|
24
|
+
# 'ability': AbilityId.TRAIN_CYCLONE,
|
25
|
+
# 'requires_techlab': True
|
26
|
+
# },
|
27
|
+
# UnitTypeId.HELLION: {
|
28
|
+
# 'ability': AbilityId.FACTORYTRAIN_HELLION
|
29
|
+
# },...
|
30
|
+
# }
|
31
|
+
#
|
32
|
+
# To get the requirements, you could call a source and target like such
|
33
|
+
# Api::TechTree.unit_type_creation_abilities(source: ..., target: ... )
|
34
|
+
# {
|
35
|
+
# "ability" => 123
|
36
|
+
# "requires_techlab" => true
|
37
|
+
# "required_building" => 456
|
38
|
+
# }
|
39
|
+
# @param source [Integer] Api::UnitTypeId the unit type which will do the creation
|
40
|
+
# @param target [Integer] (optional) Api::UnitTypeId the unit type which will be created
|
41
|
+
# @return [Hash] either a hash of [UnitTypeId] => { ability hash } or { ability hash } when target is present
|
42
|
+
def unit_type_creation_abilities(source:, target: nil)
|
43
|
+
creates_unit_types = unit_type_creation_abilities_data[source]
|
44
|
+
unless target.nil?
|
45
|
+
return creates_unit_types[target]
|
46
|
+
end
|
47
|
+
creates_unit_types
|
48
|
+
end
|
49
|
+
|
50
|
+
# Which ability id creates the target, given the source unit/building
|
51
|
+
# @see Api::TechTree#unit_type_creation_abilities to get a full list of units and their creation abilities
|
52
|
+
# @param source [Integer] Api::UnitTypeId the unit type which will do the creation
|
53
|
+
# @param target [Integer] (optional) Api::UnitTypeId the unit type which will be created
|
54
|
+
# @return [Integer, nil] AbilityId or nil if target is not found at source
|
55
|
+
def unit_type_creation_ability_id(source:, target:)
|
56
|
+
ability_hash = unit_type_creation_abilities(source: source, target: target)
|
57
|
+
return ability_hash[:ability] if ability_hash && ability_hash[:ability]
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
|
61
|
+
# Returns what unit types a specific unit type can produce
|
62
|
+
# @param unit_type_id [Integer] the unit which you want to check
|
63
|
+
# @return [Array<Integer>] returns an array of unit type ids as per Api:UnitTypeId
|
64
|
+
def creates_unit_types(unit_type_id:)
|
65
|
+
unit_type_creation_abilities_data[unit_type_id].keys
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns what the unit type another is created from
|
69
|
+
# @param unit_type_id [Integer] the unit which you want to check
|
70
|
+
# @return [Array<Integer>] returns an array of unit type ids as per Api:UnitTypeId
|
71
|
+
def unit_created_from(unit_type_id:)
|
72
|
+
unit_created_from_data[unit_type_id]
|
73
|
+
end
|
74
|
+
|
75
|
+
# Returns what the unit type an upgrade is researched from
|
76
|
+
# @param upgrade_id [Integer] the unit which you want to check
|
77
|
+
# @return [Integer] unit_type_id an array of unit type ids as per Api:UnitTypeId
|
78
|
+
def upgrade_researched_from(upgrade_id:)
|
79
|
+
upgrade_researched_from_data[upgrade_id]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|