Milo wrote: ↑Sun Jul 12, 2020 6:12 pm
I'm looking at it compared to other methods of earning credits. From that perspective, 4200 credits is a large profit. Rich industrial markets have computers at an average price of 62.1 cr, and poor agricultural markets have computers at an average price of 101.3. That is a 39.2 price difference. So you would need to trade around 107t of computers to match that 4200 salvage profit. Trading also decreases your service level with each witchspace jump, which eventually leads to maintenance expenses, whereas you can stay in the same system all day long fighting pirates and salvaging their ships without any service level reduction. While there can be other costs associated with salvage, such as repairing damage or replacing missiles, it's quite possible to win battles without taking any damage or using any missiles.
So you have to have a ship with a big cargo bay to be able to get big profits trading - I think that's how it should be, it's close to reality: scale matters. And IMHO the market capacity of the main stations is too low for free-trading (that is, without contracts - I haven't been there to know how profitable cargo contracts can be) to be really profitable even with a big cargo ship.
Salvaging (as a career) is only really worthwhile in "interesting" systems (unless it's piracy and not salvaging), and there you can't avoid combat and it's not survivable without an Ironass ship, and even then you will have a pretty big repair bill often (missiles don't enter into it, if you are into salvaging you don't use missiles - they seldom leave a derelict behind).
Someone starting at it with a non-Ironass wouldn't get huge profits until they get that Ironass (and soon after that money looses its meaning, as it probably does in every career once you have the right setup and skills - I think most of the fun is in discovering the right setup and developing the skills): if they face the kind of foe that would bring in a huge salvage fee, they would do better running...
And while you can get NPC-created derelicts, they aren't common, and the places you can find them reliably (after quite a bit of searching even so) are dangerous places, where someone that doesn't want combat will have to run a lot (and get those huge repair bills quite often).
To get the Ironass NPC derelict that brings those multiple-K Cr in salvaging fees should be rare (jackpot!) for those that need money - they already aren't that common, but they could be rarer by not awarding expensive equipment that does nothing to the combat balance, specially if there is a cheaper alternative (more on that later)
You don't actually get internal damage at every witchspace jump, it comes in bigger damages every 8 or so jumps - that's something I would like to change, make the damage small, somewhat exponential to the service level (the poorer the greater the damage) and linear to the jump length (in LY, not time) so people in a hurry have to think about it, but happening at _every_ jump, and let the big damage to OXPs.
Milo wrote: ↑Sun Jul 12, 2020 6:12 pm
I don't think we should lower prices of OXP equipment or reduce the frequency of NPC ships having them. It's fine for them to have high prices; it gives a reason to earn more credits!
I do think there are some equipment too overpriced (ShieldEqualizer, ShieldCycler Manual Configurator Advanced), but that's for the OXP's authors to decide... and us to use or not
Milo wrote: ↑Sun Jul 12, 2020 6:12 pm The frequency of NPC ships having OXP equipment should be a combat balance consideration first and an economic consideration as a distant second (it's only an economic factor at all because of Towbar).
Most of the OXP equipment we are talking about don't do anything in a NPC ship, their code are worldScripts. The NPCs having them or not doesn't affect combat balance.
ShieldEqualizer and ShieldCapacitors are player only (I tweaked a version into working with NPCs though)
ShieldCycler (with NShields) should work on NPCs, but doesn't most of the time (too many bugs in both, I have tweaked versions to make them work)
ShieldBooster and Naval ShieldBooster work most of the time for NPCs (with NShields, but if I recall correctly there were some bugs affecting it in some cases, but it might have been in the awarding code, not in the setup and damage handling code - though I would like to know the reason for using EQ_* strings different from the player version)
Right now the only thing most of those expensive equipment do in NPCs is make their salvage value go up.
(I would like to update those OXPs with my NPC enabling code - already asked about ShieldCycler maintenance status, have still to ask about ShieldEqualizer+Capacitos and N-Shields, they all have to be updated for it to work - but there is still the problem of removing the old manifests from oolite.org...)
Milo wrote: ↑Sun Jul 12, 2020 6:12 pm
Since equipment is only part of the salvage value, and the total value is competing with other methods of earning credits, that argues for making Towbar pay even less for equipment. I do not think that salvage should be much more profitable than trading, which is where we are now. Keep in mind that most derelict ships are one military laser shot away from wreckage; they are very heavily damaged. I think this makes it possible to rationalize that the value of the equipment isn't much higher than scrap.
I think there is room for balance improvement, but the profitability should be compared on similar levels of gear investment/adequacy + skills: if you want to compare the earnings of a hunter/salvager able to bag those Ironasses NPCs (that come in groups of 4 to 12, and in the more "interesting" hunting grounds the large number is more common) you have to compare to someone with a big trader (400+ TCs: Anaconda, DTT Atlas, DTT Cyclops), not a Cobra Mark III (and I would like bigger market capacity for some commodities in some stations for those big cargo bays to make more of a difference)
Salvaging takes quite a bit of time: you have to move all those derelicts to some station, and it takes around half an hour for each with Towbar only (EscortDeck makes it a bit easier, if you have a big enough ship to have the wide deck). Often the main station is so far away, the way there so dangerous, that it's better to tow to another station and pay the 50% tax even in an Anarchy system.
But I would like to see NPC equipment getting damaged with the same mechanism as player equipment, that would make deciding equipment status for pricing depend on what actually happened to the ship and not a random and our guesses about probabilities.
Milo wrote: ↑Sun Jul 12, 2020 6:12 pm
To clarify, my suggested formula of x/(5 * ln(x)) was not using x as price, but using x as the current Towbar-computed value, which is already adjusted. If Towbar today would pay 15k cr for certain equipment, with my proposed change it would instead pay 311 cr for the same equipment.
We will have to agree on disagreeing...
What I propose to Norby, if he thinks those considerations on game balance have merit, is to factor out the code that calculates the salvaged equipment price into a function, and anyone could write an OXP that overwrites that function (provided that all those Payout alternatives OXPs are marked incompatible with each other), and several pricing policies could be implemented and swapped just by changing the overwriting OXP (In terms of game balance, the player should choose... give him a challenging but manageable default and options to harden or soften it)
Something like this...
In towbar.js:
Code: Select all
this.$Towbar_Payout = function(ship) { //pay reward for the salvaged ship
var r = worldScripts.towbar;
<...>
var eq = ship.equipment; //local variable, faster
var d = "";
var eqs = 0;
var hiddeneq = 0;
var hiddeneqcr = 0;
var lasthiddeneqcr = 0;
var lasthiddeneqname = "";
var maxeq = 5; // 5 equipment line can fit into the main part of the screen
while( eq[++i] ) {
if( eq[i] && eq[i].equipmentKey != "EQ_MILITARY_JAMMER") { //skip MASCM due to not fit into one line
if( r.$TowbarDebug )
log("Towbar", ship.displayName+" "+
ship.entityPersonality+" "+(i+1)+". "+eq[i].name);
d = "";
var cr = this.$Towbar_EqSalvagePrice(eq[i]); //<======================
player.credits += cr;
tc += cr;
if( cr > 0 ) { // exclude 0 to fit into the screen with ShipVersion OXP
if( eqs < maxeq ) {
if(cr > 0) msg2 += "\nYou get "+cr+" credits for"
+d+" "+eq[i].name+".";
eqs++; //listed eqs only
} else { //hidden eq
hiddeneq++;
hiddeneqcr += cr;
lasthiddeneqcr = cr;
lasthiddeneqname = eq[i].name;
}
}
}
}
<...>
}
this.$Towbar_EqSalvagePrice = function(eqInfo) {
var p = eqInfo.price * 0.04; //max. 40% of the original cost in credits (not in credits*10)
var rnd = Math.random();
var cr;
if( p > 300 ) {
// rnd = rnd * ( 300 / p ); //costly eqs always damaged - removed, already cheap
cr = Math.round(Math.max(50, Math.round( p * rnd ))/10)*10; //but at least 50cr
} else cr = Math.round(Math.max(10, Math.round( p * rnd ))/10)*10; //at least 10cr
// if( rnd < 0.5 ) d = " the damaged";
return cr;
}
And suggest to change the equipment awarding in ShipVersion to award ShieldCycler (right now it doesn't, the Shield Cycler you see in NPCs was awarded by N-Shields)...
In shipversion.js:
Code: Select all
this.shipSpawned = function(ship) { //do not give version numbers to cargo, etc.
<...>
/*** begin dybal ***/
//if( !small && worldScripts["hardships"] ) {
if( !small && wsHardShips ) {
/*** end dybal ***/
ship.awardEquipment("EQ_ADDITIONAL_AFT_ARMOUR");
if(ship.equipmentStatus("EQ_EEG")!="EQUIPMENT_OK") ship.awardEquipment("EQ_EEG");
ship.awardEquipment("EQ_ESG"); //requires EEG
}
if (worldScripts["Shield Cycler"] && Math.random() < 0.7 && ship.equipmentStatus("EQ_SC_SHIELD_CYCLER_INTERNAL") !== "EQUIPMENT_OK" )
ship.awardEquipment("EQ_SC_SHIELD_CYCLER_BASIC");
if( worldScripts["shieldequalizercapacitors"] ) {
if (ship.equipmentStatus("EQ_SC_SHIELD_CYCLER_INTERNAL") !== "EQUIPMENT_OK")
// don't award Shield Equalizer if the ship already has Shield Cycler
if (Math.random() < 0.10) ship.awardEquipment("EQ_SHIELD_EQUALIZER");
if( !small ) {
ship.awardEquipment("EQ_FORWARD_SHIELD_CAPACITOR");
ship.awardEquipment("EQ_AFT_SHIELD_CAPACITOR");
}
}