def isResisted(target,caster,iModify):
iResist = gc.getDefineINT('SPELL_RESIST_CHANCE_BASE') + iModify
iResist = iResist + (target.getLevel() * 5)
if target.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MAGIC_RESISTANCE')):
iResist = iResist * 2
if target.isHasPromotion(gc.getInfoTypeForString('PROMOTION_HERO')):
iResist = iResist * 2
iResist = iResist - (caster.getLevel() * 2)
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING2')):
iResist = iResist - 10
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING3')):
iResist = iResist - 20
if cf.FFHHasBuilding(gc.getPlayer(caster.getOwner()), gc.getInfoTypeForString('BUILDING_TOWER_OF_ALTERATION')):
iResist = iResist - 10
if iResist >= gc.getDefineINT('SPELL_RESIST_CHANCE_MAX'):
iResist = gc.getDefineINT('SPELL_RESIST_CHANCE_MAX')
if iResist <= gc.getDefineINT('SPELL_RESIST_CHANCE_MIN'):
iResist = gc.getDefineINT('SPELL_RESIST_CHANCE_MIN')
if (CyGame().getSorenRandNum(100, "Bob") <= iResist or target.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MAGIC_IMMUNE'))):
CyInterface().addMessage(target.getOwner(),True,25,'Spell resisted.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Promotions/Magicresistance.dds',ColorTypes(8),target.getX(),target.getY(),True,True)
CyInterface().addMessage(caster.getOwner(),True,25,'Spell resisted.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Promotions/Magicresistance.dds',ColorTypes(8),target.getX(),target.getY(),True,True)
return True
return False