Cargo Contracts MOD for Oolite v1.77 and v1.79!

For test results, bug reports, announcements of new builds etc.

Moderators: another_commander, winston, Getafix

Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Cargo Contracts MOD for Oolite v1.77 and v1.79!

Post by Switeck »

This mod changes the core game's cargo contracts "missions", to make them less arbitrary and more fair.
It generates profits based on Start/Destination price differences rather than on an arbitrary profit multiplier which was causing gigantic profits on Gold/Plat/Gems but terrible profits on almost anything else.
Better destination systems and commodity types tend to be picked at higher reputation, resulting in higher potential profits.
Large and/or long distance contracts are given a reputation boost.

Cargo Contracts Mod v1.64 -- works with Oolite v1.83 and later!
https://wiki.alioth.net/index.php/File: ... d_1.64.oxz
Direct link to the file:
https://wiki.alioth.net/img_auth.php/b/ ... d_1.64.oxz

Older versions at...

Cargo Contracts Mod v1.4 (for use with v1.77):
https://app.boxcn.net/s/tc9gqpabptk0lfnr9m67

Here's my Cargo Contracts MOD v1.5 -- now using OXZ format and requiring v1.79 trunk:
https://app.boxcn.net/s/d6cv49ftfer8pd9vowm3
https://wiki.alioth.net/index.php/File: ... od_1.5.oxz

See the readme in the OXP/OXZ and last post for changes. :P

Or read this...

More detailed Cargo Contracts MOD Guide and FAQ:
https://wiki.alioth.net/index.php/Cargo ... ct_Mod_OXP
Last edited by Switeck on Wed Feb 08, 2023 10:38 pm, edited 8 times in total.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
Seems the payment on delivery is counting the deposit fee twice, making the contract immensely more profitable than intended
Is this 1.77 release, or trunk? I can see how it might happen with trunk, but not with 1.77 as released.
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

Sorry, trunk actually:
Opening log for Oolite development version 1.77.1.5642 (x86-32 test release) under Windows 5.1.2600 Service Pack 3 32-bit at 2013-02-27 18:12:37 -0600.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
Sorry, trunk actually:
Opening log for Oolite development version 1.77.1.5642 (x86-32 test release) under Windows 5.1.2600 Service Pack 3 32-bit at 2013-02-27 18:12:37 -0600.
Thanks. Right, I know why that's happening, then. Bug introduced as a result of fixing an earlier bug...

I'll try to find time to fix that and look at the other bits this evening.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
Seems the payment on delivery is counting the deposit fee twice, making the contract immensely more profitable than intended.
Fixed in r5643. Thanks.
Switeck wrote:
The player's contract reputation also seems to vary randomly -- a savegame I have with 0 reputation reports having 1-3 reputation after loading and/or jumping. It's like the variable isn't initializing correctly when I reload from savegame.
Expected, and has been this way for a long time. It's the "unknown" parts of the reputation sometimes being interpreted as "good". The function gives the current perceived reputation as a single number, not the contents of the good/bad/unknown array, so...
Switeck wrote:
I tried to fix some glaring issues with Cargo Contracts. [...]
I can explain more later...
Go ahead.
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

cim wrote:
Switeck wrote:
The player's contract reputation also seems to vary randomly -- a savegame I have with 0 reputation reports having 1-3 reputation after loading and/or jumping. It's like the variable isn't initializing correctly when I reload from savegame.
Expected, and has been this way for a long time. It's the "unknown" parts of the reputation sometimes being interpreted as "good". The function gives the current perceived reputation as a single number, not the contents of the good/bad/unknown array, so...
I was also seeing the reputation drop 1-2 points with almost every hyperspace jump.

As for my Cargo Contracts modifications...

The destination systems are chosen from a sampling of systems inside a limited LY radius (100 LY - 10 LY per reputation point, which can be >100 LY at negative rep.) from your current location rather than always any random system in the Galaxy Chart.
Someone with a great reputation should not need to take low-paying, extremely long ranged deliveries...it would be beneath them!
Even at max reputation, the distance is 30 LY and the actual route needed may be more than that due to voids you have to go around. I had a few that were 40-52 LY in Galaxy Chart 1 because of this.

Any system with the same economy as the current one is ruled out as a destination (except at max reputation, when you can get Gold/Plat/Gem contracts) simply because profitability is effectively nil there.

The commodity to be chosen is based on the differences between the start and destination economies rather than purely randomly chosen. This serves in needing FAR fewer looping attempts to create a reasonably profitable contract.
Both player.contractReputation and player.bounty were given an effect on which commodity is chosen. A max reputation trader shouldn't have to suffer very poor-paying contracts such as those with only 0.4 credits difference per economy change. A high bounty trader is probably not "trustworthy", but might be more suited for contraband cargo like narcotics.

The amount of cargo in a contract increases on average with higher reputation. This gives "bulk freighter" types slightly more purpose.
You are far more likely to get monster-sized contracts IF you have a ship with enough free cargo space (at the time it arrived in the system) to carry it. No need to reduce contract sizes if the player is in a mostly-empty Anaconda!

The deposit is the buying price for the contract and represents both the cost of the cargo at the starting point and a tiny "negotiations" cost associated with gaining the contract. I assume the cargo contracts represent requests for these bulk goods by some organization or group in the destination system as consumers, rather than resellers...therefore their "reward" is gaining bulk amounts of these goods to be used/consumed...which they seek to do as quickly, cheaply, and reliably as possible.

The lowest possible buying price for a cargo contract's commodity is the lowest price at which that item is ever sold at that system's main station, however if you have a rather negative reputation you will ALWAYS pay the maximum price for that item at that system's main station. If your reputation is barely above the starting point of 0, the cargo contract's commodity will still cost you at least the current price for that item...and is still likely to cost the maximum price for that item.
If you have a good reputation, the cargo contract's commodity max possible cost may be reduced to the current cost. At the very best reputation, you will always pay minimum cost for the commodity.
On top of that, the discount amount can force the commodity price to the minimum allowed value based on current reputation if the amount is large, the route is long, and/or you have a higher reputation. A high bounty reduces the discount amount.

The contract's selling price at the destination is tied to the destination's market price for that commodity. This means profit is absolutely marginal if the buying and selling systems only differ by 1 economic point, such as rich industrial to average industrial. The variable amount that does not depend on the economy is also changed based on discount and reputation at the time the cargo contract was created. A badly negative reputation always sells at minimum market price for that commodity. A high reputation always sells at maximum market price for that commodity.

To give this some numbers, computers are at their cheapest at a Rich Industrial system -- 61.6 credits minimum, 62.8 credits max...with only 62 and 62.4 credits being possible intermediate values. Assume current computer price is 62 credits. Computers are at their most expensive at a Poor Agricultural system -- 100.8 credits minimum, 102 credits maximum...with 101.2 and 101.6 credits being possible intermediate values.
A cargo contract for computers between these 2 locations would have to be from the Rich Industrial system to the Poor Agricultural system, because the other way is always unprofitable. Assuming the amount of computers is 100 TC...
If the trader has a very negative reputation (like -7 max), they would have to pay 62.8 credits for each TC of computers and would get 100.8 credits for each TC computer at delivery system. The buying price for the cargo contract would be 6280 credits (62.8 x 100) and the selling price at destination would be 10080 credits (100.8 x 100). Since the price is forced to max by the very negative reputation, the discount is always 0. The profit would be 3800 credits.
If the trader has the best possible reputation (+7 max), they would have to pay 61.6 credits for each TC of computers and would get 102 credits for each TC computer at delivery system. The buying price for the cargo contract would be 6160 credits (61.6 x 100) and the selling price at destination would be 10200 credits (102 x 100). Since the prices are already at minimum, the discount (which is likely 100%) does nothing. The profit would be 4040 credits.
Only 240 credits profit are "lost" (dropping from the best reputation to the worst) because computers have very little price variation per system.
This example represents almost the absolute best TC cargo contract - computers between best system combo.
If the starting system is an Average Industrial and the destination system is a Rich Agricultural, then the profit even with the best possible reputation is only 2240 credits and the deposit for the cargo would have increased to 6720 credits.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
The destination systems are chosen from a sampling of systems inside a limited LY radius (100 LY - 10 LY per reputation point, which can be >100 LY at negative rep.) from your current location rather than always any random system in the Galaxy Chart.
Someone with a great reputation should not need to take low-paying, extremely long ranged deliveries...it would be beneath them!
Even at max reputation, the distance is 30 LY and the actual route needed may be more than that due to voids you have to go around. I had a few that were 40-52 LY in Galaxy Chart 1 because of this.
Interesting. I'd have done it the other way around: make the long-range ones usually require a higher reputation, but significantly increase the distance component of profitability. (A full-range passenger contract, at top reputation, pays out about 30,000 credits for 5 TC of space ; a short-range one even at top reputation still only pays a few hundred - so you've got a definite incentive to seek out the longer ones)
Switeck wrote:
This example represents almost the absolute best TC cargo contract - computers between best system combo.
Furs? Narcotics?

Hmm... probably bounty shouldn't negatively affect contracts for illegal goods. (I'm not completely convinced it should for legal goods either, though)

One thing I'm considering for post-1.78 contracts is the idea from the Anaconda thread (I can't remember now whose it was) of not making cargo contracts use TC containers in the first place - instead just make the contract directly use hold space and be for some giant item that won't fit in a container. That would take away a lot of the messing around trying to stop the contracts being worth more on the open market (or the exploit of selling the goods, then buying some identical ones near the destination, to make your ship much bigger than it really is). They could then be priced directly to be interesting and balanced. Something for another time, perhaps.
User avatar
Cody
Sharp Shooter Spam Assassin
Sharp Shooter Spam Assassin
Posts: 16055
Joined: Sat Jul 04, 2009 9:31 pm
Location: The Lizard's Claw
Contact:

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Cody »

cim wrote:
One thing I'm considering for post-1.78 contracts is the idea from the Anaconda thread (I can't remember now whose it was) of not making cargo contracts use TC containers in the first place - instead just make the contract directly use hold space and be for some giant item that won't fit in a container.
That'll be DH's idea, I reckon... and a damn good idea it is too!
I would advise stilts for the quagmires, and camels for the snowy hills
And any survivors, their debts I will certainly pay. There's always a way!
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

cim wrote:
Interesting. I'd have done it the other way around: make the long-range ones usually require a higher reputation, but significantly increase the distance component of profitability.
Unlike passenger contracts, similar/identical bulk goods are available from MUCH closer sources. Crossing a Galaxy Chart represents a gigantic opportunity cost/loss that can only be partially replaced by a HUGE profit. I want to avoid stupid-huge profits in my design, so I reduce long-ranged contracts to compensate. 30 LY even at max reputation still represents a considerable ingame travel time complete with risks if passing through multiple low security systems.
cim wrote:
Switeck wrote:
This example represents almost the absolute best TC cargo contract - computers between best system combo.
Furs? Narcotics?
Furs have a highly variable price that at its worst can result in ZERO profits even going from the very best buying system (Poor Agri) to very best selling system (Rich Ind). As such they only tend to become very good cargo contracts at high reputation where you can pay a reduced rate closer to the minimum price.

Narcotics has the little problem of gaining a bounty when running them. While there are "easy" ways to mitigate this, this is still an opportunity cost that justifies the potentially high payout. They're still sucker bait.
cim wrote:
Hmm... probably bounty shouldn't negatively affect contracts for illegal goods. (I'm not completely convinced it should for legal goods either, though)
The effect of bounty on which commodity type is chosen as a contract is relatively minor if your bounty is <50 and your reputation is less than max. At max reputation, bounty has no effect.
The profit reduction as a result of an extremely high bounty is considerably less than being clean but having a negative reputation.

A high bounty cargo contract trader is at a greater risk of failure to deliver than a clean cargo contract trader, all other conditions held equal. Since the cargo is more likely to get lost along the way through ship combat/damage/destruction, the cost to get contracts should likewise go up.
cim wrote:
One thing I'm considering for post-1.78 contracts is the idea from the Anaconda thread (I can't remember now whose it was) of not making cargo contracts use TC containers in the first place - instead just make the contract directly use hold space and be for some giant item that won't fit in a container. That would take away a lot of the messing around trying to stop the contracts being worth more on the open market (or the exploit of selling the goods, then buying some identical ones near the destination, to make your ship much bigger than it really is). They could then be priced directly to be interesting and balanced. Something for another time, perhaps.
I did not do that and do not want that.
Standard goods bulk cargo contracts are a big reason for ever getting a freighter-type ship. Any additional penalties put on those contracts just serves to marginalize freighter-type ships.

I believe the TC cargo contracts my mod gives are a fair balance of difficulty, initial costs, and profit...and at least should be considered before removing standard goods bulk contracts from the game.
Bogatyr
Deadly
Deadly
Posts: 230
Joined: Sun Feb 24, 2013 11:52 am

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Bogatyr »

Switeck wrote:
cim wrote:
Interesting. I'd have done it the other way around: make the long-range ones usually require a higher reputation, but significantly increase the distance component of profitability.
Unlike passenger contracts, similar/identical bulk goods are available from MUCH closer sources. Crossing a Galaxy Chart represents a gigantic opportunity cost/loss that can only be partially replaced by a HUGE profit. I want to avoid stupid-huge profits in my design, so I reduce long-ranged contracts to compensate. 30 LY even at max reputation still represents a considerable ingame travel time complete with risks if passing through multiple low security systems.
cim wrote:
Switeck wrote:
This example represents almost the absolute best TC cargo contract - computers between best system combo.
Furs? Narcotics?
Furs have a highly variable price that at its worst can result in ZERO profits even going from the very best buying system (Poor Agri) to very best selling system (Rich Ind). As such they only tend to become very good cargo contracts at high reputation where you can pay a reduced rate closer to the minimum price.

Narcotics has the little problem of gaining a bounty when running them. While there are "easy" ways to mitigate this, this is still an opportunity cost that justifies the potentially high payout. They're still sucker bait.
cim wrote:
Hmm... probably bounty shouldn't negatively affect contracts for illegal goods. (I'm not completely convinced it should for legal goods either, though)
The effect of bounty on which commodity type is chosen as a contract is relatively minor if your bounty is <50 and your reputation is less than max. At max reputation, bounty has no effect.
The profit reduction as a result of an extremely high bounty is considerably less than being clean but having a negative reputation.

A high bounty cargo contract trader is at a greater risk of failure to deliver than a clean cargo contract trader, all other conditions held equal. Since the cargo is more likely to get lost along the way through ship combat/damage/destruction, the cost to get contracts should likewise go up.
cim wrote:
One thing I'm considering for post-1.78 contracts is the idea from the Anaconda thread (I can't remember now whose it was) of not making cargo contracts use TC containers in the first place - instead just make the contract directly use hold space and be for some giant item that won't fit in a container. That would take away a lot of the messing around trying to stop the contracts being worth more on the open market (or the exploit of selling the goods, then buying some identical ones near the destination, to make your ship much bigger than it really is). They could then be priced directly to be interesting and balanced. Something for another time, perhaps.
I did not do that and do not want that.
Standard goods bulk cargo contracts are a big reason for ever getting a freighter-type ship. Any additional penalties put on those contracts just serves to marginalize freighter-type ships.

I believe the TC cargo contracts my mod gives are a fair balance of difficulty, initial costs, and profit...and at least should be considered before removing standard goods bulk contracts from the game.
The nice (meaning, "fun!) thing about TC cargo contracts is you can sell off the items to make room for more contracts, and you have to scramble to make sure you buy back the original goods before reaching your destination.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
I believe the TC cargo contracts my mod gives are a fair balance of difficulty, initial costs, and profit...and at least should be considered before removing standard goods bulk contracts from the game.
Well, there's plenty of time for that OXP to get some testing, anyway. I'll give it a go next time I feel like a bit of freighter flying.
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

cim wrote:
Switeck wrote:
The player's contract reputation also seems to vary randomly -- a savegame I have with 0 reputation reports having 1-3 reputation after loading and/or jumping. It's like the variable isn't initializing correctly when I reload from savegame.
Expected, and has been this way for a long time. It's the "unknown" parts of the reputation sometimes being interpreted as "good". The function gives the current perceived reputation as a single number, not the contents of the good/bad/unknown array, so...
I was totally unable to force the cargo reputation below -3, despite constantly failing 7 or more contracts with every jump.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
I was totally unable to force the cargo reputation below -3, despite constantly failing 7 or more contracts with every jump.
Okay, that's less expected. I'll investigate further.
Switeck
---- E L I T E ----
---- E L I T E ----
Posts: 2412
Joined: Mon May 31, 2010 11:11 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by Switeck »

The contracts list also seems slow when first viewing it...it can take >3 seconds before I can even move the highlighted contract up/down. This is after the text appears rather than taking >3 seconds for the text to appear. It's like there's a brutal background calculation loop that it has to crunch through many times before giving me GUI control again.

In the next release of my contract mod, I am reducing absolute max amounts for Gold/Plat/Gem to better balance them. Currently, I'm using about 1/3 to 1/2 the original values...so roughly 4,500 kg of Gold or Platinum and roughly 12,000 g of Gem-Stones.
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: Cargo Contracts are buggy in Oolite v1.77!

Post by cim »

Switeck wrote:
I was totally unable to force the cargo reputation below -3, despite constantly failing 7 or more contracts with every jump.
Fixed in r5647. Thanks for spotting that.
Switeck wrote:
The contracts list also seems slow when first viewing it...it can take >3 seconds before I can even move the highlighted contract up/down. This is after the text appears rather than taking >3 seconds for the text to appear. It's like there's a brutal background calculation loop that it has to crunch through many times before giving me GUI control again.
That's odd. I could understand a delay for the text to appear, but moving up and down should be as fast as any other mission screen.
Post Reply