Dynamic Byzantium

Baldyr

"Hit It"
Joined
Dec 5, 2009
Messages
5,530
Location
Sweden
This is a small mod-scenario enabling the AI only controlled Byzantine Civilization to spawn in the 3000 BC scenario for the RFC Epic/Marathon v2.1 mod-mod. It will not work for the official release for Rhye's and Fall of Civilization, so don't even try it.

Installation


To install, unpack the .py files contained in the attached .zip archive to the ...\Sid Meier's Civilization 4\Beyond the Sword\Mods\RFCMarathon\Assets\Python\ folder.

Note that you need to replace the default version of the CvRFCEventHandler.py file with the one supplied with this mod-scenario. Also note that installing this mod-scenario will install the PyScenario scenario scripting application to your mod. To disable both PyScenario and the mod-scenario permanently, simply replace the CvRFCEventHandler.py with the original version. (Installing any future release of the RFC Epic/Marathon mod-mod will also do the trick.)

Description

The mod-scenario is actually a PyScenario script that will check if the Roman Civilization is alive during the 4th century AD and has negative Stability. Then, and only then, will the Empire be split into a Western and a Eastern part. Only Roman cities will initially flip to the newly born Byzantine Civilization - and if plausible the capital will be Constantinople.

Note that if the Celtic Civilization is still around at this point it will "collapse" into independent cities in order to make room for the new Civilization. (The two actually share the player and team instances in the game, so both can't exist in the same scenario.)

A second flip in the 5th century will convert any minor cities in the Mediterranean region to the Byzantines - and if the original Roman Civ has collapsed by then its former holdings will join the new Eastern Roman Empire.

Scenario maker's notes
Spoiler :
As this mod-scenario is done with PyScenario it is both readily editable - and can also be included in other mod-mods or directly copy-pasted into another PyScenario script. There is one thing to consider however, and this is the Custom.py file that is included with this release. Because this Python module holds the custom civilization() method that is used to actually change the Celtic Civ into the Byzantine one.

To enable this method into another PyScenario script you both need to include the Custom module and add these lines to your own Scenario.py file:
Code:
from Custom import *
Trigger.civilization = civilization
This is the API entry for the custom Action:

civilization( eCiv=None, flag=None, eLeader=None )
Changing any of the default None values to a valid value will change the properties of the Target Player. The eCiv setting is however not a PlayerTypes value but rather the CivilizationTypes value for the new Civ. The flag setting is the string name of the new flag graphic. And the eLeader setting is the preferred LeaderHeadTypes value for the new leader.

Note however that due to limitations in the mod and in the Python tools available this probably shouldn't be done with any Major Civs - nor can it be used to change the name of any player. But it should be quite possible to do something like having the Holy Roman Empire to be the original German Civ - and later - if the Civ has collapsed - respawn it as the proper (modern) German Civ. Because the dynamic names in the mod would pretty much mirror this transformation anyway.

These limitations is the reason why the civilization() method is released in the form of a add-on rather than as a part of the main PyScenario library of Trigger methods.
 

Attachments

  • Byzantium.zip
    36.5 KB · Views: 143
Well, at least test it! I haven't actually played it myself so I would be very interested to hear what you think!
 
I'm kinda in the middle of getting back into Civ2:ToT to play multiplayer with my dad and his girlfriend. (We don't have 3 computers that can run Civ4 :sad:)
 
I get defeated at the start of the game, installed it exactly how you described it :(
This does not sound good. Either you're not using the current version of RFC Epic/Marathon (v2.1) or you messed up the install or I have messed up the mod.

Can anyone else confirm that the mod-scenario works, please?
 
Ok I messed up the version, now it works.

I did three testruns, vikings, normal speed. Two times the Empire got split; In one of them, Constantinople seemed to be razed by barbarians (I got the message that the empire got split).
The other one, they are alive, but only with Constantinople, surrounded by Greece and Babylonia. There is a bug with the message announcing the ne capital as you can see :)

Edit 2: I played about 15 more turns; the message keeps appearing every turn. Furthermore, Inverness became also Byzantine.
 
This is good news! :king:

Also, thanks for the bug report! :goodjob:

I've attached a replacement Scenario.py file with the fix to this post. The main download is also updated.
 

Attachments

  • bugfix.zip
    796 bytes · Views: 76
This mod-mod is up for updating to the current version of RFCM. If anyone has any feedback they'd like to share, now would be a good time.
 
I would have eliminated the Gauls entirely and replaced all of their functions with Barbarians (i.e., when those three cities spawn in France, they do so as Barbarian cities). Then you wouldn't need to convert them to Byzantines.
 
The Gauls need to stay Gauls or else Rome's problems are even easier solved by the Great Wall.
 
Problems? The Gauls provide three free cities in France and do jack else.
 
Surely this shouldn't happen if Greece is around? I mean, the Byzantine Empire was for all intents and purposes the Greek parts of the Empire picking up the Roman ball when it got dropped. It's really odd to see Greece and the Byzantines around...
 
Surely this shouldn't happen if Greece is around? I mean, the Byzantine Empire was for all intents and purposes the Greek parts of the Empire picking up the Roman ball when it got dropped. It's really odd to see Greece and the Byzantines around...
You're probably right, and I might update this scenario when I release the new PyScenario version (no arrival date yet). But since I posted this as a sample scenario it would for all intended purposes be alright if you went ahead and implemented whatever change you like yourself. Because what you propose isn't very hard to implement, actually, and once you get the hang of it you'd be able to make your own scenarios also.
 
Top Bottom