NGame = { START_DATE = "1836.1.1" END_DATE = "1936.1.1" SAVE_VERSION = 0 MP_LAG_TICKS_BOUNDS = 28 # Host will advance up to a week ahead of players ( 7 * 4 ) DEAD_OBJ_UNDESTROYED_DAYS = 0 # number of days "killed"/removed objects will persist in memory before ultimately destroyed as they are referenced by events etc DEFAULT_INCREMENT_DECREMENT_MAGNITUDE = 1 DEFAULT_INCREMENT_DECREMENT_MAGNITUDE_SHIFT = 10 DEFAULT_INCREMENT_DECREMENT_MAGNITUDE_CONTROL = 100 MAX_NUMBER_OF_AUTOSAVES = 5 # The game will only keep the MAX_NUMBER_OF_AUTOSAVES latest autosaves. } NJominiMap = { WORLD_EXTENTS_X = 8192 WORLD_EXTENTS_Y = 24 #This determines the max height of the world. Original settings = 25.5 WORLD_EXTENTS_Z = 3615 WATERLEVEL = 1.74 #Original Settings 3.7 } NAI = { DEFAULT_STRATEGY_STRING = "ai_strategy_default" STRATEGY_RANDOM_FACTOR = 20.0 # The higher this is, the more random AI strategy selection will be TICKS_FOR_FULL_SPENDING_UPDATE = 50 # The higher this is, the less often AIs will update their spending priorities CHANGE_STRATEGY_THRESHOLD = 100 # At this threshold of 'change points', the AI will roll a new strategy CHANGE_STRATEGY_INCREASE_WEEKLY_CHANCE = 20 # Chance per week of AI gaining a 'change point' towards rolling a new strategy (1 = 1%) CHANGE_STRATEGY_POLITICAL_NEW_RULER = 100 # How many 'change points' are added to each strategy when a country gets a new ruler CHANGE_STRATEGY_POLITICAL_LAW_ENACTED = 25 # How many 'change points' are added to politics strategy when a law is enacted CHANGE_STRATEGY_DIPLOMATIC_STATE_GAINED = 10 # How many 'change points' are added to diplomatic strategy when a new state is acquired CHANGE_STRATEGY_DIPLOMATIC_STATE_LOST = 10 # How many 'change points' are added to diplomatic strategy when we lose a state CHANGE_STRATEGY_DIPLOMATIC_UNIFICATION_CANDIDATE = 100 # How many 'change points' are added to diplomatic strategy when we become or stop being a unification candidate COUNTRY_GOAL_STRATEGIC_UPDATE_COUNT = 5 # How many AIs have their protect/threat/neighbor scores set every day COUNTRY_GOAL_ADJUSTMENT_UPDATE_COUNT = 50 # How many AIs have their antagonize/befriend scores adjusted each day COUNTRY_GOAL_RECALC_THRESHOLD = 100 # At this threshold of 'change points', the AI will roll a new goal COUNTRY_GOAL_RECALC_INCREASE_DAILY_CHANCE = 3 # Chance per day of AI gaining a 'change point' towards recalculating country goals (1 = 1%) COUNTRY_GOAL_RECALC_RELEVANCE_CHANGE = 100 # How many 'change points' are added to country AI goal when the diplomatic relevancy status of another country changes COUNTRY_GOAL_RECALC_NEIGHBORS_CHANGE = 25 # How many 'change points' are added to country AI goal when two countries start or stop being neighbors COUNTRY_GOAL_DIPLOMATIC_PLAY_STARTED = 50 # How many 'change points' are added to country AI goal against a country that targets them in a diplomatic play COUNTRY_GOAL_RECALC_PLAY_ENEMY_STATUS_CHANGED = 20 # How many 'change points' are added to country AI goal when play enemy status (on opposing sides of diplomatic play) with another country changes COUNTRY_GOAL_RECALC_PLAY_ALLY_STATUS_CHANGED = 20 # How many 'change points' are added to country AI goal when play ally status (on same side of diplomatic play) with another country changes COUNTRY_GOAL_RECALC_UNIFICATION_SUPPORT_CHANGED = 100 # How many 'change points' are added to country AI goal when then other country begins or stops supporting them as unification candidate COUNTRY_GOAL_RECALC_BANKRUPTCY = 50 # How many 'change points' are added to all other relevant countries' country AI goal when we go bankrupt DECLARE_BANKRUPTCY_MIN_DAYS_IN_DEFAULT = 30 # After this many days in default, the AI will declare bankruptcy BASE_AGGRESSION = 0.5 # Base chance that AI will consider starting a diplo play each time the goal is checked (1 = 1%) UNIFICATION_AGRESSION_MULT_HIGHER_TIR = 20 # AI aggression is multiplied by this for calculating whether they should try to start a unification/leadership play, if the country would end up forming a nation of a higher tier UNIFICATION_AGRESSION_MULT_SAME_TIER = 0.1 # AI aggression is multiplied by this for calculating whether they should try to start a unification/leadership play, if the country would end up forming a nation of the same tier DIPLO_PROPOSAL_DAYS_LEFT_MAX = 12 # AI will not answer a proposal when it has more than this amount of days left (should map to DIPLOMATIC_ACTION_PENDING_APPROVAL_DAYS) DIPLO_PROPOSAL_DAYS_LEFT_MIN = 4 # AI will always answer a proposal when it has this or less amount of days left (should map to DIPLOMATIC_ACTION_PENDING_APPROVAL_DAYS) DIPLO_PROPOSAL_ANSWER_CHANCE = 5000 # Chance per tick of AI answering a proposal (1000 = 1%) DIPLO_PROPOSAL_TO_PLAYER_COOLDOWN_MONTHS = 120 # Do not make the same exact proposal to the player for this amount of months DIPLO_PROPOSAL_LIKELY_NON_ACCEPTED_COOLDOWN_MONTHS = 120 # When AI rolls the dice on whether or not to attempt a proposal it thinks will be rejected, don't try again for this time DIPLO_PROPOSAL_NO_OBLIGATION_COOLDOWN_MONTHS = 120 # If the AI decides not to offer an obligation for a proposal, remember that decision for this many months DIPLO_PROPOSAL_ACCEPT_THRESHOLD = 0 # At this or more acceptance, AI says yes to a proposal DIPLO_PROPOSAL_BREAK_THRESHOLD = -50 # At this or less acceptance, AI breaks off an existing pact DIPLO_PROPOSAL_TRANSFER_PACT_RELUCTANCE = 25 # Add this to acceptance value for existing pact in transfer-pact proposals OBLIGATION_RECENTLY_REPUDIATED_DESIRE_MULT = 0.1 # Multiply AI's desire for an obligation by this if the offering country has recently repudiated another obligation DIPLO_ACCEPTANCE_CALL_IN_OBLIGATION = 50 # Add this acceptance to diplo action when calling in an obligation DIPLO_ACCEPTANCE_CALL_IN_OBLIGATION_RECENTLY_REPUDIATED = 25 # Add this acceptance instead of the above to diplo action when calling in an obligation if we've recently repudiated another obligation DIPLO_DIPLOMACY_PROPOSE_NON_ACCEPT_CHANCE_OTHER_AI = 2 # Chance of AI making a diplomatic proposal they know will be turned down (1 = 1%) DIPLO_DIPLOMACY_PROPOSE_NON_ACCEPT_CHANCE_PLAYER = 10 # Chance of AI making a diplomatic proposal they think will be turned down to a player (1 = 1%) DIPLO_BREAK_PACT_WEIGHT = 1000 INFLUENCE_DEFICIT_BREAK_PACT_BASE_VALUE = 50 # Added to accept/propose score for a pact INFLUENCE_DEFICIT_BREAK_PACT_RANDOM_FACTOR = 1.0 # The higher this is, the more random AI pact breaking due to influence deficit will be INFLUENCE_DEFICIT_BREAK_PACT_CUSTOMS_UNION_MULT = 10.0 # AI multiplies the weight of customs union pacts by this when in an Influence deficit INFLUENCE_DEFICIT_BREAK_PACT_OVER_SPENDING_LIMIT_MULT = 0.1 # AI multiplies the value of pacts that are over their action-type spending limit by this when in an Influence deficit MIN_AVAILABLE_LABOR_FOR_NEW_BUILDING = 5000 # If state has less than this in available labor, don't bother building anything (multiplied by 1 + number of ongoing constructions) MIN_AVAILABLE_UNITS_TO_RECRUIT_OR_PROMOTE = 10 # If an HQ has fewer than this number of combat units in reserve, don't promote/recruit any commanders for it GENERAL_COMMAND_LIMIT_MAX_UNITS_FOR_SINGLE_COMMANDER = 25 # If a HQ has more units than this, AI always wants it split between at least two commanders GENERAL_COMMAND_LIMIT_PROMOTION_TARGET_FRACTION = 0.66 # Until the generals in an HQ can handle this much of the locally available forces, do not recruit further generals GENERAL_COMMAND_LIMIT_MIN_PROMOTION_TARGET = 30 # General promotion target can't be lower than this GENERAL_COMMAND_LIMIT_PROMOTION_CURRENT_LIMIT_MULT = 0.33 # Current command limit of a general is multiplied by this when compared to target (to account for conscript command limit) ADMIRAL_COMMAND_LIMIT_PROMOTION_TARGET_FRACTION = 0.5 # Until the admirals in an HQ can handle this much of the locally available forces, do not recruit further generals ADMIRAL_COMMAND_LIMIT_MIN_PROMOTION_TARGET = 30 # Admiral promotion target can't be lower than this ADMIRAL_COMMAND_LIMIT_PROMOTION_CURRENT_LIMIT_MULT = 1.0 # Current command limit of an admiral is multiplied by this when compared to target RECRUITABLE_COMMANDER_BASE_SCORE = 100 # The base score assigned to each recruitable commander in the pool RECRUITABLE_COMMANDER_RANDOM_FACTOR = 3.0 # The higher this is, the more random AI recruitment selection will be RECRUITABLE_COMMANDER_SKILL_TRAIT_SCORE = 25 # A recruitable commander's total value of skill traits is multiplied by this RECRUITABLE_COMMANDER_PERSONALITY_TRAIT_SCORE = 0 # A recruitable commander's total value of personality traits is multiplied by this RECRUITABLE_COMMANDER_CONDITION_TRAIT_SCORE = -25 # A recruitable commander's total value of condition traits is multiplied by this RECRUITABLE_COMMANDER_FAVORED_IG_FACTOR = 1.5 # If a recruitable commander comes from an IG the AI likes, multiply score by this RECRUITABLE_COMMANDER_DISFAVORED_IG_FACTOR = 0.5 # If a recruitable commander comes from an IG the AI dislikes, multiply score by this COMBAT_UNIT_ASSIGNMENT_THRESHOLD = 0.75 # If combat units assigned to a HQ is at least this of wanted amount, don't try to assign more units COMBAT_UNIT_ASSIGNMENT_STICKYNESS = 0.10 # If moving a commander makes a HQ's unit ratio worse than the ratio of target HQ + this, don't do the move CONSCRIPTION_ESTIMATED_MILITARY_POWER_MULT = 0.5 # AI multiplies the value of conscriptable battalions by this to estimate potential combat power MOBILIZATION_BASE_DESIRED_RATIO_TO_ENEMY = 0.5 # AI wants to have a total amount of mobilized army power that is equal to enemy mobilized army power * this MOBILIZATION_MAIN_ATTACKER_ADDED_RATIO = 1.5 # Add this to desired ratio for the main attacker in the war MOBILIZATION_MAIN_DEFENDER_ADDED_RATIO = 1.0 # Add this to desired ratio for the main defender in the war MOBILIZATION_PEACE_NEGOTIATOR_ADDED_RATIO = 0.5 # Add this to desired ratio for any country that is or would become a peace negotiator (but isn't main attacker or defender) MOBILIZATION_LOCAL_FRONTS_ADDED_RATIO = 0.25 # Add this to desired ratio for any country that has least one local front MOBILIZATION_OCCUPATION_ADDED_RATIO = 0.5 # Add this to desired ratio for any country whose incorporated states are being occupied MOBILIZATION_EXISTENTIAL_WAR_FACTOR = 1.0 # If the AI is in an existential war/diplo play (could cease to exist after peace), add this to its desired mobilization ratio MOBILIZATION_MINOR_ALLY_MAX_RELATIVE_POWER = 0.15 # To be counted as a minor ally, a country must have equal or less than this amount of the alliance's total combat power. It must also have no fronts. MOBILIZATION_MINOR_ALLY_ADVANTAGE_TO_NOT_MOBILIZE = 2.0 # If a minor ally's side in the conflict has at least this army power advantage when their forces are not counted in, don't bother mobilizing MOBILIZATION_MIN_ESCALATION_START = 50 # Before this amount of escalation in a play, AI will only mobilize as a response to the enemy mobilizing (base) MOBILIZATION_MIN_ESCALATION_BOLDNESS_FACTOR = 0.2 # Boldness is multiplied by this and subtracted from MOBILIZATION_MIN_MOBILIZATION_ESCALATION_START MOBILIZATION_MIN_MOBILIZATION_PEACE_NEGOTIATOR = 0.15 # AI will always mobilize at least this amount of forces if they are or would become a peace negotiator MOBILIZATION_MIN_MOBILIZATION_TERRITORIAL_RISK = 0.15 # AI will always mobilize at least this amount of forces if they might lose territory from the war/play MOBILIZATION_MIN_MOBILIZATION_LOCAL_FRONTS = 0.25 # AI will always mobilize at least this amount of forces if they have any local fronts MOBILIZATION_MIN_MOBILIZATION_CONTAINMENT_WAR = 1.0 # AI will always mobilize at least this amount of forces if fighting in a containment war CONSCRIPTION_INSUFFICIENT_FORCES_FACTOR = 1 # For each 1% of mobilization the AI isn't able to meet, raise a base of 1% * this conscripts CONSCRIPTION_RELATIVE_CONSCRIPTED_COMBAT_POWER_DIVISOR = 1 # Conscripted forces fraction of combat power is multiplied by this, then the result of CONSCRIPTION_INSUFFICIENT_FORCES_FACTOR is divided by (1 + the result) CONSCRIPTION_SMALL_STANDING_ARMY_THRESHOLD = 0.75 # An AI whose conscripted combat power is above this fraction of total combat power is affected by the below factor CONSCRIPTION_SMALL_STANDING_ARMY_MIN_CONSCRIPTS_FACTOR = 0.02 # For each 1% the conscripted combat power fraction above CONSCRIPTION_SMALL_STANDING_ARMY_THRESHOLD, always raise at last this fraction of conscripts MIN_GOVERNMENT_LEGITIMACY = 50 # If legitimacy is below this, consider adding IGs we don't really like to the government DESIRED_GOVERNMENT_LEGITIMACY = 75 # If legitimacy is below this, add more IGs we like to the government REFORM_GOVERNMENT_MONTHS_BETWEEN_CHANGES = 30 # If the AI doesn't have elections, it won't consider changing government composition more often than this to avoid lots of radicals REFORM_GOVERNMENT_PRO_IG_CLOUT_FACTOR = 1.0 # When scoring IGs for putting in government, each point of clout for an IG the AI's strategy approves of is multiplied by this REFORM_GOVERNMENT_ANTI_IG_CLOUT_FACTOR = -0.75 # When scoring IGs for putting in government, each point of clout for an IG the AI's strategy is opposed to is multiplied by this REFORM_GOVERNMENT_NEUTRAL_IG_CLOUT_FACTOR = 0.25 # When scoring IGs for putting in government, each point of clout for an IG the AI's strategy is neutral towards is multiplied by this REFORM_GOVERNMENT_DESIRED_PARTY_SCORE = 0.25 # A party with at least this score is considered to be desired in government even if legitimacy is above MIN_GOVERNMENT_LEGITIMACY IDEOLOGICAL_OPINION_LAW_APPROVAL_THRESHOLD = 0.5 # If ruling IGs have at least this much approval/disapproval for a law on average, it affects ideological opinion IDEOLOGICAL_OPINION_STRONG_STANCE_THRESHOLD = 1.5 # If ruling IGs have at least this much approval/disapproval for a law on average, IDEOLOGICAL_OPINION_STRONG_STANCE_EFFECT_MULT comes into effect IDEOLOGICAL_OPINION_SAME_LAW_STANCE_EFFECT = 0.5 # Added to ideological opinion for each law both governments approve or disapprove of IDEOLOGICAL_OPINION_DIFFERENT_LAW_STANCE_EFFECT = -1 # Added to ideological opinion for each law where one government approves and the other disapproves IDEOLOGICAL_OPINION_STRONG_STANCE_EFFECT_MULT = 2 # If AI has a strong stance on a law, multiply its effects on ideological opinion by this UNIFICATION_MIN_SUPPORT_SCORE = 50 # Support for one country-formation candidate needs to be at least this much above all competitors to support unification UNIFICATION_BASE_VALUE = 0 UNIFICATION_SUPPORTER_DEFAULT_RANK_VALUE = 4 # Rank value is compared to this value for computing supporter rank factor UNIFICATION_SUPPORTER_RANK_FACTOR = -10 # Multiplied by rank value delta to supporter default rank UNIFICATION_CANDIDATE_DEFAULT_RANK_VALUE = 6 # Rank value is compared to this value for computing candidate rank factor UNIFICATION_CANDIDATE_RANK_FACTOR = 10 # Multiplied by rank value delta to candidate default rank UNIFICATION_RELATIONS_HOSTILE_FACTOR = -50 UNIFICATION_RELATIONS_COLD_FACTOR = -25 UNIFICATION_RELATIONS_POOR_FACTOR = -10 UNIFICATION_RELATIONS_CORDIAL_FACTOR = 10 UNIFICATION_RELATIONS_AMICABLE_FACTOR = 25 UNIFICATION_RELATIONS_FRIENDLY_FACTOR = 50 UNIFICATION_ATTITUDE_DISINTERESTED_FACTOR = -25 UNIFICATION_ATTITUDE_CAUTIOUS_FACTOR = -25 UNIFICATION_ATTITUDE_CONCILIATORY_FACTOR = 0 UNIFICATION_ATTITUDE_COOPERATIVE_FACTOR = 25 UNIFICATION_ATTITUDE_GENIAL_FACTOR = 50 UNIFICATION_ATTITUDE_WARY_FACTOR = -50 UNIFICATION_ATTITUDE_BELLIGERENT_FACTOR = -100 UNIFICATION_ATTITUDE_ANTAGONISTIC_FACTOR = -100 UNIFICATION_ATTITUDE_LOYAL_FACTOR = 100 UNIFICATION_ATTITUDE_REBELLIOUS_FACTOR = -100 UNIFICATION_ATTITUDE_PROTECTIVE_FACTOR = -50 UNIFICATION_ATTITUDE_DOMINEERING_FACTOR = -100 RAISE_TAX_TO_DESIRED_INCOME_THRESHOLD = 1.25 RAISE_TAX_ABOVE_DESIRED_INCOME_NO_DEBT_THRESHOLD = 0.9 RAISE_TAX_ABOVE_DESIRED_INCOME_WITH_DEBT_THRESHOLD = 1.1 LOWER_TAX_TO_DESIRED_INCOME_THRESHOLD = 1.5 LOWER_TAX_BELOW_DESIRED_INCOME_THRESHOLD = 2.0 RAISE_TAX_HIGH_DEBT_OVERRIDE_RATIO = 0.2 # At this amount of debt, any level of tax is OK to deal with it CONSTRUCTION_MAX_NUM_NON_GOVERNMENT_CONSTRUCTIONS_BASE = 1 # If country has this number of non-government building constructions queued, don't add anymore (base) CONSTRUCTION_MAX_NUM_NON_GOVERNMENT_CONSTRUCTIONS_SCALED = 0.05 # If country has this number of non-government building constructions queued, don't add anymore (scaled by construction production) CONSTRUCTION_MAX_NUM_NON_GOVERNMENT_CONSTRUCTIONS_SCALED_MAX = 19 # CONSTRUCTION_MAX_NUM_NON_GOVERNMENT_CONSTRUCTIONS_SCALED can't be higher than this CONSTRUCTION_MAX_NUM_GOVERNMENT_CONSTRUCTIONS_BASE = 1 # If country has this number of government building constructions queued, don't add anymore (base) CONSTRUCTION_MAX_NUM_GOVERNMENT_CONSTRUCTIONS_SCALED = 0.05 # If country has this number of government building constructions queued, don't add anymore (scaled by construction production) CONSTRUCTION_MAX_NUM_GOVERNMENT_CONSTRUCTIONS_SCALED_MAX = 19 # CONSTRUCTION_MAX_NUM_GOVERNMENT_CONSTRUCTIONS_SCALED can't be higher than this CONSTRUCTION_WANTED_SUPPLY_OF_CONSTRUCTION_GOODS = 1.0 # Try to import construction goods if supply-to-demand ratio is below this CONSTRUCTION_RESERVES_NEW_CONSTRUCTIONS = 0.2 # If gold reserves are less than this after adding the cost of a new construction, don't queue it CONSTRUCTION_DEBT_RESUME = 0.2 # If constructions are paused, resume once debt is this low relative to ceiling CONSTRUCTION_DEBT_PAUSE = 0.4 # If in this much relative debt to debt ceiling, pause all non-critical constructions CONSTRUCTION_DEBT_RESUME_CRITICAL_CONSTRUCTION = 0.75 # If critical constructions are paused, resume once debt is this low relative to ceiling CONSTRUCTION_DEBT_PAUSE_CRITICAL_CONSTRUCTION = 0.90 # If in this much relative debt to debt ceiling, pause all critical constructions START_DIPLO_PLAY_RANDOM_FACTOR = 2.0 # The higher this is, the more random AI will be on where to target when starting diplo plays START_DIPLO_PLAY_ALLY_STRENGTH_WEIGHT = 0.75 # Consider participants that will for sure join a side with this amount of their forces START_DIPLO_PLAY_LIKELY_ALLY_STRENGTH_WEIGHT = 0.5 # Consider participants that will likely to join a side with this amount of their forces START_DIPLO_PLAY_POTENTIAL_ALLY_STRENGTH_WEIGHT = 0.33 # Consider participants that might be swayed to our side with with this amount of their forces DIPLO_PLAY_BACK_DOWN_CHANCE_THRESHOLD = 25 # If ( confidence + boldness ) is less than this, consider backing down DIPLO_PLAY_BACK_DOWN_CHANCE_ESCALATION = 30 # Above this escalation, AI will consider backing down DIPLO_PLAY_BACK_DOWN_GUARANTEED_THRESHOLD = -25 # If ( confidence + boldness ) is less than this, always back down before the play goes to war DIPLO_PLAY_BACK_DOWN_GUARANTEED_ESCALATION = 95 # Above this escalation, AI will always back down if it's supposed to DIPLO_PLAY_BACK_DOWN_CHANCE_LOW_ESCALATION = 0.1 # 1.0 = 1% (chance each tick) - used before countdown to war starts DIPLO_PLAY_BACK_DOWN_CHANCE_HIGH_ESCALATION = 0.5 # 1.0 = 1% (chance each tick) - used after countdown to war starts DIPLO_PLAY_BACK_DOWN_CHANCE_WAR_LOSSES_MULT = 0.5 # Multiply chance of backing down due to additional wargoal demands ( 1 + this * relative impact of additional wargoals ) DIPLO_PLAY_BACK_DOWN_CHANCE_WAR_LOSSES_MAX = 3.0 # Max multiplier for impact of additional wargoal demands (including the base of 1) DIPLO_PLAY_SWAY_THRESHOLD = 2.0 # If AI has this much military strength compared to enemy, don't bother trying to sway anyone DIPLO_PLAY_DECIDE_ON_SUPPORT_ESCALATION = 30 # Above this escalation, AI will potentially start taking sides (or declare neutrality) even if not swayed DIPLO_PLAY_TAKE_SIDES_MIN_BOLDNESS = 50 # Boldness must be at least this for AI to want to take a side with no gain DIPLO_PLAY_TAKE_SIDES_CHANCE = 0.001 # Multiplied by boldness for chance of taking sides each tick DIPLO_PLAY_TAKE_SIDES_CONTAINMENT_MULT = 10 # Chance of taking sides in a containment play is multiplied by this DIPLO_PLAY_DECLARE_NEUTRALITY_CHANCE = 0.001 # Multiplied by neutrality for chance of declaring neutrality each tick (only if there's no side the country prefers OR play has reached countdown to war) DIPLO_PLAY_DECLARE_NEUTRALITY_HIGH_ESCALATION_MULT = 20 # Chance of declaring neutrality during countdown to war is multiplied by this DIPLO_PLAY_ABANDON_SUPPORT_CHANCE = 0.1 # Multiplied with negative support score DIPLO_PLAY_SWAY_COUNTRIES_ESCALATION = 20 # Above this escalation, AI will potentially start swaying countries DIPLO_PLAY_SWAY_COUNTRIES_CHANCE = 5 # Chance each tick that the AI will try to sway someone DIPLO_PLAY_TIMED_WEIGHT_DURATION = 12 # When AI randomly determines sympathy for one side of a diplo play, how long does that weight stay DIPLO_PLAY_PREFERENCE_THRESHOLD = 25 # At this delta, an AI country is considered to have a preference for that side of the diplo play DIPLO_PLAY_WEAK_ABANDON_SUPPORT_THRESHOLD = -25 # If support for the side an AI country is backing drops below this, consider abandoning it DIPLO_PLAY_STRONG_ABANDON_SUPPORT_THRESHOLD = -50 # If support for the side an AI country is backing drops below this, abandon it immediately DIPLO_PLAY_ABANDON_ALLY_RELUCTANCE = 25 # Added to support score when considering whether to abandon an ally DIPLO_PLAY_ABANDON_SUBJECT_RELUCTANCE = 50 # Added to support score when considering whether to abandon a subject DIPLO_PLAY_SWAY_DAYS_LEFT_MAX = 5 # AI will not answer a sway offer when it has more than this amount of days left (should map to SWAY_OFFER_TIMEOUT_DAYS) DIPLO_PLAY_SWAY_DAYS_LEFT_MIN = 2 # AI will always answer a sway offer when it has this or less amount of days left (should map to SWAY_OFFER_TIMEOUT_DAYS) DIPLO_PLAY_SWAY_ANSWER_CHANCE = 10 # Chance per tick of AI answering a sway offer (1 = 1%) DIPLO_PLAY_WEAK_ARMY_THRESHOLD = 0.5 # If our army strength compared to the average for each country involved in the play is less than this, weak army effects will apply DIPLO_PLAY_STRONG_ARMY_THRESHOLD = 1.0 # If our army strength compared to the average for each country involved in the play is at least than this, strong army effects will start to apply DIPLO_PLAY_STRONG_ARMY_MAX = 3.0 # Maximum strong army effects apply at this threshold DIPLO_PLAY_FORCE_BALANCE_SCALE = 4.0 # At this military-strength-to-enemies ratio, max effects from the balance of the two sides' militaries is applied DIPLO_PLAY_FORCE_BALANCE_NAVY_FACTOR = 0.1 # Naval power projection counts for this much compared to army power projection when determining military strength to enemies DIPLO_PLAY_FORCE_BALANCE_MOBILIZATION_FACTOR = 1.0 # A country's military forces are considered to be ( 1 + this * fully mobilized unit ratio ) much stronger in a play for purposes of confidence, etc DIPLO_PLAY_STATE_STABILITY_UNINCORPORATED_WEIGHT_MULT = 0.25 # Weight for devastation, radicals & loyalists in unincorporated states is multiplied by this # Boldness determines the confidence threshold at which the AI will back down in a play # Each individual boldness factor is multiplied a dice roll range of (x0 to x1) for actual boldness value in each play - boldness can end up negative! # Boldness also plays a role for determining whether undecided countries will join a play unprompted # Base boldness is set by the country's AI strategies DIPLO_PLAY_BOLDNESS_FROM_RANK = 3 # Multiplied by country's rank value and added to boldness range DIPLO_PLAY_BOLDNESS_WEAK_ARMY_FACTOR = -25 # Scaled by our relative forces compared to DIPLO_PLAY_WEAK_ARMY_THRESHOLD DIPLO_PLAY_BOLDNESS_INCORPORATED_DEFENSE = 25 # Add this boldness if we the enemy wants to take our incorporated state as their primary wargoal DIPLO_PLAY_BOLDNESS_EXISTENTIAL_PLAY = 75 # Add this boldness if in an existential play (replaces DIPLO_PLAY_BOLDNESS_INCORPORATED_DEFENSE) DIPLO_PLAY_BOLDNESS_CONTAINMENT_PLAY = 50 # Add this boldness if in a containment play # Confidence is added to boldness to determine whether the AI is willing to back down DIPLO_PLAY_CONFIDENCE_FORCE_BALANCE_FACTOR = 75 # Confidence level if force balance to the enemy is at DIPLO_PLAY_FORCE_BALANCE_SCALE, scaled down if lower DIPLO_PLAY_CONFIDENCE_STRONG_ARMY_FACTOR = 15 # Scaled by our relative forces compared to DIPLO_PLAY_STRONG_ARMY_MAX DIPLO_PLAY_CONFIDENCE_CIVIL_WAR_OR_UPRISING = 50 # Add this confidence to both sides in a civil war or native uprising DIPLO_PLAY_CONFIDENCE_FROM_TURMOIL = -15 # At 100% turmoil across the country (weighted by state population), subtract this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_LOYALISTS = 15 # At 100% turmoil across the country (weighted by state population), add this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_DEVASTATION = -15 # At 100% devastation, subtract this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_DEBT_LEVEL = -25 # At 100% debt level, subtract this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_GOLD_RESERVES = 15 # At 100% gold reserves, add this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_OWN_CONFLICTS = -25 # If we are in another conflict where military strength compared to our enemies is equal to or above DIPLO_PLAY_FORCE_BALANCE_SCALE, subtract this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_ENEMY_TURMOIL = 10 # At 100% turmoil across the enemy country (weighted by state population), add this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_ENEMY_DEVASTATION = 10 # At 100% devastation for enemy, add this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_ENEMY_DEBT_LEVEL = 10 # At 100% debt level for enemy, add this amount of confidence DIPLO_PLAY_CONFIDENCE_FROM_ENEMY_CONFLICTS = 25 # If the other side is in another conflict where military strength compared to their enemies is equal to or above DIPLO_PLAY_FORCE_BALANCE_SCALE, add this amount of confidence DIPLO_PLAY_CONFIDENCE_VERY_LOW_THRESHOLD = -50 # If confidence is this or below, show it as very low DIPLO_PLAY_CONFIDENCE_LOW_THRESHOLD = -25 # If confidence is this or below, show it as low DIPLO_PLAY_CONFIDENCE_HIGH_THRESHOLD = 25 # If confidence is this or above, show it as high DIPLO_PLAY_CONFIDENCE_VERY_HIGH_THRESHOLD = 50 # If confidence is this or above, show it as very high # Below data is used to determine which side the AI wants to join a diplo play, if any # Neutrality is a calculated value that determines how much a country wants to stay out of a diplo play # In order for a country to join, their side preference score must beat out both the enemy's side preference score AND the neutrality score # Base neutrality is set by the country's AI strategies DIPLO_PLAY_NEUTRALITY_MIN = 0 DIPLO_PLAY_NEUTRALITY_PREFERENCE_DELTA_THRESHOLD = 50 # If the preference delta between the two sides is less than this, add the difference between the delta and this value to neutrality score DIPLO_PLAY_NEUTRALITY_FROM_DEBT_LEVEL = 100 # At 100% debt level, add this amount of neutrality score DIPLO_PLAY_NEUTRALITY_FROM_DEVASTATION_LEVEL = 100 # At 100% devastation across the country (weighted by state population), add this amount of neutrality score DIPLO_PLAY_NEUTRALITY_FROM_TURMOIL = 100 # At 100% turmoil across the country (weighted by state population), add this amount of neutrality score DIPLO_PLAY_NEUTRALITY_IN_SUBJECT_CONFLICT = -50 # If either side in the play is a subject, subtract this amount of neutrality score DIPLO_PLAY_NEUTRALITY_IN_NATIVE_UPRISING = 50 # Added to neutrality score for native uprising type conflicts DIPLO_PLAY_NEUTRALITY_FROM_ONGOING_CONFLICTS = 200 # If in a conflict where military strength compared to the enemy is equal to or above DIPLO_PLAY_FORCE_BALANCE_SCALE, add this amount of neutrality score DIPLO_PLAY_NEUTRALITY_FROM_LOWER_RANK = 5 # For each rank value difference between us and the lowest ranked participant in the play, if we're higher rank than them DIPLO_PLAY_NEUTRALITY_FROM_NO_ARMY = 1000 # If we have no army at all, add this to neutrality score DIPLO_PLAY_NEUTRALITY_WEAK_ARMY_FACTOR = 100 # Scaled by our relative forces compared to DIPLO_PLAY_WEAK_ARMY_THRESHOLD # Sympathy is added together and then multiplied by a dice roll range of (x0 to x1) to give the AI a random preference for each side in a particular play # Sympathy above 0 is added directly to the willingness to join that side in the play # Sympathy for a side can be below 0, but has no additional effect other than acting as a buffer against sympathy increases DIPLO_PLAY_SYMPATHY_BASE_INITIATOR = 50 # The base size of the random sympathy range for attacker in diplomatic play DIPLO_PLAY_SYMPATHY_BASE_TARGET = 75 # The base size of the random sympathy range for defender in diplomatic play DIPLO_PLAY_SYMPATHY_ENEMY_OF_SUBJECT_INITIATOR = -100 # Subtracted from sympathy range for enemies of our subjects if the enemy is the attacker DIPLO_PLAY_SYMPATHY_ENEMY_OF_SUBJECT_TARGET = -25 # Subtracted from sympathy range for enemies of our subjects if the enemy is the defender DIPLO_PLAY_SYMPATHY_ENEMY_OF_ALLY_INITIATOR = -50 # Subtracted from sympathy range for enemies of our allies if the enemy is the attacker DIPLO_PLAY_SYMPATHY_ENEMY_OF_ALLY_TARGET = -25 # Subtracted from sympathy range for enemies of our allies if the enemy is the defender DIPLO_PLAY_SYMPATHY_ENEMY_OF_INFAMOUS_COUNTRY = 25 # Added to sympathy range for enemy of infamous country DIPLO_PLAY_SYMPATHY_ENEMY_OF_NOTORIOUS_COUNTRY = 50 # Added to sympathy range for enemy of notorious country DIPLO_PLAY_SYMPATHY_ENEMY_OF_PARIAH_COUNTRY = 100 # Added to sympathy range for enemy of pariah country DIPLO_PLAY_SYMPATHY_LENIENT_AI_GAME_RULE = 35 # Added to sympathy range for player when using lenient AI game rule DIPLO_PLAY_SYMPATHY_HARSH_AI_GAME_RULE = -35 # Subtracted to sympathy range for player when using harsh AI game rule DIPLO_PLAY_SYMPATHY_INCREASE_GAINED_BACKER = 100 # Sympathy is increased by up to this amount for enemy of a side which receives a new backer, scaled by their number of battalions compared to total forces in the play DIPLO_PLAY_SYMPATHY_INCREASE_LOST_BACKER = 50 # Sympathy is increased by up to this amount for a side which loses a backer, scaled by their number of battalions compared to total forces in the play DIPLO_PLAY_SYMPATHY_INCREASE_NEW_WARGOAL = 1 # Sympathy is increased by up to this amount * accured infamy for enemy of a side which adds a new wargoal DIPLO_PLAY_SYMPATHY_INCREASE_SWAYED_WITH_WARGOAL = 0.5 # Sympathy is increased by up to this amount * accured infamy for enemy of a side which adds a new wargoal through swaying DIPLO_PLAY_SWITCH_SIDES_FACTOR = -10 # If AI has already picked a side, add reluctance to accept further sway offers DIPLO_PLAY_IDEOLOGICAL_OPINION_FACTOR = 1 # Ideological opinion is multiplied by this and added to acceptance to join a side DIPLO_PLAY_IDEOLOGICAL_OPINION_REVOLUTION_MULT = 3 # DIPLO_PLAY_IDEOLOGICAL_OPINION_FACTOR is multiplied by this in a revolution play DIPLO_PLAY_SECESSION_OWN_SECESSION_RISK_FACTOR = -100 # Add this amount of reluctance for AI to back a secession of a culture that has enough pops in their own country to secede DIPLO_PLAY_NON_ALLY_RECOGNITION_FACTOR = -100 # Add this amount of reluctance for AI to back a recognition demand from a non-allied unrecognized power # Diplo play scoring for relations levels DIPLO_PLAY_RELATIONS_HOSTILE_FACTOR = -50 DIPLO_PLAY_RELATIONS_COLD_FACTOR = -25 DIPLO_PLAY_RELATIONS_POOR_FACTOR = -10 DIPLO_PLAY_RELATIONS_CORDIAL_FACTOR = 10 DIPLO_PLAY_RELATIONS_AMICABLE_FACTOR = 25 DIPLO_PLAY_RELATIONS_FRIENDLY_FACTOR = 50 # Diplo play scoring for attitudes (with scoring against both primary and backers) DIPLO_PLAY_ATTITUDE_DISINTERESTED_FACTOR = 0 DIPLO_PLAY_ATTITUDE_DISINTERESTED_BACKER_FACTOR = 0 DIPLO_PLAY_ATTITUDE_CAUTIOUS_FACTOR = 0 DIPLO_PLAY_ATTITUDE_CAUTIOUS_BACKER_FACTOR = 0 DIPLO_PLAY_ATTITUDE_CONCILIATORY_FACTOR = 10 DIPLO_PLAY_ATTITUDE_CONCILIATORY_BACKER_FACTOR = 5 DIPLO_PLAY_ATTITUDE_COOPERATIVE_FACTOR = 15 DIPLO_PLAY_ATTITUDE_COOPERATIVE_BACKER_FACTOR = 5 DIPLO_PLAY_ATTITUDE_GENIAL_FACTOR = 25 DIPLO_PLAY_ATTITUDE_GENIAL_BACKER_FACTOR = 10 DIPLO_PLAY_ATTITUDE_WARY_FACTOR = -10 DIPLO_PLAY_ATTITUDE_WARY_BACKER_FACTOR = -5 DIPLO_PLAY_ATTITUDE_BELLIGERENT_FACTOR = -50 DIPLO_PLAY_ATTITUDE_BELLIGERENT_BACKER_FACTOR = -25 DIPLO_PLAY_ATTITUDE_ANTAGONISTIC_FACTOR = -50 DIPLO_PLAY_ATTITUDE_ANTAGONISTIC_BACKER_FACTOR = -25 DIPLO_PLAY_ATTITUDE_LOYAL_FACTOR = 100 DIPLO_PLAY_ATTITUDE_LOYAL_BACKER_FACTOR = 25 DIPLO_PLAY_ATTITUDE_REBELLIOUS_FACTOR = -100 DIPLO_PLAY_ATTITUDE_REBELLIOUS_BACKER_FACTOR = -50 DIPLO_PLAY_ATTITUDE_PROTECTIVE_FACTOR = 50 DIPLO_PLAY_ATTITUDE_PROTECTIVE_BACKER_FACTOR = 20 DIPLO_PLAY_ATTITUDE_DOMINEERING_FACTOR = -10 DIPLO_PLAY_ATTITUDE_DOMINEERING_BACKER_FACTOR = 0 DIPLO_PLAY_SWAY_RANDOM_FACTOR = 1.0 # The higher this is, the more random the AI will be about which countries it tries to sway first DIPLO_PLAY_SWAY_CALL_IN_OBLIGATION = 1000 # When calling in an obligation DIPLO_PLAY_SWAY_MINIMUM_OBLIGATION_VALUE = 10 # Obligations worth less than this are rejected DIPLO_PLAY_SWAY_WARGOAL_WEAK_SWAYER_CONFIDENT_IN_OWN_ARMY_FACTOR = 0.25 # This much of the penalty for a 'weak' sway offer is removed if the target believes they can achieve the wargoal themselves DIPLO_PLAY_SWAY_WARGOAL_FACTOR = 1.0 # Multiplied by wargoal value DIPLO_PLAY_SWAY_WARGOAL_THRESHOLD = 10 # A wargoal needs at least this base value to be wanted as part of sway offer DIPLO_PLAY_SWAY_WARGOAL_MINIMUM_SWAYER_MULTIPLIER_INITIATOR = 0.2 # If a wargoal sway offer from initiator is less than this fraction of its base value due to weakness of the swayer, consider it an unwanted wargoal DIPLO_PLAY_SWAY_WARGOAL_MINIMUM_SWAYER_MULTIPLIER_TARGET = 0.05 # If a wargoal sway offer from target is less than this fraction of its base value due to weakness of the swayer, consider it an unwanted wargoal DIPLO_PLAY_SWAY_UNWANTED_OFFER = -1000 # For being offered unwanted wargoal or obligation DIPLO_PLAY_ADD_WARGOAL_THRESHOLD = 20 # A wargoal needs at least this value for AI to add it to the play LOW_AGGRESSION_BASE_EFFECT_MULT = 0.5 # The impact of low ai aggression game rule on how often the AI starts diplomatic plays HIGH_AGGRESSION_BASE_EFFECT_MULT = 1.5 # The impact of high ai aggression game rule on how often the AI starts diplomatic plays LOW_AGGRESSION_INFAMY_ACCEPTANCE_MULT = 0.5 # The amount of infamy the AI considers undesirable/unacceptable is multiplied by this for low aggression AI HIGH_AGGRESSION_INFAMY_ACCEPTANCE_MULT = 1.5 # The amount of infamy the AI considers undesirable/unacceptable is multiplied by this for low aggression AI AI_AGGRESSION_MAX_ACCEPTABLE_INFAMY = 100 # Undesirable/unacceptable infamy will not be set above this from high aggression # Below data is used to determine which wargoals the AI will pick WAR_GOAL_RANDOM_FACTOR = 2.0 # The higher this is, the more random AI wargoal selection will be WAR_GOAL_UNDESIRABLE_INFAMY_FACTOR = 0.5 # Wargoal value is multiplied by this if it would bring the country above undesirable infamy levels WAR_GOAL_UNACCEPTABLE_INFAMY_FACTOR = 0 # Wargoal value is multiplied by this if it would bring the country above unacceptable infamy levels # Below data is used to determine which techs the AI will research TECH_BASE_WEIGHT = 100 TECH_RANDOM_FACTOR = 2.0 # The higher this is, the more random AI tech research will be TECH_REMAINING_COST_FACTOR = 0.01 # The higher this is, the more averse the AI will be to researching techs that will take a long time # Below data is used to determine which states the AI should incorporate INCORPORATE_STATE_MIN_POPULATION = 200000 # Min population in a homeland state for the AI to incorporate it # Below data is used to determine which states are most important to defend DEFEND_STATE_BARRACKS_WEIGHT = 1 # Per level of barracks DEFEND_STATE_BARRACKS_MAX_WEIGHT = 20 # Per state DEFEND_STATE_NAVAL_BASE_WEIGHT = 0.5 # Per level of naval base DEFEND_STATE_NAVAL_BASE_MAX_WEIGHT = 10 # Per state DEFEND_STATE_CAPITAL_WEIGHT = 25 DEFEND_STATE_CAPITAL_WAR_NEGOTIATOR_WEIGHT = 100 DEFEND_STATE_WARGOAL_WEIGHT = 100 DEFEND_STATE_INCORPORATED_WEIGHT_MULT = 1.5 # Below data is used to determine which states are most important to invade INVADE_STATE_BARRACKS_WEIGHT = 1 # Per level of barracks INVADE_STATE_BARRACKS_MAX_WEIGHT = 20 # Per state INVADE_STATE_NAVAL_BASE_WEIGHT = 0.5 # Per level of naval base INVADE_STATE_NAVAL_BASE_MAX_WEIGHT = 10 # Per state INVADE_STATE_CAPITAL_WEIGHT = 25 INVADE_STATE_CAPITAL_WAR_NEGOTIATOR_WEIGHT = 100 INVADE_STATE_WARGOAL_WEIGHT = 100 INVADE_STATE_INCORPORATED_WEIGHT_MULT = 1.5 # Below data is used for naval invasions: NAVAL_INVASION_RANDOM_FACTOR = 0.5 # The higher this is, the more random AI naval invasion theater selection will be NAVAL_INVASION_MIN_RELATIVE_LOCAL_ARMY_STRENGTH = 0.25 # AI wants at least this fraction of defending army strength to risk a naval invasion NAVAL_INVASION_MIN_RELATIVE_LOCAL_NAVY_STRENGTH = 0.5 # AI wants at least this fraction of defending naval strength to risk a naval invasion NAVAL_INVASION_MIN_RELATIVE_GLOBAL_NAVY_STRENGTH_ATTACKER = 0.25 # AI wants at least this fraction of naval strength in the overall war to risk a naval invasion as the attacking war side NAVAL_INVASION_MIN_RELATIVE_GLOBAL_NAVY_STRENGTH_DEFENDER = 0.5 # AI wants at least this fraction of naval strength in the overall war to risk a naval invasion as the defending war side NAVAL_INVASION_COOLDOWN_DAYS = 60 # After launching a naval invasion, the AI will wait at least this long before launching another NAVAL_INVASION_MIN_SCORE = 100 # AI won't bother launching naval invasions against theaters with a lower total state score than this NAVAL_INVASION_MAX_LOCAL_FRONT_SCORE = 100 # Don't launch a naval invasion if there is a local front of at least this total score for the general # Below data is used for General Orders: HQ_DEFENSE_MIN_THEATER_SCORE = 100 # Theater of local HQ must have at least this importance score to have a minimum garrison HQ_DEFENSE_MIN_WANTED_LAND_GARRISON = 0.15 # Keep at least this number of local troops to garrison important HQs against enemy invasion MAX_CONVOY_USAGE_FOR_SUPPLY_ROUTES = 0.5 # AI will not commit more than this fraction of its convoys to supporting overseas operations # If a front is worth less than this, the AI will not assign any generals to it FRONT_IMPORTANCE_MIN_SCORE = 50 # Below data is for evaluating Commander Orders FRONT_IMPORTANCE_OWN_FRONT_WEIGHT_MULT = 2.0 # Fronts that we 'own' have the importance of their states multiplied by this # If the AI has less units than its enemy on a front, this weight is applied to the importance that front has when deciding to attack/defend it. # Use a value >= 1.0. Example: 1.2 means: add 20% importance to a front when in disadvantage. FRONT_IMPORTANCE_WHEN_IN_DISADVANTAGE_WEIGHT_MULT = 1.2 # A percentage [0.0, 1.0] representing how many AI units are on a front out of the total (AI's + Enemy's) units, used to # determine when to start applying FRONT_IMPORTANCE_WEIGHT_WHEN_IN_DISADVANTAGE. UNITS_PERCENTAGE_TO_BE_CONSIDERED_IN_DISADVANTAGE = 0.50 # When considering whether to move a general to a particular location, the disparity between wanted and current units of the new location is divided 1 + any relevant values below # This is done to prevent the AI from making costly moves that would only result in small efficiency increases FRONT_UNIT_DISPARITY_FOR_MOVE_TRAVEL_TIME_FACTOR = 0.02 # Each day of travel time adds this much to the divisor FRONT_ACTIVE_WAR_MOVE_FACTOR = 1.0 # If a general is in an active war front, add this value to the divisor FRONT_IN_DISADVANTAGE_FACTOR = 10.0 # If a general is in an active war front with disadvantage, add this value to the divisor # At what fraction of combat strength compared to the enemy and overall morale will the AI attack FRONT_STRENGTH_FACTOR_TO_INVADE = 0.75 FRONT_MIN_MORALE_TO_ATTACK = 0.5 # Below data is used for Admiral Orders: ADMIRAL_ORDERS_RANDOM_FACTOR = 0.5 # The higher this is, the more random AI will be in selection of admiral orders ADMIRAL_ORDERS_MIN_OFFENSIVE_FRACTION = 0.25 # Min fraction the AI will use for offensive operations ADMIRAL_ORDERS_MAX_OFFENSIVE_FRACTION = 0.50 # Max fraction the AI will use for offensive operations ADMIRAL_ORDERS_BASE_OFFENSIVE_FRACTION = 0.375 # How much of its naval forces will the AI use for offensive operations at 100% relative navy strength ADMIRAL_ORDERS_OFFENSIVE_FRACTION_SCALING = 0.25 # Fraction the AI will use for offensive operations will be multiplied or divided by (1 + ((stronger side strength ratio - 1) * this)) based on who in the war has the stronger navy ADMIRAL_ORDERS_STANCE_CHANGE_CHANCE = 0.33 # The chance that an admiral will change their stance from offensive to defensive or vice versa each AI update (1 = 100%) ADMIRAL_ORDERS_RAID_CONVOYS_LANE_SIZE_FACTOR = 1 # Multiplied by the number of convoys that the target shipping lane uses ADMIRAL_ORDERS_RAID_CONVOYS_MILITARY_IMPORTS_MULT = 5.0 # Score for shipping lanes that are importing military goods to enemies is multiplied by this ADMIRAL_ORDERS_RAID_CONVOYS_ARMY_SUPPLY_ROUTE_MULT = 3.0 # Score for shipping lanes supporting overseas armies is multiplied by this ADMIRAL_ORDERS_RAID_CONVOYS_ARMY_OWN_TERRITORY_SUPPLY_ROUTE_MULT = 10.0 # Score for shipping lanes supporting overseas armies on our fronts is multiplied by this ADMIRAL_ORDERS_ESCORT_CONVOYS_RELATIVE_LANE_SIZE_FACTOR = 100 # Apply this score relative to fraction of owning country's convoys used ADMIRAL_ORDERS_ESCORT_CONVOYS_ABSOLUTE_LANE_SIZE_FACTOR = 0.1 # Apply this score per actual convoy used by the route ADMIRAL_ORDERS_ESCORT_CONVOYS_LANE_SIZE_FACTOR_MAX = 200 # Total lane size factor cannot be above this ADMIRAL_ORDERS_ESCORT_CONVOYS_PORT_CONNECTION_WAR_MULT = 0.1 # Score for shipping lanes supporting overseas ports multiplied by this while at war ADMIRAL_ORDERS_ESCORT_CONVOYS_PORT_CONNECTION_PEACE_MULT = 1.0 # Score for shipping lanes supporting overseas ports multiplied by this while not at war ADMIRAL_ORDERS_ESCORT_CONVOYS_MILITARY_IMPORTS_WAR_MULT = 2.0 # Score for shipping lanes that are importing military goods to our market while at war is multiplied by this ADMIRAL_ORDERS_ESCORT_CONVOYS_ARMY_SUPPLY_ROUTE_MULT = 2.0 # Score for shipping lanes supporting our overseas armies is multiplied by this ADMIRAL_ORDERS_ESCORT_CONVOYS_ACTIVE_RAIDERS_MULT = 2.0 # Score for shipping lanes that are being actively raided by the enemy is multiplied by this ADMIRAL_ORDERS_INTERCEPTION_PEACE_NEGOTIATOR_CAPITAL_FACTOR = 300 # Score for defending allied peace negotiator capital region with interception order ADMIRAL_ORDERS_INTERCEPTION_OWN_CAPITAL_FACTOR = 1000 # Score for defending our capital region with interception order ADMIRAL_ORDERS_INTERCEPTION_WARGOAL_FACTOR = 100 # Score for defending wargoal targeting ally with interception order ADMIRAL_ORDERS_INTERCEPTION_WARGOAL_OWN_TERRITORY_FACTOR = 500 # Score for defending wargoal targeting us with interception order # Below data is used to determine which regions are most important to declare an interest in DECLARE_INTEREST_RANDOM_FACTOR = 1.0 # The higher this is, the more random AI declare interest will be DECLARE_INTEREST_BASE_SCORE = 100 DECLARE_INTEREST_GDP_DIVISOR = 200000 DECLARE_INTEREST_GDP_WEIGHT = 5 # Per DECLARE_INTEREST_GDP_DIVISOR GDP DECLARE_INTEREST_GDP_MAX_WEIGHT = 50 DECLARE_INTEREST_RIVAL_FACTOR = 25 # For each rival with an interest in the region DECLARE_INTEREST_SUPPORTS_TRADE_ROUTE_FACTOR = 1000 # Add if this interest is in a market with which we have a trade route (and there is no other interest that would support it) DECLARE_INTEREST_SUPPORTS_DIPLOMATIC_PACT_FACTOR = 1000 # Add if this interest is in a country with which we have a diplomatic pact (and there is no other interest that would support it) DECLARE_INTEREST_ADJACENT_REGION_MULT = 1.5 # If an AI country has too many colonial/non-colonial interests, subtract the score of those type of interests by this DECLARE_INTEREST_WRONG_INTEREST_TYPE_FACTOR = -100 # Below data is used to determine which states should be colonized first NUM_GROWING_COLONIES_BASE = 1 # How many colonies will the AI keep growing at once (base amount) NUM_GROWING_COLONIES_SCALED = 0.01 # 1 extra colony at once per this amount of colonial growth points NUM_GROWING_COLONIES_MAX = 5 # No more than this amount of growing colonies at once, regardless of amount of colonial growth points COLONY_BASE_WEIGHT = 50 COLONY_POPULATION_WEIGHT = 0.2 # Per 10000 pops COLONY_ARABLE_LAND_WEIGHT = 10 COLONY_ADJACENT_WEIGHT_MULT = 10.0 COLONY_UNCONTESTED_WEIGHT_MULT = 3.0 COLONY_RANDOM_FACTOR = 2 # This determines how much of their potential conscripts' needed military goods the AI will try to supply even when those conscripts are not raised CONSCRIPTION_CENTER_MILITARY_SPENDING_TARGET_BASE = 0.1 # Multiplied by the country's ratio of conscripts to regular troops CONSCRIPTION_CENTER_MILITARY_SPENDING_TARGET_MAX = 0.5 # Spending target cannot exceed this amount # Below data is used to determine how the AI invests into institution INSTITUTION_INVESTMENT_RANDOM_FACTOR = 1.0 # The higher this is, the more random AI institution selection will be INSTITUTION_CURRENT_INVESTMENT_DIVISOR = 0.25 # Score for institution is divided by 1 + ( current levels after the first * this ) MAX_INSTITUTION_SPENDING = 0.005 # AI will not spend more BUR than this on institutions (scaled by weekly GDP) INSTITUTION_SPENDING_INCREASE_SPENDING_RATIO = 1.0 # If current + additional institution spending is equal or less than max spending * this, try to improve some institutions INSTITUTION_SPENDING_DECREASE_SPENDING_RATIO = 2.0 # If current institution spending is at least max spending * this, try to degrade some institutions # Below data is used to calculate how much weight the AI places on different things it can spend its weekly money income on MONEY_SPENDING_RANDOM_FACTOR = 2.0 # The higher this is, the more random new AI money spending will be MONEY_SPENDING_MAX_RATIO_TO_REMOVE_SHOULD_HAVE = 1.05 # How low of a income-to-expenses ratio does the AI need to have to consider reducing spending on a 'should-have' MONEY_SPENDING_MAX_RATIO_TO_REMOVE_WANTS_TO_HAVE = 1.10 # How low of a income-to-expenses ratio does the AI need to have to consider reducing spending on a 'wants-to-have' MONEY_SPENDING_MAX_RATIO_TO_REMOVE_NICE_TO_HAVE = 1.20 # How low of a income-to-expenses ratio does the AI need to have to consider reducing spending on a 'nice-to-have' MONEY_SPENDING_MIN_RATIO_TO_ADD_SHOULD_HAVE = 1.2 # How much of a income-to-expenses ratio does AI want to have after increasing spending for a 'should-have' project MONEY_SPENDING_MIN_RATIO_TO_ADD_WANTS_TO_HAVE = 1.3 # How much of a income-to-expenses ratio does AI want to have after increasing spending for a 'wants-to-have' project MONEY_SPENDING_MIN_RATIO_TO_ADD_NICE_TO_HAVE = 1.4 # How much of a income-to-expenses ratio does AI want to have after increasing spending for a 'nice-to-have' project MONEY_SPENDING_MIN_SURPLUS_TO_ADD_SHOULD_HAVE = 2000 # How much of a surplus in absolute money does AI want to have after increasing spending for a 'should-have' project MONEY_SPENDING_MIN_SURPLUS_TO_ADD_WANTS_TO_HAVE = 5000 # How much of a surplus in absolute money does AI want to have after increasing spending for a 'wants-to-have' project MONEY_SPENDING_MIN_SURPLUS_TO_ADD_NICE_TO_HAVE = 10000 # How much of a surplus in absolute money does AI want to have after increasing spending for a 'nice-to-have' project MONEY_SPENDING_MIN_SURPLUS_TO_ALWAYS_ADD_SHOULD_HAVE = 25000 # If AI has this surplus in absolute money, it's always fine to increase spending on a 'should-have' project, regardless of income ratio MONEY_SPENDING_MIN_SURPLUS_TO_ALWAYS_ADD_WANTS_TO_HAVE = 50000 # If AI has this surplus in absolute money, it's always fine to increase spending on a 'wants-to-have' project, regardless of income ratio MONEY_SPENDING_MIN_SURPLUS_TO_ALWAYS_ADD_NICE_TO_HAVE = 100000 # If AI has this surplus in absolute money, it's always fine to increase spending on a 'nice-to-have' project, regardless of income ratio MONEY_SPENDING_ACCEPTABLE_WAR_DEBT = 0.5 # If the AI has less than this % debt to ceiling, avoid doing cost-cutting at war for 'wants to have' and above MONEY_SPENDING_MIN_RATIO_TO_CONSIDER_GOLD_RESERVES = 0.8 # How low of a income-to-expenses ratio does the AI need to have to try to cut spending regardless of how plentiful its gold reserves are (when at peace) MONEY_SPENDING_MIN_WEEKS_OF_GOLD_RESERVES_TO_NOT_REMOVE_SHOULD_HAVE = 20 # If we have enough gold reserves to maintain our current spending for this long, don't decrease spending on a 'should-have' MONEY_SPENDING_MIN_WEEKS_OF_GOLD_RESERVES_TO_NOT_REMOVE_WANTS_TO_HAVE = 40 # If we have enough gold reserves to maintain our current spending for this long, don't decrease spending on a 'wants-to-have' MONEY_SPENDING_MAX_WEEKS_OF_DEBT_TO_ADD_SHOULD_HAVE = 50 # If we have so much debt it will take more than this number of weeks to pay it off, don't increase spending on a 'should-have' MONEY_SPENDING_MIN_GOLD_RESERVE_FRACTION_TO_ADD_WANTS_TO_HAVE = 0.2 # If we don't have at least this fraction of gold reserves, don't increase spending on a 'wants-to-have' MONEY_SPENDING_MIN_GOLD_RESERVE_FRACTION_TO_ADD_NICE_TO_HAVE = 0.2 # If we don't have at least this fraction of gold reserves, don't increase spending on a 'nice-to-have' MONEY_SPENDING_LAND_THREAT_THRESHOLD = 0.25 # If a hostile country has a more than this much larger army than AI does, it wants to increase military spending MONEY_SPENDING_NAVY_THREAT_THRESHOLD = 0.50 # If a hostile country has a more than this much larger navy than AI does, it wants to increase military spending MONEY_SPENDING_PRESTIGE_RIVAL_THRESHOLD = 0.5 # If a rival has this much more prestige than AI does, it wants to increase spending on art academies MONEY_SPENDING_TECH_RIVAL_THRESHOLD = 0.25 # If a rival has this much more weekly innovation than AI does, it wants to increase spending on universities MONEY_SPENDING_MILITARY_CRITICAL_THRESHOLD = 0.5 # If actual-to-wanted number of barracks/naval bases is below this, AI will not consider downsizing them further MONEY_SPENDING_CONSTRUCTION_CRITICAL_THRESHOLD = 0.25 # If actual-to-wanted number of construction sector buildings is below this, AI considers it very important to get more MONEY_SPENDING_INNOVATION_CRITICAL_THRESHOLD = 0.25 # If innovation production compared to cap is worse than this, AI considers it very important to improve MONEY_SPENDING_INNOVATION_DESIRED_THRESHOLD = 0.75 # If innovation production compared to cap is worse than this, AI considers it important to improve MONEY_SPENDING_SUPPLY_NETWORK_CRITICAL_THRESHOLD = 0.75 # If supply network is worse than this, AI considers it critical to improve it MONEY_SPENDING_SUPPLY_NETWORK_DESIRED_THRESHOLD = 1.25 # If supply network is worse than this, AI wants to improve it MONEY_SPENDING_BUREAUCRACY_CRITICAL_THRESHOLD = 1.0 # If bureaucracy income to expenses is worse than this, AI considers it critical to improve it MONEY_SPENDING_BUREAUCRACY_DESIRED_THRESHOLD = 1.20 # If bureaucracy income to expenses is worse than this, AI wants to improve it MONEY_SPENDING_BUREAUCRACY_EXCESSIVE_THRESHOLD = 1.30 # If bureaucracy income to expenses is better than this, AI will not improve it MONEY_SPENDING_INFRASTRUCTURE_CRITICAL_THRESHOLD = 0.80 # If infra production to usage is worse than this, AI considers it critical to improve it MONEY_SPENDING_INFRASTRUCTURE_DESIRED_THRESHOLD = 1.20 # If infra production to usage is worse than this, AI wants to improve it # Below data is used to calculate how much weight the AI places on specific government buildings GOVERNMENT_BUILDING_BASE_VALUE = 1000 # If no ai_value is scripted in the building GOVERNMENT_BUILDING_FAVORED_GOODS_FACTOR = 0.25 # Total weight is multiplied by ( 1 + this ) for each building output that the AI favors for either import or export GOVERNMENT_BUILDING_DISFAVORED_GOODS_FACTOR = -0.10 # Total weight is multiplied by ( 1 + this ) for each building output good that the AI disfavors # Below data is used to calculate where the AI will locate new government buildings GOVERNMENT_BUILDING_STATE_CAPITAL_FACTOR = 250 # Add this score for certain types of government buildings in the capital GOVERNMENT_BUILDING_STATE_MARKET_CAPITAL_FACTOR = 250 # Add this score for certain types of government buildings in the market capital GOVERNMENT_BUILDING_STATE_ARMY_NON_ACCEPTED_POP_FACTOR = -250 # Multiply this score by fraction of discriminated Pops in the state GOVERNMENT_BUILDING_STATE_ARMY_ACCEPTED_POP_FACTOR = 250 # Multiply this score by fraction of accepted Pops in the state GOVERNMENT_BUILDING_STATE_NAVY_NON_ACCEPTED_POP_FACTOR = -250 # Multiply this score by fraction of discriminated Pops in the state GOVERNMENT_BUILDING_STATE_NAVY_ACCEPTED_POP_FACTOR = 250 # Multiply this score by fraction of accepted Pops in the state GOVERNMENT_BUILDING_STATE_UNINCORPORATED_MULT = 0.25 # Multiply score by this if the state is unincorporated GOVERNMENT_BUILDING_STATE_MISSING_QUALIFICATIONS_MULT = 0.10 # Multiply score by this if there's not enough qualifications to staff the building GOVERNMENT_BUILDING_STATE_MISSING_INFRASTRUCTURE_DIV = 0.50 # Divide score by ( 1 + this * number of missing infrastructure after adding this building ) GOVERNMENT_BUILDING_STATE_ECONOMY_OF_SCALE_MULT = 1.25 # Multiply score by this if building uses economy of scale and it's already present in the state GOVERNMENT_BUILDING_STATE_POP_CONSTRUCTION_SECTOR_IMPORTANCE_THRESHOLD = 250000 # Above this amount of state population, AI considers it important to have a construction sector in the state GOVERNMENT_BUILDING_STATE_POP_CONSTRUCTION_SECTOR_IMPORTANCE_MULT = 1.5 # Multiply score by this if state GDP is at least the above value for purposes of scoring the first level of construction sector # Below data is used to calculate how much weight the AI places on specific subsidies SUBSIDIZE_BASE_VALUE = 1000 SUBSIDIZE_SHARE_OF_INFRA_FACTOR = 4000 # How highly is subsidization of a building valued if it provides 100% of the infrastructure in the state region SUBSIDIZE_SHARE_OF_SUPPLY_FACTOR = 2000 # How highly is subsidization of a building valued if it provides 100% of the sell orders for a good in the market SUBSIDIZE_FAVORED_GOODS_MULT = 1.5 # Share of supply factor is multiplied by this for a good that the AI wants a high supply of SUBSIDIZE_DISFAVORED_GOODS_MULT = 0.75 # Share of supply factor is multiplied by this for a good that the AI disfavors # Below data is used to calculate how much weight the AI places on different things it can spend its authority on AUTHORITY_SPENDING_RANDOM_FACTOR = 0.5 # The higher this is, the more random new AI authority spending will be # Below data is used to calculate how much weight the AI places on promoting an IG PROMOTION_BASE_VALUE = 50 # Below data is used to calculate how much weight the AI places on suppressing an IG SUPPRESSION_BASE_VALUE = 75 # Below data is used to calculate how much weight the AI places on consumption taxes CONSUMPTION_TAX_INCOME_VALUE = 10 # Per percent of state expenses in taxable value (this is then multiplied by relative authority cost of the good) CONSUMPTION_TAX_STAPLE_MULT = 0.5 # Multiply desire to tax staple goods by this CONSUMPTION_TAX_LUXURY_MULT = 2.0 # Multiply desire to tax luxury goods by this CONSUMPTION_TAX_LOW_INCOME_THRESHOLD = 1.25 # Income-to-expenses threshold below which consumption taxes are a must-have CONSUMPTION_TAX_HIGH_INCOME_THRESHOLD = 1.5 # Income-to-expenses threshold at which consumption taxes should be removed (if removal would not put us below this) CONSUMPTION_TAX_MAX_NUM_TAXED_GOODS_BASE = 0 # Base max number of goods AI wants to tax CONSUMPTION_TAX_MAX_NUM_TAXED_GOODS_PER_MISSING_TAX_TYPE = 2 # Added to max number of goods AI wants to tax for each other type of tax it does not collect # Below data is used to calculate which goods the AI thinks it should embargo # TODO: Convert to logic for export/import tariff focus EMBARGO_REQUIRED_SCORE = 100 # Score needs to add up to this for AI to want to embargo a good EMBARGO_REQUIRED_PRICE_LEVEL = 1.25 # If the price of a good isn't at least this relative to baseline, don't embargo it EMBARGO_REQUIRED_BUILDING_CONSUMPTION_VALUE = 400 # Minimum value of ( buy orders * base price ) that is building consumption of this good to consider an embargo EMBARGO_BUILDING_CONSUMPTION_VALUE_FACTOR = 10 # For each % of ( buy orders * base price ) in the market that is building consumption of this good, add this score EMBARGO_GOODS_HIGH_PRICE_LEVEL_MULT = 5.0 # Goods price level above baseline is multiplied by this and then applied as a multiplicative effect on embargo score EMBARGO_GOODS_EXPORTED_SHORTAGE_MULT = 10.0 # If a goods is in shortage and being exported, multiply embargo score by this (overrides EMBARGO_GOODS_HIGH_PRICE_LEVEL_MULT) EMBARGO_STICKYNESS = 1.5 # How much higher is an existing embargo scored EMBARGO_MIN_DURATION = 12 # AI will not consider removing a recently placed embargo for this number of months EMBARGO_MAX_SPENDING_FRACTION = 0.25 # How much of its total Influence production is the AI willing to use for embargos # Below data is used to calculate how much weight the AI places on a production building PRODUCTION_BUILDING_RANDOM_FACTOR = 10.0 # The higher this is, the more random AI construction will be PRODUCTION_BUILDING_BASE_VALUE = 1000 # If no ai_value is scripted in the building PRODUCTION_BUILDING_GOODS_PROFIT_FACTOR = 5000 # Per pound of predicted building profit (divided by employee count per level) PRODUCTION_BUILDING_GOODS_DEFICIT_FACTOR = 10000 # Per pound of predicted building deficit (divided by employee count per level and multiplies a negative value) PRODUCTION_BUILDING_GOODS_DEFICIT_SUBSIDIZE_FACTOR = 5000 # Overrides PRODUCTION_BUILDING_GOODS_DEFICIT_FACTOR for subsidized buildings PRODUCTION_BUILDING_PRODUCED_VALUE_FACTOR = 0.25 # Per pound of produced goods in base value PRODUCTION_BUILDING_INCORPORATED_INFRASTRUCTURE_USAGE_FACTOR = 0.05 # Total weight is divided by ( 1 + this * building infrastructure usage ) in incorporated states PRODUCTION_BUILDING_UNINCORPORATED_INFRASTRUCTURE_USAGE_FACTOR = 0.25 # Total weight is divided by ( 1 + this * building infrastructure usage ) in unincorporated states PRODUCTION_BUILDING_OUTPUT_HIGH_PRICE_THRESHOLD = 1.25 # Lower threshold multiplier of base price for applying 'high price' modifier below PRODUCTION_BUILDING_OUTPUT_HIGH_PRICE_FACTOR = 0.75 # Add this value to a building for each unit of money worth of goods above high price threshold that this building produces PRODUCTION_BUILDING_OUTPUT_LOW_PRICE_THRESHOLD = 0.75 # Upper threshold multiplier of base price for applying 'low price' modifier below PRODUCTION_BUILDING_OUTPUT_LOW_PRICE_FACTOR = -0.5 # Add this value to a building for each unit of money worth of goods below low price threshold that this building produces PRODUCTION_BUILDING_SUBSIDIZE_PRICE_FACTOR_MULT = 1.25 # Multiply the effects of price factors on buildings that the AI will consider subsidizing PRODUCTION_BUILDING_OUTPUT_NEW_GOODS_FACTOR = 2.0 # Add this value to a building for each unit of money worth of goods that currently isn't available in our market but the AI wants to prioritize PRODUCTION_BUILDING_OUTPUT_WANTED_INDUSTRIAL_GOODS_FACTOR = 0.25 # Add this value to a building for each unit of money worth of industrial goods that aren't overproduced in the country and are used by buildings PRODUCTION_BUILDING_OUTPUT_WANTED_MILITARY_GOODS_FACTOR = 0.25 # Add this value to a building for each unit of money worth of military goods that aren't overproduced in the country and are used by buildings RODUCTION_BUILDING_OUTPUT_NEEDED_INDUSTRIAL_GOODS_FACTOR = 0.5 # Add this value to a building for each unit of money worth of industrial goods that are underproduced in the country and are used by buildings PRODUCTION_BUILDING_OUTPUT_NEEDED_MILITARY_GOODS_FACTOR = 0.5 # Add this value to a building for each unit of money worth of military goods that are underproduced in the country and are used by buildings PRODUCTION_BUILDING_CAN_USE_INVESTMENT_POOL_MULT = 1.25 # Total weight is multiplied by this if the building can be funded by the country's investment pool PRODUCTION_BUILDING_NEW_GOODS_OUTPUT_MULT = 1.25 # Total weight is multiplied by this if the building outputs a good not available in our market PRODUCTION_BUILDING_FAVORED_GOODS_FACTOR = 0.5 # Add this value to a building for each unit of money worth of building goods output that the AI favors PRODUCTION_BUILDING_DISFAVORED_GOODS_FACTOR = -0.25 # Add this value to a building for each unit of money worth of building goods output that the AI disfavors PRODUCTION_BUILDING_MISSING_QUALIFICATIONS_MULT = 0.50 # Multiply score by this if there's not enough qualifications to staff the building (disabled for now) PRODUCTION_BUILDING_MISSING_INFRASTRUCTURE_DIV = 0.25 # Divide score by ( 1 + this * number of missing infrastructure after adding this building ) PRODUCTION_BUILDING_ECONOMY_OF_SCALE_MULT = 1.25 # Multiply score by this if building uses economy of scale and it's already present in the state PRODUCTION_BUILDING_DESIRED_INFRASTRUCTURE_RATIO = 1.15 # If infra production to usage is worse than this, AI wants to improve it PRODUCTION_BUILDING_BELOW_DESIRED_INFRASTRUCTURE_MULT = 20.0 # Multiply score by this if the building would improve infrastructure and it's below desired threshold PRODUCTION_BUILDING_EXCESSIVE_INFRASTRUCTURE_RATIO = 1.30 # If infra production to usage is better than this, AI doesn't want to improve it PRODUCTION_BUILDING_ABOVE_EXCESSIVE_INFRASTRUCTURE_MULT = 0.5 # Multiply score by this if the building would improve infrastructure and it's above excessive threshold PRODUCTION_BUILDING_REDUCE_SHORTAGE_MULT = 5 # Multiply score by this if we're reducing the state region's shortages PRODUCTION_BUILDING_INCREASE_SHORTAGE_MULT = 0.01 # Multiply score by this if we're increasing the state region's shortages PRODUCTION_BUILDING_OTHER_BUILDING_TYPES_UNDER_CONSTRUCTION_DIV = 0.5 # Divide score by (1 + this * number of other building types queued in the state) PRODUCTION_BUILDING_LONG_CONSTRUCTION_TIME_THRESHOLD = 40 PRODUCTION_BUILDING_LONG_CONSTRUCTION_TIME_MULT = 0.5 # Multiply score by this if construction time would take more than PRODUCTION_BUILDING_LONG_CONSTRUCTION_TIME_THRESHOLD weeks at full construction industry usage (ignores MAX_WEEKLY_CONSTRUCTION_PROGRESS) PRODUCTION_BUILDING_VERY_LONG_CONSTRUCTION_TIME_THRESHOLD = 60 PRODUCTION_BUILDING_VERY_LONG_CONSTRUCTION_TIME_MULT = 0.25 # Multiply score by this if construction time would take more than PRODUCTION_BUILDING_VERY_LONG_CONSTRUCTION_TIME_THRESHOLD weeks at full construction industry usage (ignores MAX_WEEKLY_CONSTRUCTION_PROGRESS) # Below data is used to calculate how much weight the AI places on enacting/revoking a law CHANGE_LAW_RANDOM_FACTOR = 1.0 # The higher this is, the more random AI law enactment will be CHANGE_LAW_PRO_IG_IDEOLOGIES_FACTOR = 100 # For enacting laws, per ideology match for IGs we approve of CHANGE_LAW_ANTI_IG_IDEOLOGIES_FACTOR = -25 # For enacting laws, per ideology match for IGs we disapprove of CHANGE_LAW_POLITICAL_MOVEMENT_SUPPORT_FACTOR = 1 # Scales with movement support for movement that wants to enact the law CHANGE_LAW_POLITICAL_MOVEMENT_RADICALISM_FACTOR = 3 # Scales with movement radicalism for movement that wants to enact the law CHANGE_LAW_POTENTIAL_CIVIL_WAR_THRESHOLD = 75 # If the political movement to preserve the law the AI is replacing would have at least this much radicalism, AI considers it a potential civil war cause CHANGE_LAW_POTENTIAL_CIVIL_WAR_ENACT_CHANCE = 10 # Chance that the AI will proceed with a law change that could cause a civil war (1 = 1%) CHANGE_LAW_CIVIL_WAR_AVERSION_SUBJECT_MULTIPLIER = 5 # Chance that AI stops enacting a law to avoid a civil war is increased by this for subjects CHANGE_LAW_CIVIL_WAR_AVERSION_LAW_DIRECTION_FLEXIBILITY = 10 # Revolution aversion is multiplied by this and added to the max progressiveness/regressiveness the AI is willing to stomach to avoid a revolution # Below data is used to calculate how much weight the AI places on a production method PRODUCTION_METHOD_BASE_VALUE = 1000 PRODUCTION_METHOD_PROFIT_FACTOR = 1 # Per pound of profit the produced goods would generate PRODUCTION_METHOD_DEFICIT_FACTOR = 1.5 # Per pound of deficit the produced goods would generate (multiplies a negative value) PRODUCTION_METHOD_PRODUCED_VALUE_FACTOR = 0.25 # Per pound of produced goods in base value PRODUCTION_METHOD_REDUCE_OUTPUT_PENALTY_FACTOR = 10 # Multiply method score by this if we're reducing the building's output penalties PRODUCTION_METHOD_INCREASE_OUTPUT_PENALTY_FACTOR = 0.01 # Multiply method score by this if we're increasing the building's output penalties PRODUCTION_METHOD_FAVORED_GOODS_FACTOR = 0.5 # Per base cost * units of goods produced that the AI favors PRODUCTION_METHOD_DISFAVORED_GOODS_FACTOR = -0.25 # Per base cost * units of goods produced that the AI disfavors PRODUCTION_METHOD_UNDESIRABLE_GOODS_PRICE_THRESHOLD = 1.5 # If a PM using the 'most productive' logic makes use of a good whose price is above ( base * this ), reduce the score PRODUCTION_METHOD_UNDESIRABLE_GOODS_PRICE_FACTOR = -0.5 # Per base cost * units of goods whose price is above undesirable price threshold PRODUCTION_METHOD_STICKYNESS = 1.25 # Score of current method is multiplied by this PRODUCTION_METHOD_CHANCE_TO_CHANGE = 0.1 # Chance that the AI will consider changing a production method when evaluating methods PRODUCTION_METHOD_LOW_POP_THRESHOLD = 50000 # If a state's population is less than this, use the scoring factor below for low-pop PMs PRODUCTION_METHOD_LOW_POP_FACTOR = 100 # If a state's population is less than PRODUCTION_METHOD_LOW_POP_THRESHOLD, multiply score by this # Below data is used to calculate AI's desire for peace AI_PEACE_AGREEMENT_BASE_VALUE = 0 AI_PEACE_AGREEMENT_WHITE_PEACE = 10 # If no wargoals are being enforced on either side AI_PEACE_AGREEMENT_WAR_SUPPORT_FACTOR = -1 AI_PEACE_AGREEMENT_ALLY_WARGOAL_FACTOR = 10 # For each wargoal that our allies are pressing AI_PEACE_AGREEMENT_SELF_WARGOAL_FACTOR = 30 # For each wargoal we have that's being pressed AI_PEACE_AGREEMENT_ENEMY_WARGOAL_SELF_FACTOR = -50 # For each wargoal that the enemy is pressing against us AI_PEACE_AGREEMENT_ENEMY_WARGOAL_ALLY_FACTOR = -10 # For each wargoal that's being pressed against our allies AI_PEACE_AGREEMENT_PEACE_DESIRE_FACTOR = 1.0 # Peace desire is multiplied by this when added to peace agreement acceptance score AI_CAPITULATE_BASE_VALUE = -25 AI_CAPITULATE_WAR_LEADER_FACTOR = -25 # If warleader AI_CAPITULATE_WAR_SUPPORT_FACTOR = -1 AI_CAPITULATE_SELF_WARGOAL_FACTOR = -10 # For each wargoal we hold in the war AI_CAPITULATE_ENEMY_WARGOAL_FACTOR = -30 # For each wargoal targeting us in the war AI_CAPITULATE_PEACE_DESIRE_FACTOR = 0.5 # Peace desire is multiplied by this when added to capitulation score AI_PEACE_DESIRE_DROP_WAR_GOAL_THRESHOLD = 20 # For each this amount of ( peace desire - war support ) above 0, remove a war goal on our side AI_PEACE_DESIRE_DROP_ALL_WAR_GOALS_THRESHOLD = 100 # At this amount of ( peace desire - war support ), drop all war goals on our side AI_MONTHS_OF_REDUCED_PEACE_DESIRE = 6 # Before this amount of months, reduce AI peace desire AI_PEACE_DESIRE_FROM_SHORT_WAR = -100 # Subtract this amount of peace desire for the above number of months AI_PEACE_DESIRE_FROM_TURMOIL = 25 # Add this amount of peace desire at 100% radicals AI_PEACE_DESIRE_FROM_DEVASTATION = 50 # Add this amount of peace desire at 100% devastation AI_PEACE_DESIRE_FROM_LOYALISTS = -25 # Subtract this amount of peace desire at 100% loyalists AI_PEACE_DESIRE_FROM_DEBT_LEVEL = 100 # Add this amount of peace desire at 100% debt level AI_PEACE_DESIRE_FROM_GOLD_RESERVES = -50 # Subtract this amount of peace desire at 100% gold reserves # AI country-specific goal data SECRET_GOAL_STICKYNESS = 2.0 # The higher this is, the less likely the AI is to change an established secret goal during recalculation SECRET_GOAL_SAME_GOAL_BONUS = 1.5 SECRET_GOAL_WRONG_TYPE_FOR_DIPLOMATIC_PLAY_MULTIPLIER = 0.25 # Added to friendly secret goals for enemies in a play, and hostile secret goals for allies in a play ATTITUDE_STRONG_GOAL_SCORE_THRESHOLD = 100 ATTITUDE_WEAK_GOAL_SCORE_THRESHOLD = 50 GOAL_THREAT_INFAMOUS_FACTOR = 25 GOAL_THREAT_NOTORIOUS_FACTOR = 50 GOAL_THREAT_PARIAH_FACTOR = 1000 GOAL_THREAT_NEIGHBOR_FACTOR = 25 GOAL_THREAT_SP_MAX_MULT = 2 GOAL_THREAT_CUSTOMS_UNION_MULT = 0.5 # Reduce neighbor threat score by this if in a customs union GOAL_ANTAGONIZE_POOR_RELATIONS_FACTOR = 25 GOAL_ANTAGONIZE_COLD_RELATIONS_FACTOR = 50 GOAL_ANTAGONIZE_HOSTILE_RELATIONS_FACTOR = 100 GOAL_ANTAGONIZE_CONQUER_SCORE_MULT = 1.0 # Multiplied by the total score of the territory we want to take from them GOAL_ANTAGONIZE_CONQUER_SCORE_MAX = 200 GOAL_ANTAGONIZE_DOMINATE_SCORE_MULT = 1.0 # Multiplied by the total score of make-subject wargoals we want to enforce on them GOAL_ANTAGONIZE_DOMINATE_SCORE_MAX = 200 GOAL_ANTAGONIZE_RIVAL_FACTOR = 100 GOAL_ANTAGONIZE_WAR_FACTOR = 1000 GOAL_ANTAGONIZE_NATURAL_ENEMY_FACTOR = 75 GOAL_BEFRIEND_CORDIAL_RELATIONS_FACTOR = 25 GOAL_BEFRIEND_AMICABLE_RELATIONS_FACTOR = 50 GOAL_BEFRIEND_FRIENDLY_RELATIONS_FACTOR = 100 GOAL_BEFRIEND_PROTECTOR_THRESHOLD = 15 GOAL_BEFRIEND_PROTECTOR_FACTOR = 1.0 GOAL_BEFRIEND_PROTECTOR_RIVAL_MULT = 2.0 # Score multiplied by this if they can protect against our rival GOAL_BEFRIEND_PROTECTOR_MAX_FACTOR = 100 GOAL_BEFRIEND_PROTECTOR_SP_MAX_MULT = 2 GOAL_BEFRIEND_SUBJECT_FACTOR = 25 GOAL_BEFRIEND_ALLIANCE_FACTOR = 50 GOAL_BEFRIEND_NATURAL_ALLY_FACTOR = 75 GOAL_BEFRIEND_RECONCILE_FACTOR = 500 GOAL_BEFRIEND_WAR_ALLY_FACTOR = 1000 GOAL_BEFRIEND_WANTS_TO_PROTECT_FACTOR = 100 FRIENDLY_AI_JOIN_DIPLO_PLAY_FACTOR = 100 VIOLATE_SOVEREIGNTY_ACTION_NAME = "violate_sovereignty" VIOLATE_SOVEREIGNTY_MIN_RELATIVE_STRENGTH = 2.0 # We must have their army x this in SP to want to violate their sovereignty VIOLATE_SOVEREIGNTY_RANDOM_FACTOR = 2.0 # The higher this is, the more random the AI will be about who it violates the sovereignty of VIOLATE_SOVEREIGNTY_MIN_THEATER_IMPORTANCE = 150 # A theater must have at least this much war value for AI to consider violating sovereignty to get access to it VIOLATE_SOVEREIGNTY_COOLDOWN_DAYS = 100 EXPEL_DIPLOMATS_ACTION_NAME = "expel_diplomats" # For the AI to want to start a trade route, they usually want it to be at least this level TRADE_ROUTE_MIN_DESIRED_LEVEL_SCALING = 0.001 # Scales with (acting market trade potential * goods quantity per trade route level) TRADE_ROUTE_MIN_DESIRED_LEVEL_MIN = 1 TRADE_ROUTE_MIN_DESIRED_LEVEL_MAX = 5 # The AI never cancels current trade routes of this level or above TRADE_ROUTE_MAX_LEVEL_TO_CANCEL_SCALING = 0.002 # Scales with (acting market trade potential * goods quantity per trade route level) TRADE_ROUTE_MAX_LEVEL_TO_CANCEL_MIN = 1 TRADE_ROUTE_MAX_LEVEL_TO_CANCEL_MAX = 9 TRADE_ROUTE_MIN_MARKET_SHARE = 0.25 # If the AI is junior in a customs union and has less than this market share in a market, don't make any trade routes TRADE_ROUTE_MIN_SCORE_TO_CREATE_BASE = 1000 # If a potential trade route is scored less than this, don't create it TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_SCALING = 1000000 # Base scale for TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_FACTOR TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_SCALING_MAX = 25000000 # TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_SCALING can't be higher than this TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_FACTOR = 50 # For each TRADE_ROUTE_MIN_SCORE_TO_CREATE_GDP_SCALING market GDP, add this to min score required to create trade route TRADE_ROUTE_ACCEPTABLE_SPENDING = 0.002 # AI will not spend more BUR than this on trade routes (scaled by weekly GDP) TRADE_ROUTE_ACCEPTABLE_SPENDING_MINIMUM = 100 # If TRADE_ROUTE_ACCEPTABLE_SPENDING is less than this, this is used instead (so even small countries can do some trading) TRADE_ROUTE_PLAYER_SUGGESTION_MIN_SCORE_MULT = 1.0 # If trade route has at least (min AI score to create * this) in score, suggest it as a possible route for player TRADE_ROUTE_RANDOM_FACTOR = 1.0 # The higher this is, the more random the AI will be about where it makes trade routes TRADE_ROUTE_EXPORT_VS_IMPORT_TOLERANCE = 1.5 # The AI is OK with having up to this amount more import than export routes or vice versa TRADE_ROUTE_TRADE_VALUE_FACTOR = 1.0 # The expected final trade volume * base price of goods is multiplied by this TRADE_ROUTE_SUGGESTION_COMPETITION_FACTOR = -0.75 # The amount of sell/buy orders generated by routes that directly compete with this route is multiplied by this for suggesting routes to the player TRADE_ROUTE_WANTED_NEW_GOODS_FACTOR = 5000 # Add this if the trade route is importing a good to the market that the AI wants and has no local production for TRADE_ROUTE_DISTANCE_DIVISOR = 0.002 # Divide the trade route value by 1 + (absolute distance between the two market capitals * this) to encourage AI to trade with nearby markets (we use this instead of more expensive convoy distance calc) TRADE_ROUTE_TARIFF_DIVISOR = 2 # Divide the trade route value by 1 + ( total tariff rate * this ) TRADE_ROUTE_EXISTING_ROUTES_DIVISOR = 1.0 # Score for trade route is divided by (1 + this) for each trade route the market has of the same goods TRADE_ROUTE_FAVORED_GOODS_MULT = 2.0 # Total weight is multiplied by this if the trade route is trading a good in a way the AI favors TRADE_ROUTE_DISFAVORED_GOODS_MULT = 0.5 # Total weight is multiplied by this if the trade route is trading a good in a way the AI disfavors TRADE_ROUTE_MIN_AVAILABLE_WORKFORCE = 5000 # If trade center state has less than this amount of available workforce, don't start a new trade route TRADE_ROUTE_REPLACE_THRESHOLD = 5.0 # If there is a sufficiently better new trade route (old route score x this), remove the old one TRADE_ROUTE_SUPPLY_NETWORK_STRENGTH_THRESHOLD = 1.0 # If supply network strength less than this, don't make new trade routes TRADE_ROUTE_REDUCE_SHORTAGE_MULT = 10 # Multiply score by this if we're reducing the market's shortages TRADE_ROUTE_INCREASE_SHORTAGE_MULT = 0 # Multiply score by this if we're increasing the market's shortages TRADE_ROUTE_MIN_ACCEPTABLE_PRODUCTIVITY = 5.0 # If a potential trade route would result in lower productivity than this, apply penalty below TRADE_ROUTE_BELOW_ACCEPTABLE_PRODUCTIVITY_MULT = 0.25 # Multiply score by this if the trade route is below TRADE_ROUTE_MIN_ACCEPTABLE_PRODUCTIVITY TRADE_ROUTE_IMPORT_SCORE_MULT = 1.0 # How much does AI multiply score of import routes TRADE_ROUTE_EXPORT_SCORE_MULT = 1.5 # How much does AI multiply score of export routes TAKE_NO_DECISION_WEIGHT = 5 } NCountry = { DEFAULT_COUNTRY_TYPE = "recognized" MAX_NUM_COUNTRY_FORMATION_CANDIDATES = 3 COUNTRY_FORMATION_CANDIDATE_MIN_RANK = 6 COUNTRY_FORMATION_ANNEXATION_TARGET_MAX_RANK = 6 MOVE_CAPITAL_COOLDOWN_YEARS = 5 MOVE_MARKET_CAPITAL_COOLDOWN_YEARS = 5 MIN_DISAPPROVAL_VALUE = 0 MAX_DISAPPROVAL_VALUE = 100 MAX_POWER_EFFECT = 1.0 # The max by which a power excess/deficiency modifier can scale SPLIT_STATE_MIN_LAND_SHARE = 0.05 SPLIT_STATE_DOMINANT_LAND_SHARE_THRESHOLD = 0.5 # States with more land share than this can use the region's name SPLIT_STATE_PRIME_LAND_WEIGHT = 5.0 CAPITAL_CULTURE_CORE_WEIGHT = 10 CAPITAL_NON_INCORPORATED_WEIGHT = 0.001 DEFAULT_SUBSISTENCE_BUILDING = "building_subsistence_farms" CONSTRUCTION_CAMP_BUILDING = "building_construction_sector" BARRACKS_BUILDING = "building_barracks" NAVAL_BASE_BUILDING = "building_naval_base" URBAN_CENTER_BUILDING = "building_urban_center" CONSCRIPTION_CENTER_BUILDING = "building_conscription_center" TRADE_CENTER_BUILDING = "building_trade_center" CONSTRUCTION_QUEUE_INCREMENT_SHIFT = 5 # Increment/Decrement used for buildings construction queue when holding down Shift CONSTRUCTION_QUEUE_INCREMENT_CONTROL = 10 # Increment/Decrement used for buildings construction queue when holding down Ctrl WEEKS_TO_STORE_LOYALIST_RADICAL_STATISTICS = 52 # Number of weeks of statistics for loyalists/radicals that is stored and shown INCORPORATION_TIME_SAME_CULTURE = 2 # Years if the state is a Homeland of one of the country's primary cultures INCORPORATION_TIME_SAME_HERITAGE = 5 # Years if the state is a Homeland of a culture that matches of one of the country's primary cultures' Heritage traits INCORPORATION_TIME_SAME_TRAIT = 10 # Years if the state is a Homeland of a culture with any trait in common with a country's primary cultures INCORPORATION_TIME_NO_MATCH = 20 # Years if the state's Homeland cultures have nothing in common with the country's primary cultures JOURNAL_ENTRY_UPDATE_ACTIVE = 8 # Number of ticks between each update of Active (Possible) Journal Entries, can be overriden on journal entry type JOURNAL_ENTRY_UPDATE_INACTIVE = 28 # Number of ticks between each update of Inactive Journal Entries, can be overriden on journal entry type } NPolitics = { LEADER_IDEOLOGY_RANDOM_FACTOR = 5 # The higher this is, the more random leader ideologies will be TARIFF_LAW_GROUP = "lawgroup_trade_policy" # Law from this group is shown to player as their tariff law TAX_LAW_GROUP = "lawgroup_taxation" # Law from this group is shown to player as their tax law POP_APATHY_RANDOM_FACTOR = 0.1 # The higher this is, the more random the fraction of politically apathetic pops will be POP_IG_RANDOM_FACTOR = 0.2 # The higher this is, the more randomly distributed pops will be between valid IGs MIN_POP_NUMBER_LEAVE_IG = 100.0 # Min for maximum amount of pops/support that will change IG in a single update (overrides below max fraction) MAX_POP_FRACTION_LEAVE_IG = 0.05 # Maximum amount of a pop that can change IGs in a single update (for each IG) BASE_IG_APPROVAL = 0 # Baseline IG approval MIN_IG_APPROVAL = -20 # Minimum IG approval MAX_IG_APPROVAL = 20 # Maximum IG approval MIN_IG_APPROVAL_FROM_LAWS = -5 # IG cannot have approval lower than this as a total from laws 'on the book' MAX_IG_APPROVAL_FROM_LAWS = 5 # IG cannot have approval higher than this as a total from laws 'on the book' IG_APPROVAL_FROM_LOYALISTS = 15 # If 100% of the political strength of the IG is loyalist, change approval by this amount IG_APPROVAL_FROM_RADICALS = -15 # If 100% of the political strength of the IG is radical, change approval by this amount IG_LAW_DESIRE_RADICAL_CHANGE_THRESHOLD = 2 # A difference in positions this or higher is considered radical IG_LAW_DESIRE_EXTREME_CHANGE_THRESHOLD = 3 # A difference in positions this or higher is considered extreme IG_APPROVAL_FROM_LAW = 1 # IG approval/disapproval for laws that are for/against their ideologies IG_APPROVAL_FROM_LAW_STRONG_STANCE = 2 # IG approval/disapproval for laws that are strongly for/against their ideologies IG_APPROVAL_FROM_LAW_CHANGE = 5 # IG approval/disapproval for changing to another law IG_APPROVAL_FROM_RADICAL_LAW_CHANGE = 10 # IG approval/disapproval for changing to another law, if the change is a major one IG_APPROVAL_FROM_EXTREME_LAW_CHANGE = 20 # IG approval/disapproval for changing to another law, if the change is extreme IG_IN_GOVERNMENT_APPROVAL = 0 # Added if IG is in government IG_IN_OPPOSITION_APPROVAL = 0 # Added if IG is in opposition (and not powerful) IG_POWERFUL_IN_OPPOSITION_APPROVAL = -1 # Added if powerful IG in opposition STARTUP_MIN_LEGITIMACY_IG_BARIER = 40 # Min legitimacy when on startup we allow to remove IGs from goverment that decrease legitimacy APPROVAL_THRESHOLD_ANGRY = -10 # At this or below approval, IG is considered angry APPROVAL_THRESHOLD_UNHAPPY = -5 # At this or below approval, IG is considered unhappy APPROVAL_THRESHOLD_HAPPY = 5 # At this or above approval, IG is considered happy APPROVAL_THRESHOLD_LOYAL = 10 # At this or above approval, IG is considered loyal CHANGED_LAW_APPROVAL_MONTHS = 60 # How many months does the approval/disapproval for a law change linger after said law chain LAW_ENACTMENT_MIN_TOTAL_DAYS = 1 # Minimum number of total days that an enactment checkpoint can take [>=1] LAW_ENACTMENT_DEFAULT_BASE_DAYS = 180 # Default number of base days required to reach an enactment checkpoint [>=1] LAW_ENACTMENT_COOLDOWN_DAYS = 365 # When an enactment fails, or is manually stopped after at least one checkpoint, that law can't be tried to be enacted for this many days [>=0] LAW_ENACTMENT_ADVANCE_FACTOR = 2 # The _base_ advance chance is the success chance multiplied by this factor [>=1] LAW_ENACTMENT_RULER_IDEOLOGY_EFFECT = 0.05 # Ruler ideology has this impact on a law's chance to pass or stall depending on relative approval LAW_ENACTMENT_MOVEMENT_SUPPORT_PASS_EFFECT = 0.01 # Movement support has this impact on a law's chance to pass LAW_ENACTMENT_MOVEMENT_SUPPORT_STALL_EFFECT = 0.005 # Movement support has this impact on a law's chance to stall STATE_BUREAUCRACY_BASE_COST = 10 # The base cost per incorporated state STATE_BUREAUCRACY_POP_BASE_COST = 4 # The base BUR multiplier per population multiple STATE_BUREAUCRACY_POP_MULTIPLE = 100000 # Number of people BUR cost is based on MINIMUM_INVESTMENT_COST = 10 # The absolute minimum cost in BUR per investment level RETIRE_COMMANDER_CONSEQUENCE_DURATION = 5 # Number of years during which an Interest Group will be concerned about the retirement of one of their Commanders POWERFUL_IG_THRESHOLD = 0.20 # Interest groups with more Clout than this are considered to be influential POWERFUL_IG_CUTOFF = 0.18 # Powerful interest groups with less Clout than this will stop being influential POWERFUL_IG_TRAIT_BONUS = 1 # The effects of all trait modifiers from influential IGs are increased by this, 1 = +100% MARGINAL_IG_THRESHOLD = 0.05 # Interest Groups with Clout above this value are considered relevant while those below are marginal (if not also In Government) MARGINAL_IG_CUTOFF = 0.04 # Interest Groups who are already relevant will only become marginal again if they drop below this value. RECENT_PARTY_DAYS = 14 # Party is considered recently formed if activated within RECENT_PARTY_DAYS days range DEFAULT_LAW_ACTIVATION_DATE = "1836.1.1" MAX_NUM_POLITICAL_MOVEMENTS_WITHOUT_IG_SUPPORT = 1 MAX_NUM_POLITICAL_MOVEMENTS = 3 POLITICAL_MOVEMENT_START_CHANCE_BASE = 5 # Base chance of a political movement starting each day if selected to be checked (1 = 1%) POLITICAL_MOVEMENT_START_CHANCE_SCALED = 0.05 # Additional chance of a political movement starting scaled with potential support POLITICAL_MOVEMENT_START_CHANCE_NUM_MOVEMENTS_DIVISOR = 2 # If we already have movements, divide start chance of a new movement by ( 1 + this * cur num movements ) POLITICAL_MOVEMENT_TO_PRESERVE_CHECK_TO_START_CHANCE = 25 # Chance that a political movement is checked at all on a daily basis if it's a movement to preserve (for performance reasons) POLITICAL_MOVEMENT_TO_RESTORE_CHECK_TO_START_CHANCE = 0.5 # Chance that a political movement is checked at all on a daily basis if it's a movement to restore (for performance reasons) POLITICAL_MOVEMENT_TO_ENACT_CHECK_TO_START_CHANCE = 0.2 # Chance that a political movement is checked at all on a daily basis if it's a movement to enact (for performance reasons) POLITICAL_MOVEMENT_MIN_SUPPORT_TO_START = 10 # If a political movement would have less support than this, it can't start POLITICAL_MOVEMENT_MIN_SUPPORT_TO_REMAIN = 5 # If a political movement falls to less support than this, disband it POLITICAL_MOVEMENT_RADICALISM_TARGET_FROM_ANGRY_IG_CLOUT = 300 # At 100% clout of angry IGs supporting this, increase radicalism by this much POLITICAL_MOVEMENT_RADICALISM_TARGET_FROM_RADICALS = 500 # At 100% of total population as supporting radicals, increase radicalism by this much POLITICAL_MOVEMENT_SUPPORT_FROM_POPULATION = 100 # At 100% of population supporting the movement POLITICAL_MOVEMENT_SUPPORT_FROM_CLOUT = 100 # At 100% of political clout supporting the movement POLITICAL_MOVEMENT_APATHY_MULTIPLIER = 0.5 # This % of politically apathetic pops also won't join movements even if it's in their interest to do so POLITICAL_MOVEMENT_LAW_APPROVAL_POP_SUPPORT_BASE_FACTOR = 0.5 # How many pops belonging to an IG that approves of enacting a law supports the movement to enact the law (base) POLITICAL_MOVEMENT_LAW_APPROVAL_POP_SUPPORT_SCALED_FACTOR = 0.25 # How many pops belonging to an IG that approves of enacting a law supports the movement to enact the law (for each approval after 1) POLITICAL_MOVEMENT_LAW_APPROVAL_POP_SUPPORT_RESTORE_FACTOR = 0.25 # How many (extra) pops belonging to an IG that approves of enacting a law supports a movement to restore a law POLITICAL_MOVEMENT_MIN_DURATION = 12 POLITICAL_MOVEMENT_MONTHLY_RADICALS = 0.01 # This fraction of pops backing a non-placated political movement become more radical each month POLITICAL_MOVEMENT_LOYALISTS_AT_SUCCESS = 0.25 # This fraction of pops backing a political movement become more loyalist if movement succeeds POLITICAL_MOVEMENT_DISBAND_CHANCE = 0.02 # Chance of a political movement that has lasted longer than POLITICAL_MOVEMENT_MIN_DURATION disbanding each day if radicalism for it is below REVOLUTIONARY_PROGRESSION_FROM_RADICALISM - scales with number of months that have passed (1 = 1%) POLITICAL_MOVEMENT_DISBAND_CHANCE_SUPPORT_DIVISOR = 0.01 # Political movement's chance to randomly disband is divided by ( 1 + support * this ) REVOLUTION_SUPPORT_STATE_MULTIPLIER = 0.015 # A revolution will have the backing of ( support * this fraction of states ) REVOLUTION_MAX_STATE_FRACTION = 0.75 # A revolution cannot be supported by more than this fraction of the states in the country MIN_RADICALISM_FOR_REVOLUTION_PROGRESSION = 50 # A political movement must have this much radicalism for a revolution to start organizing MIN_RADICALISM_FOR_REVOLUTION_START = 100 # At this amount of radicalism, allow full speed revolutionary progression and a revolution to start MAX_PROGRESS_FOR_UNSUPPORTED_REVOLUTIONS = 0.5 # Revolutions from movements that aren't supported by any IGs won't progress further than this REVOLUTIONS_PROGRESS_DECAY = 0.01 # Revolution meter without sufficient support REVOLUTIONARY_ADJACENCY_BIAS = 4 # higher state selection bias for adjacent states # Revolutionary states scoring REVOLUTION_STATE_WEIGHT_LOCAL_CLOUT_SHARE = 1.0 # Local clout weight at the moment of revolution secession REVOLUTION_STATE_WEIGHT_NATIONAL_AVERAGE = 1.0 # Local national revolutionary share BATTALION_CIVIL_WAR_WEIGHT = 1.0 # Battalion revolutionary share FLOTILLA_CIVIL_WAR_WEIGHT = 1.0 # Flotilla revolutionary share REVOLUTION_STATE_WEIGHT_UNIT_MIN = 0.1 # Min Unit Weight REVOLUTION_LOSER_IG_DEBUFF_YEARS = 10 # Debuff duration in years for IG that looses in a revolution NUM_REVOLUTIONARY_LAW_CHANGES = 2 # In addition to the main reason for the revolution, a revolutionary constitution will contain this many additional law changes SECESSION_LOSER_STATE_RADICAL_GAIN_REDUCTION_WEEKS = 52 # Number of weeks to reduce passive radical gain in states that lost a secession (decaying) SECESSION_WON_LOYALISTS_INCREASED_PERCENTAGE = 0.5 # This percentage of pops in the secession country of the seceded culture will become more loyal after a secession is victorious SECESSION_START_RADICALS_REDUCED_PERCENTAGE = 1.0 # The number of radicals of pops of the seceded culture in states that seceded will decrease by this amount when a secession war begins SECESSION_LOST_RADICALS_REDUCED_PERCENTAGE = 1.0 # The number of radicals of pops of the seceded culture in states that seceded will decrease by this amount when a secession is crushed REVOLUTION_START_RADICALS_REDUCED_PERCENTAGE = 1.0 # The number of radicals of pops will decrease by this amount when a revolution starts (relative to membership in defeated IGs) REVOLUTION_LOST_RADICALS_REDUCED_PERCENTAGE = 1.0 # The number of radicals of pops will decrease by this amount when a revolution is crushed (relative to membership in defeated IGs) IG_SUPPRESSION_COST = 200 # The amount of AUT it costs to Suppress an IG IG_BOLSTER_COST = 200 # The amount of AUT it costs to Bolster an IG DEFAULT_GOODS_TAX_COST = 100 # The amount of AUT it costs to tax a good by default TURMOIL_STATE_EFFECTS_THRESHOLD = 0.25 # How much turmoil a state needs to have before it gets any state-wide effects TURMOIL_STATE_HIGH_EFFECTS_THRESHOLD = 0.50 # Above this turmoil, add a harsher modifier TURMOIL_STATE_EXTREME_EFFECTS_THRESHOLD = 0.75 # Above this turmoil, add the harshest modifier SECESSION_TURMOIL_CUTOFF = 0.5 # Turmoil requires for cultures to start secession SECESSION_WEEKLY_BASE_CHANCE = 0.001 # weekly base chance for culture to start secession movement SECESSION_WEEKLY_CHANCE_EXCESS_DIV = 100 # Excess turmoil is divided by this and used to increase chance for secession movements MIN_POP_SIZE_TO_SECEDE = 100000 # Num pops (including dependents) needed for a secession movement to start SECESSION_STATE_CUTOFF_PERCENT = 0.33 # Required pop percentage in State to be egligble for secession SECESSION_TURMOIL_EXCESS_DIV = 1 # Excess turmoil is divided by this and used to increase secession movements SECESSION_COOLDOWN_YEARS = 5 MIN_INSTITUTION_INVESTMENT = 1 # Lowest Investment Level for active Institutions (modifier is clamped to this) MAX_INSTITUTION_INVESTMENT = 5 # Highest Investment Level for active Institutions (modifier is clamped to this) DAILY_INSTITUTION_SIZE_CHANGE = 0.0028 # Percent increase / decrease in Institution Size per day (0.0028 ~ 1/365) # Code-cached laws relevant to various game mechanics outside of their modifier effects LAW_SLAVERY_BANNED = "law_slavery_banned" LAW_DEBT_SLAVERY = "law_debt_slavery" LAW_SLAVE_TRADE = "law_slave_trade" LAW_LEGACY_SLAVERY = "law_legacy_slavery" LAW_ISOLATIONISM = "law_isolationism" LAW_FREE_TRADE = "law_free_trade" INITIAL_MOMENTUM_VARIANCE = 0.5 # How much Momentum should vary at the start of the election period ELECTION_INTERVAL_YEARS = 4 # How many years normally pass between elections CAMPAIGN_PERIOD_MONTHS = 6 # How long the Campaign Period before the election is REFORM_GOVERNMENT_PERIOD = 6 # How many months after election you can reform government for free REFORM_GOVERNMENT_RADICALIZATION_RATE = 0.25 # How many percent of a IG's supporters that will get radicalized when removed from government. RADICALISM_MEDIUM_THRESHOLD = 20 RADICALISM_HIGH_THRESHOLD = 40 RADICALISM_VERY_HIGH_THRESHOLD = 60 RADICALISM_EXTREME_THRESHOLD = 80 RADICALISM_CRITICAL_THRESHOLD = 100 SUPPORT_MEDIUM_THRESHOLD = 20 SUPPORT_HIGH_THRESHOLD = 40 SUPPORT_VERY_HIGH_THRESHOLD = 60 SUPPORT_EXTREME_THRESHOLD = 80 SUPPORT_CRITICAL_THRESHOLD = 100 } NEconomy = { MAX_WEEKLY_CONSTRUCTION_PROGRESS = 20 # Max construction progress per week on a single project # The number of times the initializewealth function is run during setup # The more times you run this the more accurate setup will be for Pop wealth compared to income NUM_TIMES_TO_INITIALIZE_WEALTH = 10 COUNTRY_GDP_MODIFIER_DIVISOR = 1000 # Scale the country_gdp static modifier by this divisor ECONOMY_OF_SCALE_START_LEVEL = 2 # Level at which buildings start getting economy of scale bonuses. Levels lower than this value provide no bonus [>=1] IN_DEFAULT_MINIMUM_PENALTY_SCALE = 0.1 # This amount of the 'in default' throughput penalty is applied right away IN_DEFAULT_DAYS_TO_FULL_PENALTY = 365 # How many days of being in default does it take to get the full throughput penalty DECLARE_BANKRUPTCY_PENALTY_DURATION_YEARS = 10 # How many years does it take for penalties from declaring bankruptcy to fully decay DECLARE_BANKRUPTCY_RADICALIZATION_SHARES_FACTOR = 0.1 # For each per-pop shares in their building, radicalize this percentage of a pop on declaring bankruptcy DOWNSIZE_BUILDING_POP_TYPE_RADICALIZATION_SHARED_FACTOR = 0.05 # This percentage of a pop becomes radicalized when a building they would have ownership shares in is downsized in the state (multiplied by per-pop shares) FIRED_POP_RADICALIZATION_BASE_FRACTION = 0.2 # This percentage of a pop becomes radicalized when they lose their job, for instance due to a building being downsized FIRED_POP_RADICALIZATION_SHARES_FACTOR = 0.1 # Additional percentage of pop that becomes radicalized they lost their job for each per-pop share they had in the building POLLUTION_TARGET_DIVISOR_BASE = 1 # Base value to divide total pollution generation by for calculating state region pollution target level POLLUTION_TARGET_DIVISOR_ARABLE_LAND_MULT = 0.1 # Amount per arable land to add to pollution divisor POLLUTION_CHANGE_SPEED = 0.5 # Each day, pollution in state region changes by this amount towards target POLLUTION_MAX = 255 POLLUTION_SPREAD_TO_NEIGHBOR = 0.25 # Adjacent state regions always have at least this much of their neighbor's pollution level MARKET_UPDATE_COUNT = 5 # How many markets have their buy package caches updated per tick GOODS_LEADERBOARD_SIZE = 10 # How many spots there are on each goods leaderboard MIN_SPOT_PRESTIGE_AWARD = 3 # How many spots on the goods leaderboard get awarded Prestige MIN_GOODS_PRICE = 1 # A good cannot have a lower base price than this PRICE_RANGE = 0.75 # min price of a good is base * (1 - PRICE_RANGE), Max price is base * (1 + PRICE_RANGE), PRICE_RANGE is locked to [0-1] BUY_SELL_DIFF_AT_MAX_FACTOR = 2 # the difference between buy/consumption and sell/production at min/max pricing, e.g. if set to 4 then if buy orders are 4x sell orders price is maxed GOODS_SHORTAGE_PENALTY_THRESHOLD = 0.5 # If supply / demand is lower than this, start applying output penalties, by default this should be ( 1 / BUY_SELL_DIFF_AT_MAX_FACTOR ) GOODS_SHORTAGE_PENALTY_INCREASE_SPEED = 0.01 # Goods shortage penalty increases by this fraction of the target each day GOODS_SHORTAGE_PENALTY_DECREASE_SPEED = 0.01 # Goods shortage penalty goes down by this fraction of GOODS_SHORTAGE_PENALTY_MAX each day GOODS_SHORTAGE_PENALTY_MIN = 0.05 # Goods shortage penalty can't be lower than this if there is any shortage GOODS_SHORTAGE_PENALTY_MAX = 0.5 # Goods shortage penalty can't be higher than this # If the delta between a historical trade route's level and its predicted level after gamestate init is at least this, print an error # We only care if the trade route is bigger than it can support - it's fine for historical routes to grow after game start! TRADE_ROUTE_HISTORICAL_LEVEL_DIFF_WARNING = 2 TRADE_ROUTE_BUREAUCRACY_COST = 20 # The cost in BUR per trade route TRADE_ROUTE_START_LEVEL = 1 # All new trade routes start at this level TRADE_ROUTE_MAX_LEVEL = 100 # Trade routes cannot be higher level than this TRADE_ROUTE_MIN_TOTAL_IMPORTS = 10 # This amount of a good can always be imported to a market even if there is no demand TRADE_ROUTE_DEFAULT_GOODS_QUANTITY = 10 # Base quantity traded from trade routes, if not otherwise specified in goods type TRADE_ROUTE_ECONOMY_OF_SCALE = 0.25 # Each level of trade route after the first adds this % to desired trade quantity TRADE_ROUTE_ECONOMY_OF_SCALE_MAX_LEVEL = 20 # After this level, trade route economy of scale no longer increases the amount per level TRADE_ROUTE_REQUIRED_CONVOY_BUFFER = 0.05 # Trade routes may not increase level if you wouldn't end up with at least this 'buffer' of produced convoys TRADE_ROUTE_AUTO_INCREASE_EMPLOYMENT_THRESHOLD = 0.9 # If trade route has this much of its max staffing level employed, it can automatically increase its level TRADE_ROUTE_AUTO_INCREASE_ACCEPTABLE_REVENUE_DIFFERENCE = 1.1 # Multiply revenue of new trade route level by this for the purpose of considering whether it's OK to auto-increase level (means that trade routes can level up even when slightly decreasing overall revenue) TRADE_ROUTE_AUTO_INCREASE_LOW_PRODUCTIVITY_THRESHOLD = 8 # If trade route's productivity would drop below this, don't automatically increase its level TRADE_ROUTE_AUTO_REDUCTION_EMPLOYMENT_THRESHOLD = 0.75 # If trade route has less than this of its max staffing level employed and could not hire anyone last week, it can automatically decrease its level TRADE_ROUTE_AUTO_REDUCTION_ACCEPTABLE_REVENUE_DIFFERENCE = 1.15 # Multiply revenue of current trade route level by this for the purpose of considering whether we should auto-decrease level (means that trade routes won't level down just for the purpose of a small revenue increase) TRADE_CENTER_MIN_AVAILABLE_WORKFORCE = 20000 # Don't put new trade centers in places with less available workforce than this TRADE_CENTER_TRADE_ROUTE_STATE_FACTOR = 4 # When deciding trade center for a trade route, increase score by this if the state is the exit/entry port for the trade route TRADE_CENTER_TRADE_ROUTE_STATE_NEIGHBOR_FACTOR = 2 # When deciding trade center for a trade route, increase score by this if the state neighboring the exit/entry port for the trade route TRADE_CENTER_TREATY_PORT_FACTOR = 15 # When deciding trade center for a trade route, increase score by this for treaty port in the remote market TRADE_CENTER_MARKET_CAPITAL_FACTOR = 5 # When deciding trade center for a trade route, increase score by this for the market capital in the market TRADE_CENTER_PORT_LEVEL_FACTOR = 1 # When deciding trade center for a trade route, multiply port level by this and add to the score TRADE_CENTER_EXISTING_TRADE_ROUTES_FACTOR = -1 # When deciding trade center for a trade route, multiply the number of trade routes already associated with the state by this score COMPETITIVENESS_PER_TRADE_ROUTE = 100 # Base competitiveness for a trade route COMPETITIVENESS_DOMESTIC_TRADE_MULT = 0.5 # Competiveness is multiplied by this if trading country and market controller are the same country COMPETITIVENESS_TRADE_AGREEMENT_MULT = 0.5 # Competiveness is multiplied by this if trading country and market controller have a trade agreement MARKET_SHARE_FROM_GDP = 1.0 # Get this many points of market share per pound of GDP in states MARKET_SHARE_MARKET_CONTROLLER_FACTOR = 1.33 # Market controller's market points count for this much more MARKET_SHARE_MARKET_ACCESS_BASE = 0.5 # How much of market points is always gained regardless of market access MARKET_SHARE_MARKET_ACCESS_SCALED = 0.5 # How much of market points is gained based on market access COUNTRY_MIN_CREDIT_BASE = 100000 # Added to the total Building Cash Reserves to determine credit limit (base) COUNTRY_MIN_CREDIT_SCALED = 0.05 # Added to the total Building Cash Reserves to determine credit limit (multiplied by GDP) GOLD_RESERVE_RATIO_AT_START = 0.5 # Unless a country history's 'treasury' parameter is set to a non-zero value, countries start with this ratio of their gold reserve in gold BUILDING_INITIAL_WAGE_WEEKS = 2 # A building will not adjust its wages for the first this many weeks of its existence MAX_WAGE_STEP_CHANGE = 0.1 # Wage rates can change at most this much each week SUBSIDIES_MIN_GAIN = 0 # If a building is subsidized, it will always collect enough subsidies to ensure at least this weekly cash reserve growth HIRING_RATE = 0.1 # Weekly hiring limit applied in a building per profession as a ratio of full employment EMPLOYMENT_PROPORTIONALITY_LIMIT = 0.1 # A building cannot have a difference of ratio of full employment between any two professions greater than this limit BUILDING_INIT_PROFIT_TARGET_MIN = 0.10 # Minimum % income a building wants to have as profit during initialization (will decrease wages towards this) BUILDING_INIT_PROFIT_TARGET_MAX = 0.20 # Maximum % income a building wants to have as profit during initialization (will increase wages towards this) BUILDING_PROFIT_TARGET_TO_RAISE_WAGES = 0.2 # Required profit margin raise wages no matter what, with BUILDING_WEEKS_BETWEEN_PAY_RAISES weeks cooldown BUILDING_WEEKS_BETWEEN_PAY_RAISES = 26 # Cooldown between pay raises no matter what MIN_RAISE_TO_HIRE = 0.10 # The minimum required increase in wages for an employee to switch jobs (1.0 = +100% = x2) BASE_RESOURCE_DISCOVER_CHANCE = 0.02 # Per day (1.0 = 1%) EMPLOYMENT_RESOURCE_DEPLETE_CHANCE = 0.005 # Multiplied by number of fully employed levels of the building RESOURCE_DISCOVER_MIN_FRACTION = 0.2 # Min fraction of resources that will be discovered for each successful roll RESOURCE_DISCOVER_MAX_FRACTION = 0.5 # Max fraction of resources that will be discovered for each successful roll FULLY_DISCOVERED_RESOURCE_DEPLETE_CHANCE_MULT = 1.0 # The chance of a resource depleting is multiplied by this when all of the resource has been discovered RESOURCE_DEPLETE_MIN_AMOUNT = 2 # Min amount of resources that will be depleted for each successful roll RESOURCE_DEPLETE_MAX_AMOUNT = 5 # Max amount of resources that will be depleted for each successful roll QUALITY_OF_LIFE_MIN = 1 QUALITY_OF_LIFE_MAX = 100 SUBSISTENCE_OUTPUT_AVERAGE_WAGE_RATE_FACTOR = 150 # Each 1.0 of subsistence output counts as this much wage rate when setting normal wages PEASANT_STARTING_WAGE_RATE_FACTOR = 1.0 # For the sake of calculating starting normal wages, treat peasants as having this pop type wage multiplier STARTING_WAGE_RATE_MULTIPLIER = 2.0 # Starting wage rate is multiplied by this (for easy balancing) NORMAL_WAGE_RATE_FALLBACK = 500.0 # If it's impossible to compute a normal wage rate (e.g. if every incorporated pop works in government buildings) set it to this (weekly £ per POP_SIZE_PACKAGE employees) MINIMUM_WAGE_RATE = 10.0 # The wage rate can never drop below this, no matter what (weekly £ per POP_SIZE_PACKAGE employees) MAXIMUM_WAGE_RATE = 100000.0 # The absolute maximum that a building's wage rate can be increased to. CREDIT_RATIO_HEALTH_THRESHOLD = 0.5 # If the principal is smaller than this ratio of the total credit, the economy is considered to be healthy GOLD_RESERVE_MIN = 1000 # If Gold Reserves are computed to be lower than this, it's instead set to this GOLD_RESERVE_LIMIT_FACTOR = 0.2 # The base factor of annual GDP that should be provided as a Gold Reserve GOLD_RESERVE_RETURNS_FACTOR = 1 # How rapidly diminishing returns will cause gold reserves to drop off after the limit has been reached (higher value increases penalty) RETOOLING_WEEKS = 0 # How long it takes for a building to get back up to full production after switching a production method BUILDING_TIMED_MODIFIER_WEEKS = 52 # Duration of a timed modifier which is applied after switching a production method URBANIZATION_PER_BUILDING = 100 PRICE_REPORT_MAX_ENTRIES = 4 NUM_COIN_ICONS = 13 COIN_ICON_EARNINGS_COMPARISON_STEP = 0.15 COIN_ICON_WAGE_COMPARISON_STEP = 0.05 COIN_ICON_PRICE_COMPARISON_STEP = 0.12 EXPENSIVE_GOODS_THRESHOLD = 1.24 # Used for some triggers and gui functions CHEAP_GOODS_THRESHOLD = 0.76 # Used for some triggers and gui functions NUM_PROFITABILITY_ICONS = 13 PROFITABILITY_ICON_COMPARISON_STEP = 0.15 EARNINGS_RATIO_HIGH_THRESHOLD = 1.5 # Buildings whose productivity exceeds this factor of the average will be considered high-productivity buildings EARNINGS_RATIO_LOW_THRESHOLD = 0.66 # Buildings whose productivity is below this factor of the average will be considered low-productivity buildings EARNINGS_ABSOLUTE_HIGH_THRESHOLD = 50 # Buildings whose productivity exceeds this amount will ALWAYS be considered high-productivity buildings EARNINGS_ABSOLUTE_LOW_THRESHOLD = 2 # Buildings whose productivity is below this amount will ALWAYS be considered low-productivity buildings SLAVE_BASKET_DEFAULT = 8 # Default level of consumer goods that a building will buy for its slaves SLAVE_BASKET_MIN = 1 # Min level of consumer goods that a building will buy for its slaves (the highest of this and SLAVE_BASKET_SCALED_MIN is used) SLAVE_BASKET_MAX = 12 # Max level of consumer goods that a building will buy for its slaves (the lowest of this and SLAVE_BASKET_SCALED_MAX is used) SLAVE_BASKET_SCALED_MIN = 0.5 # Multiplied by lowest non-slave wealth in the building SLAVE_BASKET_SCALED_MAX = 1 # Multiplied by lowest non-slave wealth in the building DEBT_SLAVERY_ENSLAVEMENT_RATE = 0.05 # Under debt slavery up to this much of a state's populace can be enslaved for their debts DEBT_SLAVERY_ENSLAVEMENT_RATE_DROP_OFF_PER_WEALTH = 0.2 # Under debt slavery every point of wealth protects this much of a pop's size from enslavement SLAVE_TRADE_MIN_VACANCIES_NEEDED_TO_IMPORT = 500 # There needs to be at least this many (non-subsistence) vacancies in buildings that can be filled by slaves in order for slave import to happen SLAVE_TRADE_MIN_POPULATION_TO_EXPORT = 100000 # There needs to be at least this many people in the state in order for it to be selected, or remain valid, as a slave import target SLAVE_TRADE_POPULATION_FRACTION_WEIGHT = 100 # Weight of slave population ratio in slave import marker selection SLAVE_TRADE_POPULATION_TOTAL_WEIGHT = 0.0002 # Weight of total population in slave import marker selection SLAVE_TRADE_TURMOIL_WEIGHT = 25 # Weight of slave turmoil in slave import marker selection SLAVE_TRADE_DISTANCE_WEIGHT = 1 # Inverse weight (penalty) for distance in slave import marker selection SLAVE_TRADE_OTHER_STATES_WEIGHT = 2 # Inverse weight (penalty) for having other slave import markers SLAVE_TRADE_EXISTING_STATE_CULTURE_WEIGHT_MULT = 10 # Total score of state is multiplied by this if importing from states whose homeland cultures are already present in this state SLAVE_TRADE_NUMBER_EVALUATED_STATES = 10 # Slave import marker is selected randomly from this many potential targets with highest weight SLAVE_TRADE_SLAVES_PER_WEEK = 100 # Base number of slaves that will be traded per marker per week SLAVE_TRADE_MIN_MARKET_ACCESS = 0.1 # Minimum market access multiplier for slave trade, i.e. even at a marker with 0 market access, this fraction of the base number will be traded BUILDING_LAYOFFS_MIN_WEEKS_BETWEEN = 4 # Minimum number of weeks between layoffs BUILDING_LAYOFFS_DECREASE_BY = 0.15 # The ratio that layoffs will reduce employment by (e.g. 0.15 means if you're currently 57% employed, reduce that to 48.45%) BUILDING_CASH_RESERVES_HIGH_ROI = 0.25 # A ROI (return on investment) at or above this value is considered "high". In this context ROI means how much more money a building makes compared to how much it spends. Must be >= BUILDING_CASH_RESERVES_MED_ROI. BUILDING_CASH_RESERVES_MED_ROI = 0.15 # A ROI (return on investment) at exactly this value is considered "medium". In this context ROI means how much more money a building makes compared to how much it spends. Must be >= BUILDING_CASH_RESERVES_LOW_ROI. BUILDING_CASH_RESERVES_LOW_ROI = 0.05 # A ROI (return on investment) at or below this value is considered "low". In this context ROI means how much more money a building makes compared to how much it spends. Must be > 0. BUILDING_CASH_RESERVES_FILL_TIME_HIGH_ROI = 26 # Base number of weeks to fill a building's cash reserves when ROI is high. Final number of weeks is directly interpolated if ROI is between medium and high. Must be > 0. BUILDING_CASH_RESERVES_FILL_TIME_MED_ROI = 52 # Base number of weeks to fill a building's cash reserves when ROI is medium. Must be > 0. BUILDING_CASH_RESERVES_FILL_TIME_LOW_ROI = 78 # Base number of weeks to fill a building's cash reserves when ROI is low. Final number of weeks is directly interpolated if ROI is between low and medium. Must be > 0. BUILDING_CASH_RESERVES_MIN_DEPOSIT_PERCENT = 0.25 # The minimum percentage of weekly profits that building owners will try to deposit into a building's cash reserves. Must be >= 0. BUILDING_CASH_RESERVES_MAX_DEPOSIT_PERCENT = 0.75 # The maximum percentace of weekly profits that building owners will try to deposit into a building's cash reserves. Must be >= BUILDING_CASH_RESERVES_MIN_DEPOSIT_PERCENT BUILDING_CASH_RESERVES_ALGO = 1 # Temporary. Algorithm to use when deciding how owners split profits between cash reserves and dividends. 1 = complex algo, 2 = simple one BUILDING_CASH_RESERVES_STATUS_QUO_THRESHOLD = 0.5 # If cash reserves are above this fraction of max, buildings won't try to reduce expenses even if they are losing money SHIPPING_LANE_CONVOY_COST_SCALING = 0.1 # The cost for a shipping lane for each node beyond the first. So at 0.1 it goes 1.0, 1.1, 1.2 and so on. GOODS_DEFAULT_CONVOY_COST_MULTIPLIER = 1 # The convoy cost of shipping a single unit of goods (can be overriden in defines) OVERSEAS_INFRASTRUCTURE_CONVOY_COST_MULTIPLIER = 2 # Convoy cost for each infrastructure usage in overseas state for port connection shipping lanes CUSTOMS_UNION_CONTROLLER_MINIMUM_TARIFFS_SPLIT = 0.25 # Minimum amount of tariffs that the senior partner of a customs union gets. The rest will be split among the junior partners, according to their GDP contribution (between 0 and 1) } NMilitary = { INITIAL_MANPOWER_COST_MULTIPLIER = 10 # there is an extra cost for training new recruits, compared to maintenence of said recruits MANPOWER_DIVISOR = 10000 # the strategic goods needed by soldiers are counted in sets of MANPOWER_LOST_DUE_TO_ATTRITION_PER_WEEK_MIN = 0.05 # The minimum percentage of manpower a unit can lose each week due to attrition MANPOWER_LOST_DUE_TO_ATTRITION_PER_WEEK_MAX = 0.15 # The maximum percentage of manpower a unit can lose each week due to attrition PLANNING_COUNTER_DAILY_INCREMENT = 0.01 # Planning counter will be incremented with this value on every partial daily tick PLANNING_COUNTER_DIV_ON_BATTLE_END = 2.0 # Planning counter will be divided with this value when a battle ends MIN_VARIABLE_DISTRIBUTION_PER_POP = 0 MAX_VARIABLE_DISTRIBUTION_PER_POP = 100 CMDR_CAUTION_FACTOR = 1.75 # The "strength factor" compared to expected average resistance the Commander wants in a Battle Plan before attacking CONCENTRATION_GAIN_PER_TICK = 0.01 BATTLE_PLAN_COOLDOWN_TICKS_PER_DAY = 4 BATTLE_PLAN_COOLDOWN_BASE = 6 # In ticks (4 ticks = 1 day) BATTLE_PLAN_COOLDOWN_MIN = 2 # In ticks (4 ticks = 1 day) BATTLE_PLAN_COOLDOWN_MAX = 20 # In ticks (4 ticks = 1 day) BATTLE_LETHALITY_MIN = 0.001 BATTLE_LETHALITY_MAX = 0.005 BATTLE_PICKING_BASE_RANDOM = 0.5 # Base weight is 0 to this to ensure some randomness between provinces with similar weight BATTLE_PICKING_STRENGTH_WEIGHT = 1.0 # Weight for picking province to attack, this is how important it is to attack under-defended provinces BATTLE_PICKING_WIDTH_WEIGHT = 1.0 # this is for attacking provinces with a wide combat width BATTLE_PICKING_NEIGHBOR_WEIGHT = 1.3 # this is for attacking provinces where we control many neighbors BATTLE_PICKING_UNCONTROLLED_STATE = 2.0 # Add weight to ensure full control of contested States before advancing into new ones BATTLE_PICKING_INVASION_TARGET = 2.0 # for target state of invasion BATTLE_PICKING_INVASION_TARGET_CLOSENESS = 0.8 # added weight for being closer to the invasion target. Scaled by how close province is relative to other in the front MAX_CE_ADVANTAGE = 1 MIN_CE = 0.01 # to make sure countries have atleast 0.01 CE MORALE_GAIN_ON_WIN_MULT = 0.01 WAR_SUPPORT_ON_BATTLE_WIN = 0.01 MORALE_CHANGE = 0.1 # Maximum percentage of morale change SUPPLY_CHANGE_RATE = 0.5 # How much we try to move towards the current supply per week SUPPLY_MIN_CHANGE = 0.05 # Minimum amount of supply change per week MIN_MANPOWER_CASUALTY_PER_ROUND = 5 # Minimum manpower losses per round SUPPLY_PENALTY_PER_SEA_ZONE = -0.05 # Supply rating penalty for each Sea Zone jump from the closest port SUPPLY_SEA_COASTAL = 0.1 SUPPLY_SEA_OCEAN = 0.05 GENERAL_TRAVEL_PIXELS_TO_DAYS_SCALE = 0.045 # Used to convert a travel distance from pixels to days. Example: a travel of 500px becomes 500 * 0.05 = 25 days GENERAL_TRAVEL_CAP = 50 # Limits the travel time to GENERAL_TRAVEL_CAP days. The overseas penalty (GENERAL_TRAVEL_OVERSEAS_SCALE) is still applied. GENERAL_TRAVEL_OVERSEAS_SCALE = 1.25 # Used if a general is traveling overseas. So the total duration of the travel becomes Duration * GENERAL_TRAVEL_OVERSEAS_SCALE GENERAL_TRAVEL_AUTO_REASSIGN_INSTANTLY = 15 # If General is being auto reassigned (front destruction for example) and travel time is below this number of days make them travel instantly GENERAL_INVALID_TRAVEL_DAYS = 0 # If our system fails to compute travel time due to invalid front/HQ position, then use this value as travel time instead. This prevents such cases from causing >300 days travels. This ignores GENERAL_TRAVEL_AUTO_REASSIGN_INSTANTLY. COMBAT_UNITS_PER_LEVEL = 1 # Number of combat units each level of military building can support. Must be the same for all recruitable buildings (barracks/conscription centers/naval bases) BASE_MORALE_RECOVERED_PER_DAY = 0.03 # Default morale recovered is 3% per day BASE_MORALE_LOST_PER_DAY = 0.05 # Default morale lost when out of supply is 5% # How manpower packages are selected in battle plans with several countries BATTLE_PLAN_MULTI_ARMY_MORALE_WEIGHT = 1.5 # scale weight by how demoralized a country army is overall. Zero means its ignored. BATTLE_PLAN_MULTI_ARMY_PER_COMMITTED = 0.2 # flat weight added per manpower package already committed to battle plan for country # How manpower packages are selected in attacking battle plans with any number of countries. As the name suggest they are only applied to the attacker BATTLE_PLAN_ATTACK_NO_SUPPLY_WEIGHT = 2.0 # the weight of a manpower package at 0% supply (applied last) (linearly interpolated with BATTLE_PLAN_ATTACK_FULL_SUPPLY_WEIGHT) BATTLE_PLAN_ATTACK_FULL_SUPPLY_WEIGHT = 1.0 # the weight of a manpower package at 100% supply (applied last) (linearly interpolated with BATTLE_PLAN_ATTACK_NO_SUPPLY_WEIGHT) BATTLE_PLAN_ADVANCE_PROGRESS_TO_LAUNCH = 100 # required accumulated advance progress to launch BATTLE_PLAN_SWITCH_ORDER_LOST_PROGRESS_PERCENT = 0.5 # 50% accumulated advance progress lost when switching from an attacking order BATTLE_BATTALIONS_MIN_BASELINE = 10 # minimum num combat units in Battle BATTLE_BATTALIONS_MAX_PERCENTAGE = 1.0 # max num combat units as percentage of commanders units. Default 100% BATTLE_BATTALIONS_MAX_BASELINE_GARRISON = 10 # max num combat units in Battle unassigned units in a HQ can give BATTLE_REINFORCEMENT_CHANCE_POW = 2.0 # Random chance POW'd to this value to get final reinforcement percentage over baseline BATTLE_REINFORCEMENT_COMMANDERLESS_FACTOR = 0.5 # Troops without a commander take this penalty to the number of reinforcements they can bring BATTLE_BASE_MIN_PROVINCES_TAKEN = 10 BATTLE_BASE_MAX_PROVINCES_TAKEN = 30 BATTLE_PROVINCES_TAKEN_FRONT_PROVINCES_NUM_DIVISOR = 5 # Attacker takes (num provinces in front) divided by this as extra, clamped to BATTLE_BASE_MIN_PROVINCES_TAKEN and BATTLE_BASE_MAX_PROVINCES_TAKEN BATTLE_PROVINCES_TAKEN_MAX_UNIT_RATIO_SCALE = 0.03 # Attacker gains 1 + ( this * attacking units left standing at end of battle ) taken province multiplier BATTLE_PROVINCES_TAKEN_MAX_DEPTH = 3 # Maximum distance from battle provinces that provinces can be taken DEFENSIVE_PROVINCES_RETAKEN_MAX_DEPTH = 1 # Maximum distance from battle provinces that provinces can be retaken in defensive battle BATTLE_PROVINCES_TAKEN_THEATER_UNIT_SCALE = 2 # Scales number of provinces captured by theater-provinces / ( units-in-theater * this-define ) BATTLE_PROVINCES_TAKEN_THEATER_MIN_SCALE = 0.5 # Number of provinces captured cannot be multiplied by less than this due to the above BATTLE_PROVINCES_TAKEN_MAX_EXTRA = 0 # If the selected provinces will cause split, capture the new theater as long as it has up to BATTLE_PROVINCES_TAKEN_MAX_EXTRA provinces. This might not respect the distance limit (BATTLE_PROVINCES_TAKEN_MAX_DEPTH). CONVOY_RAIDING_NUM_POSSIBLE_ATTACK_NODES = 5 # How many sea zones will be shown as possible attack sites for convoy raided player CONVOY_RAIDING_DELAY_BASE_DAYS = 5 # atleast this many days between each admiral raiding attempt CONVOY_RAIDING_DELAY_MAX_RANDOM_DAYS_FACTOR = 10 # up to this many extra days between each admiral raiding attempt CONVOY_RAIDING_CONVOY_ATTACK_CHANCE = 0.2 # Chance each attempt that convoy raiders find convoys to attack from each country along the shipping lane (1 = 100%) CONVOY_RAIDING_STRENGTH_MULT = 0.1 # How strong each Convoy raiding point is ( num warships * ce offense ) CONVOY_RAIDING_DAYS_UNTIL_DECAY = 28 # How many days it takes for convoy raiding effect to decay fully MIN_OFFENSE_DEFENSE = 1 # The absolute lowest Offense or Defense a unit can have INTERCEPTION_DELAY_BASE_DAYS = 5 # atleast this many days between each admiral interception attempt INTERCEPTION_DELAY_MAX_RANDOM_DAYS_FACTOR = 10 # up to this many extra days between each admiral interception attempt INTERCEPTION_BASE_CHANCE = 0.1 # base chance when trying to intercept enemy admirals INTERCEPTION_NAVAL_INVASION_CHANCE = 1.0 # chance for intercepting enemy admiral during naval invasion ADMIRAL_BATTLE_LOSS_REPAIR_TIME_DAYS = 28 # number of days after loosing a naval battle that an admiral cannot perform any new Orders NORMAL_ATTRITION = 0.25 # Attrition Risk is considered high if greater or equal than this MOBILIZATION_INFRASTRUCTURE_FACTOR = 0.01 # amount of mobilization generated per point of infrastructure. one battalion takes one full point of mobilization to mobilize MIN_MOBILIZATION_PER_DAY = 0.05 # minimum mobilization gained per day by each mobilizing battalion (the last unit to gain mobilization in a state might have to do with whatever is left) MAX_MOBILIZATION_PER_DAY = 0.20 # maximum mobilization gained per day by each mobilizing battalion BASE_BATTALION_CONVOY_COST = 10 # Cost in convoys per Battalion for shipping lanes } NDiplomacy = { DEFAULT_TRUCE_MONTHS = 60 PEACE_DEAL_DURATION_IN_DAYS = 30 PEACE_DEAL_COOLDOWN_IN_DAYS = 120 DEFAULT_FORCED_PACT_MONTHS = 12 OBLIGATION_FORCED_PACT_MONTHS = 120 EXPEL_DIPLOMATS_MONTHS = 60 OBLIGATION_MONTHS = 120 DIPLOMATIC_ACTION_COOLDOWN_DAYS = 0 # Number of days you must wait between diplomatic actions/proposals DIPLOMATIC_ACTION_PENDING_APPROVAL_DAYS = 14 # Number of days before a pending action is auto-declined DIPLOMATIC_PACT_COST_DEFAULT = 0 # The default maintenance in Diplomatic Capital for a pact DIPLOMATIC_PACT_COST_MULT_FROM_INFAMOUS = 0.25 # Maintenance cost of a pact is increased by this when at Infamous level of infamy DIPLOMATIC_PACT_COST_MULT_FROM_NOTORIOUS = 0.50 # Maintenance cost of a pact is increased by this when at Notorious level of infamy DIPLOMATIC_PACT_COST_MULT_FROM_PARIAH = 1.00 # Maintenance cost of a pact is increased by this when at Pariah level of infamy RIVALRY_BASE_SCALING = 1.0 RIVALRY_SCALING_PER_INTEREST = 0.5 RIVALRY_MAX_SCALING = 2 RIVALRY_LOWER_RANK_SCALING_MULT = 0.5 MIN_RELATIONS = -100 MAX_RELATIONS = 100 START_RELATIONS = 0 RELATIONS_THRESHOLD_FRIENDLY = 80 RELATIONS_THRESHOLD_AMICABLE = 50 RELATIONS_THRESHOLD_CORDIAL = 20 RELATIONS_THRESHOLD_POOR = -20 RELATIONS_THRESHOLD_COLD = -50 RELATIONS_THRESHOLD_HOSTILE = -80 REQUIRED_IMPROVE_RELATIONS_PROGRESS = 100 # How much change relations progress is needed to increase relations by 1 point REQUIRED_DAMAGE_RELATIONS_PROGRESS = -100 # How much change relations progress is needed to decrease relations by 1 point MIN_INFAMY = 0 # Infamy can't be lower than this MAX_INFAMY = 1000 # Infamy can't be higher than this START_INFAMY = 0 # This is the default amount of infamy countries start with INFAMY_THRESHOLD_INFAMOUS = 25 # Above this, countries are considered infamous and get related penalties INFAMY_THRESHOLD_NOTORIOUS = 50 # Above this, countries are considered notorious and get related penalties INFAMY_THRESHOLD_PARIAH = 100 # Above this, countries are considered pariah and get related penalties BASE_YEARLY_INFAMY_DECAY_RATE = 5.0 # Decay rate of infamy per year # Tension is used instead of relations by colonizable countries MIN_TENSION = 0 MAX_TENSION = 100 START_TENSION = 0 TENSION_THRESHOLD_UNEASY = 25 TENSION_THRESHOLD_TENSE = 50 TENSION_THRESHOLD_VOLATILE = 75 TENSION_DECAY_RATE = 5 # Per year TENSION_INCREASE_MIN = 2.5 # Tension increases by a min of this when a province is colonized TENSION_INCREASE_MAX = 20.00 # Tension increases by a max of this when a province is colonized TENSION_NUM_PROVINCE_SCALING_BASE = 10 # Below this amount of provinces a decentralized country gets additional tension when their provinces are colonized TENSION_NUM_PROVINCE_SCALING_RATE = 2.0 # Max multiplier increase in tension per province taken from having only a few provinces TENSION_INCREASE_RATE_ADJACENT = 0.5 # Multiplied to tension increase when it is neighboring countries' provinces that are colonized TENSION_UPRISING_CHANCE = 0.05 # Chance of war breaking out instead of the next province being colonized (base when tension is at least TENSION_THRESHOLD_VOLATILE) SWAY_OFFER_TIMEOUT_DAYS = 14 SWAY_OFFER_OBLIGATION_MANEUVERS_COST = 20 SWAY_OFFER_WARGOAL_MANEUVERS_COST_WAR_REPARATIONS = 10 SWAY_OFFER_WARGOAL_MANEUVERS_COST_HUMILIATION = 20 SWAY_OFFER_WARGOAL_MANEUVERS_COST_UNIFICATION_LEADERSHIP = 30 SWAY_OFFER_WARGOAL_MANEUVERS_COST_OPEN_MARKET = 20 SWAY_OFFER_WARGOAL_MANEUVERS_COST_REGIME_CHANGE = 5 SWAY_OFFER_WARGOAL_MANEUVERS_COST_BAN_SLAVERY = 20 SWAY_OFFER_WARGOAL_MANEUVERS_COST_ANNEX_COUNTRY = 10 SWAY_OFFER_WARGOAL_MANEUVERS_COST_LIBERATE_COUNTRY = 30 SWAY_OFFER_WARGOAL_MANEUVERS_COST_MAKE_PUPPET = 8 SWAY_OFFER_WARGOAL_MANEUVERS_COST_MAKE_DOMINION = 8 SWAY_OFFER_WARGOAL_MANEUVERS_COST_MAKE_VASSAL = 8 SWAY_OFFER_WARGOAL_MANEUVERS_COST_CONQUER_STATE = 10 SWAY_OFFER_WARGOAL_MANEUVERS_COST_RETURN_STATE = 10 SWAY_OFFER_WARGOAL_MANEUVERS_COST_TAKE_TREATY_PORT = 10 SWAY_OFFER_WARGOAL_MANEUVERS_COST_REVOKE_CLAIM = 5 SWAY_OFFER_WARGOAL_MANEUVERS_COST_REVOKE_ALL_CLAIMS = 0 # Can't be added, only for special plays SWAY_OFFER_WARGOAL_MANEUVERS_COST_CONTAIN_THREAT = 30 SWAY_OFFER_WARGOAL_MANEUVERS_COST_TRANSFER_SUBJECT = 8 SWAY_OFFER_WARGOAL_MANEUVERS_COST_LIBERATE_SUBJECT = 20 SWAY_OFFER_WARGOAL_MANEUVERS_COST_FORCE_RECOGNITION = 30 SWAY_OFFER_WARGOAL_MANEUVERS_COST_UNIFICATION = 100 SWAY_OFFER_WARGOAL_MANEUVERS_COST_INDEPENDENCE = 30 SWAY_OFFER_WARGOAL_MANEUVERS_COST_SECESSION = 100 SWAY_OFFER_WARGOAL_MANEUVERS_COST_POPULATION_SCALING_FACTOR = 10000 # The amount of population by which the factor below is multiplied SWAY_OFFER_WARGOAL_MANEUVERS_COST_POPULATION_SCALING_MULTIPLIER = 0.03 # For each SWAY_OFFER_WARGOAL_MANEUVERS_COST_POPULATION_SCALING_FACTOR population in a country/state, multiply maneuvers cost by this SWAY_OFFER_WARGOAL_MANEUVERS_COST_POPULATION_SCALING_MULTIPLIER_MAX_PER_STATE = 2.5 # Maneuvers population multiplier can't be higher than this for each state affected SWAY_OFFER_WARGOAL_MANEUVERS_COST_POPULATION_SCALING_MULTIPLIER_MAX_TOTAL = 5 # Maneuvers population multiplier can't be higher than this, regardless of number of states affected SWAY_OFFER_WARGOAL_MANEUVERS_COST_HOMELAND_FACTOR = -0.25 # Maneuvers cost is adjusted by this if the states taken/puppeted etc are Homelands of the aggressor DEFENSIVE_PACT_ACTION_NAME = "defensive_pact" ALLIANCE_PACT_ACTION_NAME = "alliance" WAR_GOAL_REPARATIONS_PACT_TYPE = "war_reparations" WAR_GOAL_REPARATIONS_DURATION = 60 # In months WAR_GOAL_OPEN_MARKET_DURATION = 60 # In months WAR_GOAL_BAN_SLAVERY_DURATION = 60 # In months WAR_GOAL_HUMILIATION_PACT_TYPE = "humiliation" WAR_GOAL_HUMILIATION_DURATION = 60 # In months WAR_GOAL_MAKE_PUPPET_SUBJECT_TYPE = "subject_type_puppet" WAR_GOAL_MAKE_DOMINION_SUBJECT_TYPE = "subject_type_dominion" WAR_GOAL_MAKE_VASSAL_SUBJECT_TYPE = "subject_type_vassal" WAR_GOAL_FORCE_RECOGNITION_FROM_TYPE = "unrecognized" WAR_GOAL_FORCE_RECOGNITION_TO_TYPE = "colonial" WAR_GOAL_FORCE_RECOGNITION_TARGET_RANK = "great_power" WAR_GOAL_FORCE_RECOGNITION_ACTOR_RANK = "unrecognized_major_power" WAR_GOAL_TREATY_PORT_BUILDING_LEVEL = 1 WAR_GOAL_LIBERATE_COUNTRY_LIBERATOR_START_RELATIONS = 50 WAR_GOAL_LIBERATE_COUNTRY_OPPRESSOR_START_RELATIONS = -50 WAR_GOAL_CONTAIN_THREAT_YEARS_SINCE_CONQUEST = 10 WAR_GOAL_REGIME_CHANGE_DURATION = 60 # Government in country with forced regime change is locked in for this number of months WAR_GOAL_REGIME_CHANGE_MAX_IDEOLOGICAL_OPINION = -5 # If ideological opinion is above this, regime change can't be used WAR_GOAL_INFAMY_POPULATION_SCALING_FACTOR = 10000 # The amount of population by which the factor below is multiplied WAR_GOAL_INFAMY_POPULATION_SCALING_MULTIPLIER = 0.03 # For each WAR_GOAL_INFAMY_POPULATION_SCALING_FACTOR population in a country/state, multiply infamy by this WAR_GOAL_INFAMY_POPULATION_SCALING_MULTIPLIER_MAX_PER_STATE = 5 # Infamy population multiplier can't be higher than this for each state affected WAR_GOAL_INFAMY_POPULATION_SCALING_MULTIPLIER_MAX_TOTAL = 50 # Infamy population multiplier can't be higher than this, regardless of number of states affected WAR_GOAL_INFAMY_HOMELAND_FACTOR = -0.25 # Infamy is adjusted by this if the states taken/puppeted etc are Homelands of the aggressor WAR_GOAL_INFAMY_OWN_SUBJECT_MULT = 0.1 # Infamy is multiplied by this for wargoals targeting your own subject WAR_GOAL_INFAMY_RELATIONS_TARGET_IMPACT = -1 # Each point of infamy generated by an incident also has this impact on relations with the target WAR_GOAL_INFAMY_RELATIONS_INTEREST_IMPACT = -0.5 # Each point of infamy generated by an incident also has this impact on relations with countries that have an interest in the target WAR_GOAL_INFAMY_CONQUER_STATE = 5.0 WAR_GOAL_INFAMY_RETURN_STATE = 2.0 WAR_GOAL_INFAMY_TAKE_TREATY_PORT = 2.0 WAR_GOAL_INFAMY_MAKE_PUPPET = 3.0 WAR_GOAL_INFAMY_MAKE_VASSAL = 3.0 WAR_GOAL_INFAMY_MAKE_DOMINION = 3.0 WAR_GOAL_INFAMY_TRANSFER_SUBJECT = 2.0 WAR_GOAL_INFAMY_ANNEX_COUNTRY = 5.0 WAR_GOAL_INFAMY_UNIFICATION = 2.0 WAR_GOAL_INFAMY_REGIME_CHANGE = 0.5 WAR_GOAL_INFAMY_DIPLO_PLAY_BACK_DOWN_REFUND = -0.75 # Refund of infamy for war goals that are dropped due to one side backing down in a diplo play (applied to initiator/target) WAR_GOAL_INFAMY_DIPLO_PLAY_BACKER_REFUND = -1.00 # Refund of infamy for war goals that are dropped for backers in a diplo play (due to play not escalating to war or backer switching sides) WAR_GOAL_INFAMY_PEACE_REFUND = -0.5 # Refund of infamy for war goals that are dropped due to a country capitulating or negotating peace without enforcing their wargoal WAR_GOAL_INFAMY_REDUCTION_FOR_TARGET = -0.5 # This much of a war goal's infamy value is removed from the target when target has it enforced on them # Higher priority wargoals are executed first WAR_GOAL_EXECUTION_PRIORITY_WAR_REPARATIONS = 1 WAR_GOAL_EXECUTION_PRIORITY_HUMILIATION = 2 WAR_GOAL_EXECUTION_PRIORITY_OPEN_MARKET = 3 WAR_GOAL_EXECUTION_PRIORITY_REGIME_CHANGE = 4 WAR_GOAL_EXECUTION_PRIORITY_BAN_SLAVERY = 5 WAR_GOAL_EXECUTION_PRIORITY_UNIFICATION_LEADERSHIP = 6 WAR_GOAL_EXECUTION_PRIORITY_ANNEX_COUNTRY = 7 WAR_GOAL_EXECUTION_PRIORITY_LIBERATE_COUNTRY = 8 WAR_GOAL_EXECUTION_PRIORITY_MAKE_PUPPET = 10 WAR_GOAL_EXECUTION_PRIORITY_MAKE_DOMINION = 11 WAR_GOAL_EXECUTION_PRIORITY_MAKE_VASSAL = 12 WAR_GOAL_EXECUTION_PRIORITY_CONQUER_STATE = 21 WAR_GOAL_EXECUTION_PRIORITY_RETURN_STATE = 22 WAR_GOAL_EXECUTION_PRIORITY_TAKE_TREATY_PORT = 23 WAR_GOAL_EXECUTION_PRIORITY_REVOKE_ALL_CLAIMS = 30 WAR_GOAL_EXECUTION_PRIORITY_REVOKE_CLAIM = 31 WAR_GOAL_EXECUTION_PRIORITY_CONTAIN_THREAT = 40 WAR_GOAL_EXECUTION_PRIORITY_TRANSFER_SUBJECT = 50 WAR_GOAL_EXECUTION_PRIORITY_LIBERATE_SUBJECT = 51 WAR_GOAL_EXECUTION_PRIORITY_FORCE_RECOGNITION = 60 WAR_GOAL_EXECUTION_PRIORITY_INDEPENDENCE = 100 WAR_GOAL_EXECUTION_PRIORITY_SECESSION = 100 WAR_GOAL_EXECUTION_PRIORITY_UNIFICATION = 200 DIPLOMATIC_PLAY_ABANDON_SUPPORT_RELATIONS_IMPACT = 50 DIPLOMATIC_PLAY_ESCALATION_DAILY = 1 DIPLOMATIC_PLAY_ESCALATION_PAUSE_FROM_ACTION = 5 # Number of days that escalation pauses when either side takes an action DIPLOMATIC_PLAY_ESCALATION_PAUSE_MAX = 20 # Escalation pause can't be longer than this no matter how many actions are taken at once DIPLOMATIC_PLAY_OPENING_PHASE_END = 21 # Before this, defender needs to set their wargoal and you can't join/sway DIPLOMATIC_PLAY_CLOSING_PHASE_START = 80 # After this, it isn't possible to join/sway further countries DIPLOMATIC_PLAY_ESCALATION_WAR_BREAKOUT = 100 BASE_COLONIAL_PROGRESS = 3 # Per day MIN_COLONIAL_PROGRESS = 0.1 # Per day COLONY_PROVINCE_BASE_SCORE = 10 COLONY_PROVINCE_COASTAL_SCORE = 30 # Replaces COLONY_BASE_SCORE for provinces with a coastline COLONY_PROVINCE_ADJACENCY_SCORE = 20 # How much will colonies prioritize adjacency to existing provinces when growing the colony COLONY_PROVINCE_NO_ADJACENCY_MULT = 0.1 # Multiply by this if no adjacencies at all COLONY_PROVINCE_RANDOM_FACTOR = 1.5 # The higher this is, the more random colonization province picking will be BASE_WAR_SUPPORT = 100 MAX_WAR_SUPPORT = 100 MIN_WAR_SUPPORT = -100 BATTLE_WS_WINNER = 2 BATTLE_WS_LOSER = -1 BATTLE_WS_LOSSES_MULT = -0.2 BATTLE_WS_KILLS_MULT = 0.1 COUNTRY_TIER_CITY_STATE_PRESTIGE = 0 COUNTRY_TIER_PRINCIPALITY_PRESTIGE = 5 COUNTRY_TIER_GRAND_PRINCIPALITY_PRESTIGE = 10 COUNTRY_TIER_KINGDOM_PRESTIGE = 15 COUNTRY_TIER_EMPIRE_PRESTIGE = 25 COUNTRY_TIER_HEGEMONY_PRESTIGE = 50 PRESTIGE_FROM_COUNTRY_GDP_DIVISOR = 1000000 PRESTIGE_FROM_COUNTRY_GDP = 3 # Per PRESTIGE_FROM_COUNTRY_GDP_DIVISOR GDP PRESTIGE_FROM_SUBJECT_GDP = 1.5 # Per PRESTIGE_FROM_COUNTRY_GDP_DIVISOR GDP in subjects PRESTIGE_FROM_POWER_PROJECTION = 0.2 # Per point of power projection from barracks & naval bases PRESTIGE_FROM_SUBJECT_POWER_PROJECTION = 0.1 # Per point of power projection from barracks & naval bases in subjects PRESTIGE_MIN_NUM_COUNTRIES = 100 # If there's less countries using prestige than this in the game, we add some filler countries to adjust average prestige levels FILLER_COUNTRY_PRESTIGE = 15 DAYS_TO_LOSE_POWER_RANK = 365 POWER_RANK_LOSS_THRESHOLD = 0.9 DEFAULT_STATES_REQUIRED_TO_RELEASE_COUNTRY = 0 # Applied if nothing is specified in country_creation DEFAULT_STATES_REQUIRED_TO_FORM_COUNTRY = 0.75 # Applied if nothing is specified in country_formation RELEASE_COUNTRY_AS_SUBJECT_RELATIONS_BOOST = 30 RELEASE_COUNTRY_AS_INDEPENDENT_RELATIONS_BOOST = 50 INTEREST_NUM_DAYS_CHANGE = 30 ESCALATION_THRESHOLD_TO_SWITCH_COUNTRY = 50 } NPops = { NUM_WEALTH_LEVELS = 99 POP_WEIGHT_MODIFIER_MAX_SCALE = 100 # The maximum scale applied to weight modifiers on the pop portrait DEFAULT_POP_TYPE = "laborers" # Used by: create_pop effects; migration; injured military leaving their outposts; slaves default employment role; etc. SLAVE_POP_TYPE = "slaves" # This is the type of pop that debtors will become POP_SIZE_PACKAGE = 10000 # "Normal" pop size used as a divisor on population when determining e.g. Needs to buy, wages to pay, etc WEALTH_PROGRESS_WANTED_BUFFER = 1.02 # A pop wants at least as much income as this x the next level buy package costs to increase its wealth WEALTH_PROGRESS_ACCEPTABLE_DEFICIT = 0.98 # A pop won't change wealth level if they can still afford this much of their current buy package costs WEALTH_PROGRESS_INCREASE = 0.2 # How fast wealth increases when a pop has money for higher grade buy packages. This factor is modified by how large the difference between income and cost is WEALTH_PROGRESS_DECREASE = 0.1 # How fast wealth decrease when a pop can no longer afford its buy package. This factor is modified by how large the difference between income and cost is WEALTH_PROGRESS_DECREASE_DEFICIT_MULT = 5 RADICALS_MAX_FROM_LOW_SOL = 0.1 # If pop is already this % radical, don't add more radicals from low SOL (Scales by delta between SoL and expected min SoL) RADICALS_MAX_FROM_DISCRIMINATION = 0.5 # If pop is already this % radical, don't add more radicals from discrimination (Scales by literacy) RADICALS_MONTHLY_FROM_LOW_SOL = 0.001 # Scales by delta between SoL and expected min SoL RADICALS_MONTHLY_FROM_DISCRIMINATION = 0.005 # Scales by literacy ASSIMILATION_RATE = 0.002 # Percentage of pops who will Assimilate into a different Culture each month, if eligible MIN_ASSIMILATION = 10 # If there is any assmiliation at least this many people will assimilate CONVERSION_RATE = 0.002 # Percentage of pops who will Convert into a different Religion each month, if eligible MIN_CONVERSION = 10 # If there is any conversion at least this many people will convert OBSESSION_DEMAND_MIN = 1.0 # The minimum relative demand of an obsession (overrides min demand in buy package goods categories) OBSESSION_DEMAND_MULT = 2.0 # Demand of an obsession is multiplied by this MIN_POPS_FOR_NEW_OBSESSION = 50000 # At least this many pops of a culture must live in a market to get an obsession from its goods MIN_SUPPLY_LEVEL_FOR_NEW_OBSESSION = 0.75 # Supply needs to be at least this times the demand MIN_DEMAND_VALUE_FOR_NEW_OBSESSION = 1000 # At this amount of (number of units * goods base price) needs to be demanded in a market to create a new obsession MAX_NUM_OBSESSIONS = 3 # A culture can only have this number of obsessions at the same time OBSESSION_SPAWN_CHANCE = 0.1 # Per year (1.0 = 1%), multiplied by goods supply and market size mult OBSESSION_SPAWN_CHANCE_MAX_SUPPLY_MULT = 3.0 # Supply relative to demand above this isn't factored into spawn chance SUBSTITUTION_WEIGHT_MULT = 5.0 # The weight of a substitutable good that has 100% of the supply share TABOO_DEMAND_MULT = 0.5 # Demand of a taboo is multiplied by this MAX_DEMAND_ADJUSTMENT_BASE_AMOUNT = 0.01 # Controls how much a pop can change demand of a substituable goods in a single update (base) MAX_DEMAND_ADJUSTMENT_SCALED_AMOUNT = 0.09 # Controls how much a pop can change demand of a substituable goods in a single update (scaled) MAX_DEMAND_ADJUSTMENT_SCALE = 1.0 # At this delta between target and current demand, apply max demand adjustment scale OBSESSION_POP_NEED_EXPENSE_MULT = 0.25 # Total spent on pop needs including obsessions is changed by this (scaled by number of obsessions, money is given or taken from other needs) TABOO_POP_NEED_EXPENSE_MULT = -0.25 # Total spent on pop needs including taboos is changed by this (scaled by number of taboos, money is given or taken from other needs) WORKING_ADULT_RATIO_BASE = 0.25 # Base ratio of working adults to dependents, this can be overridden by pop type definition and country modifiers. WORKING_ADULT_RATIO_SKEW_MAXIMUM = 2.0 # When the ratio of working adults to dependents is skewed, it tends to correct itself, this value clamps the maximum effect of this DEPENDENT_CONSUMPTION_RATIO = 0.5 # Dependents consume this multiple of Needs compared to Working Adults SUBSISTENCE_DIVIDENDS_MULT = 0.5 LITERACY_DIEOFF_BIAS = 0.7 # Percentage of literate pops who die of old age compared to the current literacy rate, the higher this value the faster the population becomes illiterate when literacy suffers DISCRIMINATION_BASE = 25 # The base value of discrimination for a discriminated pop; maps to the % pay cut they take and the level of Turmoil they get SOL_ADJUSTMENT_POP_IMPACT_FACTOR = 0.05 # How large part of a pop become revolutary/loyalist or stop being revolutionary/loyalist as a result of a change in standard of living SOL_STARVING_THRESHOLD = 5 SOL_STRUGGLING_THRESHOLD = 10 LOW_POP_THRESHOLD = 5000 # If a state has less than this amount of pops per arable land, apply the low pop modifier HIGH_POP_THRESHOLD = 100000 # If a state has more than this amount of pops per arable land, apply the high pop modifier MIGRATION_PULL_EMPTY_STATE = 100 # If a state has no pops at all, give it a huge migration pull MIGRATION_PULL_FROM_LIVING_STANDARD = 1 # Migration pull from each point of average living standard in target state MIGRATION_PULL_UNEMPLOYMENT_POPS_MIN = 10000 # At less than this in number of unemployed pops, do not apply unemployment divisor MIGRATION_PULL_UNEMPLOYMENT_POPS_FOR_MAX_DIV = 100000 # Num unemployed pops to apply max amount of unemployment divisor MIGRATION_PULL_UNEMPLOYMENT_DIV = 10 # At above max unemployed pops, migration pull is divided by this # The below factors are applied *after* migration pull threshold checks, so they only impact how large a share of migration a state gets MIGRATION_PULL_MULT_FROM_CULTURE_TARGET = 20.0 # Migration pull multiplied by this from target state being a cultural migration target MIGRATION_PULL_MULT_FROM_CULTURE_TARGET_ADJACENCY = 5.0 # Migration pull multiplied by this from target state being next to a cultural migration target MIGRATION_PULL_MULT_FROM_NO_DISCRIMINATION = 1.0 # Migration pull multiplier increased by this if pop is moving from discrimination to no discrimination (not applied to mass migration targets) MIGRATION_PULL_MULT_FROM_HOMELANDS = 0.5 # Migration pull multiplier increased by this if pop is moving to cultural homelands (not applied to mass migration targets) # General factors for how many pops will migrate MIGRATION_PULL_HIGH_THRESHOLD = 1.25 # State must have a migration pull of at least market average * this to get economic immigration MIGRATION_PULL_LOW_THRESHOLD = 0.75 # State must have a migration pull of less or equal than market average * this to get full amount of emigration ECONOMIC_MIGRATION_BASE = 0.02 # Base amount of a pop that wants to move for economic reasons ECONOMIC_MIGRATION_FROM_SOL_DIFFERENCE = 0.01 # Each point of difference of pop SoL to the market's average SoL makes this fraction of the pop want to economically migrate (in %) ECONOMIC_MIGRATION_STATE_POPULATION_THRESHOLD = 100000 # States with less pops than this have reduced economic emigration numbers to avoid total depopulation CULTURAL_MIGRATION_BASE = 0.05 # Base amount of a pop that wants to move due to mass migration CULTURAL_MIGRATION_FROM_RADICALS = 0.05 # At 100% radicals, this fraction of the pop wants to mass migrate MIGRATION_UNEMPLOYMENT_MULT = 10.0 # Amount of migration from SoL is increased by this when a pop is unemployed MIGRATION_MIN_STATE_POPS = 20000 # A state with less pops than this will not get emigration MIGRATION_MIN_POP_AMOUNT = 1 # No less than this amount of a pop can migrate each week (if any migration at all should happen) MIGRATION_MAX_POP_AMOUNT = 10000 # No more than this amount of a pop can migrate each week MIGRATION_MAX_PER_STATE_BASE = 500 # No more than this amount of people can move from or to a state in a single week (base) MIGRATION_MAX_PER_STATE_INFRASTRUCTURE = 10 # No more than this amount of people can move from or to a state in a single week (scales with infrastructure) MIGRATION_MAX_PER_STATE_UNEMPLOYMENT_ORIGIN_FRACTION = 0.05 # The amount of unemployed workers in a state * this value is added to how many people can move from it MIGRATION_MAX_PER_STATE_UNEMPLOYMENT_TARGET_FRACTION = 0.05 # The amount of unemployed workers in a state * this value is removed from how many people can move to it MIGRATION_MAX_PER_STATE_CULTURAL_MIGRATION_MULT = 5.0 # Weekly migration caps are multiplied by this amount by this for cultural-type migration MIGRATION_AVERAGE_ATTRACTION_EMIGRATION_MULT = 0.25 # States with an average migration attraction gets this multiplier to emigrants # Factors for creating mass migration targets MIGRATION_CULTURE_TARGET_TURMOIL = 0.2 # Create one migration target for this amount of cultural turmoil MIGRATION_CULTURE_TARGET_MIN_PULL = 10 # A state must have at least this in migration pull to be picked as a mass migration target MIGRATION_CULTURE_TARGET_MIN_MARKET_POPS = 100000 # A market must have at least this many possible migrants to trigger a mass migration MIGRATION_CULTURE_TARGET_MIN_STATE_POPS = 10000 # A state must have at least this many possible migrants for mass emigration to occur MIGRATION_CULTURE_TARGET_MIN_MARKET_ACCESS = 0.5 # A state must have at least this much market access to their market to be a mass migration target MIGRATION_CULTURE_TARGET_MIN_ARABLE_LAND = 30 # A state must have at least this much arable land to be a mass migration target MIGRATION_CULTURE_TARGET_APPEAR_CHANCE = 0.2 # Per week (1 = 1%) MIGRATION_CULTURE_TARGET_APPEAR_CHANCE_STRUGGLING_FACTOR = 0.1 # Chance increases by this for each point of SoL below 10 MIGRATION_CULTURE_TARGET_APPEAR_CHANCE_STARVING_FACTOR = 0.5 # Chance increases by this for each point of SoL below 5 (added on top of struggling factor) MIGRATION_CULTURE_TARGET_RANDOM_FACTOR = 3 # The higher this is, the more random the selection of mass migration targets will be MIGRATION_CULTURE_TARGET_DURATION = 1 # In years COLONIAL_GROWTH_BASE_FACTOR = 0.00001 # Colonial growth generated by a state is ( total pops / 1000 ) * this * modifier from institution MIN_BASE_COLONIAL_GROWTH = 0.01 # Country base colonial growth from population cannot be lower than this MAX_BASE_COLONIAL_GROWTH = 0.1 # Country base colonial growth from population cannot be higher than this MAX_COLONIAL_GROWTH = 0.02 # Colonies can grow by this much at most per day INDIVIDUALS_PER_POP_INFRASTRUCTURE = 10000 # Multiply state_infrastructure_from_population_add by this to determine infra from population QUALIFICATIONS_UPDATE_FACTOR = 0.0003 # Calculated potential values are multiplied by this value and the workforce size of the pop before being added to the existing potentials QUALIFICATIONS_NUM_MONTHS_AT_START = 60 # How many months of qualifications should be seeded to pops at start of game? INDIVIDUALS_TAXED_PER_TAX_CAPACITY = 10000 # How many pops can be taxed efficiently for each tax capacity } ### Pop Growth Constants @min_birthrate = 0.0010 @max_birthrate = 0.0050 @min_mortality = 0.0005 @max_mortality = 0.0070 @pop_growth_sol_equilibrium = 8 # Equilibrium is where (with no birthrate/death-rate mods) growth is stagnant @pop_growth_sol_delta_cap = 20 # SoL Delta Cap is where net growth stops increasing with rising SoL, i.e. both drop at the same pace @pop_growth_sol_cap = 40 # SoL Cap is where they birthrate/death-rate stop dropping @mortality_at_equilibrium = @[max_birthrate-(pop_growth_sol_equilibrium*(max_birthrate-min_birthrate)/pop_growth_sol_cap)] @birthrate_at_delta_cap = @[max_birthrate-(pop_growth_sol_delta_cap*(max_birthrate-min_birthrate)/pop_growth_sol_cap)] @improving_slope = @[(birthrate_at_delta_cap-min_birthrate-min_mortality-mortality_at_equilibrium)/(pop_growth_sol_delta_cap-pop_growth_sol_equilibrium)] @improving_intercept = @[-1*improving_slope*pop_growth_sol_equilibrium+mortality_at_equilibrium] @mortality_at_delta_cap = @[improving_slope*pop_growth_sol_delta_cap+improving_intercept] @fixed_delta_slope = @[(min_mortality-mortality_at_delta_cap)/(pop_growth_sol_cap-pop_growth_sol_delta_cap)] NPops = { POP_GROWTH_BIRTHRATE_REDUCTION_PER_SOL = @[(max_birthrate-min_birthrate)/pop_growth_sol_cap] POP_GROWTH_MORTALITY_AT_EQUILIBRIUM = @mortality_at_equilibrium POP_GROWTH_STARVING_SLOPE = @[(mortality_at_equilibrium-max_mortality)/pop_growth_sol_equilibrium] POP_GROWTH_BIRTHRATE_AT_DELTA_CAP = @birthrate_at_delta_cap POP_GROWTH_IMPROVING_SLOPE = @improving_slope POP_GROWTH_IMPROVING_INTERCEPT = @improving_intercept POP_GROWTH_FIXED_DELTA_SLOPE = @fixed_delta_slope POP_GROWTH_FIXED_DELTA_INTERCEPT = @[-1*fixed_delta_slope*pop_growth_sol_cap+min_mortality] POP_GROWTH_MIN_BIRTHRATE = @min_birthrate # Minimum base birthrate per month (at SOL_POP_GROWTH_CAP) POP_GROWTH_MAX_BIRTHRATE = @max_birthrate # Maximum base birthrate per month (at SOL = 0) POP_GROWTH_MIN_MORTALITY = @min_mortality # Maximum base mortality per month (at SOL_POP_GROWTH_CAP) POP_GROWTH_MAX_MORTALITY = @max_mortality # Maximum base mortality per month (at SOL = 0) POP_GROWTH_SOL_DELTA_CAP = @pop_growth_sol_delta_cap # Birthrate and Mortality retains its delta beyond this SoL POP_GROWTH_SOL_CAP = @pop_growth_sol_cap # Birthrate and Mortality reaches its minimum values and does not drop beyond this SoL POP_GROWTH_SOL_EQUILIBRIUM = @pop_growth_sol_equilibrium # The Standard of Living where Birthrate and Mortality correspond, after which Mortality diminishes slower } ### End Pop Growth Constant defines NEvents = { DEFAULT_MONTHS_VALID = -1 # months until it disappears, -1 = infinite DEFAULT_GUI_WINDOW_TYPE = "event_window" #Default gui window type for events NUM_DAYS_TO_AUTO_OPEN_EVENT = 30 # number of days before timeout to pop up the event window } NTechnology = { TECH_SPREAD_RANDOM_RANGE = 0.5 # How much can distribution of tech spread vary each week TECH_AHEAD_OF_TIME_PENALTY_FACTOR = 0.25 # For every tech in a previous era not already researched in this category, take this multiple of the cost as an additional penalty (multiplied by number of eras between the techs) } NCharacters = { RULER_MIN_AGE_FOR_HEIR = 20 # Before this age, don't randomly generate heirs for rulers RULER_AGE_FOR_HEIR_CHANCE_BOOST = 30 # A year after this age start boosting chance of heir generation RULER_HEIR_GENERATION_CHANCE = 0.001 # Per day RULER_HEIR_CHANCE_BOOST_SCALE = 0.001 # Added to RULER_HEIR_CHANCE_BOOST for each year after RULER_AGE_FOR_HEIR_CHANCE_BOOST AGE_GENERATION_STARTVAL = 20 AGE_GENERATION_DICE_ROLL_MAGNITUDE = 6 AGE_GENERATION_NUM_DICE_ROLLS = 5 DEATH_CHECKS_YEAR_BEGIN = 60 # first year to start checking for death by natural causes DEATH_CHECKS_YEAR_END = 100 # definately dead by this year RECRUIT_COMMANDER_NUM_OPTIONS = 2 RECRUIT_COMMANDER_POOL_SIZE = 3 RECRUIT_COMMANDER_VALUE_MARGINAL = -50 RECRUIT_COMMANDER_VALUE_AGE_MULT = 0.5 RECRUIT_COMMANDER_VALUE_SAME_IGS = -40 RECRUIT_COMMANDER_REMOVE_AGE = 55 # removed from the recruit pool when they reach 55 years RANDOM_MIN_RANK_DEFAULT = 1 RANDOM_MAX_RANK_DEFAULT = 3 HIGHEST_PROMOTION_RANK = 5 RULER_COMMANDER_START_RANK = 6 POPULARITY_HATED_THRESHOLD = -50 POPULARITY_DISLIKED_THRESHOLD = -25 POPULARITY_LIKED_THRESHOLD = 25 POPULARITY_LOVED_THRESHOLD = 50 POPULARITY_AUTHORITY_FACTOR = 1 # Popularity of ruler is multiplied by this when turned into Authority MAX_NUM_CHARACTERS_PER_TYPE = 20 # The maximum number of characters of a certain primary role (e.g. General, Admiral) you can manually recruit. This is a hard cap failsafe and should be set high enough that players have no legitimate reason to recruit more than this. ADULT_AGE = 16 # Characters under this age have more limited options. For example they cannot become military leaders VOIDED_CHARACTER_DEFAULT_DURATION = 12 # Default months a character will be in the void before being deleted INHERIT_RECESSIVE_GENE_CHANCE = 0.25 # Probability of a recessive gene being picked as an heir's dominant/recessive gene. Only used for portraits. ### TRAIT GENERATION # Every week, a character's Expected Trait Value meter increases by the specified amount below depending on their role and what they're doing (Commanders also gain the Activity Level from their Orders) # Every week, a percentile die is rolled against ( Expected Trait Value meter - Current Trait Value . If the die rolls under the current value, a new random trait will be added, if a valid one exists. WEEKLY_CONDITION_CHANCE = 0.03 # The chance that a character will get a condition each week (1 = 1%) MAX_EXPECTED_TRAIT_VALUE = 12.0 # The maximum amount of Trait Value a character can develop normally (note: not adhered to by add_trait effect) MAX_TRAITS_PERSONALITY = 1 # The max amount of Personality Traits a character can develop normally (note: not adhered to by add_trait effect) MAX_TRAITS_SKILL = 3 # The max amount of Skill Traits a character can develop normally (note: not adhered to by add_trait effect) MAX_TRAITS_CONDITION = 2 # The max amount of Condition Traits a character can develop normally (note: not adhered to by add_trait effect) DEFAULT_TRAIT_GAIN = 0.005 # Every character's Expected Traits meter increases by this much per week by default TRAIT_GAIN_POLITICIAN_POWERFUL = 0.01 # Powerful Politicians Expected Traits meter increases by this much per week TRAIT_GAIN_POLITICIAN_MARGINALIZED = 0.001 # Marginalized Politicians Expected Traits meter increases by this much per week TRAIT_GAIN_RULER = 0.005 # Rulers Expected Traits meter increases by this much per week TRAIT_GAIN_COMMANDER_AT_WAR_ADDITIONAL = 0.01 # Commanders increase their Expected Traits Value meter this much *extra* each week while at war, in addition to the Activity Level of their Order } NCommands = { BASE_ADVANCE_CHANCE = 0.1 # Base chance for an AO to advance each tick RETREAT_CUTOFF = 0.8 # Start considering retreat from a battle after the ratio of current manpower to initial manpower is below this RESOLVED_COMBAT_TIME_DAYS = 30 PAST_COMBAT_LINGER_TIME_DAYS = 365 MIN_REINFORCE_FACTOR = 0.02 MAX_REINFORCE_FACTOR = 0.10 WINNER_SPIRIT_REGAIN_FACTOR = 0.5 # Give back some spirit used for reinforcement to the winner after a battle LOSER_SPIRIT_REGAIN_FACTOR = 0 # Give back some spirit used for reinforcement to the loser after a battle WINNER_SPIRIT_REDUCTION = 0.5 # spirit lost after winning a battle LOSER_SPIRIT_REDUCTION = 0.2 # spirit lost after losing a battle REGENERATE_ORGSPIRIT_THRESHOLD = 0.9 # when organisation/spirit begins to regenerate linearly CONCENTRATION_ORG_LOSS_CUTOFF = 0.25 # when concentration starts to affect ao organisation gain and loss SECOND_ROW_TERRAIN_WEIGHT = 0.33 BATTLEFIELD_WEIGHT_BASE = 1.0 BATTLEFIELD_WEIGHT_PROVINCE_OCCUPIED_BY_ENEMY = 1.0 BATTLEFIELD_WEIGHT_INVADED_ENEMY_STATE = 1.0 SCOUTING_POWER_PER_PROVINCE = 0.1 } NBattle = { LEADING_ATTACKER_NAVAL_SP_MIN = 0.5 LEADING_ATTACKER_NAVAL_SP_MAX = 0.7 LEADING_DEFENDER_NAVAL_SP_MIN = 0.3 LEADING_DEFENDER_NAVAL_SP_MAX = 0.5 SEA_RETREAT_CUTOFF = 0.75 NAVAL_BATTLE_ROUND_DEVIATION = 0.5 NAVAL_BATTLE_MIN_PURSUIT_FIRE_ROUNDS = 0 NAVAL_BATTLE_MAX_PURSUIT_FIRE_ROUNDS = 4 NAVAL_MORALE_FACTOR = 0.2 # Normal Morale damage is multiplied by this factor if the battle is naval MASTER_CASUALTY_RATIO_ADD = 0.01 MASTER_CASUALTY_RATIO_MULT = 0.04 CASUALTY_MAJORITY_CULTURE_WEIGHT = 1.5 # Majority culture pops will be weighted to take 1.5x more casualties CASUALTY_ROLL_MIN = 50 # min ... CASUALTY_ROLL_MAX = 200 # max amount of casualties a unit can take each roll when applying casualties to units SURVIVAL_RATE = 0.75 DEPENDENTS_ROLL_MIN_PERCENT = 0.02 # min ... DEPENDENTS_ROLL_MAX_PERCENT = 0.2 # max percentage of Pops Size it can take as Dependents each roll MIN_DEPENDENTS_PER_ROLL = 25 # Minimum amount of dependents to added to a random pop CHANCE_OF_POPULARITY_NARROW_VICTORY = 0.5 # The chance (0-1) to be affected by popularity for a narrow victory (start with numeric advantage, end with numeric disadvantage) CHANCE_OF_POPULARITY_NORMAL_VICTORY = 0.1 # The chance (0-1) to be affected by popularity for a normal victory (any victory that's not narrow or heroic) CHANCE_OF_POPULARITY_HEROIC_VICTORY = 1.0 # The chance (0-1) to be affected by popularity for a heroic victory (start with numeric disadvantage against a more prestigious nation) POPULARITY_GAIN_NARROW_VICTORY = 3 # Multiple of commander_battle_end_victory modifier the winner should get for a narrow victory if the random chance roll is true POPULARITY_GAIN_NORMAL_VICTORY = 2 # Multiple of commander_battle_end_victory modifier the winner should get for a normal victory if the random chance roll is true POPULARITY_GAIN_HEROIC_VICTORY = 5 # Multiple of commander_battle_end_victory modifier the winner should get for a heroic victory if the random chance roll is true POPULARITY_GAIN_NARROW_LOSS = -3 # Multiple of commander_battle_end_loss modifier the loser should get for a narrow victory for the other side if the random chance roll is true POPULARITY_GAIN_NORMAL_LOSS = -2 # Multiple of commander_battle_end_loss modifier the loser should get for a normal victory for the other side if the random chance roll is true POPULARITY_GAIN_HEROIC_LOSS = -5 # Multiple of commander_battle_end_loss modifier the loser should get for a heroic victory for the other side if the random chance roll is true POPULARITY_DECAY_MONTHS = 60 # The number of months battle popularity modifiers decay over } NWar = { DEVASTATION_MAX = 100.0 DEVASTATION_INCREASE_RATE = 0.1 # Per day, scales with level of occupation DEVASTATION_DECAY_RATE = -0.1 # Per day, when there are no occupations DEVASTATION_FROM_BATTLES = 0.1 # For each battle AUTO_CAPITULATE_WAR_SUPPORT = -100 # When war support is this low, the country will auto capitulate DAYS_BETWEEN_WAR_EXHAUSTION = 7 # Every this many days war support will be reduced by the war exhaustion formula WAR_EXHAUSTION_BASE = 0.25 WAR_EXHAUSTION_KIA_FACTOR = 25.0 WAR_EXHAUSTION_TURMOIL_FACTOR = 2.0 # At 100% turmoil WAR_EXHAUSTION_OCCUPATION_FACTOR = 10.0 WAR_EXHAUSTION_CONTESTED_ENEMY_WARGOALS = 2.0 OCCUPATION_STATE_BASE_WEIGHT = 1 OCCUPATION_STATE_POP_WEIGHT = 1 OCCUPATION_STATE_INCORPORATED_WEIGHT = 10 STATE_CONQUEST_HOMELAND_AND_CLAIM_RADICALIZATION = 0.1 STATE_CONQUEST_HOMELAND_AND_CLAIM_DEMILITARIZATION = 0.25 STATE_CONQUEST_HOMELAND_OR_CLAIM_RADICALIZATION = 0.2 STATE_CONQUEST_HOMELAND_OR_CLAIM_DEMILITARIZATION = 0.5 STATE_CONQUEST_DEFAULT_RADICALIZATION = 0.4 STATE_CONQUEST_DEFAULT_DEMILITARIZATION = 0.75 } NText = { DURATION_SHOW_YEARS_THRESHOLD = 1105 # Duration will show as years if it's at least this many days DURATION_SHOW_MONTHS_THRESHOLD = 100 # Duration will show as months if it's at least this many days DURATION_SHOW_WEEKS_THRESHOLD = 15 # Duration will show as weeks if it's at least this many days } NDebug = { CASUALTY_LOG_EXPIRE_TIME_DAYS = 30 # Casualty log for units and buildings will be cleaned after this amount of days CASUALTY_LOG_NUM_LAST_ENTRIES_VISIBLE = 10 # Max amount of casualty events that are shown in casualty log lists }