diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 4e8b4fb12c0f991c57674583400d0efbebb9607d..977b2532f3be32a57fbb63984b4dfbce109ea91a 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -1688,75 +1688,191 @@ window.setPregType = function(actor) {
 			}
 			ovum = Math.clamp(ovum, 0, 8);
 		} else if(actor.pregType == 0) {
-			if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
-				ovum += jsEither([1, 2, 2, 3]);
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
-				ovum += jsEither([0, 1, 1, 2]);
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
-				ovum += jsEither([0, 0, 0, 0, 1]);
-				fertilityStack++;
-			} else {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins
-			}
-			if(actor.ovaImplant == "fertility") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
-				fertilityStack++;
-			}
-			if(actor.hormones == 2) {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
-				fertilityStack++;
-			}
-			if(actor.hormoneBalance >= 200) {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
-				fertilityStack++;
-			}
-			if(actor.diet == "fertility") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
-				fertilityStack++;
-			}
-			if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
-				ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
-				fertilityStack++;
-				fertilityStack++;
-			}
-			if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
-				fertilityStack++;
-			}
-			if(actor.drugs == "super fertility drugs") {
-				ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.drugs == "fertility drugs") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
-				fertilityStack++;
-			}
-			if(State.variables.seeHyperPreg == 1) {
+			if(actor.eggType == "horse" || actor.eggType == "cow") {
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1]);
+					fertilityStack += .8;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					fertilityStack += .4;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					fertilityStack += .2;
+				}
+				if(actor.ovaImplant == "fertility") {
+					fertilityStack += .3;
+				}
+				if(actor.hormones == 2) {
+					fertilityStack += .2;
+				}
+				if(actor.hormoneBalance >= 200) {
+					fertilityStack += .3;
+				}
+				if(actor.diet == "fertility") {
+					fertilityStack += .3;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					fertilityStack += .5;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack += .2;
+				}
 				if(actor.drugs == "super fertility drugs") {
-					ovum += jsRandom(0, fertilityStack*2);
+					fertilityStack += 1.6;
+				} else if(actor.drugs == "fertility drugs") {
+					fertilityStack += .6;
+				}
+				fertilityStack = Math.floor(fertilityStack);
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(0, fertilityStack*2);
+					} else {
+						ovum += jsRandom(0, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
 				} else {
 					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 4) {
+							ovum = 4;
+						}
+					} else if(ovum > 3) {
+						ovum = 3;
+					}
+				}
+			} else if(actor.eggType == "pig") {
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsRandom(4, 8);
+					fertilityStack += 16;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					ovum += jsRandom(2, 6);
+					fertilityStack += 10;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					ovum += jsRandom(2, 4);
+					fertilityStack += 6;
+				}
+				if(actor.ovaImplant == "fertility") {
+					ovum += jsRandom(4, 12);
+					fertilityStack += 6;
 				}
-				if(actor.ovaImplant == "sympathy") {
-					ovum *= 2;
+				if(actor.hormones == 2) {
+					ovum += jsRandom(0, 4);
+					fertilityStack += 3;
+				}
+				if(actor.hormoneBalance >= 200) {
+					ovum += jsRandom(0, 4);
+					fertilityStack += 3;
+				}
+				if(actor.diet == "fertility") {
+					ovum += jsRandom(4, 10);
+					fertilityStack += 6;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					ovum += jsRandom(8, 16);
+					fertilityStack += 10;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack += 2;
+				}
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsRandom(10, 40);
+					fertilityStack += 32;
+				} else if(actor.drugs == "fertility drugs") {
+					ovum += jsRandom(10, 20);
+					fertilityStack += 16;
+				}
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(fertilityStack/2, fertilityStack*2);
+					} else {
+						ovum += jsRandom(fertilityStack/4, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 76) {
+							ovum = jsEither([70, 72, 74, 76]);
+						}
+					} else if(ovum > 75) {
+						ovum = jsRandom(60, 75);
+					}
 				}
 			} else {
-				ovum += jsRandom(0, fertilityStack);
-				if(actor.ovaImplant == "sympathy") {
-					ovum *= 2;
-					if(ovum > 12) {
-						ovum = jsEither([10, 12]);
-					}
-				} else if(ovum > 12) {
-					ovum = jsRandom(6, 12);
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsEither([1, 2, 2, 3]);
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					ovum += jsEither([0, 1, 1, 2]);
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					ovum += jsEither([0, 0, 0, 0, 1]);
+					fertilityStack++;
+				} else {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins
+				}
+				if(actor.ovaImplant == "fertility") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); 
+					fertilityStack++;
+				}
+				if(actor.hormones == 2) {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
+					fertilityStack++;
+				}
+				if(actor.hormoneBalance >= 200) {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
+					fertilityStack++;
+				}
+				if(actor.diet == "fertility") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+					fertilityStack++;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
+					fertilityStack++;
+					fertilityStack++;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack++;
+				}
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.drugs == "fertility drugs") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
+					fertilityStack++;
+				}
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(0, fertilityStack*2);
+					} else {
+						ovum += jsRandom(0, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 12) {
+							ovum = jsEither([10, 12]);
+						}
+					} else if(ovum > 12) {
+						ovum = jsRandom(6, 12);
+					}
 				}
 			}
 		}
diff --git a/src/js/pregJS.tw b/src/js/pregJS.tw
index ba5050d5b37c0858fe4e9ba0e85c99a6b3625579..24e623c7bd4b3200e916192c34641d9c3cea7edb 100644
--- a/src/js/pregJS.tw
+++ b/src/js/pregJS.tw
@@ -122,75 +122,191 @@ window.setPregType = function(actor) {
 			}
 			ovum = Math.clamp(ovum, 0, 8);
 		} else if(actor.pregType == 0) {
-			if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
-				ovum += jsEither([1, 2, 2, 3]);
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
-				ovum += jsEither([0, 1, 1, 2]);
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
-				ovum += jsEither([0, 0, 0, 0, 1]);
-				fertilityStack++;
-			} else {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins
-			}
-			if(actor.ovaImplant == "fertility") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); 
-				fertilityStack++;
-			}
-			if(actor.hormones == 2) {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
-				fertilityStack++;
-			}
-			if(actor.hormoneBalance >= 200) {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
-				fertilityStack++;
-			}
-			if(actor.diet == "fertility") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
-				fertilityStack++;
-			}
-			if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
-				ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
-				fertilityStack++;
-				fertilityStack++;
-			}
-			if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
-				fertilityStack++;
-			}
-			if(actor.drugs == "super fertility drugs") {
-				ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-				fertilityStack++;
-			} else if(actor.drugs == "fertility drugs") {
-				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
-				fertilityStack++;
-			}
-			if(State.variables.seeHyperPreg == 1) {
+			if(actor.eggType == "horse" || actor.eggType == "cow") {
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1]);
+					fertilityStack += .8;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					fertilityStack += .4;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					fertilityStack += .2;
+				}
+				if(actor.ovaImplant == "fertility") {
+					fertilityStack += .3;
+				}
+				if(actor.hormones == 2) {
+					fertilityStack += .2;
+				}
+				if(actor.hormoneBalance >= 200) {
+					fertilityStack += .3;
+				}
+				if(actor.diet == "fertility") {
+					fertilityStack += .3;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					fertilityStack += .5;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack += .2;
+				}
 				if(actor.drugs == "super fertility drugs") {
-					ovum += jsRandom(0, fertilityStack*2);
+					fertilityStack += 1.6;
+				} else if(actor.drugs == "fertility drugs") {
+					fertilityStack += .6;
+				}
+				fertilityStack = Math.floor(fertilityStack);
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(0, fertilityStack*2);
+					} else {
+						ovum += jsRandom(0, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
 				} else {
 					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 4) {
+							ovum = 4;
+						}
+					} else if(ovum > 3) {
+						ovum = 3;
+					}
+				}
+			} else if(actor.eggType == "pig") {
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsRandom(4, 8);
+					fertilityStack += 16;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					ovum += jsRandom(2, 6);
+					fertilityStack += 10;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					ovum += jsRandom(2, 4);
+					fertilityStack += 6;
+				}
+				if(actor.ovaImplant == "fertility") {
+					ovum += jsRandom(4, 12);
+					fertilityStack += 6;
+				}
+				if(actor.hormones == 2) {
+					ovum += jsRandom(0, 4);
+					fertilityStack += 3;
 				}
-				if(actor.ovaImplant == "sympathy") {
-					ovum *= 2;
+				if(actor.hormoneBalance >= 200) {
+					ovum += jsRandom(0, 4);
+					fertilityStack += 3;
+				}
+				if(actor.diet == "fertility") {
+					ovum += jsRandom(4, 10);
+					fertilityStack += 6;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					ovum += jsRandom(8, 16);
+					fertilityStack += 10;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack += 2;
+				}
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsRandom(10, 40);
+					fertilityStack += 32;
+				} else if(actor.drugs == "fertility drugs") {
+					ovum += jsRandom(10, 20);
+					fertilityStack += 16;
+				}
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(fertilityStack/2, fertilityStack*2);
+					} else {
+						ovum += jsRandom(fertilityStack/4, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 76) {
+							ovum = jsEither([70, 72, 74, 76]);
+						}
+					} else if(ovum > 75) {
+						ovum = jsRandom(60, 75);
+					}
 				}
 			} else {
-				ovum += jsRandom(0, fertilityStack);
-				if(actor.ovaImplant == "sympathy") {
-					ovum *= 2;
-					if(ovum > 12) {
-						ovum = jsEither([10, 12]);
+				if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm
+					ovum += jsEither([1, 2, 2, 3]);
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples
+					ovum += jsEither([0, 1, 1, 2]);
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins
+					ovum += jsEither([0, 0, 0, 0, 1]);
+					fertilityStack++;
+				} else {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins
+				}
+				if(actor.ovaImplant == "fertility") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); 
+					fertilityStack++;
+				}
+				if(actor.hormones == 2) {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
+					fertilityStack++;
+				}
+				if(actor.hormoneBalance >= 200) {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
+					fertilityStack++;
+				}
+				if(actor.diet == "fertility") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+					fertilityStack++;
+				}
+				if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+					ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
+					fertilityStack++;
+					fertilityStack++;
+				}
+				if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+					fertilityStack++;
+				}
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+					fertilityStack++;
+				} else if(actor.drugs == "fertility drugs") {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
+					fertilityStack++;
+				}
+				if(State.variables.seeHyperPreg == 1) {
+					if(actor.drugs == "super fertility drugs") {
+						ovum += jsRandom(0, fertilityStack*2);
+					} else {
+						ovum += jsRandom(0, fertilityStack);
+					}
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+					}
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+					if(actor.ovaImplant == "sympathy") {
+						ovum *= 2;
+						if(ovum > 12) {
+							ovum = jsEither([10, 12]);
+						}
+					} else if(ovum > 12) {
+						ovum = jsRandom(6, 12);
 					}
-				} else if(ovum > 12) {
-					ovum = jsRandom(6, 12);
 				}
 			}
 		}