def onUnitKilled(self, argsList):
'Unit Killed'
unit, iAttacker = argsList
player = PyPlayer(unit.getOwner())
attacker = PyPlayer(iAttacker)
iPlayer = unit.getOwner()
pPlayer = gc.getPlayer(iPlayer)
RealDeath = ["PROMOTION_REBIRTH", "PROMOTION_LAST_WISH", "PROMOTION_LEGEND", "PROMOTION_INTERCEPTION3", "PROMOTION_ENTERTAINER"]
DeathEffect = ["PROMOTION_BLOOD_PACT", "PROMOTION_AMBASSADOR", "PROMOTION_BANSHEE_CRY", "PROMOTION_RETRIBUTION", "PROMOTION_DESPAIR", "PROMOTION_STUPIFY"]
## Rebirth Flames ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_REBIRTH")):
if CyGame().getSorenRandNum(3, "Revive") == 0:
pReviveCity = pPlayer.getCapitalCity()
if pReviveCity:
pNewUnit = pPlayer.initUnit(unit.getUnitType(), pReviveCity.getX(), pReviveCity.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
unit.setDamage(0, false)
pNewUnit.convert(unit)
for iDeath in RealDeath:
unit.setHasPromotion(gc.getInfoTypeForString(iDeath), false)
for iDeath in self.AllArtifacts:
unit.setHasPromotion(iDeath, false)
unit.setLeaderUnitType(-1)
pNewUnit.setBaseCombatStr(unit.baseCombatStr())
pNewUnit.finishMoves()
CyInterface().addMessage(iPlayer,false,10,CyTranslator().getText("TXT_REBIRTH_FLAMES",(pNewUnit.getName(),pReviveCity.getName(),)),'',0, gc.getPromotionInfo(gc.getInfoTypeForString("PROMOTION_REBIRTH")).getButton(),ColorTypes(11),pNewUnit.getX(), pNewUnit.getY(), true,true)
## Last Wish Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_LAST_WISH")):
Wish = []
DeathXP = unit.getExperience() * 2
pPlot = unit.plot()
for iUnit in xrange(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(iUnit)
if pUnit.isNone(): continue
if pUnit.isDead(): continue
if pUnit.getUnitCombatType() == -1: continue
if pUnit.getOwner() == iPlayer:
Wish.append(pUnit)
for i in xrange(len(Wish)):
Wish[i].changeExperience(DeathXP /len(Wish),9999,False,False,False)
if i < DeathXP % len(Wish):
Wish[i].changeExperience(1,9999,False,False,False)
## Blood Pact Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_BLOOD_PACT")):
pPlot = unit.plot()
for iUnit in xrange(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(iUnit)
if pUnit.isNone(): continue
if pUnit.isDead(): continue
if pUnit.getOwner() == iPlayer:
pUnit.changeDamage(-(unit.getLevel() * 10), false)
## Interception III Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_INTERCEPTION3")):
pTeam = gc.getTeam(pPlayer.getTeam())
pTeam.changeNukeInterception(-2)
## Entertainer Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_ENTERTAINER")):
pPlayer.changeExtraHappiness(-1)
## Legend Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_LEGEND")):
pPlayer.changeAnarchyTurns(unit.getLevel())
CyInterface().addMessage(iPlayer,true,10,CyTranslator().getText("TXT_MOURNING",()),'',0,'',-1,-1,-1,false,false)
## Ambasador Start ##
if unit.isHasPromotion(gc.getInfoTypeForString("PROMOTION_AMBASSADOR")):
pPlayer2 = gc.getPlayer(iAttacker)
iTeam2 = pPlayer2.getTeam()
for iTeamX in xrange(gc.getMAX_CIV_TEAMS()):
pTeamX = gc.getTeam(iTeamX)
pLeaderX = gc.getPlayer(pTeamX.getLeaderID())
if pTeamX.canDeclareWar(iTeam2):
if CyGame().getSorenRandNum(5, "Declare War") > 3 * pLeaderX.AI_getAttitude(iAttacker) - pLeaderX.AI_getAttitude(iPlayer):
pTeamX.declareWar(iTeam2, true, -1)
## Platyping Promotions End ##
if (not self.__LOG_UNITKILLED):
return
CvUtil.pyPrint('Player %d Civilization %s Unit %s was killed by Player %d'
%(player.getID(), player.getCivilizationName(), PyInfo.UnitInfo(unit.getUnitType()).getDescription(), attacker.getID()))