Comprehensive Victoria 3 modding skill for creating, modifying, and debugging mods...
Guide for creating and modifying Victoria 3 mods using Paradox's scripting language.
Every Victoria 3 mod requires:
.mod descriptor file in Documents/Paradox Interactive/Victoria 3/mod/common/ - Game logic (decisions, buildings, laws, technologies, etc.)events/ - Event fileslocalization/ - Localization files (YAML format)gfx/ - Graphics assetsgui/ - GUI modificationsversion="1.0.0"
tags={
"Gameplay"
}
name="My Mod"
supported_version="*"
path="mod/MyMod"
remote_file_id=""
Decisions go in common/decisions/. Format:
my_decision = {
is_shown = {
# Conditions for decision to appear
is_ai = no
}
possible = {
# Conditions for decision to be available
bureaucracy > 100
}
when_taken = {
# Effects when decision is taken
add_modifier = {
name = my_modifier
days = 365
}
}
ai_chance = {
base = 0
}
}
Events go in events/. Format:
namespace = mymod
mymod.1 = {
type = country_event
title = mymod.1.t
desc = mymod.1.desc
option = {
name = mymod.1.a
# Option effects
}
}
Localization files go in localization/<language>/ as YAML:
l_english:
mymod.1.t:0 "Event Title"
mymod.1.desc:0 "Event description."
mymod.1.a:0 "OK"
common/decisions/*.txtevents/*.txtcommon/buildings/*.txtcommon/laws/*.txt - See Creating Laws for detailed guidecommon/law_groups/*.txt - Required for lawscommon/technology/*.txtcommon/cultures/*.txtcommon/country_definitions/*.txtcommon/static_modifiers/*.txtcommon/scripted_effects/*.txtcommon/scripted_triggers/*.txtQuick example:
# 1. Create law group (common/law_groups/my_group.txt)
my_law_group = {
law_group_category = economy
}
# 2. Create law (common/laws/my_law.txt)
my_custom_law = {
group = my_law_group
icon = "gfx/interface/icons/law_icons/my_law.dds"
progressiveness = 50
modifier = {
country_construction_efficiency_add = 0.1
}
}
# 3. Add localization (localization/english/my_law_l_english.yml)
# my_custom_law:0 "My Custom Law"
See Creating Laws for complete guide.
ROOT - Original scopeTHIS - Current scopeFROM - Previous scopePREV - Previous scope in chainis_ai = yes/no - Check if AI controlledhas_modifier = <name> - Check for modifierhas_technology_researched = <tech> - Check technologybureaucracy > <value> - Numeric comparisonsowns_entire_state_region = <state> - State ownershipadd_modifier = { name = <name> days = <days> }set_variable = { name = <name> value = <value> }add_technology_researched = <tech>trigger_event = { id = <event_id> }For detailed information on specific modding areas, see:
Common issues:
Use game's error log to identify issues. Check Documents/Paradox Interactive/Victoria 3/logs/ for error messages.