diff --git a/Actor.js b/Actor.js index 0bf154dc7bffe0eb90c8d5d86b2d775274a86778..c3fa5e01a4203c53bb54bb000f43f68aa100f27e 100644 --- a/Actor.js +++ b/Actor.js @@ -16,7 +16,7 @@ var ActorOwner = 10; // Make sure the current actor is loaded (create it if not) function ActorLoad(ActorToLoad, ActorLeaveScreen) { - + // Keep the actor leave screen LeaveIcon = "Leave"; LeaveScreen = ActorLeaveScreen; @@ -40,14 +40,14 @@ function ActorLoad(ActorToLoad, ActorLeaveScreen) { function ActorGetValue(ValueType) { for (var L = 0; L < Actor.length; L++) if (CurrentActor == Actor[L][ActorName]) - return Actor[L][ValueType]; + return Actor[L][ValueType]; } // Return a value from a specific actor data function ActorSpecificGetValue(SpecificActorName, ValueType) { for (var L = 0; L < Actor.length; L++) if (SpecificActorName == Actor[L][ActorName]) - return Actor[L][ValueType]; + return Actor[L][ValueType]; } // Return the current actor's localized name @@ -59,7 +59,7 @@ function ActorGetDisplayName() { // Change positively or negatively the current actor attitude toward the player function ActorChangeAttitude(LoveAttitude, SubAttitude) { - + // If we need to make a change to the attitude, we apply it if ((LoveAttitude != 0) || (SubAttitude != 0)) for (var L = 0; L < Actor.length; L++) @@ -70,25 +70,25 @@ function ActorChangeAttitude(LoveAttitude, SubAttitude) { if (Actor[L][ActorLove] < -99) Actor[L][ActorLove] = -99; if (Actor[L][ActorSubmission] > 99) Actor[L][ActorSubmission] = 99; if (Actor[L][ActorSubmission] < -99) Actor[L][ActorSubmission] = -99; - } + } } // Change positively or negatively a specific actor attitude toward the player function ActorSpecificChangeAttitude(SpecificActorName, LoveAttitude, SubAttitude) { - + // If we need to make a change to the attitude, we apply it if ((LoveAttitude != 0) || (SubAttitude != 0)) for (var L = 0; L < Actor.length; L++) if (SpecificActorName == Actor[L][ActorName]) { Actor[L][ActorLove] = Actor[L][ActorLove] + parseInt(LoveAttitude); Actor[L][ActorSubmission] = Actor[L][ActorSubmission] + parseInt(SubAttitude); - } + } } // Add an orgasm to the actor count and logs the event -function ActorAddOrgasm() { +function ActorAddOrgasm() { for (var L = 0; L < Actor.length; L++) if (CurrentActor == Actor[L][ActorName]) Actor[L][ActorOrgasmCount]++; @@ -97,7 +97,7 @@ function ActorAddOrgasm() { // Validates that a specific interaction stage is available for the player function ActorInteractionAvailable(LoveReq, SubReq, VarReq, InText, ForIntro) { - + // Make sure the love / sub level is match (both positive and negative) VarReq = VarReq.trim(); InText = InText.trim(); @@ -105,13 +105,13 @@ function ActorInteractionAvailable(LoveReq, SubReq, VarReq, InText, ForIntro) { if ((parseInt(SubReq) > 0) && (parseInt(ActorGetValue(ActorSubmission)) < parseInt(SubReq))) return false; if ((parseInt(LoveReq) < 0) && (parseInt(ActorGetValue(ActorLove)) > parseInt(LoveReq))) return false; if ((parseInt(SubReq) < 0) && (parseInt(ActorGetValue(ActorSubmission)) > parseInt(SubReq))) return false; - + // Checks if there's a custom script variable or a common variable to process if ((VarReq != "") && (VarReq.substr(0, 7) == "Common_") && (window[VarReq] == false)) return false; if ((VarReq != "") && (VarReq.substr(0, 8) == "!Common_") && (window[VarReq.substr(1)] == true)) return false; if ((VarReq != "") && (VarReq.substr(0, 7) != "Common_") && (VarReq.substr(0, 1) != "!") && (window[CurrentChapter + "_" + CurrentScreen + "_" + VarReq] == false)) return false; if ((VarReq != "") && (VarReq.substr(0, 7) != "Common_") && (VarReq.substr(0, 1) == "!") && (window[CurrentChapter + "_" + CurrentScreen + "_" + VarReq.substr(1)] == true)) return false; - + // Check if the player is gagged, only interactions that starts with '(', '(' or '@' are allowed var nonSpeechActionsStart = [ "(", @@ -119,7 +119,7 @@ function ActorInteractionAvailable(LoveReq, SubReq, VarReq, InText, ForIntro) { "@", ]; if ((nonSpeechActionsStart.indexOf(InText.substr(0, 1)) < 0) && Common_PlayerGagged && !ForIntro) return false; - + // Since nothing blocks, we allow it return true; @@ -306,7 +306,7 @@ function ActorUnblindfold() { // Tries to apply a restrain on the current actor function ActorApplyRestrain(RestrainName) { - + // The rope can be applied twice, the item becomes "TwoRopes" if ((RestrainName == "Rope") && ActorHasInventory("Rope") && !ActorHasInventory("TwoRopes") && PlayerHasInventory("Rope")) RestrainName = "TwoRopes"; if ((RestrainName == "Rope") && ActorHasInventory("Rope") && ActorHasInventory("TwoRopes") && !ActorHasInventory("ThreeRopes") && PlayerHasInventory("Rope") && (PlayerGetSkillLevel("RopeMastery") >= 1)) RestrainName = "ThreeRopes"; @@ -315,20 +315,20 @@ function ActorApplyRestrain(RestrainName) { var RestrainText = GetText(RestrainName); if ((RestrainText.substr(0, 20) != "MISSING TEXT FOR TAG") && (RestrainText != "") && !Common_PlayerRestrained && (PlayerHasInventory(RestrainName) || RestrainName == "TwoRopes" || RestrainName == "ThreeRopes") && !ActorHasInventory(RestrainName)) { - // Third rope + // Third rope if (RestrainName == "ThreeRopes") { PlayerRemoveInventory("Rope", 1); ActorAddInventory("ThreeRopes"); - CurrentTime = CurrentTime + 60000; + CurrentTime = CurrentTime + 60000; } - - // Second rope + + // Second rope if (RestrainName == "TwoRopes") { PlayerRemoveInventory("Rope", 1); ActorAddInventory("TwoRopes"); - CurrentTime = CurrentTime + 60000; + CurrentTime = CurrentTime + 60000; } - + // Regular restraints if ((RestrainName == "Rope") || (RestrainName == "Cuffs") || (RestrainName == "Armbinder")) { if (!ActorIsRestrained()) { @@ -415,7 +415,7 @@ function ActorSpecificHasInventory(QueryActor, QueryInventory) { } // Clear all inventory from an actor (expect the egg, plug, chastitybelt and collar) -function ActorSpecificClearInventory(QueryActor, Recover) { +function ActorSpecificClearInventory(QueryActor, Recover) { for (var A = 0; A < Actor.length; A++) if (Actor[A][ActorName] == QueryActor) { var HadEgg = ActorSpecificHasInventory(QueryActor, "VibratingEgg"); @@ -440,7 +440,7 @@ function ActorSpecificClearInventory(QueryActor, Recover) { // Returns the actor image file to use function ActorSpecificGetImage(QueryActor) { - + // The image file name is constructed from the inventory var ActorImage = QueryActor; if (ActorSpecificHasInventory(QueryActor, "Cuffs")) ActorImage = ActorImage + "_Cuffs"; diff --git a/BondageClub/Screens/Character/Appearance/Appearance.js b/BondageClub/Screens/Character/Appearance/Appearance.js index fe8f3a8a854a51c4b39135e591f080f50deb9a7c..7f73126321291a3a2bf979300208b1b8c5ad3983 100644 --- a/BondageClub/Screens/Character/Appearance/Appearance.js +++ b/BondageClub/Screens/Character/Appearance/Appearance.js @@ -910,7 +910,7 @@ function CharacterAppearanceNextItem(C, Group, Forward, Description) { /** * Find the next color for the item * @param {Character} C - The character whose items are cycled - * @param {string} Group - The name of the group for which we are colour cycling + * @param {string} Group - The name of the group for which we are color cycling * @returns {void} - Nothing */ function CharacterAppearanceNextColor(C, Group) { @@ -954,9 +954,9 @@ function CharacterAppearanceMoveOffset(C, Move) { /** * Sets the color for a specific group - * @param {Character} C - The character whose item group should be coloured - * @param {string} Color - The colour (in the format "#rrggbb") to be applied to the group - * @param {string} Group - The name of the group, whose colour should be changed + * @param {Character} C - The character whose item group should be colored + * @param {string} Color - The color (in the format "#rrggbb") to be applied to the group + * @param {string} Group - The name of the group, whose color should be changed * @returns {void} - Nothing */ function CharacterAppearanceSetColorForGroup(C, Color, Group) { diff --git a/BondageClub/Screens/Character/Appearance/Text_Appearance.csv b/BondageClub/Screens/Character/Appearance/Text_Appearance.csv index 5ea8a717b6da99a44427deb6d434f91e6aa434d2..d3d1a525f2cdeda5289fc51ce11db6a7b24eb079 100644 --- a/BondageClub/Screens/Character/Appearance/Text_Appearance.csv +++ b/BondageClub/Screens/Character/Appearance/Text_Appearance.csv @@ -19,7 +19,7 @@ DialogPermissionMode,Edit item permissions Use,Use this item UseDisabled,Unable to use due to player permissions Reset,Reset character -ColorPick,Select a colour -MultiColorPick,Select colours +ColorPick,Select a color +MultiColorPick,Select colors ColorPickDisabled,Unable to change color due to player permissions,, MultiColorPickDisabled,Unable to change color due to player permissions,, diff --git a/BondageClub/Screens/Character/Appearance/Text_Appearance_CN.txt b/BondageClub/Screens/Character/Appearance/Text_Appearance_CN.txt index 88a675b68892bd0f5a5ed2a573bfa77523c2cec0..077e2ebafb863f99cfc99df1c4cc10cda0f19e24 100644 --- a/BondageClub/Screens/Character/Appearance/Text_Appearance_CN.txt +++ b/BondageClub/Screens/Character/Appearance/Text_Appearance_CN.txt @@ -38,9 +38,9 @@ Use this item ä½¿ç”¨è¯¥ç‰©å“ Unable to use due to player permissions å› è§’è‰²æƒé™è®¾å®š,æ— æ³•ä½¿ç”¨ -Select a colour +Select a color 选择一ç§é¢œè‰² -Select colours +Select colors 选择颜色 Unable to change color due to player permissions å› çŽ©å®¶æƒé™è®¾å®šæ— 法修改颜色 \ No newline at end of file diff --git a/BondageClub/Screens/Character/Player/Dialog_Player.csv b/BondageClub/Screens/Character/Player/Dialog_Player.csv index 2e347d9221251633943f04722c593726d5164b8d..dec8b522dceb361b1fd7c01e945f2d2fe26017a7 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player.csv +++ b/BondageClub/Screens/Character/Player/Dialog_Player.csv @@ -512,8 +512,8 @@ ActionDice,,,SourceCharacter rolls DiceType. The result is: DiceResult.,, ActionCoin,,,SourceCharacter flips a coin. The result is: CoinResult.,, ActionActivateSafewordRevert,,,SourceCharacter used her safeword. Please check for her well-being.,, ActionActivateSafewordRelease,,,SourceCharacter used her safeword and wants to be released. She is guided out of the room for her safety.,, -ActionGrabbedForCell,,,"TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands.",, -ActionGrabbedForGGTS,,,"TargetCharacterName gets grabbed by two nurses wearing futuristic gear and locked in the Asylum for GGTS, following her owner commands.",, +ActionGrabbedForCell,,,"TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands.",, +ActionGrabbedForGGTS,,,"TargetCharacterName gets grabbed by two nurses wearing futuristic gear and locked in the Asylum for GGTS, following her owner's commands.",, ActionGrabbedToServeDrinks,,,TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner.,, ActionGiveEnvelopeToOwner,,,TargetCharacterName gives a sealed envelope to her owner.,, ActionActivitySpankItem,,,SourceCharacter hits DestinationCharacter FocusAssetGroup with a NextAsset.,, diff --git a/BondageClub/Screens/Character/Player/Dialog_Player_CN.txt b/BondageClub/Screens/Character/Player/Dialog_Player_CN.txt index 6f4d4365fcf5e1199a7fd4f3b741ce658d08892a..aa2df3a74ead4ad52f993bbecf09e82435aff59e 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player_CN.txt +++ b/BondageClub/Screens/Character/Player/Dialog_Player_CN.txt @@ -1059,8 +1059,8 @@ SourceCharacter used her safeword. Please check for her well-being. SourceCharacter used her safeword. Please check for her well-being. SourceCharacter used her safeword and wants to be released. She is guided out of the room for her safety. SourceCharacter used her safeword and wants to be released. She is guided out of the room for her safety. -TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands. -TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands. +TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands. +TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands. TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner. TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner. TargetCharacterName gives a sealed envelope to her owner. diff --git a/BondageClub/Screens/Character/Player/Dialog_Player_DE.txt b/BondageClub/Screens/Character/Player/Dialog_Player_DE.txt index f0d27ee543d9a8f9e388d7b7feeae337ce199d81..462791d3ef330c5ff25711dbd094effa8f17fc88 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player_DE.txt +++ b/BondageClub/Screens/Character/Player/Dialog_Player_DE.txt @@ -225,7 +225,7 @@ SourceCharacter rolls a DiceType sided dice. The result is: DiceResult. SourceCharacter rollt einen DiceType-seitigen Würfel. Das Ergebnis ist: DiceResult. SourceCharacter flips a coin. The result is: CoinResult. SourceCharacter wirft eine Münze. Das Ergebnis ist: CoinResult. -TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands. +TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands. TargetCharacterName wird auf Befehl ihrer Besitzerin von zwei Hausmädchen gepackt und in eine Timer-Zelle gesperrt. TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner. TargetCharacterName wird von zwei Hausmädchen gepackt und in die Dienerkammer gebracht, um für ihre Besitzerin Getränke zu servieren. diff --git a/BondageClub/Screens/Character/Player/Dialog_Player_FR.txt b/BondageClub/Screens/Character/Player/Dialog_Player_FR.txt index f021ca9918cfcf67bc5c48082cad2ea5e04e5fde..bbe42c85806c95672913a90cd59e33ed1ece99ad 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player_FR.txt +++ b/BondageClub/Screens/Character/Player/Dialog_Player_FR.txt @@ -179,7 +179,7 @@ SourceCharacter rolls a DiceType sided dice. The result is: DiceResult. SourceCharacter roule un dé à DiceType côtés. Le résultat est: DiceResult. SourceCharacter flips a coin. The result is: CoinResult. SourceCharacter lance une pièce. Le résultat est: CoinResult. -TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands. +TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands. TargetCharacterName est attrapée par deux servantes et enfermée dans une cellule minutée, selon l'ordre de sa patronne. TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner. TargetCharacterName est attrapée par deux servantes et escortée aux quartiers des servantes pour servir des brevages. diff --git a/BondageClub/Screens/Character/Player/Dialog_Player_RU.txt b/BondageClub/Screens/Character/Player/Dialog_Player_RU.txt index 1a6222d9e1af1a782def32020c7cd098abbd2108..3d86903a5dccf5625cae0af6fe1ddfc4bf0cf3ec 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player_RU.txt +++ b/BondageClub/Screens/Character/Player/Dialog_Player_RU.txt @@ -227,7 +227,7 @@ SourceCharacter rolls a DiceType sided dice. The result is: DiceResult. SourceCharacter броÑает коÑти. Ð’ результате получаетÑÑ: DiceResult. SourceCharacter flips a coin. The result is: CoinResult. SourceCharacter переворачивает монету. Результат таков: CoinResult. -TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner commands. +TargetCharacterName gets grabbed by two maids and locked in a timer cell, following her owner's commands. TargetCharacterName ее Ñхватили две горничные и заперли в клетке Ñ Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð¾Ð¼, ÑÐ»ÐµÐ´ÑƒÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼ ее хозÑйки. TargetCharacterName gets grabbed by two maids and escorted to the maid quarters to serve drinks for her owner. TargetCharacterName ее Ñхватили две горничные и Ñопроводили в комнату Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñлуги, чтобы подать напитки Ð´Ð»Ñ ÐµÐµ хозÑйки. diff --git a/BondageClub/Screens/Online/ChatAdmin/Text_ChatAdmin_RU.txt b/BondageClub/Screens/Online/ChatAdmin/Text_ChatAdmin_RU.txt index e5063a5cebead652351c076b1f47d889b813f5fe..27f0e00cc7ed7c106c413892688cb7733292a1a4 100644 --- a/BondageClub/Screens/Online/ChatAdmin/Text_ChatAdmin_RU.txt +++ b/BondageClub/Screens/Online/ChatAdmin/Text_ChatAdmin_RU.txt @@ -31,4 +31,4 @@ This room name is already taken Account error, please try to relog Ошибка учетной запиÑи, пожалуйÑта, попробуйте перерегиÑтрироватÑÑ Invalid chat room data detected -Обнаружены недопуÑтимые данные чата комнаты +Обнаружены недопуÑтимые данные чата комнаты diff --git a/BondageClub/Screens/Online/ChatCreate/Text_ChatCreate_RU.txt b/BondageClub/Screens/Online/ChatCreate/Text_ChatCreate_RU.txt index 38c70b7c48dbad3d256ac4129a05c082c207275b..73fe9f5981de4e4d319a5829a6c90d125bbbe4cf 100644 --- a/BondageClub/Screens/Online/ChatCreate/Text_ChatCreate_RU.txt +++ b/BondageClub/Screens/Online/ChatCreate/Text_ChatCreate_RU.txt @@ -1,5 +1,5 @@ Enter your room information -Введите информацию о комнате +Введите информацию о комнате Room Name (Letters & numbers only) Ð˜Ð¼Ñ ÐšÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (Только буквы и цифры ) A short description or what's going on @@ -11,7 +11,7 @@ Select the background Introduction Ð’Ñтупление Kidnappers League -Лига Похитителей +Лига Похитителей Maid Quarters Помещение Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñлуги Main Hall diff --git a/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom.csv b/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom.csv index 58bcb6b60e0ca90ef4a6e96fd06d5c35c3b3f3f0..30f8bfea74baac65277abc2e59e2579574a5f83f 100644 --- a/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom.csv +++ b/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom.csv @@ -20,8 +20,8 @@ CommandHelp,<strong>Help: KeyWord</strong> CommandNoSuchCommand,command: no such command CommandPrerequisiteFailed,command: prerequisite check failed CommandHelpMissing,HELP IS MISSING -CommandFriendlist,Friendlist: -CommandGhostlist,Ghostlist: -CommandWhitelist,Whitelist: -CommandBlacklist,Blacklist: -GGTSIntro,(Two nurses wearing futuristic gear grabs you and carry you to the Asylum. Another nurse is waiting for you there.) Welcome. Don't be scared. +CommandFriendlist,Friendlist: +CommandGhostlist,Ghostlist: +CommandWhitelist,Whitelist: +CommandBlacklist,Blacklist: +GGTSIntro,(Two nurses wearing futuristic gear grab you and carry you to the Asylum. Another nurse is waiting for you there.) Welcome. Don't be scared. diff --git a/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom_CN.txt b/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom_CN.txt index d33ebc5c9bf3b1398a427488300876415f26132d..040badef7ac047bd7ad510cd4f3ead69da17b674 100644 --- a/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom_CN.txt +++ b/BondageClub/Screens/Online/ChatRoom/Text_ChatRoom_CN.txt @@ -42,11 +42,11 @@ command: prerequisite check failed command:å‘é€å‰æ£€æŸ¥å¤±è´¥ HELP IS MISSING 帮助ä¸è§å•¦!!! -Friendlist: +Friendlist: 好å‹åˆ—表: -Ghostlist: +Ghostlist: 忽视列表: -Whitelist: +Whitelist: 白åå•: -Blacklist: +Blacklist: 黑åå•: diff --git a/BondageClub/Screens/Room/AsylumEntrance/AsylumEntrance.js b/BondageClub/Screens/Room/AsylumEntrance/AsylumEntrance.js index 43f9ada0b1e556c5bf8a55e50717c727dd68170b..50a678bdf6cee17ef1fc94f18b01588132fda4ec 100644 --- a/BondageClub/Screens/Room/AsylumEntrance/AsylumEntrance.js +++ b/BondageClub/Screens/Room/AsylumEntrance/AsylumEntrance.js @@ -144,7 +144,7 @@ function AsylumEntranceWearPatientClothes(C, ExtraEvent) { } InventoryRemove(C, "HairAccessory3"); InventoryRemove(C, "Hat"); - + // Wears the GGTS items based on the player level if (ExtraEvent && LogQuery("Isolated", "Asylum")) { CharacterRelease(C); diff --git a/BondageClub/Scripts/ControllerSupport.js b/BondageClub/Scripts/ControllerSupport.js index 8785a7e90e427cd71e5b3d5ef5363d70ea0cb27d..4debe47d9a853fd31327894589524c640552253e 100644 --- a/BondageClub/Scripts/ControllerSupport.js +++ b/BondageClub/Scripts/ControllerSupport.js @@ -31,7 +31,7 @@ var ControllerDeadZone = 0.01; /** - *removes all buttons from the lists + *removes all buttons from the lists */ function ClearButtons() { ControllerButtonsX = []; @@ -432,7 +432,7 @@ function ControllerButton(buttons) { //uncomment to test it with keyboard /** - * handles keyboard inputs in controller mode + * handles keyboard inputs in controller mode * @returns {void} Nothing */ function ControllerSupportKeyDown() { diff --git a/C000_Intro/ChapterSelect/Script.js b/C000_Intro/ChapterSelect/Script.js index 11fdc4bbbec8ad1f92f5e4ea9cbf65e00dd9936a..fde0f9b795c341334a95bbde17465d9305be9050 100644 --- a/C000_Intro/ChapterSelect/Script.js +++ b/C000_Intro/ChapterSelect/Script.js @@ -4,7 +4,7 @@ var C000_Intro_ChapterSelect_CreditPosition = 0; var C000_Intro_ChapterSelect_Credits = []; var C000_Intro_ChapterSelect_CreditActors = ["Player", "Amanda", "Sarah", "Sidney", "Jennifer", "Julia", "Yuki"]; var C000_Intro_ChapterSelect_ThankYouCount = 999999; -var C000_Intro_ChapterSelect_ThankYouList = ["Alvin", "Bryce", "Christian", "Designated", "Dick", "Escurse", "EugeneTooms", "James", "Jenni", "Jyeoh", "Karel", "Kitten", "Laioken", "Michal", "Mindtie", +var C000_Intro_ChapterSelect_ThankYouList = ["Alvin", "Bryce", "Christian", "Designated", "Dick", "Escurse", "EugeneTooms", "James", "Jenni", "Jyeoh", "Karel", "Kitten", "Laioken", "Michal", "Mindtie", "MunchyCat", "Nick", "Overlord", "Rashiash", "Ryner", "Setsu95", "Shadow", "Shaun", "Simeon", "Sky", "Terry", "Victor", "William", "Winterisbest", "Xepherio"]; var C000_Intro_ChapterSelect_ThankYouCurrent = -1; var C000_Intro_ChapterSelect_CreditTextColor = "black"; @@ -18,7 +18,7 @@ function C000_Intro_ChapterSelect_Load() { StopTimer(7.6666667 * 60 * 60 * 1000); } -// Draw the credits +// Draw the credits function C000_Intro_ChapterSelect_DrawCredits() { // For each credits in the list @@ -58,7 +58,7 @@ function C000_Intro_ChapterSelect_DrawCredits() { // Draw the thank you image function C000_Intro_ChapterSelect_DrawThankYou() { - + // If the image must swap if (C000_Intro_ChapterSelect_ThankYouCount >= 200) { var NewThankYou = C000_Intro_ChapterSelect_ThankYouCurrent; @@ -87,7 +87,7 @@ function C000_Intro_ChapterSelect_Run() { } // Chapter Select Click (Clicking on the image will swap it) -function C000_Intro_ChapterSelect_Click() { +function C000_Intro_ChapterSelect_Click() { ClickInteraction(C000_Intro_ChapterSelect_CurrentStage); if (!C000_Intro_ChapterSelect_CreditMode && (MouseX >= 600) && (MouseX <= 1200) && (MouseY >= 0) && (MouseY <= 599)) C000_Intro_ChapterSelect_ThankYouCount = 999999; StopTimer(7.6666667 * 60 * 60 * 1000); diff --git a/C002_FirstClass/Amanda/Script.js b/C002_FirstClass/Amanda/Script.js index 15eac75ed1a157804dcd0e45aec0412a74c90c29..45d77ba1041b75915df47b6ec3504cd0533f51e1 100644 --- a/C002_FirstClass/Amanda/Script.js +++ b/C002_FirstClass/Amanda/Script.js @@ -11,7 +11,7 @@ var C002_FirstClass_Amanda_KissSarahDone = false; // Chapter 2 - Amanda Load function C002_FirstClass_Amanda_Load() { - // Load the scene parameters + // Load the scene parameters ActorLoad("Amanda", "Classroom"); LoadInteractions(); if (C002_FirstClass_Classroom_MildredSubdueSuccess) C002_FirstClass_Amanda_BowRemarkReady = false; @@ -22,7 +22,7 @@ function C002_FirstClass_Amanda_Load() { if ((parseInt(C002_FirstClass_Amanda_CurrentStage) < 100) && (C002_FirstClass_Classroom_MildredSubdueSuccess)) C002_FirstClass_Amanda_SubdueRemarkReady = true; C002_FirstClass_Amanda_CurrentStage = C002_FirstClass_Classroom_CalcStage(); } - + // The remark cannot be done if the player is gagged, also calculate the bondage hug if (Common_PlayerGagged) C002_FirstClass_Amanda_SubdueRemarkReady = false; C002_FirstClass_Amanda_BondageHugReady = ((C002_FirstClass_Amanda_CurrentStage > 100) && (Common_PlayerNotRestrained) && (Common_PlayerNotGagged) && (C002_FirstClass_Classroom_MildredSubdueSuccess) && (ActorSpecificHasInventory("Amanda", "Rope")) && (ActorSpecificHasInventory("Sarah", "Rope"))); @@ -31,23 +31,23 @@ function C002_FirstClass_Amanda_Load() { // Chapter 2 - Amanda Run function C002_FirstClass_Amanda_Run() { - + // Regular interactions BuildInteraction(C002_FirstClass_Amanda_CurrentStage); - + // Bondage hug if ((C002_FirstClass_Amanda_CurrentStage == 160) || (C002_FirstClass_Amanda_CurrentStage == 170)) { OverridenIntroImage = ""; if ((ActorSpecificHasInventory("Amanda", "BallGag")) && (ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_BallGag_Sarah_Rope_BallGag.jpg"; if ((ActorSpecificHasInventory("Amanda", "BallGag")) && (!ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_BallGag_Sarah_Rope.jpg"; if ((!ActorSpecificHasInventory("Amanda", "BallGag")) && (ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_Sarah_Rope_BallGag.jpg"; - if ((!ActorSpecificHasInventory("Amanda", "BallGag")) && (!ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_Sarah_Rope.jpg"; + if ((!ActorSpecificHasInventory("Amanda", "BallGag")) && (!ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_Sarah_Rope.jpg"; } - + } // Chapter 2 - Amanda Click -function C002_FirstClass_Amanda_Click() { +function C002_FirstClass_Amanda_Click() { // Keep the stage on entry var EntryStage = C002_FirstClass_Amanda_CurrentStage; @@ -55,7 +55,7 @@ function C002_FirstClass_Amanda_Click() { // Regular interactions ClickInteraction(C002_FirstClass_Amanda_CurrentStage); var ClickedInv = GetClickedInventory(); - + // If the player wants to gag Amanda if ((C002_FirstClass_Amanda_CurrentStage >= 100) && (ClickedInv == "BallGag") && (ActorHasInventory("BallGag") == false) && (Common_PlayerNotRestrained)) { if ((ActorGetValue(ActorSubmission) >= 2) || (ActorHasInventory("Rope")) || (ActorHasInventory("Cuffs"))) { @@ -111,7 +111,7 @@ function C002_FirstClass_Amanda_Click() { if (C002_FirstClass_Amanda_CropDone == false) { C002_FirstClass_Amanda_CropDone = true; ActorChangeAttitude(-2, 0); } CurrentTime = CurrentTime + 60000; } - + // If the stage changed, we remove the Overridden image, also check for the bondage hug if (EntryStage != C002_FirstClass_Amanda_CurrentStage) OverridenIntroImage = ""; C002_FirstClass_Amanda_BondageHugReady = ((C002_FirstClass_Amanda_CurrentStage > 100) && (Common_PlayerNotRestrained) && (Common_PlayerNotGagged) && (C002_FirstClass_Classroom_MildredSubdueSuccess) && (ActorSpecificHasInventory("Amanda", "Rope")) && (ActorSpecificHasInventory("Sarah", "Rope"))); @@ -153,9 +153,9 @@ function C002_FirstClass_Amanda_AgreeHelp() { C002_FirstClass_Classroom_AmandaAgree = true; } -// Chapter 2 - Amanda Bondage Hug +// Chapter 2 - Amanda Bondage Hug function C002_FirstClass_Amanda_BondageHug() { - if (C002_FirstClass_Amanda_BondageHugDone == false) { + if (C002_FirstClass_Amanda_BondageHugDone == false) { C002_FirstClass_Amanda_BondageHugDone = true; ActorChangeAttitude(1, 0); } diff --git a/C002_FirstClass/Sarah/Script.js b/C002_FirstClass/Sarah/Script.js index 5bab75a8022c7248e142d6d733cdb1a5f4b39c33..0a662066336909cc3d5fb97d895e6c83d7a4855f 100644 --- a/C002_FirstClass/Sarah/Script.js +++ b/C002_FirstClass/Sarah/Script.js @@ -13,7 +13,7 @@ function C002_FirstClass_Sarah_CalcStage() { // Keep the backup stage to resume conversation var EntryStage = C002_FirstClass_Sarah_CurrentStage; if (C002_FirstClass_Sarah_CurrentStage < 100) C002_FirstClass_Sarah_BackupStage = C002_FirstClass_Sarah_CurrentStage; - + // Calculate the correct stage (100 comes back to the previous conversation) if (C002_FirstClass_Sarah_CurrentStage <= 150) { C002_FirstClass_Sarah_CurrentStage = C002_FirstClass_Classroom_CalcStage(); @@ -22,7 +22,7 @@ function C002_FirstClass_Sarah_CalcStage() { // If the stage changed, we scrap the Overridden image if (EntryStage != C002_FirstClass_Sarah_CurrentStage) OverridenIntroImage = ""; - + // The bondage hug is only available if Amanda and Sarah are in ropes C002_FirstClass_Sarah_BondageHugReady = ((C002_FirstClass_Sarah_CurrentStage > 100) && (C002_FirstClass_Sarah_CurrentStage < 200) && (Common_PlayerNotRestrained) && (Common_PlayerNotGagged) && (C002_FirstClass_Classroom_MildredSubdueSuccess) && (ActorSpecificHasInventory("Amanda", "Rope")) && (ActorSpecificHasInventory("Sarah", "Rope"))); @@ -34,13 +34,13 @@ function C002_FirstClass_Sarah_CalcStage() { if ((!ActorSpecificHasInventory("Amanda", "BallGag")) && (ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_Sarah_Rope_BallGag.jpg"; if ((!ActorSpecificHasInventory("Amanda", "BallGag")) && (!ActorSpecificHasInventory("Sarah", "BallGag"))) OverridenIntroImage = "Hug_Amanda_Rope_Sarah_Rope.jpg"; } - + } // Chapter 2 - Sarah Load function C002_FirstClass_Sarah_Load() { - // Load the scene parameters + // Load the scene parameters ActorLoad("Sarah", "Classroom"); LoadInteractions(); @@ -64,7 +64,7 @@ function C002_FirstClass_Sarah_Run() { } // Chapter 2 - Sarah Click -function C002_FirstClass_Sarah_Click() { +function C002_FirstClass_Sarah_Click() { // Regular interactions ClickInteraction(C002_FirstClass_Sarah_CurrentStage); @@ -115,7 +115,7 @@ function C002_FirstClass_Sarah_Click() { // Recalculate the stage C002_FirstClass_Sarah_CalcStage(); - + } // Chapter 2 - Sarah Ungag @@ -141,7 +141,7 @@ function C002_FirstClass_Sarah_AnnoyMildred() { ActorAddInventory("BallGag"); } -// Chapter 2 - Sarah Bondage Hug +// Chapter 2 - Sarah Bondage Hug function C002_FirstClass_Sarah_BondageHug() { C002_FirstClass_Sarah_CalcStage(); if (C002_FirstClass_Sarah_BondageHugDone == false) { C002_FirstClass_Sarah_BondageHugDone = true; ActorChangeAttitude(1, 0); } diff --git a/C002_FirstClass/SarahIntro/Script.js b/C002_FirstClass/SarahIntro/Script.js index 9f42b2db88514c1d1e8f1fdbd02c5ce3709acf05..ed30f4a4aa22753b31a7dc5681f6471bd9690b80 100644 --- a/C002_FirstClass/SarahIntro/Script.js +++ b/C002_FirstClass/SarahIntro/Script.js @@ -7,14 +7,14 @@ function C002_FirstClass_SarahIntro_Load() { // Skip the intro if Mildred was subdued, else we stop the time and show the intro if (C002_FirstClass_Classroom_MildredSubdueSuccess) SetScene(CurrentChapter, "Classroom"); - else + else StopTimer(8.5 * 60 * 60 * 1000); - + } // Chapter 2 - SarahIntro Run function C002_FirstClass_SarahIntro_Run() { - + // Paints the background if (ActorSpecificHasInventory("Amanda", "BallGag")) DrawImage(CurrentChapter + "/" + CurrentScreen + "/Background_AmandaGag.jpg", 0, 0); @@ -27,7 +27,7 @@ function C002_FirstClass_SarahIntro_Run() { if (TextPhase >= 2) DrawText(GetText("Intro3"), 600, 300, "White"); if (TextPhase >= 3) DrawText(GetText("Intro4"), 600, 400, "White"); if (TextPhase >= 4) DrawText(GetText("Intro5"), 600, 500, "White"); - + } // Chapter 2 - SarahIntro Click diff --git a/C012_AfterClass/RockShow/Script.js b/C012_AfterClass/RockShow/Script.js index 1eb8139d3ee3b1707bcb2f34d8155a6777600d09..7f308238c75570ed9329a905eeab6a4b56844154 100644 --- a/C012_AfterClass/RockShow/Script.js +++ b/C012_AfterClass/RockShow/Script.js @@ -9,7 +9,7 @@ var C012_AfterClass_RockShow_SearchDone = false; // Chapter 12 After Class - Rock Show Load function C012_AfterClass_RockShow_Load() { - + // Loads the scene to search in the wardrobe LoadInteractions(); ActorLoad("Sidney", ""); @@ -31,16 +31,16 @@ function C012_AfterClass_RockShow_Load() { function C012_AfterClass_RockShow_Run() { BuildInteraction(C012_AfterClass_RockShow_CurrentStage); if (parseInt(C012_AfterClass_RockShow_CurrentStage) >= 200) { - DrawActor(CurrentActor, 680, 0, 1); + DrawActor(CurrentActor, 680, 0, 1); DrawActor("Player", 500, 0, 1); } else { DrawActor("Player", 500, 0, 1); - DrawActor(CurrentActor, 680, 0, 1); + DrawActor(CurrentActor, 680, 0, 1); } } // Chapter 12 After Class - Rock Show Click -function C012_AfterClass_RockShow_Click() { +function C012_AfterClass_RockShow_Click() { // Regular interactions ClickInteraction(C012_AfterClass_RockShow_CurrentStage); @@ -61,7 +61,7 @@ function C012_AfterClass_RockShow_Wait(WaitTime) { // Chapter 12 After Class - When the player listens until the next song function C012_AfterClass_RockShow_NextSong() { - + // The more songs, the more Sidney will like the player C012_AfterClass_RockShow_SongCount++; CurrentTime = CurrentTime + 290000; @@ -110,7 +110,7 @@ function C012_AfterClass_RockShow_MasturbatePlayer() { } } -// Chapter 12 After Class - When the player masturbates Sidney +// Chapter 12 After Class - When the player masturbates Sidney function C012_AfterClass_RockShow_MasturbateSidney(Factor) { C012_AfterClass_RockShow_MasturbateCount = C012_AfterClass_RockShow_MasturbateCount + Factor; if (C012_AfterClass_RockShow_MasturbateCount < 0) C012_AfterClass_RockShow_MasturbateCount = 0; diff --git a/C101_KinbakuClub/ClubRoom3/Script.js b/C101_KinbakuClub/ClubRoom3/Script.js index e26df9ad188e9e02a30dc9afa7520bf6384d6386..eac96a4efb2b9935a619538e31950c0e3e0d9293 100644 --- a/C101_KinbakuClub/ClubRoom3/Script.js +++ b/C101_KinbakuClub/ClubRoom3/Script.js @@ -7,18 +7,18 @@ function C101_KinbakuClub_ClubRoom3_Load() { // Chapter 101 - Club Room 3 Run function C101_KinbakuClub_ClubRoom3_Run() { - // Draw the background image + // Draw the background image DrawImage(CurrentChapter + "/" + CurrentScreen + "/ClubRoom3Arrows.jpg", 0, 0); - + // Draw Chloe //if (C101_KinbakuClub_Chloe_CurrentStage == 0) { DrawImage(CurrentChapter + "/" + CurrentScreen + "/ChloeBoard.png", 0, 0); //} else DrawActor("Chloe", 220, 170, 0.3333); - - + + // Draw CardGamers DrawImage(CurrentChapter + "/" + CurrentScreen + "/CardGamers1.jpg", 570, 130); - + } // Chapter 101 - Club Room 3 Click diff --git a/C101_KinbakuClub/ClubRoom4/Script.js b/C101_KinbakuClub/ClubRoom4/Script.js index 8439f2242ad1b132f85f076b7b150663d5ef951c..9baded77983e74dc3234a64a0bd2c9c1cce111d8 100644 --- a/C101_KinbakuClub/ClubRoom4/Script.js +++ b/C101_KinbakuClub/ClubRoom4/Script.js @@ -7,7 +7,7 @@ function C101_KinbakuClub_ClubRoom4_Load() { // Chapter 101 - Club Room 4 Run function C101_KinbakuClub_ClubRoom4_Run() { - // Draw the background image + // Draw the background image DrawImage(CurrentChapter + "/" + CurrentScreen + "/ClubRoom4.jpg", 0, 0); // Draw movement arrows @@ -15,7 +15,7 @@ function C101_KinbakuClub_ClubRoom4_Run() { DrawImage(CurrentChapter + "/" + CurrentScreen + "/ClubRoom4ArrowLeft.jpg", 20, 525); DrawImage(CurrentChapter + "/" + CurrentScreen + "/ClubRoom4ArrowRight.jpg", 1090, 525); } - + // Draw the player when she is a slave if (PlayerHasLockedInventory("Manacles")) { DrawImage(CurrentChapter + "/" + CurrentScreen + "/SlavesPlayer.png", 280, 185); @@ -133,7 +133,7 @@ function C101_KinbakuClub_ClubRoom4_Click() { C101_KinbakuClub_Slaves_CurrentStage = 120; } } - + // When Chloe is a slave and the user clicks on her // When a twin is a slave and the user clicks on her diff --git a/C101_KinbakuClub/Discipline/Script.js b/C101_KinbakuClub/Discipline/Script.js index 733d7d4d5b61399cf98ab58b47bd7da6fde4ad7b..0180c03c2bc3529268b9a21d5b95e7c4930f584d 100644 --- a/C101_KinbakuClub/Discipline/Script.js +++ b/C101_KinbakuClub/Discipline/Script.js @@ -1,6 +1,6 @@ // Chapter 101 - Kinbaku Club Load function C101_KinbakuClub_Discipline_Load() { - + // Time is always 17:25:00 in the outro, unlock if needed StopTimer(17.25 * 60 * 60 * 1000, CurrentChapter, "Discipline"); } @@ -8,7 +8,7 @@ function C101_KinbakuClub_Discipline_Load() { // Chapter 7 - Kinbaku Club Run function C101_KinbakuClub_Discipline_Run() { - // Paints the background + // Paints the background DrawRect(0, 0, 800, 600, "black"); if (PlayerHasLockedInventory("Manacles")) DrawImage(CurrentChapter + "/" + CurrentScreen + "/BagBlackSlave.jpg", 800, 0); else { @@ -44,7 +44,7 @@ function C101_KinbakuClub_Discipline_Click() { // Jump to the next animation TextPhase++; - + // Jump to lunch on phase 3 //if (TextPhase >= 4) SaveMenu("C102_KinbakuDiscipline", "Intro"); diff --git a/C999_Common/Armbinder/Text_EN.csv b/C999_Common/Armbinder/Text_EN.csv index be22d81209b62c5ec4ecdefde98327a721f0006a..95c95b62bae88c3a7292ba677e13487747f31360 100644 --- a/C999_Common/Armbinder/Text_EN.csv +++ b/C999_Common/Armbinder/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about tying yourself up but realize|that it might not be the best time for that. +BadTiming,You fantasize about tying yourself up but realize|that it might not be the best time for that. diff --git a/C999_Common/BallGag/Text_EN.csv b/C999_Common/BallGag/Text_EN.csv index 63bb551e2bb336249d4024e3fe45fda09bc2a0f2..93239c973e320361b741c619564b133973fb288b 100644 --- a/C999_Common/BallGag/Text_EN.csv +++ b/C999_Common/BallGag/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. diff --git a/C999_Common/Blindfold/Text_EN.csv b/C999_Common/Blindfold/Text_EN.csv index 543aca5b1eb648120df794547feec1696e2c1c0a..fe678b1a5e9385860bf6f2571574840e3a55ff64 100644 --- a/C999_Common/Blindfold/Text_EN.csv +++ b/C999_Common/Blindfold/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about being blinded but realize that|it might not be the best time to wear it. +BadTiming,You fantasize about being blinded but realize that|it might not be the best time to wear it. diff --git a/C999_Common/ChastityBelt/Text_EN.csv b/C999_Common/ChastityBelt/Text_EN.csv index d05f61ab6986511c06a28b9044095dfb186f280d..030cb99951696b801913d4082ac9bc90bc51111f 100644 --- a/C999_Common/ChastityBelt/Text_EN.csv +++ b/C999_Common/ChastityBelt/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content ConfirmLock,Are you sure you want to lock the|belt on yourself? Click again to do so. -BadTiming,You fantasizes about being locked in a chastity|belt but it might not be the best time for that. +BadTiming,You fantasize about being locked in a chastity|belt but it might not be the best time for that. diff --git a/C999_Common/ClothGag/Text_EN.csv b/C999_Common/ClothGag/Text_EN.csv index 63bb551e2bb336249d4024e3fe45fda09bc2a0f2..93239c973e320361b741c619564b133973fb288b 100644 --- a/C999_Common/ClothGag/Text_EN.csv +++ b/C999_Common/ClothGag/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. diff --git a/C999_Common/Collar/Text_EN.csv b/C999_Common/Collar/Text_EN.csv index 72767b5c2cfd79c4c57acd0607a4fc2e464b149d..a9ab25635d713734dfb3b89052a0f6a7c98a2f57 100644 --- a/C999_Common/Collar/Text_EN.csv +++ b/C999_Common/Collar/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being collared but realize that|it might not be the best time to collar yourself. +BadTiming,You fantasize about being collared but realize that|it might not be the best time to collar yourself. LockedCollar,Then collar is fastened with a padlock.|You will need the key to remove it. diff --git a/C999_Common/Cuffs/Text_EN.csv b/C999_Common/Cuffs/Text_EN.csv index ce5707d457c394c70bcd8d97b90498610e6fdbe4..de3d99d317f3b38bf57c648aba0ed45bae6a4ef1 100644 --- a/C999_Common/Cuffs/Text_EN.csv +++ b/C999_Common/Cuffs/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being cuffed but realize that|it might not be the best time to cuff yourself. +BadTiming,You fantasize about being cuffed but realize that|it might not be the best time to cuff yourself. NoShim,Without a hair clip or similar to make|a shim it is no use. You remain handcuffed. diff --git a/C999_Common/DoubleOpenGag/Text_EN.csv b/C999_Common/DoubleOpenGag/Text_EN.csv index 63bb551e2bb336249d4024e3fe45fda09bc2a0f2..93239c973e320361b741c619564b133973fb288b 100644 --- a/C999_Common/DoubleOpenGag/Text_EN.csv +++ b/C999_Common/DoubleOpenGag/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. diff --git a/C999_Common/Manacles/Intro_EN.csv b/C999_Common/Manacles/Intro_EN.csv index 696f9261eb9f8ac2800970097e5f7ce3232af5c3..e75cd0e337cd6193c8fc65cf5c0f8b5d32cb3cff 100644 --- a/C999_Common/Manacles/Intro_EN.csv +++ b/C999_Common/Manacles/Intro_EN.csv @@ -1,3 +1,3 @@ Stage,LoveReq,SubReq,VarReq,IntroText,Image -0,0,0,,"This set of steel manacles for restraining|someones neck, wrists and ankles.",Manacles.jpg +0,0,0,,"This set of steel manacles for restraining|someone's neck, wrists and ankles.",Manacles.jpg 10,0,0,,"Without a key, there's no way to escape|the manacles cold hard snare.",Manacles.jpg diff --git a/C999_Common/Manacles/Text_EN.csv b/C999_Common/Manacles/Text_EN.csv index 32abc317371704c6b6950b1927f02e3dc65a6505..de35c0a63d861fcd8ad792637ed062af5ce002de 100644 --- a/C999_Common/Manacles/Text_EN.csv +++ b/C999_Common/Manacles/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about shackling yourself up but realize|that it might not be the best time for that. +BadTiming,You fantasize about shackling yourself up but realize|that it might not be the best time for that. diff --git a/C999_Common/PantieGag/Stage_CN.csv b/C999_Common/PantieGag/Stage_CN.csv index 33f3bdf8bb5a2b5f1fbb2c83c03f83c4ad38a7e3..03e1d45c02f91639fa562ffe1af323a1ffddc979 100644 --- a/C999_Common/PantieGag/Stage_CN.csv +++ b/C999_Common/PantieGag/Stage_CN.csv @@ -1,8 +1,8 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function -0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, +0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You ball up the panties and cram them|into your mouth, packing it full.",10,0,0,SelfGag() -10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() +10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() 10,0,0,,(Chew on the panties.)ADD_MINUTES:1,You chew on the wad of panties.|They slowly become soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savouting the taste|and wondering how clean they were.",10,0,0, +10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savoring the taste|and wondering how clean they were.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,You spit the soaked wad of panties out|of your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,"You try to spit the panties out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/PantieGag/Stage_EN.csv b/C999_Common/PantieGag/Stage_EN.csv index 33f3bdf8bb5a2b5f1fbb2c83c03f83c4ad38a7e3..03e1d45c02f91639fa562ffe1af323a1ffddc979 100644 --- a/C999_Common/PantieGag/Stage_EN.csv +++ b/C999_Common/PantieGag/Stage_EN.csv @@ -1,8 +1,8 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function -0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, +0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You ball up the panties and cram them|into your mouth, packing it full.",10,0,0,SelfGag() -10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() +10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() 10,0,0,,(Chew on the panties.)ADD_MINUTES:1,You chew on the wad of panties.|They slowly become soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savouting the taste|and wondering how clean they were.",10,0,0, +10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savoring the taste|and wondering how clean they were.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,You spit the soaked wad of panties out|of your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,"You try to spit the panties out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/PantieGag/Stage_FR.csv b/C999_Common/PantieGag/Stage_FR.csv index 33f3bdf8bb5a2b5f1fbb2c83c03f83c4ad38a7e3..03e1d45c02f91639fa562ffe1af323a1ffddc979 100644 --- a/C999_Common/PantieGag/Stage_FR.csv +++ b/C999_Common/PantieGag/Stage_FR.csv @@ -1,8 +1,8 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function -0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, +0,0,0,,(Inspect the panties.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",0,0,0, 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You ball up the panties and cram them|into your mouth, packing it full.",10,0,0,SelfGag() -10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The lable size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() +10,0,0,HasLoosePantieGag,(Inspect the loose gag.)ADD_MINUTES:1,"The label size is XXXL. Far too big for you to wear,|but large enough to fill the biggest of mouths.",10,0,0,ShowImage() 10,0,0,,(Chew on the panties.)ADD_MINUTES:1,You chew on the wad of panties.|They slowly become soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savouting the taste|and wondering how clean they were.",10,0,0, +10,0,0,,(Suck on the panties.)ADD_MINUTES:1,"You suck on the pantie wad, savoring the taste|and wondering how clean they were.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,You spit the soaked wad of panties out|of your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the panties.)ADD_MINUTES:1,"You try to spit the panties out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/PantieGag/Text_CN.csv b/C999_Common/PantieGag/Text_CN.csv index b6f155c5dbd844b795f864983e81d80edc0fe75c..a5e94f6e5a7f8365503cc89e6df68c87157ded4a 100644 --- a/C999_Common/PantieGag/Text_CN.csv +++ b/C999_Common/PantieGag/Text_CN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can stuff panties into your|mouth with another gag block it. diff --git a/C999_Common/PantieGag/Text_EN.csv b/C999_Common/PantieGag/Text_EN.csv index b6f155c5dbd844b795f864983e81d80edc0fe75c..a5e94f6e5a7f8365503cc89e6df68c87157ded4a 100644 --- a/C999_Common/PantieGag/Text_EN.csv +++ b/C999_Common/PantieGag/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can stuff panties into your|mouth with another gag block it. diff --git a/C999_Common/PantieGag/Text_FR.csv b/C999_Common/PantieGag/Text_FR.csv index b6f155c5dbd844b795f864983e81d80edc0fe75c..a5e94f6e5a7f8365503cc89e6df68c87157ded4a 100644 --- a/C999_Common/PantieGag/Text_FR.csv +++ b/C999_Common/PantieGag/Text_FR.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can stuff panties into your|mouth with another gag block it. diff --git a/C999_Common/Races/Race.js b/C999_Common/Races/Race.js index 9c229b0b900c9f34f24f7d01cd411a503f7c82e0..9b75e2fd8e915420ad30ec79fc78f29afc003bc7 100644 --- a/C999_Common/Races/Race.js +++ b/C999_Common/Races/Race.js @@ -31,31 +31,31 @@ var RaceSpeed = 0; // Generates a full race sequence function RaceGenerateMoves(StartTime, DifficultyText) { - + // Set the difficulty ratio var DifficultyRatio = 1; if (DifficultyText == "Easy") DifficultyRatio = 1.5; if (DifficultyText == "Hard") DifficultyRatio = 0.6667; - + // Full the race sequence var CurTimer = StartTime + 3000; var Seq = 0; RaceMoves = []; while (Seq < MaxRaceSequence) { - + // Create a new race move to do at a random position RaceMoves[RaceMoves.length] = [Math.floor(Math.random() * 8), CurTimer]; CurTimer = CurTimer + Math.floor((Math.random() * 600 + 300) * DifficultyRatio); Seq++; - + } } // Load the race animations and full sequence function RaceLoad(Racer, RacerImageSet, AllowedMinutes, Difficulty, EndGoal, EndGoalText, IconLeft, IconRight, BackgroundImage, EndFunction, SkillBonus) { - - // Creates a brand new race + + // Creates a brand new race LeaveIcon = ""; RaceTimer = 0; RaceEndTimer = RaceStartTime + (AllowedMinutes * 60 * 1000); @@ -63,7 +63,7 @@ function RaceLoad(Racer, RacerImageSet, AllowedMinutes, Difficulty, EndGoal, End RaceSpeed = 0; RaceProgress = 0; RaceActorImageFrame = 0; - RaceEnded = false; + RaceEnded = false; RacePerfect = true; RaceLastMoveType = -1; RaceLastMoveTypeTimer = -1; @@ -81,13 +81,13 @@ function RaceLoad(Racer, RacerImageSet, AllowedMinutes, Difficulty, EndGoal, End RaceEndFunction = EndFunction; RaceBackgroundImage = BackgroundImage; RaceGenerateMoves(RaceStartTime, Difficulty); - + // Keep a backup of the current chapter and screen RaceBackupChapter = CurrentChapter; RaceBackupScreen = CurrentScreen; CurrentChapter = "C999_Common"; CurrentScreen = "Race"; - + } // Draw the race icons @@ -96,22 +96,22 @@ function RaceDrawIcons() { // Scroll the race icons with time var Seq = 0; while (Seq < RaceMoves.length) { - + // Draw the move from 3 seconds before to 1 second after - if ((RaceMoves[Seq][RaceMoveTime] <= RaceTimer + 3000) && (RaceMoves[Seq][RaceMoveTime] >= RaceTimer - 1000)) { + if ((RaceMoves[Seq][RaceMoveTime] <= RaceTimer + 3000) && (RaceMoves[Seq][RaceMoveTime] >= RaceTimer - 1000)) { if (RaceMoves[Seq][RaceMoveType] <= 3) DrawImage(RaceIconLeft, 3 + (RaceMoves[Seq][RaceMoveType] * 75), 410 + Math.floor((RaceTimer - RaceMoves[Seq][RaceMoveTime]) / 6)); - else + else DrawImage(RaceIconRight, 603 + (RaceMoves[Seq][RaceMoveType] * 75), 410 + Math.floor((RaceTimer - RaceMoves[Seq][RaceMoveTime]) / 6)); } - + // Remove the move from the sequence if it's past due if (RaceMoves[Seq][RaceMoveTime] < RaceTimer - 1000) { RaceMoves.splice(Seq, 1); RaceMiss(); - } + } else Seq = Seq + 1; - + // Beyond 3 seconds forward, we exit if (Seq < RaceMoves.length) if (RaceMoves[Seq][RaceMoveTime] > RaceTimer + 3000) @@ -127,10 +127,10 @@ function RaceDrawBar() { // Draw 4 bars on each sides var XOffset = 0; for(BarNum = 0; BarNum <= 7; BarNum++) { - + // Draw the bars on both sides of the screen if (BarNum == 4) XOffset = 600; - + // The color changes when it's clicked or pressed DrawRect(XOffset + 3 + (BarNum * 75), 437, 70, 27, "White"); if ((RaceLastMoveType == BarNum) && (RaceLastMoveTypeTimer >= RaceTimer)) @@ -223,12 +223,12 @@ function RaceDoMove(MoveType) { // Make sure the hit is valid if ((MoveType >= 0) && (RaceMoves.length > 0)) { - + // For each moves in the list var Hit = false; var Seq = 0; while (Seq < RaceMoves.length) { - + // If the move connects (good timing and good type) if ((RaceMoves[Seq][RaceMoveTime] <= RaceTimer + 300) && (RaceMoves[Seq][RaceMoveTime] >= RaceTimer - 300) && (MoveType == RaceMoves[Seq][RaceMoveType])) { RaceMoves.splice(Seq, 1); @@ -236,10 +236,10 @@ function RaceDoMove(MoveType) { Seq = RaceMoves.length; } else Seq++; - + // Beyond 0.5 seconds forward, we give up if (Seq < RaceMoves.length) - if (RaceMoves[Seq][RaceMoveTime] > RaceTimer + 300) + if (RaceMoves[Seq][RaceMoveTime] > RaceTimer + 300) Seq = RaceMoves.length; } @@ -259,16 +259,16 @@ function C999_Common_Race_Run() { // If the actor must move forward and progress if ((RaceSpeed > 0) && !RaceEnded) { - + // The progress is (Speed) pixels every second RaceProgress = RaceProgress + (RunInterval / 1000) * RaceSpeed; - + // If the goal is achieved if (RaceProgress >= RaceGoal) { RaceProgress = RaceGoal; RaceEnd(true); } - + } // Paints the background @@ -277,7 +277,7 @@ function C999_Common_Race_Run() { // Increments the race timer and draw the actor if (!RaceEnded) RaceTimer = RaceTimer + RunInterval; RaceDrawActor(); - + // If the race is over and not completed, we flag a defeat if ((RaceTimer >= RaceEndTimer) && !RaceEnded) RaceEnd(false); @@ -288,7 +288,7 @@ function C999_Common_Race_Run() { RaceDrawBar(); RaceDrawIcons(); RaceDrawStats(); - } + } else { DrawText(RaceGoalText, 600, 25, "white"); DrawText(GetCSVText(RaceText, "Difficulty") + " " + GetCSVText(RaceText, RaceDifficultyText), 500, 65, "white"); @@ -297,7 +297,7 @@ function C999_Common_Race_Run() { } // Draw the end text - if (RaceEnded) { + if (RaceEnded) { if ((RaceProgress >= RaceGoal) && RacePerfect) DrawText(GetCSVText(RaceText, "Perfect"), 600, 25, "white"); if ((RaceProgress >= RaceGoal) && !RacePerfect) DrawText(GetCSVText(RaceText, "Victory"), 600, 25, "white"); if (RaceProgress < RaceGoal) DrawText(GetCSVText(RaceText, "Defeat"), 600, 25, "white"); @@ -308,17 +308,17 @@ function C999_Common_Race_Run() { // When a key is pressed while racing (for both keyboard and mobile) function C999_Common_Race_KeyDown() { - + // If the race has started, we check the key pressed and send it as a race move if ((RaceTimer > RaceStartTime) && !RaceEnded) { - + var MoveType = -1; for(T = 0; T <= 7; T++) - if ((KeyPress == RaceMovesTypeKeyUpper[T]) || (KeyPress == RaceMovesTypeKeyLower[T])) + if ((KeyPress == RaceMovesTypeKeyUpper[T]) || (KeyPress == RaceMovesTypeKeyLower[T])) MoveType = T; RaceDoMove(MoveType); } - + } // When a click is done while racing (only works on mobile) diff --git a/C999_Common/Rope/Text_EN.csv b/C999_Common/Rope/Text_EN.csv index e5fe6c42a6a455cf737b40ca2cea1374a49ba841..b244472d98003332b79e4a3a784ebcf009e3b02a 100644 --- a/C999_Common/Rope/Text_EN.csv +++ b/C999_Common/Rope/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content ConfirmSelfBondage,You know the ropes and can tie yourself up but you|might not be able to get out. Do you want to do it? -BadTiming,You fantasizes about tying yourself up but realize|that it might not be the best time for that. +BadTiming,You fantasize about tying yourself up but realize|that it might not be the best time for that. diff --git a/C999_Common/SockGag/Stage_CN.csv b/C999_Common/SockGag/Stage_CN.csv index 28e18d416cdfc111fde6e03bd290e6047eddaa8b..63c27aefd10893ed8649a452c3a13caebfbe5aa4 100644 --- a/C999_Common/SockGag/Stage_CN.csv +++ b/C999_Common/SockGag/Stage_CN.csv @@ -3,6 +3,6 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You stuff the sock into your mouth,|pushing it all in and packing it full.",10,0,0,SelfGag() 10,0,0,HasLooseSockGag,(Inspect the loose gag.)ADD_MINUTES:1,"An odd sock is not much use for wearing,|but it would pack full even the biggest mouth.",10,0,0,ShowImage() 10,0,0,,(Chew on the sock.)ADD_MINUTES:1,You chew on the sock wad.|It slowly becomes soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savouting the taste|and wondering how clean it was.",10,0,0, +10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savoring the taste|and wondering how clean it was.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,You spit the sodden sock out of|your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,"You try to spit the sock out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/SockGag/Stage_EN.csv b/C999_Common/SockGag/Stage_EN.csv index 28e18d416cdfc111fde6e03bd290e6047eddaa8b..63c27aefd10893ed8649a452c3a13caebfbe5aa4 100644 --- a/C999_Common/SockGag/Stage_EN.csv +++ b/C999_Common/SockGag/Stage_EN.csv @@ -3,6 +3,6 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You stuff the sock into your mouth,|pushing it all in and packing it full.",10,0,0,SelfGag() 10,0,0,HasLooseSockGag,(Inspect the loose gag.)ADD_MINUTES:1,"An odd sock is not much use for wearing,|but it would pack full even the biggest mouth.",10,0,0,ShowImage() 10,0,0,,(Chew on the sock.)ADD_MINUTES:1,You chew on the sock wad.|It slowly becomes soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savouting the taste|and wondering how clean it was.",10,0,0, +10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savoring the taste|and wondering how clean it was.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,You spit the sodden sock out of|your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,"You try to spit the sock out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/SockGag/Stage_FR.csv b/C999_Common/SockGag/Stage_FR.csv index 28e18d416cdfc111fde6e03bd290e6047eddaa8b..63c27aefd10893ed8649a452c3a13caebfbe5aa4 100644 --- a/C999_Common/SockGag/Stage_FR.csv +++ b/C999_Common/SockGag/Stage_FR.csv @@ -3,6 +3,6 @@ Stage,LoveReq,SubReq,VarReq,Interaction,Result,NextStage,LoveMod,SubMod,Function 0,0,0,Common_PlayerNotRestrained,(Gag yourself.)ADD_MINUTES:1,"You stuff the sock into your mouth,|pushing it all in and packing it full.",10,0,0,SelfGag() 10,0,0,HasLooseSockGag,(Inspect the loose gag.)ADD_MINUTES:1,"An odd sock is not much use for wearing,|but it would pack full even the biggest mouth.",10,0,0,ShowImage() 10,0,0,,(Chew on the sock.)ADD_MINUTES:1,You chew on the sock wad.|It slowly becomes soaked by your own drool.,10,0,0, -10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savouting the taste|and wondering how clean it was.",10,0,0, +10,0,0,,(Suck on the sock.)ADD_MINUTES:1,"You suck on the sock, savoring the taste|and wondering how clean it was.",10,0,0, 10,0,0,!HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,You spit the sodden sock out of|your mouth and can now talk again.,0,0,0,SelfUngag() 10,0,0,HasOtherGag,(Spit out the sock.)ADD_MINUTES:1,"You try to spit the sock out, but the other gag has|them trapped. You'll need to remove that first.",10,0,0, diff --git a/C999_Common/SockGag/Text_CN.csv b/C999_Common/SockGag/Text_CN.csv index 64aade2b17faaa29e7720ee2f5d2995ae7a0e331..6f2f2d48ed68cc2087ab63a5660a18b219421337 100644 --- a/C999_Common/SockGag/Text_CN.csv +++ b/C999_Common/SockGag/Text_CN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can put a sock into your|mouth with another gag block it. diff --git a/C999_Common/SockGag/Text_EN.csv b/C999_Common/SockGag/Text_EN.csv index 64aade2b17faaa29e7720ee2f5d2995ae7a0e331..6f2f2d48ed68cc2087ab63a5660a18b219421337 100644 --- a/C999_Common/SockGag/Text_EN.csv +++ b/C999_Common/SockGag/Text_EN.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can put a sock into your|mouth with another gag block it. diff --git a/C999_Common/SockGag/Text_FR.csv b/C999_Common/SockGag/Text_FR.csv index 64aade2b17faaa29e7720ee2f5d2995ae7a0e331..6f2f2d48ed68cc2087ab63a5660a18b219421337 100644 --- a/C999_Common/SockGag/Text_FR.csv +++ b/C999_Common/SockGag/Text_FR.csv @@ -1,3 +1,3 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. OtherGag,You can put a sock into your|mouth with another gag block it. diff --git a/C999_Common/TapeGag/Text_EN.csv b/C999_Common/TapeGag/Text_EN.csv index 63bb551e2bb336249d4024e3fe45fda09bc2a0f2..93239c973e320361b741c619564b133973fb288b 100644 --- a/C999_Common/TapeGag/Text_EN.csv +++ b/C999_Common/TapeGag/Text_EN.csv @@ -1,2 +1,2 @@ Tag,Content -BadTiming,You fantasizes about being gagged but realize that|it might not be the best time to gag yourself. +BadTiming,You fantasize about being gagged but realize that|it might not be the best time to gag yourself. diff --git a/Cheat.js b/Cheat.js index a9bb9a325f4f939cdc8af9d206b584042304c96f..33e0b0559efd4cc9c7c795f31f8801f0b57e2652 100644 --- a/Cheat.js +++ b/Cheat.js @@ -2,20 +2,20 @@ var CheatAllow = false; // Receives cheat keys function CheatKey() { - + // No cheats until the player has a name if (Common_PlayerName != "") { - + // In a fight or a race, the user can press * to win automatically if (!FightEnded && (FightTimer > 0)) { if (KeyPress == 42) FightEnd(true); return; } if (!DoubleFightEnded && (DoubleFightTimer > 0)) { if (KeyPress == 42) DoubleFightEnd(true); return; } if (!RaceEnded && (RaceTimer > 0)) { if (KeyPress == 42) { RaceProgress = RaceGoal; RaceEnd(true); } return; } if (!QuizEnded && (QuizTimer > 0) && (QuizBetweenQuestionTimer == 0) && (QuizAnswerText == "")) { if (KeyPress == 42) { QuizAnswerText = QuizQuestion[QuizProgressLeft + QuizProgressRight][QuizQuestionAnswer1]; QuizAnswerBy = "Left"; QuizProgressLeft++; QuizBetweenQuestionTimer = QuizTimer + QuizOtherQuestionTime; } return; } - + // If we must manipulate time using + and - if (KeyPress == 43) CheatTime(900000); if (KeyPress == 45) CheatTime(-900000); - + // Specific cheats by functions if (CurrentActor != "") CheatActor(); if ((CurrentChapter == "C012_AfterClass") && (CurrentScreen == "Dorm")) CheatDorm(); @@ -88,7 +88,7 @@ function CheatDorm() { if ((KeyPress == 42) && !GameLogQuery(CurrentChapter, "", "EventGrounded")) { PlayerReleaseBondage(); if (PlayerHasLockedInventory("ChastityBelt")) { PlayerUnlockInventory("ChastityBelt"); PlayerAddInventory("ChastityBelt", 1); } - if (PlayerHasLockedInventory("VibratingEgg")) { PlayerUnlockInventory("VibratingEgg"); PlayerAddInventory("VibratingEgg", 1); } + if (PlayerHasLockedInventory("VibratingEgg")) { PlayerUnlockInventory("VibratingEgg"); PlayerAddInventory("VibratingEgg", 1); } } } \ No newline at end of file diff --git a/Common.js b/Common.js index d498c088e29b73bf5cd2f502552f11f167863ef2..9db471c7c981f176570069b0cc5c69ae607147e3 100644 --- a/Common.js +++ b/Common.js @@ -102,7 +102,7 @@ function DetectMobile() { // Parse a CSV file function ParseCSV(str) { - + var arr = []; var quote = false; // true means we're inside a quoted field @@ -115,7 +115,7 @@ function ParseCSV(str) { // If the current character is a quotation mark, and we're inside a // quoted field, and the next character is also a quotation mark, // add a quotation mark to the current column and skip the next character - if (cc == '"' && quote && nc == '"') { arr[row][col] += cc; ++c; continue; } + if (cc == '"' && quote && nc == '"') { arr[row][col] += cc; ++c; continue; } // If it's just one quotation mark, begin/end quoted field if (cc == '"') { quote = !quote; continue; } @@ -140,12 +140,12 @@ function ReadCSV(Array, ChapterOrPath, Screen, Type, Language) { var Path = (Screen && Type) ? ChapterOrPath + "/" + Screen + "/" + Type + (Language ? "_" : "") + (Language || "") + ".csv" : ChapterOrPath; - + if (CSVCache[Path]) { window[Array] = CSVCache[Path]; return; } - + // Opens the file, parse it and returns the result in an array Get(Path, function() { if (this.status == 200) { @@ -195,7 +195,7 @@ function GetWorkingLanguageForChapter(Chapter) { } // Load the interactions from a scene and keep it in common variable -function LoadInteractions() { +function LoadInteractions() { ReadCSV("CurrentIntro", CurrentChapter, CurrentScreen, "Intro", GetWorkingLanguage()); ReadCSV("CurrentStage", CurrentChapter, CurrentScreen, "Stage", GetWorkingLanguage()); LoadText(); @@ -216,7 +216,7 @@ function DynamicFunction(FunctionName) { // Set the current scene (chapter and screen) function SetScene(Chapter, Screen) { - + // Keep the chapter and screen CurrentStage = null; CurrentIntro = null; @@ -235,15 +235,15 @@ function SetScene(Chapter, Screen) { // Load the screen code DynamicFunction(CurrentChapter + "_" + CurrentScreen + "_Load()"); - + } // Validates if any interaction was clicked function ClickInteraction(CurrentStagePosition) { - + // Make sure the current stage is loaded if (CurrentStage != null) { - + // If a regular option was clicked, we process it var Pos = 0; for (var L = 0; L < CurrentStage.length; L++) @@ -281,13 +281,13 @@ function GetText(Tag) { // Make sure the text CSV file is loaded if (CurrentText != null) { - + // Cycle the text to find a matching tag and returns the text content Tag = Tag.trim().toUpperCase(); for (var T = 0; T < CurrentText.length; T++) if (CurrentText[T][TextTag].trim().toUpperCase() == Tag) return CurrentText[T][TextContent].trim(); - + // Returns an error message return "MISSING TEXT FOR TAG: " + Tag.trim(); @@ -300,13 +300,13 @@ function GetCSVText(CSVText, Tag) { // Make sure the text CSV file is loaded if (CSVText != null) { - + // Cycle the text to find a matching tag and returns the text content Tag = Tag.trim().toUpperCase(); for (var T = 0; T < CSVText.length; T++) if (CSVText[T][TextTag].trim().toUpperCase() == Tag) return CSVText[T][TextContent].trim(); - + // Returns an error message return "MISSING TEXT FOR TAG: " + Tag.trim(); @@ -316,15 +316,15 @@ function GetCSVText(CSVText, Tag) { // Triggers the leave or wait button if needed function LeaveButtonClick() { - + // If the wait option was clicked, we skip 2 minutes if (LeaveIcon == "Wait") - if ((MouseX >= 1125) && (MouseX <= 1200) && (MouseY >= 600) && (MouseY <= 675)) + if ((MouseX >= 1125) && (MouseX <= 1200) && (MouseY >= 600) && (MouseY <= 675)) CurrentTime = CurrentTime + 120000; // If the leave option was clicked, we return to the previous screen if ((LeaveIcon == "Leave") && (LeaveScreen != "")) - if ((MouseX >= 1125) && (MouseX <= 1200) && (MouseY >= 600) && (MouseY <= 675)) + if ((MouseX >= 1125) && (MouseX <= 1200) && (MouseY >= 600) && (MouseY <= 675)) SetScene(LeaveChapter, LeaveScreen); } diff --git a/Drawing.js b/Drawing.js index 94ed65f48b04c08f4147b0d9046499d725c29ef4..12b3f3425c55f14cb47bbbcd8453a59b7354c87f 100644 --- a/Drawing.js +++ b/Drawing.js @@ -1,7 +1,7 @@ // The main game canvas where everything will be drawn var MainCanvas; -// A bank of all the chached images +// A bank of all the cached images var CacheImage = {}; // Icons bank and paths @@ -44,7 +44,7 @@ function DrawGetImage(Source) { // returns the final image return CacheImage[Source]; } - + // Draw a zoomed image from a source to the canvas function DrawImageZoom(Source, SX, SY, SWidth, SHeight, X, Y, Width, Height) { MainCanvas.drawImage(DrawGetImage(Source), SX, SY, Math.round(SWidth), Math.round(SHeight), X, Y, Width, Height); @@ -96,7 +96,7 @@ function DrawText(Text, X, Y, Color) { else { MainCanvas.fillText(Text.substring(0, Text.indexOf("|")), X, Y - 19); MainCanvas.fillText(Text.substring(Text.indexOf("|") + 1, 1000), X, Y + 19); - } + } } @@ -106,27 +106,27 @@ function DrawButton(Left, Top, Width, Height, Label) { // Draw the button rectangle MainCanvas.beginPath(); MainCanvas.rect(Left, Top, Width, Height); - MainCanvas.fillStyle = 'white'; + MainCanvas.fillStyle = 'white'; MainCanvas.fillRect(Left, Top, Width, Height); - MainCanvas.fill(); + MainCanvas.fill(); MainCanvas.lineWidth = '2'; MainCanvas.strokeStyle = 'black'; MainCanvas.stroke(); MainCanvas.closePath(); - + // Draw the text DrawText(Label, Left + Width / 2, Top + Height / 2, "black"); - + } // Draw a basic rectangle function DrawRect(Left, Top, Width, Height, Color) { MainCanvas.beginPath(); MainCanvas.rect(Left, Top, Width, Height); - MainCanvas.fillStyle = Color; + MainCanvas.fillStyle = Color; MainCanvas.fillRect(Left, Top, Width, Height); - MainCanvas.fill(); - MainCanvas.closePath(); + MainCanvas.fill(); + MainCanvas.closePath(); } // Draw a basic circle @@ -135,19 +135,19 @@ function DrawCircle(CenterX, CenterY, Radius, LineWidth, LineColor) { MainCanvas.arc(CenterX, CenterY, Radius, 0, 2 * Math.PI, false); MainCanvas.lineWidth = LineWidth; MainCanvas.strokeStyle = LineColor; - MainCanvas.stroke(); + MainCanvas.stroke(); } // Draw --- if zero, +value in green if positive, -value in red if negative -function DrawPosNegValue(Value, X, Y) { +function DrawPosNegValue(Value, X, Y) { if (Value == 0) DrawText("---", X, Y, "black"); if (Value > 0) DrawText("+" + Value.toString(), X, Y, "#00BB00"); - if (Value < 0) DrawText(Value.toString(), X, Y, "#BB0000"); + if (Value < 0) DrawText(Value.toString(), X, Y, "#BB0000"); } // Draw the current actor stats toward the player function DrawActorStats(Left, Top) { - + // Draw the actor name and icon DrawText(ActorGetDisplayName(), Left - 200, Top + 17, "black"); if (CurrentActor == Common_PlayerLover) DrawImage("Icons/Lover.png", Left - 110, Top); @@ -168,12 +168,12 @@ function DrawActorStats(Left, Top) { function DrawIntro(Intro, CurrentStagePosition, LoveLevel, SubLevel) { // Draw the top box and stats - DrawRect(0, 0, 599, 150, "White"); + DrawRect(0, 0, 599, 150, "White"); if (CurrentActor != "") { DrawRect(30, 60, 539, 1, "Black"); DrawActorStats(300, 15); } - + // Find the correct intro text var ShowText = ""; if (OverridenIntroText != "") @@ -187,7 +187,7 @@ function DrawIntro(Intro, CurrentStagePosition, LoveLevel, SubLevel) { // Draw the intro if (CurrentActor != "") DrawText(ShowText, 300, 105, "black"); else DrawText(ShowText, 300, 75, "black"); - + } // Draw a selectable option on the screen @@ -195,32 +195,32 @@ function DrawOption(OptionText, Left, Top) { // Draw the rectangle and text if (OptionText.substr(0, 1) == "@") OptionText = OptionText.substr(1); - DrawRect(Left, Top, 299, 89, "White"); + DrawRect(Left, Top, 299, 89, "White"); if ((MouseX >= Left) && (MouseX <= Left + 299) && (MouseY >= Top) && (MouseY <= Top + 89) && !IsMobile) DrawText(OptionText, Left + 150, Top + 45, "#00BB00"); - else DrawText(OptionText, Left + 150, Top + 45, "#BB0000"); - + else DrawText(OptionText, Left + 150, Top + 45, "#BB0000"); + } -// Draw all the possible interactions +// Draw all the possible interactions function DrawInteraction(Stage, CurrentStagePosition, LoveLevel, SubLevel) { // Find all the correct interactions for the current stage var Pos = 0; for (var S = 0; S < Stage.length; S++) - if (Stage[S][StageNumber] == CurrentStagePosition) + if (Stage[S][StageNumber] == CurrentStagePosition) if (ActorInteractionAvailable(Stage[S][StageLoveReq], Stage[S][StageSubReq], Stage[S][StageVarReq], Stage[S][StageInteractionText], false)) { - + // Draw the box and interaction DrawOption(Stage[S][StageInteractionText], (Pos % 2) * 300, 151 + (Math.round((Pos - 1) / 2) * 90)); - Pos = Pos + 1; - + Pos = Pos + 1; + } - + } -// Find the current image file +// Find the current image file function FindImage(Intro, CurrentStagePosition) { - + // The image file is a column in the intro CSV file var ImageName = ""; if (OverridenIntroImage != "") @@ -277,10 +277,10 @@ function DrawInventory() { DrawImage("Icons/" + GetPlayerIconImage() + "_Active.png", 0, 601); else DrawImage("Icons/" + GetPlayerIconImage() + "_Inactive.png", 0, 601); - + // Draw an arrow over the player head if there's a skill level up if (PlayerSkillShowLevelUp > 0) DrawImage("Icons/SkillLevelUp.png", 0, 601); - + // Scroll in the full inventory to draw the icons and quantity, draw a padlock over the item if it's locked var Pos = 1; for (var I = 0; I < PlayerInventory.length; I++) { @@ -291,7 +291,7 @@ function DrawInventory() { // 11 positions for the items if (Pos <= 11) { var ImgState = "Inactive"; - if (((MouseX >= 1 + Pos * 75) && (MouseX <= 74 + Pos * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) ImgState = "Active"; + if (((MouseX >= 1 + Pos * 75) && (MouseX <= 74 + Pos * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) ImgState = "Active"; DrawImage("Icons/" + PlayerInventory[I][PlayerInventoryName] + "_" + ImgState + ".png", 1 + Pos * 75, 601); DrawText(PlayerInventory[I][PlayerInventoryQuantity].toString(), Pos * 75 + 64, 661, "#000000"); if (PlayerHasLockedInventory(PlayerInventory[I][PlayerInventoryName])) @@ -304,13 +304,13 @@ function DrawInventory() { if (((MouseX >= 1 + Pos * 75) && (MouseX <= 74 + Pos * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) ImgState = "Active"; DrawImage("Icons/SecondInventoryTab_" + ImgState + ".png", 1 + Pos * 75, 601); } - + }; - + // Second inventory tab - if ((Pos >= 12) && (PlayerInventoryTab == 1)) { + if ((Pos >= 12) && (PlayerInventoryTab == 1)) { var ImgState = "Inactive"; - if (((MouseX >= 1 + (Pos - 11) * 75) && (MouseX <= 74 + (Pos - 11) * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) ImgState = "Active"; + if (((MouseX >= 1 + (Pos - 11) * 75) && (MouseX <= 74 + (Pos - 11) * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) ImgState = "Active"; DrawImage("Icons/" + PlayerInventory[I][PlayerInventoryName] + "_" + ImgState + ".png", 1 + (Pos - 11) * 75, 601); DrawText(PlayerInventory[I][PlayerInventoryQuantity].toString(), (Pos - 11) * 75 + 64, 661, "#000000"); if (PlayerHasLockedInventory(PlayerInventory[I][PlayerInventoryName])) @@ -319,11 +319,11 @@ function DrawInventory() { // Jumps to the next position Pos = Pos + 1; - + } // Scroll in the locked inventory also to find items that were not loaded - for (var I = 0; I < PlayerLockedInventory.length; I++) + for (var I = 0; I < PlayerLockedInventory.length; I++) if (!PlayerHasInventory(PlayerLockedInventory[I])) { // First inventory tab @@ -336,7 +336,7 @@ function DrawInventory() { DrawImage("Icons/Lock_Active.png", Pos * 75, 600); } else { - DrawImage("Icons/" + PlayerLockedInventory[I] + "_Inactive.png", 1 + Pos * 75, 601); + DrawImage("Icons/" + PlayerLockedInventory[I] + "_Inactive.png", 1 + Pos * 75, 601); DrawImage("Icons/Lock_Inactive.png", Pos * 75, 600); } } @@ -349,15 +349,15 @@ function DrawInventory() { } } - + // Second inventory tab - if ((Pos >= 12) && (PlayerInventoryTab == 1)) { + if ((Pos >= 12) && (PlayerInventoryTab == 1)) { if (((MouseX >= 1 + (Pos - 11) * 75) && (MouseX <= 74 + (Pos - 11) * 75) && (MouseY >= 601) && (MouseY <= 674)) || (IsMobile)) { DrawImage("Icons/" + PlayerLockedInventory[I] + "_Active.png", 1 + (Pos - 11) * 75, 601); DrawImage("Icons/Lock_Active.png", (Pos - 11) * 75, 600); } else { - DrawImage("Icons/" + PlayerLockedInventory[I] + "_Inactive.png", 1 + (Pos - 11) * 75, 601); + DrawImage("Icons/" + PlayerLockedInventory[I] + "_Inactive.png", 1 + (Pos - 11) * 75, 601); DrawImage("Icons/Lock_Inactive.png", (Pos - 11) * 75, 600); } }; @@ -366,7 +366,7 @@ function DrawInventory() { Pos = Pos + 1; }; - + // On the second tab, we put an arrow to go back to the first tab if ((Pos >= 12) && (PlayerInventoryTab == 1)) { var ImgState = "Inactive"; @@ -400,16 +400,16 @@ function BuildBottomBar() { // Returns the name of the image file to use to draw the player function DrawGetPlayerImageName(IncludePose) { - + // Get the first part of the image var ImageCloth = "Clothed"; if (Common_PlayerUnderwear) ImageCloth = "Underwear"; if (Common_PlayerNaked) ImageCloth = "Naked"; if ((Common_PlayerUnderwear || Common_PlayerNaked) && PlayerHasLockedInventory("ChastityBelt")) ImageCloth = "ChastityBelt"; if (Common_PlayerCostume != "") ImageCloth = Common_PlayerCostume - + // Second part is the type of bondage - var ImageBondage = "_NoBondage"; + var ImageBondage = "_NoBondage"; if (PlayerHasLockedInventory("Cuffs") == true) ImageBondage = "_Cuffs"; if (PlayerHasLockedInventory("Rope") == true) ImageBondage = "_Rope"; if (PlayerHasLockedInventory("Armbinder") == true) ImageBondage = "_Armbinder"; @@ -420,7 +420,7 @@ function DrawGetPlayerImageName(IncludePose) { if (PlayerHasLockedInventory("Collar")) ImageCollar = "_Collar"; else ImageCollar = "_NoCollar"; } - + // Fourth part is the gag var ImageGag = "_NoGag"; if (PlayerHasLockedInventory("BallGag") == true) ImageGag = "_BallGag"; @@ -429,7 +429,7 @@ function DrawGetPlayerImageName(IncludePose) { if (PlayerHasLockedInventory("DoubleOpenGag") == true) ImageGag = "_DoubleOpenGag"; // Fifth part is the blindfold - var ImageBlindfold = ""; + var ImageBlindfold = ""; if (PlayerHasLockedInventory("Blindfold") == true) ImageBlindfold = "_Blindfold"; // Sixth part is the pose @@ -449,7 +449,7 @@ function DrawPlayerImage(X, Y) { } else { if ((X == 0) && (Y == 0)) DrawImage("C999_Common/Player/" + DrawGetPlayerImageName(false) + ".jpg", 600, 0); else DrawImageZoom("C999_Common/Player/" + DrawGetPlayerImageName(false) + ".jpg", X, Y, 600, 600, 600, 0, 1200, 1200); - } + } } // Draw the transparent player image (600x900) with a zoom if required @@ -459,10 +459,10 @@ function DrawTransparentPlayerImage(X, Y, Zoom) { // Draw the transparent actor over the current background function DrawActor(ActorToDraw, X, Y, Zoom) { - + // Validate first if we must draw the transparent player image if (ActorToDraw == "Player") { - DrawTransparentPlayerImage(X, Y, Zoom); + DrawTransparentPlayerImage(X, Y, Zoom); } else { // First, we retrieve the current clothes @@ -471,7 +471,7 @@ function DrawActor(ActorToDraw, X, Y, Zoom) { if (((ImageCloth == "Underwear") || (ImageCloth == "Naked")) && ActorSpecificHasInventory(ActorToDraw, "ChastityBelt")) ImageCloth = "ChastityBelt"; // Second part is the type of bondage - var ImageBondage = "_NoBondage"; + var ImageBondage = "_NoBondage"; if (ActorSpecificHasInventory(ActorToDraw, "Cuffs")) ImageBondage = "_Cuffs"; if (ActorSpecificHasInventory(ActorToDraw, "Rope")) ImageBondage = "_Rope"; if (ActorSpecificHasInventory(ActorToDraw, "TwoRopes")) ImageBondage = "_TwoRopes"; @@ -491,7 +491,7 @@ function DrawActor(ActorToDraw, X, Y, Zoom) { if (ActorSpecificHasInventory(ActorToDraw, "ClothGag")) ImageGag = "_ClothGag"; // Fifth part is the blindfold - var ImageBlindfold = ""; + var ImageBlindfold = ""; if (ActorSpecificHasInventory(ActorToDraw, "Blindfold")) ImageBlindfold = "_Blindfold"; // Fourth part is the pose @@ -500,7 +500,7 @@ function DrawActor(ActorToDraw, X, Y, Zoom) { // Draw the full image from all parts DrawImageZoom("Actors/" + ActorToDraw + "/" + ImageCloth + ImageBondage + ImageCollar + ImageGag + ImageBlindfold + ImagePose + ".png", 0, 0, 600, 900, X, Y, 600 * Zoom, 900 * Zoom); - + } } diff --git a/Event.js b/Event.js index 2f0b6e0763c6511e327062126a32c1d429bfe38c..ea01a519c6886e31bacb410a93f2ae97f6e7f995 100644 --- a/Event.js +++ b/Event.js @@ -42,11 +42,11 @@ function EventRandomPlayerPunishment() { // Draw a punishment type at random var PunishmentType = EventPunishmentList[Math.floor(Math.random() * EventPunishmentList.length)]; - + // If the event is valid for that actor var PunishmentStage = GetText("Punishment" + PunishmentType); if (IsNumeric(PunishmentStage)) { - + // Check if the event can be done if (PunishmentType == "Grounded") Result = parseInt(PunishmentStage); if ((PunishmentType == "Spanked") && !GameLogQuery(CurrentChapter, "", "EventSpanked")) Result = parseInt(PunishmentStage); @@ -59,7 +59,7 @@ function EventRandomPlayerPunishment() { } // Returns the punishment type which will become the dialog number - return Result; + return Result; } @@ -69,12 +69,12 @@ function EventRandomPlayerSubmissive() { // Until we find a proper event var Result = 0; while (Result == 0) { - + // Draw an event type at random, make sure it doesn't repeat var EventType = EventLastRandomType; while (EventType == EventLastRandomType) EventType = EventList[Math.floor(Math.random() * EventList.length)]; - + // If the event is valid for that actor var EventStage = GetText("Event" + EventType); if (IsNumeric(EventStage)) { @@ -109,7 +109,7 @@ function EventRandomPlayerSubmissive() { // Returns the event type which will become the dialog number EventLastRandomType = EventType; return Result; - + } // Log the end of an event, if it's the first time, it can change the actor attitude @@ -122,38 +122,38 @@ function EventLogEnd() { EventActivityCurrent = ""; } - + // When an activity event is registered function EventDoActivity(EventActivityType, EventLoveFactor, EventCurrentStage, EventEndStage, EventBonusStage) { - + // If it's a new activity if (EventActivityCurrent != EventActivityType) { - + // Reset the count and sets the pose ActorSetPose(EventActivityType); EventActivityCurrent = EventActivityType; EventActivityCount = 0; EventActivityLove = 0; - + // The number of times the activity will be done depends on the love or hate if ((EventActivityType == "Tickle") || (EventActivityType == "Masturbate")) EventActivityMaxCount = 5 + Math.floor(ActorGetValue(ActorLove) / 10); else EventActivityMaxCount = 5 - Math.floor(ActorGetValue(ActorLove) / 10); if (EventActivityMaxCount < 4) EventActivityMaxCount = 4; if (EventActivityMaxCount > 8) EventActivityMaxCount = 8; - + } - + // Increments the activity EventActivityCount++; EventActivityLove = EventActivityLove + EventLoveFactor; - + // If a bonus event can be achieved if ((EventActivityCount >= 3) && (EventBonusStage > 0)) { - + // 20% bonus chance (+20% if masturbated with an egg) var BonusChance = Math.floor(Math.random() * 100); if ((EventActivityType == "Masturbate") && PlayerHasLockedInventory("VibratingEgg")) BonusChance = BonusChance + 20; - + // If we have the bonus, we log and jump to that stage if (BonusChance >= 80) { EventLogEnd(); @@ -162,10 +162,10 @@ function EventDoActivity(EventActivityType, EventLoveFactor, EventCurrentStage, } } - + // When the activity is over if (EventActivityCount >= EventActivityMaxCount) { - + // Log the activity and ends it EventLogEnd() if (EventActivityLove > 0) OverridenIntroText = GetText("ActivityEndGood"); @@ -173,10 +173,10 @@ function EventDoActivity(EventActivityType, EventLoveFactor, EventCurrentStage, if (EventActivityLove < 0) OverridenIntroText = GetText("ActivityEndBad"); ActorSetPose(""); return EventEndStage; - + } - + // FALSE means the activity isn't over return EventCurrentStage; - + } \ No newline at end of file diff --git a/GameLog.js b/GameLog.js index ca29dda67ea47ffb4b759181bbced2e7defeed94..3a869f5d044097acbaa5856b04e71ab498d0ea81 100644 --- a/GameLog.js +++ b/GameLog.js @@ -14,7 +14,7 @@ function GameLogSpecificAdd(ChapterToLog, ActorToLog, EventToLog) { for (var L = 0; L < GameLog.length; L++) if ((ChapterToLog == GameLog[L][GameLogChapter]) && (ActorToLog == GameLog[L][GameLogActor]) && (EventToLog == GameLog[L][GameLogEvent])) return; - + // Log the event GameLog[GameLog.length] = [ChapterToLog, ActorToLog, EventToLog, 0]; diff --git a/Inventory.js b/Inventory.js index d62d9a2ede7cb4d86bb0ec60bd1655d699579f62..3271dfd1572d04cb2fdff92d66f5d20a4efbe6ac 100644 --- a/Inventory.js +++ b/Inventory.js @@ -8,7 +8,7 @@ var PlayerInventoryTab = 0; // Set up the player clothes or costume function PlayerClothes(NewCloth) { if ((NewCloth != "Clothed") && (NewCloth != "Underwear") && (NewCloth != "Naked")) Common_PlayerCostume = NewCloth; - else Common_PlayerCostume = ""; + else Common_PlayerCostume = ""; Common_PlayerCloth = NewCloth; Common_PlayerUnderwear = (NewCloth == "Underwear"); Common_PlayerNaked = (NewCloth == "Naked"); @@ -42,10 +42,10 @@ function PlayerLockInventory(NewInventory) { // Check if the item is already locked before adding it for (var I = 0; I < PlayerLockedInventory.length; I++) if (PlayerLockedInventory[I] == NewInventory) - return; + return; PlayerLockedInventory.push(NewInventory); LoadRestrainStatus(); - + // If there's rope/armbinder and a costume, we strip the player if (((NewInventory == "Rope") || (NewInventory == "Armbinder")) && (Common_PlayerCostume != "") && (Common_PlayerCostume != "BlackDress") && (Common_PlayerCostume != "WhiteLingerie") && (Common_PlayerCostume != "RedBikini")) PlayerClothes("Underwear"); @@ -79,13 +79,13 @@ function PlayerUnlockAllInventory(UnlockedInventory) { // Returns true if the player has the locked inventory function PlayerHasLockedInventory(QueryInventory) { - + // Returns true if we find the locked inventory item for (var I = 0; I < PlayerLockedInventory.length; I++) if (QueryInventory == PlayerLockedInventory[I]) return true; return false; - + } // Add a new item to the inventory if it's not already there @@ -98,16 +98,16 @@ function PlayerAddInventory(NewInventory, NewQuantity) { if (PlayerInventory[I][PlayerInventoryQuantity] > 99) PlayerInventory[I][PlayerInventoryQuantity] = 99; return; } - + // If not, we create the new inventory data if (NewQuantity > 99) NewQuantity = 99; PlayerInventory[PlayerInventory.length] = [NewInventory, NewQuantity]; - + } // Remove an item from the player inventory function PlayerRemoveInventory(RemInventory, RemQuantity) { - + // Search for current inventory and remove the item for (var I = 0; I < PlayerInventory.length; I++) if (RemInventory == PlayerInventory[I][PlayerInventoryName]) @@ -136,13 +136,13 @@ function PlayerRemoveHalfInventory() { // Returns true if the player has the queried inventory function PlayerHasInventory(QueryInventory) { - + // Returns true if we find the inventory item for (var I = 0; I < PlayerInventory.length; I++) if (QueryInventory == PlayerInventory[I][PlayerInventoryName]) return true; return false; - + } // Pick a random restrain and applies it on the player @@ -179,7 +179,7 @@ function PlayerRandomGag() { // Applies it on the player if (G != "") { PlayerRemoveInventory(G, 1); PlayerLockInventory(G); } - + } // Restrains the player randomly from her own inventory @@ -225,7 +225,7 @@ function PlayerInventoryTotalQuantity() { // Returns the name of the inventory item that was clicked in the bottom menu function GetClickedInventory() { - + // Returns the item name based on the position of the mouse var Inv = ""; if ((MouseX <= 975) && (MouseY >= 601) && (MouseY <= 674)) { @@ -233,7 +233,7 @@ function GetClickedInventory() { // Check if the player icon was clicked if ((MouseX >= 1) && (MouseX <= 74)) Inv = "Player"; - + // Check in the regular inventory var I; if (Inv == "") @@ -242,10 +242,10 @@ function GetClickedInventory() { if (MouseX < 900) Inv = PlayerInventory[I][PlayerInventoryName]; else PlayerInventoryTab = 1; } - + // Check in the locked inventory if (Inv == "") - for (var L = 0; L < PlayerLockedInventory.length; L++) + for (var L = 0; L < PlayerLockedInventory.length; L++) if (!PlayerHasInventory(PlayerLockedInventory[L])) { if ((MouseX >= 1 + (I + 1 - (PlayerInventoryTab * 11)) * 75) && (MouseX <= 74 + (I + 1 - (PlayerInventoryTab * 11)) * 75)) { if (MouseX < 900) Inv = "Locked_" + PlayerLockedInventory[L]; diff --git a/SaveState.js b/SaveState.js index 79c0702780095de2b61879723e646f6ecc768b8c..e85f77a20e0158715de8e0c3bf5df2a993b9d2f1 100644 --- a/SaveState.js +++ b/SaveState.js @@ -14,7 +14,7 @@ function SaveMenu(NextChapter, NextScreen) { function SaveStateGetSummary(SlotNumber) { // Fetch the data - var SN = SlotNumber.toString(); + var SN = SlotNumber.toString(); var Summary = "@" + GetText("NoSaveOnSlot") + " " + SN; if (localStorage.getItem("SaveGameVersion" + SN)) if (localStorage.getItem("SaveGameVersion" + SN) == SaveGameVersion) { @@ -25,7 +25,7 @@ function SaveStateGetSummary(SlotNumber) { SaveStateChapter = SaveStateChapter.substr(1, 100); Summary = "@" + SaveStatePlayerName.substr(0, 10) + " - " + GetText("Chapter") + " " + SaveStateChapter + "|" + SaveStateDateTime; } - + // Returns the summary return Summary; @@ -44,16 +44,16 @@ function SaveStateSlotSummary() { CurrentStage[Slot][StageInteractionText] = SaveStateGetSummary(Slot); Slot++; } - + } } // Save the game state on a specific slot function SaveState(SlotNumber) { - + // Save the current state of the game and the transitional variables - var SN = SlotNumber.toString(); + var SN = SlotNumber.toString(); localStorage.setItem("SaveGameVersion" + SN, SaveGameVersion); localStorage.setItem("SaveGameDateTime" + SN, GetFormatDate()); localStorage.setItem("CurrentChapter" + SN, SaveChapter); @@ -61,7 +61,7 @@ function SaveState(SlotNumber) { localStorage.setItem("Common_PlayerName" + SN, Common_PlayerName); localStorage.setItem("Common_PlayerOwner" + SN, Common_PlayerOwner); localStorage.setItem("Common_PlayerLover" + SN, Common_PlayerLover); - localStorage.setItem("Common_PlayerCloth" + SN, Common_PlayerCloth); + localStorage.setItem("Common_PlayerCloth" + SN, Common_PlayerCloth); localStorage.setItem("PlayerInventory" + SN, JSON.stringify(PlayerInventory)); localStorage.setItem("PlayerLockedInventory" + SN, JSON.stringify(PlayerLockedInventory)); localStorage.setItem("PlayerSkill" + SN, JSON.stringify(PlayerSkill)); @@ -79,7 +79,7 @@ function SaveState(SlotNumber) { function LoadState(SlotNumber) { // If the save file is for the current version, we load - var SN = SlotNumber.toString(); + var SN = SlotNumber.toString(); if (localStorage.getItem("SaveGameVersion" + SN)) if (localStorage.getItem("SaveGameVersion" + SN) == SaveGameVersion) { @@ -95,7 +95,7 @@ function LoadState(SlotNumber) { GameLog = JSON.parse(localStorage.getItem("GameLog" + SN)); PlayerSkill = JSON.parse(localStorage.getItem("PlayerSkill" + SN)); CurrentTime = parseFloat(localStorage.getItem("CurrentTime" + SN)); - + // Makes sure the owner and lover aren't null from previous saves if (Common_PlayerOwner == null) Common_PlayerOwner = ""; if (Common_PlayerLover == null) Common_PlayerLover = ""; @@ -103,7 +103,7 @@ function LoadState(SlotNumber) { // You can start with different clothes on chapter 12 if (CurrentChapter == "C012_AfterClass") { Common_PlayerCloth = localStorage.getItem("Common_PlayerCloth" + SN); - if (Common_PlayerCloth == null) Common_PlayerCloth = "Clothed"; + if (Common_PlayerCloth == null) Common_PlayerCloth = "Clothed"; PlayerClothes(Common_PlayerCloth); } @@ -112,7 +112,7 @@ function LoadState(SlotNumber) { if (Actor[L].length < 11) Actor[L] = [Actor[L][0], Actor[L][1], Actor[L][2], Actor[L][3], Actor[L][4], Actor[L][5], Actor[L][6], Actor[L][7], Actor[L][8], false, ""]; - // Make sure the game log array is wide enough (to remove when save games will be reset) + // Make sure the game log array is wide enough (to remove when save games will be reset) for (var L = 0; L < GameLog.length; L++) if (GameLog[L].length < 4) GameLog[L] = [GameLog[L][0], GameLog[L][1], GameLog[L][2], 0]; diff --git a/Time.js b/Time.js index 4340912168b85d23bd9f61e9c8281fc17f7b777a..936fd4adb0ef492de42521582a0c616542652d5d 100644 --- a/Time.js +++ b/Time.js @@ -23,12 +23,12 @@ function msToTime(s) { var mins = s % 60; var hrs = (s - mins) / 60; return pad(hrs) + ':' + pad(mins) + ':' + pad(secs); - + } // Runs the regular timer function ProcessTimer() { - + // Ticks the timer every for the screen refresh and events clearInterval(CurrentTimer); CurrentTimer = setInterval("MainRun()", RunInterval); @@ -38,19 +38,19 @@ function ProcessTimer() { if (RunTimer) { // Add the interval in milliseconds - CurrentTime = CurrentTime + RunInterval; - + CurrentTime = CurrentTime + RunInterval; + // If the time limit is reached, we jump to a limit screen if (CurrentTime >= LimitTimer) { - + // Jump to the next chapter - CurrentTime = LimitTimer; + CurrentTime = LimitTimer; SetScene(LimitChapter, LimitScreen); - + } - + } - + } // Starts the timer and sets the limits