diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index 53940a11848e2f1907ce608b94dedb0f5bfba076..a47385c30c8f561452834f55b0fb457e87567158 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -2060,12 +2060,12 @@ App.Data.misc = {
 	{
 		name: "Hijab and blouse",
 		value: "a hijab and blouse",
-		get rs() { return (V.boughtItem.clothing.conservative || V.continent === "the Middle East"); }
+		get rs() { return (V.boughtItem.clothing.conservative === 1 || V.continent === "the Middle East"); }
 	},
 	{
 		name: "Burkini",
 		value: "a burkini",
-		get rs() { return V.boughtItem.clothing.swimwear === 1 && (V.boughtItem.clothing.swimwear || V.continent === "the Middle East"); }
+		get rs() { return V.boughtItem.clothing.swimwear === 1 && (V.boughtItem.clothing.swimwear === 1 || V.continent === "the Middle East"); }
 	},
 	{name: "Santa dress", value: "a Santa dress", get rs() { return V.boughtItem.clothing.costume === 1; }},
 
@@ -2117,22 +2117,22 @@ App.Data.misc = {
 	{
 		name: "Leather pants and pasties",
 		value: "leather pants and pasties",
-		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual; }
+		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual === 1; }
 	},
 	{
 		name: "T-shirt and thong",
 		value: "a t-shirt and thong",
-		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual; }
+		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual === 1; }
 	},
 	{
 		name: "Tube top and thong",
 		value: "a tube top and thong",
-		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual; }
+		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual === 1; }
 	},
 	{
 		name: "Oversized t-shirt and boyshorts",
 		value: "an oversized t-shirt and boyshorts",
-		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual; }
+		get rs() { return V.boughtItem.clothing.underwear === 1 &&  V.boughtItem.clothing.casual === 1; }
 	},
 	{name: "Sport shorts and a sports bra", value: "sport shorts and a sports bra", get rs() { return V.boughtItem.clothing.sports === 1; }},
 	{name: "Sport shorts", value: "sport shorts", get rs() { return V.boughtItem.clothing.sports === 1; }},
@@ -2140,7 +2140,7 @@ App.Data.misc = {
 	{
 		name: "Sport shorts and a t-shirt",
 		value: "sport shorts and a t-shirt",
-		get rs() { return V.boughtItem.clothing.sports === 1 &&  V.boughtItem.clothing.casual; }
+		get rs() { return V.boughtItem.clothing.sports === 1 &&  V.boughtItem.clothing.casual === 1; }
 	},
 	{name: "Pony outfit (nice)", value: "a nice pony outfit", get rs() { return V.boughtItem.clothing.pony === 1; }},
 	{name: "Pony outfit (slutty)", value: "a slutty pony outfit", get rs() { return V.boughtItem.clothing.pony === 1; }},
diff --git a/src/endWeek/saRivalries.js b/src/endWeek/saRivalries.js
new file mode 100644
index 0000000000000000000000000000000000000000..fcf40a354d06cd7fec019080623a9d459a998d30
--- /dev/null
+++ b/src/endWeek/saRivalries.js
@@ -0,0 +1,367 @@
+App.SlaveAssignment.rivalries = (function() {
+	"use strict";
+
+	let r;
+
+	// eslint-disable-next-line no-unused-vars
+	let he, him, his, hers, himself, girl, loli, He, His;
+
+	let rival;
+	let slavesLength;
+
+	return saRivalries;
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string}
+	 */
+	function saRivalries(slave) {
+		r = [];
+		slavesLength = V.slaves.length;
+
+		({
+			// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, girl, He, His, loli
+		} = getPronouns(slave));
+
+		if (slave.rivalry === 0) {
+			if (slave.fuckdoll === 0 && slave.fetish !== "mindbroken") {
+				if (isSlaveAvailable(slave) && slave.assignment !== window.Job.CONFINEMENT) {
+					if (slave.devotion < jsRandom(20, 100) && slave.trust > jsRandom(-100, -20)) {
+						generateRivalry(slave);
+					}
+				}
+			}
+		} else {
+			existingRivalry(slave);
+		}
+		if (slave.rivalry) {
+			rivalryValidation(slave);
+		}
+
+		return r.join(" ");
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 *
+	 */
+	function generateRivalry(slave) {
+		let foundRival = 0;
+		const slavesLength = V.slaves.length;
+
+		for (let sar = 0; sar < slavesLength; sar++) {
+			if (V.slaves[sar].ID !== slave.ID && V.slaves[sar].rivalry === 0 && V.slaves[sar].ID !== slave.relationshipTarget) {
+				if (V.slaves[sar].fetish !== "mindbroken" && V.slaves[sar].fuckdoll === 0) {
+					if (V.slaves[sar].devotion < jsRandom(20, 100) && V.slaves[sar].trust > jsRandom(-100, -20)) {
+						if (V.slaves[sar].origBodyOwnerID === slave.ID && V.slaves[sar].devotion > 0 && slave.devotion < -30) {
+							r.push(`${slave.slaveName} loathes that ${SlaveFullName(V.slaves[sar])} is using <span class="em">${his}</span> body to benefit you and makes it abundantly clear every chance ${he} gets. <span class="rivalry inc">They start to dislike each other.</span>`);
+							foundRival = 1;
+						}
+						if (foundRival !== 1 && slave.behavioralFlaw !== "none") {
+							switch (slave.behavioralFlaw) {
+								case "arrogant":
+									if (V.slaves[sar].intelligence > slave.intelligence+slave.intelligenceImplant) {
+										r.push(`${slave.slaveName} is an arrogant bitch, and ${SlaveFullName(V.slaves[sar])} is authentically smarter than ${he} is, which of course ${he} cannot stand. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "bitchy":
+									if (V.slaves[sar].behavioralFlaw === "odd") {
+										r.push(`${slave.slaveName} is a bit of a bitch, and poor odd ${SlaveFullName(V.slaves[sar])} is a convenient target for ${his} bullying. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "odd":
+									if (V.slaves[sar].behavioralFlaw === "bitchy") {
+										r.push(`${slave.slaveName} is rather strange. ${SlaveFullName(V.slaves[sar])}, who is kind of a bitch, frequently bullies ${him} about it. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "hates men":
+									if (V.slaves[sar].attrXX > 35) {
+										 if (V.slaves[sar].faceShape === "masculine" || V.slaves[sar].faceShape === "androgynous" ) {
+											 if (V.slaves[sar].muscles > 10) {
+												 if (V.slaves[sar].vagina > -1) {
+													r.push(`${slave.slaveName} hates men, and poor butch ${SlaveFullName(V.slaves[sar])} really gets to ${him}, despite having a pussy and everything. <span class="rivalry inc">They start to dislike each other.</span>`);
+													foundRival = 1;
+												} else {
+													r.push(`${slave.slaveName} hates men, and poor masculine ${SlaveFullName(V.slaves[sar])} really gets to ${him}. <span class="rivalry inc">They start to dislike each other.</span>`);
+													foundRival = 1;
+												}
+											}
+										}
+									}
+									break;
+								case "hates women":
+									if (V.slaves[sar].attrXY > 35) {
+										if (V.slaves[sar].faceShape !== "masculine") {
+											if (V.slaves[sar].muscles <= 30) {
+												if (V.slaves[sar].vagina > -1) {
+													r.push(`${slave.slaveName} hates women, and something about the feminine ${SlaveFullName(V.slaves[sar])} really gets to ${him}. <span class="rivalry inc">They start to dislike each other.</span>`);
+													foundRival = 1;
+												} else {
+													r.push(`${slave.slaveName} hates women, and something about the girly ${SlaveFullName(V.slaves[sar])} really gets to ${him}, despite poor V.slaves[sar].slaveName not being perfectly female at all. <span class="rivalry inc">They start to dislike each other.</span>`);
+													foundRival = 1;
+												}
+											}
+										}
+									}
+									break;
+								case "gluttonous":
+									if (V.slaves[sar].behavioralFlaw === "anorexic") {
+										r.push(`${slave.slaveName}, who loves food, can't stand ${SlaveFullName(V.slaves[sar])}'s prissy anorexia. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									} else if (V.slaves[sar].weight < -30) {
+										r.push(`${slave.slaveName}, who loves food, can't stand ${SlaveFullName(V.slaves[sar])}'s severe emaciation. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "anorexic":
+									if (V.slaves[sar].behavioralFlaw === "gluttonous") {
+										r.push(`${slave.slaveName}, an anorexic, can't stand ${SlaveFullName(V.slaves[sar])}'s disgusting gluttony. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									} else if (V.slaves[sar].weight > 95) {
+										r.push(`${slave.slaveName}, an anorexic, can't stand ${SlaveFullName(V.slaves[sar])}'s immense girth. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "devout":
+									if (V.slaves[sar].behavioralFlaw === "liberated") {
+										r.push(`${slave.slaveName}, who is devout and might be considered rather conservative if ${he} were free, can't stand ${SlaveFullName(V.slaves[sar])}'s revolting gender liberation. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+								case "liberated":
+									if (V.slaves[sar].behavioralFlaw === "devout") {
+										r.push(`${slave.slaveName}, who is liberated and might be considered rather liberal if ${he} were free, can't stand ${SlaveFullName(V.slaves[sar])}'s bigoted religious faith. <span class="rivalry inc">They start to dislike each other.</span>`);
+										foundRival = 1;
+									}
+									break;
+							}
+						}
+						if (foundRival !== 1 && V.slaves[sar].assignment === slave.assignment) {
+							if (jsRandom(0, 1) === 1) {
+								r.push(`${slave.slaveName} and ${SlaveFullName(V.slaves[sar])} see too much of each other while they`);
+								switch (V.slaves[sar].assignment) {
+									case window.Job.HOUSE:
+									case window.Job.QUARTER:
+										r.push(`work as servants`);
+										break;
+									case window.Job.SUBORDINATE:
+										r.push(`prepare to serve your other slaves`);
+										break;
+									case window.Job.GLORYHOLE:
+										r.push(`work nearby glory holes`);
+										break;
+									case window.Job.CELLBLOCK:
+										r.push(`are confined in nearby cells`);
+										break;
+									case window.Job.FUCKTOY:
+										r.push(`wait for you to use them`);
+										break;
+									default:
+										r.push(`${V.slaves[sar].assignment}`);
+								}
+								r.push(`and <span class="rivalry inc">start to dislike each other.</span>`);
+								foundRival = 1;
+							}
+						}
+						if (foundRival === 1) {
+							// needed to break the loop if the case statement picked a rival.
+							// might as well use it to condense all the rival sets too.
+							slave.rivalry = 1;
+							slave.rivalryTarget = V.slaves[sar].ID;
+							V.slaves[sar].rivalry = 1;
+							V.slaves[sar].rivalryTarget = slave.ID;
+							break;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 *
+	 */
+	function existingRivalry(slave) {
+		rival = getSlave(slave.rivalryTarget);
+		let incRivalry = 0;
+		let decRivalry = 0;
+		let reconciled = 0;
+		let worsenedRivalry = 0;
+		let lightenedRivalry = 0;
+		let lustyFix = 0;
+		let roll = jsRandom(0, 100);
+
+		if (rival === undefined) {
+			r.push(`<span class="red">Error, rivalryTarget not found.</span>`);
+		} else {
+			if (slave.fuckdoll) {
+				r.push(`${slave.slaveName} is a living sex toy, not a person, it <span class="rivalry dec">can't really maintain any meaningful rivalry</span> with ${SlaveFullName(rival)}.`);
+				reconciled = 1;
+			} else if (slave.fetish === "mindbroken") {
+				r.push(`Since ${slave.slaveName} is mindbroken, ${he} <span class="rivalry dec">can't really maintain any meaningful rivalry</span> with ${SlaveFullName(rival)}.`);
+				reconciled = 1;
+			} else if (rival.ID === slave.relationshipTarget && slave.relationship > 3) {
+				r.push(`Since ${slave.slaveName} and ${slave.slaveName} are in a commited sexual relationship, they <span class="rivalry dec">can't really maintain any meaningful rivalry;</span> most disputes just end in a quick hatefucking.`);
+				reconciled = 1;
+			} else {
+				if (slave.need) {
+					if (V.universalRulesConsent === 0) {
+						if (App.Utils.sexAllowed(slave, rival)) {
+							if (slave.fetishKnown) {
+								if (slave.fetish === "sadist") {
+									r.push(`${slave.slaveName} is horny and sadistic, so ${he} rapes ${his} rival ${SlaveFullName(rival)}} every chance ${he} gets; this <span class="devotion inc">thrills</span> ${slave.slaveName}, but ${rival.slaveName} is <span class="trust dec">frightened</span> that you let it happen.`);
+									slave.need = 0;
+									slave.devotion += 3;
+									rival.trust -= 3;
+									if (slave.rivalry < 3) {
+										r.push(`Of course, this <span class="rival inc">worsens their rivalry.</span>`);
+										incRivalry = 1;
+										worsenedRivalry = 1;
+									}
+									SimpleSlaveSlaveFucking(rival, slave, 5);
+								} else if (slave.fetish === "dom") {
+									r.push(`${slave.slaveName} is horny and dominant, so ${he} forces ${his} rival ${SlaveFullName(rival)} to submit to ${him} whenever ${he} can; this <span class="devotion inc">thoroughly satisfies</span> ${slave.slaveName}, but ${rival.slaveName} is <span class="devotion dec">angered</span> that you let it happen.`);
+									slave.need = 0;
+									slave.devotion += 3;
+									rival.devotion -= 3;
+									 if (slave.rivalry < 3) {
+										r.push(`Of course, this <span class="rival inc">worsens their rivalry.</span>`);
+										incRivalry = 1;
+										worsenedRivalry = 1;
+									}
+									SimpleSlaveSlaveFucking(rival, slave, 5);
+								}
+							}
+						}
+					}
+				}
+				if (worsenedRivalry !== 1) {
+					 if (roll > 50) {
+						 if (rival.fetish === slave.fetish) {
+							r.push(`${slave.slaveName} and ${SlaveFullName(rival)} share sexual interests, and in the sexual atmosphere of the arcology, it's <span class="rival dec">difficult for them to keep up their dislike</span> of one another with the mutual attraction.`);
+							decRivalry = 1;
+							lightenedRivalry = 1;
+						}
+						if (roll > 80 && slave.rivalry > 0) {
+							if (rival.trust < -20) {
+								if (slave.trust < -20) {
+									r.push(`Since both ${slave.slaveName} and ${SlaveFullName(rival)} are terrified of you, they work together to <span class="rival dec">get over their feud,</span> since it brings punishment on both of them.`);
+									decRivalry = 1;
+									lightenedRivalry = 1;
+								}
+							}
+							if (rival.devotion > 50) {
+								if (slave.devotion > 50) {
+									r.push(`Since both ${slave.slaveName} and ${SlaveFullName(rival)} are devoted to you, they work together to <span class="rival dec">get over their feud,</span> since it gets in the way of their duties.`);
+									decRivalry = 1;
+									lightenedRivalry = 1;
+								}
+							}
+							if (roll > 90 && slave.rivalry > 0) {
+								if (slave.energy > 95) {
+									r.push(`${slave.slaveName} lusts after ${SlaveFullName(rival)}, and does everything ${he} can to <span class="rival dec">patch up their differences.</span>`);
+									decRivalry = 1;
+									lightenedRivalry = 1;
+									lustyFix = 1;
+								}
+								if (lustyFix !== 1) {
+									if (slave.attrXX > 85) {
+										if (rival.vagina > -1 || rival.faceShape !== "masculine") {
+											r.push(`${slave.slaveName} lusts after ${SlaveFullName(rival)}, and does everything ${he} can to <span class="rival dec">patch up their differences.</span>`);
+											decRivalry = 1;
+											lightenedRivalry = 1;
+											lustyFix = 1;
+										}
+									}
+								}
+								if (lustyFix !== 1) {
+									if (slave.attrXY > 85) {
+										if (canAchieveErection(rival) || rival.faceShape === "masculine") {
+											r.push(`${slave.slaveName} lusts after ${SlaveFullName(rival)}, and does everything ${he} can to <span class="rival dec">patch up their differences.</span>`);
+											decRivalry = 1;
+											lightenedRivalry = 1;
+											lustyFix = 1;
+										}
+									}
+								}
+								if (lustyFix !== 1) {
+									if (rival.assignment !== slave.assignment) {
+										if (slave.subTarget !== rival.ID && rival.subTarget !== slave.ID) {
+											r.push(`With time apart ${slave.slaveName} and ${SlaveFullName(rival)} <span class="rival dec">dislike each other less.</span>`);
+											decRivalry = 1;
+											lightenedRivalry = 1;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+				if (areRelated(slave, rival)) {
+					if (roll > 70 && slave.rivalry < 3 && lightenedRivalry !== 1) {
+						r.push(`${slave.slaveName} and ${SlaveFullName(rival)} <span class="rival inc">pursue their family rivalry.</span>`);
+						incRivalry = 1;
+						worsenedRivalry = 1;
+					} else if (roll > 40 && slave.rivalry > 0 && worsenedRivalry !== 1) {
+						r.push(`${slave.slaveName} and ${SlaveFullName(rival)} <span class="rival dec">patch up their family relationship.</span>`);
+						decRivalry = 1;
+						lightenedRivalry = 1;
+					}
+				}
+				if (rival.origBodyOwnerID === slave.ID && lightenedRivalry !== 1) {
+					if (slave.rivalry < 3) {
+						r.push(`${slave.slaveName} <span class="rival inc">refuses to accept ${SlaveFullName(rival)}'s control of ${his} former body,</span> worsening their rivalry.`);
+						incRivalry = 1;
+					}
+				} else if (roll > (slave.devotion - slave.trust + 10) && lightenedRivalry !== 1) {
+					if (slave.rivalry < 3) {
+						r.push(`${slave.slaveName} <span class="rival inc">bickers with ${SlaveFullName(rival)}</span> whenever ${he} can, worsening their rivalry.`);
+						incRivalry = 1;
+					}
+				} else if (roll < (slave.devotion - slave.trust - 10) && slave.rivalry > 0 && worsenedRivalry !== 1) {
+					r.push(`${slave.slaveName} does ${his} best to be nice to ${SlaveFullName(rival)}, and manages to <span class="rival dec">de-escalate their little feud.</span>`);
+					decRivalry = 1;
+				}
+			}
+
+			if (incRivalry !== 0) {
+				rival.rivalry++;
+				slave.rivalry++;
+			} else if (decRivalry !== 0) {
+				rival.rivalry--;
+				slave.rivalry--;
+				if (slave.rivalry === 0) {
+					rival.rivalryTarget = 0;
+					slave.rivalryTarget = 0;
+				}
+			} else if (reconciled !== 0) {
+				rival.rivalry = 0;
+				rival.rivalryTarget = 0;
+				slave.rivalry = 0;
+				slave.rivalryTarget = 0;
+			}
+		}
+	}
+
+
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 *
+	 */
+	function rivalryValidation(slave) {
+		// This will be obsoleted with multiple rivals system
+		rival = getSlave(slave.rivalryTarget);
+		if (rival !== undefined && slave.ID !== rival.rivalryTarget) {
+			rival.rivalry = 0;
+			rival.rivalryTarget = 0;
+			slave.rivalry = 0;
+			slave.rivalryTarget = 0;
+		}
+	}
+})();
diff --git a/src/endWeek/standardSlaveReport.js b/src/endWeek/standardSlaveReport.js
index 4f9a4640488cbeff69805508cbc04eae11aaf2f8..ba1e5c9f6c7976d283544188a25faec52d5e8d56 100644
--- a/src/endWeek/standardSlaveReport.js
+++ b/src/endWeek/standardSlaveReport.js
@@ -16,7 +16,7 @@ App.SlaveAssignment.standardSlaveReport = function(slave, silent=false) {
 		ltEffects = App.UI.DOM.renderPassage("SA long term effects"),
 		drugs = App.SlaveAssignment.drugs(slave),
 		relationships = App.UI.DOM.renderPassage("SA relationships"),
-		rivalries = App.UI.DOM.renderPassage("SA rivalries"),
+		rivalries = App.SlaveAssignment.rivalries(slave),
 		devotion = App.UI.DOM.renderPassage("SA devotion");
 
 	if (!silent) {
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index 7ead21f2bce81291db6accf86c6e61e7e4b24040..044139009a3433d6a5d7cd8594ea80513be4eec8 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -109,14 +109,14 @@ globalThis.isItemAccessible = (function() {
 			}
 		}
 		if (item.hasOwnProperty("fs")) {
-			if (!(V.arcologies[0][item.fs] > 0)) {
-				return false;
+			if (V.arcologies[0][item.fs] > 0) {
+				return true;
 			}
 		}
 		if (slaveResults) { // If we still haven't returned true or false, then we display why this particular slave can't use the item.
 			return slaveResults;
 		}
-		return true;
+		return false;
 	}
 
 	/**
diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw
index 4576559bd172e8ee1ab3d522ab37e04a2912476e..8d16a4b2fd44c19c45ce8c53b7703329d0d454d1 100644
--- a/src/uncategorized/arcadeReport.tw
+++ b/src/uncategorized/arcadeReport.tw
@@ -143,7 +143,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_slave)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -152,7 +152,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_slave)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index a9240a9f865929f19896f5e2ef1bb872d2e20193..ee1ca79f3a1fa8c940b0c7f6b380a2c6364c981d 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -196,7 +196,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_S.Madam)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_S.Madam)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -207,7 +207,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_S.Madam)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_S.Madam)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
@@ -286,7 +286,7 @@
 			<<include "SA long term effects">>
 			<<= App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<= App.SlaveAssignment.rivalries(_slave)>>
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
@@ -298,7 +298,7 @@
 			<<include "SA long term effects">>
 			<<run App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<run App.SlaveAssignment.rivalries(_slave)>>
 			<<include "SA devotion">>
 			<</silently>>
 		<</if>>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index 916daa994d7fad734afde3ad7f0ce5a399a10743..2faaf4c034c23044eb5aea051571aa24f591cc4e 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -140,7 +140,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs($slaves[$i])>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries($slaves[$i])>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -151,7 +151,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs($slaves[$i])>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries($slaves[$i])>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
@@ -261,7 +261,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_slave)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -272,7 +272,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_slave)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index 992cf4724f104c62b3a29c698343e97922f92d2b..f001183f31f8263213dfac903fbf3e4a88da448f 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -121,7 +121,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_S.DJ)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_S.DJ)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -132,7 +132,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_S.DJ)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_S.DJ)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
@@ -197,7 +197,7 @@
 			<<include "SA long term effects">>
 			<<= App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<= App.SlaveAssignment.rivalries(_slave)>>
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
@@ -209,7 +209,7 @@
 			<<include "SA long term effects">>
 			<<run App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<run App.SlaveAssignment.rivalries(_slave)>>
 			<<include "SA devotion">>
 			<</silently>>
 		<</if>>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index daf5d900919b3e0d358362f21db08dc2079aa491..15515b63295c42d61374e81ff5c91281a6307a02 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -309,7 +309,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_S.Milkmaid)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_S.Milkmaid)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -320,7 +320,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs($slaves[$i])>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_S.Milkmaid)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
@@ -415,7 +415,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_slave)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -426,7 +426,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_slave)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw
index c04175c99395c3c419f24b4fb9f3dba13f195255..d149e4e2790c36538e6ccc78294949f845c89308 100644
--- a/src/uncategorized/fullReport.tw
+++ b/src/uncategorized/fullReport.tw
@@ -70,7 +70,7 @@
 	<<include "SA long term effects">>
 	<<run App.SlaveAssignment.drugs($slaves[$i])>>
 	<<include "SA relationships">>
-	<<include "SA rivalries">>
+	<<run App.SlaveAssignment.rivalries($slaves[$i])>>
 	<</silently>>
 <<else>>
 	<<include "SA rules">>
@@ -79,7 +79,7 @@
 	<<include "SA long term effects">>
 	<<= App.SlaveAssignment.drugs($slaves[$i])>>
 	<<include "SA relationships">>
-	<<include "SA rivalries">>
+	<<= App.SlaveAssignment.rivalries($slaves[$i])>>
 	<br>
 <</if>>
 
diff --git a/src/uncategorized/masterSuiteReport.tw b/src/uncategorized/masterSuiteReport.tw
index 5e6c7a6038b2b647ae6d38b4ac06044d2bc835bd..21fcacdcb5ca3364df556a0efd6a3af1454928c9 100644
--- a/src/uncategorized/masterSuiteReport.tw
+++ b/src/uncategorized/masterSuiteReport.tw
@@ -374,7 +374,7 @@
 			<<include "SA long term effects">>
 			<<= App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<= App.SlaveAssignment.rivalries(_slave)>>
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
@@ -391,7 +391,7 @@
 			<<include "SA long term effects">>
 			<<run App.SlaveAssignment.drugs(_slave)>>
 			<<include "SA relationships">>
-			<<include "SA rivalries">>
+			<<run App.SlaveAssignment.rivalries(_slave)>>
 			<<include "SA devotion">>
 			<</silently>>
 		<</if>>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 32f698d9ce680470d37e41a763df0b0e8bdf736d..24ad123486096e4f67362c3b42b3c1f9a213b9ce 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -1038,7 +1038,7 @@
 	<<include "SA long term effects">>
 	<<run App.SlaveAssignment.drugs($slaves[$i])>>
 	<<include "SA relationships">>
-	<<include "SA rivalries">>
+	<<run App.SlaveAssignment.rivalries($slaves[$i])>>
 	<<include "SA devotion">>
 	<</silently>>
 <<else>>
@@ -1048,7 +1048,7 @@
 	<<include "SA long term effects">>
 	<<= App.SlaveAssignment.drugs($slaves[$i])>>
 	<<include "SA relationships">>
-	<<include "SA rivalries">>
+	<<= App.SlaveAssignment.rivalries($slaves[$i])>>
 	<br><<include "SA devotion">>
 <</if>>
 
diff --git a/src/uncategorized/saRivalries.tw b/src/uncategorized/saRivalries.tw
deleted file mode 100644
index ab48315c0df43b30721452f8941dc325d881917f..0000000000000000000000000000000000000000
--- a/src/uncategorized/saRivalries.tw
+++ /dev/null
@@ -1,279 +0,0 @@
-:: SA rivalries [nobr]
-
-<<set _SL = $slaves.length>>
-<<setLocalPronouns $slaves[$i]>>
-
-<<if $slaves[$i].rivalry == 0>>
-
-<<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">>
-	<<if isSlaveAvailable($slaves[$i])>>
-		<<if $slaves[$i].assignment != "stay confined">>
-			<<if $slaves[$i].devotion < random(20,100)>>
-				<<if $slaves[$i].trust > random(-100,-20)>>
-					<<for _j = 0; _j < _SL; _j++>>
-						<<if $slaves[_j].ID != $slaves[$i].ID>>
-							<<if $slaves[_j].rivalry == 0>>
-								<<if $slaves[_j].fetish != "mindbroken">>
-									<<if $slaves[_j].ID != $slaves[$i].relationshipTarget>>
-										<<if $slaves[_j].devotion < random(20,100)>>
-											<<if $slaves[_j].trust > random(-100,-20)>>
-												<<if $slaves[_j].origBodyOwnerID == $slaves[$i].ID && $slaves[_j].devotion > 0 && $slaves[$i].devotion < -30>>
-													$slaves[$i].slaveName loathes that <<= SlaveFullName($slaves[_j])>> is using //$his// body to benefit you and makes it abundantly clear every chance $he gets. @@.lightsalmon;They start to dislike each other.@@
-													<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-													<<break>>
-												<</if>>
-												<<if $slaves[$i].behavioralFlaw != "none">>
-													<<switch $slaves[$i].behavioralFlaw>>
-													<<case "arrogant">>
-														<<if $slaves[_j].intelligence > $slaves[$i].intelligence+$slaves[$i].intelligenceImplant>>
-															$slaves[$i].slaveName is an arrogant bitch, and <<= SlaveFullName($slaves[_j])>> is authentically smarter than $he is, which of course $he cannot stand. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "bitchy">>
-														<<if $slaves[_j].behavioralFlaw == "odd">>
-															$slaves[$i].slaveName is a bit of a bitch, and poor odd <<= SlaveFullName($slaves[_j])>> is a convenient target for $his bullying. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "odd">>
-														<<if $slaves[_j].behavioralFlaw == "bitchy">>
-															$slaves[$i].slaveName is rather strange. <<= SlaveFullName($slaves[_j])>>, who is kind of a bitch, frequently bullies $him about it. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "hates men">>
-														<<if $slaves[_j].attrXX > 35>>
-															<<if $slaves[_j].faceShape == "masculine" || $slaves[_j].faceShape == "androgynous" >>
-																<<if $slaves[_j].muscles > 10>>
-																	<<if $slaves[_j].vagina > -1>>
-																		$slaves[$i].slaveName hates men, and poor butch <<= SlaveFullName($slaves[_j])>> really gets to $him, despite having a pussy and everything. @@.lightsalmon;They start to dislike each other.@@
-																		<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-																		<<break>>
-																	<<else>>
-																		$slaves[$i].slaveName hates men, and poor masculine <<= SlaveFullName($slaves[_j])>> really gets to $him. @@.lightsalmon;They start to dislike each other.@@
-																		<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-																		<<break>>
-																	<</if>>
-																<</if>>
-															<</if>>
-														<</if>>
-													<<case "hates women">>
-														<<if $slaves[_j].attrXY > 35>>
-															<<if $slaves[_j].faceShape != "masculine">>
-																<<if $slaves[_j].muscles <= 30>>
-																	<<if $slaves[_j].vagina > -1>>
-																		$slaves[$i].slaveName hates women, and something about the feminine <<= SlaveFullName($slaves[_j])>> really gets to $him. @@.lightsalmon;They start to dislike each other.@@
-																		<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-																		<<break>>
-																	<<else>>
-																		$slaves[$i].slaveName hates women, and something about the girly <<= SlaveFullName($slaves[_j])>> really gets to $him, despite poor $slaves[_j].slaveName not being perfectly female at all. @@.lightsalmon;They start to dislike each other.@@
-																		<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-																		<<break>>
-																	<</if>>
-																<</if>>
-															<</if>>
-														<</if>>
-													<<case "gluttonous">>
-														<<if $slaves[_j].behavioralFlaw == "anorexic">>
-															$slaves[$i].slaveName, who loves food, can't stand <<= SlaveFullName($slaves[_j])>>'s prissy anorexia. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-														<<if $slaves[_j].weight < -30>>
-															$slaves[$i].slaveName, who loves food, can't stand <<= SlaveFullName($slaves[_j])>>'s severe emaciation. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "anorexic">>
-														<<if $slaves[_j].behavioralFlaw == "gluttonous">>
-															$slaves[$i].slaveName, an anorexic, can't stand <<= SlaveFullName($slaves[_j])>>'s disgusting gluttony. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-														<<if $slaves[_j].weight > 130>>
-															$slaves[$i].slaveName, an anorexic, can't stand <<= SlaveFullName($slaves[_j])>>'s immense girth. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "devout">>
-														<<if $slaves[_j].behavioralFlaw == "liberated">>
-															$slaves[$i].slaveName, who is devout and might be considered rather conservative if $he were free, can't stand <<= SlaveFullName($slaves[_j])>>'s revolting gender liberation. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<<case "liberated">>
-														<<if $slaves[_j].behavioralFlaw == "devout">>
-															$slaves[$i].slaveName, who is liberated and might be considered rather liberal if $he were free, can't stand <<= SlaveFullName($slaves[_j])>>'s bigoted religious faith. @@.lightsalmon;They start to dislike each other.@@
-															<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-															<<break>>
-														<</if>>
-													<</switch>>
-												<</if>>
-												<<if $slaves[_j].assignment == $slaves[$i].assignment>>
-													<<if random(0,1) == 1>>
-														$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> see too much of each other while they
-														<<switch $slaves[_j].assignment>>
-														<<case "be a servant" "work as a servant">>
-															work as servants
-														<<case "be a subordinate slave">>
-															prepare to serve your other slaves
-														<<case "work a glory hole">>
-															work nearby glory holes
-														<<case "be confined in the cellblock">>
-															are confined in nearby cells
-														<<case "please you">>
-															wait for you to use them
-														<<default>>
-															$slaves[_j].assignment
-														<</switch>>
-														and @@.lightsalmon;start to dislike each other.@@
-														<<set $slaves[_j].rivalry = 1, $slaves[$i].rivalry = 1, $slaves[_j].rivalryTarget = $slaves[$i].ID, $slaves[$i].rivalryTarget = $slaves[_j].ID>>
-														<<break>>
-													<</if>>
-												<</if>>
-											<</if>>
-										<</if>>
-									<</if>>
-								<</if>>
-							<</if>>
-						<</if>>
-					<</for>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<else>>
-
-<<set _j = $slaveIndices[$slaves[$i].rivalryTarget]>>
-<<if def _j>>
-	<<if $slaves[$i].fuckdoll>>
-		$slaves[$i].slaveName is a living sex toy, not a person, it @@.lightsalmon;can't really maintain any meaningful rivalry@@ with <<= SlaveFullName($slaves[_j])>>.
-		<<set $slaves[_j].rivalry = 0,$slaves[_j].rivalryTarget = 0, $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>>
-	<<elseif $slaves[$i].fetish == "mindbroken">>
-		Since $slaves[$i].slaveName is mindbroken, $he @@.lightsalmon;can't really maintain any meaningful rivalry@@ with <<= SlaveFullName($slaves[_j])>>.
-		<<set $slaves[_j].rivalry = 0,$slaves[_j].rivalryTarget = 0, $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>>
-	<<else>>
-		<<if $slaves[$i].need>>
-			<<if $universalRulesConsent == 0>>
-				<<if App.Utils.sexAllowed($slaves[$i], $slaves[_j])>>
-					<<if $slaves[$i].fetishKnown>>
-						<<if $slaves[$i].fetish == "sadist">>
-							$slaves[$i].slaveName is horny and sadistic, so $he rapes $his rival <<= SlaveFullName($slaves[_j])>> every chance $he gets; this @@.hotpink;thrills@@ $slaves[$i].slaveName, but $slaves[_j].slaveName is @@.golden;frightened@@ that you let it happen.
-							<<set $slaves[$i].need = 0, $slaves[$i].devotion += 3, $slaves[_j].trust -= 3, $slaves[$i].counter.penetrative += 5, $slaves[_j].counter.oral += 5>>
-							<<if $slaves[$i].rivalry < 3>>
-								Of course, this @@.lightsalmon;worsens their rivalry.@@
-								<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1, _worsenedRivalry = 1>>
-							<</if>>
-						<<elseif $slaves[$i].fetish == "dom">>
-							$slaves[$i].slaveName is horny and dominant, so $he forces $his rival <<= SlaveFullName($slaves[_j])>> to submit to $him whenever $he can; this @@.hotpink;thoroughly satisfies@@ $slaves[$i].slaveName, but $slaves[_j].slaveName is @@.mediumorchid;angered@@ that you let it happen.
-							<<set $slaves[$i].need = 0, $slaves[$i].devotion += 3, $slaves[_j].devotion -= 3, $slaves[$i].counter.penetrative += 5, $slaves[_j].counter.oral += 5>>
-							<<if $slaves[$i].rivalry < 3>>
-								Of course, this @@.lightsalmon;worsens their rivalry.@@
-								<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1, _worsenedRivalry = 1>>
-							<</if>>
-						<</if>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<set _roll = random(0,100)>>
-		<<if _worsenedRivalry != 1>>
-			<<if _roll > 50>>
-				<<if $slaves[_j].fetish == $slaves[$i].fetish>>
-					$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> share sexual interests, and in the sexual atmosphere of the arcology, it's @@.lightgreen;difficult for them to keep up their dislike@@ of one another with the mutual attraction.
-					<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-				<</if>>
-				<<if $slaves[_j].ID == $slaves[$i].relationshipTarget>>
-					<<if $slaves[$i].relationship > 3>>
-						<<set $slaves[_j].rivalry = 0, $slaves[_j].rivalryTarget = 0>>
-						<<set $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>>
-					<</if>>
-				<</if>>
-				<<if _roll > 80 && $slaves[$i].rivalry > 0>>
-					<<if $slaves[_j].trust < -20>>
-						<<if $slaves[$i].trust < -20>>
-							Since both $slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> are terrified of you, they work together to @@.lightgreen;get over their feud,@@ since it brings punishment on both of them.
-							<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-						<</if>>
-					<</if>>
-					<<if $slaves[_j].devotion > 50>>
-						<<if $slaves[$i].devotion > 50>>
-							Since both $slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> are devoted to you, they work together to @@.lightgreen;get over their feud,@@ since it gets in the way of their duties.
-							<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-						<</if>>
-					<</if>>
-					<<if _roll > 90 && $slaves[$i].rivalry > 0>>
-						<<if $slaves[$i].energy > 95>>
-							$slaves[$i].slaveName lusts after <<= SlaveFullName($slaves[_j])>>, and does everything $he can to @@.lightgreen;patch up their differences.@@
-							<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lustyFix = 1, _lightenedRivalry = 1>>
-						<</if>>
-						<<if _lustyFix != 1>>
-							<<if $slaves[$i].attrXX > 85>>
-								<<if ($slaves[_j].vagina > -1) || ($slaves[_j].faceShape != "masculine")>>
-									$slaves[$i].slaveName lusts after <<= SlaveFullName($slaves[_j])>>, and does everything $he can to @@.lightgreen;patch up their differences.@@
-									<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lustyFix = 1, _lightenedRivalry = 1>>
-								<</if>>
-							<</if>>
-						<</if>>
-						<<if _lustyFix != 1>>
-							<<if $slaves[$i].attrXY > 85>>
-								<<if ($slaves[_j].balls > 0) || ($slaves[_j].faceShape == "masculine")>>
-									$slaves[$i].slaveName lusts after <<= SlaveFullName($slaves[_j])>>, and does everything $he can to @@.lightgreen;patch up their differences.@@
-									<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lustyFix = 1, _lightenedRivalry = 1>>
-								<</if>>
-							<</if>>
-						<</if>>
-						<<if _lustyFix != 1>>
-							<<if $slaves[_j].assignment != $slaves[$i].assignment>>
-								<<if $slaves[$i].subTarget != $slaves[_j].ID>>
-									<<if $slaves[_j].subTarget != $slaves[$i].ID>>
-										With time apart $slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightgreen;dislike each other less.@@
-										<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-									<</if>>
-								<</if>>
-							<</if>>
-						<</if>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if areRelated($slaves[$i], $slaves[_j])>>
-		<<if _roll > 70 && $slaves[$i].rivalry < 3 && _lightenedRivalry != 1>>
-			$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightsalmon;pursue their family rivalry.@@
-			<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
-		<<elseif _roll > 40 && $slaves[$i].rivalry > 0 && _worsenedRivalry != 1>>
-			$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightgreen;patch up their family relationship.@@
-			<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-		<</if>>
-	<</if>>
-	<<if $slaves[_j].origBodyOwnerID == $slaves[$i].ID && _lightenedRivalry != 1>>
-		<<if $slaves[$i].rivalry < 3>>
-			$slaves[$i].slaveName @@.lightsalmon;refuses to accept <<= SlaveFullName($slaves[_j])>>'s control of $his former body,@@ worsening their rivalry.
-			<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
-		<</if>>
-	<<elseif _roll > $slaves[$i].devotion-$slaves[$i].trust+10 && _lightenedRivalry != 1>>
-		<<if $slaves[$i].rivalry < 3>>
-			$slaves[$i].slaveName @@.lightsalmon;bickers with <<= SlaveFullName($slaves[_j])>>@@ whenever $he can, worsening their rivalry.
-			<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
-		<</if>>
-	<<elseif _roll < $slaves[$i].devotion-$slaves[$i].trust-10 && $slaves[$i].rivalry > 0 && _worsenedRivalry != 1>>
-		$slaves[$i].slaveName does $his best to be nice to <<= SlaveFullName($slaves[_j])>>, and manages to @@.lightgreen;de-escalate their little feud.@@
-		<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1>>
-	<</if>>
-<<else>>
-	@@.red;Error, rivalryTarget not found.@@
-<</if>>
-
-<</if>>
-
-<<if $slaves[$i].rivalry>>
-	<<set _j = $slaveIndices[$slaves[$i].rivalryTarget]>>
-	<<if (def _j) && ($slaves[$i].ID != $slaves[_j].rivalryTarget)>>
-		<<set $slaves[_j].rivalry = 0, $slaves[_j].rivalryTarget = 0>>
-		<<set $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>>
-	<</if>>
-<</if>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 9dba2e99fad0e656e978694ecb0d91afc9efa3ec..2f9c724ee5a0bdaf6b659e15944b76ee54bc7b50 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -236,7 +236,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_S.Attendant)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_S.Attendant)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -247,7 +247,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_S.Attendant)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_S.Attendant)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
@@ -344,7 +344,7 @@
 		<<include "SA long term effects">>
 		<<= App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<= App.SlaveAssignment.rivalries(_slave)>>
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
@@ -356,7 +356,7 @@
 		<<include "SA long term effects">>
 		<<run App.SlaveAssignment.drugs(_slave)>>
 		<<include "SA relationships">>
-		<<include "SA rivalries">>
+		<<run App.SlaveAssignment.rivalries(_slave)>>
 		<<include "SA devotion">>
 		<</silently>>
 	<</if>>
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index 5fded2f29aebb4511c6f1784a1e1f0c5d22b8ff5..4cbd5736ff2aa699d69a62f36f067f611d3791d8 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -24,9 +24,9 @@ The room containing all the clothes and accessories you have available to dress
 <<if $boughtItem.shoes.heels == 1>>
 	A large variety of shoes are available to select from.
 <</if>>
-<<if $boughtItem.clothing.dildos == 1 && $toysBoughtGags == 1 && $boughtItem.clothing.buttPlugs == 1>>
+<<if $boughtItem.clothing.dildos == 1 && $boughtItem.toys.gags == 1 && $boughtItem.clothing.buttPlugs == 1>>
 	Sex toys of all kinds and shapes line the shelves.
-<<elseif $boughtItem.clothing.dildos == 1 || $toysBoughtGags == 1 || $boughtItem.clothing.buttPlugs == 1 || $boughtItem.clothing.buttPlugTails == 1 || $boughtItem.clothing.vaginalAttachments == 1>>
+<<elseif $boughtItem.clothing.dildos == 1 || $boughtItem.toys.gags == 1 || $boughtItem.clothing.buttPlugs == 1 || $boughtItem.clothing.buttPlugTails == 1 || $boughtItem.clothing.vaginalAttachments == 1>>
 	Some sex toys line the shelves.
 <</if>>
 <<if $boughtItem.toys.buckets == 1>>
@@ -572,7 +572,7 @@ The room containing all the clothes and accessories you have available to dress
 
 <p>
 	<div>
-	<<if $boughtItem.clothing.dildos == 0>>
+	<<if $boughtItem.toys.dildos == 0>>
 		[[Order a shipment of extra long dildos and bullet vibes|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.dildos = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
@@ -589,7 +589,7 @@ The room containing all the clothes and accessories you have available to dress
 	</div>
 
 	<div>
-	<<if $boughtItem.clothing.vaginalAttachments == 0>>
+	<<if $boughtItem.toys.vaginalAttachments == 0>>
 		[[Order a shipment of vibrating dildo attachments|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.vaginalAttachments = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
@@ -598,7 +598,7 @@ The room containing all the clothes and accessories you have available to dress
 	</div>
 
 	<div>
-	<<if $boughtItem.clothing.buttPlugs == 0>>
+	<<if $boughtItem.toys.buttPlugs == 0>>
 		[[Order a shipment of extra long buttplugs|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.buttPlugs = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
@@ -607,7 +607,7 @@ The room containing all the clothes and accessories you have available to dress
 	</div>
 
 	<div>
-	<<if $boughtItem.clothing.buttPlugTails == 0>>
+	<<if $boughtItem.toys.buttPlugTails == 0>>
 		[[Order a shipment of attachable tails|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.buttPlugTails = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
@@ -616,8 +616,8 @@ The room containing all the clothes and accessories you have available to dress
 	</div>
 
 	<div>
-	<<if $toysBoughtGags == 0>>
-		[[Order a shipment of massive dildo gags|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $toysBoughtGags = 1]]
+	<<if $boughtItem.toys.gags == 0>>
+		[[Order a shipment of massive dildo gags|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.gags = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
 		You are well stocked with massive dildo gags.