diff --git a/src/markets/gingering.js b/src/markets/gingering.js index c8308dcbda2f8e52c463d6f12bf1841f223818a2..cb83e9d00ea42441132f81b64b7b528ff194dadf 100644 --- a/src/markets/gingering.js +++ b/src/markets/gingering.js @@ -2,8 +2,9 @@ App.Entity.GingeringParameters = class { /** Get gingering parameters for a particular slave and market. * @param {App.Entity.SlaveState} slave * @param {FC.Zeroable<FC.SlaveMarketName>} market + * @param {number} [arcIndex] - arcology index if market is "neighbor" */ - constructor(slave, market) { + constructor(slave, market, arcIndex) { /** @type {FC.Gingering} */ this.type = 0; /** @type {FC.GingeringDetection} */ @@ -13,7 +14,13 @@ App.Entity.GingeringParameters = class { // figure out what type of gingering applies, if any if (applyLawCheck(market) === 1 && V.policies.SMR.honestySMR === 1) { - /* SMR prohibits gingering and is enforced for this slave - do nothing */ + /* SMR prohibits gingering and is enforced for this seller - do nothing */ + } else if (App.Data.misc.schools.keys().includes(market)) { + /* slave schools have a reputation to maintain, and will never ginger their slaves */ + } else if (["wetware", "heap", "gangs and smugglers", "low tier criminals", "military prison", "white collar", "corporate"].includes(market)) { + /* these sellers see no reason to ginger their slaves */ + } else if (market === "neighbor" && App.Neighbor.opinion(V.arcologies[0], V.arcologies[arcIndex]) >= 50) { + /* socially-aligned neighbors will not try to cheat you */ } else if (slave.indenture > 0) { /* indentured servants cannot be gingered */ } else if (isShelterSlave(slave)) { @@ -89,10 +96,11 @@ globalThis._makeGingeredSlaveHandler = function(gParams, gKeys) { /** Get a gingered proxy for a slave. * @param {App.Entity.SlaveState} slave * @param {FC.Zeroable<FC.SlaveMarketName>} market + * @param {number} arcIndex - arcology number if market is "neighbor" * @returns {FC.GingeredSlave} * */ -globalThis.getGingeredSlave = function(slave, market) { - const gingering = new App.Entity.GingeringParameters(slave, market); +globalThis.getGingeredSlave = function(slave, market, arcIndex) { + const gingering = new App.Entity.GingeringParameters(slave, market, arcIndex); /** @type {Map<string, string|number>} */ const gingeredKeys = new Map(); diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js index 8b86473926afa5495f7f6810ae285870afd1ae06..e17dfc3eb6112c8898bb93f0fd1703987516b0a6 100644 --- a/src/npc/generate/generateMarketSlave.js +++ b/src/npc/generate/generateMarketSlave.js @@ -3200,5 +3200,5 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1 break; } } - return {text: r, slave: getGingeredSlave(slave, market)}; + return {text: r, slave: getGingeredSlave(slave, market, numArcology)}; };