Parties
PartyBase
Settlement
MobileParty
Our party:
PartyBase MobileParty.Party
Count members
TroopRoster
MobileParty.MainParty.MemberRoster.TotalManCount
.TotalRegulars
.TotalWoundedRegulars
.TotalWoundedHeroes
.TotalHeroes
.TotalWounded
.TotalManCount
.TotalHealthyCount
.TotalHealthyCount
Morale
Get:
MobileParty.MainParty.Morale
MobileParty.MainParty.RecentEventsMorale
Set:
MobileParty.MainParty.RecentEventsMorale += 10;
This changes Recent Events
and the change fades with time:
To add an additional line to the morale, it is necessary to patch DefaultPartyMoraleModel - GetEffectivePartyMorale
or create own Morale Model.
Patch example:
NOTE: I apply this as a late Harmony patch in OnGameStartFood
Get party Companions
for (int i = 0; i < MobileParty.MainParty.MemberRoster.Count; i++)
{
CharacterObject characterAtIndex = Hero.MainHero.PartyBelongedTo.MemberRoster.GetCharacterAtIndex(i);
if (characterAtIndex.HeroObject != null && characterAtIndex.HeroObject != Hero.MainHero)
{
Hero hero = characterAtIndex.HeroObject;
// do smthg with the hero (companion)
}
}
Get effective party role heroes
party.EffectiveEngineer
party.EffectiveQuartermaster
party.EffectiveScout
party.EffectiveSurgeon
Add hero to a party
AddCompanionAction.Apply()
Disorganized
bool IsDisorganized [get]
void SetDisorganized (bool isDisorganized)
CampaignTime DisorganizedUntilTime [get]
DefaultPartyImpairmentModel - bool CanGetDisorganized(PartyBase party)
Destroy
DestroyPartyAction.Apply()
Don't use MobileParty.RemoveParty()
Main party on game start
Add 50 grain on start:
[HarmonyPatch(typeof(Campaign), "InitializeMainParty")]
public class CampaignPatch
{
[HarmonyPostfix]
private static void CampaignPostfix(Campaign __instance)
{
__instance.MainParty.ItemRoster.AddToCounts(DefaultItems.Grain, 50);
}
}
Party Size
Sly:
If anyone one day is looking for info on how the AI adjusts party sizes:
MakeClanFinancialEvaluation sets party wage caps : >90k clan gold = 10k, ]30k, 90k] = ]600, 1200], <30k = [200, 600] a MobileParty has its PaymentLimit set by the above CalculateMobilePartyMemberSizeLimit calculates party size limit a party has a LimitedPartySize if the ClanFinancialEval sets one (always for kingdom/minor faction clans) this cap is only lower than the normal calculation if finances throttle PaymentLimit the cap is roughly PaymentLimit/(average wage/troop in the default culture hero party template) if a party exceeds its PaymentLimit, GetNumberOfDeserters calculates a number of deserters based on the (wages paid beyond the limit)/(4*AvgCulturalTemplateWage); a maxmimum of 20 desertions per day is allowed PartiesCheckDesertionDueToPartySizeExceedsPaymentRatio checks for troops in excess of party limit or wage limit it then attempts to remove the lowest tier units first until it reaches the #ofDeserters
Position on the World Map
party.Position2D.x
party.Position2D.y