From 6aba7bd22b5bd5f55ff33b292bd0d6c384b56a7f Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sat, 15 May 2021 18:16:08 -0700
Subject: [PATCH] More markets choose not to ginger their slaves

---
 src/markets/gingering.js                | 16 ++++++++++++----
 src/npc/generate/generateMarketSlave.js |  2 +-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/markets/gingering.js b/src/markets/gingering.js
index c8308dcbda2..cb83e9d00ea 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 8b86473926a..e17dfc3eb61 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)};
 };
-- 
GitLab