@Monaldinio:
Du hattest doch Interesse daran, die Befreiung zu übernehmen - hier, bitte sehr:
Der Code für CvEventManager, bei onCityAcquiredAndKept:
PHP-Code:
###Toter original owner begin###
iX=pCity.getX()
iY=pCity.getY()
iOriginalOwner = pCity.getOriginalOwner ()
pOriginalOwner = gc.getPlayer(iOriginalOwner)
if not pOriginalOwner.isAlive():
if gc.getMAX_CIV_PLAYERS ()>CyGame().countCivPlayersAlive ():
OriginalName = pOriginalOwner.getName ()
pPlayer = gc.getPlayer(iPlayer)
if pPlayer.isHuman():
iCity = pCity.getID()
CyCamera().JustLookAtPlot( CyMap().plot(iX, iY))
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
popupInfo.setText(CyTranslator().getText("TXT_KEY_POPUP_FREE_CITY",(pCity.getName(), OriginalName )))
popupInfo.setData1(iPlayer)
popupInfo.setData2(iCity)
popupInfo.setData3(iOriginalOwner)
popupInfo.setOnClickedPythonCallback("FreeCity")
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_STADT_BEFREIEN", ()), "")
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_POPUP_STADT_NICHT_BEFREIEN", ()), "")
popupInfo.addPopup(iPlayer)
if not pPlayer.isHuman():
pOriginalteam = gc.getTeam(iOriginalOwner)
iOriginalTeam = pOriginalteam.getID()
pPlayerTeam = gc.getTeam(iPlayer)
iChance = gc.getGame().getSorenRandNum(3, "Partisan event placement")###Die Bedingungen ab hier müssten natürlich angepasst werden. Damit wird festgelegt, nach welchen Bedingungen die KI eine eroberte Stadt befreit. Bei mit ist das eine Zufallszahl +/-Modifikatoren, wenn die Summe 5 übersteigt, wird befreit
traits = ("TRAIT_STADTSTAAT_PRODUCTIVE", "TRAIT_STADTSTAAT_MILITARY", "TRAIT_STADTSTAAT_ARTISTIC", "TRAIT_STADTSTAAT_MERKANTILE", "TRAIT_STADTSTAAT_WISE","TRAIT_STADTSTAAT_MARITIME")
if any( ( pOriginalOwner.hasTrait( gc.getInfoTypeForString(trait) ) for trait in traits ) ):
iChance = iChance +2
if pPlayerTeam.isAtWar (iOriginalTeam):
iChange = iChance -5
if pPlayer.hasTrait(gc.getInfoTypeForString("TRAIT_DIPLOMATIC")):
iChance = iChance +1
if pPlayerTeam.isHasTech(gc.getInfoTypeForString("TECH_FEUDALISM")):
iChance = iChance +1
if pPlayerTeam.isHasTech(gc.getInfoTypeForString("TECH_POLITICS")):
iChance = iChance +1
if pPlayer.isCivic(gc.getInfoTypeForString("CIVIC_BUREAUCRACY")):
iChance = iChance +1
if pPlayer.isCivic(gc.getInfoTypeForString("CIVIC_STATE_PROPERTY")):
iChance = iChance -2
pPlayerCapital = pPlayer.getCapitalCity()
iCapturedArea = pCity.area().getID
iCapitalArea = pPlayerCapital.area().getID
if not (iCapturedArea == iCapitalArea):
iChance = iChance +1
if iChance > 5:
pOriginalOwner.acquireCity(pCity,False,True)
pPlayerTeam.assignVassal(pOriginalteam.getID(), false)
pOriginalOwner.AI_changeAttitudeExtra(iPlayer,5)
###Toter original Owner end###
Aus der Datei CvScreensInterface
PHP-Code:
############Neu Hauptstadt befreien
def FreeCity(argsList):
iButtonId = argsList[0]
iData1 = argsList[1]
iData2 = argsList[2]
iData3 = argsList[3]
iData4 = argsList[4]
szText = argsList[5]
bOption1 = argsList[6]
bOption2 = argsList[7]
if iButtonId == 0:
pOriginalOwner = gc.getPlayer(iData3)
pPlayer = gc.getPlayer(iData1)
pCity = pPlayer.getCity(iData2)
pOriginalOwner.acquireCity(pCity,False,True)
pPlayerTeam = gc.getTeam(iData1)
pOriginalteam = gc.getTeam(iData3)
pPlayerTeam.assignVassal(pOriginalteam.getID(), false)
pOriginalOwner.AI_changeAttitudeExtra(iData1,5)
CyInterface().addMessage(iPlayer,False,15,CyTranslator().getText("TXT_KEY_CITY_BEFREIT",(pCity.getName(),pOriginalOwner.getName())),'',0,'Art/Interface/Buttons/General/happy_person.dds',ColorTypes(gc.getInfoTypeForString("COLOR_GREEN")), iX, iY, True,True)
#############Ende---------------------------------
Zusätzlich musst du noch am Anfang der Datei definieren:
PHP-Code:
gc = CyGlobalContext()
Und hier noch die (deutschen) Texte, die ich verwende:
PHP-Code:
<TEXT>
<Tag>TXT_KEY_POPUP_FREE_CITY</Tag>
<English>A slave revolt has taken place in the %s1_civ_adjective city of %s2_city!</English>
<French>Une révolte d'esclaves a eu lieu dans la ville %s1:2_civ_adjective de %s2_city !</French>
<German>Die Stadt %s2 gehörte einst zur großen Kultur von %s1 . Anhänger der alten Ordnung bitten, dass Ihr ihrer Provinz mehr Autonomie innerhalb Eures Reiches gewährt. Seid Ihr dazu bereit?</German>
<Italian>Una rivolta di schiavi è scoppiata nella città %s1_civ_adjective di %s2_city!</Italian>
<Spanish>¡Una rebelión de esclavos ha tenido lugar en la ciudad %s1:2_civ_adjective de %s2_city!</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_POPUP_STADT_NICHT_BEFREIEN</Tag>
<English>A slave revolt has taken place in the %s1_civ_adjective city of %s2_city!</English>
<French>Une révolte d'esclaves a eu lieu dans la ville %s1:2_civ_adjective de %s2_city !</French>
<German>Wie kämen wir dazu? Hier bestimme nur ich!</German>
<Italian>Una rivolta di schiavi è scoppiata nella città %s1_civ_adjective di %s2_city!</Italian>
<Spanish>¡Una rebelión de esclavos ha tenido lugar en la ciudad %s1:2_civ_adjective de %s2_city!</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_POPUP_STADT_BEFREIEN</Tag>
<English>A slave revolt has taken place in the %s1_civ_adjective city of %s2_city!</English>
<French>Une révolte d'esclaves a eu lieu dans la ville %s1:2_civ_adjective de %s2_city !</French>
<German>Gut, aber sie müssen uns den Treueeid schwören! (Rückkehr der Zivilisation als Euer Vasall)</German>
<Italian>Una rivolta di schiavi è scoppiata nella città %s1_civ_adjective di %s2_city!</Italian>
<Spanish>¡Una rebelión de esclavos ha tenido lugar en la ciudad %s1:2_civ_adjective de %s2_city!</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_CITY_BEFREIT</Tag>
<English>A slave revolt has taken place in the %s1_civ_adjective city of %s2_city!</English>
<French>Une révolte d'esclaves a eu lieu dans la ville %s1:2_civ_adjective de %s2_city !</French>
<German>Die Stadt %s1 wurde befreit und wieder ihrem Herrscher %s2 übergeben!</German>
<Italian>Una rivolta di schiavi è scoppiata nella città %s1_civ_adjective di %s2_city!</Italian>
<Spanish>¡Una rebelión de esclavos ha tenido lugar en la ciudad %s1:2_civ_adjective de %s2_city!</Spanish>
</TEXT>
Wer mag, kann es benutzen.