FANDOM


The difficulty in the Community Patch is unchanged, but the rest of Vox Populi changes difficulty greatly, as described below.

Difficulty Level Edit

General Bonuses Edit

Bonus Meaning AI Settler Chieftain Warlord Prince King Emperor Immortal Deity
HappinessDefault Bonus happiness 7 8 6 6 5 5 5 4 4
ProductionFreeUnits Base military supply 7 9 9 9 8 8 7 6 6
ProductionFreeUnitsPopulationPercent  % of population added to military supply 25 35 30 30 25 25 20 20 20
BarbCampGold Gold given when clearing a camp 50 30 30 30 30 20 20 20 15
BarbarianBonus Extra CS/RCS % vs barbarians / 50 40 30 30 20 20 10 0
EarliestBarbarianReleaseTurn Number of turn before the barbarians can enter borders. 0 30 25 25 20 20 15 10 5
BarbarianLandTargetRange Range of barbarians raids 6 5 6 7 8 9 10 11 12
BarbarianSeaTargetRange Range of pirates raids 18 14 16 18 20 22 24 26 28

Additional Settler Bonuses Edit

Bonus Meaning Settler Other
RouteCostPercent Discount to route maintenance 75 100
UnitCostPercent Discount to unit maintenance 90 100
PolicyPercent Discount to policy cost 90 100
AIWorldTrainPercent

AIWorldConstructPercent AIWorldCreatePercent

Malus to AI world wonder production. 110 100

AI Bonuses Edit

Bonus Meaning Settler Chieftain Warlord Prince King Emperor Immortal Deity
CityProductionNumOptionsConsidered

TechNumOptionsConsidered PolicyNumOptionsConsidered

The AI will randomly choose between the best options. 3 3 3 2 2 2 1 1
AIBarbarianBonus Extra CS/RCS % vs barbarians for the AI 0 5 10 10 15 15 20 25
StartingMinorDefenseUnits CS starting extra units. 0 0 1 1 1 2 2 3
AIStartingDefenseUnits Warriors at game begin 1 1 1 1 1 1 2 2
AIStartingExploreUnits Pathfinders at game begin 0 0 0 0 1 1 1 1
AIStartingWorkerUnits Workers at game begin 0 0 0 0 0 1 1 1
AIDeclareWarProb Increase of desire to go at war against the Player (mostly irrelevant) 60 90 100 100 105 110 115 125
AIWorkRateModifier Improvement cost discount 0 10 20 30 40 50 60 70
AIUnhappinessPercent Unhappiness reduction 100 100 95 90 85 80 75 65
AIGrowthPercent

AITrainPercent AIConstructPercent AICreatePercent

Discount to growth, units, buildings and project construction (increased by AIPerEraModifier per era) 110 100 100 90 90 80 80 70
AIBuildingCostPercent

AIUnitCostPercent

Discount to units and building maintenance 100 100 90 90 90 80 80 70
AIUnitSupplyPercent Bonus to supply cap (increased by AIPerEraModifier per era) 0 5 10 15 20 25 30 35
AIUnitUpgradePercent Discount to upgrade costs 100 95 90 85 80 75 70 65
AIFreeXP Free XP to new units 0 5 10 15 20 20 25 30
AIFreeXPPercent Extra XP earned from combat (%) 0 10 25 33 50 66 75 100
AIPerEraModifier Value increasing some other bonuses 0 -2 -4 -6 -7 -8 -9 -10
DifficultyBonusBase See below 0 1 2 3 4 5 6 7

Additional Informations in DifficultyMod.xml Edit

Name Meaning Value
StartLocPercent 50
BuildingCostPercent

ResearchPercent ImprovementCostPercent

100
ProductionFreeUnitsPerCity 1
NumCitiesUnhappinessMod

PopulationUnhappinessMod

100
Gold 0
GoldFreeUnits 0
BarbSpawnMod 0
AttitudeChange Not used 1 (-1 for Settler)
DifficultyBonusA See below 80
DifficultyBonusB See below 150
DifficultyBonusC See below 300

AI Handicap Bonuses Edit

The AI receives bonus yields on two conditions: When it creates or acquires a city after the first, and when it triggers a historic event. The yields from each type of trigger are: 1x for cities, 2x for new era historic events, 0.33x for great person births and 0.5x for all other historic events. Site digs and trade route completions are not counted.

The AI also gets half as much culture as other types of yields. (So if they get 50 science, they will get 25 culture.)

The specific amount of yields you get is based on the formula below, with the following outside variables:

  • iEra is 1 in Ancient/Classical, 2 in Medieval, 3 in Renaissance and so on.
  • iHandicapBase, iHandicapA, iHandicapB, and iHandicapC are defined in the Difficulty.xml file and vary with difficulty.

Finally the formula:

int CvPlayer::DoDifficultyBonus(HistoricEventTypes eHistoricEvent)
{
    if (eHistoricEvent == HISTORIC_EVENT_DIG || eHistoricEvent == HISTORIC_EVENT_TRADE_CS)
        return 0;

    int iEra = GetCurrentEra();
    if(iEra <= 0)
    {
        iEra = 1;
    }
    int iHandicapBase = 0;
    int iHandicapA = 0;
    int iHandicapB = 0;
    int iHandicapC = 0;
    int iYieldHandicap = 0;
    CvHandicapInfo* pHandicapInfo = GC.getHandicapInfo(GC.getGame().getHandicapType());
    if(pHandicapInfo)
    {
        iHandicapBase = pHandicapInfo->getAIDifficultyBonusBase();
        iHandicapA = pHandicapInfo->getAIDifficultyBonusEarly();
        iHandicapB = pHandicapInfo->getAIDifficultyBonusMid();
        iHandicapC = pHandicapInfo->getAIDifficultyBonusLate();
        iYieldHandicap = iHandicapBase * (iHandicapA * iEra * iEra + iHandicapB * iEra + iHandicapC) / 100;
    }
    if (iYieldHandicap > 0)
    { 
        if (eHistoricEvent == HISTORIC_EVENT_ERA)
            iYieldHandicap *= 2;
        else if (eHistoricEvent == HISTORIC_EVENT_GP)
            iYieldHandicap /= 3;
        else if (eHistoricEvent != NO_HISTORIC_EVENT_TYPE)
            iYieldHandicap /= 2;

        bool IncludeCities = true;
        if (eHistoricEvent == HISTORIC_EVENT_GP ||
            eHistoricEvent == HISTORIC_EVENT_WONDER ||
            eHistoricEvent == HISTORIC_EVENT_TRADE_LAND ||
            eHistoricEvent == HISTORIC_EVENT_TRADE_SEA)
        {
            IncludeCities = false;
        }

        if (IncludeCities)
        {
            int iLoop;
            CvCity* pLoopCity;
            for (pLoopCity = firstCity(&iLoop); pLoopCity != NULL; pLoopCity = nextCity(&iLoop))
            {
                if (pLoopCity != NULL)
                {
                    pLoopCity->changeFood(iYieldHandicap);
                    pLoopCity->changeProduction(iYieldHandicap);
                }
            }
        }

        GetTreasury()->ChangeGold(iYieldHandicap);
        ChangeGoldenAgeProgressMeter(iYieldHandicap);
        changeJONSCulture(iYieldHandicap / 2);
      
        TechTypes eCurrentTech = GetPlayerTechs()->GetCurrentResearch();
        if(eCurrentTech == NO_TECH)
        {
            changeOverflowResearch(iYieldHandicap);
        }
        else
        {
            GET_TEAM(getTeam()).GetTeamTechs()->ChangeResearchProgress(eCurrentTech, iYieldHandicap, GetID());
        } 
    }
    return iYieldHandicap;
}

Other Notes Edit

The AI will wait longer before accepting to negotiate peace with a player than with another AI (see forum).