Greetings,
I first downloaded RevolutionDCM (ver 2.61) last year as a means of incorporating inquisitions
and DCM's air bomb options into my own personal mod, and have since been impressed by the other
features of the mod. Before I get into my review, a bug (though perhaps it has been fixed in
recent versions). During a very long huge map marathon game with approx 15 or so AIs, rebel
units failed to spawn by the early industrial age. An error message saying something about an
array index out of bounds would appear, followed by elimination of the rebel civ (barbarian
rebels still spawned). Cities affected by this (all conquered cities) would pretty much be in a
permanent state of revolt, going straight into another revolution once the previous one was
quelled. I had to grant independence, and then reconquer them, which either left them safe, or
in a warning state (depending on individual circumstances).
I currently play the latest, but have not played any huge or marathon map. Thus far, I have not
seen the error. A new error has surfaced, which causes the game to hang during the AI turn. I
tracked the problem to specific units spawned by a rebel AI. I had 3 cases in my test game
during the ancient to middle ages, but nothing occured afterwards. The problem units were both
custom units I created; 2 assassins and 1 ballista. The assassin is a spy unit that can attack,
while the ballista is a siege unit with ranged attack which is effectively immobile (has 1 move
but is unable to enter any terrain or feature). Deleting these problem units or changing their
script AI in worldbuilding allowed the game to proceed normally. In all cases, changing the AI
from attack or attack city to spy, explore or reserve fixed it (I did not try all possibilites,
just enough to fix it). I must point out that many assassin and ballista units were spawned by
rebels, but only those 3 were troublesome.
Now for my review. RevolutionDCM is an excellent mod that adds so much to game play. The core
revolution is particularly interesting because I have always found domination and conquest to be
too easy; the worst that could happen was a revolt in a newly conquered city causing it to flip
(rare for me with a large garrison and focus on culture in newly conquered cities), or a loss of
city defenses making it more difficult to defend. Revolutions add a whole new meaning to
widespread expansion and military conquest, making the game more realistic. Also, I like the
added emphasis on happiness and healthiness. In vaninlla, letting a city slide into unhappiness
or unhealthiness is just a relatively minor annoyance. With revolutions, even the capital and
nearby cities can go into revolt. Something as simple as moving garrisoned units out to be
upgraded or getting a poisoned water supply can lead to a revolt.
However, there are some features of the mod which I do not like. According to the mod, with my
playstyle, I am nearly always in financial trouble. I try to keep my gold per turn close to 0,
focusing on research as much as possible. I consider getting less than 10 gold per turn in any
era, or even a small amount of gold loss per turn to be perfectly acceptable. This irritated me
so much that I edited the code.
if( iGoldRate > 0 and not pPlayer.isMinorCiv() and not pPlayer.isAnarchy() ) :
# Great long-term financial situation
finIdx = 2
if( bIsRevWatch ) :
posList.append( (finIdx,
localText.getText("TXT_KEY_REV_WATCH_FINANCIAL_POS",())) )
if( self.LOG_DEBUG and (bVerbose or iGameTurn%25 == 0) ) :
CvUtil.pyPrint(" Revolt - The %s is in a good long-term financial situation")
elif( iGoldRate < 1 ) :
iPercentShort = iThresholdPercent - iFundedPercent
if( iGold > iGoldRate*-10 ) :
# Civ has enough reserves to last several more turns
finIdx = 1
elif( iGold > iGoldRate*-5 ) :
# Civ has enough reserves to last a few more turns
finIdx = -1
elif( iGold < iGoldRate*-5 ) :
# Civ in danger of running out of gold soon
finIdx = -5
if( self.LOG_DEBUG and (bVerbose or iGameTurn%25 == 0) ) :
CvUtil.pyPrint(" Revolt - The %s is in serious financial trouble")
elif( iGold <= 0 and iGoldRate < 0 ) :
# Civ is bankrupt, units on strike
finIdx = -10
if( self.LOG_DEBUG and (bVerbose or iGameTurn%25 == 0) ) :
CvUtil.pyPrint(" Revolt - The %s is in serious financial trouble")
I think the original code tries to account for far too many things, when how to choose to set
your commerce sliders is irrevelent. I also think that the state of war, relations, era, etc are
irrevelent. The only thing that matters is whether or not your can support your current setup
without going bankrupt and suffering strikes. To explain my code: if your gold rate is positive,
you are in good financial situation (but this will never be more than a minor bonus). If your
gold rate is negative but you have enough gold reserves to not go bankrupt in at least 10 turns,
you have neutral finances (this ends up with no bonus or penalty to revolution). If you have
enough gold to last between 5-9 turns, you get a slight revolution penalty. Less than 5 turns
and you have a moderate revolution penalty. If you manage to get your units on strike, you have
a serious revolution penalty. A special note to anyone who tries to use this code; a copy paste
of the whole block will not work, you have to go line by line (not sure why, probably something
to do with white space or tabs).
My second problem with revolutions is about which units the rebels spawn. It frustrates me when
the rebels get cutting edge technology to attack my cities when I just recently discovered the
tech for new units, but have either not built any, or only built 1 or 2. I have been looking
over the code for this trying to change it, but it is very complicated and difficult to read.
From my understanding, it searches the nearly area for the most powerful unit types and spawns
those, while also spawning some obsolete units if some are owned by the player. From my
experience of the most recent game, garrisoning revolution cities with longbowmen (despite being
able to build riflemen) causes the rebels to get some riflemen and some longbowmen. Later in the
modern era, I had a stack of 15+ cavalry stationed just outside of the revolution area, and the
rebels were getting some infantry, artillery, and cavalry; they were very easy to kill after
being range attacked by my artillery. Which brings me to another point; with the invention of
flight, rebels are trivial to defeat because they cannot counter air bombings (or naval bombings
for that matter, but that only applies to coastal areas). It seems the rebels would only have
any chance of fending off air attack if nearly cities have SAM type units. The bottom line is
that I find rebels to be too powerful during the ancient to modern tech race (due to getting
access to cutting edge units), and I find rebels to be too weak post flight.
I think rebel units should be more restricted in terms of tech level, resource requirements and
building requirements (most good units in my mod require special buildings to build), but should
have more options in the late game. If I can figure out how to code it (I am not very skilled at
programming by the way) I would set rebel units to spawn from a fixed list with the percent
chance for each unit varying by the player's tech level, and allowing units to spawn which the
player does not have. For example, axemen would be unlikely to spawn because they require a
resource. Increased tech level (say to iron working) would increase the liklihood of axemen
spawning. Similarly, longbowmen (which require a military encampment in my mod) would be
unlikely to spawn until crossbowmen, knights and muskets are available. As the tech level
progresses, obsolete units would be less likely to spawn. For example, if the player has
longbowmen, rebels get a high chance of archers. If the player has muskets, rebels havea lower
chance of archers. If the player has infantry, rebels would be very unlikely to have archers.
The intent here is to have most rebel units be slightly obsolete, with some older obsolete and
some cutting edge.
Further on this concept as it relates to my mod, certain special units should be more like to
spawn as rebels than regular units. For example, I have a line of land hidden nationality always
hostile terrorist type units that are slightly weaker then comparable regular units. I also have
a militia unit (slighter better than riflemen), which is the best unit you can get from
conscription and the only modern era unit you can build without special buildings. Both of these
would make excellent rebel units, whereas other units (like the ballista) not so much. The
beauty of the current code is that it works with custom units. I think code to do what I would
like would have to be mod specific and probably longer and more complicated. Any help coding
this would be much appreciated.
Another issue is the xp of rebel units. According to the code, units get a random amount of xp.
Early on, I find some rebel units have higher levels than my units, which only exascerbates the
difficulty of revolutions. Later in the game, with great generals and such, my military city can
produce units with vastly superiour xp than rebel units, which make revolution in the modern era
even more easy. It does not look like it in the code, but does the code take into account xp
bonus from civics, buildings, etc? It would be interesting (and more balanced in my opinion) if
rebels could have xp levels anywhere from 0 to the max the player can produce, or even up to the
xp level of local units.
Lastly, I think the spawning of great generals and settlers for rebels is overpowered. On one of
my first revolution games (on ver 2.61), I built a city near the border of a rival (we were at
war since I was using start as minor civ). Soon after, every several turns that AI was getting a
free settler; at no penalty and faster than they could normally be built. I could not stop their
settlers from getting away and founding cities without cheating (which I did, and soon edited the
code). Free settlers may be fine for a rebel civ, but it is overpowered for an established civ.
I also think free great generals are overpowered. While it may be fine for a rebel civ to have
warlords, an established civ could simply farm and settle great generals for a ridiculous
advantage. I tried making a warlord unit (which was a great general that could only join as a
warlord) for my mod, but it would randomly be created instead of a great general (this was prior
to first trying revolutiondcm). I think something like that would be a fair idea, if the latter
problem were fixed.
In conclusion, this is a wonderful mod that I honestly would not wish to play without, despite
the aspects which irritate me. Though in my quest for a better personal mod, I hope to fix those
issues.