在本章中,我们将介绍如何在“骑马与砍杀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>- <NPCCharacter>: 定义一个新的NPC兵种(领主和兵种一样都是一种NPC,只是兵种的结构更简单)。
- id: 唯一标识符。
- default_group: 默认的战斗小组(如Cavalry表示骑兵)。
- level: 兵种等级。
- is_basic_troop: 是否为基础兵种。
- name: 兵种名称,可使用本地化文本。
- occupation: 职业,这里通常为Soldier。
- culture: 文化归属。
- <face_key_template>: 面部特征模板。
- <skills>: 兵种的技能值。
- <upgrade_targets>: 升级目标,如果为空,则表示该兵种无法升级到其他兵种。
- <Equipments>: 兵种装备,包括战斗装备和民间装备。
兵种的面部特征
<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>- <XmlName id="NPCCharacters" path="troops" />: 注册包含兵种定义的XML文件。path属性应指向您存放兵种定义的XML文件的路径。