Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion BannerKings/Behaviours/BKClanBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ private void OnCompanionAdded(Hero companion)

private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (hero != Hero.MainHero || target.Town == null)
if (hero != Hero.MainHero || target.Town == null || Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
3 changes: 3 additions & 0 deletions BannerKings/Behaviours/BKEducationBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,9 @@ private void OnHeroComesOfAge(Hero hero)

private void InitializeEducation(Hero hero, bool addExtraLanguages = false)
{
if (Utils.Helpers.IsNonBaseGameSettlement(hero.BornSettlement))
return;

Dictionary<Language, float> startingLanguages = null;
if (hero.Clan != null && hero != hero.Clan.Leader && hero.Clan.Leader != null)
{
Expand Down
3 changes: 2 additions & 1 deletion BannerKings/Behaviours/BKGentryBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero
ExceptionUtils.TryCatch(() =>
{
if (party == null || !party.IsLordParty || party.WarPartyComponent == null || party.LeaderHero == null ||
party.ActualClan == null || party.ActualClan == Clan.PlayerClan)
party.ActualClan == null || party.ActualClan == Clan.PlayerClan ||
Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
5 changes: 3 additions & 2 deletions BannerKings/Behaviours/BKLifestyleBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public override void SyncData(IDataStore dataStore)

private void OnSettlementEntered(MobileParty mobileParty, Settlement settlement, Hero hero)
{
if (mobileParty != null && mobileParty.IsCaravan && mobileParty.Owner != null && settlement.Notables != null)
if (mobileParty != null && mobileParty.IsCaravan && mobileParty.Owner != null && settlement.Notables != null
&& !Utils.Helpers.IsNonBaseGameSettlement(settlement))
{
var education = BannerKingsConfig.Instance.EducationManager.GetHeroEducation(mobileParty.Owner);
if (education.HasPerk(BKPerks.Instance.CaravaneerOutsideConnections) && MBRandom.RandomFloat < 0.1f)
Expand All @@ -48,7 +49,7 @@ private void OnConversationEnded(IEnumerable<CharacterObject> characters)
var education = BannerKingsConfig.Instance.EducationManager.GetHeroEducation(Hero.MainHero);
if (education.Lifestyle == DefaultLifestyles.Instance.Outlaw && character.IsHero)
{
if (character.Occupation != Occupation.GangLeader ||
if (!character.HeroObject.IsGangLeader ||
character.HeroObject.GetTraitLevel(DefaultTraits.Honor) >= 0)
{
var random = MBRandom.RandomFloat;
Expand Down
2 changes: 1 addition & 1 deletion BannerKings/Behaviours/BKLordPropertyBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public override void SyncData(IDataStore dataStore)

private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (party?.LeaderHero == null || !party.IsLordParty)
if (party?.LeaderHero == null || !party.IsLordParty || Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
2 changes: 1 addition & 1 deletion BannerKings/Behaviours/BKPartyBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ private void DecideSendTravellers(Settlement settlement)

private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (party == null || party == MobileParty.MainParty)
if (party == null || party == MobileParty.MainParty || Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
4 changes: 3 additions & 1 deletion BannerKings/Behaviours/BKReligionsBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,9 @@ private void DailyTick()

private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (hero != Hero.MainHero || target.Town == null || BannerKingsConfig.Instance.PopulationManager == null || !BannerKingsConfig.Instance.PopulationManager.IsSettlementPopulated(target))
if (hero != Hero.MainHero || target.Town == null || BannerKingsConfig.Instance.PopulationManager == null ||
!BannerKingsConfig.Instance.PopulationManager.IsSettlementPopulated(target) ||
Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
4 changes: 3 additions & 1 deletion BannerKings/Behaviours/Feasts/BKFeastBehavior.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using BannerKings.Behaviours.Marriage;
using BannerKings.Managers.Goals.Decisions;
using BannerKings.Utils;
using System.Collections.Generic;
using System.Linq;
using TaleWorlds.CampaignSystem;
Expand Down Expand Up @@ -220,7 +221,8 @@ private void HourlyTickParty(MobileParty party)

private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (hero != Hero.MainHero || target.Town == null || !feasts.ContainsKey(target.Town))
if (hero != Hero.MainHero || target.Town == null
|| Utils.Helpers.IsNonBaseGameSettlement(target) || !feasts.ContainsKey(target.Town))
{
return;
}
Expand Down
3 changes: 2 additions & 1 deletion BannerKings/Behaviours/PartyNeeds/BKPartyNeedsBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ public void OnSessionLaunched(CampaignGameStarter starter)
private void OnSettlementEntered(MobileParty party, Settlement target, Hero hero)
{
if (target == null || party == null || hero == null || !party.IsLordParty ||
hero == Hero.MainHero || (!target.IsVillage && target.IsFortification))
hero == Hero.MainHero || (!target.IsVillage && target.IsFortification) ||
Utils.Helpers.IsNonBaseGameSettlement(target))
{
return;
}
Expand Down
6 changes: 3 additions & 3 deletions BannerKings/Managers/AI/AIBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -215,17 +215,17 @@ public Lifestyle ChooseLifestyle(Hero hero)
{
if (hero.IsNotable)
{
if (occupation == Occupation.GangLeader)
if (hero.IsGangLeader)
{
rogueWeight += 2;
}

if (occupation == Occupation.Artisan)
if (hero.IsArtisan)
{
artisanWeight += 2;
}

if (occupation == Occupation.Merchant)
if (hero.IsMerchant)
{
merchantWeight += 2;
}
Expand Down
7 changes: 3 additions & 4 deletions BannerKings/Models/Vanilla/BKEconomyModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -385,10 +385,9 @@ public ExplainedNumber GetMerchantIncome(Town town, bool explanations = false)

public override int GetNotableCaravanLimit(Hero notable)
{
Occupation occupation = notable.Occupation;
if (occupation == Occupation.Merchant) return 3;
else if (occupation == Occupation.Artisan) return 2;
else if (occupation == Occupation.GangLeader) return 1;
if (notable.IsMerchant) return 3;
else if (notable.IsArtisan) return 2;
else if (notable.IsGangLeader) return 1;

return 0;
}
Expand Down
12 changes: 11 additions & 1 deletion BannerKings/Patches/FixesPatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ internal class GarrisonTroopsCampaignBehaviorPatches
private static bool GetGarrisonLeaveOrTakeDataOfPartyPrefix(MobileParty mobileParty, ref ValueTuple<int, int> __result)
{
Settlement currentSettlement = mobileParty.CurrentSettlement;
if (Utils.Helpers.IsNonBaseGameSettlement(currentSettlement))
return true;

int num = TaleWorlds.CampaignSystem.Campaign.Current.Models.SettlementGarrisonModel
.FindNumberOfTroopsToLeaveToGarrison(mobileParty, currentSettlement);
int item = 0;
Expand Down Expand Up @@ -71,7 +74,8 @@ internal class GangLeaderNeedsToOffloadStolenGoodsIssueBehaviorPatches
[HarmonyPatch("ConditionsHold")]
private static bool ConditionsHoldPrefix(Hero issueGiver, ref Settlement selectedHideout, ref bool __result)
{
if (issueGiver.CurrentSettlement == null || issueGiver.CurrentSettlement.IsVillage)
if (issueGiver.CurrentSettlement == null || issueGiver.CurrentSettlement.IsVillage ||
Utils.Helpers.IsNonBaseGameSettlement(issueGiver.CurrentSettlement))
{
__result = false;
return false;
Expand Down Expand Up @@ -254,6 +258,9 @@ internal class SiegeAftermathCampaignBehaviorPatches
private static bool GetSiegeAftermathInfluenceCostPrefix(MobileParty attackerParty, Settlement settlement,
SiegeAftermathAction.SiegeAftermath aftermathType, ref float __result)
{
if (Utils.Helpers.IsNonBaseGameSettlement(settlement))
return true;

float result = 0f;
if (attackerParty.Army != null && aftermathType != SiegeAftermathAction.SiegeAftermath.Pillage)
{
Expand Down Expand Up @@ -327,6 +334,9 @@ internal class CraftingCampaignBehaviorPatches
[HarmonyPatch("DailyTickSettlement")]
private static bool CreateTownOrderPrefix(CraftingCampaignBehavior __instance, Settlement settlement)
{
if (Utils.Helpers.IsNonBaseGameSettlement(settlement))
return true;

if (settlement.IsTown && __instance.CraftingOrders[settlement.Town].IsThereAvailableSlot())
{
List<Hero> list = new List<Hero>();
Expand Down
9 changes: 9 additions & 0 deletions BannerKings/Patches/NotablePatches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ internal class CreateHeroAtOccupationPatch
{
private static bool Prefix(Occupation neededOccupation, ref Hero __result, Settlement forcedHomeSettlement = null)
{
if (Utils.Helpers.IsNonBaseGameSettlement(forcedHomeSettlement))
return true;

Settlement settlement = forcedHomeSettlement ?? SettlementHelper.GetRandomTown(null);
var data = BannerKingsConfig.Instance.PopulationManager.GetPopData(settlement);
IEnumerable<CharacterObject> enumerable;
Expand Down Expand Up @@ -122,6 +125,9 @@ internal class SpawnNotablesIfNeededPatch
{
private static bool Prefix(Settlement settlement)
{
if (Utils.Helpers.IsNonBaseGameSettlement(settlement))
return true;

var list = new List<Occupation>();
if (settlement.IsTown)
{
Expand Down Expand Up @@ -203,6 +209,9 @@ internal class DailyTickSettlementPatch
{
private static bool Prefix(Settlement settlement)
{
if (Utils.Helpers.IsNonBaseGameSettlement(settlement))
return true;

if ((settlement.IsTown || settlement.IsCastle) && settlement.Town.Governor != null)
{
var governor = settlement.Town.Governor;
Expand Down
6 changes: 6 additions & 0 deletions BannerKings/Utils/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -351,5 +351,11 @@ public static ConsumptionType GetTradeGoodConsumptionType(ItemObject item)

return ConsumptionType.None;
}

public static bool IsNonBaseGameSettlement(Settlement s)
{
return s != null && !s.IsHideout && !s.IsTown && !s.IsVillage && !s.IsCastle
&& s.SettlementComponent as RetirementSettlementComponent == null;
}
}
}