def spellDomination(caster):
iSpell = gc.getInfoTypeForString('SPELL_DOMINATION')
iX = caster.getX()
iY = caster.getY()
pPlayer = gc.getPlayer(caster.getOwner())
iResistMax = 95
iBestValue = 0
pBestUnit = -1
if pPlayer.isHuman() == false:
iResistMax = 20
iTeam = pPlayer.getTeam()
eTeam = gc.getTeam(iTeam)
for iiX in range(iX-1, iX+2, 1):
for iiY in range(iY-1, iY+2, 1):
pPlot = CyMap().plot(iiX,iiY)
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
iValue = 0
if pUnit.isAlive():
if pUnit.isDelayedDeath() == False:
if eTeam.isAtWar(pUnit.getTeam()):
iResist = pUnit.getResistChance(caster, iSpell)
if iResist <= iResistMax:
iValue = pUnit.baseCombatStr() * 10
iValue = iValue + (100 - iResist)
if iValue > iBestValue:
iBestValue = iValue
pBestUnit = pUnit
if pBestUnit != -1:
pPlot = caster.plot()
if pBestUnit.isResisted(caster, iSpell) == false:
CyInterface().addMessage(pBestUnit.getOwner(),true,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOMINATION", ()),'',1,'Art/Interface/Buttons/Spells/Domination.dds',ColorTypes(7),pBestUnit.getX(),pBestUnit.getY(),True,True)
CyInterface().addMessage(caster.getOwner(),true,25,CyTranslator().getText("TXT_KEY_MESSAGE_DOMINATION_ENEMY", ()),'',1,'Art/Interface/Buttons/Spells/Domination.dds',ColorTypes(8),pPlot.getX(),pPlot.getY(),True,True)
newUnit = pPlayer.initUnit(pBestUnit.getUnitType(), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
newUnit.convert(pBestUnit)
newUnit.changeImmobileTimer(1)