1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Measuring Garrison Revolution Support

Discussion in 'Civ4Col - Strategy & Tips' started by Kraftster, Sep 24, 2008.

  1. Kraftster

    Kraftster Chieftain

    Joined:
    Sep 24, 2008
    Messages:
    28
    Hey all,

    Sorry if this has already been covered, I looked for a while and was not able to find it.

    I'm having trouble nudging my revolution support past 35%.
    My four cities are as follows:
    New Amsterdam (12): 85%
    Fort Nassau (10): 100%
    Fort Orange (10): 54%
    New Holland (8): 39%

    Now, I was at the point where my food production was allowing for free colonist production pretty quickly, but, I was making all of these new colonists into dragoons or soldiers. Are these garrisoned units affecting my revolution support? If so, when you want to stock up on military units before the declaration, how do you balance this with the fact that new units = stagnant Rev. Support?

    My Rev. advisor is fluctuating between 34 -37% support. I've tried to cut back on food surpluses to avoid generating fee colonists since I have a solid military at the moment.

    Looking for a little insight. Thanks.
     
  2. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    People outside of colonies count on the big counter too, soldiers, dragoons, pioneers, etc. Put them in a city to convert them to rebels. :)
     
  3. Kraftster

    Kraftster Chieftain

    Joined:
    Sep 24, 2008
    Messages:
    28
    That's about what I figured. Is there any way to determine whether a particular individual unit has "rebel" status?
     
  4. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    Ones outside the colony are not rebels. :)

    Crude, but it works.
     
  5. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    By "outside the colony" do you mean "not working a tile or in a building", or "not on a tile where a colony appears", or "not on your culture"?

    If you mean the first one, that's not a good idea, IMO. That would penalize you for army size excessively...
     
  6. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    I mean people not settled in a colony, soldiers, pioneers, etc.
     
  7. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    That was what I was afraid of. I don't see any reason those folks shouldn't be allowed to be counted as rebels (or better yet, not counted as either)...
     
  8. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    They are counted because they are your citizens, but they aren't getting any propaganda (bells).

    It's like the US troops in Iraq. They "think" they're doing a good job because they do not see the media about what they're doing, but they are still counted as US citizens. ;)
     
  9. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    What's the gameplay reason ... you know me, I don't give a rat's ass about the 'story' reason. :)
     
  10. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    They count cuz they are your citizens. No matter what job they are performing.
     
  11. nbcman

    nbcman Chieftain

    Joined:
    May 10, 2007
    Messages:
    896
    So if you run all of your soldiers (pioneers or whatever) to a city with 100% rebel percentage and fortify them there, will your revolution support rise? Or do the soldiers have to be 'working' in the city? (I sure hope it is not the latter answer)
     
  12. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    This is still not a gameplay reason... ;)

    The only thing that makes sense to me is that it's a limitation on actual soldier count - ie, the more soldiers you have the worse of a problem this is, so it's an incentive to have fewer soldiers. I don't know if that's a good thing or not, but we'll see I suppose. :)
     
  13. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    nbcman:
    In the example you give, they won't affect rev amount. They need to join the city.

    snoop:
    How is it not a gameplay reason? You can't expect new colonists/soldiers straight from Europe to take up arms against their King do you? :lol: You have to convert them to your colonies way of thinking before they'll become a rebel. Otherwise, they're just a Tory. :)
     
  14. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    A gameplay reason = a reason that it makes the game more fun/better balanced/a better game. Your reason is still a 'role playing' reason, or a 'realism' reason, or a 'story' reason, depending on how you see it. Basically, if you abstract the game to moving different kinds of marbles on a black gameboard (but with the same exact rules), what would the reason be then?
     
  15. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    10 .
     
  16. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    :lol: Poor Dale ...
     
  17. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    Here's ya bloody reason! :p

    Code:
    void CvPlayer::doBells()
    {
    	if (getParent() == NO_PLAYER)
    	{
    		return;
    	}
    
    	int iBellsRate = getYieldRate(YIELD_BELLS);
    	if (iBellsRate == 0)
    	{
    		return;
    	}
    	//add bells to political points
    	for (int i = 0; i < GC.getNumFatherPointInfos(); ++i)
    	{
    		FatherPointTypes ePointType = (FatherPointTypes) i;
    		changeFatherPoints(ePointType, iBellsRate * GC.getFatherPointInfo(ePointType).getYieldPoints(YIELD_BELLS));
    	}
    
    	//update revolution unit bells
    	if (!isInRevolution())
    	{
    		changeBellsStored(iBellsRate);
    		if (getBellsStored() >= revolutionEuropeUnitThreshold() && iBellsRate > GC.getCivilizationInfo(getCivilizationType()).getFreeYields(YIELD_BELLS))
    		{
    			changeBellsStored(-revolutionEuropeUnitThreshold());
    			setRevolutionEuropeUnitThresholdMultiplier((getRevolutionEuropeUnitThresholdMultiplier() * (100 + GC.getDefineINT("REVOLUTION_EUROPE_UNIT_THRESHOLD_INCREASE"))) / 100);
    
    			if (NO_PLAYER != getParent())
    			{
    				CvPlayer& kParent = GET_PLAYER(getParent());
    				FAssert(kParent.isEurope());
    
    				CvCivilizationInfo& kCivilizationInfo = GC.getCivilizationInfo(kParent.getCivilizationType());
    				int iNumFreeUnits = kCivilizationInfo.getNumCivilizationFreeUnits();
    				std::vector<int> aiUnitWeights(iNumFreeUnits, 100);
    				for (int i = 0; i < iNumFreeUnits; ++i)
    				{
    					int iUnitClass = kCivilizationInfo.getCivilizationFreeUnitsClass(i);
    					UnitTypes eUnit = (UnitTypes) kCivilizationInfo.getCivilizationUnits(iUnitClass);
    					if (eUnit == NO_UNIT)
    					{
    						aiUnitWeights[i] = 0;
    					}
    					else
    					{
    						if (GC.getUnitInfo(eUnit).getDomainType() == DOMAIN_SEA)
    						{
    							aiUnitWeights[i] += std::max(-100, GC.getDefineINT("REVOLUTION_EUROPE_UNIT_SHIP_MODIFIER"));
    						}
    					}					
    				}
    
    				if (iNumFreeUnits > 0)
    				{
    					int iIndex = GC.getGameINLINE().getSorenRand().pickValue(aiUnitWeights, "Pick Expeditionary force unit");
    					int iUnitClass = kCivilizationInfo.getCivilizationFreeUnitsClass(iIndex);
    					ProfessionTypes eUnitProfession = (ProfessionTypes) kCivilizationInfo.getCivilizationFreeUnitsProfession(iIndex);
    					UnitTypes eUnit = (UnitTypes)kCivilizationInfo.getCivilizationUnits(iUnitClass);
    					FAssert(eUnit != NO_UNIT);
    					int iNumUnits = std::max(1, getRevolutionEuropeUnitThresholdMultiplier() / 100);
    					for (int i = 0; i < iNumUnits; ++i)
    					{
    						addRevolutionEuropeUnit(eUnit, eUnitProfession);
    					}
    
    					const wchar* szUnitName;
    					if (eUnitProfession != NO_PROFESSION)
    					{
    						szUnitName = GC.getProfessionInfo(eUnitProfession).getTextKeyWide();
    					}
    					else
    					{
    						szUnitName = GC.getUnitInfo(eUnit).getTextKeyWide();
    					}
    
    					CvWString szBuffer = gDLL->getText("TXT_KEY_NEW_EUROPE_ARMY", kParent.getCivilizationShortDescriptionKey(), getCivilizationShortDescriptionKey(), szUnitName, kParent.getCivilizationAdjectiveKey());
    					gDLL->getInterfaceIFace()->addMessage(getID(), true, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_UNIT_GREATPEOPLE", MESSAGE_TYPE_INFO, GC.getUnitInfo(eUnit).getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_UNIT_TEXT"));
    				}
    			}
    		}
    	}
    }
     
  18. snoopy369

    snoopy369 Apolytoner at large

    Joined:
    Dec 19, 2004
    Messages:
    249
    That's the code to add new units to the REF, not to calculate current rebel percentage, isn't it? Or am I badly misreading that??? (Admittedly it's been a long day at work, and I could well be misreading this badly...)
     
  19. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    You might be right. I was in a rush. :p

    I just saw "doBells" and "!isInRevolution". :)
     
  20. ChrTh

    ChrTh Happy Yule!

    Joined:
    Oct 13, 2001
    Messages:
    6,255
    Location:
    Piedmont Triad, North Carolina
    To continue harassing Dale: does this apply only to new military units, or all military units?

    For example, let's say I have an ordinary citizen working a tile in a city with 100% rebel sentiment. I then decide to arm that citizen and send him off to fight the Spanish (or Native Americans, or to defend another city). Is that unit still considered 100% rebel, or does it reset because it's not in the city?
     

Share This Page