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/NPCCharacters兵种.md

373 lines
14 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.

**2022年12月18日** **对应游戏版本v1.0.0** 皮蛋初版未完成
**2022年12月21日** **对应游戏版本v1.0.0** 皮蛋初版完成
# 根元素
<NPCCharacters>
# 类型名
```
<NPCCharacter id=""
元素1=""
元素2=""
……>
<face>
<face_key_template value="BodyProperty.fighter_vlandia" />
</face>
<skills>
<skill id="Athletics"
value="20" />
<skill id="Riding"
value="5" />
……
</skills>
<upgrade_targets>
<upgrade_target id="NPCCharacter.vlandian_levy_crossbowman" />
</upgrade_targets>
<Equipments>
<EquipmentRoster>
<equipment slot="Item0"
id="Item.vlandia_mace_1_t2" />
<equipment slot="Head"
id="Item.leather_cap" />
<equipment slot="Body"
id="Item.bandit_leather_water_flask" />
……
</EquipmentRoster>
<EquipmentSet id="vlandia_troop_civilian_template_t1"
civilian="true" />
</Equipments>
</NPCCharacter>
```
# 原版路径
Modules\SandBoxCore\ModuleData\spnpccharacters.xml
# 用途
## 兵种的信息
- 兵种的ID
- 兵种的默认分组
- 兵种的等级
- 兵种的名称
- 兵种的文化
- 兵种的脸部码
- 兵种的技能等级
- 该兵种的升级目标兵种
- 兵种的战斗装备和平民装备
# 特点
- 进入主菜单时不载入NPCCharacter角色的数据。只在载入存档的时候读取。
- 但如果存档中某部队中有A兵种但在xml文件中删除了该兵种的id游戏读取不到就会导致存档无法进入。
- 所以兵种id不可以改变为了兼容老存档也不可以删除id。
- 下面未出现的元素是做兵种时通常不出现的元素NPCCharacter中有很多元素只在特定的情况给特定的角色用。
# 格式示范
```
<NPCCharacter id="vlandian_recruit"
default_group="Infantry"
level="6"
name="{=GEnwDYp1}Vlandian Recruit"
occupation="Soldier"
is_basic_troop="true"
is_hidden_encyclopedia="true"
culture="Culture.vlandia">
<face>
<face_key_template value="BodyProperty.fighter_vlandia" />
</face>
<skills>
<skill id="Athletics"
value="20" />
<skill id="Riding"
value="5" />
<skill id="OneHanded"
value="20" />
<skill id="TwoHanded"
value="10" />
<skill id="Polearm"
value="20" />
<skill id="Bow"
value="5" />
<skill id="Crossbow"
value="5" />
<skill id="Throwing"
value="5" />
</skills>
<upgrade_targets>
<upgrade_target id="NPCCharacter.vlandian_levy_crossbowman" />
<upgrade_target id="NPCCharacter.vlandian_footman" />
</upgrade_targets>
<Equipments>
<EquipmentRoster>
<equipment slot="Item0"
id="Item.vlandia_mace_1_t2" />
<equipment slot="Head"
id="Item.leather_cap" />
<equipment slot="Body"
id="Item.bandit_leather_water_flask" />
<equipment slot="Leg"
id="Item.empire_horseman_boots" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0"
id="Item.peasant_pitchfork_1_t1" />
<equipment slot="Body"
id="Item.bandit_leather_water_flask" />
<equipment slot="Leg"
id="Item.empire_horseman_boots" />
<equipment slot="Head"
id="Item.padded_cap" />
<equipment slot="Cape"
id="Item.scarf" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0"
id="Item.peasant_pickaxe_1_t1" />
<equipment slot="Body"
id="Item.sackcloth_tunic" />
<equipment slot="Leg"
id="Item.empire_horseman_boots" />
<equipment slot="Head"
id="Item.padded_cap" />
<equipment slot="Cape"
id="Item.hood" />
</EquipmentRoster>
<EquipmentSet id="vlandia_troop_civilian_template_t1"
civilian="true" />
</Equipments>
</NPCCharacter>
```
# 元素说明
- id
- 该兵种的ID
- 不可空
- default_group
- 该兵种的默认分组
- 可填
1. Infantry
步兵
2. Ranged
远程
3. Cavalry
骑兵
4. HorseArcher
骑射
- 影响部队移动速度。前两者为步行单位,可受到“骑行步兵”效果的加成;后两者为骑乘单位,直接增加部队移动速度。
- 影响特长Perk的判定比如效果*当部队中步行单位占比超过50%时……*;此效果即用分组来判断是否是步行单位。
- 影响野外战斗时模拟战斗坐镇指挥的战斗力是骑乘单位时战斗力乘以1.2。
- level
- 该兵种的等级
- 不可空
- 游戏中会根据等级计算得出兵的等阶Tier
- 可填
1. 1
零阶,对应原版的农民,在百科全书中显示为无标志。
2. 6
一阶,对应原版的新兵,在百科全书中显示标志是“一个拐”。
3. 11
二阶,对应原版的贵族兵的初始兵,在百科全书中显示标志是“两个拐”。
4. 16
三阶,在百科全书中显示标志是“三个拐”。
5. 21
四阶,在百科全书中显示标志是“三角”。
6. 26
五阶,对应原版的普通兵种顶级,在百科全书中显示标志是“三角加一横线”。
7. 31
六阶,对应原版的贵族兵种顶级,在百科全书中显示标志是“三角加两横线”。
8. 36
七阶,原版没有,并且代码被屏蔽,需要用代码重新开放,在百科全书中显示标志是“五星加一横线”。
- 实际上1至5会计算为零阶6至10会计算为二阶11至15计算为三阶以此类推。升级不升阶可能会产生Bug。
- 影响模拟战斗(坐镇指挥)的战斗力,等阶是多少,战斗力即多少。
- 升级前和升级后的等级差决定了升级所需经验值的多少。由公式计算得出。
- name
- 该兵种的名称。
- 加入火星人的强制读取英语翻译文件的功能后才可以正常读取英语的翻译文件显示英文否则英文语言设置下游戏中显示名称只显示name中的字符。
- 格式
```
name="{=此处填写翻译的StringID}此处填写英文名称"
```
- occupation
- 该兵种的职业。
- 不可空
- 对于兵种,填写
1. Soldier
大部分兵种的职业。士兵。
2. CaravanGuard
商队护卫的兵种。
3. Bandit
强盗的兵种。
- is_basic_troop
- 该兵种是否是兵种树的起始。
- 可填参数:"true"
- 可空空则默认为false
- 只有正确填写此项时,百科全书中显示的与之相关的兵种才能显示为正确的兵种树状态。
- is_hidden_encyclopedia
- 是否在百科全书中隐藏。
- 可填参数:"true"
- 可空空则默认为false
- culture
- 该兵种的文化。
- 以"Culture.文化id"的格式填写
- 不可空特殊情况可以考虑用neutral_culture
- [见文化xml文档wiki页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/93/SPCultures%E6%96%87%E5%8C%96)
- 子元素<face>
- 该兵种使用的脸部码。
- 不可空
- 决定了该兵种的肤色、发色、身高、胖瘦、捏脸、发型、胡子、文身或疤痕等外观的随机范围。
- 可填写三种格式
1. 标准的模板id
兵种应使用这种格式。[见脸部码xml文档wiki页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/97/BodyProperties%E6%8D%8F%E8%84%B8%E7%A0%81)
2. 单独的模板
通常不使用这种格式。[见脸部码xml文档wiki页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/97/BodyProperties%E6%8D%8F%E8%84%B8%E7%A0%81)
3. 单独的一个脸部码
兵种通常不使用这种格式。单独的一个码会使得该兵种长得完全一样。
```
格式1
<face>
<face_key_template value="BodyProperty.此处填写脸部模板id" />
</face>
格式2
<face>
<BodyProperties version="4"
age="32.64"
weight="0"
build="0.4547"
key="000B7408803C10046F90BC00B2977887957995866795A3633A86FFFF29AB7B4A00070274070F1018000000000000000000000000000000000000000000F04040" />
<BodyPropertiesMax version="4"
age="32.64"
weight="0"
build="0.4547"
key="000B7408803C10046F90BC00B2977887957995866795A3633A86FFFF29AB7B4A00070274070F1018000000000000000000000000000000000000000000F04040" />
</face>
格式3
<face>
<BodyProperties version="4"
weight="0.3"
build="0.4"
key="0000900A10143006685D493BBC780A4686D18674A5379AA596B62D5A727BC485017776130799B93A000000000000000000000000000000000000000068FC4083" />
</face>
```
- 子元素<skills>
- 该兵种的技能等级
- 可空
- 通常范围0至300
- 可填技能
- OneHanded
单手
- TwoHanded
双手
- Polearm
长杆
- Bow
- Crossbow
- Throwing
投掷
- Riding
骑术
- Athletics
跑动
- 填写其他角色存在的技能也能读取但没有效果。特殊的像希绝大陆模组的程序制作了读取兵种的医疗Medicine技能等级作为其血量上限的功能。
```
格式示范:
<skills>
<skill id="OneHanded" value="此处填写单手技能值" />
<skill id="TwoHanded" value="此处填写双手技能值" />
<skill id="Polearm" value="此处填写长杆技能值" />
<skill id="Bow" value="此处填写弓技能值" />
<skill id="Crossbow" value="此处填写弩技能值" />
<skill id="Throwing" value="此处填写投掷技能值" />
<skill id="Riding" value="此处填写骑术技能值" />
<skill id="Athletics" value="此处填写跑动技能值" />
</skills>
```
- 子元素<upgrade_targets>
- 该兵种可以升级到的兵种
- 可空
- 可填写多个
```
格式:
<upgrade_targets>
<upgrade_target id="NPCCharacter.升级到的兵种id一号" />
<upgrade_target id="NPCCharacter.升级到的兵种id二号" />
……
</upgrade_targets>
```
- 子元素<Equipments>
- 该兵种的装备
- 不可空
- 必须有一套战斗装备和一套日常装备;其中,带有"civilian="true"的是日常装备,反之是战斗装备。
- 骑砍2的随机装备并非是按照“一套”为单位进行随机而是每个槽位slot都进行随机。
- 所以当某个兵种有五套装备时他会使用套装A的头盔套装B的胸甲套装C的单手剑套装D的盾牌和套装E的马匹。
- 如果某个槽位slot出现了空那么随机时会作为空进行随机。
- 所以当某个兵种有五套装备武器槽位二号slot Item1有两套是盾牌有三套是空时该兵种随机到装备盾牌的概率为五分之二随机到不带盾牌即空的概率为五分之三。以此方法制作概率佩戴盾牌概率佩戴头盔等设计的兵种。
- 容易产生的报错
- 当没有日常装备,没有读取到时,会崩溃。
- 当日常装备中填写了非日常装备的物品时,会崩溃。(可见Items的wiki文档页面)[https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/122/Items%E9%98%B2%E5%85%B7%E6%9C%8D%E8%A3%85]
- 当装备槽位slot填写的物品不是该部位的装备时会崩溃。
- 特殊的当填写的物品id找不到时会以空为结果但不会崩溃。发生该问题后通常打开百科全书查看该兵种即可发现该兵种没有佩戴该部位的装备。
- 可填写三种格式。三种格式可以共存。
1. 子元素<EquipmentRoster>
- 兵种的战斗装备常用格式。
- 可空。
- 可以有多个EquipmentRoster。
- 每个EquipmentRoster中包含一套装备。
- 士兵进入战场时每个装备槽位slot都会从所有在EquipmentRoster中读取到的slot中随机。
- 可填写的槽位slot
- Item0
武器栏的第一个武器
- Item1
武器栏的第二个武器
- Item2
武器栏的第三个武器
- Item3
武器栏的第四个武器
- Head
防具栏的头部装备
- Cape
防具栏的肩部装备
- Body
防具栏的胸部装备
- Gloves
防具栏的手部装备
- Leg
防具栏的腿部装备
- Horse
骑乘栏的骑乘装备
- HorseHarness
骑乘栏的骑乘防具装备
2. 子元素<EquipmentSet>
- 兵种的日常装备常用格式。
- 可空
- 填写装备模板的id[见装备模板xml文档wiki页面](https://dev.azure.com/KnightOfTheArk/KnightOfTheArk/_wiki/wikis/KnightOfTheArk.wiki/89/EquipmentRosters%E8%A3%85%E5%A4%87%E6%A8%A1%E6%9D%BF)
3. 直接填写equipment
- 不推荐使用。
- 会将填写的装备应用至所有的套装中的对应槽位slot。
```
格式示范:
<Equipments>
<!-- 此处开始格式1 -->
<EquipmentRoster>
<equipment slot="Item0"
id="Item.此处填写武器装备id" />
<equipment slot="Body"
id="Item.此处填写防具装备id" />
<equipment slot="Leg"
id="Item.此处填写防具装备id" />
<equipment slot="Horse"
id="Item.此处填写骑乘装备id" />
</EquipmentRoster>
<EquipmentRoster civilian="true">
<equipment slot="Body"
id="Item.此处填写日常装备可用的防具装备id" />
<equipment slot="Item0"
id="Item.此处填写日常装备可用的武器装备id" />
</EquipmentRoster>
<!-- 此处格式1结束 -->
<!-- 此处开始格式2 -->
<EquipmentSet id="此处填写装备模板id" />
<!-- 此处格式2结束 -->
<!-- 此处开始格式3 -->
<equipment slot="Horse"
id="Item.此处填写骑乘装备id" />
<equipment slot="HorseHarness"
id="Item.此处填写骑乘防具装备id" />
<!-- 此处格式3结束 -->
</Equipments>
```