from CvPythonExtensions import *
import CvEventInterface
import CvUtil
import BugUtil
import PyHelpers
gc = CyGlobalContext()
localText = CyTranslator()
PyPlayer = PyHelpers.PyPlayer
PyInfo = PyHelpers.PyInfo
PyCity = PyHelpers.PyCity
PyGame = PyHelpers.PyGame
class Espionage:
def __init__(self, eventManager):
eventManager.addEventHandler("combatResult", self.onCombatResult)
def onCombatResult(self, argsList):
'Combat Result'
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())
## Marauder part 1Start ##
pPlayer = gc.getPlayer(pWinner.getOwner())
if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_MARAUDER')):
pPlayer = gc.getPlayer(pWinner.getOwner())
iGold = playerY.getGold( )
message = 0
iGoldStolen = ( iGold//25 )
if playerY.getGold( ) >= 500:
playerY.changeGold( -20 )
elif playerY.getGold( ) >= 25:
playerY.changeGold( -iGoldStolen )
elif (playerY.getGold( ) >= 1) and (playerY.getGold( ) < 25):
playerY.changeGold( -1 )
iGold2 = playerX.getGold( )
if playerY.getGold( ) >= 500:
playerX.changeGold( +20 )
message = 1
elif playerY.getGold( ) >= 25:
playerX.changeGold( +iGoldStolen )
message = 2
else:
playerX.changeGold( +1 )
message = 3
pPID = pPlayer.getID()
iX = pWinner.getX()
iY = pWinner.getY()
szName = pPlayer.getName()
## This only controls the text, all actual gold amounts are done above:
iGoldStolenMax = ( 500//25 )
iGoldStolenMin = ( 25//25 )
if ( message == 1 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD1",(szName,iGoldStolenMax)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD1",(szName,iGoldStolenMax)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 2 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD2",(szName,iGoldStolen)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD2",(szName,iGoldStolen)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 3 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD3",(szName,iGoldStolenMin)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(pLoser.getOwner(),false,15,CyTranslator().getText("TXT_KEY_MARAUDER_GOLD3",(szName,iGoldStolenMin)),'',0,',Art/Interface/Buttons/TechTree/Banking.dds,Art/Interface/Buttons/TechTree_Atlas.dds,8,1',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
## Marauder part 1 End ##
## Industry Espionage Part 1 Start ##
pPlayer = gc.getPlayer(pWinner.getOwner())
if pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_INDUSTRYESPIONAGE')) and gc.getPlayer(pLoser.getOwner()).getCurrentResearch()>=0:
pPlayer = gc.getPlayer(pWinner.getOwner())
myteamINT = pPlayer.getTeam()
myteam = gc.getTeam(myteamINT)
otherplayerINT =pLoser.getOwner()
otherplayer = gc.getPlayer(otherplayerINT)
otherteamINT=otherplayer.getTeam()
otherteam=gc.getTeam(otherteamINT)
iResearch = otherplayer.calculateBaseNetResearch ()
iResearchStolen = ( iResearch//25 )
if iResearch >= 500:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),20,pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-20,pLoser.getOwner())
message = 1
elif iResearch >= 25:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),int(iResearchStolen),pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-int(iResearchStolen),pLoser.getOwner())
message = 2
else:
myteam.changeResearchProgress(pPlayer.getCurrentResearch (),1,pWinner.getOwner())
otherteam.changeResearchProgress(otherplayer.getCurrentResearch (),-1,pLoser.getOwner())
message = 3
pPID = pPlayer.getID()
otherPID=otherplayer.getID()
iX = pWinner.getX()
iY = pWinner.getY()
szName = pPlayer.getName()
## This only controls the text, all actual gold amounts are done above:
iGoldStolenMax = ( 500//25 )
iGoldStolenMin = ( 25//25 )
if ( message == 1 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE1",(szName,iGoldStolenMax)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 2 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE2",(szName,iResearchStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE2",(szName,iResearchStolen)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
if ( message == 3 ):
CyInterface().addMessage(pPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
CyInterface().addMessage(otherPID,false,15,CyTranslator().getText("TXT_KEY_INDUSTRYESPIONAGE3",(szName,iGoldStolenMin)),'',0,'Art/Interface/Buttons/Process/ProcessResearch.dds',ColorTypes(44), iX, iY, True,True)
### message: %s1 has plundered %d2 [ICON_GOLD]!###
## Industry Espionage Part 1 End ##
def onUnitPromoted(self, argsList):
'Unit Promoted'
pUnit, iPromotion = argsList
player = PyPlayer(pUnit.getOwner())
###Marauder Part 2 AI start###
pWinner = pUnit
pPlayer = gc.getPlayer(pWinner.getOwner())
if not pPlayer.isHuman():
iMarauderPromo = gc.getInfoTypeForString('PROMOTION_MARAUDER')
if (iPromotion<>iMarauderPromo):
if not pWinner.isHasPromotion(iMarauderPromo):
if pWinner.canAcquirePromotion(iMarauderPromo):
if ((pPlayer.getGoldPerTurn () <=10)or(pPlayer.getCommercePercent(gc.getInfoTypeForString("COMMERCE_GOLD")) >=30)):
descission = CyGame().getSorenRandNum(4, "Gold")
if ((descission==1) or (descission ==2)):
pWinner.setHasPromotion(iPromotion,False)
if pWinner.canAcquirePromotion(iMarauderPromo):
pWinner.setHasPromotion(iMarauderPromo,True)
else:
pWinner.setHasPromotion(iPromotion,True)
return
###Marauder Part 2 AI End###
###Industry Espionage Part 2 AI start###
pWinner = pUnit
pPlayer = gc.getPlayer(pWinner.getOwner())
if not pPlayer.isHuman():
iIndusPromo = gc.getInfoTypeForString('PROMOTION_INDUSTRYESPIONAGE')
if (iPromotion<>iIndusPromo):
if not pWinner.isHasPromotion(iIndusPromo):
if pWinner.canAcquirePromotion(iIndusPromo):
if (pPlayer.getCommercePercent(gc.getInfoTypeForString("COMMERCE_RESEARCH")) <=70):
descission = CyGame().getSorenRandNum(4, "Research")
if ((descission==1) or (descission ==2)):
pWinner.setHasPromotion(iPromotion,False)
if pWinner.canAcquirePromotion(iIndusPromo):
pWinner.setHasPromotion(iIndusPromo,True)
else:
pWinner.setHasPromotion(iPromotion,True)
return
###Industry Espionage Part 2 AI End###