Skip to content

Commit 4b36343

Browse files
committed
Several more mapping fixes. Add hots units to maps
1 parent 897ecba commit 4b36343

File tree

1 file changed

+32
-11
lines changed

1 file changed

+32
-11
lines changed

sc2reader/data/__init__.py

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
UNIT_LOOKUP[str_id] = title
2020

2121

22-
# TODO: Update these dicts for HotS
22+
# TODO: Costs need to be version stats. Not here
2323
unit_lookup = {'Protoss':{
2424
'probe':dict(cost=[50,0,1],is_worker=True),
2525
'zealot':dict(cost=[100,0,2],is_army=True),
@@ -34,9 +34,11 @@
3434
'warpprism':dict(cost=[200,0,2],is_army=True),
3535
'phoenix':dict(cost=[150,100,2],is_army=True),
3636
'voidray':dict(cost=[250,150,2],is_army=True),
37+
'tempest':dict(cost=[300,200,4],is_army=True),
38+
'oracle':dict(cost=[150,150,3],is_army=True),
3739
'carrier':dict(cost=[350,250,6],is_army=True),
3840
'mothership':dict(cost=[400,400,6],is_army=True),
39-
'mothershipcore':dict(cost=[50,50,0],is_army=True),
41+
'mothershipcore':dict(cost=[100,100,2],is_army=True),
4042
#'interceptor':[25,0,0], # This is technically a army unit
4143

4244
'photoncannon':dict(cost=[150,0,0],is_building=True),
@@ -64,6 +66,8 @@
6466
'ghost':dict(cost=[200,100,2],is_army=True),
6567
'hellion':dict(cost=[100,0,2],is_army=True),
6668
'battlehellion':dict(cost=[100,0,2],is_army=True),
69+
'warhound':dict(cost=[150,75,2],is_army=True),
70+
'widowmine':dict(cost=[75,25,2],is_army=True),
6771
'siegetank':dict(cost=[150,125,2],is_army=True),
6872
'thor':dict(cost=[300,200,6],is_army=True),
6973
'viking':dict(cost=[150,75,2],is_army=True),
@@ -87,7 +91,7 @@
8791
'starport':dict(cost=[150,100,0],is_building=True),
8892
'fusioncore':dict(cost=[150,150,0],is_building=True),
8993
'armory':dict(cost=[150,100,0],is_building=True),
90-
# TODO: tech labs and reactors and flyings!
94+
# TODO: tech labs and reactors and flyings?
9195

9296
},'Zerg':{
9397
# Cumulative costs, including drone costs
@@ -100,11 +104,14 @@
100104
'overseer':dict(cost=[150,50,0],is_army=True),
101105
'hydralisk':dict(cost=[100,50,2],is_army=True),
102106
'mutalisk':dict(cost=[100,100,2],is_army=True),
107+
'viper':dict(cost=[100,200,3],is_army=True),
103108
'corruptor':dict(cost=[150,100,2],is_army=True),
104109
'broodlord':dict(cost=[300,250,4],is_army=True),
105110
'broodling':dict(cost=[0,0,0],is_army=True),
106111
'infestor':dict(cost=[100,150,2],is_army=True),
107112
'infestedterran':dict(cost=[0,0,0],is_army=True),
113+
'swarmhost':dict(cost=[200,100,3],is_army=True),
114+
'locust':dict(cost=[0,0,0],is_army=True),
108115
'ultralisk':dict(cost=[300,200,6],is_army=True),
109116
'spinecrawler':dict(cost=[150,0,0],is_building=True),
110117
'sporecrawler':dict(cost=[125,0,0],is_building=True),
@@ -130,7 +137,7 @@
130137

131138
# There are known to be duplicate ability names now. Hrm
132139
train_commands = {
133-
'RavenBuildPointDefenseDrone': ('PointDefenseDrone',0),
140+
'BuildPointDefenseDrone': ('PointDefenseDrone',0),
134141
'CalldownMULE': ('MULE',0),
135142
'BuildCommandCenter': ('CommandCenter',100),
136143
'BuildSupplyDepot': ('SupplyDepot',30),
@@ -145,24 +152,28 @@
145152
'BuildStarport': ('Starport',50),
146153
'BuildArmory': ('Armory',65),
147154
'BuildFusionCore': ('FusionCore',65),
148-
'RavenBuildAutoTurret': ('AutoTurret',0),
155+
'BuildAutoTurret': ('AutoTurret',0),
149156
'TrainSCV': ('SCV',17),
150157
'TrainMarine': ('Marine',25),
151158
'TrainReaper': ('Reaper',45),
152159
'TrainGhost': ('Ghost',40),
153160
'TrainMarauder': ('Marauder',30),
154161
'BuildSiegeTank': ('SiegeTank',45),
155162
'BuildThor': ('Thor',60),
163+
'BuildwarHound': ('WarHound',45),
164+
'BuildWidowMine': ('WidowMine',40),
156165
'BuildHellion': ('Hellion',30),
166+
'BuildBattleHellion': ('BattleHellion',30),
157167
'TrainMedivac': ('Medivac',42),
158168
'TrainBanshee': ('Banshee',60),
159169
'TrainRaven': ('Raven',60),
160170
'TrainBattlecruiser': ('Battlecruiser',90),
161171
'TrainViking': ('VikingFighter',42),
162-
'MorphToPlanetaryFortress': ('PlanetaryFortress',50),
163-
'MorphToOrbitalCommand': ('OrbitalCommand',35),
172+
'UpgradeToPlanetaryFortress': ('PlanetaryFortress',50),
173+
'UpgradeToOrbitalCommand': ('OrbitalCommand',35),
164174

165175
'TrainMothership': ('Mothership',160),
176+
'TrainMothershipCore': ('MothershipCore',30),
166177
'BuildNexus': ('Nexus',100),
167178
'BuildPylon': ('Pylon',25),
168179
'BuildAssimilator': ('Assimilator',30),
@@ -183,6 +194,8 @@
183194
'TrainDarkTemplar': ('DarkTemplar',55),
184195
'TrainSentry': ('Sentry',37),
185196
'TrainPhoenix': ('Phoenix',35),
197+
'TrainTempest': ('Tempest',75),
198+
'TrainOracle': ('Oracle',60),
186199
'TrainCarrier': ('Carrier',120),
187200
'TrainVoidRay': ('VoidRay',60),
188201
'TrainWarpPrism': ('WarpPrism',50),
@@ -197,7 +210,8 @@
197210
'WarpInDarkTemplar': ('DarkTemplar',30),
198211
'WarpInSentry': ('Sentry',21.3),
199212
'MorphToWarpGate': ('WarpGate',10),
200-
'MergeArchon': ('Archon',12),
213+
'ArchonWarpSelection': ('Archon',12),
214+
'ArchonWarpTarget': ('Archon',12),
201215
'SentryHallucinationArchon': ('HallucinatedArchon',0),
202216
'SentryHallucinationColossus': ('HallucinatedColossus',0),
203217
'SentryHallucinationHighTemplar': ('HallucinatedHighTemplar',0),
@@ -235,6 +249,8 @@
235249
'MorphUltralisk': ('Ultralisk',55),
236250
'MorphRoach': ('Roach',27),
237251
'MorphInfestor': ('Infestor',50),
252+
'MorphSwarmHost': ('SwarmHost',40),
253+
'MorphViper': ('Viper',40),
238254
'MorphCorruptor': ('Corruptor',40),
239255
'MorphToBroodLord': ('BroodLord',34),
240256
'MorphToOverseer': ('Overseer',17),
@@ -341,9 +357,14 @@ def load_build(data_dir, version):
341357
for ability in abilities.values():
342358
if ability.name in train_commands:
343359
unit_name, build_time = train_commands[ability.name]
344-
ability.is_build = True
345-
ability.build_time = build_time
346-
ability.build_unit = getattr(data,unit_name)
360+
# Side affect of using the same ability lookup for all versions
361+
# BuildBattleHellion will register for all versions because if FactoryTrain
362+
# This shouldn't hurt though because the ability can't actually be used
363+
# and will never be looked up in the ability dictionary.
364+
if hasattr(data,unit_name):
365+
ability.is_build = True
366+
ability.build_time = build_time
367+
ability.build_unit = getattr(data,unit_name)
347368
setattr(data, ability.name, ability)
348369

349370
return data

0 commit comments

Comments
 (0)