if not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_HYBOREM_OR_BASIUM):
if (iTechType == gc.getInfoTypeForString('TECH_INFERNAL_PACT') and iPlayer != -1):
iCount = 0
for iTeam in range(gc.getMAX_TEAMS()):
eTeam = gc.getTeam(iTeam)
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_INFERNAL_PACT')):
iCount = iCount + 1
if iCount == 1:
iInfernalPlayer = cf.getOpenPlayer()
pBestPlot = -1
iBestPlot = -1
for i in range (CyMap().numPlots()):
pPlot = CyMap().plotByIndex(i)
iPlot = -1
if pPlot.isWater() == False:
if pPlot.getNumUnits() == 0:
if pPlot.isCity() == False:
if pPlot.isImpassable() == False:
iPlot = CyGame().getSorenRandNum(500, "Place Hyborem")
iPlot = iPlot + (pPlot.area().getNumTiles() * 2)
iPlot = iPlot + (pPlot.area().getNumUnownedTiles() * 10)
if pPlot.isOwned() == False:
iPlot = iPlot + 500
if pPlot.getOwner() == iPlayer:
iPlot = iPlot + 200
if iPlot > iBestPlot:
iBestPlot = iPlot
pBestPlot = pPlot
if (iInfernalPlayer != -1 and pBestPlot != -1):
CyGame().addPlayerAdvanced(iInfernalPlayer, -1, gc.getInfoTypeForString('LEADER_TASUNKE'), gc.getInfoTypeForString('CIVILIZATION_HIPPUS'))
iFounderTeam = gc.getPlayer(iPlayer).getTeam()
eFounderTeam = gc.getTeam(gc.getPlayer(iPlayer).getTeam())
iInfernalTeam = gc.getPlayer(iInfernalPlayer).getTeam()
eInfernalTeam = gc.getTeam(iInfernalTeam)
for iTech in range(gc.getNumTechInfos()):
if eFounderTeam.isHasTech(iTech):
eInfernalTeam.setHasTech(iTech, true, iInfernalPlayer, true, false)
eFounderTeam.signOpenBorders(iFounderTeam)
eInfernalTeam.signOpenBorders(iInfernalTeam)
iBarbTeam = gc.getPlayer(gc.getBARBARIAN_PLAYER()).getTeam()
eInfernalTeam.makePeace(iBarbTeam)
for iTeam in range(gc.getMAX_TEAMS()):
if iTeam != iBarbTeam:
eTeam = gc.getTeam(iTeam)
if eTeam.isAlive():
if eFounderTeam.isAtWar(iTeam):
eInfernalTeam.declareWar(iTeam, false, WarPlanTypes.WARPLAN_LIMITED)
pInfernalPlayer = gc.getPlayer(iInfernalPlayer)
pInfernalPlayer.AI_changeAttitudeExtra(iPlayer,4)
newUnit1 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_CORLINDALE'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit1.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IMMORTAL'), true)
newUnit1.setHasCasted(true)
newUnit2 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_LONGBOWMAN'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit2.setHasPromotion(gc.getInfoTypeForString('PROMOTION_MOBILITY1'), true)
newUnit3 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_LONGBOWMAN'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit3.setHasPromotion(gc.getInfoTypeForString('PROMOTION_MOBILITY1'), true)
newUnit4 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_CHAMPION'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit4.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_WEAPONS'), true)
newUnit4.setHasPromotion(gc.getInfoTypeForString('PROMOTION_MOBILITY1'), true)
newUnit5 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_CHAMPION'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit5.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_WEAPONS'), true)
newUnit5.setHasPromotion(gc.getInfoTypeForString('PROMOTION_MOBILITY1'), true)
newUnit6 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_WORKER'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit6.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON'), true)
newUnit7 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_KURENAI'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit7.setHasPromotion(gc.getInfoTypeForString('PROMOTION_MOBILITY1'), true)
newUnit8 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_NAARU'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit9 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_NAARU'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit10 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_KURENAI'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit11 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_SETTLER'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit11.setHasPromotion(gc.getInfoTypeForString('PROMOTION_STARTING_SETTLER'), true)
newUnit11.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON'), true)
newUnit12 = pInfernalPlayer.initUnit(gc.getInfoTypeForString('UNIT_SETTLER'), pBestPlot.getX(), pBestPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
newUnit12.setHasPromotion(gc.getInfoTypeForString('PROMOTION_STARTING_SETTLER'), true)
newUnit12.setHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON'), true)
if gc.getPlayer(iPlayer).isHuman():
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
popupInfo.setText(CyTranslator().getText("TXT_KEY_POPUP_CONTROL_INFERNAL",()))
popupInfo.setData1(iPlayer)
popupInfo.setData2(iInfernalPlayer)
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_YES", ()), "")
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_NO", ()), "")
popupInfo.setOnClickedPythonCallback("reassignPlayer")
popupInfo.addPopup(iPlayer)