diff --git a/game/03-JavaScript/04-Pregnancy/pregnancy.js b/game/03-JavaScript/04-Pregnancy/pregnancy.js
index 96ecfab48f374796f358da43bf5796fdc471a956..e2e0251200a5975084798d2ce52692c140a84327 100644
--- a/game/03-JavaScript/04-Pregnancy/pregnancy.js
+++ b/game/03-JavaScript/04-Pregnancy/pregnancy.js
@@ -81,7 +81,7 @@ function fetishPregnancy({ genital = "vagina", target = null, spermOwner = null,
 	if (["hand", "kiss"].includes(genital)) genital = target === "pc" && !V.player.vaginaExist ? "anus" : "vagina";
 
 	const motherObject = npcPregObject(target, true);
-	const [pregnancy, fertility, magicTattoo] = pregPrep({ motherObject, genital });
+	const [pregnancy, fertility, magicTattoo, contraceptive] = pregPrep({ motherObject, genital });
 
 	// Check the cycle settings
 	let multi = 1;
@@ -108,6 +108,9 @@ function fetishPregnancy({ genital = "vagina", target = null, spermOwner = null,
 			multi = 1 / Math.pow(4, C.npc[target].pregnancy.nonCycleRng[0]);
 		}
 	}
+
+	if (!forcePregnancy && contraceptive && (random(0, 100) >= 10 || contraceptive > 1)) return "contraceptive fail";
+
 	if (["hawk", "harpy"].includes(spermType) || target === "Great Hawk") {
 		if (!["pc", "Great Hawk"].includes(target)) return false;
 		if ((target === "pc" && !V.harpyEggs) || (target === "Great Hawk" && multi === 1)) return false;
@@ -138,7 +141,6 @@ function fetishPregnancy({ genital = "vagina", target = null, spermOwner = null,
 	}
 	return false;
 }
-window.fetishPregnancy = fetishPregnancy;
 
 /* Player pregnancy starts here */
 /* V.pregnancytype === "realistic" uses this function */
@@ -163,8 +165,8 @@ function playerPregnancyAttempt(baseMulti = 1, genital = "vagina") {
 	/* The lower basePenalty is, the easier it is for the player to get pregnant */
 	let basePenalty = Math.floor((100 - V.basePlayerPregnancyChance) * Math.clamp(fertilityBoost, 0.1, 1) * baseMulti);
 
-	if (V.earSlime.growth >= 100 && V.earSlime.focus === "pregnancy") basePenalty = Math.floor(basePenalty * 2);
-	if (V.earSlime.growth >= 100 && V.earSlime.focus === "impregnation") basePenalty = Math.floor(basePenalty / 2);
+	if (V.earSlime.growth >= 100 && V.earSlime.focus === "pregnancy") basePenalty = Math.floor(basePenalty / 2);
+	if (V.earSlime.growth >= 100 && V.earSlime.focus === "impregnation") basePenalty = Math.floor(basePenalty * 2);
 
 	/*
 		When spermArray.length - 1 is lower than basePenalty, it uses basePenalty to determin if the pregnancy should occur or not
diff --git a/game/03-JavaScript/04-Pregnancy/pregnancyTypes.js b/game/03-JavaScript/04-Pregnancy/pregnancyTypes.js
index 83de1ec3b1e2378ee148616f57003c19752fdf91..9abc518f7a0f422f655aa248e4780b596e6ef03a 100644
--- a/game/03-JavaScript/04-Pregnancy/pregnancyTypes.js
+++ b/game/03-JavaScript/04-Pregnancy/pregnancyTypes.js
@@ -119,6 +119,7 @@ function pregPrep({ motherObject, fatherObject, parasiteType = null, genital = n
 	let pregnancy;
 	let fertility = 0;
 	let magicTattoo = 0;
+	let contraceptive = 0;
 	if (!motherObject) {
 		return [`mother object not provided`];
 	} else if (!["anus", "vagina"].includes(genital)) {
@@ -147,6 +148,7 @@ function pregPrep({ motherObject, fatherObject, parasiteType = null, genital = n
 		if (parasiteType && pregnancy.fetus.length >= maxParasites(genital)) return ["Player does not have room for more parasites"];
 
 		fertility += Math.clamp(V.sexStats.pills.pills["fertility booster"].doseTaken || 0, 0, Infinity);
+		contraceptive += Math.clamp(V.sexStats.pills.pills.contraceptive.doseTaken || 0, 0, 2);
 	} else if (!parasiteType) {
 		if (V.npcPregnancyDisable === "t") return ["NPC pregnancy disabled"];
 
@@ -165,9 +167,8 @@ function pregPrep({ motherObject, fatherObject, parasiteType = null, genital = n
 				if (pregnancy.fetus.length && pregnancy.fetus[0] && pregnancy.fetus[0].eggTimer) return ["Hawk eggs already fertilised"];
 			} else if (pregnancy.type !== "parasite" && pregnancy.fetus.length) return ["NPC currently pregnant and cannot support other types"];
 
-			if (pregnancy.pills === "fertility") {
-				fertility += 1;
-			}
+			if (pregnancy.pills === "fertility") fertility += 1;
+			if (pregnancy.pills === "contraceptive") contraceptive += 1;
 		} else {
 			// ToDo: Random npc pregnancy
 			pregnancy = {
@@ -189,7 +190,7 @@ function pregPrep({ motherObject, fatherObject, parasiteType = null, genital = n
 		}
 	}
 
-	return [pregnancy, fertility, magicTattoo];
+	return [pregnancy, fertility, magicTattoo, contraceptive];
 }
 
 function bodySizeCalc(bodysize) {
diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index 73446785f6588e13771e5e70d518f6f7d108ca2f..265ee309a829517f1a49065a31c64efd9ac9c584 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -4817,4 +4817,9 @@
 		<<if $brothelVending.status is "sold">><<set $brothelVending.status to "idea">><</if>>
 		/*fix weeksEmpty increasing even when the player hasn't started the vending machine questline. reset vending machine questline if vending machines were sold despite never having started the questline*/
 	<</if>>
+
+	/* To fix cases where the value could be delete after starting the game */
+	<<if $cycledisable is undefined>>
+		<<set $cycledisable to "f">>
+	<</if>>
 <</widget>>
diff --git a/game/base-clothing/widgets.twee b/game/base-clothing/widgets.twee
index 5c9a553898c8611fdd1145ac2faedcbf5ca621dd..6547128e66d95ae92fa7c7639db4818054d9649a 100644
--- a/game/base-clothing/widgets.twee
+++ b/game/base-clothing/widgets.twee
@@ -1449,6 +1449,7 @@
 	<<if _args[0] and _args[1]>>
 		<<set $_location to _args[0]>>
 		<<set $_slot to _args[1]>>
+		<<if $store[$_slot] is undefined>>/* Slot not found */<<exit>><</if>>
 		<<set $_item to $store[$_slot].find(item => item.location is $_location)>>
 		<<if $_item isnot undefined>>
 			<<set $_index to $store[$_slot].indexOf($_item)>>
diff --git a/game/base-combat/close-images.twee b/game/base-combat/close-images.twee
index 8435d2763dc0cf769b651bbf88944fe732f0b815..63a65e7252f8b28c039cde7ca9cd59d70e312adb 100644
--- a/game/base-combat/close-images.twee
+++ b/game/base-combat/close-images.twee
@@ -103,6 +103,7 @@
             <<elseif $vaginastate is "penetrated" or $vaginastate is "doublepenetrated">>
                 <<if ($enemytype is "beast" and $NPCList[_na].penissize gte 5) or ($vaginastate is "doublepenetrated" and $NPCList[$vaginatarget].penis is "vaginadouble" and $NPCList[$vaginadoubletarget].penis is "vaginadouble")>>
                     <<set _vagina = _img.vaginapenetratebig>>
+					<<set _penetratebig to true>>
                 <<else>>
                     <<set _vagina = _img.vaginapenetrate>>
                 <</if>>
@@ -246,10 +247,10 @@
                 <img @class="'pbhair-' + _pbColour + ' ' + _frames" @src="'img/sex/close/' + _position + '/vaginahirsute.png'">
             <</if>>
 			<<if $_parasiteGenitals>>
-				<<if $earSlime.focus is "impregnation">>
-					<img @class="_frames" @src="'img/sex/close/' + _position + '/vaginaparasiteshorts.png'">
+				<<if $earSlime.focus is "impregnation" or true>>
+					<img @class="_frames" @src="'img/sex/close/' + _position + '/vagina' + (_penetratebig ? 'big' : '') + 'parasiteshorts.png'">
 				<<else>>
-					<img @class="_frames" @src="'img/sex/close/' + _position + '/vaginaparasitepanty.png'">
+					<img @class="_frames" @src="'img/sex/close/' + _position + '/vagina' + (_penetratebig ? 'big' : '') + 'parasitepanty.png'">
 				<</if>>
 			<</if>>
             <!-- Hermaphrodite penis -->
diff --git a/game/base-system/feats.twee b/game/base-system/feats.twee
index 76b7ebfee561c6a04cc75507818d8c389cd70585..b86798568f8c796b76473d09239b4bb6a3dda52a 100644
--- a/game/base-system/feats.twee
+++ b/game/base-system/feats.twee
@@ -55,7 +55,7 @@
 	<<elseif $feats.allSaves.specialClothes is undefined>>
 		<<set $feats.allSaves.specialClothes to {}>>
 	<</if>>
-	<<if $specialClothes>>
+	<<if $specialClothes and $feats.locked is false and $cheatdisable is "t">>
 		<<for $_label, $_value range $specialClothes>>
 			<<if $_value is "unlocked">>
 				<<set $feats.allSaves.specialClothes[$_label] to $_value>>
diff --git a/game/base-system/orgasm.twee b/game/base-system/orgasm.twee
index beedfde8d54a8c18e56ac0db207bac2ea6af1f94..ed7fc0662ff2f0ff15248503777628fb18218c28 100644
--- a/game/base-system/orgasm.twee
+++ b/game/base-system/orgasm.twee
@@ -76,7 +76,7 @@
 						/*ToDo: Pregnancy, figure out how the Wraith, plantpeople, etc will handle pregnancy.*/
 					<<elseif $npcrow.includes($penistarget)>>
 						<<recordSperm `{target: $NPCList[$penistarget].fullDescription, spermOwner: "pc", spermType: "human", rngModifier: _orgasmSpermRng}`>>
-					<<elseif $NPCList[$penistarget].pregnancy is 0 and $consensual is 1 and ["realistic", "fetish"].includes($pregnancytype)>>
+					<<elseif $NPCList[$penistarget].pregnancy is 0 and ["realistic", "fetish"].includes($pregnancytype)>>
 						/* Pregnancy Count */
 						<<set $_count to Object.values($storedNPCs).reduce((prev, curr) => {
 							if(curr.pregnancy) return prev + 1;
@@ -92,14 +92,14 @@
 						<</if>>
 						<<set $_impregnatedChance to Math.floor($_impregnatedChance * (_orgasmSpermRng / 100))>>
 						/*If random NPC is impregnated, compress NPC and fetus*/
-						<<if ($_impregnatedChance gte random(0,200) or _npcForceImpregnation) and $_count lte 10>>
+						<<if ($_impregnatedChance gte random(0,200) or _npcForceImpregnation)>>
 							<<switch $NPCList[$penistarget].type>>
 								<<case "human">><<set $_pregnancy to pregnancyGenerator.human(V.NPCList[$penistarget], "pc", true)>>
 								<<case "wolf">><<set $_pregnancy to pregnancyGenerator.wolf(V.NPCList[$penistarget], "pc", true, "vagina", false)>>
 								<<case "wolfgirl" "wolfboy">><<set $_pregnancy to pregnancyGenerator.wolf(V.NPCList[$penistarget], "pc", true, "vagina", true)>>
 							<</switch>>
 							<<if $_pregnancy and !(typeof $_pregnancy is "string" || $_pregnancy instanceof String)>>
-								<<if random(0,2) is 0 or setup.pregnancy.randomAlwaysKeep.includes($location)>>
+								<<if $consensual is 1 and ((random(0, 1 + $_count) is 0 and $_count lte 10) or (setup.pregnancy.randomAlwaysKeep.includes($location) and $_count lte 15))>>
 									<<compressNPC $penistarget "pregnancy">>
 									<<set $storedNPCs[_lastCompressedName].pregnancy to $_pregnancy>>
 									/* ToDo: Uncomment when compression when is ready */
diff --git a/game/base-system/overlays/featsUI.twee b/game/base-system/overlays/featsUI.twee
index cc2cccb09bba508b3310c2e06a3f10a7e8af8394..a0aed7763c61dde0a7d116089e12bc7800e61b03 100644
--- a/game/base-system/overlays/featsUI.twee
+++ b/game/base-system/overlays/featsUI.twee
@@ -423,11 +423,11 @@
 				<</if>>
 				<<if _name is "aNewBestFriend" and $featsBoosts.upgradeDetails.aNewBestFriend.count gte 2>>
 					<div id="aNewBestFriend">
-						<label>Earslime Starting type:
+						<label>Earslime starting type:
 							<<listbox "$featsBoosts.earSlimeType" autoselect>>
 								<<option "Immature and passive" "immaturePassive">>
 								<<option "Immature and aggressive" "immatureAggressive">>
-								<<option "Partly grown and agressive" "grownAggressive">>
+								<<option "Partly grown and aggressive" "grownAggressive">>
 							<</listbox>>
 						</label>
 					</div>
diff --git a/game/base-system/settings.twee b/game/base-system/settings.twee
index 8a5a53df5b51386749d12ff65e4d6eea1a0d0402..5ed065bba03576c131967bc42fd963dae5f5bf67 100644
--- a/game/base-system/settings.twee
+++ b/game/base-system/settings.twee
@@ -286,7 +286,6 @@
 			<<unset _maleChanceSplit>>
 			<<unset _beastMaleChanceSplit>>
 			<<unset _pregnancytype>>
-			<<unset _cycledisable>>
 			<<unset _incompletePregnancyDisable>>
 		<</button>>
 	</div>
@@ -461,7 +460,6 @@
 						<<set $playerPregnancyBeastDisable to "f">>
 						<<set $npcPregnancyDisable to "f">>
 					<</if>>
-					<<set $cycledisable to _cycledisable>>
 					<<if _incompletePregnancyDisable is "t" or (_incompletePregnancyDisable is "f" and !_foundPregnancy)>>
 						<<set $incompletePregnancyDisable to _incompletePregnancyDisable>>
 						<<npcPregnancyUpdater>>
diff --git a/game/base-system/transformations.twee b/game/base-system/transformations.twee
index 2f7963e475ad00e3bf80c6eea21e20af344e7f68..fe0e935e6782da64c3ce418c9d221b2de8bb8098 100644
--- a/game/base-system/transformations.twee
+++ b/game/base-system/transformations.twee
@@ -150,7 +150,7 @@
 			<<case "demon">> <<set $demonbuild = Math.clamp($demonbuild + _args[1], 0, 100)>>
 		<</switch>>
 	<</if>>
-	<<if _args[0] isnot "angel" and _args[0] isnot "demon" and _args[1] gte 1>>
+	<<if !["angel", "fallen", "demon"].includes(_args[0]) and _args[1] gte 1>>
 		<<if _args[0] isnot "wolf" and $worn.neck.name isnot "spiked collar" and $worn.neck.name isnot "spiked collar with leash">>
 			<<set $wolfbuild = Math.clamp($wolfbuild - _args[1], 0, 100)>>
 		<</if>>
diff --git a/game/overworld-town/loc-chalets/widgets.twee b/game/overworld-town/loc-chalets/widgets.twee
index ecf5b754840c9beab3562d933e21f61ef205d8df..e77b475471c33c5a31a5f78f843627dc911177e1 100644
--- a/game/overworld-town/loc-chalets/widgets.twee
+++ b/game/overworld-town/loc-chalets/widgets.twee
@@ -157,7 +157,7 @@
         <br><br>
         There are two others inside, a <<person2>><<person>> and a <<person3>><<person>>, both seated. They pretend to ignore you as you go about your work.
         <br><br>
-        <<if random(1, 3) is 3>>
+        <<if random(1, 3) is 3 and $worn.neck.collared isnot 1>>
             "Fancy making some extra cash?" the <<person1>><<person>> asks as you're finishing up. "We could use some entertainment." <<He>> holds a dog collar and leash.
             <br><br>
             "I'll give you <span class="gold">£30</span> If you let me lead you around with this, just for five minutes."
diff --git a/game/overworld-town/loc-home/widgets.twee b/game/overworld-town/loc-home/widgets.twee
index c12aa1068eb5cb6c5bd7878bc0ebdb2a75ecfc4c..cda685ab03c46fd80df5e5319395839b02235a73 100644
--- a/game/overworld-town/loc-home/widgets.twee
+++ b/game/overworld-town/loc-home/widgets.twee
@@ -70,8 +70,6 @@
 <</widget>>
 
 <<widget "slimeWakeAlleyway">>
-	<<set _newLocation to ["Residential alleyways", "Commercial alleyways", "Park", "Industrial alleyways"].random()>>
-	<<set $eventskip to 1>>
 	<<set $earSlime.eventTimer to 3>>
 	<<storeon "bed" "return">>
 	/* effects and sleepeffects requires due to ending sleep and changing location */
@@ -80,23 +78,31 @@
 
 	You wake up in a confused and disoriented state. The last thing you recall is getting into bed <<if $robinbed is "theirs">>with Robin<<else>>like normal<</if>>. However, you're clearly not in it anymore. You have a feeling that the slime in your ear is involved in some way.
 	<br><br>
+	<<if $tutorial or $debug>>
+		<<set _newLocation to ["Residential alleyways", "Commercial alleyways", "Park", "Industrial alleyways"].random()>>
+		<<set $eventskip to 1>>
 
-	<<if random(0,100) gt 80 and (maleChance() lt 100 or $cbchance gt 0) and $earSlime.deviancy gte 3>>
-		<<set _coveredIn to "slime">>
-		<<slimeWakeBodyliquid "goo">>
-	<</if>>
-	<<if random(0,100) gt 80 and (maleChance() gt 0 or $dgchance gt 0) and $earSlime.promiscuity gte 3>>
-		<<set _coveredIn to (_coveredIn is "slime" ? "slime and semen" : "semen")>>
-		<<slimeWakeBodyliquid "semen">>
-	<</if>>
-	<<if _coveredIn isnot undefined>>
-		On top of this predicament, you find yourself covered in <<print _coveredIn>>. If this was the slime's doing, it clearly had its fun with your body while you slept.
+		<<if random(0,100) gt 80 and (maleChance() lt 100 or $cbchance gt 0) and $earSlime.deviancy gte 3>>
+			<<set _coveredIn to "slime">>
+			<<slimeWakeBodyliquid "goo">>
+		<</if>>
+		<<if random(0,100) gt 80 and (maleChance() gt 0 or $dgchance gt 0) and $earSlime.promiscuity gte 3>>
+			<<set _coveredIn to (_coveredIn is "slime" ? "slime and semen" : "semen")>>
+			<<slimeWakeBodyliquid "semen">>
+		<</if>>
+		<<if _coveredIn isnot undefined>>
+			On top of this predicament, you find yourself covered in <<print _coveredIn>>. If this was the slime's doing, it clearly had its fun with your body while you slept.
+			<br><br>
+		<</if>>
+		Having a look round your surroundings, you think that you've somehow been relocated to the <<print _newLocation.toLocaleLowerCase()>>.
+		<br><br>
+		<<link [[Next|_newLocation]]>><</link>>
+	<<else>>
+		<<set $tutorial to 1>>
+		<<generate1>><<person1>>Without warning, a <<person>> passing by, bumps into you. <<He>> staggers back and looks at you with anger, but <<his>> rage turns to lechery as <<he>> beholds you. "You're the cutest thing I've seen all week! Come 'ere."
 		<br><br>
+		<<link [[Next|Tutorial]]>><<set $molestationstart to 1>><<set $tutorialExit to "Residential alleyways">><</link>>
 	<</if>>
-	Having a look round your surroundings, you think that you've somehow been relocated to the <<print _newLocation.toLocaleLowerCase()>>.
-	<br><br>
-	<<link [[Next|_newLocation]]>><</link>>
-
 	<<exitAll>>
 <</widget>>
 
diff --git a/img/sex/close/doggy/vaginabigparasitepanty.png b/img/sex/close/doggy/vaginabigparasitepanty.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c43b276556cd3de132b19526b91e1fab555bef4
Binary files /dev/null and b/img/sex/close/doggy/vaginabigparasitepanty.png differ
diff --git a/img/sex/close/doggy/vaginabigparasitepanty_gray.png b/img/sex/close/doggy/vaginabigparasitepanty_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e55908d7c854e401dcf0ba36bfcd5ff2417479f
Binary files /dev/null and b/img/sex/close/doggy/vaginabigparasitepanty_gray.png differ
diff --git a/img/sex/close/doggy/vaginabigparasiteshorts.png b/img/sex/close/doggy/vaginabigparasiteshorts.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd8ef6e583d69a0402b3fa84a3f64e83fd0e23ef
Binary files /dev/null and b/img/sex/close/doggy/vaginabigparasiteshorts.png differ
diff --git a/img/sex/close/doggy/vaginabigparasiteshorts_gray.png b/img/sex/close/doggy/vaginabigparasiteshorts_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef9ba1793be1f4f88904217385248e8934ac8e20
Binary files /dev/null and b/img/sex/close/doggy/vaginabigparasiteshorts_gray.png differ
diff --git a/img/sex/close/doggy/vaginaparasitepenetratebig_gray.png b/img/sex/close/doggy/vaginaparasitepenetratebig_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e55908d7c854e401dcf0ba36bfcd5ff2417479f
Binary files /dev/null and b/img/sex/close/doggy/vaginaparasitepenetratebig_gray.png differ
diff --git a/img/sex/close/missionary/vaginabigparasitepanty.png b/img/sex/close/missionary/vaginabigparasitepanty.png
new file mode 100644
index 0000000000000000000000000000000000000000..acf7fecf4a216f87e0c4cceeded832ded2a67d9c
Binary files /dev/null and b/img/sex/close/missionary/vaginabigparasitepanty.png differ
diff --git a/img/sex/close/missionary/vaginabigparasitepanty_gray.png b/img/sex/close/missionary/vaginabigparasitepanty_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e350205f130fba2309cbb00255046d12039e780
Binary files /dev/null and b/img/sex/close/missionary/vaginabigparasitepanty_gray.png differ
diff --git a/img/sex/close/missionary/vaginabigparasiteshorts.png b/img/sex/close/missionary/vaginabigparasiteshorts.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e34f9dc62139324d67ff87c259d1c4fad4e2599
Binary files /dev/null and b/img/sex/close/missionary/vaginabigparasiteshorts.png differ
diff --git a/img/sex/close/missionary/vaginabigparasiteshorts_gray.png b/img/sex/close/missionary/vaginabigparasiteshorts_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..0070af56ac3ca9c880ab22a17c3e4036f97869ce
Binary files /dev/null and b/img/sex/close/missionary/vaginabigparasiteshorts_gray.png differ
diff --git a/img/sex/close/missionary/vaginapenetratebig.png b/img/sex/close/missionary/vaginapenetratebig.png
index e2a6a67c5bf5659728af66e07dcdc77f72c50636..219173de3450956a5d7719b530bbf351b2519276 100644
Binary files a/img/sex/close/missionary/vaginapenetratebig.png and b/img/sex/close/missionary/vaginapenetratebig.png differ
diff --git a/img/sex/closeRed/missionary/vaginapenetratebig.png b/img/sex/closeRed/missionary/vaginapenetratebig.png
index 05733ca26617e782294c62de982bd9c5e1717d7e..8111aa57cd658c6b66edd486d95b4483e916121f 100644
Binary files a/img/sex/closeRed/missionary/vaginapenetratebig.png and b/img/sex/closeRed/missionary/vaginapenetratebig.png differ