按照抵抗和核心,游戏中的省份可以分为三类:一般核心省份、占领省份、殖民地省份。其中,一般核心省份指的是玩家拥有核心,但是没有发生抵抗的省份。占领省份指所有发生了抵抗的省份,无论其是否拥有核心,其中可以分为核心被占领省份和非核心被占领省份。殖民地省份指的是没有核心但是没有抵抗的省份。 对于所有的占领省份,都将会触发抵抗。
发起抵抗
游戏中,抵抗在默认情况下是自动发起的。具体来讲,游戏将会在转移省份时判断该省份是否是一个可以发起抵抗的省份,如果可以,那么将会发起抵抗。如果最初省份没有发起抵抗,那么除非该省份控制权发生了转移,否则即使该省份是可以发起抵抗的省份,也始终不会发生抵抗。在这种情况下,可以使用 start_resistance = yes/<country> 这一效果来在省份发起抵抗,不过仍然需要在该省份是一个可以发起抵抗的省份的情况下才能使用,否则不会产生任意效果。
在默认情况下,游戏将通过scripted_trigger中定义的 should_initiate_resistance 触发器判断该省份是否可以发起抵抗。其中 ROOT 作用域是省份,FROM 作用域是进行占领的国家,FROM.FROM 是被占领的国家。默认情况下定义在 /Hearts of Iron IV/common/scripted_triggers/00_resistance_initiate_triggers.txt中,但是可以定义在任意 /Hearts of Iron IV/common/scripted_triggers/*.txt 文件中。
可以通过在 should_initiate_resistance 之后附加省份的编号以单独为这个省份添加判定,可以附加多个省份,以表示让这些省份同都使用这一判定。添加的判定将会覆盖原本的 should_initiate_resistance 针对这些省份的判定。例如,下面的 scripted_trigger 可以让英国占领了法国的核心领土 123 或 321 时,123 或 321 将无视其他因素会发动抵抗。
should_initiate_resistance_123_321 = {
if = {
limit = {
FROM = {
tag = ENG
}
}
is_core_of = FRA
}
else = {
should_initiate_resistance = yes # 否则,在不是英法,应该正常发起抵抗
}
}
如果一个省份不满足该条件,那么通过 force_enable_resistance 效果可以让该省份无视 should_initiate_resistance 触发器,强制成为一个可以发起抵抗的省份。然而,该效果并不会直接为该省份启动抵抗,而是仍然在转移省份或者使用 start_resistance 效果时才能发生抵抗。
非核心领土
当玩家控制了非核心领土时,这些省份将会受到一些惩罚,使得其收益远低于核心领土。
具体来说,核心领土的人力将会被乘以一个比例数值,才是该省份中实际可以招募的人力比例。LOCAL_MANPOWER_ACCESSIBLE_NON_CORE_FACTOR的定义值与 local_non_core_manpower 修正将会决定这一比例。LOCAL_MANPOWER_ACCESSIBLE_NON_CORE_FACTOR 值的默认数值为 0.02 。而local_non_core_manpower 值的上限为MAX_NON_CORE_MANPOWER_FACTOR的定义值,该定义值的默认数值为 1
除此之外,在 /Hearts of Iron IV/common/modifier 中定义的 non_core 和 non_core_controller 这两个静态修正将会分别决定一个非核心省份被拥有或者控制时的修正。默认情况下,这两个修正定义在/Hearts of Iron IV/common/modifiers/00_static_modifiers.txt文件中,但是可以定义在任意/Hearts of Iron IV/common/modifiers/*.txt文件中。原版游戏的定义为,当一个非核心省份被控制,将会获得当地工厂 -75%,当地资源 -65% 的修正,而对其拥有者不产生效果。
抵抗度和顺从度
抵抗度和顺从度是两个介于 0 到 100 之间的一位小数值。
抵抗度与顺从度带来的主要影响将会体现在其修正上。其修正分为静态修正和抵抗顺从修正。
静态占领修正
抵抗度的静态修正总共有四条,顺从度和抵抗度的基础修正和附加修正。
其中,抵抗度和顺从度的基础修正是 resistance_effect_base 和 compliance_effect_base ,将会在抵抗开始时立刻赋予省份。
而抵抗度和顺从度的附加修正则是 resistance_effect 和 compliance_effect ,在其中定义的是在抵抗度和顺从度满时的修正。这将会根据当前的抵抗或者顺从值按比例缩放。默认情况下,这两个修正定义在/Hearts of Iron IV/common\modifiers\00_static_modifiers.txt文件中,但是可以定义在该文件夹下的任意{}/Hearts of Iron IV/
- .txt文件中。原版游戏的定义为,当顺从度满时,将会提供 18%非核心人力, 65%的工厂和资源。
抵抗顺从修正
抵抗顺从修正在 /Hearts of Iron IV/common/resistance_compliance_modifiers 文件夹中定义,将会显示在政治界面中的“占领地区”子界面中的抵抗和顺从条上,默认情况下定义在其中的 /Hearts of Iron IV/resistance_modifiers.txt 和 /Hearts of Iron IV/compliance_modifiers.txt 文件中。每一个条抵抗顺从修正都应该是一个以其独特的标识符开头的块,代表抵抗或者顺从达到某个级别时产生的修正。在抵抗顺从修正块中可以使用的参数包括:
tooltip:为一个本地化键,表示该抵抗顺从修正的描述,作为工具提示出现。可选。icon:为一个GFX键,表示该抵抗顺从修正的图标,可选。默认情况下为GFX_occupation_modifier_stripicon_small:为一个GFX键,表示该抵抗顺从修正的小图标,可选。默认情况下为GFX_occupation_modifier_striptype:该抵抗顺从修正的类型,必要。抵抗顺从修正的类型有四类,为state_resistance_modifier,core_resistance_modifier,state_compliance_modifier,core_compliancemodifier,分别代表省份抵抗修正、国家抵抗修正、省份顺从修正、国家顺从修正。国家顺从修正和抵抗修正计算的是该国被占领的核心领土的平均顺从或者抵抗度。这也会决定其下方的条件块和效果块的作用域,对于省份抵抗顺从修正,默认作用域即THIS是省份,FROM和ROOT均为占领省份的国家,FROM.FROM是被占领的国家。对于国家抵抗顺从修正,ROOT和默认作用域即THIS均为占领省份的国家,FROM是被占领的国家。threshold:为一个整数,必要。启用该修正时,抵抗或者顺从所需要达到的值。margin:为一个整数,可选。在抵抗或者顺从降低到threshold以下后,还需要降低以解除该修正的值。具体来讲,当修正启用时,抵抗或者顺从降低到[math]\displaystyle{ threshold-margin }[/math]以下时才会解除该抵抗顺从修正。visible:为一个条件块,可选,决定该修正何时可见。enable:为一个条件块,可选,与threshold一同决定该修正何时可以启用。on_enable:为一个效果块,可选,决定该修正启用时产生的效果。on_disable:为一个效果块,可选,决定该修正解除时产生的效果。state_modifier:为一个修正块,可选,决定该抵抗顺从修正对被占领省份的修正,无论抵抗效果如何,该修正都是施加在被占领省份上的。alert_level:可选,决定该抵抗顺从修正的紧急程度。可以使用的值包括high(待测试)alert_margin:为一个整数,可选,决定抵抗或者顺从在低于threshold多少时就会触发警报。
如下是一个国家抵抗修正的示例:
resistance_90 = {
type = core_resistance_modifier
icon = "GFX_occupation_resistance_modifier_strip:4"
small_icon = "GFX_occupation_resistance_modifier_small_strip:4"
threshold = 90
margin = 2
alert_level = high
alert_margin = 20
state_modifier = {
local_factories = -0.03
}
on_enable = {
if = {
limit = {
original_tag = RAJ
has_completed_focus = RAJ_forward_bloc
NOT = {
has_dynamic_modifier = { modifier = idea_RAJ_famine_country }
}
NOT = { FROM = { original_tag = DIP } }
}
#dont do anything
}
else = {
custom_effect_tooltip = resistance_90_effect_tooltip
hidden_effect = {
# avoid effects that can effect state controllers here
country_event = { id = occupied_countries.2 hours = 1 }
}
}
}
}
抵抗活动和驻军渗透
发生抵抗
游戏每天将会尝试发生一次抵抗。具体来讲,每天成功发生一次抵抗的几率受到抵抗度影响,在抵抗度满时的基础抵抗几率为RESISTANCE_ACTIVITY_CHANCE_AT_MAX_RESISTANCE的定义值,默认为 0.312,抵抗度不满时,则将乘以抵抗度再除100,并且保留三位小数(百分比后一位小数)。抵抗几率还会受到resistance_activity这一修正的影响,该修正将在基础抵抗几率的基础上乘算(若修正resistance_activity为 +100%,那么相当于在基础抵抗几率的基础上翻倍。)。需要注意的是,基础抵抗几率的计算,包括保留三位小数都在乘算上抵抗几率修正之前,这意味着,如果抵抗度是 1,那么默认情况下基础抵抗几率将会是 0.003,则如果此时抵抗几率修正为 +9900%,那么实际上的抵抗几率应该是 [math]\displaystyle{ 0.003*100=30\% }[/math] 而不是 [math]\displaystyle{ 0.00312*100=31.2\% }[/math]。
每次发生抵抗之后,将会对驻军造成伤害。具体来讲,抵抗会首先对驻军发动攻击,发动的攻击数值为1,且会增加上resistance_damage_to_garrison和被占领国的resistance_damage_to_garrison_on_our_occupied_states这两个修正的值。随后,驻军在受到攻击之后,其装甲率将会降低驻军被造成的伤害,具体来讲,造成的伤害为
- [math]\displaystyle{ \text {伤害} = \text {攻击}\cdot(1-\min\{\text {装甲率},\text {MAXIMUM_GARRISON_HARDNESS_WHEN_ATTACKED\} }) }[/math]
这意味着装甲率将会按比例削减受到的伤害,但是削减的伤害上限取决于MAXIMUM_GARRISON_HARDNESS_WHEN_ATTACKED的定义值,默认情况下该值为0.9 。驻军受到的每一点伤害值造成以GARRISON_MANPOWER_LOST_BY_ATTACK和GARRISON_EQUIPMENT_LOST_BY_ATTACK的定义值为比例的装备与人力损失。
抵抗活动
同时,如果抵抗成功发生了,那么还会尝试渗透驻军。每次驻军被渗透的基础几率为 [math]\displaystyle{ 1-\text{驻军效率} }[/math] ,其中,驻军效率的数值为 [math]\displaystyle{ 1-\max\{(\text{缺失装备})^3,(\text{缺失人力})^2\} }[/math] ,驻军渗透几率还会受resistance_garrison_penetration_chance修正值的影响,且该修正将在基础渗透几率上额外乘算附加。如果最终计算得到的渗透几率低于RESISTANCE_ACTIVITY_MIN_GARRISON_PENETRATE_CHANCE的定义值(默认情况下为0.02),那么将会被强行拉到这个定义值。这意味着默认情况下,即使驻军人力和装备都满,也有 2% 的概率发生驻军渗透。即,驻军渗透一次的几率应该为
- [math]\displaystyle{ \min\{\text{RESISTANCE_ACTIVITY_MIN_GARRISON_PENETRATE_CHANCE},(1-\text{驻军效率})\times(1+\text{渗透几率修正}) \} }[/math]
当驻军被渗透后,将会发生一次抵抗活动。抵抗活动定义在任意 /Hearts of Iron IV/common/resistance_activity/*.txt 文件中,默认情况下,原版游戏的抵抗活动定义在 /Hearts of Iron IV/common/resistance_activity/resistance_activity.txt 文件中。每一个抵抗活动都应该是一个以其独特的标识符开头的块。在块中可以使用的参数包括:
available:为一个条件块,可选,决定是否可以发生该抵抗活动。默认情况下,ROOT与THIS均为发生抵抗活动的省份, 可以使用controller获取省份的控制者。weight:为一个MTTH块,必要,表示该抵抗活动所占的权重。duration:为一个整数,可选,表示该抵抗持续的时间。max_amount:为一个整数,可选,表示在同一时间内,可以同时进行的该抵抗活动的最大数量。即,若一个抵抗持续时间是duration天,那么在接下来的duration天内将会占用一次该抵抗活动的数量,如果同时在进行的该抵抗活动的数量达到了max_amount,那么在有一次之前的该抵抗活动结束之前,该抵抗活动将不会再发生 。effect:为一个效果块,可选,表示该抵抗活动发生时产生的效果。默认情况下,ROOT与THIS均为发生抵抗活动的省份, 可以使用controller获取省份的控制者。state_modifier:为一个修正块,可选,表示该抵抗活动对省份产生的修正。alert_text:为一个本地化键,可选,表示该抵抗活动发生时,省份上浮现的警报文字。
如下是一个抵抗活动的示例:
sabotage_arms_factory = {
available = {
NOT = {
state_is_on_ireland_north = yes
}
non_damaged_building_level = {
building = arms_factory
level > 0
}
}
weight = {
base = 1
modifier = {
has_variable = targeted_sabotage_industry
check_variable = { targeted_sabotage_industry > 0 }
add = 4
}
modifier = {
occupation_law = harsh_quotas_occupation
add = -0.25
}
}
effect = {
if = {
limit = {
has_variable = targeted_sabotage_industry
check_variable = { targeted_sabotage_industry > 0 }
}
damage_building = {
type = arms_factory
damage = 0.5
}
subtract_from_variable = { var = targeted_sabotage_industry value = 1 }
}
else = {
damage_building = {
type = arms_factory
damage = 0.25
}
}
}
alert_text = building_is_sabotaged
}
占领法案
对于被占领省份,玩家可以选择切换占领法案。除了玩家手动选择外,还可以通过set_occupation_law 和 set_occupation_law_where_available这两个效果设置。在国家作用域内,这两个效果默认相同,需要保证PREV是一个国家,如果THIS和PREV不同,那么表示设置PREV在THIS的占领法,否则如果THIS和PREV相同,那么表示改变PREV的默认法案。二者唯一的区别是,如果无法为THIS设置该法案,将会尝试为每一个被占领的国家设置该法案。如果无法为THIS设置该法案,将会转而尝试为THIS的每一个省份设置默认法案,如果均不行,那么将会变为当前占领法案的fallback_law(见下方参数)。而如果在省份作用域内,则只有前者可以使用,表示设置PREV在THIS的占领法案。
特别的,对于这两个效果,可以使用default_law作为参数来表示默认法案。对于THIS和PREV不同的情况下,那么表示设置PREV在THIS的占领法为PREV的默认法案,否则表示将PREV的默认法案调整为原始法案(见下方参数)。
占领法案的修正将会根据驻军效率按比例缩放,驻军效率不满时,不满的部分的修正将会是 missing_garrison_law 的修正(见下方参数)。具体来讲,占领法案实际产生的修正为:
- [math]\displaystyle{ 当前占领法案修正\times驻军效率+缺失驻军修正\times(1-驻军效率) }[/math]
占领法案定义在 /Hearts of Iron IV/common/occupation_laws/*.txt 文件中,默认情况下,原版游戏的占领法案定义在 /Hearts of Iron IV/common/occupation_laws/occupation_laws.txt 文件中。每一个占领法案都应该是一个以其独特的标识符开头的块。在块中可以使用的参数包括:
tooltip:一个本地化键,可选,该占领法案的描述icon:一个GFX键,可选,该占领法案的图标visible:一个条件块,可选,决定该占领法案是否可见,THIS和ROOT是占领的国家,FROM是被占领的国家。而省份无法在占领法案中被调用。available:一个条件块,可选,决定该占领法案是否可用,THIS和ROOT是占领的国家,FROM是被占领的国家。而省份无法在占领法案中被调用。fallback_law:一个占领法案,可选,如果当前占领法案为该法案,且当前的占领法案不再可用时,那么将会主动改变为的占领法案。main_fallback_law:值为yes或no,可选。为yes时,如果当前法案没有定义fallback_law且不再可用,那么将会使当前法案改变为该法案。state_modifier:一个修正块,可选,表示当前法案施加在省份上的修正。该修正将会乘以当前省份的驻军效率才是实际修正值。suppressed_state_modifier:一个修正块,可选,当抵抗降低到 0 时,当前法案施加在省份上的修正。gui_order:一个整数,可选,当前法案的展示顺序。默认情况下为 0 。如果两个法案的顺序相同,那么展示顺序取决于加载顺序。ai_will_do:一个MTTH块,表示当前法案的 AI倾向。THIS和ROOT是省份,FROM是占领者,FROM.FROM是被占领的国家。除此之外还可以调用几个游戏内置的临时变量:ai_desire_resource:该值介于0到1之间,表示 AI 对资源的渴望程度。uncapped_resistance_target:表示实际的抵抗目标数值(其他方式中可以获取的抵抗目标数值均为上限100,下限0的数值,而该临时变量不受该上下限限制)。resistance_target_without_law:该值介于0到1之间,表示如果没有该法案修正时,实际的抵抗目标数值。garrison_min_support_ratio和garrison_equipment_support_ratio以及garrison_manpower_support_ratio:表示按照装备或者人力或其最小值可以组建的当前驻军编制的数量。(存疑,需要进一步测试)
default_law:值为yes或no,可选。为yes时,该法案被视为默认法案。即,在游戏开始时的默认法案。starting_law:值为yes或no,可选。为yes时,该法案被视为原始法案。即最初的默认法案(见上set_occupation_law的介绍)。missing_garrison_law:值为yes或no,可选。为yes时,该法案将会被视为缺失驻军时的那一部分。即,当省份的驻军效率不满时,该法案的修正将会按照不满部分的比例缩放施加在省份上。
References and notes
| 文件 | 效果 • 条件 • 定义 • 修正 • 修正列表 • 作用域 • 本地化 • on action • 数据结构 (标记, 临时标记, 国家别名, 变量, 数组) |
| 脚本 | 成就修改 • AI修改 • AI focuses • 自治领修改 • 权力平衡修改 • 剧本/标签 (游戏规则)• 建筑修改 • 人物修改 • 修饰性TAG修改 • 国家创建 • 军队修改 • 决议制作 • 装备修改 • 事件修改 • Idea修改 • 意识形态修改 • 军工商修改 • 国策制作 • 资源修改 • Scripted GUI • 科技制作 • 单位修改 |
| 地图 | 地图 • 省份 • 补给区域 • 战略区域 |
| 图形图像 | 界面 • 图形资产 • 实体模型 • 后期特效 • 粒子效果 • 字体 |
| 装饰性 | 肖像 • 命名列表 • 音乐包制作 • 音效 |
| 其他 | 控制台指令 • 故障排除 • 模组结构 • 成就代码分析 • Mod相关 • Nudger修改 |