def miscastSteal(pCaster, eSpell=-1):
iTeam = pCaster.getTeam()
pPlot = pCaster.plot()
iPlayer = pCaster.getOwner()
iX = pCaster.getX()
iY = pCaster.getY()
sButton = 'Art/Interface/Buttons/Spells/Steal.dds'
for i in xrange(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.isDelayedDeath():continue
if pUnit.getTeam() == iTeam:continue
if pUnit.isInvisible(iTeam, False):continue
iUnit = pUnit.getUnitType()
if iUnit == -1: continue
if gc.getUnitInfo(iUnit).isObject():
iProm = gc.getUnitInfo(iUnit).getEquipmentPromotion()
if iProm != -1:
if not pCaster.isHasPromotion(iProm):
sDescription = gc.getPromotionInfo(iProm).getDescription()
iPlayer = pCaster.getOwner()
pPlayer = gc.getPlayer(iPlayer)
iPlayerT = pUnit.getOwner()
pPlayerT = gc.getPlayer(iPlayerT)
iRnd = CyGame().getSorenRandNum(100, "Steal")
if iRnd < 50:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL_ESCAPE", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
elif iRnd < 95:
pPlayerT.AI_changeAttitudeExtra(pCaster.getOwner(), -2)
pCaster.doDamageNoCaster(50, 95, gc.getInfoTypeForString('DAMAGE_PHYSICAL'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN_NATIONALITY'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_INVISIBLE'), False)
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
else:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
if CyGame().getSorenRandNum(100, "Steal") < 50 and not pPlayer.getCapitalCity().isNone():
pCaster.setXY(pPlayer.getCapitalCity().getX(), pPlayer.getCapitalCity().getY(), False, True, True)
else:
pCaster.kill(True, PlayerTypes.NO_PLAYER)
cf.startWar(pCaster.getOwner(), pUnit.getOwner(), WarPlanTypes.WARPLAN_TOTAL)
for iProm in xrange(gc.getNumPromotionInfos()):
if not pCaster.isHasPromotion(iProm):
if pUnit.isHasPromotion(iProm):
if gc.getPromotionInfo(iProm).isEquipment():
if iProm == gc.getInfoTypeForString('PROMOTION_PIECES_OF_BARNAXUS') and iUnit == gc.getInfoTypeForString('UNIT_BARNAXUS'):
continue
if iProm == gc.getInfoTypeForString('PROMOTION_PIECES_OF_MITHRIL_GOLEM') and iUnit == gc.getInfoTypeForString('UNIT_MITHRIL_GOLEM'):
continue
if iProm == gc.getInfoTypeForString('PROMOTION_PIECES_OF_WAR_MACHINE') and iUnit == gc.getInfoTypeForString('UNIT_WAR_MACHINE'):
continue
sDescription = gc.getPromotionInfo(iProm).getDescription()
iPlayer = pCaster.getOwner()
pPlayer = gc.getPlayer(iPlayer)
iPlayerT = pUnit.getOwner()
pPlayerT = gc.getPlayer(iPlayerT)
iRnd = CyGame().getSorenRandNum(100, "Steal")
if iRnd < 50:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL_ESCAPE", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
elif iRnd < 95:
pPlayerT.AI_changeAttitudeExtra(pCaster.getOwner(), -2)
pCaster.doDamageNoCaster(50, 95, gc.getInfoTypeForString('DAMAGE_PHYSICAL'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN_NATIONALITY'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_INVISIBLE'), False)
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
else:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
if CyGame().getSorenRandNum(100, "Steal") < 50 and not pPlayer.getCapitalCity().isNone():
pCaster.setXY(pPlayer.getCapitalCity().getX(), pPlayer.getCapitalCity().getY(), False, True, True)
else:
pCaster.kill(True, PlayerTypes.NO_PLAYER)
cf.startWar(pCaster.getOwner(), pUnit.getOwner(), WarPlanTypes.WARPLAN_TOTAL)
if pPlot.isCity():
pCity = pPlot.getPlotCity()
if pCity.getTeam() != iTeam:
for iBuild in xrange(gc.getNumBuildingInfos()):
if pCity.getNumRealBuilding(iBuild) > 0:
if gc.getBuildingInfo(iBuild).isEquipment():
for iUnit in xrange(gc.getNumUnitInfos()):
if gc.getUnitInfo(iUnit).getBuildings(iBuild):
iProm = gc.getUnitInfo(iUnit).getEquipmentPromotion()
if not pCaster.isHasPromotion(iProm):
sDescription = gc.getBuildingInfo(iBuild).getDescription()
iPlayer = pCaster.getOwner()
pPlayer = gc.getPlayer(iPlayer)
iPlayerT = pCity.getOwner()
pPlayerT = gc.getPlayer(iPlayerT)
iRnd = CyGame().getSorenRandNum(100, "Steal")
if iRnd < 50:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL_ESCAPE", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
elif iRnd < 95:
pPlayerT.AI_changeAttitudeExtra(pCaster.getOwner(), -2)
pCaster.doDamageNoCaster(50, 95, gc.getInfoTypeForString('DAMAGE_PHYSICAL'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN_NATIONALITY'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_HIDDEN'), False)
pCaster.setHasPromotion(gc.getInfoTypeForString('PROMOTION_INVISIBLE'), False)
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
else:
CyInterface().addMessage(iPlayer, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_GREEN'), iX, iY, True, True)
CyInterface().addMessage(iPlayerT, True, 25, localText.getText("TXT_KEY_SPELL_STEAL_EPIC_FAIL", (pCaster.getName(), sDescription, )), '', InterfaceMessageTypes.MESSAGE_TYPE_INFO, sButton, gc.getInfoTypeForString('COLOR_RED'), iX, iY, True, True)
if CyGame().getSorenRandNum(100, "Steal") < 50 and not pPlayer.getCapitalCity().isNone():
pCaster.setXY(pPlayer.getCapitalCity().getX(), pPlayer.getCapitalCity().getY(), False, True, True)
else:
pCaster.kill(True, PlayerTypes.NO_PLAYER)
cf.startWar(pCaster.getOwner(), pCity.getOwner(), WarPlanTypes.WARPLAN_TOTAL)