def onCombatResult(self, argsList): self.up.aztecUP(argsList) self.rnf.immuneMode(argsList) self.up.vikingUP(argsList) # includes Moorish Corsairs pWinningUnit, pLosingUnit = argsList vic.onCombatResult(pWinningUnit, pLosingUnit) iUnitPower = 0 pLosingUnitInfo = gc.getUnitInfo(pLosingUnit.getUnitType()) if pLosingUnitInfo.getUnitCombatType() != gc.getInfoTypeForString("UNITCOMBAT_SIEGE"): iUnitPower = pLosingUnitInfo.getPowerValue() sta.onCombatResult(pWinningUnit.getOwner(), pLosingUnit.getOwner(), iUnitPower) # catch slaves by defeating native and barbarian Pombos or Impis if pLosingUnit.getOwner() in [iBarbarian, iNative] and pLosingUnit.getUnitType() in [iZuluImpi, iCongolesePombos]: if gc.getMap().plot(pLosingUnit.getX(), pLosingUnit.getY()).getOwner() == pWinningUnit.getOwner(): if gc.getPlayer(pWinningUnit.getOwner()).getCivics(2) == iCivicSlavery: iRand = gc.getGame().getSorenRandNum(5, "Caught slaves?") if iRand == 1: iNewUnit = utils.getUniqueUnitType(pWinningUnit.getOwner(), gc.getUnitInfo(iSlave).getUnitClassType()) utils.makeUnit(iNewUnit, pWinningUnit.getOwner(), (pWinningUnit.getX(), pWinningUnit.getY()), 1) CyInterface().addMessage(pWinningUnit.getOwner(),True,15,CyTranslator().getText("TXT_KEY_UP_ENSLAVE_WIN", ()),'SND_REVOLTEND',1,'Art/Units/slave/button_slave.dds',ColorTypes(8),pWinningUnit.getX(),pWinningUnit.getY(),True,True) # Maya Holkans give food to closest city on victory if pWinningUnit.getUnitType() == iMayanHolkan: iOwner = pWinningUnit.getOwner() city = gc.getMap().findCity(pWinningUnit.getX(), pWinningUnit.getY(), iOwner, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, CyCity()) if city: city.changeFood(5) sAdjective = gc.getPlayer(pLosingUnit.getOwner()).getCivilizationAdjectiveKey() CyInterface().addMessage(iOwner, False, iDuration, CyTranslator().getText("TXT_KEY_MAYA_HOLKAN_EFFECT", (sAdjective, pLosingUnit.getNameKey(), 5, city.getName())), "", 0, "", ColorTypes(iWhite), -1, -1, True, True)
def placeUpgrades(self): screen = self.top.getScreen() panel = self.top.getNextWidgetName() screen.addPanel(panel, " ", "", False, True, self.X_UPGRADES, self.Y_UPGRADES, self.W_UPGRADES, self.H_UPGRADES, PanelStyles.PANEL_STYLE_BLUE50) screen.attachLabel(panel, "", " ") for iUnitClass in xrange(gc.getNumUnitClassInfos()): if gc.getUnitInfo(self.iUnit).getUpgradeUnitClass(iUnitClass): if self.top.iActivePlayer >= 0 and self.iUnit == utils.getUniqueUnit(self.top.iActivePlayer, self.iUnit): iUnit = utils.getUniqueUnitType(self.top.iActivePlayer, iUnitClass) else: iUnit = gc.getUnitClassInfo(iUnitClass).getDefaultUnitIndex() screen.attachImageButton(panel, "", gc.getUnitInfo(iUnit).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_UNIT, iUnit, 1, False)
def placeUpgrades(self): screen = self.top.getScreen() panel = self.top.getNextWidgetName() screen.addPanel(panel, " ", "", False, True, self.X_UPGRADES, self.Y_UPGRADES, self.W_UPGRADES, self.H_UPGRADES, PanelStyles.PANEL_STYLE_BLUE50) screen.attachLabel(panel, "", " ") for iUnitClass in xrange(gc.getNumUnitClassInfos()): if gc.getUnitInfo(self.iUnit).getUpgradeUnitClass(iUnitClass): if self.top.iActivePlayer >= 0 and self.iUnit == utils.getUniqueUnit( self.top.iActivePlayer, self.iUnit): iUnit = utils.getUniqueUnitType(self.top.iActivePlayer, iUnitClass) else: iUnit = gc.getUnitClassInfo( iUnitClass).getDefaultUnitIndex() screen.attachImageButton(panel, "", gc.getUnitInfo(iUnit).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_UNIT, iUnit, 1, False)
def calcPercentages(city): # Calc total rate iTotal = 0 for iUnit in g_gpUnitTypes: iTotal += city.getGreatPeopleUnitProgress( utils.getUniqueUnitType(city.getOwner(), gc.getUnitInfo(iUnit).getUnitClassType())) # Calc individual percentages based on rates and total percents = [] if (iTotal > 0): iLeftover = 100 for iUnit in range(gc.getNumUnitInfos()): # iUnit = getUnitType(gpType) #if gc.getUnitInfo(iUnit).isGraphicalOnly(): continue iProgress = city.getGreatPeopleUnitProgress(iUnit) if (iProgress > 0): iPercent = 100 * iProgress / iTotal iLeftover -= iPercent percents.append((iPercent, iUnit)) # Add remaining from 100 to first in list to match Civ4 if (iLeftover > 0): percents[0] = (percents[0][0] + iLeftover, percents[0][1]) return percents