Advanced dialogue settings (1 Viewer)

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
Leela said:
This brings up another question how do we compare variables? if (X>Y) then

Seems to me JSON isn't able to do that directly. It's just an data-interchange format, not a programming language ;)

You can only check if one or more variables are below, at or above given values.
So You can't compare the values themselves, only certain conditions of the values. Like checking if x and y are both above/equal to/below different or the same set value(s).

To check how much the values of the variables differ, You'd have to use many seperate lines to check the possible combinations of values.

Example:
Lets say we have the variables "swallowed" and "drooled". Each time SHE swallows or drools the value of the proper variable is raised by one. HE shoots just three loads into HER mouth. The possible combination of values would be:

swallowed = 0, drooled = 0
swallowed = 1, drooled = 1
swallowed = 1, drooled = 0
swallowed = 2, drooled = 0
swallowed = 2, drooled = 1
swallowed = 3, drooled = 0
swallowed = 0, drooled = 1
swallowed = 0, drooled = 2
swallowed = 1, drooled = 2
swallowed = 0, drooled = 3

That'd be ten lines in the dialogue just to check if SHE swallowed or drooled more often.. Which would enhance the workload of SDT a lot and slow the game down quite a lot. Just one load to swallow would add five more checks. The fifth load would add another six checks.. and so on..

As the example shows, this isn't a really good way to go ^^
 

phoenix123

Potential Patron
Joined
Jan 25, 2012
is it possible to set multiple values for a single variable, so whenever the variable is called, it will randomly select one of the values?

for instance, if I could do something like- "word":"cock"/"dick"/"shaft"/"whatever"
and so that way whenever I have a sentence, such as: "Let me suck your *word*!", it will choose one of the values I inputted.

Is this concept supported? Can I add wildcards like this, because imo it would be very useful for diversity. If anyone can help I'd appreciate it :)
 

Leela

Potential Patron
Joined
Mar 28, 2011
@ phoenin123: Theoretically JSON can contain an array, but I don't think SDT would know what to do with one.

I have another request for out god, Konashion. I wish there was a reliable way to determine if her mouth was full. Granted it's much more likely if a thought mode dialog is triggered. But she can trigger a thought when her mouth is not busy otherwise.

In the scrip I'm working on she would appreciate not being forced. So "into" or "general" thoughts triggered when her mouth was busy would indicate the he's not forcing her. But without knowing for sure her mouth is busy I can't rely on that being the case.

So far the new controls are proving really great for crafting more complex stories.
 

SDT-FAN

Potential Patron
Joined
Dec 14, 2012
phoenix123 said:
is it possible to set multiple values for a single variable, so whenever the variable is called, it will randomly select one of the values?

I have one or other idea how the code might look like in order to realize this:

How the Text would look like: Test random words like: two

intro:"Test random words like: *word*"{"set":{"word":{"random":"aList"}}}
aList:["one","two","three"]
The code above needs to know the command random to work!
For the internal random use, like wildcards of the cough or interrupt values, we need to know how to insert a sentence value in an already existing sentence.
intro:"Test random words like: *word*"{"set":{"word":"[aList]"}}
aList:"one"
aList:"two"
aList:"three"

This sentence looks like this unfortunately:
Test random words like:
--new sentence--
one

Excuse me if i made mistakes.
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
@Leela: If you want to check for HIM not forcing HER, wouldn't the "held":"false" check by much more what you're looking for? As for the "no thought lines when mouth available", you can simply make a large copy number of non-thought general lines, and only a single one that is thought styled. This way, it's very unlikely that the thought line will be selected when her mouth is available, but it will always be chosen when it is full.

@SDT-FAN: Yeah, the problem lies in incorporating the randomized word mid-sentence. Doesn't *FINISHES* do this already? For example:

general:"Wow, your *FINISHES* is so big!"
finish0:"cock"
finish1:"dick"
finish2:"purple-headed warrior"

This would enter the randomized word depending on how many times HE has cum. That shows that there's support for this general function, we just need the code to generalize it and make new variables.The simple solution available now is to randomize entire sentences. For example:

general:"Think of a number! [number]"
number:"Okay, two is the one."
number:"I must go with four".
number:"Nine is my chosen number."
number:"Five, I choose you!"

I did this in a dialogue to make a few generic "pleasure sounds" from him that I could then incorporate into any type of line to make the dialogue much more varied with little extra code.
 

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
SDT-FAN said:
I have one or other idea how the code might look like in order to realize this:

How the Text would look like: Test random words like: two

intro:"Test random words like: *word*"{"set":{"word":{"random":"aList"}}}
aList:["one","two","three"]

Would be nice to have an option like that..

SDT-FAN said:
For the internal random use, like wildcards of the cough or interrupt values, we need to know how to insert a sentence value in an already existing sentence.

intro:"Test random words like: *word*"{"set":{"word":"[aList]"}}
aList:"one"
aList:"two"
aList:"three"

This sentence looks like this unfortunately:
Test random words like:
--new sentence--
one

You could get the same result as in Your second spoiler by doing it like this:

intro:"Test random words like: " {"next":"aList"}}
aList:"one"
aList:"two"
aList:"three"

not that that would help reaching the goal 8)

Another option to get a random word in a line would be:

intro:"" {"set":{"word":"one"}, "next":"intro01"}
intro:"" {"set":{"word":"two"}, "next":"intro01"}
intro:"" {"set":{"word":"three"}, "next":"intro01"}
intro:"" {"set":{"word":"four"}, "next":"intro01"}
intro:"" {"set":{"word":"five"}, "next":"intro01"}

intro01:"The word is *word*"

.. but one could get the same result by just using several "intro" lines with the different words.

But You could use it, to make some lines more random, like:

intro:"" {"set":{"word":"angry"}, "next":"intro01"}
intro:"" {"set":{"word":"horny"}, "next":"intro01"}
intro:"" {"set":{"word":"wet"}, "next":"intro01"}
intro:"" {"set":{"word":"tired"}, "next":"intro01"}
intro:"" {"set":{"word":"bored"}, "next":"intro01"}

intro01:"I'm sooo *word*!"
intro01:"I'm really getting *word* now."
intro01:"If You wanted to get me *word*, You did it."
intro01:"If You don't fuck me right now, I'll be getting even more *word*"
intro01:"I'm *word*. Really fucking *word*. Can't even imagine I could get more *word* than I am now"

So by doing this, You get 25 different lines to be displayed and only have to write 10 - or only 6, if You use ctrl-c, ctrl-v + editing a bit ^^

Oh.. and while testing the above, I noticed another little tidbit:

intro:"" {"set":{"word":"angry", "mood":"[ANGRY_MOOD]"}, "next":"intro01"}
intro:"" {"set":{"word":"horny", "mood":"[AHEGAO_MOOD]"}, "next":"intro01"}
intro:"" {"set":{"word":"wet", "mood":"[AHEGAO_MOOD]"}, "next":"intro01"}
intro:"" {"set":{"word":"tired", "mood":"[HAPPY_MOOD]"}, "next":"intro01"}
intro:"" {"set":{"word":"bored", "mood":"[NORMAL_MOOD]"}, "next":"intro01"}

intro01:"*mood* I'm really getting *word* now."
intro01:"*mood* If You wanted to get me *word*, You did it."
intro01:"*mood* If You don't fuck me right now, I'll be getting even more *word*"
intro01:"*mood* I'm *word*. Really fucking *word*. Can't even imagine I could get more *word* than I am now"

This not only displays random options for "word" but also changes her mood ;)

Guess there are many options to use the different actions (like [ANGRY_MOOD] etc., [ARMS_LEGS] etc., etc.) by putting them into "set" lines and then calling them up..
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
I think I have found a way to check for ranges or multiple variables! For example, let's say you want to display one line when a variable is 1-5 and one when it's 6 or more, and neither when it's 0 or less. Then you could do:

line:"[line1]" {"check":{”variable":">0"}}
line1:"rather variable" {"check":{”variable":"<6"}}
line1:"very variable" {"check":{”variable":">5"}}

I like T0mcat's solution for the "insert random word" puzzle, mostly because I came up with almost exactly the same idea myself :p
 

SDT-FAN

Potential Patron
Joined
Dec 14, 2012
Slingerbult said:
line:"[line1]" {"check":{”variable":">0"}}
line1:"rather variable" {"check":{”variable":"<6"}}
line1:"very variable" {"check":{”variable":">5"}}

Sorry, but you´re checking for a variable thats greater then 0 and less then 6, just let it like this:

line:"rather variable" {"check":{”variable":"<6"}}
line:"very variable" {"check":{”variable":">5"}}

Should be there more to consider tell me please, maybe i dont get your exapmle.
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Isn't 0 less than 6? So the first line will be playee if the variable is set to 0, right? Anyway, it could be defined for any interval, such as playing a line if a variable is 3-6.
 

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
Slingerbult said:
Isn't 0 less than 6? So the first line will be played if the variable is set to 0, right? Anyway, it could be defined for any interval, such as playing a line if a variable is 3-6.

That is the reason for the first line ;)

line:"[line1]" {"check":{”variable":">0"}}

Checks if the value of the variable is >0. If so, line1 is called up next. If it isn't, only an empty speech bubble will be displayed for a moment,

line1:"rather variable" {"check":{”variable":"<6"}}

As it has already determined by the previous line, this line will only come up when the value of the variable is in the range from 1 to 5

line1:"very variable" {"check":{”variable":">5"}}

... and this line will only display, if the value of the variable is 6 or more.

So, sorry SDT-FAN, but You're wrong.. the first line IS needed to check for two ranges from 1-5 and 6-more ^^
 

SDT-FAN

Potential Patron
Joined
Dec 14, 2012
initial_settings:{"variable":0}

all:"CLEAR"
intro:"Without Check" {"check":{”variable":0}}
intro:"Start Test[intro1]" {"check":{”variable":">0"}}
intro1:"rather variable" {"check":{”variable":"<6"}}
first_throat:"Push" {"set":{”variable":"+1"}}
The Log tells me:
0: Loading custom dialogue.
------------------------------
1: Reading initial settings.
2: Okay.
3: Storing variable = 0
4: Adding custom line: "Push"
5: Adding custom line: "rather variable"
6: Adding custom line: "Without Check"
7: Adding custom line: "Start Test[intro1]"
8: Done.
------------------------------
9: Playing line "Start Test[intro1]"
10: Playing line "rather variable"
And the Check for "<6" starts from 0 to 5
 

Leela

Potential Patron
Joined
Mar 28, 2011
The way I'm checking for ranges right now is by using 2 copies of the counter. Which is a bit long winded but it's easy to understand and always works.

line:"Between 5 and 10"{"check":{"countA":">5","countB":"<10"},"set":{"countA":"+1","countB":"+1"}}

Hopefully Konashion will implement Boolean logic in the check statement. Until then we'll need stupid tricks.
 

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
SDT-FAN said:
initial_settings:{"variable":0}

all:"CLEAR"
intro:"Without Check" {"check":{”variable":0}}
intro:"Start Test[intro1]" {"check":{”variable":">0"}}
intro1:"rather variable" {"check":{”variable":"<6"}}
first_throat:"Push" {"set":{”variable":"+1"}}
The Log tells me:
0: Loading custom dialogue.
------------------------------
1: Reading initial settings.
2: Okay.
3: Storing variable = 0
4: Adding custom line: "Push"
5: Adding custom line: "rather variable"
6: Adding custom line: "Without Check"
7: Adding custom line: "Start Test[intro1]"
8: Done.
------------------------------
9: Playing line "Start Test[intro1]"
10: Playing line "rather variable"
And the Check for "<6" starts from 0 to 5

Can't rproduce.. on my PC checking for >0 doesn't come up with "true" when the variable is 0

Test Code:
initial_settings:{"variable":0}

all:"CLEAR"

intro:"Without check" {"check":{"variable":0}}
intro:"Start test [intro01]" {"check":{"variable":">0"}}

intro01:"result (1-3) is *variable*" {"check":{"variable":"<4"}}
intro01:"result (4-more) is *variable*" {"check":{"variable":">3"}}

pulled_up:"Pulled" {"set":{"variable":"+1"}, "style":"Him"}

Log:
0: Loading custom dialogue.
------------------------------
1: Reading initial settings.
2: Okay.
3: Storing variable = 0
4: Adding custom line: "Without check"
5: Adding custom line: "Start test [intro01]"
6: Adding custom line: "result (1-3) is *variable*"
7: Adding custom line: "result (4-more) is *variable*"
8: Adding custom line: "Pulled"
9: Done.
------------------------------
10: Running checks for line: "Without check"
11: Okay.
12: Running checks for line: "Start test [intro01]"
13: Line will not play: "variable" needs to be >0 but is currently set to 0
14: Playing line "Without check"
15: Running checks for line: "Without check"
16: Okay.
17: Running checks for line: "Start test [intro01]"
18: Line will not play: "variable" needs to be >0 but is currently set to 0
19: Playing line "Without check"
20: Playing line "Pulled"
21: variable: increment by 1 = 1
22: Running checks for line: "Without check"
23: Line will not play: "variable" needs to be 0 but is currently set to 1
24: Running checks for line: "Start test [intro01]"
25: Okay.
26: Playing line "Start test [intro01]"
27: Running checks for line: "result (1-3) is *variable*"
28: Okay.
29: Running checks for line: "result (4-more) is *variable*"
30: Line will not play: "variable" needs to be >3 but is currently set to 1
31: Playing line "result (1-3) is *variable*"
32: Playing line "Pulled"
33: variable: increment by 1 = 2
34: Running checks for line: "Without check"
35: Line will not play: "variable" needs to be 0 but is currently set to 2
36: Running checks for line: "Start test [intro01]"
37: Okay.
38: Playing line "Start test [intro01]"
39: Running checks for line: "result (1-3) is *variable*"
40: Okay.
41: Running checks for line: "result (4-more) is *variable*"
42: Line will not play: "variable" needs to be >3 but is currently set to 2
43: Playing line "result (1-3) is *variable*"
44: Playing line "Pulled"
45: variable: increment by 1 = 3
46: Running checks for line: "Without check"
47: Line will not play: "variable" needs to be 0 but is currently set to 3
48: Running checks for line: "Start test [intro01]"
49: Okay.
50: Playing line "Start test [intro01]"
51: Running checks for line: "result (1-3) is *variable*"
52: Okay.
53: Running checks for line: "result (4-more) is *variable*"
54: Line will not play: "variable" needs to be >3 but is currently set to 3
55: Playing line "result (1-3) is *variable*"
56: Playing line "Pulled"
57: variable: increment by 1 = 4
58: Running checks for line: "Without check"
59: Line will not play: "variable" needs to be 0 but is currently set to 4
60: Running checks for line: "Start test [intro01]"
61: Okay.
62: Playing line "Start test [intro01]"
63: Running checks for line: "result (1-3) is *variable*"
64: Line will not play: "variable" needs to be <4 but is currently set to 4
65: Running checks for line: "result (4-more) is *variable*"
66: Okay.
67: Playing line "result (4-more) is *variable*"
68: Playing line "Pulled"
69: variable: increment by 1 = 5
70: Running checks for line: "Without check"
71: Line will not play: "variable" needs to be 0 but is currently set to 5
72: Running checks for line: "Start test [intro01]"
73: Okay.
74: Playing line "Start test [intro01]"
75: Running checks for line: "result (1-3) is *variable*"
76: Line will not play: "variable" needs to be <4 but is currently set to 5
77: Running checks for line: "result (4-more) is *variable*"
78: Okay.
79: Playing line "result (4-more) is *variable*"

As the lines of Your code are added in the wrong order in Your log and as Your log doesn't show any "Running checks for line:" I guess there might have been something wrong with Your code, when You tested it.. 8)
 

SDT-FAN

Potential Patron
Joined
Dec 14, 2012
T0mcat said:
... I guess there might have been something wrong with Your code ...

MUAHAHA ... i´ve found it ... but really i was testing and searching like an idiot until I saw the quotation marks !!! Yes need to look hard n it but the first ones were not the right quotation marks... This one is working like yours:

intro:"Without Check" {"check":{"variable":0}}
intro:"Start Test[intro1]" {"check":{"variable":">0"}}
intro1:"rather variable" {"check":{"variable":"<6"}}
first_throat:"Push" {"set":{"variable":"+1"}}
 

recreation

Potential Patron
Joined
Nov 2, 2011
variable >0 is allways greater than zero
an easy workaround is to check if the variable is greater OR equals zero: >=0
intro:"Start Test[intro1]" {"check":{"variable":">=0"}}

zero then is the first number, so if you want to count 5, 4 is the highest number.
 

T0mcat

Avid Affiliate
Joined
Feb 5, 2012
SDT-FAN said:
This one is working like yours:

intro:"Without Check" {"check":{"variable":0}}
intro:"Start Test[intro1]" {"check":{"variable":">0"}}
intro1:"rather variable" {"check":{"variable":"<6"}}
first_throat:"Push" {"set":{"variable":"+1"}}

Not really ^^
'Cause it doesn't do what Slingerbult, who came up with this, wants it to do.

Nothing is supposed to be displayed, when the value of the variable is zero
One line is to be displayed, when the value of the variable is higher than zero, but lower than five
Another line is to be displayed, when the value of the variable is five or higher..

I only out those "without check" and "start test" stuff in, because You included it in Your code ^^

the real code would look like this

initial_settings:{"variable":0}

all:"CLEAR"

intro:"[intro01]" {"check":{"variable":">0"}}

intro01:"result (1-3) is *variable*" {"check":{"variable":"<5"}}
intro01:"result (4-more) is *variable*" {"check":{"variable":">4"}}

pulled_up:"Pulled" {"set":{"variable":"+1"}, "style":"Him"}
 

Slingerbult

Content Creator
Joined
Sep 15, 2012
Small but rather important finding from toying with the new system:

Adding or not adding quotation marks to pure numbers is not a matter of choice. You need to NOT add quotations to a straight number to make it work, at least in a set-command.

For example, consider this test dialogue:

all:"CLEAR"
initial_settings:{"Variable":"0"}
pulled_up:"Pulled up *Variable* [checkVariable]" {"set":{"Variable":"+1"},"style":"Thought"}
checkVariable:"Reset" {"check":{"Variable":">5"},"set":{"Variable":0},"style":"Thought"}

If you use this test dialogue and pull her up (and leave her there), she will say (or rather think) "Pulled up" and count from 1 to 5 or 6, then say "Reset" and start over from 1 again. Otoh, if you change the last line to:
checkVariable:"Reset" {"check":{"Variable":">5"},"set":{"Variable":"0"},"style":"Thought"}

She will still say Reset but the Variable will not be reset to 0, because the 0 is in quotation marks. That is, she keeps counting 6, 7, 8... Let me know if you can't reproduce this. Oh, and Merry Christmas!
 

Zan

Potential Patron
Joined
May 16, 2012
I've been playing around with these advanced settings, and created a BE-based dialogue around them. However, despite it working fine earlier today, it has suddenly stopped working at all. As in, the game says it's loaded and shows the title, but she never says anything, and when I open the in-game editor, it shows completely blank. Would anyone mind taking a look at it to see what I've messed up?

EDIT: Apparently the in-game editor does show the *finishes* wildcards. Which if anything is more confusing to me.
EDIT2:Nvm, through a process of elimination I have found the problem. It seems to be working now.
 

tanksk1

Potential Patron
Joined
Jul 28, 2012
I've got a problem.

I want a line to play when a value is between 10 and 20 for example.

Line1:"stuff"{"check":{"value":">10"},{"value":"<20"}}

What I want is for both requirements [be above 10] as well as [be below 20] in order for the line to play.

The problem is only one of the requirements has be to met and the line plays.
 

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.