Resource icon

Custom Automation 7.0

Please register for a free account to download
This should be the final major version. I fixed some bugs with VALUE_CUSTOM interacting with random/ramping functions, removed a debug message I accidentally left in the randomizing portion of the code, and added the ability to set a line you wish to jump to once a specific condition has been met. For more details on the line switch, read the advanced features section on the updated main area of the download page.
  • Like
Reactions: NoctSoul
This should not change anything you did for v6.0, but it fixes interaction between value_custom and ramping, as well as both adding extra options that can pair with value_custom, and allowing you to change multiple values from one value_custom call.

ALL configuration values can now be changed from value_custom, including y-values. this includes min/max, speed up/down, delay up/down, frequency of ramp increases, values of ramp increases, random chances, and random scale values.
I completely overhauled the code to add more flexibility and remove some bottlenecks that caused strange looking behavior in some cases. Many more options now, but some of the triggers have changed. Below are the notes for the new version.
This is my first Mod attempt. I believe I have most of the bugs worked out, but let me know if you find any.
This mod adds 20 dialogue triggers.

Changes by version:
v6: overhauled code to be more stable/have more options. Too many changes to list indivually, new functions/inputs below.

v5: added trigger to automate breaking through initial resistance, allows you to specify speed she moves down, and speed she moves back up seperately.
Mainly added to handle very large penis sizes where the other auto functions won't keep her pulled off long enough for the animation to clear her mouth, so it will not decrease her resistance further leading to never getting a deepthroat.

v4.2:Fixed major problem preventing custom functions from operating.
Logic changed/simplified to be much more reliable in most cases for very fast/slow automations.

v4.1: The mouse release was not occurring after a hold to balls trigger was used followed by a normal trigger so until a base auto function or stop_custom was called, or the player pressed and released the mouse button she would not take it in her mouth again. This has been fixed and the other triggers will release the hold.

v4: Fixed issue with non-oral positions always trying to reset to get in the penis in her mouth, and added 3 more new triggers: [START_LICKING_<speed>], [PRESS_BALLS_<speed>], and [MOVE_TONGUE_<IN/OUT>.

v3.2: Fixed [STOP_CUSTOM] trigger, and allowed slower speeds for [POSITION_CUSTOM], also made it less likely that the fix from 3.1 would trigger when it should not due to built in movement from breathing during very slow movements.

v3.1: Fixed issue with "missing" as the penis passes her mouth, so she just went alongside it.

Mod triggers:
[INIT_RESISTANCE_<level>]:
Sets the initial resistance to value that replaces <level>

Example: [INIT_RESISTANCE_75] will set the initial resistance to 75.

[HOLD_CUSTOM]:
Locks him/her in position so no movement will occur until command is canceled with an AUTO
setting, or another CUSTOM command.

[STOP_CUSTOM]:
Cancels the current CUSTOM command.

[PAUSE_CUSTOM]:
Freezes the current custom automation.

[CONTINUE_CUSTOM]:
Unfreezes the current custom animation, picking up exactly where it left off when pasue_animation was used.

[MOUSE_BUTTON_<position>]:
Simulates holding/releasing the left mouse button, position = down holds down, up releases, position is not case-sensitive. This allows for the dialogue writer to pull her up/down or move her alongside the penis.

[MOVE_TO_BALLS_<speed>]:
Moves her down to his balls. Speed argument specifies how fast she moves to his balls, if above ~60 or on very large penises may not activate mouse hold quickly enough. To insure it works properly, recommend using MOUSE_BUTTON_DOWN first.

[MOVE_TONGUE]:
Toggles tongue on or off, if the argument is either 'in', the tongue will be toggled off, if the srgument is 'out' otherwise it will be toggled on, the argument is not case-sensitive.

[VALUE_CUSTOM]:
Allows you to assign a single value as listed at the end of this file. Argument is a key value pair. Intended for use to modify a function that is already active, or to be followed by an ACTIVATE function.

Example: [VALUE_CUSTOM_MIN_30] will change the minimum x value to be 30% across the game window.

[INIT_RESIST_BREAK_<speed-going-down>_<(optional)speed-going-up>]:
Moves her up and down his penis with slight pauses (4 frames, or about 0.15 seconds) to allow animation to catch up. This allows her to clear his penis even at very high speeds so initial resistance will continue to degrade allowing an eventual deep throat. With the other custom triggers, at high speeds the animation would not catch up to the position fast enough, so she would begin going back down before she actually came off the penis. When pulling her off, it stops with a small (10-15 pixel) gap between her lips and the tip of the penis.

Example:
[INIT_RESIST_BREAK_100_20] would force her all the way down at 100% of max speed, then pull her back off at 20% speed.

For the following triggers, all values should be between 0 and 100. All x/y coordinates are percentages of maximum value, they represent mouse positions when auto is off. so x = 30 represents the mouse being placed 30% of the way across the screen from left to right. X coordinates can be replaced with words that will calculate the appropriate position automatically, these are:
'off': sets position to 0%.
'tip': places her lips near the tip of the penis.
'head':places her lips at the base of the head of the penis.
'center': attempts to place her lips at the center of the penis, value is calculated from initial resistance broken and no throat resist.
'hilt': attempts to place her all the way down the penis. Again, affected by current resistances.

To overcome initial resistance the penis MUST actually exit her mouth before pressing back in.

[X_CUSTOM_<min-x-coordinate>_<max-x-coordinate>_<x-speed-down>_<(optional)x-speed-up>)_<(optional)x-delay-down>_<(optional)x-delay-up>]:
Sets up a custom automation with default y values, only specify x values. Optional triggers have default values if unspecified, but you cannot skip them. So to do x-delay-down you MUST specify x-speed-up first. if speed/delay up are not set, they default to the value set for the down version. Delay down defaults to 3 frames.

Example 1: [X_CUSTOM_20_50_40] will move between a simulated mouse at 20%, and 50% and back at 40% of the maximum speed, at each end point it will stay for 3 frames before reversing directions.

Example 2: [X_CUSTOM_20_50_40_70_15] will move from a simulated mouse at 20%, over to 50% at 40% of max speed, it will then stay there for 15 frames before moving back from 50% to 20% at 70% of maximum speed where it will stay for another 15 frames before beginning again.

Example 3: [X_CUSTOM_tip_center_40_70_15_20] will move her lips from the tip of the penis to the center of the penis at 40% of max speed, it will then stay there for 15 frames before moving back from the center to the tip at 70% of maximum speed where it will stay for 20 frames before beginning again.

[FULL_CUSTOM_<min-x-coordinate>_<max-x-coordinate>_<x-speed-down>_<min-y-coordinate>_<max-y-coordinate>_<y-speed-down>_<(optional)x-speed-up>_<(optional)y-speed-up>_<(optional)x-delay-down>_<(optional)x-delay-up>]:
Same as previous except y values are also specified, y delays are not currently adjustable due to lack of visibility and size of trigger result.

[ACTIVATE_CUSTOM]:
Begins a function with ramping/random characteristics turned off, using current values for all settings, intended for use after a [VALUE_CUSTOM] call.

[POSITION_CUSTOM_<x-coordinate>_<y-coordinate>_<speed>]:
This trigger works much the same as the FULL and X triggers, but it smoothly transitions to the
specified point and stays there until another command, such as [AUTO_HARD] or [X_CUSTOM] is given.

Example: [POSITION_CUSTOM_tip_80_40] would cause her to move her lips to the tip of his penis, with the mouse simulated at 80% of the way down the screen. This movement will be at 40% of the maximum speed.

The next three triggers act the same, and have the same initial parameters as the X_CUSTOM triggers, but more parameters are added to each:
First is the random chance, this is the chance that it will update the current min/max, speed up/down, and delay up/down of the animation. The chance is equal to this parameter/1000 and can range from 0-1000. It is HIGHLY recommended that you stay under 100, as that would average out to a new set of values every 10 frames or ~.33 seconds.

The second new parameter is the range you want the random adjustments to occur in, i.e. if this parameter is 30, all parameters will be between 70% and 130% of the original value. For delay this is rounded off as delays are measured in frames. For min/max, the change is calculated from the average of the two, and then added to the original value i.e. if min = 20 and max = 50 with a random scale of 0.2, to update min, we take average min/max = 35 * 0.2 = 7, min + 7 = 27 so now it would be 27-50. The same would be done for max.

Each item has the scale calculated individually so if the given scale is 20% (parameter = 20) each would be multiplied by 0.8-1.2. One may be multiplied by 1.15 while another might get 0.83, they are independent of each other.

Note: Every time the values are updated, the values are taken from the GIVEN parameters not the current ones. So it will NOT stack as time goes on, these blocks have rather complex inputs, so be careful when using them.

RANDOM_CUSTOM requires you to specify EVERY value, while RANDOM_SPECIFY require min/max, speedDown, randomChance, and randomScale, then choose which additional components you wish to change. both start with TRIGGER_<min-x>_<max-x>_<speed-down-x>_<random-chance>_<random-scale>
RANDOM_CUSTOM then adds _<speed-up-x>_<delay-down-x>_<delay-up-x>
RANDOM_SPECIFY you add <key>_<value> pairs, where key is the value you wish to change, and value is value you wish to assign to that key.

[RANDOM_CUSTOM_<min-x>_<max-x>_<speed-down-x>_<random-chance>_<random-scale>_<speed-up>_<delay-down>_<delay-up>]:
[RANDOM_SPECIFY_<min-x>_<max-x>_<speed-down-x>_<random-chance>_<random-scale>_+key-value-pairs-if-desired]:
[RANDOM_ACTIVATE_<random-chance>_<random-scale>]:
Operate similarly to how X_CUSTOM does, with the extra parameters described above.
RANDOM_ACTIVATE uses the the current value of all parameters, intended to be used after one or more calls to [VALUE_CUSTOM].

Example 1: [RANDOM_CUSTOM_20_70_80_50_30_60_10_15] will begin oscillating between simulating a mouse at 20% across the game window and 70% across the game window, with a 50/1000 = 5% chance (approximately 1 second on average) to update values to between 0.7 and 1.3 times the values you specified. it will begin by moving right at 80% of maximum speed, and will pause for 10 frames before moving back to the left at 60% of maximum speed, where it will wait for 15 frames before beginning again.
Every time that 5% chance occurs each of those values will be adjusted.
A full list of valid keys is available at the end of this file.

Example 2: [RANDOM_SPECIFY_20_70_80_50_30_dlydown_30] will use the same basis as in example one, but speed-up and delay-up were not specified so speed-up will duplicate speed-down, and delay-up will use the default 3 frames. Therefore she will move between 20-70% across the screen at 80% of maximum speed, pausing for 30 frames on the right end, and 3 frames on the left end. ~once per second it will choose a random value between 70-130% for each component and adjust it that far from your initial settings.

The final three triggers are similar, but instead of a random chance, and random scaling, you select the amount you want each value to increase each interval, and how long you want that interval to be. These blocks have rather complex inputs, so be careful when using them.

[RAMP_CUSTOM_<min-x>_<max-x>_<speed-down-x>_<frames-between-increments>_<speed-up>_<delay-down>_<delay-up>_<min-increment>_<max-increment>_
<speed-down-increment>_<speed-up-increment>_<delay-down-increment>_<delay-up-increment>]:
[RAMP_SPECIFY_<min-x>_<max-x>_<speed-down-x>_<frames-between-increments>_<first-key>_<first-value>_+additional-key-value-pairs-if-desired]:
[RAMP_ACTIVATE_<frames-between-increments>]:
Operate as the RANDOM series does, so you will give the base command (CUSTOM or SIMPLE) and append the min, max, speed down, and increment interval to it. min/max/speed increments are in units 1/10 as large as the original values, the increment interval and delays are in frames.

If min becomes greater than max, their values and increments swap so they will begin getting farther apart again. Delays will not go below 1 frame, and speeds will not go below 1% of maximum.

These triggers are VERY large as there are many components you can specify. The result is that you append between 8 and 20 values to the base trigger. CUSTOM you specify every component in order for a total of 13 values, SPECIFY you give <key>_<value> pairs as in the random series, for between 8 and 22 values. Use CUSTOM to decrease the size of trigger if you want to specify all of them.

RAMP_ACTIVATE uses the the current value of all parameters, intended to be used after one or more calls to [VALUE_CUSTOM].

Example 1: [RAMP_CUSTOM_30_80_50_35_10_15_20_10_-10_50_20_2_-1] Will cause her to begin oscillating between 30-80% of maximum distance, going onto the penis at 50% of max speed, pausing for 15 frames, then moving back off at 10% of maximum speed and pausing for 20 frames before starting over. Every 35 frames the minimum will increase by 1%, the maximum will decrease by 1%, the speed down will increase by 5%, the speed up will increase by 2%, the delay before backing off will increase by 2 frames, and the speed before starting to move right again will decrease by 1 frame.

Example 2: [RAMP_SPECIFY_TIP_CENTER_10_50_dlydown_15_dlyup_20_dlydowninc_1_dlyupinc_-1_spdup_30_spddowninc_-20_spdupinc_30_maxinc_15] will begin oscillation between having her lips at the tip and at the center of the penis, going right at 10% of maximum speed, delaying 15 frames before going back off at 30% maximum speed, and then waiting 20 frames before starting to go right again. Every 50 frames, the maximum depth will increase by 1.5%, speed down will decrease by 2%, speed up will increase by 3%, delay down will increase by 1 frame, and delay up will decrease by 1 frame.

The only KNOWN issues are:
DialogueActions [AUTO_OFF] trigger does NOT turn off the custom triggers, it only returns control to mouse. If you reactivate auto mode by using a hotkey or the auto checkbox the custom setting will turn back on. Use another AUTO trigger or [STOP_CUSTOM] to deactivate a custom setting.

If in [AUTO_CUSTOM_SIMPLE] deep is set to CENTER the throat resistance setting may cause her to stop slightly short of the center if the penis is long enough, as it goes by mouse position at no resistance and the higher the resistance the farther you have to push to get her to throat it.

If a ramping action runs for more than 3.5 hours, there will be one extra increment for each ~3.5 hours it runs (VERY unlikely to be a problem, as this resets anytime an auto command other than pause/continue is issued, not to mention it is unlikely that you are not at the maximum for that item by that time.)

And finally: If moving her down quickly or on a very large penis within a frame or two of activating the mouse hold she will take the penis in her mouth before the signal that the mouse is being held is processed. Therefore you should put in a 1-2 character delay between setting mouse button to down and giving the movement command. This includes the MOVE_TO_BALLS command, if using a very large penis or high speed, use MOUSE_BUTTON_DOWN with a small delay afterward before triggering the move. Example:
move:"[MOUSE_BUTTON_down]ББ[MOVE_TO_BALLS_90]"

List of valid keys:
MIN: Minimum x value to oscillate to.
MAX: Maximum x value to oscillate to.
SPDDOWN: Movement speed moving on to penis.
SPDUP: Movement speed backing off the penis.
DLYDOWN: Delay in frames before beginning to move off of penis.
DLYUP: Delay in frames before beginning to move back onto penis.
MININC: Amount to increase the minimum x value.
MAXINC: Amount to increase the maximum x value.
SPDUPINC: Amount to increment the speed backing off the penis.
SPDDOWNINC: Amount to increment the speed moving onto the penis.
DLYUPINC: Amount to increment the delay before starting to move onto the penis.
DLYDOWNINC: Amount to increment the delay before starting to back off of the penis.

Keys are NOT case-sensitive.
Added one more trigger, [INIT_RESIST_BREAK_<speed-going-down>_<speed-going-up>] that you can use to break through initial resistance. At faster speeds with very long penis size, the other custom functions will generally start forcing her back down before the animation clears her mouth so resistance will not degrade. With this function there is a slight (4/5 frame) delay at the ends of the motion so the animation can catch up.
As suggested in the trigger, you can choose separate speeds for up and down motions so you can simulate ramming her down, and slowly letting her back off.
I found out I had left a bug in the code for 4.1 that completely broke the mod. I apologize to anyone that downloaded this version.

I also fixed a couple of potential bugs that caused problems with very fast/slow automations, after significant testing all functions now appear to work as intended. Please either message me, or leave a message on the support page linked on the right if you find anything that does not work, I will do my best to either fix it immediately, or explain why I believe that is how it should work/how to get the functionality you desired.
  • Like
Reactions: NoctSoul
The mouse release was not occurring after a hold to balls trigger was used followed by a normal trigger so until a base auto function or stop_custom was called, or the player pressed and released the mouse button she would not take it in her mouth again. This has been fixed and the other triggers will release the hold.
I fixed a bug caused by my code handling the penis "missing" her mouth.

I also added three triggers, the first two move her to his balls, the first causes her to lick, while the second forces her NOT to lick.
The third trigger moves her tongue in/out.
This version fixes [STOP_CUSTOM] trigger, and allows slower speeds for [POSITION_CUSTOM], also made it less likely that the fix from 3.1 will trigger when it should not due to built in movement from breathing during very slow movements. Will now handle speeds as low as 0.1.
Lower values MAY work, but you will have trouble seeing such slow movement and (unlikely) MAY cause issues with one of the correction functions.
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.