制作兵种:战役接入
基础单位能在自定义战斗中出现,不代表它已经属于战役兵种。战役还需要势力权限、招募来源、AI 评价和 Unit Set 等连接。本篇用“从玉勇兵营招募精锐玉勇”演示一种普通建筑招募路径,不代表兵种只能从兵营招募。
本例适合什么情况
本例适合一个准备加入震旦常规军队、随玉勇建筑链升级后继续可招募的普通步兵。若单位应来自地标、资源建筑、港口、主城、防御或经济建筑,直接换成对应建筑等级;若它属于游牧建筑、营地、精英部队、佣兵池、召唤、任务奖励或脚本解锁,则可能要从相似原版单位追踪其他表和 Lua,不能强行套进玉勇兵营。
自行查找时,先用新单位最接近的原版单位 Key 做全局搜索,再筛选招募、权限、AI、Unit Set 和特殊系统相关表。每一条记录都要回答“我希望新单位参与这个系统吗”;不要把所有搜索结果机械复制。
先看表单分工
| 表单 | 作用 | 本篇处理方式 |
|---|---|---|
units_to_groupings_military_permissions_tables |
允许军事分组使用单位。 | 添加到wh3_main_cth。 |
building_units_allowed_tables |
让指定建筑等级招募单位。 | 本例添加到玉勇兵营各级;也可以选择其他建筑等级。 |
cdir_military_generator_unit_qualities_tables |
告诉战役 AI 该单位采用什么建军定位和质量档。 | 复制同定位模板并改单位 Key。 |
allied_recruitment_unit_permissions_tables |
允许通过盟友招募使用单位。 | 需要时添加。 |
allied_recruitment_core_units_tables |
CA 原版用于登记核心盟友招募单位。 | RPFM 5.0.6 将它诊断为禁止表,只读参考,不要复制进 Mod。 |
unit_set_to_unit_junctions_tables |
把单位加入科技、领主技能和效果使用的 Unit Set。 | 复制真正适用的集合。 |
unit_sets_tables |
注册全新的 Unit Set。 | 只有要给 Mod 单位建立专属集合时才用。 |
effect_bonus_value_ids_unit_sets_tables |
指定某个效果的某种加成作用于哪个 Unit Set。 | 复用现有集合时不用复制;自制专属效果链时再建。 |
main_unit_ownership_content_pack_junctions_tables |
CA 原版用于登记内容包所有权。 | 属于禁止表,只读参考,不要复制进 Mod。 |
允许震旦军事分组使用
本篇截图展示依赖项 → 游戏文件里的原版只读模板,页签带Game-RO:。先在自己的 Pack 中新建同类型、同版本的表,再复制所需完整行;也可以导入整个表文件,先把自己 Pack 内的data__改成带作者前缀的文件名,再精简记录。筛选不会让“导入文件”变成“只导入筛选结果”。不要使用Assembly Kit 文件作为导入或引用来源。
在units_to_groupings_military_permissions_tables添加:
Unit |
Military Group |
|---|---|
twcn_tutorial_cth_inf_elite_jade_warriors |
wh3_main_cth |
这一步让战役把新单位视为震旦军事分组可用单位。仅添加招募建筑但漏掉权限,可能导致单位不出现在正常招募体系中。
其他文化或军事体系使用的Military Group不同。应搜索同派系常规兵种的units_to_groupings_military_permissions_tables记录进行确认,不要把wh3_main_cth用于非震旦单位。
选择招募来源
本例选择玉勇兵营,是因为精锐玉勇仍是震旦常规玉勇步兵,设计上要随这条建筑链升级后保持可招募。搜索原版玉勇 Key 并筛选building_units_allowed_tables后,可以看到它对应多条建筑记录;下面三档只是本例要复用的常规建筑链:
wh3_main_cth_jade_barracks_1
wh3_main_cth_jade_barracks_2
wh3_main_cth_jade_barracks_3
- 全局搜索
wh3_main_cth_inf_jade_warriors_0,在结果中筛选building_units_allowed_tables。 - 逐条查看
Building,再跳转到建筑等级、建筑链或 Loc 名称,确认哪几条就是计划使用的招募来源。 - 在自己 Pack 中创建同类型、同版本的表,复制这三条完整记录后粘贴进去,把
Unit改为精锐玉勇的新单位 Key。另一种做法是从游戏文件导入整张表,先重命名自己 Pack 内的data__,再只保留需要的三条;不要把“导入表文件”误解成只导入当前筛选的几行。 - 选中三条
Key,使用Generate IDs生成新的唯一数字。 - 保持
XP、Conditions、Faction和Enabled与模板一致,除非你的设计明确需要不同条件。
Key是整数编号,不是单位 Key;新增记录要生成不冲突的数字。原版玉勇这些建筑记录的Enabled并未勾选,不能把它直译为“没勾就不能招募”后批量改成勾选。模板实际能招募是判断起点,最终还要结合派系、条件、权限和运行时检查。
上述三条玉勇兵营记录的其余值相同:XP = 0、conditions = 0、faction留空、enabled = false。精锐玉勇若按同一常规路径招募,直接保留这四项;只改unit和新生成的数值key。XP是招募初始经验等级相关值,conditions是条件编号,不是让读者输入一段中文说明的位置。
图中是原版玉勇的 14 条连接,不是已经改好的精锐玉勇。①中既有本例需要的三档玉勇兵营,也有其他体系的建筑;本例只复制上述三个 Key 对应的行。②粘贴到自己的表后改为新单位 Key,③按实际需求核对,不能把全部 14 行照搬。
建筑升级会用新的建筑等级替换旧等级。只连接一级兵营,建筑升级后可能反而无法继续招募该单位。
其他建筑路径
building_units_allowed_tables.Building可以指向任何设计上合适的建筑等级,不限于名称里带“兵营”的建筑。常见选择包括:
- 其他军事建筑链或更高等级建筑;
- 主城、次要聚居地、防御、经济或辅助建筑;
- 地标、资源建筑、港口和派系专属建筑;
- 部队自身、营地或游牧体系使用的建筑等级。
是否还要连接整条升级链,取决于每个建筑等级是否会替换前一级,以及你希望单位在哪些等级出现。还要逐项检查Faction、Conditions、XP和Enabled,因为同一建筑也可能只对特定派系、条件或单位版本开放。
不是建筑招募的情况
精英部队、佣兵池、召唤单位、任务奖励、脚本生成军队和某些派系机制不一定以building_units_allowed_tables作为入口。这些机制并不共用一张所谓的“特殊单位池”表。先找一个使用同类机制的原版单位,搜索它的单位 Key,查看它出现在哪些专用表和脚本中,再沿那条链制作。不要为了让教程步骤看起来一致,额外给它塞一条普通建筑招募记录。
让 AI 正确评价和招募
原版玉勇在cdir_military_generator_unit_qualities_tables中的记录是:
Group Key = wh3_default_land_melee_infantry_main_frontline_swords
Quality = tier_2_step_1_units
复制该行,把Unit Key改为精锐玉勇。Group Key表示 AI 建军时采用的兵种定位,Quality表示质量档。它们应参考战场定位、价格和强度相近的原版兵种,不能只因为单位更强就随意填最高档。
如果新单位是远程、骑兵、怪兽、火炮或特殊支援单位,应搜索两个同定位原版单位并比较它们的Group Key与Quality,而不是继续使用本例的前线剑盾步兵分类。
常见震旦模板的原版配对如下,可据此选择比较对象:
| 模板单位 | Group Key |
Quality |
|---|---|---|
| 玉勇 | wh3_default_land_melee_infantry_main_frontline_swords |
tier_2_step_1_units |
| 玉勇弩手 | wh3_default_land_ranged_infantry_main_light_backline |
tier_2_step_2_units |
| 玉勇枪骑兵 | wh3_default_land_melee_cavalry_main_mounted_medium |
tier_2_step_4_units |
| 巨炮 | wh3_default_land_artillery_long_range |
tier_2_step_5_units |
| 炎霖火箭炮 | wh3_default_land_artillery_long_range |
tier_3_step_2_units |
| 俑士禁卫 | wh3_default_land_monsters_heavy |
tier_4_step_2_units |
先按战场职责选Group Key,再按同类单位的价格和能力选质量曲线。Quality引用unit_quality_progression_functions_tables.key,不是直接输入1至5的数值;main_units_tables.tier = 3也不会自动使这里变成某个tier_3 Key。精锐玉勇第一次验证可以保留玉勇配对,强度稳定后再与同定位更高档单位比较。
截图①是Group Key,②是原版Unit Key,③是Quality。这张图用于确认模板,不是在原版只读页签直接改数据;粘贴到自己的同类型表后,再把②换成新单位。一个单位可能参与不止一种生成器分组,应对照目标派系实际使用的分组,不把质量档当成决定 AI 必定招募的开关。
缺少这张表不一定让玩家无法招募,但会让 AI 的建军评价不完整,因此完整战役单位应处理它。
继承科技、技能和战役效果
科技、领主技能和许多效果不是逐个写给单位,而是先作用于 Unit Set,再由unit_set_to_unit_junctions_tables决定哪些单位属于该集合。
原版玉勇目前属于多个集合,例如:
cth_all
cth_infantry
cth_melee
cth_jade_units
wh3_main_cth_inf_jade_all
wh3_main_cth_inf_jade_warriors_0
- 从模板记录中挑选真正适用于精锐玉勇的 Unit Set。
- 复制这些行,把
Unit Record改为新单位 Key。 - 不要机械复制与特定 DLC、特殊战役、升级系统或多人上限有关的集合。
精锐玉勇若要保留“震旦普通近战玉勇”的定位,可以先复制上面六个已列出的精确单位成员行,均将unit_record改为新主单位 Key、exclude = false,分类筛选列保持为空。若只希望共享一般震旦步兵加成、刻意不共享玉勇专属加成,则先选cth_all、cth_infantry、cth_melee三类,再在effect_bonus_value_ids_unit_sets_tables.unit_set筛选候选集合,阅读每条effect和bonus_value_id的实际目标,决定是否加入玉勇专属集合。集合成员不会直接赋予技能,必须有生效的来源效果使用这个集合。
自行判断时,可以先搜索一个已知科技或领主技能使用的 Effect,再追踪它作用的 Unit Set;也可以从目标原版单位 Key 搜索unit_set_to_unit_junctions_tables,比较多个同类单位共同拥有的集合。两种方向结合,能避免只凭集合名称猜用途。
截图按玉勇 Key 找到 16 条原版连接,①Unit Record填的是主单位 Key,②Unit Set是目标集合,③Exclude未勾选,表示不是排除条目。复制到自己的 Pack 后只保留实际需要的集合,把①换成新单位;不能把“加入一个集合”理解成自动获得该集合名称所暗示的技能或加成,还要追踪效果是否真的使用它。
别漏掉左侧的Unit Caste、Unit Category、Unit Class。这些字段允许按单位分类匹配,某些集合无需为每个兵种写一条Unit Record。因此只搜单位 Key 不会列出全部间接归属;还要根据新单位的分类,查看目标集合全部记录及其Exclude排除条件。本例的精确单位连接在这些分类列留空,不要求读者把所有列一律填满。该表使用复合主键,也没有需要另造名称的独立编号列。
如果要给 Mod 兵种制作专属科技或效果,可以在unit_sets_tables注册自己的集合,再通过unit_set_to_unit_junctions_tables加入单位。不要新建一个没有任何效果引用的 Unit Set,并误以为它会自动提供加成。
原版还有与单个玉勇 Key 同名的 Unit Set。effect_bonus_value_ids_unit_sets_tables会把特定的Effect + Bonus Value ID连接到这类集合。新单位想继承通用玉勇或震旦步兵加成时,通常应加入现有共享集合;只有制作专属效果时,才需要同时建立自己的 Unit Set、单位连接和效果连接。不要把只针对原版玉勇的效果记录整行照抄后仍指向原版集合。
允许盟友招募
当前原版玉勇能在allied_recruitment_unit_permissions_tables中找到盟友招募权限。希望盟友前哨能够招募精锐玉勇时,只在这张表中参考玉勇添加新单位 Key。若这是仅供玩家派系或特殊脚本使用的单位,可以不加入盟友招募。
其他派系或特殊单位是否允许盟友招募,应以同类原版单位的实际记录为准。没有原版对照记录时,不要默认所有战役单位都必须添加。
在依赖项 → 游戏文件中还能看到:
allied_recruitment_core_units_tables
但 RPFM 5.0.6 会把allied_recruitment_core_units_tables报告为Banned table。它只用于理解原版数据,不应导入或新建到普通 Mod Pack 中。
图中这张表只有Unit,引用主单位 Key。在自己的同类型表中为新单位增加一行即可,不需要额外编一个许可 ID。这是单位层面的许可,盟友关系、前哨、可招募来源以及战役机制的其他条件仍需满足;不能只看到这行就判定任何盟友都能立即招募。
不要照抄内容包所有权
原版玉勇在main_unit_ownership_content_pack_junctions_tables中绑定wh3_core_units_cathay。这是 CA 用来描述内容包所有权的记录。
RPFM 5.0.6 会把这张表报告为Banned table,普通 Mod 不应复制或新建它。即使你希望单位依赖某个 DLC,也不能把复制这张 CA 专用表当作通用做法;本教程只把它列出来解释为什么搜索原版单位时会看到它。
模板搜索出来的其他记录
在依赖项 → 游戏文件中搜索模板单位 Key,还可以沿引用检查下面这些系统。只从当前游戏数据中选择与目标机制相符的记录,不能把Assembly Kit 文件中的同名表导入、复制或当作游戏引用来源。它们不是所有新单位都必须添加,而是“你希望新单位参与该系统时才判断是否需要”:
| 表单 | 何时需要 |
|---|---|
campaign_map_attrition_unit_immunities_tables |
单位需要特定战役损耗免疫时。 |
faction_rebellion_units_junctions_tables |
新单位要进入指定派系的叛军兵表时。 |
armed_citizenry_unit_groups_tables、armed_citizenry_units_to_unit_groups_junctions_tables |
要进入驻军、民兵或相关单位组时。 |
battle_currency_units_cost_values_tables |
要在生存战、补给或使用战斗货币的模式中购买时。 |
unit_banner_unit_height_offsets_tables |
兵牌旗帜在单位头顶高度不合适时。 |
unit_purchasable_effect_sets_tables |
要接入可购买的单位升级系统时。 |
unit_to_unit_list_junctions_tables、unit_list_display_to_unit_junctions_tables |
要进入特定单位列表或界面列表时。 |
battle_set_piece_armies_units_tables及其连接表 |
要在任务战、预设军队或脚本战斗中出现时。 |
loading_screen_quotes_tables及其连接表 |
要为单位加入加载界面介绍时。 |
“搜索到原版玉勇 Key”不等于“新单位必须复制”。原版单位被许多官方剧情和特殊系统使用,机械复制所有记录会把自制单位塞进不相干的战斗、驻军、升级和 DLC 系统。
战役检查顺序
- 新开震旦战役,确认对应建筑每个等级都能招募精锐玉勇。
- 升级建筑后再次确认招募入口没有消失。
- 检查招募费用、维持费、回合数和单位上限。
- 获得会强化玉勇或震旦步兵的科技、领主技能,确认精锐玉勇获得预期加成。
- 让 AI 控制的震旦派系运行若干回合,检查其是否会合理招募,而不是只看玩家列表。
- 建立盟友前哨,确认盟友招募是否符合你的设计。
RPFM 诊断通过不等于这些战役系统已经生效;每一项都需要在游戏里单独验证。

