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
C000_Intro
CreatePlayer
Intro
C001_BeforeClass
Amanda
Bag
Classroom
FightIntro
FightOutro
Intro
Outro
Sidney
C002_FirstClass
Classroom
Intro
Mildred
Outro
Sidney
C003_MorningDetention
C004_ArtClass
ArtRoom
HiddenEgg
Intro
Jennifer
Julia
Outro
Sarah
C005_GymClass
GymFight
Intro
Jennifer
Outro
C006_Isolation
CellDoor
CellGround
Cross
Horse
Intro
IsolationRoom
Mildred
Outro
Pillory
Table
Yuki
C007_LunchBreak
C008_DramaClass
AmandaIntro
Damsel
Dressing
DressingHiddenItem
DressingRoom
Heroine
Intro
Julia
JuliaIntro
Outro
SarahIntro
Theater
Transition
Villain
C009_Library
C010_Revenge
AmandaSarah
EarlyEnding
Intro
Outro
SidneyJennifer
C011_LiteratureClass
Mildred
Outro
SelectDesk
C012_AfterClass
Amanda
Bed
Dorm
DormExit
Humiliation
Isolation

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,11 +238,11 @@ 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);
}
}
// Center point (cx, cy)
const cx = x0 + 0.5 * dx;
const cy = y0 + 0.5 * dy;

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;
}
}

View file

@ -39,9 +39,9 @@ function C000_Intro_CreatePlayer_Run() {
SelectSkill.appendChild(new Option(GetText("Skill" + S.toString()), S.toString()));
document.body.appendChild(SelectSkill);
C000_Intro_CreatePlayer_ControlLoaded = true;
}
// Draw the player image and the text input for the name
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Player.jpg", 900, 0);
DrawRect(0, 0, 900, 600, "white");
@ -51,7 +51,7 @@ function C000_Intro_CreatePlayer_Run() {
// Creates the "validate" button
DrawRect(300, 450, 300, 70, "#8c304e");
DrawText(GetText("Validate"), 450, 485, "white");
}
// Validate the name and starts the game
@ -79,6 +79,6 @@ function C000_Intro_CreatePlayer_KeyDown() {
}
// Create Player Click
function C000_Intro_CreatePlayer_Click() {
function C000_Intro_CreatePlayer_Click() {
if ((MouseX >= 300) && (MouseX <= 600) && (MouseY >= 450) && (MouseY <= 520)) C000_Intro_CreatePlayer_Validate();
}

View file

@ -3,12 +3,12 @@ function C000_Intro_Intro_Load() {
// Time is always 7:40 on the intro, no timer
StopTimer(7.66666667 * 60 * 60 * 1000);
}
// Intro Run
function C000_Intro_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();
@ -44,5 +44,5 @@ function C000_Intro_Intro_KeyDown() {
PlayerAddInventory("VibratingEgg", 4);
PlayerAddInventory("ChastityBelt", 4);
}
}

View file

@ -20,7 +20,7 @@ function C001_BeforeClass_Amanda_Load() {
// She dresses back automatically if not tied up, she comes back to face if she's tied up
if (C001_BeforeClass_Amanda_CurrentStage == 220) C001_BeforeClass_Amanda_CurrentStage = 200;
if ((C001_BeforeClass_Amanda_CurrentStage >= 240) && (C001_BeforeClass_Amanda_CurrentStage <= 269)) C001_BeforeClass_Amanda_CurrentStage = 230;
}
// Chapter 1 - Amanda Run
@ -29,18 +29,18 @@ function C001_BeforeClass_Amanda_Run() {
}
// Chapter 1 - Amanda Click
function C001_BeforeClass_Amanda_Click() {
function C001_BeforeClass_Amanda_Click() {
// Regular interactions
ClickInteraction(C001_BeforeClass_Amanda_CurrentStage);
// Special code for when the user wants to use the rope
if ((C001_BeforeClass_Amanda_CurrentStage < 200) && (GetClickedInventory() == "Rope")) {
C001_BeforeClass_Amanda_BackupStage = C001_BeforeClass_Amanda_CurrentStage;
C001_BeforeClass_Amanda_CurrentStage = 200;
OverridenIntroText = GetText("RopeInquiry");
}
}
// Chapter 1 - Amanda Tie

View file

@ -13,7 +13,7 @@ function C001_BeforeClass_Bag_Run() {
}
// Chapter 1 - Bag Click
function C001_BeforeClass_Bag_Click() {
function C001_BeforeClass_Bag_Click() {
ClickInteraction(C001_BeforeClass_Bag_CurrentStage);
}

View file

@ -2,11 +2,11 @@ var C001_BeforeClass_Classroom_Mode = 0;
// Chapter 1 - Classroom Load
function C001_BeforeClass_Classroom_Load() {
// Set the timer limits
StartTimer(8 * 60 * 60 * 1000, "C001_BeforeClass", "Outro");
Common_SelfBondageAllowed = false;
// Set the screen background
if (ActorSpecificHasInventory("Amanda", "Rope") && ActorSpecificHasInventory("Sidney", "Rope")) C001_BeforeClass_Classroom_Mode = 3;
if (!ActorSpecificHasInventory("Amanda", "Rope") && ActorSpecificHasInventory("Sidney", "Rope")) C001_BeforeClass_Classroom_Mode = 2;

View file

@ -1,5 +1,5 @@
// Chapter 1 - Fight Load
function C001_BeforeClass_FightIntro_Load() {
function C001_BeforeClass_FightIntro_Load() {
// Set the timer limits at 8:00
StartTimer(8 * 60 * 60 * 1000, "C001_BeforeClass", "FightOutro");
@ -10,11 +10,11 @@ function C001_BeforeClass_FightIntro_Load() {
// Chapter 1 - Fight Run
function C001_BeforeClass_FightIntro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 800, 0);
// Each animation show an additional line of text
DrawText(GetText("Intro1"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText("Intro2"), 400, 250, "White");

View file

@ -3,7 +3,7 @@ var C001_BeforeClass_FightOutro_FightResult = 0; // 0 = No winner, 1 = Victory,
// Chapter 1 - Fight Outro Load
function C001_BeforeClass_FightOutro_Load() {
// Sidney attitude changes if the player won or not
CurrentActor = "Sidney";
if (C001_BeforeClass_FightOutro_FightResult == 1) { GameLogAdd("FightVictory"); ActorChangeAttitude(0, 2); }
@ -12,20 +12,20 @@ function C001_BeforeClass_FightOutro_Load() {
// Time is always 8:00 on the fight outro, no timer
StopTimer(8 * 60 * 60 * 1000);
}
// Chapter 1 - Fight Outro Run
function C001_BeforeClass_FightOutro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Mildred.jpg", 800, 0);
// Each animation show an additional line of text
if (C001_BeforeClass_FightOutro_FightResult == 0) DrawText(GetText("Intro1A"), 400, 150, "White");
if (C001_BeforeClass_FightOutro_FightResult == 1) DrawText(GetText("Intro1B"), 400, 150, "White");
if (C001_BeforeClass_FightOutro_FightResult == 2) DrawText(GetText("Intro1C"), 400, 150, "White");
if (C001_BeforeClass_FightOutro_FightResult == 2) DrawText(GetText("Intro1C"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText("Intro2"), 400, 300, "White");
if (TextPhase >= 2) DrawText(GetText("Intro3"), 400, 450, "White");

View file

@ -3,17 +3,17 @@ function C001_BeforeClass_Intro_Load() {
// Time is always 7:40 on the intro, no timer
StopTimer(7.66666667 * 60 * 60 * 1000);
}
// Chapter 1 - Intro Run
function C001_BeforeClass_Intro_Run() {
// Draw the background and player
if (TextPhase <= 2) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background1.jpg", 0, 0);
else DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background2.jpg", 0, 0);
DrawPlayerTransition();
// Introduce chapter 1 with each clicks
DrawText(GetText("Intro1"), 450, 50, "White");
if (TextPhase >= 1) DrawText(GetText("Intro2"), 450, 150, "White");

View file

@ -21,27 +21,27 @@ function C001_BeforeClass_Outro_Load() {
// Chapter 1 - Outro Run
function C001_BeforeClass_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 800, 0);
// The text changes based on the trouble that was done
if (TextPhase >= 0) DrawText(GetText("Intro1"), 400, 100, "White");
if ((C001_BeforeClass_Outro_Mode == 0) && (TextPhase >= 1)) DrawText(GetText("Intro2A"), 400, 250, "White");
if ((C001_BeforeClass_Outro_Mode == 1) && (TextPhase >= 1)) DrawText(GetText("Intro2B"), 400, 200, "White");
if ((C001_BeforeClass_Outro_Mode == 2) && (TextPhase >= 1)) DrawText(GetText("Intro2C"), 400, 200, "White");
if ((C001_BeforeClass_Outro_Mode == 3) && (TextPhase >= 1)) DrawText(GetText("Intro2D"), 400, 200, "White");
if ((C001_BeforeClass_Outro_Mode == 0) && (TextPhase >= 2)) DrawText(GetText("Intro3A"), 400, 400, "White");
if ((C001_BeforeClass_Outro_Mode == 0) && (TextPhase >= 2)) DrawText(GetText("Intro3A"), 400, 400, "White");
if ((C001_BeforeClass_Outro_Mode >= 1) && (TextPhase >= 2)) DrawText(GetText("Intro3B"), 400, 300, "White");
if ((C001_BeforeClass_Outro_Mode >= 1) && (TextPhase >= 3)) DrawText(GetText("Intro4"), 400, 400, "White");
if ((C001_BeforeClass_Outro_Mode >= 1) && (TextPhase >= 4)) DrawText(GetText("Intro5"), 400, 500, "White");
}
// Chapter 1 - Outro Click
function C001_BeforeClass_Outro_Click() {
TextPhase++;
if ((TextPhase >= 5) && (C001_BeforeClass_Outro_Mode >= 1)) SaveMenu("C003_MorningDetention", "Intro");
if ((TextPhase >= 3) && (C001_BeforeClass_Outro_Mode < 1)) SaveMenu("C002_FirstClass", "Intro");
if ((TextPhase >= 3) && (C001_BeforeClass_Outro_Mode < 1)) SaveMenu("C002_FirstClass", "Intro");
}

View file

@ -13,10 +13,10 @@ function C001_BeforeClass_Sidney_Load() {
ActorLoad("Sidney", "Classroom");
LoadInteractions();
C001_BeforeClass_Sidney_AmandaInBondage = ActorSpecificHasInventory("Amanda", "Rope");
// She resets back to the facing position if in bondage
if ((C001_BeforeClass_Sidney_CurrentStage >= 230) && (C001_BeforeClass_Sidney_CurrentStage <= 259)) C001_BeforeClass_Sidney_CurrentStage = 220;
}
// Chapter 1 - Sidney Run
@ -25,7 +25,7 @@ function C001_BeforeClass_Sidney_Run() {
}
// Chapter 1 - Sidney Click
function C001_BeforeClass_Sidney_Click() {
function C001_BeforeClass_Sidney_Click() {
// Regular interaction
ClickInteraction(C001_BeforeClass_Sidney_CurrentStage);
@ -36,11 +36,11 @@ function C001_BeforeClass_Sidney_Click() {
C001_BeforeClass_Sidney_CurrentStage = 200;
OverridenIntroText = GetText("MyRopes");
}
}
// Chapter 1 - Sidney Fight
function C001_BeforeClass_Sidney_Fight() {
function C001_BeforeClass_Sidney_Fight() {
SetScene(CurrentChapter, "FightIntro");
}
@ -62,7 +62,7 @@ function C001_BeforeClass_Sidney_Tie() {
ActorChangeAttitude(-1, 0);
OverridenIntroText = GetText("Bondage");
C001_BeforeClass_Sidney_BondageFlag = true;
}
}
}
// Chapter 1 - Sidney Tickle

View file

@ -19,14 +19,14 @@ function C002_FirstClass_Classroom_CalcStage() {
// Chapter 2 - Classroom Load
function C002_FirstClass_Classroom_Load() {
// Set the classroom timer limits at 8:30 or 9:00
if (C002_FirstClass_Classroom_Sarah == "SarahEmpty") StartTimer(8.5 * 60 * 60 * 1000, "C002_FirstClass", "SarahIntro");
else StartTimer(9 * 60 * 60 * 1000, "C002_FirstClass", "Outro");
// Self bondage is only allowed if Mildred was subdued
Common_SelfBondageAllowed = C002_FirstClass_Classroom_MildredSubdueSuccess;
// Get the image file for each girls
C002_FirstClass_Classroom_Sidney = ActorSpecificGetImage("Sidney");
C002_FirstClass_Classroom_Mildred = ActorSpecificGetImage("Mildred");
@ -43,7 +43,7 @@ function C002_FirstClass_Classroom_Run() {
DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C002_FirstClass_Classroom_Mildred.toString() + ".jpg", 300, 0);
DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C002_FirstClass_Classroom_Amanda.toString() + ".jpg", 600, 0);
DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C002_FirstClass_Classroom_Sarah.toString() + ".jpg", 900, 0);
}
// Chapter 2 - Classroom Click

View file

@ -8,7 +8,7 @@ function C002_FirstClass_Intro_Load() {
// Chapter 2 - Intro Run
function C002_FirstClass_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -8,20 +8,20 @@ var C002_FirstClass_Mildred_ConfirmUnlock = false;
// Chapter 2 - Mildred Load
function C002_FirstClass_Mildred_Load() {
// Load the scene parameters
// Load the scene parameters
ActorLoad("Mildred", "Classroom");
LoadInteractions();
C002_FirstClass_Mildred_ConfirmUnlock = false;
if (C002_FirstClass_Mildred_CurrentStage == 0) StartTimer(8.5 * 60 * 60 * 1000, "C002_FirstClass", "SarahIntro");
// When re-entering, jump from 50 to 200 and stop any whipping
if (C002_FirstClass_Mildred_CurrentStage == 50) C002_FirstClass_Mildred_CurrentStage = 200;
if ((C002_FirstClass_Mildred_CurrentStage >= 410) && (C002_FirstClass_Mildred_CurrentStage <= 440)) C002_FirstClass_Mildred_CurrentStage = C002_FirstClass_Mildred_CurrentStage - 100;
// When the talk is over, allow the player to leave
if (C002_FirstClass_Mildred_CurrentStage >= 200) LeaveIcon = "Leave";
else LeaveIcon = "";
}
// Chapter 2 - Mildred Run
@ -30,18 +30,18 @@ function C002_FirstClass_Mildred_Run() {
}
// Chapter 2 - Mildred Click
function C002_FirstClass_Mildred_Click() {
function C002_FirstClass_Mildred_Click() {
// Regular interactions
ClickInteraction(C002_FirstClass_Mildred_CurrentStage);
var ClickedInv = GetClickedInventory();
// Beyond -3 love, the teacher spank the player
if ((C002_FirstClass_Mildred_CurrentStage <= 50) && (ActorGetValue(ActorLove) <= -3) && !C002_FirstClass_Mildred_BeatingDone) {
OverridenIntroText = GetText("SurpriseAttack");
C002_FirstClass_Mildred_CurrentStage = 100;
C002_FirstClass_Mildred_BeatingDone = true;
}
}
// When the user wants to use the gag
if ((C002_FirstClass_Mildred_CurrentStage >= 310) && (ClickedInv == "BallGag") && (ActorHasInventory("BallGag") == false) && (Common_PlayerNotRestrained)) {
@ -96,11 +96,11 @@ function C002_FirstClass_Mildred_Click() {
ActorAddInventory("Cuffs");
CurrentTime = CurrentTime + 60000;
}
// When the talk is over, allow the player to leave
if (C002_FirstClass_Mildred_CurrentStage == 50)
LeaveIcon = "Leave";
}
// Chapter 2 - Mildred Restrain Player
@ -117,7 +117,7 @@ function C002_FirstClass_Mildred_RestrainPlayer() {
// Chapter 2 - Mildred Disturb Class
function C002_FirstClass_Mildred_Disturb() {
// After 4 attempts to disturb Mildred, she cuffs and gags the player
C002_FirstClass_Mildred_DisturbCount++;
if (C002_FirstClass_Mildred_DisturbCount == 1) OverridenIntroText = GetText("Disturb1");
@ -133,7 +133,7 @@ function C002_FirstClass_Mildred_Disturb() {
// Chapter 2 - Mildred Subdue
function C002_FirstClass_Mildred_Subdue() {
// Count the number of girls who agree
var AgreeCount = 0;
if (C002_FirstClass_Classroom_SidneyAgree) AgreeCount++;
@ -145,9 +145,9 @@ function C002_FirstClass_Mildred_Subdue() {
OverridenIntroText = GetText("SubdueAlone");
C002_FirstClass_Mildred_CurrentStage = 220;
GameLogAdd("SubdueFail");
LeaveIcon = "";
LeaveIcon = "";
}
// With one helper, both the player and the helper end up bound and gagged
if (AgreeCount == 1) {
if (C002_FirstClass_Classroom_SidneyAgree) { OverridenIntroText = GetText("SubdueSidney"); CurrentActor = "Sidney"; ActorAddInventory("Cuffs"); ActorAddInventory("BallGag"); }

View file

@ -2,7 +2,7 @@ var C002_FirstClass_Outro_Restrained = false;
// Chapter 2 - Outro Load
function C002_FirstClass_Outro_Load() {
// Time is always 9:15:00 in the outro
StopTimer(9 * 60 * 60 * 1000);
C002_FirstClass_Outro_Restrained = Common_PlayerRestrained;
@ -15,11 +15,11 @@ function C002_FirstClass_Outro_Load() {
// Chapter 2 - Outro Run
function C002_FirstClass_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 800, 0);
// Write the chapter outro
DrawText(GetText("Intro1"), 400, 150, "White");
if ((TextPhase >= 1) && (C002_FirstClass_Classroom_MildredSubdueSuccess == false) && (C002_FirstClass_Classroom_MildredSubdueFailed == false)) DrawText(GetText("Intro2A"), 400, 250, "White");
@ -38,7 +38,7 @@ function C002_FirstClass_Outro_Click() {
TextPhase++;
if (TextPhase >= 4)
SaveMenu("C004_ArtClass", "Intro");
// Release the player on phase 2
if (TextPhase == 2) {

View file

@ -9,7 +9,7 @@ var C002_FirstClass_Sidney_AmandaWhipDone = false;
var C002_FirstClass_Sidney_SarahWhipDone = false;
// Change the Amanda and Sarah variables
function C002_FirstClass_Sidney_AmandaSarahVariables() {
function C002_FirstClass_Sidney_AmandaSarahVariables() {
C002_FirstClass_Sidney_AmandaWhipReady = ((C002_FirstClass_Sidney_CurrentStage == 100) && (Common_PlayerNotGagged) && (Common_PlayerNotRestrained) && (C002_FirstClass_Classroom_MildredSubdueSuccess) && (C002_FirstClass_Sidney_AmandaWhipDone == false) && (PlayerHasInventory("Crop")) && ((ActorSpecificHasInventory("Amanda", "Rope")) || (ActorSpecificHasInventory("Amanda", "Cuffs"))));
C002_FirstClass_Sidney_SarahWhipReady = ((C002_FirstClass_Sidney_CurrentStage == 100) && (Common_PlayerNotGagged) && (Common_PlayerNotRestrained) && (C002_FirstClass_Classroom_MildredSubdueSuccess) && (C002_FirstClass_Sidney_SarahWhipDone == false) && (PlayerHasInventory("Crop")) && ((ActorSpecificHasInventory("Sarah", "Rope")) || (ActorSpecificHasInventory("Sarah", "Cuffs"))));
}
@ -17,13 +17,13 @@ function C002_FirstClass_Sidney_AmandaSarahVariables() {
// Chapter 2 - Sidney Load
function C002_FirstClass_Sidney_Load() {
// Load the scene parameters
// Load the scene parameters
ActorLoad("Sidney", "Classroom");
LoadInteractions();
C002_FirstClass_Sidney_PlayerHasRope = PlayerHasInventory("Rope");
if (C002_FirstClass_Classroom_MildredSubdueSuccess) C002_FirstClass_Sidney_BowRemarkReady = false;
C002_FirstClass_Sidney_BondageBefore = (ActorGetValue(ActorBondageCount) > 0);
// Stage jumps depending on actor bondage if subdue was tried
if ((C002_FirstClass_Classroom_MildredSubdueFailed) || (C002_FirstClass_Classroom_MildredSubdueSuccess)) {
if ((parseInt(C002_FirstClass_Sidney_CurrentStage) < 100) && (Common_PlayerNotGagged) && (C002_FirstClass_Classroom_MildredSubdueSuccess)) C002_FirstClass_Sidney_SubdueRemarkReady = true;
@ -50,15 +50,15 @@ function C002_FirstClass_Sidney_Run() {
}
// Chapter 2 - Sidney Click
function C002_FirstClass_Sidney_Click() {
function C002_FirstClass_Sidney_Click() {
// Keep the stage on entry
var EntryStage = C002_FirstClass_Sidney_CurrentStage;
// Regular interactions
ClickInteraction(C002_FirstClass_Sidney_CurrentStage);
ClickInteraction(C002_FirstClass_Sidney_CurrentStage);
var ClickedInv = GetClickedInventory();
// If the player wants to gag Sidney
if ((C002_FirstClass_Sidney_CurrentStage >= 100) && (ClickedInv == "BallGag") && (ActorHasInventory("BallGag") == false) && (Common_PlayerNotRestrained)) {
if ((ActorGetValue(ActorSubmission) >= 2) || (ActorHasInventory("Rope")) || (ActorHasInventory("Cuffs"))) {
@ -160,5 +160,5 @@ function C002_FirstClass_Sidney_SarahWhip() {
OverridenIntroImage = "Sidney_Crop.jpg";
GameLogAdd("CropSarah");
C002_FirstClass_Sidney_SarahWhipDone = true;
C002_FirstClass_Sidney_AmandaSarahVariables();
C002_FirstClass_Sidney_AmandaSarahVariables();
}

View file

@ -27,7 +27,7 @@ function C003_MorningDetention_Bag_Click() {
}
// Chapter 3 - Bag Steal Pill
function C003_MorningDetention_Bag_StealPill() {
function C003_MorningDetention_Bag_StealPill() {
// Steal the sleeping pill from the bag
PlayerAddInventory("SleepingPill", 1);
@ -38,7 +38,7 @@ function C003_MorningDetention_Bag_StealPill() {
}
// Chapter 3 - Bag Steal Egg
function C003_MorningDetention_Bag_StealEgg() {
function C003_MorningDetention_Bag_StealEgg() {
// Steal the vibrating egg from the bag
PlayerAddInventory("VibratingEgg", 1);

View file

@ -9,12 +9,12 @@ function C003_MorningDetention_DetentionRoom_Load() {
// Set the timer limits
StartTimer(9 * 60 * 60 * 1000, "C003_MorningDetention", "Outro");
}
// Chapter 3 - Detention Room Run
function C003_MorningDetention_DetentionRoom_Run() {
// Yuki mode changes with time or if she's in trouble
C003_MorningDetention_DetentionRoom_Yuki = (Math.round((CurrentTime - 180000) / 120000) % 3) + 1;
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime >= C003_MorningDetention_DetentionRoom_SleepTimer)) C003_MorningDetention_DetentionRoom_Yuki = 4; // Sleeping

View file

@ -13,11 +13,11 @@ function C003_MorningDetention_Glass_Run() {
}
// Chapter 3 - Glass Click
function C003_MorningDetention_Glass_Click() {
function C003_MorningDetention_Glass_Click() {
// Regular interaction
ClickInteraction(C003_MorningDetention_Glass_CurrentStage);
// Special code for when the user wants to use the sleeping pills
if ((C003_MorningDetention_Glass_CurrentStage == 0) && (GetClickedInventory() == "SleepingPill"))
C003_MorningDetention_Glass_CurrentStage = 10;
@ -25,7 +25,7 @@ function C003_MorningDetention_Glass_Click() {
}
// Chapter 3 - Glass Break Pill
function C003_MorningDetention_Glass_BreakPill() {
function C003_MorningDetention_Glass_BreakPill() {
// Remove the pill from the player and starts the timer for 10 minutes
if (Common_PlayerNotRestrained) {
@ -35,6 +35,6 @@ function C003_MorningDetention_Glass_BreakPill() {
} else {
OverridenIntroText = GetText("CannotWithCuffs");
}
}

View file

@ -2,13 +2,13 @@ var C003_MorningDetention_Intro_Fighting = false;
// Chapter 3 - Intro Load
function C003_MorningDetention_Intro_Load() {
// Time is always 8:20 on the intro + remove any remaining rope
StopTimer(8.33333334 * 60 * 60 * 1000);
PlayerRemoveAllInventory();
// Set the fighting variable based on if the player fought Sidney in the 1st chapter
C003_MorningDetention_Intro_Fighting = (GameLogQuery("C001_BeforeClass", "Sidney", "FightVictory") || GameLogQuery("C001_BeforeClass", "Sidney", "FightDefeat"));
C003_MorningDetention_Intro_Fighting = (GameLogQuery("C001_BeforeClass", "Sidney", "FightVictory") || GameLogQuery("C001_BeforeClass", "Sidney", "FightDefeat"));
if (!C003_MorningDetention_Intro_Fighting) GameLogSpecificAdd("C001_BeforeClass", "", "PublicBondage");
}
@ -27,7 +27,7 @@ function C003_MorningDetention_Intro_Run() {
if (TextPhase >= 3) DrawText(GetText("Intro4"), 450, 350, "White");
if (TextPhase >= 4) DrawText(GetText("Intro5"), 450, 450, "White");
if (TextPhase >= 5) DrawText(GetText("Intro6"), 450, 550, "White");
}
// Chapter 3 - Intro Click

View file

@ -2,7 +2,7 @@ var C003_MorningDetention_Outro_EscapedDetention = false;
// Chapter 3 - Outro Load
function C003_MorningDetention_Outro_Load() {
// Time is always 9:15:00 in the outro
C003_MorningDetention_Outro_EscapedDetention = (CurrentTime < 9 * 60 * 60 * 1000);
if (C003_MorningDetention_Outro_EscapedDetention) GameLogSpecificAdd(CurrentChapter, "Yuki", "Escape");
@ -17,11 +17,11 @@ function C003_MorningDetention_Outro_Load() {
// Chapter 3 - Outro Run
function C003_MorningDetention_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 800, 0);
// Write the chapter outro
if (C003_MorningDetention_Outro_EscapedDetention == false) DrawText(GetText("Outro1A"), 400, 150, "White");
if (C003_MorningDetention_Outro_EscapedDetention == true) DrawText(GetText("Outro1B"), 400, 150, "White");

View file

@ -9,19 +9,19 @@ var C003_MorningDetention_Sidney_EggInside = false;
function C003_MorningDetention_Sidney_Load() {
// Jump directly to stage 100 if the teacher was drugged but is not sleeping
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime < C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Sidney_CurrentStage < 100))
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime < C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Sidney_CurrentStage < 100))
C003_MorningDetention_Sidney_CurrentStage = 100;
// Jump directly to stage 200 if the teacher was drugged and is sleeping
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime >= C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Sidney_CurrentStage < 200))
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime >= C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Sidney_CurrentStage < 200))
C003_MorningDetention_Sidney_CurrentStage = 200;
// If Sidney isn't gone and the teacher woke up, there's a special dialog
if ((C003_MorningDetention_Yuki_CurrentStage >= 200) && (C003_MorningDetention_Sidney_CurrentStage != 160) && (C003_MorningDetention_Sidney_CurrentStage < 300) && (C003_MorningDetention_Yuki_CurrentStage != 230))
C003_MorningDetention_Sidney_CurrentStage = 150;
// Load the scene parameters
C003_MorningDetention_Sidney_EggReady = false;
C003_MorningDetention_Sidney_EggReady = false;
C003_MorningDetention_Sidney_FightVictory = GameLogQuery("C001_BeforeClass", "Sidney", "FightVictory");
C003_MorningDetention_Sidney_FightDefeat = GameLogQuery("C001_BeforeClass", "Sidney", "FightDefeat");
ActorLoad("Sidney", "DetentionRoom");
@ -35,12 +35,12 @@ function C003_MorningDetention_Sidney_Run() {
}
// Chapter 3 - Sidney Click
function C003_MorningDetention_Sidney_Click() {
function C003_MorningDetention_Sidney_Click() {
// Regular interaction
ClickInteraction(C003_MorningDetention_Sidney_CurrentStage);
var ClickInv = GetClickedInventory();
// Special code for when the user wants to unlock Sidney
if ((ClickInv == "CuffsKey") && (C003_MorningDetention_Sidney_CurrentStage < 300) && Common_PlayerNotRestrained) {
PlayerAddInventory("Cuffs", 1);
@ -59,27 +59,27 @@ function C003_MorningDetention_Sidney_Click() {
// Special code for when the user wants to use the vibrating egg on Sidney
if ((ClickInv == "SleepingPill") && (C003_MorningDetention_Sidney_CurrentStage < 200) && Common_PlayerNotRestrained)
OverridenIntroText = GetText("SleepingPill");
// Special code for when the user wants to use the vibrating egg on Sidney
if ((ClickInv == "VibratingEgg") && (C003_MorningDetention_Sidney_CurrentStage >= 200) && (C003_MorningDetention_Sidney_CurrentStage < 300) && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("VibratingEggReady");
C003_MorningDetention_Sidney_EggReady = true;
}
}
// Chapter 3 - Sidney Strip
function C003_MorningDetention_Sidney_Strip() {
function C003_MorningDetention_Sidney_Strip() {
C003_MorningDetention_DetentionRoom_SidneyStrip = true;
}
// Chapter 3 - Sidney Dress
function C003_MorningDetention_Sidney_Dress() {
function C003_MorningDetention_Sidney_Dress() {
C003_MorningDetention_DetentionRoom_SidneyStrip = false;
}
// Chapter 3 - Sidney Unlock
function C003_MorningDetention_Sidney_Unlock() {
function C003_MorningDetention_Sidney_Unlock() {
C003_MorningDetention_DetentionRoom_SidneyGone = true;
}

View file

@ -12,13 +12,13 @@ var C003_MorningDetention_Yuki_TickleDone = false;
function C003_MorningDetention_Yuki_Load() {
// Jump directly to stage 100 if the teacher was drugged and sleeping
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime >= C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Yuki_CurrentStage < 100))
if ((C003_MorningDetention_DetentionRoom_SleepTimer > 0) && (CurrentTime >= C003_MorningDetention_DetentionRoom_SleepTimer) && (C003_MorningDetention_Yuki_CurrentStage < 100))
C003_MorningDetention_Yuki_CurrentStage = 100;
// Flag if Yuki is sleepy or Sidney is gone
C003_MorningDetention_Yuki_Sleepy = (C003_MorningDetention_DetentionRoom_SleepTimer > 0);
C003_MorningDetention_Yuki_SidneyGone = C003_MorningDetention_DetentionRoom_SidneyGone;
C003_MorningDetention_Yuki_SidneyGone = C003_MorningDetention_DetentionRoom_SidneyGone;
// Load the scene parameters
C003_MorningDetention_Yuki_EggReady = false;
C003_MorningDetention_Yuki_Fighting = C003_MorningDetention_Intro_Fighting;
@ -37,12 +37,12 @@ function C003_MorningDetention_Yuki_Run() {
}
// Chapter 3 - Yuki Click
function C003_MorningDetention_Yuki_Click() {
function C003_MorningDetention_Yuki_Click() {
// Regular interaction
ClickInteraction(C003_MorningDetention_Yuki_CurrentStage);
var ClickInv = GetClickedInventory();
// Special code for when the user wants to lock Yuki
if ((ClickInv == "Cuffs") && (C003_MorningDetention_Yuki_CurrentStage == 110) && Common_PlayerNotRestrained) {
PlayerRemoveInventory("Cuffs", 1);
@ -50,8 +50,8 @@ function C003_MorningDetention_Yuki_Click() {
OverridenIntroText = GetText("Cuffs");
C003_MorningDetention_Yuki_CurrentStage = 120;
CurrentTime = CurrentTime + 60000;
}
}
// Special code for when the user wants to unlock Yuki when she sleeps
if ((ClickInv == "CuffsKey") && ((C003_MorningDetention_Yuki_CurrentStage == 120) || (C003_MorningDetention_Yuki_CurrentStage == 130)) && Common_PlayerNotRestrained) {
PlayerAddInventory("Cuffs", 1);
@ -59,7 +59,7 @@ function C003_MorningDetention_Yuki_Click() {
OverridenIntroText = GetText("Unlock");
C003_MorningDetention_Yuki_CurrentStage = 110;
CurrentTime = CurrentTime + 60000;
}
}
// Special code for when the user wants to unlock Yuki when she's awake
if ((ClickInv == "CuffsKey") && (C003_MorningDetention_Yuki_CurrentStage == 230) && Common_PlayerNotRestrained) {
@ -74,22 +74,22 @@ function C003_MorningDetention_Yuki_Click() {
if ((ClickInv == "VibratingEgg") && (C003_MorningDetention_Yuki_CurrentStage >= 110) && (C003_MorningDetention_Yuki_CurrentStage <= 130) && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("VibratingEggReady");
C003_MorningDetention_Yuki_EggReady = true;
}
}
// Special code for when the user wants to use an item when Yuki is awake
if (((ClickInv == "VibratingEgg") || (ClickInv == "SleepingPill")) && (C003_MorningDetention_Yuki_CurrentStage < 100) && Common_PlayerNotRestrained)
C003_MorningDetention_Yuki_CurrentStage = 30;
}
// Chapter 3 - Yuki Confiscate
function C003_MorningDetention_Yuki_Confiscate() {
function C003_MorningDetention_Yuki_Confiscate() {
PlayerRemoveInventory("VibratingEgg", 1);
PlayerRemoveInventory("SleepingPill", 1);
PlayerRemoveInventory("SleepingPill", 1);
}
// Chapter 3 - Yuki Search
function C003_MorningDetention_Yuki_Search() {
function C003_MorningDetention_Yuki_Search() {
C003_MorningDetention_Yuki_CanSearch = false;
PlayerAddInventory("Cuffs", 1);
if (PlayerHasInventory("CuffsKey") == false) PlayerAddInventory("CuffsKey", 1);
@ -104,7 +104,7 @@ function C003_MorningDetention_Yuki_SearchCuffKeys() {
}
// Chapter 3 - Yuki Insert
function C003_MorningDetention_Yuki_Insert() {
function C003_MorningDetention_Yuki_Insert() {
C003_MorningDetention_Yuki_EggReady = false;
C003_MorningDetention_Yuki_EggInside = true;
PlayerRemoveInventory("VibratingEgg", 1);
@ -112,7 +112,7 @@ function C003_MorningDetention_Yuki_Insert() {
}
// Chapter 3 - Yuki Escape
function C003_MorningDetention_Yuki_Escape() {
function C003_MorningDetention_Yuki_Escape() {
SetScene(CurrentChapter, "Outro");
}

View file

@ -9,7 +9,7 @@ var C004_ArtClass_ArtRoom_SarahStage = 0;
// Chapter 4 - ArtRoom Load
function C004_ArtClass_ArtRoom_Load() {
// Get the image file for each girls
LeaveIcon = "Wait";
C004_ArtClass_ArtRoom_Jennifer = "Jennifer";
@ -20,7 +20,7 @@ function C004_ArtClass_ArtRoom_Load() {
if ((C004_ArtClass_ArtRoom_ExtraModel == "") && (C004_ArtClass_ArtRoom_JuliaStage <= 1)) C004_ArtClass_ArtRoom_Julia = "Julia_DoublePose";
if ((C004_ArtClass_ArtRoom_ExtraModel == "") && (C004_ArtClass_ArtRoom_JuliaStage == 2)) C004_ArtClass_ArtRoom_Julia = "Julia_DoublePoseNoTop";
if ((C004_ArtClass_ArtRoom_ExtraModel == "") && (C004_ArtClass_ArtRoom_JuliaStage >= 3)) C004_ArtClass_ArtRoom_Julia = "Julia_DoublePoseNaked";
// Define the extra model picture
if (C004_ArtClass_ArtRoom_ExtraModel == "Sarah") C004_ArtClass_ArtRoom_Sarah = "Sarah_Empty";
if (C004_ArtClass_ArtRoom_ExtraModel == "Jennifer") C004_ArtClass_ArtRoom_Jennifer = "Jennifer_Empty";
@ -43,7 +43,7 @@ function C004_ArtClass_ArtRoom_Run() {
DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C004_ArtClass_ArtRoom_Julia + ".jpg", 300, 0);
if (C004_ArtClass_ArtRoom_ExtraModel != "") DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C004_ArtClass_ArtRoom_ExtraModelImage + "_Extra.jpg", 600, 0);
DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C004_ArtClass_ArtRoom_Sarah + ".jpg", 900, 0);
}
// Chapter 4 - ArtRoom Click

View file

@ -4,7 +4,7 @@ var C004_ArtClass_HiddenEgg_CurrentStage = 0;
function C004_ArtClass_HiddenEgg_Load() {
LeaveIcon = "Leave";
LeaveScreen = "ArtRoom";
LoadInteractions();
LoadInteractions();
}
// Chapter 4 - Hidden Egg Run
@ -18,7 +18,7 @@ function C004_ArtClass_HiddenEgg_Click() {
}
// Chapter 4 - Bag Take Egg
function C004_ArtClass_HiddenEgg_TakeEgg() {
function C004_ArtClass_HiddenEgg_TakeEgg() {
PlayerAddInventory("VibratingEgg", 1);
AchievementUnlock("HappyEaster");
}

View file

@ -3,7 +3,7 @@ function C004_ArtClass_Intro_Load() {
// Time is always 9:15 on the intro, no timer
StopTimer(9.25 * 60 * 60 * 1000);
// Do not allow bondage when we begin
Common_BondageAllowed = false;
Common_SelfBondageAllowed = false;
@ -12,7 +12,7 @@ function C004_ArtClass_Intro_Load() {
// Chapter 4 - Intro Run
function C004_ArtClass_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -20,22 +20,22 @@ var C004_ArtClass_Jennifer_PaintAvail = true;
// Chapter 4 - Jennifer Load
function C004_ArtClass_Jennifer_Load() {
// Load the scene parameters
// Load the scene parameters
ActorLoad("Jennifer", "ArtRoom");
LoadInteractions();
C004_ArtClass_Jennifer_EggConfirm = false;
C004_ArtClass_Jennifer_JuliaStrip = (C004_ArtClass_ArtRoom_JuliaStage >= 2);
// Jumps to the correct stage
if ((C004_ArtClass_ArtRoom_ExtraModel == "Jennifer") && (C004_ArtClass_Jennifer_CurrentStage < 100)) C004_ArtClass_Jennifer_CurrentStage = 100;
if ((C004_ArtClass_ArtRoom_ExtraModel != "") && (C004_ArtClass_ArtRoom_ExtraModel != "Jennifer")) C004_ArtClass_Jennifer_CurrentStage = 80;
// If we allow the player to beg to be released
C004_ArtClass_Jennifer_CanBegForRelease = ((C004_ArtClass_ArtRoom_ExtraModel == "Player") && Common_PlayerRestrained && Common_PlayerNotGagged);
// A player with seduction has an extra option
if (PlayerGetSkillLevel("Seduction") == 0) C004_ArtClass_Jennifer_StunningBeautyReady = false;
}
// Chapter 4 - Jennifer Run
@ -62,7 +62,7 @@ function C004_ArtClass_Jennifer_Click() {
C004_ArtClass_Jennifer_CurrentStage = 60;
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the rope
if (Common_BondageAllowed && (C004_ArtClass_Jennifer_CurrentStage >= 120) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (ActorGetValue(ActorSubmission) < 3) {
@ -76,12 +76,12 @@ function C004_ArtClass_Jennifer_Click() {
CurrentTime = CurrentTime + 60000;
}
}
// When the user wants to use a gag without tying her
if (Common_BondageAllowed && ((ClickInv == "BallGag") || (ClickInv == "TapeGag")) && !ActorHasInventory("Rope") && !ActorHasInventory("BallGag") && !ActorHasInventory("TapeGag") && Common_PlayerNotRestrained)
OverridenIntroText = GetText("NoGag");
// When the user wants to use a BallGag
// When the user wants to use a BallGag
if (Common_BondageAllowed && (ClickInv == "BallGag") && ActorHasInventory("Rope") && !ActorHasInventory("BallGag") && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("BallGag");
C004_ArtClass_Jennifer_CurrentStage = 140;
@ -109,9 +109,9 @@ function C004_ArtClass_Jennifer_Click() {
if (C004_ArtClass_Jennifer_CropDone == false) { C004_ArtClass_Jennifer_CropDone = true; ActorChangeAttitude(-1, 1); }
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the vibrating egg on Jennifer
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (C004_ArtClass_Jennifer_EggConfirm == false) {
C004_ArtClass_Jennifer_EggConfirm = true;
OverridenIntroText = GetText("VibratingEggWarning");
@ -128,7 +128,7 @@ function C004_ArtClass_Jennifer_Click() {
// Chapter 4 - Jennifer Sandro Comment - Start Julia Stage 1
function C004_ArtClass_Jennifer_SandroComment() {
if (C004_ArtClass_ArtRoom_JuliaStage == 0)
if (C004_ArtClass_ArtRoom_JuliaStage == 0)
C004_ArtClass_ArtRoom_JuliaStage = 1;
}

View file

@ -40,24 +40,24 @@ function C004_ArtClass_Julia_Load() {
if (C004_ArtClass_Julia_CurrentStage == 100) C004_ArtClass_Julia_CurrentStage = 110;
if (C004_ArtClass_Julia_CurrentStage == 130) C004_ArtClass_Julia_CurrentStage = 140;
if ((C004_ArtClass_Julia_CurrentStage == 160) || (C004_ArtClass_Julia_CurrentStage == 180)) C004_ArtClass_Julia_CurrentStage = 170;
C004_ArtClass_Julia_Sandro = ((C004_ArtClass_ArtRoom_JuliaStage >= 1) && Common_PlayerNotGagged);
C004_ArtClass_Julia_Sandro = ((C004_ArtClass_ArtRoom_JuliaStage >= 1) && Common_PlayerNotGagged);
C004_ArtClass_Julia_AllowUnderwear = ((C004_ArtClass_ArtRoom_ExtraModel == "Player") && Common_PlayerNotGagged && Common_PlayerClothed);
C004_ArtClass_Julia_AllowNaked = ((C004_ArtClass_ArtRoom_ExtraModel == "Player") && Common_PlayerNotGagged && Common_PlayerUnderwear);
C004_ArtClass_Julia_GetImage();
// When the talk is over, allow the player to leave
if (C004_ArtClass_Julia_CurrentStage >= 60) LeaveIcon = "Leave";
else LeaveIcon = "";
else LeaveIcon = "";
C004_ArtClass_Julia_BigHugReady = (!C004_ArtClass_Julia_BigHugDone && Common_PlayerNotGagged && (C004_ArtClass_Julia_CurrentStage >= 60));
C004_ArtClass_Julia_AllowShibari = ((Common_BondageAllowed == false) && (C004_ArtClass_ArtRoom_JuliaStage >= 4));
// If we allow the player to beg to be released or do self bondage
C004_ArtClass_Julia_CanBegForRelease = ((C004_ArtClass_ArtRoom_ExtraModel == "Player") && Common_PlayerRestrained && Common_PlayerGagged);
C004_ArtClass_Julia_CanDoSelfBondage = ((C004_ArtClass_ArtRoom_ExtraModel == "Player") && !Common_PlayerRestrained && !Common_PlayerGagged && Common_PlayerNaked && Common_BondageAllowed && PlayerHasInventory("Rope") && (PlayerGetSkillLevel("RopeMastery") >= 1));
// A player with seduction has an extra option
if (PlayerGetSkillLevel("Seduction") == 0) C004_ArtClass_Julia_WorkOfArtReady = false;
}
// Chapter 4 - Julia Run
@ -66,12 +66,12 @@ function C004_ArtClass_Julia_Run() {
}
// Chapter 4 - Julia Click
function C004_ArtClass_Julia_Click() {
function C004_ArtClass_Julia_Click() {
// Regular interactions
ClickInteraction(C004_ArtClass_Julia_CurrentStage);
var ClickInv = GetClickedInventory();
// When the talk is over, allow the player to leave
if (C004_ArtClass_Julia_CurrentStage >= 60) LeaveIcon = "Leave";
@ -81,7 +81,7 @@ function C004_ArtClass_Julia_Click() {
// When the user wants to use the rope on Julia
if (Common_BondageAllowed && (ClickInv == "Rope") && !ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
// It can work if Julia is submissive, else the player gets tied up
if (ActorGetValue(ActorSubmission) > 0) {
OverridenIntroText = GetText("RopeJulia");
@ -100,7 +100,7 @@ function C004_ArtClass_Julia_Click() {
// Time and item are consumed
PlayerRemoveInventory("Rope", 1);
CurrentTime = CurrentTime + 60000;
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the BallGag
@ -126,7 +126,7 @@ function C004_ArtClass_Julia_Click() {
C004_ArtClass_Julia_IsGagged = true;
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the crop
if (Common_BondageAllowed && (ClickInv == "Crop") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("Crop");
@ -134,7 +134,7 @@ function C004_ArtClass_Julia_Click() {
}
// When the user wants to use the vibrating egg on Julia
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (C004_ArtClass_Julia_EggConfirm == false) {
C004_ArtClass_Julia_EggConfirm = true;
OverridenIntroText = GetText("VibratingEggWarning");
@ -145,10 +145,10 @@ function C004_ArtClass_Julia_Click() {
C004_ArtClass_Julia_EggInside = true;
}
}
// Get the correct image for Julia
C004_ArtClass_Julia_GetImage();
}
// Chapter 4 - Julia Big Hug
@ -164,13 +164,13 @@ function C004_ArtClass_Julia_BigHug() {
// Chapter 4 - Julia Remove Top
function C004_ArtClass_Julia_RemoveTop() {
if (C004_ArtClass_ArtRoom_JuliaStage <= 1)
if (C004_ArtClass_ArtRoom_JuliaStage <= 1)
C004_ArtClass_ArtRoom_JuliaStage = 2;
}
// Chapter 4 - Julia Strip
function C004_ArtClass_Julia_Strip() {
if (C004_ArtClass_ArtRoom_JuliaStage <= 2)
if (C004_ArtClass_ArtRoom_JuliaStage <= 2)
C004_ArtClass_ArtRoom_JuliaStage = 3;
}
@ -287,7 +287,7 @@ function C004_ArtClass_Julia_Tickle() {
else OverridenIntroText = GetText("TickleRestrained");
ActorChangeAttitude(1, 0);
C004_ArtClass_Julia_TickleDone = true;
}
}
}
// Chapter 4 - Julia Change Model
@ -305,10 +305,10 @@ function C004_ArtClass_Julia_BegForRelease() {
CurrentTime = CurrentTime + 60000;
} else {
OverridenIntroText = GetText("PlayerStayGagged");
}
}
} else {
OverridenIntroText = GetText("JuliaRestrainedPlayerGagged");
}
}
}
// Chapter 4 - Julia Gagged Speech

View file

@ -3,14 +3,14 @@ var C004_ArtClass_Outro_Crime = "";
// Chapter 4 - Outro Load
function C004_ArtClass_Outro_Load() {
// Time is always 10:15:00 in the outro
StopTimer(10.25 * 60 * 60 * 1000);
C004_ArtClass_Outro_Restrained = Common_PlayerRestrained;
ActorSpecificClearInventory("Jennifer", false);
ActorSpecificClearInventory("Julia", false);
ActorSpecificClearInventory("Sarah", false);
// Gets the player crime chapter 2 or 3. If there's any, we go to chapter 6 instead of 5.
if (GameLogQuery("C002_FirstClass", "Mildred", "Subdue") && !GameLogQuery("C002_FirstClass", "Mildred", "Release")) C004_ArtClass_Outro_Crime = "RestrainMildred";
if (GameLogQuery("C003_MorningDetention", "Yuki", "Drug") && !GameLogQuery("C003_MorningDetention", "Yuki", "DrugAwake")) C004_ArtClass_Outro_Crime = "DrugYuki";
@ -21,10 +21,10 @@ function C004_ArtClass_Outro_Load() {
// Chapter 4 - Outro Run
function C004_ArtClass_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
// Write the chapter outro
if (C004_ArtClass_Outro_Crime == "") {
@ -35,7 +35,7 @@ function C004_ArtClass_Outro_Run() {
if ((TextPhase >= 1) && !C004_ArtClass_Outro_Restrained && (C004_ArtClass_ArtRoom_ExtraModel == "Player")) DrawText(GetText("NoCrime2B"), 400, 300, "White");
if ((TextPhase >= 1) && !C004_ArtClass_Outro_Restrained && (C004_ArtClass_ArtRoom_ExtraModel != "Player")) DrawText(GetText("NoCrime2C"), 400, 300, "White");
if (TextPhase >= 2) DrawText(GetText("NoCrime3"), 400, 450, "White");
} else {
// Crime outro

View file

@ -23,7 +23,7 @@ var C004_ArtClass_Sarah_PaintAvail = true;
// Chapter 4 - Sarah Load
function C004_ArtClass_Sarah_Load() {
// Load the scene parameters
// Load the scene parameters
ActorLoad("Sarah", "ArtRoom");
LoadInteractions();
C004_ArtClass_Sarah_EggConfirm = false;
@ -53,14 +53,14 @@ function C004_ArtClass_Sarah_Run() {
function C004_ArtClass_Sarah_Click() {
// Regular interactions
ClickInteraction(C004_ArtClass_Sarah_CurrentStage);
ClickInteraction(C004_ArtClass_Sarah_CurrentStage);
if (C004_ArtClass_Sarah_CurrentStage > 130) OverridenIntroImage = "";
var ClickInv = GetClickedInventory();
// When the user wants to use any item and bondage isn't allowed
if (!Common_BondageAllowed && ((ClickInv == "Rope") || (ClickInv == "BallGag") || (ClickInv == "TapeGag") || (ClickInv == "Crop") || (ClickInv == "Cuffs") || (ClickInv == "VibratingEgg")) && Common_PlayerNotRestrained)
OverridenIntroText = GetText("NoBondage");
// When the user wants to use the rope
if (Common_BondageAllowed && (C004_ArtClass_Sarah_CurrentStage >= 150) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("Rope");
@ -74,8 +74,8 @@ function C004_ArtClass_Sarah_Click() {
// When the user wants to use a gag without tying her
if (Common_BondageAllowed && ((ClickInv == "BallGag") || (ClickInv == "TapeGag")) && !ActorHasInventory("Rope") && !ActorHasInventory("BallGag") && !ActorHasInventory("TapeGag") && Common_PlayerNotRestrained)
OverridenIntroText = GetText("BondageBeforeGag");
// When the user wants to use a BallGag
// When the user wants to use a BallGag
if (Common_BondageAllowed && (ClickInv == "BallGag") && ActorHasInventory("Rope") && !ActorHasInventory("BallGag") && Common_PlayerNotRestrained) {
OverridenIntroText = GetText("BallGag");
C004_ArtClass_Sarah_CurrentStage = 170;
@ -105,7 +105,7 @@ function C004_ArtClass_Sarah_Click() {
}
// When the user wants to use the vibrating egg on Sarah
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (Common_BondageAllowed && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (C004_ArtClass_Sarah_EggConfirm == false) {
C004_ArtClass_Sarah_EggConfirm = true;
OverridenIntroText = GetText("VibratingEggWarning");
@ -117,7 +117,7 @@ function C004_ArtClass_Sarah_Click() {
C004_ArtClass_Sarah_EggInside = true;
}
}
// Set if the crotch robe/orgasm mode is ready
C004_ArtClass_Sarah_CrotchRopeReady = (C004_ArtClass_Sarah_IsModel && ActorHasInventory("VibratingEgg") && !C004_ArtClass_Sarah_OrgasmDone);
@ -125,7 +125,7 @@ function C004_ArtClass_Sarah_Click() {
// Chapter 4 - Sarah Shibari Comment - Start Julia Stage 4
function C004_ArtClass_Sarah_ShibariComment() {
if (C004_ArtClass_ArtRoom_JuliaStage == 3)
if (C004_ArtClass_ArtRoom_JuliaStage == 3)
C004_ArtClass_ArtRoom_JuliaStage = 4;
}

View file

@ -21,7 +21,7 @@ function C005_GymClass_GymFight_KeyDown() {
// Chapter 5 - Gym Fight End
function C005_GymClass_GymFight_FightEnd(Victory) {
// The first fight counts if it wasn't on practice mode
if (!C005_GymClass_Jennifer_PracticeMode) {
if (Victory) C005_GymClass_Jennifer_CurrentStage = 100;

View file

@ -3,7 +3,7 @@ function C005_GymClass_Intro_Load() {
// Time is always 10:30 on the intro, no timer
StopTimer(10.5 * 60 * 60 * 1000);
// Do not allow bondage when we begin
Common_BondageAllowed = false;
Common_SelfBondageAllowed = false;
@ -12,7 +12,7 @@ function C005_GymClass_Intro_Load() {
// Chapter 5 - Intro Run
function C005_GymClass_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();
@ -32,6 +32,6 @@ function C005_GymClass_Intro_Click() {
if (TextPhase >= 5) {
PlayerClothes("Judo");
Common_SelfBondageAllowed = false;
SetScene(CurrentChapter, "Jennifer");
SetScene(CurrentChapter, "Jennifer");
}
}

View file

@ -30,13 +30,13 @@ function C005_GymClass_Jennifer_Load() {
LoadInteractions();
StartTimer(11.5 * 60 * 60 * 1000, CurrentChapter, "Outro");
LeaveIcon = "";
// Jennifer scene specific parameters
C005_GymClass_Jennifer_EggInside = (ActorHasInventory("VibratingEgg"));
C005_GymClass_Jennifer_EggConfirm = false;
C005_GymClass_Jennifer_PlayerHasBallGag = (PlayerHasInventory("BallGag"));
C005_GymClass_Jennifer_PlayerHasTapeGag = (PlayerHasInventory("TapeGag"));
// If the player can collect the hard mode bonus (better bonus if the match was perfect)
if (C005_GymClass_Jennifer_DefeatedHardMode && !C005_GymClass_Jennifer_DefeatedHardModeBonus) {
ActorChangeAttitude(1, 1);
@ -46,7 +46,7 @@ function C005_GymClass_Jennifer_Load() {
}
C005_GymClass_Jennifer_DefeatedHardModeBonus = true;
}
// If there's no egg, we skip the stage 0
if (!C005_GymClass_Jennifer_EggInside && (C005_GymClass_Jennifer_CurrentStage == 0))
C005_GymClass_Jennifer_CurrentStage = 5;
@ -56,7 +56,7 @@ function C005_GymClass_Jennifer_Load() {
C005_GymClass_Jennifer_RopeGiven = true;
PlayerAddInventory("Rope", 1);
}
// If the rope was given, we take it back if there was a defeat
if ((C005_GymClass_Jennifer_RopeGiven == true) && (C005_GymClass_Jennifer_CurrentStage == 210)) {
C005_GymClass_Jennifer_RopeGiven = false;
@ -66,7 +66,7 @@ function C005_GymClass_Jennifer_Load() {
// If the player won, we restrain Jennifer
if ((C005_GymClass_Jennifer_CurrentStage == 400) && !ActorHasInventory("Rope") && PlayerHasInventory("Rope")) {
PlayerRemoveInventory("Rope", 1);
ActorAddInventory("Rope");
ActorAddInventory("Rope");
}
}
@ -78,16 +78,16 @@ function C005_GymClass_Jennifer_Run() {
// Chapter 5 - Jennifer Click
function C005_GymClass_Jennifer_Click() {
// Regular interactions
ClickInteraction(C005_GymClass_Jennifer_CurrentStage);
// If we want to access player inventory (we can do it at every moment expect when Jennifer is tied up)
if ((MouseX <= 74) || (C005_GymClass_Jennifer_CurrentStage < 400) || (C005_GymClass_Jennifer_CurrentStage >= 500)) {
InventoryClick(GetClickedInventory(), "C005_GymClass", "Jennifer");
}
else {
// Retrieve which item was clicked
var ClickInv = GetClickedInventory();
@ -97,8 +97,8 @@ function C005_GymClass_Jennifer_Click() {
if (C005_GymClass_Jennifer_CropDone == false) { C005_GymClass_Jennifer_CropDone = true; ActorChangeAttitude(-1, 1); }
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use a BallGag
// When the user wants to use a BallGag
if ((ClickInv == "BallGag") && ActorHasInventory("Rope") && !ActorHasInventory("BallGag") && Common_PlayerNotRestrained && ((C005_GymClass_Jennifer_CurrentStage == 400) || (C005_GymClass_Jennifer_CurrentStage == 410) || (C005_GymClass_Jennifer_CurrentStage == 430))) {
OverridenIntroText = GetText("BallGag");
C005_GymClass_Jennifer_CurrentStage = 420;
@ -116,10 +116,10 @@ function C005_GymClass_Jennifer_Click() {
ActorAddInventory("TapeGag");
PlayerRemoveInventory("TapeGag", 1);
CurrentTime = CurrentTime + 60000;
}
}
// When the user wants to use the vibrating egg on Jennifer
if ((ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if ((ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg") && ActorHasInventory("Rope") && Common_PlayerNotRestrained) {
if (C005_GymClass_Jennifer_EggConfirm == false) {
C005_GymClass_Jennifer_EggConfirm = true;
OverridenIntroText = GetText("VibratingEggWarning");
@ -131,7 +131,7 @@ function C005_GymClass_Jennifer_Click() {
C005_GymClass_Jennifer_EggInside = true;
}
}
}
}
@ -143,7 +143,7 @@ function C005_GymClass_Jennifer_StartPractice() {
// Chapter 5 - Jennifer Explain Mobile
function C005_GymClass_Jennifer_ExplainMobile() {
if (IsMobile)
if (IsMobile)
OverridenIntroText = GetText("ExplainMobile");
}

View file

@ -1,6 +1,6 @@
// Chapter 5 - Outro Load
function C005_GymClass_Outro_Load() {
// Time is always 11:30:00 in the outro, unlock if needed
StopTimer(11.5 * 60 * 60 * 1000);
PlayerUnlockAllInventory();
@ -11,11 +11,11 @@ function C005_GymClass_Outro_Load() {
// Chapter 5 - Outro Run
function C005_GymClass_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Bell.jpg", 800, 0);
// Draw the outro text
DrawText(GetText("Outro1"), 400, 200, "White");
if (TextPhase >= 1) DrawText(GetText("Outro2"), 400, 400, "White");

View file

@ -13,7 +13,7 @@ function C006_Isolation_CellDoor_Run() {
}
// Chapter 6 - Cell Door Click
function C006_Isolation_CellDoor_Click() {
function C006_Isolation_CellDoor_Click() {
// Regular interactions
ClickInteraction(C006_Isolation_CellDoor_CurrentStage);

View file

@ -16,7 +16,7 @@ function C006_Isolation_CellGround_Run() {
}
// Chapter 6 - Cell Ground Click
function C006_Isolation_CellGround_Click() {
function C006_Isolation_CellGround_Click() {
ClickInteraction(C006_Isolation_CellGround_CurrentStage);
}

View file

@ -13,7 +13,7 @@ function C006_Isolation_Cross_Run() {
}
// Chapter 6 - Cross Click
function C006_Isolation_Cross_Click() {
function C006_Isolation_Cross_Click() {
ClickInteraction(C006_Isolation_Cross_CurrentStage);
}

View file

@ -16,25 +16,25 @@ function C006_Isolation_Horse_Run() {
}
// Chapter 6 - Horse Click
function C006_Isolation_Horse_Click() {
function C006_Isolation_Horse_Click() {
// Regular interactions
ClickInteraction(C006_Isolation_Horse_CurrentStage);
// The collar can be used to get a better grip on the bolt
if ((GetClickedInventory() == "Collar") && C006_Isolation_Horse_BoltSeen && !C006_Isolation_Horse_BoltUndone) {
OverridenIntroText = GetText("UndoBolt");
OverridenIntroText = GetText("UndoBolt");
C006_Isolation_Horse_BoltSeen = false;
C006_Isolation_Horse_BoltUndone = true;
C006_Isolation_Horse_MetalAvail = true;
CurrentTime = CurrentTime + 10000;
}
}
// Chapter 6 - Horse Allow Bolt
function C006_Isolation_Horse_AllowBolt() {
if (!C006_Isolation_Horse_BoltUndone)
if (!C006_Isolation_Horse_BoltUndone)
C006_Isolation_Horse_BoltSeen = true;
}

View file

@ -5,11 +5,11 @@ function C006_Isolation_Intro_Load() {
// Time is always 10:30 on the intro, no timer
StopTimer(10.5 * 60 * 60 * 1000);
// Do not allow bondage when we begin
Common_BondageAllowed = true;
Common_SelfBondageAllowed = true;
// Gets the player crime chapter 2 or 3. If there's any, we go to chapter 6 instead of 5.
if (GameLogQuery("C002_FirstClass", "Mildred", "Subdue") && !GameLogQuery("C002_FirstClass", "Mildred", "Release")) C006_Isolation_Intro_Teacher = "Mildred";
if (GameLogQuery("C003_MorningDetention", "Yuki", "Drug") && !GameLogQuery("C003_MorningDetention", "Yuki", "DrugAwake")) C006_Isolation_Intro_Teacher = "Yuki";
@ -21,7 +21,7 @@ function C006_Isolation_Intro_Load() {
if (Math.floor(Math.random() * 2) == 1) C006_Isolation_Intro_Teacher = "Mildred";
else C006_Isolation_Intro_Teacher = "Yuki";
}
// Logs the isolation for the teacher
GameLogSpecificAdd(CurrentChapter, C006_Isolation_Intro_Teacher, "Isolation");
@ -29,7 +29,7 @@ function C006_Isolation_Intro_Load() {
// Chapter 6 - Intro Run
function C006_Isolation_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -69,8 +69,8 @@ function C006_Isolation_IsolationRoom_Click() {
if ((MouseX >= 830) && (MouseX <= 1000) && (MouseY >= 180) && (MouseY <= 300) && (!C006_Isolation_IsolationRoom_AllowCutRope)) SetScene(CurrentChapter, "Table");
if (C006_Isolation_IsolationRoom_AllowCutRope) StruggleClick("C006_CutRope", "Hard", GetText("CutRope"), GetText("CutRopeSuccess"), 910, 220, 100);
}
// Opens the inventory screen
// Opens the inventory screen
InventoryClick(GetClickedInventory(), CurrentChapter, "IsolationRoom");
}
@ -83,8 +83,8 @@ function C006_Isolation_IsolationRoom_StruggleDone() {
if ((C006_Isolation_IsolationRoom_Stage == 1) && (StruggleType == "C006_Collar")) { PlayerUnlockInventory("Collar"); C006_Isolation_IsolationRoom_Stage++; }
if ((C006_Isolation_IsolationRoom_Stage == 2) && (StruggleType == "C006_CellDoor")) C006_Isolation_IsolationRoom_Stage++;
if ((C006_Isolation_IsolationRoom_Stage == 3) && (StruggleType == "C006_CutRope")) SetScene(CurrentChapter, "Outro");
// Can only have one orgasm from the crotch rope at any stage
if (StruggleType == "C006_Crotch") C006_Isolation_IsolationRoom_OrgasmReady = false;
}

View file

@ -19,7 +19,7 @@ function C006_Isolation_Mildred_Run() {
}
// Chapter 6 - Mildred Click
function C006_Isolation_Mildred_Click() {
function C006_Isolation_Mildred_Click() {
ClickInteraction(C006_Isolation_Mildred_CurrentStage);
}
@ -55,7 +55,7 @@ function C006_Isolation_Mildred_Release() {
// Chapter 6 - Mildred Leave Isolation
function C006_Isolation_Mildred_LeaveIsolation() {
C006_Isolation_Outro_EarlyRelease = true;
SetScene(CurrentChapter, "Outro");
SetScene(CurrentChapter, "Outro");
}
// Chapter 6 - Mildred Allow Leave
@ -64,7 +64,7 @@ function C006_Isolation_Mildred_AllowLeave() {
}
// Chapter 6 - Mildred, if she doesn't like the player, she crops
function C006_Isolation_Mildred_CheckForCrop() {
function C006_Isolation_Mildred_CheckForCrop() {
if (ActorGetValue(ActorLove) <= -3) {
OverridenIntroText = GetText("CropStartHate");
C006_Isolation_Mildred_CurrentStage = 300;
@ -84,20 +84,20 @@ function C006_Isolation_Mildred_CheckForCrop() {
// Chapter 6 - Mildred, crop the player
function C006_Isolation_Mildred_DoCrop() {
// If there's still cropping to be done
if (C006_Isolation_Mildred_CropCount < C006_Isolation_Mildred_CropMaxCount) {
// The text is random and the image rotates
C006_Isolation_Mildred_CropCount++;
var P = Math.floor(Math.random() * 6);
OverridenIntroText = GetText("Count" + C006_Isolation_Mildred_CropCount) + " ! " + GetText("CropEvent" + P.toString());
OverridenIntroImage = "MildredPlayerHorseCrop" + (C006_Isolation_Mildred_CropCount % 3).toString() + ".jpg";
} else {
OverridenIntroText = GetText("CropStop");
C006_Isolation_Mildred_CurrentStage = 330;
OverridenIntroImage = "";
}
}

View file

@ -5,7 +5,7 @@ var C006_Isolation_Outro_StuckCross = false;
// Chapter 6 - Outro Load
function C006_Isolation_Outro_Load() {
// If there was an early escape
if ((CurrentTime < 11.5 * 60 * 60 * 1000) && !C006_Isolation_Outro_EarlyRelease) {
C006_Isolation_Outro_EarlyEscape = true;
@ -21,7 +21,7 @@ function C006_Isolation_Outro_Load() {
if ((CurrentTime < 11.5 * 60 * 60 * 1000) && C006_Isolation_Outro_EarlyRelease) GameLogSpecificAdd(CurrentChapter, "", "Release");
if (C006_Isolation_Outro_StuckPillory) GameLogSpecificAdd(CurrentChapter, "", "Pillory");
if (C006_Isolation_Outro_StuckCross) GameLogSpecificAdd(CurrentChapter, "", "Cross");
// Time is always 11:30:00 in the outro, unlock if needed
StopTimer(11.5 * 60 * 60 * 1000);
PlayerUnlockAllInventory();
@ -33,7 +33,7 @@ function C006_Isolation_Outro_Load() {
// Chapter 6 - Outro Run
function C006_Isolation_Outro_Run() {
// Paints the background
// Paints the background
DrawRect(0, 0, 800, 600, "black");
if (C006_Isolation_Outro_EarlyEscape) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Player.jpg", 800, 0);
if (!C006_Isolation_Outro_EarlyEscape) DrawImage(CurrentChapter + "/" + CurrentScreen + "/" + C006_Isolation_Intro_Teacher + ".jpg", 800, 0);

View file

@ -13,7 +13,7 @@ function C006_Isolation_Pillory_Run() {
}
// Chapter 6 - Pillory Click
function C006_Isolation_Pillory_Click() {
function C006_Isolation_Pillory_Click() {
ClickInteraction(C006_Isolation_Pillory_CurrentStage);
}

View file

@ -13,7 +13,7 @@ function C006_Isolation_Table_Run() {
}
// Chapter 6 - Cell Table Click
function C006_Isolation_Table_Click() {
function C006_Isolation_Table_Click() {
// Regular interactions
ClickInteraction(C006_Isolation_Table_CurrentStage);

View file

@ -8,7 +8,7 @@ var C006_Isolation_Yuki_Pleasure3 = 0;
// Chapter 6 - Yuki Load
function C006_Isolation_Yuki_Load() {
// Load the scene parameters
// Load the scene parameters
StartTimer(11.5 * 60 * 60 * 1000, CurrentChapter, "Outro");
ActorLoad("Yuki", "IsolationRoom");
LoadInteractions();
@ -23,12 +23,12 @@ function C006_Isolation_Yuki_Run() {
}
// Chapter 6 - Yuki Click
function C006_Isolation_Yuki_Click() {
function C006_Isolation_Yuki_Click() {
ClickInteraction(C006_Isolation_Yuki_CurrentStage);
}
// Chapter 6 - Yuki Steal Items
function C006_Isolation_Yuki_StealItems() {
function C006_Isolation_Yuki_StealItems() {
PlayerSaveAllInventory();
PlayerRemoveAllInventory();
}
@ -49,35 +49,35 @@ function C006_Isolation_Yuki_AddGag() {
PlayerLockInventory("BallGag");
}
// Chapter 6 - Yuki Pleasure
// Chapter 6 - Yuki Pleasure
function C006_Isolation_Yuki_Pleasure(PleasureType) {
// The player must pleasure her in 3 different ways and at least 5 times to make her climax)
if (PleasureType == 1) C006_Isolation_Yuki_Pleasure1++;
if (PleasureType == 2) C006_Isolation_Yuki_Pleasure2++;
if (PleasureType == 3) C006_Isolation_Yuki_Pleasure3++;
if ((C006_Isolation_Yuki_Pleasure1 > 0) && (C006_Isolation_Yuki_Pleasure2 > 0) && (C006_Isolation_Yuki_Pleasure3 > 0) && (C006_Isolation_Yuki_Pleasure1 + C006_Isolation_Yuki_Pleasure2 + C006_Isolation_Yuki_Pleasure3 >= 5)) {
// Yuki gets an orgasm
OverridenIntroText = GetText("Orgasm");
C006_Isolation_Yuki_CurrentStage = 220;
ActorChangeAttitude(2, 0);
ActorAddOrgasm();
} else {
// If the player took too long to try all 3 pleasures, she gives up
if (C006_Isolation_Yuki_Pleasure1 + C006_Isolation_Yuki_Pleasure2 + C006_Isolation_Yuki_Pleasure3 >= 7) {
OverridenIntroText = GetText("StopPleasure");
C006_Isolation_Yuki_CurrentStage = 250;
}
}
}
// Chapter 6 - Yuki Check to Eat
function C006_Isolation_Yuki_CheckToEat() {
// Yuki forces the player if she has the egg
if (C006_Isolation_Yuki_EggInside) {
OverridenIntroText = GetText("LickEgg");
@ -110,7 +110,7 @@ function C006_Isolation_Yuki_CheckToStop() {
C006_Isolation_Yuki_CurrentStage = 200;
C006_Isolation_Yuki_AllowPullBack = false;
}
}
// Chapter 6 - Yuki Release
@ -122,7 +122,7 @@ function C006_Isolation_Yuki_Release() {
// Chapter 6 - Yuki Leave Isolation
function C006_Isolation_Yuki_LeaveIsolation() {
C006_Isolation_Outro_EarlyRelease = true;
SetScene(CurrentChapter, "Outro");
SetScene(CurrentChapter, "Outro");
}
// Chapter 6 - Yuki Allow Leave

View file

@ -13,16 +13,16 @@ var C007_LunchBreak_ActorSelect_Kinbaku = false;
// Chapter 7 - Lunch Break - Actor Select Load
function C007_LunchBreak_ActorSelect_Load() {
// 1 hour is allowed for lunch, starts the timer
StartTimer(12.75 * 60 * 60 * 1000, CurrentChapter, "Outro");
// Allow the player to invite a student
LeaveIcon = "";
LeaveScreen = "";
Common_SelfBondageAllowed = false;
LoadInteractions();
}
// Chapter 7 - Lunch Break - Actor Select Run
@ -31,13 +31,13 @@ function C007_LunchBreak_ActorSelect_Run() {
}
// Chapter 7 - Lunch Break - Actor Select Click
function C007_LunchBreak_ActorSelect_Click() {
function C007_LunchBreak_ActorSelect_Click() {
ClickInteraction(C007_LunchBreak_ActorSelect_CurrentStage);
InventoryClick(GetClickedInventory(), CurrentChapter, "ActorSelect");
}
// When the user selects an actor, we load it
function C007_LunchBreak_ActorSelect_LoadActor(ActorToLoad) {
function C007_LunchBreak_ActorSelect_LoadActor(ActorToLoad) {
C007_LunchBreak_ActorSelect_Actor = ActorToLoad;
SetScene(CurrentChapter, ActorToLoad)
}

View file

@ -25,7 +25,7 @@ function C007_LunchBreak_Amanda_CalcParams() {
// No special images by default
OverridenIntroImage = "";
// Between 100 and 200, the image evolves with the number of matches
if ((C007_LunchBreak_Amanda_CurrentStage >= 100) && (C007_LunchBreak_Amanda_CurrentStage < 200)) {
var Img = "0";
@ -46,7 +46,7 @@ function C007_LunchBreak_Amanda_CalcParams() {
// Keep the status of Amanda
C007_LunchBreak_Amanda_IsBoundAndGagged = ((ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) && (ActorHasInventory("BallGag") || ActorHasInventory("TapeGag")));
}
// Chapter 7 - Amanda Load
@ -80,7 +80,7 @@ function C007_LunchBreak_Amanda_Run() {
}
// Chapter 7 - Amanda Click
function C007_LunchBreak_Amanda_Click() {
function C007_LunchBreak_Amanda_Click() {
// Regular and inventory interactions
ClickInteraction(C007_LunchBreak_Amanda_CurrentStage);
@ -90,7 +90,7 @@ function C007_LunchBreak_Amanda_Click() {
C007_LunchBreak_Amanda_LeaveIcon = LeaveIcon;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// When the user wants to use the rope on Amanda - Time and item are consumed
if ((C007_LunchBreak_Amanda_CurrentStage >= 300) && (C007_LunchBreak_Amanda_CurrentStage <= 330) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
C007_LunchBreak_Amanda_CurrentStage = 330;
@ -109,7 +109,7 @@ function C007_LunchBreak_Amanda_Click() {
PlayerRemoveInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the BallGag on Amanda - Time and item are consumed
if ((C007_LunchBreak_Amanda_CurrentStage >= 300) && (C007_LunchBreak_Amanda_CurrentStage <= 330) && (ClickInv == "BallGag") && !ActorHasInventory("BallGag")) {
C007_LunchBreak_Amanda_CurrentStage = 330;
@ -141,7 +141,7 @@ function C007_LunchBreak_Amanda_Click() {
}
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the egg on Amanda (Amanda isn't affected by the egg but can still have one)
if ((C007_LunchBreak_Amanda_CurrentStage >= 300) && (C007_LunchBreak_Amanda_CurrentStage <= 330) && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg")) {
OverridenIntroText = GetText("VibratingEgg");
@ -170,10 +170,10 @@ function C007_LunchBreak_Amanda_Click() {
// When the user wants to use a bondage item when subbie
if ((C007_LunchBreak_Amanda_CurrentStage >= 400) && (C007_LunchBreak_Amanda_CurrentStage < 440) && ((ClickInv == "Collar") || (ClickInv == "Cuffs") || (ClickInv == "VibratingEgg") || (ClickInv == "Crop") || (ClickInv == "TapeGag") || (ClickInv == "BallGag") || (ClickInv == "Cuffs") || (ClickInv == "Rope")))
OverridenIntroText = GetText("SubbieNoItem");
// Recalculates the scene parameters
C007_LunchBreak_Amanda_CalcParams();
}
// Chapter 7 - Amanda No Leave
@ -189,7 +189,7 @@ function C007_LunchBreak_Amanda_StartLunch() {
}
// Chapter 7 - Amanda Eat Lunch (adds 20 minutes)
function C007_LunchBreak_Amanda_EatLunch() {
function C007_LunchBreak_Amanda_EatLunch() {
CurrentTime = CurrentTime + 1800000;
}
@ -232,7 +232,7 @@ function C007_LunchBreak_Amanda_Tickle() {
// Chapter 7 - Amanda Masturbate
function C007_LunchBreak_Amanda_Masturbate() {
// The count goes up, after 3 times she can have an orgasm but only if she's bound and gagged
C007_LunchBreak_Amanda_MasturbateCount++;
if ((ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) && (ActorHasInventory("BallGag") || ActorHasInventory("TapeGag"))) {
@ -245,7 +245,7 @@ function C007_LunchBreak_Amanda_Masturbate() {
OverridenIntroText = GetText("Masturbate");
}
}
}
// Chapter 7 - Amanda Untie
@ -344,7 +344,7 @@ function C007_LunchBreak_Amanda_EvilEnd() {
C007_LunchBreak_ActorSelect_EvilEnding = true;
GameLogAdd("Stranded");
ActorChangeAttitude(-5, 1);
SetScene(CurrentChapter, "Outro");
SetScene(CurrentChapter, "Outro");
} else {
OverridenIntroText = GetText("LeaveBoundAndGagged");
C007_LunchBreak_Amanda_ConfirmEvil = true;

View file

@ -3,12 +3,12 @@ function C007_LunchBreak_Intro_Load() {
// Time is always 11:45 on the intro, no timer
StopTimer(11.75 * 60 * 60 * 1000);
}
// Chapter 7 - Lunch Break Run
function C007_LunchBreak_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -41,7 +41,7 @@ function C007_LunchBreak_Jennifer_CalcParams() {
if (C007_LunchBreak_Jennifer_MatchCount >= 4) Img = "2";
OverridenIntroImage = "JenniferPlayerLunch" + Img + ".jpg";
}
// At 240 the player can restrain Jennifer
if (C007_LunchBreak_Jennifer_CurrentStage == 240) {
var Img = "";
@ -61,7 +61,7 @@ function C007_LunchBreak_Jennifer_CalcParams() {
if (PlayerHasLockedInventory("TapeGag")) Img = Img + "TapeGag";
OverridenIntroImage = "JenniferPlayerPunishRacket" + Img + ".jpg";
}
// If love and submission are below 4, there's no option for lunch
C007_LunchBreak_Jennifer_IsBoundAndGagged = ((ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) && (ActorHasInventory("BallGag") || ActorHasInventory("TapeGag")));
C007_LunchBreak_Jennifer_NoOption = ((ActorGetValue(ActorLove) <= 3) && (ActorGetValue(ActorSubmission) <= 3));
@ -102,7 +102,7 @@ function C007_LunchBreak_Jennifer_Load() {
// From lunch an up, the player cannot leave directly
if (C007_LunchBreak_Jennifer_CurrentStage >= 100) {
LeaveIcon = "";
LeaveIcon = "";
}
}
@ -113,7 +113,7 @@ function C007_LunchBreak_Jennifer_Run() {
}
// Chapter 7 - Jennifer Click
function C007_LunchBreak_Jennifer_Click() {
function C007_LunchBreak_Jennifer_Click() {
// Regular and inventory interactions
ClickInteraction(C007_LunchBreak_Jennifer_CurrentStage);
@ -123,7 +123,7 @@ function C007_LunchBreak_Jennifer_Click() {
C007_LunchBreak_Jennifer_LeaveIcon = LeaveIcon;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// When the user wants to use the rope
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Rope");
@ -132,7 +132,7 @@ function C007_LunchBreak_Jennifer_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Jennifer_IsRoped = true;
}
// When the user wants to use the cuffs
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "Cuffs") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Cuffs");
@ -140,7 +140,7 @@ function C007_LunchBreak_Jennifer_Click() {
PlayerRemoveInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the BallGag
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "BallGag") && !ActorHasInventory("BallGag")) {
OverridenIntroText = GetText("BallGag");
@ -150,17 +150,17 @@ function C007_LunchBreak_Jennifer_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Jennifer_IsGagged = true;
}
// When the user wants to use the tape gag
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "TapeGag") && !ActorHasInventory("TapeGag")) {
OverridenIntroText = GetText("TapeGag");
OverridenIntroText = GetText("TapeGag");
C007_LunchBreak_Jennifer_Ungag();
ActorAddInventory("TapeGag");
PlayerRemoveInventory("TapeGag", 1);
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Jennifer_IsGagged = true;
}
// When the user wants to use the cuffs keys
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "CuffsKey") && ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Uncuff");
@ -168,17 +168,17 @@ function C007_LunchBreak_Jennifer_Click() {
PlayerAddInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the crop
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "Crop")) {
OverridenIntroText = GetText("Crop");
if (C007_LunchBreak_Jennifer_CropDone == false) { C007_LunchBreak_Jennifer_CropDone = true; ActorChangeAttitude(-1, 1); }
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the egg
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg")) {
// It only works if Jennifer is restrained
if (ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("VibratingEgg");
@ -189,12 +189,12 @@ function C007_LunchBreak_Jennifer_Click() {
OverridenIntroText = GetText("VibratingEggFail");
}
CurrentTime = CurrentTime + 60000;
}
}
// When the user wants to use the collar (+20 submission and a ceremony is required)
if ((C007_LunchBreak_Jennifer_CurrentStage == 240) && (ClickInv == "Collar") && !ActorHasInventory("Collar"))
OverridenIntroText = GetText("Collar");
// Recalculates the scene parameters
C007_LunchBreak_Jennifer_CalcParams();
@ -235,7 +235,7 @@ function C007_LunchBreak_Jennifer_BadMatch() {
}
// Chapter 7 - Jennifer Eat Lunch (Adds 15 minutes)
function C007_LunchBreak_Jennifer_EatLunch() {
function C007_LunchBreak_Jennifer_EatLunch() {
CurrentTime = CurrentTime + 900000;
}
@ -252,7 +252,7 @@ function C007_LunchBreak_Jennifer_TestObey() {
function C007_LunchBreak_Jennifer_Untie() {
if (ActorHasInventory("Rope")) {
ActorRemoveInventory("Rope");
PlayerAddInventory("Rope", 1);
PlayerAddInventory("Rope", 1);
C007_LunchBreak_Jennifer_IsRoped = false;
}
}
@ -270,7 +270,7 @@ function C007_LunchBreak_Jennifer_Ungag() {
// Chapter 7 - Jennifer Release
function C007_LunchBreak_Jennifer_Release() {
C007_LunchBreak_Jennifer_Untie();
C007_LunchBreak_Jennifer_Ungag();
C007_LunchBreak_Jennifer_Ungag();
if (ActorHasInventory("Cuffs")) {
ActorRemoveInventory("Cuffs");
PlayerAddInventory("Cuffs", 1);
@ -362,7 +362,7 @@ function C007_LunchBreak_Jennifer_DressHerBack() {
// Chapter 7 - Jennifer ask the player to do 10 push-up, the parameter is the push-up quality
function C007_LunchBreak_Jennifer_PushUp(Quality) {
// Keeps the count and shows it
C007_LunchBreak_Jennifer_PushUpQuality = C007_LunchBreak_Jennifer_PushUpQuality + Quality;
C007_LunchBreak_Jennifer_PushUpCount++;
@ -378,7 +378,7 @@ function C007_LunchBreak_Jennifer_PushUp(Quality) {
} else {
C007_LunchBreak_Jennifer_CurrentStage = 400;
GameLogAdd("PushUpFail");
OverridenIntroText = GetText("PushUpFail");
OverridenIntroText = GetText("PushUpFail");
}
}

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

@ -1,6 +1,6 @@
// Chapter 7 - Lunch Break Load
function C007_LunchBreak_Outro_Load() {
// Time is always 12:45:00 in the outro, unlock if needed
StopTimer(12.75 * 60 * 60 * 1000, CurrentChapter, "Outro");
PlayerUnlockAllInventory();
@ -21,7 +21,7 @@ function C007_LunchBreak_Outro_Load() {
function C007_LunchBreak_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawRect(0, 0, 800, 600, "black");
if (C007_LunchBreak_ActorSelect_Actor == "") DrawImage(CurrentChapter + "/" + CurrentScreen + "/EatAlone.jpg", 800, 0);
else DrawImage(CurrentChapter + "/" + CurrentScreen + "/Bell.jpg", 800, 0);
@ -29,7 +29,7 @@ function C007_LunchBreak_Outro_Run() {
if (C007_LunchBreak_ActorSelect_Kinbaku) {
if (TextPhase >= 0) DrawText(GetText("Kinbaku1"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText("Kinbaku2"), 400, 300, "White");
if (TextPhase >= 2) DrawText(GetText("Kinbaku3"), 400, 450, "White");
if (TextPhase >= 2) DrawText(GetText("Kinbaku3"), 400, 450, "White");
} else {
// Text for eating alone
@ -71,7 +71,7 @@ function C007_LunchBreak_Outro_Click() {
// Jump to the next animation
TextPhase++;
// Jump to lunch on phase 3
if (TextPhase >= 3) {
SaveMenu("C008_DramaClass", "Intro");

View file

@ -22,19 +22,19 @@ function C007_LunchBreak_Sarah_CalcParams() {
// No special images by default
OverridenIntroImage = "";
// 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";
@ -51,11 +51,11 @@ function C007_LunchBreak_Sarah_CalcParams() {
if (ActorHasInventory("TapeGag")) Img = Img + "TapeGag";
OverridenIntroImage = "SarahPlayerRestroomLove" + Img + ".jpg";
}
// Keep the status of Sarah
C007_LunchBreak_Sarah_IsBoundAndGagged = ((ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) && (ActorHasInventory("BallGag") || ActorHasInventory("TapeGag")));
C007_LunchBreak_Sarah_HasEgg = ActorHasInventory("VibratingEgg");
}
// Chapter 7 - Sarah Load
@ -66,7 +66,7 @@ function C007_LunchBreak_Sarah_Load() {
LoadInteractions();
C007_LunchBreak_Sarah_CalcParams();
C007_LunchBreak_Sarah_SubdueMildred = (GameLogQuery("C002_FirstClass", "Mildred", "Subdue") && !GameLogQuery("C002_FirstClass", "Mildred", "Release"));
// If Sarah doesn't like the player and isn't subbie enough, she leaves and don't talk
if ((ActorGetValue(ActorLove) <= -3) && (ActorGetValue(ActorSubmission) <= 2) && (C007_LunchBreak_Sarah_CurrentStage == 0)) {
C007_LunchBreak_Sarah_CurrentStage = 5;
@ -87,7 +87,7 @@ function C007_LunchBreak_Sarah_Run() {
}
// Chapter 7 - Sarah Click
function C007_LunchBreak_Sarah_Click() {
function C007_LunchBreak_Sarah_Click() {
// Regular and inventory interactions
ClickInteraction(C007_LunchBreak_Sarah_CurrentStage);
@ -105,7 +105,7 @@ function C007_LunchBreak_Sarah_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sarah_TwoRopes = true;
}
// When the user wants to use the rope
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("FirstRope");
@ -114,7 +114,7 @@ function C007_LunchBreak_Sarah_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sarah_IsRoped = true;
}
// When the user wants to use the cuffs
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "Cuffs") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Cuffs");
@ -122,7 +122,7 @@ function C007_LunchBreak_Sarah_Click() {
PlayerRemoveInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the BallGag
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "BallGag") && !ActorHasInventory("BallGag")) {
OverridenIntroText = GetText("BallGag");
@ -132,17 +132,17 @@ function C007_LunchBreak_Sarah_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sarah_IsGagged = true;
}
// When the user wants to use the tape gag
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "TapeGag") && !ActorHasInventory("TapeGag")) {
OverridenIntroText = GetText("TapeGag");
OverridenIntroText = GetText("TapeGag");
C007_LunchBreak_Sarah_Ungag();
ActorAddInventory("TapeGag");
PlayerRemoveInventory("TapeGag", 1);
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sarah_IsGagged = true;
}
// When the user wants to use the cuffs keys
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "CuffsKey") && ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Uncuff");
@ -150,14 +150,14 @@ function C007_LunchBreak_Sarah_Click() {
PlayerAddInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the crop
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "Crop")) {
OverridenIntroText = GetText("Crop");
C007_LunchBreak_Sarah_Violence();
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the egg
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg")) {
OverridenIntroText = GetText("VibratingEgg");
@ -165,7 +165,7 @@ function C007_LunchBreak_Sarah_Click() {
ActorAddInventory("VibratingEgg");
PlayerRemoveInventory("VibratingEgg", 1);
CurrentTime = CurrentTime + 60000;
}
}
// When the user wants to use the collar (+20 submission and a ceremony is required)
if ((C007_LunchBreak_Sarah_CurrentStage == 250) && (ClickInv == "Collar") && !ActorHasInventory("Collar"))
@ -177,7 +177,7 @@ function C007_LunchBreak_Sarah_Click() {
}
// Chapter 7 - Sarah Start Lunch
function C007_LunchBreak_Sarah_StartLunch() {
function C007_LunchBreak_Sarah_StartLunch() {
GameLogAdd("Lunch");
CurrentTime = CurrentTime + 480000;
LeaveIcon = "";
@ -272,7 +272,7 @@ function C007_LunchBreak_Sarah_Violence() {
function C007_LunchBreak_Sarah_Untie() {
if (ActorHasInventory("Rope")) {
ActorRemoveInventory("Rope");
PlayerAddInventory("Rope", 1);
PlayerAddInventory("Rope", 1);
if (C007_LunchBreak_Sarah_TwoRopes) {
PlayerAddInventory("Rope", 1);
C007_LunchBreak_Sarah_TwoRopes = false;
@ -294,7 +294,7 @@ function C007_LunchBreak_Sarah_Ungag() {
// Chapter 7 - Sarah Release
function C007_LunchBreak_Sarah_Release() {
C007_LunchBreak_Sarah_Untie();
C007_LunchBreak_Sarah_Ungag();
C007_LunchBreak_Sarah_Ungag();
if (ActorHasInventory("Cuffs")) {
ActorRemoveInventory("Cuffs");
PlayerAddInventory("Cuffs", 1);
@ -317,7 +317,7 @@ function C007_LunchBreak_Sarah_EvilEnd() {
C007_LunchBreak_ActorSelect_EvilEnding = true;
GameLogAdd("Stranded");
ActorChangeAttitude(-5, 1);
SetScene(CurrentChapter, "Outro");
SetScene(CurrentChapter, "Outro");
} else {
OverridenIntroText = GetText("LeaveBoundAndGagged");
C007_LunchBreak_Sarah_ConfirmEvil = true;

View file

@ -20,7 +20,7 @@ function C007_LunchBreak_Sidney_CalcParams() {
// No special images by default
OverridenIntroImage = "";
// Between 200 and 299, the image evolves with the number of matches
if ((C007_LunchBreak_Sidney_CurrentStage >= 200) && (C007_LunchBreak_Sidney_CurrentStage <= 299)) {
var Img = "0";
@ -39,11 +39,11 @@ function C007_LunchBreak_Sidney_CalcParams() {
if (ActorHasInventory("TapeGag")) Img = Img + "TapeGag";
OverridenIntroImage = "SidneySit" + Img + ".jpg";
}
// Keep the status of Sidney
C007_LunchBreak_Sidney_IsBoundAndGagged = ((ActorHasInventory("Rope") || ActorHasInventory("Cuffs")) && (ActorHasInventory("BallGag") || ActorHasInventory("TapeGag")));
C007_LunchBreak_Sidney_HasEgg = ActorHasInventory("VibratingEgg");
}
// Chapter 7 - Sidney Load
@ -54,9 +54,9 @@ function C007_LunchBreak_Sidney_Load() {
LoadInteractions();
C007_LunchBreak_Sidney_HelpedEscape = GameLogQuery("C003_MorningDetention", "Sidney", "Unlock");
C007_LunchBreak_Sidney_CalcParams();
// If the player is submissive toward Sidney, she will get bullied
if ((ActorGetValue(ActorLove) <= 4) && (ActorGetValue(ActorSubmission) <= -2) && C007_LunchBreak_Sidney_CurrentStage == 0)
if ((ActorGetValue(ActorLove) <= 4) && (ActorGetValue(ActorSubmission) <= -2) && C007_LunchBreak_Sidney_CurrentStage == 0)
C007_LunchBreak_Sidney_CurrentStage = 100;
// If we must put the previous text back
@ -72,12 +72,12 @@ function C007_LunchBreak_Sidney_Load() {
}
// Chapter 7 - Sidney Run
function C007_LunchBreak_Sidney_Run() {
function C007_LunchBreak_Sidney_Run() {
BuildInteraction(C007_LunchBreak_Sidney_CurrentStage);
}
// Chapter 7 - Sidney Click
function C007_LunchBreak_Sidney_Click() {
function C007_LunchBreak_Sidney_Click() {
// Regular and inventory interactions
ClickInteraction(C007_LunchBreak_Sidney_CurrentStage);
@ -95,7 +95,7 @@ function C007_LunchBreak_Sidney_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sidney_TwoRopes = true;
}
// When the user wants to use the rope
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "Rope") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("FirstRope");
@ -104,7 +104,7 @@ function C007_LunchBreak_Sidney_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sidney_IsRoped = true;
}
// When the user wants to use the cuffs
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "Cuffs") && !ActorHasInventory("Rope") && !ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Cuffs");
@ -112,7 +112,7 @@ function C007_LunchBreak_Sidney_Click() {
PlayerRemoveInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the BallGag
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "BallGag") && !ActorHasInventory("BallGag")) {
OverridenIntroText = GetText("BallGag");
@ -122,17 +122,17 @@ function C007_LunchBreak_Sidney_Click() {
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sidney_IsGagged = true;
}
// When the user wants to use the tape gag
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "TapeGag") && !ActorHasInventory("TapeGag")) {
OverridenIntroText = GetText("TapeGag");
OverridenIntroText = GetText("TapeGag");
C007_LunchBreak_Sidney_Ungag();
ActorAddInventory("TapeGag");
PlayerRemoveInventory("TapeGag", 1);
CurrentTime = CurrentTime + 60000;
C007_LunchBreak_Sidney_IsGagged = true;
}
// When the user wants to use the cuffs keys
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "CuffsKey") && ActorHasInventory("Cuffs")) {
OverridenIntroText = GetText("Uncuff");
@ -140,25 +140,25 @@ function C007_LunchBreak_Sidney_Click() {
PlayerAddInventory("Cuffs", 1);
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the crop
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "Crop")) {
OverridenIntroText = GetText("Crop");
CurrentTime = CurrentTime + 60000;
}
// When the user wants to use the egg
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "VibratingEgg") && !ActorHasInventory("VibratingEgg")) {
OverridenIntroText = GetText("VibratingEgg");
ActorAddInventory("VibratingEgg");
PlayerRemoveInventory("VibratingEgg", 1);
CurrentTime = CurrentTime + 60000;
}
}
// When the user wants to use the collar (+20 submission and a ceremony is required)
if ((C007_LunchBreak_Sidney_CurrentStage == 340) && (ClickInv == "Collar") && !ActorHasInventory("Collar"))
OverridenIntroText = GetText("Collar");
// Recalculates the scene parameters
C007_LunchBreak_Sidney_CalcParams();
@ -190,7 +190,7 @@ function C007_LunchBreak_Sidney_PilloryWait() {
if (CurrentTime >= 12.66667 * 60 * 60 * 1000) {
OverridenIntroText = GetText("Extortion");
C007_LunchBreak_Sidney_CurrentStage = 170;
}
}
}
// Chapter 7 - Sidney - The player is free from the pillory
@ -199,7 +199,7 @@ function C007_LunchBreak_Sidney_PilloryFree() {
}
// Chapter 7 - Sidney Start Lunch
function C007_LunchBreak_Sidney_StartLunch() {
function C007_LunchBreak_Sidney_StartLunch() {
GameLogAdd("Lunch");
CurrentTime = CurrentTime + 480000;
LeaveIcon = "";
@ -260,7 +260,7 @@ function C007_LunchBreak_Sidney_CuteRemark() {
function C007_LunchBreak_Sidney_Untie() {
if (ActorHasInventory("Rope")) {
ActorRemoveInventory("Rope");
PlayerAddInventory("Rope", 1);
PlayerAddInventory("Rope", 1);
if (C007_LunchBreak_Sidney_TwoRopes) {
PlayerAddInventory("Rope", 1);
C007_LunchBreak_Sidney_TwoRopes = false;
@ -282,7 +282,7 @@ function C007_LunchBreak_Sidney_Ungag() {
// Chapter 7 - Sidney Release
function C007_LunchBreak_Sidney_Release() {
C007_LunchBreak_Sidney_Untie();
C007_LunchBreak_Sidney_Ungag();
C007_LunchBreak_Sidney_Ungag();
if (ActorHasInventory("Cuffs")) {
ActorRemoveInventory("Cuffs");
PlayerAddInventory("Cuffs", 1);
@ -294,7 +294,7 @@ function C007_LunchBreak_Sidney_Masturbate() {
C007_LunchBreak_Sidney_MasturbateCount++;
if (C007_LunchBreak_Sidney_MasturbateCount == 3) {
C007_LunchBreak_Sidney_CurrentStage = "350";
OverridenIntroText = GetText("ReadyForOrgasm");
OverridenIntroText = GetText("ReadyForOrgasm");
} else {
if (ActorGetValue(ActorLove) >= ActorGetValue(ActorSubmission)) OverridenIntroText = GetText("MasturbateLove");
else OverridenIntroText = GetText("MasturbateSub");

View file

@ -51,7 +51,7 @@ function C008_DramaClass_AmandaIntro_Load() {
ActorLoad("Amanda", "DressingRoom");
LoadInteractions();
C008_DramaClass_AmandaIntro_CalcParams();
// Check if Sarah is missing for this scene and if Amanda is the Heroine
C008_DramaClass_AmandaIntro_SarahMissing = GameLogQuery("C007_LunchBreak", "Sarah", "Stranded");
C008_DramaClass_AmandaIntro_IsHeroine = (C008_DramaClass_JuliaIntro_AmandaRole == "Heroine");
@ -67,12 +67,12 @@ function C008_DramaClass_AmandaIntro_Run() {
}
// Chapter 8 - Amanda Intro Click
function C008_DramaClass_AmandaIntro_Click() {
function C008_DramaClass_AmandaIntro_Click() {
// Regular and inventory interactions
ClickInteraction(C008_DramaClass_AmandaIntro_CurrentStage);
var ClickInv = GetClickedInventory();
// Amanda can take the keys if the player is too submissive
if (ClickInv == "CuffsKey")
C008_DramaClass_AmandaIntro_TakeKey();
@ -84,10 +84,10 @@ function C008_DramaClass_AmandaIntro_Click() {
// Amanda will not accept any item when she's costumed
if (((ClickInv == "Rope") || (ClickInv == "Armbinder") || (ClickInv == "Cuffs") || (ClickInv == "TapeGag") || (ClickInv == "BallGag") || (ClickInv == "ClothGag") || (ClickInv == "ChastityBelt") || (ClickInv == "VibratingEgg")) && (C008_DramaClass_AmandaIntro_CurrentStage == 50))
OverridenIntroText = GetText("CostumeBlocksFun");
// Amanda can be restrained on stage 40
if ((C008_DramaClass_AmandaIntro_CurrentStage == 40) && (ClickInv != "") && (ClickInv != "Player") && !Common_PlayerRestrained) {
// Amande doesn't like the crop but becomes more submissive
if ((ClickInv == "Crop") && (!C008_DramaClass_AmandaIntro_CropDone)) {
C008_DramaClass_AmandaIntro_CropDone = true;
@ -98,7 +98,7 @@ function C008_DramaClass_AmandaIntro_Click() {
// Amande cannot be tied up if she's not at least a little submissive
if ((ActorGetValue(ActorSubmission) < 2) && (ClickInv != "CuffsKey")) {
OverridenIntroText = GetText("RefuseBondage");
return;
return;
}
// Amanda can refuse the belt if she's not submissive enough or not tied up
@ -106,7 +106,7 @@ function C008_DramaClass_AmandaIntro_Click() {
OverridenIntroText = GetText("RefuseBelt");
return;
}
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
C008_DramaClass_AmandaIntro_CalcParams();
@ -233,7 +233,7 @@ function C008_DramaClass_AmandaIntro_Ungag() {
function C008_DramaClass_AmandaIntro_Masturbate() {
if (C008_DramaClass_AmandaIntro_IsRestrained) {
if (!ActorIsChaste()) {
// She can get an orgasm if she's bound and gagged, and was complimented, tickled or hugged
C008_DramaClass_AmandaIntro_MasturbateCount++;
if (C008_DramaClass_AmandaIntro_HugDone || C008_DramaClass_AmandaIntro_PrettyCommentDone || C008_DramaClass_AmandaIntro_TickleDone) {
@ -245,7 +245,7 @@ function C008_DramaClass_AmandaIntro_Masturbate() {
C008_DramaClass_AmandaIntro_CurrentStage = 100;
} else OverridenIntroText = GetText("MasturbateGood");
} else OverridenIntroText = GetText("Masturbate");
} else OverridenIntroText = GetText("MasturbateBelt");
}
}
@ -262,7 +262,7 @@ function C008_DramaClass_AmandaIntro_RandomBondage() {
if (!C008_DramaClass_AmandaIntro_PlayerBondageDone) {
C008_DramaClass_AmandaIntro_PlayerBondageDone = true;
ActorChangeAttitude(0, -2);
}
}
} else OverridenIntroText = GetText("NoBondageItem");
} else OverridenIntroText = GetText("UndressBeforeBondage");
}

View file

@ -70,12 +70,12 @@ function C008_DramaClass_Damsel_Run() {
}
// Chapter 8 - Damsel Click
function C008_DramaClass_Damsel_Click() {
function C008_DramaClass_Damsel_Click() {
// Regular and inventory interactions
ClickInteraction(C008_DramaClass_Damsel_CurrentStage);
var ClickInv = GetClickedInventory();
// If the player is the villain, she can restrain Sarah once stage 140 is reached. Stage 220 becomes the minimum stage if she's gagged.
if (((ClickInv == "Rope") || (ClickInv == "BallGag") || (ClickInv == "TapeGag") || (ClickInv == "ClothGag")) && C008_DramaClass_Damsel_PlayerIsVillain && (C008_DramaClass_Damsel_CurrentStage >= 140) && (C008_DramaClass_Damsel_CurrentStage < 300) && !Common_PlayerRestrained) {
var HadRope = ActorHasInventory("Rope");
@ -96,29 +96,29 @@ function C008_DramaClass_Damsel_Click() {
// A few items can change the actor attitude
if ((ClickInv == "Crop") && !C008_DramaClass_Damsel_ViolenceDone) { C008_DramaClass_Damsel_ViolenceDone = true; ActorChangeAttitude(1, 0); }
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
C008_DramaClass_Damsel_CalcParams();
}
}
// Chapter 8 - Damsel - Sets the global stage and can alter Julia's mood
function C008_DramaClass_Damsel_GlobalStage(GlobalStage, LoveMod, SubMod) {
// We can also flag for snapped fingers and a perfect play
C008_DramaClass_Theater_GlobalStage = GlobalStage;
if (!C008_DramaClass_Damsel_SnapFingersDone || (SubMod <= 0)) ActorSpecificChangeAttitude("Julia", LoveMod, SubMod);
if (SubMod > 0) C008_DramaClass_Damsel_SnapFingersDone = true;
if (LoveMod < 0) C008_DramaClass_Theater_PerfectPlay = false;
C008_DramaClass_Theater_SetPose();
// Remember who was picked for later
if (GlobalStage == 200) C008_DramaClass_Damsel_KnightSelection = "Heroine";
if (GlobalStage == 210) C008_DramaClass_Damsel_KnightSelection = "Villain";
// If the player is the Damsel, Amanda can restrain her if she's in a Domme mood and wasn't selected
if ((GlobalStage == 200) && (C008_DramaClass_Theater_Damsel == "Player") && (C008_DramaClass_Theater_Villain == "Amanda") && (ActorSpecificGetValue("Amanda", ActorSubmission) < 0)) {
PlayerClothes("Underwear");
@ -141,15 +141,15 @@ function C008_DramaClass_Damsel_ForgetLine() {
// Chapter 8 - Damsel - When Sarah must choose a knight
function C008_DramaClass_Damsel_SarahChooseKnight() {
// Sarah chooses the player if love is 10 or better
if (((ActorGetValue(ActorLove) >= 10) && (C008_DramaClass_Theater_Heroine == "Player")) || ((ActorGetValue(ActorLove) < 10) && (C008_DramaClass_Theater_Heroine == "Amanda"))) {
// Stage 200 means the hero was selected
C008_DramaClass_Damsel_CurrentStage = 200;
C008_DramaClass_Theater_GlobalStage = 200;
C008_DramaClass_Damsel_KnightSelection = "Heroine";
// If Amanda is the villain, she will restrain Sarah
if (C008_DramaClass_Theater_Villain == "Amanda") {
ActorSetCloth("Underwear");
@ -176,7 +176,7 @@ function C008_DramaClass_Damsel_ReleaseDamsel() {
ActorUntie();
ActorUngag();
ActorSetCloth("Damsel");
C008_DramaClass_Theater_SetPose();
C008_DramaClass_Theater_SetPose();
}
// Chapter 8 - Damsel - When the damsel kisses the victor, it finishes the play

View file

@ -22,19 +22,19 @@ function C008_DramaClass_Dressing_Click() {
// Chapter 8 - Dressing Search
function C008_DramaClass_Dressing_Search() {
// On the first search, we find the costume
C008_DramaClass_Dressing_SearchCount++;
if (C008_DramaClass_Dressing_SearchCount == 1) {
OverridenIntroText = GetText("FindCostume");
}
// On the third search, we find a chastity belt
if (C008_DramaClass_Dressing_SearchCount == 3) {
OverridenIntroText = GetText("FindBelt");
PlayerAddInventory("ChastityBelt", 1);
}
}
// Chapter 8 - Dressing - Dress back up

View file

@ -20,7 +20,7 @@ function C008_DramaClass_DressingHiddenItem_Click() {
// Chapter 8 - Hidden Item - Search
function C008_DramaClass_DressingHiddenItem_Search() {
// After 1 search, a cloth gag, after 3 searches, a random item
C008_DramaClass_DressingHiddenItem_SearchCount++;
if (C008_DramaClass_DressingHiddenItem_SearchCount == 1) {

View file

@ -9,20 +9,20 @@ function C008_DramaClass_DressingRoom_Load() {
// Chapter 8 - Dressing Room Run
function C008_DramaClass_DressingRoom_Run() {
// Draw the background image
// Draw the background image
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
// Draw Sarah
if (!GameLogQuery("C007_LunchBreak", "Sarah", "Stranded")) {
if (C008_DramaClass_SarahIntro_CurrentStage == 0) DrawImage(CurrentChapter + "/" + CurrentScreen + "/SarahSearch.png", 0, 0);
else DrawActor("Sarah", 130, 50, 0.575);
}
// Draw Amanda
if (!GameLogQuery("C007_LunchBreak", "Amanda", "Stranded")) {
if (C008_DramaClass_AmandaIntro_CurrentStage == 0) DrawImage(CurrentChapter + "/" + CurrentScreen + "/AmandaSearch.png", 800, 0);
else DrawActor("Amanda", 800, 50, 0.575);
}
}
}

View file

@ -64,7 +64,7 @@ function C008_DramaClass_Heroine_Run() {
}
// Chapter 8 - Heroine Click
function C008_DramaClass_Heroine_Click() {
function C008_DramaClass_Heroine_Click() {
// Regular and inventory interactions
ClickInteraction(C008_DramaClass_Heroine_CurrentStage);
@ -79,7 +79,7 @@ function C008_DramaClass_Heroine_Click() {
// The damsel can tie up a knight if she's +10 submissive, the other knight can tie up a knight if she's +5 submissive
if ((ActorGetValue(ActorSubmission) < 10) && C008_DramaClass_Heroine_PlayerIsDamsel && !ActorIsRestrained() && (ClickInv != "CuffsKey")) { OverridenIntroText = GetText("RefuseBondageFromDamsel"); return; }
if ((ActorGetValue(ActorSubmission) < 5) && C008_DramaClass_Heroine_PlayerIsVillain && !ActorIsRestrained() && (ClickInv != "CuffsKey")) { OverridenIntroText = GetText("RefuseBondageFromKnight"); return; }
if ((ActorGetValue(ActorSubmission) < 5) && C008_DramaClass_Heroine_PlayerIsVillain && !ActorIsRestrained() && (ClickInv != "CuffsKey")) { OverridenIntroText = GetText("RefuseBondageFromKnight"); return; }
// Both heroines react differently to the crop
if ((ClickInv == "Crop") && !C008_DramaClass_Heroine_ViolenceDone) {
@ -222,21 +222,21 @@ function C008_DramaClass_Heroine_Spank() {
function C008_DramaClass_Heroine_Masturbate() {
// Cannot work if the girl is locked in a chastity belt
if (ActorIsChaste()) { OverridenIntroText = GetText("MasturbateChaste"); return; }
if (ActorIsChaste()) { OverridenIntroText = GetText("MasturbateChaste"); return; }
OverridenIntroImage = "";
C008_DramaClass_Heroine_MastubateCount++;
// Amanda will climax if she's properly tied up
if ((CurrentActor == "Amanda") && (C008_DramaClass_Heroine_MastubateCount >= 3) && !C008_DramaClass_Heroine_OrgasmDone && ActorIsGagged() && ActorHasInventory("TwoRopes")) {
if ((CurrentActor == "Amanda") && (C008_DramaClass_Heroine_MastubateCount >= 3) && !C008_DramaClass_Heroine_OrgasmDone && ActorIsGagged() && ActorHasInventory("TwoRopes")) {
C008_DramaClass_Heroine_OrgasmDone = true;
ActorAddOrgasm();
ActorChangeAttitude(1, 0);
OverridenIntroText = GetText("Orgasm");
OverridenIntroImage = "BackgroundOrgasm.jpg";
}
// Sarah will climax if she was beaten up
if ((CurrentActor == "Sarah") && (C008_DramaClass_Heroine_MastubateCount >= 3) && !C008_DramaClass_Heroine_OrgasmDone && C008_DramaClass_Heroine_ViolenceDone) {
if ((CurrentActor == "Sarah") && (C008_DramaClass_Heroine_MastubateCount >= 3) && !C008_DramaClass_Heroine_OrgasmDone && C008_DramaClass_Heroine_ViolenceDone) {
C008_DramaClass_Heroine_OrgasmDone = true;
ActorAddOrgasm();
ActorChangeAttitude(1, 0);

View file

@ -3,12 +3,12 @@ function C008_DramaClass_Intro_Load() {
// Time is always 13:00 on the intro, no timer
StopTimer(13.00 * 60 * 60 * 1000);
}
// Chapter 8 - Drama Class Run
function C008_DramaClass_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -43,25 +43,25 @@ function C008_DramaClass_Julia_Load() {
if (C008_DramaClass_Julia_CurrentStage < 300) C008_DramaClass_Julia_CurrentStage = C008_DramaClass_Theater_GlobalStage;
ActorLoad("Julia", "Theater");
LoadInteractions();
// On a perfect play, the player gains a level in arts
if ((C008_DramaClass_Julia_CurrentStage == 300) && C008_DramaClass_Theater_PerfectPlay) {
C008_DramaClass_Theater_PerfectPlay = false;
GameLogSpecificAdd(CurrentChapter, "", "PerfectPlay");
PlayerAddSkill("Arts", 1);
}
// Cannot leave before Julia gave her instructions
if (C008_DramaClass_Julia_CurrentStage < 100) LeaveIcon = "";
if (C008_DramaClass_Julia_CurrentStage == 330) C008_DramaClass_Julia_CurrentStage = 400;
if (C008_DramaClass_Julia_CurrentStage == 340) C008_DramaClass_Julia_CurrentStage = 500;
// Set the role variables
C008_DramaClass_Julia_IsDamsel = (C008_DramaClass_JuliaIntro_PlayerRole == "Damsel");
C008_DramaClass_Julia_IsHeroine = (C008_DramaClass_JuliaIntro_PlayerRole == "Heroine");
C008_DramaClass_Julia_IsVillain = (C008_DramaClass_JuliaIntro_PlayerRole == "Villain");
C008_DramaClass_Julia_CalcParams();
// Keep the ending type
C008_DramaClass_Julia_EndingKiss = (C008_DramaClass_Theater_Ending == "Kiss");
C008_DramaClass_Julia_EndingHug = (C008_DramaClass_Theater_Ending == "Hug");
@ -78,19 +78,19 @@ function C008_DramaClass_Julia_Run() {
}
// Chapter 8 - Julia Click
function C008_DramaClass_Julia_Click() {
function C008_DramaClass_Julia_Click() {
// Regular interaction click
ClickInteraction(C008_DramaClass_Julia_CurrentStage);
var ClickInv = GetClickedInventory();
// Julia can be restrained on stage 410
if ((C008_DramaClass_Julia_CurrentStage == 410) && (ClickInv != "") && (ClickInv != "Player") && !Common_PlayerRestrained) {
// The damsel cannot tie up the other damsel unless she's +5 submissive
if ((ActorGetValue(ActorSubmission) < 5) && (C008_DramaClass_Julia_IsDamsel) && !ActorIsRestrained() && (ClickInv != "CuffsKey")) {
OverridenIntroText = GetText("RefuseBondage");
return;
return;
}
// Julia cannot wear a belt or a collar
@ -114,7 +114,7 @@ function C008_DramaClass_Julia_Click() {
PlayerRandomBondage();
CurrentTime = CurrentTime + 60000;
}
}
// Chapter 8 - Julia Refuse Script
@ -191,10 +191,10 @@ function C008_DramaClass_Julia_Masturbate() {
OverridenIntroImage = "";
C008_DramaClass_Julia_MastubateCount++;
if (C008_DramaClass_Julia_MastubateCount <= 3) ActorChangeAttitude(-1, 0);
if ((C008_DramaClass_Julia_MastubateCount >= 3) && !C008_DramaClass_Julia_OrgasmDone && ActorHasInventory("VibratingEgg")) {
if ((C008_DramaClass_Julia_MastubateCount >= 3) && !C008_DramaClass_Julia_OrgasmDone && ActorHasInventory("VibratingEgg")) {
C008_DramaClass_Julia_OrgasmDone = true;
ActorAddOrgasm();
ActorChangeAttitude(2, 0);
ActorAddOrgasm();
ActorChangeAttitude(2, 0);
OverridenIntroText = GetText("Orgasm");
OverridenIntroImage = "BackgroundOrgasm.jpg";
}
@ -229,7 +229,7 @@ function C008_DramaClass_Julia_Rebellion() {
if (!Common_PlayerGagged) PlayerLockInventory("ClothGag");
CurrentActor = "Sarah";
if (!ActorIsRestrained()) { ActorAddInventory("Rope"); ActorSetCloth("Underwear"); }
if (!ActorIsGagged()) ActorAddInventory("ClothGag");
if (!ActorIsGagged()) ActorAddInventory("ClothGag");
CurrentActor = "Amanda";
if (!ActorIsRestrained()) { ActorAddInventory("Rope"); ActorSetCloth("Underwear"); }
if (!ActorIsGagged()) ActorAddInventory("ClothGag");

View file

@ -15,7 +15,7 @@ function C008_DramaClass_JuliaIntro_Load() {
LoadInteractions();
LeaveIcon = "";
C008_DramaClass_JuliaIntro_Painted = GameLogQuery("C004_ArtClass", "Julia", "Paint");
// If Julia doesn't like the player, we skip the "hug" intro
if (ActorGetValue(ActorLove) < 1) C008_DramaClass_JuliaIntro_CurrentStage = 20;
@ -27,13 +27,13 @@ function C008_DramaClass_JuliaIntro_Run() {
}
// Chapter 8 - Julia Intro Click
function C008_DramaClass_JuliaIntro_Click() {
function C008_DramaClass_JuliaIntro_Click() {
ClickInteraction(C008_DramaClass_JuliaIntro_CurrentStage);
}
// Chapter 8 - Julia Intro - Check if the player should be forced to play a role
function C008_DramaClass_JuliaIntro_CheckRole() {
// If the player is submissive, she will be forced to play the damsel in Distress
if (ActorGetValue(ActorSubmission) <= -3) {
C008_DramaClass_JuliaIntro_SetRole("Damsel");
@ -51,9 +51,9 @@ function C008_DramaClass_JuliaIntro_CheckRole() {
C008_DramaClass_JuliaIntro_SetRole("Villain");
OverridenIntroText = GetText("ForceVillain");
}
}
}
}
// Chapter 8 - Julia Intro - Set all the roles for the play
function C008_DramaClass_JuliaIntro_SetRole(NewRole) {

View file

@ -2,7 +2,7 @@ var C008_DramaClass_Outro_Crime = "";
// Chapter 8 - Outro Load
function C008_DramaClass_Outro_Load() {
// Time is always 14:00:00 in the outro, unlock if needed
StopTimer(14 * 60 * 60 * 1000);
PlayerReleaseBondage();
@ -17,7 +17,7 @@ function C008_DramaClass_Outro_Load() {
ActorSpecificSetPose("Amanda", "");
ActorSpecificSetPose("Sarah", "");
ActorSpecificSetPose("Julia", "");
// Gets the correct crime in chapter 7 for text and next chapter
if (GameLogQuery("C007_LunchBreak", "Amanda", "Stranded")) C008_DramaClass_Outro_Crime = "AmandaStranded";
if (GameLogQuery("C007_LunchBreak", "Sarah", "Stranded")) C008_DramaClass_Outro_Crime = "SarahStranded";
@ -28,10 +28,10 @@ function C008_DramaClass_Outro_Load() {
// Chapter 8 - Outro Run
function C008_DramaClass_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
// If there was a crime that leads to chapter 10
if ((C008_DramaClass_Outro_Crime == "AmandaStranded") || (C008_DramaClass_Outro_Crime == "SarahStranded") || (C008_DramaClass_Outro_Crime == "SidneyStranded") || (C008_DramaClass_Outro_Crime == "JenniferStranded")) {
@ -47,7 +47,7 @@ function C008_DramaClass_Outro_Run() {
if (TextPhase <= 1) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Bell.jpg", 800, 0);
if ((TextPhase >= 2) && ((C008_DramaClass_Outro_Crime == "AmandaStranded") || (C008_DramaClass_Outro_Crime == "SarahStranded"))) DrawImage(CurrentChapter + "/" + CurrentScreen + "/AmandaSarah.jpg", 800, 0);
if ((TextPhase >= 2) && ((C008_DramaClass_Outro_Crime == "SidneyStranded") || (C008_DramaClass_Outro_Crime == "JenniferStranded"))) DrawImage(CurrentChapter + "/" + CurrentScreen + "/SidneyJennifer.jpg", 800, 0);
} else {
// Draw the outro text to lead to chapter 9

View file

@ -47,11 +47,11 @@ function C008_DramaClass_SarahIntro_Load() {
ActorLoad("Sarah", "DressingRoom");
LoadInteractions();
C008_DramaClass_SarahIntro_CalcParams();
// Check if Amanda is missing for this scene and if Sarah is the damsel
C008_DramaClass_SarahIntro_AmandaMissing = GameLogQuery("C007_LunchBreak", "Amanda", "Stranded");
C008_DramaClass_SarahIntro_IsDamsel = (C008_DramaClass_JuliaIntro_SarahRole == "Damsel");
// Sarah can ungag the player if needed at first
if ((C008_DramaClass_SarahIntro_CurrentStage == 0) && (Common_PlayerGagged))
C008_DramaClass_SarahIntro_CurrentStage = 100;
@ -66,12 +66,12 @@ function C008_DramaClass_SarahIntro_Run() {
}
// Chapter 8 - Sarah Intro Click
function C008_DramaClass_SarahIntro_Click() {
function C008_DramaClass_SarahIntro_Click() {
// Regular and inventory interactions
ClickInteraction(C008_DramaClass_SarahIntro_CurrentStage);
var ClickInv = GetClickedInventory();
// The player can whip her to help her strip
if ((ClickInv == "Crop") && (C008_DramaClass_SarahIntro_CurrentStage == 10) && !Common_PlayerRestrained) {
OverridenIntroText = GetText("CropToStrip");
@ -87,7 +87,7 @@ function C008_DramaClass_SarahIntro_Click() {
ActorChangeAttitude(0, 1);
CurrentTime = CurrentTime + 60000;
}
// Sarah can tease the player if she wants to use a toy on stage 0 or 10
if (((ClickInv == "Rope") || (ClickInv == "Armbinder") || (ClickInv == "Cuffs") || (ClickInv == "TapeGag") || (ClickInv == "BallGag") || (ClickInv == "ClothGag") || (ClickInv == "ChastityBelt") || (ClickInv == "VibratingEgg")) && (C008_DramaClass_SarahIntro_CurrentStage < 20))
OverridenIntroText = GetText("CostumeBeforeFun");
@ -95,17 +95,17 @@ function C008_DramaClass_SarahIntro_Click() {
// Sarah refuses but tease the player on stage 30
if (((ClickInv == "Rope") || (ClickInv == "Armbinder") || (ClickInv == "Cuffs") || (ClickInv == "TapeGag") || (ClickInv == "BallGag") || (ClickInv == "ClothGag") || (ClickInv == "ChastityBelt") || (ClickInv == "VibratingEgg")) && (C008_DramaClass_SarahIntro_CurrentStage == 30))
OverridenIntroText = GetText("CostumeBlocksFun");
// Sarah can be restrained on stage 20
if ((C008_DramaClass_SarahIntro_CurrentStage == 20) && (ClickInv != "")) {
// Sarah can refuse the belt if she's not submissive enough or not tied up
if ((ClickInv == "ChastityBelt") && !C008_DramaClass_SarahIntro_IsRestrained && (ActorGetValue(ActorSubmission) < 10)) {
OverridenIntroText = GetText("RefuseBelt");
CurrentTime = CurrentTime + 60000;
return;
}
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
C008_DramaClass_SarahIntro_CalcParams();
@ -116,7 +116,7 @@ function C008_DramaClass_SarahIntro_Click() {
}
// Chapter 8 - Sarah Check Ungag - Sarah will ungag the player if she's submissive or loves her
function C008_DramaClass_SarahIntro_CheckUngag() {
function C008_DramaClass_SarahIntro_CheckUngag() {
if ((ActorGetValue(ActorLove)) > 0 || (ActorGetValue(ActorSubmission) > 0)) {
PlayerUngag();
OverridenIntroText = GetText("UngagPlayer");
@ -136,7 +136,7 @@ function C008_DramaClass_SarahIntro_RandomBondage() {
C008_DramaClass_SarahIntro_PlayerBondageDone = true;
ActorChangeAttitude(0, -2);
}
} else OverridenIntroText = GetText("NoBondageItem");
} else OverridenIntroText = GetText("NoBondageItem");
} else OverridenIntroText = GetText("UndressBeforeBondage");
}
}
@ -193,7 +193,7 @@ function C008_DramaClass_SarahIntro_TestUntiePlayer() {
if (!C008_DramaClass_SarahIntro_IsRestrained) {
if ((ActorGetValue(ActorLove)) > 0 || (ActorGetValue(ActorSubmission) >= 5)) {
PlayerReleaseBondage();
C008_DramaClass_SarahIntro_CalcParams();
C008_DramaClass_SarahIntro_CalcParams();
if (!C008_DramaClass_SarahIntro_IsGagged) OverridenIntroText = GetText("UntiePlayer");
else OverridenIntroText = GetText("HelpWhileGagged");
CurrentTime = CurrentTime + 60000;
@ -208,7 +208,7 @@ function C008_DramaClass_SarahIntro_TestUnstrapPlayer() {
if (!C008_DramaClass_SarahIntro_IsRestrained) {
if ((ActorGetValue(ActorLove)) > 0 || (ActorGetValue(ActorSubmission) >= 5)) {
PlayerReleaseBondage();
C008_DramaClass_SarahIntro_CalcParams();
C008_DramaClass_SarahIntro_CalcParams();
if (!C008_DramaClass_SarahIntro_IsGagged) OverridenIntroText = GetText("UnstrapPlayer");
else OverridenIntroText = GetText("HelpWhileGagged");
CurrentTime = CurrentTime + 60000;
@ -229,10 +229,10 @@ function C008_DramaClass_SarahIntro_TestUncuffPlayer() {
function C008_DramaClass_SarahIntro_Masturbate() {
if (C008_DramaClass_SarahIntro_IsRestrained) {
if (!ActorIsChaste()) {
// She can get an orgasm with the vibrating egg or if she was hit
C008_DramaClass_SarahIntro_MasturbateCount++;
if (C008_DramaClass_SarahIntro_ViolenceDone || ActorHasInventory("VibratingEgg")) {
if (C008_DramaClass_SarahIntro_ViolenceDone || ActorHasInventory("VibratingEgg")) {
if ((C008_DramaClass_SarahIntro_MasturbateCount >= 3) && !C008_DramaClass_SarahIntro_OrgasmDone) {
OverridenIntroText = GetText("MasturbateOrgasm");
ActorAddOrgasm();
@ -241,7 +241,7 @@ function C008_DramaClass_SarahIntro_Masturbate() {
C008_DramaClass_SarahIntro_CurrentStage = 200;
} else OverridenIntroText = GetText("MasturbateGood");
} else OverridenIntroText = GetText("Masturbate");
} else OverridenIntroText = GetText("MasturbateBelt");
}
}

View file

@ -9,7 +9,7 @@ Full play by stages:
160 - Damsel: I profess love unto thy white hero. (200) / I profess love unto thy black champion. (210) * Now the Damsel can go either side, Sarah will choose the player if +10 love
200 - Villain: Hero! Thou hast her heart, flesh is mine.
210 - Villain: Hero! Concede thine defeat, she's mine.
220 - Heroine: So fate chooseth steel, en garde! * From here, the villain or hero can try to restrain each other
220 - Heroine: So fate chooseth steel, en garde! * From here, the villain or hero can try to restrain each other
230 - Villain: Indeed, en garde! * Here there's a sword fight (240 if the Heroine wins, 270 if the Villain wins)
235 - The sword fight, acted from the villain
240 - Heroine: The law shalt judgeth. * Villain gets tied up
@ -35,7 +35,7 @@ function C008_DramaClass_Theater_SetPose() {
var CurActor = CurrentActor;
// If the villain must be tied up
if ((C008_DramaClass_Theater_GlobalStage == 250) && !ActorSpecificInBondage(C008_DramaClass_Theater_Villain)) {
if ((C008_DramaClass_Theater_GlobalStage == 250) && !ActorSpecificInBondage(C008_DramaClass_Theater_Villain)) {
if (C008_DramaClass_Theater_Villain == "Player") {
PlayerClothes("Underwear");
PlayerLockInventory("Rope");
@ -52,7 +52,7 @@ function C008_DramaClass_Theater_SetPose() {
}
// If the heroine must be tied up
if ((C008_DramaClass_Theater_GlobalStage == 280) && !ActorSpecificInBondage(C008_DramaClass_Theater_Heroine)) {
if ((C008_DramaClass_Theater_GlobalStage == 280) && !ActorSpecificInBondage(C008_DramaClass_Theater_Heroine)) {
if (C008_DramaClass_Theater_Heroine == "Player") {
PlayerClothes("Underwear");
PlayerLockInventory("Rope");
@ -67,7 +67,7 @@ function C008_DramaClass_Theater_SetPose() {
C008_DramaClass_Villain_CurrentStage = 251;
C008_DramaClass_Damsel_CurrentStage = 251;
}
// Assign the heroine pose depending on the stage
var HeroinePose = "";
if (((C008_DramaClass_Theater_GlobalStage >= 110) && (C008_DramaClass_Theater_GlobalStage <= 220)) || (C008_DramaClass_Theater_GlobalStage == 270)) HeroinePose = "Acting";
@ -90,12 +90,12 @@ function C008_DramaClass_Theater_SetPose() {
// Sets the current actor back
CurrentActor = CurActor;
}
// Chapter 8 - Theater Load, sets the role each images
function C008_DramaClass_Theater_Load() {
// Set the theater parameters
LeaveIcon = "Wait";
if (C008_DramaClass_JuliaIntro_PlayerRole == "Damsel") C008_DramaClass_Theater_Damsel = "Player";
@ -107,7 +107,7 @@ function C008_DramaClass_Theater_Load() {
if (C008_DramaClass_JuliaIntro_AmandaRole == "Heroine") C008_DramaClass_Theater_Heroine = "Amanda";
Common_SelfBondageAllowed = (C008_DramaClass_Theater_GlobalStage >= 400);
C008_DramaClass_Theater_SetPose();
}
// Chapter 8 - Theater Run

View file

@ -1,6 +1,6 @@
// Chapter 8 - Transition Load
function C008_DramaClass_Transition_Load() {
// Time is 13:30:00 at max in the transition, unlock if needed
if (CurrentTime >= 13.5 * 60 * 60 * 1000) CurrentTime = 13.5 * 60 * 60 * 1000;
StopTimer(CurrentTime);
@ -15,7 +15,7 @@ function C008_DramaClass_Transition_Load() {
ActorLoad("Sarah", "");
ActorSpecificSetCloth("Sarah", C008_DramaClass_JuliaIntro_SarahRole);
LeaveIcon = "";
// Resets the last bondage chapter for each so it counts again for chapter 8 part 2
for (var A = 0; A < Actor.length; A++)
Actor[A][ActorLastBondageChapter] = "NONE";
@ -24,15 +24,15 @@ function C008_DramaClass_Transition_Load() {
// Chapter 8 - Transition Run
function C008_DramaClass_Transition_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Julia.jpg", 800, 0);
// Sets if the transition is late or not
var LateForDrama = "Transition";
if (CurrentTime == 13.5 * 60 * 60 * 1000) LateForDrama = "Late";
// Draw the outro text
DrawText(GetText(LateForDrama + "1"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText(LateForDrama + "2"), 400, 300, "White");

View file

@ -54,7 +54,7 @@ function C008_DramaClass_Villain_Load() {
LeaveIcon = "Leave";
LeaveScreen = "Theater";
C008_DramaClass_Villain_CalcParams();
// The player can disarm if sub +2 vs Amanda and intimidate if sub + 10
C008_DramaClass_Villain_CanDisarm = (C008_DramaClass_Villain_PlayerIsVillain && (ActorSpecificGetValue("Amanda", ActorSubmission) >= 2));
C008_DramaClass_Villain_CanIntimidate = (C008_DramaClass_Villain_PlayerIsVillain && (ActorSpecificGetValue("Amanda", ActorSubmission) >= 10));
@ -68,7 +68,7 @@ function C008_DramaClass_Villain_Run() {
}
// Chapter 8 - Villain Click
function C008_DramaClass_Villain_Click() {
function C008_DramaClass_Villain_Click() {
// Regular and inventory interactions
ClickInteraction(C008_DramaClass_Villain_CurrentStage);
@ -84,10 +84,10 @@ function C008_DramaClass_Villain_Click() {
// The damsel can tie up a knight if she's +10 submissive, the other knight can tie up a knight if she's +5 submissive
if ((ActorGetValue(ActorSubmission) < 10) && C008_DramaClass_Villain_PlayerIsDamsel && !ActorIsRestrained() && (ClickInv != "CuffsKey")) { OverridenIntroText = GetText("RefuseBondageFromDamsel"); return; }
if ((ActorGetValue(ActorSubmission) < 5) && C008_DramaClass_Villain_PlayerIsHeroine && !ActorIsRestrained() && (ClickInv != "CuffsKey")) { OverridenIntroText = GetText("RefuseBondageFromKnight"); return; }
// A few items can change the actor attitude
if ((ClickInv == "Crop") && !C008_DramaClass_Villain_CropDone) { C008_DramaClass_Villain_CropDone = true; ActorChangeAttitude(-1, 1); }
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
if (ActorHasInventory("Rope")) ActorSetCloth("Underwear");
@ -134,10 +134,10 @@ function C008_DramaClass_Villain_NoLeave() {
// Chapter 8 - Villain - Do the fight between Amanda as the villain and Sarah as the heroine
function C008_DramaClass_Villain_AmandaSarahFight(CheerFactor) {
// Victory depends on who's more Domme and the cheering from the player
if ((ActorSpecificGetValue("Amanda", ActorSubmission) * -1) - (ActorSpecificGetValue("Sarah", ActorSubmission) * -1) + CheerFactor >= 0) {
// Amanda the villain wins
C008_DramaClass_Villain_CurrentStage = 270;
C008_DramaClass_Theater_GlobalStage = 270;
@ -155,14 +155,14 @@ function C008_DramaClass_Villain_AmandaSarahFight(CheerFactor) {
// Allows the player to leave once the fight is over
C008_DramaClass_Theater_SetPose();
LeaveIcon = "Leave";
}
// Chapter 8 - Villain - When the villain kisses the damsel, it finishes the play
function C008_DramaClass_Villain_FinalKiss() {
GameLogSpecificAdd(CurrentChapter, "", "FinalKiss");
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerKiss.jpg";
ActorSpecificChangeAttitude("Amanda", 2, 0);
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerKiss.jpg";
ActorSpecificChangeAttitude("Amanda", 2, 0);
ActorSpecificChangeAttitude("Sarah", -3, 0);
C008_DramaClass_Theater_GlobalStage = 300;
C008_DramaClass_Theater_Ending = "Kiss";
@ -171,8 +171,8 @@ function C008_DramaClass_Villain_FinalKiss() {
// Chapter 8 - Villain - When the villain hugs the damsel, it finishes the play
function C008_DramaClass_Villain_FinalHug() {
GameLogSpecificAdd(CurrentChapter, "", "FinalHug");
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerHug.jpg";
ActorSpecificChangeAttitude("Amanda", 1, 0);
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerHug.jpg";
ActorSpecificChangeAttitude("Amanda", 1, 0);
ActorSpecificChangeAttitude("Sarah", -1, 0);
C008_DramaClass_Theater_GlobalStage = 300;
C008_DramaClass_Theater_Ending = "Hug";
@ -181,7 +181,7 @@ function C008_DramaClass_Villain_FinalHug() {
// Chapter 8 - Villain - When the damsel kneels for the villain, it finishes the play
function C008_DramaClass_Villain_FinalDomme() {
GameLogSpecificAdd(CurrentChapter, "", "FinalDomme");
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerDomme.jpg";
OverridenIntroImage = "../HugImages/VillainAmandaDamselPlayerDomme.jpg";
ActorSpecificChangeAttitude("Amanda", 1, -2);
ActorSpecificChangeAttitude("Sarah", -1, 0);
C008_DramaClass_Theater_GlobalStage = 300;
@ -226,7 +226,7 @@ function C008_DramaClass_Villain_Ungag() {
}
// Chapter 8 - Villain Kiss
function C008_DramaClass_Villain_Kiss() {
function C008_DramaClass_Villain_Kiss() {
if (!C008_DramaClass_Villain_KissDone) { GameLogAdd("Kiss"); C008_DramaClass_Villain_KissDone = true; ActorChangeAttitude(1, 0); }
C008_DramaClass_Villain_CalcParams();
}
@ -252,7 +252,7 @@ function C008_DramaClass_Villain_Masturbate() {
C008_DramaClass_Villain_MastubateCount++;
// Amanda will climax if she's properly tied up
if ((C008_DramaClass_Villain_MastubateCount >= 3) && !C008_DramaClass_Villain_OrgasmDone && ActorIsGagged() && (ActorHasInventory("TwoRopes") || ActorHasInventory("Armbinder"))) {
if ((C008_DramaClass_Villain_MastubateCount >= 3) && !C008_DramaClass_Villain_OrgasmDone && ActorIsGagged() && (ActorHasInventory("TwoRopes") || ActorHasInventory("Armbinder"))) {
C008_DramaClass_Villain_OrgasmDone = true;
ActorAddOrgasm();
ActorChangeAttitude(1, 0);

View file

@ -4,12 +4,12 @@ function C009_Library_Intro_Load() {
// Time is always 14:25 on the intro, no timer, if time was already higher, we keep it
if ((CurrentTime < 14.25 * 60 * 60 * 1000) || (CurrentTime > 15.25 * 60 * 60 * 1000)) CurrentTime = 14.25 * 60 * 60 * 1000;
StopTimer(CurrentTime);
}
// Chapter 9 - Library Run
function C009_Library_Intro_Run() {
// Paints the background
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -68,7 +68,7 @@ function C009_Library_Jennifer_Load() {
LoadInteractions();
C009_Library_Jennifer_IsArtist = ((PlayerGetSkillLevel("Arts") >= 1) && !Common_PlayerRestrained);
Common_SelfBondageAllowed = false;
// A few variables on what already happened
C009_Library_Jennifer_BookAlreadyFound = (C009_Library_Library_BookProgress > 40);
C009_Library_Jennifer_TennisVictory = GameLogQuery("C007_LunchBreak", "Jennifer", "TennisVictory");
@ -87,7 +87,7 @@ function C009_Library_Jennifer_Load() {
C009_Library_Jennifer_SetPose();
} else C009_Library_Jennifer_LoadFromPlayerScreen = false;
// Recalls the previous text if needed
if (C009_Library_Jennifer_IntroText != "") OverridenIntroText = C009_Library_Jennifer_IntroText;
C009_Library_Jennifer_IntroText = "";
@ -109,7 +109,7 @@ function C009_Library_Jennifer_Run() {
}
// Chapter 9 Library - Jennifer Click
function C009_Library_Jennifer_Click() {
function C009_Library_Jennifer_Click() {
// Regular and inventory interactions
ClickInteraction(C009_Library_Jennifer_CurrentStage);
@ -122,10 +122,10 @@ function C009_Library_Jennifer_Click() {
// Jennifer can be restrained on stage 300 to 400
if ((C009_Library_Jennifer_CurrentStage >= 300) && (C009_Library_Jennifer_CurrentStage < 400) && (ClickInv != "") && (ClickInv != "Player") && !Common_PlayerRestrained) {
// If we must skip the chit chat to get to the action
if (C009_Library_Jennifer_CurrentStage < 320) C009_Library_Jennifer_CurrentStage = 320;
// Jennifer doesn't like the crop but becomes more submissive
if ((ClickInv == "Crop") && (!C009_Library_Jennifer_CropDone)) {
C009_Library_Jennifer_CropDone = true;
@ -146,7 +146,7 @@ function C009_Library_Jennifer_Click() {
C009_Library_Jennifer_RestrainPlayer();
return;
}
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
C009_Library_Jennifer_CalcParams();
@ -175,7 +175,7 @@ function C009_Library_Jennifer_Click() {
C009_Library_Jennifer_MastubateCount = 0;
C009_Library_Jennifer_OrgasmDone = false;
}
}
// Chapter 9 Library - Jennifer query to get the egg back
@ -184,7 +184,7 @@ function C009_Library_Jennifer_QueryEgg() {
if ((ActorGetValue(ActorLove) >= 5) || (ActorGetValue(ActorSubmission) >= 5) || (PlayerGetSkillLevel("Seduction") >= 1)) {
OverridenIntroText = GetText("GetEgg");
PlayerAddInventory("VibratingEgg", 1);
}
}
}
// Chapter 9 Library - Jennifer - When the player leaves
@ -352,7 +352,7 @@ function C009_Library_Jennifer_ReleaseJennifer() {
ActorSetCloth("Clothed");
CurrentTime = CurrentTime + 50000;
C009_Library_Jennifer_CalcParams();
C009_Library_Jennifer_SetPose();
C009_Library_Jennifer_SetPose();
} else {
OverridenIntroText = GetText("UnlockBeforeRelease");
C009_Library_Jennifer_CurrentStage = 320;

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

@ -15,10 +15,10 @@ function C009_Library_Library_Load() {
LeaveIcon = "Wait";
Common_BondageAllowed = true;
Common_SelfBondageAllowed = true;
// Makes sure the player is clothed when exploring
if (!Common_PlayerRestrained) PlayerClothes("Clothed");
// Jennifer can be gone from the start if chapter 10 was triggered for her or Sidney
if (GameLogQuery("C007_LunchBreak", "Jennifer", "Stranded") || GameLogQuery("C007_LunchBreak", "Sidney", "Stranded")) C009_Library_Library_JenniferGone = true;
@ -107,7 +107,7 @@ function C009_Library_Library_Click() {
// Checks if the user clicks on any regular item
InventoryClick(GetClickedInventory(), "C009_Library", "Library");
// In Zone 1, the player can search (left), zone 2 (up) or zone 3 (right)
var E = true;
if (E && (C009_Library_Library_CurrentZone == "001") && (MouseX >= 0) && (MouseX <= 200) && (MouseY >= 400) && (MouseY <= 600)) E = C009_Library_Library_StartSearch(10);
@ -171,5 +171,5 @@ function C009_Library_Library_Click() {
if (E && (C009_Library_Library_CurrentZone == "010") && (MouseX >= 110) && (MouseX <= 380) && (MouseY >= 50) && (MouseY <= 320)) E = C009_Library_Library_StartSearch(100);
if (E && (C009_Library_Library_CurrentZone == "010") && (MouseX >= 940) && (MouseX <= 1200) && (MouseY >= 200) && (MouseY <= 470)) E = C009_Library_Library_StartSearch(105);
if (E && (C009_Library_Library_CurrentZone == "010") && (MouseX >= 530) && (MouseX <= 800) && (MouseY >= 50) && (MouseY <= 320)) E = C009_Library_Library_StartSearch(106);
}

View file

@ -1,6 +1,6 @@
// Chapter 9 - Outro Load
function C009_Library_Outro_Load() {
// Time is always 15:15:00 in the outro, unlock if needed
StopTimer(15.25 * 60 * 60 * 1000);
if (C009_Library_Library_LockedArmbinder) PlayerUnlockInventory("Armbinder");
@ -17,7 +17,7 @@ function C009_Library_Outro_Load() {
// Chapter 9 - Outro Run
function C009_Library_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Bell.jpg", 800, 0);
@ -26,7 +26,7 @@ function C009_Library_Outro_Run() {
var OutroText = "Outro";
if (C009_Library_Library_StuckInHole) OutroText = "StuckInHole";
if (C009_Library_Library_LockedArmbinder) OutroText = "LockedArmbinder";
// Draw the outro text to lead to chapter 11
DrawText(GetText(OutroText + "1"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText(OutroText + "2"), 400, 300, "White");

View file

@ -37,7 +37,7 @@ function C009_Library_Search_Run() {
}
// Chapter 9 Library - Search Area Click
function C009_Library_Search_Click() {
function C009_Library_Search_Click() {
// Regular interactions
ClickInteraction(C009_Library_Search_CurrentStage);
@ -83,7 +83,7 @@ function C009_Library_Search_Masturbate() {
C009_Library_Yuki_AllowSecondChance = false;
SetScene(CurrentChapter, "Yuki");
LeaveIcon = "";
GameLogAdd("CaughtInHole");
GameLogAdd("CaughtInHole");
} else {
C009_Library_Search_MasturbateCount++;
if (C009_Library_Search_MasturbateCount == 3) { GameLogSpecificAdd(CurrentChapter, "", "SweetGwendolineOrgasm"); OverridenIntroText = GetText("Orgasm"); }
@ -93,7 +93,7 @@ function C009_Library_Search_Masturbate() {
C009_Library_Search_MasturbateCount = 0;
}
}
}
}

View file

@ -43,7 +43,7 @@ function C009_Library_Yuki_Load() {
C009_Library_Yuki_CanAskForDoor = (C009_Library_Library_FoundLockedDoor && !C009_Library_Library_DoorOpen);
if ((C009_Library_Yuki_CurrentStage >= 500) && (C009_Library_Yuki_CurrentStage < 600)) C009_Library_Library_CurrentZone = "008";
else C009_Library_Library_CurrentZone = "007";
// A few variables on what already happened
C009_Library_Yuki_PenInHole = (C009_Library_Search_PenInHole && !GameLogQuery("C009_Library", "Yuki", "StuckInHole") && C009_Library_Yuki_PenAvail);
C009_Library_Yuki_BookAlreadyFound = (C009_Library_Library_BookProgress > 40);
@ -67,7 +67,7 @@ function C009_Library_Yuki_Load() {
if ((C009_Library_Yuki_CurrentStage == 0) && C009_Library_Yuki_IsolationMildred) C009_Library_Yuki_CurrentStage = 50;
if ((C009_Library_Yuki_CurrentStage == 0) && C009_Library_Yuki_DetentionFighting) C009_Library_Yuki_CurrentStage = 60;
if ((C009_Library_Yuki_CurrentStage == 0) && C009_Library_Yuki_DetentionBondage) C009_Library_Yuki_CurrentStage = 70;
// The player can pleasure Yuki if love + seduction * 2 >= 5 and no chastity belt
C009_Library_Yuki_CanPleasure = (!C009_Library_Yuki_PleasureDone && !ActorIsChaste() && (ActorGetValue(ActorLove) + (PlayerGetSkillLevel("Seduction") * 2) >= 5));
@ -105,13 +105,13 @@ function C009_Library_Yuki_Click() {
// Regular and inventory interactions
ClickInteraction(C009_Library_Yuki_CurrentStage);
var ClickInv = GetClickedInventory();
// Allows the player to access the menu if she could leave the scene
if ((ClickInv == "Player") && (LeaveIcon != "")) {
C009_Library_Yuki_IntroText = OverridenIntroText;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// The player can slide an egg in Yuki if she's stuck in the hole with no panties
if ((ClickInv == "VibratingEgg") && !ActorHasInventory("ChastityBelt") && !ActorHasInventory("VibratingEgg") && (C009_Library_Yuki_CurrentStage == 510) && !Common_PlayerRestrained) {
OverridenIntroText = GetText("VibratingEggInHole");
@ -155,7 +155,7 @@ function C009_Library_Yuki_Click() {
C009_Library_Yuki_CurrentStage = 520;
CurrentTime = CurrentTime + 50000;
}
// If an item is used while Yuki is sleeping, she will wake up
if ((ClickInv != "Player") && (ClickInv != "") && (C009_Library_Yuki_CurrentStage == 410) && !Common_PlayerRestrained) {
C009_Library_Yuki_Wake();
@ -163,7 +163,7 @@ function C009_Library_Yuki_Click() {
OverridenIntroText = GetText("ItemWakeUp");
GameLogAdd("DrugAwake");
}
}
// Chapter 9 Library - Yuki - When the player leaves to find her book
@ -241,7 +241,7 @@ function C009_Library_Yuki_GagPlayer() {
// Chapter 9 Library - Wait 2 minutes
function C009_Library_Yuki_TwoMinutes() {
CurrentTime = CurrentTime + 110000;
CurrentTime = CurrentTime + 110000;
}
// Chapter 9 Library - Yuki Tickle
@ -300,7 +300,7 @@ function C009_Library_Yuki_TestSleep() {
OverridenIntroText = GetText("DizzySleep");
C009_Library_Yuki_CurrentStage = 400;
ActorSetPose("Sleepy");
CurrentTime = CurrentTime + 50000;
CurrentTime = CurrentTime + 50000;
LeaveIcon = "Leave";
}
}
@ -388,9 +388,9 @@ function C009_Library_Yuki_TestPullAway() {
} else C009_Library_Yuki_NoPleasure();
}
// Chapter 9 Library - Yuki Pleasure
// Chapter 9 Library - Yuki Pleasure
function C009_Library_Yuki_Pleasure(PleasureType) {
// The player must pleasure her in 3 different ways and at least 5 times to make her climax)
if (PleasureType == 1) C009_Library_Yuki_Pleasure1++;
if (PleasureType == 2) C009_Library_Yuki_Pleasure2++;
@ -398,7 +398,7 @@ function C009_Library_Yuki_Pleasure(PleasureType) {
if (PleasureType == 4) C009_Library_Yuki_Pleasure4++;
if (PleasureType == 5) C009_Library_Yuki_Pleasure5++;
if ((C009_Library_Yuki_Pleasure1 > 0) && (C009_Library_Yuki_Pleasure2 > 0) && (C009_Library_Yuki_Pleasure3 > 0) && (C009_Library_Yuki_Pleasure4 > 0) && (C009_Library_Yuki_Pleasure5 > 0) && (C009_Library_Yuki_Pleasure1 + C009_Library_Yuki_Pleasure2 + C009_Library_Yuki_Pleasure3 + C009_Library_Yuki_Pleasure4 + C009_Library_Yuki_Pleasure5 >= 5)) {
// Yuki gets an orgasm
Common_PlayerPose = "KneelPleasureToYukiOrgasm";
OverridenIntroText = GetText("DeskOrgasm");
@ -407,9 +407,9 @@ function C009_Library_Yuki_Pleasure(PleasureType) {
ActorChangeAttitude(2, 0);
ActorAddOrgasm();
C009_Library_Yuki_LittlePet = true;
} else {
// If the player took too long to try all 3 pleasures, she gives up
if (C009_Library_Yuki_Pleasure1 + C009_Library_Yuki_Pleasure2 + C009_Library_Yuki_Pleasure3 + C009_Library_Yuki_Pleasure4 + C009_Library_Yuki_Pleasure5 >= 7) {
OverridenIntroText = GetText("StopPleasure");
@ -420,13 +420,13 @@ function C009_Library_Yuki_Pleasure(PleasureType) {
Common_PlayerPose = "";
C009_Library_Yuki_CurrentStage = 750;
}
}
}
// Chapter 9 Library - Yuki, stops the pleasure dialog
function C009_Library_Yuki_StopPleasure() {
// Release the player
C009_Library_Yuki_NoPleasure();
ActorSetPose("");
@ -438,5 +438,5 @@ function C009_Library_Yuki_StopPleasure() {
C009_Library_Yuki_CurrentStage = 400;
ActorSetPose("Sleepy");
}
}

View file

@ -15,11 +15,11 @@ function C010_Revenge_AmandaSarah_Load() {
// Set the timer limits at 15:15
StartTimer(15.25 * 60 * 60 * 1000, "C010_Revenge", "Outro");
// Load the scene parameters (loads Sarah first in case we are starting directly in chapter 10)
ActorLoad("Sarah", "");
ActorLoad(C010_Revenge_AmandaSarah_CurrentActor, "");
if (C010_Revenge_AmandaSarah_CurrentStage == 0) { ActorSpecificSetPose("Amanda", "Furious"); ActorSpecificSetPose("Sarah", "Angry"); }
if (C010_Revenge_AmandaSarah_CurrentStage == 0) { ActorSpecificSetPose("Amanda", "Furious"); ActorSpecificSetPose("Sarah", "Angry"); }
LoadInteractions();
LeaveIcon = "";
Common_SelfBondageAllowed = false;
@ -32,7 +32,7 @@ function C010_Revenge_AmandaSarah_Load() {
// Chapter 10 - Amanda and Sarah Revenge Run
function C010_Revenge_AmandaSarah_Run() {
// Build the text interactions
BuildInteraction(C010_Revenge_AmandaSarah_CurrentStage);
@ -44,7 +44,7 @@ function C010_Revenge_AmandaSarah_Run() {
DrawActor("Amanda", 500, 0, 1.0);
} else {
DrawActor("Amanda", 525, 50, 0.8);
DrawActor("Sarah", 675, 0, 1.0);
DrawActor("Sarah", 675, 0, 1.0);
}
} else {
if (!C010_Revenge_AmandaSarah_AmandaGone || !C010_Revenge_AmandaSarah_SarahGone) {
@ -53,9 +53,9 @@ function C010_Revenge_AmandaSarah_Run() {
else
DrawInteractionActor();
}
}
}
}
// Between 100 and 160, draw the player in the middle of the girls
if ((C010_Revenge_AmandaSarah_CurrentStage >= 100) && (C010_Revenge_AmandaSarah_CurrentStage <= 160)) {
DrawActor("Amanda", 525, 50, 0.8);
@ -70,7 +70,7 @@ function C010_Revenge_AmandaSarah_Run() {
DrawActor("Amanda", 475, 25, 0.8);
DrawActor("Sarah", 850, 30, 0.8);
}
// Between 170 and 180, draw the player in front of the locker, at 190 or more she's inside
if ((C010_Revenge_AmandaSarah_CurrentStage >= 170) && (C010_Revenge_AmandaSarah_CurrentStage <= 180)) DrawActor("Player", 600, 150, 1.0);
if ((C010_Revenge_AmandaSarah_CurrentStage >= 190) && (C010_Revenge_AmandaSarah_CurrentStage <= 300)) DrawActor("Player", 690, 20, 0.75);
@ -80,27 +80,27 @@ function C010_Revenge_AmandaSarah_Run() {
DrawActor("Sarah", 600, 20, 0.75);
DrawActor("Amanda", 767, 25, 0.75);
}
}
// Chapter 10 - Amanda and Sarah Revenge Click
function C010_Revenge_AmandaSarah_Click() {
function C010_Revenge_AmandaSarah_Click() {
// Regular interactions
ClickInteraction(C010_Revenge_AmandaSarah_CurrentStage);
// The player can click on herself
var ClickInv = GetClickedInventory();
if (ClickInv == "Player") {
C010_Revenge_AmandaSarah_IntroText = OverridenIntroText;
C010_Revenge_AmandaSarah_CurrentActor = CurrentActor;
C010_Revenge_AmandaSarah_CurrentActor = CurrentActor;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
}
// Chapter 10 - Amanda and Sarah Revenge - Switch the focus to another actor
function C010_Revenge_AmandaSarah_SwitchFocus(ActorToFocus) {
function C010_Revenge_AmandaSarah_SwitchFocus(ActorToFocus) {
if (C010_Revenge_AmandaSarah_CurrentStage < 400) ActorSetPose("Angry");
ActorLoad(ActorToFocus, "");
if (C010_Revenge_AmandaSarah_CurrentStage < 400) ActorSetPose("Furious");
@ -146,7 +146,7 @@ function C010_Revenge_AmandaSarah_CalmDown(ActorToCalm) {
// Chapter 10 - Amanda and Sarah Revenge - When the actor enters the locker
function C010_Revenge_AmandaSarah_EnterLocker(ActorInLocker) {
// Puts the actor(s) in the locker
if ((ActorInLocker == "Amanda") || (ActorInLocker == "Both")) ActorSpecificSetPose("Amanda", "Locker");
if ((ActorInLocker == "Sarah") || (ActorInLocker == "Both")) ActorSpecificSetPose("Sarah", "Locker");
@ -176,13 +176,13 @@ function C010_Revenge_AmandaSarah_CloseLocker(ActorInLocker) {
// Chapter 10 - Amanda and Sarah Revenge - Steal Items
function C010_Revenge_AmandaSarah_StealItems() {
// Backup the player inventory
PlayerSaveAllInventory();
PlayerRemoveAllInventory();
C010_Revenge_AmandaSarah_ItemStolen = true;
CurrentTime = CurrentTime + 50000;
// If Sarah and Amanda are not in belt, and they like (+20 total) or submit (+20 total) to the player, we skip the stripping part
if (!ActorSpecificHasInventory("Amanda", "ChastityBelt") && !ActorSpecificHasInventory("Sarah", "ChastityBelt") && ((ActorSpecificGetValue("Amanda", ActorLove) + ActorSpecificGetValue("Sarah", ActorLove) >= 20) || (ActorSpecificGetValue("Amanda", ActorSubmission) + ActorSpecificGetValue("Sarah", ActorSubmission) >= 20))) {
C010_Revenge_AmandaSarah_CurrentStage = 160;
@ -190,7 +190,7 @@ function C010_Revenge_AmandaSarah_StealItems() {
Common_PlayerPose = "BackShy";
OverridenIntroText = GetText("LockerNoStrip");
}
}
// Chapter 10 - Amanda and Sarah Revenge - Recover the stolen items and clothes
@ -203,7 +203,7 @@ function C010_Revenge_AmandaSarah_RecoverItems() {
// Chapter 10 - Amanda and Sarah Revenge - Starts the fight 2 VS 1
function C010_Revenge_AmandaSarah_StartFight() {
// Sets the fight difficulty
var AmandaDifficulty = "Normal";
var SarahDifficulty = "Easy";
@ -218,14 +218,14 @@ function C010_Revenge_AmandaSarah_StartFight() {
// Chapter 10 - Amanda and Sarah Revenge - When the fight ends
function C010_Revenge_AmandaSarah_EndFight(Victory) {
// Change the girls attitude depending on the victory or defeat
// Change the girls attitude depending on the victory or defeat
ActorSpecificChangeAttitude("Amanda", -2, Victory ? 2 : -2);
ActorSpecificChangeAttitude("Sarah", -2, Victory ? 2 : -2);
GameLogSpecificAdd("C010_Revenge", "Amanda", Victory ? "FightVictory" : "FightDefeat");
GameLogSpecificAdd("C010_Revenge", "Sarah", Victory ? "FightVictory" : "FightDefeat");
C010_Revenge_AmandaSarah_AllowFight = false;
// On a victory, we jump to stage 400 right away, on a defeat, we show a custom text
if (Victory) {
C010_Revenge_Outro_GoodEnding = true;
@ -252,7 +252,7 @@ function C010_Revenge_AmandaSarah_TestForBelt() {
// If they don't like the player, the play is sub or the player locked a belt on them, she gets a chastity belt
if (ActorSpecificHasInventory("Amanda", "ChastityBelt")) { C010_Revenge_AmandaSarah_CurrentStage = 130; OverridenIntroText = GetText("BeltForAmandaBelt"); return; }
if (ActorSpecificHasInventory("Sarah", "ChastityBelt")) { C010_Revenge_AmandaSarah_CurrentStage = 130; OverridenIntroText = GetText("BeltForSarahBelt"); return; }
if (ActorSpecificGetValue("Amanda", ActorLove) + ActorSpecificGetValue("Sarah", ActorLove) < 0) { C010_Revenge_AmandaSarah_CurrentStage = 130; OverridenIntroText = GetText("BeltForHate"); return; }
if (ActorSpecificGetValue("Amanda", ActorLove) + ActorSpecificGetValue("Sarah", ActorLove) < 0) { C010_Revenge_AmandaSarah_CurrentStage = 130; OverridenIntroText = GetText("BeltForHate"); return; }
if (ActorSpecificGetValue("Amanda", ActorSubmission) + ActorSpecificGetValue("Sarah", ActorSubmission) < 0) { C010_Revenge_AmandaSarah_CurrentStage = 130; OverridenIntroText = GetText("BeltForSub"); return; }
}
@ -274,7 +274,7 @@ function C010_Revenge_AmandaSarah_BeltComment() {
// At 15:10, Amanda & Sarah return to the locker
function C010_Revenge_AmandaSarah_ReturnToLocker() {
// The player can be caught masturbating while she waits
OverridenIntroImage = "";
if (Common_PlayerPose == "LockerMasturbate") {
@ -289,7 +289,7 @@ function C010_Revenge_AmandaSarah_ReturnToLocker() {
C010_Revenge_AmandaSarah_CurrentStage = 250;
}
LeaveIcon = "";
}
// Chapter 10 - Amanda and Sarah Revenge - Wait in the locker (Spends 2 minutes)
@ -320,7 +320,7 @@ function C010_Revenge_AmandaSarah_MasturbateLocker() {
}
}
// Spends 2 minutes
CurrentTime = CurrentTime + 110000;
if (CurrentTime >= 15.16667 * 60 * 60 * 1000) C010_Revenge_AmandaSarah_ReturnToLocker();

View file

@ -22,7 +22,7 @@ function C010_Revenge_EarlyEnding_Load() {
// Chapter 10 - Early Ending Run
function C010_Revenge_EarlyEnding_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background.jpg", 0, 0);

View file

@ -12,7 +12,7 @@ function C010_Revenge_Intro_Load() {
// Time is always 14:15 on the intro, no timer
StopTimer(14.25 * 60 * 60 * 1000);
}
// Chapter 10 - Revenge Run
@ -27,8 +27,8 @@ function C010_Revenge_Intro_Run() {
if (TextPhase >= 2) DrawText(GetText("AmandaSarah3"), 400, 350, "White");
if (TextPhase >= 3) DrawText(GetText("AmandaSarah4"), 400, 450, "White");
}
// Sidney or Jennifer intro
// Sidney or Jennifer intro
if (GameLogQuery("C007_LunchBreak", "Sidney", "Stranded") || GameLogQuery("C007_LunchBreak", "Jennifer", "Stranded")) {
DrawImage(CurrentChapter + "/" + CurrentScreen + "/BackgroundSidneyJennifer.jpg", 0, 0);
DrawPlayerTransition();

View file

@ -2,7 +2,7 @@ var C010_Revenge_Outro_GoodEnding = false;
// Chapter 10 - Outro Load
function C010_Revenge_Outro_Load() {
// Time is always 15:15:00 in the outro, reset the poses if needed
StopTimer(15.25 * 60 * 60 * 1000);
if (C010_Revenge_AmandaSarah_ItemStolen) PlayerRestoreAllInventory();
@ -22,10 +22,10 @@ function C010_Revenge_Outro_Load() {
// Chapter 10 - Outro Run
function C010_Revenge_Outro_Run() {
// Paints the background
DrawRect(0, 0, 800, 600, "black");
// Sets the correct text to fetch
var OutroText = "";
if (GameLogQuery("C007_LunchBreak", "Amanda", "Stranded") || GameLogQuery("C007_LunchBreak", "Sarah", "Stranded")) OutroText = "AmandaSarah";
@ -33,8 +33,8 @@ 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";
DrawText(GetText(OutroText + "1"), 400, 150, "White");

View file

@ -20,11 +20,11 @@ function C010_Revenge_SidneyJennifer_Load() {
// Set the timer limits at 15:15
StartTimer(15.25 * 60 * 60 * 1000, "C010_Revenge", "Outro");
// Load the scene parameters (loads Jennifer first in case we are starting directly in chapter 10)
ActorLoad("Jennifer", "");
ActorLoad(C010_Revenge_SidneyJennifer_CurrentActor, "");
if (C010_Revenge_SidneyJennifer_CurrentStage == 0) { ActorSpecificSetPose("Sidney", "Angry"); ActorSpecificSetPose("Jennifer", "Angry"); }
if (C010_Revenge_SidneyJennifer_CurrentStage == 0) { ActorSpecificSetPose("Sidney", "Angry"); ActorSpecificSetPose("Jennifer", "Angry"); }
LoadInteractions();
LeaveIcon = "";
Common_SelfBondageAllowed = false;
@ -38,7 +38,7 @@ function C010_Revenge_SidneyJennifer_Load() {
// Chapter 10 - Sidney and Jennifer Revenge Run
function C010_Revenge_SidneyJennifer_Run() {
// Build the text interactions
BuildInteraction(C010_Revenge_SidneyJennifer_CurrentStage);
@ -50,12 +50,12 @@ function C010_Revenge_SidneyJennifer_Run() {
DrawActor("Sidney", 500, 0, 1.0);
} else {
DrawActor("Sidney", 525, 50, 0.8);
DrawActor("Jennifer", 700, 0, 1.0);
DrawActor("Jennifer", 700, 0, 1.0);
}
} else {
if ((C010_Revenge_SidneyJennifer_CurrentStage == 38) || (C010_Revenge_SidneyJennifer_CurrentStage == 142)) DrawActor(CurrentActor, 650, -100, 0.833);
else DrawActor(CurrentActor, 600, 0, 1.0);
}
}
}
// Include the player once she's naked
@ -71,23 +71,23 @@ function C010_Revenge_SidneyJennifer_Run() {
DrawActor("Sidney", 500, -350, 0.75);
DrawActor("Player", 600, -150, 1);
}
}
// Chapter 10 - Sidney and Jennifer Revenge Click
function C010_Revenge_SidneyJennifer_Click() {
function C010_Revenge_SidneyJennifer_Click() {
// Regular interactions
ClickInteraction(C010_Revenge_SidneyJennifer_CurrentStage);
// The player can click on herself in most stages
var ClickInv = GetClickedInventory();
if ((ClickInv == "Player") && (C010_Revenge_SidneyJennifer_CurrentStage <= 170)) {
C010_Revenge_SidneyJennifer_IntroText = OverridenIntroText;
C010_Revenge_SidneyJennifer_CurrentActor = CurrentActor;
C010_Revenge_SidneyJennifer_CurrentActor = CurrentActor;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// Can be restrained at stage 38 (Jennifer) or 142 (Sidney)
if (((C010_Revenge_SidneyJennifer_CurrentStage == 38) || (C010_Revenge_SidneyJennifer_CurrentStage == 142)) && (ClickInv != "") && (ClickInv != "Player")) {
@ -107,10 +107,10 @@ function C010_Revenge_SidneyJennifer_Click() {
if ((ClickInv == "Crop") && (C010_Revenge_SidneyJennifer_CurrentStage == 142)) OverridenIntroText = GetText("CropSidney");
}
}
// Chapter 10 - Sidney and Jennifer Revenge - Switch to a provoking pose
// Chapter 10 - Sidney and Jennifer Revenge - Switch to a provoking pose
function C010_Revenge_SidneyJennifer_ProvokePose() {
ActorSpecificSetPose("Sidney", "Furious");
ActorSpecificSetPose("Jennifer", "Furious");
@ -194,13 +194,13 @@ function C010_Revenge_SidneyJennifer_Untie() {
// Chapter 10 - Sidney and Jennifer Revenge - Steal Items
function C010_Revenge_SidneyJennifer_StealItems() {
// Backup and remove the player inventory
PlayerSaveAllInventory();
PlayerRemoveAllInventory();
C010_Revenge_SidneyJennifer_ItemStolen = true;
CurrentTime = CurrentTime + 50000;
}
// Chapter 10 - Sidney and Jennifer Revenge - Recover the stolen items and clothes
@ -213,7 +213,7 @@ function C010_Revenge_SidneyJennifer_RecoverItems() {
// Chapter 10 - Sidney and Jennifer Revenge - Starts the fight 2 VS 1
function C010_Revenge_SidneyJennifer_StartFight() {
// Sets the fight difficulty
var SidneyDifficulty = "Hard";
var JenniferDifficulty = "Normal";
@ -227,7 +227,7 @@ function C010_Revenge_SidneyJennifer_StartFight() {
// Chapter 10 - Sidney and Jennifer Revenge - When the fight ends
function C010_Revenge_SidneyJennifer_EndFight(Victory) {
// Change the girls attitude depending on the victory or defeat
ActorSpecificChangeAttitude("Sidney", 0, Victory ? 2 : -2);
ActorSpecificChangeAttitude("Jennifer", -1, Victory ? 2 : -2);
@ -237,7 +237,7 @@ function C010_Revenge_SidneyJennifer_EndFight(Victory) {
ActorSpecificSetPose("Jennifer", "Angry");
C010_Revenge_SidneyJennifer_FightVictory = Victory;
C010_Revenge_SidneyJennifer_AllowFight = false;
// If this was the hallway fight
if (C010_Revenge_SidneyJennifer_CurrentStage <= 100) {
@ -253,9 +253,9 @@ function C010_Revenge_SidneyJennifer_EndFight(Victory) {
OverridenIntroText = GetText("FightDefeatHallway");
C010_Revenge_SidneyJennifer_CurrentStage = 40;
}
}
// If this was the outside fight
if ((C010_Revenge_SidneyJennifer_CurrentStage >= 150) && (C010_Revenge_SidneyJennifer_CurrentStage <= 180)) {
@ -370,7 +370,7 @@ function C010_Revenge_SidneyJennifer_SidneyCute() {
OverridenIntroImage = "";
if (C010_Revenge_SidneyJennifer_CuteDone) {
C010_Revenge_SidneyJennifer_CuteDone = true;
ActorChangeAttitude(-1, 1);
ActorChangeAttitude(-1, 1);
}
}
@ -432,7 +432,7 @@ function C010_Revenge_SidneyJennifer_StartRace() {
// Chapter 10 - Sidney and Jennifer Revenge - When the race ends
function C010_Revenge_SidneyJennifer_EndRace(Victory) {
// Change the girls attitude depending on the victory or defeat
ActorSpecificChangeAttitude("Sidney", 0, Victory ? 2 : -2);
ActorSpecificChangeAttitude("Jennifer", Victory ? 2 : -2, 0);

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

@ -34,7 +34,7 @@ function C011_LiteratureClass_Mildred_Click() {
// Regular interactions
ClickInteraction(C011_LiteratureClass_Mildred_CurrentStage);
var ClickedInv = GetClickedInventory();
}
// Chapter 11 - Mildred recognizes that the player is being a good student
@ -79,54 +79,54 @@ function C011_LiteratureClass_Mildred_EndQuiz(Victory) {
// The next chapter to test
C011_LiteratureClass_Mildred_TestChapter++;
// On a victory
if (Victory) {
C011_LiteratureClass_Mildred_PlayerVictoryCount++;
// If Sidney was already hit, she gets hit again (chastity version)
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "RedButt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "RedButt_Cuffs_Chastity") {
OverridenIntroText = GetText("TestSidneyCropAgain");
OverridenIntroImage = "TestSidneyRedButtChastity.jpg";
}
// If Sidney was already hit, she gets hit again
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "RedButt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "RedButt_Cuffs") {
OverridenIntroText = GetText("TestSidneyCropAgain");
OverridenIntroImage = "TestSidneyRedButt.jpg";
}
// If Sidney was stripped, she gets hit (chastity version)
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "NoSkirt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "NoSkirt_Cuffs_Chastity") {
C011_LiteratureClass_Mildred_QuizSidneyStatus = "RedButt_Cuffs_Chastity";
OverridenIntroText = GetText("TestSidneyCrop");
OverridenIntroImage = "TestSidneyRedButtChastity.jpg";
}
// If Sidney was stripped, she gets hit
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "NoSkirt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "NoSkirt_Cuffs") {
C011_LiteratureClass_Mildred_QuizSidneyStatus = "RedButt_Cuffs";
OverridenIntroText = GetText("TestSidneyCrop");
OverridenIntroImage = "TestSidneyRedButt.jpg";
}
// If Sidney was cuffed, she gets stripped of her skirt (can reveal her chastity belt)
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "Clothed_Cuffs") {
if (ActorSpecificHasInventory("Sidney", "ChastityBelt")) {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "Clothed_Cuffs") {
if (ActorSpecificHasInventory("Sidney", "ChastityBelt")) {
C011_LiteratureClass_Mildred_QuizSidneyStatus = "NoSkirt_Cuffs_Chastity";
OverridenIntroText = GetText("TestSidneyNoSkirtChastity");
OverridenIntroImage = "TestSidneyNoSkirtChastity.jpg";
OverridenIntroText = GetText("TestSidneyNoSkirtChastity");
OverridenIntroImage = "TestSidneyNoSkirtChastity.jpg";
}
else {
else {
C011_LiteratureClass_Mildred_QuizSidneyStatus = "NoSkirt_Cuffs";
OverridenIntroText = GetText("TestSidneyNoSkirt");
OverridenIntroImage = "TestSidneyNoSkirt.jpg";
OverridenIntroText = GetText("TestSidneyNoSkirt");
OverridenIntroImage = "TestSidneyNoSkirt.jpg";
}
}
// If Sidney wasn't cuffed, she gets cuffed
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "Clothed") {
if (C011_LiteratureClass_Mildred_QuizSidneyStatus == "Clothed") {
CurrentActor = "Sidney";
ActorAddInventory("Cuffs");
CurrentActor = "Mildred";
@ -134,59 +134,59 @@ function C011_LiteratureClass_Mildred_EndQuiz(Victory) {
OverridenIntroText = GetText("TestSidneyCuffs");
OverridenIntroImage = "TestSidneyCuffs.jpg";
}
} else {
C011_LiteratureClass_Mildred_SidneyVictoryCount++;
// If the player was already hit, she gets hit again (chastity version)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs_Chastity") {
OverridenIntroText = GetText("TestPlayerCropAgain");
OverridenIntroImage = "TestPlayerRedButtChastity.jpg";
}
// If the player was already hit, she gets hit again
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs") {
OverridenIntroText = GetText("TestPlayerCropAgain");
OverridenIntroImage = "TestPlayerRedButt.jpg";
}
// If the player was stripped, she gets hit (chastity version)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs_Chastity") {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "RedButt_Cuffs_Chastity";
OverridenIntroText = GetText("TestPlayerCrop");
OverridenIntroImage = "TestPlayerRedButtChastity.jpg";
}
// If the player was stripped, she gets hit
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs") {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "RedButt_Cuffs";
OverridenIntroText = GetText("TestPlayerCrop");
OverridenIntroImage = "TestPlayerRedButt.jpg";
}
// If the player was cuffed, she gets stripped of her skirt (can reveal her chastity belt)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed_Cuffs") {
if (Common_PlayerChaste) {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed_Cuffs") {
if (Common_PlayerChaste) {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "NoSkirt_Cuffs_Chastity";
OverridenIntroText = GetText("TestPlayerNoSkirtChastity");
OverridenIntroImage = "TestPlayerNoSkirtChastity.jpg";
OverridenIntroText = GetText("TestPlayerNoSkirtChastity");
OverridenIntroImage = "TestPlayerNoSkirtChastity.jpg";
}
else {
else {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "NoSkirt_Cuffs";
OverridenIntroText = GetText("TestPlayerNoSkirt");
OverridenIntroImage = "TestPlayerNoSkirt.jpg";
OverridenIntroText = GetText("TestPlayerNoSkirt");
OverridenIntroImage = "TestPlayerNoSkirt.jpg";
}
}
// If the player wasn't cuffed, she gets cuffed
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed") {
PlayerLockInventory("Cuffs");
C011_LiteratureClass_Mildred_QuizPlayerStatus = "Clothed_Cuffs";
OverridenIntroText = GetText("TestPlayerCuffs");
OverridenIntroImage = "TestPlayerCuffs.jpg";
}
}
// Flag to tell that player is currently losing the test
@ -202,31 +202,31 @@ function C011_LiteratureClass_Mildred_EndQuizMildred(Victory) {
// On a victory
if (Victory) {
C011_LiteratureClass_Mildred_PlayerVictoryCount++;
// If Mildred was already hit, she gets hit again
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "RedButt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "RedButt_Cuffs") {
OverridenIntroText = GetText("TestMildredCropAgain");
OverridenIntroImage = "TestMildredRedButt.jpg";
}
// If Mildred was stripped, she gets hit
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "NoSkirt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "NoSkirt_Cuffs") {
C011_LiteratureClass_Mildred_QuizMildredStatus = "RedButt_Cuffs";
OverridenIntroText = GetText("TestMildredCrop");
OverridenIntroImage = "TestMildredRedButt.jpg";
}
// If Mildred was cuffed, she gets stripped of her skirt
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "Clothed_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "Clothed_Cuffs") {
C011_LiteratureClass_Mildred_QuizMildredStatus = "NoSkirt_Cuffs";
OverridenIntroText = GetText("TestMildredNoSkirt");
OverridenIntroImage = "TestMildredNoSkirt.jpg";
}
// If Mildred wasn't cuffed, she gets cuffed
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "Clothed") {
if (C011_LiteratureClass_Mildred_QuizMildredStatus == "Clothed") {
CurrentActor = "Mildred";
ActorAddInventory("Cuffs");
CurrentActor = "Mildred";
@ -234,51 +234,51 @@ function C011_LiteratureClass_Mildred_EndQuizMildred(Victory) {
OverridenIntroText = GetText("TestMildredCuffs");
OverridenIntroImage = "TestMildredCuffs.jpg";
}
} else {
C011_LiteratureClass_Mildred_MildredVictoryCount++;
// If the player was already hit, she gets hit again (chastity version)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs_Chastity") {
OverridenIntroText = GetText("TestPlayerCropAgainMildred");
OverridenIntroImage = "TestPlayerRedButtChastity.jpg";
}
// If the player was already hit, she gets hit again
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "RedButt_Cuffs") {
OverridenIntroText = GetText("TestPlayerCropAgainMildred");
OverridenIntroImage = "TestPlayerRedButt.jpg";
}
// If the player was stripped, she gets hit (chastity version)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs_Chastity") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs_Chastity") {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "RedButt_Cuffs_Chastity";
OverridenIntroText = GetText("TestPlayerCropMildred");
OverridenIntroImage = "TestPlayerRedButtChastity.jpg";
}
// If the player was stripped, she gets hit
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs") {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "NoSkirt_Cuffs") {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "RedButt_Cuffs";
OverridenIntroText = GetText("TestPlayerCropMildred");
OverridenIntroImage = "TestPlayerRedButt.jpg";
}
// If the player was cuffed, she gets stripped of her skirt (can reveal her chastity belt)
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed_Cuffs") {
if (Common_PlayerChaste) {
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed_Cuffs") {
if (Common_PlayerChaste) {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "NoSkirt_Cuffs_Chastity";
OverridenIntroText = GetText("TestPlayerNoSkirtMildredChastity");
OverridenIntroText = GetText("TestPlayerNoSkirtMildredChastity");
OverridenIntroImage = "TestPlayerNoSkirtChastity.jpg";
}
else {
else {
C011_LiteratureClass_Mildred_QuizPlayerStatus = "NoSkirt_Cuffs";
OverridenIntroText = GetText("TestPlayerNoSkirtMildred");
OverridenIntroImage = "TestPlayerNoSkirt.jpg";
OverridenIntroText = GetText("TestPlayerNoSkirtMildred");
OverridenIntroImage = "TestPlayerNoSkirt.jpg";
}
}
// If the player wasn't cuffed, she gets cuffed
if (C011_LiteratureClass_Mildred_QuizPlayerStatus == "Clothed") {
PlayerLockInventory("Cuffs");

View file

@ -3,7 +3,7 @@ var C011_LiteratureClass_Outro_MaxTextPhase = 3;
// Chapter 11 - Outro Load
function C011_LiteratureClass_Outro_Load() {
// Time is always 16:30:00 in the outro, reset the poses if needed
StopTimer(16.5 * 60 * 60 * 1000);
PlayerUnlockInventory("Cuffs");
@ -24,7 +24,7 @@ function C011_LiteratureClass_Outro_Load() {
if (GameLogQuery(CurrentChapter, "", "StrictLeader")) C011_LiteratureClass_Outro_Type = "StrictLeader";
if (GameLogQuery(CurrentChapter, "", "FairLeader")) C011_LiteratureClass_Outro_Type = "FairLeader";
if (GameLogQuery(CurrentChapter, "", "EasyLeader")) C011_LiteratureClass_Outro_Type = "EasyLeader";
// A special outro type can occur where the player gets invited to the bondage club if at least 10 girls were tied up during the day
if (ActorGetTotalBondageCount() >= 10) {
C011_LiteratureClass_Outro_Type = "BondageClub";
@ -54,7 +54,7 @@ function C011_LiteratureClass_Outro_Run() {
if (TextPhase >= 2) DrawText(GetText("OutroClub3"), 400, 300, "White");
if (TextPhase >= 3) DrawText(GetText("OutroClub4"), 400, 400, "White");
if (TextPhase >= 4) DrawText(GetText("OutroClub5"), 400, 500, "White");
} else {
// Shows the regular outro text
@ -62,9 +62,9 @@ function C011_LiteratureClass_Outro_Run() {
DrawText(GetText("Outro1"), 400, 150, "White");
if (TextPhase >= 1) DrawText(GetText(C011_LiteratureClass_Outro_Type), 400, 300, "White");
if (TextPhase >= 2) DrawText(GetText("Outro2"), 400, 450, "White");
}
}

View file

@ -16,7 +16,7 @@ function C011_LiteratureClass_SelectDesk_Load() {
// Set the timer limits at 15:35
StartTimer(15.6666667 * 60 * 60 * 1000, CurrentChapter, "MildredIntro");
// Load the scene parameters (loads Jennifer first in case we are starting directly in chapter 10)
LoadInteractions();
LeaveIcon = "";
@ -33,18 +33,18 @@ function C011_LiteratureClass_SelectDesk_Load() {
// Chapter 11 - Literature Class Select Desk Run
function C011_LiteratureClass_SelectDesk_Run() {
// Build the text interactions
BuildInteraction(C011_LiteratureClass_SelectDesk_CurrentStage);
}
// Chapter 11 - Literature Class Select Desk Click
function C011_LiteratureClass_SelectDesk_Click() {
function C011_LiteratureClass_SelectDesk_Click() {
// Regular interactions
ClickInteraction(C011_LiteratureClass_SelectDesk_CurrentStage);
// The player can click on herself
var ClickInv = GetClickedInventory();
if (ClickInv == "Player") {
@ -69,11 +69,11 @@ function C011_LiteratureClass_SelectDesk_SelectBack() {
// Chapter 11 - Literature Class - Check the front row neighbors
function C011_LiteratureClass_SelectDesk_CheckFront() {
// Loads Natalie
ActorLoad("Natalie", "");
LeaveIcon = "";
// If Natalie was stranded, she will be angry at the player
if (GameLogQuery("C007_LunchBreak", "Natalie", "Stranded")) {
C011_LiteratureClass_SelectDesk_CurrentStage = 190;
@ -103,7 +103,7 @@ function C011_LiteratureClass_SelectDesk_CheckBack() {
// Loads Natalie
ActorLoad("Sidney", "");
LeaveIcon = "";
// Sidney can ignore the player
if (C011_LiteratureClass_SelectDesk_SidneyIgnorePlayer) {
C011_LiteratureClass_SelectDesk_CurrentStage = 280;
@ -117,7 +117,7 @@ function C011_LiteratureClass_SelectDesk_CheckBack() {
OverridenIntroText = GetText("SidneyPig");
return;
}
// With 8 submission or more, Sidney switches to sub mode
if (ActorGetValue(ActorSubmission) >= 8) {
C011_LiteratureClass_SelectDesk_CurrentStage = 240;
@ -145,7 +145,7 @@ function C011_LiteratureClass_SelectDesk_CheckBack() {
OverridenIntroText = GetText("SidneyLove");
return;
}
}
// Chapter 11 - Literature Class - Unload the current actor

View file

@ -54,14 +54,14 @@ function C012_AfterClass_Amanda_CalcParams() {
C012_AfterClass_Amanda_AllowPajamas = GameLogQuery(CurrentChapter, CurrentActor, "AllowPajamas");
C012_AfterClass_Amanda_HasEgg = ActorHasInventory("VibratingEgg");
C012_AfterClass_Amanda_HasBelt = ActorHasInventory("ChastityBelt");
C012_AfterClass_Amanda_IsGagged = ActorIsGagged();
C012_AfterClass_Amanda_IsGagged = ActorIsGagged();
C012_AfterClass_Amanda_IsRoped = (ActorHasInventory("Rope") || ActorHasInventory("TwoRopes") || ActorHasInventory("ThreeRopes"));
C012_AfterClass_Amanda_IsStrapped = ActorHasInventory("Armbinder");
C012_AfterClass_Amanda_IsRestrained = ActorIsRestrained();
C012_AfterClass_Amanda_PleasurePlayerAvail = (!Common_PlayerChaste && !ActorIsGagged() && !ActorIsRestrained() && Common_ActorIsOwned && !GameLogQuery(CurrentChapter, "Player", "NextPossibleOrgasm"));
C012_AfterClass_Amanda_SexAvail = (!Common_PlayerRestrained && !Common_PlayerChaste && !GameLogQuery(CurrentChapter, "Player", "NextPossibleOrgasm") && !GameLogQuery(CurrentChapter, "Amanda", "NextPossibleOrgasm"));
if (GameLogQuery(CurrentChapter, "", "EventBlockChanging") && (C012_AfterClass_Dorm_Guest.indexOf(Common_PlayerOwner) >= 0) && !Common_PlayerNaked) C012_AfterClass_Amanda_SexAvail = false;
C012_AfterClass_Amanda_CanMasturbate = (!Common_PlayerRestrained && !C012_AfterClass_Amanda_HasBelt && (ActorGetValue(ActorCloth) == "Naked"));
C012_AfterClass_Amanda_CanMasturbate = (!Common_PlayerRestrained && !C012_AfterClass_Amanda_HasBelt && (ActorGetValue(ActorCloth) == "Naked"));
C012_AfterClass_Amanda_CanKickOut = (!Common_ActorIsOwner && !Common_ActorIsLover);
C012_AfterClass_Amanda_SidneyIsOwner = (Common_PlayerOwner == "Sidney");
C012_AfterClass_Amanda_HaveCuffs = (PlayerHasInventory("Cuffs") && !Common_PlayerRestrained);
@ -76,15 +76,15 @@ function C012_AfterClass_Amanda_CalcParams() {
// Chapter 12 After Class - Amanda Load
function C012_AfterClass_Amanda_Load() {
// Loads the scene
LoadInteractions();
ActorLoad("Amanda", "Dorm");
Common_PlayerPose = "";
if (C012_AfterClass_Amanda_CurrentStage == 3915) Common_PlayerPose = "HogtiePunishment";
// Amanda's parameters
C012_AfterClass_Amanda_CalcParams();
C012_AfterClass_Amanda_CalcParams();
C012_AfterClass_Amanda_ChatAvail = !GameLogQuery(CurrentChapter, CurrentActor, "ChatDone");
C012_AfterClass_Amanda_SpankCount = 0;
C012_AfterClass_Amanda_SpankMaxCount = 10 - Math.floor(ActorGetValue(ActorLove) / 7);
@ -96,10 +96,10 @@ function C012_AfterClass_Amanda_Load() {
OverridenIntroText = C012_AfterClass_Amanda_IntroText;
C012_AfterClass_Amanda_IntroText = "";
} else {
// If the player is grounded
if (GameLogQuery(CurrentChapter, "", "EventGrounded")) {
// Skip to the punishment end phase, no talking while being grounded
C012_AfterClass_Amanda_AllowLeave();
C012_AfterClass_Amanda_CurrentStage = 3999;
@ -128,17 +128,17 @@ function C012_AfterClass_Amanda_Load() {
// A random event can be triggered when Amanda is clicked on
if (C012_AfterClass_Amanda_CurrentStage == 0)
if ((CurrentText != null) && (Math.floor(Math.random() * 8) == 0)) {
// Generic Domme event
if (!GameLogQuery(CurrentChapter, CurrentActor, "EventGeneric") && Common_ActorIsOwner)
C012_AfterClass_Amanda_RandomAmandaDommeEvent();
// Amanda might ask the player to use the bed with Sarah
if (C012_AfterClass_Amanda_DatingSarah && (C012_AfterClass_Amanda_CurrentStage == 0) && !ActorSpecificIsRestrained("Amanda") && !ActorSpecificIsRestrained("Sarah") && !ActorSpecificIsGagged("Amanda") && !ActorSpecificIsGagged("Sarah") && !GameLogQuery(CurrentChapter, "Amanda", "NextPossibleOrgasm") && !GameLogQuery(CurrentChapter, "Sarah", "NextPossibleOrgasm")) {
C012_AfterClass_Amanda_CurrentStage = 823;
LeaveIcon = "";
}
// Unlocking Pajamas event after 22
if (!GameLogQuery(CurrentChapter, CurrentActor, "AllowPajamas") && (CurrentTime >= 22 * 60 * 60 * 1000) && (C012_AfterClass_Amanda_CurrentStage == 0) && !Common_PlayerGagged && !Common_PlayerRestrained && !ActorIsRestrained() && !ActorIsGagged()) {
C012_AfterClass_Amanda_CurrentStage = 660;
@ -150,7 +150,7 @@ function C012_AfterClass_Amanda_Load() {
C012_AfterClass_Amanda_CurrentStage = 670;
LeaveIcon = "";
}
}
}
@ -167,7 +167,7 @@ function C012_AfterClass_Amanda_Run() {
// Draw the watching actors for ceremonies
if (((C012_AfterClass_Amanda_CurrentStage >= 392) && (C012_AfterClass_Amanda_CurrentStage < 400)) || ((C012_AfterClass_Amanda_CurrentStage >= 293) && (C012_AfterClass_Amanda_CurrentStage < 300))) C012_AfterClass_Dorm_DrawOtherActors();
// Draw the actor alone or with the player depending on the stage
if ((C012_AfterClass_Amanda_CurrentStage < 800) || (C012_AfterClass_Amanda_CurrentStage >= 900)) {
if ((C012_AfterClass_Amanda_CurrentStage != 3932) && (C012_AfterClass_Amanda_CurrentStage != 635) && (C012_AfterClass_Amanda_CurrentStage != 636) && (C012_AfterClass_Amanda_CurrentStage != 791) && (C012_AfterClass_Amanda_CurrentStage != 194)) {
@ -177,7 +177,7 @@ function C012_AfterClass_Amanda_Run() {
} else {
DrawInteractionActor();
if ((C012_AfterClass_Amanda_CurrentStage >= 392) && (C012_AfterClass_Amanda_CurrentStage < 400)) DrawActor("Player", 600, 100, 1);
}
}
}
} else {
DrawActor("Sarah", 475, 0, 1);
@ -198,10 +198,10 @@ function C012_AfterClass_Amanda_Click() {
C012_AfterClass_Amanda_IntroText = OverridenIntroText;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
// Amanda can be restrained on stage 0 and 10
if ((C012_AfterClass_Amanda_CurrentStage <= 10) && (ClickInv != "") && (ClickInv != "Player") && !Common_PlayerRestrained) {
// Amanda becomes more submissive from the crop
if (ClickInv == "Crop") {
if (ActorIsGagged()) OverridenIntroText = GetText("CropWhileGagged");
@ -236,7 +236,7 @@ function C012_AfterClass_Amanda_Click() {
OverridenIntroText = GetText("RefuseBondage");
return;
}
// Amanda can only wear the belt if she's naked
if (!ActorIsChaste() && (ActorGetValue(ActorCloth) != "Naked") && (ClickInv == "ChastityBelt")) {
OverridenIntroText = GetText("NakedForBelt");
@ -252,14 +252,14 @@ function C012_AfterClass_Amanda_Click() {
// Cannot use rope or armbinder in the school play costumes
if (((ActorGetValue(ActorCloth) == "Villain") || (ActorGetValue(ActorCloth) == "Heroine") || (ActorGetValue(ActorCloth) == "Damsel")) && ((ClickInv == "Rope") || (ClickInv == "Armbinder"))) {
OverridenIntroText = GetText("NoRestrainInCostume");
return;
return;
}
// Apply the clicked restrain
ActorApplyRestrain(ClickInv);
C012_AfterClass_Amanda_CalcParams();
}
}
// Amanda can be restrained to pleasure the player on stage 633
if ((C012_AfterClass_Amanda_CurrentStage <= 633) && (ClickInv != "") && (ClickInv != "Player") && !Common_PlayerRestrained && !ActorIsRestrained()) {
@ -269,14 +269,14 @@ function C012_AfterClass_Amanda_Click() {
C012_AfterClass_Amanda_CurrentStage = 634;
}
}
}
// Chapter 12 After Class - Amanda can make love with the player if (Love + seduction * 2) >= 12 or >= 25 on the next time or Amanda is the player girlfriend/submissive
function C012_AfterClass_Amanda_GaggedAnswer() {
if (ActorIsGagged()) {
var GagTalk = Math.floor(Math.random() * 8) + 1;
OverridenIntroText = GetText("GaggedAnswer" + GagTalk.toString());
OverridenIntroText = GetText("GaggedAnswer" + GagTalk.toString());
}
}
@ -352,8 +352,8 @@ function C012_AfterClass_Amanda_TestSubmit() {
OverridenIntroText = GetText("UnchasteFirst");
} else {
if (PlayerHasLockedInventory("Collar")) {
OverridenIntroText = GetText("PlayerUncollarFirst");
} else {
OverridenIntroText = GetText("PlayerUncollarFirst");
} else {
if (Common_PlayerRestrained) {
OverridenIntroText = GetText("PlayerUnrestrainFirst");
} else {
@ -400,7 +400,7 @@ function C012_AfterClass_Amanda_PlayerStandUp() {
// Chapter 12 After Class - The player can trigger a random Domme event from Amanda (3000 events)
function C012_AfterClass_Amanda_RandomAmandaDommeEvent() {
// Makes sure the next random event can be triggered
if (!GameLogQuery(CurrentChapter, CurrentActor, "EventGeneric")) {
@ -412,7 +412,7 @@ function C012_AfterClass_Amanda_RandomAmandaDommeEvent() {
// If Amanda doesn't respond, she checks her notes
if (C012_AfterClass_Amanda_CurrentStage == 0) C012_AfterClass_Amanda_CheckNotes();
}
// Chapter 12 After Class - As a Domme, Amanda can force the player to change
@ -440,35 +440,35 @@ function C012_AfterClass_Amanda_TestUnbind() {
// Bound and gagged, there's not much she can do
if (ActorIsGagged() && ActorIsRestrained()) {
C012_AfterClass_Amanda_GaggedAnswer();
C012_AfterClass_Amanda_GaggedAnswer();
}
else {
// Before the next event time, she will always refuse (skip is owned)
if (!GameLogQuery(CurrentChapter, CurrentActor, "EventGeneric") || Common_ActorIsOwned) {
// Check if the event succeeds randomly (skip is owned)
if (EventRandomChance("Love") || Common_ActorIsOwned) {
// Can only release if not restrained
if (!ActorIsRestrained()) {
if (ActorIsGagged()) OverridenIntroText = GetText("ReleasePlayerGagged");
else OverridenIntroText = GetText("ReleasePlayer");
else OverridenIntroText = GetText("ReleasePlayer");
PlayerReleaseBondage();
CurrentTime = CurrentTime + 50000;
} else OverridenIntroText = GetText("CannotReleasePlayer");
} else EventSetGenericTimer();
}
}
}
// Chapter 12 After Class - When the player disobey, she can get punished
function C012_AfterClass_Amanda_DoActivity(ActivityType, Enjoyment, BonusStage) {
// Launch the activity, some can have a bonus stage
C012_AfterClass_Amanda_CurrentStage = EventDoActivity(ActivityType, Enjoyment, C012_AfterClass_Amanda_CurrentStage, 3290, BonusStage);
@ -509,7 +509,7 @@ function C012_AfterClass_Amanda_ConfiscateCrop() {
// Chapter 12 After Class - Amanda can confiscate the player keys
function C012_AfterClass_Amanda_BegForOrgasm() {
// If the player begs for it, Amanda will do it randomly based on love, if not it's based on hate
if (EventRandomChance("Love")) {
ActorAddOrgasm();
@ -528,7 +528,7 @@ function C012_AfterClass_Amanda_IsChangingBlocked() {
// Chapter 12 After Class - Amanda will tell the player if she can change clothes or not
function C012_AfterClass_Amanda_TestBlockChanging() {
// The less love, the higher the chances Amanda will block changing
if (EventRandomChance("Hate")) {
OverridenIntroText = "";
@ -543,7 +543,7 @@ function C012_AfterClass_Amanda_ReleaseBeforePunish() {
ActorSetPose("ReadyToPunish");
if (Common_PlayerRestrained || Common_PlayerGagged) {
if (Common_PlayerNaked) {
C012_AfterClass_Amanda_CurrentStage = 3903;
C012_AfterClass_Amanda_CurrentStage = 3903;
OverridenIntroText = GetText("ReleaseBeforePunishAlreadyNaked");
}
else OverridenIntroText = GetText("ReleaseBeforePunishNotNaked");
@ -551,9 +551,9 @@ function C012_AfterClass_Amanda_ReleaseBeforePunish() {
CurrentTime = CurrentTime + 50000;
} else {
if (Common_PlayerNaked) {
C012_AfterClass_Amanda_CurrentStage = 3903;
C012_AfterClass_Amanda_CurrentStage = 3903;
OverridenIntroText = GetText("PunishSinceNaked");
}
}
}
}
@ -650,7 +650,7 @@ function C012_AfterClass_Amanda_TestChange() {
if (!ActorIsRestrained()) {
if ((ActorGetValue(ActorLove) >= 10) || (ActorGetValue(ActorSubmission) >= 10) || Common_ActorIsOwned || Common_ActorIsLover) {
if (Common_ActorIsOwned) OverridenIntroText = GetText("AcceptChangeFromMistress");
else
else
if (Common_ActorIsLover) OverridenIntroText = GetText("AcceptChangeFromLover");
else OverridenIntroText = GetText("AcceptChange");
C012_AfterClass_Amanda_CurrentStage = 600;
@ -759,14 +759,14 @@ function C012_AfterClass_Amanda_StartPleasurePlayer() {
// Chapter 12 After Class - When Amanda pleasures the player
function C012_AfterClass_Amanda_PleasurePlayer() {
// The more it progresses, the faster Amanda must go
CurrentTime = CurrentTime + 50000;
var StartCount = C012_AfterClass_Amanda_PleasurePlayerCount;
if ((C012_AfterClass_Amanda_PleasurePlayerCount >= 0) && (C012_AfterClass_Amanda_PleasurePlayerCount <= 1) && (C012_AfterClass_Amanda_PleasurePlayerSpeed == 0)) C012_AfterClass_Amanda_PleasurePlayerCount++;
if ((C012_AfterClass_Amanda_PleasurePlayerCount >= 2) && (C012_AfterClass_Amanda_PleasurePlayerCount <= 3) && (C012_AfterClass_Amanda_PleasurePlayerSpeed == 1)) C012_AfterClass_Amanda_PleasurePlayerCount++;
if ((C012_AfterClass_Amanda_PleasurePlayerCount >= 4) && (C012_AfterClass_Amanda_PleasurePlayerCount <= 9) && (C012_AfterClass_Amanda_PleasurePlayerSpeed == 2)) C012_AfterClass_Amanda_PleasurePlayerCount++;
// At 6 counts, an orgasm is achieved, the next one will be slower
if (C012_AfterClass_Amanda_PleasurePlayerCount >= 6) {
OverridenIntroText = GetText("OrgasmFromAmandaPleasure");
@ -780,7 +780,7 @@ function C012_AfterClass_Amanda_PleasurePlayer() {
} else {
if (StartCount == C012_AfterClass_Amanda_PleasurePlayerCount) OverridenIntroText = GetText("PleasureFromAmandaNoProgress");
}
}
// Chapter 12 After Class - When Amanda pleasures the player and is forced in a new position or speed
@ -806,7 +806,7 @@ function C012_AfterClass_Amanda_EndPleasureFromAmanda(LoveFactor, SubFactor) {
// Chapter 12 After Class - When the player kisses Amanda
function C012_AfterClass_Amanda_Kiss() {
CurrentTime = CurrentTime + 50000;
CurrentTime = CurrentTime + 50000;
if (Common_ActorIsOwner) OverridenIntroText = GetText("KissAmandaOwner");
else if (C012_AfterClass_Amanda_IsGagged) OverridenIntroText = GetText("KissAmandaGagged");
else if (!GameLogQuery(CurrentChapter, CurrentActor, "Kiss")) {
@ -934,7 +934,7 @@ function C012_AfterClass_Amanda_TestTalk() {
if (!ActorIsGagged()) {
if (!ActorIsRestrained()) C012_AfterClass_Amanda_CurrentStage = 20;
else OverridenIntroText = GetText("ReleaseBeforeTalk");
} else C012_AfterClass_Amanda_GaggedAnswer();
} else C012_AfterClass_Amanda_GaggedAnswer();
}
// Chapter 12 After Class - When the player breaks up with Amanda

View file

@ -47,12 +47,12 @@ function C012_AfterClass_Bed_Load() {
else C012_AfterClass_Bed_CurrentStage = 800;
if (ActorSpecificHasInventory("Amanda", "ChastityBelt")) OverridenIntroImage = "AmandaChastityBeltSarahBed.jpg";
else OverridenIntroImage = "AmandaSarahBed.jpg";
} else {
// If there's no partner in bed
if (C012_AfterClass_Bed_Partner == "") {
// Starts the masturbation mini game
LeaveIcon = "Leave";
LeaveScreen = "Dorm";
@ -62,9 +62,9 @@ function C012_AfterClass_Bed_Load() {
C012_AfterClass_Bed_MistressApproveMasturbate = "";
if (PlayerHasLockedInventory("VibratingEgg")) C012_AfterClass_Bed_MasturbationRequired = 2;
else C012_AfterClass_Bed_MasturbationRequired = 3;
} else {
// With a partner, they can make love, some girls are a little harder to please
C012_AfterClass_Bed_CanDateSarah = ((Common_PlayerLover == "") && !GameLogQuery(CurrentChapter, "Amanda", "DatingSarah"));
ActorLoad(C012_AfterClass_Bed_Partner, "Dorm");
@ -80,15 +80,15 @@ function C012_AfterClass_Bed_Load() {
C012_AfterClass_Bed_SexPleasurePartner = ActorHasInventory("VibratingEgg") ? 3 : 0;
C012_AfterClass_Bed_SexPleasurePlayer = PlayerHasLockedInventory("VibratingEgg") ? 3 : 0;
if (CurrentActor == "Amanda") C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner - 1;
if (CurrentActor == "Sarah") C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner + 2;
if (CurrentActor == "Sarah") C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner + 2;
if (CurrentActor == "Sidney") C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner + 1;
if (CurrentActor == "Jennifer") C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner - 2;
LeaveIcon = "";
}
}
}
// Chapter 12 After Class - Bed Run
@ -101,7 +101,7 @@ function C012_AfterClass_Bed_Run() {
}
// Chapter 12 After Class - Bed Click
function C012_AfterClass_Bed_Click() {
function C012_AfterClass_Bed_Click() {
// Regular interactions
ClickInteraction(C012_AfterClass_Bed_CurrentStage);
@ -116,20 +116,20 @@ function C012_AfterClass_Bed_EndChapter(OutroType) {
// Chapter 12 After Class - Checks if there's no guest that's not related to the player (love or BDSM)
function C012_AfterClass_Bed_AllRelatedGuest() {
// Loops in all guests to find one that's not related
for (var G = 0; G < C012_AfterClass_Dorm_Guest.length; G++) {
ActorLoad(C012_AfterClass_Dorm_Guest[G], "Dorm");
if (!Common_ActorIsLover && !Common_ActorIsOwner && !Common_ActorIsOwned) {
CurrentActor = "";
return false;
}
CurrentActor = "";
return false;
}
}
// If the player Mistress is around, she might punish her for masturbating or changing clothes
for (var G = 0; G < C012_AfterClass_Dorm_Guest.length; G++) {
if (Common_ActorIsOwner && (CurrentActor == Common_PlayerOwner)) {
// If the player strips without being allowed, she gets punished
if (!Common_PlayerNaked && GameLogQuery(CurrentChapter, "", "EventBlockChanging")) {
CurrentTime = CurrentTime + 50000;
@ -141,7 +141,7 @@ function C012_AfterClass_Bed_AllRelatedGuest() {
LeaveIcon = "";
return false;
} else {
// Hints the player if she will get punished or not
if (EventRandomChance("Hate")) C012_AfterClass_Bed_MistressApproveMasturbate = "NO";
else C012_AfterClass_Bed_MistressApproveMasturbate = "YES";
@ -150,7 +150,7 @@ function C012_AfterClass_Bed_AllRelatedGuest() {
}
}
// No guest found, we allow the player to masturbate
CurrentActor = "";
return true;
@ -167,7 +167,7 @@ function C012_AfterClass_Bed_StartMasturbate() {
if (C012_AfterClass_Bed_MistressApproveMasturbate == "NO") OverridenIntroText = GetText("LayMistressDisapprove");
PlayerClothes("Naked");
C012_AfterClass_Bed_CurrentStage = 100;
CurrentTime = CurrentTime + 50000;
CurrentTime = CurrentTime + 50000;
} else if (CurrentActor == "") OverridenIntroText = GetText("CannotMasturbateWithGuest");
}
}
@ -229,13 +229,13 @@ function C012_AfterClass_Bed_Climax() {
// Chapter 12 After Class - When the player wants to leave the bed with a lover
function C012_AfterClass_Bed_LeaveBedFromSex() {
// If the actor is the owner and she didn't came, she will not let the player leave the bed
if (Common_ActorIsOwner && (C012_AfterClass_Bed_SexPleasurePartner > -100)) {
OverridenIntroText = GetText("SexStop" + CurrentActor + "Refuse");
return;
}
// The actor will dislike the player if she didn't had her orgasm
if (C012_AfterClass_Bed_SexPleasurePartner > -100) ActorChangeAttitude(-1, 0);
if ((C012_AfterClass_Bed_SexPleasurePlayer < -100) && (C012_AfterClass_Bed_SexPleasurePartner > -100)) { ActorChangeAttitude(-1, 0); OverridenIntroText = GetText("SexStop" + CurrentActor + "PartnerNoOrgasm"); }
@ -250,47 +250,47 @@ 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
CurrentTime = CurrentTime + 50000;
C012_AfterClass_Bed_SexPleasurePartner = C012_AfterClass_Bed_SexPleasurePartner + PleasurePartner;
C012_AfterClass_Bed_SexPleasurePlayer = C012_AfterClass_Bed_SexPleasurePlayer + PleasurePlayer;
// More sex options opens when the scene progress
C012_AfterClass_Bed_SexCount++;
C012_AfterClass_Bed_SexSoft = (C012_AfterClass_Bed_SexCount >= 3);
C012_AfterClass_Bed_SexWild = (C012_AfterClass_Bed_SexCount >= 6);
// if an orgasm can be achieved from the activity, we trigger both orgasms at level 10 and they can be simultaneous
var PartnerOrgasm = false;
var PlayerOrgasm = false;
if (CanOrgasm) {
// When the partner achieves her orgasm
if (C012_AfterClass_Bed_SexPleasurePartner >= 10) {
PartnerOrgasm = true;
C012_AfterClass_Bed_SexPleasurePartner = -10000000;
if (C012_AfterClass_Bed_SexPleasurePartner >= 10) {
PartnerOrgasm = true;
C012_AfterClass_Bed_SexPleasurePartner = -10000000;
ActorChangeAttitude(1, 0);
OverridenIntroText = GetText("Sex" + CurrentActor + "PartnerOrgasm");
GameLogSpecificAddTimer(CurrentChapter, CurrentActor, "NextPossibleOrgasm", ActorHasInventory("VibratingEgg") ? CurrentTime + 3600000 : CurrentTime + 7200000);
}
// When the player achieves her orgasm
if (C012_AfterClass_Bed_SexPleasurePlayer >= 10) {
PlayerOrgasm = true;
if (C012_AfterClass_Bed_SexPleasurePlayer >= 10) {
PlayerOrgasm = true;
C012_AfterClass_Bed_SexPleasurePlayer = -10000000;
GameLogSpecificAddTimer(CurrentChapter, "Player", "NextPossibleOrgasm", PlayerHasLockedInventory("VibratingEgg") ? CurrentTime + 1800000 : CurrentTime + 3600000);
// A simultaneous orgasm gives one extra love
if (PartnerOrgasm) {
OverridenIntroText = GetText("Sex" + CurrentActor + "SimultaneousOrgasm");
ActorChangeAttitude(1, 0);
ActorChangeAttitude(1, 0);
} else OverridenIntroText = GetText("Sex" + CurrentActor + "PlayerOrgasm");
}
// If the sex scene must end, we jump to the next stage
if ((C012_AfterClass_Bed_SexPleasurePlayer < -100) && (C012_AfterClass_Bed_SexPleasurePartner < -100))
C012_AfterClass_Bed_CurrentStage = parseInt(C012_AfterClass_Bed_CurrentStage) + 10;
@ -305,7 +305,7 @@ function C012_AfterClass_Bed_Sex(PleasurePartner, PleasurePlayer, CanOrgasm, Wor
// Chapter 12 After Class - Renders a final image after sex
function C012_AfterClass_Bed_AfterSex() {
CurrentTime = CurrentTime + 50000;
C012_AfterClass_Bed_PrepareImage(false, false);
C012_AfterClass_Bed_PrepareImage(false, false);
}
// Chapter 12 After Class - When everyone gets off the bed

View file

@ -38,7 +38,7 @@ function C012_AfterClass_Dorm_LeavingGuest() {
// Sidney will leave at 20:00, it ends any grounding event
if ((C012_AfterClass_Dorm_Guest.indexOf("Sidney") >= 0) && (CurrentTime >= C012_AfterClass_Dorm_SidneyExitTime) && (CurrentTime <= C012_AfterClass_Dorm_SidneyReturnTime) && !GameLogQuery(CurrentChapter, "Sidney", "BackFromRockShow") && !ActorSpecificIsRestrained("Sidney") && !GameLogQuery(CurrentChapter, "Sidney", "KickedOutFromDorm")) {
C012_AfterClass_Dorm_Guest.splice("Sidney");
C012_AfterClass_Dorm_Guest.splice("Sidney");
if ((CurrentScreen == "Dorm") && (!C012_AfterClass_Dorm_PlayerGrounded || (Common_PlayerOwner == "Sidney"))) {
C012_AfterClass_Sidney_CurrentStage = 400;
if (C012_AfterClass_Dorm_PlayerGrounded && (Common_PlayerOwner == "Sidney")) GameLogSpecificAddTimer(CurrentChapter, "Sidney", "EventGrounded", 1);
@ -49,7 +49,7 @@ function C012_AfterClass_Dorm_LeavingGuest() {
}
// Sarah will leave at 21:00, it cancels the bed with Amanda event
if ((C012_AfterClass_Dorm_Guest.indexOf("Sarah") >= 0) && (CurrentTime >= C012_AfterClass_Dorm_SarahExitTime) && !GameLogQuery(CurrentChapter, "Sarah", "BackFromBondageClub") && !ActorSpecificIsRestrained("Sarah") && !GameLogQuery(CurrentChapter, "Sarah", "KickedOutFromDorm")) {
if ((C012_AfterClass_Dorm_Guest.indexOf("Sarah") >= 0) && (CurrentTime >= C012_AfterClass_Dorm_SarahExitTime) && !GameLogQuery(CurrentChapter, "Sarah", "BackFromBondageClub") && !ActorSpecificIsRestrained("Sarah") && !GameLogQuery(CurrentChapter, "Sarah", "KickedOutFromDorm")) {
GameLogSpecificAddTimer(CurrentChapter, "Player", "AmandaAndSarahInBed", 1);
C012_AfterClass_Dorm_Guest.splice("Sarah");
if ((CurrentScreen == "Dorm") && !C012_AfterClass_Dorm_PlayerGrounded) {
@ -58,7 +58,7 @@ function C012_AfterClass_Dorm_LeavingGuest() {
ActorSetCloth("BrownDress");
} else C012_AfterClass_Dorm_CalGuest();
}
}
// Set the guest list in the dorm
@ -67,15 +67,15 @@ function C012_AfterClass_Dorm_CalGuest() {
// Build an array of everyone that's in the player dorm room
C012_AfterClass_Dorm_LeavingGuest();
C012_AfterClass_Dorm_Guest = [];
if (GameLogQuery(CurrentChapter, "Sidney", "EnterDormFromPub") && !GameLogQuery(CurrentChapter, "Sidney", "KickedOutFromDorm") && ((CurrentTime <= C012_AfterClass_Dorm_SidneyExitTime) || (CurrentTime >= C012_AfterClass_Dorm_SidneyReturnTime) || GameLogQuery(CurrentChapter, "Sidney", "BackFromRockShow") || ActorSpecificIsRestrained("Sidney")))
if (GameLogQuery(CurrentChapter, "Sidney", "EnterDormFromPub") && !GameLogQuery(CurrentChapter, "Sidney", "KickedOutFromDorm") && ((CurrentTime <= C012_AfterClass_Dorm_SidneyExitTime) || (CurrentTime >= C012_AfterClass_Dorm_SidneyReturnTime) || GameLogQuery(CurrentChapter, "Sidney", "BackFromRockShow") || ActorSpecificIsRestrained("Sidney")))
if (!GameLogQuery(CurrentChapter, "Sidney", "LoverBreakUp") || (ActorSpecificGetValue("Sidney", ActorOwner) == "Player"))
C012_AfterClass_Dorm_Guest.push("Sidney");
if ((GameLogQuery(CurrentChapter, "Jennifer", "EnterDormFromPool") || GameLogQuery(CurrentChapter, "Jennifer", "EnterDormFromRoommates")) && !GameLogQuery(CurrentChapter, "Jennifer", "KickedOutFromDorm"))
if ((GameLogQuery(CurrentChapter, "Jennifer", "EnterDormFromPool") || GameLogQuery(CurrentChapter, "Jennifer", "EnterDormFromRoommates")) && !GameLogQuery(CurrentChapter, "Jennifer", "KickedOutFromDorm"))
C012_AfterClass_Dorm_Guest.push("Jennifer");
if ((GameLogQuery(CurrentChapter, "Amanda", "EnterDormFromLibrary") || GameLogQuery(CurrentChapter, "Amanda", "EnterDormFromRoommates")) && !GameLogQuery(CurrentChapter, "Amanda", "KickedOutFromDorm") && !GameLogQuery(CurrentChapter, "Amanda", "LeaveDormEarly"))
if (!GameLogQuery(CurrentChapter, "Amanda", "LoverBreakUp") || (ActorSpecificGetValue("Amanda", ActorOwner) == "Player"))
C012_AfterClass_Dorm_Guest.push("Amanda");
if (GameLogQuery(CurrentChapter, "Sarah", "EnterDormFromRoommates") && !GameLogQuery(CurrentChapter, "Sarah", "KickedOutFromDorm") && ((CurrentTime <= C012_AfterClass_Dorm_SarahExitTime) || GameLogQuery(CurrentChapter, "Sarah", "BackFromBondageClub") || ActorSpecificIsRestrained("Sarah")))
if (GameLogQuery(CurrentChapter, "Sarah", "EnterDormFromRoommates") && !GameLogQuery(CurrentChapter, "Sarah", "KickedOutFromDorm") && ((CurrentTime <= C012_AfterClass_Dorm_SarahExitTime) || GameLogQuery(CurrentChapter, "Sarah", "BackFromBondageClub") || ActorSpecificIsRestrained("Sarah")))
C012_AfterClass_Dorm_Guest.push("Sarah");
// Build an array of everyone that's visible (standing up)
@ -89,7 +89,7 @@ function C012_AfterClass_Dorm_CalGuest() {
// Chapter 12 - After Class Dorm Load
function C012_AfterClass_Dorm_Load() {
// Set the timer limits
StartTimer(24 * 60 * 60 * 1000, "C012_AfterClass", "Outro");
ActorSpecificSetPose("Amanda", "");
@ -143,7 +143,7 @@ function C012_AfterClass_Dorm_Load() {
// Chapter 12 - After Class Dorm Run
function C012_AfterClass_Dorm_Run() {
// Check if we must stop the scene for leaving guests
C012_AfterClass_Dorm_LeavingGuest();
@ -152,7 +152,7 @@ function C012_AfterClass_Dorm_Run() {
C012_AfterClass_Dorm_CalGuest();
C012_AfterClass_Dorm_AmandaAndSarahInBed = false;
}
// If grounding is over, we go to the owner
if (C012_AfterClass_Dorm_PlayerGrounded && !GameLogQuery(CurrentChapter, "", "EventGrounded") && (C012_AfterClass_Sidney_CurrentStage != 400)) {
if (Common_PlayerOwner == "Sidney") C012_AfterClass_Sidney_CurrentStage = 3915;
@ -181,10 +181,10 @@ function C012_AfterClass_Dorm_Run() {
SetScene(CurrentChapter, "Sarah");
LeaveIcon = "";
}
// Make sure we are still in the dorm after the previous events
if (CurrentScreen == "Dorm") {
// The "spanked" pose will fade out after time
if (Common_PlayerPose == "Spanked" && !GameLogQuery(CurrentChapter, "", "EventSpanked")) Common_PlayerPose = "";
@ -194,7 +194,7 @@ function C012_AfterClass_Dorm_Run() {
DrawTransparentPlayerImage(C012_AfterClass_Dorm_PlayerPos - 210, 0, 0.6667);
for (var A = 0; A < C012_AfterClass_Dorm_GuestVisible.length; A++)
DrawActor(C012_AfterClass_Dorm_GuestVisible[A], C012_AfterClass_Dorm_PlayerPos - 10 + A * 200, 0, 0.6667);
// Draw the room icons
if ((MouseX >= 1050) && (MouseX < 1200) && (MouseY >= 0) && (MouseY < 150)) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Wardrobe_Active.png", 1075, 25);
else DrawImage(CurrentChapter + "/" + CurrentScreen + "/Wardrobe_Inactive.png", 1075, 25);
@ -206,7 +206,7 @@ function C012_AfterClass_Dorm_Run() {
else DrawImage(CurrentChapter + "/" + CurrentScreen + "/Exit_Inactive.png", 1075, 475);
}
}
// Chapter 12 - After Class Dorm Click
@ -217,14 +217,14 @@ function C012_AfterClass_Dorm_Click() {
// Checks if the user clicks on any regular item
InventoryClick(GetClickedInventory(), CurrentChapter, CurrentScreen);
// Opens the other screens of the dorm
if ((MouseX >= 1050) && (MouseX < 1200) && (MouseY >= 0) && (MouseY < 150)) SetScene(CurrentChapter, "Wardrobe");
if ((MouseX >= 1050) && (MouseX < 1200) && (MouseY >= 150) && (MouseY < 300)) SetScene(CurrentChapter, "Bed");
if ((MouseX >= 1050) && (MouseX < 1200) && (MouseY >= 300) && (MouseY < 450)) SaveMenu(CurrentChapter, "Dorm");
if ((MouseX >= 1050) && (MouseX < 1200) && (MouseY >= 450) && (MouseY < 600)) SetScene(CurrentChapter, "DormExit");
if ((MouseX >= C012_AfterClass_Dorm_PlayerPos - 100) && (MouseX < C012_AfterClass_Dorm_PlayerPos + 100) && (MouseY >= 0) && (MouseY <= 600)) InventoryClick("Player", CurrentChapter, CurrentScreen);
}
// When the player clicks on another actor

View file

@ -4,12 +4,12 @@ var C012_AfterClass_DormExit_KnowBondageClub = false;
// Chapter 12 After Class - Dorm Exit Load
function C012_AfterClass_DormExit_Load() {
// Loads the scene to search in the wardrobe
LeaveIcon = "Leave";
LeaveScreen = "Dorm";
LoadInteractions();
// The player can go to clubs if she heard about them
C012_AfterClass_DormExit_KnowKinbakuClub = (GameLogQuery("C007_LunchBreak", "Natalie", "Lunch") || GameLogQuery("", "", "KinbakuClubInfo"));
C012_AfterClass_DormExit_KnowBondageClub = GameLogQuery("", "", "BondageClubInvitation");
@ -23,7 +23,7 @@ function C012_AfterClass_DormExit_Run() {
}
// Chapter 12 After Class - Dorm Exit Click
function C012_AfterClass_DormExit_Click() {
function C012_AfterClass_DormExit_Click() {
// Regular interactions
ClickInteraction(C012_AfterClass_DormExit_CurrentStage);
@ -81,7 +81,7 @@ function C012_AfterClass_DormExit_LaunchLibrary() {
if (CurrentTime < (20.9 * 60 * 60 * 1000)) {
CurrentTime = CurrentTime + 290000;
C012_AfterClass_Library_CurrentStage = 0;
SetScene(CurrentChapter, "Library");
SetScene(CurrentChapter, "Library");
} else OverridenIntroText = GetText("LibraryClosed");
} else OverridenIntroText = GetText("SchoolClothesFirst");
} else OverridenIntroText = GetText("UnrestrainFirst");

View file

@ -3,7 +3,7 @@ var C012_AfterClass_Humiliation_List = ["Art", "Detention", "Karate", "Pool", "R
// Chapter 12 After Class - Humiliation Load
function C012_AfterClass_Humiliation_Load() {
// Loads the scene
LeaveIcon = "";
LeaveScreen = "Dorm";
@ -19,7 +19,7 @@ function C012_AfterClass_Humiliation_Run() {
}
// Chapter 12 After Class - Humiliation Click
function C012_AfterClass_Humiliation_Click() {
function C012_AfterClass_Humiliation_Click() {
// Regular interactions
ClickInteraction(C012_AfterClass_Humiliation_CurrentStage);
@ -27,7 +27,7 @@ function C012_AfterClass_Humiliation_Click() {
}
// Chapter 12 After Class - process the humiliation scene
function C012_AfterClass_Humiliation_Process() {
function C012_AfterClass_Humiliation_Process() {
CurrentTime = CurrentTime + 290000;
var HumiliationType = C012_AfterClass_Humiliation_List[Math.floor(Math.random() * C012_AfterClass_Humiliation_List.length)];
OverridenIntroImage = "Humiliation" + HumiliationType + (Common_PlayerChaste ? "Chastity": "") + ".jpg";

View file

@ -17,7 +17,7 @@ var C012_AfterClass_Isolation_DontLikeRemarkDone = false;
// Chapter 12 After Class - Isolation Load
function C012_AfterClass_Isolation_Load() {
// Loads the scene to search in the wardrobe
LoadInteractions();
ActorLoad("Sarah", "");
@ -42,7 +42,7 @@ function C012_AfterClass_Isolation_Run() {
}
// Chapter 12 After Class - Isolation Click
function C012_AfterClass_Isolation_Click() {
function C012_AfterClass_Isolation_Click() {
// Regular interactions
OverridenIntroImage = "";
@ -59,7 +59,7 @@ function C012_AfterClass_Isolation_Click() {
var ClickInv = GetClickedInventory();
if (ClickInv == "Player") {
C012_AfterClass_Isolation_IntroText = OverridenIntroText;
C012_AfterClass_Isolation_CurrentActor = CurrentActor;
C012_AfterClass_Isolation_CurrentActor = CurrentActor;
InventoryClick(ClickInv, CurrentChapter, CurrentScreen);
}
@ -113,7 +113,7 @@ function C012_AfterClass_Isolation_DontLikeRemark() {
if (!C012_AfterClass_Isolation_DontLikeRemarkDone) {
C012_AfterClass_Isolation_DontLikeRemarkDone = true;
ActorChangeAttitude(-1, 0);
}
}
}
// Chapter 12 After Class - The player can spank Sarah on the Pillory

Some files were not shown because too many files have changed in this diff Show more