def perTurnTeachMagic(caster):
lList = []
iMagLib = gc.getInfoTypeForString('PROMOTION_MAGICALLY_LIBERAL')
lList = lList + [iMagLib]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING2')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_CHANNELING1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_AIR1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_AIR1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_BODY1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_BODY1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHAOS1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_CHAOS1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CREATION1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_CREATION1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEATH1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_DEATH1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DIMENSIONAL1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_DIMENSIONAL1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EARTH1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_EARTH1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENCHANTMENT1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_ENCHANTMENT1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENTROPY1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_ENTROPY1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_FIRE1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_FIRE1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_FORCE1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_FORCE1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ICE1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_ICE1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LAW1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_LAW1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIFE1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_LIFE1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_METAMAGIC1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_METAMAGIC1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MIND1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_MIND1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_NATURE1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_NATURE1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SHADOW1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_SHADOW1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SPIRIT1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_SPIRIT1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUN1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_SUN1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_WATER1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_WATER1')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EXTENSION1')):
lList = lList + [gc.getInfoTypeForString('PROMOTION_EXTENSION1')]
lList2 = []
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_CHANNELING2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_AIR3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_AIR2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_BODY3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_BODY2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHAOS3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_CHAOS2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CREATION3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_CREATION2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEATH3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_DEATH2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DIMENSIONAL3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_DIMENSIONAL2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EARTH3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_EARTH2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENCHANTMENT3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_ENCHANTMENT2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENTROPY3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_ENTROPY2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_FIRE3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_FIRE2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_FORCE3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_FORCE2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ICE3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_ICE2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LAW3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_LAW2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_LIFE3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_LIFE2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MIND3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_MIND2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_NATURE3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_NATURE2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SHADOW3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_SHADOW2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SPIRIT3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_SPIRIT2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUN3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_SUN2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_WATER3')):
lList2 = lList2 + [gc.getInfoTypeForString('PROMOTION_WATER2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EXTENSION2')):
[COLOR="Red"] lList2 = lList2[/COLOR] + [gc.getInfoTypeForString('PROMOTION_EXTENSION2')]
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CASWALLAWN')):
[COLOR="Red"] lList2 = lList2[/COLOR] + [gc.getInfoTypeForString('PROMOTION_CHANNELING3')]
if len(lList) > 0:
iAdept = gc.getInfoTypeForString('UNITCOMBAT_ADEPT')
iAnimal = gc.getInfoTypeForString('UNITCOMBAT_ANIMAL')
iBeast = gc.getInfoTypeForString('UNITCOMBAT_BEAST')
pPlot = caster.plot()
iPlayer = caster.getOwner()
iTaught = 0
iProm = lList[CyGame().getSorenRandNum(len(lList), "Govannon")]
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getOwner() == iPlayer:
if pUnit.isAlive():
if pUnit.getUnitCombatType() != iAnimal and pUnit.getUnitCombatType() != iBeast:
if iProm == iMagLib or pUnit.isHasPromotion(iMagLib) or pUnit.getUnitCombatType() != iAdept:
if not pUnit.isHasPromotion(iProm):
pUnit.setHasPromotion(iProm, True)
iTaught += 1
CyInterface().addMessage(caster.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_MAGIC_TAUGHT", ()),'',1,gc.getPromotionInfo(iProm).getButton(),ColorTypes(8),[COLOR="Red"]caster.getX(),caster.getY()[/COLOR],True,True)
if iTaught == 0:
iProm = lList[CyGame().getSorenRandNum(len(lList), "Govannon")]
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getOwner() == iPlayer:
if pUnit.isAlive():
if pUnit.getUnitCombatType() != iAnimal and pUnit.getUnitCombatType() != iBeast:
if iProm == iMagLib or pUnit.isHasPromotion(iMagLib) or pUnit.getUnitCombatType() != iAdept:
if not pUnit.isHasPromotion(iProm):
pUnit.setHasPromotion(iProm, True)
iTaught += 1
CyInterface().addMessage([COLOR="Red"]caster.getOwner()[/COLOR],True,25,CyTranslator().getText("TXT_KEY_MESSAGE_MAGIC_TAUGHT", ()),'',1,gc.getPromotionInfo(iProm).getButton(),ColorTypes(8),[COLOR="Red"]caster.getX(),caster.getY()[/COLOR],True,True)
[COLOR="Red"] if len(lList2) > 0:[/COLOR]
if iTaught == 0:
iProm = lList2[CyGame().getSorenRandNum(len([COLOR="Red"]lList2[/COLOR]), "Govannon")]
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getOwner() == iPlayer:
if pUnit.isAlive():
if pUnit.getUnitCombatType() != iAnimal and pUnit.getUnitCombatType() != iBeast:
if pUnit.isHasPromotion(iMagLib):
if not pUnit.isHasPromotion(iProm):
pUnit.setHasPromotion(iProm, True)
iTaught += 1
CyInterface().addMessage([COLOR="Red"]caster.getOwner()[/COLOR],True,25,CyTranslator().getText("TXT_KEY_MESSAGE_MAGIC_TAUGHT", ()),'',1,gc.getPromotionInfo(iProm).getButton(),ColorTypes(8),[COLOR="Red"]caster.getX(),caster.getY()[/COLOR],True,True)
break
if iTaught == 0:
iProm = lList2[CyGame().getSorenRandNum(len([COLOR="Red"]lList2[/COLOR]), "Govannon")]
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getOwner() == iPlayer:
if pUnit.isAlive():
if pUnit.getUnitCombatType() != iAnimal and pUnit.getUnitCombatType() != iBeast:
if pUnit.isHasPromotion(iMagLib):
if not pUnit.isHasPromotion(iProm):
pUnit.setHasPromotion(iProm, True)
iTaught += 1
CyInterface().addMessage([COLOR="Red"]caster.getOwner()[/COLOR],True,25,CyTranslator().getText("TXT_KEY_MESSAGE_MAGIC_TAUGHT", ()),'',1,gc.getPromotionInfo(iProm).getButton(),ColorTypes(8),[COLOR="Red"]caster.getX(),caster.getY()[/COLOR],True,True)
break