Welcome to Part 4 of the Tease AI script overview. Before we get started with Edging and Edge Taunts, let's take a real quick look at the flow of a Tease AI session again. As you remember from Part 1, Tease AI flows like this:
Start -> (Taunts -> Module -> Link) -> End
The domme will taunt you as you stroke for a certain amount of time, then move to a randomly selected Module. This transition is seamless, so you will still be stroking when each Module begins. At some point in each Module, you will be told to stop stroking, or you will be told to edge. You might be told any number of things in addition to that, but every Module will involve stopping or edging (and then stopping) at some point. So how does edging work when writing Tease AI scripts? Well, let's make a very small Module and see for ourselves:
Looking at this you might be thinking, "Is...this a complete Module? There's nothing here!"
Modules can be much more involved and interesting than this, but yes, this is a complete, functional Module that will work in Tease AI. When Tease AI reaches the @Edge Command, the script pauses itself as the domme begins using Edge Taunts. Once the user says he's close, the program will automatically tell him what to do (stop stroking or hold the edge. If the domme has the user hold the edge, then she'll start using Hold The Edge Taunts, which folow the same principle. Once the domme is finished making him hold the edge, she'll tell him to stop). Once the domme tells the user to stop, the program continues with the script. That's why as a scripter, you don't have to worry about writing things for the domme to say as the user gets close, or try to map out how long that will take. It also means that there's never any pause as the domme "waits" for the user to edge. The domme in Tease AI remains engaged as you edge, taunting you about getting close in any wicked way you can think of. As a scripter writing a Module, all you have to do is use then @Edge command, and then keep writing from the point the user was told to stop. Stopping at the edge or holding the edge is randomly decided by the domme, which means the user will never know exactly what the domme will do.
So what can we do with Edge Taunts? Same thing we do with Stroke Taunts! Let's make a few right now:
As you try to get close for the domme, she'll randomly choose a line from this list and taunt you with it. And since this is a List-type script, we can use Command Filters to enhance the experience:
You can also use Commands as well:
Now there's one Command Filter that's unique to Edge Taunts, and that's @LongEdge. To understand this Command Filter, let's take a quick look at the Sub Settings Panel:
If you look in the lower right-hand corner, you'll notice a section where the user can set a range for "Long Edge Threshold" in seconds. What this means is, once the user has passed this amount of time after initially being told to get to the edge, the domme will consider that as taking a long time to get to the edge. Each user can set this value low or high depending on his own physical nature, or the program can look at how long he takes to get close on average if he checks the "Use Avg" box. You'll notice in the "Performance" section that two different average times to edge are tracked - While Stroking and Rest. (In this picture, the times say "WAIT" because the program requires you to edge 5 times in each case before it creates an average, and I personally have not used the program to edge since my last settings reset, I was working on other features) The program keeps track of two different averages depending on whether or not the user was already stroking when told to edge. I think this is important, because personally I'll have much different edge times if I'm told to get close after I've been stroking for a while, compared to getting close from nothing at all. When the "Use Avg" box is checked, the program knows which average to use for any given situation.
So how can this help us make good Edge Taunts? With the Edge Taunt-specific Command Filter "@LongEdge". These are simply Taunts that the domme will only start using once the user is considered edging for too long. Let's add a few Taunts to our Edge Taunts using this Command Filter:
With this Command Filter, and the options each individual user has for determining when it activates, this keeps edging expectations from the domme relevant and tailored to each individual who uses Tease AI. I'm sure you've probably played through more than one webtease where the domme tells you to edge, but then suddenly stops everything because you didn't get close enough in time - even though you really NEEDED more time to get close like she was asking. What's even worse is when the tease will set you back to an earlier point as a result of this and you have to do large sections of it over. For me, it just gets to the point where I try to anticipate those sections and just click the "Edge" button to progress, even though I wish I could just keep playing through at my own pace. With Tease AI, every individual user's pace can be exactly accounted for, with no extra effort required from scripters.
Of course, now that we're tailoring what "taking too long to edge" means for each person, we can give them the option to get punished for taking too long if they wish. This brings me to the Edge Taunt-specific Command - @InterruptLongEdge
Tease AI uses a type of script called Interrupts which we'll get more into later. But for now let's just describe them as doing exactly what it says on the tin - They interrupt the action and move you to something else. When combined with Tease AI's Response system, they give you the ability to affect the program in very powerful ways, without anything needed to be hard-coded. But we'll get more into Responses and Interrupts next time. For now let's focus on a System Interrupt, @InterruptLongEdge. Let's use a few in our Edge Taunts, and then walk through what happens when the program calls them:
As you can see, these will only be called if the user has been edging too long and the "Long Edge Interrupt" box is checked. So what happens when the @InterruptLongEdge Command is used? The program looks in the Interrupt folder and checks for all files that begin with "LongEdge_". It then randomly selects one of these files and runs it as a script. Let's take a look at one in my domme's folder called "LongEdge_I Don't Think You're Ready.txt":
With this Interrupt, the domme will have the sub stop stroking. Every Interrupt is considered a Module, so when it gets to the @End Command, it will move on to a Link script, that will cycle it back to more stroking as the Taunt cycle begins again. Like a Module, you can do anything the scripting system allows in an Interrupt - be as imaginative as you want.
So now that you know how edging works, what about holding the edge? This is actually even simpler : D
Any time you tell the domme you're close to the edge, she will automatically decide what to do based on her level and a couple other factors. The domme decides whether you should stop stroking or hold each edge. This, combined with many other aspects of Tease AI help us create a very unique experience across many playthroughs, even in cases where we might repeat the same scripts! Now you might be thinking that spontaneity is great, but is it possible for the scripter to force the domme to make certain choices for the sake of a scenario? Yes it is! The following Commands are available to influence the domme's decision or leave it up to her:
@Edge - Domme decides whether you hold it or stop stroking
@EdgeHold - Domme will make you hold it when you get close
@EdgeNoHold - Domme will tell you to stop stroking when you get close
@EdgeToRuin - Domme will make you ruin the orgasm after deciding whether to make you hold it or not
@EdgeToRuinHold - Domme will make you hold then ruin it
@EdgeToRuinNoHold - Domme will make you ruin it the second you get close
@EdgeToRuinSecret, @EdgeToRuinHoldSecret, @EdgeToRuinNoHoldSecret - Just like the previous three EdgeToRuins, except the domme won't taunt you about it or let you know it's coming
As you can see, we can even have the domme ruin an edge if we want. This lets us create some pretty great Edge Taunts as well:
@RuinTaunt is a Command specific to Edge and Hold The Edge Taunts, and will only be randomly called if the secret options for EdgeToRuin weren't used. Yeah... Ruined orgasms are pretty great.
But getting back to holding the edge now. Once the domme tells the user to hold the edge, she starts drawing from Hold The Edge Taunts until she decides to let him stop. We can take a look at a few of mine just to get an idea of how they look:
So, exactly how long does the domme keep us on the edge? As you can see from the Sub Settings panel above, we have two choices: We can set our own hard limit in seconds, or we can set that value to 0 for no max amount. That doesn't mean you could hold the edge indefinitely, or even necessarily for a long period of time. That simply means the domme will decide her own maximum amount of time based on her level. A level 1 domme probably won't hold you there for longer than 30 seconds at MOST, where as if you leave it in the hands of a level 5 domme... All I can say is godspeed, my son. There's even some nice Command Filters for Hold The Edge Taunts available for people who like holding the edge for prolonged periods of time, and you can imagine at what point they become active:
@1MinuteHold
@2MinuteHold
@3MinuteHold
@4MinuteHold
@5MinuteHold
@10MinuteHold
@15MinuteHold
@30MinuteHold
@45MinuteHold
@60MinuteHold (Yes, some of us are masochists)
So now that we know how Edging and Holding The Edge works, let's talk for a minute about how Tease AI handles CBT, because it uses a very similar system. To understand how the CBT system works, let's look at in use in one of the Modules I've already created:
You probably noticed the use of @EdgeNoHold there, so you know she's making us edge but we'll never end up having to hold it in this case. But a little further down we see the Command @CBTBalls, but no actual CBT instructions. That's because, much like Edging, CBT is handled automatically by the program and resumes at the same point in the script when the CBT has finished. So what happens in this case when @CBTBalls is called? Let's find out by taking a quick peek at the domme's CBT folder:
When CBTBalls is called, it the program randomly selects a line from CBTBalls_First.txt. Let's look at an excerpt from that file:
If the domme decides to keep going, all subsequent instructions are pulled from CBTBalls.txt. Let's take a look at an excerpt from that file now:
The first thing you'll notice is the new Command Filter, @CBTLevelX. If you look back to the Sub Settings panel screenshot, you'll notice a setting for CBT Level. This allows the scripter to filter CBT commands by severity, and the user to only be given commands that fit his personal CBT capacity. Once the domme is satisfied that she's tortured you enough, the tease picks back up at where @CBTBalls left off in the script. There's three possible @CBT Commands:
@CBTBalls - Outlined above
@CBTCock - Works the same as balls, just focuses on the cock
@CBT - Domme randomly decides between administering CBT to the user's cock or balls
Now you may have noticed that the sub also has the option to disable either aspect of CBT. If the sub has a CBT option disabled when it is called, the script will simply keep moving forward instead of doing the CBT routine. It will also provide feedback for one of the best aspects of Tease AI's interface, but we'll have to get into that a little later down the line. : )
I'll leave this here for now. In the next part I'll be discussing Responses and Interrupts, which will show you two of the most powerful features of Tease AI, and how they make the potential of scripting for this program nearly limitless.
Tease AI Scripting Overview Part 4: Edging and CBT
Moderator: 1885
-
- Explorer
- Posts: 7
- Joined: Sat Aug 15, 2015 7:11 am
- Gender: Male
- Sexual Orientation: Straight
- I am a: Submissive
Re: Tease AI Scripting Overview Part 4: Edging and CBT
So much awesome! I really enjoy what you've done with this program!
My first question is, is there a way to have the list items in CBTBalls, (or CBTCock), call out to a script? I've tried using:
My first question is, is there a way to have the list items in CBTBalls, (or CBTCock), call out to a script? I've tried using:
Which works, but not very reliably. I was hoping to be able to use the CBT lists to randomly select punishment scripts/modules instead of the one liner method.Going to Ball_Torture01! @Interrupt(Ball_Torture01)
Going to Ball_Torture02! @Interrupt(Ball_Torture02)
- 1885
- Explorer At Heart
- Posts: 648
- Joined: Fri Jul 08, 2011 4:27 am
- Gender: Male
- Sexual Orientation: Straight
- I am a: Switch
Re: Tease AI Scripting Overview Part 4: Edging and CBT
Can you clarify what you mean by "not very reliably"? What behavior does it do that makes this an unreliable method? This isn't something I've actually tried to do before so, I'm interested to hear what's happened in your attempts.djord wrote:So much awesome! I really enjoy what you've done with this program!
My first question is, is there a way to have the list items in CBTBalls, (or CBTCock), call out to a script?
Which works, but not very reliably. I was hoping to be able to use the CBT lists to randomly select punishment scripts/modules instead of the one liner method.
I can think of a couple ways to do this in the scripts themselves, such as stacking @Chance Commands, like:
- I want to punish those balls a bit @Chance50(CBT2-3)
@NullResponse @Interrupt(Ball_Torture01)
(CBT2-3)
@NullResponse @Chance50(CBT3)
@NullResponse @Interrupt(Ball_Torture02)
(CBT3)
@NullResponse @Interrupt(Ball_Torture03)
-
- Explorer
- Posts: 7
- Joined: Sat Aug 15, 2015 7:11 am
- Gender: Male
- Sexual Orientation: Straight
- I am a: Submissive
Re: Tease AI Scripting Overview Part 4: Edging and CBT
I'm attempting to see if the Interrupt will catch in either of the CBTBalls files, but it seems to wait until the last iteration to allow the @Interrupt.
Domme Level 5
Apathy Level 5
The files I've created for testing purposes:
Scripts/Domme/Vocabulary/Responses/Test.txt
Domme Level 5
Apathy Level 5
The files I've created for testing purposes:
Scripts/Domme/Vocabulary/Responses/Test.txt
Scripts/Domme/CBT/CBTBalls.txt
- Spoiler: show
Scripts/Domme/CBT/CBTBalls_First.txt
- Spoiler: show
Scripts/Domme/Interrupt/LV501BT.txt (LV502BT.txt follows the same template)
- Spoiler: show
This is what happens:
- Spoiler: show
- Spoiler: show
- 1885
- Explorer At Heart
- Posts: 648
- Joined: Fri Jul 08, 2011 4:27 am
- Gender: Male
- Sexual Orientation: Straight
- I am a: Switch
Re: Tease AI Scripting Overview Part 4: Edging and CBT
Okay, I'll verify it but judging by that it seems that I forgot to have Interrupts cancel out of @CBT routines. This should be easy enough to fix so that your scripts will work as expected, and I'll get that in the next patch. I have a bit to catch up on and loose ends in the code to address from my hiatus, so please bear with me but I'll get this sorted for when the next patch makes it out.djord wrote:I'm attempting to see if the Interrupt will catch in either of the CBTBalls files, but it seems to wait until the last iteration to allow the @Interrupt.
-
- Explorer
- Posts: 7
- Joined: Sat Aug 15, 2015 7:11 am
- Gender: Male
- Sexual Orientation: Straight
- I am a: Submissive
Re: Tease AI Scripting Overview Part 4: Edging and CBT
Awesome! Thank you! :)
Who is online
Users browsing this forum: dfx and 9 guests