灾难修改

本页面讲述的内容长期有效
(重定向自Disaster modding

灾难是EU4在1.9版本引入的全新系统,用于取代之前用于模拟国家灾难的MTTH事件。

灾难文件

首先要在 /Europa Universalis IV/common/disasters下创建一个新文件。这里以发生在新世界的瘟疫举例:

第一行写上灾难名称:

influenza_epidemic = {
}

其他内容都在这个大括号内进行描述。

接下来是对其潜在条件的描述。注意,这只是决定它是否会显示在玩家的“稳定与扩张”界面中(图标仍然是灰色),而非令其进度增加的条件。这里的编写同决议与事件基本一致。

potential = {
        NOT = {
                has_country_flag = had_influenza_epidemic
        }
        OR = {
                technology_group = north_american
                technology_group = mesoamerican
                technology_group = andean
                technology_group = south_american
        }
        any_country = {
                technology_group = western
                has_discovered = ROOT
        }
}

本例中,灾难的潜在条件即是:本国未发生过此灾难、新世界科技组、有西方科技组的国家发现本国。

接下来定义在满足潜在条件后,什么条件可以开启本灾难。满足本条件,并且进度实际增长时,就会在用户界面中弹出红色的警告旗帜。

can_start = {
        has_any_disaster = no
        is_year = 1500
}

1.10后,你可以定义什么时候本灾难的进程会中止。本例中,如果本国爆发另一个灾难时,本灾难的进度就会停止。

can_stop = {
        has_any_disaster = yes
}

接下来定义让灾难进度月度增加的条件:

progress = {
        modifier = {
                factor = 1
                any_country = {
                        technology_group = western
                        has_discovered = ROOT
                }
        }
        modifier = {
                factor = 2
                any_neighbor_country = {
                        technology_group = western
                }
        }
        modifier = {
                factor = 1
                any_neighbor_country = {
                        OR = {
                                has_country_flag = had_influenza_epidemic
                                has_disaster = influenza_epidemic
                        }
                }
        }
}

这里,如果有西方科技组的国家发现本国,那么它的进度每月+1,如果它与本国相邻,额外+2,如果本国与发生过瘟疫,或者正在发生瘟疫的国家接壤,也会额外+1。

接下来定义让已经爆发的灾难结束的条件:

can_end = {
        had_country_flag = { flag = flu_epidemic days = 3650 }
        stability = 2
}

本例中,这个国家必须要拥有某个事件flag10年,且稳定度为+2,灾难才可能结束。

这里定义灾难为国家提供的修正:

modifier = {
        global_unrest = 3
        stability_cost_modifier = 0.5
}

然后定义灾难开启时的事件(一般有一个直接的负面效果,以及一个flag的设定,用于判断何时结束),和结束时的事件(一般给一个正面效果,同时如果不希望它再度发生的话,也要给一个flag用作标记)。

on_start = epidemic.1
on_end = epidemic.2

这里,epidimic.1中给的flag就是flu_epidemic,epidimic.2中的是had_influenza_epidemic。

1.26后,你可以定义灾难开启时的效果。在本例中,附加了一段文本custom_tooltip。

on_start_effect = {
     custom_tooltip = epidemic_tooltip
}

最后决定月度事件的发生:

on_monthly = {
        events = {
        }
        random_events = { 
                1000 = 0
                100 = epidemic.3
                100 = epidemic.4	
        }
}

"events" 中的事件会在每月周期中都会触发,而"random_events"中的随机事件何时触发,取决于列表中给每个事件的权重:这里,有5/6的概率不发生事件,发生两个事件的概率各为1/12。 0

本地化

你需要对灾难的名称和描述本地化,也不要忘记相关事件。

influenza_epidemic: "瘟疫爆发"
desc_influenza_epidemic: "本国正在遭受白皮恶魔从海洋另一边带来的可怕瘟疫。"

图标


灾难图标的位置在/Europa Universalis IV/gfx/interface/disasters。一个图标文件内要做三个版本的图标:进度增长时的彩色标志、爆发后,带有火光的标志,以及潜在灾难的灰色标志。

最后在/Europa Universalis IV/interface/countrystabilityview.gfx添加如下文字(使用np++打开),以让你的图标出现在稳定与扩张界面中。

spriteType = {
 name = "GFX_disaster_influenza_epidemic"
 texturefile = "gfx//interface//disasters//influenza_epidemic.dds"
 noOfFrames = 3
 loadType = "INGAME"
}

现在,你已经完成了灾难的制作。


参考资料

灾难代码整理

保留了灾难的前提条件。


castilian_civil_war = {
	potential = {
		tag = CAS
		NOT = { has_country_flag = had_cas_civil_war }
		is_free_or_tributary_trigger = yes
		exists = ARA
		exists = POR
		ARA = {
			is_free_or_tributary_trigger = yes
		}
		POR = {
			is_free_or_tributary_trigger = yes
		}
		government = monarchy
		normal_or_historical_nations = yes
		uses_doom = no
	}
}

civil_war = {
	potential = {
		num_of_cities = 5
		any_owned_province = {
			base_tax = 5
			is_capital = no
		}
		government = monarchy
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = { has_country_flag = had_civil_war }
	}
}

counts_feud = {
	potential = {
		tag = DAN
		government = monarchy
		normal_or_historical_nations = yes
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = { has_country_flag = had_counts_feud  }
	}
}

court_and_country = {
	potential = {
		NOT = { has_country_flag = had_court_and_country }
		is_free_or_tributary_trigger = yes
		current_age = age_of_absolutism
		num_of_cities = 8
	}
}

empire_of_china_in_name = {
	potential = {
		NOT = { has_country_flag = had_empire_of_china_culture_disaster }
		is_emperor_of_china = yes
		has_dlc = "Mandate of Heaven"
		NOT = { culture_group = east_asian }
	}
}

empire_of_china_nomadic_border = {
	potential = {
		has_dlc = "Mandate of Heaven"
		is_emperor_of_china = yes
	}
}

english_civil_war = {
	potential = {
		OR = {
			AND = {
				tag = ENG
				NOT = { exists = GBR }
			}
			tag = GBR
		}
		NOT = { has_country_flag = eng_civil_war_happened }
		has_reform = english_monarchy
		is_free_or_tributary_trigger = yes
		is_lesser_in_union = no
		british_isles_region = {
			owned_by = ROOT
		}
		normal_or_historical_nations = yes
	}
}

estate_brahmins_disaster = {
	potential = {
		has_dlc = "Dharma"
		has_estate = estate_brahmins
		estate_influence = {
			estate = estate_brahmins
			influence = 80
		}
	}
}

estate_burghers_disaster = {
	potential = {
		has_estate = estate_burghers
		estate_influence = {
			estate = estate_burghers
			influence = 80
		}
	}
}

estate_church_disaster = {
	potential = {
		has_estate = estate_church
		estate_influence = {
			estate = estate_church
			influence = 80
		}
	}
}

estate_cossacks_disaster = {
	potential = {
		has_estate = estate_cossacks
		estate_influence = {
			estate = estate_cossacks
			influence = 80
		}
		OR = {
			NOT = { has_country_flag = cossack_estate_triggered }
			had_country_flag = {
				flag = cossack_estate_triggered
				days = 365
			}
		}
	}
}

estate_dhimmi_disaster = {
	potential = {
		has_estate = estate_dhimmi
		estate_influence = {
			estate = estate_dhimmi
			influence = 80
		}
		OR = {
			NOT = { has_country_flag = dhimmi_estate_triggered }
			had_country_flag = {
				flag = dhimmi_estate_triggered
				days = 365
			}
		}
	}
}

estate_jains_disaster = {
	potential = {
		has_dlc = "Dharma"
		has_estate = estate_jains
		estate_influence = {
			estate = estate_jains
			influence = 80
		}
	}
}

estate_maratha_disaster = {

	potential = {
		has_dlc = "Dharma"
		has_estate = estate_maratha
		estate_influence = {
			estate = estate_maratha
			influence = 80
		}
		OR = {
			NOT = { has_country_flag = estate_maratha_triggered }
			had_country_flag = {
				flag = estate_maratha_triggered
				days = 365
			}
		}
	}
}

estate_nobility_disaster = {
	potential = {
		has_estate = estate_nobles
		estate_influence = {
			estate = estate_nobles
			influence = 80
		}
	}
}

estate_nomadic_tribes_disaster = {
	potential = {
		has_estate = estate_nomadic_tribes
		estate_influence = {
			estate = estate_nomadic_tribes
			influence = 80
		}
	}
}

estate_rajput_disaster = {

	potential = {
		has_dlc = "Dharma"
		has_estate = estate_rajput
		estate_influence = {
			estate = estate_rajput
			influence = 80
		}
		OR = {
			NOT = { has_country_flag = estate_rajput_triggered }
			had_country_flag = {
				flag = estate_rajput_triggered
				days = 365
			}
		}
	}
}

estate_vaisyas_disaster = {
	potential = {
		has_dlc = "Dharma"
		has_estate = estate_vaisyas
		estate_influence = {
			estate = estate_vaisyas
			influence = 80
		}
	}
}

french_revolution = {
	potential = {
		NOT = { has_country_flag = had_revolution }
		tag = FRA
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = { revolution_target_exists = yes }
		government = monarchy
		NOT = { has_reform = celestial_empire }
		normal_or_historical_nations = yes
	}
}
french_wars_of_religion = {
	potential = {
		tag = FRA
		religion_group = christian
		NOT = { has_country_flag = had_religious_turmoil } 
		NOT = { has_country_flag = FRA_wars_of_religion_ended } 
		OR = {
			religion = catholic
			religion = protestant
			religion = reformed
		}
		is_force_converted = no
		normal_or_historical_nations = yes
	}
}

granada_succession_war = {
	potential = {
		OR = {
			tag = GRA
			tag = ADU
		}
		NOT = {
			has_country_flag = had_granada_succession_war
		}
		num_of_cities = 2
		any_owned_province = {
			is_capital = no
			is_core = ROOT
		}
		government = monarchy
		is_free_or_tributary_trigger = yes
		uses_doom = no
		normal_or_historical_nations = yes
		NOT = {
			is_year = 1455
		}
	}
}

internal_conflicts = {
	potential = {
		num_of_cities = 10
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = {
			has_country_flag = had_internal_conflicts
		}
		is_year = 1500
	}
}

janissary_decadence = {
	potential = {
		normal_or_historical_nations = yes
		has_reform = ottoman_government
		NOT = { has_country_flag = had_janissary_decadence }
	}
}

aspiration_for_liberty = {
	potential = {
		NOT = { has_country_flag = had_liberalism }
		NOT = { current_size_of_parliament = 1 }
		uses_doom = no
		num_of_cities = 5
		current_age = age_of_revolutions
		is_free_or_tributary_trigger = yes
		NOT = { has_reform = revolutionary_republic_reform }
		NOT = { has_reform = revolutionary_empire_reform }
	}
}

ming_crisis = {
	potential = {
		tag = MNG
		NOT = { has_country_flag = ming_crisis_happened }
		normal_or_historical_nations = yes
	}
}
peasant_war = {
	potential = {
	
		OR = {
			government = monarchy
			government = theocracy
		}
		NOT = { has_reform = celestial_empire }
		NOT = { has_reform = steppe_horde }		
		uses_doom = no
		is_free_or_tributary_trigger = yes
		num_of_cities = 5
		NOT = { has_country_flag = had_peasant_war }
		current_age = age_of_discovery
	}
}
religious_turmoil = {
	potential = {
		religion_group = christian
		current_age = age_of_reformation
		is_free_or_tributary_trigger = yes
		NOT = { has_country_flag = had_religious_turmoil } 
		OR = {
			religion = catholic
			religion = protestant
			religion = reformed
		}
		is_religion_enabled = protestant
		NOT = { tag = FRA }
		NOT = { has_country_modifier = counter_reformation } 
		is_force_converted = no
	}
}

revolution = {
	potential = {
		NOT = { has_country_flag = had_revolution }
		NOT = { tag = PAP }
		NOT = { tag = FRA }
		NOT = { has_reform = celestial_empire }
		is_free_or_tributary_trigger = yes
		uses_doom = no
		capital_scope = { continent = europe }
		num_of_cities = 30
		NOT = { revolution_target_exists = yes }
		current_age = age_of_revolutions
	}
}

the_dacke_feud = {
	potential = {
		tag = SWE
		normal_or_historical_nations = yes
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = { has_country_flag = had_the_dacke_feud }
		any_owned_province = {
			OR = {
				area = norrland_area
				area = svealand_area
				area = ostra_svealand_area
				area = gotaland_area
				area = vastra_gotaland_area
				area = skaneland_area
			}
		}
	}
}

time_of_troubles = {
	potential = {
		NOT = { has_country_flag = time_of_troubles }
		is_free_or_tributary_trigger = yes
		OR = {
			AND = {
				tag = MOS
				NOT = { exists = RUS }
			}
			tag = RUS
		}
		normal_or_historical_nations = yes
	}
}

war_of_the_roses = {
	potential = {
		tag = ENG
		normal_or_historical_nations = yes
		government = monarchy
		is_free_or_tributary_trigger = yes
		uses_doom = no
		NOT = { has_country_flag = had_war_of_the_roses  }
	}
}