Override原版游戏文件
起因是1.12版本引入的瘟疫事件过于离谱,例如在贴吧臭名昭著的“君主之触”事件,由于没有内置CD所以甚至可以1分钟爆10次;从游戏roleplay的角度来看,就像是我作为一个国王不断在领地内瞬移,跟贱民们握手。这种问题就没办法,必须要对原版游戏文件进行override才能修改事件内容。
其实ck3的这个mod系统,基本上是等同于后来的覆盖先来的,而游戏原版文件是第一个被加载的,所以只需要使用正确的mod路径进行覆盖就会生效。
例如想要将原版游戏的events\dlc\ce1\physician_epidemic_events.txt
内的physician_epidemic_events.1040
事件进行修改,就只需要在mod文件夹的events\
里面建立一个.txt
文件,里面包含以下内容:
1
2
3
4
5
namespace = physician_epidemic_events
physician_epidemic_events.1040 = {
# 进行你的自定义
}
那么游戏加载的时候就会用你的mod的这个事件override掉原版的同ID事件。
如何实现“这是我直辖的地吗”的逻辑
起因是在解决physician_epidemic_events.1040
轰炸的时候发现它的trigger是realm_has_any_epidemic
,这是一个scripted trigger,内容是:
1
2
3
4
5
6
7
8
9
10
realm_has_any_epidemic = {
any_sub_realm_county = {
count >= $SIZE$
any_county_province = {
any_province_epidemic = {
outbreak_intensity >= $INTENSITY$
}
}
}
}
通过查阅游戏输出的triggers可以知道意思就是领地范围内任何公国有瘟疫,都要怪到你这个领主头上,无论你是不是直辖这个公国,甚至无论你是不是这个公国的持有者的直接领主。说好的封臣的封臣不是我封臣,我连间接封臣的地都不能拔,你却告诉我他管理不善爆瘟疫了要我受罚?我阐述你的梦啊!
这肯定不能忍,然后在继续翻事件的时候看到,有一个指令是province_owner
,很多事件里用的是exist = province_owner
,也有的事件是:
1
2
3
4
5
6
7
# 某个trigger块内
location.province_owner ?= {
OR = {
this = root
any_liege_or_above = { this = root }
}
}
再查阅event_targets.log
可知这是一个在province scope下使用会输出该province的owner(character scope)的指令。那么只需要对realm_has_any_epidemic
修改成这样就会实现这是我的直辖领地才为True的效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
realm_has_any_epidemic = {
any_sub_realm_county = {
count >= $SIZE$
any_county_province = {
any_province_epidemic = {
outbreak_intensity >= $INTENSITY$
}
province_owner ?= {
this = root
}
}
}
}
事件冷却
Wiki对此居然没有记录,看来是默认modder们都会去看原版文件了。这是一个顶级key(也就是跟type
、title
这些key同级的):
1
2
3
4
5
6
namespace = physician_epidemic_events
physician_epidemic_events.1040 = {
cooldown = { years = 5 }
# ...
}
当然也可以接受years = { 1 2 }
这样的形式。