protected virtual void SetUpCompare(
            bool requiresMinProsperity,
            float xProsperity,
            float yProsperity,
            bool xMeetsBaseRequirements,
            bool yMeetsBaseRequirements
            )
        {
            SetUp(xMeetsBaseRequirements, requiresMinProsperity);

            _mockSettlementX = _mockSettlement;
            _mockSettlementX.SetupGet(settlement => settlement.IsNull)
            .Returns(!xMeetsBaseRequirements);

            if (xMeetsBaseRequirements)
            {
                _mockSettlementX.SetupGet(settlement => settlement.Prosperity).Returns(xProsperity);
            }

            _mockSettlementY = CreateMockSettlement(true, ExactlyEnoughFood).mockSettlement;
            SetUpContainsSettlement(_mockSettlementY, NoExistingTournament);

            _mockSettlementY.SetupGet(settlement => settlement.IsNull).Returns(!yMeetsBaseRequirements);

            if (yMeetsBaseRequirements)
            {
                _mockSettlementY.SetupGet(settlement => settlement.Prosperity).Returns(yProsperity);
            }

            _settlementX = _mockSettlementX.Object;
            _settlementY = _mockSettlementY.Object;

            _mockSettings.SetupGet(settings => settings.MinProsperityRequirement)
            .Returns(requiresMinProsperity ? Constants.Settings.Default.MinProsperityRequirement : 0);
        }
Example #2
0
        private void PayTournamentFee(MBHero payor, MBSettlement settlement)
        {
            var tournamentCost = Settings.TournamentCost;

            payor.ChangeHeroGold(-tournamentCost);
            settlement.Town.ChangeGold(tournamentCost);
        }
Example #3
0
        protected virtual bool CompareProsperity(MBSettlement x, MBSettlement y, out int result)
        {
            var xIsMoreProsperous = x.Prosperity > y.Prosperity;
            var xIsLessProsperous = x.Prosperity < y.Prosperity;

            result = xIsMoreProsperous ? Constants.Comparer.XOutranksY : xIsLessProsperous ? Constants.Comparer.YOutranksX : Constants.Comparer.BothEqualRank;

            return(true);
        }
Example #4
0
        public override int Compare(MBSettlement x, MBSettlement y)
        {
            var result = 0;

            if (!TryComparePreconditions(x, y, ref result))
            {
                CompareProsperity(x, y, out result);
            }

            return(result);
        }
Example #5
0
        private void AddOrUpdateTournamentRecord(MBSettlement settlement, MBHero initiatingHero, TournamentType type)
        {
            var record = new TournamentRecord()
            {
                hostSettlementStringId = settlement.StringId,
                initiatingHeroStringId = initiatingHero.IsNull ? null : initiatingHero.StringId,
                tournamentType         = type
            };

            ModState.TournamentRecords.AddOrUpdate(record);
        }
Example #6
0
        private void ApplyHostingEffects(TournamentType type, MBSettlement settlement)
        {
            if (type == TournamentType.Initial)
            {
                return;
            }

            settlement.Prosperity      += Settings.ProsperityIncrease;
            settlement.Town.Loyalty    += Settings.LoyaltyIncrease;
            settlement.Town.Security   += Settings.SecurityIncrease;
            settlement.Town.FoodStocks -= Settings.FoodStocksDecrease;

            if (settlement.Town.MapFaction.Leader.IsHumanPlayerCharacter && Settings.SettlementStatNotification)
            {
                MBInformationManagerFacade.DisplayAsLogEntry($"{settlement.Name}'s prosperity, loyalty and security have increased and food stocks have decreased");
            }
        }
Example #7
0
        public virtual TournamentRecord this[MBSettlement settlement]
        {
            get
            {
                var settlementId = settlement.StringId;

                return(ContainsKey(settlementId) ? this[settlementId] : default(TournamentRecord));
            }

            set
            {
                if (settlement == MBSettlement.Null)
                {
                    return;
                }

                this[settlement.StringId] = value;
            }
        }
Example #8
0
        protected virtual void SetUp(bool isTown, float foodStockValue = 0)
        {
            base.SetUp();

            CreateMockSettlementResults results = CreateMockSettlement(isTown, foodStockValue);

            _mockSettlement = results.mockSettlement;
            _settlement     = _mockSettlement.Object;
            _mockTown       = results.mockTown;
            _mockSettings   = MockRepository.Create <Settings>();

            _mockSettings.SetupGet(settings => settings.FoodStocksDecrease)
            .Returns(Default.FoodStocksDecrease);

            _mockSettlement.SetupGet(settlement => settlement.IsTown).Returns(isTown);
            if (isTown)
            {
                _mockSettlement.SetupGet(settlement => settlement.Town).Returns(_mockTown.Object);
                _mockTown.SetupGet(town => town.FoodStocks).Returns(foodStockValue);
            }
        }
Example #9
0
        private void ApplyRelationsGain(TournamentType type, MBSettlement settlement)
        {
            if (type != TournamentType.PlayerInitiated)
            {
                return;
            }

            var mainHero = MBHero.MainHero;
            int newRelation;

            foreach (var notable in settlement.Notables)
            {
                if (notable == mainHero)
                {
                    continue;
                }

                newRelation = notable.GetBaseHeroRelation(mainHero) + Settings.NoblesRelationIncrease;

                notable.SetPersonalRelation(mainHero, newRelation);
            }

            MBInformationManagerFacade.DisplayAsQuickBanner($"Your relationship with local notables at {settlement.Name} has improved");
        }
 protected override bool MeetsRequirements(MBSettlement settlement) =>
 settlement.IsTown &&
 settlement.Town.FoodStocks >= Settings.FoodStocksDecrease;
 protected override bool MeetsRequirements(MBSettlement settlement) =>
 base.MeetsRequirements(settlement) &&
 (CanOverrideExisting || !ModState.TournamentRecords.ContainsSettlement(settlement));
Example #12
0
 protected override bool MeetsRequirements(MBSettlement settlement) =>
 base.MeetsRequirements(settlement) &&
 (!RequireMinProsperity || settlement.Prosperity >= Settings.MinProsperityRequirement);
Example #13
0
 public virtual void Remove(MBSettlement settlement) => Remove(settlement.StringId);
Example #14
0
 public virtual bool ContainsSettlement(MBSettlement settlement) => ContainsKey(settlement.StringId);
Example #15
0
        private void InstantiateTournament(MBSettlement settlement)
        {
            var tournament = new MBFightTournamentGame(ModState.IsProduction, settlement.Town);

            MBCampaign.Current.TournamentManager.AddTournament(tournament);
        }
        public new static CreateTournamentResult Success(TournamentType tournamentType, bool hadExistingTournament, MBSettlement settlement)
        {
            var isInitialTournament = tournamentType == TournamentType.Initial;

            return(new CreateTournamentResult()
            {
                HadExistingTournament = hadExistingTournament,
                Status = ResultStatus.Success,
                Payor = isInitialTournament ? MBHero.Null : settlement.OwnerClan.Leader,
                HostSettlement = settlement
            });
        }