返回目录
Chapter 7 第七章:新增兵种
开发者文档 更新于 2024-03-21 19:28:51

第七章:新增兵种

在本章中,我们将介绍如何在“骑马与砍杀2”MOD中新增兵种。通过为游戏添加新的兵种,您可以丰富各个文化的军队,引入全新的战术选择和单位特色。

步骤1:定义troops

首先,您需要在MOD的ModuleData文件夹下创建或编辑一个XML文件(通常命名为troops.xml),以定义新的兵种。

示例代码解释

<NPCCharacters>
  <!-- 定义新的兵种 -->
  <NPCCharacter id="temple_priest_31_lances_e_o"
    default_group="Cavalry"
    level="1"
    is_basic_troop="true"
    name="{=rctemple0101}T8 Temple Dawn Saint·Guardian Knight"
    occupation="Soldier"
    culture="Culture.empire">
    <!-- 兵种的基本信息 -->
    <face>
      <face_key_template value="BodyProperty.fighter_empire" />
    </face>
    <!-- 兵种的技能值 -->
    <skills>
      <skill id="Athletics" value="250" />
      ...
    </skills>
    <!-- 升级目标,此处为空表示该兵种不可升级 -->
    <upgrade_targets></upgrade_targets>
    <!-- 兵种的装备 -->
    <Equipments>
      <EquipmentRoster>
        <equipment slot="Item0" id="Item.sturgia_sword_5_t6" />
        ...
      </EquipmentRoster>
      <!-- 民间装备设置 -->
      <EquipmentSet id="empire_troop_civilian_template_t3" civilian="true" />
    </Equipments>
  </NPCCharacter>
  ...
</NPCCharacters>

兵种的面部特征

<face>
  <face_key_template value="BodyProperty.fighter_empire" />
</face>

这部分定义了兵种的面部特征,face_key_template用于指定一个预设的面部属性模板,这里使用了BodyProperty.fighter_empire,表示该兵种将拥有帝国战士的面部特征。

技能配置

<skills>
  <skill id="Athletics" value="80" />
  <skill id="Riding" value="80" />
  ...
</skills>

这里列出了兵种的各项技能及其数值,每个<skill>元素定义了一项技能和对应的技能等级。在这个示例中,所有技能等级都设置为80

升级目标

<upgrade_targets>
  <upgrade_target id="NPCCharacter.temple_priest_31_knight" />
  ...
</upgrade_targets>

<upgrade_targets>定义了该兵种可以升级到的目标兵种。这允许玩家在游戏中通过经验积累,将该兵种升级为更高级的单位。(注意一个兵种只能升级为更高阶级的兵种,兵种一级为零阶比如各国老农、六级零阶比如各国新兵,以此类推每五级一阶,游戏原版最高六阶)

装备配置

<Equipments>
  <EquipmentRoster>
    <equipment slot="Item0" id="Item.pugio" />
    ...
  </EquipmentRoster>
  <EquipmentSet id="empire_troop_civilian_template_t3" civilian="true" />
</Equipments>

这部分详细列出了兵种的装备配置,包括战斗装备和民间装备。每个<equipment>元素定义了装备的槽位和具体的装备ID。例如,slot="Item0"表示主手武器槽位(注意兵种也是NPC和玩家一样只有四个武器槽,从上到下分别是Item0~3),id="Item.pugio"指定了具体装备为普吉欧匕首。

完整示例

<?xml version="1.0" encoding="utf-8"?>
<NPCCharacters>
    <NPCCharacter id="temple_priest_26" default_group="Infantry" level="26" is_female="true" name="{=rctemple005}Temple Fight Chaplain" upgrade_requires="ItemCategory.noble_horse" occupation="Soldier" culture="Culture.empire">
        <face>
            <face_key_template value="BodyProperty.fighter_empire" />
        </face>
        <skills>
            <skill id="Athletics" value="80" />
            <skill id="Riding" value="80" />
            <skill id="OneHanded" value="80" />
            <skill id="TwoHanded" value="80" />
            <skill id="Polearm" value="80" />
            <skill id="Bow" value="80" />
            <skill id="Crossbow" value="80" />
            <skill id="Throwing" value="80" />
        </skills>
        <upgrade_targets>
            <upgrade_target id="NPCCharacter.temple_priest_31_knight" />
            <upgrade_target id="NPCCharacter.temple_priest_31_lances_e" />
            <upgrade_target id="NPCCharacter.temple_priest_31_lances_v" />
        </upgrade_targets>
        <Equipments>
            <EquipmentRoster>
                <equipment slot="Item0" id="Item.pugio" />
                <equipment slot="Item1" id="Item.leafblade_throwing_knife" />
                <equipment slot="Item2" id="Item.leafblade_throwing_knife" />
                <equipment slot="Item3" id="Item.leafblade_throwing_knife" />
                <equipment slot="Head" id="Item.pilgrim_hood" />
                <equipment slot="Cape" id="Item.empire_cape_a" />
                <equipment slot="Body" id="Item.rc_temple_monk_robe" />
                <equipment slot="Leg" id="Item.strapped_mail_chausses" />
            </EquipmentRoster>
            <EquipmentSet id="empire_troop_civilian_template_t3" civilian="true" />
        </Equipments>
    </NPCCharacter>
</NPCCharacters>

步骤2:在SubModule.xml中注册NPCCharacters文件

确保您的npccharacters.xml(或您自定义的XML文件名)已在SubModule.xml文件中注册。

SubModule.xml配置示例

<Xmls>
  <XmlNode>
    <XmlName id="NPCCharacters" path="troops" />
    <IncludedGameTypes>
      <Gametype value="Campaign"/>
      <Gametype value="CampaignStoryMode"/>
    </IncludedGameTypes>
  </XmlNode>
</Xmls>