Skip to content

Conversation

@Stefaf
Copy link
Contributor

@Stefaf Stefaf commented Nov 27, 2016

No description provided.

Applies only to Chastity, Glitter and Stroke taunts.

# Starting situation:
 * An unlimited number of taunt files was supported. They had to start with ChastityTaunts_, GlitterTaunts_ or strokeTaunts_.
 * Empty Files, by accident or filtering, weren't supported.
 * Missing Files were not supported. At least one file was required.
 * CBT without filtering was supported.
 * @cbt overwrites the calling line.

## Issues:
 * Taunt line amount was determined by the alphabetical order over all files for each one of ChastityTaunts_, GlitterTaunts_ and StrokeTaunts_.
  * This didn't allow 8 line Taunts, when 1,2,3,4,5,6,7 line Taunts were missing.
 * If the naming convention was alphabetical wrong (but logical right) the group length was determined wrong. Should have been better after 8afed73, but still present.
 * Taunt files had to return at least one line group for every possible setting and situation.
 * CBT had no Errorhandling if the File CBT\CBT.txt was missing or empty. An unhandled Exception was thrown then.
 * CBT starts a YesNoQuestion. If taunt time is over before answering, the metronome doesn't stop.
 * CBT accepts only "done" or "finish"

# After Rework:
 * Unlimited number of taunt files allowed. They have to start with ChastityTaunts_, GlitterTaunts_ or StrokeTaunts_.
 * Taunt line amount is determined by a file name's last char. f.e.: GlitterTauns_9, will be treated as 9 line length taunt. If there is no number as last char, it's treated as 1-line taunt.
 * Missing Taunt-Files are supported. You won't have any taunts, but no error either.
 * Conditional taunt files are supported. You can create taunt files, for a specific scenario, using flags, variables or whatever. But since taunt files are chosen randomly until the first of all files has at least one valid group, you can't select a specific file. In order to do that, you have to modify all other files to be filtered out if that condition is met (busywork and non-sense). If desired, it's possible to add a two line filtering command. I've got something in my mind already.
 * CBT supports filtering, missing and empty file. In case of an error, it's written to log and chat.
 * @cbt overwrites the calling line.

## Issues:
 * CBT starts a YesNoQuestion. If taunt time is over before answering, the metronome sometimes doesn't stop.
 * CBT accepts only "done" or "finish"
 * @cbt is not filtered by GetFilter(String). This way a user will get CBT instructions, even if he disabled CBT.

# Non Related Issues:
 * Bookmark module is not working if a taunt is interrupted.
Increased maximum taunt size to 9999 lines.^^
Adds a 45% Chance to force 1 line taunts. Otherwise a random of all available taunt types is picked.
Taunts are now processed in a designated class, to add the possibility to reuse it for other taunt types as chastity, glitter and stroke too.
… Otherwise a random of all available taunt types is picked. Taunts are now processed in a designated class, to add the possibility to reuse it for other taunt types as chastity, glitter and stroke too."

This reverts commit 668570f.
Adds a 45% Chance to force 1 line taunts. Otherwise a random of all available taunt types is picked.
Taunts are now processed in a designated class, to add the possibility to reuse it for other taunt types as chastity, glitter and stroke too.

Initial Commit 2c15e26 changed indent size of Form1.vb. Reverted to avoid merge conflicts.
 * Fixes custom text image tags. To accomplish this the following steps were necessary:
 * Apply custom text after Image has been displayed.
 * ChatText had to be refreshed after the text is applied. Otherwise the raw text is displayed before applying the custom Text and updated soon after... Side effect: Text, Metronome, TTS and image output is now as synchronized as it can get.
 * Missing text for a tag isn't displayed as #Null anymore. It is now the identifier - #Tag (=> #TagGarment is displayed "Garment")
 * Fixes bug, where filtered taunt files with a single accessible line, were marked as unavailable.
 * Fixes bug, where taunt debugging added an error line after each taunt.

 As it turned out, the global boolean Application.Session.JustShowedBlogImage is able to cause some trouble. In ImageFetcher.RunWorkerCompleted's handler it's set to true what caused not applied text-tags on the first picture of a new slideshow. It was essential to detect if an image has been already displayed, as loading of images was accomplished by an unmanaged thread. After introducing Form1.BWimageFetcher and changing the logic, when to display what kind of image, it's obsolete now. To prevent future issues caused by this member, it should be removed.
* partially resolves Issue #14
* CatchBlock for regular Goto was unreachable.

## Solves the following error:
"If you use a Goto in a multiple choice branch, the miniscript returns not to the correct line from where you called it, but it doesn't return to a random line, it returns to the line number where the MiniScript ends. As an example: You call a miniscript from line 10 in /Stroke/Start/Hello.txt, the miniscript ends with an @EnD in line 40. if it comes inside the miniscript to a Goto like described before, the Goto works fine, but the miniscript will not return to line 10 but instead to line 41 of /Stroke/Start/Hello.txt. I don't know if that is the only problem, but I guess thats the worst part of it."

## used TestScripts:
 * Before fix: No branch in miniscript caused continuation of Startscript in Line index 12. Yes caused continuation in line 7 or so -> both infinite loops.
 * Afterwards: No infinite loops and execution continues in line index 13.

### StartScript:
(retry)
Bufferline 1 @rton
Bufferline 2
Bufferline 3
Bufferline 4
Bufferline 5
Bufferline 6
Bufferline 7
Bufferline 8
Bufferline 9
Bufferline 10
Bufferline 11
Starting MiniScript @miniscript(Test)
After miniscript Retry?
[yes] Restarting @goto(retry)
[No] EndTease @goto(EndTease)
@DifferentAnswer Retry?
(EndTease)
@EndTease

### MiniScript
Miniscript Start : 0
Bufferline - Miniscript : 1
Starting Multiple choice : 2
[yes] going to yes @goto(YesBranch) : 3
[no] going to no @goto(NoBranch) : 4
@DifferentAnswer Yes or No required : 5
(YesBranch) : 6
Yes branch started : 8
Bufferline - Yes branch : 9
Miniscript End - Yes : 10
@EnD
(NoBranch) : 11
No branch started : 12
Bufferline - No branch : 13
Miniscript End - No : 14
@EnD
Stefaf and others added 18 commits December 5, 2016 21:55
Adds the ability to nest `@CallReturn`
Currently Modes are not restored after returning. Created issue #17 to track this.
* Added Extensionmethod for Strings to check if a string contains a value case insensitive.
* Fixes bug in TauntProcessingObject.IsAvailable.
* Fixes bug in filtering if a contact is currently not in chat. The code to determine the contact is prepared to extend ssh.Group to contain + or - in order to detect if a contact is entering or leaving chat.
* Renamed stuff in ContactData to comply with MS code recommendations.
* Implements the ability to stack `@CallReturn`.
* Currently modes are cleared and not restored afterwards. #17
* Readme updated
* Raised assembly version to 0.54.6.0

Modifications on c1626a2:
* Filepaths are stored relative, to support moving Tease-AI-folder between suspending and resuming a session.
* Renamed Property ssh in SessionState.StackedCallReturn - ssh is meant as shorthand for My.Application.Session and should only be used that way, to enhance readability.
* Added must inherit class ScriptPosition to reuse functionality for issue #12 and `@BookmarkLink`.
* Indent corrected
* Marked obsolete members
* Added BC40000 suppression to onSerialization_FixFields
Fixes `@RT(` and `@RandomText(` commands.
SystemMessages code merged and used valid html.
Chatlog will now save on EndTease (fixing the problem where logs would
never save due to the chat being cleared), and the date/autosave code
moved to SaveChatLog()
@rt() and @RandomText() fixed, @notflag() fixed, @flagor() added
Updated ReadMe
Added @CountVar[] Command
Fixes to certain local genre image subdirectories not being recognized
correctly
@notflag() and @flagor() should work correctly now
Added @DommeLevel() Command Filter in GetFilter
Some minor UI and Keyword changes, finalizing integration of dariobrun's
features
Milo1885 and others added 30 commits May 8, 2017 16:02
Video genres can now be specified with @Playvideo()

Implemented dariobrun's FilterList optimizations
* Keyword Error messages were causing the program to get temporarily
stuck in a loop (dariobrun)
* TTS was speaking the html color codes for Keyword Error messages
* The program tried to process LikedImageURLs.txt and
DislikedImageURLs.txt without first making sure they existed (dariobrun)
Fixing the PoundClean loop caused some issues with CreateTaskLetter
Multiple Choice Branch parsing issues fixed (dariobrun)

Multiple Choice Branches were parsing @DifferentAnswer\@AcceptAnswer
lines for keywords

Possible issues caused by duplicate #Keywords in a single line
(dariobrun)

Fixed problems that would occur when @FollowUp() contained spaces at the
end of a line (dariobrun)
Spaces weren't being trimmed out during subAnswers, so choices in
brackets after commas weren't being correctly checked if followed or
preceded by a space
Recent Slideshows weren't being saved in the drop-down box after being
manually entered
Needed to insert a check to see if the dir was coming from manual entry
or slected from the drop down box
@controlflag() - If the Flag specified in @controlflag() exists, then
ONLY those lines will be viable when filtering lines from scripts
@DifferentAnswer lines were causing scripts to freeze\reset
WakeUp time was not saved until manually set by the user, causing
@Morning, @afternoon and @night Command Filters to not work correctly
#DomHairLength now outputs correctly
Experimental: Changed WMP docking style to see if it would help those
who reported the video displaying in a very small area on the side of
the screen
#Var[] should now work correctly no matter how it is used or how many
times per line it is used. For example, @setvar[C]=[#Random(#Var[A],
#Var[B])]
Edge phrases weren't being recognized if they contained apostrophes
See ReadMe

Updated Assembly Version to 55.0
All credits go to dariorbun. Let's make your unofficial Patch 0.55.3.0 official!
* Reworked Glitter app to use proper html and CSS. It is now possible to reference relative imagepaths.
If a feed is running the a scriptfile given in @Glitter(ScriptName) is executed after the currently running feed. The number of queued scripts is not limited. It is now possible to execute a specific script using the debug session window.
* Raised Assembly Version
This function was for performance testing and was never used public.
* Shrinked down ResponseClean(String) to avoid code redundancy. Response lines in the [All]-Section are now unavailable in start scripts and after the orgasm decision (!) if the last script is running. This feature was intended for Patch 48/49 (0b1ecab) but never worked.
* Merged redundant chatbox event handlers.
 * Added MultipleEdges to StopEverything() since it caused a script freeze when @ InterruptLongEdge was called. It was unresolvable using the "CBT-Trick".
* Simplified code and usage of custom Lazy Sub buttons.
 * Fixed issue where @ DayOfWeek was a day off. Added the possibility to use numbers as parameter, since localized day strings are useless for script exchange. The first day of the week is Monday.
This commit contains a rework of all HTML-Code in Form1. The handling of HTML-Code is now slightly different:
Every available information is written to the chat-window (timestamps, names, exceptions). To hide or show specific elements (i.e.:Domme is typing...) the page style sheet is generated according the the user settings on every change. This allows us to alter color, style and visibility of previous messages. The webtease mode and Risky Pick are handled different. Here we get last element in id "Chat" and display it.

* Reworked chat window html code to enable the usage of CSS.
 * Moved all WebBrowser and HTML-Related Code from Form1.vb to Chat.vb.
 * System, Emote, Error and regular Messages are now unified to increase maintainability.
 * All file paths in Exceptions and the "@" input messages are now links. When you click a link it will open it using your systems default program.
 * @ WritingTask had to be rewritten, since it almost completely consisted out of HTML-Code.
 * Added Support of relative image paths.

* Bugfixes:
 * Opening the WebBrowser context menu during an update won't cause a script freeze any more. It will display a message and the script will continue as normal.
 * Fixes issue of infinite loops and IndexOutOfRange Exceptions in Glitter-App, if there are no lines or duplicate lines for a contact. This issue was introduced in Commit fe04ce9.

* Miscellanious:
 * Overhauled the fresh implemented "Write exceptions to chat"-feature. Now every exception written to log, is also written to the chat window. It is no longer depending on a running session and called without IllegalCrossThreadCalls. If an exception occurs it is written to the chat.
* All Variables related Code has been rewritten to use the same internal functions. It includes a directory check, and the folder will be created if necessary.
* Fixes an Argument Exception bug, if the Variable SYS_WakeUp is not present.
* #DateDiffernce displays now the correct amount of weeks, if the interval is set to "Week".
* SystemMessages are now "linkified".
* If reading a date from a variable fails, it will no longer throw an exception.
* @ ChangeVar will no longer throw an exception if you try to divide by zero. In that case it will divide by 1.
* Added Style fnfo for the "@" Output. It is now displayed instantly.
* Added the possibility to add warnings to the chat window.
* Directories are now sorted logically.
* The splash screen is now set as Splash screen and updated thread safe.
* Redundant Code for PetName TextBoxes merged together.
* The Terms and Conditions Form is now used as dialog instead of opening it and waiting for an action to happen.
* @ TagXXX Instructions are now executed if there is no @ ShowTaggedImage present in the given Script Line. Since both are marked as obsolete, a warning will appear in the chat window.
* TxtReadLine(string) is now internally using Txt2List(strin) in order to use the TextFileChache. This should improve response time.
* Raised Assembly version to 0.56.0.0.
* The Function DomResponse() was checking for system response keyfiles and the vocabulary keyphrases more often as necessary.  This way it took forever to process if there was a task or CBT running and you entered a simple "Yes". The same slow process was going on, if you entered text that didn't trigger something.
* Reworked PoundClean(String):
  * Changed Signature to PoundClean(String, Option, Integer)
  * Added a nesting restriction when processing vocabulary keyphrases. The maximum allowed nesting depth when processing vocabularies is 5.
  * Removed variables in the session state to control processing.
  * Functional Code is now within a Try-Catch-Block.
  * The function will print errors and warnings to the chat window.
* Clean up of Class Session State. Stored Sessions from previous versions are no longer compatible. Now it has a Version Check included, to prevent  opening a session from a previous version.
* Fixes issue if TTS is activated and 2 or more vocab errors appeared within a single line. In that case TTS did ignore only the last error. Now all HTML-Tags within a line are ignored.
* Adds the possibility to print CSS compliant inline errors and warnings to the chat.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants