Skip to content

Instantly share code, notes, and snippets.

@Lyoko-Jeremie
Last active September 6, 2023 21:35
Show Gist options
  • Save Lyoko-Jeremie/65214a09ab3bea3409981e5ead6134e4 to your computer and use it in GitHub Desktop.
Save Lyoko-Jeremie/65214a09ab3bea3409981e5ead6134e4 to your computer and use it in GitHub Desktop.
Degrees-of-Lewdity cheats analysis

DOL Cheat Notebook

all the variable in the story script are place in the SugarCube.State.active.variables , so we can list and search and change it like we are useing the CE.

.

memory search

// search a number `2046` that can direct see in game from memory

Object.keys(SugarCube.State.active.variables).map(K=>SugarCube.State.active.variables[K]===2046 ? K : undefined).filter(T=>T)

// then it tell whitch game variable (name) have this value (as a list)
-> ['xxxxx', 'aaaaa', 'bbbbb' ]

// then read or write the var
SugarCube.State.active.variables.xxxxx

SugarCube.State.active.variables.xxxxx = 1000000
trauma
traumasaved


arousal

tiredness


tiredness
stress
physique
beauty
trauma
<<if $stressmax is undefined or $stressmax is 10010>>
	<<set $stressmax to 10000>>
<</if>>
<<if $tirednessmax is undefined>>
	<<set $tirednessmax to 2000>>
<</if>>
<<if $physiquemax is undefined>>
	<<set $physiquemax to 20000>>
<</if>>
<<if $beautymax is undefined>>
	<<set $beautymax to 10000>>
<</if>>



<!-- v.0.3.12.1 Fix classroom attendance vars -->
<<if _version lte 31201>>
	<<set $scienceattended to $scienceattended || 0>>
	<<set $mathsattended to $mathsattended || 0>>
	<<set $englishattended to $englishattended || 0>>
	<<set $historyattended to $historyattended || 0>>
	<<set $swimmingattended to $swimmingattended || 0>>
<</if>>
SugarCube.State.active.variables
money

tending

physique
danceskill
swimmingskill
athletics
skulduggery

willpower
tending

science
maths
english
history

############################### game/base-system/overlays/characteristics.twee


纯洁
purity
100

容貌
beauty
beautymax

体能
physique


意志
willpower
willpowermax

性知识
awareness
100

淫乱度
promiscuity
100

露出癖
exhibitionism
100

异种癖
deviancy
100
	<span class="gold">Skills</span>
	<div id="base-skills" class="characteristic-box-list" @style="($parasite.left_ear.name == 'slime' || $parasite.right_ear.name == 'slime') ? '--min-width: 30%;' : ''">
		<!--Additional skills configurations-->
		<<silently>>

			<<set _corruptionConfig =	{ name : "Corruption",	displayType : "none",	currentValue : $corruption_slime,	modifier: 100, modTypes: { good: [], bad: [] },		meterColor: 'red'}>>
			<<set _skulduggeryConfig =	{ name : "Skulduggery", displayType : "grade",	currentValue : $skulduggery,		modifier: 100, modTypes: { good: [], bad: [] },		states : _detailedSkillGrades}>>
			<<set _dancingConfig =		{ name : "Dancing",		displayType : "grade",	currentValue : $danceskill,			modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
			<<set _swimmingConfig =		{ name : "Swimming",	displayType : "grade",	currentValue : $swimmingskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _detailedSkillGrades}>>
			<<set _athleticsConfig =	{ name : "Athletics",	displayType : "grade",	currentValue : $athletics,			modifier: 100, modTypes: { good: [], bad: [] },		states : _detailedSkillGrades}>>
			<<set _tendingConfig =		{ name : "Tending",		displayType : "grade",	currentValue : $tending,			modifier: 100, modTypes: { good: [], bad: [] },		states : _detailedSkillGrades}>>
			<<set _housekeepingConfig =	{ name : "Housekeeping",displayType : "grade",	currentValue : $housekeeping,		modifier: 100, modTypes: { good: [], bad: [] },		states : _detailedSkillGrades}>>
诡术
corruption_slime
舞蹈
danceskill
游泳
swimmingskill
田径
athletics
护理
tending
家务
housekeeping
"corruption_slime danceskill swimmingskill athletics tending housekeeping".split(" ").filter(T => !!T).map(N => SugarCube.State.active.variables[N]=100);
	<span class="gold">Sex Skills</span>
	<!--Sex skills configurations-->
	<<silently>>
		<<set _seductionConfig =	{ name : "Seduction",	displayType : "grade",	currentValue : $seductionskill, modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _oralConfig =			{ name : "Oral",		displayType : "grade",	currentValue : $oralskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _chestConfig =		{ name : "Chest",		displayType : "grade",	currentValue : $chestskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _handsConfig =		{ name : "Hands",		displayType : "grade",	currentValue : $handskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _buttocksConfig =		{ name : "Buttocks",	displayType : "grade",	currentValue : $bottomskill,	modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _analConfig =			{ name : "Anal",		displayType : "grade",	currentValue : $analskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _thighsConfig =		{ name : "Thighs",		displayType : "grade",	currentValue : $thighskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<set _feetConfig =			{ name : "Feet",		displayType : "grade",	currentValue : $feetskill,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<<if $player.penisExist>>
			<<set _penileConfig =	{ name : "Penile",		displayType : "grade",	currentValue : $penileskill,	modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<</if>>
		<<if playerHasStrapon()>>
			<<set _penileConfig =	{ name : "Strap-on use",displayType : "grade",	currentValue : $penileskill,	modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<</if>>
		<<if $player.vaginaExist>>
			<<set _vaginalConfig =	{ name : "Vaginal",		displayType : "grade",	currentValue : $vaginalskill,	modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<</if>>
	<</silently>>
魅惑
seductionskill
口部
oralskill
胸部
chestskill
手部
handskill
臀部
bottomskill
后庭
analskill
小穴
vaginalskill
足部
feetskill
腿部
thighskill

penile
penileskill
"seductionskill oralskill chestskill handskill bottomskill analskill vaginalskill feetskill thighskill penileskill".split(" ").filter(T => !!T).map(N => SugarCube.State.active.variables[N]=1000);
	<br>
	<span class="gold">School Performance</span>
	<div id="school-grades" class="characteristic-box-list">
		<!--School grade configurations-->
		<<silently>>
			<<set _schoolGradeStates= [
				{ requiredValue: -1,	level: 'F',		color: 'red'},
				{ requiredValue: 0,		level: 'D',		color: 'purple'},
				{ requiredValue: 1,		level: 'C',		color: 'blue'},
				{ requiredValue: 2,		level: 'B',		color: 'lblue'},
				{ requiredValue: 3,		level: 'A',		color: 'teal'},
				{ requiredValue: 4,		level: 'A*',	color: 'green'}
			]>>

			<<set _scienceConfig =	{ name : 'Science', icon : 'misc/icon/science', displayType : "grade",	currentValue : $sciencetrait,	modifier: 100, modTypes: { good: [], bad: [] },	percent: $science_exam,		showStars: true, starLevel: $science_star,	states : _schoolGradeStates}>>
			<<set _mathsConfig =	{ name : 'Maths',	icon : 'misc/icon/math',	displayType : "grade",	currentValue : $mathstrait,		modifier: 100, modTypes: { good: [], bad: [] },	percent: $maths_exam,		showStars: true, starLevel: $maths_star,	states : _schoolGradeStates}>>
			<<set _englishConfig =	{ name : 'English', icon : 'misc/icon/english', displayType : "grade",	currentValue : $englishtrait,	modifier: 100, modTypes: { good: [], bad: [] },	percent: $english_exam,		showStars: true, starLevel: $english_star,	states : _schoolGradeStates}>>
			<<set _historyConfig =	{ name : 'History', icon : 'misc/icon/history', displayType : "grade",	currentValue : $historytrait,	modifier: 100, modTypes: { good: [], bad: [] },	percent: $history_exam,		showStars: true, starLevel: $history_star,	states : _schoolGradeStates}>>
			<<if $moorLuck gt 0>>



	<span class="gold">Weapon skills</span>
	<div id="prof" class="characteristic-box-list">
		<<silently>>
			<<set _sprayConfig =		{ name : "Sprays",		displayType : "grade",	currentValue : $prof.spray,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
			<<set _netConfig =			{ name : "Nets",		displayType : "grade",	currentValue : $prof.net,		modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
			<<set _hiddenConfig =		{ name : "<i>????</i>",	displayType : "grade",	currentValue : 0,				modifier: 100, modTypes: { good: [], bad: [] },		states : _basicSkillGrades}>>
		<</silently>>
SugarCube.State.active.variables.prof.spray = 1000
SugarCube.State.active.variables.prof.net = 1000

###############################

	<<foldout false "_charFoldout">>
		<span class="gold">Characteristics</span>
		Purity: <<print Math.trunc($purity)>>
		<br>
		Beauty: <<print Math.trunc($beauty)>>
		<br>
		Physique: <<print Math.trunc($physique)>>
		<br>
		Willpower: <<print Math.trunc($willpower)>>
		<br>
		Awareness: <<print Math.trunc($awareness)>>
		<br>
		Promiscuity: <<print Math.trunc($promiscuity)>>
		<br>
		Exhibitionism: <<print Math.trunc($exhibitionism)>>
		<br>
		Deviancy: <<print Math.trunc($deviancy)>>
		<br>
		Corruption: <<print Math.trunc($corruption_slime)>>
		<br>
		<<if $temple_rank is "initiate" or $temple_rank is "monk" or $temple_rank is "priest">>
			Grace: <<print Math.trunc($grace)>>
			<br>
		<</if>>
		Submissiveness: <<print Math.trunc($submissive)>>
		<br>
		Masochism: <<print Math.trunc($masochism)>>
		<br>
		Sadism: <<print Math.trunc($sadism)>>
		<br>

############################### game/base-system/caption.twee

	<div id="statmeters">
		<<if $gamemode isnot "soft">>
			<<paincaption>>
		<</if>>
		<<arousalcaption>>
		<<tirednesscaption>>
		<<stresscaption>>
		<<if $innocencestate is 1>>
			<<innocencecaption>>
		<<else>>
			<<traumacaption>>
		<</if>>
		<<if $gamemode isnot "soft">>
			<<controlcaption>>
		<</if>>
		<<allurecaption>>
		<<if $underwater is 1>>
			<<oxygencaption true>>
		<</if>>
		<<drunkcaption>><<druggedcaption>><<hallucinogencaption>>
	</div>

######## game/base-system/widgets.twee

疼痛
pain
性奋
arousal
疲劳
tiredness
压力
stress


纯真?无辜?
innocencestate ? awareness : traumamax
意识?认罪?
awareness
创伤
traumamax

自控   [more is better]
control
controlmax
诱惑   [dynamic calc by another info]
allure

醉酒
drunk
春药
drugged
幻觉
hallucinogen
["drunk","drugged","hallucinogen"].map(T=> SugarCube.State.active.variables[T]);

###############################
######## game/base-system/time/time.js

scienceprojectdays
community_service
function dailySchoolEffects() {

function dayPassed() {
神殿
恩典
grace
100
temple_chastity_timer
SugarCube.State.active.variables.grace = 100

####### game/overworld-town/loc-temple/widgets.twee

<<widget "inittemple">>
	<<set $temple_rank to "initiate">>
	<<set $player.virginity.temple to true>>
	<<set $temple_garden to 0>>
	<<set $temple_quarters to 0>>
	<<set $grace to 0>>
	<<set $temple_harassed to 0>>
	<<set $temple_chastity_timer to 30>>
	<<set $temple_event to 1>>
<</widget>>

####### game/overworld-town/loc-shop/widgets.twee

####################################### game/base-system/overlays/social.twee

	<br>
	<span class="gold">Reputation</span>
	<div id="faction-reputations" class="relation-box-list">
		<<silently>>
			/* Police config */
			<<set _policeCrimeConfig = { currentValue : $crimehistory, states : [
				{ requiredValue: 0,		color: 'green',		description: 'The police aren\'t concerned with you,'},
				{ requiredValue: 1000,	color: 'teal',		description: 'The police have you on their records,'},
				{ requiredValue: 2000,	color: 'lblue',		description: 'The police consider you a person of interest,'},
				{ requiredValue: 3000,	color: 'blue',		description: 'The police consider you a troublemaker,'},
				{ requiredValue: 5000,	color: 'purple',	description: 'The police consider you a criminal,'},
				{ requiredValue: 10000,	color: 'pink',		description: 'The police have a binder devoted to you,'},
				{ requiredValue: 30000,	color: 'red',		description: 'The police have a filing cabinet devoted to you,'}
			]}>>
			<<set _policeEvidenceConfig = { currentValue : $crimehistory, secondaryValue : $crime, states : [
				{ requiredValue: 0, secondaryStates : [
					{ requiredValue: 0,	color: 'green',	description: 'and have no evidence linking you to any crime.'},
					{ requiredValue: 1,	color: 'teal',	description: 'despite having a little evidence linking you to crime.'},
				]},
				{ requiredValue: 1000, secondaryStates : [
					{ requiredValue: 0,		color: 'green',	description: 'but lack enough evidence for an arrest.'},
					{ requiredValue: 1000,	color: 'pink',	description: 'and have enough evidence for an arrest.'},
					{ requiredValue: 5000,	color: 'red',	description: 'and have more than enough evidence for an arrest.'},
				]}
			]}>>
			<<set _policeBoxConfig = { name : "Police", icon : "img/misc/icon/police.png", description: "<<relation-text _policeCrimeConfig>> <<relation-text _policeEvidenceConfig>>"}>>
警察局
 警方认为你是一个罪犯
crimehistory
	但缺乏足够证据来实施逮捕
crime
SugarCube.State.active.variables.crimehistory = 0
SugarCube.State.active.variables.crime = 0

##################################### game/base-combat/ejaculation-sydney.twee
############### game/03-JavaScript/named-npc.js

function statusCheck(name) {
	if (V.NPCNameList.includes(name)) {
		const nnpc = V.NPCName[V.NPCNameList.indexOf(name)];

		/* To remove later */
		if (V.options.debugdisable === "t" && V.debug === 0) {
			T[name.toLowerCase()] = nnpc;
		}
		/* To remove later */

		/* Assume this is successful, unless the game is severely unhinged. */
		if (nnpc.init === 1) {
			switch (nnpc.nam) {
				case "Robin":
					getRobinLocation();
					break;
				case "Kylar":
					kylarStatusCheck(nnpc);
					break;
				case "Sydney":
					sydneyStatusCheck();
					break;
			}
		}
		return nnpc;
	} else {
		Errors.report(`getNNPC received an invalid name ${name}.`);
	}
}
window.statusCheck = statusCheck;

function sydneyStatusCheck() {
	const sydney = V.NPCName[V.NPCNameList.indexOf("Sydney")];

	if (sydney.purity >= 50 && sydney.lust >= 60) T.sydneyStatus = "pureLust";
	else if (sydney.corruption >= 10 && sydney.lust >= 20) T.sydneyStatus = "corruptLust";
	else if (sydney.purity >= 50) T.sydneyStatus = "pure";
	else if (sydney.corruption >= 10) T.sydneyStatus = "corrupt";
	else if (sydney.lust >= 40) T.sydneyStatus = "neutralLust";
	else T.sydneyStatus = "neutral";

	if (sydney.chastity.penis.includes("chastity") || sydney.chastity.vagina.includes("chastity")) T.sydneyChastity = 1;
	if (sydney.virginity.vaginal && sydney.virginity.penile) T.sydneyVirgin = 1;
}
SugarCube.State.active.variables.NPCName
SugarCube.State.active.variables.NPCNameList
SugarCube.State.active.variables.NPCName[SugarCube.State.active.variables.NPCNameList.indexOf("Sydney")]

############################################### game/03-JavaScript/sextoys.js
############## game/03-JavaScript/sexToysInventory.js

####### game/03-JavaScript/sexShopMenu.js

function sexShopOnBuyClick(index, inSexShop = true, colour, costsMoney = true) {
	const item = setup.sextoys[index];
	let iconClassName = "";
	if (inSexShop) {
		iconClassName = document.getElementById("ssm_desc_img").className;
		sexShopOnBuyClick.counter = sexShopOnBuyClick.counter || "off";
	}
sexShopOnBuyClick( NNNNNNNNNNN , false, 'pink' , false );
setup.sextoys.map( T => sexShopOnBuyClick( T.index , false, 'pink' , false ) );

###################### game/base-system/deviancy.twee


<<widget "combatdeviancyN">>
	<<set $_n to _args[0]>>
	<<if $consensual is 1 or $_n is 6>>
		<<set $_scaledDeviancyMax to 20 * $_n>>
		<<if $deviancy lt $_scaledDeviancyMax>>
			<<set $deviancy += ($control lt $controlmax ? 2 : 1)>>
			<<if $control lt $controlmax>>
				<<set _combat_deviancy_success to (_combat_deviancy_success gte $_n ? _combat_deviancy_success : $_n)>>
				<<if $_n is 6>><<set $control to $controlmax>><<else>><<control 25>><</if>>
			<<else>>
				<<set _combat_deviancy_max_control to $_n>>
			<</if>>
			<<if $_n is 6>><<combattrauma 40>><<else>><<stress $_n -300>><<combattrauma `$_n * -30`>><</if>>
		<<else>>
			<<set _combat_deviancy_failure to $_n>>
			<<if V.daily["deviancyStress" + $_n] isnot 1 and $statFreeze isnot true>>
				<<set V.daily["deviancyStress" + $_n] to 1>><<stress $_n -100>>
			<</if>>
		<</if>>
		<<arousal `$_n * 100`>>
	<</if>>
	<<set $deviancy to Math.clamp($deviancy, 0, 100)>>
<</widget>>

<<widget "combat_deviancy_text">>
	<<if _combat_deviancy_success>>
		<br>
		<<if _combat_deviancy_success is 6>>
			Your crazed act of deviancy <span class="green">fully restores your sense of control</span>, <span class="red">but inflicts damage to your mental state</span>.<<gggcontrol>><<ggtrauma>><<ggarousal>>
		<<else>>
			Your deviant behaviour <span class="green">restores your sense of control.</span><<ggcontrol>><<ltrauma>><<lstress>><<garousal>>
		<</if>>
	<<elseif _combat_deviancy_max_control>>
		<br>
		<<if _combat_deviancy_success is 6>>
			You already feel in control, <span class="red">leaving you unfulfilled as your act of manic depravity seems wasted</span>.<<gggcontrol>><<ggtrauma>><<ggarousal>>
		<<else>>
			Your deviant behaviour <span class="green">soothes and excites you.</span><<ltrauma>><<lstress>><<garousal>>
		<</if>>
	<<elseif _combat_deviancy_failure>>
		<br>
		Your behaviour is deviant, <span class="pink">though it's too tame to soothe.</span><<garousal>>
	<</if>>
<</widget>>

########## game/base-system/promiscuity.twee

淫乱

########## game/base-system/exhibitionism.twee

露出癖

########## game/base-system/deviancy.twee

异种癖

##########

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment