Skip to content

Conversation

@SamOgon-one
Copy link
Contributor

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 (with 'SWARM' in the middle)

Similar for upgrade level 2 and 3
UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1
AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL1 UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL2
AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL2 UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL3
AbilityId.ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL3

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
Correct hardcoded IDs for Terran vehicle and ship armor upgrades.
@chadspratt
Copy link

chadspratt commented Dec 20, 2025

could be less code-repetitive with something like

        creationAbilityID = self.bot.game_data.upgrades[upgrade_type.value].research_ability.exact_id
        if upgrade_type == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1:
            creationAbilityID = AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1
        elif upgrade_type == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL2:
            creationAbilityID = AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL2
        elif upgrade_type == UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL3:
            creationAbilityID = AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3

@maxnus
Copy link

maxnus commented Dec 20, 2025

Thanks for proposing a fix upstream!

I think a dictionary may be more extendable than if-then-else blocks - perhaps something like

ability_id_overrides = {
   UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL1: AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1,
   UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL2: AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL2,
   UpgradeId.TERRANVEHICLEANDSHIPARMORSLEVEL3: AbilityId.ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3,
}
ability_id = ability_id_override.get(upgrade, self._bot_object.game_data.upgrades[upgrade.value].research_ability.exact_id)
self(ability_id, ...)

?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants