Index: binaries/data/mods/public/simulation/components/Trader.js =================================================================== --- binaries/data/mods/public/simulation/components/Trader.js +++ binaries/data/mods/public/simulation/components/Trader.js @@ -164,15 +164,15 @@ Trader.prototype.PerformTrade = function(currentMarket) { - let previousMarket = this.markets[(this.index+this.markets.length) % this.markets.length]; + let previousMarket = this.markets[this.index]; if (previousMarket != currentMarket) // Inconsistent markets { this.goods.amount = null; - return; + return INVALID_ENTITY; } this.index = ++this.index % this.markets.length; - let nextMarket = this.markets[(this.index+this.markets.length) % this.markets.length]; + let nextMarket = this.markets[this.index]; if (this.goods.amount && this.goods.amount.traderGain) { @@ -209,11 +209,13 @@ let cmpPlayer = QueryOwnerInterface(this.entity); if (!cmpPlayer) - return; + return INVALID_ENTITY; this.goods.type = cmpPlayer.GetNextTradingGoods(); this.goods.amount = this.CalculateGain(currentMarket, nextMarket); this.goods.origin = currentMarket; + + return nextMarket; }; Trader.prototype.GetGoods = function() Index: binaries/data/mods/public/simulation/components/UnitAI.js =================================================================== --- binaries/data/mods/public/simulation/components/UnitAI.js +++ binaries/data/mods/public/simulation/components/UnitAI.js @@ -5357,15 +5357,14 @@ } let cmpTrader = Engine.QueryInterface(this.entity, IID_Trader); - cmpTrader.PerformTrade(currentMarket); + let nextMarket = cmpTrader.PerformTrade(currentMarket); let amount = cmpTrader.GetGoods().amount; - if (!amount || !amount.traderGain) + if (!nextMarket || !amount || !amount.traderGain) { this.StopTrading(); return; } - let nextMarket = cmpTrader.markets[cmpTrader.index]; this.order.data.target = nextMarket; if (this.order.data.route && this.order.data.route.length)