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 @@ -11,7 +11,7 @@ "" + "0.75" + "" + - "" + + "" + "" + ""; Index: binaries/data/mods/public/simulation/helpers/TraderGain.js =================================================================== --- binaries/data/mods/public/simulation/helpers/TraderGain.js +++ binaries/data/mods/public/simulation/helpers/TraderGain.js @@ -37,10 +37,11 @@ // Calculate ordinary Euclidean distance between markets. // We don't use pathfinder, because ordinary distance looks more fair. - let distanceSq = firstMarketPosition.distanceToSquared(secondMarketPosition); + let distance = firstMarketPosition.distanceTo(secondMarketPosition); + let cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain); // We calculate gain as square of distance to encourage trading between remote markets - // and gainMultiplier corresponds to the gain for a 100m distance - gain.traderGain = gainMultiplier * distanceSq / 10000; + // and gainMultiplier corresponds to the gain percentage from the income of given distance + gain.traderGain = gainMultiplier * 1024 * distance * Math.tanh(distance / cmpTerrain.GetMapSize()) / 10000; gain.market1Owner = cmpMarket1Player.GetPlayerID(); gain.market2Owner = cmpMarket2Player.GetPlayerID();