Mod: SceneMove

Dr Neutral

Content Creator
Joined
Apr 17, 2018
V1.0.1: Apparently I forgot to include the ".swf" and "settings.txt" files (so I basically uploaded everything except what was needed to use the mod... d'oh!). It should be fixed by now. Go the the History tab to download the newest version.

--- Before we begin ---
English is not my first language, expect spelling mistakes.

This mod is a bit more complicated that I initially expected it to be, so I decided to open a forum thread for feedback and problem solving.

This mod REQUIRES the 'SDT Loader' and 'DialogueActions'. This mod will NOT work without them.

This mod uses the words 'camera'/'scene'/'position' interchangably.
Please, do not confuse the coordinate positions of this mod with the animations/positions from 'AnimTools'.
'AnimTools' is not required for this mod to work, but I very much recommended it.

This mod also uses the words 'speed'/'amount changing' interchangably.

Along with the mod comes a Dialogue.txt file with real examples of most of the features.

The coordinates and speeds may seem a bit random at first, so it may take you some time to get things right.
A nice trick that I've though is to open an animation in Animtools, moving the camera to the position that you want, and writting down the camera positions (page 1).

--- SceneMove: What it does ---
88249


-This mod adds a bunch of triggers and variables that allows dialogue writters to move the scene.
-The scene can be moved horizontally, vertically, be zoom in/out, rotated, and shaked.
-Positions can be stored to be used throughout the dialogue.
-It also allows you to 'follow' some bodyparts (although this feature is a bit wonky).

--- What it doesn't ---
-This mod does not add hotkeys to allow you to freely move the camera.

-- Known Issues --
-The camera may still move when the menu is open, but it will sort itself out after closing the menu.
-While testing it I noticed (only once) that his penis was dissapearing using an AnimTools animation when moving at the borders of the screen, but I've not managed to replicate that again.

-- Installation --
-Make sure you're using the SDT Loader and have DialogueActions installed.
-Download and extract the mod: SceneMove
-Move scenemoveV1_0settings.txt to the settings folder.
-Move scenemoveV1_0.swf to the $INIT folder.
-Open Mods.txt (located at the $INIT folder) and add the following line somewhere AFTER SDTDialogueActions:
scenemoveV1_0.swf
-Launch the game.

-- Basic concepts --
X = horizontal (left/right)
Y = vertical (up/down)
Z = zoom (in/out)
R = rotation (left/right)
BG = Background update (only noticeable when zooming in/out a lot)

-- Horizontal --
X defaults to : 290
Lower values will move to the left.
Greater values will move to the right.
A 0.5 change in amount is very noticeable.

-- Vertical --
Y defaults to: 50
Lower values will move up.
Greater values will move down.
A 0.5 change in amount is very noticeable.

-- Zoom --
Z defaults to: 0.4
Lower values will zoom out.
Greater values will zoom in.
A 0.5 change in amount is VERY noticeable.
A 0.001 change in amount is fine for a smooth transition.

-- Rotation --
R defaults to: 0
Lower values will rotate left.
Greater values will rotate right.
The 'center' of rotation is at the top-middle of the screen.
A 0.5 change in amount is very noticeable.

-- Background --
BG defaults to: 1
When active (1) the background may change a little when zooming in or out a lot.
When not active (0) the background will not change.

Example:
[SCENEMOVE_SET_BG_UPDATE_0] to disable background updating.

Triggers:
[SCENEMOVE_SET_BG_UPDATE_(UPDATE_BACKGROUND)]

-- DEFAULT --
The initial DEFAULT values are the same as the default SDT animation (ATV_defaultsdt in AnimTools), which are:
X: 290
Y: 50
Z: 0.4
R: 0
BG: 1

Those are the values set in the settings file (scenemovementV1_0settings), along with some values for screen shaking (more on that later).
Triggers that work using the DEFAULT values will use those settings.
If you want to change the DEFAULT position used in those triggers, you may change the values in the settings.

Examples:
[SCENEMOVE_INSTANT_DEFAULT] will instantly move the camera to the default position.
[SCENEMOVE_GRADUAL_DEFAULT_1_1_1_1_0] will move towards the default position at a speed of 1, and disables background updating.

Note: The speed/amount change of all directions are not the same (zooming is very noticeable even with very small values).

Triggers:
[SCENEMOVE_INSTANT_DEFAULT]
[SCENEMOVE_GRADUAL_DEFAULT_(X_SPEED)(Y_SPEED)(Z_SPEED)(R_SPEED)(UPDATE_BACKGROUND)]


-- INSTANT --
Triggers with INSTANT will instantly move the camera to a given position.

Examples:
[SCENEMOVE_INSTANT_X_300] will instantly move the camera horizontally to 300 (very slighly to the right).
[SCENEMOVE_INSTANT_Y_100] will instantly move the camera vertically to 100 (slightly down).
[SCENEMOVE_INSTANT_ALL_300_100_0.4_0_1] will do exactly the same as the two above combined, and also move the camera to 0.4, the rotation to 0, and the background updating to 1.

Triggers:
[SCENEMOVE_INSTANT_X_(POSITION)]
[SCENEMOVE_INSTANT_Y_(POSITION)]
[SCENEMOVE_INSTANT_Z_(POSITION)]
[SCENEMOVE_INSTANT_R_(POSITION)]
[SCENEMOVE_INSTANT_ALL_(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)(UPDATE_BACKGROUND)]
[SCENEMOVE_INSTANT_DEFAULT]


-- GRADUAL --
Triggers with GRADUAL will move the camera to a given position, at certain speed.

Examples:
[SCENEMOVE_GRADUAL_X_300_1] will move the camera horizontally towards 300 at a speed of 1. (very slighly to the right).
[SCENEMOVE_GRADUAL_Y_100_0.5] will move the camera vertically towards 100 at a speed of 0.5 (slightly down).
[SCENEMOVE_GRADUAL_ALL_300_1_100_0.5_0.4_1_0_1_1] will do exactly the same as the two above combined (so it will look like a diagonal movement).

Triggers:
[SCENEMOVE_GRADUAL_X_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_Y_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_Z_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_R_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_ALL_(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)(UPDATE_BACKGROUND)]
[SCENEMOVE_GRADUAL_DEFAULT_(X_SPEED)(Y_SPEED)(Z_SPEED)(R_SPEED)(UPDATE_BACKGROUND)]


-- PLUS --
Triggers with PLUS (includes gradual and instant) will move the camera to the current position PLUS an amount (at a certain speed if GRADUAL. Instantly if INSTANT).

For example, given that the default X is 290 and the default Y is 50:
[SCENEMOVE_INSTANT_PLUS_X_300] will instantly move the camera horizontally 290 + 300 = 590 (to the right, the man is almost out of the screen).
[SCENEMOVE_INSTANT_PLUS_Y_100] will instantly move the camera vertically 50 + 100 = 150 (a bit down).
[SCENEMOVE_INSTANT_PLUS_ALL_300_100_0.4_0_1] will do exactly the same as the two above combined.

Triggers:
[SCENEMOVE_INSTANT_PLUS_X_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_Y_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_Z_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_R_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_ALL_(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)(UPDATE_BACKGROUND)]

[SCENEMOVE_GRADUAL_PLUS_X_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_Y_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_Z_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_R_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_ALL_(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)(UPDATE_BACKGROUND)]



-- SHAKING --
This triggers will shake the camera.

[SCENEMOVE_SHAKE] will shake the camera in a similar manner that in vanilla (when she hits him in a deepthroat). Sometimes is it barely noticeable.

[SCENEMOVE_SHAKE_9_20_0_0_0.8_0.8] That trigger does the same as [SCENEMOVE_SHAKE], but the syntax is a bit more complicated:

X_MIN_AMOUNT (9) and X_MAX_AMOUNT (20) is for an horizontal shake.
Y_MIN_AMOUNT (0) and Y_MAX_AMOUNT (0) is for a vertical shake.
X_DECREASE (0.8) and Y_DECREASE (0.8) is the 'speed' at which the shake will stop.

Let's ignore the Y values for now.
The game will choose the lower number between _MIN_AMOUNT (9) and _MAX_AMOUNT (20), so the shake will have a strengh of 9, since is it the lower.
Then, _MAX_AMOUNT (20) will be multiplied by _DECREASE (0.8), the result is 20 x 0.8 = 16.
The game will then choose again the lower value, which is 9 (again).
When _MAX_AMOUNT is lower than _MIN_AMOUNT, _MAX_AMOUNT will be choose instead, until the shakiness reaches 0 and the shake stop.

So, by increasing _MIN_AMOUNT and _MAX_AMOUNT you can modify the shake's strengh, and by increasing _DECREASE you can extend the duration.

NOTE 1: Setting _DECREASE at 0 will instantly stop the shake, and setting it to 1 will make it permanent.
NOTE 2: [SCENEMOVE_SHAKE] uses a set of Default values that can be modified in the settings file, or by using SCENEMOVE_SET_SHAKE_AMOUNT_ and SCENEMOVE_SET_SHAKE_DECREASE_.

Triggers:
[SCENEMOVE_SHAKE_STOP]
[SCENEMOVE_SHAKE]
[SCENEMOVE_SHAKE_(X_MIN_AMOUNT)(X_MAX_AMOUNT)(Y_MIN_AMOUNT)(Y_MAX_AMOUNT)(X_DECREASE)_(Y_DECREASE)]
[SCENEMOVE_SET_SHAKE_AMOUNT_(X_AMOUNT)_(Y_AMOUNT)]
[SCENEMOVE_SET_SHAKE_DECREASE_(X_DECREASE)_(Y_DECREASE)]



-- STORING --
This mod allows to 'store' positions. Any positions stored will be lost on reset/application close.
The stored positions will need a name, and this name must be a single word with only letters and numbers.
The stored positions can be overwritten and removed if needed.

Example:
[SCENEMOVE_STORE_POSITION_myNewPosition_280_50_0.4_0_1] will store the position.
[SCENEMOVE_INSTANT_POSITION_myNewPosition] will instantly move to that position.
[SCENEMOVE_REMOVE_POSITION_myNewPosition] will remove that position.

NOTE: [SCENEMOVE_GRADUAL_POSITION_(NAME)] will not work if the position was not created with SCENEMOVE_STORE_POSITION_ALL_,
as it will lack the 'speed' values.

Triggers:
[SCENEMOVE_STORE_POSITION_(NAME)(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)_(UPDATE_BACKGROUND)]
[SCENEMOVE_STORE_POSITION_ALL_(NAME)(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)_(UPDATE_BACKGROUND)]
[SCENEMOVE_INSTANT_POSITION_(NAME)]
[SCENEMOVE_GRADUAL_POSITION_(NAME)]
[SCENEMOVE_REMOVE_POSITION_(NAME)]


-- FOLLOW --
This triggers will move the camera constantly to give the effect that it follows a certain bodypart.
The game was not really design for this kind of behaviour, so the end result may be a bit that the camera moves too much to be pleasant.

Example:
[SCENEMOVE_FOLLOW_HIS_HIP_1_-170_1_200] let's examine this further:
SCENEMOVE_FOLLOW_HIS_HIP_ will center the camera to his hips.

X_ADJUSTMENT_USAGE (1) will allow the position to be modified by X_ADJUSTMENT_AMOUNT.
X_ADJUSTMENT_AMOUNT (-170) is the amount that the position will me modified by the X axis. This will do nothing if X_ADJUSTMENT_USAGE is 0.

Y_ADJUSTMENT_USAGE (1) and Y_ADJUSTMENT_AMOUNT (200) will do the same for the Y axis.

SCENEMOVE_FOLLOW_HER_HEAD_ is similar, but it follows her head instead.

SCENEMOVE_FOLLOW_HIS_PENIS_ is almost the same as SCENEMOVE_FOLLOW_HIS_HIP_, but the Y axis is modified by the penis tilt (this can be better appreciated in handjob mode).

SCENEMOVE_FOLLOW_HER_FACE_ is a bit more interesting. It functions very similar to SCENEMOVE_FOLLOW_HER_HEAD_, but moving her head up and down (with the mouse, for example) will move the Y axis.

NOTE: If you attempt to move the camera while following a bodypart, the new movement will take priority, and then it will automatically return to the following position after the movement has been done.
On other words, do not move the camera if you're following a bodypart.

Triggers:
[SCENEMOVE_FOLLOW_STOP]
[SCENEMOVE_FOLLOW_HIS_HIP_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HIS_PENIS_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HER_HEAD_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HER_FACE_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]


-- DEBUG --
This triggers will print a value in the top-right of the screen. Very useful to know exactly where the camera is.

Triggers:
[SCENEMOVE_DEBUG_X]
[SCENEMOVE_DEBUG_Y]
[SCENEMOVE_DEBUG_Z]
[SCENEMOVE_DEBUG_R]
[SCENEMOVE_DEBUG_BG]




-- TRIGGER LIST --
To use them, you will need to replace the words in parentesis (and the parentesis) for the values you want.

[SCENEMOVE_INSTANT_X_(POSITION)]
[SCENEMOVE_INSTANT_Y_(POSITION)]
[SCENEMOVE_INSTANT_Z_(POSITION)]
[SCENEMOVE_INSTANT_R_(POSITION)]
[SCENEMOVE_INSTANT_ALL_(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)(UPDATE_BACKGROUND)]
[SCENEMOVE_INSTANT_DEFAULT]

[SCENEMOVE_GRADUAL_X_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_Y_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_Z_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_R_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_ALL_(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)(UPDATE_BACKGROUND)]
[SCENEMOVE_GRADUAL_DEFAULT_(X_SPEED)(Y_SPEED)(Z_SPEED)(R_SPEED)(UPDATE_BACKGROUND)]

[SCENEMOVE_INSTANT_PLUS_X_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_Y_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_Z_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_R_(POSITION)]
[SCENEMOVE_INSTANT_PLUS_ALL_(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)(UPDATE_BACKGROUND)]

[SCENEMOVE_GRADUAL_PLUS_X_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_Y_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_Z_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_R_(POSITION)_(SPEED)]
[SCENEMOVE_GRADUAL_PLUS_ALL_(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)(UPDATE_BACKGROUND)]

[SCENEMOVE_SET_BG_UPDATE_(UPDATE_BACKGROUND)]

[SCENEMOVE_SET_SHAKE_AMOUNT_(X_AMOUNT)_(Y_AMOUNT)]
[SCENEMOVE_SET_SHAKE_DECREASE_(X_DECREASE)_(Y_DECREASE)]
[SCENEMOVE_SHAKE]
[SCENEMOVE_SHAKE_(X_MIN_AMOUNT)(X_MAX_AMOUNT)(Y_MIN_AMOUNT)(Y_MAX_AMOUNT)(X_DECREASE)_(Y_DECREASE)]
[SCENEMOVE_SHAKE_STOP]

[SCENEMOVE_STORE_POSITION_(NAME)(X_POSITION)(Y_POSITION)(Z_POSITION)(R_POSITION)_(UPDATE_BACKGROUND)]
[SCENEMOVE_STORE_POSITION_ALL_(NAME)(X_POSITION)(X_SPEED)(Y_POSITION)(Y_SPEED)(Z_POSITION)(Z_SPEED)(R_POSITION)(R_SPEED)_(UPDATE_BACKGROUND)]
[SCENEMOVE_INSTANT_POSITION_(NAME)]
[SCENEMOVE_GRADUAL_POSITION_(NAME)]
[SCENEMOVE_REMOVE_POSITION_(NAME)]

[SCENEMOVE_FOLLOW_STOP]
[SCENEMOVE_FOLLOW_HIS_HIP_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HIS_PENIS_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HER_HEAD_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]
[SCENEMOVE_FOLLOW_HER_FACE_(X_ADJUSTMENT_USAGE)(X_ADJUSTMENT_AMOUNT)(Y_ADJUSTMENT_USAGE)_(Y_ADJUSTMENT_AMOUNT)]

[SCENEMOVE_DEBUG_X]
[SCENEMOVE_DEBUG_Y]
[SCENEMOVE_DEBUG_Z]
[SCENEMOVE_DEBUG_R]
[SCENEMOVE_DEBUG_BG]



-- VARIABLES LIST --

The following variables return a numeric value.
sm.x
sm.y
sm.z
sm.r


Example:
{"style":"Thought", "check":{"sm.x":290} } Will check if the current X value is 290.

dialoguetest:"sm.x [dialoguesm.x]" {"style":"Thought"} This is showing '290'
dialogue290:"This line will trigger next." {"style":"Thought"} The previous line will call [dialoguesm.x], which equals dialogue290 if we're in the DEFAULT position.

The following variables return 0 or 1:
sm.bg

The following variables return a string value ("true" or "false").

sm.isMoving
sm.isShaking
sm.isFollowing

sm.isMovingX
sm.isMovingY
sm.isMovingZ
sm.isMovingR

sm.isMovingLeft
sm.isMovingRight
sm.isMovingUp
sm.isMovingDown
sm.isZoomingIn
sm.isZoomingOut
sm.isRotatingLeft
sm.isRotatingRight


Example:
{"style":"Thought", "check":{"sm.isMoving":"true"}} will check if the camera is moving in any direction.

NOTE 1: 'Shaking' and 'Following' are not considered 'Moving' for the purposes of this variable.
NOTE 2: The vanilla shake effect (when a full deepthroat is achieved) is not considered 'shaking' by this mod.
 
Last edited:

Antimatter42

Content Creator
Joined
Sep 2, 2017
Location
Address Unknown
Very interesting mod. It has a lot of potential to turn dialogues into their own little movies, maybe even help make dialogues that are SFW, or nonsexual.
 

edgelord 3000

Content Creator
Joined
Jan 16, 2018
There's also the potential for so many special effects, like zooming in on her throat on first_dt.
This seems like a great mod.
 
Top Bottom