Hi, is the fix for the siege going to be patched in? When mercenary factions end their contract with an enemy faction who is besieging me it still kicks me out of the fief while defending and leaves the rest of my army's parties inside.
[HarmonyPrefix]
[HarmonyPatch(typeof(Equipment), nameof(Equipment.GetRandomEquipmentElements))]
public static bool AssignGearPatch(ref Equipment __result, BasicCharacterObject character, bool randomEquipmentModifier, bool isCivilianEquipment = false, int seed = -1)
{
Equipment equipment = new Equipment(isCivilianEquipment);
List<Equipment> list = character.AllEquipments.Where((Equipment eq) => eq.IsCivilian == isCivilianEquipment && !eq.IsEmpty()).ToList();
if (list.IsEmpty())
{
__result = equipment;
return false;
}
int count = list.Count;
Random random = new Random(seed);
int weaponSetNo1 = MBRandom.RandomInt(count);
for (int i = 0; i < 12; i++)
{
equipment[i] = list[weaponSetNo1].GetEquipmentFromSlot((EquipmentIndex)i);
if (randomEquipmentModifier)
{
ItemModifier itemModifier = equipment[i].Item?.ItemComponent?.ItemModifierGroup?.GetRandomItemModifierLootScoreBased();
if (itemModifier != null)
{
equipment[i].SetModifier(itemModifier);
}
}
}
__result = equipment;
return false;
}
I see. The reason behind that behaviour makes total sense, but it does make it difficult to manually create your own varieties while accomodating for balance (e.g. one roster with a strong chest piece, one roster with a weak chest piece but strong cape).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<!--Identity Transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match='NPCCharacter[@id="aserai_recruit"]' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<face>
<face_key_template value="BodyProperty.fighter_aserai" />
</face>
<skills>
<skill id="Athletics" value="18" />
<skill id="Riding" value="12" />
<skill id="OneHanded" value="30" />
<skill id="TwoHanded" value="10" />
<skill id="Polearm" value="30" />
<skill id="Bow" value="10" />
<skill id="Crossbow" value="10" />
<skill id="Throwing" value="10" />
</skills>
<upgrade_targets>
<upgrade_target id="NPCCharacter.aserai_tribesman" />
<upgrade_target id="NPCCharacter.aserai_mameluke_soldier" />
</upgrade_targets>
<Equipments>
<EquipmentRoster>
<equipment slot="Item0" id="Item.military_fork_pike_t3" />
<equipment slot="Head" id="Item.aserai_civil_e_hscarf" />
<equipment slot="Body" id="Item.aserai_civil_e" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0" id="Item.peasant_pickaxe_1_t1" />
<equipment slot="Item1" id="Item.peasant_pitchfork_1_t1" />
<equipment slot="Head" id="Item.aserai_civil_c_head" />
<equipment slot="Body" id="Item.aserai_civil_c" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
</EquipmentRoster>
<EquipmentSet id="aserai_troop_civilian_template_t1" civilian="true" />
</Equipments>
</xsl:copy>
</xsl:template>
<xsl:template match='NPCCharacter[@id="aserai_tribesman"]' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<face>
<face_key_template value="BodyProperty.fighter_aserai" />
</face>
<skills>
<skill id="Athletics" value="37" />
<skill id="Riding" value="28" />
<skill id="OneHanded" value="70" />
<skill id="TwoHanded" value="20" />
<skill id="Polearm" value="40" />
<skill id="Bow" value="20" />
<skill id="Crossbow" value="20" />
<skill id="Throwing" value="20" />
</skills>
<upgrade_targets>
<upgrade_target id="NPCCharacter.aserai_skirmisher" />
<upgrade_target id="NPCCharacter.aserai_footman" />
</upgrade_targets>
<Equipments>
<EquipmentRoster>
<equipment slot="Item0" id="Item.eastern_spear_1_t2" />
<equipment slot="Item1" id="Item.desert_round_shield" />
<equipment slot="Item2" id="Item.aserai_sword_1_t2" />
<equipment slot="Head" id="Item.desert_helmet" />
<equipment slot="Body" id="Item.desert_padded_cloth" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
<equipment slot="Gloves" id="Item.buttoned_leather_bracers" />
<equipment slot="Cape" id="Item.stitched_leather_shoulders" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0" id="Item.eastern_spear_1_t2" />
<equipment slot="Item1" id="Item.desert_round_shield" />
<equipment slot="Item2" id="Item.aserai_mace_1_t2" />
<equipment slot="Head" id="Item.desert_helmet" />
<equipment slot="Body" id="Item.desert_padded_cloth" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
<equipment slot="Gloves" id="Item.rough_tied_bracers" />
<equipment slot="Cape" id="Item.stitched_leather_shoulders" />
</EquipmentRoster>
<EquipmentSet id="aserai_troop_civilian_template_t1" civilian="true" />
</Equipments>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
TaleWorlds.MountAndBladeLauncher.exe (7144)
Exception: "System.InvalidOperationException"
Message: "Token StartElement in state and EndRootElement would result in an invalid XML document.
Make sure that the ConformanceLevel setting is set to ConformanceLevel.Fragment or ConformanceLevel.Auto
if you want to write an XML fragment."
Could not load merged xml file correctly: HeroesError: Object reference not set to an instance of an object.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- <xsl:output omit-xml-declaration="yes"/> -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match='NPCCharacter[@id="aserai_recruit"]/skills' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<skill id="Athletics" value="18" />
<skill id="Riding" value="12" />
<skill id="OneHanded" value="30" />
<skill id="TwoHanded" value="10" />
<skill id="Polearm" value="30" />
<skill id="Bow" value="10" />
<skill id="Crossbow" value="10" />
<skill id="Throwing" value="10" />
</xsl:copy>
</xsl:template>
...
...Other troops...
...
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- <xsl:output omit-xml-declaration="yes"/> -->
<xsl:template match="/">
<top>
<xsl:apply-templates/>
</top>
</xsl:template>
<xsl:template match='NPCCharacter[@id="aserai_recruit"]/skills' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<skill id="Athletics" value="18" />
<skill id="Riding" value="12" />
<skill id="OneHanded" value="30" />
<skill id="TwoHanded" value="10" />
<skill id="Polearm" value="30" />
<skill id="Bow" value="10" />
<skill id="Crossbow" value="10" />
<skill id="Throwing" value="10" />
</xsl:copy>
</xsl:template>
...
...Other troops...
...
</xsl:stylesheet>
<xsl:output omit-xml-declaration="yes"/>
.<Xmls>
<XmlNode>
<XmlName id="NPCCharacters" path="equipment" />
<IncludedGameTypes>
<GameType value="Campaign" />
<GameType value="CampaignStoryMode" />
</IncludedGameTypes>
</XmlNode>
<XmlNode>
<XmlName id="NPCCharacters" path="skills" />
<IncludedGameTypes>
<GameType value="Campaign" />
<GameType value="CampaignStoryMode" />
</IncludedGameTypes>
</XmlNode>
</Xmls>
<?xml version="1.0" encoding="utf-8"?>
<NPCCharacters>
</NPCCharacters>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- <xsl:output omit-xml-declaration="yes"/> -->
<xsl:template match='NPCCharacter[@id="aserai_recruit"]/skills' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<skill id="Athletics" value="18" />
<skill id="Riding" value="12" />
<skill id="OneHanded" value="30" />
<skill id="TwoHanded" value="10" />
<skill id="Polearm" value="30" />
<skill id="Bow" value="10" />
<skill id="Crossbow" value="10" />
<skill id="Throwing" value="10" />
</xsl:copy>
</xsl:template>
...
...
<xsl:template match='NPCCharacter[@id="steppe_bandits_boss"]/skills' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<skill id="Athletics" value="80" />
<skill id="Riding" value="100" />
<skill id="OneHanded" value="80" />
<skill id="TwoHanded" value="40" />
<skill id="Polearm" value="140" />
<skill id="Bow" value="160" />
<skill id="Crossbow" value="20" />
<skill id="Throwing" value="60" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8"?>
<NPCCharacters>
</NPCCharacters>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- <xsl:output omit-xml-declaration="yes"/> -->
<xsl:template match='NPCCharacter[@id="aserai_recruit"]/Equipments' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<EquipmentRoster>
<equipment slot="Item0" id="Item.military_fork_pike_t3" />
<equipment slot="Head" id="Item.aserai_civil_e_hscarf" />
<equipment slot="Body" id="Item.aserai_civil_e" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0" id="Item.peasant_pickaxe_1_t1" />
<equipment slot="Item1" id="Item.peasant_pitchfork_1_t1" />
<equipment slot="Head" id="Item.aserai_civil_c_head" />
<equipment slot="Body" id="Item.aserai_civil_c" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
</EquipmentRoster>
<EquipmentSet id="aserai_troop_civilian_template_t1" civilian="true" />
</xsl:copy>
</xsl:template>
...
...
<xsl:template match='NPCCharacter[@id="steppe_bandits_boss"]/Equipments' >
<xsl:copy>
<xsl:apply-templates select="@*"/>
<EquipmentRoster civilian="true">
<equipment slot="Item0" id="Item.ridged_sabre_sword_t4" />
<equipment slot="Body" id="Item.bandit_envelope_dress_v1" />
<equipment slot="Leg" id="Item.wrapped_shoes" />
</EquipmentRoster>
<EquipmentRoster>
<equipment slot="Item0" id="Item.khuzait_polearm_1_t4" />
<equipment slot="Item1" id="Item.composite_steppe_bow" />
<equipment slot="Item2" id="Item.default_arrows" />
<equipment slot="Item3" id="Item.ridged_sabre_sword_t4" />
<equipment slot="Head" id="Item.plumed_nomad_helmet" />
<equipment slot="Body" id="Item.eastern_stitched_leather_coat" />
<equipment slot="Leg" id="Item.eastern_leather_boots" />
<equipment slot="Gloves" id="Item.guarded_padded_vambrace" />
<equipment slot="Horse" id="Item.t2_khuzait_horse" />
<equipment slot="HorseHarness" id="Item.light_harness" />
</EquipmentRoster>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>