コード例 #1
0
        public static int GetUnitPrice(Item item, Character character, out UnitPriceMethod methodUsed)
        {
            int marketPrice = MarketPriceCalculator.GetMarketPrice(item);
            int craftCost   = item.MadeFrom.Any() ? CraftCostCalculator.CostToCraft(item, character) : -1;
            var price       = DetermineUnitPrice(item, craftCost, marketPrice, out methodUsed);

            return(price);
        }
コード例 #2
0
        static int DetermineUnitPrice(Item item, int craftCost, int marketPrice, out UnitPriceMethod methodUsed)
        {
            if (item.HasSpecialPricing && !OverideSpecialPricing)
            {
                methodUsed = UnitPriceMethod.SpecialPricing;
                return(item.SpecialPricing);
            }

            if (item.Craft && !OverideDoCraftSetting)
            {
                methodUsed = UnitPriceMethod.Craft;
                return(craftCost);
            }

            Dictionary <UnitPriceMethod, int> values = new Dictionary <UnitPriceMethod, int>();

            values.Add(UnitPriceMethod.Market, marketPrice);
            if (craftCost > 0 && !item.Craft && OverideDoCraftSetting)
            {
                values.Add(UnitPriceMethod.Craft, craftCost);
            }
            if (item.HasSpecialPricing)
            {
                values.Add(UnitPriceMethod.SpecialPricing, item.SpecialPricing);
            }
            if (item.VendorSells)
            {
                values.Add(UnitPriceMethod.Vendor, item.VendorCost);
            }

            var min = values.Min(p => p.Value);
            var kvp = values.FirstOrDefault(p => p.Value == min);

            methodUsed = kvp.Key;
            return(kvp.Value);
        }