DialogueChecker (Latest version: V3.07, 18 December 2016) (1 Viewer)

Pim_gd

Content Creator
Joined
Jan 25, 2013
As I'm not much of an artistic or otherwise creative person, I try to help out in other ways to promote good fapping material.
I've started helping out with dialogues to ensure they don't have any bugs or silly typo's in them.
During this "Quality Assurance", I tend to find mistakes - simple things that the author overlooked. Some mistakes tend to happen just about every dialogue - and they're quite easy to find, too!
In fact, they were so common I kept a list of them and one of the first things I do when checking a dialogue is simply searching if those mistakes are in there (without even starting the dialogue up in-game first). However, listing them all so the author can fix them is a pain. It's a lot of copy paste, and even although I know what to look for, it takes a lot of time. Seeing how I have a bit of knowledge of flash...

I made a DialogueChecker!

The current version of the DialogueChecker is v3.07.
It can be found online here.
For downloading, it's also attached to this post, or you can go to downloads page and get the latest version there.
Sources can be found attached in the archive (second post), or online in a bitbucket/git repo here.

But what does it DO?
Well,
If you downloaded it, you open it like you would open SDT. This is not an import mod. If you try to import it into the game, something will happen but it doesn't look good and it won't work properly either.
You put a dialogue in the top box. Then you hit "Check my Dialogue!"
The script checks your dialogue to see if it contains a certain piece of text, like "[[".
If it finds something, it prints the "error" and the line of the error in the box at the bottom.
Not everything is an error, but usually it indicates that something went wrong.
If any errors are found, the checker prints how many errors were found and what they are. As of v1.17, it also lists how many severe issues were found. Severe issues are issues with a dialogue that prevent that dialogue from properly loading in SDT. Dialogues with severe issues might crash SDT or simply not work at all. As of v2.00, the checker also lists the amount of major and minor issues. Additionally, it's possible to filter reported issues based on their severity. The checker will report that the dialogue contains suppressed issues if this leads to issues being omitted from the report.

The output might be a bit widely spaced. The default linebreak is "\r\n". For certain text editors (including flash), both \r and \n are treated as a single linebreak. Since v1.18, you can change the linebreak used by the DialogueChecker by editing the value of the linebreak field.

If you have a lot of errors, you can filter it by unchecking some of the checkboxes. This helps when, for instance, you don't really care about what will happen when a player doesn't have a name set. You could easily uncheck "Check Substitutes", and then the checker will not check for issues with *YOU*, *YOUR*, *ME* and *MY*. This feature was added in v1.07.

The checker will also parse comments in your code. Since v1.08, there is a filter in place, but the filter is not perfect. If it finds an error in your comments, you can just ignore it. Since v1.10, it's possible to disable this filter, if you feel it's preventing the checker from properly checking your dialogue. Since v2.04, the filter has been improved: lines with 3 or more spaces before a double quote will be seen as commented lines - same goes for lines without double quotes at all.

Proper use of the DialogueChecker requires that you place your initial_settings line (if you have one) before any other lines. This is because since v1.11, the checker will parse variables and use the information to further check your dialogue.

Part of the DialogueChecker is the validation of triggers and linetypes. This feature was added in v1.14. External mods can add new triggers or linetypes which the DialogueChecker does not recognize. A list of recognized triggers and linetypes is added below the list of "what the DialogueChecker checks". In v1.24, validation of variables was implemented. Dialogue Mods (not dialogues, but mods which enhance dialogue) can inject variables in a dialogue. Below is a list of variables that the checker knows of. If you have a mod which makes use of custom triggers, linetypes or variables, let me know so I can adapt the DialogueChecker to support your mod. Versions v2.00 and later require that checking for Line Usage and Variables is enabled in order to properly detect dependancies.

If you have feedback or ideas (any other common "mistakes" a script could check for?), please comment.

I suggest using both this and the ingame dialogue log to check if your dialogue is working properly.

The things the script checks (this list is outdated - however, I'm keeping it here just to show you how much things the checker can find for you):
Code:
Grammar:
[  ] - Double space is always bad. Try using Б if you need a delay in the display of your dialogue. Can be disabled with #DialogueChecker-NoDoubleSpace# since v3.00.
[,,] - Double comma is a grammatical error. Introduced in v1.04.
[ ,] - Space in from of comma is a grammatical error. Introduced in v1.04.
[,?] - Grammatical error. Introduced in v1.05.
[,!] - Grammatical error. Introduced in v1.05.
[ !] - Space before exclamation mark is a grammatical error. Introduced in v1.05.
[ ?] - Space before question mark is a grammatical error. Introduced in v1.05.
[!.] - Grammatical error. (Whitelisted: [!...]. Whitelisting added in v1.11)
[?.] - Grammatical error. (Whitelisted: [?...]. Whitelisting added in v1.11)
[%0A ] - Space at start of new line
[:" ] - Space at start of new line (or you have spaces in your variables - which is not wrong) - re
[ . ] - Space before end of line is a grammatical error. Introduced in v1.10.
[.!.] - Grammatical error. Introduced in v1.12.
[.?.] - Grammatical error. Introduced in v1.12.
[.?] - Grammatical error, double sentence ending. Introduced in v1.12.
[.,] - Grammatical error, wrongfully continued sentence. Introduced in v1.12.
[.!] - Grammatical error, double sentence ending. Introduced in v1.12.
[.,.] - Grammatical error. Maybe it's a wrongfully typed ellipsis? Introduced in v1.12.
[!,] - Grammatical error, as a finished sentence shouldn't be continued with a comma. Introduced in v1.15.
[?,] - Grammatical error, as a finished sentence shouldn't be continued with a comma. Introduced in v1.15.
[,.] - Grammatical error, as a comma indicates that more text will follow. Introduced in v1.29.
- Lines starting with a comma, as this is not a proper way to begin a sentence. Introduced in v2.03.
- Lines starting with a disconnected exclamation mark [! ]. Introduced in v2.04.
- Lines starting with a disconnected period [. ]. Introduced in v2.04.

Whitelisted (if detected during their relative checks):
[!...] - To check for [!.], but allow [!...]. Added in v1.11.
[?...] - To check for [?.], but allow [?...]. Added in v1.11.
[,...] - To check for [,.], but allow [,...]. Added in v1.29.
[...!] - To check for [.!], but allow [...!]. Added in v1.12.
[...?] - To check for [.?], but allow [...?]. Added in v1.12.
[...,] -  To check for [.,], but allow [...,]. Added in v1.12.

Syntax:
[: ] - Indicates probable line fault at the start
[ :] - Indicates probable line fault at the start or in a variable
[::] - Duplicate colon indicates a mistake in the syntax (typo). Introduced in v1.21.
[[[] - Wrong trigger.
[]]] - Wrong trigger ending.
[{style] - improper use of style attribute
[set:] - improper use of set attribute.
[check:] - improper use of check attribute. Introduced in v1.06.
[style:] - improper use of style attribute. Introduced in v1.06.
[mood:] - improper use of mood attribute. Introduced in v1.06.
[next:] - improper use of next attribute. Introduced in v1.06.
[held:] - (only if not as line start) improper use of held attribute. Introduced in v1.07.
[},{] - Coding error. Introduced in v1.06.
[%01] - Old delay string. Should be replaced with Б for a cleaner dialogue. Introduced in v1.08.
[[]] - Empty trigger. Introduced in v1.08.
[dialogue-name] - This might be a setting the writer wanted to set. SDT works with underscores - use [dialogue_name]. Introduced in v1.09.
[initial-settings] - This might be a setting the writer wanted to set. SDT works with underscores - use [initial_settings]. Introduced in v1.09.
- Uneven amount of asterisks on one line - Indicates a possible coding error. Added in v1.04.
- Uneven amount of double quotes on one line - Indicates a possible coding error. Added in v1.04.
- Mismatch in counts of [ and ] on one line - Indicates a possible coding error. Added in v1.06.
- Mismatch in counts of { and } on one line - Indicates a possible coding error. Added in v1.06.
- If 3 or more double quotes are present, check if the 3rd double quote comes before a { character ("""{). Indicates a possible coding error. Added in v1.07.
- If a line has more than 2 double quotes, check if the line does not have line-attributes (no { character available). Indicates a likely mistake in double quote insertion or a typo. Added in v2.03.
- Wrongly placed trigger openings and endings, such as {intro:"hello![NORMAL_MOOD] ]intro2["}. Introduced in v1.08.
- Illegal colons: if a line has :", and the : of that is the first occurance of :, check if there are colons between the first double and the second double quote. Added in v1.10.
- Misplaced colons: check if a line has double quotes before the first occurance of a colon - if so, this is likely a misplaced colon. Added in v1.28.
- Line excess: if a line has excess characters between the line name and line content, between line content and line attributes or after line attributes, the checker flags them as an issue. Added in v2.00.
- Spaces in triggers: if a line contains triggers, and these triggers have spaces in them, the checker raises a Major issue. Triggers with spaces in them won't be detected as triggers by SDT and will be seen as plain text instead. Added in v2.02.
- Line-attributes: At the end of each line, through the use of JSON certain line-attributes can be set. The checker validates these line-attributes. Added in v1.16.
- Line-attributes on finish and interrupt lines are not allowed - Major issue due to dialogue not working as intended (lines missing/attributes being ignored). Added in v2.10.
- Line-attributes for set and check are checked for their format. All numeric values have to be free of double quotes, or SDT will fail at parsing them.
- Line with line attributes can't have finish in the line as literal string or trigger. Added in v2.12.
- If parsing of line-attributes has stopped but the : character is present in the remaining string, an error is raised. Added in v1.20.
-- The values of mood, style and held are validated as well. Added in v1.16.
-- Undefined values are treated as an error. Added in v1.18.
--- Illegal mood values are treated as a SEVERE issue. Added in v1.17.
--- Empty string for the next line-attribute is seen as a Major issue, due to it being IGNORED by SDT. Added in v2.07.
- Angled double quotes. These are not seen as double quotes by SDT and thus can't be used to denote the start and end of a line's content. They get in when you edit your dialogue in MS Word or other fancy text editors. Added in v3.03.

Variables:
- Illegal asterisks: The checker parses the initial_settings line to identify the variables the dialogue uses. If an undefined variable is referenced, the checker raises an error. Added in v1.11.
- Variables defined in initial_settings are compared to the rest of the dialogue to see if they are being used. If the checker finds an unused variable, it will be reported. Added in v1.24.
- If a variable is used in the dialogue, the checker checks if the variable exists. If it does not, an issue is raised. Added in v1.24.
- If a variable's name contains asterisks [*], the checker raises a Minor issue. Variables with asterisks in their names can't be inserted into dialogue lines. Added in v2.02.

Special:
- Removes Б if no errors are found in the normal line, to see if the removal of Б would cause errors (as SDT does not display Бs). Added in v1.10.
- Removes triggers if no errors are found in the normal line, to see if the removal of triggers would cause errors (as SDT does not display triggers in text). Added in v1.12.
- Checks if all the lines are capable of being triggered. If a trigger has a variable in it, the checker tries to match the non-variable portion of the trigger to any lines. Added in v1.14. Improved this functionality in v2.11.
- Checks if all triggers are valid triggers or reference to existing lines. Triggers with variables are ignored in this process. Added in v1.14.
- Commented lines are checked for invalid mood values as this is a SEVERE issue. Added in v1.17.
- Deprecated custom triggers are reported as an issue if Line Usage is on. Added in v2.05.
- If [CHANGE_BACKGROUND] or [FADE_BACKGROUND_<hex>] is in a line and that line does not set the variable 'background', the checker raises an issue. Added in v2.05.
- Lines without line names (starting with :) are seen as a style error - it's possible to trigger these lines, but only via triggers. Added in v2.07.
- Checks if all mood checks [{"mood":"<value>"}] are also set in the dialogue via [<value>_MOOD] triggers. Added in v2.08.
- If [LOAD_CHARCODE] is in a line and that line does not set the variable 'loadCharCode', the checker raises an issue (Line Usage - Minor). Added in v2.09.
- If multiple finish lines (lines starting with "finish") have the same name, the checker raises an issue (Line Usage - Major). Added in v2.10.

- Substitutes can be checked for by checking the "Check substitutes" option. It will perform grammar checks on lines after stripping them of variable substitutions (same effect as v1 substitute checks). Added in v2.00.
If something is whitelisted, it means that for that specific check, the presence of that string of characters will cause the checker to ignore the possible error it found.
So [Help...!] does not trigger [.!] because the checker finds [...!], which is whitelisted.
[Help...!.], on the other hand, triggers [.!.]. [...!] does not apply here, and thus the checker reports an error.

List of supported linetypes, triggers and variables: (This list last updated with v2.13, I'm a bit lazy)
Code:
Default line types:
cough
cum_in_eye
cum_in_mouth
cum_in_nose
cum_in_throat
cum_on_face
dialogue_name
drool
finish
finish# //anything that starts with "finish" is validated.
finishOther
first_dt
first_throat
font
general
hand_job_stroke
head_grabbed
held
initial_settings
interrupt
intro
lick_balls
lick_penis
pre_cum
pulled_down
pulled_up
pull_off
resistance
restart
restart# //anything that starts with "restart" is validated.
swallow
vigorous
wake

all //I'm not sure whether this is valid but I've seen it being used so often...
custom //Same here.

Line types from DialogueActions 1.06:
orgasm
start
passed_out

Line types from animtoolsv7:
bodycontactspaceheldpush
cuminher

Line types from BreastExpansionPlusv2_4:
bellyexpansion
bellyreduction
bodyexpansion
bodyreduction
breastexpansion
breastreduction
cumfrombreast
puke

Default triggers:
[ADD_TEARS]
[AHEGAO_MOOD]
[ANGRY_MOOD]
[ARMS_BACK]
[ARMS_HAND_JOB]
[ARMS_HIS_LEGS]
[ARMS_LEGS]
[ARMS_LOOSE]
[BLINK]
[CLENCH_TEETH]
[CLOSE_EYES]
[COUGH]
[DROOL]
[EJACULATE]
[FACE_FUCK_STYLE]
[HAPPY_MOOD]
[HOLD]
[LEFT_ARM_BACK]
[LEFT_ARM_HAND_JOB]
[LEFT_ARM_HIS_LEGS]
[LEFT_ARM_LEGS]
[LEFT_ARM_LOOSE]
[LOOK_UP]
[LOOK_DOWN]
[NORMAL_MOOD]
[NORMAL_STYLE]
[OPEN_EYES]
[RELEASE]
[RIGHT_ARM_BACK]
[RIGHT_ARM_HAND_JOB]
[RIGHT_ARM_HIS_LEGS]
[RIGHT_ARM_LEGS]
[RIGHT_ARM_LOOSE]
[SHOCK]
[SWALLOW]
[TAP_HANDS]
[WINCE]

Triggers from DialogueActions 1.08:
[ARMS_BREAST]
[ARMS_CROTCH]
[ARMS_HIS_CROTCH]
[AUTO_HARD]
[AUTO_KEYS]
[AUTO_KEYS_OFF]
[AUTO_KEYS_ON]
[AUTO_NORMAL]
[AUTO_OFF]
[AUTO_SELF]
[AUTO_SOFT]
[BOUNCE_TITS]
[CHANGE_BACKGROUND]
[CLEAN_ALL]
[CLEAN_CUM]
[CLEAN_LIPSTICK]
[CLEAN_MASCARA]
[CLEAN_SPIT]
[CLEAR]
[CONTINUE]
[DEEPTHROAT]
[END_FLASH]
[FADE_BACKGROUND_<hex>]
[FLASH_<hex>]
[FLASH_<hex>_<timeInMilliseconds>]
[GAG]
[GROW_PENIS]
[HANDJOB_OFF] (DEPRECATED)
[HANDJOB_ON] (DEPRECATED)
[HAND_OFF] (DEPRECATED)
[HAND_ON] (DEPRECATED)
[HIDE_BALLS]
[HIDE_HIM]
[HIDE_PENIS]
[LEFT_ARM_BREAST]
[LOAD_CHARCODE]
[MASTURBATE_OFF]
[MASTURBATE_ON]
[MOAN]
[PAUSE]
[PULL_OFF]
[RANDOMIZE_HER]
[RIGHT_ARM_BREAST]
[RUB_HIS_CROTCH_OFF]
[RUB_HIS_CROTCH_ON]
[SHRINK_PENIS]
[SHOW_BALLS]
[SHOW_HIM]
[SHOW_PENIS]
[WAKE_UP]

Triggers from Animtools v5:
[ANIMTOOLS_$POSITIONFILENAME] //If a trigger starts with "ANIMTOOLS_" it is seen as "valid as part of AnimtoolsV5".

Triggers from BreastExpansionPlusv2_2:
[ADD_EFFECTIVE_CUM]
[PUKE]
[SUB_EFFECTIVE_CUM]

Triggers from VariableArithmeticv1.02+:
[VA_$FUNCTIONNAME] //If a trigger starts with "VA_" it is seen as "valid as part of VariableArithmetic". Later versions of the DialogueChecker might have specific checks for VariableArithmetic, when the mod is more stable.

VARIABLES:
BreastExpansionPlusV2_4:
bellysize
bellysize2
bigpenisbellychange
bigpenisbellychange2
bigpenisbodychange
bigpenisbodychange2
bigpenisbreastchange
bigpenisbreastchange2
bodysize
bodysize2
breastsize
breastsize2
breathLevel
breathLevel2
effectivecuminside
effectivecuminside2
eyecumtimer
eyecumtimer2
mouthFull
passOutFactor
passOutFactor2
penisInMouthDist
penisInMouthDist2
superbreastsize
superbreastsize2
timerpuke
timerpuke2

DialogueActions 1.11:
ankleCuffs
armwear
background
bellyPiercing
bottoms
collar
cuffs
earring
eyewear
footwear
gag
hair
headwear
himBottoms
himFootwear
himTop
legwear
legwearB
loadCharCode
loadDialogue
maxPenisLength
maxPenisWidth
minPenisLength
minPenisWidth
nipplePiercing
panties
penisLength
penisSize
penisWidth
tonguePiercing
top
tops

Animtoolsv8:
atv_position


Feature idea list: (Format: votecount (voters) - feature description (technical details))
1 (ModGuy) - Mark violating sections with a color (red?) (htmlText of TextField) - Failed to implement, if anyone else has suggestions... (htmlText eats the newlines in the source so I can't parse it anymore, as well as converting html tags and other characters to affect the text)
0 (nobody) - Check that the values for line-attributes [check] and [set] are valid (Expand VariableChecker to validate that all values in check line-attributes are possible to attain. Support VariableArithmetic by analyzing used functions).
0 (nobody) - Add Style as a category, containing [?.], [!.], [%01] (A StyleChecker)
0 (nobody) - Create a options page, rather than these checkboxes all over the place (Display class)

How this works:
You can vote for an infinite amount of features and you can request features and I'll add them to the list. When making changes to the checker (or whenever I feel like it), I'll implement things from the list, based on how many votes a feature has and how long I estimate adding a feature would take. However, bigger features don't require more votes. I cleared this list when I made v2.00, and the features that I kept on the list are starting at 0 votes because I want to know if people are still interested. I'm also not counting my own votes because I know I'll have plenty of personal bias when deciding what I'll implement from the list XD.
If you're a guest and you want to vote, you'll have to sign up.

For a changelog of v3, see the bitbucket repo's commit list.

Version log for v2:
Code:
v2.22: 31th of March, 2015 - Fixed a bug where percent encoded values would crash the checker.
v2.21: 17th of February, 2015 - Improved the performance for SyntaxChecker by about 20% via a lookup table for Trigger.identifyType(). Some refactoring for Dialogue parsing (potential source of bugs). Fixed false positive warnings for lack of mood triggers (bug introduced in v2.17).
v2.20: 14th of February, 2015 - Fixed a bug where the VariableChecker didn't complain about undeclared variables in set lineattributes, and DA variable triggers.
v2.19: 12th of Feburary, 2015 - Major performance improvements.
v2.18: 3rd of Feburary, 2015 - Fixed a horrible bug from v2.17 that made all mod variables not mod variables and vice versa. Added a check for check lineattributes with missing quotes.
v2.17: 31th of January, 2015 - Fixed a bug where the checker would see "variable":"" in initial_settings, set and check lineattributes as a mistake. Cleaned up some of the code. Enabled ErrorManager.showDevelopmentError which crashes the checker if something was programmed badly. Fixed a bug where the checker fail to detect a unplayable line due to mood settings. Added support for Animtools v14's new lines/triggers. Fixed false "probable improper use of mood" messages when using charcodes. Made the GrammarChecker shut its trap for DA arithmetic. Added #DialogueChecker-DebugTime# for debug performance tracking.
v2.16: 30th of December, 2014 - Fixed a typo in the check for "dialogue-name"; it said you used "dialogue_name" and should use "dialogue_name" instead, which was unhelpful advice. Fixed a bug where %words%[trigger] would fail to cause a trigger to be recognized by the checker. Added checks for % that can't be converted to a percent encoded value. These are MAJOR or MINOR depending on whether it looks like it could be a percent encoded value. Added support for DA v3.01 to v3.05 for the simple variables they added. Triggers still unsupported, mostly. Fixed a bug where insertions would be checked wrongly; this caused the checker to think that [intro*introPlayed != 0*] contained raw spaces. Added partial support for the VA_SET replacements.
v2.15: 7th of September, 2014 - Added checks for argument count mismatches for VA_SET functions. Fixed the issue where if you use a variable only for VA_SET functions, the checker would still tell that the variable was unused. Only works for static variables (not with variable insertions). Added checks for VA_SET functions that check if used variables are also declared. Only works for variables without insertions. Fixed a bug where using loadCharCode with a mood set would give you errors. Added checks for the use of punctuation in line-reference triggers. Added a check to see if a line's name is the same as a default or mod-defined trigger. This because it prevents triggering of the line in the most common way (as [LINE]). Fixed a crash where typing {"next":{"LINENAME"}} like an idiot programmer at 4 AM crashes the checker. Turned it into a check.
v2.14: 2nd of September, 2014 - Added support for DA v3.00 by WeeWillie. Fixed a bug where using da.charcode.load with a mood set would give you errors. Fixed a bug where using [LOAD_CHARCODE] would give you errors about "loadCharCode" not being set. Fixed a bug where using [CHANGE_BACKGROUND] or [FADE_BACKGROUND] and it's varieties would give you errors about "background" not being set. Added a space after each comma in dependancy lists.
v2.13: 9th of May, 2014 - Added in a check for null values in VariableReferences - returns NULL for getValue() if the value is NULL due to a parse error. Added a list of DA v2.04 variables for use by VariableChecker. It's wonky, but should help reduce false positives. (does not discern getter/setter) Added a list of DA v2.04 triggers for use by LineUsageChecker. Also wonky, but should help reduce false positives. Note that there's no longer any checking for the proper amount of arguments. Whitelisted spaces in triggers if they are inside a variable insertion (with asterisks). Should also work with %2A but that's not recommended (poor style).
v2.12: 8th of December, 2013 - Removed %2A usage recommendation, and altered dialogue parsing to see %2A as an asterisk in content variables. Added check for "finish" as part of a line with lineattrbiutes. Removed some colon checks. Altered the excess characters check for excess characters between linename and line content to not ignore whitespace (as SDT will ignore the line). Altered clean dialogue message ("Have you checked for special characters" -> "Have you used a spellchecker") as message was becoming irrelevant, checker does it for you.
v2.11: 3rd of December, 2013 - Improved check for lines with [LOAD_CHARCODE], so that loadCharCode doesn't have to be set if "[VA_SET_VARIABLE_loadCharCode_" or "[VA_SET_VARIABLEBYNAME_loadCharCode_" is found on the line. Added support for DialogueActionsv1.11. Added checks for wrongful formats of numeric values for variables (Syntax - Major). Improved LineUsageChecker to use regexes for variables. It's not perfect and doesn't support VariableArithmetic yet... but hell yeah!
v2.10: 23th of November, 2013 - Added a double check for double space - if double space is found, checker only reports the issue if double space is found after an uneven double quote but before an even double quote (between the first and second, between third and fourth...). Added a "helpful" message for grammar issues that popup in lines with *YOU*. Added a check for lineattributes on finish and interrupt lines (Syntax - Major), as defining them will cause SDT to ignore the attributes or even the entire line. Added a check for duplicate finish lines - SDT only correctly parses the first of multiple finish lines with the same name (Line Usage - Major).
v2.09: 31th of October, 2013 - Added f93's dialogues as TestSet. Fixed a bug which caused [,...] to not be properly whitelisted (Bug since v1.29). Fixed a bug which caused duplicate values for lineattributes mood, style and held not to get caught. (Bug since v1.16). Added support for DialogueActions v1.08. Added a check for lines with [LOAD_CHARCODE] - loadCharCode variable should be set otherwise the trigger does nothing or may cause buggy behaviour (Line Usage - Minor)
v2.08: 25th of October, 2013 - Added checks for mood checks whilst the dialogue doesn't ever set the mood to that mood (Line Usage - Minor). Tried and failed to add red highlighting to lines in input textfield that are the cause of found issues.
v2.07: 10th of October, 2013 - Improved the comment filter by actually making the improvement of v2.04 work. Added version of the DialogueChecker to output. Added support for Animtoolsv8 (atv_position variable). Fixed a typo in the error message for triggers in variable substitutions that refer to non-existing lines. Added a check for lines without line names (Syntax - Minor). Downgraded [[]] (Syntax) from Major to Minor severity due to it behaving as expected (triggers line without linename), it's just bad style.  Added a check for lines with a next line-attribute with a value of empty string (Syntax - Major). Added an additional message for when empty triggers refer to a non existing line in order to hint at the possibility of a typo/syntax error. Updated credits to show proper supported versions of Dialogue mods because I forgot to do so for v2.06.
v2.06: 29th of September, 2013 - Added support for DialogueActions v1.06. Discontinued V1.
v2.05: 5th of September, 2013 - Implemented checks for deprecated triggers. Added support for Animtoolsv7. Added support for DialogueActions v1.00. Added a check for lines containing [CHANGE_BACKGROUND] or [FADE_BACKGROUND_<hex>] - if they don't set the background variable, an issue is raised (Line Usage - Major).
v2.04: 2nd of September, 2013 - Added a function that will re-check lines for grammar mistakes by filling in substitutes. Added check for lines starting with a disconnected exclamation mark. ["! ] (Grammar - Minor). Added check for lines starting with a disconnected period. [". ] (Grammar - Minor). Added a credits button. Improved comment filter: lines without colons but with double quotes are only seen as valid if they have 2 or less spaces before their first double quote.
v2.03: 1st of September, 2013 - Added checks for lines that contain more than 2 instances of double quotes, but doesn't contain line-attributes (Syntax - Major). Added support for DialogueActionsv0.99. Added check for lines starting with a comma as that's an invalid way to begin a sentence (Grammar - Minor).
v2.02: 30th of August, 2013 - Fixed a bug where the checker would state a mod makes use of "the following dependencies", then displays none. Added a check for variables with asterisks in their name (Variables - Minor) as they can't be inserted into a dialogue line. Added a check for spaces in triggers (Syntax - Major) as triggers can't have spaces in them, or they will show in the dialogue line when it is played. Removed some left-over debugging code.
v2.01: 29th of August, 2013 - HOTFIX - Fixed display of "linebreak:" for custom linebreak input box. Gave labels for "Check Substitutes", "Check Variables", "Check Line Usage", "Check Syntax" and "Check Grammar" a bit more room to prevent words from being cut off.
v2.00: 29th of August, 2013 - (From v1.31) New way of dialogue parsing. I now hate writing parser code. Expanded issue severities. Issues can now be of Severity SEVERE (Crashes SDT/Flash), MAJOR (Changes expected output) and MINOR (Works, but it could be better). Allowed filtering of issues based on Severities. If issues are filtered out by this method, the checker will report that the checker contains suppressed issues. The checker now reports how many issues of each severity were detected. Integrated Substitute checks into Grammar. Added filters for variable checks and checks regarding line usage. Altered internal mechanics regarding checking for dependencies. Checking for variables and line usage is mandatory for proper dependency checking. Added checks for excess characters (Syntax). Excess characters are characters between the line name and the line content, between the line content and line attributes, and after the line attributes. When lines are stripped of delay characters, triggers and variable substitutions, the checker now displays the non-stripped and the stripped line. The checker now has responses for empty input and for default input to assist the user. Implemented 2 missing variables for DialogueActions (v0.97 hotfix 2.1) - panties and bottoms.

Version log for v1: (see next post, forums are having issues with my large post)
 

Attachments

SDTDialogueCheckerv3.07.zip
75.9 KB · Views: 992

Last edited:

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.03, 16 May 2013)

Outdated attachments attached to this post for v1 / v2 sources. See bitbucket repository for the latest sources.

Attached (at the bottom) to this post is a rar file containing a FlashDevelop AS3 Project. The rar file also contains the current and older versions of the DialogueChecker, as well as source backups since v1.13. Additionally, testset dialogues are contained in the rar file.

Version log for v1:
Code:
v1.34: 5th of September, 2013 - Added support for Animtoolsv7 and DialogueActions v1.00.
v1.33: 1st of September, 2013 - Added support for DialogueActions v0.99.
v1.32: 29th of August, 2013 - Implemented 2 missing variables for DialogueActions (v0.97 hotfix 2.1) - panties and bottoms. This branch will be supported until sometime around 1 October 2013. Support of this application entails implementation of support for dialogue mods (like currently has been done with Animtools, VariableArithmetic, DialogueActions and BreastExpansionPlus), as well as fixing any bugs that are found, provided it is possible to make the changes within a reasonable timespan (< 1 hour).
v1.31: 28th of August, 2013 - Fixed a bug where the DialogueChecker would crash or otherwise start throwing errors if variables were separated by 1 space. (2 spaces will still crash, don't do that.) Added error-catching. In case of a crash, the checker will now properly throw the error at the user, instead of acting broken by doing nothing. Please send me crash reports if you get errors.
v1.30: 28th of August, 2013 - Added support for VariableArithmetic (v1.02+) by validating all triggers starting with "VA_". Fixed the stupid typo in the issue-message for [,.]
v1.29: 27th of August, 2013 - Added support for VariableArithmeticv1.01, added a check for [,.] and whitelisted [,...].
v1.28: 26th of August, 2013 - Added a check to see if a line has both [:] and ["], but the colon occurs later than the double quote. In effect, checks if a linename does not contain double quotes.
v1.27: 24th of August, 2013 - Fixed a bug where the DialogueChecker would crash if [!,] was found in a line. Bug introduced in v1.15 as a duplicated issue and worsened to crash in v1.19. Fixed a bug which caused [?,] not to be checked for. Bug introduced in v1.15 (the check never was properly added). 
v1.26: 19th of August, 2013 - Fixed a bug where illegitimate variable inserts were treated as valid, if no initial_settings line was present. Bug introduced in v1.25. Work is progressing on v2. The classes meant as datastructure have all been finished, save for Dialogue and Issue.
v1.25: 13th of August, 2013 - Fixed a bug where legitimate inserts of variables into dialogue lines were being treated as illegitimate inserts. Bug was introduced in v1.24.
v1.24: 12th of August, 2013 - Introducing support for variables! Added checks for verifying that all variables declared in initial_settings are used. Added checks for verifying that no unknown variables are referenced in set and check line-attributes. Added checks for verifying that no unknown variables are inserted as substitutes. Implemented support for variables from BreastExpansionPlusV2_4 and DialogueActions 0.97 Hotfix 2.1. Added checks for possible conflicts if a dialogue is used with a dialogue mod - since dialogue mods insert the variables, they should not be declared in initial_settings. Added a message to the "Invalid next target" issue if the referenced target has spaces.
v1.23: 5th of August, 2013 - Fixed a typo in the message if the held line-attribute was improperly used. Fixed a typo in the message if the style line-attribute was improperly used. Fixed a bug where lines ending with the name of a line-attribute would be seen as instances of improper use. Bug introduced in v1.02 and expanded in v1.06. Added extra info line if line-attribute parsing fails due to improper use of line-attributes (specifically, lack of double quotes). Internal functionality: Implemented support for snippets that focus on a second or later occurrence of a specific string in a line.
v1.22: 22th of July, 2013 - Fixed a bug with snippets being cut off if a line had duplicate issues.
v1.21: 21th of July, 2013 - Added check for [::] (Syntax).
v1.20: 3rd of July, 2013 - Added checks for failed parsing of line-attributes. Capped snippets at 40 chars on both sides of the highlighted section. Fixed an internal bug with parsing values of line-attributes.
v1.19: 28th of June, 2013 - Added wordwrap for the output textfield. Added snippets feature. When an error is detected, the checker displays a snippet of the line so that the exact location of the error can be located more easily.
v1.18: 26th of June, 2013 - Added checks for line-attributes with undefined values. Linebreaks are now customizable through an input textfield.
v1.17: 20th of June, 2013 - Added checks for illegal mood values in commented lines. Added a counter for "severe" issues. Severe issues cause the Dialogue to crash or otherwise fail loading. Illegal mood values are now treated as severe issues.
v1.16: 19th of June, 2013 - Refactored code for dealing with line checks. Added a line to indicate how long it took to check the dialogue. Added checks to validate line-attributes. Added checks to validate the values of the following line-attributes: held, mood and style. Bugfix: If a line-attribute contains an asterisk, it no longer murders the dialoguechecker. It also doesn't count for "uneven/even" amount of asterisks in a line.
v1.15: 16th of June, 2013 - Bugfix: Commented lines no longer validate lines they reference if the comment filter is on. Removed accidental leftover debug code for testing the "next" lineattribute. Internally parameterized linebreaks as preparation for future custom linebreak option. Added checks for [!,] and [?,] (Grammar).
v1.14: 16th of June, 2013 - Added checks for unused lines and faulty triggers. The checker supports external lines and triggers from AnimtoolsV5, BreastExpansionPlusV2_2 and DialogueActions 0.97 Hotfix 2.1.
v1.13: 14th of June, 2013 - Refactored the code a bit. Delay chars, triggers and substitutions are now removed at the same time for checking purposes. Fixed the bug which caused whitelisting of [...!], [...?] and [...,] to not work.
v1.12: 13th of June, 2013 - Added checks for [.!.], [.?.], [.?], [.,], [.!], [.,.], whitelisted [...!], [...?], [...,], fixed a typo in the error message for using %01. (Use of %01 -> Usage of %01) Added feature: The checker will now remove triggers to check for further errors. Bugfixed the removal of delay chars for error checking.
v1.11: 4th of June, 2013 - Added whitelisting for [!...] and [?...]. Added a special check for illegal asterisks: The checker parses the initial_settings line to identify the variables the dialogue uses. If an undefined variable is referenced, the checker raises an error.
v1.10: 29th of May, 2013 - Added check for illegal colons (if a line has :", and the : of that is the first occurance of :, check if there are colons between the first double and the second double quote.), Removing Бs if no errors are found to see if some errors are being masked by delay chars. Added checkbox to disable comment filter. Added check for [ . ].
v1.09: 27th of May, 2013 - Found a bug in the checks for nested triggers. It caused a lot of false positives. Added checks for [dialogue-name] and [initial-settings].
v1.08: 25th of May, 2013 - Added checks for [%01], [[]]. Added a filter that will try prevent the checker from checking non-dialogue lines. Added checks for nested triggers. Added checks for lines with 2 or more double quotes, but no colon (could be a coding error).
v1.07: 20th of May, 2013 - Added checks for [held:] (provided it's not start of a line). Added checkboxes which you can use to disable checking for certain things (grammar, syntax, substitutes).
v1.06: 19th of May, 2013 - Added checks for [ :], [},{], [style:], [check:], [mood:], [next:]. Added suggested fixes for [style:], [check:], [mood:], [next:], [set:].
v1.05: 17th of May, 2013 - Added checks for [,?], [,!], [ ?], [ !]. Also added a check that will remove *YOU*/*YOUR*/*ME*/*MY* to check if that would cause errors in a dialogue.
v1.04: 17th of May, 2013 - Fixed a typo in one of the error messages. Added checks for [,,], [ ,], uneven count of double quotes, uneven count of asterisks.
v1.03: 16th of May, 2013 - Added checks for [:" ], [ *YOU* ], [ *YOUR* ], [ *ME* ], [ *MY* ]
v1.02: 16th of May, 2013 - Some editors prefer \r\n as new line instead of just \n. So yeah. Changed all \n to \r\n
v1.01: 16th of May, 2013 - Default font != sans_serif. Made textfields larger.
v1.00: 16th of May, 2013 - base release attempt on SWFcabin

Current version: v2.22

Online links to old versions:
 

Attachments

SDTDialogueCheckerAS3.rar
3.4 MB · Views: 467

BuckWild

Modder
Streamer
Joined
Feb 3, 2013
Re: DialogueChecker (Latest version: V1.02, 16 May 2013)

What things does this checker catch that the in-game checker doesn't?

Pros and Cons of each, please. :)
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.02, 16 May 2013)

Updated to v1.03, since I accidentally skipped some of the things I listed as "this is what the checker checks for". Sloppy me.

Hmm, pros and cons?
Well

The in-game checker checks for syntax.
intro:" fsd*YOU*a f ft *ME* ttdsf ,!." is a valid line of dialogue, according to SDT. SDT does not care about the content of the text - if it can display it, it will.

Whereas the dialogue checker checks for certain bits of grammar, and would not see this line as valid.
Example:
The dialogue checker checks the line by going through a list of possible errors, and displays the first one it finds.
So where SDT would keep quiet about this, the DialogueChecker would say that

Grammatical error (double sentence ending: !.) on line 1, col 35
Line 1: intro:" fsd*YOU*a f ft *ME* ttdsf ,!."

Space at start of new line on line 1, col 5
Line 1: intro:" fsd*YOU*a f ft *ME* ttdsf ,!."

There will be a double space in the dialogue line if the girl's name is not set, on line 1, col 22
Line 1: intro:" fsd*YOU*a f ft *ME* ttdsf ,!."

Now for a real example:
intro:" Wow, *YOU*, that's a huge cock you've got there!. How would you like *ME* to suck it?"

Let's say we put bob and alice as names.
We get
" Wow, bob, that's a huge cock you've got there!. How would you like alice to suck it?"

what if we don't put names?
" Wow, , that's a huge cock you've got there!. How would you like to suck it?"

Oh dear, that's quite the nasty dialogue.
What looked decent has gone to hell, really.
If we put it in the checker:
(Font colors added to show what the checker has matched to display this error)
Grammatical error (double sentence ending: !.) on line 1, col 55
Line 1: intro:" Wow, *YOU*, that's a huge cock you've got there!. How would you like *ME* to suck it?"

Space at start of new line on line 1, col 5
Line 1: intro:" Wow, *YOU*, that's a huge cock you've got there!. How would you like *ME* to suck it?"

There will be a space before a comma if the player name is not set, on line 1, col 12
Line 1: intro:" Wow, *YOU*, that's a huge cock you've got there!. How would you like *ME* to suck it?"

There will be a double space in the dialogue line if the girl's name is not set, on line 1, col 76
Line 1: intro:" Wow, *YOU*, that's a huge cock you've got there!. How would you like *ME* to suck it?"

This way, a lot of helpful information is displayed about spacing issues and problems that will occur when no player or girl name is available.

There aren't really any cons to using this checker (other than that you might have to fix certain mistakes or your inner OCD will stop you from enjoying your dialogue now that these mistakes have been pointed out to you).

The pros:
Checks dialogues for spacing issues
Checks dialogues for spacing issues that crop up when no player name or girl name has been set
Checks dialogues for other grammatical issues that can be a boner killer to those that hate seeing something like "!." and "?."
Checks dialogues for characters that are not supposed to appear in lines of dialogue, to the best of its ability. I recommend checking this by hand.
 

BuckWild

Modder
Streamer
Joined
Feb 3, 2013
Re: DialogueChecker (Latest version: V1.03, 16 May 2013)

How could that situation be fixed? I see that the ME name takes a space when no name is specified, so the only solution I would have would be to include a name every time, but not everyone's play style is different.

If we were talking about a universal fix for that situation, what do you think it'll be? Besides spouting the suggesting to rephrase the dialogue it so that it works out every time.
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.03, 16 May 2013)

The universal fix is as follows:

initial_settings:{"nameIsSet":"true", "namechecked":"false"}

intro:"[nameset*ME*]" {"check":{"namechecked":"false"}, "set":{"namechecked":"true"}}
intro:"[intro1]" {"check":{"namechecked":"true"}}
intro1:" Wow, *YOU*, that's a huge cock you've got there!. How would you like* ME* to suck it?" {"check":{"nameIsSet":"true"}}
intro1:" Wow, *YOU*, that's a huge cock you've got there!. How would you like me to suck it?" {"check":{"nameIsSet":"false"}}
nameset:"" {"set":{"nameIsSet":"false"}}
pulled_up:"Hi!" {"check":{"nameIsSet":"true"}}
pulled_up:"Bye!" {"check":{"nameIsSet":"false"}}

Yes, it requires adding a variable and you'll have to have it piggyback on your dialogue but that's the best I can do.
That's why I can't autopatch everything.

EDIT: It took me three months....
but the solution is there!
intro:"Hi![intro1]*[YOU][intro1Named]*"
intro1Named:"Hey, I know you, you're *YOU*!"
intro1:"Huh? Who are you?"
 

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
Re: DialogueChecker (Latest version: V1.03, 16 May 2013)

Pim_gd said:
Yes, it requires adding a variable and you'll have to have it piggyback on your dialogue but that's the best I can do.
That's why I can't autopatch everything.

Would require a variable be set and checked - which slows down the game.

Rule #1 for dialogues: keep the number of "check":{"variable":"xx"}" commands as low as possible 'cause that dumb parser checks all the "check"s all the time ^^
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.04, 17 May 2013)

Another reason why rewriting the line would be a better idea.

Introducing v1.04!
- Checks for uneven double quotes
- Checks for uneven asterisks
- Checks for double comma [,,]
- Checks for space comma [ ,]
- Typo fix: "or erroneous space" instead of "or errorneous space"
Link in OP.
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.05, 17 May 2013)

May 17, 2013
Introducing v1.05!
- Checks for spaces before question marks and exclamation marks [ !], [ ?]
- Checks for commas before question marks and exclamation marks [,!], [,?]
- Checks if removing substitutes like *YOU*, *YOUR*, *ME* or *MY* would cause errors.
Link in OP.

If you have an idea, please post! I'm willing to entertain suggestions - and, of course, I'm willing to check dialogues for you (a person looking at your dialogue can always catch things a tool won't!)

May 19, 2013
Introducing v1.06!
- Checks to see if the number of { matches the number of } on a line.
- Checks to see if the number of [ matches the number of ] on a line.
- Checks for [},{], which is a coding error.
- Checks for [ :], which is a probable illegal colon use (can indicate the line starts the wrong way, like [intro :"line"]).
- Checks for [style:], [check:], [mood:], [next:], which are improper uses of these attributes.
- Added suggested fixes for [style:], [set:], [check:], [mood:], [next:].
Link in OP.
 

xkwizit

Avid Affiliate
Joined
Oct 11, 2012
Re: DialogueChecker (Latest version: V1.06, 19 May 2013)

Fine work sir ;)
Thank you for bringing those issues to my attention
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.07, 20 May 2013)

May 20, 2013
Introducing v1.07!
- Adds checkboxes for categories (Grammar, Syntax and Substitutes). You can enable and disable the checking of certain types of mistakes with this.
- Checks for [held:], provided it's not the start of a line (as held is a default trigger!)
- Checks if a line has 3 or more double quotes. If so, checks if the third double quote comes before a { character - if it does, it indicates a coding error.
Example: intro:"Say "Ahh!". Come on, open up!" {"style":"Him"}
Here, the third double quote is at [Ahh!"]. That's before the first { character, and thus it's an error. SDT will complain that it can't understand the line [Ahh!". Come on, open up!" {"style":"Him"}].
Link in OP.

I'm thinking about adding a Style category - this would allow me to put more dubious checks in there - things like [?.] and [!.] are currently Grammar, but they could be in Style (since I feel that ?... is wrong and should be ? ... instead but others may think otherwise).
How does everyone else feel about this?
 

BuckWild

Modder
Streamer
Joined
Feb 3, 2013
Re: DialogueChecker (Latest version: V1.07, 20 May 2013)

Just putting this out there. Sure, the chat is a great place to get attention, but most of the users (registered or not) don't really care for bug-fixing. They just got the stuff they want, then fap away.

If you keep updating and posting here, your thread will still be popular, since it'll be pretty high on the recent topics list, AND the people who regularly look for dialogues (and all the dialogue bug-seekers) will see this thread and think of it as heaven. Don't worry if you don't seem to get enough gratitude from users. In hindsight, it'll be all those dialogue creators with bugs in their dialogues getting fixed who will see you as their savior.

I say update when you feel like an update should be made, and not have to worry about not getting visual gratitude from others. You're more popular than you think. But what Madgod say was true. Post updates in the chatbox too much, and people will start to ignore it. I almost did, then I realized I don't want this beneficial utility to bite the dust. I love 0 error dialogues.

You've got support from me. Do as you want, but make sure this tool doesn't disintegrate.
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Re: DialogueChecker (Latest version: V1.07, 20 May 2013)

Good stuff Pim, I'll be sure to use this for my future projects :)
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.08, 25 May 2013)

May 25, 2013
Introducing v1.08!
- Added checks so the checker will TRY not to parse your comments! This should help reduce the amount of false positives. Lines starting with - are not checked either.
- Added checks for %01, with suggested fix replacing with Б. It's not WRONG, it's a matter of style.
- Added checks for nested triggers ([in[test]tro]).
- Added checks for lines that have 2 or more ", but don't have a colon (it could have been forgotten).
- Added checks for empty triggers [[]].

Things like [%01] are a good example of why I'd add a Style category - it's not wrong - it's a matter of style. Personal preference, due to something I feel to be a clear advantage (dialogue that's easier to oversee).
SWFCabin seems slow today, so try downloading the attachment if the online host won't work.
I'm running out of things to add to the checker...
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.09, 27 May 2013)

May 27, 2013
Introducing v1.09!
- Fixed a bug in the checking of nested triggers. This caused a lot of false positives in v1.08.
- Added checks for [dialogue-name] and [initial-settings].

If you see the checker falsely detecting something, be sure to tell me so I can fix it sooner!
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.10, 29 May 2013)

May 29, 2013
Introducing v1.10!
- Added a checkbox for disabling the line/comment filter.
- Added check for illegal colons (if a line has :", and the : of that is the first occurance of :, check if there are colons between the first double and the second double quote.).
- The checker now removes Бs from a line if it can't find any mistakes. It then tries again to find mistakes in the line. This allows the checker to find mistakes masked by delay chars (so now you can finally test a dialogue that has those delay chars in them!)
- Added check for [ . ], as a result of encountering this whilst reviewing cookiemonste's dialogue.

Additionally, I'm wondering whether [?...] and [!...] should be whitelisted. Currently, the checker lists these as a mistake, but I don't see how you'd fix it.
Example:
wake:"What did just happened?..." <- this seems okay
wake:"What did just happened?." <- this seems bad
 

Gingerless Soul

Vivacious Visitor
Joined
Mar 22, 2013
Re: DialogueChecker (Latest version: V1.10, 29 May 2013)

Pim_gd said:
Additionally, I'm wondering whether [?...] and [!...] should be whitelisted. Currently, the checker lists these as a mistake, but I don't see how you'd fix it.
Example:
wake:"What did just happened?..." <- this seems okay
wake:"What did just happened?." <- this seems bad


I'm not sure if this answers your question, but I think putting the question mark or exclamation point before an ellipsis is grammatically correct and it is equally correct to have the ellipsis precede the punctuation.
In your example the first statement is correct but the second one is incorrect. So I think you should whitelist them.
 

Pim_gd

Content Creator
Joined
Jan 25, 2013
Re: DialogueChecker (Latest version: V1.11, 4 June 2013)

June 4, 2013
Introducing v1.11!
- Whitelisted [!...] and [?...]
- Added a special check for illegal asterisks: The checker parses the initial_settings line to identify the variables the dialogue uses. If an undefined variable is referenced, the checker raises an error. For this function to properly work, I suggest placing your initial_settings line ABOVE all other lines.

To those who are using this:
Is there a need for customizable line breaks? Notepad picks up both \r and \n, which causes large spaces. I can change it, but right now the linebreak is hardcoded and it'd be better to change it sooner than later (it'd already be quite some work right now).
 

Users who are viewing this thread

Top


Are you 18 or older?

This website requires you to be 18 years of age or older. Please verify your age to view the content, or click Exit to leave.