This is a little mod-scenario depicting the three separate incidents of slave revolts in the Roman Republic. As the time scale is so narrow, they easily blend together into one historical event in a game of RFC. Historically, each war was over in a couple of years, and would thus be over in one single game turn each. But as alternative history is the subject of RFC the situation might also get out of hand completely! Recommended reading on the Roman Servile Wars. As the title tells this scenario is focusing on the legendary struggle of the gladiator slave Spartacus.
Installation
Download the zip archive available from the link at the bottom of this post and unpack the content into your \Sid Meier's Civilization 4\Beyond the Sword\Mods\Rhye's and Fall of Civilization\Assets\Python\ folder. You will need to overwrite the original CvRFCEventHandler.py file in order to successfully complete the installation!
Note that this mod-scenario is done with the PyScenario utility and installing it will also add the current beta version of the PyScenario application as a part of your main mod installation. In order to uninstall the scenario you only have to delete (or rename) the Scenario.py file though. (A complete uninstall would require to replace the CvRFCEventHandler.py file with Rhye's original version. Only then should the PyScenario.py and the Custom.py files be deleted!)
Features
First and foremost, you need to play as the Romans in order for the actual event to take place. (AI Rome will not experience any of it.) Also your Roman Civilization needs to practice the Slavery civic or there would, obviously, be no slave revolts.
The rebel units are represented by Barbarian units and thus the challenge presented by the various slave rebellions is dependent on the difficulty level. (There are bonuses against Barbarian units and also free kills.) If you want to experience the full impact of this mod-scenario you should play on the hardest difficulty level (Emperor).
It could be noted that the initial rebel units all have the Leader promotion singling them out as the core of the rebel force. By killing these leader units you will also stop further spawning of rebel units. In order to put an end to any further uprising you need to find and kill the unit commanded by Spartacus himself.
New rebel units will spawn dynamically depending on the actual game situation. There are in-game messages giving hints as to what causes these units to form in the first place, but its basically slaves that join the rebellion taking up arms against Rome. What the goal of the rebellion is will not be spoiled here either.
There is no reward for killing Spartacus or anything like that, but the scenario is rather intended as a challenge to the human player. An ill-prepared Rome could find Italia devastated by the rampaging slave armies! The mod-scenario can also be included as a part of a larger PyScenario script exploring other events and aspects of the Roman period.
Scenario maker's notes
Installation
Download the zip archive available from the link at the bottom of this post and unpack the content into your \Sid Meier's Civilization 4\Beyond the Sword\Mods\Rhye's and Fall of Civilization\Assets\Python\ folder. You will need to overwrite the original CvRFCEventHandler.py file in order to successfully complete the installation!
Note that this mod-scenario is done with the PyScenario utility and installing it will also add the current beta version of the PyScenario application as a part of your main mod installation. In order to uninstall the scenario you only have to delete (or rename) the Scenario.py file though. (A complete uninstall would require to replace the CvRFCEventHandler.py file with Rhye's original version. Only then should the PyScenario.py and the Custom.py files be deleted!)
Features
First and foremost, you need to play as the Romans in order for the actual event to take place. (AI Rome will not experience any of it.) Also your Roman Civilization needs to practice the Slavery civic or there would, obviously, be no slave revolts.
The rebel units are represented by Barbarian units and thus the challenge presented by the various slave rebellions is dependent on the difficulty level. (There are bonuses against Barbarian units and also free kills.) If you want to experience the full impact of this mod-scenario you should play on the hardest difficulty level (Emperor).
It could be noted that the initial rebel units all have the Leader promotion singling them out as the core of the rebel force. By killing these leader units you will also stop further spawning of rebel units. In order to put an end to any further uprising you need to find and kill the unit commanded by Spartacus himself.
New rebel units will spawn dynamically depending on the actual game situation. There are in-game messages giving hints as to what causes these units to form in the first place, but its basically slaves that join the rebellion taking up arms against Rome. What the goal of the rebellion is will not be spoiled here either.
There is no reward for killing Spartacus or anything like that, but the scenario is rather intended as a challenge to the human player. An ill-prepared Rome could find Italia devastated by the rampaging slave armies! The mod-scenario can also be included as a part of a larger PyScenario script exploring other events and aspects of the Roman period.
Scenario maker's notes
Spoiler :
This scenario was done as part of beta-testing the PyScenario application. It also incorporates some custom features that could easily be imported into other PyScenario scripts. In the Scenario module there is a reference to the Custom module and to the liberate() Trigger method (Action). In order to use this feature as part of you own PyScenario script you need to add these lines of Python code to your own Scenario module:
If you include the Custom module in your RFC installation you can use the liberate() method as any other that is part of the PyScenario Trigger API. This is what the method's API entry would look like:
There are also additional settings available in the actual Custom module:
By changing the values of any of these variables (constants) the liberate() method can be customized to suit the scenario that features it. Doing this equals Python programming and may cause unexpected results if attempted by a non-programmer!
The way the liberate() method is used in this particular scenario, by the way, is that there are Triggers present that first spawn units with specific unit flags. Then the locate() method is used to check which tiles these flagged units (the leaders of the rebellion) occupy on any given game turn. This creates the plot list that is then used to activate the liberate() method. But there are of course other potential uses for it! (Your job is to figure them out.)
Code:
from Custom import *
Trigger.liberate = liberate
liberate( bRecruit=True, bWorkers=True, bSettlers=True, bMessages=True )
This Action method spawns units belonging to the target player from a plot list. The bRecruit setting makes any tile that is part of the plot list containing any terrain improvement - that doesn't belong to the target player - spawn a Spearman unit. The improvement will be destroyed in the process! Additionally the bSettlers setting allows a Settler unit to spawn on that tile. And finally, the bWorkers setting makes any adjacent tile containing a Worker unit cause another Spearman unit to spawn. (The Worker unit itself is therefore destroyed.)
The bMessages setting will cause preset messages to appear heralding these events.
There are also additional settings available in the actual Custom module:
Code:
# constants
eRebelUnit = con.iSpearman
iNumUnits = 1
rebelUnitName = "Rebel"
rebelUnitFlag = "Slave"
rebelUnitAI = 13
lPromotions = [17]
settler = "Freed women and children join up with the rebel army."
worker = "Slaves working the fields are taking up arms against their owners!"
rebel = "The rebel army is pillaging the countryside for supplies. Freed slaves are joining their ranks!"
The way the liberate() method is used in this particular scenario, by the way, is that there are Triggers present that first spawn units with specific unit flags. Then the locate() method is used to check which tiles these flagged units (the leaders of the rebellion) occupy on any given game turn. This creates the plot list that is then used to activate the liberate() method. But there are of course other potential uses for it! (Your job is to figure them out.)