def spellDovielloDuel(caster):
pPlot = caster.plot()
iChallengerProm = gc.getInfoTypeForString('PROMOTION_CHALLENGER')
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
iRnd = CyGame().getSorenRandNum(100, "Doviello Duel")
if pUnit.isHasPromotion(iChallengerProm) == True:
iChallengerOdds = getCombatOdds(pUnit, caster)
iChallengerRnd = (iRnd + (iChallengerOdds * 2)) / 3
iDefenderOdds = getCombatOdds(caster, pUnit)
iDefenderRnd = (iRnd + (iDefenderOdds * 2)) / 3
if iDefenderOdds > iChallengerOdds:
iDefenseRnd = CyGame().getSorenRandNum(100, "Doviello Duel Defender")
iDefenseTieRnd = CyGame().getSorenRandNum(100, "Doviello Duel Defender Tie")
if iDefenseTieRnd < 10:
caster.changeExperience(pUnit.getExperienceTimes100() / 10, -1, False, False, False)
caster.setDamage(75, caster.getOwner())
pUnit.changeExperience(caster.getExperienceTimes100() / 10, -1, False, False, False)
pUnit.setDamage(75, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_DRAW", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
elif (iDefenseTieRnd <= 12 and iDefenseTieRnd >= 10):
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_ARENA_DEATH", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(7),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
pUnit.kill(True, PlayerTypes.NO_PLAYER)
elif iDefenseTieRnd > 12:
if iDefenseRnd > iDefenderOdds:
pUnit.changeExperience((caster.getExperienceTimes100() / 4) + 2, -1, False, False, False)
pUnit.setDamage(25, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_LOSS", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
if iDefenseRnd < iDefenderOdds:
caster.changeExperience((pUnit.getExperienceTimes100() / 4) + 2, -1, False, False, False)
caster.setDamage(25, caster.getOwner())
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_WIN", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
pUnit.kill(True, PlayerTypes.NO_PLAYER)
if iChallengerOdds > iDefenderOdds:
iChallengeRnd = CyGame().getSorenRandNum(100, "Doviello Duel Challenger")
iChallengerTieRnd = CyGame().getSorenRandNum(100, "Doviello Duel Challenger Tie")
if iChallengerTieRnd < 10:
caster.changeExperience(pUnit.getExperienceTimes100() / 10, -1, False, False, False)
caster.setDamage(75, caster.getOwner())
pUnit.changeExperience(caster.getExperienceTimes100() / 10, -1, False, False, False)
pUnit.setDamage(75, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_DRAW", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
elif (iChallengerTieRnd <= 12 and iChallengerTieRnd >= 10):
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_ARENA_DEATH", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(7),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
pUnit.kill(True, PlayerTypes.NO_PLAYER)
elif iChallengerTieRnd > 12:
if iChallengeRnd < iChallengerOdds:
pUnit.changeExperience((caster.getExperienceTimes100() / 4) + 2, -1, False, False, False)
pUnit.setDamage(25, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_LOSS", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
if iChallengeRnd > iChallengerOdds:
caster.changeExperience((pUnit.getExperienceTimes100() / 4) + 2, -1, False, False, False)
caster.setDamage(25, caster.getOwner())
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_WIN", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
pUnit.kill(True, PlayerTypes.NO_PLAYER)
if iChallengerOdds == iDefenderOdds:
iEqualRnd = CyGame().getSorenRandNum(100, "Doviello Duel Equals")
iEqualTieRnd = CyGame().getSorenRandNum(100, "Doviello Duel Equals Tie")
if iEqualTieRnd < 10:
caster.changeExperience(pUnit.getExperienceTimes100() / 10, -1, False, False, False)
caster.setDamage(75, caster.getOwner())
pUnit.changeExperience(caster.getExperienceTimes100() / 10, -1, False, False, False)
pUnit.setDamage(75, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_DRAW", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
elif (iEqualTieRnd <= 12 and iEqualTieRnd >= 10):
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_ARENA_DEATH", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(7),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
pUnit.kill(True, PlayerTypes.NO_PLAYER)
elif iEqualTieRnd > 12:
if iEqualRnd < 50:
pUnit.changeExperience((caster.getExperienceTimes100() / 4) + 2, -1, False, False, False)
pUnit.setDamage(25, pUnit.getOwner())
pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_CHALLENGER'), False)
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_LOSS", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
caster.kill(True, PlayerTypes.NO_PLAYER)
if iEqualRnd >= 50:
caster.changeExperience((pUnit.getExperienceTimes100() / 4) + 2, -1, False, False, False)
caster.setDamage(25, caster.getOwner())
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOVIELLO_DUEL_WIN", ()),'',1,'Art/Interface/Buttons/Buildings/Arena.dds',ColorTypes(8),caster.getX(),caster.getY(),True,True)
pUnit.kill(True, PlayerTypes.NO_PLAYER)