animtools: which part of a position impacts how on variable "atv_curresist"? (1 Viewer)

Rudgar

Content Creator
Joined
Nov 18, 2016
Ahoy community,
probably sby sby can answer this question best, but I don't want to bother a great spirit with each and every little "OMG I just don't understand it".

I have made two different positions for animtools, one with him active (dominant=2) one with her active (dominant=1). In addition, I have a test dialogue to debug what is going on with a postion when I activate/deactivate the "Auto" checkbox in the "Scene" Tab. (all 3 files attached) The dest dialogue give information about the line type (from which mod) that has been triggered, a random status about her, positions style, who of them is the active part (Setting "dominant" in the position file) and the variables "atv_curresist" (rounded to digits after the dot) and "mt.vigour" (between 0 and 100).

I wonder why these 2 positions have so massively different impact on the variable "atv_curresist"

When he's the active part, the variable falls to zero or even below within seconds.
When she's the active part, the variable hardly goes down at all and if, it never becomes less than 2.
Both observed when Auto is activated with "hard".

Anoyone any idea why? Or about how to control the impact?

Thanks in advance for any helpful hint!

Respectfully,
Rudgar
 

Attachments



Dialogue.txt
775.4 KB · Views: 155

Jaxx

Content Creator
Joined
Aug 15, 2016
I already noticed this (sby released atv_curresist on my request - I'm afraid I really bothered him lol - so I had time to try it a lot). Actually the resistance decrease much faster when he moves than when she does.
I assume that you'll have to ask sby if he can change the way resistance is computed, I'm afraid there's no other solution on positions where she's doing the job.
 

sby

Content Creator
Coder
Joined
Sep 11, 2012
here is the code that is relavnt to current resistance:
Code:
if(resistancewithbodycontact == 1)
           {
            
               if(resistdistance - resistancestartingdistance > 0)
               {
                   if(!resistposstartset)
                   {
                       resistposstart = Math.min(g.her.pos, resistposstart);
                       resistposstartset = true;
                       if(spaceholdresist == 0)
                       {
                           spacehelddist = 0;
                       }
                       //currentresistance = Math.max(minresistance, currentresistance - 0.00002);
                   }
                   reistiveamount = ((g.her.pos - resistposstart - 0.02) / (g.her.maxPos - resistposstart)) / ((startingresistance - currentresistance) / (startingresistance))
                   if(reistiveamount > 1)
                   {   //in resistive area
                       if(!resistancelowered)  //activates on entry of resistance area
                       {
                       if(resistivevigor == 1 && allowvigourchanges == 1) g.her.vigour += g.her.VIGOUR_WINCE_LEVEL * resistivevigourmult + g.her.VIGOUR_WINCE_LEVEL*Math.abs(g.her.speed) * resistivevigourspeedmult;
                       currentresistance = Math.max(minresistance, currentresistance - (Math.min(40,g.her.absMovement) * movementresistancemult));
                       resistancelowered = true;
                    
                       }
                    
                       if(reistiveamount > bodycontactresistivethreshhold) g.dialogueControl.buildState("bodycontactresistive",4);
                    
                    
                       if(spaceheldtimer > 0)
                       {
                           if(resistivevigor == 1 && allowvigourchanges == 1) g.her.vigour += g.her.VIGOUR_WINCE_LEVEL * resistivevigourspaceheldmult;
                           if(g.her.pos > 1)
                           {
                               g.dialogueControl.buildState("bodycontactspaceheldpushinhilt",4);
                           }
                           else
                           {
                               g.dialogueControl.buildState("bodycontactspaceheldpush",4);
                           }
                        
                       }
                    
                       currentresistance = Math.max(minresistance, currentresistance - resistdecreaserate);
                       if(resistivevigor == 1 && allowvigourchanges == 1 && !isNaN(reistiveamount * continuousresistivevigourmult))
                       {
                           g.her.vigour += reistiveamount * continuousresistivevigourmult;
                       }
                   }
                   else  //not in resistive area, but still past resistpoint
                   {
                       currentresistance = Math.max(minresistance, currentresistance - resistdecreaserate/10);
                       resistancelowered = false;
                   }
                   if(currentresistance == minresistance)
                   {
                       g.dialogueControl.buildState("bodycontactloose",4);
                       g.dialogueControl.advancedController._dialogueDataStore["atv_inbodycontactloose"] = 1;
                   }
                   if(spaceheldtimer > 0)
                   {
                       spacehelddist = Math.min(resistoverridemax, spacehelddist+ (resistoverridemax-spacehelddist)*resistoverriderate);
                   }

                
               }
               else  //not past reistivepoint
               {
                   currentresistance = Math.min(startingresistance, currentresistance + resistnormalizerate);
               }
               //g.her.pos = Math.max(Math.min(resistposstart, g.her.pos), g.her.pos - Math.max(0,(Math.max(0, resistdistance - (resistancestartingdistance+spacehelddist)) * (currentresistance/1000))));
               g.her.pos = g.her.pos - Math.max(0,resistdistance - resistancestartingdistance - spacehelddist)*(currentresistance/1000);
               //moved spaceheld slow reset outside
           }
the important things being g.her.absMovement and movementresistancemult
some people didn't like how resistive i made the initial doggystyle anal position, so i created a different version with a multiplier of 6 (essentially making there be no resistance) instead of the default 0.02.
upload_2017-10-5_18-6-44.png


and then that position was used as a starting place for many others, so lots of them do not have much actual resistance.


edit - oops, should have looked at the positions included, will take another glance
 

sby

Content Creator
Coder
Joined
Sep 11, 2012
think i fixed it: animtools
"changed how resistdistance calculated, used be done by comparing his difference in movement from contact point. didn't work with him being stationary and her doing all the movement.
changed to using her.pos differences between current and what her.pos was at contact. added a scalar to attempt current position settings to have similar results."
 

Jaxx

Content Creator
Joined
Aug 15, 2016
Dude! When you start to answer a question and decide to provide a solution you're definitely not kidding! Awesome!
 

Rudgar

Content Creator
Joined
Nov 18, 2016
To be very honest, I must confess that I was a bit afraid now that my other positions won't work in which she was absoletely passive and he was doing all the work. But ... everything is very very fine and neat. Just perfect.
Thank you, sby sby , thank you very much!

Very respectfully, Rudgar
 

Rudgar

Content Creator
Joined
Nov 18, 2016
[...]... everything is very very fine and neat. Just perfect.[...]
almost *sigh*
Now its a n oral pose that doesnt impact on the variable. the one with only him activ (ATP_SDT_0_2.txt).
It works with anal pose type (haven't testet pose type 1, 2 and 4 yet)

Very respectfully, Rudgar
 

Attachments

ATP_SDT_0_0.txt
3.6 KB · Views: 155

ATP_SDT_0_1.txt
3.6 KB · Views: 139

ATP_SDT_0_2.txt
3.6 KB · Views: 147

sby

Content Creator
Coder
Joined
Sep 11, 2012
almost *sigh*
Now its a n oral pose that doesnt impact on the variable. the one with only him activ (ATP_SDT_0_2.txt).
It works with anal pose type (haven't testet pose type 1, 2 and 4 yet)

Very respectfully, Rudgar
0 and 1 seem to change the variable
2 doesn't change it because none of the resistance stuff is enabled.
 

Rudgar

Content Creator
Joined
Nov 18, 2016
0 and 1 seem to change the variable
2 doesn't change it because none of the resistance stuff is enabled.
Hmmm, but doesn't mean "dominant=2" that HE is the doinant part? And when *HE* is dominant (in an oral position), the resistance doesn't have to decrease???
 
Last edited:

sby

Content Creator
Coder
Joined
Sep 11, 2012
the dominant setting is purely for position makers to label their position.
That way if you wanted a flexible dialog, you can use the atv_dominant_held and atv_dominant for use in checks
2=him dominant
1=her dominant
0=neutral
 

Rudgar

Content Creator
Joined
Nov 18, 2016
the dominant setting is purely for position makers to label their position.
That's what I intended to use it for.
But correct me if I'm wrong: beside that you maybe intended the "dominant" setting as a pure label, it actually does have impact on the behaviour of at least the variable "atv_curresist".
Doesn't it?

That way if you wanted a flexible dialog, you can use the atv_dominant_held and atv_dominant for use in checks
2=him dominant
1=her dominant
0=neutral
Beside the fact that I don't use the "check" condition in dialogues lines, my problem is not to check of the "dominant" setting. My problem is the impact of the "dominant" setting on the "atv_curresist" variable.
That's more or less all that I want : a reliable way to react correctly on her current resistance that works hopefully the same way in every positiontype with every dominant setting. Obviously I underestimated the effort - sorry. :oops:

Very respectfully, Rudgar
 

sby

Content Creator
Coder
Joined
Sep 11, 2012
provide me 2 positions that are the same except for that dominant variable that appear to act differently.
 

Rudgar

Content Creator
Joined
Nov 18, 2016
provide me 2 positions that are the same except for that dominant variable that appear to act differently.
MEA CULPA! Shame on me!
You are absolutely right.
I was absolutely wrong.
Please accept my apologies for talking bullshit about AnimTools.

And not enough with making a fool of myself, while trying to create such two positions I compared the two positions I had tested before and found the one true deciding difference: resistancewithbodycontact :oops::oops::oops::oops::oops:
(shoot me and burry me somewhere down the river)

Sincerly sorry for ... well, forget everything coming after "good morning" and thank you so much for your great work

Very, very respectfully (and very very sorry),
Rudgar
 
Last edited:

Jaxx

Content Creator
Joined
Aug 15, 2016
and found the one true deciding difference: resistancewithbodycontact
:grin::grin::grin::grin::grin::grin::grin:
Sorry... just acting like the unsuffurable morron who laugh at a poor guy who's already ashamed when I know I could have done the very same mistake... :oops::grin:
Cheers Rudgar, just think our mistakes help others :smile:
 

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.