From 40f89873a06131d6759fdbb98ad0bb88b5e4585f Mon Sep 17 00:00:00 2001 From: SamOgon-one <114773312+SamOgon-one@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:24:29 +0100 Subject: [PATCH 1/2] Fix Terran mech armor research ID issues Prevent research bugs, where Terran mech armor research does not start due to an incorrect exact_id from the protobuf Hardcode correct IDs for some reason 'exact_id' for UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1 is returning the ability ID 'ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL1' in the protobuf, Similar for upgrade level 2 and 3 UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1 AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL1 UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL2 AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL2 UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL3 AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL3 --- sc2/unit.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/sc2/unit.py b/sc2/unit.py index 07b63e90..cf754925 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, From 05b7ab1380a68658cd4587fbee57cc47667b06f3 Mon Sep 17 00:00:00 2001 From: SamOgon-one <114773312+SamOgon-one@users.noreply.github.com> Date: Sat, 20 Dec 2025 16:30:28 +0100 Subject: [PATCH 2/2] Fix hardcoded upgrade IDs for Terran armor research Correct hardcoded IDs for Terran vehicle and ship armor upgrades. --- sc2/unit.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sc2/unit.py b/sc2/unit.py index cf754925..08c26966 100644 --- a/sc2/unit.py +++ b/sc2/unit.py @@ -1341,24 +1341,24 @@ def research( # Hardcode the correct ID. if upgrade == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1: return self( - AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1, - queue=queue, + 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, + 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, + AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3, + queue=queue, subtract_cost=True, can_afford_check=can_afford_check, )