code:
:: StoryData
{
"ifid": "A6AFB52D-38F2-4CB5-86A8-54BF665670D6"
}

:: StorySettings
ifid:53a77e3c-607d-4e9a-9da4-db728646c388

:: StoryTitle
Degrees of Lewdity

:: Start [nobr nosave]
<<effects>>

This work of fiction contains content of a sexual nature and is inappropriate for minors. All characters depicted are at least 18 years of age. Everything is consensual role play, and any animals are actually people in costumes.

Save files are stored in your browser's cache. Save to file in the Export/Import tab in options to avoid losing them.

<<initsettings>>
<<settings>>

[[Begin->Start2]]

:: Start2 [nobr]

<<variablesStart2>>
<<effects>>

Welcome to the alpha of Degrees of Lewdity!

If you want to avoid trouble, dress modestly and stick to safe, well-lit areas. Nights are particularly dangerous. Dressing lewd will attract attention, both good and bad.

The new school year starts tomorrow at 9:00. The bus service is the easiest way to get around town. Don't forget your uniform!

<<link [[Next|Orphanage Intro]]>><</link>>

<<if $debug is 1>><<set $cheatdisable to "f">><<set $money to 500000>>
	<<link [[School Start|Oxford Street]]>><<pass 1 day>><</link>>

	<<link [[Science Start|Oxford Street]]>><<pass 1 day>><<pass 2 hours>><</link>>

	<<link [[Maths Start|Oxford Street]]>><<pass 1 day>><<pass 3 hours>><</link>>

	<<link [[English Start|Oxford Street]]>><<pass 1 day>><<pass 4 hours>><</link>>

	<<link [[History Start|Oxford Street]]>><<pass 1 day>><<pass 6 hours>><</link>>

	<<link [[Swimming Start|Oxford Street]]>><<pass 1 day>><<pass 7 hours>><</link>>

	<<link [[Testing Room]]>><<upperstrip>><<lowerstrip>><<underlowerstrip>><</link>>

	<<link [[Robin Low Trauma Low Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 0>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 2>><<trauma 60>><</link>>

	<<link [[Robin Low Trauma Medium Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 50>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 2>><<trauma 60>><</link>>

	<<link [[Robin Low Trauma High Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 90>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 2>><<trauma 60>><</link>>

	<<link [[Robin High Trauma Low Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 0>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

	<<link [[Robin High Trauma Medium Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 50>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

	<<link [[Robin High Trauma High Love|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $NPCName[$NPCNameList.indexOf("Robin")].love to 90>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

	<<link [[Robin After Paying Police With Money|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $robinpolicepay to 1>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

	<<link [[Robin After Paying Police With Body|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $robinpolicebody to 1>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

	<<link [[Robin's Debt Paid|Robin's Room Entrance]]>><<npc Robin>><<endevent>><<set $robinpaid to 1>><<set $NPCName[$NPCNameList.indexOf("Robin")].init to 1>><<set $trauma to ($traumamax / 7) * 4>><<trauma 60>><</link>>

<</if>>


code:
Config.history.controls = false;

Config.history.maxStates = 1;

State.initPRNG();

window.versionUpdateCheck = true;

Config.saves.onLoad = function (save) {
	window.versionUpdateCheck = true;
}

/*LinkNumberify and images will enable or disable the feature completely*/
/*debug will enable or disable the feature only for new games*/
window.StartConfig = {
	"debug": 1,
	"enableImages": true,
	"enableLinkNumberify": true,
	"version": "0.2.5.3",
}

config.saves.autosave = "autosave";

Config.saves.isAllowed = function () {
	if (tags().contains("nosave")) {
		return false;
	}
	return true;
};

prehistory['version-update'] = function () {
	if (Story.has('VersionUpdate')) {
		try {
			Wikifier.wikifyEval(Story.get('VersionUpdate').text);
		}
		catch (ex) {
			Alert.error('VersionUpdate', ex.message);
		}
	}
};

importStyles("style.css")
.then(function () {
	console.log("External Style Sheet Active")
})
.catch(function (err) {
	console.log("External Style Sheet Missing");
});

license: mit


code:
:: Widgets Version Info [widget]
<<widget "versioninfo">><<nobr>>

Degrees of Lewdity <<print StartConfig.version>>

"ETA Soon" edition

More information can be found at [[https://vrelnir.blogspot.com/| "https://vrelnir.blogspot.com/"]]

<</nobr>><</widget>>


code:
mouse.tooltip {font-weight: normal;}

mouse.tooltip span {
	z-index:210;
	display:none;
	padding:14px 10px;
	margin-top:50px; margin-left:-40px;
	min-width: 50px;
	max-width: 450px !important;
	line-height:20px;
	border-radius:2px;
	box-shadow: 0px 0px 8px 4px #000;
}

mouse.tooltip:hover span {
	display:inline;
	position:absolute;
	border:2px solid #000000;
	color: #000000;
	font-weight: normal;
	text-decoration: none;
	font-size:1.0em;
	background:#C4C4C4 repeat-x 0 0;
}

#saveDataInput {
	min-width: inherit;
	width: 95%
}

.passage {
	-o-transition:.2s ease-in;
	transition:.2s ease-in;
}

.closeButton, .macro-button {
	width: 100%;
	font-size: 110%;
	max-width: 240px;
	background-color: #222;
	border: 1px solid #444;
}

.fixedClose {
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	background-color: #222;
	width: auto;
	height: auto;
	margin: 0;
	z-index: 1;
	padding: 0;
	border-bottom: 1px solid #fff;
}

.macro-button:hover {
	background-color: #333;
	border: 1px solid #fff;
}

.customOverlay {
	display: block;
	position:fixed;
	top: 20px;
	bottom: 20px;
	left: 20px;
	right:20px;
	height: auto;
	width: auto;
	border: 2px #fff solid;
	background-color: #222;
	text-align: left;
	padding: 0 3px 3px;
	overflow-y: scroll;
	z-index: 1000;
	max-width: 1000px;
}

@media only screen and (min-width: 801px) {
	.customOverlay {
		left: 300px;
	}
}

.debugOverlay {
	display: block;
	position: fixed;
	top: 20px;
	bottom: 20px;
	right: 20px;
	height: auto;
	width: auto;
	max-width: 700px;
	z-index: 1001;
	padding: 3px;
	border: 2px #fff solid;
	background-color: #333;
	overflow-y: scroll;
}

.overlayMenu ul {
	text-align: left;
	list-style: none;
	margin: 0;
	padding: 0;
}

.overlayMenu ul li {
	float: left;
	height: 35px;
	margin-right: 1px;
}

.debugOverlay ul li input {
	width: 80px;
	margin: 0;
}

.overlayItem {
	border-top: 2px #fff solid;
	clear: both;
}

#statsHelp {
	overflow-y: scroll;
	height: auto;
	max-height: 200px;
}

.hidden {
	display: none;
}

.close {
	background-color: darkred;
}

#savesList {
	border: 1px solid #ccc;
	max-width: 700px;
	width: 95%;
}

#savesList tr {
	border-top: 1px solid #999;
	margin: 1px;
	line-height: 1;
}

#savesList tr:first-child {
	border-top: 1px solid #ccc;
}

#savesList tr td:first-child {
	padding: 8px;
}

#savesList tr td {
	margin: 1px;
}

.datestamp {
	font-size: 13px;
}

.right {
	float: right;
}

.saveMenuButton {
	background-color: #4372FF !important;
	margin: 4px 4px 4px 0;
}

.saveMenuButton:hover {
	background-color: #4372FF !important;
}

#menu {
	display: none;
}

.settingsToggle {
	display: inline-block;
	float: left;
	width: 45%;
	min-width: 275px;
	padding: 3px;
	margin: 5px;
	border: 1px solid #666;
}

#divmap {
		position: relative;
		display: inline-block;
		height: 256px;
		width: 256px;

}

#map {
		position: absolute;
		left: 0px;
		top: 0px;
	z-index: 10;
}

#maparrow {
		position: absolute;
		left: 0px;
		top: 0px;
	z-index: 20;
}

#ui-bar-toggle {
	z-index: 500;
}

#ui-bar {
	z-index: 300;
}

body.has-images header#title {
	display: none;
}
body.has-images #story-caption {
	/* 256 px: images
	2.5 em: ui-bar-body margin-top */
	margin-top: calc(256px - 2.5em);
}

}

.nostyle {
	list-style: none;
}

/*Wardrobe UI*/
.clothingBox {
	display: inline-block;
	float: left;
	border: solid 2px #fff;
	height: 250px;
	width: 270px;
	padding: 4px;
	margin: 2px;
}

.clothingBox div{
	position: relative;
	bottom: 0px;
	height: 190px;
	overflow-y: scroll;
}

.clothingBox div ul{
	margin-left: 0px;
}

.red {
	color: #EC3535;
}

.pink {
	color: #E40081;
}

.purple {
	color: #AA4BC8;
}

.blue {
	color: #4372FF;
}

.lblue {
	color: #559BC0;
}

.teal {
	color: #08C1C1;
}

.green {
	color: #38B20A;
}

.brown {
	color: #4C2217;
}

.brat {
	color: #B75D41;
}

.meek {
	color: #C44B8B;
}

.def {
	color: #D20000;
}

.hide a {
	color: #eee;
	text-decoration: none;
}

.hide a:hover {
	color: #eee;
	text-decoration: none;
}

.sub {
	color: #AA4BC8;
}

.gold {
	color: #FFD700;
}

.yellow {
	color: #FFD700;
}

.orange {
	color: #f28500
}

.tangerine {
	color: #f28500
}

.black {
	color: #929292
}

.brown {
	color: #aa7243
}

.lightbrown {
	color: #C5793A
}

.platinum {
	color: #FEF593
}

.strawberry {
	color: #F08C51
}

.lewd {
	color: #E04880
}

.grey {
	color: #B7B7B7
}

.general {
	opacity: 0.99;

}

.wetstage2 {
	opacity: 0.90;
		filter: brightness(0.95);

}

.wetstage3 {
	opacity: 0.75;
		filter: brightness(0.90);

}

#stats {
	height: 20px;
	width: 256px;
	overflow: hidden;
	border-top: #fff 2px solid;
	border-bottom: #fff 2px solid;
	position: fixed;
	top: 232px;
	left: 0px;
}

#stats > * {
	position: absolute;
	top: 232px;
	left: 0px;
}

.icon_ui {
	position: static !important;
	height: 14px;
	width: 14px;
}

#statbar {
	position: relative;
	left: 0px;
	top: 9px;
	z-index: 0;
}

#img {
	height: 256px;
	width: 256px;
	overflow: hidden;

	position: fixed;
	top: 0px;
	left: 0px;
}

#img > * {
	position: absolute;
	top: 0px;
	left: 0px;
}

.icon_ui {
	position: static !important;
	height: 14px;
	width: 14px;
}
.layer-bg {
	z-index: 0;
}

#relative {
	position: relative;
	width: 0px;
	height: 0px;
	z-index: 10;
}

#icon {
	position: static;
	vertical-align:middle;
}

#daystate {
	position: fixed;
	left: 0px;
	top: 0px;
	z-index: 10;
}

#weather {
	position: fixed;
	left: 0px;
	top: 64px;
	z-index: 10;
}

#location {
	position: fixed;
	left: 0px;
	top: 128px;
	z-index: 10;
}

#spray1 {
	position: fixed;
	left: 0px;
	top: 192px;
	z-index: 10;
}

#spray2 {
	position: fixed;
	left: 16px;
	top: 192px;
	z-index: 10;
}

#spray3 {
	position: fixed;
	left: 32px;
	top: 192px;
	z-index: 10;
}

#spray4 {
	position: fixed;
	left: 48px;
	top: 192px;
	z-index: 10;
}

#spray5 {
	position: fixed;
	left: 64px;
	top: 192px;
	z-index: 10;
}

#divandroidxray {
	position: relative;
	display: inline-block;
	height: 256px;
	width: 256px;
}

#xrayvaginal, #divsex #xrayvaginal {
	position: absolute;
	left: 0px;
	top: 0px;
	z-index: 3;
}

#xrayvaginalcum, #divsex #xrayvaginalcum {
	position: absolute;
	left: 0px;
	top: 0px;
	z-index: 4;
}

#xraypenile, #divsex #xraypenile {
	position: absolute;
	left: 0px;
	top: 0px;
	z-index: 2;
}

#xrayanal, #divsex #xrayanal {
	position: absolute;
	left: 512px;
	top: 0px;
	z-index: 1;
}

#xrayandroidanal, #divsex #xrayandroidanal {
	position: relative;
	left: 0px;
	top: -150px;
	z-index: 1;
}

/*
removed unused:
#arm #underacc #legs #feet #bottom #top #sleeve #outer #outersleeve #neckacc
*/

.layer-head-back {
	z-index: 0;
}
.layer-basehead {
	z-index: 5;
}
.layer-backhair {
	z-index: 10;
}
.layer-back-lower {
	z-index: 15;
}
.layer-base {
	z-index: 20;
}
.layer-hirsute {
	z-index: 21;
}

.layer-eyes {
	z-index: 30;
}
.layer-sclera {
	z-index: 35;
}
.layer-mouth {
	z-index: 40;
}
.layer-breasts {
	z-index: 35;
}
.layer-blush {
	z-index: 50;
}
.layer-tears {
	z-index: 55;
}
.layer-hair {
	z-index: 60;
}
.layer-brow {
	z-index: 62;
}
.layer-lashes {
	z-index: 64;
}
.layer-legs {
	z-index: 64;
}
.layer-under_lower {
	z-index: 65;
}
.layer-under_lower-top {
	z-index: 67;
}
.layer-under_upper {
	z-index: 70;
}
.layer-under_upper-top {
	z-index: 72;
}
.layer-under_lower-high {
	z-index: 75;
}
.layer-under_lower_top-high {
	z-index: 77;
}
.layer-under {
	z-index: 75;
}
.layer-feet {
	z-index: 85;
}
.layer-lower {
	z-index: 90;
}
.layer-lower_top {
	z-index: 92;
}
.layer-upper {
	z-index: 95;
}
.layer-upper_top {
	z-index: 97;
}

.layer-collar {
	z-index: 103;
}

.layer-rightarm {
	z-index: 105;
}
.layer-leftarm {
	z-index: 105;
}
.layer-rightarmclothes {
	z-index: 110;
}
.layer-leftarmunderclothes {
	z-index: 107;
}
.layer-rightarmunderclothes {
	z-index: 107;
}
.layer-leftarmclothes {
	z-index: 110;
}
.layer-lower-high {
	z-index: 115;
}
.layer-lower-top-high {
	z-index: 117;
}
.layer-hairforwards {
	z-index: 132;
}
.layer-fronthair {
	z-index: 133;
}
.layer-brow {
	z-index: 138;
}
.layer-neck {
	z-index: 140;
}
.layer-face {
	z-index: 145;
}
.layer-head {
	z-index: 150;
}
.layer-penis {
	z-index: 160;
}

.layer-parasite {
	z-index: 160;
}
#divsex {
		position: relative;
		display: inline-block;
		height: 256px;
		width: 768px;

}
#divsex > *, #divandroidsex > * {
	position: absolute;
	left: 256px;
	top: 0px;
}

#divandroidsex {
		position: relative;
		display: inline-block;
		height: 256px;
		width: 256px;
		left: -256px;
}

#closepenis, #divsex #closepenis {
		position: absolute;
		left: 321px;
		top: -30px;
	z-index: 250;
}

#closeanus, #divsex #closeanus {
		position: absolute;
		left: 451px;
		top: -30px;
	z-index: 250;
}

#closevagina, #divsex #closevagina {
		position: absolute;
		left: 386px;
		top: -30px;
	z-index: 250;
}

.layer-voreback {
	z-index: -20;
}
.layer-sexbaseback {
	z-index: 1;
}
.layer-sexpenis {
	z-index: 5;
}
.layer-beastback {
	z-index: 6;
}
.layer-sexbase {
	z-index: 10;
}
.layer-sexbaseoverlay {
	z-index: 12;
}
.layer-sexeyes {
	z-index: 20;
}
.layer-sexsclera {
	z-index: 30;
}
.layer-sexmouth {
	z-index: 40;
}
.layer-sexblush {
	z-index: 50;
}
.layer-sextears {
	z-index: 60;
}
.layer-beastfront {
	z-index: 65;
}
.layer-sexbrow {
	z-index: 80;
}
.layer-sexlashes {
	z-index: 90;
}
.layer-sexbasefront {
	z-index: 100;
}
.layer-doggyhirsute {
	z-index: 101;
}
.layer-sexunder {
	z-index: 102;
}
.layer-sexlower {
	z-index: 104;
}
.layer-sexupper {
	z-index: 106;
}
.layer-sexaboveclothes {
	z-index: 108;
}

.layer-beastforeground {
	z-index: 120;
}

.layer-apparatus {
	z-index: 130;
}
.layer-midapparatus {
	z-index: 131;
}
.layer-frontapparatus {
	z-index: 132;
}

.layer-sexhair {
	z-index: 140;
}

.layer-sexarmsbound {
	z-index: 150;
}

.layer-foreground {
	z-index: 200;
}
.layer-frontforeground {
	z-index: 220;
}

/*! <<numberpool>> macro set for SugarCube v2 */
div[id|="numberbox-body"] {
	display: inline-block;
}
div[id|="numberbox-body"] input {
	min-width: 3em;
	width: 3em;
	text-align: center;
}
div[id|="numberbox-body"] button {
	font-family: "tme-fa-icons";
	font-style: normal;
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: normal;
	speak: none;
	padding: 0.4em 0.6em;
}
div[id|="numberbox-body"] button[id|="numberbox-minus"] {
	margin-right: 0.4em;
}
div[id|="numberbox-body"] button[id|="numberbox-plus"] {
	margin-left: 0.4em;
}

div[id|="numberslider-body"] {
	display: inline-block;
	width: 100%;
}
div[id|="numberslider-body"] span {
	display: inline-block;
	/*font-size: 1.25em;*/
	margin-left: 0.25em;
	min-width: 3em;
	text-align: center;
	vertical-align: middle;
}
div[id|="numberslider-body"] input {
	-webkit-appearance: none;
	cursor: pointer;
	height: 1.25em;
	width: 95%;
	max-width: 20em;
	vertical-align: middle;
}
div[id|="numberslider-body"] input:focus {
	outline: none;
}
div[id|="numberslider-body"] input::-webkit-slider-runnable-track {
	background: #222;
	border: 1px solid #444;
	border-radius: 0;
	cursor: pointer;
	height: 10px;
	width: 100%;
}
div[id|="numberslider-body"] input::-webkit-slider-thumb {
	-webkit-appearance: none;
	background: #ddd;
	border: 3px solid #aaa;
	border-radius: 0;
	cursor: pointer;
	height: 18px;
	margin-top: -5px;
	width: 33px;
}
div[id|="numberslider-body"] input:focus::-webkit-slider-runnable-track {
	background: #222;
}
div[id|="numberslider-body"] input::-moz-range-track {
	background: #222;
	border: 1px solid #444;
	border-radius: 0;
	cursor: pointer;
	height: 10px;
	width: 100%;
}
div[id|="numberslider-body"] input::-moz-range-thumb {
	background: #ddd;
	border: 3px solid #aaa;
	border-radius: 0;
	cursor: pointer;
	height: 18px;
	width: 33px;
}
div[id|="numberslider-body"] input::-ms-track {
	background: transparent;
	border-color: transparent;
	color: transparent;
	cursor: pointer;
	height: 10px;
	width: 99%; /* fallback for MS browsers without support for calc() */
	width: calc(100% - 1px);
}
div[id|="numberslider-body"] input::-ms-fill-lower {
	background: #222;
	border: 1px solid #444;
	border-radius: 0;
}
div[id|="numberslider-body"] input::-ms-fill-upper {
	background: #222;
	border: 1px solid #444;
	border-radius: 0;
}
div[id|="numberslider-body"] input::-ms-thumb {
	background: #ddd;
	border: 3px solid #aaa;
	border-radius: 0;
	cursor: pointer;
	height: 16px;
	width: 33px;
}

label {
	cursor: pointer;
}

.meter {
	position: relative;
	height: 0.3em;
	width: 100%;
	background-color: gray;
	text-align: center;
	z-index: -10;
}
.redbar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #EC3535;
	z-index: 0;
}

.pinkbar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #E40081;
	z-index: 0;
}

.purplebar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #AA4BC8;
	z-index: 0;
}

.bluebar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #4372FF;
	z-index: 0;
}

.lbluebar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #559BC0;
	z-index: 0;
}

.tealbar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #08C1C1;
	z-index: 0;
}

.greenbar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #38B20A;
	z-index: 0;
}

.goldbar {
	position: absolute;
	left: 0;
	top: 0;
	height: 0.3em;
	background-color: #FFD700;
	z-index: 0;
}

/*
 * Hair/Eye/Clothing colour filters
 * Expected document structure:
 * - some outer element has .hair-$haircolour (or .eye-/.lower-/.upper-/.under-) class
 * - inner image element has .colour-hair (or -eye/-lower/-upper/-under) class
 */
/* Hair: base is red */
.hair-black .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(40%) contrast(100%);
	filter: hue-rotate(0deg) saturate(0%) brightness(40%) contrast(100%);
}
.hair-platinumblond .colour-hair {
	-webkit-filter: hue-rotate(57deg) saturate(250%) brightness(180%) contrast(60%) sepia(0.75);
	filter: hue-rotate(57deg) saturate(250%) brightness(180%) contrast(60%) sepia(0.75);
}
.hair-blond .colour-hair {
	-webkit-filter: hue-rotate(60deg) saturate(130%) brightness(135%) contrast(100%);
	filter: hue-rotate(60deg) saturate(130%) brightness(135%) contrast(100%);
}
.hair-blue .colour-hair {
	-webkit-filter: hue-rotate(210deg) saturate(200%) brightness(60%) contrast(150%);
	filter: hue-rotate(210deg) saturate(200%) brightness(60%) contrast(150%);
}
.hair-brown .colour-hair {
	-webkit-filter: hue-rotate(40deg) saturate(100%) brightness(80%) contrast(100%);
	filter: hue-rotate(40deg) saturate(100%) brightness(80%) contrast(100%);
}
.hair-lightbrown .colour-hair {
	-webkit-filter: hue-rotate(40deg) saturate(100%) brightness(100%) contrast(110%);
	filter: hue-rotate(40deg) saturate(100%) brightness(100%) contrast(110%);
}
.hair-darkbrown .colour-hair {
	-webkit-filter: hue-rotate(40deg) saturate(70%) brightness(20%) contrast(100%);
	filter: hue-rotate(40deg) saturate(70%) brightness(20%) contrast(100%);
}
.hair-strawberryblond .colour-hair {
	-webkit-filter: hue-rotate(30deg) saturate(110%) brightness(110%) contrast(100%);
	filter: hue-rotate(30deg) saturate(110%) brightness(110%) contrast(100%);
}
.hair-ginger .colour-hair {
	-webkit-filter: hue-rotate(55deg) saturate(200%) brightness(110%) contrast(100%);
	filter: hue-rotate(55deg) saturate(200%) brightness(110%) contrast(100%);
}
.hair-green .colour-hair {
	-webkit-filter: hue-rotate(90deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(90deg) saturate(100%) brightness(100%) contrast(100%);
}
.hair-teal .colour-hair {
	-webkit-filter: hue-rotate(165deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(165deg) saturate(100%) brightness(100%) contrast(100%);
}
.hair-pink .colour-hair {
	-webkit-filter: hue-rotate(-20deg) saturate(70%) brightness(130%) contrast(100%);
	filter: hue-rotate(-20deg) saturate(70%) brightness(130%) contrast(100%);
}
.hair-hotpink .colour-hair {
	-webkit-filter: hue-rotate(320deg) saturate(100%) brightness(120%) contrast(100%);
	filter: hue-rotate(320deg) saturate(100%) brightness(120%) contrast(100%);
}
.hair-softpink .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(30%) brightness(190%) contrast(100%);
	filter: hue-rotate(0deg) saturate(30%) brightness(190%) contrast(100%);
}
.hair-purple .colour-hair {
	-webkit-filter: hue-rotate(-80deg) saturate(110%) brightness(60%) contrast(200%);
	filter: hue-rotate(-80deg) saturate(110%) brightness(60%) contrast(200%);
}
.hair-red .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
}
.hair-crimson .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(155%) brightness(75%) contrast(135%);
	filter: hue-rotate(0deg) saturate(155%) brightness(75%) contrast(135%);
}
.hair-white .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(160%) contrast(100%);
	filter: hue-rotate(0deg) saturate(0%) brightness(160%) contrast(100%);
}
.hair-snowwhite .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(190%) contrast(100%);
	filter: hue-rotate(0deg) saturate(0%) brightness(190%) contrast(100%);
}
.hair-deepblue .colour-hair {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(190%) contrast(100%);
	filter: hue-rotate(240deg) saturate(100%) brightness(40%) contrast(120%);
}

/* Eye: base is hazel */
.eye-dark-blue .colour-eye {
	-webkit-filter: hue-rotate(170deg) brightness(90%) saturate(100%) contrast(140%);
	filter: hue-rotate(170deg) brightness(90%) saturate(100%) contrast(140%);
}
.eye-light-blue .colour-eye {
	-webkit-filter: hue-rotate(160deg) brightness(180%) saturate(120%) contrast(100%);
	filter: hue-rotate(160deg) brightness(180%) saturate(120%) contrast(100%);
}
.eye-purple .colour-eye {
	-webkit-filter: hue-rotate(-120deg) brightness(80%) saturate(200%) contrast(190%);
	filter: hue-rotate(-120deg) brightness(80%) saturate(200%) contrast(190%);
}
.eye-hazel .colour-eye {
	-webkit-filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
}
.eye-amber .colour-eye {
	-webkit-filter: hue-rotate(0deg) brightness(170%) saturate(100%) contrast(100%);
	filter: hue-rotate(0deg) brightness(170%) saturate(100%) contrast(100%);
}
.eye-green .colour-eye {
	-webkit-filter: hue-rotate(30deg) brightness(140%) saturate(100%) contrast(100%);
	filter: hue-rotate(30deg) brightness(140%) saturate(100%) contrast(100%);
}
.eye-lightgreen .colour-eye {
	-webkit-filter: hue-rotate(30deg) brightness(170%) saturate(160%) contrast(100%);
	filter: hue-rotate(30deg) brightness(170%) saturate(160%) contrast(100%);
}
.eye-red .colour-eye {
	-webkit-filter: hue-rotate(335deg) saturate(200%) brightness(100%) contrast(140%);
	filter: hue-rotate(335deg) saturate(200%) brightness(100%) contrast(140%);
}
.eye-pink .colour-eye {
	-webkit-filter: hue-rotate(-105deg) brightness(150%) saturate(120%) contrast(120%);
	filter: hue-rotate(-105deg) brightness(150%) saturate(120%) contrast(120%);
}
.eye-grey .colour-eye {
	-webkit-filter: hue-rotate(0deg) brightness(140%) saturate(0%) contrast(100%);
	filter: hue-rotate(0deg) brightness(140%) saturate(0%) contrast(100%);
}
/* Clothing: base is red */
.upper-blue .colour-upper, .lower-blue .colour-lower, .under_lower-blue .colour-under_lower, .under_upper-blue .colour-under_upper, .head-blue .colour-head, .face-blue .colour-face, .neck-blue .colour-neck, .legs-blue .colour-legs, .feet-blue .colour-feet, .upper_acc-blue .colour-upper_acc, .lower_acc-blue .colour-lower_acc, .under_lower_acc-blue .colour-under_lower_acc, .under_upper_acc-blue .colour-under_upper_acc, .head_acc-blue .colour-head_acc, .face_acc-blue .colour-face_acc, .neck_acc-blue .colour-neck_acc, .legs_acc-blue .colour-legs_acc, .feet_acc-blue .colour-feet_acc {
	-webkit-filter: hue-rotate(-120deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(-120deg) saturate(100%) brightness(100%) contrast(100%);
}
.upper-white .colour-upper, .lower-white .colour-lower, .under_lower-white .colour-under_lower, .under_upper-white .colour-under_upper, .head-white .colour-head, .face-white .colour-face, .neck-white .colour-neck, .legs-white .colour-legs, .feet-white .colour-feet, .upper_acc-white .colour-upper_acc, .lower_acc-white .colour-lower_acc, .under_lower_acc-white .colour-under_lower_acc, .under_upper_acc-white .colour-under_upper_acc, .head_acc-white .colour-head_acc, .face_acc-white .colour-face_acc, .neck_acc-white .colour-neck_acc, .legs_acc-white .colour-legs_acc, .feet_acc-white .colour-feet_acc {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(440%) contrast(140%);
	filter: hue-rotate(0deg) saturate(0%) brightness(440%) contrast(140%);
}
.upper-red .colour-upper, .lower-red .colour-lower, .under_lower-red .colour-under_lower, .under_upper-red .colour-under_upper, .head-red .colour-head, .face-red .colour-face, .neck-red .colour-neck, .legs-red .colour-legs, .feet-red .colour-feet, .upper_acc-red .colour-upper_acc, .lower_acc-red .colour-lower_acc, .under_lower_acc-red .colour-under_lower_acc, .under_upper_acc-red .colour-under_upper_acc, .head_acc-red .colour-head_acc, .face_acc-red .colour-face_acc, .neck_acc-red .colour-neck_acc, .legs_acc-red .colour-legs_acc, .feet_acc-red .colour-feet_acc {
	-webkit-filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(0deg) saturate(100%) brightness(100%) contrast(100%);
}
.upper-green .colour-upper, .lower-green .colour-lower, .under_lower-green .colour-under_lower, .under_upper-green .colour-under_upper, .head-green .colour-head, .face-green .colour-face, .neck-green .colour-neck, .legs-green .colour-legs, .feet-green .colour-feet, .upper_acc-green .colour-upper_acc, .lower_acc-green .colour-lower_acc, .under_lower_acc-green .colour-under_lower_acc, .under_upper_acc-green .colour-under_upper_acc, .head_acc-green .colour-head_acc, .face_acc-green .colour-face_acc, .neck_acc-green .colour-neck_acc, .legs_acc-green .colour-legs_acc, .feet_acc-green .colour-feet_acc {
	-webkit-filter: hue-rotate(120deg) saturate(100%) brightness(150%) contrast(100%);
	filter: hue-rotate(120deg) saturate(100%) brightness(150%) contrast(100%);
}
.upper-black .colour-upper, .lower-black .colour-lower, .under_lower-black .colour-under_lower, .under_upper-black .colour-under_upper, .head-black .colour-head, .face-black .colour-face, .neck-black .colour-neck, .legs-black .colour-legs, .feet-black .colour-feet, .upper_acc-black .colour-upper_acc, .lower_acc-black .colour-lower_acc, .under_lower_acc-black .colour-under_lower_acc, .under_upper_acc-black .colour-under_upper_acc, .head_acc-black .colour-head_acc, .face_acc-black .colour-face_acc, .neck_acc-black .colour-neck_acc, .legs_acc-black .colour-legs_acc, .feet_acc-black .colour-feet_acc {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(110%) contrast(110%);
	filter: hue-rotate(0deg) saturate(0%) brightness(110%) contrast(110%);
}
.upper-pink .colour-upper, .lower-pink .colour-lower, .under_lower-pink .colour-under_lower, .under_upper-pink .colour-under_upper, .head-pink .colour-head, .face-pink .colour-face, .neck-pink .colour-neck, .legs-pink .colour-legs, .feet-pink .colour-feet, .upper_acc-pink .colour-upper_acc, .lower_acc-pink .colour-lower_acc, .under_lower_acc-pink .colour-under_lower_acc, .under_upper_acc-pink .colour-under_upper_acc, .head_acc-pink .colour-head_acc, .face_acc-pink .colour-face_acc, .neck_acc-pink .colour-neck_acc, .legs_acc-pink .colour-legs_acc, .feet_acc-pink .colour-feet_acc {
	-webkit-filter: hue-rotate(-30deg) saturate(50%) contrast(100%) brightness(160%);
	filter: hue-rotate(-30deg) saturate(50%) contrast(100%) brightness(160%);
}
.upper-purple .colour-upper, .lower-purple .colour-lower, .under_lower-purple .colour-under_lower, .under_upper-purple .colour-under_upper, .head-purple .colour-head, .face-purple .colour-face, .neck-purple .colour-neck, .legs-purple .colour-legs, .feet-purple .colour-feet, .upper_acc-purple .colour-upper_acc, .lower_acc-purple .colour-lower_acc, .under_lower_acc-purple .colour-under_lower_acc, .under_upper_acc-purple .colour-under_upper_acc, .head_acc-purple .colour-head_acc, .face_acc-purple .colour-face_acc, .neck_acc-purple .colour-neck_acc, .legs_acc-purple .colour-legs_acc, .feet_acc-purple .colour-feet_acc {
	-webkit-filter: hue-rotate(-80deg) saturate(100%) brightness(100%) contrast(100%);
	filter: hue-rotate(-80deg) saturate(100%) brightness(100%) contrast(100%);
}
.upper-tangerine .colour-upper, .lower-tangerine .colour-lower, .under_lower-tangerine .colour-under_lower, .under_upper-tangerine .colour-under_upper, .head-tangerine .colour-head, .face-tangerine .colour-face, .neck-tangerine .colour-neck, .legs-tangerine .colour-legs, .feet-tangerine .colour-feet, .upper_acc-tangerine .colour-upper_acc, .lower_acc-tangerine .colour-lower_acc, .under_lower_acc-tangerine .colour-under_lower_acc, .under_upper_acc-tangerine .colour-under_upper_acc, .head_acc-tangerine .colour-head_acc, .face_acc-tangerine .colour-face_acc, .neck_acc-tangerine .colour-neck_acc, .legs_acc-tangerine .colour-legs_acc, .feet_acc-tangerine .colour-feet_acc {
	-webkit-filter: hue-rotate(60deg) saturate(150%) brightness(200%) contrast(100%);
	filter: hue-rotate(60deg) saturate(150%) brightness(200%) contrast(100%);
}
.upper-yellow .colour-upper, .lower-yellow .colour-lower, .under_lower-yellow .colour-under_lower, .under_upper-yellow .colour-under_upper, .head-yellow .colour-head, .face-yellow .colour-face, .neck-yellow .colour-neck, .legs-yellow .colour-legs, .feet-yellow .colour-feet, .upper_acc-yellow .colour-upper_acc, .lower_acc-yellow .colour-lower_acc, .under_lower_acc-yellow .colour-under_lower_acc, .under_upper_acc-yellow .colour-under_upper_acc, .head_acc-yellow .colour-head_acc, .face_acc-yellow .colour-face_acc, .neck_acc-yellow .colour-neck_acc, .legs_acc-yellow .colour-legs_acc, .feet_acc-yellow .colour-feet_acc {
	-webkit-filter: hue-rotate(65deg) saturate(100%) brightness(290%) contrast(300%) sepia(0.55);
	filter: hue-rotate(65deg) saturate(100%) brightness(290%) contrast(300%) sepia(0.55);
}
.upper-brown .colour-upper, .lower-brown .colour-lower, .under_lower-brown .colour-under_lower, .under_upper-brown .colour-under_upper, .head-brown .colour-head, .face-brown .colour-face, .neck-brown .colour-neck, .legs-brown .colour-legs, .feet-brown .colour-feet, .upper_acc-brown .colour-upper_acc, .lower_acc-brown .colour-lower_acc, .under_lower_acc-brown .colour-under_lower_acc, .under_upper_acc-brown .colour-under_upper_acc, .head_acc-brown .colour-head_acc, .face_acc-brown .colour-face_acc, .neck_acc-brown .colour-neck_acc, .legs_acc-brown .colour-legs_acc, .feet_acc-brown .colour-feet_acc {
	-webkit-filter: hue-rotate(55deg) saturate(100%) brightness(90%) contrast(100%);
	filter: hue-rotate(55deg) saturate(100%) brightness(90%) contrast(100%);
}

/* wet clothes */
.upper-wetblue .colour-upper, .lower-wetblue .colour-lower, .under_lower-wetblue .colour-under_lower, .under_upper-wetblue .colour-under_upper {
	-webkit-filter: hue-rotate(-120deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
	filter: hue-rotate(-120deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
}
.upper-wetwhite .colour-upper, .lower-wetwhite .colour-lower, .under_lower-wetwhite .colour-under_lower, .under_upper-wetwhite .colour-under_upper {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(430%) contrast(140%) opacity(0.5);
	filter: hue-rotate(0deg) saturate(0%) brightness(430%) contrast(140%) opacity(0.5);
}
.upper-wetred .colour-upper, .lower-wetred .colour-lower, .under_lower-wetred .colour-under_lower, .under_upper-wetred .colour-under_upper {
	-webkit-filter: hue-rotate(0deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
	filter: hue-rotate(0deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
}
.upper-wetgreen .colour-upper, .lower-wetgreen .colour-lower, .under_lower-wetgreen .colour-under_lower, .under_upper-wetgreen .colour-under_upper {
	-webkit-filter: hue-rotate(120deg) saturate(0.5) brightness(140%) contrast(100%) opacity(0.5);
	filter: hue-rotate(120deg) saturate(0.5) brightness(140%) contrast(100%) opacity(0.5);
}
.upper-wetblack .colour-upper, .lower-wetblack .colour-lower, .under_lower-wetblack .colour-under_lower, .under_upper-wetblack .colour-under_upper {
	-webkit-filter: hue-rotate(0deg) saturate(0%) brightness(90%) contrast(110%) opacity(0.5);
	filter: hue-rotate(0deg) saturate(0%) brightness(90%) contrast(110%) opacity(0.5);
}
.upper-wetpink .colour-upper, .lower-wetpink .colour-lower, .under_lower-wetpink .colour-under_lower, .under_upper-wetpink .colour-under_upper {
	-webkit-filter: hue-rotate(-30deg) saturate(25%) contrast(100%) brightness(150%) opacity(0.5);
	filter: hue-rotate(-30deg) saturate(25%) contrast(100%) brightness(150%) opacity(0.5);
}
.upper-wetpurple .colour-upper, .lower-wetpurple .colour-lower, .under_lower-wetpurple .colour-under_lower, .under_upper-wetpurple .colour-under_upper {
	-webkit-filter: hue-rotate(-90deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
	filter: hue-rotate(-90deg) saturate(0.5) brightness(90%) contrast(100%) opacity(0.5);
}
.upper-wettangerine .colour-upper, .lower-wettangerine .colour-lower, .under_lower-wettangerine .colour-under_lower, .under_upper-wettangerine .colour-under_upper {
	-webkit-filter: hue-rotate(60deg) saturate(0.75) brightness(190%) contrast(100%) opacity(0.5);
	filter: hue-rotate(60deg) saturate(0.75) brightness(190%) contrast(100%) opacity(0.5);
}
.upper-wetyellow .colour-upper, .lower-wetyellow .colour-lower, .under_lower-wetyellow .colour-under_lower, .under_upper-wetyellow .colour-under_upper {
	-webkit-filter: hue-rotate(65deg) saturate(0.5) brightness(280%) contrast(300%) sepia(0.55) opacity(0.5);
	filter: hue-rotate(65deg) saturate(0.5) brightness(280%) contrast(300%) sepia(0.55) opacity(0.5);
}
.upper-wetbrown .colour-upper, .lower-wetbrown .colour-lower, .under_lower-wetbrown .colour-under_lower, .under_upper-wetbrown .colour-under_upper {
	-webkit-filter: hue-rotate(60deg) saturate(150%) brightness(200%) contrast(100%) opacity(0.5);
	filter: hue-rotate(60deg) saturate(150%) brightness(200%) contrast(100%) opacity(0.5);
}

/*
 * Animation-related classes. Work-in-progress
 * Expected document structure:
 * <div class="i256" -- should have the image size-related class
 *					(or have fixed size & overflow: hidden any other way)
 *	<img class="anim-2s anim-2f" -- should have
 *		1) duration-related class like "anim-2s" (2 seconds)
 *		2) frame count-related class like "anim-2f" (2 frames)
 *		OR
 *	<img class="anim-doggy-4f-vfast"
 *		-- should have frame count & speed class
 *			like "anim-doggy-4f-vfast" (4 frames, very fast)
 */
.i256 {
	width: 256px;
	height: 256px;
	overflow: hidden;
}
.i128 {
	width: 128px;
	height: 128px;
	overflow: hidden;
}
.i64 {
	width: 64px;
	height: 64px;
	overflow: hidden;
}
.i256 > *, .i128 > *, .i64 > * {
	position: absolute;
}
.anim-1s, .anim-2s {
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-iteration-count: infinite;
	animation-name: anim-default;
}

/* joint duration & frame-count classes */

/* generic idle animation, -slow(default)/-mid/-fast */
.anim-idle-1f, .anim-idle-1f-slow { }
.anim-idle-2f, .anim-idle-2f-slow {
	-webkit-animation-duration: 2s; /* 1s x 2 */
	-webkit-animation-timing-function: steps(2);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 2s; /* 1s x 2 */
	animation-timing-function: steps(2);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-idle-3f, .anim-idle-3f-slow {
	-webkit-animation-duration: 3s; /* 1s x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 3s; /* 1s x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-idle-4f-mid {
	-webkit-animation-duration: 1320ms; /* 330ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1320ms; /* 330ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-idle-4f-fast {
	-webkit-animation-duration: 320ms; /* 80ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 320ms; /* 80ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}

/* sex animations, main slot */

.anim-doggy-3f-vfast {
	-webkit-animation-duration: 240ms; /* 80ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 240ms; /* 80ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-3f-fast {
	-webkit-animation-duration: 330ms; /* 110ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 330ms; /* 110ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-3f-mid {
	-webkit-animation-duration: 510ms; /* 170ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 510ms; /* 170ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-3f-slow {
	-webkit-animation-duration: 990ms; /* 330ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1320ms; /* 330ms x 3 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-4f-vfast {
	-webkit-animation-duration: 320ms; /* 80ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 320ms; /* 80ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-4f-fast {
	-webkit-animation-duration: 440ms; /* 110ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 440ms; /* 110ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-4f-mid {
	-webkit-animation-duration: 680ms; /* 170ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 680ms; /* 170ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-4f-slow {
	-webkit-animation-duration: 1320ms; /* 330ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1320ms; /* 330ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-5f-vfast {
	-webkit-animation-duration: 400ms; /* 80ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 400ms; /* 80ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-5f-fast {
	-webkit-animation-duration: 550ms; /* 110ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 550ms; /* 110ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-5f-mid {
	-webkit-animation-duration: 850ms; /* 170ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 850ms; /* 170ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-5f-slow {
	-webkit-animation-duration: 1650ms; /* 330ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1650ms; /* 330ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-6f-vfast {
	-webkit-animation-duration: 480ms; /* 80ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 480ms; /* 80ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-6f-fast {
	-webkit-animation-duration: 660ms; /* 110ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 660ms; /* 110ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-6f-mid {
	-webkit-animation-duration: 1020ms; /* 170ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1020ms; /* 170ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-doggy-6f-slow {
	-webkit-animation-duration: 1980ms; /* 330ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1980ms; /* 330ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}

/* sex animations, close-up slots */
.anim-close-3f-vfast {
	-webkit-animation-duration: 240ms; /* 80ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 240ms; /* 80ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-3f-fast {
	-webkit-animation-duration: 330ms; /* 110ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 330ms; /* 110ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-3f-mid {
	-webkit-animation-duration: 510ms; /* 170ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 510ms; /* 170ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-3f-slow {
	-webkit-animation-duration: 990ms; /* 330ms x 3 */
	-webkit-animation-timing-function: steps(3);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 990ms; /* 330ms x 3 */
	animation-timing-function: steps(3);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-4f-vfast {
	-webkit-animation-duration: 320ms; /* 80ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 320ms; /* 80ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-4f-fast {
	-webkit-animation-duration: 440ms; /* 110ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 440ms; /* 110ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-4f-mid {
	-webkit-animation-duration: 680ms; /* 170ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 680ms; /* 170ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-4f-slow {
	-webkit-animation-duration: 1320ms; /* 330ms x 4 */
	-webkit-animation-timing-function: steps(4);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1320ms; /* 330ms x 4 */
	animation-timing-function: steps(4);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
/*Currently unused*/
.anim-close-5f-vfast {
	-webkit-animation-duration: 400ms; /* 80ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 400ms; /* 80ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-5f-fast {
	-webkit-animation-duration: 550ms; /* 110ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 550ms; /* 110ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-5f-mid {
	-webkit-animation-duration: 850ms; /* 170ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 850ms; /* 170ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-5f-slow {
	-webkit-animation-duration: 1650ms; /* 330ms x 5 */
	-webkit-animation-timing-function: steps(5);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1650ms; /* 330ms x 5 */
	animation-timing-function: steps(5);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-6f-vfast {
	-webkit-animation-duration: 480ms; /* 80ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 480ms; /* 80ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-6f-fast {
	-webkit-animation-duration: 660ms; /* 110ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 660ms; /* 110ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-6f-mid {
	-webkit-animation-duration: 1020ms; /* 170ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1020ms; /* 170ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-close-6f-slow {
	-webkit-animation-duration: 1980ms; /* 330ms x 6 */
	-webkit-animation-timing-function: steps(6);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1980ms; /* 330ms x 6 */
	animation-timing-function: steps(6);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}

.anim-xray-8f-vfast {
	-webkit-animation-duration: 320ms; /* 40ms x 8 */
	-webkit-animation-timing-function: steps(8);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 320ms; /* 40ms x 8 */
	animation-timing-function: steps(8);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-xray-8f-fast {
	-webkit-animation-duration: 480ms; /* 60ms x 8 */
	-webkit-animation-timing-function: steps(8);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 480ms; /* 60ms x 8 */
	animation-timing-function: steps(8);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-xray-8f-mid {
	-webkit-animation-duration: 640ms; /* 80ms x 8 */
	-webkit-animation-timing-function: steps(8);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 640ms; /* 80ms x 8 */
	animation-timing-function: steps(8);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}
.anim-xray-8f-slow {
	-webkit-animation-duration: 1320ms; /* 170ms x 8 */
	-webkit-animation-timing-function: steps(8);
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-name: anim-default;
	animation-duration: 1320ms; /* 170ms x 8 */
	animation-timing-function: steps(8);
	animation-iteration-count: infinite;
	animation-name: anim-default;
}

/* duration related-classes.
	When adding, don't forget to add it to rule above with animation-iteration-count */
.anim-1s {
	-webkit-animation-duration: 1s;
	animation-duration: 1s;
}
.anim-2s {
	-webkit-animation-duration: 2s;
	animation-duration: 2s;
}

/* frame-count related classes */
.anim-2f {
	-webkit-animation-timing-function: steps(2);
	animation-timing-function: steps(2);
}
.anim-4f {
	-webkit-animation-timing-function: steps(4);
	animation-timing-function: steps(4);
}

@keyframes anim-default {
	0% {
	-webkit-transform: translateX(0);
	transform: translateX(0);
	}
	100% {
		-webkit-transform: translateX(-100%);
		transform: translateX(-100%);
	}
}


code:
window.overlayShowHide = function(elementId){
	var div = document.getElementById(elementId);
	if(div != undefined){
		div.classList.toggle("hidden");
		if(elementId === "debugOverlay"){
		   SugarCube.State.variables.debugMenu[0] = !SugarCube.State.variables.debugMenu[0];
		}
	}
}

window.overlayMenu = function(elementId, type){
	switch(type){
		case "debug":
		var debug = ["debugMain", "debugCharacter", "debugEvents"]
		for(var i = 0, l = debug.length; i < l; i++){
			var div = document.getElementById(debug[i]);
			if(div != undefined){
				SugarCube.State.variables.debugMenu[1] = elementId;
				if(elementId === debug[i]){
					div.classList.remove("hidden");
				}else{
					div.classList.add("hidden");
				}
			}
		}
		break;
	}
}

/*Sidebar swipe*/
document.addEventListener('touchstart', handleTouchStart, false);
document.addEventListener('touchmove', handleTouchMove, false);

var xDown = null;
var yDown = null;

function getTouches(evt) {
	return evt.touches ||			 // browser API
			evt.originalEvent.touches; // jQuery
}

function handleTouchStart(evt) {
	var firstTouch = getTouches(evt)[0];
	xDown = firstTouch.clientX;
	yDown = firstTouch.clientY;
};

function handleTouchMove(evt) {
	if ( ! xDown || ! yDown ) {
		return;
	}

	/**
	 * Activate the swipe only when finger near the UI Bar.
	 * 50px - +/- width of unstowed UI Bar
	 * 280px - +/- width of unstowed UI bar
	 */
	if ( isUIBarStowed() ) {
		if ( xDown > 50 ) {
			return;
		}
	} else
	{
		if ( xDown > 280 ) {
			return;
		}
	}

	var xUp = evt.touches[0].clientX;
	var yUp = evt.touches[0].clientY;

	var xDiff = xDown - xUp;
	var yDiff = yDown - yUp;

	if ( Math.abs( xDiff ) > Math.abs( yDiff ) ) {/*most significant*/
		if ( xDiff > 0 ) {
			UIBar.stow();/* left swipe */
		} else {
			UIBar.unstow();/* right swipe */
		}
	} else {
		if ( yDiff > 0 ) {
			/* up swipe */
		} else {
			/* down swipe */
		}
	}
	/* reset values */
	xDown = null;
	yDown = null;
};

function isUIBarStowed() {
	return $( '#ui-bar' ).hasClass( 'stowed' );
}

var disableNumberifyInVisibleElements = [
	'#passage-testing-room',
];

// Number-ify links
var currentLinks = [];

function getPrettyKeyNumber(counter) {
	var str = "";

	if (counter > 30)
		str = "Ctrl + ";
	else if (counter > 20)
		str = "Alt + ";
	else if (counter > 10)
		str = "Shift + ";

	if (counter % 10 === 0)
		str += "0";
	else if (counter < 10)
		str += counter;
	else {
		var c = Math.floor(counter / 10);
		str += (counter - (10 * c)).toString();
	}

	return str;
}

$(document).on(':passagerender', function(ev) {
	currentLinks = [];

	if (passage() == "GiveBirth") {
		$(ev.content).find("[type=checkbox]").on('propertychange change', function() { new Wikifier(null, '<<resetPregButtons>>');
		generateNumbers(ev);} );
	}

	generateNumbers(ev);
});

function generateNumbers(ev){
	if (!State.variables.numberify_enabled || !StartConfig.enableLinkNumberify)
		return;

	for (var i = 0; i < disableNumberifyInVisibleElements.length; i++) {
		if ($(ev.content).find(disableNumberifyInVisibleElements[i]).length || $(ev.content).is(disableNumberifyInVisibleElements[i]))
			return; // simply skip this render
	}

	currentLinks = $(ev.content).find(".link-internal"); // wanted to use .macro-link, but wardrobe and something else doesn't get selected, lmao

	$(currentLinks).each(function(i, el) {
		if(!$(el).hasClass('nonumberify')) $(el).html("(" + getPrettyKeyNumber(i + 1) + ") " + $(el).html());
	});
}

$(document).on('keyup', function(ev) {
	if (!State.variables.numberify_enabled || !StartConfig.enableLinkNumberify)
		return;

	if ((ev.keyCode >= 48 && ev.keyCode <= 57) || (ev.keyCode >= 96 && ev.keyCode <= 105)) {
		var fixedKeyIndex = (ev.keyCode < 60 ? ev.keyCode - 48 : ev.keyCode - 96);

		var requestedLinkIndex = [
			9,
			0,
			1,
			2,
			3,
			4,
			5,
			6,
			7,
			8
		][fixedKeyIndex];

		if (ev.ctrlKey)
			requestedLinkIndex += 30;
		else if (ev.altKey)
			requestedLinkIndex += 20;
		else if (ev.shiftKey)
			requestedLinkIndex += 10;

		if ($(currentLinks).length >= requestedLinkIndex + 1)
			$(currentLinks[requestedLinkIndex]).click();
	}
});


code:
function colourContainerClasses() {
	var V = State.variables;
	return 'hair-'  + (V.haircolour||'').replace(/ /g,'-') +
		' ' + 'eye-'   + (V.eyecolour||'').replace(/ /g,'-') +
		' ' + 'upper-' + (V.upperwet > 100 ? 'wet' : '') + (V.worn.upper.colour||'').replace(/ /g,'-') +
		' ' + 'lower-' + (V.lowerwet > 100 ? 'wet' : '') + (V.worn.lower.colour||'').replace(/ /g,'-') +
		' ' + 'under_lower-' + (V.underlowerwet > 100 ? 'wet' : '') + (V.worn.under_lower.colour||'').replace(/ /g,'-') +
		' ' + 'under_upper-' + (V.underupperwet > 100 ? 'wet' : '') + (V.worn.under_upper.colour||'').replace(/ /g,'-') +
		' ' + 'head-' + (V.worn.head.colour||'').replace(/ /g,'-') +
		' ' + 'face-' + (V.worn.face.colour||'').replace(/ /g,'-') +
		' ' + 'neck-' + (V.worn.neck.colour||'').replace(/ /g,'-') +
		' ' + 'legs-' + (V.worn.legs.colour||'').replace(/ /g,'-') +
		' ' + 'feet-' + (V.worn.feet.colour||'').replace(/ /g,'-') +
		' ' + 'upper_acc-' + (V.worn.upper.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'lower_acc-' + (V.worn.lower.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'under_lower_acc-' + (V.worn.under_lower.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'under_upper_acc-' + (V.worn.under_upper.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'head_acc-' + (V.worn.head.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'face_acc-' + (V.worn.face.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'neck_acc-' + (V.worn.neck.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'legs_acc-' + (V.worn.legs.accessory_colour||'').replace(/ /g,'-') +
		' ' + 'feet_acc-' + (V.worn.feet.accessory_colour||'').replace(/ /g,'-')
}
window.colourContainerClasses = colourContainerClasses; // export function


code:
window.hairdressers = function(type, value){
	switch(type){
		case 1:
			SugarCube.State.variables.money -= 3000;
			SugarCube.State.variables.hairlength = (100 * value);
			SugarCube.State.variables.phase = 1;
			new Wikifier(null, '<<pass 20>>');
			break;
		case 2:
			SugarCube.State.variables.money -= 3000;
			SugarCube.State.variables.fringelength = (200 * value);
			SugarCube.State.variables.phase = 2;
			new Wikifier(null, '<<pass 20>>');
			break;
		case 3:
			SugarCube.State.variables.money -= 6000;
			SugarCube.State.variables.haircolour = SugarCube.State.variables.hairdressersHairColour[value];
			SugarCube.State.variables.phase = 3;
			new Wikifier(null, '<<pass 30>>');
			break;
	}
	SugarCube.State.display(SugarCube.State.variables.passage);
}

window.mapMove = function(moveTo){
	var currentPassage = SugarCube.State.variables.passage;
	var destination_table = [];
	for(var i=1; i < SugarCube.State.variables.link_table.length; i++) {
		var temp = SugarCube.State.variables.link_table[i].split("|")[1];
		if(temp) {
			destination_table[destination_table.length] = temp.split("]]")[0];
		}
	}
	var avaliable = SugarCube.State.variables.map.avaliable;

	if(SugarCube.State.variables.debug == 1 || avaliable[currentPassage].includes(moveTo) && destination_table.includes(moveTo))
	//if(SugarCube.State.variables.debug == 1 || avaliable[currentPassage].includes(moveTo))
	{
		new Wikifier(null, '<<pass 5>>');
		SugarCube.State.display(moveTo);
	}
}


code:
window.returnSaveDetails = function(){
	return Save.get();
}

window.loadSave = function(saveSlot){
	if(saveSlot === "auto"){
		Save.autosave.load();
	}else{
		Save.slots.load(saveSlot);
	}
}

window.save = function(saveSlot){
	if(saveSlot != undefined){
		Save.slots.save(saveSlot);
		SugarCube.State.variables.currentOverlay = null;
		overlayShowHide("customOverlay");
	}
}

window.deleteSave = function(saveSlot, confirm){
	if(saveSlot === "all"){
		if(confirm === undefined){
			new Wikifier(null, '<<clearSaveMenu>>');
			return;
		}else if(confirm === true){
			Save.clear();
		}
	}else if(saveSlot === "auto"){
		Save.autosave.delete();
	}else{
		Save.slots.delete(saveSlot);
	}
	new Wikifier(null, '<<resetSaveMenu>>');
}

window.importSave = function(saveFile){
	if(!window.FileReader) return; // Browser is not compatible

	var reader = new FileReader();

	reader.onloadend = function(){
		DeserializeGame(this.result);
	}

	reader.readAsText(saveFile[0]);
}

window.SerializeGame = function () { return Save.serialize(); }; window.DeserializeGame = function (myGameState) { return Save.deserialize(myGameState) };

window.getSaveData = function(){
	var input = document.getElementById("saveDataInput");
	input.value = Save.serialize();
}

window.loadSaveData = function(){
	var input = document.getElementById("saveDataInput");
	var result = Save.deserialize(input.value);
	if (result === null) {
		input.value = "Invalid Save."
	}
}

window.clearTextBox = function(id){
	document.getElementById(id).value = "";
}

window.topTextArea = function(id){
	var textArea = document.getElementById(id);
	textArea.scroll(0, 0);
}

window.bottomTextArea = function(id){
	var textArea = document.getElementById(id);
	textArea.scroll(0, textArea.scrollHeight);
}


code:
:: npcList [widget]
<<widget "npcList">><<nobr>>
<<set $baseNPC = {penis : 0, vagina: 0, breastsdesc: 0, chest: 0, lactation: 0, lefthand: 0, righthand: 0, anus: 0, mouth: 0, gender: 0, description: 0, insecurity: 0, pronoun: 0, pronouns: {he: 0, his: 0}, penissize: 0, breastsize: 0, buttsize: 0, ballssize: 0, penisdesc: 0, breastdesc: 0, health: 0, skincolour: 0, teen: 0, adult: 0, intro:0, speechpenisescape: 0, speechvaginaescape: 0, speechanusescape:0}>>

<<set _n1 to clone($baseNPC)>>
<<set _n2 to clone($baseNPC)>>
<<set _n3 to clone($baseNPC)>>
<<set _n4 to clone($baseNPC)>>
<<set _n5 to clone($baseNPC)>>
<<set _n6 to clone($baseNPC)>>

<<set $NPCList = [_n1, _n2, _n3, _n4, _n5, _n6]>>

<<for _i = 0; _i < $NPCList.length; _i++>>
	<<set $NPCList[_i].lefthand to "none">>
	<<set $NPCList[_i].lefthand to "none">>
	<<set $NPCList[_i].righthand to "none">>
	<<set $NPCList[_i].penis to "none">>
	<<set $NPCList[_i].vagina to "none">>
	<<set $NPCList[_i].mouth to "none">>
	<<set $NPCList[_i].chest to "none">>
	<<set $NPCList[_i].gender to 0>>
	<<set $NPCList[_i].pronoun to 0>>
	<<set $NPCList[_i].description to 0>>
<</for>>
<<set $npcListVersion to 1>>
<</nobr>><</widget>>


code:
:: npcNamed [widget]
<<widget "npcNamed">><<nobr>>
<!-- To add new Named NPC, add new _nXX variable and tag values to end. Rest of code should automatically scope based on size of list. -->
<!-- NPC descriptions is set as names, and their titles are being established for compatibility with general NPCs -->
<<if $npcNamedVersion is 1>>
<<set _tempNPCName to clone($NPCName)>>
<</if>>
<<set $baseNNPC = {penis : 0, vagina: 0, gender: 0, description: 0, insecurity: 0, pronoun: 0, penissize: 0, penisdesc: 0, buttsize: 0, ballssize: 0, breastsize: 0, breastdesc: 0, breastsdesc: 0, skincolour: 0, teen: 0, adult: 0, intro: 0}>>

	<<set _n1 to clone($baseNNPC)>>
	<<set _n2 to clone($baseNNPC)>>
	<<set _n3 to clone($baseNNPC)>>
	<<set _n4 to clone($baseNNPC)>>
	<<set _n5 to clone($baseNNPC)>>
	<<set _n6 to clone($baseNNPC)>>
	<<set _n7 to clone($baseNNPC)>>
	<<set _n8 to clone($baseNNPC)>>
	<<set _n9 to clone($baseNNPC)>>
	<<set _n10 to clone($baseNNPC)>>
	<<set _n11 to clone($baseNNPC)>>
	<<set _n12 to clone($baseNNPC)>>
	<<set _n13 to clone($baseNNPC)>>
	<<set _n14 to clone($baseNNPC)>>
	<<set _n15 to clone($baseNNPC)>>
	<<set _n16 to clone($baseNNPC)>>
	<<set _n17 to clone($baseNNPC)>>
	<<set _n18 to clone($baseNNPC)>>
	<<set _n19 to clone($baseNNPC)>>
	<<set _n20 to clone($baseNNPC)>>
	<<set _n21 to clone($baseNNPC)>>
	<<set _n22 to clone($baseNNPC)>>
	<<set _n23 to clone($baseNNPC)>>

<<set $NPCName = [_n1, _n2, _n3, _n4, _n5, _n6, _n7, _n8, _n9, _n10, _n11, _n12, _n13, _n14, _n15, _n16, _n17, _n18, _n19, _n20, _n21]>>

<<set $NPCNameList to ["Avery","Bailey","Briar","Charlie","Darryl","Doren","Eden","Gwylan","Harper","Jordan","Kylar","Landry","Leighton","Mason","Morgan","River","Robin","Sam","Sirris","Whitney","Winter"]>>

<!-- Draft default pronoun list. Random selection is part of initNPCgender widget -->
/% <<set _pro to ["m","f","f","m","m","m","m","m","f","f","m","m","f","m","f","m","m","m","f","m","m","m","m"]>> %/

<<set _tit to ["businessperson", "caretaker", "brothel owner", "dance coach", "club owner","English teacher","hunter", "shopkeeper", "doctor","pious","loner","criminal","headteacher", "swimming teacher","sewer dweller","maths teacher","orphan","cafe owner","science teacher","bully", "history teacher"]>>

<<set _ins to ["weak","weak","looks","ethics","ethics","ethics","looks","weak","skill","ethics","weak","skill","skill","ethics","weak","ethics","ethics","ethics","ethics","looks","skill"]>>

<<set _swi to ["a","a","a","a","a","a","a","t","a","a","t","a","a","a","a","a","t","a","a","t","a"]>>

<<for _i to 0; _i lt $NPCName.length; _i++>>

	<<set $NPCName[_i].nam to $NPCNameList[_i]>>
	<<set $NPCName[_i].description to $NPCNameList[_i]>>
	<<set $NPCName[_i].title to _tit[_i]>>
	<<set $NPCName[_i].pronoun to "none">>
	<<set $NPCName[_i].gender to "none">>
	<<set $NPCName[_i].penissize to 0>>
	<<set $NPCName[_i].penisdesc to "none">>
	<<if $npcNamedVersion isnot 1>>/*Keeps init from resetting for saves made in 0.2.5*/
		<<set $NPCName[_i].init to 0>>
	<</if>>
	<<set $NPCName[_i].insecurity to _ins[_i]>>
	<<if _swi[_i] is "t">>
		<<set $NPCName[_i].adult to 0>>
		<<set $NPCName[_i].teen to 1>>
	<<else>>
		<<set $NPCName[_i].adult to 1>>
		<<set $NPCName[_i].teen to 0>>
	<</if>>
	<<set $NPCName[_i].trust to 0>>
	<<set $NPCName[_i].love to 0>>
	<<set $NPCName[_i].dom to 0>>
	<<set $NPCName[_i].lust to 0>>
	<<set $NPCName[_i].rage to 0>>
	<<if $npcNamedVersion isnot 1>>
		<<set $NPCName[_i].state to "">>
	<</if>>
	<<set $NPCName[_i].trauma to 0>>
<</for>>

<</nobr>><</widget>>

<<widget "npcNamedUpdate">><<nobr>>/*Applies new system to old saves, and carries over relevant variables.*/

<<if $npcNamedVersion is undefined or $npcNamedVersion is 1>>
<<npcNamed>>
<</if>>

<<if $npcNamedVersion is 1>><<set $npcNamedVersion to 2>><!-- Runs only if a game was saved during V2.5. -->
<<set $NPCName = [_n1, _n2, _n3, _n4, _n5, _n6, _n7, _n8, _n9, _n10, _n11, _n12, _n13, _n14, _n15, _n16, _n17, _n18, _n19, _n20, _n21]>>

	<<for _e to 0; _e lt $NPCName.length; _e++>>
		<<if _e is 0>>
		<<set _lowerCaseName to "avery">>
		<<set _upperCaseName to "Avery">>
		<<elseif _e is 1>>
		<<set _lowerCaseName to "bailey">>
		<<set _upperCaseName to "Bailey">>
		<<elseif _e is 2>>
		<<set _lowerCaseName to "briar">>
		<<set _upperCaseName to "Briar">>
		<<elseif _e is 3>>
		<<set _lowerCaseName to "charlie">>
		<<set _upperCaseName to "Charlie">>
		<<elseif _e is 4>>
		<<set _lowerCaseName to "darryl">>
		<<set _upperCaseName to "Darryl">>
		<<elseif _e is 5>>
		<<set _lowerCaseName to "doren">>
		<<set _upperCaseName to "Doren">>
		<<elseif _e is 6>>
		<<set _lowerCaseName to "eden">>
		<<set _upperCaseName to "Eden">>
		<<elseif _e is 7>>
		<<set _lowerCaseName to "gwylan">>
		<<set _upperCaseName to "Gwylan">>
		<<elseif _e is 8>>
		<<set _lowerCaseName to "harper">>
		<<set _upperCaseName to "Harper">>
		<<elseif _e is 9>>
		<<set _lowerCaseName to "jordan">>
		<<set _upperCaseName to "Jordan">>
		<<elseif _e is 10>>
		<<set _lowerCaseName to "kylar">>
		<<set _upperCaseName to "Kylar">>
		<<elseif _e is 11>>
		<<set _lowerCaseName to "landry">>
		<<set _upperCaseName to "Landry">>
		<<elseif _e is 12>>
		<<set _lowerCaseName to "leighton">>
		<<set _upperCaseName to "Leighton">>
		<<elseif _e is 13>>
		<<set _lowerCaseName to "mason">>
		<<set _upperCaseName to "Mason">>
		<<elseif _e is 14>>
		<<set _lowerCaseName to "morgan">>
		<<set _upperCaseName to "Morgan">>
		<<elseif _e is 15>>
		<<set _lowerCaseName to "river">>
		<<set _upperCaseName to "River">>
		<<elseif _e is 16>>
		<<set _lowerCaseName to "robin">>
		<<set _upperCaseName to "Robin">>
		<<elseif _e is 17>>
		<<set _lowerCaseName to "sam">>
		<<set _upperCaseName to "Sam">>
		<<elseif _e is 18>>
		<<set _lowerCaseName to "sirris">>
		<<set _upperCaseName to "Sirris">>
		<<elseif _e is 19>>
		<<set _lowerCaseName to "whitney">>
		<<set _upperCaseName to "Whitney">>
		<<elseif _e is 20>>
		<<set _lowerCaseName to "winter">>
		<<set _upperCaseName to "Winter">>
		<</if>>

		<<print '<<if $' + _lowerCaseName + 'gender isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].pronoun to $' + _lowerCaseName + 'gender>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'penis isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].penis to $' + _lowerCaseName + 'penis>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'vagina isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].vagina to $' + _lowerCaseName + 'vagina>><</if>>'>>

	<</for>>

<<set $NPCName to clone(_tempNPCName)>>

<<elseif $npcNamedVersion is undefined>><<set $npcNamedVersion to 2>><!-- needed for compatibility for V2.4 and prior saves -->
	<<for _e to 0; _e lt $NPCName.length; _e++>>
		<<if _e is 0>>
		<<set _lowerCaseName to "avery">>
		<<set _upperCaseName to "Avery">>
		<<elseif _e is 1>>
		<<set _lowerCaseName to "bailey">>
		<<set _upperCaseName to "Bailey">>
		<<elseif _e is 2>>
		<<set _lowerCaseName to "briar">>
		<<set _upperCaseName to "Briar">>
		<<elseif _e is 3>>
		<<set _lowerCaseName to "charlie">>
		<<set _upperCaseName to "Charlie">>
		<<elseif _e is 4>>
		<<set _lowerCaseName to "darryl">>
		<<set _upperCaseName to "Darryl">>
		<<elseif _e is 5>>
		<<set _lowerCaseName to "doren">>
		<<set _upperCaseName to "Doren">>
		<<elseif _e is 6>>
		<<set _lowerCaseName to "eden">>
		<<set _upperCaseName to "Eden">>
		<<elseif _e is 7>>
		<<set _lowerCaseName to "gwylan">>
		<<set _upperCaseName to "Gwylan">>
		<<elseif _e is 8>>
		<<set _lowerCaseName to "harper">>
		<<set _upperCaseName to "Harper">>
		<<elseif _e is 9>>
		<<set _lowerCaseName to "jordan">>
		<<set _upperCaseName to "Jordan">>
		<<elseif _e is 10>>
		<<set _lowerCaseName to "kylar">>
		<<set _upperCaseName to "Kylar">>
		<<elseif _e is 11>>
		<<set _lowerCaseName to "landry">>
		<<set _upperCaseName to "Landry">>
		<<elseif _e is 12>>
		<<set _lowerCaseName to "leighton">>
		<<set _upperCaseName to "Leighton">>
		<<elseif _e is 13>>
		<<set _lowerCaseName to "mason">>
		<<set _upperCaseName to "Mason">>
		<<elseif _e is 14>>
		<<set _lowerCaseName to "morgan">>
		<<set _upperCaseName to "Morgan">>
		<<elseif _e is 15>>
		<<set _lowerCaseName to "river">>
		<<set _upperCaseName to "River">>
		<<elseif _e is 16>>
		<<set _lowerCaseName to "robin">>
		<<set _upperCaseName to "Robin">>
		<<elseif _e is 17>>
		<<set _lowerCaseName to "sam">>
		<<set _upperCaseName to "Sam">>
		<<elseif _e is 18>>
		<<set _lowerCaseName to "sirris">>
		<<set _upperCaseName to "Sirris">>
		<<elseif _e is 19>>
		<<set _lowerCaseName to "whitney">>
		<<set _upperCaseName to "Whitney">>
		<<elseif _e is 20>>
		<<set _lowerCaseName to "winter">>
		<<set _upperCaseName to "Winter">>
		<</if>>

		<<print '<<if $' + _lowerCaseName + 'trust isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].trust to $' + _lowerCaseName + 'trust>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'love isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].love to $' + _lowerCaseName + 'love>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'dom isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].dom to $' + _lowerCaseName + 'dom>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'lust isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].lust to $' + _lowerCaseName + 'lust>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'rage isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].rage to $' + _lowerCaseName + 'rage>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'state isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].state to $' + _lowerCaseName + 'state>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'trauma isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].trauma to $' + _lowerCaseName + 'trauma>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'gender isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].pronoun to $' + _lowerCaseName + 'gender>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'gender isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].gender to $' + _lowerCaseName + 'gender>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'penissize isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].penissize to $' + _lowerCaseName + 'penissize>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'penisdesc isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].penisdesc to $' + _lowerCaseName + 'penisdesc>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'penis isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].penis to $' + _lowerCaseName + 'penis>><</if>>'>>
		<<print '<<if $' + _lowerCaseName + 'vagina isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].vagina to $' + _lowerCaseName + 'vagina>><</if>>'>>
		<<print '<<if $init' + _lowerCaseName + ' isnot undefined>><<set $NPCName[$NPCNameList.indexOf("' + _upperCaseName + '")].init to $init' + _lowerCaseName + '>><</if>>'>>

	<</for>>
<</if>>
<</nobr>><</widget>>


code:
:: Widgets pregnancyVar [widget]
<<widget "pregnancyVar">><<nobr>>
	<<containersInit>>
	<<if $objectVersion.prenancyObjectRepair isnot 1>>
		<<prenancyObjectRepair>>
		<<set $objectVersion.prenancyObjectRepair to 1>>
	<</if>>
<</nobr>><</widget>>

<<widget "containersInit">><<nobr>>
<<if $container is undefined>>
	<<set $container to {
		"lastLocation": null,
		"list":["home", "lake"],
		"home":{
			"upgrades":{
				"capacity":0,
				"foodStorage":0,
				"luxury":0
			},
			"name": "Tiny Fish Tank",
			"count": 0,
			"maxCount": 1,
			"daysSinceFed": 0,
			"maxDaysWithoutFood": 3,
			"creatures":{
				0: null
			},
			"deadCreatures": 0,
			"visited": false,
			"leaveLink": "Bedroom"
		},
		"portable":{
			"creatures":[],
			"value":0
		},
		"lake":{
			"upgrades":{
				"capacity":0,
				"foodStorage":0,
				"luxury":0
			},
			"name": "pond",
			"count": 0,
			"maxCount": 3,
			"daysSinceFed": 0,
			"maxDaysWithoutFood": 31,
			"creatures":{
				0: null
			},
			"deadCreatures": 0,
			"visited": false,
			"leaveLink": "Lake Waterfall"
		},
	}>>
<</if>>
<<if $container.home.kylarDelay is undefined>>
	<<set $container.home.kylarDelay to 0>>
	<<set $container.home.kylarFed to false>>
	<<set $container.home.kylarHelp to false>>
<</if>>
<</nobr>><</widget>>

<<widget "prenancyObjectRepair">><<nobr>>
	<<set _pregnancy to $sexStats.anus.pregnancy>>
	<<set _trueCount to 0>>
	<<for _i to 0; _i lt 4; _i++>>
		<<if _pregnancy[_i] isnot null>>
			<<set _trueCount++>>
			<<if _pregnancy[_i].creature is undefined>>
				<<set _pregnancy[_i].creature to either("Tentacle","Spider","Fish","Snake","Eel")>>
			<</if>>
		<</if>>
	<</for>>
	<<if _trueCount isnot _pregnancy.count>>
		<<set _pregnancy.count to clone(_trueCount)>>
	<</if>>
	<<set _list to ["home", "lake", "portable"]>>
	<<for _i to 0; _i lt _list.length; _i++>>
		<<set _container to $container[_list[_i]]>>
		<<for _j to 0; _j lt _container.maxCount; _j++>>
			<<if _container.creatures[_j] isnot undefined and _container.creatures[_j] isnot null>>
				<<if _container.creatures[_j].creature is undefined>>
					<<set _container.creatures[_j].creature to either("Tentacle","Spider","Fish","Snake","Eel")>>
				<</if>>
			<</if>>
			<<if _container.upgrades.luxury is undefined>>
				<<set _container.upgrades.luxury to 0>>
			<</if>>
		<</for>>
	<</for>>
<</nobr>><</widget>>


code:
:: Widgets variablesPassage [widget]
<<widget "variablesPassage">><<nobr>>
/*Variable that you need to check on every passage*/

<<set $link_table to []>>
<<set $map.hideLinksCheck to []>>

<</nobr>><</widget>>


code:
:: PassageHeader [nobr]
<<set $passage to passage()>><<set $tags to tags()>>
<<if $passage isnot "Start" and $passage isnot "Start2">>
	<<if versionUpdateCheck is true>>
		<<variablesVersionUpdate>>
		<<pregnancyVar>>

		<<script>>
			versionUpdateCheck = false;
		<</script>>
	<</if>>
	<<variablesPassage>>
<</if>>


code:
:: StoryInit

<<variablesStatic>>
<<if StartConfig.enableImages is true>>
	<<set $images to 1>>
<<else>>
	<<set $images to 0>>
<</if>>

<<set $debug to StartConfig.debug>>
<<set $dev to 0>>
<<set $numberify_enabled to 1>>

<<set $gamemode to "normal">>

<<set $intro to 1>>
<<set $tutorial to 0>>
<<set $initnpccompatibility to 1>>
<<set $clothing_update to 1>>
<<set $parasite_update to 1>>
<<set $npcNamedVersion to 2>>
<<set $clothing_number to 8>>

<<set $player = {gender: 0, sex: 0, appearance: 0, penis: 0, vagina: 0, penissize: 0, breastsize: 0, buttsize: 0, ballssize: 0, pronoun: 0, pronouns: {he: 0, his: 0}}>>
<<npcList>>
<<npcNamed>>
<<set $controlmax to 1000>>
<<set $control to 1000>>

<<clothinginit>>
<<parasiteinit>>

<<set $time to 420>>
<<set $days to 0>>
<<set $weekday to 1>>
<<set $money to 500>>
<<set $awareness to 0>>
<<set $awarelevel to 0>>
<<set $purity to 1000>>
<<set $devlevel to 10>>
<<set $hairlength to 200>>
<<set $fringelength to 200>>
<<set $hairtype to "default">>
<<set $fringetype to "default">>
<<set $trauma to 0>>
<<set $traumamax to 5000>>
<<set $stressmax to 10010>>
<<set $tirednessmax to 2000>>
<<set $arousalmax to 10000>>
<<set $physique to 3500>>
<<set $physiquemax to 20000>>
<<set $willpower to 200>>
<<set $willpowermax to 1000>>
<<set $beauty to 100>>
<<set $beautymax to 10000>>
<<set $month to "september">>
<<set $monthday to 4>>
<<set $year to 2018>>
<<set $birthmonth to "september">>
<<set $birthday to 3>>
<<set $npc to 0>>
<<set $dancestudioanger to 0>>
<<set $dancelocation to 0>>
<<set $alarm to 0>>
<<set $finish to 0>>
<<set $id to 0>>
<<set $forest to 0>>
<<set $forestmod to 1>>
<<set $tipcount to 0>>
<<set $tipmod to 1>>
<<set $worn.under_lower.anal_shield to 0>>
<<set $blackmoney to 0>>
<<set $crime to 0>>
<<set $crimehistory to 0>>
<<set $worn.neck.collaredpolice to 0>>
<<set $bullytimer to 50>>
<<set $bullytimeroutside to 0>>
<<set $bullyevent to 0>>
<<set $bullyeventoutside to 0>>
<<set $buy to 0>>
<<set $masturbationorgasm to 0>>
<<set $malechance to 50>>
<<set $beastmalechance to 50>>
<<set $monsterhallucinations to "t">>
<<set $monsterchance to 20>>
<<set $deviancy to 0>>
<<set $baileydefeated to 0>>
<<set $baileydefeatedlewd to 0>>
<<set $baileydefeatedchain to 0>>
<<set $robinmoney to 300>>
<<set $alluremod to 1>>
<<set $speechcycle to 0>>
<<set $npcspeechcycle to 0>>
<<set $museumno to 0>>
<<set $museuminterest to 0>>
<<set $crimemax to 50000>>
<<set $orphan_hope to 0>>
<<set $orphan_reb to 0>>
<<set $masochism to 0>>
<<set $masochism_level to 0>>
<<set $lessonmissedtext to 0>>
<<set $lessonmissed to 0>>
<<set $home_event_timer to 3>>
<<set $home_event_count to 0>>

<<set $orgasmtrait to 0>>
<<set $ejactrait to 0>>
<<set $molesttrait to 0>>
<<set $rapetrait to 0>>
<<set $bestialitytrait to 0>>
<<set $tentacletrait to 0>>
<<set $voretrait to 0>>
<<set $milkdranktrait to 0>>

<<set $transformed to 0>>
<<set $angelbuild to 0>>
<<set $angel to 0>>
<<set $angelforgive to 0>>
<<set $demonbuild to 0>>
<<set $demon to 0>>
<<set $demonabsorb to 0>>
<<set $catbuild to 0>>
<<set $cat to 0>>

<<set $seductionskill to 0>>
<<set $oralskill to 0>>
<<set $vaginalskill to 0>>
<<set $analskill to 0>>
<<set $handskill to 0>>
<<set $feetskill to 0>>
<<set $bottomskill to 0>>
<<set $thighskill to 0>>
<<set $chestskill to 0>>
<<set $penileskill to 0>>

<<set $skulduggery to 0>>
<<set $skulduggeryday to 0>>
<<set $danceskill to 0>>
<<set $swimmingskill to 0>>

<<set $hygiene to 0>>
<<set $hunger to 0>>
<<set $thirst to 0>>
<<set $tiredness to 0>>
<<set $arousal to 0>>
<<set $stress to 0>>

<<set $vaginalvirginity to 1>>
<<set $analvirginity to 1>>
<<set $oralvirginity to 1>>
<<set $penilevirginity to 1>>
<<set $comb to 0>>
<<set $pain to 0>>
<<set $combat to 0>>
<<set $location to 0>>
<<set $breastsize to 0>>
<<set $breastsizeold to 0>>
<<set $breastsizemax to 12>>
<<set $breastsizemin to 0>>
<<set $breastsensitivity to 1>>
<<set $bottomsize to 0>>
<<set $bottomsizeold to 0>>
<<set $bottomsizemax to 8>>
<<set $bottomsizemin to 0>>
<<set $bottomgrowthtimer to 350>>
<<set $genitalsensitivity to 1>>
<<set $penissize to 2>>
<<set $penissizemax to 4>>
<<set $penissizemin to 0>>
<<set $penisgrowthtimer to 700>>
<<set $ballssize to 2>>
<<set $ballssizemax to 4>>
<<set $ballssizemin to 0>>
<<set $ballsgrowthtimer to 700>>
<<set $physiqueuse to 0>>
<<set $rapeavoid to 1>>
<<set $sexavoid to 1>>
<<set $molestavoid to 1>>
<<set $rescued to 0>>
<<set $baileyhospital to 0>>
<<set $squidcount to 0>>
<<set $no_underwear to 0>>

<<set $upperwet to 0>>
<<set $upperwetstage to 0>>
<<set $lowerwet to 0>>
<<set $lowerwetstage to 0>>
<<set $underlowerwet to 0>>
<<set $underlowerwetstage to 0>>
<<set $underupperwet to 0>>
<<set $underupperwetstage to 0>>

<<set $genderknown to ["Robin", "Bailey"]>>

<<set $vaginause to 0>>
<<set $anususe to 0>>
<<set $mouthuse to 0>>
<<set $leftarm to 0>>
<<set $rightarm to 0>>
<<set $chestuse to 0>>
<<set $penisuse to 0>>
<<set $thighuse to 0>>
<<set $bottomuse to 0>>
<<set $feetuse to 0>>
<<set $vaginastate to 0>>
<<set $anusstate to 0>>
<<set $mouthstate to 0>>
<<set $penisstate to 0>>
<<set $head to 0>>
<<set $front to 0>>
<<set $back to 0>>
<<set $chest to 0>>

<<set $carryblock to 0>>

<<set $beastgenderoverride to 0>>

<<set $dgchance to 0>>
<<set $cbchance to 0>>
<<set $breast_mod to 0>>
<<set $penis_mod to 0>>

<<set $facebruise to 0>>
<<set $chestbruise to 0>>
<<set $tummybruise to 0>>
<<set $vaginabruise to 0>>
<<set $penisbruise to 0>>
<<set $anusbruise to 0>>
<<set $bottombruise to 0>>
<<set $thighbruise to 0>>
<<set $armbruise to 0>>
<<set $neckbruise to 0>>

<<set $rapestat to 0>>
<<set $beastrapestat to 0>>
<<set $tentaclerapestat to 0>>
<<set $moleststat to 0>>
<<set $vaginalstat to 0>>
<<set $vaginalejacstat to 0>>
<<set $analstat to 0>>
<<set $analejacstat to 0>>
<<set $oralstat to 0>>
<<set $oralejacstat to 0>>
<<set $handstat to 0>>
<<set $handejacstat to 0>>
<<set $feetstat to 0>>
<<set $feetejacstat to 0>>
<<set $thighstat to 0>>
<<set $thighejacstat to 0>>
<<set $bottomstat to 0>>
<<set $bottomejacstat to 0>>
<<set $penilestat to 0>>
<<set $penileejacstat to 0>>
<<set $clothesstripstat to 0>>
<<set $clothesruinstat to 0>>
<<set $orgasmstat to 0>>
<<set $vaginalentranceejacstat to 0>>
<<set $faceejacstat to 0>>
<<set $cheststat to 0>>
<<set $chestejacstat to 0>>
<<set $hairejacstat to 0>>
<<set $tummyejacstat to 0>>
<<set $neckejacstat to 0>>
<<set $ejacstat to 0>>
<<set $hitstat to 0>>
<<set $attackstat to 0>>
<<set $prostitutionstat to 0>>
<<set $forcedprostitutionstat to 0>>
<<set $tablesservedstat to 0>>
<<set $parasitestat to 0>>
<<set $passoutstat to 0>>
<<set $masturbationstat to 0>>
<<set $masturbationorgasmstat to 0>>
<<set $masturbationtimestat to 0>>
<<set $milk_drank_stat to 0>>
<<set $gloryholestat to 0>>

<<set $danceaction to 0>>
<<set $danceactiondefault to 0>>
<<set $dancestat to 0>>
<<set $dancing to 0>>
<<set $pullaway to 0>>
<<set $novaginal to 0>>
<<set $noanal to 0>>
<<set $nopenile to 0>>
<<set $vaginalchastity to 0>>
<<set $analchastity to 0>>
<<set $penilechastity to 0>>
<<set $drinksservedstat to 0>>
<<set $dockhours to 0>>

<<if $rng gte 95>>
<<set $brothel_basement_price to 3000>>
<<elseif $rng gte 85>>
<<set $brothel_basement_price to 2000>>
<<elseif $rng gte 45>>
<<set $brothel_basement_price to 1000>>
<<else>>
<<set $brothel_basement_price to 500>>
<</if>>

<<set $speechorgasmweakcumcount to 0>>
<<set $speechorgasmnocumcount to 0>>
<<set $speechorgasmcount to 0>>
<<set $speechorgasmrepeat to 0>>
<<set $underwatertime to 0>>
<<set $underwater to 0>>
<<set $walltype to "wall">>
<<set $position to 0>>

<<set $submissive to 1000>>
<<set $assertive to 0>>
<<set $assertiveaction to "trauma">>
<<set $exhibitionismaction to "embarrassed">>
<<set $lightexhibitionismaction to "embarrassed">>
<<set $rescue to 0>>
<<set $drugged to 0>>
<<set $drunk to 0>>
<<set $exposed to 0>>
<<set $phase to 0>>
<<set $phase2 to 0>>
<<set $orgasmdown to 0>>
<<set $noise to 0>>
<<set $enemywounded to 0>>
<<set $enemyejaculated to 0>>
<<set $enemyno to 0>>
<<set $semenpuddle to 0>>
<<set $strangle to 0>>
<<set $eventskip to 0>>
<<set $menu to 0>>
<<set $consensual to 0>>
<<set $attention to 0>>
<<set $seconds to 0>>
<<set $minute to 0>>
<<set $orgasmcount to 0>>
<<set $leftboundcarry to 0>>
<<set $rightboundcarry to 0>>
<<set $orgasmcurrent to 0>>
<<set $hospitalintro to 0>>
<<set $traumafocus to 0>>
<<set $pubwhore to 0>>
<<set $policemolestation to 0>>

<<set $npclovehigh to 10>>
<<set $npclovehighsu to 30>>
<<set $npclovelow to -10>>
<<set $npclovelowsu to -30>>
<<set $npcdomhigh to 10>>
<<set $npcdomlow to -10>>

<<set $schoolevent to 0>>
<<set $schooleventtimer to 10>>

<<set $flashbackhome to 0>>
<<set $flashbacktown to 0>>
<<set $flashbackbeach to 0>>
<<set $flashbackunderground to 0>>
<<set $flashbackschool to 0>>
<<set $panicviolence to 0>>
<<set $panicparalysis to 0>>

<<set $colouraction to 0>>
<<set $hungerenabled to 0>>
<<set $thirstenabled to 0>>
<<set $hygieneenabled to 0>>

<<set $weather to either("clear", "clear", "clear", "clear", "overcast", "overcast", "overcast", "overcast", "rain", "rain")>>

<<set $exhibitionism to 0>>
<<set $promiscuity to 0>>
<<set $diagnosis to 0>>
<<set $psych to 0>>
<<set $asylum to 0>>
<<set $audience to 0>>
<<set $audienceexcitement to 0>>
<<set $audiencearousal to 0>>
<<set $audiencemod to 1>>
<<set $venuemod to 1>>
<<set $danceevent to 0>>
<<set $dancephysique to 0>>
<<set $hypnosis to 0>>
<<set $pills to 0>>
<<set $medicated to 0>>
<<set $trance to 0>>
<<set $harperexam to 0>>
<<set $schoolterm to 1>>
<<set $schoolday to 0>>
<<set $sciencemissed to 0>>
<<set $mathsmissed to 0>>
<<set $englishmissed to 0>>
<<set $historymissed to 0>>
<<set $swimmingmissed to 0>>

<<set $fame to 0>>
<<set $fameexhibitionism to 0>>
<<set $fameprostitution to 0>>
<<set $famebestiality to 0>>
<<set $famesex to 0>>
<<set $famerape to 0>>
<<set $famegood to 0>>
<<set $famebusiness to 0>>
<<set $famescrap to 0>>
<<set $famepimp to 0>>
<<set $famepark to 0>>
<<set $park_run_seen_by to []>>

<<set $spray to 0>>
<<set $spraymax to 0>>
<<set $spraystat to 0>>
<<set $infinitespray to 0>>

<<set $mathstrait to 0>>
<<set $englishtrait to 0>>
<<set $sciencetrait to 0>>
<<set $historytrait to 0>>

<<set $wolfgirl to 0>>
<<set $wolfbuild to 0>>

<<set $swarm1 to 0>>
<<set $swarm2 to 0>>
<<set $swarm3 to 0>>
<<set $swarm4 to 0>>
<<set $swarm5 to 0>>
<<set $swarm6 to 0>>
<<set $swarm7 to 0>>
<<set $swarm8 to 0>>
<<set $swarm9 to 0>>
<<set $swarm10 to 0>>
<<set $swarmpending to 0>>
<<set $swarmname to 0>>
<<set $swarmmove to 0>>
<<set $swarmactive to 0>>
<<set $swarmcreature to 0>>
<<set $swarmchestmolest to 0>>
<<set $swarmchestgrab to 0>>
<<set $swarmchestgrabintro to 0>>
<<set $swarmchestgrabclothed to 0>>
<<set $swarmchestclothed to 0>>
<<set $swarmchestcover to 0>>
<<set $swarmactivate to 0>>
<<set $swarmspill to 0>>
<<set $swarmback to 0>>
<<set $swarmbackmolest to 0>>
<<set $swarmbackgrab to 0>>
<<set $swarmbackgrabintro to 0>>
<<set $swarmbackgrabunderclothed to 0>>
<<set $swarmbackunderclothed to 0>>
<<set $swarmbackgrablowerclothed to 0>>
<<set $swarmbacklowerclothed to 0>>
<<set $swarmbackcover to 0>>
<<set $swarmbackinside to 0>>
<<set $swarmbackinsideintro to 0>>
<<set $swarmbackgrablowerchastity to 0>>
<<set $swarmfront to 0>>
<<set $swarmfrontmolest to 0>>
<<set $swarmfrontgrab to 0>>
<<set $swarmfrontgrabintro to 0>>
<<set $swarmfrontgrabunderclothed to 0>>
<<set $swarmfrontunderclothed to 0>>
<<set $swarmfrontgrablowerclothed to 0>>
<<set $swarmfrontlowerclothed to 0>>
<<set $swarmfrontcover to 0>>
<<set $swarmfrontinside to 0>>
<<set $swarmfrontinsideintro to 0>>
<<set $swarmfrontgrablowerchastity to 0>>
<<set $swarmsteady to 0>>
<<set $swarmcount to 0>>

<<set $beasttype to "beast">>
<<set $claws to 1>>
<<set $water to 0>>
<<set $foresthunt to 0>>
<<set $wolfpacktrust to 0>>
<<set $wolfpackfear to 0>>
<<set $sea to 0>>

<<set $penilechastityparasite to 0>>
<<set $vaginalchastityparasite to 0>>
<<set $analchastityparasite to 0>>
<<removeparasite penis>>
<<removeparasite clit>>
<<removeparasite nipples>>

<<set $vorestrength to 0>>
<<set $vorestruggle to 0>>
<<set $voretentacles to 0>>
<<set $vorestage to 0>>
<<set $vorecreature to 0>>
<<set $swallowed to 0>>
<<set $swallowedstat to 0>>

<<set $leftleg to 0>>
<<set $rightleg to 0>>
<<set $breastuse to 0>>
<<set $leftnipple to 0>>
<<set $rightnipple to 0>>
<<set $leftarmstate to 0>>
<<set $rightarmstate to 0>>
<<set $feetstate to 0>>

<<set $neckgoo to 0>>
<<set $rightarmgoo to 0>>
<<set $leftarmgoo to 0>>
<<set $thighgoo to 0>>
<<set $bottomgoo to 0>>
<<set $tummygoo to 0>>
<<set $chestgoo to 0>>
<<set $facegoo to 0>>
<<set $hairgoo to 0>>
<<set $feetgoo to 0>>
<<set $vaginagoo to 0>>
<<set $vaginaoutsidegoo to 0>>
<<set $penisgoo to 0>>
<<set $anusgoo to 0>>
<<set $mouthgoo to 0>>

<<set $necksemen to 0>>
<<set $rightarmsemen to 0>>
<<set $leftarmsemen to 0>>
<<set $thighsemen to 0>>
<<set $bottomsemen to 0>>
<<set $tummysemen to 0>>
<<set $chestsemen to 0>>
<<set $facesemen to 0>>
<<set $hairsemen to 0>>
<<set $feetsemen to 0>>
<<set $vaginasemen to 0>>
<<set $vaginaoutsidesemen to 0>>
<<set $penissemen to 0>>
<<set $anussemen to 0>>
<<set $mouthsemen to 0>>

<<set $detention to 0>>
<<set $delinquency to 10>>
<<set $cool to 120>>
<<set $coolmax to 400>>
<<set $school to 800>>
<<set $maths to 200>>
<<set $science to 200>>
<<set $english to 200>>
<<set $history to 200>>
<<set $scienceprogression to 0>>

<<set $audienceselector to 0>>
<<set $audiencecamera to 0>>
<<set $audiencecamera1 to 0>>
<<set $audiencecamera2 to 0>>
<<set $audiencecamera3 to 0>>
<<set $audiencecamera4 to 0>>
<<set $audiencecamera5 to 0>>
<<set $audiencecamera6 to 0>>

<<set $audiencemember to 0>>

<<set $leftactioncarry to "leftcoverface">>
<<set $rightactioncarry to "rightcoverface">>
<<set $feetactioncarry to "rest">>
<<set $mouthactioncarry to "plead">>

<<set $leftactioncarrypain to "leftprotect">>
<<set $rightactioncarrypain to "rightprotect">>
<<set $mouthactioncarrypain to "letout">>
<<set $leftactioncarryorgasm to "leftgrip">>
<<set $rightactioncarryorgasm to "rightgrip">>
<<set $mouthactioncarryorgasm to "letoutorgasm">>
<<set $leftactioncarrydissociation to "leftcurl">>
<<set $rightactioncarrydissociation to "rightcurl">>
<<set $mouthactioncarrydissociation to "noises">>

<<set $scienceproject to "none">>
<<set $mathsproject to "none">>
<<set $yeardays to 0>>

<<set $oxygenmax to 1200>>
<<set $oxygen to 1200>>
<<set $hallucinogen to 0>>
<<set $antiquemoney to 0>>
<<set $antiquemoneyhistory to 0>>
<<set $alluretest to 0>>

<<set $whitneypantiescheck to 0>>

<<set $insecurity_penis_tiny to 0>>
<<set $insecurity_penis_small to 0>>
<<set $insecurity_penis_big to 0>>
<<set $insecurity_breasts_tiny to 0>>
<<set $insecurity_breasts_small to 0>>
<<set $insecurity_breasts_big to 0>>

<<set $acceptance_penis_tiny to 0>>
<<set $acceptance_penis_small to 0>>
<<set $acceptance_penis_big to 0>>
<<set $acceptance_breasts_tiny to 0>>
<<set $acceptance_breasts_small to 0>>
<<set $acceptance_breasts_big to 0>>

<<set $anus_climax to 0>>
<<set $penis_climax to 0>>
<<set $mouth_climax to 0>>

<<set $tanned to 0>>
<<set $sewingKit to 0>>

/*pillory related*/
<<if ndef $pillory_tenant>><<setup_pillory>><</if>>
<<set $police_access_card to 0>>
<<set $police_intro to 0>>
<<set $police_hack to 0>>
<<set $pub_hack_job to 0>>
<<set $hacker_tasks to []>>
<<set $framed to 0>>


code:
:: Widgets variablesStart2 [widget]
<<widget "variablesStart2">><<nobr>>
/*Variables required at the start of passage 'Start2', please remove if not required"*/

<<clamp>>
<<effects>>
<<initnpcgender>>
<<set $physiquesize to (1000 * $devlevel)>>

<<if $debug is 1>>
	<<set $spraymax += 1>>
	<<set $spray += 1>>
<</if>>

<<set $per_npc to {}>>

<<set $physique to ($physiquesize / 7) * 3>>
<<set $beauty to ($beautymax / 7)>>

<<set $playergender to 1>>/*Needed to stop VersionUpdate triggering on first couple of pages.*/

<<set $devstate to 1>>

<<if $breastsize is 0>>
	<<set $breastsizeold to 0>><<set $breastgrowthtimer to 350>>
<<elseif $breastsize is 1>>
	<<set $breastsizeold to 1>><<set $breastgrowthtimer to 350>>
<<elseif $breastsize is 2>>
	<<set $breastsizeold to 2>><<set $breastgrowthtimer to 350>>
<<elseif $breastsize is 3>>
	<<set $breastsizeold to 3>><<set $breastgrowthtimer to 350>>
<<else>>
	<<set $breastsizeold to 4>><<set $breastgrowthtimer to 350>>
<</if>>

<<physicalAdjustmentsInit>>
<<tryOnInit>>

<<givestartclothing>>

<<set $intro to 0>>
<<set $haircolour to $hairselect>>
<<set $naturalhaircolour to $haircolour>>

<<set $eyecolour to $eyeselect>>

<<if $awareselect is "innocent">>
<<elseif $awareselect is "knowledgeable">>
	<<set $awareness += 200>>
	<<set $awarelevel to 1>>
<</if>>

<<set $player.appearance to $player.gender>>
<<if $player.gender is "f">>
	<<set $vaginause to 0>>
	<<set $vaginastate to 0>>
	<<set $vaginaexist to 1>>
	<<set $penisuse to "none">>
	<<set $penisstate to "none">>
	<<set $penisexist to 0>>
	<<set $player.sex to "f">>
<<elseif $player.gender is "m">>
	<<set $vaginause to "none">>
	<<set $vaginastate to "none">>
	<<set $vaginaexist to 0>>
	<<set $penisuse to 0>>
	<<set $penisstate to 0>>
	<<set $penisexist to 1>>
	<<set $player.sex to "m">>
<</if>>

<<if $background is "nerd">>
	<<set $science += 200>><<set $maths += 200>><<set $english += 200>><<set $history += 200>><<set $school += 800>><<set $cool to 0>>
<<elseif $background is "athlete">>
	<<set $physique += ($physiquesize / 4)>><<set $swimmingskill += 200>><<set $science to 100>><<set $maths to 100>><<set $english to 100>><<set $history to 100>><<set $school to 400>>
<<elseif $background is "delinquent">>
	<<set $delinquency += 401>><<set $cool += 200>>
<<elseif $background is "promiscuous">>
	<<set $promiscuity += 35>>
<<elseif $background is "exhibitionist">>
	<<set $exhibitionism += 35>>
<<elseif $background is "deviant">>
	<<set $deviancy += 35>>
<<elseif $background is "beautiful">>
	<<set $beauty += ($beautymax / 2)>>
<</if>>

<<if $hairlength gte 900>>
	<<set $hairlengthstage to "feet">>
<<elseif $hairlength gte 700>>
	<<set $hairlengthstage to "thighs">>
<<elseif $hairlength gte 600>>
	<<set $hairlengthstage to "navel">>
<<elseif $hairlength gte 400>>
	<<set $hairlengthstage to "chest">>
<<elseif $hairlength gte 200>>
	<<set $hairlengthstage to "shoulder">>
<<else>>
	<<set $hairlengthstage to "short">>
<</if>>

<<if $fringelength gte 900>>
	<<set $fringelengthstage to "feet">>
<<elseif $fringelength gte 700>>
	<<set $fringelengthstage to "thighs">>
<<elseif $fringelength gte 600>>
	<<set $fringelengthstage to "navel">>
<<elseif $fringelength gte 400>>
	<<set $fringelengthstage to "chest">>
<<elseif $fringelength gte 200>>
	<<set $fringelengthstage to "shoulder">>
<<else>>
	<<set $fringelengthstage to "short">>
<</if>>

<</nobr>><</widget>>


code:
:: Widgets variablesStatic [widget]
<<widget "variablesStatic">><<nobr>>
/*This is for static variables that will not change during gameplay*/
/*These will not be saved to saves and are best when they are required in multiple location
and are required for processing for loops, default objects, etc.*/
/*Can be found at 'SugarCube.setup'*/

<<set setup.test to "testing">>
<<set setup.baseNPC = {penis : 0, vagina: 0, breastsdesc: 0, chest: 0, lactation: 0, lefthand: 0, righthand: 0, anus: 0, mouth: 0, gender: 0, description: 0, insecurity: 0, pronoun: 0, pronouns: {he: 0, his: 0}, penissize: 0, breastsize: 0, buttsize: 0, ballssize: 0, penisdesc: 0, breastdesc: 0, health: 0, skincolour: 0, teen: 0, adult: 0, intro:0, speechpenisescape: 0, speechvaginaescape: 0, speechanusescape:0}>>

<</nobr>><</widget>>