diff --git a/sc2/unit.py b/sc2/unit.py index 07b63e90..08c26966 100644 --- a/sc2/unit.py +++ b/sc2/unit.py @@ -1337,6 +1337,32 @@ def research( :param queue: :param can_afford_check: """ + # Avoid a bug where Terran mech armor research does not start due to an incorrect exact_id from the protobuf. + # Hardcode the correct ID. + if upgrade == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1: + return self( + AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1, + queue=queue, + subtract_cost=True, + can_afford_check=can_afford_check, + ) + + if upgrade == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL2: + return self( + AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL2, + queue=queue, + subtract_cost=True, + can_afford_check=can_afford_check, + ) + + if upgrade == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL3: + return self( + AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3, + queue=queue, + subtract_cost=True, + can_afford_check=can_afford_check, + ) + return self( self._bot_object.game_data.upgrades[upgrade.value].research_ability.exact_id, queue=queue,