iGodslayer = gc.getInfoTypeForString('PROMOTION_GODSLAYER')
iAvatar = gc.getInfoTypeForString('PROMOTION_AVATAR')
iCaveaAngelorum = gc.getInfoTypeForString('PROMOTION_ANGELORUM_CAVEA')
iCaptusAngelorum = gc.getInfoTypeForString('PROMOTION_CAPTUS_CAVEAE_ANGELORUM')
iCaveaSawol = gc.getInfoTypeForString('PROMOTION_SAWOL_CAVEA')
iCaptusSawol = gc.getInfoTypeForString('PROMOTION_CAPTUS_CAVEAE_SAWOL')
iNetherblade = gc.getInfoTypeForString('PROMOTION_NETHER_BLADE')
iNBind = gc.getInfoTypeForString('PROMOTION_NETHERBIND')
iCustos = gc.getInfoTypeForString('PROMOTION_CUSTOS_JUDICII')
iCarcer = gc.getInfoTypeForString('PROMOTION_INCARCERATUS_JUDICII')
if pWinner.isHasPromotion(iGodslayer):
cf.makeMortal(pLoser)
if pLoser.isHasPromotion(iAvatar):
pLoser.setHasPromotion(iAvatar, False)
gc.getPlayer(iPlayerL).AI_changeAttitudeExtra(iPlayerW,-12)
pLoser.kill(True, iPlayerW)
elif pLoser.isHasPromotion(iGodslayer):
cf.makeMortal(pWinner)
if pWinner.isHasPromotion(iAvatar):
pWinner.setHasPromotion(iAvatar, False)
gc.getPlayer(iPlayerW).AI_changeAttitudeExtra(iPlayerL,-12)
pWinner.kill(True, iPlayerL)
if pWinner.isHasPromotion(iNetherblade):
pLoser.setHasPromotion(iNBind, True)
cf.makeMortal(pLoser)
if isWorldUnitClass(pLoser.getUnitClassType()):
gc.getPlayer(iPlayerL).AI_changeAttitudeExtra(iPlayerW,-7)
pLoser.kill(True, iPlayerW)
elif pLoser.isHasPromotion(iNetherblade):
cf.makeMortal(pWinner)
if isWorldUnitClass(pWinner.getUnitClassType()):
pWinner.setHasPromotion(iNBind, True)
gc.getPlayer(iPlayerW).AI_changeAttitudeExtra(iPlayerL,-7)
pWinner.kill(True, iPlayerL)
if pWinner.isHasPromotion(iCaveaAngelorum):
if pLoser.getRace() in [gc.getInfoTypeForString('PROMOTION_DEMON'),gc.getInfoTypeForString('PROMOTION_ANGEL')]:
pLoser.setHasPromotion(iCaptusAngelorum, True)
cf.makeMortal(pLoser)
if isWorldUnitClass(pLoser.getUnitClassType()):
gc.getPlayer(iPlayerL).AI_changeAttitudeExtra(iPlayerW,-7)
pLoser.kill(True, iPlayerW)
elif pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED')):
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED'), False)
elif pWinner.isHasPromotion(iCustos):
if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON')):
pLoser.setHasPromotion(iCarcer, True)
cf.makeMortal(pLoser)
if isWorldUnitClass(pLoser.getUnitClassType()):
gc.getPlayer(iPlayerL).AI_changeAttitudeExtra(iPlayerW,-7)
pLoser.kill(True, iPlayerW)
elif pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED')):
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED'), False)
iX = pWinner.getX()
iY = pWinner.getY()
if pLoser.isAlive():
if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_VILE_TOUCH')):
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_WITHERED'), True)
if pWinner.getDamageTypeCombat(gc.getInfoTypeForString('DAMAGE_POISON')) > 0:
if pLoser.getDamage() > 0:
if not pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_POISONED')):
if pLoser.getDamageTypeResist(gc.getInfoTypeForString('DAMAGE_POISON')) < 100:
if CyGame().getSorenRandNum(100,"Poisoned") >= pLoser.getDamageTypeResist(gc.getInfoTypeForString('DAMAGE_POISON')):
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_POISONED'), True)
if pWinner.isHasPromotion(iCaveaSawol):
pLoser.setHasPromotion(iCaptusSawol, True)
cf.makeMortal(pLoser)
if isWorldUnitClass(pLoser.getUnitClassType()):
gc.getPlayer(iPlayerL).AI_changeAttitudeExtra(iPlayerW,-7)
pLoser.kill(True, iPlayerW)
else:
iRavenous = gc.getInfoTypeForString('PROMOTION_RAVENOUS')
iWerewolf = gc.getInfoTypeForString('PROMOTION_WEREWOLF')
lImmuneLycanthropy = [ iWerewolf,
gc.getInfoTypeForString('PROMOTION_WEREWOLF_SLAYING'),
gc.getInfoTypeForString('PROMOTION_IMMUNE_DISEASE'),
gc.getInfoTypeForString('PROMOTION_SPIRIT3'),
gc.getInfoTypeForString('PROMOTION_AFFINITY_SPIRIT'),
gc.getInfoTypeForString('PROMOTION_ILLUSION'),
gc.getInfoTypeForString('PROMOTION_DARK_REFLECTION')
]
if pWinner.isHasPromotion(iRavenous):
if not pLoser.isImmortal():
if not iUnitCombatLoser in lBeasts:
pWinner.setHasPromotion(iRavenous, False)
if pLoser.isHasPromotion(iWerewolf):
if pWinner.isAlive() and pWinner.getDamage() > 0:
if not pWinner.getUnitCombatType() in lBeasts:
for iProm in lImmuneLycanthropy:
if pWinner.isHasPromotion(iProm):
break
else:
iChance = pLoser.getLevel() - pWinner.getLevel()
if iTypeLoser == gc.getInfoTypeForString('UNIT_DUIN'):
iChance += 5
elif iTypeLoser == gc.getInfoTypeForString('UNIT_GREATER_WEREWOLF'):
iChance += 3
elif iTypeLoser == gc.getInfoTypeForString('UNIT_WEREWOLF'):
iChance += 2
elif iTypeLoser == gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF'):
iChance += 1
if iChance > 0:
if CyGame().getSorenRandNum(200, "Spread Lycanthropy" + str(pWinner.getName()) + ' slayer of '+ str(pLoser.getName())) < iChance:
sName = pWinner.getName()
CyInterface().addMessage(iPlayerW,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_SPREAD_LYCANTHROPY",(sName,)),'AS2D_FEATUREGROWTH',1,'Art/Interface/Buttons/Promotions/Werewolf.dds',ColorTypes(7),iX,iY,True,True)
CyInterface().addMessage(iPlayerL,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_SPREAD_LYCANTHROPY",(sName,)),'AS2D_FEATUREGROWTH',1,'Art/Interface/Buttons/Promotions/Werewolf.dds',ColorTypes(8),iX,iY,True,True)
newUnit = pPlayerW.initUnit(gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF'), iX, iY, UnitAITypes.UNITAI_ATTACK, DirectionTypes.NO_DIRECTION)
cf.makeMortal(pWinner)
pWinner.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DARK_REFLECTION'), True)
newUnit.convert(pWinner)
newUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DARK_REFLECTION'), False)
if pWinner.isHasPromotion(iWerewolf):
if pLoser.isAlive():
if not iUnitCombatLoser in lBeasts:
for iProm in lImmuneLycanthropy:
if pLoser.isHasPromotion(iProm):
break
else:
iChance = pWinner.getLevel() - pLoser.getLevel()
sName = pLoser.getName()
if iTypeWinner == gc.getInfoTypeForString('UNIT_DUIN'):
iChance += 5
elif iTypeWinner == gc.getInfoTypeForString('UNIT_GREATER_WEREWOLF'):
iChance += 3
if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CANNOT_CAST')):
pWinner.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CANNOT_CAST'), False)
CyInterface().addMessage(iPlayerW,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_WEREWOLF_CAN_CAST",(sName,)),'AS2D_FEATUREGROWTH',1,'Art/Interface/Buttons/Promotions/Werewolf.dds',ColorTypes(8),iX,iY,True,True)
elif iTypeWinner == gc.getInfoTypeForString('UNIT_WEREWOLF'):
iChance += 2
elif iTypeWinner == gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF'):
iChance += 1
iChance *= 10
if iChance > 0:
if CyGame().getSorenRandNum(100, "Spread Lycanthropy " + str(pWinner.getName()) + ' slayer of '+ str(pLoser.getName())) < iChance:
sName = pLoser.getName()
CyInterface().addMessage(iPlayerL,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_SPREAD_LYCANTHROPY",(sName,)),'AS2D_FEATUREGROWTH',1,'Art/Interface/Buttons/Promotions/Werewolf.dds',ColorTypes(7),iX,iY,True,True)
CyInterface().addMessage(iPlayerW,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_SPREAD_LYCANTHROPY",(sName,)),'AS2D_FEATUREGROWTH',1,'Art/Interface/Buttons/Promotions/Werewolf.dds',ColorTypes(8),iX,iY,True,True)
newUnit = pPlayerW.initUnit(gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF'), iX, iY, UnitAITypes.UNITAI_ATTACK, DirectionTypes.NO_DIRECTION)
newUnit.setScenarioCounter(iTypeLoser)
newUnit.setLevel(pLoser.getLevel())
newUnit.setExperience(pLoser.getExperience(), -1)
newUnit.setName(sName)
newUnit.setReligion(pLoser.getReligion())
newUnit.setDamage(pLoser.getDamage()/2, pWinner.getOwner())
newUnit.finishMoves()
for iCount in xrange(gc.getNumPromotionInfos()):
if pLoser.isHasPromotion(iCount) and not gc.getPromotionInfo(iCount).isEquipment():
newUnit.setHasPromotion(iCount, True)
cf.makeMortal(pLoser)
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DARK_REFLECTION'), True)