if pCity.getNumRealBuilding(gc.getInfoTypeForString('BUILDING_PLANAR_GATE')) > 0:
iMax = 1
iMult = 1
if CyGame().getGlobalCounter() >= 50:
iMax = 2
iMult = 1.5
if CyGame().getGlobalCounter() >= 75:
iMax = 3
iMult = 2
if CyGame().getGlobalCounter() == 100:
iMax = 4
iMult = 2.5
if CyGame().getSorenRandNum(10000, "Planar Gate") <= gc.getDefineINT('PLANAR_GATE_CHANCE') * iMult:
listUnits = []
iMax = iMax * pPlayer.countNumBuildings(gc.getInfoTypeForString('BUILDING_PLANAR_GATE'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_GAMBLING_HOUSE')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_REVELERS')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_REVELERS'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_MAGE_GUILD')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_MOBIUS_WITCH')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_MOBIUS_WITCH'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_CARNIVAL')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_CHAOS_MARAUDER')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_CHAOS_MARAUDER'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_GROVE')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_MANTICORE')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_MANTICORE'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_PUBLIC_BATHS')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_SUCCUBUS')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_SUCCUBUS'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_OBSIDIAN_GATE')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_MINOTAUR')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_MINOTAUR'))
if pCity.getNumBuilding(gc.getInfoTypeForString('BUILDING_TEMPLE_OF_THE_VEIL')) > 0:
if pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_TAR_DEMON')) < iMax:
listUnits.append(gc.getInfoTypeForString('UNIT_TAR_DEMON'))
if len(listUnits) > 0:
iUnit = listUnits[CyGame().getSorenRandNum(len(listUnits), "Planar Gate")]
newUnit = pPlayer.initUnit(iUnit, pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_NORTH)
CyInterface().addMessage(iPlayer,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_PLANAR_GATE",()),'AS2D_DISCOVERBONUS',1,gc.getUnitInfo(newUnit.getUnitType()).getButton(),ColorTypes(8),pCity.getX(),pCity.getY(),True,True)
if iUnit == gc.getInfoTypeForString('UNIT_MOBIUS_WITCH'):
promotions = [ 'PROMOTION_AIR1','PROMOTION_BODY1','PROMOTION_CHAOS1','PROMOTION_DEATH1','PROMOTION_EARTH1','PROMOTION_ENCHANTMENT1','PROMOTION_ENTROPY1','PROMOTION_FIRE1','PROMOTION_LAW1','PROMOTION_LIFE1','PROMOTION_MIND1','PROMOTION_NATURE1','PROMOTION_SHADOW1','PROMOTION_SPIRIT1','PROMOTION_SUN1','PROMOTION_WATER1' ]
newUnit.setLevel(4)
newUnit.setExperience(14, -1)
for i in promotions:
if CyGame().getSorenRandNum(10, "Bob") == 1:
newUnit.setHasPromotion(gc.getInfoTypeForString(i), True)