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();