考古遗址与遗珍
archaeological_site_types 的分阶段挖掘、阶段事件写法,relics 遗珍与 artifact_actions 小型古物用途
涉及的文件
| 位置 | 内容 |
|---|---|
common/archaeological_site_types/ | 考古遗址类型;说明见 99_README_ARC_SITES.txt |
events/ | 每个挖掘阶段完成时触发的事件 |
common/relics/ | 遗珍;说明见 99_documentation.txt |
common/artifact_actions/ | 消耗小型古物(minor_artifacts)的行动 |
一个考古遗址的生命周期是:被创建 → 某国可见 → 科学家带队挖掘,按阶段掷骰积累进度 → 每阶段完成触发一个事件 → 最后一个阶段的事件发奖励(常常是遗珍)。
遗址类型
原版“沙拉什废墟”(common/archaeological_site_types/00_base_game_arc_sites.txt,省略了后三个阶段):
site_ruins_of_shallash = {
desc = "site_ruined_starsystem_intro"
picture = GFX_evt_tomb_world
stages = 4
weight = 0 #set via initialiser
allow = {
exists = leader
leader = { leader_class = scientist }
}
visible = {
default_site_visible_trigger = yes
}
on_visible = {
country_event = { id = story.5 days = 30 }
}
stage = {
difficulty = 1
icon = GFX_archaeology_runes_E1
event = federations2.2
}
# ……第 2–4 阶段
on_roll_failed = {
from = {
standard_archaeological_site_on_roll_failed = { RANDOM_EVENTS = site_ruins_of_shallash_random_events }
}
}
}字段(据 README):
| 字段 | 说明 | 作用域 |
|---|---|---|
picture | 遗址图片,GFX_ sprite | |
desc | 描述,可以写成带 trigger 的块按条件切换 | this = 遗址 |
stages | 阶段数,必须与下面 stage 块的数量一致 | |
stage = { difficulty icon event } | 按顺序定义每个阶段;difficulty 可写数字或 { min = … max = … } 随机 | |
potential | 能否挖掘(不满足时直接不显示选项) | this = 舰队,from = 遗址 |
allow | 能否挖掘(不满足时按钮变灰) | 同上 |
visible | 某国能否看到这个遗址 | this = 国家,from = 遗址 |
on_create | 创建时执行 | this = 遗址 |
on_visible | 某国看到时执行 | this = 国家,from = 遗址 |
on_roll_failed | 某次掷骰失败时执行 | this = 舰队,from = 遗址 |
max_instances / weight | 只用于 create_archaeological_site = random 随机选取 |
注意 原版文件里的
random = { ... }是空占位条目,注释说明它由代码处理,不能改名或删除。
放置遗址
遗址需要用效果创建,挂在一个对象上:
create_archaeological_site = site_mymod_buried_archive支持的作用域包括行星、舰船、舰队、星系、环境物体、巨型建筑等(见 effects.log)。原版沙拉什废墟由 common/solar_system_initializers/federations_initializers.txt 在银河生成时放置;写 random 则按各类型的 weight 和 max_instances 随机选。
在事件里也可以从行星等对象用 archaeological_site 链接进入遗址作用域。
阶段事件
每个 stage 的 event 指向一个舰队事件。原版的阶段事件都带 archaeology = yes,this 是挖掘的舰队,from 是遗址。原版第一阶段(events/federations_events_2.txt):
fleet_event = {
id = federations2.2
title = federations2.2.name
desc = federations2.2.desc
picture = GFX_evt_city_ruins
show_sound = event_ghost_town
archaeology = yes
is_triggered_only = yes
immediate = {
from = { set_site_progress_locked = yes }
}
after = {
from = { set_site_progress_locked = no }
}
option = {
name = SEARCH
small_artifact_reward = yes
}
}- 原版在
immediate里用set_site_progress_locked = yes锁住遗址进度,after(选项之后)再解锁,避免事件还没处理完挖掘就继续推进; small_artifact_reward是原版脚本化效果(common/scripted_effects/archaeology_event_effects.txt),按概率给小型古物;- 想给当前阶段加线索、加快进度,用
add_stage_clues = <数量>(遗址作用域)。
事件写法本身见事件。
遗珍
原版“以太巨龙战利品”(common/relics/relics.txt,删减):
r_dragon_trophy = {
activation_duration = @triumph_duration
portrait = "GFX_relic_dragon_trophy"
sound = "relic_activation_ether_drake_trophy"
resources = {
category = relics
cost = {
unity = @activation_cost
}
}
triggered_country_modifier = {
potential = {
always = yes
}
country_unity_produces_mult = 0.10
}
score = 1000
active_effect = {
add_modifier = {
modifier = "ether_drake_triumph"
days = @triumph_duration
}
}
possible = {
inline_script = {
script = relics/activation_checks
RELIC = r_dragon_trophy
}
}
}| 字段 | 说明 |
|---|---|
activation_duration | 激活效果的持续天数 |
portrait | 遗珍界面里的图标 |
sound | 激活音效 |
can_be_stolen | 默认 yes |
resources | category = relics,cost 是激活费用 |
triggered_country_modifier | 持有期间的被动修正,可以写多个 |
active_effect | 激活时执行的效果 |
possible | 能否激活 |
score | 持有时的胜利分数 |
原版激活效果通常给一个限时静态修正,并另加一个冷却修正;relics/activation_checks 这个 inline_script 负责检查冷却。
在脚本里:add_relic = <键>、remove_relic = <键>(国家作用域),触发器 has_relic = <键>。
小型古物的用途
common/artifact_actions/artifact_actions.txt 定义了花费小型古物的行动,结构与法令相似:
artifact_arcane_deciphering = {
resources = {
category = artifact_actions
cost = {
minor_artifacts = 500
}
}
potential = {
has_technology = tech_arcane_deciphering
}
# allow、effect、ai_weight……
}本地化
| 对象 | 键 |
|---|---|
| 遗址 | <遗址键>(名字),以及 desc 引用的键 |
| 阶段事件 | 事件的 title、desc 和选项 |
| 遗珍 | <遗珍键>、<遗珍键>_desc |
原版沙拉什废墟的名字键就是 site_ruins_of_shallash。