Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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;
        }