private void AddTradeGood(World origin, Dice random, IList<TradeOffer> result, TradeGood good, bool advancedMode, int brokerScore) { if (string.IsNullOrEmpty(good.Tons)) throw new ArgumentException("good.Tons is empty for " + good.Name); if (good.BasePrice == 0) //special case { var detail = good.ChooseRandomDetail(random); var lot = new TradeOffer() { Type = good.Name, Subtype = random.Choose(detail.NameList), Tons = Math.Max(1, random.D(detail.Tons)), BasePrice = detail.Price * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); } else if (!advancedMode) { var lot = new TradeOffer() { Type = good.Name, Subtype = null, Tons = random.D(good.Tons), BasePrice = good.BasePrice * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); } else { var tonsRemaining = random.D(good.Tons); while (tonsRemaining > 0) { var detail = good.ChooseRandomDetail(random); var lot = new TradeOffer() { Type = good.Name, Subtype = random.Choose(detail.NameList), Tons = Math.Min(tonsRemaining, random.D(detail.Tons)), BasePrice = detail.Price * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); tonsRemaining -= lot.Tons; } } }
private void AddTradeGood(World origin, Dice random, IList <TradeOffer> result, TradeGood good, bool advancedMode, int brokerScore) { if (string.IsNullOrEmpty(good.Tons)) { throw new ArgumentException("good.Tons is empty for " + good.Name); } if (good.BasePrice == 0) //special case { var detail = good.ChooseRandomDetail(random); var lot = new TradeOffer() { Type = good.Name, Subtype = random.Choose(detail.NameList), Tons = Math.Max(1, random.D(detail.Tons)), BasePrice = detail.Price * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); } else if (!advancedMode) { var lot = new TradeOffer() { Type = good.Name, Subtype = null, Tons = random.D(good.Tons), BasePrice = good.BasePrice * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); } else { var tonsRemaining = random.D(good.Tons); while (tonsRemaining > 0) { var detail = good.ChooseRandomDetail(random); var lot = new TradeOffer() { Type = good.Name, Subtype = random.Choose(detail.NameList), Tons = Math.Min(tonsRemaining, random.D(detail.Tons)), BasePrice = detail.Price * 1000, PurchaseDM = PurchaseDM(origin, good) }; int roll; lot.PriceModifier = PurchasePriceModifier(random, lot.PurchaseDM, brokerScore, out roll); lot.Roll = roll; result.Add(lot); tonsRemaining -= lot.Tons; } } }