制作兵种:战斗数据
上一篇建立的精锐玉勇仍在共用原版玉勇的battle_entities_tables、近战武器、护甲、盾牌和部分属性记录。本篇把这些战斗数据拆成新单位自己的记录,避免以后修改精锐玉勇时连带影响原版单位。
本篇继续编辑
twcn_tutorial_unit.pack。如果某项数据完全不需要与模板区分,可以继续引用原版记录;不要为了“看起来完整”复制永远不会修改的数据。
本例适合什么情况
本篇仍以普通持盾近战步兵为例,适合需要独立调整单兵实体、近战武器、护甲、盾牌或属性组的单位。远程单位还要追踪远程武器和投射物;骑乘、怪兽、战车与火炮则可能同时存在多个实体、坐骑、引擎或乘员,不能把本例的一套步兵记录当成完整结构。
制作自己的单位时,先打开它所参考的land_units_tables记录,沿Man Entity、Primary Melee Weapon、Armour、Shield和Attribute Group逐项使用转到定义。再对目标记录使用查找引用,确认它是否被多个原版单位共享。只有确实需要独立修改时才复制;保持原效果时直接引用原版记录更简单,也更容易兼容。想逐列理解陆战单位、战斗实体、近战武器、护甲、盾牌、属性、阵型和接触效果时,继续阅读《陆战单位详解》;本篇只把这些数据用于完成当前新兵种。
本篇会用到哪些表单
| 表单 | 作用 | 是否必须新建记录 |
|---|---|---|
battle_entities_tables |
单兵实体的移动、加减速、转向、质量、碰撞尺寸、基础生命值、体型和血液肢解等。 | 想独立修改这些属性时必须。 |
melee_weapons_tables |
基础武器杀伤、破甲武器杀伤、反步/反大、溅射和攻击间隔等。 | 想独立修改武器杀伤时必须。 |
unit_armour_types_tables |
护甲强度和受击音效类型。 | 只改面板护甲强度或音效时再建。 |
unit_shield_types_tables |
远程格挡概率和盾牌音效。 | 只改盾牌时再建。 |
unit_attributes_groups_tables |
注册一个属性组 Key。 | 想让新单位拥有独立属性组合时必须。 |
unit_attributes_to_groups_junctions_tables |
把森林隐蔽、恐惧、阵型等属性放进属性组。 | 与独立属性组配套。 |
land_units_to_unit_abilites_junctions_tables |
把主动技能或被动技能关联给陆战单位。 | 单位需要部队技能时使用。 |
这些表最终都由land_units_tables直接或间接引用。
把只读模板复制到自己的表
下面截图都是从依赖项 → 游戏文件打开的原版记录,页签带Game-RO:,只用于找模板和看字段。不要在这些页签中修改,也不要从Assembly Kit 文件取表。
- 在游戏文件中打开目标表,筛选到本篇给出的 Key,确认是需要的完整记录。
- 点击该行左侧行号选中整行;有多条连接时,选中这些完整行后复制,不要只复制当前可见的几列。
- 在自己的 Pack 中新建同类型、同版本的表文件,使用带作者前缀的文件名,再粘贴记录。
- 在自己的表中改 Key、数值和引用,确认原版页签仍然保持只读。
另一种方法是从游戏文件导入整张表,先把自己 Pack 内的data__重命名,再筛选、保留所需行并删除其他行。**导入表文件不会只导入筛选结果;保留原版同名文件路径还会替换同路径的原版表文件。**两种方法任选一种,后文的“复制记录”均指复制到自己的 Pack,不是改原版。
为什么不能直接修改原版实体
本例玉勇的Man Entity是:
wh3_main_cth_infantry_heavy_blood_dismembers
这条实体记录可能被多个原版单位共用。直接把它的速度或质量改大,会同时改变所有引用它的单位。正确做法是复制该行、改成新 Key,再让精锐玉勇指向新实体。
其他模板使用的实体 Key 会不同。不要搜索本教程里的玉勇实体来制作所有单位;应从自己所选模板的Man Entity跳转过去。若多个候选模板共用同一实体,说明它更像通用基础记录;若只有一个特殊单位使用,则复制前要先弄清特殊字段的用途。
建立独立的 Battle Entity
- 在
依赖项 → 游戏文件中打开battle_entities_tables。 - 搜索
wh3_main_cth_infantry_heavy_blood_dismembers,按前节方法复制完整行到自己的同类型表。 - 把新行的
Key改为twcn_tutorial_cth_infantry_elite。 - 打开
land_units_tables,把精锐玉勇的Man Entity改为这个新 Key。
①是模板实体 Key,②为步行、奔跑和加减速参数,③为冲锋相关移动参数。复制后新实体仍会保持这些模板值;只有把自己的land_units_tables.Man Entity接到新 Key,后续修改才会作用于精锐玉勇。
常用列如下:
| 列 | 作用 | 注意事项 |
|---|---|---|
Walk Speed、Run Speed |
步行与奔跑速度。 | 战场面板速度通常与Run Speed相关,但不要只看面板判断实际动作是否自然。 |
Acceleration、Deceleration |
加速和减速能力。 | 与最高速度差距过大时,单位起步或停步会显得突兀。 |
Charge Speed |
冲锋时的移动速度。 | 不是land_units_tables里的Charge Bonus。 |
Radius、Height |
碰撞半径和实体高度。 | 应与模型尺寸接近;过大或过小会造成拥挤、穿模或受击异常。 |
Mass |
碰撞质量。 | 影响推挤与被冲撞表现,不等于生命值。 |
Turn Speed |
转向速度。 | 过低会转身迟钝,过高可能显得不自然。 |
Hit Points |
实体基础生命值。 | 最终单兵生命值还会叠加land_units_tables的Bonus Hit Points。 |
Size |
小型/大型判定和部分溅射目标判定。 | 不应只为了提高强度随意改成大型。 |
Entity Effects |
行走时使用的地表效果组。 | 通常沿用体型和移动方式相近的模板。 |
Has Blood、Can Dismember |
是否使用流血与肢解效果。 | 还要有对应模型与动画支持。 |
以原版玉勇为模板时,实体Hit Points是8,land_units_tables的Bonus Hit Points是61,所以不能把后者误当成全部生命值。其他单位的生命值分配方式可能不同,应分别查看两处数据。
本例不用重新寻找体型和移动参数:type = man、shape = circle、size = small、entity_effects = infantry_light_effects;walk_speed = 1.5、run_speed = 2.8、charge_speed = 3.5、mass = 125、radius = 0.6、height = 1.8、turn_speed = 120,均是原版玉勇实体的值。第一次只建立独立引用,可以原样保留。体型枚举共有very_small、small、medium、large、very_large五项;这些是内部判定档位,不能通过选“大”来代替调整模型、碰撞尺寸或生命值。
建立独立近战武器
- 在
依赖项 → 游戏文件的melee_weapons_tables中搜索wh3_main_cth_jade_warrior_sword。 - 复制完整行到自己的同类型表,把
Key改成twcn_tutorial_cth_elite_jade_sword。 - 在
land_units_tables中把Primary Melee Weapon改为新 Key。
图中①是原版武器 Key,②的Damage = 21、AP Damage = 7分别是基础武器杀伤和破甲武器杀伤,③的武器类型与音效类型也要与模型、动作相符。先复制完整模板,再按设计调整,不要只复制两个杀伤字段。
| 列 | 作用 |
|---|---|
Damage |
基础武器杀伤。 |
AP Damage |
破甲武器杀伤。 |
Bonus V Infantry |
反步加成。 |
Bonus V Large |
反大加成。 |
Splash Attack Target Size |
允许溅射命中的最大目标体型。 |
Splash Attack Max Attacks |
一次攻击最多实际伤害多少个目标。 |
Building Damage Multiplier |
对建筑伤害倍率。 |
Ignition Amount、Is Magical |
火焰和魔法攻击标记。 |
Contact Phase |
命中时附加的状态效果。 |
Melee Attack Interval |
攻击间隔;实际攻击仍受动画长度制约。 |
面板上的“武器威力”主要来自
Damage + AP Damage,而Melee Attack、Melee Defence和Charge Bonus仍在land_units_tables。不要把武器表当成全部近战属性。
本例武器类型和音效均为sword,bonus_v_large = 0、bonus_v_infantry = 0、splash_attack_max_attacks = 1、splash_attack_target_size留空、contact_phase留空、is_magical = false、ignition_amount = 0、melee_attack_interval = 4.2。若只想提高杀伤,可以先把新武器的damage从21改为28、ap_damage从7改为12,其余保持原值;这是本例的自定练习数值。要制作反大型长柄武器或溅射武器,应同时换用相应模型、动作和武器模板,不能只改sword这个字符串。
护甲和盾牌
本例精锐玉勇目前引用:
Armour = wh2_main_chainmail_70
Shield = wh_missile_block_35_wood
如果只想保持玉勇的护甲强度和 35% 远程格挡概率,继续复用即可。要独立修改时:
- 分别从游戏文件里的
unit_armour_types_tables和unit_shield_types_tables复制完整原记录到自己 Pack 的对应表。 - 给记录改成自己的 Key。
- 修改
Armour Value或Missile Block Chance。 - 把
land_units_tables中的Armour和Shield改为新 Key。
护甲表中:① Key供land_units_tables.Armour引用;② Armour Value决定面板“护甲强度”的基础数值,本例为 70;③ Audio Type决定对应材质的受击声音。数值相同的护甲记录也可能使用不同音效,选择模板时要同时考虑单位材质。
盾牌表中:① Key供land_units_tables.Shield引用;② Shield Defence Value和Shield Armour Value是盾牌记录内部数值,不能按字段名自行当成近战防御或护甲加成;③ Missile Block Chance才是远程格挡概率,旁边的Audio Type决定盾牌受击声音。制作时以同类原版盾牌为模板,并在游戏内验证面板和实际格挡。
护甲类型还带有受击音效,盾牌类型也带有盾牌音效。复制与模型材质不相符的音效,会出现数值正确但声音违和的问题。
独立护甲可命名为twcn_tutorial_cth_elite_armour,保留audio_type = chainmail,将armour_value设为本例练习值90;独立盾牌可命名为twcn_tutorial_cth_elite_shield,保留audio_type = wood及两个内部数值0,将missile_block_chance设为40。这里填写40表示 40%,不是0.4。随后把陆战表的两个引用改为新 Key,原版玉勇仍使用原来的 70 护甲和 35% 盾牌记录。若不想提高这些数值,就保留原引用,不必创建两条副本。
无盾单位不需要为了套用本例而创建盾牌记录;怪兽、构装体或特殊材质单位也应从材质和音效接近的原版对象查找护甲类型,而不是固定使用链甲和木盾。
建立独立属性组
原版玉勇的Attribute Group与单位 Key 同名,其中包含formed_attack、hide_forest和yang。
- 从游戏文件的
unit_attributes_groups_tables复制玉勇记录到自己的对应表,把Group Name改为新属性组 Key;本例为了方便检索,让它与新单位 Key 同名。 - 从游戏文件的
unit_attributes_to_groups_junctions_tables复制玉勇的三条完整记录到自己的对应表。 - 把三条记录的
Attribute Group全部改为新单位 Key。 - 在
land_units_tables中把Attribute Group改为新单位 Key。 - 按需求保留或删除具体
Attribute。
这张表只注册组名,并不直接写入任何属性。名称可以与单位 Key 不同,但下一张表的Attribute Group和陆战单位的Attribute Group必须一致地引用它。
图中:① Attribute是具体属性 Key,本例为formed_attack(保持阵型)、hide_forest(于森林中隐蔽)和yang(宁和体系的阳属性);② Attribute Group是接受这些属性的组。一个属性可以连接多个组,一个组也可以通过多行包含多个属性;复制模板时应先查看该组全部成员行,再按目标单位保留需要的属性。
属性组适合放单位自身固有属性;不要把部队技能的 Key 填进这里。
本例三项的取舍也可以直接判断:继续按整齐队列作战就保留formed_attack;仍应在森林中隐蔽就保留hide_forest;仍属于震旦宁和阳系就保留yang并保留下节的阳系被动。若新单位不参与宁和,应同时检查并移除自建组的yang连接、对应宁和部队技能连接和兵牌的宁和标签,避免只有文字消失、实际机制仍在。每项属性各占一行,不把三个 Key 拼在同一个单元格中。
关联部队技能
原版玉勇通过land_units_to_unit_abilites_junctions_tables连接“武道宁和:阳”和“防御状态”。在自己的同类型表中复制这两条完整记录,把Land Unit换为新陆战单位 Key:
Ability |
Land Unit |
|---|---|
wh3_main_unit_passive_battle_harmony_yang |
twcn_tutorial_cth_inf_elite_jade_warriors |
wh3_main_unit_passive_defensive_stance |
twcn_tutorial_cth_inf_elite_jade_warriors |
截图①是技能 Key,②还是原版玉勇,用于对照模板;上表给出的才是复制到自己 Pack 后应填写的新单位 Key。不能把主单位 Key 或属性组 Key 当成技能 Key。
表名里的abilites是游戏原表保留的拼写。这里负责“单位拥有哪些部队技能”,技能本身的入口记录位于unit_abilities_tables,具体效果还可能继续连接其他表。不要把玉勇的两个技能当成所有近战单位的固定配置;应搜索目标模板的单位 Key,查看它实际连接了哪些技能。复用或替换技能的完整方法见《制作兵种:添加技能》。
检查引用是否已经独立
完成后至少检查:
land_units.Man Entity -> twcn_tutorial_cth_infantry_elite
land_units.Primary Melee Weapon -> twcn_tutorial_cth_elite_jade_sword
land_units.Attribute Group -> twcn_tutorial_cth_inf_elite_jade_warriors
然后保存并运行诊断。最后分别让原版玉勇和精锐玉勇进入同一场自定义战斗,确认只修改精锐玉勇的实体或武器记录时,原版玉勇没有一起变化。

