考古遗址与遗珍

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,省略了后三个阶段):

Clausewitz 脚本
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 = { ... } 是空占位条目,注释说明它由代码处理,不能改名或删除。

放置遗址

遗址需要用效果创建,挂在一个对象上:

Clausewitz 脚本
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):

Clausewitz 脚本
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,删减):

Clausewitz 脚本
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
resourcescategory = 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 定义了花费小型古物的行动,结构与法令相似:

Clausewitz 脚本
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。