You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Wiki/pages/CraftingPieces武器配件.md

444 lines
18 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

**2023年2月21日**
**对应游戏版本v1.0.3** 皮蛋初版未完成
**2023年2月23日**
**对应游戏版本v1.0.3** 皮蛋初版完成
# 根元素
<CraftingPieces>
# 类型名
```
<CraftingPiece 元素1=""
元素2=""
……>
<BladeData 元素1=""
元素2=""
……>
<Thrust damage_type=""
damage_factor="" />
<Swing damage_type=""
damage_factor="" />
</BladeData>
<Flags>
<Flag name="" />
</Flags>
<Materials>
<Material id=""
count="" />
<Material id=""
count="" />
……
</Materials>
</CraftingPiece>
```
# 原版路径
Modules\Native\ModuleData\crafting_pieces.xml
# 官方文档
[WEAPON SMITHING & CRAFTING PIECES](https://moddocs.bannerlord.com/asset-management/weapon_smithing/)
# 用途
- 组成锻造武器的配件的信息。
- id
- 名字
- 等阶
- 类型(刃、连接处、杆、尾部)
- mesh
- 长度
- 物理材质(主要影响音效)
- 个数(远程消耗类)
- 碰撞胶囊body_name / bo
- 挥动和戳捅动作的伤害类型和伤害系数
- 重量
- 锻造消耗的锻造素材及消耗数量
- Flag标签日常装扮、可突破格挡、命中时不出血等
- 武器收纳容器
- 文化
- 是否在铁匠铺中隐藏
- 是否是默认解锁的
- 锻造难度级别
- 不可存在的用法
- 配件间的额外间隔距离调整
- 其他相关内容
- [CraftingTemplates武器锻造类别页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/91/CraftingTemplates%E6%AD%A6%E5%99%A8%E9%94%BB%E9%80%A0%E7%B1%BB%E5%88%AB)
- [WeaponDescriptions武器用法页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/85/WeaponDescriptions%E6%AD%A6%E5%99%A8%E7%94%A8%E6%B3%95)
附一把锻造武器物品的逻辑图:
![锻造武器的逻辑图.png](../assets/锻造武器的逻辑图-911958dc-b56f-4bb5-87c9-f34b0b017034.png)
# 特点
- 配件的类别以四个部位作为区分分别是刃Blade、连接处/护手Guard、杆/握把Handle、尾部/配重Pommel
- 不同的部位有时拥有特定的元素。
- 由于一个锻造武器是拆成1至4个配件之后组装的所以武器美术也需要在武器导入前进行拆分或在制作武器模型时就按照骑砍2的配件规则提前设计各个部位。
- 长度和武器配件手持的前后位置微调的数据,需要与模型美术或导入美术进行对接确认规则流程。
- 锻造武器的伤害、攻速、操控值都需要通过调整配件里的数值来实现,无法直接指定数值。需要数值策划学习该流程并以此实现锻造武器数值平衡。
- 不允许玩家锻造的武器,配件需要屏蔽。
- 依照强弱设计,配件的等阶和锻造消耗的素材都需要设计,包括每个锻造类别中无需解锁默认可锻造的配件有哪些。
- 某些情况下,也可以决定采用更简化原始的方法进行锻造武器的制作,可以降低制作成本。
- 方法是一个完整的武器模型设定为一个刃部配件。而其他三个部位的配件都使用特殊制作的“空”配件。
- 缺点
- 损失了玩家自定义锻造武器的玩法。
- 如果不屏蔽该配件且将该配件与常规的配件放在同一个锻造类别中时,玩家可以锻造出这样的武器:“[刃+杆]+[连接处]+[杆]+[尾部]”。
- 优点
- 美术不需要将一个完整的模型拆成各个部位,还要完美贴合地能在游戏里拼装起来。
- 缩减了配件个数,减少策划工作量。降低了拥有多个数值的配件组装成一把武器的数值平衡调整的复杂度。
# 格式示范
```
<!-- 这是刃部的示范 -->
<CraftingPiece id="battania_blade_2"
name="{=4OefdTD1}Ridged Short Gladius Blade"
tier="1"
piece_type="Blade"
mesh="battania_blade_2"
culture="Culture.empire"
length="57.1"
weight="0.59">
<BladeData stack_amount="3"
physics_material="metal_weapon"
body_name="bo_sword_one_handed"
holster_mesh="battania_blade_2_scabbard_2">
<Thrust damage_type="Pierce"
damage_factor="3.0" />
<Swing damage_type="Cut"
damage_factor="2.0" />
</BladeData>
<Flags>
<Flag name="Civilian"
type="ItemFlags" />
</Flags>
<Materials>
<Material id="Iron2"
count="2" />
</Materials>
</CraftingPiece>
<!-- 这是连接处的示范 -->
<CraftingPiece id="cleaver_guard_3"
name="{=JfRydy7M}Ridged Cleaver Guard"
tier="2"
piece_type="Guard"
mesh="cleaver_guard_3"
culture="Culture.aserai"
length="3.5"
weight="0.152">
<BuildData next_piece_offset="0.2" />
<StatContributions armor_bonus="0" />
<Materials>
<Material id="Iron2"
count="1" />
</Materials>
</CraftingPiece>
<!-- 这是杆的示范 -->
<CraftingPiece id="spear_handle_4"
name="{=LSOXMCAW}Pine Shaft"
tier="4"
piece_type="Handle"
mesh="spear_handle_4"
length="190"
weight="1.4"
excluded_item_usage_features="long"
item_holster_pos_shift="0,0,0.10"
CraftingCost="100">
<BuildData piece_offset="19.4" />
<Materials>
<Material id="Wood"
count="1" />
</Materials>
</CraftingPiece>
<!-- 这是尾部的示范 -->
<CraftingPiece id="battania_noble_pommel_1"
name="{=Oz6xANFb}Highland Ornamental Pommel"
tier="4"
piece_type="Pommel"
mesh="battania_noble_pommel_1"
culture="Culture.battania"
length="4.1"
weight="0.12">
<BuildData next_piece_offset="0" />
<Materials>
<Material id="Iron4"
count="1" />
</Materials>
</CraftingPiece>
```
# 元素说明(待写)
- id
- 该锻造配件的ID。
- 不可空。
- name
- 该锻造配件的名称。
- 加入火星人的强制读取英语翻译文件的功能后才可以正常读取英语的翻译文件显示英文否则英文语言设置下游戏中显示名称只显示name中的字符。
- 配件的命名应以“武器名+部位”为标准,如:“青龙偃月刀杆”“倚天剑刃”。对于未命名的武器,可以以使用者命名,如“炎国新兵的剑刃”“芬的短矛杆”。
- 配件的名称只在铁匠铺的锻造功能中显示,如果是一个隐藏的配件,那么游戏中没有场合会显示该配件的名称。
- 不可空。
- tier
- 该锻造配件的阶。也叫等阶。
- 可填1~5共5个阶。
- 当前骑砍2铁匠铺锻造功能中只有解锁了该锻造类别下所有的低阶配件后才会开始解锁该锻造类别中下一个阶的配件。例如当单手剑类里所有的2阶配件均是解锁状态后再之后的解锁必定解锁的是3阶的随机配件除非没有未解锁的3阶配件。
- 锻造自定义武器时,配件的阶越高,锻造难度越高。锻造难度越高,所需角色的锻造技能等级越高,根据两者差值,得出锻造的自定义武器随机的属性加减概率。越低的锻造难度,越高的锻造技能等级有越高的概率出现自定义武器属性的增加,反之减少。
- 综上,配件的阶应该与武器的强度匹配,越强力的武器其配件的阶越高。
- 不可空。
- piece_type
- 该锻造配件的配件类别。
- 共有四种,分别是刃"Blade"、连接处"Guard"、杆"Handle"、尾部"Pommel"。
- “连接处”在剑类武器上也称为“护手”,“杆”也称“柄”“握柄”,“尾部”也称“配重”。
- 从远端向尾端的顺序排列,应该是刃+连接处+杆+尾部
- 在铁匠铺的锻造功能中,玩家可以在非屏蔽的同锻造类别配件中任意挑选配件进行自定义武器的锻造,所以美术在拆解模型制作配件时,需要按照四个部位的含义对应制作。如果模型与含义不对应,玩家就可能通过自定义武器锻造出两个杆拼接的武器来。
- 不可空。
- mesh
- 该锻造配件的外观。也是游戏中肉眼看到的物体的样子。
- 由美术在导入的时候获取的一种id一般情况下mesh与id是一致的。
- 首先产生武器需求策划根据武器需求在策划表中登记武器id然后与美术对接id。美术导入完成后将mesh与完成的模型一并记录并提交给策划又策划完成此处数值的填写。
- 填空则透明。
- culture
- 该锻造配件的文化。
- 在锻造功能中的作用未知。
- 可不填,不填默认为空。
- length
- 该锻造配件的长度。
- 一把锻造武器的长度由组成它的配件总长度决定。
- 但是如何获取该配件的长度似乎是由美术的导入时获取的。需要导入美术提供详细信息。
- weight
- 该锻造配件的重量。
- 一把锻造武器的重量由组成它的配件总重量决定。
- 是影响锻造武器属性的重要因素,且复杂程度高,没有明确的公式可用。
- 大体上看,重量越高,伤害越高,攻速越低,操控值越低。重量越低,伤害越低,攻速越高,操控值越高。
- 在控制锻造武器数值平衡时,应首先固定配件的重量,得出理想的攻速和操控值属性后,再通过改伤害系数的值来控制伤害属性。
- 为了节省精力,不重要的武器,非特殊化的武器,可以考虑制订并使用统一的一个重量默认值,可以减少平衡武器数值强度的工作量。
- appearance
- 拥有露出、初版、广播和问世等意思,根据填写的数值结合意思看应该是出现率。该单词也是外观、外表的意思。
- 该项值在骑砍2中从0.1至10均出现过但绝大多数处在0.3至3之间。超出该范围的值像是骑砍2策划随手乱填的一样。
- 在武器配件中出现的概率极低,一千六百个配件中只有五个配件存在该项元素。
- 所以在武器配件的xml中考虑不填写appearance。
- is_hidden
- 该锻造配件是否在铁匠铺中隐藏。
- 填写"true"。
- 可空默认为false。
- 对于不像让玩家在铁匠铺的自定义锻造中使用的配件,应使用该元素屏蔽。例如,神器,特殊武器,唯一武器等的配件。
- is_default
- 该锻造配件是否在铁匠铺中是默认解锁的状态。
- 填写"true"。
- 可空默认为false。
- 如果完全根据骑砍2自己的功能规则和习惯做法来制作使每个锻造类别中的四个配件部位都拥有一个默认解锁的配件即可。
- CraftingCost
- 未知作用。
- 猜测与锻造难度有关系。
- 骑砍2自己实际使用并不多只有39分之1623。
- 可空。
- 骑砍2自己填写过的范围在75至150。
- excluded_item_usage_features
- 当锻造武器使用了该配件时,去除的武器用法。
- 举例:一旦我使用了“青龙偃月刀刃”作为武器的头部,我就不允许这把自定义武器可以骑枪冲刺,那么有两种方法可以实现。
- 第一种我不把“青龙偃月刀刃”这个配件登记在武器用法WeaponDescriptions文件里的骑枪冲刺用法下。
- 第二种,我在配件处,填写该元素,值为"TwoHandedPolearm_Couchable"。
- 更常见的是填写"shield"以禁止使用了该配件的自定义武器可以佩戴盾牌,只能使用双手用法;填写"thrust""swing"禁止某种攻击动作等用途。
- 若存在多个需要填写的值,则以英文冒号":"分隔。
- 例子
```
excluded_item_usage_features="shield:thrust:TwoHandedPolearm_Bracing"
```
- item_holster_pos_shift
- 猜测是锻造武器成品的时,收纳容器和杆部位模型的位置相对偏移。
- 在骑砍2自己的数据里只存在于杆配件。
- 骑砍2自己实际使用并不多只有52分之1623。
- 格式例子
```
item_holster_pos_shift="0,0,-0.03"
```
- distance_to_next_piece
- 猜测是锻造武器成品的时,该配件模型到下一个配件模型之间额外增加的距离。
- 在骑砍2自己的数据里只存在于斧类和个别锤的刃部位配件。
- 骑砍2自己实际使用并不多只有44分之1623。
- 格式例子
```
distance_to_next_piece="18.597"
```
- distance_to_previous_piece
- 猜测是锻造武器成品的时,该配件模型到上一个配件模型之间额外增加的距离。
- 与上一个distance_to_next_piece同时出现。
- 在骑砍2自己的数据里只存在于斧类和个别锤的刃部位配件。
- 骑砍2自己实际使用并不多只有44分之1623。
- 格式例子
```
distance_to_previous_piece="1.96"
```
- full_scale
- 该配件在铁匠铺锻造自定义功能中时,进行尺寸拉伸,模型是否是长宽高全部缩放。
- 若否,则缩放时模型只缩放长和高。
- 填写"true"。
- 可空默认为false。
- 在骑砍2自己的数据里只存在于锤类的刃部位配件。
- 骑砍2自己实际使用并不多只有39分之1623。
- BladeData
- 刃部的相关数据。
- 不可空,刃部必有。
- stack_amount
- 堆叠数量,是作为消耗弹药型的武器时的弹药数量。
- physics_material
- 物品效果,可填木制"wood_weapon"和铁制"metal_weapon"。
- 应该是影响格挡成功,命中墙壁时播放音效。
- body_name
- 碰撞胶囊体。(碰撞箱?)
- 影响碰撞建议完全按照骑砍2自己的来填写。
- 骑砍2自己的碰撞胶囊体有
- 剑类"bo_sword_one_handed"
- 匕首"bo_knife_a"
- 斧类"bo_axe_longer_b"
- 单手斧"bo_axe_longer_a"(只出现过一次)
- 锤类"bo_mace_a"
- 矛类"bo_spear_b"
- holster_mesh
- 收纳容器的外观模型id
- 可空,空就没有收纳容器。
- holster_body_name
- 猜测是收纳容器的碰撞胶囊体。可能用于扔掉该武器时,容器掉在地上时与其他碰撞箱进行碰撞。
- 似乎只出现在标枪类的刃部数据中。在刃部位只有13分之284。
- 与holster_mesh一一对应。
- 骑砍2自己的收纳容器碰撞胶囊体有
- bo_throwing_spear_quiver_3_2
- bo_throwing_spear_quiver_4
- bo_throwing_spear_quiver_5_1
- bo_throwing_spear_quiver_5_1
- ……等
- holster_mesh_length
- 收纳容器外观的长度。
- 未知用途。
- Thrust
- 戳捅动作的数据。
- damage_type
- 伤害类型。
- 可填:砍伤类型"Cut"、刺伤类型"Pierce"和钝伤类型"Blunt"。
- damage_factor
- 伤害系数。
- 用于通过公式,综合其他数值计算出锻造武器的伤害属性。
- 不同锻造类别的武器,公式不一样。
- 调整平衡时只能先获取游戏中当前的武器最终伤害属性值,当前伤害系数值,以及理想武器伤害属性值,计算得出配件应该修改为的伤害系数。
- Swing
- 挥动动作的数据。
- damage_type
- 同上。
- damage_factor
- 同上。
- 戳捅和挥动的公式似乎也不同。
- 格式例子
```
<BladeData stack_amount="3"
physics_material="wood_weapon"
body_name="bo_sword_one_handed">
<Thrust damage_type="Blunt"
damage_factor="0.8" />
<Swing damage_type="Blunt"
damage_factor="1.5" />
</BladeData>
```
- Flags
- 该配件的标记。
- 可空
- 可能是从Mount & Blade II Bannerlord\XmlSchemas\Items.xsd中来。
- name
- 骑砍2自己用过的
- 日常/平民"Civilian"。带有此标记的物品可以装备在日常装扮栏中,进入城镇场景中时穿戴。
- 可以在尸体上捡起"CanBePickedUpFromCorpse"。带有此标记的弹药消耗型武器可以在某个Agent死亡后产生的尸体上残留其他Agent可以捡起并装备。
- 无溅血"NoBlood"。带有此标记的武器攻击命中Agent时不会生成贴图上的血液。
- type
- 填写"ItemFlags"。
- 填写"NoBlood"时,无此元素。
```
<Flags>
<Flag name="CanBePickedUpFromCorpse"
type="ItemFlags" />
<Flag name="Civilian"
type="ItemFlags" />
<Flag name="NoBlood" />
</Flags>
```
- BuildData
- 该锻造配件的建造数据。
- piece_offset
- 猜测是配件的位置偏移量。
- 可空。
- previous_piece_offset
- 猜测是距离前一个配件的位置偏移量。
- 可空。
- next_piece_offset
- 猜测是距离下一个配件的位置偏移量。
- 可空。
- 例子
```
<BuildData piece_offset="0"
previous_piece_offset="0.358"
next_piece_offset="0.2" />
```
- Materials
- 该锻造配件消耗的材料。
- id
- 决定了消耗的材料是一种Item物品。
- 可填:
- 硬木。Wood
- 粗铁。Iron1
- 熟铁。Iron2
- 铁。Iron3
- 钢。Iron4
- 优质钢。Iron5
- 精炼钢。Iron6
- count
- 锻造一次消耗的材料数量。
- 例子
```
<Materials>
<Material id="Wood"
count="1" />
</Materials>
```
- StatContributions
- 该配件的属性奖励。
- 骑砍2只在剑类的连接处部位使用过"armor_bonus"。
- 在CraftingPieces.xsd中可以查到其余的部分。
- 存在的奖励:
- armor_bonus
- 护甲值额外加成。
- swing_damage_bonus
- 挥动动作伤害值额外加成。可能无法生效很可能与锻造功能绿色值和前缀的Bug使用的同一种代码。
- swing_speed_bonus
- 挥动速度值额外加成。
- thrust_damage_bonus
- 戳捅动作伤害值额外加成。
- thrust_speed_bonus
- 戳捅动作速度值额外加成。
- handling_bonus
- 操控值额外加成。
- accuracy_bonus
- 准确度值额外加成。
- 例子
```
<StatContributions armor_bonus="4" />
```