开发日志135:mod相关,含大量2.2内容剧透
stellaris吧
全部回复
仅看楼主
level 13
这次是获得了仙女龙亲自确认没翻过所以不会撞车啦!
Greetings!
今天我们来聊聊2.2‘Le Guin’更新包中有关mod脚本的变动。由于modder们对细节非常注重,所以我们在这里将会非常啰嗦,如果你对制作mod不感兴趣,完全可以跳过本周日志去参加我们推特上的预热派对。
我不会把所用东西全部列举出来,但带你了解2.2主要的脚本变动,让你们现在就可以着手思考到时候怎么更新你们那一片红的mod,有效减少更新后咕咕咕的时间。
首先来点前奏
if/else_if/else这类顺序语句(不是程序专业的,术语说错了表喷)将会完全按照预期效果来执行了。可以保证你的mod一次性成功触发。旧的结构语句虽然不会显示错误记录,但会导致预期外的行为。
部分或完全删除了对资源进行硬性编码所引用的触发器和效果,并替换为可以编辑的任何新资源的脚本。例如原本的触发条件为“能量energy >= 200”,现在你可以用“resource_stockpile_compare(资源储量比较) = { resource = energy value(能量储备值) >= 200 }”和“add_resource(添加资源) = { my_mod_resource(我的mod资源) = 10 }”等。
大多数新的“经济单位”都带有一套自动生成的修饰,如果你添加一个新的区域,将有一个指标来增加一个星球上的这些区块的数量。 如果你创建新工作,则会有一个指标来添加此类工作,依此类推。 当你熟悉新系统后就会有上手的感觉了。
2018年11月29日 20点11分 1
level 13
随机效果权重!我们从编码下水道彻底疏通了这条又臭又长沟子。你们中的一些人可能已经发现了这个功能。 事实上,所有随机random_ *效果(例如random_playable_country,random_owned_ship等)都可以加权,以使某些对象比其他对象更有可能被选中(仍然符合基本限制标准)。 加权需要一个基数,以及带有加或乘的修饰符。
示例:random_ *随机权重模板:
random_playable_country = {
limit = { # 和至少16个国家建立了通讯
count_country = {
limit = {
is_country_type = default
has_communications = prev
}
count >= 16
}
}
weights = {
base = 1
modifier = { # 明珠国家有更高权重
add = 6
has_authority = auth_democratic
}
modifier = { # 玩家两倍权重
mult = 2
is_ai = no
}
}
country_event = { id = my_mod.1 }
}
2018年11月29日 20点11分 2
请问下权重1和权重2有多大的差别?
2019年06月23日 15点06分
level 13
区块
位置common\districts\
正如之前的开发日志中所详述的,地区在很大程度上取代了旧的地块概念。它们通常由玩家构建,直至由行星特征定义的上限,并作为回报创造就业机会。
我们来看看基本的采矿区类型。你会发现整体结构与上面列出的其他条目非常相似,对于大多数已在2.2‘Le Guin'中更新的数据库,这种模式确实会重复。 这个区块数据库条目定义了构建时间,它可以在哪里构建,在其他行星类型(例如机械世界)上可以转换成什么、构建和维护成本、它所建立的星球上的状态和触发条件(提供不同的工作类型到不同的帝国类型),以及控制AI如何优先考虑区块的常规权重。
示例:区块模板
district_mining = {
base_buildtime = 240
min_for_deposits_on_planet = 1
max_for_deposits_on_planet = 15
show_on_uncolonized = {
habitable_structure = no
NOR = {
is_planet_class = pc_machine
is_planet_class = pc_hive
is_planet_class = pc_city
}
}
potential = {
habitable_structure = no
NOT = {
is_planet_class = pc_machine
is_planet_class = pc_hive
is_planet_class = pc_city
}
}
allow = {
NOT = { has_modifier = resort_colony }
}
conversion_ratio = 1
convert_to = {
district_mining_uncapped
}
resources = {
category = planet_districts
cost = {
minerals = @base_cost
}
upkeep = {
energy = 1
}
}
planet_modifier = {
planet_housing_add = 2
}
triggered_planet_modifier = {
potential = {
exists = owner
owner = {
has_valid_civic = civic_agrarian_idyll
}
}
modifier = {
planet_housing_add = 1
}
}
triggered_planet_modifier = {
potential = {
exists = owner
owner = { is_hive_empire = yes }
}
modifier = {
job_mining_drone_add = 3
}
}
triggered_planet_modifier = {
potential = {
exists = owner
owner = { is_machine_empire = yes }
}
modifier = {
job_mining_drone_add = 2
}
}
triggered_planet_modifier = {
potential = {
exists = owner
owner = {
is_gestalt = no
is_fallen_empire_spiritualist = no
}
}
modifier = {
job_miner_add = 2
}
}
triggered_planet_modifier = {
potential = {
exists = owner
owner = { is_fallen_empire_spiritualist = yes }
}
modifier = {
job_fe_acolyte_mine_add = 2
}
}
triggered_desc = {
trigger = {
exists = owner
owner = { is_gestalt = yes }
}
text = job_mining_drone_effect_desc
}
triggered_desc = {
trigger = {
exists = owner
owner = {
is_gestalt = no
is_fallen_empire_spiritualist = no
}
}
text = job_miner_effect_desc
}
triggered_desc = {
trigger = {
exists = owner
owner = { is_fallen_empire_spiritualist = yes }
}
text = job_fe_acolyte_mine_effect_desc
}
prerequisites = {
tech_mechanized_mining
}
ai_weight = {
weight = 1
modifier = {
factor = 3
owner = {
has_monthly_income = {
resource = minerals
value < 0
}
}
}
modifier = {
factor = 2
free_housing < 0
}
modifier = {
factor = 3
any_owned_pop = { is_unemployed = yes }
}
# 无人工作
modifier = {
factor = 0
free_housing > 0
NOT = {
any_owned_pop = { is_unemployed = yes }
}
}
}
ai_resource_production = {
minerals = 1
trigger = {
always = yes
}
}
}
2018年11月29日 21点11分 4
level 13
工作
位置common\pop_jobs\
那么,建筑物增加的工作呢?它们在单独的工作数据库中定义,并且你将再次认出统一的语法。 让我们来看看执行者,一个产生1凝聚力的工作,如果你是一个警察国度则产生一个额外的凝聚力,并且如果你有反犯罪活动行星修饰状态激活的话,则需要花费2以上的能量币维持,但能减少更多的犯罪:
示例:工作模板
enforcer = {
category = specialist
condition_string = SPECIALIST_JOB_TRIGGER
building_icon = building_precinct_house
clothes_texture_index = 5
possible = {
specialist_job_check_trigger = yes
}
resources = {
category = planet_enforcers
produces = {
unity = 1
}
produces = {
trigger = {
owner = { has_valid_civic = civic_police_state }
}
unity = 1
}
upkeep = {
trigger = {
planet = { has_modifier = anticrime_campaign }
}
energy = 2
}
}
pop_modifier = {
pop_defense_armies_add = 2
}
planet_modifier = {
planet_crime_add = -25
}
triggered_planet_modifier = {
potential = {
owner = { has_non_swapped_tradition = tr_domination_judgment_corps }
}
modifier = {
planet_crime_add = -5
}
}
triggered_planet_modifier = {
potential = {
planet = { has_modifier = anticrime_campaign }
}
modifier = {
planet_crime_add = -10
}
}
weight = {
weight = @specialist_job_weight
modifier = {
factor = 0.2
has_citizenship_rights = no
NOT = { has_trait = trait_mechanical }
}
modifier = {
factor = 2
has_trait = trait_resilient
}
modifier = {
factor = 2
has_trait = trait_very_strong
}
modifier = {
factor = 1.5
has_trait = trait_strong
}
modifier = {
factor = 10
is_enslaved = yes
has_slavery_type = { type = slavery_military }
}
modifier = {
factor = 0.50
has_trait = trait_weak
}
modifier = {
factor = 0.1
can_take_servant_job = yes
}
modifier = {
factor = 1.5
has_job = enforcer
}
}
}
2018年11月29日 21点11分 6
level 13
社会阶层
位置common\pop_categories\
社会阶层,例如上述执行者工作所属的专家阶层,遵循类似的标准。它们具有在数据库文本文件中一范围定义资源输入,资源输出,状态修饰和设置。格式塔意识帝国的simple_drone阶层可能是游戏中最直接的例子:
示例:社会阶层模板
simple_drone = {
rank = 0
clothes_texture_index = 2
# 此条目会在无论是一个人口生成、移动去另一个星球或是所在国易主时被呼出
assign_to_pop = {
exists = owner
owner = { is_gestalt = yes }
}
weight = {
weight = 1
}
pop_modifier = {
pop_housing_usage_base = 1
pop_amenities_usage_no_happiness_base = 1
}
# 范围:人口被重新安置
allow_resettlement = {
always = yes
}
resettlement_cost = {
energy = 100
}
unemployment_resources = {
category = unemployment_resources
# 在有犯罪事件发生时待机
upkeep = {
trigger = {
planet = {
has_modifier = standby_mode
}
}
energy = 2
}
}
resources = {
category = pop_category_drones
upkeep = {
trigger = {
is_organic_species = yes
}
food = @living_standard_food_normal
}
upkeep = {
trigger = {
is_robotic_species = yes
}
energy = @living_standard_energy_normal
}
}
}
2018年11月29日 21点11分 7
level 13
资源
原战略资源位置common\strategic_resources\
资源现在完全可编写脚本而不是硬性编码,因此你可以轻松添加自己的资源,以补充基础游戏中固定的能量币,矿物,合金等。 这次数据库条目看起来有点不同,并定义了市场可交易性,出现赤字时会发生什么,以及基础AI权重。 战略资源也在此数据库中定义。
示例:基础资源模板
food = {
tradable = yes
market_amount = 100
market_price = 100
max = 10000
deficit_modifier = food_deficit #在状态修饰static modifiers中找到
ai_weight = {
weight = 1
}
ai_wants = {
base = 300
}
}
战略资源模板:
sr_dark_matter = {
tradable = yes
market_amount = 5
market_price = 100
max = 10000
prerequisites = { "tech_mine_dark_matter" }
visibility_prerequisite = { always = yes }
ai_weight = {
weight = 100
}
}
2018年11月29日 21点11分 8
触发语句模板trigger_docs最后,在编写本文时会用到,这里是2.2中的完整trigger_docs文档。请注意,它可能包含含糊不清或有时完全误导性的信息,有些内容甚至可能在发布之前发生变化!
2018年11月30日 13点11分
trigger_docs太长了我把原论坛地址发上来有需要的自己去看吧:forum.paradoxplaza.com/forum/index.php?threads/stellaris-dev-diary-135-script-changes-and-modding-in-2-2.1130525/记得在前面加HTTPS
2018年11月30日 13点11分
结语:我们现在都非常“努力”地对2.2和巨型企业DLC进行最后的修改,但我们将密切关注这个条目,尽管对更复杂问题的回答可能需要点时间。下周我们将发布完整的2.2补丁说明!
2018年11月30日 13点11分
level 8
[汗]怎么没了一楼,度娘这什么审核机制...
2018年11月29日 21点11分 10
[狂汗]原来不止一楼
2018年11月29日 21点11分
被删了个爽
2018年11月29日 21点11分
level 13
MMP百度司马
2018年11月29日 21点11分 12
level 13
一直发一直删,再发要被封号了,我把前面被删内容拿去申请恢复了
2018年11月29日 21点11分 15
level 13
百度在玩蛇[滑稽]
2018年11月29日 22点11分 18
level 12
[汗]
2018年11月29日 23点11分 19
level 7
[阴险]
2018年11月29日 23点11分 20
level 13
太惨了
2018年11月29日 23点11分 21
1 2 3 尾页