PHP-Code:
def AI_chooseTech(self,argsList):
ePlayer = argsList[0]
bFree = argsList[1]
pPlayer = gc.getPlayer(ePlayer)
iCiv = pPlayer.getCivilizationType()
eTeam = gc.getTeam(pPlayer.getTeam())
iTech = -1
iBronze = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_BRONZE')
iHorse = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_HORSE')
iEles = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_IVORY')
iCamel = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_CAMEL')
iStone = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_STONE')
iMarble = CvUtil.findInfoTypeNum(gc.getBonusInfo,gc.getNumBonusInfos(),'BONUS_MARBLE')
# Generell nur 1 Hauptabfrage, um nicht immer soviel zu haben:
# vor Fuehrerschaft
if not eTeam.isHasTech(gc.getInfoTypeForString('TECH_LEADERSHIP')):
# 1. Mystik
iTech = gc.getInfoTypeForString('TECH_MYSTICISM')
if not eTeam.isHasTech(iTech):
return iTech
# 2. Jagd
iTech = gc.getInfoTypeForString('TECH_HUNTING')
if not eTeam.isHasTech(iTech):
return iTech
# 3. Schamanismus
iTech = gc.getInfoTypeForString('TECH_SCHAMANISMUS')
if not eTeam.isHasTech(iTech):
return iTech
# Hindu
iTech = gc.getInfoTypeForString('TECH_RELIGION_HINDU')
if pPlayer.canResearch(iTech, False):
return iTech
# 3. Polytheismus
iTech = gc.getInfoTypeForString('TECH_POLYTHEISM')
if not eTeam.isHasTech(iTech):
return iTech
# Egypt und Sumer
if iCiv == gc.getInfoTypeForString('CIVILIZATION_EGYPT'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_EGYPT')
if pPlayer.canResearch(iTech, False):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_SUMERIA'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_SUMER')
if pPlayer.canResearch(iTech, False):
return iTech
# 4. Fuehrerschaft beeline
return gc.getInfoTypeForString('TECH_LEADERSHIP')
# vor Binnenkolonisierung
if not eTeam.isHasTech(gc.getInfoTypeForString('TECH_COLONIZATION')):
# Those Civs shall get their neighbour religion at least after leadership
if iCiv == gc.getInfoTypeForString('CIVILIZATION_NUBIA'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_EGYPT')
if not eTeam.isHasTech(iTech):
return iTech
elif iCiv == gc.getInfoTypeForString('CIVILIZATION_BABYLON'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_SUMER')
if not eTeam.isHasTech(iTech):
return iTech
# 6. Landwirtschaft
iTech = gc.getInfoTypeForString('TECH_AGRICULTURE')
if not eTeam.isHasTech(iTech):
return iTech
# 7. Viehzucht
iTech = gc.getInfoTypeForString('TECH_ANIMAL_HUSBANDRY')
if not eTeam.isHasTech(iTech):
return iTech
# 8. Bootsbau beeline falls Kuestenstadt
iTech = gc.getInfoTypeForString('TECH_BOOTSBAU')
if pPlayer.countNumCoastalCities() > 0:
if not eTeam.isHasTech(iTech):
return iTech
# 9. Pflug
iTech = gc.getInfoTypeForString('TECH_PFLUG')
if not eTeam.isHasTech(iTech):
return iTech
# 10. Bogenschiessen
iTech = gc.getInfoTypeForString('TECH_ARCHERY')
if not eTeam.isHasTech(iTech):
return iTech
# 11. Bergbau beeline
iTech = gc.getInfoTypeForString('TECH_MINING')
if not eTeam.isHasTech(iTech):
return iTech
# 12. Staatenbildung beeline
iTech = gc.getInfoTypeForString('TECH_STAATENBILDUNG')
if not eTeam.isHasTech(iTech):
return iTech
# 12. Binnenkolonisierung beeline
return gc.getInfoTypeForString('TECH_COLONIZATION')
# vor der EISENZEIT
if not eTeam.isHasTech(gc.getInfoTypeForString('TECH_IRON_WORKING')):
# Restliche Grundtechs und andere Basics nach Binnenkolonisierung:
# 1. Rad
iTech = gc.getInfoTypeForString('TECH_THE_WHEEL')
if not eTeam.isHasTech(iTech):
return iTech
# 2. Kriegsaxt
iTech = gc.getInfoTypeForString('TECH_BEWAFFNUNG')
if not eTeam.isHasTech(iTech):
return iTech
# 3. Gesteinsabbau
iTech = gc.getInfoTypeForString('TECH_STEINABBAU')
if not eTeam.isHasTech(iTech):
return iTech
# 4. Astronomie
iTech = gc.getInfoTypeForString('TECH_ASTRONOMIE')
if not eTeam.isHasTech(iTech):
return iTech
# 5. Zeremonielles Begraebnis
iTech = gc.getInfoTypeForString('TECH_CEREMONIAL')
if not eTeam.isHasTech(iTech):
return iTech
# 6. Zahlensysteme fuer Spezialisten
iTech = gc.getInfoTypeForString('TECH_ZAHLENSYSTEME')
if not eTeam.isHasTech(iTech):
# Zahlensysteme
if pPlayer.canResearch(iTech, false): return iTech
# 6a. Hieroglyphen
iTech = gc.getInfoTypeForString('TECH_WRITING2')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, false): return iTech
# 6b. Keilschrift
iTech = gc.getInfoTypeForString('TECH_WRITING')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, false): return iTech
# 7. Steinmetzkunst nur fuer Spezialisten
iTech = gc.getInfoTypeForString('TECH_MASONRY')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ZAHLENSYSTEME')):
return iTech
# 8. Geometrie fuer Spezialisten
iTech = gc.getInfoTypeForString('TECH_GEOMETRIE')
if pPlayer.canResearch(iTech, False):
return iTech
# 9. Fruchtbarkeitskult beeline ueber Sonnen- / Mondkalender
iTech = gc.getInfoTypeForString('TECH_FRUCHTBARKEIT')
if not eTeam.isHasTech(iTech):
return iTech
# Fuer Abu Simbel beimm Nubier
if iCiv == gc.getInfoTypeForString('CIVILIZATION_NUBIA'):
iTech = gc.getInfoTypeForString('TECH_TEMPELWIRTSCHAFT')
if not eTeam.isHasTech(iTech):
return iTech
# 10. Kurzbogen beeline ueber Speerspitzen
iTech = gc.getInfoTypeForString('TECH_ARCHERY2')
if not eTeam.isHasTech(iTech):
return iTech
# 11. Streitaxt mit Bronze
iTech = gc.getInfoTypeForString('TECH_BEWAFFNUNG2')
if not eTeam.isHasTech(iTech):
if pPlayer.getNumAvailableBonuses(iBronze) > 0:
return iTech
# 12. Wein, wenn Trauben vorhanden
iTech = gc.getInfoTypeForString('TECH_WEINBAU')
if not eTeam.isHasTech(iTech):
if pPlayer.countOwnedBonuses(gc.getInfoTypeForString('BONUS_GRAPES')) > 0:
return iTech
# 13. Kultivierung
iTech = gc.getInfoTypeForString('TECH_KULTIVIERUNG')
if not eTeam.isHasTech(iTech):
return iTech
# 14. Arithmetik beeline nach Seidenstrasse
iTech = gc.getInfoTypeForString('TECH_ARITHMETIK')
if not eTeam.isHasTech(iTech):
if CyGame().getProjectCreatedCount(gc.getInfoTypeForString('PROJECT_SILKROAD')) > 0:
return iTech
# 15.Codex / Indra
# bis Versklavung freies Techen
iTech = gc.getInfoTypeForString('TECH_CODEX')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
# --- Eisenzeit ---
# Camels / Kamele
iTech = gc.getInfoTypeForString('TECH_KAMELZUCHT')
if not eTeam.isHasTech(iTech):
if pPlayer.getNumAvailableBonuses(iCamel) > 0:
return iTech
# Eledome
iTech = gc.getInfoTypeForString('TECH_ELEFANTENZUCHT')
if not eTeam.isHasTech(iTech):
if pPlayer.getNumAvailableBonuses(iEles) > 0:
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_THE_WHEEL3')
if not eTeam.isHasTech(iTech):
if pPlayer.getNumAvailableBonuses(iHorse) > 0:
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_SCHIFFSBAU')
if not eTeam.isHasTech(iTech):
if pPlayer.countNumCoastalCities() > 0:
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_KUESTE')
if not eTeam.isHasTech(iTech):
if pPlayer.countNumCoastalCities() > 3:
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_KARTEN')):
if pPlayer.canResearch(iTech, False):
return iTech
# Heroen
iTech = gc.getInfoTypeForString('TECH_GLADIATOR')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
# Kriegstechs
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_IRON_WORKING')):
iTech = gc.getInfoTypeForString('TECH_BELAGERUNG')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
if eTeam.getAtWarCount(True) >= 1:
return iTech
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_MECHANIK')):
iTech = gc.getInfoTypeForString('TECH_CATAPULT')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
if eTeam.getAtWarCount(True) >= 1:
return iTech
# Wissen
iTech = gc.getInfoTypeForString('TECH_LIBRARY')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
if iCiv == gc.getInfoTypeForString('CIVILIZATION_ROME') or iCiv == gc.getInfoTypeForString('CIVILIZATION_ETRUSCANS') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_GREECE') or iCiv == gc.getInfoTypeForString('CIVILIZATION_ATHENS') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_THEBAI') or iCiv == gc.getInfoTypeForString('CIVILIZATION_SPARTA') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_MACEDONIA') or iCiv == gc.getInfoTypeForString('CIVILIZATION_HETHIT') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_LYDIA') or iCiv == gc.getInfoTypeForString('CIVILIZATION_PHON') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_PERSIA') or iCiv == gc.getInfoTypeForString('CIVILIZATION_BABYLON') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_SUMERIA') or iCiv == gc.getInfoTypeForString('CIVILIZATION_ASSYRIA') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_CARTHAGE') or iCiv == gc.getInfoTypeForString('CIVILIZATION_EGYPT') \
or iCiv == gc.getInfoTypeForString('CIVILIZATION_IBERER'):
return iTech
# Wunder
# Mauern von Babylon
if iCiv == gc.getInfoTypeForString('CIVILIZATION_BABYLON'):
iTech = gc.getInfoTypeForString('TECH_CONSTRUCTION')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_LIBRARY')):
return iTech
# Artemistempel
if iCiv == gc.getInfoTypeForString('CIVILIZATION_LYDIA'):
iTech = gc.getInfoTypeForString('TECH_BAUKUNST')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_LIBRARY')):
return iTech
# Ninive
if iCiv == gc.getInfoTypeForString('CIVILIZATION_ASSYRIA'):
iTech = gc.getInfoTypeForString('TECH_PHILOSOPHY')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_CONSTRUCTION')):
return iTech
# 1000 Saeulen
if iCiv == gc.getInfoTypeForString('CIVILIZATION_PERSIA'):
iTech = gc.getInfoTypeForString('TECH_MOSAIK')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_KUNST')):
return iTech
# CIV - Trennung: zB Religionen
if iCiv == gc.getInfoTypeForString('CIVILIZATION_CELT') or iCiv == gc.getInfoTypeForString('CIVILIZATION_GALLIEN'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_CELTIC')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ENSLAVEMENT')):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_GERMANEN'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_NORDIC')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ENSLAVEMENT')):
return iTech
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_GREEK')):
iTech = gc.getInfoTypeForString('TECH_RELIGION_GREEK')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ENSLAVEMENT')):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_PHON'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_PHOEN')
if not eTeam.isHasTech(iTech):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_PERSIA') or iCiv == gc.getInfoTypeForString('CIVILIZATION_ASSYRIA'):
iTech = gc.getInfoTypeForString('TECH_DUALISMUS')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ENSLAVEMENT')):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_INDIA'):
iTech = gc.getInfoTypeForString('TECH_MEDITATION')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_CODE_OF_LAWS')):
return iTech
iTech = gc.getInfoTypeForString('TECH_ASKESE')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
if iCiv == gc.getInfoTypeForString('CIVILIZATION_ROME'):
iTech = gc.getInfoTypeForString('TECH_RELIGION_ROME')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ALPHABET')):
return iTech
# Judentum
if iCiv == gc.getInfoTypeForString('CIVILIZATION_ISRAEL'):
iTech = gc.getInfoTypeForString('TECH_MONOTHEISM')
if not eTeam.isHasTech(iTech):
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_COLONIZATION2')):
return iTech
# Voelkerspezifisches Wissen
# Perser
if iCiv == gc.getInfoTypeForString('CIVILIZATION_PERSIA'):
iTech = gc.getInfoTypeForString('TECH_PERSIAN_ROAD')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
# Griechen
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_GREEK')):
iTech = gc.getInfoTypeForString('TECH_MANTIK')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_GREEK')):
iTech = gc.getInfoTypeForString('TECH_PHALANX')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
# Römer
if eTeam.isHasTech(gc.getInfoTypeForString('TECH_ROMAN')):
iTech = gc.getInfoTypeForString('TECH_CORVUS')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_MANIPEL')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_PILUM')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_MARIAN_REFORM')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_CALENDAR2')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_ROMAN_ROADS')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_FEUERWEHR')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
iTech = gc.getInfoTypeForString('TECH_LORICA_SEGMENTATA')
if not eTeam.isHasTech(iTech):
if pPlayer.canResearch(iTech, False):
return iTech
return TechTypes.NO_TECH