public SettlementBuilding mod_UpgradeBuilding(SettlementBuilding building) { if (!KingmakerPatchSettings.CurrencyFallback.Enabled) { return(this.source_UpgradeBuilding(building)); } if (!building.IsFinished || !this.alias_m_Buildings.HasFact(building) || !building.Blueprint.UpgradesTo) { return(null); } if (!KingdomCurrencyFallback.CanSpend(this.GetActualCost(building.Blueprint.UpgradesTo))) { UberDebug.LogWarning("Cannot upgrade " + building.Blueprint + ": not enough BP"); return(null); } KingdomCurrencyFallback.SpendPoints(this.GetActualCost(building.Blueprint)); SettlementBuilding result = this.alias_m_Buildings.Upgrade(building); this.Update(); EventBus.RaiseEvent((ISettlementBuildUpdate h) => h.OnBuildUpdate(building)); return(result); }
public bool mod_CanBuild(BlueprintSettlementBuilding building) { if (!KingmakerPatchSettings.CurrencyFallback.Enabled) { return(this.source_CanBuild(building)); } if (!KingdomCurrencyFallback.CanSpend(this.GetActualCost(building))) { UberDebug.LogSystem("[fireundubh] mod_CanBuild: Cannot spend"); return(false); } SpecialSlotType specialSlot = building.SpecialSlot; if (specialSlot != SpecialSlotType.None) { if (this.IsSpecialSlotFilled(specialSlot)) { return(false); } } else if (this.alias_m_SlotsLeft < building.SlotCount) { return(false); } return(this.alias_CanBuildByLevel(building)); }
public bool mod_CanBuildUprgade(BlueprintSettlementBuilding building) { if (!KingmakerPatchSettings.CurrencyFallback.Enabled) { return(this.source_CanBuildUprgade(building)); } return(KingdomCurrencyFallback.CanSpend(this.GetActualCost(building)) && building.MinLevel <= this.Level && this.Buildings.Any(b => b.Blueprint.UpgradesTo == building)); }
public void mod_UpdateBuildEnabled() { if (!KingmakerPatchSettings.CurrencyFallback.Enabled) { this.source_UpdateBuildEnabled(); return; } bool canAfford = KingdomCurrencyFallback.CanSpend(KingdomRoot.Instance.SettlementBPCost); if (canAfford) { canAfford = !this.alias_m_InputNameField.text.Empty(); } this.alias_m_Build.interactable = canAfford; }