Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

STARPORTTECHLABRESEARCH abilities not working #294

Open
baibinghere opened this issue Jun 26, 2019 · 3 comments
Open

STARPORTTECHLABRESEARCH abilities not working #294

baibinghere opened this issue Jun 26, 2019 · 3 comments

Comments

@baibinghere
Copy link

I'm trying to upgrade Banshee ability from Startport TechLab.
I used below code:

if self.units(UnitTypeId.STARPORTTECHLAB).ready.exists:
    for spt in self.units(UnitTypeId.STARPORTTECHLAB).idle:
        #     self.combinedActions.append(spt(AbilityId.STARPORTTECHLABRESEARCH_RESEARCHMEDIVACENERGYUPGRADE))
        #     self.combinedActions.append(spt(AbilityId.STARPORTTECHLABRESEARCH_RESEARCHDURABLEMATERIALS))
        #     self.combinedActions.append(spt(AbilityId.STARPORTTECHLABRESEARCH_RESEARCHLIBERATORAGMODE))
        #     self.combinedActions.append(spt(AbilityId.STARPORTTECHLABRESEARCH_RAVENRESEARCHENHANCEDMUNITIONS))
        self.combinedActions.append(spt(AbilityId.STARPORTTECHLABRESEARCH_RESEARCHDURABLEMATERIALS))
await self.do_actions(self.combinedActions)

I tried each comment part, none of them work.
Now I cannot upgrade any ability from starport techlab.

@baibinghere
Copy link
Author

Just found that at least for Banshee, I can use below Abilities:
RESEARCH_BANSHEECLOAKINGFIELD
RESEARCH_BANSHEEHYPERFLIGHTROTORS

I still don't understand why STARPORTTECHLABRESEARCH_RESEARCH*** doesn't work.
It looks much more official.

@BurnySc2
Copy link
Collaborator

I think you are trying to research upgrades that were removed from the game but are still listed in the AbilityIds.

You can also use the .research function to let the function figure out the research ability from an UpgradeId:

idle_starport_techlabs = self.units.filter(lambda u: u.type_id == UnitTypeId.STARPORTTECHLAB and u.is_ready and u.is_idle)
for spt in idle_starport_techlabs:
    self.combinedActions.append(spt.research(UpgradeId.BANSHEECLOAK))
    self.combinedActions.append(spt.research(UpgradeId.BANSHEESPEED))
    self.combinedActions.append(spt.research(UpgradeId.MEDIVACINCREASESPEEDBOOST))
    self.combinedActions.append(spt.research(UpgradeId.RAVENCORVIDREACTOR))
    # The following requires that you have a fusion core
    self.combinedActions.append(spt.research(UpgradeId.LIBERATORMORPH))
await self.do_actions(self.combinedActions)

Here are a couple upgrades and their corresponding research abilities.

UnitTypeId.STARPORTTECHLAB: {
    UpgradeId.BANSHEECLOAK: {"ability": AbilityId.RESEARCH_BANSHEECLOAKINGFIELD},
    UpgradeId.BANSHEESPEED: {
        "ability": AbilityId.RESEARCH_BANSHEEHYPERFLIGHTROTORS
    },
    UpgradeId.LIBERATORMORPH: {
        "upgrade": UpgradeId.LIBERATORMORPH,
        "ability": AbilityId.STARPORTTECHLABRESEARCH_RESEARCHLIBERATORAGMODE,
        "requires_tech_building": UnitTypeId.FUSIONCORE,
    },
    UpgradeId.MEDIVACINCREASESPEEDBOOST: {
        "ability": AbilityId.RESEARCH_HIGHCAPACITYFUELTANKS
    },
    UpgradeId.RAVENCORVIDREACTOR: {
        "ability": AbilityId.RESEARCH_RAVENCORVIDREACTOR
    },

@baibinghere
Copy link
Author

Thanks @BurnySc2 for pointing it out!
This is great help of understanding how does the research upgrade works in python-sc2.
I would suggest to remove the unused attributes.

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

No branches or pull requests

2 participants