示例#1
0
 public override void OnGameEnd(Game game)
 {
     if (ModSettings.Settings.DebugMode)
     {
         GarrisonRecruitmentReport.WriteReport();
     }
 }
示例#2
0
        private void OnDailyTick()
        {
            var settlements = ModSettings.Settings.GarrisonRecruitment.EnabledForAI ? Settlement.All : Hero.MainHero.Clan.Settlements;

            foreach (var settlement in settlements)
            {
                if (CheckEligibility(settlement))
                {
                    var dailyNumberOfRecruits = (int)Math.Ceiling(ModSettings.Settings.GarrisonRecruitment.DailyNumberOfRecruits);
                    var garrisonSizeLimit     = Campaign.Current.Models.PartySizeLimitModel.GetPartyMemberSizeLimit(settlement.Town.GarrisonParty.Party);
                    var currentGarrisonSize   = settlement.Town.GarrisonParty.MemberRoster.TotalManCount;

                    var numberOfTroopsToAdd = (int)Math.Min(dailyNumberOfRecruits, garrisonSizeLimit.ResultNumber - currentGarrisonSize);
                    var troop = GetTroopToAdd(settlement);
                    if (troop != null)
                    {
                        settlement.Town.GarrisonParty.MemberRoster.AddToCounts(troop, numberOfTroopsToAdd);
                        if (settlement.OwnerClan.Leader.StringId == Hero.MainHero.StringId)
                        {
                            Logger.Log($"{numberOfTroopsToAdd} {troop.Name} were added to {settlement.Name}'s guarrison", true);
                        }

                        if (ModSettings.Settings.DebugMode)
                        {
                            GarrisonRecruitmentReport.AddEntry(settlement, troop, numberOfTroopsToAdd);
                        }
                    }
                    else
                    {
                        Logger.Log($"{settlement.Culture.Name} or {settlement.OwnerClan.Culture} have missing troop data");
                    }
                }
            }
        }