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)
예제 #3
0
    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