This commit is contained in:
klorpa 2023-01-19 21:39:04 -06:00
parent f4a099563f
commit 1de9698a41
143 changed files with 1563 additions and 1563 deletions
BondageClub/Scripts
C007_LunchBreak
C009_Library/Jennifer
C010_Revenge
Outro
SidneyJennifer
C012_AfterClass/Bed
C101_KinbakuClub
BlindMansBuff
ClubRoom2
Discipline
EricaBadEnd
JennaIntro
Lauren
Outro
RopeGroup
SlaveTwin
Slaves
C999_Common
Achievements
Blindfold
ClothGag
DoubleOpenGag

View file

@ -54,7 +54,7 @@ function AfkTimerStop() {
/**
* Enables or disables the afk timer. Is called, when the player changes her settings in the preferences dialog
* @param {boolean} Enabled - Determines, wether the afk timer will be enabled (true) or disabled (false).
* @param {boolean} Enabled - Determines, whether the afk timer will be enabled (true) or disabled (false).
* @returns {void} - Nothing
*/
function AfkTimerSetEnabled(Enabled) {

View file

@ -1,6 +1,6 @@
"use strict";
/* eslint-disable no-redeclare */
var ControllerButtonsX = [];//there probably is a way to use just one list, but i don't want to bother and this works anyway
var ControllerButtonsX = [];//there probably is a way to use just one list, but I don't want to bother and this works anyway
var ControllerButtonsY = [];
var ControllerActive = true;
var ControllerCurrentButton = 0;
@ -57,7 +57,7 @@ function setButton(X, Y) {
}
}
/**
* checks, wether a button is already in the lists (i realise now, that i could have used .includes but it works)
* checks, whether a button is already in the lists (I realize now, that I could have used .includes but it works)
* @param {any} X X value of the button
* @param {any} Y Y value of the button
*/

View file

@ -323,7 +323,7 @@ function DialogCanInteract(C) { return DialogGetCharacter(C).CanInteract(); }
function DialogSetPose(C, NewPose) { CharacterSetActivePose((C.toUpperCase().trim() == "PLAYER") ? Player : CurrentCharacter, ((NewPose != null) && (NewPose != "")) ? NewPose : null, true); }
/**
* CHecks, wether a given skill of the player is greater or equal a given value
* Checks, whether a given skill of the player is greater or equal a given value
* @param {string} SkillType - Name of the skill to check
* @param {string} Value - The value, the given skill must be compared to
* @returns {boolean} - Returns true if a specific skill is greater or equal than a given value
@ -331,7 +331,7 @@ function DialogSetPose(C, NewPose) { CharacterSetActivePose((C.toUpperCase().tri
function DialogSkillGreater(SkillType, Value) { return (parseInt(SkillGetLevel(Player, SkillType)) >= parseInt(Value)); }
/**
* Cheks, if a given item is available in the player's inventory
* Checks, if a given item is available in the player's inventory
* @param {string} InventoryName
* @param {string} InventoryGroup
* @returns {boolean} - Returns true, if the item is available, false otherwise
@ -2588,7 +2588,7 @@ function DialogSetSkillRatio(SkillType, NewRatio) {
/**
* Sends an room administrative command to the server for the chat room from the player dialog
* @param {string} ActionType - The name of the administrative command to use
* @param {string} Publish - Determines wether the action should be published to the ChatRoom. As this is a string, use "true" to do so
* @param {string} Publish - Determines whether the action should be published to the ChatRoom. As this is a string, use "true" to do so
* @returns {void} - Nothing
*/
function DialogChatRoomAdminAction(ActionType, Publish) {

View file

@ -776,35 +776,35 @@ function DrawImageEx(
* @returns {Array<string>} - A list of string that being fragmented.
*/
function fragmentText(text, maxWidth) {
let words = text.split(' '),
lines = [],
line = "";
let words = text.split(' '),
lines = [],
line = "";
if (MainCanvas.measureText(text).width < maxWidth) {
return [text];
}
if (MainCanvas.measureText(text).width < maxWidth) {
return [text];
}
while (words.length > 0) {
while (MainCanvas.measureText(words[0]).width >= maxWidth) {
let temp = words[0];
words[0] = temp.slice(0, -1);
if (words.length > 1) {
words[1] = temp.slice(-1) + words[1];
} else {
words.push(temp.slice(-1));
}
}
if (MainCanvas.measureText(line + words[0]).width < maxWidth) {
line += words.shift() + " ";
} else {
lines.push(line);
line = "";
}
if (words.length === 0) {
lines.push(line);
}
}
return lines;
while (words.length > 0) {
while (MainCanvas.measureText(words[0]).width >= maxWidth) {
let temp = words[0];
words[0] = temp.slice(0, -1);
if (words.length > 1) {
words[1] = temp.slice(-1) + words[1];
} else {
words.push(temp.slice(-1));
}
}
if (MainCanvas.measureText(line + words[0]).width < maxWidth) {
line += words.shift() + " ";
} else {
lines.push(line);
line = "";
}
if (words.length === 0) {
lines.push(line);
}
}
return lines;
}
/**

View file

@ -33,7 +33,7 @@ function Draw3DKeyDown() {
}
// TODO: create more fbx assets <.<
// TODO: seperate all fbx files
// TODO: separate all fbx files
// TODO: call each 3d asset and transform x,y towards the next bone node(point)
function init(){

View file

@ -238,7 +238,7 @@ function DynamicDrawTextFromTo(text, ctx, from, to, options) {
if (!width) {
options.width = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
if (contain && dx != 0) {
// If the text should be fully contained withing the [x0, y0], [x1, y1] box, subtract appropriately
// If the text should be fully contained within the [x0, y0], [x1, y1] box, subtract appropriately
options.width -= 2 * Math.abs(dy / dx) * (fontSize / 2);
}
}

View file

@ -145,7 +145,7 @@ function ExtendedItemLoad(Options, DialogKey, BaselineProperty=null) {
* @param {string} DialogPrefix - The prefix to the dialog keys for the display strings describing each extended type.
* The full dialog key will be <Prefix><Option.Name>
* @param {number} [OptionsPerPage] - The number of options displayed on each page
* @param {boolean} [ShowImages=true] - Denotes wether images should be shown for the specific item
* @param {boolean} [ShowImages=true] - Denotes whether images should be shown for the specific item
* @param {[number, number][]} [XYPositions] - An array with custom X & Y coordinates of the buttons
* @returns {void} Nothing
*/
@ -200,7 +200,7 @@ function ExtendedItemDraw(Options, DialogPrefix, OptionsPerPage, ShowImages=true
* @param {number} Y - The Y coordinate of the button
* @param {string} DialogPrefix - The prefix to the dialog keys for the display strings describing each extended type.
* The full dialog key will be <Prefix><Option.Name>
* @param {boolean} ShowImages - Denotes wether images should be shown for the specific item
* @param {boolean} ShowImages - Denotes whether images should be shown for the specific item
* @param {Item} Item - The item in question; defaults to {@link DialogFocusItem}
* @param {boolean | null} IsSelected - Whether the button is already selected or not. If `null` compute this value by checking if the item's current type matches `Option`.
* @see {@link ExtendedItemDraw}
@ -323,7 +323,7 @@ function ExtendedItemGetButtonColor(C, Option, CurrentOption, Hover, IsSelected,
* @param {ExtendedItemOption[]} Options - An Array of type definitions for each allowed extended type. The first item
* in the array should be the default option.
* @param {number} [OptionsPerPage] - The number of options displayed on each page
* @param {boolean} [ShowImages=true] - Denotes wether images are shown for the specific item
* @param {boolean} [ShowImages=true] - Denotes whether images are shown for the specific item
* @param {[number, number][]} [XYPositions] - An array with custom X & Y coordinates of the buttons
* @returns {void} Nothing
*/
@ -743,7 +743,7 @@ function ExtendedItemCreateValidateFunction(functionPrefix, ValidationCallback,
* @param {string} Name - The name of the button and its pseudo-type
* @param {number} X - The X coordinate of the button
* @param {number} Y - The Y coordinate of the button
* @param {boolean} ShowImages Denotes wether images should be shown for the specific item
* @param {boolean} ShowImages Denotes whether images should be shown for the specific item
* @param {boolean} IsSelected - Whether the button is selected or not
* @returns {void} Nothing
*/

View file

@ -620,7 +620,7 @@ function ModularItemConstructType(modules, values) {
}
/**
* Seperate a modular item type string into a list with the types of each individual module.
* Separate a modular item type string into a list with the types of each individual module.
* @param {string} Type - The modular item type string
* @returns {string[] | null} - A list with the options of each individual module or `null` if the input type wasn't a string
*/
@ -910,13 +910,13 @@ function ModularItemHideElement(ID, Module) {
return ModularItemModuleIsActive(Module);
}
if (ModularItemModuleIsActive(Module)) {
Element.style.display = "block";
return true;
} else {
Element.style.display = "none";
return false;
}
if (ModularItemModuleIsActive(Module)) {
Element.style.display = "block";
return true;
} else {
Element.style.display = "none";
return false;
}
}
/**

View file

@ -1992,7 +1992,7 @@ interface ItemPropertiesCustom {
// #endregion
/** A comma-seperated string with the futuristic vibrator's trigger words */
/** A comma-separated string with the futuristic vibrator's trigger words */
TriggerValues?: string;
/** A string denoting who has permission to use the vibrator's trigger words */
AccessMode?: ItemVulvaFuturisticVibratorAccessMode;
@ -2237,7 +2237,7 @@ interface ModularItemConfig {
Validate?: ExtendedItemValidateScriptHookCallback<ModularItemOption>;
};
/**
* To-be initialized properties independant of the selected item module(s).
* To-be initialized properties independent of the selected item module(s).
* Relevant if there are properties that are (near) exclusively managed by {@link ModularItemConfig.ScriptHooks} functions.
*/
BaselineProperty?: ItemProperties;
@ -2433,7 +2433,7 @@ interface ModularItemData {
validate?: ExtendedItemValidateScriptHookCallback<ModularItemOption>,
};
/**
* To-be initialized properties independant of the selected item module(s).
* To-be initialized properties independent of the selected item module(s).
* Relevant if there are properties that are (near) exclusively managed by {@link ModularItemData.scriptHooks} functions.
*/
BaselineProperty: ItemProperties | null;
@ -2504,7 +2504,7 @@ interface TypedItemConfig {
PublishAction?: ExtendedItemPublishActionCallback<ExtendedItemOption>,
};
/**
* To-be initialized properties independant of the selected item module(s).
* To-be initialized properties independent of the selected item module(s).
* Relevant if there are properties that are (near) exclusively managed by {@link TypedItemConfig.ScriptHooks} functions.
*/
BaselineProperty?: ItemProperties;
@ -2596,7 +2596,7 @@ interface TypedItemData {
publishAction?: ExtendedItemPublishActionCallback<ExtendedItemOption>,
};
/**
* To-be initialized properties independant of the selected item module(s).
* To-be initialized properties independent of the selected item module(s).
* Relevant if there are properties that are (near) exclusively managed by {@link TypedItemData.scriptHooks} functions.
*/
BaselineProperty: ItemProperties | null;

View file

@ -88,6 +88,6 @@ declare namespace LZString {
*
* @param compressed A string obtained from a call to compressToUint8Array().
*/
decompressFromUint8Array(compressed: Uint8Array): null | string;
decompressFromUint8Array(compressed: Uint8Array): null | string;
}
}

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@ Remote2,(Natalie trembles more and|moans softly through your gag.)
Remote3,"(Natalie trembles hard and moans loader. Suddenly|your vibrator peaks, in shock you drop the remote)"
Orgasm,(You explode on a wonderful orgasm.|Natalie holds you up as you collapse in here arms.)
JennaReturns,(Jenna walks over removes the vibrators.)|Times up you two.
OutOfTime,(You realise your next lesson is about to start.|You release her and she tidies her self.)
OutOfTime,(You realize your next lesson is about to start.|You release her and she tidies her self.)
SubbieMasturbate,(Natalie's touch gives you a wonderful orgasm.|When it subsides she releases you.)
NoMasturbate,(She pushes you hands away.|You're meant to be 'tight binding' her.)
NatalieOrgasm1,(She trembles with a sweet orgasm|but she seems to be repressing it.)

1 Tag Content
7 Remote3 (Natalie trembles hard and moans loader. Suddenly|your vibrator peaks, in shock you drop the remote)
8 Orgasm (You explode on a wonderful orgasm.|Natalie holds you up as you collapse in here arms.)
9 JennaReturns (Jenna walks over removes the vibrators.)|Times up you two.
10 OutOfTime (You realise your next lesson is about to start.|You release her and she tidies her self.) (You realize your next lesson is about to start.|You release her and she tidies her self.)
11 SubbieMasturbate (Natalie's touch gives you a wonderful orgasm.|When it subsides she releases you.)
12 NoMasturbate (She pushes you hands away.|You're meant to be 'tight binding' her.)
13 NatalieOrgasm1 (She trembles with a sweet orgasm|but she seems to be repressing it.)

View file

@ -25,16 +25,16 @@ function C007_LunchBreak_Sarah_CalcParams() {
// Between 100 and 200, the image evolves with the number of matches
if ((C007_LunchBreak_Sarah_CurrentStage == 100) ||
(C007_LunchBreak_Sarah_CurrentStage == 110) ||
(C007_LunchBreak_Sarah_CurrentStage == 120) ||
(C007_LunchBreak_Sarah_CurrentStage == 130) ||
(C007_LunchBreak_Sarah_CurrentStage == 140) ||
(C007_LunchBreak_Sarah_CurrentStage == 150) ||
(C007_LunchBreak_Sarah_CurrentStage == 160) ||
(C007_LunchBreak_Sarah_CurrentStage == 190) ||
(C007_LunchBreak_Sarah_CurrentStage == 300) ||
(C007_LunchBreak_Sarah_CurrentStage == 310) ||
(C007_LunchBreak_Sarah_CurrentStage == 320)) {
(C007_LunchBreak_Sarah_CurrentStage == 110) ||
(C007_LunchBreak_Sarah_CurrentStage == 120) ||
(C007_LunchBreak_Sarah_CurrentStage == 130) ||
(C007_LunchBreak_Sarah_CurrentStage == 140) ||
(C007_LunchBreak_Sarah_CurrentStage == 150) ||
(C007_LunchBreak_Sarah_CurrentStage == 160) ||
(C007_LunchBreak_Sarah_CurrentStage == 190) ||
(C007_LunchBreak_Sarah_CurrentStage == 300) ||
(C007_LunchBreak_Sarah_CurrentStage == 310) ||
(C007_LunchBreak_Sarah_CurrentStage == 320)) {
var Img = "0";
if ((C007_LunchBreak_Sarah_MatchCount == 2) || (C007_LunchBreak_Sarah_MatchCount == 3)) Img = "1";
if (C007_LunchBreak_Sarah_MatchCount >= 4) Img = "2";

View file

@ -81,7 +81,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
176,0,0,,Do you feel|more confident?,"I think I do, I'm still nervous but I feel better.|Should I dress back up? I don't want to get caught.",178,0,0,
176,0,0,,You have guts|for a loner.,"Please don't call me a loner, I don't like that.|Should I dress back up? I don't want to get caught.",178,-1,0,
176,0,0,,Congrats Jen.|You made it.,"Thanks COMMON_PLAYERNAME, I appreciate.|Should I dress back up? I don't want to get caught.",178,0,0,
177,0,0,Painted,You're my favorite|model Jennifer.,It's very flatteting. You painted me|this morning and now you will draw me.,177,0,0,FavoriteModel()
177,0,0,Painted,You're my favorite|model Jennifer.,It's very flattering. You painted me|this morning and now you will draw me.,177,0,0,FavoriteModel()
177,0,0,,(Draw a quick sketch.)|(5 minutes),(You quickly draw her and show her the result.)|This is nice. You could show it to Julia.,178,0,0,DrawJennifer(5)
177,0,0,,(Draw her fully.)|(15 minutes),"(You draw her carefully and show her the result.)|Very nice and flattering, I would love a copy.",178,0,0,DrawJennifer(15)
177,0,0,,(Draw a work of art.)|(30 minutes),(You draw her masterfully and show her the result.)|Wow! I didn't know you had so much talent.,178,0,0,DrawJennifer(30)

1 Stage LoveReq SubReq VarReq Interaction Result NextStage LoveMod SubMod Function
81 176 0 0 Do you feel|more confident? I think I do, I'm still nervous but I feel better.|Should I dress back up? I don't want to get caught. 178 0 0
82 176 0 0 You have guts|for a loner. Please don't call me a loner, I don't like that.|Should I dress back up? I don't want to get caught. 178 -1 0
83 176 0 0 Congrats Jen.|You made it. Thanks COMMON_PLAYERNAME, I appreciate.|Should I dress back up? I don't want to get caught. 178 0 0
84 177 0 0 Painted You're my favorite|model Jennifer. It's very flatteting. You painted me|this morning and now you will draw me. It's very flattering. You painted me|this morning and now you will draw me. 177 0 0 FavoriteModel()
85 177 0 0 (Draw a quick sketch.)|(5 minutes) (You quickly draw her and show her the result.)|This is nice. You could show it to Julia. 178 0 0 DrawJennifer(5)
86 177 0 0 (Draw her fully.)|(15 minutes) (You draw her carefully and show her the result.)|Very nice and flattering, I would love a copy. 178 0 0 DrawJennifer(15)
87 177 0 0 (Draw a work of art.)|(30 minutes) (You draw her masterfully and show her the result.)|Wow! I didn't know you had so much talent. 178 0 0 DrawJennifer(30)

View file

@ -26,7 +26,7 @@ MasturbateNoLove,(You masturbate her at a loving pace|but she stays silent and s
MasturbateLove,(You masturbate her at a loving pace|and she can't hide her pleasure moans.)
MasturbateOrgasm,(She loses control of her body and|gets a shattering orgasm in the library.)
GreatKiss,"(At first she's cold but your seducing kiss|surprisingly aroused her, she enjoyed it.)"
TestMakeLoveFail,(She shakes her head no and quickly|jumps off the couch and leaves.)
TestMakeLoveFail,(She shakes her head 'no' and quickly|jumps off the couch and leaves.)
StripRevealBelt,(She nods and you both strip down.|She quickly notices your chastity belt.)
JenniferOralOrgasm,"(You sense her trembling in strong ecstasy.|She screams silently, getting a nice orgasm.)"
PlayerOralOrgasm,"(Without much sexual experience, Jennifer is|able to lick you and bring you to a sweet orgasm.)"

1 Tag Content
26 MasturbateLove (You masturbate her at a loving pace|and she can't hide her pleasure moans.)
27 MasturbateOrgasm (She loses control of her body and|gets a shattering orgasm in the library.)
28 GreatKiss (At first she's cold but your seducing kiss|surprisingly aroused her, she enjoyed it.)
29 TestMakeLoveFail (She shakes her head no and quickly|jumps off the couch and leaves.) (She shakes her head 'no' and quickly|jumps off the couch and leaves.)
30 StripRevealBelt (She nods and you both strip down.|She quickly notices your chastity belt.)
31 JenniferOralOrgasm (You sense her trembling in strong ecstasy.|She screams silently, getting a nice orgasm.)
32 PlayerOralOrgasm (Without much sexual experience, Jennifer is|able to lick you and bring you to a sweet orgasm.)

View file

@ -33,7 +33,7 @@ function C010_Revenge_Outro_Run() {
// Draw the background image
if (TextPhase >= 2) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Bell.jpg", 800, 0);
if (TextPhase < 2) DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + OutroText + ".jpg", 800, 0);
if (TextPhase < 2) DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + OutroText + ".jpg", 800, 0);
// Shows the text
if (C010_Revenge_Outro_GoodEnding) OutroText = OutroText + "Good";

View file

@ -12,14 +12,14 @@ Collar,(You need +20 submission and a|special ceremony to collar a student.)
MasturbateJenniferOrgasm,"(She struggles and suddenly loses|control of herself, getting a nice orgasm.)"
MasturbateJenniferLove,(You masturbate her lovingly while|she trembles and moans quietly.)
MasturbateJenniferNoLove,(You masturbate her lovingly but|she doesn't seem to be in the mood.)
FightVictoryJenniferRun,(Sidney slowly recovers but Jennifer disapeared.)|Jen? Where the fuck did you go? Coward!
FightVictoryJenniferRun,(Sidney slowly recovers but Jennifer disappeared.)|Jen? Where the fuck did you go? Coward!
FightDefeatTrack,You really thought you could fight us both?|From now on you know you should obey.
SidneyUnderwear,Fine! Make it quick.|(She strips to her underwear.)
CropSidney,(You whip her pretty hard on the butt with the crop.|She pretends it doens't hurt but she's in pain.)
SidneyPigTalk,(She takes a deep breath and imitates a pig.)|Sooooooowweeeee! Sowe! Sooweeee!
CropSidney,(You whip her pretty hard on the butt with the crop.|She pretends it doesn't hurt but she's in pain.)
SidneyPigTalk,(She takes a deep breath and imitates a pig.)|Sooooooowweeeee! Soowee! Sooweeee!
MasturbateSidneyOrgasm,(She thrashes in her bonds and crumbles|to the ground in a shattering orgasm.)
MasturbateSidneyEgg,(You masturbate her slowly while|she looks at you and moans quietly.)
MasturbateSidneyNoEgg,(You masturbate her slowly while|she stares at you and grumbles.)
RaceGoal,You have 10 minutes to reach Jennifer!
RaceVictory,(Jennifer speaks with a cheeful voice.)|Congratulations COMMON_PLAYERNAME! You did it.
RaceVictory,(Jennifer speaks with a cheerful voice.)|Congratulations COMMON_PLAYERNAME! You did it.
RaceDefeat,(Jennifer speaks with a sad tone of voice.)|You failed the race COMMON_PLAYERNAME.

1 Tag Content
12 MasturbateJenniferOrgasm (She struggles and suddenly loses|control of herself, getting a nice orgasm.)
13 MasturbateJenniferLove (You masturbate her lovingly while|she trembles and moans quietly.)
14 MasturbateJenniferNoLove (You masturbate her lovingly but|she doesn't seem to be in the mood.)
15 FightVictoryJenniferRun (Sidney slowly recovers but Jennifer disapeared.)|Jen? Where the fuck did you go? Coward! (Sidney slowly recovers but Jennifer disappeared.)|Jen? Where the fuck did you go? Coward!
16 FightDefeatTrack You really thought you could fight us both?|From now on you know you should obey.
17 SidneyUnderwear Fine! Make it quick.|(She strips to her underwear.)
18 CropSidney (You whip her pretty hard on the butt with the crop.|She pretends it doens't hurt but she's in pain.) (You whip her pretty hard on the butt with the crop.|She pretends it doesn't hurt but she's in pain.)
19 SidneyPigTalk (She takes a deep breath and imitates a pig.)|Sooooooowweeeee! Sowe! Sooweeee! (She takes a deep breath and imitates a pig.)|Sooooooowweeeee! Soowee! Sooweeee!
20 MasturbateSidneyOrgasm (She thrashes in her bonds and crumbles|to the ground in a shattering orgasm.)
21 MasturbateSidneyEgg (You masturbate her slowly while|she looks at you and moans quietly.)
22 MasturbateSidneyNoEgg (You masturbate her slowly while|she stares at you and grumbles.)
23 RaceGoal You have 10 minutes to reach Jennifer!
24 RaceVictory (Jennifer speaks with a cheeful voice.)|Congratulations COMMON_PLAYERNAME! You did it. (Jennifer speaks with a cheerful voice.)|Congratulations COMMON_PLAYERNAME! You did it.
25 RaceDefeat (Jennifer speaks with a sad tone of voice.)|You failed the race COMMON_PLAYERNAME.

View file

@ -250,7 +250,7 @@ function C012_AfterClass_Bed_BackToDorm() {
SetScene(CurrentChapter, "Dorm");
}
// Chapter 12 After Class - Main sex event with the partenr, there's a pleasure factor for each and a flag to tell if an orgasm is possible or not
// Chapter 12 After Class - Main sex event with the partner, there's a pleasure factor for each and a flag to tell if an orgasm is possible or not
function C012_AfterClass_Bed_Sex(PleasurePartner, PleasurePlayer, CanOrgasm, WorkAnim) {
// Raise the level for both lovers

View file

@ -56,13 +56,13 @@ function C101_KinbakuClub_BlindMansBuff_Click() {
ClickInteraction(C101_KinbakuClub_BlindMansBuff_CurrentStage);
var ClickInv = GetClickedInventory();
if (C101_KinbakuClub_BlindMansBuff_CurrentStage <= 25 && ClickInv == "Player") {
C101_KinbakuClub_BlindMansBuff_IntroText = OverridenIntroText;
C101_KinbakuClub_BlindMansBuff_LeaveIcon = LeaveIcon;
C101_KinbakuClub_BlindMansBuff_IntroText = OverridenIntroText;
C101_KinbakuClub_BlindMansBuff_LeaveIcon = LeaveIcon;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// Recalculates the scene parameters
C101_KinbakuClub_BlindMansBuff_CalcParams();
C101_KinbakuClub_BlindMansBuff_CalcParams();
}

View file

@ -10,7 +10,7 @@ function C101_KinbakuClub_ClubRoom2_Run() {
// Draw the background image
DrawImage(CurrentChapter + "/" + CurrentScreen + "/ClubRoom2Arrows.jpg", 0, 0);
// Draw erica when tied
// Draw Erica when tied
if (C101_KinbakuClub_Erica_EricaTied) {
DrawImage(CurrentChapter + "/" + CurrentScreen + "/EricaBoundBackground.png", 0, 0);
DrawActor("Erica", 0, 265, 0.4);

View file

@ -25,7 +25,7 @@ function C101_KinbakuClub_Discipline_Run() {
if (C101_KinbakuClub_Lauren_BullyCount >= 10) DrawText(GetText("Bully1"), 400, 120, "White");
if (!PlayerHasLockedInventory("Manacles") && !C101_KinbakuClub_Lauren_BullyCount >= 10) DrawText(GetText("Discipline1"), 400, 120, "White");
}
if (TextPhase >= 1) {
if (TextPhase >= 1) {
if (PlayerHasLockedInventory("Manacles")) DrawText(GetText("Slave2"), 400, 240, "White");
else DrawText(GetText("Discipline2"), 400, 240, "White");
}

View file

@ -18,7 +18,7 @@ function C101_KinbakuClub_EricaBadEnd_Run() {
DrawText(GetText("BadEnd1"), 350, 50, "White");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/EricaPinsPlayer.jpg", 700, 0);
}
if (TextPhase >= 1) {
if (TextPhase >= 1) {
DrawText(GetText("BadEnd2"), 350, 100, "White");
//CurrentTime = CurrentTime + 10000;
//TextPhase++;
@ -51,7 +51,7 @@ function C101_KinbakuClub_EricaBadEnd_Run() {
DrawText(GetText("BadEnd7"), 350, 350, "White");
//StopTimer(CurrentTime + 10 * 1000);
}
if (TextPhase >= 7) {
if (TextPhase >= 7) {
DrawText(GetText("BadEnd8"), 350, 400, "White");
//StopTimer(CurrentTime + 300 * 1000);
}

View file

@ -42,7 +42,7 @@ function C101_KinbakuClub_JennaIntro_Load() {
// Chapter 101 - Jenna Run
function C101_KinbakuClub_JennaIntro_Run() {
BuildInteraction(C101_KinbakuClub_JennaIntro_CurrentStage);
BuildInteraction(C101_KinbakuClub_JennaIntro_CurrentStage);
}
@ -50,13 +50,13 @@ function C101_KinbakuClub_JennaIntro_Run() {
function C101_KinbakuClub_JennaIntro_Click() {
// Regular and inventory interactions
ClickInteraction(C101_KinbakuClub_JennaIntro_CurrentStage);
var ClickInv = GetClickedInventory();
if (ClickInv == "Player") {
C101_KinbakuClub_JennaIntro_IntroText = OverridenIntroText;
C101_KinbakuClub_JennaIntro_LeaveIcon = LeaveIcon;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
ClickInteraction(C101_KinbakuClub_JennaIntro_CurrentStage);
var ClickInv = GetClickedInventory();
if (ClickInv == "Player") {
C101_KinbakuClub_JennaIntro_IntroText = OverridenIntroText;
C101_KinbakuClub_JennaIntro_LeaveIcon = LeaveIcon;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
}
// Chapter 101 - Short cut to club room with skills and items
@ -134,6 +134,6 @@ function C101_KinbakuClub_JennaIntro_CuffPlayer() {
// Chapter 101 - When the club set on the player to discipline her for evil ending Natalie.
function C101_KinbakuClub_JennaIntro_Discipline() {
SetScene(CurrentChapter, "Discipline");
SetScene(CurrentChapter, "Discipline");
}

View file

@ -152,7 +152,7 @@ function C101_KinbakuClub_Lauren_TiedNod() {
C101_KinbakuClub_Lauren_NodDone = true;
}
// Chapter 101 - Lauren - Recive a blindfold
// Chapter 101 - Lauren - Receive a blindfold
function C101_KinbakuClub_Lauren_GetBlindfold() {
C101_KinbakuClub_Lauren_BlindfoldAvailable = false;
PlayerAddInventory("Blindfold", 1);
@ -167,7 +167,7 @@ function C101_KinbakuClub_Lauren_AlreadyCuffed() {
}
}
// Chapter 101 - Lauren - Player takes cuffs and cuffs themself.
// Chapter 101 - Lauren - Player takes cuffs and cuffs themselves.
function C101_KinbakuClub_Lauren_PlayerCuffed() {
CurrentTime = CurrentTime + 30000;
PlayerLockInventory("Cuffs");

View file

@ -17,7 +17,7 @@ function C101_KinbakuClub_Outro_Run() {
// Dialog depending on the outro situation
if (TextPhase >= 0) DrawText(GetText("Outro1"), 400, 86, "White");
if (TextPhase >= 1) DrawText(GetText("Outro2"), 400, 171, "White");
if (TextPhase >= 1) DrawText(GetText("Outro2"), 400, 171, "White");
if (TextPhase >= 2) DrawText(GetText("Outro3"), 400, 257, "White");
if (TextPhase >= 3) {
if (!C101_KinbakuClub_Outro_Freed) DrawText(GetText("Outro4"), 400, 343, "White");

View file

@ -34,11 +34,11 @@ var C101_KinbakuClub_RopeGroup_LucyTieMeDone = false;
var C101_KinbakuClub_RopeGroup_KeptTickling = false;
var C101_KinbakuClub_RopeGroup_StruggledForLucy = false;
var C101_KinbakuClub_RopeGroup_ATwinStillTied = false;
var C101_KinbakuClub_RopeGroup_LucyIsAnnoyed = 0; // Lucy will be less inclinded to help the player if true.
var C101_KinbakuClub_RopeGroup_LucyIsAnnoyed = 0; // Lucy will be less inclined to help the player if true.
var C101_KinbakuClub_RopeGroup_FriendWaitCount = 0; // Time log while Lucy talks to Cassi
var C101_KinbakuClub_RopeGroup_CassiVistied = false; // logs if Cassi has vistied player
var C101_KinbakuClub_RopeGroup_CassiVistied = false; // logs if Cassi has visited player
var C101_KinbakuClub_RopeGroup_PantiesInTheWay = false; // Panties need removing first
var C101_KinbakuClub_RopeGroup_ToBeChasteAgain = false; // Unlocked Chastity belts will be refited
var C101_KinbakuClub_RopeGroup_ToBeChasteAgain = false; // Unlocked Chastity belts will be refitted
var C101_KinbakuClub_RopeGroup_PantieGagged = false;
var C101_KinbakuClub_RopeGroup_SockGagged = false;
var C101_KinbakuClub_RopeGroup_TsuriFrogTied = false; // If Cassi adds more ropes to players legs
@ -46,9 +46,9 @@ var C101_KinbakuClub_RopeGroup_FullyExposed = false; // N belt of panties whi
var C101_KinbakuClub_RopeGroup_PlayerPose = ""; // Players pose during suspension
var C101_KinbakuClub_RopeGroup_CassiPose = ""; // Cassi's pose during player suspension
var C101_KinbakuClub_RopeGroup_PlayerArousal = 0; // level of arousal with Cassi
var C101_KinbakuClub_RopeGroup_CanPressCassi = true; // true whe player could wrap her legs around cassis head
var C101_KinbakuClub_RopeGroup_CanPressCassi = true; // true when player could wrap her legs around Cassi's head
var C101_KinbakuClub_RopeGroup_PressingCassi = false; // true when legs are wrapped around her head
var C101_KinbakuClub_RopeGroup_ForcingCassi = false; // true when pressing cassis head in.
var C101_KinbakuClub_RopeGroup_ForcingCassi = false; // true when pressing Cassi's head in.
var C101_KinbakuClub_RopeGroup_CassiBreathPlay = 0; // How long player has prevented Cassi from breathing
var C101_KinbakuClub_RopeGroup_CassiLikes = 0; // Slows down rate of attitude change
var C101_KinbakuClub_RopeGroup_CassiLikeTreshold = 0; // Slows down rate of attitude change
@ -58,9 +58,9 @@ var C101_KinbakuClub_RopeGroup_CassiDominates = 0; // Slows down rate of att
var C101_KinbakuClub_RopeGroup_CassiDominateTreshold = 0; // Slows down rate of attitude change
var C101_KinbakuClub_RopeGroup_CassiSubmits = 0; // Slows down rate of attitude change
var C101_KinbakuClub_RopeGroup_CassiSubmitTreshold = 0; // Slows down rate of attitude change
var C101_KinbakuClub_RopeGroup_AnkleGrab = false; // true when cassi is holding players ankles.
var C101_KinbakuClub_RopeGroup_AnkleGrab = false; // true when Cassi is holding players ankles.
var C101_KinbakuClub_RopeGroup_fingerinsertion = false; // if Cassi uses her fingers.
var C101_KinbakuClub_RopeGroup_LastTongueTechnique = 0; // previous technique used by tougne
var C101_KinbakuClub_RopeGroup_LastTongueTechnique = 0; // previous technique used by tongue
var C101_KinbakuClub_RopeGroup_LastFingerTechnique = 0; // previous technique used by finger
var C101_KinbakuClub_RopeGroup_PreviousTime = 0; // used for arousal progression
var C101_KinbakuClub_RopeGroup_OrgasmCount = 0;
@ -567,7 +567,7 @@ function C101_KinbakuClub_RopeGroup_ReleaseLucy() {
else C101_KinbakuClub_RopeGroup_RightTwinStatus = "Released";
}
// Chapter 101 - RopeGroup - Trick to tell twins appart
// Chapter 101 - RopeGroup - Trick to tell twins apart
function C101_KinbakuClub_RopeGroup_WouldYourSister() {
if (ActorGetValue(ActorName) == "Lucy") OverridenIntroText = GetText("WouldYourSisterNod");
if (ActorGetValue(ActorName) == "Heather") OverridenIntroText = GetText("WouldYourSisterShake");
@ -603,7 +603,7 @@ function C101_KinbakuClub_RopeGroup_LucyTieMe() {
C101_KinbakuClub_RopeGroup_LucyTieMeDone = true;
}
// Chapter 101 - RopeGroup - Player threatens Lucy with joing heather
// Chapter 101 - RopeGroup - Player threatens Lucy with joining Heather
function C101_KinbakuClub_RopeGroup_JoinSister() {
if (!C101_KinbakuClub_RopeGroup_JoinSisterDone) ActorChangeAttitude( -1, -1);
C101_KinbakuClub_RopeGroup_JoinSisterDone = true;
@ -1215,7 +1215,7 @@ function C101_KinbakuClub_RopeGroup_CarryOn() {
C101_KinbakuClub_RopeGroup_Exposed();
}
// Chapter 101 - RopeGroup - Waiting for heather to return
// Chapter 101 - RopeGroup - Waiting for Heather to return
function C101_KinbakuClub_RopeGroup_WaitingForMistress() {
C101_KinbakuClub_RopeGroup_WaitCount++
CurrentTime = CurrentTime + 30000;

View file

@ -331,9 +331,9 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
680,0,0,,(Moan of pleasure.),"(Cassi keeps teasing your clitoris, working that|sweet spot and prolonging your stifled moans.)",680,0,0,CassiCunni(2)
680,0,0,,(Breathe heavily.),"(Cassi maintain the stimulation of your clitoris,|while your whole body heaves with each breathe.)",680,0,0,CassiCunni(3)
680,0,0,,(Grunt helplessly.),"(Cassi keeps on licking steadily,|while you squirm and gag on the panties.)",680,0,0,CassiCunni(4)
680,0,0,,(Mumble impatiently.),- cassi changes style of stimulation. reduce arousal?,680,0,0,CassiCunni(5)
680,0,0,,(Mumble impatiently.),- Cassi changes style of stimulation. reduce arousal?,680,0,0,CassiCunni(5)
680,0,0,,(Thrust your hips.),"(Cassi keeps teasing clitoris,|keeping rhythm with you thrusting.)",680,0,0,CassiCunni(2)
680,0,0,,(Shift your hips awkwardly.),- cassi changes style of stimulation. reduce arousal?,680,0,0,CassiCunni(5)
680,0,0,,(Shift your hips awkwardly.),- Cassi changes style of stimulation. reduce arousal?,680,0,0,CassiCunni(5)
680,0,0,CanPressCassi,(Use your feet to press her|head into your crotch.),"(Wrapping your feet round her head, you startle Cassi,|but she quickly resumes licking your clitoris.)",680,0,0,CassiCunni(6)
680,0,0,PressingCassi,(Press her head hard|into your crotch.),"(Cassi's mouth and nose get sealed tight against you.|She starts struggling, but doesn't stop licking.)",680,0,0,CassiCunni(7)
680,0,0,ForcingCassi,(Keep pressing her|head hard against you.),"(Cassi struggles helplessly.|Unable to pull away, she tries licking you harder.",680,0,0,CassiCunni(8)
@ -341,13 +341,13 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
680,0,0,PressingCassi,(Let go of her head.),"(You let your legs drop away from Cassi,|who carries on teasing you with her tongue.)",680,0,0,CassiCunni(10)
680,0,0,,(Try to ignore Cassi.),"(You try distracting yourself with mental and pain|techniques, but Cassis tongue is unrelenting.)",680,0,0,CassiCunni(11)
680,0,0,,(Struggle frantically.),"(Cassi leans into your crotch, keeping hear|tongue on you clitoris as you buck and shake.)",680,0,0,CassiCunni(12)
681,0,0,,(Whine gleefully.),"(Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.)",680,0,-1,CassiContinue()
681,0,0,,(Shiver with delight.),"(Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.)",680,1,0,CassiContinue()
681,0,0,,(Shriek into your gag.),"(Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.)",680,0,0,CassiContinue()
681,0,0,,(Whine gleefully.),"(Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.)",680,0,-1,CassiContinue()
681,0,0,,(Shiver with delight.),"(Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.)",680,1,0,CassiContinue()
681,0,0,,(Shriek into your gag.),"(Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.)",680,0,0,CassiContinue()
682,0,0,,(Try to free yourself.),The ropes have not got any looser. (Cassi gets her|breath back and hurries off to find her key.),661,0,0,NoActor()
682,0,0,,@HMLP MM!,(The girls watching laugh as Cassi gets her|breath back and hurries off to find her cuffs key.),661,0,0,NoActor()
682,0,0,,(Hang there.),"(Cassi gets her breath back and hurries off to|find her handcuff key, leaving you there.)",661,0,0,NoActor()
685,0,0,,(Nod your head.),"You'll soon realise how cramped it gets, suspended for|a while like that. I had better untie you now.",687,0,0,
685,0,0,,(Nod your head.),"You'll soon realize how cramped it gets, suspended for|a while like that. I had better untie you now.",687,0,0,
685,0,0,,(Shake your head.),"Kinky girl, you love this predicament.|(She resumes licking your clitoris.)",680,1,-1,
686,0,0,,(Nod your head.),Maybe another time if you're good to me.|I really should untie you now.,687,0,0,
686,0,0,,(Shake your head.),"Don't get greedy, you've had far more than|some of us get. I really should untie you now.",687,-1,0,
@ -424,7 +424,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
812,0,0,,(Shake your loose breasts.),Be patient my kinky friend. (She grasps your|beasts and snaps a clamp on each nipple.),813,1,-1,Clamped()
812,0,0,,@MMRGN|(MERCY!),"Oh fine, so you submit to my will?",820,0,0,Mercy()
813,0,0,,(Squeal with pain.),"I did warn you, but you insisted on trying them.",813,0,-1,Sensitive()
813,0,0,,(Moan with pleasure.),I didn't realise you actually are a masochist.|(She plays with the clamps.),813,1,-2,Masochism()
813,0,0,,(Moan with pleasure.),I didn't realize you actually are a masochist.|(She plays with the clamps.),813,1,-2,Masochism()
813,0,0,,(Glare at her.),"You're more resilient than you looked, but you said you|didn't want me to go easy on you. (She tugs the chain.)",813,0,1,Defiant()
813,0,0,,@MMRGN|(MERCY!),Easy there. You did tell me not to go easy on you.,813,0,-1,Sensitive()
813,0,0,,(Squirm in your restraints.),You're really getting into this.|(She toys with the clamps on your nipples.),813,0,-2,Masochism()
@ -520,7 +520,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
856,0,0,PlugCommentAvailable,That plug feels far too big.,"Nonsense, I'll work that nice tight ass|of yours up to take something much bigger.",856,0,-1,PlugSize()
856,0,0,,Can I go now?,Not yet. I need you ready to grab Amelia|while I distract her. You got that?,857,0,-1,
857,0,0,,"Yes, I got it.","Good, don't let me down.|(She takes the rope and talks to Amelia.)",858,1,0,ActorLeftAndCanLeave()
857,0,0,,This is so exciting!,Calm down. I don't want Amelia to realise until it's|too late. (She takes the rope and talks to Amelia.),858,0,0,ActorLeftAndCanLeave()
857,0,0,,This is so exciting!,Calm down. I don't want Amelia to realize until it's|too late. (She takes the rope and talks to Amelia.),858,0,0,ActorLeftAndCanLeave()
857,0,0,,Do I have to do this?,We could discus that in a private room. Just do as|I say now. (She takes the rope and talks to Amelia.),858,-1,0,ActorLeftAndCanLeave()
860,0,0,,"@Hm'm fhrrn, Hm'll hmlp.|(I'm sorry, I'll help.)",It is far too late for that. I'm going to have some fun|without you. (You hear her stand up and walk away.),861,0,-1,NoActor()
860,0,2,,@N'll gmt nhh fhr thnf.|(I'll get you for this.),"Strong words, but you are getting nothing.|(You hear her stand up and walk away.)",861,-1,0,NoActor()
@ -529,7 +529,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
861,0,0,,(Struggle to escape|the hogtie.),"(You struggle madly, but there is no slack except for|the crotch rope, which jerks tight when you kick.)",861,0,0,Waiting()
861,0,0,,(Search for a knot.),"(You carefully feel around, but cannot find a single knot.|You have been very skillfully and tightly bound.)",861,0,0,Waiting()
861,0,0,Masochist,(Chew on the gag.),"(The large ball is unyielding. You sign happily,|relishing how much it has made your jaw ache.)",861,0,0,Waiting()
861,0,0,!Masochist,(Chew on the gag.),"(The large ball is unyielding. You groan helplessly,|realising how much it has made your jaw ache.)",861,0,0,Waiting()
861,0,0,!Masochist,(Chew on the gag.),"(The large ball is unyielding. You groan helplessly,|realizing how much it has made your jaw ache.)",861,0,0,Waiting()
861,0,0,NippleClamped,(Try to remove the|nipple clamps.),"(You try rubbing the clamps against the floor,|but that only irritates your sore nipples.)",861,0,0,Waiting()
861,0,0,,(Wait for help.),"(You lie there aching, drooling and quietly groaning.|You can hear people busy nearby.)",861,0,0,Waiting()
861,0,0,,@HMLP,(You shout and scream until the club goes quiet.|Then someone laughs and the busy noises resume.),861,0,0,Waiting()

1 Stage LoveReq SubReq VarReq Interaction Result NextStage LoveMod SubMod Function
331 680 0 0 (Moan of pleasure.) (Cassi keeps teasing your clitoris, working that|sweet spot and prolonging your stifled moans.) 680 0 0 CassiCunni(2)
332 680 0 0 (Breathe heavily.) (Cassi maintain the stimulation of your clitoris,|while your whole body heaves with each breathe.) 680 0 0 CassiCunni(3)
333 680 0 0 (Grunt helplessly.) (Cassi keeps on licking steadily,|while you squirm and gag on the panties.) 680 0 0 CassiCunni(4)
334 680 0 0 (Mumble impatiently.) - cassi changes style of stimulation. reduce arousal? - Cassi changes style of stimulation. reduce arousal? 680 0 0 CassiCunni(5)
335 680 0 0 (Thrust your hips.) (Cassi keeps teasing clitoris,|keeping rhythm with you thrusting.) 680 0 0 CassiCunni(2)
336 680 0 0 (Shift your hips awkwardly.) - cassi changes style of stimulation. reduce arousal? - Cassi changes style of stimulation. reduce arousal? 680 0 0 CassiCunni(5)
337 680 0 0 CanPressCassi (Use your feet to press her|head into your crotch.) (Wrapping your feet round her head, you startle Cassi,|but she quickly resumes licking your clitoris.) 680 0 0 CassiCunni(6)
338 680 0 0 PressingCassi (Press her head hard|into your crotch.) (Cassi's mouth and nose get sealed tight against you.|She starts struggling, but doesn't stop licking.) 680 0 0 CassiCunni(7)
339 680 0 0 ForcingCassi (Keep pressing her|head hard against you.) (Cassi struggles helplessly.|Unable to pull away, she tries licking you harder. 680 0 0 CassiCunni(8)
341 680 0 0 PressingCassi (Let go of her head.) (You let your legs drop away from Cassi,|who carries on teasing you with her tongue.) 680 0 0 CassiCunni(10)
342 680 0 0 (Try to ignore Cassi.) (You try distracting yourself with mental and pain|techniques, but Cassi’s tongue is unrelenting.) 680 0 0 CassiCunni(11)
343 680 0 0 (Struggle frantically.) (Cassi leans into your crotch, keeping hear|tongue on you clitoris as you buck and shake.) 680 0 0 CassiCunni(12)
344 681 0 0 (Whine gleefully.) (Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.) (Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.) 680 0 -1 CassiContinue()
345 681 0 0 (Shiver with delight.) (Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.) (Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.) 680 1 0 CassiContinue()
346 681 0 0 (Shriek into your gag.) (Your orgasm subsides, but you realise that Cassi|hasn't stopped and is still licking you intensely.) (Your orgasm subsides, but you realize that Cassi|hasn't stopped and is still licking you intensely.) 680 0 0 CassiContinue()
347 682 0 0 (Try to free yourself.) The ropes have not got any looser. (Cassi gets her|breath back and hurries off to find her key.) 661 0 0 NoActor()
348 682 0 0 @HMLP MM! (The girls watching laugh as Cassi gets her|breath back and hurries off to find her cuffs key.) 661 0 0 NoActor()
349 682 0 0 (Hang there.) (Cassi gets her breath back and hurries off to|find her handcuff key, leaving you there.) 661 0 0 NoActor()
350 685 0 0 (Nod your head.) You'll soon realise how cramped it gets, suspended for|a while like that. I had better untie you now. You'll soon realize how cramped it gets, suspended for|a while like that. I had better untie you now. 687 0 0
351 685 0 0 (Shake your head.) Kinky girl, you love this predicament.|(She resumes licking your clitoris.) 680 1 -1
352 686 0 0 (Nod your head.) Maybe another time if you're good to me.|I really should untie you now. 687 0 0
353 686 0 0 (Shake your head.) Don't get greedy, you've had far more than|some of us get. I really should untie you now. 687 -1 0
424 812 0 0 (Shake your loose breasts.) Be patient my kinky friend. (She grasps your|beasts and snaps a clamp on each nipple.) 813 1 -1 Clamped()
425 812 0 0 @MMRGN|(MERCY!) Oh fine, so you submit to my will? 820 0 0 Mercy()
426 813 0 0 (Squeal with pain.) I did warn you, but you insisted on trying them. 813 0 -1 Sensitive()
427 813 0 0 (Moan with pleasure.) I didn't realise you actually are a masochist.|(She plays with the clamps.) I didn't realize you actually are a masochist.|(She plays with the clamps.) 813 1 -2 Masochism()
428 813 0 0 (Glare at her.) You're more resilient than you looked, but you said you|didn't want me to go easy on you. (She tugs the chain.) 813 0 1 Defiant()
429 813 0 0 @MMRGN|(MERCY!) Easy there. You did tell me not to go easy on you. 813 0 -1 Sensitive()
430 813 0 0 (Squirm in your restraints.) You're really getting into this.|(She toys with the clamps on your nipples.) 813 0 -2 Masochism()
520 856 0 0 PlugCommentAvailable That plug feels far too big. Nonsense, I'll work that nice tight ass|of yours up to take something much bigger. 856 0 -1 PlugSize()
521 856 0 0 Can I go now? Not yet. I need you ready to grab Amelia|while I distract her. You got that? 857 0 -1
522 857 0 0 Yes, I got it. Good, don't let me down.|(She takes the rope and talks to Amelia.) 858 1 0 ActorLeftAndCanLeave()
523 857 0 0 This is so exciting! Calm down. I don't want Amelia to realise until it's|too late. (She takes the rope and talks to Amelia.) Calm down. I don't want Amelia to realize until it's|too late. (She takes the rope and talks to Amelia.) 858 0 0 ActorLeftAndCanLeave()
524 857 0 0 Do I have to do this? We could discus that in a private room. Just do as|I say now. (She takes the rope and talks to Amelia.) 858 -1 0 ActorLeftAndCanLeave()
525 860 0 0 @Hm'm fhrrn, Hm'll hmlp.|(I'm sorry, I'll help.) It is far too late for that. I'm going to have some fun|without you. (You hear her stand up and walk away.) 861 0 -1 NoActor()
526 860 0 2 @N'll gmt nhh fhr thnf.|(I'll get you for this.) Strong words, but you are getting nothing.|(You hear her stand up and walk away.) 861 -1 0 NoActor()
529 861 0 0 (Struggle to escape|the hogtie.) (You struggle madly, but there is no slack except for|the crotch rope, which jerks tight when you kick.) 861 0 0 Waiting()
530 861 0 0 (Search for a knot.) (You carefully feel around, but cannot find a single knot.|You have been very skillfully and tightly bound.) 861 0 0 Waiting()
531 861 0 0 Masochist (Chew on the gag.) (The large ball is unyielding. You sign happily,|relishing how much it has made your jaw ache.) 861 0 0 Waiting()
532 861 0 0 !Masochist (Chew on the gag.) (The large ball is unyielding. You groan helplessly,|realising how much it has made your jaw ache.) (The large ball is unyielding. You groan helplessly,|realizing how much it has made your jaw ache.) 861 0 0 Waiting()
533 861 0 0 NippleClamped (Try to remove the|nipple clamps.) (You try rubbing the clamps against the floor,|but that only irritates your sore nipples.) 861 0 0 Waiting()
534 861 0 0 (Wait for help.) (You lie there aching, drooling and quietly groaning.|You can hear people busy nearby.) 861 0 0 Waiting()
535 861 0 0 @HMLP (You shout and scream until the club goes quiet.|Then someone laughs and the busy noises resume.) 861 0 0 Waiting()

View file

@ -34,7 +34,7 @@ var C101_KinbakuClub_SlaveTwin_Masturbation = 0;
var C101_KinbakuClub_SlaveTwin_ImagineBoyfriend = false;
var C101_KinbakuClub_SlaveTwin_NeitherGagged = true; // Both must be ungagged to kiss.
var C101_KinbakuClub_SlaveTwin_JustBoundOrGagged = false; // Twin won't release you if she just bound or gagged you.
var C101_KinbakuClub_SlaveTwin_HeatherResetDone = false; // for reseting VarReq if talking to heather and you know it.
var C101_KinbakuClub_SlaveTwin_HeatherResetDone = false; // for resetting VarReq if talking to Heather and you know it.
// Calculates the scene parameters
function C101_KinbakuClub_SlaveTwin_CalcParams() {

View file

@ -59,7 +59,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
31,0,0,,So Jenna will take|it out on you?,"Most of the club can't tell us apart,|Jenna might think I'm Heather.",32,0,0,
31,0,0,,Maybe Jenna should|punish you.,But I'm Lucy and it was Heather that did it to her.,32,-1,1,
31,0,0,,I could tell her|it wasn't you.,"That might help, but I don't|think she will take any chances.",32,1,0,
32,0,0,,Maybe you are heather|and you deserve it.,"No please you have got to believe me, I am Lucy.",33,-1,1,
32,0,0,,Maybe you are Heather|and you deserve it.,"No please you have got to believe me, I am Lucy.",33,-1,1,
32,0,0,,Can you prove|you are Lucy.,"Not easily, Heather is very good at impersonating me.|She even wears the same underwear.",33,0,0,
32,0,0,,We should|expose Heather.,"That isn't easy, she would only reveal herself when|it's too late for you to do anything about it.",33,1,0,
33,0,0,,I'll get that key.,"Oh thank you, please hurry.",20,1,0,

1 Stage LoveReq SubReq VarReq Interaction Result NextStage LoveMod SubMod Function
59 31 0 0 So Jenna will take|it out on you? Most of the club can't tell us apart,|Jenna might think I'm Heather. 32 0 0
60 31 0 0 Maybe Jenna should|punish you. But I'm Lucy and it was Heather that did it to her. 32 -1 1
61 31 0 0 I could tell her|it wasn't you. That might help, but I don't|think she will take any chances. 32 1 0
62 32 0 0 Maybe you are heather|and you deserve it. Maybe you are Heather|and you deserve it. No please you have got to believe me, I am Lucy. 33 -1 1
63 32 0 0 Can you prove|you are Lucy. Not easily, Heather is very good at impersonating me.|She even wears the same underwear. 33 0 0
64 32 0 0 We should|expose Heather. That isn't easy, she would only reveal herself when|it's too late for you to do anything about it. 33 1 0
65 33 0 0 I'll get that key. Oh thank you, please hurry. 20 1 0

View file

@ -189,7 +189,7 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function
350,0,0,,What are you doing?,"As I though, you already already have a mistress.|Why are all the cute subbies already taken?",360,0,0,CollarCheck()
350,0,0,,Yes mistress.,Don't try that flattery on me.|Looks like you already belong to someone else.,360,0,-1,CollarCheck()
350,0,0,,Do you like it?,You look adorable in it. I would lock it on you|if you didn't already belong to someone else.,360,1,0,CollarCheck()
350,0,0,,Do you want it?,"I would like to lock it on you, but it looks|like someone elese has aldready had the pleasure.",360,0,0,CollarCheck()
350,0,0,,Do you want it?,"I would like to lock it on you, but it looks|like someone else has already had the pleasure.",360,0,0,CollarCheck()
360,0,0,,Could you help|free me?,"No, take that up with your mistress.|This club doesn't run it's self, I'll see you later.",320,0,0,JennaLeaves()
360,0,0,,I wish you|were my mistress.,"If you ever feel the cold around your neck, come see me.|This club doesn't run it's self, I'll see you later.",320,1,-1,JennaLeaves()
360,0,0,,You shouldn't have|played with me.,"You mistress should have kept you on a shorter leash.|This club doesn't run it's self, I'll see you later.",320,0,-1,JennaLeaves()

1 Stage LoveReq SubReq VarReq Interaction Result NextStage LoveMod SubMod Function
189 350 0 0 What are you doing? As I though, you already already have a mistress.|Why are all the cute subbies already taken? 360 0 0 CollarCheck()
190 350 0 0 Yes mistress. Don't try that flattery on me.|Looks like you already belong to someone else. 360 0 -1 CollarCheck()
191 350 0 0 Do you like it? You look adorable in it. I would lock it on you|if you didn't already belong to someone else. 360 1 0 CollarCheck()
192 350 0 0 Do you want it? I would like to lock it on you, but it looks|like someone elese has aldready had the pleasure. I would like to lock it on you, but it looks|like someone else has already had the pleasure. 360 0 0 CollarCheck()
193 360 0 0 Could you help|free me? No, take that up with your mistress.|This club doesn't run it's self, I'll see you later. 320 0 0 JennaLeaves()
194 360 0 0 I wish you|were my mistress. If you ever feel the cold around your neck, come see me.|This club doesn't run it's self, I'll see you later. 320 1 -1 JennaLeaves()
195 360 0 0 You shouldn't have|played with me. You mistress should have kept you on a shorter leash.|This club doesn't run it's self, I'll see you later. 320 0 -1 JennaLeaves()

View file

@ -5,71 +5,71 @@ var C999_Common_Achievements_Unlocked = [];
// Proper variables are created at runtime, this allows for easier lookup if an achievement with a given name exists
var C999_Common_Achievements_List = [
"LearningTheRopes",
"MatchMadeInHell",
"HappyEaster",
"BeggarsChoosers",
"SpeedrunningBitch"
"LearningTheRopes",
"MatchMadeInHell",
"HappyEaster",
"BeggarsChoosers",
"SpeedrunningBitch"
];
// Chapter Common - Achievements Load
function C999_Common_Achievements_Load() {
LeaveIcon = "";
LeaveScreen = "";
C999_Common_Achievements_PrepareAchievements();
LeaveScreen = "";
C999_Common_Achievements_PrepareAchievements();
LoadInteractions();
StopTimer(7.6666667 * 60 * 60 * 1000);
}
// Chapter Common - Achievements Run
function C999_Common_Achievements_Run() {
BuildInteraction(C999_Common_Achievements_CurrentStage);
if ((C999_Common_Achievements_Image !== undefined) && (C999_Common_Achievements_Image.trim() != "")) {
DrawImage(C999_Common_Achievements_Image, 600, 0);
}
BuildInteraction(C999_Common_Achievements_CurrentStage);
if ((C999_Common_Achievements_Image !== undefined) && (C999_Common_Achievements_Image.trim() != "")) {
DrawImage(C999_Common_Achievements_Image, 600, 0);
}
}
// Chapter Common - Achievements Click
function C999_Common_Achievements_Click() {
C999_Common_Achievements_ResetImage();
C999_Common_Achievements_ResetImage();
ClickInteraction(C999_Common_Achievements_CurrentStage);
StopTimer(7.6666667 * 60 * 60 * 1000);
}
// Chapter Common - Achievements, load achievements that are already unlocked and initialize variables
function C999_Common_Achievements_PrepareAchievements() {
C999_Common_Achievements_Unlocked = [];
if (localStorage.getItem("Achievements"))
C999_Common_Achievements_Unlocked = JSON.parse(localStorage.getItem("Achievements"));
for (var A = 0; A < C999_Common_Achievements_List.length; A++) {
var AchievementName = C999_Common_Achievements_List[A];
window["C999_Common_Achievements_" + AchievementName] = (C999_Common_Achievements_Unlocked.indexOf(AchievementName) > -1);
}
C999_Common_Achievements_Unlocked = [];
if (localStorage.getItem("Achievements"))
C999_Common_Achievements_Unlocked = JSON.parse(localStorage.getItem("Achievements"));
for (var A = 0; A < C999_Common_Achievements_List.length; A++) {
var AchievementName = C999_Common_Achievements_List[A];
window["C999_Common_Achievements_" + AchievementName] = (C999_Common_Achievements_Unlocked.indexOf(AchievementName) > -1);
}
}
// Chapter Common - Achievements, overrides the image display with any image from any chapter (related to the selected achievement)
function C999_Common_Achievements_ShowImage(ImagePath) {
C999_Common_Achievements_Image = ImagePath;
C999_Common_Achievements_Image = ImagePath;
}
// Chapter Common - Achievements, stops the image being overridden
function C999_Common_Achievements_ResetImage() {
C999_Common_Achievements_Image = "";
C999_Common_Achievements_Image = "";
}
// Chapter Common - Achievements, go back to the main menu
function C999_Common_Achievements_MainMenu() {
C999_Common_Achievements_ResetImage();
C999_Common_Achievements_ResetImage();
SetScene("C000_Intro", "ChapterSelect");
}
// Unlocks the Achievement of the given name, to be called globally
function AchievementUnlock(AchievementName) {
if (C999_Common_Achievements_List.indexOf(AchievementName) < 0) return;
if (!C999_Common_Achievements_Unlocked.length) C999_Common_Achievements_PrepareAchievements(); // If the list of unlocked achievements is empty, it might just not be loaded yet (it's only loaded when the achievement menu is visited before playing), which would lead to the player's progress being overwritten
if (C999_Common_Achievements_Unlocked.indexOf(AchievementName) < 0) {
window["C999_Common_Achievements_" + AchievementName] = true;
C999_Common_Achievements_Unlocked.push(AchievementName);
localStorage.setItem("Achievements", JSON.stringify(C999_Common_Achievements_Unlocked));
}
if (C999_Common_Achievements_List.indexOf(AchievementName) < 0) return;
if (!C999_Common_Achievements_Unlocked.length) C999_Common_Achievements_PrepareAchievements(); // If the list of unlocked achievements is empty, it might just not be loaded yet (it's only loaded when the achievement menu is visited before playing), which would lead to the player's progress being overwritten
if (C999_Common_Achievements_Unlocked.indexOf(AchievementName) < 0) {
window["C999_Common_Achievements_" + AchievementName] = true;
C999_Common_Achievements_Unlocked.push(AchievementName);
localStorage.setItem("Achievements", JSON.stringify(C999_Common_Achievements_Unlocked));
}
}

View file

@ -8,28 +8,28 @@ function C999_Common_Blindfold_Load() {
LoadInteractions();
// Set the correct stage
if (PlayerHasLockedInventory("Blindfold") == true) C999_Common_Blindfold_CurrentStage = 10;
else C999_Common_Blindfold_CurrentStage = 0;
if (PlayerHasLockedInventory("Blindfold") == true) C999_Common_Blindfold_CurrentStage = 10;
else C999_Common_Blindfold_CurrentStage = 0;
}
// Chapter Common - Blindfold Run, we draw the regular player image if the item is on
function C999_Common_Blindfold_Run() {
BuildInteraction(C999_Common_Blindfold_CurrentStage);
if (PlayerHasLockedInventory("Blindfold")) DrawPlayerImage(150, 0);
BuildInteraction(C999_Common_Blindfold_CurrentStage);
if (PlayerHasLockedInventory("Blindfold")) DrawPlayerImage(150, 0);
}
// Chapter Common - Blindfold Click, allow regular interactions and clicking on another item
function C999_Common_Blindfold_Click() {
ClickInteraction(C999_Common_Blindfold_CurrentStage);
ClickInteraction(C999_Common_Blindfold_CurrentStage);
InventoryClick(GetClickedInventory(), LeaveChapter, LeaveScreen);
}
// Chapter Common - Self Blindfold
function C999_Common_Blindfold_SelfBlind() {
if ((Common_BondageAllowed) && (Common_SelfBondageAllowed) && ((LeaveChapter == "C101_KinbakuClub") || (LeaveScreen == "Natalie"))) {
PlayerRemoveInventory("Blindfold", 1);
PlayerLockInventory("Blindfold");
PlayerRemoveInventory("Blindfold", 1);
PlayerLockInventory("Blindfold");
} else {
OverridenIntroText = GetText("BadTiming");
C999_Common_Blindfold_CurrentStage = 0;
@ -38,6 +38,6 @@ function C999_Common_Blindfold_SelfBlind() {
// Chapter Common - Self UnBlindfold
function C999_Common_Blindfold_SelfUnBlind() {
PlayerUnlockInventory("Blindfold");
PlayerAddInventory("Blindfold", 1);
PlayerUnlockInventory("Blindfold");
PlayerAddInventory("Blindfold", 1);
}

View file

@ -8,20 +8,20 @@ function C999_Common_ClothGag_Load() {
LoadInteractions();
// Set the correct stage
if (PlayerHasLockedInventory("ClothGag") == true) C999_Common_ClothGag_CurrentStage = 10;
else C999_Common_ClothGag_CurrentStage = 0;
if (PlayerHasLockedInventory("ClothGag") == true) C999_Common_ClothGag_CurrentStage = 10;
else C999_Common_ClothGag_CurrentStage = 0;
}
// Chapter Common - ClothGag Run, we draw the regular player image if the item is on
function C999_Common_ClothGag_Run() {
BuildInteraction(C999_Common_ClothGag_CurrentStage);
if (PlayerHasLockedInventory("ClothGag")) DrawPlayerImage(150, 0);
BuildInteraction(C999_Common_ClothGag_CurrentStage);
if (PlayerHasLockedInventory("ClothGag")) DrawPlayerImage(150, 0);
}
// Chapter Common - ClothGag Click, allow regular interactions and clicking on another item
function C999_Common_ClothGag_Click() {
ClickInteraction(C999_Common_ClothGag_CurrentStage);
ClickInteraction(C999_Common_ClothGag_CurrentStage);
InventoryClick(GetClickedInventory(), LeaveChapter, LeaveScreen);
}
@ -40,8 +40,8 @@ function C999_Common_ClothGag_SelfGag() {
PlayerRemoveInventory("SockGag", 1);
}
} else PlayerUngag();
PlayerRemoveInventory("ClothGag", 1);
PlayerLockInventory("ClothGag");
PlayerRemoveInventory("ClothGag", 1);
PlayerLockInventory("ClothGag");
} else {
OverridenIntroText = GetText("BadTiming");
C999_Common_ClothGag_CurrentStage = 0;
@ -50,6 +50,6 @@ function C999_Common_ClothGag_SelfGag() {
// Chapter Common - Self Ungag
function C999_Common_ClothGag_SelfUngag() {
PlayerUnlockInventory("ClothGag");
PlayerAddInventory("ClothGag", 1);
PlayerUnlockInventory("ClothGag");
PlayerAddInventory("ClothGag", 1);
}

View file

@ -8,30 +8,30 @@ function C999_Common_DoubleOpenGag_Load() {
LoadInteractions();
// Set the correct stage
if (PlayerHasLockedInventory("DoubleOpenGag") == true) C999_Common_DoubleOpenGag_CurrentStage = 10;
else C999_Common_DoubleOpenGag_CurrentStage = 0;
if (PlayerHasLockedInventory("DoubleOpenGag") == true) C999_Common_DoubleOpenGag_CurrentStage = 10;
else C999_Common_DoubleOpenGag_CurrentStage = 0;
}
// Chapter Common - DoubleOpenGag Run, we draw the regular player image if the item is on
function C999_Common_DoubleOpenGag_Run() {
BuildInteraction(C999_Common_DoubleOpenGag_CurrentStage);
if (PlayerHasLockedInventory("DoubleOpenGag")) DrawPlayerImage(150, 0);
BuildInteraction(C999_Common_DoubleOpenGag_CurrentStage);
if (PlayerHasLockedInventory("DoubleOpenGag")) DrawPlayerImage(150, 0);
}
// Chapter Common - DoubleOpenGag Click, allow regular interactions and clicking on another item
function C999_Common_DoubleOpenGag_Click() {
ClickInteraction(C999_Common_DoubleOpenGag_CurrentStage);
ClickInteraction(C999_Common_DoubleOpenGag_CurrentStage);
InventoryClick(GetClickedInventory(), LeaveChapter, LeaveScreen);
}
// Chapter Common - Self DoubleOpenGag
function C999_Common_DoubleOpenGag_SelfGag() {
if ((Common_BondageAllowed) && (Common_SelfBondageAllowed)) {
PlayerUnlockInventory("TapeGag");
PlayerUnlockInventory("BallGag");
PlayerRemoveInventory("DoubleOpenGag", 1);
PlayerLockInventory("DoubleOpenGag");
PlayerUnlockInventory("TapeGag");
PlayerUnlockInventory("BallGag");
PlayerRemoveInventory("DoubleOpenGag", 1);
PlayerLockInventory("DoubleOpenGag");
} else {
OverridenIntroText = GetText("BadTiming");
C999_Common_DoubleOpenGag_CurrentStage = 0;
@ -40,6 +40,6 @@ function C999_Common_DoubleOpenGag_SelfGag() {
// Chapter Common - Self Ung«g
function C999_Common_DoubleOpenGag_SelfUngag() {
PlayerUnlockInventory("DoubleOpenGag");
PlayerAddInventory("DoubleOpenGag", 1);
PlayerUnlockInventory("DoubleOpenGag");
PlayerAddInventory("DoubleOpenGag", 1);
}