diff --git a/src/js/assayJS b/src/js/assayJS
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0eeb9d133d77be6bf7d58b88b7bd15051654810f 100644
--- a/src/js/assayJS
+++ b/src/js/assayJS
@@ -0,0 +1,52 @@
+:: AssayJS [script]
+
+window.isSlim = function(slave) {
+	var slim = 0;
+	var ArcologyZero = State.variables.arcologies[0];
+	
+	if ((slave.boobs < 500) && (slave.butt < 3)) {
+		if ((slave.muscles <= 30) && (ArcologyZero.FSPhysicalIdealist == "unset") && (slave.weight <= 10) && (ArcologyZero.FSHedonisticDecadence == "unset")) {
+			slim = 1;
+		} else if (ArcologyZero.FSPhysicalIdealist != "unset") {
+			if ((ArcologyZero.FSPhysicalIdealistStrongFat == 1) && (slave.weight <= 30)) { 
+				slim = 1;
+			} 
+		} else if ((ArcologyZero.FSHedonisticDecadence != "unset") && (slave.weight <= 30)) { 
+			if (ArcologyZero.FSHedonisticDecadenceStrongFat == 1) { 
+				slim = 1;
+			} else if (slave.muscles <= 30) {
+				slim = 1;
+			}
+		}
+	}
+	
+	return slim;
+}
+
+window.isStacked = function(slave) {
+	return ((slave.butt > 4) && (slave.boobs > 800);
+}
+
+window.isModded = function(slave) {
+	var tatScore = TatScore(slave);
+	var piercingScore = PiercingScore(slave);
+	var modScore = piercingScore+tatScore;
+		
+	return ((modScore > 15) || (piercingScore > 8) && (tatScore > 5));
+}
+
+window.isXY = function(slave) {
+	return (slave.vagina == -1);
+}
+
+window.isYoung = function(slave) {
+	return (slave.visualAge < 30);
+}
+
+window.isPreg = function(slave) {
+	return ((slave.bellyPreg >= 5000) || (slave.bellyImplant >= 5000));
+}
+
+window.isPure = function(slave) {
+	return ((slave.boobsImplant == 0) && (slave.buttImplant == 0) && (slave.waist >= -95) && (slave.lipsImplant == 0) && (slave.faceImplant < 30) && (slave.bellyImplant == -1) && (Math.abs(slave.shouldersImplant) < 2) && (Math.abs(slave.hipsImplant) < 2));
+}
\ No newline at end of file