###civil war - custom event
def canTriggerCivilWar(argsList):
kTriggeredData = argsList[0]
sCiv = "CIVILIZATION_ROME"
iYear = -3800
player = gc.getPlayer(kTriggeredData.ePlayer)
if not (player.getCivilizationType() == gc.getInfoTypeForString(sCiv)):
return False
if gc.getMAX_CIV_PLAYERS ()==CyGame().countCivPlayersAlive ():
return False
if iYear == CyGame().getTurnYear(CyGame().getGameTurn()):
return True
return False
def applyCivilWar(argsList):
kTriggeredData = argsList[1]
iX = 39 ## if coordinates are not important/should not be applied
iY = 51 ## then set both to 0
East = True # True for everything to the east, False for west
North = False # True for everything to the north, False for south
###if coordinates should not be applied, let both values stay True
###cities which should change the owner; if this should not be applied,
###change it to Cities = []
lCities = ["Byzantium","TXT_KEY_CITY_NAME_ANTIUM","TXT_KEY_CITY_NAME_CUMAE","TXT_KEY_CITY_NAME_HADRUMETUM","TXT_KEY_CITY_NAME_HIPPO","TXT_KEY_CITY_NAME_KERKOUANE","TXT_KEY_CITY_NAME_LEPTIS","TXT_KEY_CITY_NAME_THAPSUS","TXT_KEY_CITY_NAME_SICCA","TXT_KEY_CITY_NAME_THAENAE","TXT_KEY_CITY_NAME_TACAPE","TXT_KEY_CITY_NAME_SABRATHA","TXT_KEY_CITY_NAME_OEA","TXT_KEY_CITY_NAME_MALACA","TXT_KEY_CITY_NAME_ABDERA","TXT_KEY_CITY_NAME_SEXI","TXT_KEY_CITY_NAME_BARIA","TXT_KEY_CITY_NAME_CARMONA","TXT_KEY_CITY_NAME_ONOBA","TXT_KEY_CITY_NAME_CARTHAGO_NOVO","TXT_KEY_CITY_NAME_IBROSSIM","TXT_KEY_CITY_NAME_SARIM_BATIM","TXT_KEY_CITY_NAME_TIPASA","TXT_KEY_CITY_NAME_IOL","TXT_KEY_CITY_NAME_SIGA","TXT_KEY_CITY_NAME_RUSADDIR","TXT_KEY_CITY_NAME_TINGIS","TXT_KEY_CITY_NAME_LIXUS","TXT_KEY_CITY_NAME_MOGADOR","TXT_KEY_CITY_NAME_ZIS","TXT_KEY_CITY_NAME_MOTYA","TXT_KEY_CITY_NAME_SOLUS","TXT_KEY_CITY_NAME_LILYBAEUM","TXT_KEY_CITY_NAME_KARALIS","TXT_KEY_CITY_NAME_NORA","TXT_KEY_CITY_NAME_BITHIA","TXT_KEY_CITY_NAME_SULCIS","TXT_KEY_CITY_NAME_THARROS","TXT_KEY_CITY_NAME_OLBIA","TXT_KEY_CITY_NAME_MELITA","TXT_KEY_CITY_NAME_KOSSYRA",TXT_KEY_CITY_NAME_ZAMA","TXT_KEY_CITY_NAME_BIBRACTE","TXT_KEY_CITY_NAME_VIENNE","TXT_KEY_CITY_NAME_TOLOSA","TXT_KEY_CITY_NAME_GERGOVIA","TXT_KEY_CITY_NAME_CAMULODUNUM","TXT_KEY_CITY_NAME_VERLAMION","TXT_KEY_CITY_NAME_DURNOVARIA","TXT_KEY_CITY_NAME_ISCA","TXT_KEY_CITY_NAME_DUROCORTORUM","TXT_KEY_CITY_NAME_BAGACUM","TXT_KEY_CITY_NAME_NEMETOCENNA","TXT_KEY_CITY_NAME_CALLEVA","TXT_KEY_CITY_NAME_VENTA","TXT_KEY_CITY_NAME_ISURIUM","TXT_KEY_CITY_NAME_RATAE","TXT_KEY_CITY_NAME_LUTETIA","TXT_KEY_CITY_NAME_ENTREMONT","TXT_KEY_CITY_NAME_BURDIGALA","TXT_KEY_CITY_NAME_NEMAUSUS","TXT_KEY_CITY_NAME_SAMAROBRIVA","TXT_KEY_CITY_NAME_BRIXIA","TXT_KEY_CITY_NAME_MEDIOLANUM","TXT_KEY_CITY_NAME_CREMONA","TXT_KEY_CITY_NAME_TAURASIA","TXT_KEY_CITY_NAME_SINIGAGLIA","TXT_KEY_CITY_NAME_NOVIOMAGUS","TXT_KEY_CITY_NAME_DUROVERNUM","TXT_KEY_CITY_NAME_LUGUVALIO","TXT_KEY_CITY_NAME_LINDINIS","TXT_KEY_CITY_NAME_OKILIS","TXT_KEY_CITY_NAME_NUMANTIA","TXT_KEY_CITY_NAME_TIERNES","TXT_KEY_CITY_NAME_BOTORRITA","TXT_KEY_CITY_NAME_MORIDUNUM","TXT_KEY_CITY_NAME_TARA","TXT_KEY_CITY_NAME_EBLANA","TXT_KEY_CITY_NAME_ALESIA","TXT_KEY_CITY_NAME_ANDEMATUNUM","TXT_KEY_CITY_NAME_UBIORUM","TXT_KEY_CITY_NAME_GENEVA","TXT_KEY_CITY_NAME_VINDOBONA","TXT_KEY_CITY_NAME_PISONIUM","TXT_KEY_CITY_NAME_ACQUINCUM","TXT_KEY_CITY_NAME_TYLIS","TXT_KEY_CITY_NAME_ANCYRA","Eburacum","Deva","Samarobriva","Tara","Corinivm Dobvnnorvm","Lindinis","Venta Icenorvm","Glevvm","Venta Belgarvm","Nova Londinium","Nova Eburacum","Nova Deva","Nova Samarobriva","Nova Tara","Nova Corinivm Dobvnnorvm","Nova Lindinis","Nova Venta Icenorvm","Nova Glevvm","Nova Venta Belgarvm","TXT_KEY_CITY_NAME_THEBES","TXT_KEY_CITY_NAME_MEMPHIS","TXT_KEY_CITY_NAME_HELIOPOLIS","TXT_KEY_CITY_NAME_ELEPHANTINE","TXT_KEY_CITY_NAME_ALEXANDRIA","TXT_KEY_CITY_NAME_PIRAMESSES","TXT_KEY_CITY_NAME_GIZA","TXT_KEY_CITY_NAME_BYBLOS","TXT_KEY_CITY_NAME_AKHETATEN","TXT_KEY_CITY_NAME_HIERACONPOLIS","TXT_KEY_CITY_NAME_ABYDOS","TXT_KEY_CITY_NAME_ASYUT","TXT_KEY_CITY_NAME_AVARIS","TXT_KEY_CITY_NAME_LISHT","TXT_KEY_CITY_NAME_BUTO","TXT_KEY_CITY_NAME_EDFU","TXT_KEY_CITY_NAME_PITHOM","TXT_KEY_CITY_NAME_BUSIRIS","TXT_KEY_CITY_NAME_KAHUN","TXT_KEY_CITY_NAME_ATHRIBIS","TXT_KEY_CITY_NAME_MENDES","TXT_KEY_CITY_NAME_ELASHMUNEIN","TXT_KEY_CITY_NAME_TANIS","TXT_KEY_CITY_NAME_BUBASTIS","TXT_KEY_CITY_NAME_THIS","TXT_KEY_CITY_NAME_ORYX","TXT_KEY_CITY_NAME_SEBENNYTUS","TXT_KEY_CITY_NAME_AKHMIN","TXT_KEY_CITY_NAME_KARNAK","TXT_KEY_CITY_NAME_LUXOR","TXT_KEY_CITY_NAME_ELKAB","TXT_KEY_CITY_NAME_ARMANT","TXT_KEY_CITY_NAME_BALAT","TXT_KEY_CITY_NAME_ELLAHUN","TXT_KEY_CITY_NAME_GHURAB","TXT_KEY_CITY_NAME_HAWARA","TXT_KEY_CITY_NAME_DASHUR","TXT_KEY_CITY_NAME_RAQOTE","TXT_KEY_CITY_NAME_DAMANHUR","TXT_KEY_CITY_NAME_MERIMDE","TXT_KEY_CITY_NAME_ABUSIR","TXT_KEY_CITY_NAME_HERAKLEOPOLIS","TXT_KEY_CITY_NAME_AKORIS","TXT_KEY_CITY_NAME_BENIHASAN","TXT_KEY_CITY_NAME_TASA","TXT_KEY_CITY_NAME_BADARI","TXT_KEY_CITY_NAME_HERMOPOLIS","TXT_KEY_CITY_NAME_AMRAH","TXT_KEY_CITY_NAME_NEGADE","TXT_KEY_CITY_NAME_KOPTOS","TXT_KEY_CITY_NAME_HERMONTHIS","TXT_KEY_CITY_NAME_OMBOS","TXT_KEY_CITY_NAME_ANIBA","TXT_KEY_CITY_NAME_SOLEB","TXT_KEY_CITY_NAME_SEMNA","TXT_KEY_CITY_NAME_AMARA","TXT_KEY_CITY_NAME_ATHENS","TXT_KEY_CITY_NAME_SPARTA","TXT_KEY_CITY_NAME_CORINTH","TXT_KEY_CITY_NAME_THEBES","TXT_KEY_CITY_NAME_ARGOS","TXT_KEY_CITY_NAME_KNOSSOS","TXT_KEY_CITY_NAME_MYCENAE","TXT_KEY_CITY_NAME_PHARSALOS","TXT_KEY_CITY_NAME_EPHESUS","TXT_KEY_CITY_NAME_HALICARNASSUS","TXT_KEY_CITY_NAME_RHODES","TXT_KEY_CITY_NAME_ERETRIA","TXT_KEY_CITY_NAME_PERGAMON","TXT_KEY_CITY_NAME_MILETOS","TXT_KEY_CITY_NAME_MEGARA","TXT_KEY_CITY_NAME_PHOCAEA","TXT_KEY_CITY_NAME_SICYON","TXT_KEY_CITY_NAME_TIRYNS","TXT_KEY_CITY_NAME_SAMOS","TXT_KEY_CITY_NAME_MYTILENE","TXT_KEY_CITY_NAME_CHIOS","TXT_KEY_CITY_NAME_PAROS","TXT_KEY_CITY_NAME_TEGEA","TXT_KEY_CITY_NAME_ELIS","TXT_KEY_CITY_NAME_SYRACUSE","TXT_KEY_CITY_NAME_HERAKLEIA","TXT_KEY_CITY_NAME_GORTYN","TXT_KEY_CITY_NAME_CHALKIS","TXT_KEY_CITY_NAME_PYLOS","TXT_KEY_CITY_NAME_PELLA","TXT_KEY_CITY_NAME_NAXOS","TXT_KEY_CITY_NAME_SICYON","TXT_KEY_CITY_NAME_SMYRNA","TXT_KEY_CITY_NAME_LARISSA","TXT_KEY_CITY_NAME_APOLLONIA","TXT_KEY_CITY_NAME_MESSENE","TXT_KEY_CITY_NAME_ORCHOMENOS","TXT_KEY_CITY_NAME_AMBRACIA","TXT_KEY_CITY_NAME_KOS","TXT_KEY_CITY_NAME_KNIDOS","TXT_KEY_CITY_NAME_AMPHIPOLIS","TXT_KEY_CITY_NAME_PATRAS","TXT_KEY_CITY_NAME_LAMIA","TXT_KEY_CITY_NAME_NAFPLION","TXT_KEY_CITY_NAME_APOLYTON","TXT_KEY_CITY_NAME_CUMAE","TXT_KEY_CITY_NAME_NEAPOLIS","TXT_KEY_CITY_NAME_RAVENNA","TXT_KEY_CITY_NAME_ARRETIUM","TXT_KEY_CITY_NAME_MEDIOLANUM","TXT_KEY_CITY_NAME_ARPINUM","TXT_KEY_CITY_NAME_CIRCEI","TXT_KEY_CITY_NAME_SETIA","TXT_KEY_CITY_NAME_SATRICUM","TXT_KEY_CITY_NAME_ARDEA","TXT_KEY_CITY_NAME_OSTIA","TXT_KEY_CITY_NAME_VELITRAE","TXT_KEY_CITY_NAME_VIROCONIUM","TXT_KEY_CITY_NAME_TARENTUM","TXT_KEY_CITY_NAME_BRUNDISIUM","TXT_KEY_CITY_NAME_CAESARAUGUSTA","TXT_KEY_CITY_NAME_CAESAREA","TXT_KEY_CITY_NAME_PALMYRA","TXT_KEY_CITY_NAME_SIGNIA","TXT_KEY_CITY_NAME_AQUILEIA","TXT_KEY_CITY_NAME_CLUSIUM","TXT_KEY_CITY_NAME_SUTRIUM","TXT_KEY_CITY_NAME_CREMONA","TXT_KEY_CITY_NAME_PLACENTIA","TXT_KEY_CITY_NAME_HISPALIS","TXT_KEY_CITY_NAME_ARTAXATA","TXT_KEY_CITY_NAME_AURELIANORUM""TXT_KEY_CITY_NAME_NICOPOLIS","TXT_KEY_CITY_NAME_LONDINIUM","TXT_KEY_CITY_NAME_EBURACUM","TXT_KEY_CITY_NAME_GORDION","TXT_KEY_CITY_NAME_AGRIPPINA","TXT_KEY_CITY_NAME_LUGDUNUM","TXT_KEY_CITY_NAME_VERONA","TXT_KEY_CITY_NAME_CORFINIUM","TXT_KEY_CITY_NAME_TREVERI","TXT_KEY_CITY_NAME_SIRMIUM","TXT_KEY_CITY_NAME_AUGUSTADORUM","TXT_KEY_CITY_NAME_BAGACUM","TXT_KEY_CITY_NAME_LAURIACUM","TXT_KEY_CITY_NAME_TEURNIA","TXT_KEY_CITY_NAME_CURIA","TXT_KEY_CITY_NAME_FREGELLAE","TXT_KEY_CITY_NAME_ALBAFUCENS","TXT_KEY_CITY_NAME_SORA","TXT_KEY_CITY_NAME_INTERRAMA","TXT_KEY_CITY_NAME_SUESSA","TXT_KEY_CITY_NAME_SATICULA","TXT_KEY_CITY_NAME_LUCERIA",TXT_KEY_CITY_NAME_ARMINIUM","TXT_KEY_CITY_NAME_SENAGALLICA","TXT_KEY_CITY_NAME_CASTRUMNOVUM","TXT_KEY_CITY_NAME_HADRIA","Lugdunum","Moguntiacum","Damme","Luvavum","Lovosice","Aquincum","Vicus Marcomannii","Vicus Gothi","Bordesholm","Domus Dulcis","Vicus Venedae","Nova Trier","Nova Batavodurum","Nova Lugdunum","Nova Moguntiacum","Nova Damme","Nova Luvavum","Nova Lovosice","Nova Aquincum","Nova Vicus Marcomannii","Nova Vicus Gothi","Nova Bordesholm","Nova Domus Dulcis","Nova Vicus Venedae","Scone","Orchades","Arbroath","Montrose","Brechin","Kirriemuir","Forfar","Carnoustie","Monifieth","Aberfeldy","Ballinluig","Blair Atholl","Dunkeld","Logierait","Pitlochry","Weem","New Scone","New Orchades","New Arbroath","New Montrose","New Brechin","New Kirriemuir","New Forfar","New Carnoustie","New Monifieth","New Aberfeldy","New Ballinluig","New Blair Atholl","New Dunkeld","New Logierait","New Pitlochry","New Weem","TXT_KEY_CITY_NAME_CHEROKEE","TXT_KEY_CITY_NAME_ANASAZI","TXT_KEY_CITY_NAME_TEOIHUACAN","TXT_KEY_CITY_NAME_OLMEC","TXT_KEY_CITY_NAME_ZAPOTEC","TXT_KEY_CITY_NAME_CHINOOK","TXT_KEY_CITY_NAME_APACHE","TXT_KEY_CITY_NAME_CHEHALIS","TXT_KEY_CITY_NAME_ILLINOIS","TXT_KEY_CITY_NAME_NAVAJO","TXT_KEY_CITY_NAME_CARIB","TXT_KEY_CITY_NAME_SAXON","TXT_KEY_CITY_NAME_VANDAL","TXT_KEY_CITY_NAME_GOTH","TXT_KEY_CITY_NAME_ANGLE","TXT_KEY_CITY_NAME_MAGYAR","TXT_KEY_CITY_NAME_KHAZAK","TXT_KEY_CITY_NAME_BULGAR","TXT_KEY_CITY_NAME_ALEMANNI","TXT_KEY_CITY_NAME_BURGUNDIAN","TXT_KEY_CITY_NAME_GEPID","TXT_KEY_CITY_NAME_HUN","TXT_KEY_CITY_NAME_JUTE","TXT_KEY_CITY_NAME_PHEONICIAN","TXT_KEY_CITY_NAME_ESTRUSCAN","TXT_KEY_CITY_NAME_THRACIAN","TXT_KEY_CITY_NAME_PHRYGIAN","TXT_KEY_CITY_NAME_GAUL","TXT_KEY_CITY_NAME_MINOAN","TXT_KEY_CITY_NAME_MYCENIAN","TXT_KEY_CITY_NAME_CIMMERIAN","TXT_KEY_CITY_NAME_LIGURIAN","TXT_KEY_CITY_NAME_NUMIDIAN","TXT_KEY_CITY_NAME_SARMATIAN","TXT_KEY_CITY_NAME_SCYTHIAN","TXT_KEY_CITY_NAME_VISIGOTH","TXT_KEY_CITY_NAME_ASSYRIAN","TXT_KEY_CITY_NAME_HITTITE","TXT_KEY_CITY_NAME_HARAPPAN","TXT_KEY_CITY_NAME_MAURYAN","TXT_KEY_CITY_NAME_PARTHIAN","TXT_KEY_CITY_NAME_HARAPPAN","TXT_KEY_CITY_NAME_NUBIAN","TXT_KEY_CITY_NAME_BACTRIAN","TXT_KEY_CITY_NAME_CIRCASSIAN","TXT_KEY_CITY_NAME_CUMAN","TXT_KEY_CITY_NAME_HURRIAN","TXT_KEY_CITY_NAME_KASSITE","TXT_KEY_CITY_NAME_BANTU","TXT_KEY_CITY_NAME_KHOISAN","TXT_KEY_CITY_NAME_LIBYAN","TXT_KEY_CITY_NAME_SHANGIAN","TXT_KEY_CITY_NAME_YAYOI","TXT_KEY_CITY_NAME_ZHOU","TXT_KEY_CITY_NAME_AINU","TXT_KEY_CITY_NAME_POLYNESIAN","TXT_KEY_CITY_NAME_ARYAN","TXT_KEY_CITY_NAME_AVAR","TXT_KEY_CITY_NAME_GHUZZ","TXT_KEY_CITY_NAME_HSUNGNU","TXT_KEY_CITY_NAME_KUSHANS","TXT_KEY_CITY_NAME_YUECHI","TXT_KEY_CITY_NAME_SAKAE","TXT_KEY_CITY_NAME_UZBEK","TXT_KEY_CITY_NAME_TARTAR","Kydonia","Rhodes","Salamis","Salona","Halicarnassus","permagum","Nicomedia","Pergagum",Tarsa"]
lNewNames = ["TXT_KEY_CITY_NAME_CONSTANTINOPLE"]
sNewCiv = "CIVILIZATION_BYZANTIUM"
sNewLeader = "LEADER_JUSTINIAN"
DeclareWar = True
#### you should not have to change anything after this point !##
###find ID for new civ start
iNewID = -1
iMaxCiv = gc.getMAX_CIV_PLAYERS ()
for iID in range (iMaxCiv):
pTestPlayer = gc.getPlayer(iID)
if not pTestPlayer.isAlive():
iNewID = iID
break
else:
return False
###find ID for new civ end
### add the player to the game
CyGame().addPlayer(iNewID,gc.getInfoTypeForString(sNewLeader),gc.getInfoTypeForString(sNewCiv))
pNewPlayer = gc.getPlayer(iNewID)
pNewTeam = gc.getTeam(pNewPlayer.getTeam())
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
pTriggerTeam=gc.getTeam(pPlayer.getTeam())
###give new team open borders tech
###easier to handle over units with that solution
iMaxTech = gc.getNumTechInfos ()
for OBtech in range (iMaxTech):
pTech = gc.getTechInfo(OBtech)
if pTech.isOpenBordersTrading ():
pNewTeam.setHasTech(OBtech,True,iNewID,False,False)
break
pNewTeam.signOpenBorders(pTriggerTeam.getID())
###handle over cities
(loopCity, iter) = pPlayer.firstCity(false)
while(loopCity):
iCityX = loopCity.getX()
iCityY = loopCity.getY()
if ((iCityX >=iX and East) and (iCityY >=iY and North)) or ((iCityX >=iX and East) and (iCityY <=iY and not North))or ((iCityX <=iX and not East) and (iCityY <=iY and not North)) or ((iCityX <=iX and not East) and (iCityY >=iY and North)):
if len(lCities)>0:
if (loopCity.getNameKey () in lCities) or (loopCity.getName () in lCities):
pNewPlayer.acquireCity(loopCity,True,False)
iNumCities = pNewPlayer.getNumCities()-1
NewCity = pNewPlayer.getCity(iNumCities)
if len(lNewNames)>iNumCities:
NewName = lNewNames[iNumCities]
lText = CyTranslator().getText(NewName,())
NewCity.setName(lText,False)
else:
pNewPlayer.acquireCity(loopCity,True,False)
iNumCities = pNewPlayer.getNumCities()-1
NewCity = pNewPlayer.getCity(iNumCities)
if len(lNewNames)>iNumCities:
NewName = lNewNames[iNumCities]
lText = CyTranslator().getText(NewName,())
NewCity.setName(lText,False)
pPlot = CyMap().plot(iCityX,iCityY)
iMaxNumUnits = pPlot.getNumUnits ()
for iUnits in range(iMaxNumUnits,-1,-1):
pUnit = pPlot.getUnit(iUnits)
pUnit.doCommand(CommandTypes.COMMAND_GIFT,-1,-1)
(loopCity, iter) = pPlayer.nextCity(iter, false)
###remove open borders tech
###just in case, you never know
pNewTeam.setHasTech(OBtech,False,iNewID,False,False)
###add techs to new player
iMaxTech = gc.getNumTechInfos ()
for counter in range (iMaxTech):
if ((pTriggerTeam.isHasTech(counter)==true)and ((pNewTeam.isHasTech(counter)==false))):
pNewTeam.setHasTech(counter,true,iNewID,false,false)
###declare war
if DeclareWar:
pNewTeam.declareWar(pTriggerTeam.getID(),False,WarPlanTypes.WARPLAN_LIMITED)
return True